diff --git a/.codespellrc b/.codespellrc
index 335462ff5..eba51bad0 100644
--- a/.codespellrc
+++ b/.codespellrc
@@ -1,3 +1,3 @@
[codespell]
ignore-words-list: crate,everytime,inout,co-ordinate,ot,nwo,absolutey,atleast,ue,afterall
-skip: **/target,node_modules,build,**/Cargo.lock,./docs/kcl/*.md,./src-tauri/gen/schemas
+skip: **/target,node_modules,build,**/Cargo.lock,./docs/kcl/*.md,./src-tauri/gen/schemas,.yarn.lock,**/yarn.lock
diff --git a/.github/workflows/build-test-publish-apps.yml b/.github/workflows/build-test-publish-apps.yml
new file mode 100644
index 000000000..879cb741b
--- /dev/null
+++ b/.github/workflows/build-test-publish-apps.yml
@@ -0,0 +1,404 @@
+name: build-test-publish-apps
+
+on:
+ pull_request:
+ push:
+ release:
+ types: [published]
+ schedule:
+ - cron: '0 4 * * *'
+ # Daily at 04:00 AM UTC
+ # Will checkout the last commit from the default branch (main as of 2023-10-04)
+
+env:
+ CUT_RELEASE_PR: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.title, 'Cut release v')) }}
+ BUILD_RELEASE: ${{ github.event_name == 'release' || github.event_name == 'schedule' || github.event_name == 'pull_request' && (contains(github.event.pull_request.title, 'Cut release v')) }}
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+
+jobs:
+ prepare-json-files:
+ runs-on: ubuntu-22.04 # seperate job on Ubuntu for easy string manipulations (compared to Windows)
+ outputs:
+ version: ${{ steps.export_version.outputs.version }}
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version-file: '.nvmrc'
+ cache: 'yarn'
+
+ - name: Set nightly version
+ if: github.event_name == 'schedule'
+ run: |
+ VERSION=$(date +'%-y.%-m.%-d') yarn bump-jsons
+
+ # TODO: see if we need to inject updater nightly URL here https://dl.zoo.dev/releases/modeling-app/nightly/last_update.json
+ # TODO: see if we ned to add updater test URL here https://dl.zoo.dev/releases/modeling-app/updater-test/last_update.json
+
+ - uses: actions/upload-artifact@v3
+ if: ${{ github.event_name == 'schedule' || env.CUT_RELEASE_PR == 'true' }}
+ with:
+ path: |
+ package.json
+
+ - id: export_version
+ run: echo "version=`cat package.json | jq -r '.version'`" >> "$GITHUB_OUTPUT"
+
+
+ build-test-app-macos:
+ needs: [prepare-json-files]
+ runs-on: macos-14
+ env:
+ APPLE_ID: ${{ secrets.APPLE_ID }}
+ APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
+ APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
+ APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
+ APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
+ APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/download-artifact@v3
+ if: github.event_name == 'schedule'
+
+ - name: Copy updated .json files
+ if: github.event_name == 'schedule'
+ run: |
+ ls -l artifact
+ cp artifact/package.json package.json
+
+ - name: Sync node version and setup cache
+ uses: actions/setup-node@v4
+ with:
+ node-version-file: '.nvmrc'
+ cache: 'yarn' # Set this to npm, yarn or pnpm.
+
+ - run: yarn install
+
+ - name: Setup Rust
+ uses: dtolnay/rust-toolchain@stable
+
+ - uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: './src/wasm-lib'
+
+ - name: Run build:wasm
+ run: "yarn build:wasm${{ env.BUILD_RELEASE == 'true' && '-dev' || ''}}"
+
+ # TODO: sign the app (and updater bundle potentially)
+ - name: Add signing certificate
+ if: ${{ env.BUILD_RELEASE == 'true' }}
+ run: chmod +x add-osx-cert.sh && ./add-osx-cert.sh
+
+ - name: Build the app for arm64
+ run: "yarn electron-forge make"
+
+ - name: Build the app for x64
+ run: "yarn electron-forge make --arch x64"
+
+ - name: List artifacts
+ run: "ls -R out/make"
+
+ # TODO: add the 'Build for Mac TestFlight (nightly)' stage back
+
+ - uses: actions/upload-artifact@v3
+ with:
+ path: "out/make/*/*/*/*"
+
+
+ build-test-app-windows:
+ needs: [prepare-json-files]
+ runs-on: windows-2022
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/download-artifact@v3
+
+ - name: Copy updated .json files
+ if: github.event_name == 'schedule'
+ run: |
+ ls -l artifact
+ cp artifact/package.json package.json
+
+ - name: Sync node version and setup cache
+ uses: actions/setup-node@v4
+ with:
+ node-version-file: '.nvmrc'
+ cache: 'yarn' # Set this to npm, yarn or pnpm.
+
+ - run: yarn install
+
+ - name: Setup Rust
+ uses: dtolnay/rust-toolchain@stable
+
+ - uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: './src/wasm-lib'
+
+ - name: Run build:wasm manually
+ shell: bash
+ env:
+ MODE: ${{ env.BUILD_RELEASE == 'true' && '--release' || '--debug' }}
+ run: |
+ mkdir src/wasm-lib/pkg; cd src/wasm-lib
+ echo "building with ${{ env.MODE }}"
+ npx wasm-pack build --target web --out-dir pkg ${{ env.MODE }}
+ cd ../../
+ cp src/wasm-lib/pkg/wasm_lib_bg.wasm public
+
+ - name: Prepare certificate and variables (Windows only)
+ if: ${{ env.BUILD_RELEASE == 'true' }}
+ run: |
+ echo "${{secrets.SM_CLIENT_CERT_FILE_B64 }}" | base64 --decode > /d/Certificate_pkcs12.p12
+ cat /d/Certificate_pkcs12.p12
+ echo "::set-output name=version::${GITHUB_REF#refs/tags/v}"
+ echo "SM_HOST=${{ secrets.SM_HOST }}" >> "$GITHUB_ENV"
+ echo "SM_API_KEY=${{ secrets.SM_API_KEY }}" >> "$GITHUB_ENV"
+ echo "SM_CLIENT_CERT_FILE=D:\\Certificate_pkcs12.p12" >> "$GITHUB_ENV"
+ echo "SM_CLIENT_CERT_PASSWORD=${{ secrets.SM_CLIENT_CERT_PASSWORD }}" >> "$GITHUB_ENV"
+ echo "C:\Program Files (x86)\Windows Kits\10\App Certification Kit" >> $GITHUB_PATH
+ echo "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools" >> $GITHUB_PATH
+ echo "C:\Program Files\DigiCert\DigiCert One Signing Manager Tools" >> $GITHUB_PATH
+ shell: bash
+
+ - name: Setup certicate with SSM KSP (Windows only)
+ if: ${{ env.BUILD_RELEASE == 'true' }}
+ run: |
+ curl -X GET https://one.digicert.com/signingmanager/api-ui/v1/releases/smtools-windows-x64.msi/download -H "x-api-key:%SM_API_KEY%" -o smtools-windows-x64.msi
+ msiexec /i smtools-windows-x64.msi /quiet /qn
+ smksp_registrar.exe list
+ smctl.exe keypair ls
+ C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user
+ smksp_cert_sync.exe
+ shell: cmd
+
+ - name: Build the app for x64
+ run: "yarn electron-forge make --arch x64"
+
+ - name: Build the app for arm64
+ run: "yarn electron-forge make --arch arm64"
+
+ - name: List artifacts
+ run: "ls -R out/make"
+
+ - name: Sign using Signtool
+ if: ${{ env.BUILD_RELEASE == 'true' }}
+ env:
+ THUMBPRINT: "F4C9A52FF7BC26EE5E054946F6B11DEEA94C748D"
+ X64_FILE: "D:\\a\\modeling-app\\modeling-app\\out\\make\\squirrel.windows\\x64\\Zoo Modeling App-*Setup.exe"
+ ARM64_FILE: "D:\\a\\modeling-app\\modeling-app\\out\\make\\squirrel.windows\\arm64\\Zoo Modeling App-*Setup.exe"
+ run: |
+ signtool.exe sign /sha1 ${{ env.THUMBPRINT }} /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 "${{ env.X64_FILE }}"
+ signtool.exe verify /v /pa "${{ env.X64_FILE }}"
+ signtool.exe sign /sha1 ${{ env.THUMBPRINT }} /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 "${{ env.ARM64_FILE }}"
+ signtool.exe verify /v /pa "${{ env.ARM64_FILE }}"
+
+ - uses: actions/upload-artifact@v3
+ with:
+ path: "out/make/*/*/*"
+
+ # TODO: Run e2e tests
+
+
+ build-test-app-ubuntu:
+ needs: [prepare-json-files]
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/download-artifact@v3
+ if: github.event_name == 'schedule'
+
+ - name: Copy updated .json files
+ if: github.event_name == 'schedule'
+ run: |
+ ls -l artifact
+ cp artifact/package.json package.json
+
+ - name: Sync node version and setup cache
+ uses: actions/setup-node@v4
+ with:
+ node-version-file: '.nvmrc'
+ cache: 'yarn' # Set this to npm, yarn or pnpm.
+
+ - run: yarn install
+
+ - name: Setup Rust
+ uses: dtolnay/rust-toolchain@stable
+
+ - uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: './src/wasm-lib'
+
+ - name: Run build:wasm
+ run: "yarn build:wasm${{ env.BUILD_RELEASE == 'true' && '-dev' || ''}}"
+
+ - name: Build the app for arm64
+ run: "yarn electron-forge make --arch arm64"
+
+ - name: Build the app for x64
+ run: "yarn electron-forge make --arch x64"
+
+ - name: List artifacts
+ run: "ls -R out/make"
+
+ # TODO: add the 'Build for Mac TestFlight (nightly)' stage back
+
+ # TODO: sign the app (and updater bundle potentially)
+
+ - uses: actions/upload-artifact@v3
+ with:
+ path: "out/make/*/*/*"
+
+
+ publish-apps-release:
+ runs-on: ubuntu-22.04
+ permissions:
+ contents: write
+ if: ${{ github.event_name == 'release' || github.event_name == 'schedule' }}
+ needs: [prepare-json-files, build-test-app-macos, build-test-app-windows, build-test-app-ubuntu]
+ env:
+ VERSION_NO_V: ${{ needs.prepare-json-files.outputs.version }}
+ VERSION: ${{ github.event_name == 'release' && format('v{0}', needs.prepare-json-files.outputs.version) || needs.prepare-json-files.outputs.version }}
+ PUB_DATE: ${{ github.event_name == 'release' && github.event.release.created_at || github.event.repository.updated_at }}
+ NOTES: ${{ github.event_name == 'release' && github.event.release.body || format('Nightly build, commit {0}', github.sha) }}
+ BUCKET_DIR: ${{ github.event_name == 'release' && 'dl.kittycad.io/releases/modeling-app' || 'dl.kittycad.io/releases/modeling-app/nightly' }}
+ WEBSITE_DIR: ${{ github.event_name == 'release' && 'dl.zoo.dev/releases/modeling-app' || 'dl.zoo.dev/releases/modeling-app/nightly' }}
+ URL_CODED_NAME: ${{ github.event_name == 'schedule' && 'Zoo%20Modeling%20App%20%28Nightly%29' || 'Zoo%20Modeling%20App' }}
+ steps:
+ - uses: actions/download-artifact@v3
+
+ - name: Generate the update static endpoint
+ run: |
+ ls -l artifact/*/*oo*
+ DARWIN_SIG=`cat artifact/macos/*.app.tar.gz.sig`
+ WINDOWS_X86_64_SIG=`cat artifact/msi/*x64*.msi.zip.sig`
+ WINDOWS_AARCH64_SIG=`cat artifact/msi/*arm64*.msi.zip.sig`
+ RELEASE_DIR=https://${WEBSITE_DIR}/${VERSION}
+ jq --null-input \
+ --arg version "${VERSION}" \
+ --arg pub_date "${PUB_DATE}" \
+ --arg notes "${NOTES}" \
+ --arg darwin_sig "$DARWIN_SIG" \
+ --arg darwin_url "$RELEASE_DIR/macos/${{ env.URL_CODED_NAME }}.app.tar.gz" \
+ --arg windows_x86_64_sig "$WINDOWS_X86_64_SIG" \
+ --arg windows_x86_64_url "$RELEASE_DIR/msi/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_x64_en-US.msi.zip" \
+ --arg windows_aarch64_sig "$WINDOWS_AARCH64_SIG" \
+ --arg windows_aarch64_url "$RELEASE_DIR/msi/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_arm64_en-US.msi.zip" \
+ '{
+ "version": $version,
+ "pub_date": $pub_date,
+ "notes": $notes,
+ "platforms": {
+ "darwin-x86_64": {
+ "signature": $darwin_sig,
+ "url": $darwin_url
+ },
+ "darwin-aarch64": {
+ "signature": $darwin_sig,
+ "url": $darwin_url
+ },
+ "windows-x86_64": {
+ "signature": $windows_x86_64_sig,
+ "url": $windows_x86_64_url
+ },
+ "windows-aarch64": {
+ "signature": $windows_aarch64_sig,
+ "url": $windows_aarch64_url
+ }
+ }
+ }' > last_update.json
+ cat last_update.json
+
+ - name: Generate the download static endpoint
+ run: |
+ RELEASE_DIR=https://${WEBSITE_DIR}/${VERSION}
+ jq --null-input \
+ --arg version "${VERSION}" \
+ --arg pub_date "${PUB_DATE}" \
+ --arg notes "${NOTES}" \
+ --arg darwin_url "$RELEASE_DIR/dmg/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_universal.dmg" \
+ --arg windows_x86_64_url "$RELEASE_DIR/msi/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_x64_en-US.msi" \
+ --arg windows_aarch64_url "$RELEASE_DIR/msi/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_arm64_en-US.msi" \
+ '{
+ "version": $version,
+ "pub_date": $pub_date,
+ "notes": $notes,
+ "platforms": {
+ "dmg-universal": {
+ "url": $darwin_url
+ },
+ "msi-x86_64": {
+ "url": $windows_x86_64_url
+ },
+ "msi-aarch64": {
+ "url": $windows_aarch64_url
+ }
+ }
+ }' > last_download.json
+ cat last_download.json
+
+ - name: Authenticate to Google Cloud
+ uses: 'google-github-actions/auth@v2.1.3'
+ with:
+ credentials_json: '${{ secrets.GOOGLE_CLOUD_DL_SA }}'
+
+ - name: Set up Google Cloud SDK
+ uses: google-github-actions/setup-gcloud@v2.1.0
+ with:
+ project_id: kittycadapi
+
+ - name: Upload release files to public bucket
+ uses: google-github-actions/upload-cloud-storage@v2.1.0
+ with:
+ path: artifact
+ glob: '*/Zoo*'
+ parent: false
+ destination: ${{ env.BUCKET_DIR }}/${{ env.VERSION }}
+
+ - name: Upload update endpoint to public bucket
+ uses: google-github-actions/upload-cloud-storage@v2.1.0
+ with:
+ path: last_update.json
+ destination: ${{ env.BUCKET_DIR }}
+
+ - name: Upload download endpoint to public bucket
+ uses: google-github-actions/upload-cloud-storage@v2.1.0
+ with:
+ path: last_download.json
+ destination: ${{ env.BUCKET_DIR }}
+
+ - name: Upload release files to Github
+ if: ${{ github.event_name == 'release' }}
+ uses: softprops/action-gh-release@v2
+ with:
+ files: 'artifact/*/Zoo*'
+
+ announce_release:
+ needs: [publish-apps-release]
+ runs-on: ubuntu-22.04
+ if: github.event_name == 'release'
+ steps:
+ - name: Check out code
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.x'
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install requests
+
+ - name: Announce Release
+ env:
+ DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
+ RELEASE_VERSION: ${{ github.event.release.tag_name }}
+ RELEASE_BODY: ${{ github.event.release.body}}
+ run: python public/announce_release.py
diff --git a/.github/workflows/build-test-web.yml b/.github/workflows/build-test-web.yml
new file mode 100644
index 000000000..430fa11e7
--- /dev/null
+++ b/.github/workflows/build-test-web.yml
@@ -0,0 +1,76 @@
+name: build-test-web
+
+on:
+ pull_request:
+ push:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+
+jobs:
+ check-format:
+ runs-on: 'ubuntu-22.04'
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version-file: '.nvmrc'
+ cache: 'yarn'
+ - run: yarn install
+ - run: yarn fmt-check
+
+ check-types:
+ runs-on: ubuntu-22.04
+
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version-file: '.nvmrc'
+ cache: 'yarn'
+ - run: yarn install
+ - uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: './src/wasm-lib'
+
+ - run: yarn build:wasm
+ - run: yarn xstate:typegen
+ - run: yarn tsc
+
+
+ check-typos:
+ runs-on: ubuntu-22.04
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ - name: Install codespell
+ run: |
+ python -m pip install codespell
+ - name: Run codespell
+ run: codespell --config .codespellrc # Edit this file to tweak the typo list and other configuration.
+
+
+ build-test-web:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version-file: '.nvmrc'
+ cache: 'yarn'
+
+ - run: yarn install
+
+ - uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: './src/wasm-lib'
+
+ - run: yarn build:wasm
+
+ - run: yarn simpleserver:ci
+
+ - run: yarn test:nowatch
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index 4322df327..000000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,586 +0,0 @@
-name: CI
-
-on:
- pull_request:
- push:
- branches:
- - main
- release:
- types: [published]
- schedule:
- - cron: '0 4 * * *'
- # Daily at 04:00 AM UTC
- # Will checkout the last commit from the default branch (main as of 2023-10-04)
-
-env:
- CUT_RELEASE_PR: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.title, 'Cut release v')) }}
- BUILD_RELEASE: ${{ github.event_name == 'release' || github.event_name == 'schedule' || github.event_name == 'pull_request' && (contains(github.event.pull_request.title, 'Cut release v')) }}
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-permissions:
- contents: write
- pull-requests: write
- actions: read
-
-jobs:
- check-format:
- runs-on: 'ubuntu-latest'
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-node@v4
- with:
- node-version-file: '.nvmrc'
- cache: 'yarn'
- - run: yarn install
- - run: yarn fmt-check
-
- check-types:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-node@v4
- with:
- node-version-file: '.nvmrc'
- cache: 'yarn'
- - run: yarn install
- - uses: Swatinem/rust-cache@v2
- with:
- workspaces: './src/wasm-lib'
-
- - run: yarn build:wasm
- - run: yarn xstate:typegen
- - run: yarn tsc
-
-
- check-typos:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Set up Python
- uses: actions/setup-python@v5
- - name: Install codespell
- run: |
- python -m pip install codespell
- - name: Run codespell
- run: codespell --config .codespellrc # Edit this file to tweak the typo list and other configuration.
-
-
- build-test-web:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
-
- - uses: actions/setup-node@v4
- with:
- node-version-file: '.nvmrc'
- cache: 'yarn'
-
- - run: yarn install
-
- - uses: Swatinem/rust-cache@v2
- with:
- workspaces: './src/wasm-lib'
-
- - run: yarn build:wasm
-
- - run: yarn simpleserver:ci
- if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
-
- - name: Install Chromium Browser
- if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
- run: yarn playwright install chromium --with-deps
-
- - name: run unit tests
- if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
- run: yarn test:nowatch
- env:
- VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
-
- - name: check for changes
- if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }}
- id: git-check
- run: |
- git add src/lang/std/artifactMapGraphs
- if git status src/lang/std/artifactMapGraphs | grep -q "Changes to be committed"
- then echo "modified=true" >> $GITHUB_OUTPUT
- else echo "modified=false" >> $GITHUB_OUTPUT
- fi
- - name: Commit changes, if any
- if: ${{ github.event_name != 'release' && github.event_name != 'schedule' && steps.git-check.outputs.modified == 'true' }}
- run: |
- git config --local user.email "github-actions[bot]@users.noreply.github.com"
- git config --local user.name "github-actions[bot]"
- git remote set-url origin https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git
- git fetch origin
- echo ${{ github.head_ref }}
- git checkout ${{ github.head_ref }}
- # TODO when webkit works on ubuntu remove the os part of the commit message
- git commit -am "Look at this (photo)Graph *in the voice of Nickelback*" || true
- git push
- git push origin ${{ github.head_ref }}
-
-
-
-
-
- prepare-json-files:
- runs-on: ubuntu-latest # seperate job on Ubuntu for easy string manipulations (compared to Windows)
- outputs:
- version: ${{ steps.export_version.outputs.version }}
- steps:
- - uses: actions/checkout@v4
-
- - uses: actions/setup-node@v4
- with:
- node-version-file: '.nvmrc'
- cache: 'yarn'
-
- - name: Set nightly version
- if: github.event_name == 'schedule'
- run: |
- VERSION=$(date +'%-y.%-m.%-d') yarn bump-jsons
- echo "$(jq --arg url 'https://dl.zoo.dev/releases/modeling-app/nightly/last_update.json' \
- '.plugins.updater.endpoints[]=$url' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json
- echo "$(jq --arg id 'dev.zoo.modeling-app-nightly' \
- '.identifier=$id' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json
- echo "$(jq --arg name 'Zoo Modeling App (Nightly)' \
- '.productName=$name' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json
-
- - name: Set updater test version
- if: ${{ env.CUT_RELEASE_PR == 'true' }}
- run: |
- echo "$(jq --arg url 'https://dl.zoo.dev/releases/modeling-app/test/last_update.json' \
- '.plugins.updater.endpoints[]=$url' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json
-
- - uses: actions/upload-artifact@v3
- if: ${{ github.event_name == 'schedule' || env.CUT_RELEASE_PR == 'true' }}
- with:
- path: |
- package.json
- src-tauri/tauri.conf.json
- src-tauri/tauri.release.conf.json
-
- - id: export_version
- run: echo "version=`cat package.json | jq -r '.version'`" >> "$GITHUB_OUTPUT"
-
-
- build-test-apps:
- needs: [prepare-json-files]
- runs-on: ${{ matrix.os }}
- strategy:
- fail-fast: false
- matrix:
- os: [macos-14, ubuntu-latest, windows-latest]
- env:
- # Specific Apple Universal target for macos
- TAURI_ARGS_MACOS: ${{ matrix.os == 'macos-14' && '--target universal-apple-darwin' || '' }}
- # Only build executable on linux (no appimage or deb)
- TAURI_ARGS_UBUNTU: ${{ matrix.os == 'ubuntu-latest' && '--bundles' || '' }}
- steps:
- - uses: actions/checkout@v4
-
- - uses: actions/download-artifact@v3
- if: github.event_name == 'schedule'
-
- - name: Copy updated .json files
- if: github.event_name == 'schedule'
- run: |
- ls -l artifact
- cp artifact/package.json package.json
- cp artifact/src-tauri/tauri.conf.json src-tauri/tauri.conf.json
- cp artifact/src-tauri/tauri.release.conf.json src-tauri/tauri.release.conf.json
-
- - name: Update WebView2 on Windows
- if: matrix.os == 'windows-latest'
- # Workaround needed to build the tauri windows app with matching edge version.
- # From https://github.com/actions/runner-images/issues/9538
- run: |
- Invoke-WebRequest -Uri 'https://go.microsoft.com/fwlink/p/?LinkId=2124703' -OutFile 'setup.exe'
- Start-Process -FilePath setup.exe -Verb RunAs -Wait
-
- - name: Install ubuntu system dependencies
- if: matrix.os == 'ubuntu-latest'
- run: |
- sudo apt-get update
- sudo apt-get install -y \
- libgtk-3-dev \
- libayatana-appindicator3-dev \
- webkit2gtk-driver \
- libsoup-3.0-dev \
- libjavascriptcoregtk-4.1-dev \
- libwebkit2gtk-4.1-dev \
- at-spi2-core \
- xvfb
-
- - name: Sync node version and setup cache
- uses: actions/setup-node@v4
- with:
- node-version-file: '.nvmrc'
- cache: 'yarn' # Set this to npm, yarn or pnpm.
-
- - run: yarn install
-
- - name: Setup Rust
- uses: dtolnay/rust-toolchain@stable
-
- - name: Setup Rust cache
- uses: swatinem/rust-cache@v2
- with:
- workspaces: './src-tauri -> target'
-
- - uses: Swatinem/rust-cache@v2
- with:
- workspaces: './src/wasm-lib'
-
- - name: Run build:wasm manually
- shell: bash
- env:
- MODE: ${{ env.BUILD_RELEASE == 'true' && '--release' || '--debug' }}
- run: |
- mkdir src/wasm-lib/pkg; cd src/wasm-lib
- echo "building with ${{ env.MODE }}"
- npx wasm-pack build --target web --out-dir pkg ${{ env.MODE }}
- cd ../../
- cp src/wasm-lib/pkg/wasm_lib_bg.wasm public
-
- - name: Run vite build (build:both)
- run: yarn vite build --mode ${{ env.BUILD_RELEASE == 'true' && 'production' || 'development' }}
-
- - name: Fix format
- run: yarn fmt
-
- - name: Install x86 target for Universal builds (MacOS only)
- if: matrix.os == 'macos-14'
- run: |
- rustup target add x86_64-apple-darwin
-
- - name: Prepare certificate and variables (Windows only)
- if: ${{ matrix.os == 'windows-latest' && env.BUILD_RELEASE == 'true' }}
- run: |
- echo "${{secrets.SM_CLIENT_CERT_FILE_B64 }}" | base64 --decode > /d/Certificate_pkcs12.p12
- cat /d/Certificate_pkcs12.p12
- echo "::set-output name=version::${GITHUB_REF#refs/tags/v}"
- echo "SM_HOST=${{ secrets.SM_HOST }}" >> "$GITHUB_ENV"
- echo "SM_API_KEY=${{ secrets.SM_API_KEY }}" >> "$GITHUB_ENV"
- echo "SM_CLIENT_CERT_FILE=D:\\Certificate_pkcs12.p12" >> "$GITHUB_ENV"
- echo "SM_CLIENT_CERT_PASSWORD=${{ secrets.SM_CLIENT_CERT_PASSWORD }}" >> "$GITHUB_ENV"
- echo "C:\Program Files (x86)\Windows Kits\10\App Certification Kit" >> $GITHUB_PATH
- echo "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools" >> $GITHUB_PATH
- echo "C:\Program Files\DigiCert\DigiCert One Signing Manager Tools" >> $GITHUB_PATH
- shell: bash
-
- - name: Setup certicate with SSM KSP (Windows only)
- if: ${{ matrix.os == 'windows-latest' && env.BUILD_RELEASE == 'true' }}
- run: |
- curl -X GET https://one.digicert.com/signingmanager/api-ui/v1/releases/smtools-windows-x64.msi/download -H "x-api-key:%SM_API_KEY%" -o smtools-windows-x64.msi
- msiexec /i smtools-windows-x64.msi /quiet /qn
- smksp_registrar.exe list
- smctl.exe keypair ls
- C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user
- smksp_cert_sync.exe
- shell: cmd
-
- - name: Build the app (debug)
- if: ${{ env.BUILD_RELEASE == 'false' }}
- run: "yarn tauri build --debug ${{ env.TAURI_ARGS_MACOS }} ${{ env.TAURI_ARGS_UBUNTU }}"
-
- - name: Build for Mac TestFlight (nightly)
- if: ${{ github.event_name == 'schedule' && matrix.os == 'macos-14' }}
- shell: bash
- run: |
- unset APPLE_SIGNING_IDENTITY
- unset APPLE_CERTIFICATE
- sign_app="3rd Party Mac Developer Application: KittyCAD Inc (${APPLE_TEAM_ID})"
- sign_install="3rd Party Mac Developer Installer: KittyCAD Inc (${APPLE_TEAM_ID})"
- profile="src-tauri/entitlements/Mac_App_Distribution.provisionprofile"
-
- mkdir -p src-tauri/entitlements
- echo -n "${APPLE_STORE_PROVISIONING_PROFILE}" | base64 --decode -o "${profile}"
-
- echo -n "${APPLE_STORE_DISTRIBUTION_CERT}" | base64 --decode -o "dist.cer"
- echo -n "${APPLE_STORE_INSTALLER_CERT}" | base64 --decode -o "installer.cer"
-
- KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
- KEYCHAIN_PASSWORD="password"
-
- # create temporary keychain
- security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
- security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
- security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
-
- # import certificate to keychain
- security import "dist.cer" -P "$APPLE_STORE_P12_PASSWORD" -k $KEYCHAIN_PATH -f pkcs12 -t cert -A
- security import "installer.cer" -P "$APPLE_STORE_P12_PASSWORD" -k $KEYCHAIN_PATH -f pkcs12 -t cert -A
-
- security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
- security list-keychain -d user -s $KEYCHAIN_PATH
-
- target="universal-apple-darwin"
-
- # Turn off the default target
- # We don't want to install the updater for the apple store build
- sed -i.bu "s/default =/# default =/" src-tauri/Cargo.toml
- rm src-tauri/Cargo.toml.bu
- git diff src-tauri/Cargo.toml
-
- yarn tauri build --target "${target}" --verbose --config src-tauri/tauri.app-store.conf.json
-
- app_path="src-tauri/target/${target}/release/bundle/macos/Zoo Modeling App.app"
- build_name="src-tauri/target/${target}/release/bundle/macos/Zoo Modeling App.pkg"
- cp_dir="src-tauri/target/${target}/release/bundle/macos/Zoo Modeling App.app/Contents/embedded.provisionprofile"
- entitlements="src-tauri/entitlements/app-store.entitlements"
-
- cp "${profile}" "${cp_dir}"
-
- codesign --deep --force -s "${sign_app}" --entitlements "${entitlements}" "${app_path}"
-
- productbuild --component "${app_path}" /Applications/ --sign "${sign_install}" "${build_name}"
-
- # Undo the changes to the Cargo.toml
- git checkout src-tauri/Cargo.toml
-
- env:
- APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
- APPLE_STORE_PROVISIONING_PROFILE: ${{ secrets.APPLE_STORE_PROVISIONING_PROFILE }}
- APPLE_STORE_DISTRIBUTION_CERT: ${{ secrets.APPLE_STORE_DISTRIBUTION_CERT }}
- APPLE_STORE_INSTALLER_CERT: ${{ secrets.APPLE_STORE_INSTALLER_CERT }}
- APPLE_STORE_P12_PASSWORD: ${{ secrets.APPLE_STORE_P12_PASSWORD }}
-
-
- - name: 'Upload to Mac TestFlight (nightly)'
- uses: apple-actions/upload-testflight-build@v1
- if: ${{ github.event_name == 'schedule' && matrix.os == 'macos-14' }}
- with:
- app-path: 'src-tauri/target/universal-apple-darwin/release/bundle/macos/Zoo Modeling App.pkg'
- issuer-id: ${{ secrets.APPLE_STORE_ISSUER_ID }}
- api-key-id: ${{ secrets.APPLE_STORE_API_KEY_ID }}
- api-private-key: ${{ secrets.APPLE_STORE_API_PRIVATE_KEY }}
- app-type: osx
-
-
- - name: Clean up after Mac TestFlight (nightly)
- if: ${{ github.event_name == 'schedule' && matrix.os == 'macos-14' }}
- shell: bash
- run: |
- git status
- # remove our target builds because we want to make sure the later build
- # includes the updater, and that anything we changed with the target
- # does not persist
- rm -rf src-tauri/target
- # Lets get rid of the info.plist for the normal mac builds since its
- # being sketchy.
- rm src-tauri/Info.plist
-
- # We do this after the apple store because the apple store build is
- # specific and we want to overwrite it with the this new build after and
- # not upload the apple store build to the public bucket
- - name: Build the app (release) and sign
- if: ${{ env.BUILD_RELEASE == 'true' }}
- env:
- TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
- TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
- APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
- APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
- APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
- APPLE_ID: ${{ secrets.APPLE_ID }}
- APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
- APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
- TAURI_CONF_ARGS: "--config ${{ matrix.os == 'windows-latest' && 'src-tauri\\tauri.release.conf.json' || 'src-tauri/tauri.release.conf.json' }}"
- run: "yarn tauri build ${{ env.TAURI_CONF_ARGS }} ${{ env.TAURI_ARGS_MACOS }} ${{ env.TAURI_ARGS_UBUNTU }}"
-
- - uses: actions/upload-artifact@v3
- if: matrix.os != 'ubuntu-latest'
- env:
- PREFIX: ${{ matrix.os == 'macos-14' && 'src-tauri/target/universal-apple-darwin' || 'src-tauri/target' }}
- MODE: ${{ env.BUILD_RELEASE == 'true' && 'release' || 'debug' }}
- with:
- path: "${{ env.PREFIX }}/${{ env.MODE }}/bundle/*/*"
-
- - name: Run e2e tests (linux only)
- if: ${{ matrix.os == 'ubuntu-latest' && github.event_name != 'release' && github.event_name != 'schedule' }}
- run: |
- cargo install tauri-driver --force
- source .env.${{ env.BUILD_RELEASE == 'true' && 'production' || 'development' }}
- export VITE_KC_API_BASE_URL
- xvfb-run yarn test:e2e:tauri
- env:
- E2E_APPLICATION: "./src-tauri/target/${{ env.BUILD_RELEASE == 'true' && 'release' || 'debug' }}/zoo-modeling-app"
- KITTYCAD_API_TOKEN: ${{ env.BUILD_RELEASE == 'true' && secrets.KITTYCAD_API_TOKEN || secrets.KITTYCAD_API_TOKEN_DEV }}
-
- - name: Run e2e tests (windows only)
- if: ${{ matrix.os == 'windows-latest' && github.event_name != 'release' && github.event_name != 'schedule' }}
- run: |
- cargo install tauri-driver --force
- yarn wdio run wdio.conf.ts
- env:
- E2E_APPLICATION: ".\\src-tauri\\target\\${{ env.BUILD_RELEASE == 'true' && 'release' || 'debug' }}\\Zoo Modeling App.exe"
- KITTYCAD_API_TOKEN: ${{ env.BUILD_RELEASE == 'true' && secrets.KITTYCAD_API_TOKEN || secrets.KITTYCAD_API_TOKEN_DEV }}
- VITE_KC_API_BASE_URL: ${{ env.BUILD_RELEASE == 'true' && 'https://api.zoo.dev' || 'https://api.dev.zoo.dev' }}
- E2E_TAURI_ENABLED: true
- TS_NODE_COMPILER_OPTIONS: '{"module": "commonjs"}'
-
- - uses: actions/download-artifact@v3
- if: ${{ env.CUT_RELEASE_PR == 'true' }}
-
- - name: Copy updated .json file for updater test
- if: ${{ env.CUT_RELEASE_PR == 'true' }}
- run: |
- ls -l artifact
- cp artifact/src-tauri/tauri.release.conf.json src-tauri/tauri.release.conf.json
- cat src-tauri/tauri.release.conf.json
-
- - name: Build the app (release, updater test)
- if: ${{ env.CUT_RELEASE_PR == 'true' && matrix.os != 'ubuntu-latest' }}
- env:
- TAURI_CONF_ARGS: "-c ${{ matrix.os == 'windows-latest' && 'src-tauri\\tauri.release.conf.json' || 'src-tauri/tauri.release.conf.json' }}"
- TAURI_BUNDLE_ARGS: "-b ${{ matrix.os == 'windows-latest' && 'msi' || 'dmg' }}"
- run: "yarn tauri build ${{ env.TAURI_CONF_ARGS }} ${{ env.TAURI_BUNDLE_ARGS }} ${{ env.TAURI_ARGS_MACOS }}"
-
- - uses: actions/upload-artifact@v3
- if: ${{ env.CUT_RELEASE_PR == 'true' && matrix.os != 'ubuntu-latest' }}
- with:
- path: "${{ matrix.os == 'macos-14' && 'src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg' || 'src-tauri/target/release/bundle/msi/*.msi' }}"
- name: updater-test
-
-
- publish-apps-release:
- permissions:
- contents: write
- runs-on: ubuntu-latest
- if: ${{ github.event_name == 'release' || github.event_name == 'schedule' }}
- needs: [check-format, check-types, check-typos, build-test-web, prepare-json-files, build-test-apps]
- env:
- VERSION_NO_V: ${{ needs.prepare-json-files.outputs.version }}
- VERSION: ${{ github.event_name == 'release' && format('v{0}', needs.prepare-json-files.outputs.version) || needs.prepare-json-files.outputs.version }}
- PUB_DATE: ${{ github.event_name == 'release' && github.event.release.created_at || github.event.repository.updated_at }}
- NOTES: ${{ github.event_name == 'release' && github.event.release.body || format('Nightly build, commit {0}', github.sha) }}
- BUCKET_DIR: ${{ github.event_name == 'release' && 'dl.kittycad.io/releases/modeling-app' || 'dl.kittycad.io/releases/modeling-app/nightly' }}
- WEBSITE_DIR: ${{ github.event_name == 'release' && 'dl.zoo.dev/releases/modeling-app' || 'dl.zoo.dev/releases/modeling-app/nightly' }}
- URL_CODED_NAME: ${{ github.event_name == 'schedule' && 'Zoo%20Modeling%20App%20%28Nightly%29' || 'Zoo%20Modeling%20App' }}
- steps:
- - uses: actions/download-artifact@v3
-
- - name: Generate the update static endpoint
- run: |
- ls -l artifact/*/*oo*
- DARWIN_SIG=`cat artifact/macos/*.app.tar.gz.sig`
- WINDOWS_SIG=`cat artifact/msi/*.msi.zip.sig`
- RELEASE_DIR=https://${WEBSITE_DIR}/${VERSION}
- jq --null-input \
- --arg version "${VERSION}" \
- --arg pub_date "${PUB_DATE}" \
- --arg notes "${NOTES}" \
- --arg darwin_sig "$DARWIN_SIG" \
- --arg darwin_url "$RELEASE_DIR/macos/${{ env.URL_CODED_NAME }}.app.tar.gz" \
- --arg windows_sig "$WINDOWS_SIG" \
- --arg windows_url "$RELEASE_DIR/msi/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_x64_en-US.msi.zip" \
- '{
- "version": $version,
- "pub_date": $pub_date,
- "notes": $notes,
- "platforms": {
- "darwin-x86_64": {
- "signature": $darwin_sig,
- "url": $darwin_url
- },
- "darwin-aarch64": {
- "signature": $darwin_sig,
- "url": $darwin_url
- },
- "windows-x86_64": {
- "signature": $windows_sig,
- "url": $windows_url
- }
- }
- }' > last_update.json
- cat last_update.json
-
- - name: Generate the download static endpoint
- run: |
- RELEASE_DIR=https://${WEBSITE_DIR}/${VERSION}
- jq --null-input \
- --arg version "${VERSION}" \
- --arg pub_date "${PUB_DATE}" \
- --arg notes "${NOTES}" \
- --arg darwin_url "$RELEASE_DIR/dmg/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_universal.dmg" \
- --arg windows_url "$RELEASE_DIR/msi/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_x64_en-US.msi" \
- '{
- "version": $version,
- "pub_date": $pub_date,
- "notes": $notes,
- "platforms": {
- "dmg-universal": {
- "url": $darwin_url
- },
- "msi-x86_64": {
- "url": $windows_url
- }
- }
- }' > last_download.json
- cat last_download.json
-
- - name: Authenticate to Google Cloud
- uses: 'google-github-actions/auth@v2.1.3'
- with:
- credentials_json: '${{ secrets.GOOGLE_CLOUD_DL_SA }}'
-
- - name: Set up Google Cloud SDK
- uses: google-github-actions/setup-gcloud@v2.1.0
- with:
- project_id: kittycadapi
-
- - name: Upload release files to public bucket
- uses: google-github-actions/upload-cloud-storage@v2.1.1
- with:
- path: artifact
- glob: '*/Zoo*'
- parent: false
- destination: ${{ env.BUCKET_DIR }}/${{ env.VERSION }}
-
- - name: Upload update endpoint to public bucket
- uses: google-github-actions/upload-cloud-storage@v2.1.1
- with:
- path: last_update.json
- destination: ${{ env.BUCKET_DIR }}
-
- - name: Upload download endpoint to public bucket
- uses: google-github-actions/upload-cloud-storage@v2.1.1
- with:
- path: last_download.json
- destination: ${{ env.BUCKET_DIR }}
-
- - name: Upload release files to Github
- if: ${{ github.event_name == 'release' }}
- uses: softprops/action-gh-release@v2
- with:
- files: 'artifact/*/Zoo*'
-
- announce_release:
- needs: [publish-apps-release]
- runs-on: ubuntu-latest
- if: github.event_name == 'release'
- steps:
- - name: Check out code
- uses: actions/checkout@v4
-
- - name: Set up Python
- uses: actions/setup-python@v5
- with:
- python-version: '3.x'
-
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install requests
-
- - name: Announce Release
- env:
- DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
- RELEASE_VERSION: ${{ github.event.release.tag_name }}
- RELEASE_BODY: ${{ github.event.release.body}}
- run: python public/announce_release.py
diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml
index f45148282..d84e3a1a5 100644
--- a/.github/workflows/playwright.yml
+++ b/.github/workflows/playwright.yml
@@ -171,7 +171,7 @@ jobs:
if [[ ! -f "test-results/.last-run.json" ]]; then
# if no last run artifact, than run plawright normally
echo "run playwright normally"
- yarn playwright test --project="Google Chrome" --config=playwright.ci.config.ts --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} --grep-invert=@snapshot || true
+ yarn playwright test --project="Google Chrome" --config=playwright.ci.config.ts --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} --grep-invert="@snapshot|@electron" || true
# # send to axiom
node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
fi
@@ -186,7 +186,7 @@ jobs:
if [[ $failed_tests -gt 0 ]]; then
echo "retried=true" >>$GITHUB_OUTPUT
echo "run playwright with last failed tests and retry $retry"
- yarn playwright test --project="Google Chrome" --config=playwright.ci.config.ts --last-failed --grep-invert=@snapshot || true
+ yarn playwright test --project="Google Chrome" --config=playwright.ci.config.ts --last-failed --grep-invert="@snapshot|@electron" || true
# send to axiom
node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
retry=$((retry + 1))
@@ -233,6 +233,7 @@ jobs:
retention-days: 30
overwrite: true
+
playwright-macos:
timeout-minutes: 30
runs-on: macos-14
@@ -325,7 +326,7 @@ jobs:
if [[ ! -f "test-results/.last-run.json" ]]; then
# if no last run artifact, than run plawright normally
echo "run playwright normally"
- yarn playwright test --project="webkit" --config=playwright.ci.config.ts --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} --grep-invert=@snapshot || true
+ yarn playwright test --project="webkit" --config=playwright.ci.config.ts --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} --grep-invert="@snapshot|@electron" || true
# # send to axiom
node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
fi
@@ -340,7 +341,7 @@ jobs:
if [[ $failed_tests -gt 0 ]]; then
echo "retried=true" >>$GITHUB_OUTPUT
echo "run playwright with last failed tests and retry $retry"
- yarn playwright test --project="webkit" --config=playwright.ci.config.ts --last-failed --grep-invert=@snapshot || true
+ yarn playwright test --project="webkit" --config=playwright.ci.config.ts --last-failed --grep-invert="@snapshot|@electron" || true
# send to axiom
node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
retry=$((retry + 1))
@@ -381,3 +382,156 @@ jobs:
path: playwright-report/
retention-days: 30
overwrite: true
+
+ playwright-electron:
+ timeout-minutes: 30
+ runs-on: ubuntu-latest
+ needs: check-rust-changes
+ steps:
+ - name: Tune GitHub-hosted runner network
+ uses: smorimoto/tune-github-hosted-runner-network@v1
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version-file: '.nvmrc'
+ cache: 'yarn'
+ - uses: KittyCAD/action-install-cli@main
+ - name: Install dependencies
+ run: yarn
+ - name: Cache Playwright Browsers
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cache/ms-playwright/
+ key: ${{ runner.os }}-playwright-${{ hashFiles('yarn.lock') }}
+ - name: Install Playwright Browsers
+ run: yarn playwright install chromium --with-deps
+ - name: Download Wasm Cache
+ id: download-wasm
+ if: needs.check-rust-changes.outputs.rust-changed == 'false'
+ uses: dawidd6/action-download-artifact@v6
+ continue-on-error: true
+ with:
+ github_token: ${{secrets.GITHUB_TOKEN}}
+ name: wasm-bundle
+ workflow: build-and-store-wasm.yml
+ branch: main
+ path: src/wasm-lib/pkg
+ - name: copy wasm blob
+ if: needs.check-rust-changes.outputs.rust-changed == 'false'
+ run: cp src/wasm-lib/pkg/wasm_lib_bg.wasm public
+ continue-on-error: true
+ - name: Setup Rust
+ uses: dtolnay/rust-toolchain@stable
+ - name: Cache Wasm (because rust diff)
+ if: needs.check-rust-changes.outputs.rust-changed == 'true'
+ uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: './src/wasm-lib'
+ - name: OR Cache Wasm (because wasm cache failed)
+ if: steps.download-wasm.outcome == 'failure'
+ uses: Swatinem/rust-cache@v2
+ with:
+ workspaces: './src/wasm-lib'
+ - name: Install vector
+ run: |
+ curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev > /tmp/vector.sh
+ chmod +x /tmp/vector.sh
+ /tmp/vector.sh -y -no-modify-path
+ mkdir -p /tmp/vector
+ cp .github/workflows/vector.toml /tmp/vector.toml
+ sed -i "s#GITHUB_WORKFLOW#${GITHUB_WORKFLOW}#g" /tmp/vector.toml
+ sed -i "s#GITHUB_REPOSITORY#${GITHUB_REPOSITORY}#g" /tmp/vector.toml
+ sed -i "s#GITHUB_SHA#${GITHUB_SHA}#g" /tmp/vector.toml
+ sed -i "s#GITHUB_REF_NAME#${GITHUB_REF_NAME}#g" /tmp/vector.toml
+ sed -i "s#GH_ACTIONS_AXIOM_TOKEN#${{secrets.GH_ACTIONS_AXIOM_TOKEN}}#g" /tmp/vector.toml
+ cat /tmp/vector.toml
+ ${HOME}/.vector/bin/vector --config /tmp/vector.toml &
+ - name: Build Wasm (because rust diff)
+ if: needs.check-rust-changes.outputs.rust-changed == 'true'
+ run: yarn build:wasm
+ - name: OR Build Wasm (because wasm cache failed)
+ if: steps.download-wasm.outcome == 'failure'
+ run: yarn build:wasm
+ - name: build web
+ run: yarn build:local
+ - uses: actions/download-artifact@v4
+ if: always()
+ continue-on-error: true
+ with:
+ name: test-results-ubuntu-${{ github.sha }}
+ path: test-results/
+ - name: run electron
+ run: |
+ yarn electron:start > electron.log 2>&1 &
+ while ! grep -q "built in" electron.log; do
+ sleep 1
+ done
+ - name: Run ubuntu/chrome flow (with retries)
+ id: retry
+ if: always()
+ run: |
+ if [[ ! -f "test-results/.last-run.json" ]]; then
+ # if no last run artifact, than run plawright normally
+ echo "run playwright normally"
+ yarn playwright test --project="Google Chrome" --grep=@electron || true
+ # # send to axiom
+ node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
+ fi
+
+ retry=1
+ max_retrys=4
+
+ # retry failed tests, doing our own retries because using inbuilt playwright retries causes connection issues
+ while [[ $retry -le $max_retrys ]]; do
+ if [[ -f "test-results/.last-run.json" ]]; then
+ failed_tests=$(jq '.failedTests | length' test-results/.last-run.json)
+ if [[ $failed_tests -gt 0 ]]; then
+ echo "retried=true" >>$GITHUB_OUTPUT
+ echo "run playwright with last failed tests and retry $retry"
+ yarn playwright test --project="Google Chrome" --last-failed --grep=@electron || true
+ # send to axiom
+ node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
+ retry=$((retry + 1))
+ else
+ echo "retried=false" >>$GITHUB_OUTPUT
+ exit 0
+ fi
+ else
+ echo "retried=false" >>$GITHUB_OUTPUT
+ exit 0
+ fi
+ done
+
+ echo "retried=false" >>$GITHUB_OUTPUT
+
+ if [[ -f "test-results/.last-run.json" ]]; then
+ failed_tests=$(jq '.failedTests | length' test-results/.last-run.json)
+ if [[ $failed_tests -gt 0 ]]; then
+ # if it still fails after 3 retrys, then fail the job
+ exit 1
+ fi
+ fi
+ exit 0
+ env:
+ CI: true
+ token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
+ - name: send to axiom
+ if: always()
+ shell: bash
+ run: |
+ node playwrightProcess.mjs | tee /tmp/github-actions.log
+ - uses: actions/upload-artifact@v4
+ if: always()
+ with:
+ name: test-results-electron-${{ github.sha }}
+ path: test-results/
+ retention-days: 30
+ overwrite: true
+ - uses: actions/upload-artifact@v4
+ if: always()
+ with:
+ name: playwright-report-electron-${{ github.sha }}
+ path: playwright-report/
+ retention-days: 30
+ overwrite: true
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 0330b8110..28f97c4de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,3 +62,10 @@ Mac_App_Distribution.provisionprofile
*.tsbuildinfo
venv
+.vite/
+
+# electron
+out/
+
+src-tauri/target
+electron-test-projects-dir
\ No newline at end of file
diff --git a/README.md b/README.md
index 388c57cd0..bd55778e7 100644
--- a/README.md
+++ b/README.md
@@ -89,26 +89,19 @@ enable third-party cookies. You can enable third-party cookies by clicking on
the eye with a slash through it in the URL bar, and clicking on "Enable
Third-Party Cookies".
-## Tauri
+## Desktop
-To spin up up tauri dev, `yarn install` and `yarn build:wasm-dev` need to have been done before hand then
+To spin up the desktop app, `yarn install` and `yarn build:wasm-dev` need to have been done before hand then
```
-yarn tauri dev
+yarn electron:start
```
-Will spin up the web app before opening up the tauri dev desktop app. Note that it's probably a good idea to close the browser tab that gets opened since at the time of writing they can conflict.
+This will start the application and hot-reload on changed.
-The dev instance automatically opens up the browser devtools which can be disabled by [commenting it out](https://github.com/KittyCAD/modeling-app/blob/main/src-tauri/src/main.rs#L92.)
+Devtools can be opened with the usual Cmd/Ctrl-Shift-I.
-To build, run `yarn tauri build`, or `yarn tauri build --debug` to keep access to the devtools.
-
-Note that these became separate apps on Macos, so make sure you open the right one after a build 😉
-
-
-
-
-
+To build, run `yarn electron:package`.
## Checking out commits / Bisecting
diff --git a/add-osx-cert.sh b/add-osx-cert.sh
new file mode 100644
index 000000000..173322565
--- /dev/null
+++ b/add-osx-cert.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env sh
+# From https://dev.to/rwwagner90/signing-electron-apps-with-github-actions-4cof
+
+KEY_CHAIN=build.keychain
+CERTIFICATE_P12=certificate.p12
+
+# Recreate the certificate from the secure environment variable
+echo $APPLE_CERTIFICATE | base64 --decode > $CERTIFICATE_P12
+
+#create a keychain
+security create-keychain -p actions $KEY_CHAIN
+
+# Make the keychain the default so identities are found
+security default-keychain -s $KEY_CHAIN
+
+# Unlock the keychain
+security unlock-keychain -p actions $KEY_CHAIN
+
+security import $CERTIFICATE_P12 -k $KEY_CHAIN -P $APPLE_CERTIFICATE_PASSWORD -T /usr/bin/codesign;
+
+security set-key-partition-list -S apple-tool:,apple: -s -k actions $KEY_CHAIN
+
+# remove certs
+rm -fr *.p12
\ No newline at end of file
diff --git a/e2e/playwright/electron-setup.spec.ts b/e2e/playwright/electron-setup.spec.ts
new file mode 100644
index 000000000..52e2883f1
--- /dev/null
+++ b/e2e/playwright/electron-setup.spec.ts
@@ -0,0 +1,46 @@
+import test, { _electron } from '@playwright/test'
+import { TEST_SETTINGS_KEY } from './storageStates'
+import { _electron as electron } from '@playwright/test'
+import * as TOML from '@iarna/toml'
+import fs from 'node:fs'
+import { secrets } from './secrets'
+
+test('Electron setup', { tag: '@electron' }, async () => {
+ // create or otherwise clear the folder ./electron-test-projects-dir
+ const fileName = './electron-test-projects-dir'
+ try {
+ fs.rmSync(fileName, { recursive: true })
+ } catch (e) {
+ console.error(e)
+ }
+
+ fs.mkdirSync(fileName)
+
+ // get full path for ./electron-test-projects-dir
+ const fullPath = fs.realpathSync(fileName)
+
+ const electronApp = await electron.launch({
+ args: ['.'],
+ })
+
+ const page = await electronApp.firstWindow()
+
+ // Set local storage directly using evaluate
+ await page.evaluate(
+ (token) => localStorage.setItem('TOKEN_PERSIST_KEY', token),
+ secrets.token
+ )
+
+ // Override settings with electron temporary project directory
+ await page.addInitScript(
+ async ({ settingsKey, settings }) => {
+ localStorage.setItem(settingsKey, settings)
+ },
+ {
+ settingsKey: TEST_SETTINGS_KEY,
+ settings: TOML.stringify({ settings: {
+ app: { projectDirectory: fullPath },
+ } }),
+ }
+ )
+})
diff --git a/e2e/playwright/projects.spec.ts b/e2e/playwright/projects.spec.ts
new file mode 100644
index 000000000..981055da7
--- /dev/null
+++ b/e2e/playwright/projects.spec.ts
@@ -0,0 +1,122 @@
+import { _electron as electron, test, expect } from '@playwright/test'
+import { getUtils, setup, tearDown } from './test-utils'
+import fs from 'fs/promises'
+import { secrets } from './secrets'
+import { join } from 'path'
+import { tomlStringify } from 'lang/wasm'
+
+test.afterEach(async ({ page }, testInfo) => {
+ await tearDown(page, testInfo)
+})
+
+test(
+ 'When the project folder is empty, user can create new project and open it.',
+ { tag: '@electron' },
+ async ({ page: browserPage, context: browserContext }, testInfo) => {
+ // create or otherwise clear the folder ./electron-test-projects-dir
+ const settingsFileName = `./${testInfo.title
+ .replace(/\s/gi, '-')
+ .replace(/\W/gi, '')}`
+ const projectDirName = settingsFileName + '-dir'
+ try {
+ await fs.rm(projectDirName, { recursive: true })
+ } catch (e) {
+ console.error(e)
+ }
+
+ await fs.mkdir(projectDirName)
+
+ // get full path for ./electron-test-projects-dir
+ const fullProjectPath = await fs.realpath(projectDirName)
+
+ const electronApp = await electron.launch({
+ args: ['.'],
+ })
+ const context = electronApp.context()
+ const page = await electronApp.firstWindow()
+
+ const electronTempDirectory = await page.evaluate(async () => {
+ return await window.electron.getPath(
+ 'temp'
+ )
+ })
+ const tempSettingsFilePath = join(electronTempDirectory, settingsFileName)
+ const settingsOverrides = tomlStringify({
+ app: {
+ projectDirectory: fullProjectPath,
+ },
+ })
+
+ if (settingsOverrides instanceof Error) {
+ throw settingsOverrides
+ }
+ await fs.writeFile(tempSettingsFilePath + '.toml', settingsOverrides)
+
+ console.log('from within test setup', {
+ settingsFileName,
+ fullPath: fullProjectPath,
+ electronApp,
+ page,
+ settingsFilePath: tempSettingsFilePath + '.toml',
+ })
+
+ await setup(context, page, fullProjectPath)
+ // Set local storage directly using evaluate
+
+ const u = await getUtils(page)
+ await page.setViewportSize({ width: 1200, height: 500 })
+ await page.goto('http://localhost:3000/')
+
+ page.on('console', console.log)
+
+ // expect to see text "No Projects found"
+ await expect(page.getByText('No Projects found')).toBeVisible()
+
+ await page.getByRole('button', { name: 'New project' }).click()
+
+ await expect(page.getByText('Successfully created')).toBeVisible()
+ await expect(page.getByText('Successfully created')).not.toBeVisible()
+
+ await expect(page.getByText('project-000')).toBeVisible()
+
+ await page.getByText('project-000').click()
+
+ await expect(page.getByTestId('loading')).toBeAttached()
+ await expect(page.getByTestId('loading')).not.toBeAttached({
+ timeout: 20_000,
+ })
+
+ await expect(
+ page.getByRole('button', { name: 'Start Sketch' })
+ ).toBeEnabled({
+ timeout: 20_000,
+ })
+
+ await page.locator('.cm-content')
+ .fill(`const sketch001 = startSketchOn('XZ')
+ |> startProfileAt([-87.4, 282.92], %)
+ |> line([324.07, 27.199], %, $seg01)
+ |> line([118.328, -291.754], %)
+ |> line([-180.04, -202.08], %)
+ |> lineTo([profileStartX(%), profileStartY(%)], %)
+ |> close(%)
+const extrude001 = extrude(200, sketch001)`)
+
+ const pointOnModel = { x: 660, y: 250 }
+
+ // check the model loaded by checking it's grey
+ await expect
+ .poll(() => u.getGreatestPixDiff(pointOnModel, [132, 132, 132]), {
+ timeout: 10_000,
+ })
+ .toBeLessThan(10)
+
+ await page.mouse.click(pointOnModel.x, pointOnModel.y)
+ // check user can interact with model by checking it turns yellow
+ await expect
+ .poll(() => u.getGreatestPixDiff(pointOnModel, [176, 180, 132]))
+ .toBeLessThan(10)
+
+ await electronApp.close()
+ }
+)
diff --git a/e2e/playwright/test-utils.ts b/e2e/playwright/test-utils.ts
index bff42b02c..6a93f09f0 100644
--- a/e2e/playwright/test-utils.ts
+++ b/e2e/playwright/test-utils.ts
@@ -17,6 +17,7 @@ import waitOn from 'wait-on'
import { secrets } from './secrets'
import { TEST_SETTINGS_KEY, TEST_SETTINGS } from './storageStates'
import * as TOML from '@iarna/toml'
+import { SaveSettingsPayload } from 'lib/settings/settingsTypes'
type TestColor = [number, number, number]
export const TEST_COLORS = {
@@ -623,7 +624,9 @@ export async function tearDown(page: Page, testInfo: TestInfo) {
await page.waitForTimeout(3000)
}
-export async function setup(context: BrowserContext, page: Page) {
+// settingsOverrides may need to be augmented to take more generic items,
+// but we'll be strict for now
+export async function setup(context: BrowserContext, page: Page, overrideDirectory?: string) {
// wait for Vite preview server to be up
await waitOn({
resources: ['tcp:3000'],
@@ -640,7 +643,13 @@ export async function setup(context: BrowserContext, page: Page) {
{
token: secrets.token,
settingsKey: TEST_SETTINGS_KEY,
- settings: TOML.stringify({ settings: TEST_SETTINGS }),
+ settings: TOML.stringify({
+ ...TEST_SETTINGS,
+ app: {
+ ...TEST_SETTINGS.app,
+ projectDirectory: overrideDirectory || TEST_SETTINGS.app.projectDirectory,
+ },
+ }),
}
)
// kill animations, speeds up tests and reduced flakiness
diff --git a/e2e/tauri/specs/app.spec.ts b/e2e/tauri/specs/app.spec.ts
deleted file mode 100644
index 99e428189..000000000
--- a/e2e/tauri/specs/app.spec.ts
+++ /dev/null
@@ -1,155 +0,0 @@
-import { browser, $, expect } from '@wdio/globals'
-import fs from 'fs/promises'
-import path from 'path'
-import os from 'os'
-import { click, setDatasetValue } from '../utils'
-
-const isWin32 = os.platform() === 'win32'
-const documentsDir = path.join(os.homedir(), 'Documents')
-const userSettingsDir = path.join(
- os.homedir(),
- '.config',
- 'dev.zoo.modeling-app'
-)
-const defaultProjectDir = path.join(documentsDir, 'zoo-modeling-app-projects')
-const newProjectDir = path.join(documentsDir, 'a-different-directory')
-const tmp = process.env.TEMP || '/tmp'
-const userCodeDir = path.join(tmp, 'kittycad_user_code')
-
-describe('ZMA sign in flow', () => {
- before(async () => {
- // Clean up filesystem from previous tests
- await new Promise((resolve) => setTimeout(resolve, 100))
- await fs.rm(defaultProjectDir, { force: true, recursive: true })
- await fs.rm(newProjectDir, { force: true, recursive: true })
- await fs.rm(userCodeDir, { force: true })
- await fs.rm(userSettingsDir, { force: true, recursive: true })
- await fs.mkdir(defaultProjectDir, { recursive: true })
- await fs.mkdir(newProjectDir, { recursive: true })
- })
-
- it('opens the auth page and signs in', async () => {
- const signInButton = await $('[data-testid="sign-in-button"]')
- expect(await signInButton.getText()).toEqual('Sign in')
-
- await click(signInButton)
- await new Promise((resolve) => setTimeout(resolve, 2000))
-
- // Get from main.rs
- const userCode = await (await fs.readFile(userCodeDir)).toString()
- console.log(`Found user code ${userCode}`)
-
- // Device flow: verify
- const token = process.env.KITTYCAD_API_TOKEN
- const headers = {
- Authorization: `Bearer ${token}`,
- Accept: 'application/json',
- 'Content-Type': 'application/json',
- }
- const apiBaseUrl = process.env.VITE_KC_API_BASE_URL
- const verifyUrl = `${apiBaseUrl}/oauth2/device/verify?user_code=${userCode}`
- console.log(`GET ${verifyUrl}`)
- const vr = await fetch(verifyUrl, { headers })
- console.log(vr.status)
-
- // Device flow: confirm
- const confirmUrl = `${apiBaseUrl}/oauth2/device/confirm`
- const data = JSON.stringify({ user_code: userCode })
- console.log(`POST ${confirmUrl} ${data}`)
- const cr = await fetch(confirmUrl, {
- headers,
- method: 'POST',
- body: data,
- })
- console.log(cr.status)
-
- // Now should be signed in
- await new Promise((resolve) => setTimeout(resolve, 10000))
- const newFileButton = await $('[data-testid="home-new-file"]')
- expect(await newFileButton.getText()).toEqual('New project')
- })
-})
-
-describe('ZMA authorized user flows', () => {
- // Note: each flow below is intended to start *and* end from the home page
-
- it('opens the settings page, checks filesystem settings, and closes the settings page', async () => {
- const menuButton = await $('[data-testid="user-sidebar-toggle"]')
- await click(menuButton)
-
- const settingsButton = await $('[data-testid="user-settings"]')
- await click(settingsButton)
-
- const projectDirInput = await $('[data-testid="project-directory-input"]')
- expect(await projectDirInput.getValue()).toEqual(defaultProjectDir)
-
- /*
- * We've set up the project directory input (in initialSettings.tsx)
- * to be able to skip the folder selection dialog if data-testValue
- * has a value, allowing us to test the input otherwise works.
- */
- // TODO: understand why we need to force double \ on Windows
- await setDatasetValue(
- projectDirInput,
- 'testValue',
- isWin32 ? newProjectDir.replaceAll('\\', '\\\\') : newProjectDir
- )
- const projectDirButton = await $('[data-testid="project-directory-button"]')
- await click(projectDirButton)
- await new Promise((resolve) => setTimeout(resolve, 500))
- // This line is broken. I need a different way to grab the toast
- await expect(await $('div*=Set project directory to')).toBeDisplayed()
-
- const nameInput = await $('[data-testid="projects-defaultProjectName"]')
- expect(await nameInput.getValue()).toEqual('project-$nnn')
-
- // Setting it back (for back to back local tests)
- await new Promise((resolve) => setTimeout(resolve, 5000))
- await setDatasetValue(
- projectDirInput,
- 'testValue',
- isWin32 ? defaultProjectDir.replaceAll('\\', '\\\\') : newProjectDir
- )
- await click(projectDirButton)
-
- const closeButton = await $('[data-testid="settings-close-button"]')
- await click(closeButton)
- })
-
- it('checks that no file exists, creates a new file', async () => {
- const homeSection = await $('[data-testid="home-section"]')
- expect(await homeSection.getText()).toContain('No Projects found')
-
- const newFileButton = await $('[data-testid="home-new-file"]')
- await click(newFileButton)
- await new Promise((resolve) => setTimeout(resolve, 1000))
-
- expect(await homeSection.getText()).toContain('project-000')
- })
-
- it('opens the new file and expects a loading stream', async () => {
- const projectLink = await $('[data-testid="project-link"]')
- await click(projectLink)
- if (isWin32) {
- // TODO: actually do something to check that the stream is up
- await new Promise((resolve) => setTimeout(resolve, 5000))
- } else {
- const errorText = await $('[data-testid="unexpected-error"]')
- expect(await errorText.getText()).toContain('unexpected error')
- }
- const base = isWin32 ? 'http://tauri.localhost' : 'tauri://localhost'
- await browser.execute(`window.location.href = "${base}/home"`)
- })
-})
-
-describe('ZMA sign out flow', () => {
- it('signs out', async () => {
- await new Promise((resolve) => setTimeout(resolve, 1000))
- const menuButton = await $('[data-testid="user-sidebar-toggle"]')
- await click(menuButton)
- const signoutButton = await $('[data-testid="user-sidebar-sign-out"]')
- await click(signoutButton)
- const newSignInButton = await $('[data-testid="sign-in-button"]')
- expect(await newSignInButton.getText()).toEqual('Sign in')
- })
-})
diff --git a/e2e/tauri/utils.ts b/e2e/tauri/utils.ts
deleted file mode 100644
index 4af446e6f..000000000
--- a/e2e/tauri/utils.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { browser } from '@wdio/globals'
-
-export async function click(element: WebdriverIO.Element): Promise {
- // Workaround for .click(), see https://github.com/tauri-apps/tauri/issues/6541
- await element.waitForClickable()
- await browser.execute('arguments[0].click();', element)
-}
-
-/* Shoutout to @Sheap on Github for a great workaround utility:
- * https://github.com/tauri-apps/tauri/issues/6541#issue-1638944060
- */
-export async function setDatasetValue(
- field: WebdriverIO.Element,
- property: string,
- value: string
-) {
- await browser.execute(`arguments[0].dataset.${property} = "${value}"`, field)
-}
diff --git a/forge.config.ts b/forge.config.ts
new file mode 100644
index 000000000..f701bf02d
--- /dev/null
+++ b/forge.config.ts
@@ -0,0 +1,66 @@
+import type { ForgeConfig } from '@electron-forge/shared-types'
+import { MakerSquirrel } from '@electron-forge/maker-squirrel'
+import { MakerZIP } from '@electron-forge/maker-zip'
+import { MakerDeb } from '@electron-forge/maker-deb'
+import { MakerRpm } from '@electron-forge/maker-rpm'
+import { VitePlugin } from '@electron-forge/plugin-vite'
+import { FusesPlugin } from '@electron-forge/plugin-fuses'
+import { FuseV1Options, FuseVersion } from '@electron/fuses'
+
+const config: ForgeConfig = {
+ packagerConfig: {
+ asar: true,
+ osxSign: (process.env.BUILD_RELEASE === 'true' && {}) || undefined,
+ osxNotarize:
+ (process.env.BUILD_RELEASE === 'true' && {
+ appleId: process.env.APPLE_ID || '',
+ appleIdPassword: process.env.APPLE_PASSWORD || '',
+ teamId: process.env.APPLE_TEAM_ID || '',
+ }) ||
+ undefined,
+ executableName: 'zoo-modeling-app',
+ },
+ rebuildConfig: {},
+ makers: [
+ new MakerSquirrel({}),
+ new MakerZIP({}, ['darwin']),
+ new MakerRpm({}),
+ new MakerDeb({}),
+ ],
+ plugins: [
+ new VitePlugin({
+ // `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc.
+ // If you are familiar with Vite configuration, it will look really familiar.
+ build: [
+ {
+ // `entry` is just an alias for `build.lib.entry` in the corresponding file of `config`.
+ entry: 'src/main.ts',
+ config: 'vite.main.config.ts',
+ },
+ {
+ entry: 'src/preload.ts',
+ config: 'vite.preload.config.ts',
+ },
+ ],
+ renderer: [
+ {
+ name: 'main_window',
+ config: 'vite.renderer.config.ts',
+ },
+ ],
+ }),
+ // Fuses are used to enable/disable various Electron functionality
+ // at package time, before code signing the application
+ new FusesPlugin({
+ version: FuseVersion.V1,
+ [FuseV1Options.RunAsNode]: false,
+ [FuseV1Options.EnableCookieEncryption]: true,
+ [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
+ [FuseV1Options.EnableNodeCliInspectArguments]: false,
+ [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
+ [FuseV1Options.OnlyLoadAppFromAsar]: true,
+ }),
+ ],
+}
+
+export default config
diff --git a/forge.env.d.ts b/forge.env.d.ts
new file mode 100644
index 000000000..eb0a5a87e
--- /dev/null
+++ b/forge.env.d.ts
@@ -0,0 +1,35 @@
+export {} // Make this a module
+
+declare global {
+ // This allows TypeScript to pick up the magic constants that's auto-generated by Forge's Vite
+ // plugin that tells the Electron app where to look for the Vite-bundled app code (depending on
+ // whether you're running in development or production).
+ const MAIN_WINDOW_VITE_DEV_SERVER_URL: string
+ const MAIN_WINDOW_VITE_NAME: string
+
+ namespace NodeJS {
+ interface Process {
+ // Used for hot reload after preload scripts.
+ viteDevServers: Record
+ }
+ }
+
+ type VitePluginConfig = ConstructorParameters<
+ typeof import('@electron-forge/plugin-vite').VitePlugin
+ >[0]
+
+ interface VitePluginRuntimeKeys {
+ VITE_DEV_SERVER_URL: `${string}_VITE_DEV_SERVER_URL`
+ VITE_NAME: `${string}_VITE_NAME`
+ }
+}
+
+declare module 'vite' {
+ interface ConfigEnv<
+ K extends keyof VitePluginConfig = keyof VitePluginConfig
+ > {
+ root: string
+ forgeConfig: VitePluginConfig
+ forgeConfigSelf: VitePluginConfig[K][number]
+ }
+}
diff --git a/index.html b/index.html
index 282a733e6..d02bfa591 100644
--- a/index.html
+++ b/index.html
@@ -2,6 +2,10 @@
+
+
diff --git a/interface.d.ts b/interface.d.ts
new file mode 100644
index 000000000..0d3ef898a
--- /dev/null
+++ b/interface.d.ts
@@ -0,0 +1,46 @@
+import fs from 'node:fs/promises'
+import path from 'path'
+import { dialog, shell } from 'electron'
+import kittycad from '@kittycad/lib'
+import { MachinesListing } from 'lib/machineManager'
+
+export interface IElectronAPI {
+ open: typeof dialog.showOpenDialog
+ save: typeof dialog.showSaveDialog
+ openExternal: typeof shell.openExternal
+ showInFolder: typeof shell.showItemInFolder
+ login: (host: string) => Promise
+ platform: typeof process.env.platform
+ arch: typeof process.env.arch
+ version: typeof process.env.version
+ readFile: (path: string) => ReturnType
+ writeFile: (
+ path: string,
+ data: string | Uint8Array
+ ) => ReturnType
+ readdir: (path: string) => ReturnType
+ getPath: (name: string) => Promise
+ rm: typeof fs.rm
+ stat: (path: string) => ReturnType
+ statIsDirectory: (path: string) => Promise
+ path: typeof path
+ mkdir: typeof fs.mkdir
+ rename: (prev: string, next: string) => typeof fs.rename
+ packageJson: {
+ name: string
+ }
+ process: {
+ env: {
+ BASE_URL: (value?: string) => string
+ }
+ }
+ kittycad
+ listMachines: () => Promise
+ getMachineApiIp: () => Promise
+}
+
+declare global {
+ interface Window {
+ electron: IElectronAPI
+ }
+}
diff --git a/make-release.sh b/make-release.sh
index 59deee7f8..39e0b3a4c 100755
--- a/make-release.sh
+++ b/make-release.sh
@@ -57,9 +57,8 @@ echo "New version number without 'v': $new_version_number"
git checkout -b "cut-release-$new_version"
echo "$(jq --arg v "$new_version_number" '.version=$v' package.json --indent 2)" > package.json
-echo "$(jq --arg v "$new_version_number" '.version=$v' src-tauri/tauri.conf.json --indent 2)" > src-tauri/tauri.conf.json
-git add package.json src-tauri/tauri.conf.json
+git add package.json
git commit -m "Cut release $new_version"
echo ""
diff --git a/package.json b/package.json
index 7523b1256..fab3522a0 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,16 @@
{
- "name": "untitled-app",
- "version": "0.24.10",
"private": true,
+ "name": "zoo-modeling-app",
+ "productName": "Zoo Modeling App",
+ "version": "0.24.10",
+ "author": {
+ "name": "Zoo Corporation",
+ "email": "info@zoo.dev",
+ "url": "https://zoo.dev"
+ },
+ "description": "Edit CAD visually or with code",
+ "main": ".vite/build/main.js",
+ "license": "none",
"dependencies": {
"@codemirror/autocomplete": "^6.17.0",
"@codemirror/commands": "^6.6.0",
@@ -22,24 +31,19 @@
"@lezer/lr": "^1.4.1",
"@react-hook/resize-observer": "^2.0.1",
"@replit/codemirror-interact": "^6.3.1",
- "@tauri-apps/api": "^2.0.0-beta.14",
- "@tauri-apps/plugin-dialog": "^2.0.0-beta.6",
- "@tauri-apps/plugin-fs": "^2.0.0-beta.6",
- "@tauri-apps/plugin-http": "^2.0.0-beta.7",
- "@tauri-apps/plugin-os": "^2.0.0-beta.6",
- "@tauri-apps/plugin-process": "^2.0.0-beta.6",
- "@tauri-apps/plugin-shell": "^2.0.0-beta.7",
- "@tauri-apps/plugin-updater": "^2.0.0-beta.6",
"@ts-stack/markdown": "^1.5.0",
"@tweenjs/tween.js": "^23.1.1",
"@xstate/inspect": "^0.8.0",
"@xstate/react": "^3.2.2",
+ "bonjour-service": "^1.2.1",
"codemirror": "^6.0.1",
"decamelize": "^6.0.0",
+ "electron-squirrel-startup": "^1.0.1",
"fuse.js": "^7.0.0",
"html2canvas-pro": "^1.5.5",
"json-rpc-2.0": "^1.6.0",
"jszip": "^3.10.1",
+ "openid-client": "^5.6.5",
"re-resizable": "^6.9.11",
"react": "^18.3.1",
"react-dom": "^18.2.0",
@@ -51,7 +55,6 @@
"react-router-dom": "^6.23.1",
"sketch-helpers": "^0.0.4",
"three": "^0.166.1",
- "typescript": "^5.4.5",
"ua-parser-js": "^1.0.37",
"uuid": "^9.0.1",
"vscode-jsonrpc": "^8.2.1",
@@ -72,8 +75,6 @@
"test": "vitest --mode development",
"test:nowatch": "vitest run --mode development",
"test:rust": "(cd src/wasm-lib && cargo test --all && cargo clippy --all --tests --benches)",
- "test:e2e:tauri": "E2E_TAURI_ENABLED=true TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\"}' wdio run wdio.conf.ts",
- "simpleserver:ci": "yarn pretest && http-server ./public --cors -p 3000 &",
"simpleserver": "yarn pretest && http-server ./public --cors -p 3000",
"fmt": "prettier --write ./src *.ts *.json *.js ./e2e ./packages",
"fmt-check": "prettier --check ./src *.ts *.json *.js ./e2e ./packages",
@@ -88,7 +89,11 @@
"postinstall": "yarn xstate:typegen",
"xstate:typegen": "yarn xstate typegen \"src/**/*.ts?(x)\"",
"make:dev": "make dev",
- "generate:machine-api": "npx openapi-typescript ./openapi/machine-api.json -o src/lib/machine-api.d.ts"
+ "generate:machine-api": "npx openapi-typescript ./openapi/machine-api.json -o src/lib/machine-api.d.ts",
+ "electron:start": "electron-forge start",
+ "electron:package": "electron-forge package",
+ "electron:make": "electron-forge make",
+ "electron:publish": "electron-forge publish"
},
"prettier": {
"trailingComma": "es5",
@@ -110,14 +115,23 @@
},
"devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
- "@babel/preset-env": "^7.25.0",
+ "@babel/preset-env": "^7.24.3",
+ "@electron-forge/cli": "^7.4.0",
+ "@electron-forge/maker-deb": "^7.4.0",
+ "@electron-forge/maker-rpm": "^7.4.0",
+ "@electron-forge/maker-squirrel": "^7.4.0",
+ "@electron-forge/maker-zip": "^7.4.0",
+ "@electron-forge/plugin-auto-unpack-natives": "^7.4.0",
+ "@electron-forge/plugin-fuses": "^7.4.0",
+ "@electron-forge/plugin-vite": "^7.4.0",
+ "@electron/fuses": "^1.8.0",
"@iarna/toml": "^2.2.5",
"@lezer/generator": "^1.7.1",
"@playwright/test": "^1.45.1",
- "@tauri-apps/cli": "==2.0.0-beta.13",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^15.0.2",
"@types/d3-force": "^3.0.10",
+ "@types/electron": "^1.6.10",
"@types/mocha": "^10.0.6",
"@types/node": "^18.19.31",
"@types/pixelmatch": "^5.2.6",
@@ -131,19 +145,17 @@
"@types/wait-on": "^5.3.4",
"@types/wicg-file-system-access": "^2023.10.5",
"@types/ws": "^8.5.10",
+ "@typescript-eslint/eslint-plugin": "^5.0.0",
+ "@typescript-eslint/parser": "^5.0.0",
"@vitejs/plugin-react": "^4.3.0",
"@vitest/web-worker": "^1.5.0",
- "@wdio/cli": "^8.24.3",
- "@wdio/globals": "^8.36.0",
- "@wdio/local-runner": "^8.36.0",
- "@wdio/mocha-framework": "^8.36.0",
- "@wdio/spec-reporter": "^8.36.0",
"@xstate/cli": "^0.5.17",
"autoprefixer": "^10.4.19",
- "d3-force": "^3.0.0",
- "eslint": "^8.57.0",
+ "electron": "^31.2.1",
+ "eslint": "^8.0.1",
"eslint-config-react-app": "^7.0.1",
"eslint-plugin-css-modules": "^2.12.0",
+ "eslint-plugin-import": "^2.25.0",
"eslint-plugin-suggest-no-throw": "^1.0.0",
"happy-dom": "^14.3.10",
"http-server": "^14.1.1",
@@ -156,7 +168,9 @@
"prettier": "^2.8.8",
"setimmediate": "^1.0.5",
"tailwindcss": "^3.4.1",
- "vite": "^5.3.3",
+ "ts-node": "^10.0.0",
+ "typescript": "^5.0.0",
+ "vite": "^5.0.12",
"vite-plugin-eslint": "^1.8.1",
"vite-plugin-package-version": "^1.1.0",
"vite-tsconfig-paths": "^4.3.2",
diff --git a/public/logo-blue.svg b/public/logo-blue.svg
new file mode 100644
index 000000000..17f1629e6
--- /dev/null
+++ b/public/logo-blue.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/public/logo-white.svg b/public/logo-white.svg
new file mode 100644
index 000000000..d976369a9
--- /dev/null
+++ b/public/logo-white.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore
deleted file mode 100644
index aba21e242..000000000
--- a/src-tauri/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Generated by Cargo
-# will have compiled files and executables
-/target/
diff --git a/src-tauri/Info.plist b/src-tauri/Info.plist
deleted file mode 100644
index 8a6b8806e..000000000
--- a/src-tauri/Info.plist
+++ /dev/null
@@ -1,376 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- NSPrincipalClass
- NSApplication
- CFBundlePackageType
- APPL
- NSDesktopFolderUsageDescription
- Zoo Modeling App accesses the Desktop to load and save your project files and/or exported files here
- NSDocumentsFolderUsageDescription
- Zoo Modeling App accesses the Documents folder to load and save your project files and/or exported files here
- NSDownloadsFolderUsageDescription
- Zoo Modeling App accesses the Downloads folder to load and save your project files and/or exported files here
- ITSAppUsesNonExemptEncryption
-
- DTXcode
- 1501
- DTXcodeBuild
- 15A507
- CFBundleURLTypes
-
-
- CFBundleURLName
- dev.zoo.modeling-app
- CFBundleURLSchemes
-
- zoo-modeling-app
- zoo
-
-
-
- LSFileQuarantineEnabled
-
- CFBundleDocumentTypes
-
-
- LSItemContentTypes
-
- dev.zoo.kcl
-
- CFBundleTypeName
- KCL
- CFBundleTypeRole
- Editor
- LSTypeIsPackage
-
- LSHandlerRank
- Owner
-
-
- LSItemContentTypes
-
- dev.zoo.toml
-
- CFBundleTypeName
- TOML
- CFBundleTypeRole
- Editor
- LSTypeIsPackage
-
- LSHandlerRank
- Default
-
-
- LSItemContentTypes
-
- dev.zoo.gltf
-
- CFBundleTypeName
- glTF
- CFBundleTypeRole
- Editor
- LSTypeIsPackage
-
- LSHandlerRank
- Default
-
-
- LSItemContentTypes
-
- dev.zoo.glb
-
- CFBundleTypeName
- glb
- CFBundleTypeRole
- Editor
- LSTypeIsPackage
-
- LSHandlerRank
- Default
-
-
- LSItemContentTypes
-
- dev.zoo.step
-
- CFBundleTypeName
- STEP
- CFBundleTypeRole
- Editor
- LSTypeIsPackage
-
- LSHandlerRank
- Default
-
-
- LSItemContentTypes
-
- dev.zoo.fbx
-
- CFBundleTypeName
- FBX
- CFBundleTypeRole
- Editor
- LSTypeIsPackage
-
- LSHandlerRank
- Default
-
-
- LSItemContentTypes
-
- dev.zoo.sldprt
-
- CFBundleTypeName
- Solidworks Part
- CFBundleTypeRole
- Viewer
- LSTypeIsPackage
-
- LSHandlerRank
- Default
-
-
- LSItemContentTypes
-
- public.geometry-definition-format
-
- CFBundleTypeName
- OBJ
- CFBundleTypeRole
- Editor
- LSTypeIsPackage
-
- LSHandlerRank
- Default
-
-
- LSItemContentTypes
-
- public.polygon-file-format
-
- CFBundleTypeName
- PLY
- CFBundleTypeRole
- Editor
- LSTypeIsPackage
-
- LSHandlerRank
- Default
-
-
- LSItemContentTypes
-
- public.standard-tesselated-geometry-format
-
- CFBundleTypeName
- STL
- CFBundleTypeRole
- Editor
- LSTypeIsPackage
-
- LSHandlerRank
- Default
-
-
- LSItemContentTypes
-
- public.folder
-
- CFBundleTypeName
- Folders
- CFBundleTypeRole
- Viewer
- LSHandlerRank
- Alternate
-
-
- UTExportedTypeDeclarations
-
-
- UTTypeIdentifier
- dev.zoo.kcl
- UTTypeReferenceURL
- https://zoo.dev/docs/kcl
- UTTypeConformsTo
-
- public.source-code
- public.data
- public.text
- public.plain-text
- public.3d-content
- public.script
-
- UTTypeDescription
- KCL (KittyCAD Language) document
- UTTypeTagSpecification
-
- public.filename-extension
-
- kcl
-
- public.mime-type
-
- text/vnd.zoo.kcl
-
-
-
-
- UTTypeIdentifier
- dev.zoo.gltf
- UTTypeReferenceURL
- https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html
- UTTypeConformsTo
-
- public.data
- public.text
- public.plain-text
- public.3d-content
- public.json
-
- UTTypeDescription
- Graphics Library Transmission Format (glTF)
- UTTypeTagSpecification
-
- public.filename-extension
-
- gltf
-
- public.mime-type
-
- model/gltf+json
-
-
-
-
- UTTypeIdentifier
- dev.zoo.glb
- UTTypeReferenceURL
- https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html
- UTTypeConformsTo
-
- public.data
- public.3d-content
-
- UTTypeDescription
- Graphics Library Transmission Format (glTF) binary
- UTTypeTagSpecification
-
- public.filename-extension
-
- glb
-
- public.mime-type
-
- model/gltf-binary
-
-
-
-
- UTTypeIdentifier
- dev.zoo.step
- UTTypeReferenceURL
- https://www.loc.gov/preservation/digital/formats/fdd/fdd000448.shtml
- UTTypeConformsTo
-
- public.data
- public.3d-content
- public.text
- public.plain-text
-
- UTTypeDescription
- STEP-file, ISO 10303-21
- UTTypeTagSpecification
-
- public.filename-extension
-
- step
- stp
-
- public.mime-type
-
- model/step
-
-
-
-
- UTTypeIdentifier
- dev.zoo.sldprt
- UTTypeReferenceURL
- https://docs.fileformat.com/cad/sldprt/
- UTTypeConformsTo
-
- public.data
- public.3d-content
-
- UTTypeDescription
- Solidworks Part
- UTTypeTagSpecification
-
- public.filename-extension
-
- sldprt
-
- public.mime-type
-
- model/vnd.solidworks.sldprt
-
-
-
-
- UTTypeIdentifier
- dev.zoo.fbx
- UTTypeReferenceURL
- https://en.wikipedia.org/wiki/FBX
- UTTypeConformsTo
-
- public.data
- public.3d-content
-
- UTTypeDescription
- Autodesk Filmbox (FBX) format
- UTTypeTagSpecification
-
- public.filename-extension
-
- fbx
- fbxb
-
- public.mime-type
-
- model/vnd.autodesk.fbx
-
-
-
-
- UTTypeIdentifier
- dev.zoo.toml
- UTTypeReferenceURL
- https://toml.io/en/
- UTTypeConformsTo
-
- public.data
- public.text
- public.plain-text
-
- UTTypeDescription
- Tom's Obvious Minimal Language
- UTTypeTagSpecification
-
- public.filename-extension
-
- kcl
-
- public.mime-type
-
- text/toml
-
-
-
-
-
-
diff --git a/src-tauri/build.rs b/src-tauri/build.rs
deleted file mode 100644
index d860e1e6a..000000000
--- a/src-tauri/build.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
- tauri_build::build()
-}
diff --git a/src-tauri/capabilities/desktop.json b/src-tauri/capabilities/desktop.json
deleted file mode 100644
index ffaa69f74..000000000
--- a/src-tauri/capabilities/desktop.json
+++ /dev/null
@@ -1,127 +0,0 @@
-{
- "$schema": "../gen/schemas/desktop-schema.json",
- "identifier": "main-capability",
- "description": "Capability for the main window",
- "context": "local",
- "windows": [
- "main"
- ],
- "permissions": [
- "cli:default",
- "deep-link:default",
- "log:default",
- "path:default",
- "event:default",
- "window:default",
- "app:default",
- "resources:default",
- "menu:default",
- "tray:default",
- "fs:allow-create",
- "fs:allow-read-file",
- "fs:allow-read-text-file",
- "fs:allow-write-file",
- "fs:allow-write-text-file",
- "fs:allow-read-dir",
- "fs:allow-copy-file",
- "fs:allow-mkdir",
- "fs:allow-remove",
- "fs:allow-rename",
- "fs:allow-exists",
- "fs:allow-stat",
- {
- "identifier": "fs:scope",
- "allow": [
- {
- "path": "$TEMP"
- },
- {
- "path": "$TEMP/**/*"
- },
- {
- "path": "$HOME"
- },
- {
- "path": "$HOME/**/*"
- },
- {
- "path": "$HOME/.config"
- },
- {
- "path": "$HOME/.config/**/*"
- },
- {
- "path": "$APPCONFIG"
- },
- {
- "path": "$APPCONFIG/**/*"
- },
- {
- "path": "$DOCUMENT"
- },
- {
- "path": "$DOCUMENT/**/*"
- }
- ]
- },
- "shell:allow-open",
- {
- "identifier": "shell:allow-execute",
- "allow": [
- {
- "name": "open",
- "cmd": "open",
- "args": [
- "-R",
- {
- "validator": "\\S+"
- }
- ],
- "sidecar": false
- },
- {
- "name": "explorer",
- "cmd": "explorer",
- "args": [
- "/select",
- {
- "validator": "\\S+"
- }
- ],
- "sidecar": false
- }
- ]
- },
- "dialog:allow-open",
- "dialog:allow-save",
- "dialog:allow-message",
- "dialog:allow-ask",
- "dialog:allow-confirm",
- {
- "identifier": "http:default",
- "allow": [
- "https://dev.kittycad.io/*",
- "https://dev.zoo.dev/*",
- "https://kittycad.io/*",
- "https://zoo.dev/*",
- "https://api.dev.kittycad.io/*",
- "https://api.dev.zoo.dev/*"
- ]
- },
- "os:allow-platform",
- "os:allow-version",
- "os:allow-os-type",
- "os:allow-family",
- "os:allow-arch",
- "os:allow-exe-extension",
- "os:allow-locale",
- "os:allow-hostname",
- "process:allow-restart",
- "updater:default"
- ],
- "platforms": [
- "linux",
- "macOS",
- "windows"
- ]
-}
diff --git a/src-tauri/entitlements/app-store.entitlements b/src-tauri/entitlements/app-store.entitlements
deleted file mode 100644
index 4590d103b..000000000
--- a/src-tauri/entitlements/app-store.entitlements
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- com.apple.security.app-sandbox
-
- com.apple.security.network.server
-
- com.apple.security.network.client
-
- com.apple.security.files.user-selected.read-write
-
- com.apple.security.files.downloads.read-write
-
- com.apple.application-identifier
- 92H8YB3B95.dev.zoo.modeling-app
- com.apple.developer.team-identifier
- 92H8YB3B95
- com.apple.developer.associated-domains
-
- applinks:app.zoo.dev
-
-
-
diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png
deleted file mode 100644
index 306689941..000000000
Binary files a/src-tauri/icons/128x128.png and /dev/null differ
diff --git a/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png
deleted file mode 100644
index 8722ff010..000000000
Binary files a/src-tauri/icons/128x128@2x.png and /dev/null differ
diff --git a/src-tauri/icons/32x32.png b/src-tauri/icons/32x32.png
deleted file mode 100644
index edd125d4e..000000000
Binary files a/src-tauri/icons/32x32.png and /dev/null differ
diff --git a/src-tauri/icons/Square107x107Logo.png b/src-tauri/icons/Square107x107Logo.png
deleted file mode 100644
index 45dd3b39c..000000000
Binary files a/src-tauri/icons/Square107x107Logo.png and /dev/null differ
diff --git a/src-tauri/icons/Square142x142Logo.png b/src-tauri/icons/Square142x142Logo.png
deleted file mode 100644
index 91e6415d9..000000000
Binary files a/src-tauri/icons/Square142x142Logo.png and /dev/null differ
diff --git a/src-tauri/icons/Square150x150Logo.png b/src-tauri/icons/Square150x150Logo.png
deleted file mode 100644
index eec63b916..000000000
Binary files a/src-tauri/icons/Square150x150Logo.png and /dev/null differ
diff --git a/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png
deleted file mode 100644
index 675a3c0a7..000000000
Binary files a/src-tauri/icons/Square284x284Logo.png and /dev/null differ
diff --git a/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png
deleted file mode 100644
index 101cb8bca..000000000
Binary files a/src-tauri/icons/Square30x30Logo.png and /dev/null differ
diff --git a/src-tauri/icons/Square310x310Logo.png b/src-tauri/icons/Square310x310Logo.png
deleted file mode 100644
index 59b28a9cb..000000000
Binary files a/src-tauri/icons/Square310x310Logo.png and /dev/null differ
diff --git a/src-tauri/icons/Square44x44Logo.png b/src-tauri/icons/Square44x44Logo.png
deleted file mode 100644
index 90e72fd43..000000000
Binary files a/src-tauri/icons/Square44x44Logo.png and /dev/null differ
diff --git a/src-tauri/icons/Square71x71Logo.png b/src-tauri/icons/Square71x71Logo.png
deleted file mode 100644
index 760c79460..000000000
Binary files a/src-tauri/icons/Square71x71Logo.png and /dev/null differ
diff --git a/src-tauri/icons/Square89x89Logo.png b/src-tauri/icons/Square89x89Logo.png
deleted file mode 100644
index b2e81149f..000000000
Binary files a/src-tauri/icons/Square89x89Logo.png and /dev/null differ
diff --git a/src-tauri/icons/StoreLogo.png b/src-tauri/icons/StoreLogo.png
deleted file mode 100644
index f0ad0468a..000000000
Binary files a/src-tauri/icons/StoreLogo.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 9baad87c1..000000000
Binary files a/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png
deleted file mode 100644
index 75133df66..000000000
Binary files a/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index 9baad87c1..000000000
Binary files a/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 1a276e644..000000000
Binary files a/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png
deleted file mode 100644
index 549603971..000000000
Binary files a/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index 1a276e644..000000000
Binary files a/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 01c072dfe..000000000
Binary files a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 5b2840109..000000000
Binary files a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index 01c072dfe..000000000
Binary files a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 0a049dcb4..000000000
Binary files a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 56c646860..000000000
Binary files a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index 0a049dcb4..000000000
Binary files a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 15afbc712..000000000
Binary files a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index a4332df54..000000000
Binary files a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index 15afbc712..000000000
Binary files a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/src-tauri/icons/icon.icns b/src-tauri/icons/icon.icns
deleted file mode 100644
index 642d1efe7..000000000
Binary files a/src-tauri/icons/icon.icns and /dev/null differ
diff --git a/src-tauri/icons/icon.ico b/src-tauri/icons/icon.ico
deleted file mode 100644
index 9a2f0c188..000000000
Binary files a/src-tauri/icons/icon.ico and /dev/null differ
diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png
deleted file mode 100644
index 5e9e45b85..000000000
Binary files a/src-tauri/icons/icon.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-20x20@1x.png b/src-tauri/icons/ios/AppIcon-20x20@1x.png
deleted file mode 100644
index 51fab14b9..000000000
Binary files a/src-tauri/icons/ios/AppIcon-20x20@1x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-20x20@2x-1.png b/src-tauri/icons/ios/AppIcon-20x20@2x-1.png
deleted file mode 100644
index 395d42ab9..000000000
Binary files a/src-tauri/icons/ios/AppIcon-20x20@2x-1.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-20x20@2x.png b/src-tauri/icons/ios/AppIcon-20x20@2x.png
deleted file mode 100644
index 395d42ab9..000000000
Binary files a/src-tauri/icons/ios/AppIcon-20x20@2x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-20x20@3x.png b/src-tauri/icons/ios/AppIcon-20x20@3x.png
deleted file mode 100644
index ba603424d..000000000
Binary files a/src-tauri/icons/ios/AppIcon-20x20@3x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-29x29@1x.png b/src-tauri/icons/ios/AppIcon-29x29@1x.png
deleted file mode 100644
index da210966a..000000000
Binary files a/src-tauri/icons/ios/AppIcon-29x29@1x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/src-tauri/icons/ios/AppIcon-29x29@2x-1.png
deleted file mode 100644
index 6092c7359..000000000
Binary files a/src-tauri/icons/ios/AppIcon-29x29@2x-1.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x.png b/src-tauri/icons/ios/AppIcon-29x29@2x.png
deleted file mode 100644
index 6092c7359..000000000
Binary files a/src-tauri/icons/ios/AppIcon-29x29@2x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-29x29@3x.png b/src-tauri/icons/ios/AppIcon-29x29@3x.png
deleted file mode 100644
index 2585e6170..000000000
Binary files a/src-tauri/icons/ios/AppIcon-29x29@3x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-40x40@1x.png b/src-tauri/icons/ios/AppIcon-40x40@1x.png
deleted file mode 100644
index 395d42ab9..000000000
Binary files a/src-tauri/icons/ios/AppIcon-40x40@1x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-40x40@2x-1.png b/src-tauri/icons/ios/AppIcon-40x40@2x-1.png
deleted file mode 100644
index a5584ef26..000000000
Binary files a/src-tauri/icons/ios/AppIcon-40x40@2x-1.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-40x40@2x.png b/src-tauri/icons/ios/AppIcon-40x40@2x.png
deleted file mode 100644
index a5584ef26..000000000
Binary files a/src-tauri/icons/ios/AppIcon-40x40@2x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-40x40@3x.png b/src-tauri/icons/ios/AppIcon-40x40@3x.png
deleted file mode 100644
index 093172896..000000000
Binary files a/src-tauri/icons/ios/AppIcon-40x40@3x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-512@2x.png b/src-tauri/icons/ios/AppIcon-512@2x.png
deleted file mode 100644
index 6eae216be..000000000
Binary files a/src-tauri/icons/ios/AppIcon-512@2x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-60x60@2x.png b/src-tauri/icons/ios/AppIcon-60x60@2x.png
deleted file mode 100644
index 093172896..000000000
Binary files a/src-tauri/icons/ios/AppIcon-60x60@2x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-60x60@3x.png b/src-tauri/icons/ios/AppIcon-60x60@3x.png
deleted file mode 100644
index 28fe7d4d7..000000000
Binary files a/src-tauri/icons/ios/AppIcon-60x60@3x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-76x76@1x.png b/src-tauri/icons/ios/AppIcon-76x76@1x.png
deleted file mode 100644
index df9bbd19b..000000000
Binary files a/src-tauri/icons/ios/AppIcon-76x76@1x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-76x76@2x.png b/src-tauri/icons/ios/AppIcon-76x76@2x.png
deleted file mode 100644
index 4bd805e82..000000000
Binary files a/src-tauri/icons/ios/AppIcon-76x76@2x.png and /dev/null differ
diff --git a/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png b/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png
deleted file mode 100644
index 56520a6b5..000000000
Binary files a/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png and /dev/null differ
diff --git a/src-tauri/rustfmt.toml b/src-tauri/rustfmt.toml
deleted file mode 100644
index 75b776579..000000000
--- a/src-tauri/rustfmt.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-max_width = 120
-edition = "2018"
-format_code_in_doc_comments = true
-format_strings = false
-imports_granularity = "Crate"
-group_imports = "StdExternalCrate"
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
deleted file mode 100644
index d19ae7fd8..000000000
--- a/src-tauri/src/main.rs
+++ /dev/null
@@ -1,603 +0,0 @@
-// Prevents additional console window on Windows in release, DO NOT REMOVE!!
-#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
-
-pub(crate) mod state;
-
-use std::{
- env,
- path::{Path, PathBuf},
-};
-
-use anyhow::Result;
-use kcl_lib::settings::types::{
- file::{FileEntry, Project, ProjectRoute, ProjectState},
- project::ProjectConfiguration,
- Configuration,
-};
-use oauth2::TokenResponse;
-use tauri::{ipc::InvokeError, Manager};
-use tauri_plugin_cli::CliExt;
-use tauri_plugin_shell::ShellExt;
-
-const DEFAULT_HOST: &str = "https://api.zoo.dev";
-const SETTINGS_FILE_NAME: &str = "settings.toml";
-const PROJECT_SETTINGS_FILE_NAME: &str = "project.toml";
-const PROJECT_FOLDER: &str = "zoo-modeling-app-projects";
-
-#[tauri::command]
-async fn rename_project_directory(project_path: &str, new_name: &str) -> Result {
- let project_dir = std::path::Path::new(project_path);
-
- kcl_lib::settings::types::file::rename_project_directory(project_dir, new_name)
- .await
- .map_err(InvokeError::from_anyhow)
-}
-
-#[tauri::command]
-fn get_initial_default_dir(app: tauri::AppHandle) -> Result {
- let dir = match app.path().document_dir() {
- Ok(dir) => dir,
- Err(_) => {
- // for headless Linux (eg. Github Actions)
- let home_dir = app.path().home_dir()?;
- home_dir.join("Documents")
- }
- };
-
- Ok(dir.join(PROJECT_FOLDER))
-}
-
-#[tauri::command]
-async fn get_state(app: tauri::AppHandle) -> Result, InvokeError> {
- let store = app.state::();
- Ok(store.get().await)
-}
-
-#[tauri::command]
-async fn set_state(app: tauri::AppHandle, state: Option) -> Result<(), InvokeError> {
- let store = app.state::();
- store.set(state).await;
- Ok(())
-}
-
-async fn get_app_settings_file_path(app: &tauri::AppHandle) -> Result {
- let app_config_dir = app.path().app_config_dir()?;
-
- // Ensure this directory exists.
- if !app_config_dir.exists() {
- tokio::fs::create_dir_all(&app_config_dir)
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
- }
-
- Ok(app_config_dir.join(SETTINGS_FILE_NAME))
-}
-
-#[tauri::command]
-async fn read_app_settings_file(app: tauri::AppHandle) -> Result {
- let mut settings_path = get_app_settings_file_path(&app).await?;
- let mut needs_migration = false;
-
- // Check if this file exists.
- if !settings_path.exists() {
- // Try the backwards compatible path.
- // TODO: Remove this after a few releases.
- let app_config_dir = app.path().app_config_dir()?;
- settings_path = format!(
- "{}user.toml",
- app_config_dir.display().to_string().trim_end_matches('/')
- )
- .into();
- needs_migration = true;
- // Check if this path exists.
- if !settings_path.exists() {
- let mut default = Configuration::default();
- default.settings.project.directory = get_initial_default_dir(app.clone())?;
- // Return the default configuration.
- return Ok(default);
- }
- }
-
- let contents = tokio::fs::read_to_string(&settings_path)
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
- let mut parsed = Configuration::backwards_compatible_toml_parse(&contents).map_err(InvokeError::from_anyhow)?;
- if parsed.settings.project.directory == PathBuf::new() {
- parsed.settings.project.directory = get_initial_default_dir(app.clone())?;
- }
-
- // TODO: Remove this after a few releases.
- if needs_migration {
- write_app_settings_file(app, parsed.clone()).await?;
- // Delete the old file.
- tokio::fs::remove_file(settings_path)
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
- }
-
- Ok(parsed)
-}
-
-#[tauri::command]
-async fn write_app_settings_file(app: tauri::AppHandle, configuration: Configuration) -> Result<(), InvokeError> {
- let settings_path = get_app_settings_file_path(&app).await?;
- let contents = toml::to_string_pretty(&configuration).map_err(|e| InvokeError::from_anyhow(e.into()))?;
- tokio::fs::write(settings_path, contents.as_bytes())
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
-
- Ok(())
-}
-
-async fn get_project_settings_file_path(project_path: &str) -> Result {
- let project_dir = std::path::Path::new(project_path);
-
- if !project_dir.exists() {
- tokio::fs::create_dir_all(&project_dir)
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
- }
-
- Ok(project_dir.join(PROJECT_SETTINGS_FILE_NAME))
-}
-
-#[tauri::command]
-async fn read_project_settings_file(project_path: &str) -> Result {
- let settings_path = get_project_settings_file_path(project_path).await?;
-
- // Check if this file exists.
- if !settings_path.exists() {
- // Return the default configuration.
- return Ok(ProjectConfiguration::default());
- }
-
- let contents = tokio::fs::read_to_string(&settings_path)
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
- let parsed = ProjectConfiguration::backwards_compatible_toml_parse(&contents).map_err(InvokeError::from_anyhow)?;
-
- Ok(parsed)
-}
-
-#[tauri::command]
-async fn write_project_settings_file(
- project_path: &str,
- configuration: ProjectConfiguration,
-) -> Result<(), InvokeError> {
- let settings_path = get_project_settings_file_path(project_path).await?;
- let contents = toml::to_string_pretty(&configuration).map_err(|e| InvokeError::from_anyhow(e.into()))?;
- tokio::fs::write(settings_path, contents.as_bytes())
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
-
- Ok(())
-}
-
-/// Initialize the directory that holds all the projects.
-#[tauri::command]
-async fn initialize_project_directory(configuration: Configuration) -> Result {
- configuration
- .ensure_project_directory_exists()
- .await
- .map_err(InvokeError::from_anyhow)
-}
-
-/// Create a new project directory.
-#[tauri::command]
-async fn create_new_project_directory(
- configuration: Configuration,
- project_name: &str,
- initial_code: Option<&str>,
-) -> Result {
- configuration
- .create_new_project_directory(project_name, initial_code)
- .await
- .map_err(InvokeError::from_anyhow)
-}
-
-/// List all the projects in the project directory.
-#[tauri::command]
-async fn list_projects(configuration: Configuration) -> Result, InvokeError> {
- configuration.list_projects().await.map_err(InvokeError::from_anyhow)
-}
-
-/// Get information about a project.
-#[tauri::command]
-async fn get_project_info(configuration: Configuration, project_path: &str) -> Result {
- configuration
- .get_project_info(project_path)
- .await
- .map_err(InvokeError::from_anyhow)
-}
-
-/// Parse the project route.
-#[tauri::command]
-async fn parse_project_route(configuration: Configuration, route: &str) -> Result {
- ProjectRoute::from_route(&configuration, route).map_err(InvokeError::from_anyhow)
-}
-
-#[tauri::command]
-async fn read_dir_recursive(path: &str) -> Result {
- kcl_lib::settings::utils::walk_dir(Path::new(path).to_path_buf())
- .await
- .map_err(InvokeError::from_anyhow)
-}
-
-/// This command instantiates a new window with auth.
-/// The string returned from this method is the access token.
-#[tauri::command]
-async fn login(app: tauri::AppHandle, host: &str) -> Result {
- log::debug!("Logging in...");
- // Do an OAuth 2.0 Device Authorization Grant dance to get a token.
- let device_auth_url = oauth2::DeviceAuthorizationUrl::new(format!("{host}/oauth2/device/auth"))
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
- // We can hardcode the client ID.
- // This value is safe to be embedded in version control.
- // This is the client ID of the KittyCAD app.
- let client_id = "2af127fb-e14e-400a-9c57-a9ed08d1a5b7".to_string();
- let auth_client = oauth2::basic::BasicClient::new(
- oauth2::ClientId::new(client_id),
- None,
- oauth2::AuthUrl::new(format!("{host}/authorize")).map_err(|e| InvokeError::from_anyhow(e.into()))?,
- Some(
- oauth2::TokenUrl::new(format!("{host}/oauth2/device/token"))
- .map_err(|e| InvokeError::from_anyhow(e.into()))?,
- ),
- )
- .set_auth_type(oauth2::AuthType::RequestBody)
- .set_device_authorization_url(device_auth_url);
-
- let details: oauth2::devicecode::StandardDeviceAuthorizationResponse = auth_client
- .exchange_device_code()
- .map_err(|e| InvokeError::from_anyhow(e.into()))?
- .request_async(oauth2::reqwest::async_http_client)
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
-
- let Some(auth_uri) = details.verification_uri_complete() else {
- return Err(InvokeError::from("getting the verification uri failed"));
- };
-
- // Open the system browser with the auth_uri.
- // We do this in the browser and not a separate window because we want 1password and
- // other crap to work well.
- // TODO: find a better way to share this value with tauri e2e tests
- // Here we're using an env var to enable the /tmp file (windows not supported for now)
- // and bypass the shell::open call as it fails on GitHub Actions.
- let e2e_tauri_enabled = env::var("E2E_TAURI_ENABLED").is_ok();
- if e2e_tauri_enabled {
- log::warn!("E2E_TAURI_ENABLED is set, won't open {} externally", auth_uri.secret());
- let mut temp = String::from("/tmp");
- // Overwrite with Windows variable
- match env::var("TEMP") {
- Ok(val) => temp = val,
- Err(_e) => println!("Fallback to default /tmp"),
- }
- let path = Path::new(&temp).join("kittycad_user_code");
- println!("Writing to {}", path.to_string_lossy());
- tokio::fs::write(path, details.user_code().secret())
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
- } else {
- app.shell()
- .open(auth_uri.secret(), None)
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
- }
-
- // Wait for the user to login.
- let token = auth_client
- .exchange_device_access_token(&details)
- .request_async(oauth2::reqwest::async_http_client, tokio::time::sleep, None)
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?
- .access_token()
- .secret()
- .to_string();
-
- Ok(token)
-}
-
-///This command returns the KittyCAD user info given a token.
-/// The string returned from this method is the user info as a json string.
-#[tauri::command]
-async fn get_user(token: &str, hostname: &str) -> Result {
- // Use the host passed in if it's set.
- // Otherwise, use the default host.
- let host = if hostname.is_empty() {
- DEFAULT_HOST.to_string()
- } else {
- hostname.to_string()
- };
-
- // Change the baseURL to the one we want.
- let mut baseurl = host.to_string();
- if !host.starts_with("http://") && !host.starts_with("https://") {
- baseurl = format!("https://{host}");
- if host.starts_with("localhost") {
- baseurl = format!("http://{host}")
- }
- }
- log::debug!("Getting user info...");
-
- // use kittycad library to fetch the user info from /user/me
- let mut client = kittycad::Client::new(token);
-
- if baseurl != DEFAULT_HOST {
- client.set_base_url(&baseurl);
- }
-
- let user_info: kittycad::types::User = client
- .users()
- .get_self()
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
-
- Ok(user_info)
-}
-
-/// Open the selected path in the system file manager.
-/// From this GitHub comment: https://github.com/tauri-apps/tauri/issues/4062#issuecomment-1338048169
-/// But with the Linux support removed since we don't need it for now.
-#[tauri::command]
-fn show_in_folder(app: tauri::AppHandle, path: &str) -> Result<(), InvokeError> {
- // Check if the file exists.
- // If it doesn't, return an error.
- if !Path::new(path).exists() {
- return Err(InvokeError::from_anyhow(anyhow::anyhow!(
- "The file `{}` does not exist",
- path
- )));
- }
-
- #[cfg(not(unix))]
- {
- app.shell()
- .command("explorer")
- .args(["/select,", path]) // The comma after select is not a typo
- .spawn()
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
- }
-
- #[cfg(unix)]
- {
- app.shell()
- .command("open")
- .args(["-R", path])
- .spawn()
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
- }
-
- Ok(())
-}
-
-const SERVICE_NAME: &str = "_machine-api._tcp.local.";
-
-async fn find_machine_api() -> Result> {
- println!("Looking for machine API...");
- // Timeout if no response is received after 5 seconds.
- let timeout_duration = std::time::Duration::from_secs(5);
-
- let mdns = mdns_sd::ServiceDaemon::new()?;
-
- // Browse for a service type.
- let receiver = mdns.browse(SERVICE_NAME)?;
- let resp = tokio::time::timeout(
- timeout_duration,
- tokio::spawn(async move {
- while let Ok(event) = receiver.recv() {
- if let mdns_sd::ServiceEvent::ServiceResolved(info) = event {
- if let Some(addr) = info.get_addresses().iter().next() {
- return Some(format!("{}:{}", addr, info.get_port()));
- }
- }
- }
-
- None
- }),
- )
- .await;
-
- // Shut down.
- mdns.shutdown()?;
-
- let Ok(Ok(Some(addr))) = resp else {
- return Ok(None);
- };
-
- Ok(Some(addr))
-}
-
-#[tauri::command]
-async fn get_machine_api_ip() -> Result , InvokeError> {
- let machine_api = find_machine_api().await.map_err(InvokeError::from_anyhow)?;
-
- Ok(machine_api)
-}
-
-#[tauri::command]
-async fn list_machines() -> Result {
- let machine_api = find_machine_api().await.map_err(InvokeError::from_anyhow)?;
-
- let Some(machine_api) = machine_api else {
- // Empty array.
- return Ok("[]".to_string());
- };
-
- let client = reqwest::Client::new();
- let response = client
- .get(format!("http://{}/machines", machine_api))
- .send()
- .await
- .map_err(|e| InvokeError::from_anyhow(e.into()))?;
-
- let text = response.text().await.map_err(|e| InvokeError::from_anyhow(e.into()))?;
- Ok(text)
-}
-
-#[allow(dead_code)]
-fn open_url_sync(app: &tauri::AppHandle, url: &url::Url) {
- log::debug!("Opening URL: {:?}", url);
- let cloned_url = url.clone();
- let runner: tauri::async_runtime::JoinHandle> = tauri::async_runtime::spawn(async move {
- let url_str = cloned_url.path().to_string();
-
- log::debug!("Opening URL path : {}", url_str);
- let path = Path::new(url_str.as_str());
- ProjectState::new_from_path(path.to_path_buf()).await
- });
-
- // Block on the handle.
- match tauri::async_runtime::block_on(runner) {
- Ok(Ok(store)) => {
- // Create a state object to hold the project.
- app.manage(state::Store::new(store));
- }
- Err(e) => {
- log::warn!("Error opening URL:{} {:?}", url, e);
- }
- Ok(Err(e)) => {
- log::warn!("Error opening URL:{} {:?}", url, e);
- }
- }
-}
-
-fn main() -> Result<()> {
- tauri::Builder::default()
- .invoke_handler(tauri::generate_handler![
- get_state,
- set_state,
- get_initial_default_dir,
- initialize_project_directory,
- create_new_project_directory,
- list_projects,
- get_project_info,
- parse_project_route,
- get_user,
- login,
- read_dir_recursive,
- show_in_folder,
- read_app_settings_file,
- write_app_settings_file,
- read_project_settings_file,
- write_project_settings_file,
- rename_project_directory,
- get_machine_api_ip,
- list_machines
- ])
- .plugin(tauri_plugin_cli::init())
- .plugin(tauri_plugin_deep_link::init())
- .plugin(tauri_plugin_dialog::init())
- .plugin(tauri_plugin_fs::init())
- .plugin(tauri_plugin_http::init())
- .plugin(
- tauri_plugin_log::Builder::new()
- .targets([
- tauri_plugin_log::Target::new(tauri_plugin_log::TargetKind::Stdout),
- tauri_plugin_log::Target::new(tauri_plugin_log::TargetKind::LogDir { file_name: None }),
- ])
- .level(log::LevelFilter::Debug)
- .build(),
- )
- .plugin(tauri_plugin_os::init())
- .plugin(tauri_plugin_persisted_scope::init())
- .plugin(tauri_plugin_process::init())
- .plugin(tauri_plugin_shell::init())
- .setup(|app| {
- // Do update things.
- #[cfg(debug_assertions)]
- {
- app.get_webview("main").unwrap().open_devtools();
- }
- #[cfg(not(debug_assertions))]
- #[cfg(feature = "updater")]
- {
- app.handle().plugin(tauri_plugin_updater::Builder::new().build())?;
- }
-
- let mut verbose = false;
- let mut source_path: Option = None;
- match app.cli().matches() {
- // `matches` here is a Struct with { args, subcommand }.
- // `args` is `HashMap` where `ArgData` is a struct with { value, occurrences }.
- // `subcommand` is `Option>` where `SubcommandMatches` is a struct with { name, matches }.
- Ok(matches) => {
- if let Some(verbose_flag) = matches.args.get("verbose") {
- let Some(value) = verbose_flag.value.as_bool() else {
- return Err(
- anyhow::anyhow!("Error parsing CLI arguments: verbose flag is not a boolean").into(),
- );
- };
- verbose = value;
- }
-
- // Get the path we are trying to open.
- if let Some(source_arg) = matches.args.get("source") {
- // We don't do an else here because this can be null.
- if let Some(value) = source_arg.value.as_str() {
- log::info!("Got path in cli argument: {}", value);
- source_path = Some(Path::new(value).to_path_buf());
- }
- }
- }
- Err(err) => {
- return Err(anyhow::anyhow!("Error parsing CLI arguments: {:?}", err).into());
- }
- }
-
- if verbose {
- log::debug!("Verbose mode enabled.");
- }
-
- // If we have a source path to open, make sure it exists.
- let Some(source_path) = source_path else {
- // The user didn't provide a source path to open.
- // Run the app as normal.
- app.manage(state::Store::default());
- return Ok(());
- };
-
- if !source_path.exists() {
- return Err(anyhow::anyhow!(
- "Error: the path `{}` you are trying to open does not exist",
- source_path.display()
- )
- .into());
- }
-
- let runner: tauri::async_runtime::JoinHandle> =
- tauri::async_runtime::spawn(async move { ProjectState::new_from_path(source_path).await });
-
- // Block on the handle.
- let store = tauri::async_runtime::block_on(runner)??;
-
- // Create a state object to hold the project.
- app.manage(state::Store::new(store));
-
- // Listen on the deep links.
- app.listen("deep-link://new-url", |event| {
- log::info!("got deep-link url: {:?}", event);
- // TODO: open_url_sync(app.handle(), event.url);
- });
-
- Ok(())
- })
- .build(tauri::generate_context!())?
- .run(
- #[allow(unused_variables)]
- |app, event| {
- #[cfg(any(target_os = "macos", target_os = "ios"))]
- if let tauri::RunEvent::Opened { urls } = event {
- log::info!("Opened URLs: {:?}", urls);
-
- // Handle the first URL.
- // TODO: do we want to handle more than one URL?
- // Under what conditions would we even have more than one?
- if let Some(url) = urls.first() {
- open_url_sync(app, url);
- }
- }
- },
- );
-
- Ok(())
-}
diff --git a/src-tauri/src/state.rs b/src-tauri/src/state.rs
deleted file mode 100644
index 310f262ea..000000000
--- a/src-tauri/src/state.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-//! State management for the application.
-
-use kcl_lib::settings::types::file::ProjectState;
-use tokio::sync::Mutex;
-
-#[derive(Debug, Default)]
-pub struct Store(Mutex>);
-
-impl Store {
- pub fn new(p: ProjectState) -> Self {
- Self(Mutex::new(Some(p)))
- }
-
- pub async fn get(&self) -> Option {
- self.0.lock().await.clone()
- }
-
- pub async fn set(&self, p: Option) {
- *self.0.lock().await = p;
- }
-}
diff --git a/src-tauri/tauri.app-store.conf.json b/src-tauri/tauri.app-store.conf.json
deleted file mode 100644
index 422f7978c..000000000
--- a/src-tauri/tauri.app-store.conf.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "$schema": "../node_modules/@tauri-apps/cli/schema.json",
- "bundle": {
- "macOS": {
- "entitlements": "entitlements/app-store.entitlements"
- }
- }
-}
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
deleted file mode 100644
index b7dda9cc3..000000000
--- a/src-tauri/tauri.conf.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "$schema": "../node_modules/@tauri-apps/cli/schema.json",
- "app": {
- "security": {
- "csp": null
- },
- "windows": [
- {
- "fullscreen": false,
- "height": 1200,
- "resizable": true,
- "title": "Zoo Modeling App",
- "width": 1800
- }
- ]
- },
- "build": {
- "beforeDevCommand": "yarn start",
- "devUrl": "http://localhost:3000",
- "frontendDist": "../build"
- },
- "bundle": {
- "active": true,
- "category": "DeveloperTool",
- "copyright": "",
- "externalBin": [],
- "icon": [
- "icons/32x32.png",
- "icons/128x128.png",
- "icons/128x128@2x.png",
- "icons/icon.icns",
- "icons/icon.ico"
- ],
- "linux": {
- "deb": {
- "depends": []
- }
- },
- "longDescription": "",
- "macOS": {},
- "resources": [],
- "shortDescription": "",
- "targets": "all"
- },
- "identifier": "dev.zoo.modeling-app",
- "plugins": {
- "cli": {
- "description": "Zoo Modeling App CLI",
- "args": [
- {
- "short": "v",
- "name": "verbose",
- "description": "Verbosity level"
- },
- {
- "name": "source",
- "description": "The file or directory to open",
- "required": false,
- "index": 1,
- "takesValue": true
- }
- ],
- "subcommands": {}
- },
- "deep-link": {
- "mobile": [
- {
- "host": "app.zoo.dev"
- }
- ],
- "desktop": {
- "schemes": [
- "zoo",
- "zoo-modeling-app"
- ]
- }
- },
- "shell": {
- "open": true
- }
- },
- "productName": "Zoo Modeling App",
- "version": "0.24.10"
-}
diff --git a/src-tauri/tauri.release.conf.json b/src-tauri/tauri.release.conf.json
deleted file mode 100644
index 7d88d3201..000000000
--- a/src-tauri/tauri.release.conf.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "$schema": "../node_modules/@tauri-apps/cli/schema.json",
- "bundle": {
- "windows": {
- "certificateThumbprint": "F4C9A52FF7BC26EE5E054946F6B11DEEA94C748D",
- "digestAlgorithm": "sha256",
- "timestampUrl": "http://timestamp.digicert.com"
- },
- "fileAssociations": [
- {
- "ext": ["kcl"],
- "mimeType": "text/vnd.zoo.kcl"
- },
- {
- "ext": ["obj"],
- "mimeType": "model/obj"
- },
- {
- "ext": ["gltf"],
- "mimeType": "model/gltf+json"
- },
- {
- "ext": ["glb"],
- "mimeType": "model/gltf+binary"
- },
- {
- "ext": ["fbx", "fbxb"],
- "mimeType": "model/fbx"
- },
- {
- "ext": ["stl"],
- "mimeType": "model/stl"
- },
- {
- "ext": ["ply"],
- "mimeType": "model/ply"
- },
- {
- "ext": ["step", "stp"],
- "mimeType": "model/step"
- },
- {
- "ext": ["sldprt"],
- "mimeType": "model/sldprt"
- }
- ]
- },
- "plugins": {
- "updater": {
- "active": true,
- "endpoints": [
- "https://dl.zoo.dev/releases/modeling-app/last_update.json"
- ],
- "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEUzNzA4MjBEQjFBRTY4NzYKUldSMmFLNnhEWUp3NCtsT21Jd05wQktOaGVkOVp6MUFma0hNTDRDSnI2RkJJTEZOWG1ncFhqcU8K"
- }
- }
-}
diff --git a/src/App.tsx b/src/App.tsx
index 9bbc9a490..d54f56040 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -16,7 +16,7 @@ import { useEngineConnectionSubscriptions } from 'hooks/useEngineConnectionSubsc
import { engineCommandManager } from 'lib/singletons'
import { useModelingContext } from 'hooks/useModelingContext'
import { useAbsoluteFilePath } from 'hooks/useAbsoluteFilePath'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { useLspContext } from 'components/LspProvider'
import { useRefreshSettings } from 'hooks/useRefreshSettings'
import { ModelingSidebar } from 'components/ModelingSidebar/ModelingSidebar'
@@ -28,8 +28,8 @@ import { CoreDumpManager } from 'lib/coredump'
import { UnitsMenu } from 'components/UnitsMenu'
export function App() {
- useRefreshSettings(PATHS.FILE + 'SETTINGS')
const { project, file } = useLoaderData() as IndexLoaderData
+ useRefreshSettings(PATHS.FILE + 'SETTINGS')
const navigate = useNavigate()
const filePath = useAbsoluteFilePath()
const { onProjectOpen } = useLspContext()
@@ -62,7 +62,7 @@ export function App() {
e.preventDefault()
})
useHotkeyWrapper(
- [isTauri() ? 'mod + ,' : 'shift + mod + ,'],
+ [isDesktop() ? 'mod + ,' : 'shift + mod + ,'],
() => navigate(filePath + PATHS.SETTINGS),
{
splitKey: '|',
diff --git a/src/Router.tsx b/src/Router.tsx
index ab5b98c80..be8555bf9 100644
--- a/src/Router.tsx
+++ b/src/Router.tsx
@@ -10,7 +10,7 @@ import { Settings } from './routes/Settings'
import Onboarding, { onboardingRoutes } from './routes/Onboarding'
import SignIn from './routes/SignIn'
import { Auth } from './Auth'
-import { isTauri } from './lib/isTauri'
+import { isDesktop } from './lib/isDesktop'
import Home from './routes/Home'
import { NetworkContext } from './hooks/useNetworkContext'
import { useNetworkStatus } from './hooks/useNetworkStatus'
@@ -32,7 +32,7 @@ import SettingsAuthProvider from 'components/SettingsAuthProvider'
import LspProvider from 'components/LspProvider'
import { KclContextProvider } from 'lang/KclProvider'
import { BROWSER_PROJECT_NAME } from 'lib/constants'
-import { getState, setState } from 'lib/tauri'
+import { getState, setState } from 'lib/desktop'
import { CoreDumpManager } from 'lib/coredump'
import { engineCommandManager } from 'lib/singletons'
import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext'
@@ -66,8 +66,8 @@ const router = createBrowserRouter([
{
path: PATHS.INDEX,
loader: async () => {
- const inTauri = isTauri()
- if (inTauri) {
+ const onDesktop = isDesktop()
+ if (onDesktop) {
const appState = await getState()
if (appState) {
@@ -84,7 +84,7 @@ const router = createBrowserRouter([
}
}
- return inTauri
+ return onDesktop
? redirect(PATHS.HOME)
: redirect(PATHS.FILE + '/%2F' + BROWSER_PROJECT_NAME)
},
@@ -101,7 +101,10 @@ const router = createBrowserRouter([
- {!isTauri() && import.meta.env.PROD && }
+ {
+ // @ts-ignore
+ !isDesktop() && import.meta.env.PROD &&
+ }
diff --git a/src/clientSideScene/sceneEntities.ts b/src/clientSideScene/sceneEntities.ts
index dce10916f..e454c3297 100644
--- a/src/clientSideScene/sceneEntities.ts
+++ b/src/clientSideScene/sceneEntities.ts
@@ -591,7 +591,7 @@ export class SceneEntities {
const sg = kclManager.programMemory.get(
variableDeclarationName
) as SketchGroup
- const lastSeg = sg.value.slice(-1)[0] || sg.start
+ const lastSeg = sg?.value?.slice(-1)[0] || sg.start
const index = sg.value.length // because we've added a new segment that's not in the memory yet, no need for `-1`
diff --git a/src/components/ActionButton.tsx b/src/components/ActionButton.tsx
index eed2d00ba..25854fb02 100644
--- a/src/components/ActionButton.tsx
+++ b/src/components/ActionButton.tsx
@@ -1,4 +1,5 @@
import { ActionIcon, ActionIconProps } from './ActionIcon'
+import { openExternalBrowserIfDesktop } from 'lib/openWindow'
import React, { ForwardedRef, forwardRef } from 'react'
import { PATHS } from 'lib/paths'
import { Link } from 'react-router-dom'
@@ -107,6 +108,7 @@ export const ActionButton = forwardRef((props: ActionButtonProps, ref) => {
ref={ref as ForwardedRef}
to={to || PATHS.INDEX}
className={classNames}
+ onClick={openExternalBrowserIfDesktop(to as string)}
{...rest}
target="_blank"
>
diff --git a/src/components/ErrorPage.tsx b/src/components/ErrorPage.tsx
index 52d2185c6..a95643de2 100644
--- a/src/components/ErrorPage.tsx
+++ b/src/components/ErrorPage.tsx
@@ -1,4 +1,4 @@
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { useRouteError, isRouteErrorResponse } from 'react-router-dom'
import { ActionButton } from './ActionButton'
import {
@@ -25,7 +25,7 @@ export const ErrorPage = () => {
)}
- {isTauri() && (
+ {isDesktop() && (
= {
state: StateFrom
@@ -51,7 +49,9 @@ export const FileMachineProvider = ({
commandBarSend({ type: 'Close' })
navigate(
`${PATHS.FILE}/${encodeURIComponent(
- context.selectedDirectory + sep() + event.data.name
+ context.selectedDirectory +
+ window.electron.path.sep +
+ event.data.name
)}`
)
} else if (
@@ -86,7 +86,7 @@ export const FileMachineProvider = ({
},
services: {
readFiles: async (context: ContextFrom) => {
- const newFiles = isTauri()
+ const newFiles = isDesktop()
? (await getProjectInfo(context.project.path)).children
: []
return {
@@ -99,15 +99,18 @@ export const FileMachineProvider = ({
let createdPath: string
if (event.data.makeDir) {
- createdPath = await join(context.selectedDirectory.path, createdName)
- await mkdir(createdPath)
+ createdPath = window.electron.path.join(
+ context.selectedDirectory.path,
+ createdName
+ )
+ await window.electron.mkdir(createdPath)
} else {
createdPath =
context.selectedDirectory.path +
- sep() +
+ window.electron.path.sep +
createdName +
(createdName.endsWith(FILE_EXT) ? '' : FILE_EXT)
- await create(createdPath)
+ await window.electron.writeFile(createdPath, '')
}
return {
@@ -121,14 +124,25 @@ export const FileMachineProvider = ({
) => {
const { oldName, newName, isDir } = event.data
const name = newName ? newName : DEFAULT_FILE_NAME
- const oldPath = await join(context.selectedDirectory.path, oldName)
- const newDirPath = await join(context.selectedDirectory.path, name)
+ const oldPath = window.electron.path.join(
+ context.selectedDirectory.path,
+ oldName
+ )
+ const newDirPath = window.electron.path.join(
+ context.selectedDirectory.path,
+ name
+ )
const newPath =
newDirPath + (name.endsWith(FILE_EXT) || isDir ? '' : FILE_EXT)
- await rename(oldPath, newPath, {})
+ await window.electron.rename(oldPath, newPath)
- if (oldPath === file?.path && project?.path) {
+ if (!file) {
+ return Promise.reject(new Error('file is not defined'))
+ }
+
+ const currentFilePath = window.electron.path.join(file.path, file.name)
+ if (oldPath === currentFilePath && project?.path) {
// If we just renamed the current file, navigate to the new path
navigate(PATHS.FILE + '/' + encodeURIComponent(newPath))
} else if (file?.path.includes(oldPath)) {
@@ -153,13 +167,15 @@ export const FileMachineProvider = ({
const isDir = !!event.data.children
if (isDir) {
- await remove(event.data.path, {
- recursive: true,
- }).catch((e) => console.error('Error deleting directory', e))
+ await window.electron
+ .rm(event.data.path, {
+ recursive: true,
+ })
+ .catch((e) => console.error('Error deleting directory', e))
} else {
- await remove(event.data.path).catch((e) =>
- console.error('Error deleting file', e)
- )
+ await window.electron
+ .rm(event.data.path)
+ .catch((e) => console.error('Error deleting file', e))
}
// If we just deleted the current file or one of its parent directories,
diff --git a/src/components/FileTree.tsx b/src/components/FileTree.tsx
index f8ba9da0b..69221a0f3 100644
--- a/src/components/FileTree.tsx
+++ b/src/components/FileTree.tsx
@@ -9,7 +9,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faChevronRight } from '@fortawesome/free-solid-svg-icons'
import { useFileContext } from 'hooks/useFileContext'
import styles from './FileTree.module.css'
-import { sortProject } from 'lib/tauriFS'
+import { sortProject } from 'lib/desktopFS'
import { FILE_EXT } from 'lib/constants'
import { CustomIcon } from './CustomIcon'
import { codeManager, kclManager } from 'lib/singletons'
@@ -44,7 +44,7 @@ function RenameForm({
data: {
oldName: fileOrDir.name || '',
newName: inputRef.current?.value || fileOrDir.name || '',
- isDir: fileOrDir.children !== undefined,
+ isDir: fileOrDir.children !== null,
},
})
}
@@ -90,7 +90,7 @@ function DeleteFileTreeItemDialog({
const { send } = useFileContext()
return (
setIsOpen(false)}
onConfirm={() => {
send({ type: 'Delete file', data: fileOrDir })
@@ -99,7 +99,7 @@ function DeleteFileTreeItemDialog({
>
This will permanently delete "{fileOrDir.name || 'this file'}"
- {fileOrDir.children !== undefined ? ' and all of its contents. ' : '. '}
+ {fileOrDir.children !== null ? ' and all of its contents. ' : '. '}
Are you sure you want to delete "{fileOrDir.name || 'this file'}
@@ -165,7 +165,7 @@ const FileTreeItem = ({
}
function handleClick() {
- if (fileOrDir.children !== undefined) return // Don't open directories
+ if (fileOrDir.children !== null) return // Don't open directories
if (fileOrDir.name?.endsWith(FILE_EXT) === false && project?.path) {
// Import non-kcl files
@@ -194,7 +194,7 @@ const FileTreeItem = ({
return (
- {fileOrDir.children === undefined ? (
+ {fileOrDir.children === null ? (
(
@@ -141,6 +142,9 @@ function HelpMenuItem({
{as === 'a' ? (
)}
+ onClick={openExternalBrowserIfDesktop(
+ (props as React.ComponentProps<'a'>).href
+ )}
className={`no-underline text-inherit ${baseClassName} ${className}`}
>
{children}
diff --git a/src/components/LowerRightControls.tsx b/src/components/LowerRightControls.tsx
index a72793f94..e7d960e13 100644
--- a/src/components/LowerRightControls.tsx
+++ b/src/components/LowerRightControls.tsx
@@ -26,8 +26,12 @@ export function LowerRightControls({
const isPlayWright = window?.localStorage.getItem('playwright') === 'true'
- async function reportbug(event: { preventDefault: () => void }) {
+ async function reportbug(event: {
+ preventDefault: () => void
+ stopPropagation: () => void
+ }) {
event?.preventDefault()
+ event?.stopPropagation()
if (!coreDumpManager) {
// open default reporting option
@@ -88,7 +92,7 @@ export function LowerRightControls({
diff --git a/src/components/LspProvider.tsx b/src/components/LspProvider.tsx
index 5172869bc..345e80472 100644
--- a/src/components/LspProvider.tsx
+++ b/src/components/LspProvider.tsx
@@ -25,7 +25,7 @@ import {
import { wasmUrl } from 'lang/wasm'
import { PROJECT_ENTRYPOINT } from 'lib/constants'
import { err } from 'lib/trap'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { codeManager } from 'lib/singletons'
function getWorkspaceFolders(): LSP.WorkspaceFolder[] {
@@ -125,7 +125,7 @@ export const LspProvider = ({ children }: { children: React.ReactNode }) => {
])
useMemo(() => {
- if (!isTauri() && isKclLspReady && kclLspClient && codeManager.code) {
+ if (!isDesktop() && isKclLspReady && kclLspClient && codeManager.code) {
kclLspClient.textDocumentDidOpen({
textDocument: {
uri: `file:///${PROJECT_ENTRYPOINT}`,
diff --git a/src/components/ModelingSidebar/ModelingPanes/KclEditorMenu.tsx b/src/components/ModelingSidebar/ModelingPanes/KclEditorMenu.tsx
index 7a2093c4a..fc46f7213 100644
--- a/src/components/ModelingSidebar/ModelingPanes/KclEditorMenu.tsx
+++ b/src/components/ModelingSidebar/ModelingPanes/KclEditorMenu.tsx
@@ -7,6 +7,7 @@ import { useConvertToVariable } from 'hooks/useToolbarGuards'
import { editorShortcutMeta } from './KclEditorPane'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { kclManager } from 'lib/singletons'
+import { openExternalBrowserIfDesktop } from 'lib/openWindow'
export const KclEditorMenu = ({ children }: PropsWithChildren) => {
const { enable: convertToVarEnabled, handleClick: handleConvertToVarClick } =
@@ -60,6 +61,7 @@ export const KclEditorMenu = ({ children }: PropsWithChildren) => {
href="https://zoo.dev/docs/kcl"
target="_blank"
rel="noopener noreferrer"
+ onClick={openExternalBrowserIfDesktop()}
>
Read the KCL docs
@@ -78,6 +80,7 @@ export const KclEditorMenu = ({ children }: PropsWithChildren) => {
href="https://zoo.dev/docs/kcl-samples"
target="_blank"
rel="noopener noreferrer"
+ onClick={openExternalBrowserIfDesktop()}
>
KCL samples
diff --git a/src/components/ModelingSidebar/ModelingSidebar.tsx b/src/components/ModelingSidebar/ModelingSidebar.tsx
index a4699112c..8ac57ce72 100644
--- a/src/components/ModelingSidebar/ModelingSidebar.tsx
+++ b/src/components/ModelingSidebar/ModelingSidebar.tsx
@@ -7,7 +7,7 @@ import Tooltip from 'components/Tooltip'
import { ActionIcon } from 'components/ActionIcon'
import styles from './ModelingSidebar.module.css'
import { ModelingPane } from './ModelingPane'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { useModelingContext } from 'hooks/useModelingContext'
import { CustomIconName } from 'components/CustomIcon'
import { useCommandsContext } from 'hooks/useCommandsContext'
@@ -71,7 +71,7 @@ export function ModelingSidebar({ paneOpacity }: ModelingSidebarProps) {
(action) =>
(!action.hide || (action.hide instanceof Function && !action.hide())) &&
(!action.hideOnPlatform ||
- (isTauri()
+ (isDesktop()
? action.hideOnPlatform === 'web'
: action.hideOnPlatform === 'desktop'))
)
@@ -86,7 +86,7 @@ export function ModelingSidebar({ paneOpacity }: ModelingSidebarProps) {
).filter(
(pane) =>
!pane.hideOnPlatform ||
- (isTauri()
+ (isDesktop()
? pane.hideOnPlatform === 'web'
: pane.hideOnPlatform === 'desktop')
),
diff --git a/src/components/NetworkMachineIndicator.tsx b/src/components/NetworkMachineIndicator.tsx
index b0003d4e0..b01401ebb 100644
--- a/src/components/NetworkMachineIndicator.tsx
+++ b/src/components/NetworkMachineIndicator.tsx
@@ -1,7 +1,7 @@
import { Popover } from '@headlessui/react'
import Tooltip from './Tooltip'
import { machineManager } from 'lib/machineManager'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { CustomIcon } from './CustomIcon'
export const NetworkMachineIndicator = ({
@@ -10,7 +10,7 @@ export const NetworkMachineIndicator = ({
className?: string
}) => {
const machineCount = Object.keys(machineManager.machines).length
- return isTauri() ? (
+ return isDesktop() ? (
setIsEditing(false))
}
- function getDisplayedTime(dateStr: string) {
- const date = new Date(dateStr)
+ function getDisplayedTime(dateTimeMs: number) {
+ const date = new Date(dateTimeMs)
const startOfToday = new Date()
startOfToday.setHours(0, 0, 0, 0)
return date.getTime() < startOfToday.getTime()
@@ -52,7 +52,7 @@ function ProjectCard({
}
// async function setupImageUrl() {
- // const projectImagePath = await join(project.path, PROJECT_IMAGE_NAME)
+ // const projectImagePath = await join(project.file.path, PROJECT_IMAGE_NAME)
// if (await exists(projectImagePath)) {
// const imageData = await readFile(projectImagePath)
// const blob = new Blob([imageData], { type: 'image/jpg' })
@@ -113,8 +113,8 @@ function ProjectCard({
Edited{' '}
- {project.metadata && project.metadata?.modified
- ? getDisplayedTime(project.metadata.modified)
+ {project.metadata && project.metadata.modified
+ ? getDisplayedTime(parseInt(project.metadata.modified))
: 'never'}
diff --git a/src/components/ProjectSidebarMenu.tsx b/src/components/ProjectSidebarMenu.tsx
index 0528f8ed1..ac4495e72 100644
--- a/src/components/ProjectSidebarMenu.tsx
+++ b/src/components/ProjectSidebarMenu.tsx
@@ -3,9 +3,9 @@ import { ActionButton, ActionButtonProps } from './ActionButton'
import { type IndexLoaderData } from 'lib/types'
import { PATHS } from 'lib/paths'
import { isTauri } from '../lib/isTauri'
+import { isDesktop } from '../lib/isDesktop'
import { Link, useLocation, useNavigate } from 'react-router-dom'
import { Fragment, useMemo } from 'react'
-import { sep } from '@tauri-apps/api/path'
import { Logo } from './Logo'
import { APP_NAME } from 'lib/constants'
import { useCommandsContext } from 'hooks/useCommandsContext'
@@ -55,7 +55,7 @@ function AppLogoLink({
"relative h-full grid place-content-center group p-1.5 before:block before:content-[''] before:absolute before:inset-0 before:bottom-2.5 before:z-[-1] before:bg-primary before:rounded-b-sm"
const logoClassName = 'w-auto h-4 text-chalkboard-10'
- return isTauri() ? (
+ return isDesktop() ? (
{
@@ -111,7 +111,7 @@ function ProjectMenuPopover({
<>
Project settings
{`${platform === 'macos' ? '⌘' : 'Ctrl'}${
- isTauri() ? '' : '⬆'
+ isDesktop() ? '' : '⬆'
},`}
>
),
@@ -150,7 +150,7 @@ function ProjectMenuPopover({
{
id: 'make',
Element: 'button',
- className: !isTauri() ? 'hidden' : '',
+ className: !isDesktop() ? 'hidden' : '',
children: (
<>
Make current part
@@ -177,7 +177,7 @@ function ProjectMenuPopover({
id: 'go-home',
Element: 'button',
children: 'Go to Home',
- className: !isTauri() ? 'hidden' : '',
+ className: !isDesktop() ? 'hidden' : '',
onClick: () => {
onProjectClose(file || null, project?.path || null, true)
// Clear the scene and end the session.
@@ -195,7 +195,7 @@ function ProjectMenuPopover({
commandBarSend,
engineCommandManager,
onProjectClose,
- isTauri,
+ isDesktop,
]
)
@@ -207,11 +207,13 @@ function ProjectMenuPopover({
>
- {isTauri() && file?.name
- ? file.name.slice(file.name.lastIndexOf(sep()) + 1)
+ {isDesktop() && file?.name
+ ? file.name.slice(
+ file.name.lastIndexOf(window.electron.path.sep) + 1
+ )
: APP_NAME}
- {isTauri() && project?.name && (
+ {isDesktop() && project?.name && (
{project.name}
diff --git a/src/components/Settings/AllSettingsFields.tsx b/src/components/Settings/AllSettingsFields.tsx
index df24e9701..7e41ca780 100644
--- a/src/components/Settings/AllSettingsFields.tsx
+++ b/src/components/Settings/AllSettingsFields.tsx
@@ -9,16 +9,15 @@ import {
import { Fragment } from 'react/jsx-runtime'
import { SettingsSection } from './SettingsSection'
import { useLocation, useNavigate } from 'react-router-dom'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { ActionButton } from 'components/ActionButton'
import { SettingsFieldInput } from './SettingsFieldInput'
-import { getInitialDefaultDir, showInFolder } from 'lib/tauri'
+import { getInitialDefaultDir } from 'lib/desktop'
import toast from 'react-hot-toast'
import { APP_VERSION } from 'routes/Settings'
-import { createAndOpenNewProject, getSettingsFolderPaths } from 'lib/tauriFS'
import { PATHS } from 'lib/paths'
+import { createAndOpenNewProject, getSettingsFolderPaths } from 'lib/desktopFS'
import { useDotDotSlash } from 'hooks/useDotDotSlash'
-import { sep } from '@tauri-apps/api/path'
import { ForwardedRef, forwardRef, useEffect } from 'react'
import { useLspContext } from 'components/LspProvider'
@@ -41,12 +40,17 @@ export const AllSettingsFields = forwardRef(
} = useSettingsAuthContext()
const projectPath =
- isFileSettings && isTauri()
+ isFileSettings && isDesktop()
? decodeURI(
location.pathname
.replace(PATHS.FILE + '/', '')
.replace(PATHS.SETTINGS, '')
- .slice(0, decodeURI(location.pathname).lastIndexOf(sep()))
+ .slice(
+ 0,
+ decodeURI(location.pathname).lastIndexOf(
+ window.electron.path.sep
+ )
+ )
)
: undefined
@@ -176,21 +180,25 @@ export const AllSettingsFields = forwardRef(
title="Reset settings"
description={`Restore settings to their default values. Your settings are saved in
${
- isTauri()
+ isDesktop()
? ' a file in the app data folder for your OS.'
: " your browser's local storage."
}
`}
>
- {isTauri() && (
+ {isDesktop() && (
{
const paths = await getSettingsFolderPaths(
projectPath ? decodeURIComponent(projectPath) : undefined
)
- showInFolder(paths[searchParamTab])
+ const finalPath = paths[searchParamTab]
+ if (!finalPath) {
+ return new Error('finalPath undefined')
+ }
+ window.electron.showInFolder(finalPath)
}}
iconStart={{
icon: 'folder',
diff --git a/src/components/SettingsAuthProvider.tsx b/src/components/SettingsAuthProvider.tsx
index bf30b99da..8caedd732 100644
--- a/src/components/SettingsAuthProvider.tsx
+++ b/src/components/SettingsAuthProvider.tsx
@@ -21,7 +21,7 @@ import {
Prop,
StateFrom,
} from 'xstate'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { authCommandBarConfig } from 'lib/commandBarConfigs/authCommandConfig'
import { kclManager, sceneInfra, engineCommandManager } from 'lib/singletons'
import { uuidv4 } from 'lib/utils'
@@ -341,7 +341,7 @@ export default SettingsAuthProvider
export function logout() {
localStorage.removeItem(TOKEN_PERSIST_KEY)
return (
- !isTauri() &&
+ !isDesktop() &&
fetch(withBaseUrl('/logout'), {
method: 'POST',
credentials: 'include',
diff --git a/src/components/Stream.tsx b/src/components/Stream.tsx
index e852b22d3..32ecf1aa1 100644
--- a/src/components/Stream.tsx
+++ b/src/components/Stream.tsx
@@ -238,6 +238,7 @@ export const Stream = () => {
if (!videoRef.current) return
if (!mediaStream) return
+ // The browser complains if we try to load a new stream without pausing first.
// Do not immediately play the stream!
try {
videoRef.current.srcObject = mediaStream
diff --git a/src/components/UserSidebarMenu.tsx b/src/components/UserSidebarMenu.tsx
index fc05beb65..193b6361e 100644
--- a/src/components/UserSidebarMenu.tsx
+++ b/src/components/UserSidebarMenu.tsx
@@ -8,7 +8,7 @@ import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext'
import { useAbsoluteFilePath } from 'hooks/useAbsoluteFilePath'
import Tooltip from './Tooltip'
import usePlatform from 'hooks/usePlatform'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { CustomIcon } from './CustomIcon'
type User = Models['User_type']
@@ -33,7 +33,7 @@ const UserSidebarMenu = ({ user }: { user?: User }) => {
<>
User settings
{`${platform === 'macos' ? '⌘' : 'Ctrl'}${
- isTauri() ? '' : '⬆'
+ isDesktop() ? '' : '⬆'
},`}
>
),
diff --git a/src/env.ts b/src/env.ts
index f133e2a7b..c238c27ec 100644
--- a/src/env.ts
+++ b/src/env.ts
@@ -1,15 +1,29 @@
// env vars were centralised so they could be mocked in jest
// but isn't needed anymore with vite, so is now just a convention
+// Even though we transpile to a module system that supports import, the
+// typescript checker doesn't know that, so it's causing problems
+// to properly type check anything with "import.meta". I've tried for a good
+// hour to fix this but nothing has worked. This is the pain the JS ecosystem
+// gets for like 6 different module systems.
+
+// @ts-ignore
export const VITE_KC_API_WS_MODELING_URL = import.meta.env
.VITE_KC_API_WS_MODELING_URL
+// @ts-ignore
export const VITE_KC_API_BASE_URL = import.meta.env.VITE_KC_API_BASE_URL
+// @ts-ignore
export const VITE_KC_SITE_BASE_URL = import.meta.env.VITE_KC_SITE_BASE_URL
+// @ts-ignore
export const VITE_KC_CONNECTION_TIMEOUT_MS = import.meta.env
.VITE_KC_CONNECTION_TIMEOUT_MS
+// @ts-ignore
export const VITE_KC_DEV_TOKEN = import.meta.env.VITE_KC_DEV_TOKEN as
| string
| undefined
+// @ts-ignore
export const TEST = import.meta.env.TEST
+// @ts-ignore
export const DEV = import.meta.env.DEV
+// @ts-ignore
export const CI = import.meta.env.CI
diff --git a/src/hooks/usePlatform.ts b/src/hooks/usePlatform.ts
index 58a0dbc18..8ef85a892 100644
--- a/src/hooks/usePlatform.ts
+++ b/src/hooks/usePlatform.ts
@@ -1,16 +1,17 @@
-import { Platform, platform } from '@tauri-apps/plugin-os'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { useEffect, useState } from 'react'
+export type Platform = 'macos' | 'windows' | 'linux' | ''
+
export default function usePlatform() {
- const [platformName, setPlatformName] = useState('')
+ const [platformName, setPlatformName] = useState('')
useEffect(() => {
async function getPlatform() {
- setPlatformName(await platform())
+ setPlatformName((window.electron.platform ?? '') as Platform)
}
- if (isTauri()) {
+ if (isDesktop()) {
void getPlatform()
} else {
if (navigator.userAgent.indexOf('Mac') !== -1) {
diff --git a/src/hooks/useSetupEngineManager.ts b/src/hooks/useSetupEngineManager.ts
index fdf4beba2..e9a6c3314 100644
--- a/src/hooks/useSetupEngineManager.ts
+++ b/src/hooks/useSetupEngineManager.ts
@@ -104,7 +104,7 @@ export function useSetupEngineManager(
}, [immediateState])
useEffect(() => {
- engineCommandManager.settings.theme = settings.theme
+ engineCommandManager.settings = settings
const handleResize = deferExecution(() => {
const { width, height } = getDimensions(
@@ -194,13 +194,7 @@ export function useSetupEngineManager(
// Engine relies on many settings so we should rebind events when it changes
// We have to list out the ones we care about because the settings object holds
// non-settings too...
- }, [
- settings.enableSSAO,
- settings.highlightEdges,
- settings.showScaleGrid,
- settings.theme,
- settings.pool,
- ])
+ }, [...Object.values(settings)])
}
function getDimensions(streamWidth?: number, streamHeight?: number) {
diff --git a/src/index.tsx b/src/index.tsx
index 49b11ba77..4ed2a255a 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -6,9 +6,7 @@ import { Router } from './Router'
import { HotkeysProvider } from 'react-hotkeys-hook'
import ModalContainer from 'react-modal-promise'
import { UpdaterModal, createUpdaterModal } from 'components/UpdaterModal'
-import { isTauri } from 'lib/isTauri'
-import { relaunch } from '@tauri-apps/plugin-process'
-import { check } from '@tauri-apps/plugin-updater'
+import { isDesktop } from 'lib/isDesktop'
import {
UpdaterRestartModal,
createUpdaterRestartModal,
@@ -59,29 +57,4 @@ root.render(
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals()
-const runTauriUpdater = async () => {
- try {
- const update = await check()
- if (update && update.available) {
- const { date, version, body } = update
- const modal = createUpdaterModal(UpdaterModal)
- const { wantUpdate } = await modal({ date, version, body })
- if (wantUpdate) {
- await update.downloadAndInstall()
- // On macOS and Linux, the restart needs to be manually triggered
- const isNotWindows = navigator.userAgent.indexOf('Win') === -1
- if (isNotWindows) {
- const relaunchModal = createUpdaterRestartModal(UpdaterRestartModal)
- const { wantRestart } = await relaunchModal({ version })
- if (wantRestart) {
- await relaunch()
- }
- }
- }
- }
- } catch (error) {
- console.error(error)
- }
-}
-
-isTauri() && runTauriUpdater()
+isDesktop()
diff --git a/src/lang/codeManager.ts b/src/lang/codeManager.ts
index 6fffb0515..b55a472bc 100644
--- a/src/lang/codeManager.ts
+++ b/src/lang/codeManager.ts
@@ -2,8 +2,7 @@
// NOT updating the code state when we don't need to.
// This prevents re-renders of the codemirror editor, when typing.
import { bracket } from 'lib/exampleKcl'
-import { isTauri } from 'lib/isTauri'
-import { writeTextFile } from '@tauri-apps/plugin-fs'
+import { isDesktop } from 'lib/isDesktop'
import toast from 'react-hot-toast'
import { editorManager } from 'lib/singletons'
import { Annotation, Transaction } from '@codemirror/state'
@@ -21,14 +20,14 @@ export default class CodeManager {
private _hotkeys: { [key: string]: () => void } = {}
constructor() {
- if (isTauri()) {
+ if (isDesktop()) {
this.code = ''
return
}
const storedCode = safeLSGetItem(PERSIST_CODE_KEY)
// TODO #819 remove zustand persistence logic in a few months
- // short term migration, shouldn't make a difference for tauri app users
+ // short term migration, shouldn't make a difference for desktop app users
// anyway since that's filesystem based.
const zustandStore = JSON.parse(safeLSGetItem('store') || '{}')
if (storedCode === null && zustandStore?.state?.code) {
@@ -115,16 +114,18 @@ export default class CodeManager {
}
async writeToFile() {
- if (isTauri()) {
+ if (isDesktop()) {
setTimeout(() => {
// Wait one event loop to give a chance for params to be set
// Save the file to disk
this._currentFilePath &&
- writeTextFile(this._currentFilePath, this.code).catch((err) => {
- // TODO: add tracing per GH issue #254 (https://github.com/KittyCAD/modeling-app/issues/254)
- console.error('error saving file', err)
- toast.error('Error saving file, please check file permissions')
- })
+ window.electron
+ .writeFile(this._currentFilePath, this.code ?? '')
+ .catch((err: Error) => {
+ // TODO: add tracing per GH issue #254 (https://github.com/KittyCAD/modeling-app/issues/254)
+ console.error('error saving file', err)
+ toast.error('Error saving file, please check file permissions')
+ })
})
} else {
safeLSSetItem(PERSIST_CODE_KEY, this.code)
diff --git a/src/lang/std/fileSystemManager.ts b/src/lang/std/fileSystemManager.ts
index 1230494e3..0bb71ed1a 100644
--- a/src/lang/std/fileSystemManager.ts
+++ b/src/lang/std/fileSystemManager.ts
@@ -1,7 +1,4 @@
-import { readFile, exists as tauriExists } from '@tauri-apps/plugin-fs'
-import { isTauri } from 'lib/isTauri'
-import { join } from '@tauri-apps/api/path'
-import { readDirRecursive } from 'lib/tauri'
+import { isDesktop } from 'lib/isDesktop'
/// FileSystemManager is a class that provides a way to read files from the local file system.
/// It assumes that you are in a project since it is solely used by the std lib
@@ -17,61 +14,67 @@ class FileSystemManager {
this._dir = dir
}
+ async join(dir: string, path: string): Promise {
+ return Promise.resolve(window.electron.path.join(dir, path))
+ }
+
async readFile(path: string): Promise {
- // Using local file system only works from Tauri.
- if (!isTauri()) {
+ // Using local file system only works from desktop.
+ if (!isDesktop()) {
return Promise.reject(
- new Error('This function can only be called from a Tauri application')
+ new Error(
+ 'This function can only be called from the desktop application'
+ )
)
}
- return join(this.dir, path)
- .catch((error) => {
- return Promise.reject(new Error(`Error reading file: ${error}`))
- })
- .then((file) => {
- return readFile(file)
- })
+ return this.join(this.dir, path).then((filePath) => {
+ return window.electron.readFile(filePath)
+ })
}
async exists(path: string): Promise {
- // Using local file system only works from Tauri.
- if (!isTauri()) {
+ // Using local file system only works from desktop.
+ if (!isDesktop()) {
return Promise.reject(
- new Error('This function can only be called from a Tauri application')
+ new Error(
+ 'This function can only be called from the desktop application'
+ )
)
}
- return join(this.dir, path)
- .catch((error) => {
- return Promise.reject(new Error(`Error checking file exists: ${error}`))
- })
- .then((file) => {
- return tauriExists(file)
- })
+ return this.join(this.dir, path).then(async (file) => {
+ try {
+ await window.electron.stat(file)
+ } catch (e) {
+ if (e === 'ENOENT') {
+ return false
+ }
+ }
+ return true
+ })
}
async getAllFiles(path: string): Promise {
- // Using local file system only works from Tauri.
- if (!isTauri()) {
+ // Using local file system only works from desktop.
+ if (!isDesktop()) {
return Promise.reject(
- new Error('This function can only be called from a Tauri application')
+ new Error(
+ 'This function can only be called from the desktop application'
+ )
)
}
- return join(this.dir, path)
- .catch((error) => {
- return Promise.reject(new Error(`Error joining dir: ${error}`))
- })
- .then((p) => {
- readDirRecursive(p)
- .catch((error) => {
- return Promise.reject(new Error(`Error reading dir: ${error}`))
- })
- .then((files) => {
- return files.map((file) => file.path)
- })
- })
+ return this.join(this.dir, path).then((filepath) => {
+ return window.electron
+ .readdir(filepath)
+ .catch((error: Error) => {
+ return Promise.reject(new Error(`Error reading dir: ${error}`))
+ })
+ .then((files: string[]) => {
+ return files.map((filePath) => filePath)
+ })
+ })
}
}
diff --git a/src/lang/wasm.ts b/src/lang/wasm.ts
index 1c01a636a..af3d5a94e 100644
--- a/src/lang/wasm.ts
+++ b/src/lang/wasm.ts
@@ -18,6 +18,11 @@ import init, {
default_project_settings,
parse_project_route,
} from '../wasm-lib/pkg/wasm_lib'
+import {
+ configurationToSettingsPayload,
+ projectConfigurationToSettingsPayload,
+} from 'lib/settings/settingsUtils'
+import { SaveSettingsPayload } from 'lib/settings/settingsTypes'
import { KCLError } from './errors'
import { KclError as RustKclError } from '../wasm-lib/kcl/bindings/KclError'
import { EngineCommandManager } from './std/engineConnection'
@@ -32,8 +37,6 @@ import { CoreDumpManager } from 'lib/coredump'
import openWindow from 'lib/openWindow'
import { DefaultPlanes } from 'wasm-lib/kcl/bindings/DefaultPlanes'
import { TEST } from 'env'
-import { Configuration } from 'wasm-lib/kcl/bindings/Configuration'
-import { ProjectConfiguration } from 'wasm-lib/kcl/bindings/ProjectConfiguration'
import { ProjectRoute } from 'wasm-lib/kcl/bindings/ProjectRoute'
import { err } from 'lib/trap'
@@ -84,19 +87,7 @@ export type { KclValue } from '../wasm-lib/kcl/bindings/KclValue'
export type { ExtrudeSurface } from '../wasm-lib/kcl/bindings/ExtrudeSurface'
export const wasmUrl = () => {
- const baseUrl =
- typeof window === 'undefined'
- ? 'http://127.0.0.1:3000'
- : window.location.origin.includes('tauri://localhost')
- ? 'tauri://localhost' // custom protocol for macOS
- : window.location.origin.includes('tauri.localhost')
- ? 'http://tauri.localhost' // fallback for Windows
- : window.location.origin.includes('localhost')
- ? 'http://localhost:3000'
- : window.location.origin && window.location.origin !== 'null'
- ? window.location.origin
- : 'http://localhost:3000'
- const fullUrl = baseUrl + '/wasm_lib_bg.wasm'
+ const fullUrl = '/wasm_lib_bg.wasm'
console.log(`Full URL for WASM: ${fullUrl}`)
return fullUrl
@@ -569,26 +560,30 @@ export function tomlStringify(toml: any): string | Error {
return toml_stringify(JSON.stringify(toml))
}
-export function defaultAppSettings(): Configuration | Error {
- return default_app_settings()
+export function defaultAppSettings(): Partial {
+ // Immediately go from Configuration -> Partial
+ // The returned Rust type is Configuration but it's a lie. Every
+ // property in that returned object is optional. The Partial essentially
+ // brings that type in-line with that definition.
+ return configurationToSettingsPayload(default_app_settings())
}
-export function parseAppSettings(toml: string): Configuration | Error {
- return parse_app_settings(toml)
+export function parseAppSettings(toml: string): Partial {
+ return configurationToSettingsPayload(parse_app_settings(toml))
}
-export function defaultProjectSettings(): ProjectConfiguration | Error {
- return default_project_settings()
+export function defaultProjectSettings(): Partial {
+ return projectConfigurationToSettingsPayload(default_project_settings())
}
export function parseProjectSettings(
toml: string
-): ProjectConfiguration | Error {
- return parse_project_settings(toml)
+): Partial {
+ return projectConfigurationToSettingsPayload(parse_project_settings(toml))
}
export function parseProjectRoute(
- configuration: Configuration,
+ configuration: Partial,
route_str: string
): ProjectRoute | Error {
return parse_project_route(JSON.stringify(configuration), route_str)
diff --git a/src/lib/commandBarConfigs/settingsCommandConfig.ts b/src/lib/commandBarConfigs/settingsCommandConfig.ts
index f9a5e795d..2a6ea3708 100644
--- a/src/lib/commandBarConfigs/settingsCommandConfig.ts
+++ b/src/lib/commandBarConfigs/settingsCommandConfig.ts
@@ -14,7 +14,7 @@ import { AnyStateMachine, ContextFrom, InterpreterFrom } from 'xstate'
import { getPropertyByPath } from 'lib/objectPropertyByPath'
import { buildCommandArgument } from 'lib/createMachineCommand'
import decamelize from 'decamelize'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { Setting } from 'lib/settings/initialSettings'
// An array of the paths to all of the settings that have commandConfigs
@@ -78,7 +78,7 @@ export function createSettingsCommand({
settingConfig?.hideOnLevel === 'user' && !isProjectAvailable
const shouldHideOnThisPlatform =
settingConfig.hideOnPlatform &&
- (isTauri()
+ (isDesktop()
? settingConfig.hideOnPlatform === 'desktop'
: settingConfig.hideOnPlatform === 'web')
if (
diff --git a/src/lib/constants.ts b/src/lib/constants.ts
index 092dc1582..310af6b72 100644
--- a/src/lib/constants.ts
+++ b/src/lib/constants.ts
@@ -55,3 +55,5 @@ export const KCL_DEFAULT_CONSTANT_PREFIXES = {
} as const
/** The default KCL length expression */
export const KCL_DEFAULT_LENGTH = `5`
+/** localStorage key for the playwright test-specific app settings file */
+export const TEST_SETTINGS_FILE_KEY = 'playwright-test-settings'
\ No newline at end of file
diff --git a/src/lib/coredump.ts b/src/lib/coredump.ts
index 517cee911..1d1169faf 100644
--- a/src/lib/coredump.ts
+++ b/src/lib/coredump.ts
@@ -1,12 +1,7 @@
import { CommandLog, EngineCommandManager } from 'lang/std/engineConnection'
import { WebrtcStats } from 'wasm-lib/kcl/bindings/WebrtcStats'
import { OsInfo } from 'wasm-lib/kcl/bindings/OsInfo'
-import { isTauri } from 'lib/isTauri'
-import {
- platform as tauriPlatform,
- arch as tauriArch,
- version as tauriKernelVersion,
-} from '@tauri-apps/plugin-os'
+import { isDesktop } from 'lib/isDesktop'
import { APP_VERSION } from 'routes/Settings'
import { UAParser } from 'ua-parser-js'
import screenshot from 'lib/screenshot'
@@ -68,14 +63,15 @@ export class CoreDumpManager {
// Get the os information.
getOsInfo(): Promise {
- if (this.isTauri()) {
+ if (this.isDesktop()) {
const osinfo: OsInfo = {
- platform: tauriPlatform(),
- arch: tauriArch(),
- browser: 'tauri',
- version: tauriKernelVersion(),
+ platform: window.electron.platform ?? null,
+ arch: window.electron.arch ?? null,
+ browser: 'desktop',
+ version: window.electron.version ?? null,
}
return new Promise((resolve) => resolve(JSON.stringify(osinfo)))
+ // (lf94) I'm not sure if this comment is specific to tauri or just desktop...
// TODO: get rid of promises now that the tauri api doesn't require them anymore
}
@@ -101,8 +97,8 @@ export class CoreDumpManager {
return new Promise((resolve) => resolve(JSON.stringify(osinfo)))
}
- isTauri(): boolean {
- return isTauri()
+ isDesktop(): boolean {
+ return isDesktop()
}
getWebrtcStats(): Promise {
diff --git a/src/lib/createMachineCommand.ts b/src/lib/createMachineCommand.ts
index 3cf66d6f9..3cc978477 100644
--- a/src/lib/createMachineCommand.ts
+++ b/src/lib/createMachineCommand.ts
@@ -5,7 +5,7 @@ import {
InterpreterFrom,
StateFrom,
} from 'xstate'
-import { isTauri } from './isTauri'
+import { isDesktop } from './isDesktop'
import {
Command,
CommandArgument,
@@ -76,8 +76,8 @@ export function createMachineCommand<
if ('hide' in commandConfig) {
const { hide } = commandConfig
if (hide === 'both') return null
- else if (hide === 'desktop' && isTauri()) return null
- else if (hide === 'web' && !isTauri()) return null
+ else if (hide === 'desktop' && isDesktop()) return null
+ else if (hide === 'web' && !isDesktop()) return null
}
const icon = ('icon' in commandConfig && commandConfig.icon) || undefined
diff --git a/src/lib/desktop.ts b/src/lib/desktop.ts
new file mode 100644
index 000000000..75bdbb571
--- /dev/null
+++ b/src/lib/desktop.ts
@@ -0,0 +1,513 @@
+import { err } from 'lib/trap'
+import { Models } from '@kittycad/lib'
+import { ProjectConfiguration } from 'wasm-lib/kcl/bindings/ProjectConfiguration'
+import { Project } from 'wasm-lib/kcl/bindings/Project'
+import { ProjectState } from 'wasm-lib/kcl/bindings/ProjectState'
+import { ProjectRoute } from 'wasm-lib/kcl/bindings/ProjectRoute'
+import { components } from './machine-api'
+import { isDesktop } from './isDesktop'
+import { FileEntry } from 'wasm-lib/kcl/bindings/FileEntry'
+import { SaveSettingsPayload } from 'lib/settings/settingsTypes'
+import * as TOML from '@iarna/toml'
+
+import {
+ defaultAppSettings,
+ tomlStringify,
+ parseAppSettings,
+ parseProjectSettings,
+} from 'lang/wasm'
+import { TEST_SETTINGS_KEY } from '../../e2e/playwright/storageStates'
+import { TEST_SETTINGS_FILE_KEY } from './constants'
+export { parseProjectRoute } from 'lang/wasm'
+
+const DEFAULT_HOST = 'https://api.zoo.dev'
+const SETTINGS_FILE_NAME = 'settings.toml'
+const PROJECT_SETTINGS_FILE_NAME = 'project.toml'
+const PROJECT_FOLDER = 'zoo-modeling-app-projects'
+const DEFAULT_PROJECT_KCL_FILE = 'main.kcl'
+
+export async function renameProjectDirectory(
+ projectPath: string,
+ newName: string
+): Promise {
+ if (!newName) {
+ return Promise.reject(new Error(`New name for project cannot be empty`))
+ }
+
+ try {
+ await window.electron.stat(projectPath)
+ } catch (e) {
+ if (e === 'ENOENT') {
+ return Promise.reject(new Error(`Path ${projectPath} is not a directory`))
+ }
+ }
+
+ // Make sure the new name does not exist.
+ const newPath = window.electron.path.join(
+ projectPath.split('/').slice(0, -1).join('/'),
+ newName
+ )
+ try {
+ await window.electron.stat(newPath)
+ // If we get here it means the stat succeeded and there's a file already
+ // with the same name...
+ return Promise.reject(
+ new Error(
+ `Path ${newPath} already exists, cannot rename to an existing path`
+ )
+ )
+ } catch (e) {
+ // Otherwise if it failed and the failure is "it doesn't exist" then rename it!
+ if (e === 'ENOENT') {
+ await window.electron.rename(projectPath, newPath)
+ return newPath
+ }
+ }
+ return Promise.reject(new Error('Unreachable'))
+}
+
+export async function ensureProjectDirectoryExists(
+ config: Partial
+): Promise {
+ const projectDir = config.app?.projectDirectory
+ if (!projectDir) {
+ return Promise.reject(new Error('projectDir is falsey'))
+ }
+ try {
+ await window.electron.stat(projectDir)
+ } catch (e) {
+ if (e === 'ENOENT') {
+ await window.electron.mkdir(projectDir, { recursive: true })
+ }
+ }
+
+ return projectDir
+}
+
+export async function createNewProjectDirectory(
+ projectName: string,
+ initialCode?: string,
+ configuration?: Partial
+): Promise {
+ if (!configuration) {
+ configuration = await readAppSettingsFile()
+ }
+
+ const mainDir = await ensureProjectDirectoryExists(configuration)
+
+ if (!projectName) {
+ return Promise.reject('Project name cannot be empty.')
+ }
+
+ if (!mainDir) {
+ return Promise.reject(new Error('mainDir is falsey'))
+ }
+ const projectDir = window.electron.path.join(mainDir, projectName)
+
+ try {
+ await window.electron.stat(projectDir)
+ } catch (e) {
+ if (e === 'ENOENT') {
+ await window.electron.mkdir(projectDir, { recursive: true })
+ }
+ }
+
+ const projectFile = window.electron.path.join(
+ projectDir,
+ DEFAULT_PROJECT_KCL_FILE
+ )
+ await window.electron.writeFile(projectFile, initialCode ?? '')
+ const metadata = await window.electron.stat(projectFile)
+
+ return {
+ path: projectDir,
+ name: projectName,
+ // We don't need to recursively get all files in the project directory.
+ // Because we just created it and it's empty.
+ children: null,
+ default_file: projectFile,
+ metadata,
+ kcl_file_count: 1,
+ directory_count: 0,
+ }
+}
+
+export async function listProjects(
+ configuration?: Partial
+): Promise {
+ if (configuration === undefined) {
+ configuration = await readAppSettingsFile()
+ }
+ const projectDir = await ensureProjectDirectoryExists(configuration)
+ const projects = []
+ if (!projectDir) return Promise.reject(new Error('projectDir was falsey'))
+
+ const entries = await window.electron.readdir(projectDir)
+ for (let entry of entries) {
+ const projectPath = window.electron.path.join(projectDir, entry)
+ // if it's not a directory ignore.
+ const isDirectory = await window.electron.statIsDirectory(projectPath)
+ if (!isDirectory) {
+ continue
+ }
+
+ const project = await getProjectInfo(projectPath)
+ // Needs at least one file to be added to the projects list
+ if (project.kcl_file_count === 0) {
+ continue
+ }
+ projects.push(project)
+ }
+ return projects
+}
+
+const IMPORT_FILE_EXTENSIONS = [
+ // TODO Use ImportFormat enum
+ 'stp',
+ 'glb',
+ 'fbxb',
+ 'kcl',
+]
+
+const isRelevantFile = (filename: string): boolean =>
+ IMPORT_FILE_EXTENSIONS.some((ext) => filename.endsWith('.' + ext))
+
+const collectAllFilesRecursiveFrom = async (path: string) => {
+ // Make sure the filesystem object exists.
+ try {
+ await window.electron.stat(path)
+ } catch (e) {
+ if (e === 'ENOENT') {
+ return Promise.reject(new Error(`Directory ${path} does not exist`))
+ }
+ }
+
+ // Make sure the path is a directory.
+ const isPathDir = await window.electron.statIsDirectory(path)
+ if (!isPathDir) {
+ return Promise.reject(new Error(`Path ${path} is not a directory`))
+ }
+
+ const pathParts = path.split('/')
+ let entry: FileEntry = {
+ name: pathParts.slice(-1)[0],
+ path,
+ children: [],
+ }
+
+ const children = []
+
+ const entries = await window.electron.readdir(path)
+
+ // Sort all entries so files come first and directories last
+ // so a top-most KCL file is returned first.
+ entries.sort((a: string, b: string) => {
+ if (a.endsWith('.kcl') && !b.endsWith('.kcl')) {
+ return -1
+ }
+ if (!a.endsWith('.kcl') && b.endsWith('.kcl')) {
+ return 1
+ }
+ return 0
+ })
+
+ for (let e of entries) {
+ // ignore hidden files and directories (starting with a dot)
+ if (e.indexOf('.') === 0) {
+ continue
+ }
+
+ const ePath = window.electron.path.join(path, e)
+ const isEDir = await window.electron.statIsDirectory(ePath)
+
+ if (isEDir) {
+ const subChildren = await collectAllFilesRecursiveFrom(ePath)
+ children.push(subChildren)
+ } else {
+ if (!isRelevantFile(ePath)) {
+ continue
+ }
+ children.push(
+ /* FileEntry */ {
+ name: e,
+ path: ePath,
+ children: null,
+ }
+ )
+ }
+ }
+
+ // We don't set this to none if there are no children, because it's a directory.
+ entry.children = children
+
+ return entry
+}
+
+export async function getDefaultKclFileForDir(
+ projectDir: string,
+ file: FileEntry
+) {
+ // Make sure the dir is a directory.
+ const isFileEntryDir = await window.electron.statIsDirectory(projectDir)
+ if (!isFileEntryDir) {
+ return Promise.reject(new Error(`Path ${projectDir} is not a directory`))
+ }
+
+ let defaultFilePath = window.electron.path.join(
+ projectDir,
+ DEFAULT_PROJECT_KCL_FILE
+ )
+ try {
+ await window.electron.stat(defaultFilePath)
+ } catch (e) {
+ if (e === 'ENOENT') {
+ // Find a kcl file in the directory.
+ if (file.children) {
+ for (let entry of file.children) {
+ if (entry.name.endsWith('.kcl')) {
+ return window.electron.path.join(projectDir, entry.name)
+ } else if ((entry.children?.length ?? 0) > 0) {
+ // Recursively find a kcl file in the directory.
+ return getDefaultKclFileForDir(entry.path, entry)
+ }
+ }
+ // If we didn't find a kcl file, create one.
+ await window.electron.writeFile(defaultFilePath, '')
+ return defaultFilePath
+ }
+ }
+ }
+
+ if (!file.children) {
+ return file.name
+ }
+
+ return defaultFilePath
+}
+
+const kclFileCount = (file: FileEntry) => {
+ let count = 0
+ if (file.children) {
+ for (let entry of file.children) {
+ if (entry.name.endsWith('.kcl')) {
+ count += 1
+ } else {
+ count += kclFileCount(entry)
+ }
+ }
+ }
+
+ return count
+}
+
+/// Populate the number of directories in the project.
+const directoryCount = (file: FileEntry) => {
+ let count = 0
+ if (file.children) {
+ for (let entry of file.children) {
+ count += 1
+ directoryCount(entry)
+ }
+ }
+
+ return count
+}
+
+export async function getProjectInfo(projectPath: string): Promise {
+ // Check the directory.
+ try {
+ await window.electron.stat(projectPath)
+ } catch (e) {
+ if (e === 'ENOENT') {
+ return Promise.reject(
+ new Error(`Project directory does not exist: ${projectPath}`)
+ )
+ }
+ }
+
+ // Make sure it is a directory.
+ const projectPathIsDir = await window.electron.statIsDirectory(projectPath)
+ if (!projectPathIsDir) {
+ return Promise.reject(
+ new Error(`Project path is not a directory: ${projectPath}`)
+ )
+ }
+
+ let walked = await collectAllFilesRecursiveFrom(projectPath)
+ let default_file = await getDefaultKclFileForDir(projectPath, walked)
+ const metadata = await window.electron.stat(projectPath)
+
+ let project = {
+ ...walked,
+ // We need to map from node fs.Stats to FileMetadata
+ metadata: {
+ modified: metadata.mtimeMs,
+ accessed: metadata.atimeMs,
+ created: metadata.ctimeMs,
+ // this is not used anywhere and we use statIsDirectory in other places
+ // that need to know if it's a file or directory.
+ type: null,
+ size: metadata.size,
+ permission: metadata.mode,
+ },
+ kcl_file_count: 0,
+ directory_count: 0,
+ default_file,
+ }
+
+ // Populate the number of KCL files in the project.
+ project.kcl_file_count = kclFileCount(project)
+
+ //Populate the number of directories in the project.
+ project.directory_count = directoryCount(project)
+
+ return project
+}
+
+// Write project settings file.
+export async function writeProjectSettingsFile(
+ projectPath: string,
+ configuration: Partial
+): Promise {
+ const projectSettingsFilePath = await getProjectSettingsFilePath(projectPath)
+ const tomlStr = tomlStringify({ settings: configuration })
+ if (err(tomlStr)) return Promise.reject(tomlStr)
+ return window.electron.writeFile(projectSettingsFilePath, tomlStr)
+}
+
+const getAppSettingsFilePath = async () => {
+ const isPlaywright = window.localStorage.getItem('playwright') === 'true'
+ const testDirectoryName = window.localStorage.getItem(TEST_SETTINGS_FILE_KEY) ?? ''
+ const appConfig = await window.electron.getPath(
+ isPlaywright ? 'temp' : 'appData'
+ )
+ const fullPath = window.electron.path.join(
+ appConfig,
+ isPlaywright ? testDirectoryName : '',
+ window.electron.packageJson.name
+ )
+ try {
+ await window.electron.stat(fullPath)
+ } catch (e) {
+ // File/path doesn't exist
+ if (e === 'ENOENT') {
+ await window.electron.mkdir(fullPath, { recursive: true })
+ }
+ }
+ return window.electron.path.join(fullPath, SETTINGS_FILE_NAME)
+}
+
+const getProjectSettingsFilePath = async (projectPath: string) => {
+ try {
+ await window.electron.stat(projectPath)
+ } catch (e) {
+ if (e === 'ENOENT') {
+ await window.electron.mkdir(projectPath, { recursive: true })
+ }
+ }
+ return window.electron.path.join(projectPath, PROJECT_SETTINGS_FILE_NAME)
+}
+
+export const getInitialDefaultDir = async () => {
+ const dir = await window.electron.getPath('documents')
+ return window.electron.path.join(dir, PROJECT_FOLDER)
+}
+
+export const readProjectSettingsFile = async (
+ projectPath: string
+): Promise> => {
+ let settingsPath = await getProjectSettingsFilePath(projectPath)
+
+ // Check if this file exists.
+ try {
+ await window.electron.stat(settingsPath)
+ } catch (e) {
+ if (e === 'ENOENT') {
+ // Return the default configuration.
+ return {}
+ }
+ }
+
+ const configToml = await window.electron.readFile(settingsPath)
+ const configObj = parseProjectSettings(configToml)
+ return configObj
+}
+
+export const readAppSettingsFile = async () => {
+ let settingsPath = await getAppSettingsFilePath()
+ try {
+ await window.electron.stat(settingsPath)
+ } catch (e) {
+ if (e === 'ENOENT') {
+ const config = defaultAppSettings()
+ if (!config.app) {
+ return Promise.reject(new Error('config.app is falsey'))
+ }
+ config.app.projectDirectory = await getInitialDefaultDir()
+ return config
+ }
+ }
+ const configToml = await window.electron.readFile(settingsPath)
+ const configObj = parseAppSettings(configToml)
+ const overrideJSON = localStorage.getItem('APP_SETTINGS_OVERRIDE')
+ if (overrideJSON) {
+ try {
+ const override = JSON.parse(overrideJSON)
+ configObj.app = { ...configObj.app, ...override }
+ } catch (e) {
+ console.error('Error parsing APP_SETTINGS_OVERRIDE:', e)
+ }
+ }
+ return configObj
+}
+
+export const writeAppSettingsFile = async (
+ config: Partial
+) => {
+ const appSettingsFilePath = await getAppSettingsFilePath()
+ const tomlStr = tomlStringify({ settings: config })
+ if (err(tomlStr)) return Promise.reject(tomlStr)
+ return window.electron.writeFile(appSettingsFilePath, tomlStr)
+}
+
+let appStateStore: ProjectState | undefined = undefined
+
+export const getState = async (): Promise => {
+ return Promise.resolve(appStateStore)
+}
+
+export const setState = async (
+ state: ProjectState | undefined
+): Promise => {
+ appStateStore = state
+}
+
+export const getUser = async (
+ token: string,
+ hostname: string
+): Promise => {
+ // Use the host passed in if it's set.
+ // Otherwise, use the default host.
+ const host = !hostname ? DEFAULT_HOST : hostname
+
+ // Change the baseURL to the one we want.
+ let baseurl = host
+ if (!(host.indexOf('http://') === 0) && !(host.indexOf('https://') === 0)) {
+ baseurl = `https://${host}`
+ if (host.indexOf('localhost') === 0) {
+ baseurl = `http://${host}`
+ }
+ }
+
+ // Use kittycad library to fetch the user info from /user/me
+ if (baseurl !== DEFAULT_HOST) {
+ // The TypeScript generated library uses environment variables for this
+ // because it was intended for NodeJS.
+ window.electron.process.env.BASE_URL(baseurl)
+ }
+
+ const user = await window.electron.kittycad.users.get_user_self({
+ client: { token },
+ })
+ return user
+}
diff --git a/src/lib/tauriFS.ts b/src/lib/desktopFS.ts
similarity index 88%
rename from src/lib/tauriFS.ts
rename to src/lib/desktopFS.ts
index 964078420..934ddc7fc 100644
--- a/src/lib/tauriFS.ts
+++ b/src/lib/desktopFS.ts
@@ -1,5 +1,4 @@
-import { appConfigDir } from '@tauri-apps/api/path'
-import { isTauri } from './isTauri'
+import { isDesktop } from './isDesktop'
import type { FileEntry } from 'lib/types'
import {
INDEX_IDENTIFIER,
@@ -13,7 +12,7 @@ import {
createNewProjectDirectory,
listProjects,
readAppSettingsFile,
-} from './tauri'
+} from './desktop'
import { engineCommandManager } from './singletons'
export const isHidden = (fileOrDir: FileEntry) =>
@@ -31,9 +30,9 @@ export function sortProject(project: FileEntry[]): FileEntry[] {
return -1
} else if (b.name === PROJECT_ENTRYPOINT) {
return 1
- } else if (a.children === undefined && b.children !== undefined) {
+ } else if (a.children === null && b.children !== null) {
return -1
- } else if (a.children !== undefined && b.children === undefined) {
+ } else if (a.children !== null && b.children === null) {
return 1
} else if (a.name && b.name) {
return a.name.localeCompare(b.name)
@@ -43,7 +42,7 @@ export function sortProject(project: FileEntry[]): FileEntry[] {
})
return sortedProject.map((fileOrDir: FileEntry) => {
- if ('children' in fileOrDir && fileOrDir.children !== undefined) {
+ if ('children' in fileOrDir && fileOrDir.children !== null) {
return {
...fileOrDir,
children: sortProject(fileOrDir.children || []),
@@ -64,9 +63,12 @@ function interpolateProjectName(projectName: string) {
}
// Returns the next available index for a project name
-export function getNextProjectIndex(projectName: string, files: FileEntry[]) {
+export function getNextProjectIndex(
+ projectName: string,
+ projects: FileEntry[]
+) {
const regex = interpolateProjectName(projectName)
- const matches = files.map((file) => file.name?.match(regex))
+ const matches = projects.map((project) => project.name?.match(regex))
const indices = matches
.filter(Boolean)
.map((match) => match![1])
@@ -108,7 +110,7 @@ function getPaddedIdentifierRegExp() {
}
export async function getSettingsFolderPaths(projectPath?: string) {
- const user = isTauri() ? await appConfigDir() : '/'
+ const user = isDesktop() ? await window.electron.getPath('appData') : '/'
const project = projectPath !== undefined ? projectPath : undefined
return {
diff --git a/src/lib/electron.ts b/src/lib/electron.ts
new file mode 100644
index 000000000..1d8e9059d
--- /dev/null
+++ b/src/lib/electron.ts
@@ -0,0 +1,90 @@
+import { ipcRenderer, contextBridge } from 'electron'
+import path from 'path'
+import fs from 'node:fs/promises'
+import packageJson from '../../package.json'
+import { components } from 'lib/machine-api'
+import { MachinesListing } from 'lib/machineManager'
+
+const open = (args: any) => ipcRenderer.invoke('dialog.showOpenDialog', args)
+const save = (args: any) => ipcRenderer.invoke('dialog.showSaveDialog', args)
+const openExternal = (url: any) => ipcRenderer.invoke('shell.openExternal', url)
+const showInFolder = (path: string) =>
+ ipcRenderer.invoke('shell.showItemInFolder', path)
+const login = (host: string): Promise =>
+ ipcRenderer.invoke('login', host)
+
+const readFile = (path: string) => fs.readFile(path, 'utf-8')
+const rename = (prev: string, next: string) => fs.rename(prev, next)
+const writeFile = (path: string, data: string | Uint8Array) =>
+ fs.writeFile(path, data, 'utf-8')
+const readdir = (path: string) => fs.readdir(path, 'utf-8')
+const stat = (path: string) =>
+ fs.stat(path).catch((e) => Promise.reject(e.code))
+// Electron has behavior where it doesn't clone the prototype chain over.
+// So we need to call stat.isDirectory on this side.
+const statIsDirectory = (path: string) =>
+ stat(path).then((res) => res.isDirectory())
+const getPath = async (name: string) => ipcRenderer.invoke('app.getPath', name)
+
+const exposeProcessEnv = (varName: string) => {
+ return {
+ [varName](value?: string) {
+ if (value !== undefined) {
+ process.env[varName] = value
+ } else {
+ return process.env[varName]
+ }
+ },
+ }
+}
+
+// We could probably do this from the renderer side, but I fear CORS will
+// bite our butts.
+const listMachines = async (): Promise => {
+ const machineApi = await ipcRenderer.invoke('find_machine_api')
+ if (!machineApi) return {}
+
+ return fetch(`http://${machineApi}/machines`).then((resp) => resp.json())
+}
+
+const getMachineApiIp = async (): Promise =>
+ ipcRenderer.invoke('find_machine_api')
+
+import('@kittycad/lib').then((kittycad) => {
+ contextBridge.exposeInMainWorld('electron', {
+ login,
+ // Passing fs directly is not recommended since it gives a lot of power
+ // to the browser side / potential malicious code. We restrict what is
+ // exported.
+ readFile,
+ writeFile,
+ readdir,
+ rename,
+ rm: fs.rm,
+ path,
+ stat,
+ statIsDirectory,
+ mkdir: fs.mkdir,
+ // opens a dialog
+ open,
+ save,
+ // opens the URL
+ openExternal,
+ showInFolder,
+ getPath,
+ packageJson,
+ arch: process.arch,
+ platform: process.platform,
+ version: process.version,
+ process: {
+ // Setter/getter has to be created because
+ // these are read-only over the boundary.
+ env: Object.assign({}, exposeProcessEnv('BASE_URL')),
+ },
+ kittycad: {
+ users: kittycad.users,
+ },
+ listMachines,
+ getMachineApiIp,
+ })
+})
diff --git a/src/lib/exportSave.ts b/src/lib/exportSave.ts
index 443a2c555..dc22df178 100644
--- a/src/lib/exportSave.ts
+++ b/src/lib/exportSave.ts
@@ -1,15 +1,13 @@
-import { isTauri } from './isTauri'
+import { isDesktop } from './isDesktop'
import { deserialize_files } from '../wasm-lib/pkg/wasm_lib'
import { browserSaveFile } from './browserSaveFile'
-import { save } from '@tauri-apps/plugin-dialog'
-import { writeFile } from '@tauri-apps/plugin-fs'
import JSZip from 'jszip'
import ModelingAppFile from './modelingAppFile'
const save_ = async (file: ModelingAppFile) => {
try {
- if (isTauri()) {
+ if (isDesktop()) {
const extension = file.name.split('.').pop() || null
let extensions: string[] = []
if (extension !== null) {
@@ -17,7 +15,7 @@ const save_ = async (file: ModelingAppFile) => {
}
// Open a dialog to save the file.
- const filePath = await save({
+ const filePathMeta = await window.electron.save({
defaultPath: file.name,
filters: [
{
@@ -27,14 +25,15 @@ const save_ = async (file: ModelingAppFile) => {
],
})
- if (filePath === null) {
- // The user canceled the save.
- // Return early.
- return
- }
+ // The user canceled the save.
+ // Return early.
+ if (filePathMeta.canceled) return
// Write the file.
- await writeFile(filePath, new Uint8Array(file.contents))
+ await window.electron.writeFile(
+ filePathMeta.filePath,
+ new Uint8Array(file.contents)
+ )
} else {
// Download the file to the user's computer.
// Now we need to download the files to the user's downloads folder.
diff --git a/src/lib/isDesktop.ts b/src/lib/isDesktop.ts
new file mode 100644
index 000000000..f0ff96f2f
--- /dev/null
+++ b/src/lib/isDesktop.ts
@@ -0,0 +1,5 @@
+// https://github.com/electron/electron/issues/2288#issuecomment-337858978
+// Thank you
+export function isDesktop(): boolean {
+ return navigator.userAgent.toLowerCase().indexOf('electron') > -1
+}
diff --git a/src/lib/isTauri.ts b/src/lib/isTauri.ts
deleted file mode 100644
index 747fa22a0..000000000
--- a/src/lib/isTauri.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export function isTauri(): boolean {
- if (globalThis.window && typeof globalThis.window !== 'undefined') {
- return '__TAURI_INTERNALS__' in globalThis.window
- }
- return false
-}
diff --git a/src/lib/machineManager.ts b/src/lib/machineManager.ts
index 99f6e5c73..0948d0561 100644
--- a/src/lib/machineManager.ts
+++ b/src/lib/machineManager.ts
@@ -1,17 +1,18 @@
-import { isTauri } from './isTauri'
+import { isDesktop } from './isDesktop'
import { components } from './machine-api'
-import { getMachineApiIp, listMachines } from './tauri'
+
+export type MachinesListing = {
+ [key: string]: components['schemas']['Machine']
+}
export class MachineManager {
- private _isTauri: boolean = isTauri()
- private _machines: {
- [key: string]: components['schemas']['Machine']
- } = {}
+ private _isDesktop: boolean = isDesktop()
+ private _machines: MachinesListing = {}
private _machineApiIp: string | null = null
private _currentMachine: components['schemas']['Machine'] | null = null
constructor() {
- if (!this._isTauri) {
+ if (!this._isDesktop) {
return
}
@@ -19,20 +20,26 @@ export class MachineManager {
}
start() {
- if (!this._isTauri) {
+ if (!this._isDesktop) {
return
}
// Start a background job to update the machines every ten seconds.
- setInterval(() => {
- this.updateMachineApiIp()
- this.updateMachines()
- }, 10000)
+ // If MDNS is already watching, this timeout will wait until it's done to trigger the
+ // finding again.
+ let timeoutId: ReturnType | undefined = undefined
+ const timeoutLoop = () => {
+ clearTimeout(timeoutId)
+ timeoutId = setTimeout(async () => {
+ await this.updateMachineApiIp()
+ await this.updateMachines()
+ timeoutLoop()
+ }, 10000)
+ }
+ timeoutLoop()
}
- get machines(): {
- [key: string]: components['schemas']['Machine']
- } {
+ get machines(): MachinesListing {
return this._machines
}
@@ -53,20 +60,20 @@ export class MachineManager {
}
private async updateMachines(): Promise {
- if (!this._isTauri) {
+ if (!this._isDesktop) {
return
}
- this._machines = await listMachines()
+ this._machines = await window.electron.listMachines()
console.log('Machines:', this._machines)
}
private async updateMachineApiIp(): Promise {
- if (!this._isTauri) {
+ if (!this._isDesktop) {
return
}
- this._machineApiIp = await getMachineApiIp()
+ this._machineApiIp = await window.electron.getMachineApiIp()
}
}
diff --git a/src/lib/openWindow.ts b/src/lib/openWindow.ts
index 8d04469cc..5f2689ee3 100644
--- a/src/lib/openWindow.ts
+++ b/src/lib/openWindow.ts
@@ -1,10 +1,22 @@
-import { isTauri } from 'lib/isTauri'
-import { open as tauriOpen } from '@tauri-apps/plugin-shell'
+import { MouseEventHandler } from 'react'
+import { isDesktop } from 'lib/isDesktop'
-// Open a new browser window tauri style or browser style.
+export const openExternalBrowserIfDesktop = (to?: string) =>
+ function (e) {
+ if (isDesktop()) {
+ // Ignoring because currentTarget could be a few different things
+ // @ts-ignore
+ window.electron.openExternal(to || e.currentTarget?.href)
+ e.preventDefault()
+ e.stopPropagation()
+ return false
+ }
+ } as MouseEventHandler
+
+// Open a new browser window desktop style or browser style.
export default async function openWindow(url: string) {
- if (isTauri()) {
- await tauriOpen(url)
+ if (isDesktop()) {
+ await window.electron.openExternal(url)
} else {
window.open(url, '_blank')
}
diff --git a/src/lib/paths.ts b/src/lib/paths.ts
index 6c9226e84..cb25527cd 100644
--- a/src/lib/paths.ts
+++ b/src/lib/paths.ts
@@ -1,11 +1,11 @@
import { onboardingPaths } from 'routes/Onboarding/paths'
import { BROWSER_FILE_NAME, BROWSER_PROJECT_NAME, FILE_EXT } from './constants'
-import { isTauri } from './isTauri'
+import { isDesktop } from './isDesktop'
import { Configuration } from 'wasm-lib/kcl/bindings/Configuration'
import { ProjectRoute } from 'wasm-lib/kcl/bindings/ProjectRoute'
-import { parseProjectRoute, readAppSettingsFile } from './tauri'
-import { parseProjectRoute as parseProjectRouteWasm } from 'lang/wasm'
+import { parseProjectRoute, readAppSettingsFile } from './desktop'
import { readLocalStorageAppSettingsFile } from './settings/settingsUtils'
+import { SaveSettingsPayload } from './settings/settingsTypes'
import { err } from 'lib/trap'
const prependRoutes =
@@ -39,23 +39,26 @@ export const BROWSER_PATH = `%2F${BROWSER_PROJECT_NAME}%2F${BROWSER_FILE_NAME}${
export async function getProjectMetaByRouteId(
id?: string,
- configuration?: Configuration | Error
+ configuration?: Partial | Error
): Promise {
if (!id) return undefined
- const inTauri = isTauri()
+ const onDesktop = isDesktop()
if (configuration === undefined) {
- configuration = inTauri
+ configuration = onDesktop
? await readAppSettingsFile()
: readLocalStorageAppSettingsFile()
}
if (err(configuration)) return Promise.reject(configuration)
- const route = inTauri
- ? await parseProjectRoute(configuration, id)
- : parseProjectRouteWasm(configuration, id)
+ // Should not be possible but I guess logically it could be
+ if (configuration === undefined) {
+ return Promise.reject(new Error('No configuration found'))
+ }
+
+ const route = parseProjectRoute(configuration, id)
if (err(route)) return Promise.reject(route)
diff --git a/src/lib/routeLoaders.ts b/src/lib/routeLoaders.ts
index f7af34912..35325d1d7 100644
--- a/src/lib/routeLoaders.ts
+++ b/src/lib/routeLoaders.ts
@@ -1,7 +1,7 @@
import { ActionFunction, LoaderFunction, redirect } from 'react-router-dom'
import { FileLoaderData, HomeLoaderData, IndexLoaderData } from './types'
-import { isTauri } from './isTauri'
import { getProjectMetaByRouteId, PATHS } from './paths'
+import { isDesktop } from './isDesktop'
import { BROWSER_PATH } from 'lib/paths'
import {
BROWSER_FILE_NAME,
@@ -10,15 +10,13 @@ import {
} from 'lib/constants'
import { loadAndValidateSettings } from './settings/settingsUtils'
import makeUrlPathRelative from './makeUrlPathRelative'
-import { sep } from '@tauri-apps/api/path'
-import { readTextFile } from '@tauri-apps/plugin-fs'
import { codeManager } from 'lib/singletons'
import { fileSystemManager } from 'lang/std/fileSystemManager'
import {
getProjectInfo,
- initializeProjectDirectory,
+ ensureProjectDirectoryExists,
listProjects,
-} from './tauri'
+} from './desktop'
import { createSettings } from './settings/initialSettings'
// The root loader simply resolves the settings and any errors that
@@ -42,7 +40,7 @@ export const settingsLoader: LoaderFunction = async ({
const { settings: s } = await loadAndValidateSettings(
project_path || undefined
)
- settings = s
+ return s
}
}
@@ -72,9 +70,10 @@ export const onboardingRedirectLoader: ActionFunction = async (args) => {
return settingsLoader(args)
}
-export const fileLoader: LoaderFunction = async ({
- params,
-}): Promise => {
+export const fileLoader: LoaderFunction = async (
+ routerData
+): Promise => {
+ const { params } = routerData
let { configuration } = await loadAndValidateSettings()
const projectPathData = await getProjectMetaByRouteId(
@@ -90,14 +89,16 @@ export const fileLoader: LoaderFunction = async ({
if (!current_file_name || !current_file_path || !project_name) {
return redirect(
`${PATHS.FILE}/${encodeURIComponent(
- `${params.id}${isTauri() ? sep() : '/'}${PROJECT_ENTRYPOINT}`
+ `${params.id}${
+ isDesktop() ? window.electron.path.sep : '/'
+ }${PROJECT_ENTRYPOINT}`
)}`
)
}
// TODO: PROJECT_ENTRYPOINT is hardcoded
// until we support setting a project's entrypoint file
- const code = await readTextFile(current_file_path)
+ const code = await window.electron.readFile(current_file_path)
// Update both the state and the editor's code.
// We explicitly do not write to the file here since we are loading from
@@ -109,22 +110,24 @@ export const fileLoader: LoaderFunction = async ({
// So that WASM gets an updated path for operations
fileSystemManager.dir = project_path
+ const defaultProjectData = {
+ name: project_name || 'unnamed',
+ path: project_path,
+ children: [],
+ kcl_file_count: 0,
+ directory_count: 0,
+ metadata: null,
+ default_file: project_path,
+ }
+
const projectData: IndexLoaderData = {
code,
- project: isTauri()
- ? await getProjectInfo(project_path, configuration)
- : {
- name: project_name,
- path: project_path,
- children: [],
- kcl_file_count: 0,
- directory_count: 0,
- metadata: null,
- default_file: project_path,
- },
+ project: isDesktop()
+ ? (await getProjectInfo(project_path)) ?? defaultProjectData
+ : defaultProjectData,
file: {
- name: current_file_name,
- path: current_file_path,
+ name: current_file_name || '',
+ path: current_file_path?.split('/').slice(0, -1).join('/') ?? '',
children: [],
},
}
@@ -154,12 +157,12 @@ export const fileLoader: LoaderFunction = async ({
export const homeLoader: LoaderFunction = async (): Promise<
HomeLoaderData | Response
> => {
- if (!isTauri()) {
+ if (!isDesktop()) {
return redirect(PATHS.FILE + '/%2F' + BROWSER_PROJECT_NAME)
}
const { configuration } = await loadAndValidateSettings()
- const projectDir = await initializeProjectDirectory(configuration)
+ const projectDir = await ensureProjectDirectoryExists(configuration)
if (projectDir) {
const projects = await listProjects(configuration)
diff --git a/src/lib/settings/initialKeybindings.ts b/src/lib/settings/initialKeybindings.ts
index f37af6fc8..9c51bfdc3 100644
--- a/src/lib/settings/initialKeybindings.ts
+++ b/src/lib/settings/initialKeybindings.ts
@@ -1,4 +1,4 @@
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
export type InteractionMapItem = {
name: string
@@ -38,7 +38,7 @@ export const interactionMap: Record<
Settings: [
{
name: 'toggle-settings',
- sequence: isTauri() ? 'Meta+,' : 'Shift+Meta+,',
+ sequence: isDesktop() ? 'Meta+,' : 'Shift+Meta+,',
title: 'Toggle Settings',
description: 'Opens the settings dialog. Always available.',
},
diff --git a/src/lib/settings/initialSettings.tsx b/src/lib/settings/initialSettings.tsx
index 338527ceb..13a4c68b1 100644
--- a/src/lib/settings/initialSettings.tsx
+++ b/src/lib/settings/initialSettings.tsx
@@ -12,9 +12,8 @@ import {
cameraMouseDragGuards,
cameraSystems,
} from 'lib/cameraControls'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { useRef } from 'react'
-import { open } from '@tauri-apps/plugin-dialog'
import { CustomIcon } from 'components/CustomIcon'
import Tooltip from 'components/Tooltip'
@@ -63,8 +62,8 @@ export class Setting {
get user(): T | undefined {
return this._user
}
- set user(v: T) {
- this._user = this.validate(v) ? v : this._user
+ set user(v: T | undefined) {
+ this._user = v !== undefined ? (this.validate(v) ? v : this._user) : v
this.current = this.resolve()
}
/**
@@ -73,8 +72,8 @@ export class Setting {
get project(): T | undefined {
return this._project
}
- set project(v: T) {
- this._project = this.validate(v) ? v : this._project
+ set project(v: T | undefined) {
+ this._project = v !== undefined ? (this.validate(v) ? v : this._project) : v
this.current = this.resolve()
}
/**
@@ -193,7 +192,8 @@ export function createSettings() {
description: 'The directory to save and load projects from',
hideOnLevel: 'project',
hideOnPlatform: 'web',
- validate: (v) => typeof v === 'string' && (v.length > 0 || !isTauri()),
+ validate: (v) =>
+ typeof v === 'string' && (v.length > 0 || !isDesktop()),
Component: ({ value, updateValue }) => {
const inputRef = useRef(null)
return (
@@ -207,24 +207,23 @@ export function createSettings() {
/>
{
- // In Tauri end-to-end tests we can't control the file picker,
+ // In desktop end-to-end tests we can't control the file picker,
// so we seed the new directory value in the element's dataset
- const newValue =
- inputRef.current && inputRef.current.dataset.testValue
- ? inputRef.current.dataset.testValue
- : await open({
- directory: true,
- recursive: true,
- defaultPath: value,
- title: 'Choose a new project directory',
- })
+ const inputRefVal = inputRef.current?.dataset.testValue
if (
- newValue &&
- newValue !== null &&
- newValue !== value &&
- !Array.isArray(newValue)
+ inputRef.current &&
+ inputRefVal &&
+ !Array.isArray(inputRefVal)
) {
- updateValue(newValue)
+ updateValue(inputRefVal)
+ } else {
+ const newPath = await window.electron.open({
+ properties: ['openDirectory', 'createDirectory'],
+ defaultPath: value,
+ title: 'Choose a new project directory',
+ })
+ if (newPath.canceled) return
+ updateValue(newPath.filePaths[0])
}
}}
className="p-0 m-0 border-none hover:bg-primary/10 focus:bg-primary/10 dark:hover:bg-primary/20 dark:focus::bg-primary/20"
diff --git a/src/lib/settings/settingsUtils.ts b/src/lib/settings/settingsUtils.ts
index 0f9f54846..9ac528ece 100644
--- a/src/lib/settings/settingsUtils.ts
+++ b/src/lib/settings/settingsUtils.ts
@@ -1,6 +1,6 @@
import { Setting, createSettings, settings } from 'lib/settings/initialSettings'
import { SaveSettingsPayload, SettingsLevel } from './settingsTypes'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { err } from 'lib/trap'
import {
defaultAppSettings,
@@ -18,7 +18,7 @@ import {
readProjectSettingsFile,
writeAppSettingsFile,
writeProjectSettingsFile,
-} from 'lib/tauri'
+} from 'lib/desktop'
import { ProjectConfiguration } from 'wasm-lib/kcl/bindings/ProjectConfiguration'
import { BROWSER_PROJECT_NAME } from 'lib/constants'
@@ -27,7 +27,7 @@ import { BROWSER_PROJECT_NAME } from 'lib/constants'
* We do this because the JS settings type has all the fancy shit
* for hiding and showing settings.
**/
-function configurationToSettingsPayload(
+export function configurationToSettingsPayload(
configuration: Configuration
): Partial {
return {
@@ -65,7 +65,7 @@ function configurationToSettingsPayload(
}
}
-function projectConfigurationToSettingsPayload(
+export function projectConfigurationToSettingsPayload(
configuration: ProjectConfiguration
): Partial {
return {
@@ -105,7 +105,9 @@ function localStorageProjectSettingsPath() {
return '/' + BROWSER_PROJECT_NAME + '/project.toml'
}
-export function readLocalStorageAppSettingsFile(): Configuration | Error {
+export function readLocalStorageAppSettingsFile():
+ | Partial
+ | Error {
// TODO: Remove backwards compatibility after a few releases.
let stored =
localStorage.getItem(localStorageAppSettingsPath()) ??
@@ -129,7 +131,9 @@ export function readLocalStorageAppSettingsFile(): Configuration | Error {
}
}
-function readLocalStorageProjectSettingsFile(): ProjectConfiguration | Error {
+function readLocalStorageProjectSettingsFile():
+ | Partial
+ | Error {
// TODO: Remove backwards compatibility after a few releases.
let stored = localStorage.getItem(localStorageProjectSettingsPath()) ?? ''
@@ -152,47 +156,42 @@ function readLocalStorageProjectSettingsFile(): ProjectConfiguration | Error {
export interface AppSettings {
settings: ReturnType
- configuration: Configuration
+ configuration: Partial
}
export async function loadAndValidateSettings(
projectPath?: string
): Promise {
- const settings = createSettings()
- const inTauri = isTauri()
+ // Make sure we have wasm initialized.
+ await initPromise
- if (!inTauri) {
- // Make sure we have wasm initialized.
- await initPromise
- }
+ const onDesktop = isDesktop()
// Load the app settings from the file system or localStorage.
- const appSettings = inTauri
+ const appSettingsPayload = onDesktop
? await readAppSettingsFile()
: readLocalStorageAppSettingsFile()
- if (err(appSettings)) return Promise.reject(appSettings)
+ if (err(appSettingsPayload)) return Promise.reject(appSettingsPayload)
- // Convert the app settings to the JS settings format.
- const appSettingsPayload = configurationToSettingsPayload(appSettings)
+ const settings = createSettings()
setSettingsAtLevel(settings, 'user', appSettingsPayload)
// Load the project settings if they exist
if (projectPath) {
- const projectSettings = inTauri
+ const projectSettings = onDesktop
? await readProjectSettingsFile(projectPath)
: readLocalStorageProjectSettingsFile()
if (err(projectSettings))
return Promise.reject(new Error('Invalid project settings'))
- const projectSettingsPayload =
- projectConfigurationToSettingsPayload(projectSettings)
+ const projectSettingsPayload = projectSettings
setSettingsAtLevel(settings, 'project', projectSettingsPayload)
}
// Return the settings object
- return { settings, configuration: appSettings }
+ return { settings, configuration: appSettingsPayload }
}
export async function saveSettings(
@@ -201,7 +200,7 @@ export async function saveSettings(
) {
// Make sure we have wasm initialized.
await initPromise
- const inTauri = isTauri()
+ const onDesktop = isDesktop()
// Get the user settings.
const jsAppSettings = getChangedSettingsAtLevel(allSettings, 'user')
@@ -212,11 +211,11 @@ export async function saveSettings(
const appSettings = parseAppSettings(tomlString)
if (err(appSettings)) return
- const tomlString2 = tomlStringify(appSettings)
+ const tomlString2 = tomlStringify({ settings: appSettings })
if (err(tomlString2)) return
// Write the app settings.
- if (inTauri) {
+ if (onDesktop) {
await writeAppSettingsFile(appSettings)
} else {
localStorage.setItem(localStorageAppSettingsPath(), tomlString2)
@@ -241,7 +240,7 @@ export async function saveSettings(
if (err(tomlStr)) return
// Write the project settings.
- if (inTauri) {
+ if (onDesktop) {
await writeProjectSettingsFile(projectPath, projectSettings)
} else {
localStorage.setItem(localStorageProjectSettingsPath(), tomlStr)
@@ -315,7 +314,7 @@ export function shouldHideSetting(
return (
setting.hideOnLevel === settingsLevel ||
setting.hideOnPlatform === 'both' ||
- (setting.hideOnPlatform && isTauri()
+ (setting.hideOnPlatform && isDesktop()
? setting.hideOnPlatform === 'desktop'
: setting.hideOnPlatform === 'web')
)
diff --git a/src/lib/tauri.ts b/src/lib/tauri.ts
deleted file mode 100644
index 8e1a7fdb2..000000000
--- a/src/lib/tauri.ts
+++ /dev/null
@@ -1,183 +0,0 @@
-// This file contains wrappers around the tauri commands we define in rust code.
-
-import { Models } from '@kittycad/lib/dist/types/src'
-import { invoke } from '@tauri-apps/api/core'
-import { Configuration } from 'wasm-lib/kcl/bindings/Configuration'
-import { ProjectConfiguration } from 'wasm-lib/kcl/bindings/ProjectConfiguration'
-import { Project } from 'wasm-lib/kcl/bindings/Project'
-import { FileEntry } from 'wasm-lib/kcl/bindings/FileEntry'
-import { ProjectState } from 'wasm-lib/kcl/bindings/ProjectState'
-import { ProjectRoute } from 'wasm-lib/kcl/bindings/ProjectRoute'
-import { isTauri } from './isTauri'
-import { components } from './machine-api'
-
-// Get the app state from tauri.
-export async function getState(): Promise {
- if (!isTauri()) {
- return undefined
- }
- return await invoke('get_state')
-}
-
-// Set the app state in tauri.
-export async function setState(state: ProjectState | undefined): Promise {
- if (!isTauri()) {
- return
- }
- return await invoke('set_state', { state })
-}
-
-// List machines on the local network.
-export async function listMachines(): Promise<{
- [key: string]: components['schemas']['Machine']
-}> {
- let machines: string = await invoke('list_machines')
- return JSON.parse(machines)
-}
-
-// Get the machine-api ip address.
-export async function getMachineApiIp(): Promise {
- return await invoke('get_machine_api_ip')
-}
-
-export async function renameProjectDirectory(
- projectPath: string,
- newName: string
-): Promise {
- return invoke('rename_project_directory', { projectPath, newName })
-}
-
-// Get the initial default dir for holding all projects.
-export async function getInitialDefaultDir(): Promise {
- if (!isTauri()) {
- return ''
- }
- return invoke('get_initial_default_dir')
-}
-
-export async function showInFolder(path: string | undefined): Promise {
- if (!isTauri()) {
- return
- }
- if (!path) {
- console.error('path is undefined cannot call tauri showInFolder')
- return
- }
- return await invoke('show_in_folder', { path })
-}
-
-export async function initializeProjectDirectory(
- settings: Configuration
-): Promise {
- if (!isTauri()) {
- return undefined
- }
- return await invoke('initialize_project_directory', {
- configuration: settings,
- })
-}
-
-export async function createNewProjectDirectory(
- projectName: string,
- initialCode?: string,
- configuration?: Configuration
-): Promise {
- if (!configuration) {
- configuration = await readAppSettingsFile()
- }
- return await invoke('create_new_project_directory', {
- configuration,
- projectName,
- initialCode,
- })
-}
-
-export async function listProjects(
- configuration?: Configuration
-): Promise {
- if (!configuration) {
- configuration = await readAppSettingsFile()
- }
- return await invoke('list_projects', { configuration })
-}
-
-export async function getProjectInfo(
- projectPath: string,
- configuration?: Configuration
-): Promise {
- if (!configuration) {
- configuration = await readAppSettingsFile()
- }
- return await invoke('get_project_info', {
- configuration,
- projectPath,
- })
-}
-
-export async function login(host: string): Promise {
- return await invoke('login', { host })
-}
-
-export async function parseProjectRoute(
- configuration: Configuration,
- route: string
-): Promise {
- return await invoke('parse_project_route', {
- configuration,
- route,
- })
-}
-
-export async function getUser(
- token: string | undefined,
- host: string
-): Promise | void> {
- if (!token) {
- console.error('token is undefined cannot call tauri getUser')
- return
- }
-
- return await invoke>(
- 'get_user',
- {
- token: token,
- hostname: host,
- }
- ).catch((err) => console.error('error from Tauri getUser', err))
-}
-
-export async function readDirRecursive(path: string): Promise {
- return await invoke('read_dir_recursive', { path })
-}
-
-// Read the contents of the app settings.
-export async function readAppSettingsFile(): Promise {
- return await invoke('read_app_settings_file')
-}
-
-// Write the contents of the app settings.
-export async function writeAppSettingsFile(
- settings: Configuration
-): Promise {
- return await invoke('write_app_settings_file', { configuration: settings })
-}
-
-// Read project settings file.
-export async function readProjectSettingsFile(
- projectPath: string
-): Promise {
- return await invoke('read_project_settings_file', {
- projectPath,
- })
-}
-
-// Write project settings file.
-export async function writeProjectSettingsFile(
- projectPath: string,
- settings: ProjectConfiguration
-): Promise {
- return await invoke('write_project_settings_file', {
- projectPath,
- configuration: settings,
- })
-}
diff --git a/src/lib/tauriFS.test.ts b/src/lib/tauriFS.test.ts
index 04370a77f..b5f7c7640 100644
--- a/src/lib/tauriFS.test.ts
+++ b/src/lib/tauriFS.test.ts
@@ -1,4 +1,7 @@
-import { getNextProjectIndex, interpolateProjectNameWithIndex } from './tauriFS'
+import {
+ getNextProjectIndex,
+ interpolateProjectNameWithIndex,
+} from './desktopFS'
import { MAX_PADDING } from './constants'
describe('Test project name utility functions', () => {
diff --git a/src/lib/trap.ts b/src/lib/trap.ts
index acfc7bc83..06cb8a8dc 100644
--- a/src/lib/trap.ts
+++ b/src/lib/trap.ts
@@ -8,6 +8,7 @@ export function err(value: ExcludeErr | Error): value is Error {
return false
}
+ console.error(value)
return true
}
diff --git a/src/machines/authMachine.ts b/src/machines/authMachine.ts
index ddeeb87c2..9ef7f9ef4 100644
--- a/src/machines/authMachine.ts
+++ b/src/machines/authMachine.ts
@@ -1,12 +1,14 @@
import { createMachine, assign } from 'xstate'
import { Models } from '@kittycad/lib'
import withBaseURL from '../lib/withBaseURL'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { VITE_KC_API_BASE_URL, VITE_KC_DEV_TOKEN } from 'env'
-import { getUser as getUserTauri } from 'lib/tauri'
+import { getUser as getUserDesktop } from 'lib/desktop'
const SKIP_AUTH =
+ // @ts-ignore
import.meta.env.VITE_KC_SKIP_AUTH === 'true' && import.meta.env.DEV
+
const LOCAL_USER: Models['User_type'] = {
id: '8675309',
name: 'Test User',
@@ -123,7 +125,7 @@ async function getUser(context: UserContext) {
'Content-Type': 'application/json',
}
- if (!token && isTauri()) return Promise.reject(new Error('No token found'))
+ if (!token && isDesktop()) return Promise.reject(new Error('No token found'))
if (token) headers['Authorization'] = `Bearer ${context.token}`
if (SKIP_AUTH) {
@@ -138,7 +140,7 @@ async function getUser(context: UserContext) {
}
}
- const userPromise = !isTauri()
+ const userPromise = !isDesktop()
? fetch(url, {
method: 'GET',
credentials: 'include',
@@ -146,7 +148,7 @@ async function getUser(context: UserContext) {
})
.then((res) => res.json())
.catch((err) => console.error('error from Browser getUser', err))
- : getUserTauri(context.token, VITE_KC_API_BASE_URL)
+ : getUserDesktop(context.token ?? '', VITE_KC_API_BASE_URL)
const user = await userPromise
@@ -164,7 +166,7 @@ async function getUser(context: UserContext) {
}
function getCookie(cname: string): string | null {
- if (isTauri()) {
+ if (isDesktop()) {
return null
}
diff --git a/src/machines/settingsMachine.ts b/src/machines/settingsMachine.ts
index 40cd61cb7..cccf68c7c 100644
--- a/src/machines/settingsMachine.ts
+++ b/src/machines/settingsMachine.ts
@@ -89,8 +89,6 @@ export const settingsMachine = createMachine(
},
'Set all settings': {
- target: 'persisting settings',
-
actions: [
'setAllSettings',
'setThemeClass',
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 000000000..e4e63de03
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,174 @@
+// Some of the following was taken from bits and pieces of the vite-typescript
+// template that ElectronJS provides.
+
+import { Configuration } from 'wasm-lib/kcl/bindings/Configuration'
+import {
+ app,
+ BrowserWindow,
+ ipcMain,
+ dialog,
+ shell,
+ protocol,
+ net,
+} from 'electron'
+import path from 'path'
+import url from 'url'
+import fs from 'node:fs/promises'
+import fss from 'node:fs'
+import { Issuer } from 'openid-client'
+import { Bonjour, Service } from 'bonjour-service'
+
+// Handle creating/removing shortcuts on Windows when installing/uninstalling.
+if (require('electron-squirrel-startup')) {
+ app.quit()
+}
+
+const createWindow = () => {
+ const mainWindow = new BrowserWindow({
+ autoHideMenuBar: true,
+ show: false,
+ width: 1800,
+ height: 1200,
+ webPreferences: {
+ nodeIntegration: false, // do not give the application implicit system access
+ contextIsolation: true, // expose system functions in preload
+ sandbox: false, // expose nodejs in preload
+ preload: path.join(__dirname, './preload.js'),
+ },
+ })
+
+ // and load the index.html of the app.
+ if (MAIN_WINDOW_VITE_DEV_SERVER_URL) {
+ mainWindow.loadURL(MAIN_WINDOW_VITE_DEV_SERVER_URL)
+ } else {
+ mainWindow.loadFile(
+ path.join(__dirname, `../renderer/${MAIN_WINDOW_VITE_NAME}/index.html`)
+ )
+ }
+
+ // Open the DevTools.
+ // mainWindow.webContents.openDevTools()
+
+ mainWindow.show()
+}
+
+// Quit when all windows are closed, except on macOS. There, it's common
+// for applications and their menu bar to stay active until the user quits
+// explicitly with Cmd + Q.
+app.on('window-all-closed', () => {
+ if (process.platform !== 'darwin') {
+ app.quit()
+ }
+})
+
+// This method will be called when Electron has finished
+// initialization and is ready to create browser windows.
+// Some APIs can only be used after this event occurs.
+app.on('ready', createWindow)
+
+// For now there is no good reason to separate these out to another file(s)
+// There is just not enough code to warrant it and further abstracts everything
+// which is already quite abstracted
+
+ipcMain.handle('app.getPath', (event, data) => {
+ return app.getPath(data)
+})
+
+ipcMain.handle('dialog.showOpenDialog', (event, data) => {
+ return dialog.showOpenDialog(data)
+})
+ipcMain.handle('dialog.showSaveDialog', (event, data) => {
+ return dialog.showSaveDialog(data)
+})
+
+ipcMain.handle('shell.showItemInFolder', (event, data) => {
+ return shell.showItemInFolder(data)
+})
+
+ipcMain.handle('shell.openExternal', (event, data) => {
+ return shell.openExternal(data)
+})
+
+ipcMain.handle('login', async (event, host) => {
+ // Do an OAuth 2.0 Device Authorization Grant dance to get a token.
+ // We quiet ts because we are not using this in the standard way.
+ // @ts-ignore
+ const issuer = new Issuer({
+ device_authorization_endpoint: `${host}/oauth2/device/auth`,
+ token_endpoint: `${host}/oauth2/device/token`,
+ })
+ const client = new issuer.Client({
+ // We can hardcode the client ID.
+ // This value is safe to be embedded in version control.
+ // This is the client ID of the KittyCAD app.
+ client_id: '2af127fb-e14e-400a-9c57-a9ed08d1a5b7',
+ token_endpoint_auth_method: 'none',
+ })
+
+ const handle = await client.deviceAuthorization()
+
+ // Open the system browser with the auth_uri.
+ // We do this in the browser and not a separate window because we want 1password and
+ // other crap to work well.
+ // TODO: find a better way to share this value with tauri e2e tests
+ // Here we're using an env var to enable the /tmp file (windows not supported for now)
+ // and bypass the shell::open call as it fails on GitHub Actions.
+ const e2e_tauri_enabled = process.env.E2E_TAURI_ENABLED
+ if (e2e_tauri_enabled) {
+ console.warn(
+ `E2E_TAURI_ENABLED is set, won't open ${handle.verification_uri_complete} externally`
+ )
+ let temp = '/tmp'
+ // Overwrite with Windows variable
+ if (process.env.TEMP) {
+ temp = process.env.TEMP
+ }
+ let tmpkcuc = path.join(temp, 'kittycad_user_code')
+ console.log(`Writing to ${tmpkcuc}`)
+ await fs.writeFile(tmpkcuc, handle.user_code)
+ } else {
+ shell.openExternal(handle.verification_uri_complete)
+ }
+
+ // Wait for the user to login.
+ const tokenSet = await handle.poll()
+
+ return tokenSet.access_token
+})
+
+const SERVICE_NAME = '_machine-api._tcp.local.'
+
+ipcMain.handle('find_machine_api', () => {
+ const timeoutAfterMs = 5000
+ return new Promise((resolve, reject) => {
+ // if it takes too long reject this promise
+ setTimeout(() => resolve(null), timeoutAfterMs)
+ const bonjourEt = new Bonjour({}, (error: Error) => {
+ console.log('An issue with Bonjour services was encountered!')
+ console.error(error)
+ resolve(null)
+ })
+ console.log('Looking for machine API...')
+ bonjourEt.find({ type: SERVICE_NAME }, (service: Service) => {
+ resolve(service.fqdn)
+ })
+ })
+})
+
+app.whenReady().then(() => {
+ protocol.handle('file', (request) => {
+ const filePath = request.url.slice('file://'.length)
+ const maybeAbsolutePath = path.join(__dirname, filePath)
+ const bypassCustomProtocolHandlers = true
+ if (fss.existsSync(maybeAbsolutePath)) {
+ console.log(
+ `Intercepted local-asbolute path ${filePath}, rebuilt it as ${maybeAbsolutePath}`
+ )
+ return net.fetch(url.pathToFileURL(maybeAbsolutePath).toString(), {
+ bypassCustomProtocolHandlers,
+ })
+ }
+ console.log(`Default fetch to ${filePath}`)
+ return net.fetch(request.url, { bypassCustomProtocolHandlers })
+ })
+})
diff --git a/src/preload.ts b/src/preload.ts
new file mode 100644
index 000000000..1fc8bcdcd
--- /dev/null
+++ b/src/preload.ts
@@ -0,0 +1 @@
+import 'lib/electron'
diff --git a/src/routes/Home.tsx b/src/routes/Home.tsx
index 1f4658927..f6e53ecfa 100644
--- a/src/routes/Home.tsx
+++ b/src/routes/Home.tsx
@@ -1,10 +1,9 @@
import { FormEvent, useEffect, useRef } from 'react'
-import { remove } from '@tauri-apps/plugin-fs'
import {
getNextProjectIndex,
interpolateProjectNameWithIndex,
doesProjectNameNeedInterpolated,
-} from 'lib/tauriFS'
+} from 'lib/desktopFS'
import { ActionButton } from 'components/ActionButton'
import { toast } from 'react-hot-toast'
import { AppHeader } from 'components/AppHeader'
@@ -25,10 +24,9 @@ import {
import useStateMachineCommands from '../hooks/useStateMachineCommands'
import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext'
import { useCommandsContext } from 'hooks/useCommandsContext'
-import { join, sep } from '@tauri-apps/api/path'
import { homeCommandBarConfig } from 'lib/commandBarConfigs/homeCommandConfig'
import { useHotkeys } from 'react-hotkeys-hook'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { kclManager } from 'lib/singletons'
import { useLspContext } from 'components/LspProvider'
import { useRefreshSettings } from 'hooks/useRefreshSettings'
@@ -38,16 +36,16 @@ import {
createNewProjectDirectory,
listProjects,
renameProjectDirectory,
-} from 'lib/tauri'
+} from 'lib/desktop'
import { ProjectSearchBar, useProjectSearch } from 'components/ProjectSearchBar'
-// This route only opens in the Tauri desktop context for now,
-// as defined in Router.tsx, so we can use the Tauri APIs and types.
+// This route only opens in the desktop context for now,
+// as defined in Router.tsx, so we can use the desktop APIs and types.
const Home = () => {
+ const { projects: loadedProjects } = useLoaderData() as HomeLoaderData
useRefreshSettings(PATHS.HOME + 'SETTINGS')
const { commandBarSend } = useCommandsContext()
const navigate = useNavigate()
- const { projects: loadedProjects } = useLoaderData() as HomeLoaderData
const {
settings: { context: settings },
} = useSettingsAuthContext()
@@ -62,7 +60,7 @@ const Home = () => {
e.preventDefault()
})
useHotkeys(
- isTauri() ? 'mod+,' : 'shift+mod+,',
+ isDesktop() ? 'mod+,' : 'shift+mod+,',
() => navigate(PATHS.HOME + PATHS.SETTINGS),
{
splitKey: '|',
@@ -82,7 +80,10 @@ const Home = () => {
event: EventFrom
) => {
if (event.data && 'name' in event.data) {
- let projectPath = context.defaultDirectory + sep() + event.data.name
+ let projectPath =
+ context.defaultDirectory +
+ window.electron.path.sep +
+ event.data.name
onProjectOpen(
{
name: event.data.name,
@@ -131,7 +132,7 @@ const Home = () => {
}
await renameProjectDirectory(
- await join(context.defaultDirectory, oldName),
+ window.electron.path.join(context.defaultDirectory, oldName),
name
)
return `Successfully renamed "${oldName}" to "${name}"`
@@ -140,9 +141,12 @@ const Home = () => {
context: ContextFrom,
event: EventFrom
) => {
- await remove(await join(context.defaultDirectory, event.data.name), {
- recursive: true,
- })
+ await window.electron.rm(
+ window.electron.path.join(context.defaultDirectory, event.data.name),
+ {
+ recursive: true,
+ }
+ )
return `Successfully deleted "${event.data.name}"`
},
},
diff --git a/src/routes/Onboarding/Introduction.tsx b/src/routes/Onboarding/Introduction.tsx
index a98070138..56c733620 100644
--- a/src/routes/Onboarding/Introduction.tsx
+++ b/src/routes/Onboarding/Introduction.tsx
@@ -3,16 +3,22 @@ import { onboardingPaths } from 'routes/Onboarding/paths'
import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext'
import { Themes, getSystemTheme } from 'lib/theme'
import { bracket } from 'lib/exampleKcl'
-import { createAndOpenNewProject } from 'lib/tauriFS'
-import { isTauri } from 'lib/isTauri'
+import { createAndOpenNewProject } from 'lib/desktopFS'
+import { isDesktop } from 'lib/isDesktop'
import { useNavigate, useRouteLoaderData } from 'react-router-dom'
+import { paths } from 'lib/paths'
import { codeManager, kclManager } from 'lib/singletons'
-import { APP_NAME } from 'lib/constants'
+import {
+ APP_NAME,
+ ONBOARDING_PROJECT_NAME,
+ PROJECT_ENTRYPOINT,
+} from 'lib/constants'
import { useState } from 'react'
-import { useLspContext } from 'components/LspProvider'
+import { createNewProjectDirectory, listProjects } from 'lib/desktop'
import { IndexLoaderData } from 'lib/types'
import { PATHS } from 'lib/paths'
import { useFileContext } from 'hooks/useFileContext'
+import { useLspContext } from 'components/LspProvider'
/**
* Show either a welcome screen or a warning screen
@@ -38,7 +44,7 @@ function OnboardingResetWarning(props: OnboardingResetWarningProps) {
return (
- {!isTauri() ? (
+ {!isDesktop() ? (
) : (
diff --git a/src/routes/Onboarding/ProjectMenu.tsx b/src/routes/Onboarding/ProjectMenu.tsx
index 141263c9d..ad2c1882e 100644
--- a/src/routes/Onboarding/ProjectMenu.tsx
+++ b/src/routes/Onboarding/ProjectMenu.tsx
@@ -1,13 +1,13 @@
import { OnboardingButtons, useDismiss, useNextClick } from '.'
import { onboardingPaths } from 'routes/Onboarding/paths'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
import { useModelingContext } from 'hooks/useModelingContext'
export default function ProjectMenu() {
const { context } = useModelingContext()
const dismiss = useDismiss()
const next = useNextClick(onboardingPaths.EXPORT)
- const tauri = isTauri()
+ const onDesktop = isDesktop()
return (
@@ -20,14 +20,14 @@ export default function ProjectMenu() {
Project Menu
- Click on {tauri ? `your part's name` : `the app name`} in the upper
- left to open the project menu, where you can open the project
+ Click on {onDesktop ? `your part's name` : `the app name`} in the
+ upper left to open the project menu, where you can open the project
settings and export your current part.
- {tauri && (
+ {onDesktop && (
<> You can click the Zoo logo to quickly navigate home.>
)}
- {tauri ? (
+ {onDesktop ? (
<>
From here you can manage files in your project and export your
diff --git a/src/routes/Settings.tsx b/src/routes/Settings.tsx
index 41ec745f0..68a8aa532 100644
--- a/src/routes/Settings.tsx
+++ b/src/routes/Settings.tsx
@@ -12,10 +12,11 @@ import { SettingsSectionsList } from 'components/Settings/SettingsSectionsList'
import { AllSettingsFields } from 'components/Settings/AllSettingsFields'
import { AllKeybindingsFields } from 'components/Settings/AllKeybindingsFields'
import { KeybindingsSectionsList } from 'components/Settings/KeybindingsSectionsList'
-import { isTauri } from 'lib/isTauri'
+import { isDesktop } from 'lib/isDesktop'
-export const APP_VERSION = isTauri()
- ? import.meta.env.PACKAGE_VERSION || 'unknown'
+export const APP_VERSION = isDesktop()
+ ? // @ts-ignore
+ import.meta.env.PACKAGE_VERSION || 'unknown'
: 'main'
export const Settings = () => {
diff --git a/src/routes/SignIn.tsx b/src/routes/SignIn.tsx
index ba6c2ff88..c00c31d7f 100644
--- a/src/routes/SignIn.tsx
+++ b/src/routes/SignIn.tsx
@@ -1,11 +1,10 @@
import { ActionButton } from '../components/ActionButton'
-import { isTauri } from '../lib/isTauri'
+import { isDesktop } from '../lib/isDesktop'
import { VITE_KC_SITE_BASE_URL, VITE_KC_API_BASE_URL } from '../env'
import { Themes, getSystemTheme } from '../lib/theme'
import { PATHS } from 'lib/paths'
import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext'
import { APP_NAME } from 'lib/constants'
-import { login } from 'lib/tauri'
const SignIn = () => {
const {
@@ -25,10 +24,10 @@ const SignIn = () => {
? '-dark'
: ''
- const signInTauri = async () => {
+ const signInDesktop = async () => {
// We want to invoke our command to login via device auth.
try {
- const token: string = await login(VITE_KC_API_BASE_URL)
+ const token: string = await window.electron.login(VITE_KC_API_BASE_URL)
send({ type: 'Log in', token })
} catch (error) {
console.error('Error with login button', error)
@@ -61,10 +60,10 @@ const SignIn = () => {
ZMA is ready for production, please sign up for our mailing list at{' '}
zoo.dev .
- {isTauri() ? (
+ {isDesktop() ? (
Result {
+ fn is_desktop(&self) -> Result {
Ok(false)
}
diff --git a/src/wasm-lib/kcl/src/coredump/mod.rs b/src/wasm-lib/kcl/src/coredump/mod.rs
index 00216ac59..bb6283ae5 100644
--- a/src/wasm-lib/kcl/src/coredump/mod.rs
+++ b/src/wasm-lib/kcl/src/coredump/mod.rs
@@ -29,7 +29,7 @@ pub trait CoreDump: Clone {
async fn os(&self) -> Result;
- fn is_tauri(&self) -> Result;
+ fn is_desktop(&self) -> Result;
async fn get_webrtc_stats(&self) -> Result;
@@ -81,7 +81,7 @@ pub trait CoreDump: Clone {
version: self.version()?,
git_rev: git_rev::try_revision_string!().map_or_else(|| "unknown".to_string(), |s| s.to_string()),
timestamp: chrono::Utc::now(),
- tauri: self.is_tauri()?,
+ tauri: self.is_desktop()?,
os,
webrtc_stats,
github_issue_url: None,
diff --git a/src/wasm-lib/kcl/src/coredump/wasm.rs b/src/wasm-lib/kcl/src/coredump/wasm.rs
index 683467db0..a976b700a 100644
--- a/src/wasm-lib/kcl/src/coredump/wasm.rs
+++ b/src/wasm-lib/kcl/src/coredump/wasm.rs
@@ -26,8 +26,8 @@ extern "C" {
#[wasm_bindgen(method, js_name = getOsInfo, catch)]
fn get_os_info(this: &CoreDumpManager) -> Result;
- #[wasm_bindgen(method, js_name = isTauri, catch)]
- fn is_tauri(this: &CoreDumpManager) -> Result;
+ #[wasm_bindgen(method, js_name = isDesktop, catch)]
+ fn is_desktop(this: &CoreDumpManager) -> Result;
#[wasm_bindgen(method, js_name = getWebrtcStats, catch)]
fn get_webrtc_stats(this: &CoreDumpManager) -> Result;
@@ -100,9 +100,9 @@ impl CoreDump for CoreDumper {
Ok(os)
}
- fn is_tauri(&self) -> Result {
+ fn is_desktop(&self) -> Result {
self.manager
- .is_tauri()
+ .is_desktop()
.map_err(|e| anyhow::anyhow!("Failed to get response from is tauri: {:?}", e))
}
diff --git a/src/wasm-lib/kcl/src/settings/types/mod.rs b/src/wasm-lib/kcl/src/settings/types/mod.rs
index 48d2a3709..20254584d 100644
--- a/src/wasm-lib/kcl/src/settings/types/mod.rs
+++ b/src/wasm-lib/kcl/src/settings/types/mod.rs
@@ -969,7 +969,7 @@ color = 1567.4"#;
assert_eq!(project.file.name, project_name);
assert_eq!(
- project.file.path,
+ project.file.path,
settings
.settings
.project
@@ -1019,7 +1019,7 @@ color = 1567.4"#;
assert_eq!(project.file.name, project_name);
assert_eq!(
- project.file.path,
+ project.file.path,
settings
.settings
.project
diff --git a/src/wasm-lib/src/wasm.rs b/src/wasm-lib/src/wasm.rs
index 5753848ba..2a5830bb0 100644
--- a/src/wasm-lib/src/wasm.rs
+++ b/src/wasm-lib/src/wasm.rs
@@ -6,8 +6,8 @@ use std::{
};
use futures::stream::TryStreamExt;
-use gloo_utils::format::JsValueSerdeExt;
-use kcl_lib::{coredump::CoreDump, engine::EngineManager, executor::ExecutorSettings};
+use kcl_lib::{coredump::CoreDump, engine::EngineManager, executor::ExecutorSettings, lint::checks};
+use serde_wasm_bindgen;
use tower_lsp::{LspService, Server};
use wasm_bindgen::prelude::*;
@@ -54,14 +54,13 @@ pub async fn execute_wasm(
};
let memory = ctx.run(&program, Some(memory)).await.map_err(String::from)?;
- // The serde-wasm-bindgen does not work here because of weird HashMap issues so we use the
- // gloo-serialize crate instead.
- JsValue::from_serde(&memory).map_err(|e| e.to_string())
+
+ serde_wasm_bindgen::to_value(&memory).map_err(|e| e.to_string())
}
// wasm_bindgen wrapper for execute
#[wasm_bindgen]
-pub async fn kcl_lint(program_str: &str) -> Result {
+pub async fn kcl_lint(program_str: &str) -> Result {
console_error_panic_hook::set_once();
let program: kcl_lib::ast::types::Program = serde_json::from_str(program_str).map_err(|e| e.to_string())?;
@@ -70,7 +69,7 @@ pub async fn kcl_lint(program_str: &str) -> Result {
findings.push(discovered_finding);
}
- Ok(JsValue::from_serde(&findings).map_err(|e| e.to_string())?)
+ Ok(serde_wasm_bindgen::to_value(&findings)?)
}
// wasm_bindgen wrapper for creating default planes
@@ -89,9 +88,7 @@ pub async fn make_default_planes(
.await
.map_err(String::from)?;
- // The serde-wasm-bindgen does not work here because of weird HashMap issues so we use the
- // gloo-serialize crate instead.
- JsValue::from_serde(&default_planes).map_err(|e| e.to_string())
+ serde_wasm_bindgen::to_value(&default_planes).map_err(|e| e.to_string())
}
// wasm_bindgen wrapper for modifying the grid
@@ -143,9 +140,7 @@ pub async fn modify_ast_for_sketch_wasm(
.await
.map_err(String::from)?;
- // The serde-wasm-bindgen does not work here because of weird HashMap issues so we use the
- // gloo-serialize crate instead.
- JsValue::from_serde(&program).map_err(|e| e.to_string())
+ serde_wasm_bindgen::to_value(&program).map_err(|e| e.to_string())
}
#[wasm_bindgen]
@@ -161,7 +156,7 @@ pub fn deserialize_files(data: &[u8]) -> Result {
}
if let Some(kittycad::types::OkWebSocketResponseData::Export { files }) = ws_resp.resp {
- return Ok(JsValue::from_serde(&files)?);
+ return Ok(serde_wasm_bindgen::to_value(&files)?);
}
Err(JsError::new(&format!("Invalid response type, got: {:?}", ws_resp)))
@@ -174,7 +169,7 @@ pub fn lexer_wasm(js: &str) -> Result {
console_error_panic_hook::set_once();
let tokens = kcl_lib::token::lexer(js).map_err(JsError::from)?;
- Ok(JsValue::from_serde(&tokens)?)
+ Ok(serde_wasm_bindgen::to_value(&tokens)?)
}
#[wasm_bindgen]
@@ -184,9 +179,7 @@ pub fn parse_wasm(js: &str) -> Result {
let tokens = kcl_lib::token::lexer(js).map_err(String::from)?;
let parser = kcl_lib::parser::Parser::new(tokens);
let program = parser.ast().map_err(String::from)?;
- // The serde-wasm-bindgen does not work here because of weird HashMap issues so we use the
- // gloo-serialize crate instead.
- JsValue::from_serde(&program).map_err(|e| e.to_string())
+ serde_wasm_bindgen::to_value(&program).map_err(|e| e.to_string())
}
// wasm_bindgen wrapper for recast
@@ -200,7 +193,7 @@ pub fn recast_wasm(json_str: &str) -> Result {
// Use the default options until we integrate into the UI the ability to change them.
let result = program.recast(&Default::default(), 0);
- Ok(JsValue::from_serde(&result)?)
+ Ok(serde_wasm_bindgen::to_value(&result)?)
}
#[wasm_bindgen]
@@ -481,9 +474,7 @@ pub fn program_memory_init() -> Result {
let memory = kcl_lib::executor::ProgramMemory::default();
- // The serde-wasm-bindgen does not work here because of weird HashMap issues so we use the
- // gloo-serialize crate instead.
- JsValue::from_serde(&memory).map_err(|e| e.to_string())
+ serde_wasm_bindgen::to_value(&memory).map_err(|e| e.to_string())
}
/// Get a coredump.
@@ -494,9 +485,7 @@ pub async fn coredump(core_dump_manager: kcl_lib::coredump::wasm::CoreDumpManage
let core_dumper = kcl_lib::coredump::wasm::CoreDumper::new(core_dump_manager);
let dump = core_dumper.dump().await.map_err(|e| e.to_string())?;
- // The serde-wasm-bindgen does not work here because of weird HashMap issues so we use the
- // gloo-serialize crate instead.
- JsValue::from_serde(&dump).map_err(|e| e.to_string())
+ serde_wasm_bindgen::to_value(&dump).map_err(|e| e.to_string())
}
/// Get the default app settings.
@@ -506,9 +495,7 @@ pub fn default_app_settings() -> Result {
let settings = kcl_lib::settings::types::Configuration::default();
- // The serde-wasm-bindgen does not work here because of weird HashMap issues so we use the
- // gloo-serialize crate instead.
- JsValue::from_serde(&settings).map_err(|e| e.to_string())
+ serde_wasm_bindgen::to_value(&settings).map_err(|e| e.to_string())
}
/// Parse the app settings.
@@ -519,9 +506,7 @@ pub fn parse_app_settings(toml_str: &str) -> Result {
let settings = kcl_lib::settings::types::Configuration::backwards_compatible_toml_parse(&toml_str)
.map_err(|e| e.to_string())?;
- // The serde-wasm-bindgen does not work here because of weird HashMap issues so we use the
- // gloo-serialize crate instead.
- JsValue::from_serde(&settings).map_err(|e| e.to_string())
+ serde_wasm_bindgen::to_value(&settings).map_err(|e| e.to_string())
}
/// Get the default project settings.
@@ -531,12 +516,10 @@ pub fn default_project_settings() -> Result {
let settings = kcl_lib::settings::types::project::ProjectConfiguration::default();
- // The serde-wasm-bindgen does not work here because of weird HashMap issues so we use the
- // gloo-serialize crate instead.
- JsValue::from_serde(&settings).map_err(|e| e.to_string())
+ serde_wasm_bindgen::to_value(&settings).map_err(|e| e.to_string())
}
-/// Parse the project settings.
+/// Parse (deserialize) the project settings.
#[wasm_bindgen]
pub fn parse_project_settings(toml_str: &str) -> Result {
console_error_panic_hook::set_once();
@@ -544,9 +527,17 @@ pub fn parse_project_settings(toml_str: &str) -> Result {
let settings = kcl_lib::settings::types::project::ProjectConfiguration::backwards_compatible_toml_parse(&toml_str)
.map_err(|e| e.to_string())?;
- // The serde-wasm-bindgen does not work here because of weird HashMap issues so we use the
- // gloo-serialize crate instead.
- JsValue::from_serde(&settings).map_err(|e| e.to_string())
+ serde_wasm_bindgen::to_value(&settings).map_err(|e| e.to_string())
+}
+
+/// Serialize the project settings.
+#[wasm_bindgen]
+pub fn serialize_project_settings(val: JsValue) -> Result {
+ console_error_panic_hook::set_once();
+
+ let config: kcl_lib::settings::types::Configuration = serde_wasm_bindgen::from_value(val).map_err(|e| e.to_string())?;
+ let toml_str = toml::to_string_pretty(&config).map_err(|e| e.to_string())?;
+ serde_wasm_bindgen::to_value(&toml_str).map_err(|e| e.to_string())
}
/// Parse the project route.
@@ -560,7 +551,5 @@ pub fn parse_project_route(configuration: &str, route: &str) -> Result [m, `node:${m}`]).flat(),
+]
+
+export const external = [
+ ...builtins,
+ ...Object.keys(
+ 'dependencies' in pkg ? (pkg.dependencies as Record) : {}
+ ),
+]
+
+export function getBuildConfig(env: ConfigEnv<'build'>): UserConfig {
+ const { root, mode, command } = env
+
+ return {
+ root,
+ mode,
+ build: {
+ // Prevent multiple builds from interfering with each other.
+ emptyOutDir: false,
+ // 🚧 Multiple builds may conflict.
+ outDir: '.vite/build',
+ watch: command === 'serve' ? {} : null,
+ minify: command === 'build',
+ },
+ clearScreen: false,
+ }
+}
+
+export function getDefineKeys(names: string[]) {
+ const define: { [name: string]: VitePluginRuntimeKeys } = {}
+
+ return names.reduce((acc, name) => {
+ const NAME = name.toUpperCase()
+ const keys: VitePluginRuntimeKeys = {
+ VITE_DEV_SERVER_URL: `${NAME}_VITE_DEV_SERVER_URL`,
+ VITE_NAME: `${NAME}_VITE_NAME`,
+ }
+
+ return { ...acc, [name]: keys }
+ }, define)
+}
+
+export function getBuildDefine(env: ConfigEnv<'build'>) {
+ const { command, forgeConfig } = env
+ const names = forgeConfig.renderer
+ .filter(({ name }) => name != null)
+ .map(({ name }) => name!)
+ const defineKeys = getDefineKeys(names)
+ const define = Object.entries(defineKeys).reduce((acc, [name, keys]) => {
+ const { VITE_DEV_SERVER_URL, VITE_NAME } = keys
+ const def = {
+ [VITE_DEV_SERVER_URL]:
+ command === 'serve'
+ ? JSON.stringify(process.env[VITE_DEV_SERVER_URL])
+ : undefined,
+ [VITE_NAME]: JSON.stringify(name),
+ }
+ return { ...acc, ...def }
+ }, {} as Record)
+
+ return define
+}
+
+export function pluginExposeRenderer(name: string): Plugin {
+ const { VITE_DEV_SERVER_URL } = getDefineKeys([name])[name]
+
+ return {
+ name: '@electron-forge/plugin-vite:expose-renderer',
+ configureServer(server) {
+ process.viteDevServers ??= {}
+ // Expose server for preload scripts hot reload.
+ process.viteDevServers[name] = server
+
+ server.httpServer?.once('listening', () => {
+ const addressInfo = server.httpServer!.address() as AddressInfo
+ // Expose env constant for main process use.
+ process.env[
+ VITE_DEV_SERVER_URL
+ ] = `http://localhost:${addressInfo?.port}`
+ })
+ },
+ }
+}
+
+export function pluginHotRestart(command: 'reload' | 'restart'): Plugin {
+ return {
+ name: '@electron-forge/plugin-vite:hot-restart',
+ closeBundle() {
+ if (command === 'reload') {
+ for (const server of Object.values(process.viteDevServers)) {
+ // Preload scripts hot reload.
+ server.ws.send({ type: 'full-reload' })
+ }
+ } else {
+ // Main process hot restart.
+ // https://github.com/electron/forge/blob/v7.2.0/packages/api/core/src/api/start.ts#L216-L223
+ process.stdin.emit('data', 'rs')
+ }
+ },
+ }
+}
diff --git a/vite.main.config.ts b/vite.main.config.ts
new file mode 100644
index 000000000..ccbbdd3d4
--- /dev/null
+++ b/vite.main.config.ts
@@ -0,0 +1,101 @@
+import type { ConfigEnv, UserConfig } from 'vite'
+import { defineConfig, mergeConfig } from 'vite'
+import { configDefaults } from 'vitest/config'
+import viteTsconfigPaths from 'vite-tsconfig-paths'
+import vitePluginEslint from 'vite-plugin-eslint'
+import vitePluginPackageVersion from 'vite-plugin-package-version'
+import {
+ getBuildConfig,
+ getBuildDefine,
+ external,
+ pluginHotRestart,
+} from './vite.base.config'
+import viteJsPluginReact from '@vitejs/plugin-react'
+// @ts-ignore: No types available
+import { lezer } from '@lezer/generator/rollup'
+
+// https://vitejs.dev/config
+export default defineConfig((env) => {
+ const forgeEnv = env as ConfigEnv<'build'>
+ const { forgeConfigSelf } = forgeEnv
+ const define = getBuildDefine(forgeEnv)
+ const config: UserConfig = {
+ server: {
+ open: true,
+ port: 3000,
+ watch: {
+ ignored: [
+ '**/target/**',
+ '**/dist/**',
+ '**/build/**',
+ '**/test-results/**',
+ '**/playwright-report/**',
+ ],
+ },
+ },
+ test: {
+ globals: true,
+ pool: 'forks',
+ poolOptions: {
+ forks: {
+ maxForks: 2,
+ minForks: 1,
+ },
+ },
+ setupFiles: ['src/setupTests.ts', '@vitest/web-worker'],
+ environment: 'happy-dom',
+ coverage: {
+ provider: 'v8',
+ },
+ exclude: [...configDefaults.exclude, '**/e2e/**/*'],
+ deps: {
+ optimizer: {
+ web: {
+ include: ['vitest-canvas-mock'],
+ },
+ },
+ },
+ clearMocks: true,
+ restoreMocks: true,
+ mockReset: true,
+ reporters: process.env.GITHUB_ACTIONS
+ ? ['dot', 'github-actions']
+ : ['verbose', 'hanging-process'],
+ testTimeout: 1000,
+ hookTimeout: 1000,
+ teardownTimeout: 1000,
+ },
+ build: {
+ lib: {
+ entry: forgeConfigSelf.entry!,
+ fileName: () => '[name].js',
+ formats: ['cjs'],
+ },
+ rollupOptions: {
+ external,
+ },
+ },
+ resolve: {
+ // Load the Node.js entry.
+ mainFields: ['module', 'jsnext:main', 'jsnext'],
+ alias: {
+ '@kittycad/codemirror-lsp-client':
+ '/packages/codemirror-lsp-client/src',
+ },
+ },
+ plugins: [
+ pluginHotRestart('restart'),
+ viteJsPluginReact(),
+ viteTsconfigPaths(),
+ vitePluginEslint(),
+ vitePluginPackageVersion(),
+ lezer(),
+ ],
+ worker: {
+ plugins: () => [viteTsconfigPaths()],
+ },
+ define,
+ }
+
+ return mergeConfig(getBuildConfig(forgeEnv), config)
+})
diff --git a/vite.preload.config.ts b/vite.preload.config.ts
new file mode 100644
index 000000000..21305601b
--- /dev/null
+++ b/vite.preload.config.ts
@@ -0,0 +1,43 @@
+import type { ConfigEnv, UserConfig } from 'vite'
+import { defineConfig, mergeConfig } from 'vite'
+import { configDefaults } from 'vitest/config'
+import viteTsconfigPaths from 'vite-tsconfig-paths'
+import {
+ getBuildConfig,
+ getBuildDefine,
+ external,
+ pluginHotRestart,
+} from './vite.base.config'
+
+// https://vitejs.dev/config
+export default defineConfig((env) => {
+ const forgeEnv = env as ConfigEnv<'build'>
+ const define = getBuildDefine(forgeEnv)
+ const { root, mode, forgeConfigSelf } = forgeEnv
+ const config: UserConfig = {
+ root,
+ mode,
+ base: './',
+ build: {
+ lib: {
+ entry: forgeConfigSelf.entry!,
+ fileName: () => '[name].js',
+ formats: ['cjs'],
+ },
+ rollupOptions: {
+ external,
+ },
+ },
+ resolve: {
+ // Load the Node.js entry.
+ mainFields: ['module', 'jsnext:main', 'jsnext'],
+ },
+ plugins: [pluginHotRestart('restart'), viteTsconfigPaths()],
+ worker: {
+ plugins: () => [viteTsconfigPaths()],
+ },
+ define,
+ }
+
+ return mergeConfig(getBuildConfig(forgeEnv), config)
+})
diff --git a/vite.renderer.config.ts b/vite.renderer.config.ts
new file mode 100644
index 000000000..90f156cd8
--- /dev/null
+++ b/vite.renderer.config.ts
@@ -0,0 +1,34 @@
+import type { ConfigEnv, UserConfig } from 'vite'
+import { defineConfig } from 'vite'
+import { pluginExposeRenderer } from './vite.base.config'
+import viteTsconfigPaths from 'vite-tsconfig-paths'
+// @ts-ignore: No types available
+import { lezer } from '@lezer/generator/rollup'
+
+// https://vitejs.dev/config
+export default defineConfig((env) => {
+ const forgeEnv = env as ConfigEnv<'renderer'>
+ const { root, mode, forgeConfigSelf } = forgeEnv
+ const name = forgeConfigSelf.name ?? ''
+
+ return {
+ root,
+ mode,
+ base: './',
+ build: {
+ outDir: `.vite/renderer/${name}`,
+ },
+ plugins: [pluginExposeRenderer(name), viteTsconfigPaths(), lezer()],
+ worker: {
+ plugins: () => [viteTsconfigPaths()],
+ },
+ resolve: {
+ preserveSymlinks: true,
+ alias: {
+ '@kittycad/codemirror-lsp-client':
+ '/packages/codemirror-lsp-client/src',
+ },
+ },
+ clearScreen: false,
+ } as UserConfig
+})
diff --git a/wdio.conf.ts b/wdio.conf.ts
deleted file mode 100644
index 0173937b2..000000000
--- a/wdio.conf.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import os from 'os'
-import path from 'path'
-import { spawn, ChildProcess } from 'child_process'
-
-let tauriDriver: ChildProcess
-
-const application =
- process.env.E2E_APPLICATION || `./src-tauri/target/release/zoo-modeling-app`
-
-export const config = {
- hostname: '127.0.0.1',
- port: 4444,
- specs: ['./e2e/tauri/specs/**/*.ts'],
- maxInstances: 1,
- capabilities: [
- {
- maxInstances: 1,
- 'tauri:options': {
- application,
- webviewOptions: {}, // Windows only
- },
- },
- ],
- reporters: ['spec'],
- framework: 'mocha',
- mochaOpts: {
- bail: true,
- ui: 'bdd',
- timeout: 600000,
- },
-
- // ensure we are running `tauri-driver` before the session starts so that we can proxy the webdriver requests
- beforeSession: () =>
- (tauriDriver = spawn(
- path.resolve(os.homedir(), '.cargo', 'bin', 'tauri-driver'),
- [],
- { stdio: [null, process.stdout, process.stderr] }
- )),
-
- // clean up the `tauri-driver` process we spawned at the start of the session
- afterSession: () => tauriDriver.kill(),
-}
diff --git a/yarn.lock b/yarn.lock
index ea1b8a11d..bc8feff5a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -20,7 +20,7 @@
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.24"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.24.7":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465"
integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==
@@ -28,26 +28,26 @@
"@babel/highlight" "^7.24.7"
picocolors "^1.0.0"
-"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.8", "@babel/compat-data@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.0.tgz#6b226a5da3a686db3c30519750e071dce292ad95"
- integrity sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==
+"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5"
+ integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==
"@babel/core@^7.16.0", "@babel/core@^7.21.4", "@babel/core@^7.24.5":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4"
- integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77"
+ integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==
dependencies:
"@ampproject/remapping" "^2.2.0"
"@babel/code-frame" "^7.24.7"
- "@babel/generator" "^7.24.7"
- "@babel/helper-compilation-targets" "^7.24.7"
- "@babel/helper-module-transforms" "^7.24.7"
- "@babel/helpers" "^7.24.7"
- "@babel/parser" "^7.24.7"
- "@babel/template" "^7.24.7"
- "@babel/traverse" "^7.24.7"
- "@babel/types" "^7.24.7"
+ "@babel/generator" "^7.25.0"
+ "@babel/helper-compilation-targets" "^7.25.2"
+ "@babel/helper-module-transforms" "^7.25.2"
+ "@babel/helpers" "^7.25.0"
+ "@babel/parser" "^7.25.0"
+ "@babel/template" "^7.25.0"
+ "@babel/traverse" "^7.25.2"
+ "@babel/types" "^7.25.2"
convert-source-map "^2.0.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
@@ -55,24 +55,14 @@
semver "^6.3.1"
"@babel/eslint-parser@^7.16.3":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz#27ebab1a1ec21f48ae191a8aaac5b82baf80d9c7"
- integrity sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA==
+ version "7.25.1"
+ resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz#469cee4bd18a88ff3edbdfbd227bd20e82aa9b82"
+ integrity sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg==
dependencies:
"@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
eslint-visitor-keys "^2.1.0"
semver "^6.3.1"
-"@babel/generator@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d"
- integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==
- dependencies:
- "@babel/types" "^7.24.7"
- "@jridgewell/gen-mapping" "^0.3.5"
- "@jridgewell/trace-mapping" "^0.3.25"
- jsesc "^2.5.1"
-
"@babel/generator@^7.25.0":
version "7.25.0"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e"
@@ -98,45 +88,34 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8":
- version "7.24.8"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz#b607c3161cd9d1744977d4f97139572fe778c271"
- integrity sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==
+"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.2":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c"
+ integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==
dependencies:
- "@babel/compat-data" "^7.24.8"
+ "@babel/compat-data" "^7.25.2"
"@babel/helper-validator-option" "^7.24.8"
browserslist "^4.23.1"
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz#2eaed36b3a1c11c53bdf80d53838b293c52f5b3b"
- integrity sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.24.7"
- "@babel/helper-environment-visitor" "^7.24.7"
- "@babel/helper-function-name" "^7.24.7"
- "@babel/helper-member-expression-to-functions" "^7.24.7"
- "@babel/helper-optimise-call-expression" "^7.24.7"
- "@babel/helper-replace-supers" "^7.24.7"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
- "@babel/helper-split-export-declaration" "^7.24.7"
- semver "^6.3.1"
-
-"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz#be4f435a80dc2b053c76eeb4b7d16dd22cfc89da"
- integrity sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.24.7"
- regexpu-core "^5.3.1"
- semver "^6.3.1"
-
-"@babel/helper-create-regexp-features-plugin@^7.25.0":
+"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0":
version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.0.tgz#17afe5d23b3a833a90f0fab9c2ae69fea192de5c"
- integrity sha512-q0T+dknZS+L5LDazIP+02gEZITG5unzvb6yIjcmj5i0eFrs5ToBV2m2JGH4EsE/gtP8ygEGLGApBgRIZkTm7zg==
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz#a109bf9c3d58dfed83aaf42e85633c89f43a6253"
+ integrity sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.24.7"
+ "@babel/helper-member-expression-to-functions" "^7.24.8"
+ "@babel/helper-optimise-call-expression" "^7.24.7"
+ "@babel/helper-replace-supers" "^7.25.0"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
+ "@babel/traverse" "^7.25.0"
+ semver "^6.3.1"
+
+"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9"
+ integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==
dependencies:
"@babel/helper-annotate-as-pure" "^7.24.7"
regexpu-core "^5.3.1"
@@ -153,36 +132,6 @@
lodash.debounce "^4.0.8"
resolve "^1.14.2"
-"@babel/helper-environment-visitor@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9"
- integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==
- dependencies:
- "@babel/types" "^7.24.7"
-
-"@babel/helper-function-name@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2"
- integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==
- dependencies:
- "@babel/template" "^7.24.7"
- "@babel/types" "^7.24.7"
-
-"@babel/helper-hoist-variables@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee"
- integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==
- dependencies:
- "@babel/types" "^7.24.7"
-
-"@babel/helper-member-expression-to-functions@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz#67613d068615a70e4ed5101099affc7a41c5225f"
- integrity sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==
- dependencies:
- "@babel/traverse" "^7.24.7"
- "@babel/types" "^7.24.7"
-
"@babel/helper-member-expression-to-functions@^7.24.8":
version "7.24.8"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6"
@@ -199,26 +148,15 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-module-transforms@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8"
- integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==
- dependencies:
- "@babel/helper-environment-visitor" "^7.24.7"
- "@babel/helper-module-imports" "^7.24.7"
- "@babel/helper-simple-access" "^7.24.7"
- "@babel/helper-split-export-declaration" "^7.24.7"
- "@babel/helper-validator-identifier" "^7.24.7"
-
-"@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.0.tgz#3ffc23c473a2769a7e40d3274495bd559fdd2ecc"
- integrity sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==
+"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.25.2":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6"
+ integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==
dependencies:
"@babel/helper-module-imports" "^7.24.7"
"@babel/helper-simple-access" "^7.24.7"
"@babel/helper-validator-identifier" "^7.24.7"
- "@babel/traverse" "^7.25.0"
+ "@babel/traverse" "^7.25.2"
"@babel/helper-optimise-call-expression@^7.24.7":
version "7.24.7"
@@ -232,16 +170,7 @@
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878"
integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==
-"@babel/helper-remap-async-to-generator@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz#b3f0f203628522713849d49403f1a414468be4c7"
- integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.24.7"
- "@babel/helper-environment-visitor" "^7.24.7"
- "@babel/helper-wrap-function" "^7.24.7"
-
-"@babel/helper-remap-async-to-generator@^7.25.0":
+"@babel/helper-remap-async-to-generator@^7.24.7", "@babel/helper-remap-async-to-generator@^7.25.0":
version "7.25.0"
resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz#d2f0fbba059a42d68e5e378feaf181ef6055365e"
integrity sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==
@@ -250,16 +179,7 @@
"@babel/helper-wrap-function" "^7.25.0"
"@babel/traverse" "^7.25.0"
-"@babel/helper-replace-supers@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz#f933b7eed81a1c0265740edc91491ce51250f765"
- integrity sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==
- dependencies:
- "@babel/helper-environment-visitor" "^7.24.7"
- "@babel/helper-member-expression-to-functions" "^7.24.7"
- "@babel/helper-optimise-call-expression" "^7.24.7"
-
-"@babel/helper-replace-supers@^7.25.0":
+"@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.0":
version "7.25.0"
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9"
integrity sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==
@@ -284,18 +204,6 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-split-export-declaration@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856"
- integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==
- dependencies:
- "@babel/types" "^7.24.7"
-
-"@babel/helper-string-parser@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2"
- integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==
-
"@babel/helper-string-parser@^7.24.8":
version "7.24.8"
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d"
@@ -311,16 +219,6 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d"
integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==
-"@babel/helper-wrap-function@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz#52d893af7e42edca7c6d2c6764549826336aae1f"
- integrity sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==
- dependencies:
- "@babel/helper-function-name" "^7.24.7"
- "@babel/template" "^7.24.7"
- "@babel/traverse" "^7.24.7"
- "@babel/types" "^7.24.7"
-
"@babel/helper-wrap-function@^7.25.0":
version "7.25.0"
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz#dab12f0f593d6ca48c0062c28bcfb14ebe812f81"
@@ -330,13 +228,13 @@
"@babel/traverse" "^7.25.0"
"@babel/types" "^7.25.0"
-"@babel/helpers@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416"
- integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==
+"@babel/helpers@^7.25.0":
+ version "7.25.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a"
+ integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==
dependencies:
- "@babel/template" "^7.24.7"
- "@babel/types" "^7.24.7"
+ "@babel/template" "^7.25.0"
+ "@babel/types" "^7.25.0"
"@babel/highlight@^7.24.7":
version "7.24.7"
@@ -348,23 +246,20 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4", "@babel/parser@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85"
- integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==
+"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3":
+ version "7.25.3"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065"
+ integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==
+ dependencies:
+ "@babel/types" "^7.25.2"
-"@babel/parser@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.0.tgz#9fdc9237504d797b6e7b8f66e78ea7f570d256ad"
- integrity sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==
-
-"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.0.tgz#328275f22d809b962978d998c6eba22a233ac8aa"
- integrity sha512-dG0aApncVQwAUJa8tP1VHTnmU67BeIQvKafd3raEx315H54FfkZSz3B/TT+33ZQAjatGJA79gZqTtqL5QZUKXw==
+"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3":
+ version "7.25.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f"
+ integrity sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==
dependencies:
"@babel/helper-plugin-utils" "^7.24.8"
- "@babel/traverse" "^7.25.0"
+ "@babel/traverse" "^7.25.3"
"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.0":
version "7.25.0"
@@ -749,11 +644,11 @@
"@babel/plugin-syntax-export-namespace-from" "^7.8.3"
"@babel/plugin-transform-flow-strip-types@^7.16.0":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.7.tgz#ae454e62219288fbb734541ab00389bfb13c063e"
- integrity sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz#b3aa251db44959b7a7c82abcd6b4225dec7d2258"
+ integrity sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==
dependencies:
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-plugin-utils" "^7.24.8"
"@babel/plugin-syntax-flow" "^7.24.7"
"@babel/plugin-transform-for-of@^7.24.7":
@@ -764,7 +659,7 @@
"@babel/helper-plugin-utils" "^7.24.7"
"@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
-"@babel/plugin-transform-function-name@^7.25.0":
+"@babel/plugin-transform-function-name@^7.25.1":
version "7.25.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz#b85e773097526c1a4fc4ba27322748643f26fc37"
integrity sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==
@@ -781,12 +676,12 @@
"@babel/helper-plugin-utils" "^7.24.7"
"@babel/plugin-syntax-json-strings" "^7.8.3"
-"@babel/plugin-transform-literals@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz#36b505c1e655151a9d7607799a9988fc5467d06c"
- integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==
+"@babel/plugin-transform-literals@^7.25.2":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz#deb1ad14fc5490b9a65ed830e025bca849d8b5f3"
+ integrity sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==
dependencies:
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-plugin-utils" "^7.24.8"
"@babel/plugin-transform-logical-assignment-operators@^7.24.7":
version "7.24.7"
@@ -965,15 +860,15 @@
"@babel/helper-plugin-utils" "^7.24.7"
"@babel/plugin-transform-react-jsx@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz#17cd06b75a9f0e2bd076503400e7c4b99beedac4"
- integrity sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz#e37e8ebfa77e9f0b16ba07fadcb6adb47412227a"
+ integrity sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.24.7"
"@babel/helper-module-imports" "^7.24.7"
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-plugin-utils" "^7.24.8"
"@babel/plugin-syntax-jsx" "^7.24.7"
- "@babel/types" "^7.24.7"
+ "@babel/types" "^7.25.2"
"@babel/plugin-transform-react-pure-annotations@^7.24.7":
version "7.24.7"
@@ -1047,13 +942,14 @@
"@babel/helper-plugin-utils" "^7.24.8"
"@babel/plugin-transform-typescript@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz#b006b3e0094bf0813d505e0c5485679eeaf4a881"
- integrity sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz#237c5d10de6d493be31637c6b9fa30b6c5461add"
+ integrity sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==
dependencies:
"@babel/helper-annotate-as-pure" "^7.24.7"
- "@babel/helper-create-class-features-plugin" "^7.24.7"
- "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/helper-create-class-features-plugin" "^7.25.0"
+ "@babel/helper-plugin-utils" "^7.24.8"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
"@babel/plugin-syntax-typescript" "^7.24.7"
"@babel/plugin-transform-unicode-escapes@^7.24.7":
@@ -1087,16 +983,16 @@
"@babel/helper-create-regexp-features-plugin" "^7.24.7"
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/preset-env@^7.16.4", "@babel/preset-env@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.0.tgz#3fe92e470311e91478129efda101816c680f0479"
- integrity sha512-vYAA8PrCOeZfG4D87hmw1KJ1BPubghXP1e2MacRFwECGNKL76dkA38JEwYllbvQCpf/kLxsTtir0b8MtxKoVCw==
+"@babel/preset-env@^7.16.4", "@babel/preset-env@^7.24.3":
+ version "7.25.3"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c"
+ integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==
dependencies:
- "@babel/compat-data" "^7.25.0"
- "@babel/helper-compilation-targets" "^7.24.8"
+ "@babel/compat-data" "^7.25.2"
+ "@babel/helper-compilation-targets" "^7.25.2"
"@babel/helper-plugin-utils" "^7.24.8"
"@babel/helper-validator-option" "^7.24.8"
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.0"
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.3"
"@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.0"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.0"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7"
@@ -1137,9 +1033,9 @@
"@babel/plugin-transform-exponentiation-operator" "^7.24.7"
"@babel/plugin-transform-export-namespace-from" "^7.24.7"
"@babel/plugin-transform-for-of" "^7.24.7"
- "@babel/plugin-transform-function-name" "^7.25.0"
+ "@babel/plugin-transform-function-name" "^7.25.1"
"@babel/plugin-transform-json-strings" "^7.24.7"
- "@babel/plugin-transform-literals" "^7.24.7"
+ "@babel/plugin-transform-literals" "^7.25.2"
"@babel/plugin-transform-logical-assignment-operators" "^7.24.7"
"@babel/plugin-transform-member-expression-literals" "^7.24.7"
"@babel/plugin-transform-modules-amd" "^7.24.7"
@@ -1213,23 +1109,14 @@
resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.23.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12"
- integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==
+"@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
+ version "7.25.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb"
+ integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==
dependencies:
regenerator-runtime "^0.14.0"
-"@babel/template@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315"
- integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==
- dependencies:
- "@babel/code-frame" "^7.24.7"
- "@babel/parser" "^7.24.7"
- "@babel/types" "^7.24.7"
-
-"@babel/template@^7.25.0":
+"@babel/template@^7.24.7", "@babel/template@^7.25.0":
version "7.25.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a"
integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==
@@ -1238,64 +1125,29 @@
"@babel/parser" "^7.25.0"
"@babel/types" "^7.25.0"
-"@babel/traverse@^7.21.4", "@babel/traverse@^7.24.7":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5"
- integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==
- dependencies:
- "@babel/code-frame" "^7.24.7"
- "@babel/generator" "^7.24.7"
- "@babel/helper-environment-visitor" "^7.24.7"
- "@babel/helper-function-name" "^7.24.7"
- "@babel/helper-hoist-variables" "^7.24.7"
- "@babel/helper-split-export-declaration" "^7.24.7"
- "@babel/parser" "^7.24.7"
- "@babel/types" "^7.24.7"
- debug "^4.3.1"
- globals "^11.1.0"
-
-"@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1":
- version "7.25.1"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.1.tgz#64dbc31effc5f3fa3cf10d19df0e6310214743f5"
- integrity sha512-LrHHoWq08ZpmmFqBAzN+hUdWwy5zt7FGa/hVwMcOqW6OVtwqaoD5utfuGYU87JYxdZgLUvktAsn37j/sYR9siA==
+"@babel/traverse@^7.21.4", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3":
+ version "7.25.3"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490"
+ integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==
dependencies:
"@babel/code-frame" "^7.24.7"
"@babel/generator" "^7.25.0"
- "@babel/parser" "^7.25.0"
+ "@babel/parser" "^7.25.3"
"@babel/template" "^7.25.0"
- "@babel/types" "^7.25.0"
+ "@babel/types" "^7.25.2"
debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.4", "@babel/types@^7.24.7", "@babel/types@^7.4.4":
- version "7.24.7"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2"
- integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==
- dependencies:
- "@babel/helper-string-parser" "^7.24.7"
- "@babel/helper-validator-identifier" "^7.24.7"
- to-fast-properties "^2.0.0"
-
-"@babel/types@^7.24.8", "@babel/types@^7.25.0":
- version "7.25.0"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.0.tgz#e6e3656c581f28da8452ed4f69e38008ec0ba41b"
- integrity sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==
+"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.4", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.4.4":
+ version "7.25.2"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125"
+ integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==
dependencies:
"@babel/helper-string-parser" "^7.24.8"
"@babel/helper-validator-identifier" "^7.24.7"
to-fast-properties "^2.0.0"
-"@codemirror/autocomplete@^6.0.0":
- version "6.16.2"
- resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.16.2.tgz#ac4e191cd599503e45f35e97366b432d30b8f37a"
- integrity sha512-MjfDrHy0gHKlPWsvSsikhO1+BOh+eBHNgfH1OXs1+DAf30IonQldgMM3kxLDTG9ktE7kDLaA1j/l7KMPA4KNfw==
- dependencies:
- "@codemirror/language" "^6.0.0"
- "@codemirror/state" "^6.0.0"
- "@codemirror/view" "^6.17.0"
- "@lezer/common" "^1.0.0"
-
-"@codemirror/autocomplete@^6.17.0":
+"@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.17.0":
version "6.17.0"
resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.17.0.tgz#24ff5fc37fd91f6439df6f4ff9c8e910cde1b053"
integrity sha512-fdfj6e6ZxZf8yrkMHUSJJir7OJkHkZKaOZGzLWIYp2PZ3jd+d+UjG8zVPqJF6d3bKxkhvXTPan/UZ1t7Bqm0gA==
@@ -1327,16 +1179,7 @@
"@lezer/lr" "^1.0.0"
style-mod "^4.0.0"
-"@codemirror/lint@^6.0.0":
- version "6.8.0"
- resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.8.0.tgz#cf9067c7041c1f6c9f20bab411dac9323aab54f0"
- integrity sha512-lsFofvaw0lnPRJlQylNsC4IRt/1lI4OD/yYslrSGVndOJfStc58v+8p9dgGiD90ktOfL7OhBWns1ZETYgz0EJA==
- dependencies:
- "@codemirror/state" "^6.0.0"
- "@codemirror/view" "^6.0.0"
- crelt "^1.0.5"
-
-"@codemirror/lint@^6.8.1":
+"@codemirror/lint@^6.0.0", "@codemirror/lint@^6.8.1":
version "6.8.1"
resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.8.1.tgz#6427848815baaf68c08e98c7673b804d3d8c0e7f"
integrity sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==
@@ -1370,9 +1213,9 @@
"@lezer/highlight" "^1.0.0"
"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0":
- version "6.28.1"
- resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.28.1.tgz#566b89b0513ccfc4e5518a48f5d1962bc6ea5a66"
- integrity sha512-BUWr+zCJpMkA/u69HlJmR+YkV4yPpM81HeMkOMZuwFa8iM5uJdEPKAs1icIRZKkKmy0Ub1x9/G3PQLTXdpBxrQ==
+ version "6.29.1"
+ resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.29.1.tgz#9c6c6f8a15e12df1b7e9d136dcbf4ff90b81ef71"
+ integrity sha512-7r+DlO/QFwPqKp73uq5mmrS4TuLPUVotbNOKYzN3OLP5ScrOVXcm4g13/48b6ZXGhdmzMinzFYqH0vo+qihIkQ==
dependencies:
"@codemirror/state" "^6.4.0"
style-mod "^4.1.0"
@@ -1385,49 +1228,49 @@
dependencies:
"@jridgewell/trace-mapping" "0.3.9"
-"@csstools/color-helpers@^4.2.0":
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-4.2.0.tgz#e8629ca9dce03a3a309506e7892b7f862673cf85"
- integrity sha512-hJJrSBzbfGxUsaR6X4Bzd/FLx0F1ulKnR5ljY9AiXCtsR+H+zSWQDFWlKES1BRaVZTDHLpIIHS9K2o0h+JLlrg==
+"@csstools/color-helpers@^4.2.1":
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-4.2.1.tgz#da573554220ccb59757f12de62bf70c6b15645d4"
+ integrity sha512-CEypeeykO9AN7JWkr1OEOQb0HRzZlPWGwV0Ya6DuVgFdDi6g3ma/cPZ5ZPZM4AWQikDpq/0llnGGlIL+j8afzw==
-"@csstools/css-calc@^1.2.2":
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-1.2.2.tgz#bcb856e63ecc16a7508f43e77ea43ac5daaf2833"
- integrity sha512-0owrl7AruDRKAxoSIW8XzJdz7GnuW3AOj4rYLfmXsoKIX2ZZzttzGXoiC8n8V08X7wIBlEWWVB4C8fAN18+I6Q==
+"@csstools/css-calc@^1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-1.2.4.tgz#9d9fb0dca33666cf97659f8f2c343ed0210e0e73"
+ integrity sha512-tfOuvUQeo7Hz+FcuOd3LfXVp+342pnWUJ7D2y8NUpu1Ww6xnTbHLpz018/y6rtbHifJ3iIEf9ttxXd8KG7nL0Q==
-"@csstools/css-color-parser@^2.0.2":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-2.0.2.tgz#bf60de403889a2726f964a1c9b1ea5593e889f5b"
- integrity sha512-Agx2YmxTcZ7TfB7KNZQ+iekaxbWSdblvtA35aTwE3KfuYyjOlCg3P4KGGdQF/cjm1pHWVSBo5duF/BRfZ8s07A==
+"@csstools/css-color-parser@^2.0.4":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-2.0.5.tgz#ce1fe52f23f35f37bea2cf61ac865115aa17880a"
+ integrity sha512-lRZSmtl+DSjok3u9hTWpmkxFZnz7stkbZxzKc08aDUsdrWwhSgWo8yq9rq9DaFUtbAyAq2xnH92fj01S+pwIww==
dependencies:
- "@csstools/color-helpers" "^4.2.0"
- "@csstools/css-calc" "^1.2.2"
+ "@csstools/color-helpers" "^4.2.1"
+ "@csstools/css-calc" "^1.2.4"
-"@csstools/css-parser-algorithms@^2.6.3":
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz#b5e7eb2bd2a42e968ef61484f1490a8a4148a8eb"
- integrity sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==
+"@csstools/css-parser-algorithms@^2.7.1":
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz#6d93a8f7d8aeb7cd9ed0868f946e46f021b6aa70"
+ integrity sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==
-"@csstools/css-tokenizer@^2.3.1":
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz#3d47e101ad48d815a4bdce8159fb5764f087f17a"
- integrity sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==
+"@csstools/css-tokenizer@^2.4.1":
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz#1d8b2e200197cf5f35ceb07ca2dade31f3a00ae8"
+ integrity sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==
"@csstools/postcss-oklab-function@^3.0.16":
- version "3.0.16"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.16.tgz#c7ae792fb831c935aca3e7aec7c61ff357814995"
- integrity sha512-zm8nND+EraZrmbO4mgcT8FrJrAQUfWNfMmbV5uTCpWtAcO5ycX3E3bO8T1TjczKYRxC5QMM/91n9YExYCF4Mvw==
+ version "3.0.19"
+ resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.19.tgz#3bd0719914780fb53558af11958d0f4e6d2f952e"
+ integrity sha512-e3JxXmxjU3jpU7TzZrsNqSX4OHByRC3XjItV3Ieo/JEQmLg5rdOL4lkv/1vp27gXemzfNt44F42k/pn0FpE21Q==
dependencies:
- "@csstools/css-color-parser" "^2.0.2"
- "@csstools/css-parser-algorithms" "^2.6.3"
- "@csstools/css-tokenizer" "^2.3.1"
- "@csstools/postcss-progressive-custom-properties" "^3.2.0"
+ "@csstools/css-color-parser" "^2.0.4"
+ "@csstools/css-parser-algorithms" "^2.7.1"
+ "@csstools/css-tokenizer" "^2.4.1"
+ "@csstools/postcss-progressive-custom-properties" "^3.3.0"
"@csstools/utilities" "^1.0.0"
-"@csstools/postcss-progressive-custom-properties@^3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-3.2.0.tgz#811da8616938e8148a7c4fb40c26e30bf94d4ceb"
- integrity sha512-BZlirVxCRgKlE7yVme+Xvif72eTn1MYXj8oZ4Knb+jwaH4u3AN1DjbhM7j86RP5vvuAOexJ4JwfifYYKWMN/QQ==
+"@csstools/postcss-progressive-custom-properties@^3.3.0":
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-3.3.0.tgz#20177d3fc61d8f170c4ee1686f3d2ab6eec27bbb"
+ integrity sha512-W2oV01phnILaRGYPmGFlL2MT/OgYjQDrL9sFlbdikMFi6oQkFki9B86XqEWR7HCsTZFVq7dbzr/o71B75TKkGg==
dependencies:
postcss-value-parser "^4.2.0"
@@ -1436,6 +1279,386 @@
resolved "https://registry.yarnpkg.com/@csstools/utilities/-/utilities-1.0.0.tgz#42f3c213f2fb929324d465684ab9f46a0febd4bb"
integrity sha512-tAgvZQe/t2mlvpNosA4+CkMiZ2azISW5WPAcdSalZlEjQvUfghHxfQcrCiK/7/CrfAWVxyM88kGFYO82heIGDg==
+"@electron-forge/cli@^7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/cli/-/cli-7.4.0.tgz#db16f4bc678d1f6cec8890cdf86041e9c8336350"
+ integrity sha512-a+zZv3ja/IxkJzNyx4sOHSZv6DPV85S0PEVF6pcRjUpbDL5r+DxjRFsNc0Nq4UIWyFm1nw7RWoPdd9uDst4Tvg==
+ dependencies:
+ "@electron-forge/core" "7.4.0"
+ "@electron-forge/shared-types" "7.4.0"
+ "@electron/get" "^3.0.0"
+ chalk "^4.0.0"
+ commander "^4.1.1"
+ debug "^4.3.1"
+ fs-extra "^10.0.0"
+ listr2 "^7.0.2"
+ semver "^7.2.1"
+
+"@electron-forge/core-utils@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/core-utils/-/core-utils-7.4.0.tgz#d8137a12ec57593e38f0572fa58c7f9c702e1145"
+ integrity sha512-9RLG0F9SX466TpkaTcW+V15KmnGuTpmr7NKMRlngtHXmnkBUJz4Mxp1x33WZLgL90dJrxrRgHSfVBtA4lstDPw==
+ dependencies:
+ "@electron-forge/shared-types" "7.4.0"
+ "@electron/rebuild" "^3.2.10"
+ "@malept/cross-spawn-promise" "^2.0.0"
+ chalk "^4.0.0"
+ debug "^4.3.1"
+ find-up "^5.0.0"
+ fs-extra "^10.0.0"
+ log-symbols "^4.0.0"
+ semver "^7.2.1"
+ yarn-or-npm "^3.0.1"
+
+"@electron-forge/core@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/core/-/core-7.4.0.tgz#8d8bdbe2d0341fbb6c53a6481d188115594b31a5"
+ integrity sha512-pYHKpB2CKeQgWsb+gox+FPkEvP+6Q2zGj2eZtgZRtKppoWIXrHIpOtcm6FllJ/gZ5u4AsQzVIYReAHGaBa0osw==
+ dependencies:
+ "@electron-forge/core-utils" "7.4.0"
+ "@electron-forge/maker-base" "7.4.0"
+ "@electron-forge/plugin-base" "7.4.0"
+ "@electron-forge/publisher-base" "7.4.0"
+ "@electron-forge/shared-types" "7.4.0"
+ "@electron-forge/template-base" "7.4.0"
+ "@electron-forge/template-vite" "7.4.0"
+ "@electron-forge/template-vite-typescript" "7.4.0"
+ "@electron-forge/template-webpack" "7.4.0"
+ "@electron-forge/template-webpack-typescript" "7.4.0"
+ "@electron-forge/tracer" "7.4.0"
+ "@electron/get" "^3.0.0"
+ "@electron/packager" "^18.3.1"
+ "@electron/rebuild" "^3.2.10"
+ "@malept/cross-spawn-promise" "^2.0.0"
+ chalk "^4.0.0"
+ debug "^4.3.1"
+ fast-glob "^3.2.7"
+ filenamify "^4.1.0"
+ find-up "^5.0.0"
+ fs-extra "^10.0.0"
+ got "^11.8.5"
+ interpret "^3.1.1"
+ listr2 "^7.0.2"
+ lodash "^4.17.20"
+ log-symbols "^4.0.0"
+ node-fetch "^2.6.7"
+ progress "^2.0.3"
+ rechoir "^0.8.0"
+ resolve-package "^1.0.1"
+ semver "^7.2.1"
+ source-map-support "^0.5.13"
+ sudo-prompt "^9.1.1"
+ username "^5.1.0"
+ yarn-or-npm "^3.0.1"
+
+"@electron-forge/maker-base@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/maker-base/-/maker-base-7.4.0.tgz#28e0ef3a06241a313e1f74e193c8073d7344a4eb"
+ integrity sha512-LwWS4VPdwjISl1KpLhmM1Qr1M3sRTTQ/RsX+GlFd7cQ1W/FsgxMjaTG4Od1d+a5CGVTh3s6X2g99TSUfxjOveg==
+ dependencies:
+ "@electron-forge/shared-types" "7.4.0"
+ fs-extra "^10.0.0"
+ which "^2.0.2"
+
+"@electron-forge/maker-deb@^7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/maker-deb/-/maker-deb-7.4.0.tgz#7787f525ab8c7ddcc3e9665e60d704179a92848a"
+ integrity sha512-npWea3IpGeu96xNqJpsCOYX6V4E+HY6u/okeTUzUOMX96UteT14MecdUefMam158glRTX84k2ryh7WcBoOa4mg==
+ dependencies:
+ "@electron-forge/maker-base" "7.4.0"
+ "@electron-forge/shared-types" "7.4.0"
+ optionalDependencies:
+ electron-installer-debian "^3.2.0"
+
+"@electron-forge/maker-rpm@^7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/maker-rpm/-/maker-rpm-7.4.0.tgz#135b7c4b621048ce565b3c92a7577915b43ab371"
+ integrity sha512-N64Yh/K/91GzIk28T1jKsCGgYaquDuhXcEJW+TkVyP5tPZ9aTz9SjXLBxAg8WhcroArAZEsVyPOFKthmFzAUuA==
+ dependencies:
+ "@electron-forge/maker-base" "7.4.0"
+ "@electron-forge/shared-types" "7.4.0"
+ optionalDependencies:
+ electron-installer-redhat "^3.2.0"
+
+"@electron-forge/maker-squirrel@^7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/maker-squirrel/-/maker-squirrel-7.4.0.tgz#982f3a7ad9d45258de8f78133eefdd79c90f870e"
+ integrity sha512-mCQyufnSNfjffiKho59ZqVg4W601zGOl6h01OyfDwjOU/G4iQtpnnDEOXGe26q7OVT5ORb1WDnfyGgBeJ6Ge7g==
+ dependencies:
+ "@electron-forge/maker-base" "7.4.0"
+ "@electron-forge/shared-types" "7.4.0"
+ fs-extra "^10.0.0"
+ optionalDependencies:
+ electron-winstaller "^5.3.0"
+
+"@electron-forge/maker-zip@^7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/maker-zip/-/maker-zip-7.4.0.tgz#e82ab6174344c43eb9a30b2fb5e2c2e32de2113d"
+ integrity sha512-UGbMdpuK/P29x1FFRWNOs3bNz+7QNFWVWyTM5hcWqib66cNuUmoaPifQyuwW2POIrIohrxlzLK87/i9Zc8g4dA==
+ dependencies:
+ "@electron-forge/maker-base" "7.4.0"
+ "@electron-forge/shared-types" "7.4.0"
+ cross-zip "^4.0.0"
+ fs-extra "^10.0.0"
+ got "^11.8.5"
+
+"@electron-forge/plugin-auto-unpack-natives@^7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/plugin-auto-unpack-natives/-/plugin-auto-unpack-natives-7.4.0.tgz#34382b91d45691824f26503af7b5f585af7ee3f1"
+ integrity sha512-jJ/v2blH32bcvdlJbeeW/yO99K9SduW8yrS7zuFN6y+B1cmzLd+S7L8oCcOghFDMAlYjQaBlnCe/nMJbT9mN4g==
+ dependencies:
+ "@electron-forge/plugin-base" "7.4.0"
+ "@electron-forge/shared-types" "7.4.0"
+
+"@electron-forge/plugin-base@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/plugin-base/-/plugin-base-7.4.0.tgz#1c7743a528b1ec3e7a92580870c23398c5a5526f"
+ integrity sha512-LcTNtEc2YaWvhhqWVIfdJ+J0/krSgc2dqYAHhOH2aLUSm9End3dKO/PZ1Y6DPsiPiJKHnSLBJ/XBN/16NY4Sjw==
+ dependencies:
+ "@electron-forge/shared-types" "7.4.0"
+
+"@electron-forge/plugin-fuses@^7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/plugin-fuses/-/plugin-fuses-7.4.0.tgz#3a3b78bf3c5d2b2d445825b05bce145d116df792"
+ integrity sha512-LKcyIaO0sUkzZdOB1PySjG1R9KAl5Vi453ZQcambBI7RpZtPKozluNd0zlXey1cf7ycTwhzvmrI6ss3LHQyjvw==
+ dependencies:
+ "@electron-forge/plugin-base" "7.4.0"
+ "@electron-forge/shared-types" "7.4.0"
+
+"@electron-forge/plugin-vite@^7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/plugin-vite/-/plugin-vite-7.4.0.tgz#66b0154269205a0c4e70200b5f5f410833beea40"
+ integrity sha512-GZqBUsyNH0XCvQlBKMS0aOJM6PX80irijgPR9Lfl6ctYIuKTo+82td+nIK8Fef/qSDUEt/U1f4Qb9GfLfhRRig==
+ dependencies:
+ "@electron-forge/core-utils" "7.4.0"
+ "@electron-forge/plugin-base" "7.4.0"
+ "@electron-forge/shared-types" "7.4.0"
+ "@electron-forge/web-multi-logger" "7.4.0"
+ chalk "^4.0.0"
+ debug "^4.3.1"
+ fs-extra "^10.0.0"
+ listr2 "^7.0.2"
+
+"@electron-forge/publisher-base@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/publisher-base/-/publisher-base-7.4.0.tgz#6549fd4190e4134c0487b49251190ac2a3aa2f1a"
+ integrity sha512-PiJk4RfaC55SnVnteLW2ZIQNM9DpGOi6YoUn5t8i9UcVp2rFIdya7bJY/b9u1hwubm4d5+TdypMVEuJjM44CJQ==
+ dependencies:
+ "@electron-forge/shared-types" "7.4.0"
+
+"@electron-forge/shared-types@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/shared-types/-/shared-types-7.4.0.tgz#1355b99e77d66f3e568b7b09fb9aa107d2f856f3"
+ integrity sha512-5Ehy6enUjBaU08odf9u9TOhmOVXlqobzMvKUixtkdAWgV1XZAUJmn+p21xhj0IkO92MQiXMGv66w9pDNjRT8uQ==
+ dependencies:
+ "@electron-forge/tracer" "7.4.0"
+ "@electron/packager" "^18.3.1"
+ "@electron/rebuild" "^3.2.10"
+ listr2 "^7.0.2"
+
+"@electron-forge/template-base@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/template-base/-/template-base-7.4.0.tgz#ef2e2fd9f3632860d7ad192dc4a2e09e98463d05"
+ integrity sha512-3YWdRSGzQfQPQkQxStn2wkJ/SuNGGKo9slwFJGvqMV+Pbx3/M/hYi9sMXOuaqVZgeaBp8Ap27yFPxaIIOC3vcA==
+ dependencies:
+ "@electron-forge/shared-types" "7.4.0"
+ "@malept/cross-spawn-promise" "^2.0.0"
+ debug "^4.3.1"
+ fs-extra "^10.0.0"
+ username "^5.1.0"
+
+"@electron-forge/template-vite-typescript@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/template-vite-typescript/-/template-vite-typescript-7.4.0.tgz#47dad54f526221dc1a726f394a12111715ae2888"
+ integrity sha512-wdByG807VWcUd81E6572b/G/Ki8gb+GrCIWxO7Cl3qBa+yNaU1sHhBwB1RyTbQy1r8ubSBtsWrRD1J/yzHKWoQ==
+ dependencies:
+ "@electron-forge/shared-types" "7.4.0"
+ "@electron-forge/template-base" "7.4.0"
+ fs-extra "^10.0.0"
+
+"@electron-forge/template-vite@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/template-vite/-/template-vite-7.4.0.tgz#612e38f3c6efb7c09bd7da49b62e1d93dfb7ce76"
+ integrity sha512-YPVyCGiBKmZPCxK/Bd2louV3PBcxI2nT2+tRKP+mlEHOWrxbZIfmZSR2lIAFvK/ALKlwUKROdmlwyi7ZcdT7JQ==
+ dependencies:
+ "@electron-forge/shared-types" "7.4.0"
+ "@electron-forge/template-base" "7.4.0"
+ fs-extra "^10.0.0"
+
+"@electron-forge/template-webpack-typescript@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-7.4.0.tgz#dd2eda23750423667fbcc4c916179d2cadbd3bd0"
+ integrity sha512-O5gwjNSGFNRdJWyiCtevcOBDPAMhgOPvLORh9qR1GcjyTutWwHWmZzycqH+MmkhpQPgrAYDEeipXcOQhSbzNZA==
+ dependencies:
+ "@electron-forge/shared-types" "7.4.0"
+ "@electron-forge/template-base" "7.4.0"
+ fs-extra "^10.0.0"
+
+"@electron-forge/template-webpack@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/template-webpack/-/template-webpack-7.4.0.tgz#31327a74e6ff0d1bf62540e85f09e406cd1659eb"
+ integrity sha512-W558AEGwQrwEtKIbIJPPs0LIsaC/1Vncj5NgqKehEMJjBb0KQq4hwBu/6dauQrfun4jRCOp7LV+OVrf5XPJ7QA==
+ dependencies:
+ "@electron-forge/shared-types" "7.4.0"
+ "@electron-forge/template-base" "7.4.0"
+ fs-extra "^10.0.0"
+
+"@electron-forge/tracer@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/tracer/-/tracer-7.4.0.tgz#b6cbff22e56f27ce1add18da07ea0301a774c580"
+ integrity sha512-F4jbnDn4yIZjmky1FZ6rgBKTM05AZQQfHkyJW2hdS4pDKJjdKAqWytoZKDi1/S6Cr6tN+DD0TFGD3V0i6HPHYQ==
+ dependencies:
+ chrome-trace-event "^1.0.3"
+
+"@electron-forge/web-multi-logger@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@electron-forge/web-multi-logger/-/web-multi-logger-7.4.0.tgz#13df3a84827d07fc41f53e83b8af3a639be2a03d"
+ integrity sha512-XHKs37q4S8BzH1lTKhuOFO6k4R7XdrsZfox+qlp4HpiYKw8yq4rcasB0zUO5YKZ2aTJ1t79X1jxSJb5qhImdHA==
+ dependencies:
+ express "^4.17.1"
+ express-ws "^5.0.2"
+ xterm "^4.9.0"
+ xterm-addon-fit "^0.5.0"
+ xterm-addon-search "^0.8.0"
+
+"@electron/asar@^3.2.1", "@electron/asar@^3.2.7":
+ version "3.2.10"
+ resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.10.tgz#615cf346b734b23cafa4e0603551010bd0e50aa8"
+ integrity sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==
+ dependencies:
+ commander "^5.0.0"
+ glob "^7.1.6"
+ minimatch "^3.0.4"
+
+"@electron/fuses@^1.8.0":
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/@electron/fuses/-/fuses-1.8.0.tgz#ad34d3cc4703b1258b83f6989917052cfc1490a0"
+ integrity sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==
+ dependencies:
+ chalk "^4.1.1"
+ fs-extra "^9.0.1"
+ minimist "^1.2.5"
+
+"@electron/get@^2.0.0":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.3.tgz#fba552683d387aebd9f3fcadbcafc8e12ee4f960"
+ integrity sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==
+ dependencies:
+ debug "^4.1.1"
+ env-paths "^2.2.0"
+ fs-extra "^8.1.0"
+ got "^11.8.5"
+ progress "^2.0.3"
+ semver "^6.2.0"
+ sumchecker "^3.0.1"
+ optionalDependencies:
+ global-agent "^3.0.0"
+
+"@electron/get@^3.0.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@electron/get/-/get-3.1.0.tgz#22c5a0bd917ab201badeb77bc4ad18cba54cb4ec"
+ integrity sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==
+ dependencies:
+ debug "^4.1.1"
+ env-paths "^2.2.0"
+ fs-extra "^8.1.0"
+ got "^11.8.5"
+ progress "^2.0.3"
+ semver "^6.2.0"
+ sumchecker "^3.0.1"
+ optionalDependencies:
+ global-agent "^3.0.0"
+
+"@electron/notarize@^2.1.0":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.3.2.tgz#20a52a961747be8542a35003380988a0d3fe15e6"
+ integrity sha512-zfayxCe19euNwRycCty1C7lF7snk9YwfRpB5M8GLr1a4ICH63znxaPNAubrMvj0yDvVozqfgsdYpXVUnpWBDpg==
+ dependencies:
+ debug "^4.1.1"
+ fs-extra "^9.0.1"
+ promise-retry "^2.0.1"
+
+"@electron/osx-sign@^1.0.5":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.3.1.tgz#faf7eeca7ca004a6be541dc4cf7a1bd59ec59b1c"
+ integrity sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==
+ dependencies:
+ compare-version "^0.1.2"
+ debug "^4.3.4"
+ fs-extra "^10.0.0"
+ isbinaryfile "^4.0.8"
+ minimist "^1.2.6"
+ plist "^3.0.5"
+
+"@electron/packager@^18.3.1":
+ version "18.3.3"
+ resolved "https://registry.yarnpkg.com/@electron/packager/-/packager-18.3.3.tgz#470aa1d7dbe16991917828f8aeb73c59eaee55a2"
+ integrity sha512-hGXzwbUdxv49XvlYwlVPC6W6j6WaXUAzKkYyyTeiwdhxvHFMfQSEJxVHsQpqMFzZZ7wrr7iqiokOFZ/qkgEzUQ==
+ dependencies:
+ "@electron/asar" "^3.2.1"
+ "@electron/get" "^3.0.0"
+ "@electron/notarize" "^2.1.0"
+ "@electron/osx-sign" "^1.0.5"
+ "@electron/universal" "^2.0.1"
+ "@electron/windows-sign" "^1.0.0"
+ debug "^4.0.1"
+ extract-zip "^2.0.0"
+ filenamify "^4.1.0"
+ fs-extra "^11.1.0"
+ galactus "^1.0.0"
+ get-package-info "^1.0.0"
+ junk "^3.1.0"
+ parse-author "^2.0.0"
+ plist "^3.0.0"
+ resedit "^2.0.0"
+ resolve "^1.1.6"
+ semver "^7.1.3"
+ yargs-parser "^21.1.1"
+
+"@electron/rebuild@^3.2.10":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.6.0.tgz#60211375a5f8541a71eb07dd2f97354ad0b2b96f"
+ integrity sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw==
+ dependencies:
+ "@malept/cross-spawn-promise" "^2.0.0"
+ chalk "^4.0.0"
+ debug "^4.1.1"
+ detect-libc "^2.0.1"
+ fs-extra "^10.0.0"
+ got "^11.7.0"
+ node-abi "^3.45.0"
+ node-api-version "^0.2.0"
+ node-gyp "^9.0.0"
+ ora "^5.1.0"
+ read-binary-file-arch "^1.0.6"
+ semver "^7.3.5"
+ tar "^6.0.5"
+ yargs "^17.0.1"
+
+"@electron/universal@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-2.0.1.tgz#7b070ab355e02957388f3dbd68e2c3cd08c448ae"
+ integrity sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==
+ dependencies:
+ "@electron/asar" "^3.2.7"
+ "@malept/cross-spawn-promise" "^2.0.0"
+ debug "^4.3.1"
+ dir-compare "^4.2.0"
+ fs-extra "^11.1.1"
+ minimatch "^9.0.3"
+ plist "^3.1.0"
+
+"@electron/windows-sign@^1.0.0", "@electron/windows-sign@^1.1.2":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@electron/windows-sign/-/windows-sign-1.1.3.tgz#52023d17d8f6c686d934f518be76736f6f2f0aef"
+ integrity sha512-OqVSdAe+/88fIjvTDWiy+5Ho1nXsiBhE5RTsIQ6M/zcxcDAEP2TlQCkOyusItnmzXRN+XTFaK9gKhiZ6KGyXQw==
+ dependencies:
+ cross-dirname "^0.1.0"
+ debug "^4.3.4"
+ fs-extra "^11.1.1"
+ minimist "^1.2.8"
+ postject "^1.0.0-alpha.6"
+
"@esbuild/aix-ppc64@0.21.5":
version "0.21.5"
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
@@ -1559,9 +1782,9 @@
eslint-visitor-keys "^3.3.0"
"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1":
- version "4.10.1"
- resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0"
- integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==
+ version "4.11.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae"
+ integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==
"@eslint/eslintrc@^2.1.4":
version "2.1.4"
@@ -1583,31 +1806,31 @@
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
-"@fortawesome/fontawesome-common-types@6.5.2":
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz#eaf2f5699f73cef198454ebc0c414e3688898179"
- integrity sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==
+"@fortawesome/fontawesome-common-types@6.6.0":
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz#31ab07ca6a06358c5de4d295d4711b675006163f"
+ integrity sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==
"@fortawesome/fontawesome-svg-core@^6.5.2":
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz#4b42de71e196039b0d5ccf88559b8044e3296c21"
- integrity sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz#2a24c32ef92136e98eae2ff334a27145188295ff"
+ integrity sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.5.2"
+ "@fortawesome/fontawesome-common-types" "6.6.0"
"@fortawesome/free-brands-svg-icons@^6.5.2":
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.2.tgz#bfca0cebd2c4713dc93244e1fa8b384f1f023587"
- integrity sha512-zi5FNYdmKLnEc0jc0uuHH17kz/hfYTg4Uei0wMGzcoCL/4d3WM3u1VMc0iGGa31HuhV5i7ZK8ZlTCQrHqRHSGQ==
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.6.0.tgz#2797f2cc66d21e7e47fa64e680b8835e8d30e825"
+ integrity sha512-1MPD8lMNW/earme4OQi1IFHtmHUwAKgghXlNwWi9GO7QkTfD+IIaYpIai4m2YJEzqfEji3jFHX1DZI5pbY/biQ==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.5.2"
+ "@fortawesome/fontawesome-common-types" "6.6.0"
"@fortawesome/free-solid-svg-icons@^6.4.2":
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz#9b40b077b27400a5e9fcbf2d15b986c7be69e9ca"
- integrity sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz#061751ca43be4c4d814f0adbda8f006164ec9f3b"
+ integrity sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.5.2"
+ "@fortawesome/fontawesome-common-types" "6.6.0"
"@fortawesome/react-fontawesome@^0.2.0":
version "0.2.2"
@@ -1616,6 +1839,11 @@
dependencies:
prop-types "^15.8.1"
+"@gar/promisify@^1.1.3":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
+ integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
+
"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0":
version "9.3.0"
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb"
@@ -1722,10 +1950,10 @@
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
-"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15":
- version "1.4.15"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
- integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
+ integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
"@jridgewell/trace-mapping@0.3.9":
version "0.3.9"
@@ -1743,11 +1971,6 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
-"@juggle/resize-observer@^3.3.1":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60"
- integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==
-
"@kittycad/lib@^0.0.70":
version "0.0.70"
resolved "https://registry.yarnpkg.com/@kittycad/lib/-/lib-0.0.70.tgz#398ec3b2385cef055bbd7c2681040f08b3751ac6"
@@ -1758,6 +1981,11 @@
ts-node "^10.9.1"
tslib "~2.4"
+"@leichtgewicht/ip-codec@^2.0.1":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1"
+ integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==
+
"@lezer/common@^1.0.0", "@lezer/common@^1.1.0":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.1.tgz#198b278b7869668e1bebbe687586e12a42731049"
@@ -1779,18 +2007,25 @@
"@lezer/common" "^1.0.0"
"@lezer/lr@^1.0.0", "@lezer/lr@^1.3.0", "@lezer/lr@^1.4.1":
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.1.tgz#fe25f051880a754e820b28148d90aa2a96b8bdd2"
- integrity sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw==
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.2.tgz#931ea3dea8e9de84e90781001dae30dea9ff1727"
+ integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==
dependencies:
"@lezer/common" "^1.0.0"
-"@ljharb/through@^2.3.11":
- version "2.3.13"
- resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.13.tgz#b7e4766e0b65aa82e529be945ab078de79874edc"
- integrity sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==
+"@malept/cross-spawn-promise@^1.0.0":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d"
+ integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==
dependencies:
- call-bind "^1.0.7"
+ cross-spawn "^7.0.1"
+
+"@malept/cross-spawn-promise@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz#d0772de1aa680a0bfb9ba2f32b4c828c7857cb9d"
+ integrity sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==
+ dependencies:
+ cross-spawn "^7.0.1"
"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
version "5.1.1-v1"
@@ -1820,52 +2055,33 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
+"@npmcli/fs@^2.1.0":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865"
+ integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==
+ dependencies:
+ "@gar/promisify" "^1.1.3"
+ semver "^7.3.5"
+
+"@npmcli/move-file@^2.0.0":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4"
+ integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==
+ dependencies:
+ mkdirp "^1.0.4"
+ rimraf "^3.0.2"
+
"@pkgjs/parseargs@^0.11.0":
version "0.11.0"
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
"@playwright/test@^1.45.1":
- version "1.45.1"
- resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.45.1.tgz#819b90fa43d17000fce5ebd127043fd661938b7a"
- integrity sha512-Wo1bWTzQvGA7LyKGIZc8nFSTFf2TkthGIFBR+QVNilvwouGzFd4PYukZe3rvf5PSqjHi1+1NyKSDZKcQWETzaA==
+ version "1.45.3"
+ resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.45.3.tgz#22e9c38b3081d6674b28c6e22f784087776c72e5"
+ integrity sha512-UKF4XsBfy+u3MFWEH44hva1Q8Da28G6RFtR2+5saw+jgAFQV5yYnB1fu68Mz7fO+5GJF3wgwAIs0UelU8TxFrA==
dependencies:
- playwright "1.45.1"
-
-"@promptbook/utils@0.50.0-10":
- version "0.50.0-10"
- resolved "https://registry.yarnpkg.com/@promptbook/utils/-/utils-0.50.0-10.tgz#a3bb2330461b5bc868382188688c88959143dc08"
- integrity sha512-Z94YoY/wcZb5m1QoXgmIC1rVeDguGK5bWmUTYdWCqh/LHVifRdJ1C+tBzS0h+HMOD0XzMjZhBQ/mBgTZ/QNW/g==
- dependencies:
- moment "2.30.1"
- prettier "2.8.1"
- spacetrim "0.11.25"
-
-"@puppeteer/browsers@1.4.6":
- version "1.4.6"
- resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-1.4.6.tgz#1f70fd23d5d2ccce9d29b038e5039d7a1049ca77"
- integrity sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==
- dependencies:
- debug "4.3.4"
- extract-zip "2.0.1"
- progress "2.0.3"
- proxy-agent "6.3.0"
- tar-fs "3.0.4"
- unbzip2-stream "1.4.3"
- yargs "17.7.1"
-
-"@puppeteer/browsers@^1.6.0":
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-1.9.1.tgz#384ee8b09786f0e8f62b1925e4c492424cb549ee"
- integrity sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==
- dependencies:
- debug "4.3.4"
- extract-zip "2.0.1"
- progress "2.0.3"
- proxy-agent "6.3.1"
- tar-fs "3.0.4"
- unbzip2-stream "1.4.3"
- yargs "17.7.2"
+ playwright "1.45.3"
"@react-hook/latest@^1.0.2":
version "1.0.3"
@@ -1878,18 +2094,17 @@
integrity sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==
"@react-hook/resize-observer@^2.0.1":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@react-hook/resize-observer/-/resize-observer-2.0.1.tgz#b1b090be25c74d89b371183e5e2bc0d03f94986f"
- integrity sha512-9PCX9grWfxdPizY8ohr+X4IkV1JhGMWr2Nm4ngbg6IcAIv0WBs7YoJcNBqYl22OqPHr5eOMItGcStZrmj2mbmQ==
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@react-hook/resize-observer/-/resize-observer-2.0.2.tgz#f49fe4e6b9de86c583d136df7fae430684528092"
+ integrity sha512-tzKKzxNpfE5TWmxuv+5Ae3IF58n0FQgQaWJmcbYkjXTRZATXxClnTprQ2uuYygYTpu1pqbBskpwMpj6jpT1djA==
dependencies:
- "@juggle/resize-observer" "^3.3.1"
"@react-hook/latest" "^1.0.2"
"@react-hook/passive-layout-effect" "^1.2.0"
-"@remix-run/router@1.16.1":
- version "1.16.1"
- resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.16.1.tgz#73db3c48b975eeb06d0006481bde4f5f2d17d1cd"
- integrity sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==
+"@remix-run/router@1.19.0":
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.19.0.tgz#745dbffbce67f05386d57ca22c51dfd85c979593"
+ integrity sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==
"@replit/codemirror-interact@^6.3.1":
version "6.3.1"
@@ -1906,90 +2121,90 @@
estree-walker "^2.0.1"
picomatch "^2.2.2"
-"@rollup/rollup-android-arm-eabi@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz#bbd0e616b2078cd2d68afc9824d1fadb2f2ffd27"
- integrity sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==
+"@rollup/rollup-android-arm-eabi@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.2.tgz#6b991cb44bf69e50163528ea85bed545330ba821"
+ integrity sha512-OHflWINKtoCFSpm/WmuQaWW4jeX+3Qt3XQDepkkiFTsoxFc5BpF3Z5aDxFZgBqRjO6ATP5+b1iilp4kGIZVWlA==
-"@rollup/rollup-android-arm64@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz#97255ef6384c5f73f4800c0de91f5f6518e21203"
- integrity sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==
+"@rollup/rollup-android-arm64@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.2.tgz#5d3c8c2f9742d62ba258cc378bd2d4720f0c431c"
+ integrity sha512-k0OC/b14rNzMLDOE6QMBCjDRm3fQOHAL8Ldc9bxEWvMo4Ty9RY6rWmGetNTWhPo+/+FNd1lsQYRd0/1OSix36A==
-"@rollup/rollup-darwin-arm64@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz#b6dd74e117510dfe94541646067b0545b42ff096"
- integrity sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==
+"@rollup/rollup-darwin-arm64@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.2.tgz#8eac8682a34a705bb6a57eb3e739fd6bbedfabed"
+ integrity sha512-IIARRgWCNWMTeQH+kr/gFTHJccKzwEaI0YSvtqkEBPj7AshElFq89TyreKNFAGh5frLfDCbodnq+Ye3dqGKPBw==
-"@rollup/rollup-darwin-x64@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz#e07d76de1cec987673e7f3d48ccb8e106d42c05c"
- integrity sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==
+"@rollup/rollup-darwin-x64@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.2.tgz#70a9953fc624bd7f645901f4250f6b5807ac7e92"
+ integrity sha512-52udDMFDv54BTAdnw+KXNF45QCvcJOcYGl3vQkp4vARyrcdI/cXH8VXTEv/8QWfd6Fru8QQuw1b2uNersXOL0g==
-"@rollup/rollup-linux-arm-gnueabihf@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz#9f1a6d218b560c9d75185af4b8bb42f9f24736b8"
- integrity sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==
+"@rollup/rollup-linux-arm-gnueabihf@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.2.tgz#8f6c4ff4c4972413ff94345080380d4e3caa3c69"
+ integrity sha512-r+SI2t8srMPYZeoa1w0o/AfoVt9akI1ihgazGYPQGRilVAkuzMGiTtexNZkrPkQsyFrvqq/ni8f3zOnHw4hUbA==
-"@rollup/rollup-linux-arm-musleabihf@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz#53618b92e6ffb642c7b620e6e528446511330549"
- integrity sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==
+"@rollup/rollup-linux-arm-musleabihf@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.2.tgz#5d3c0fe5ea5ddf2feb511b3cb031df17eaa7e33d"
+ integrity sha512-+tYiL4QVjtI3KliKBGtUU7yhw0GMcJJuB9mLTCEauHEsqfk49gtUBXGtGP3h1LW8MbaTY6rSFIQV1XOBps1gBA==
-"@rollup/rollup-linux-arm64-gnu@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz#99a7ba5e719d4f053761a698f7b52291cefba577"
- integrity sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==
+"@rollup/rollup-linux-arm64-gnu@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.2.tgz#b7f104388b2f5624d9f8adfff10ba59af8ab8ed1"
+ integrity sha512-OR5DcvZiYN75mXDNQQxlQPTv4D+uNCUsmSCSY2FolLf9W5I4DSoJyg7z9Ea3TjKfhPSGgMJiey1aWvlWuBzMtg==
-"@rollup/rollup-linux-arm64-musl@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz#f53db99a45d9bc00ce94db8a35efa7c3c144a58c"
- integrity sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==
+"@rollup/rollup-linux-arm64-musl@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.2.tgz#6d5ca6d3904309bec285ea5202d589cebb93dee4"
+ integrity sha512-Hw3jSfWdUSauEYFBSFIte6I8m6jOj+3vifLg8EU3lreWulAUpch4JBjDMtlKosrBzkr0kwKgL9iCfjA8L3geoA==
-"@rollup/rollup-linux-powerpc64le-gnu@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz#cbb0837408fe081ce3435cf3730e090febafc9bf"
- integrity sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==
+"@rollup/rollup-linux-powerpc64le-gnu@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.2.tgz#4df9be1396ea9eb0ca99fd0f2e858008d7f063e3"
+ integrity sha512-rhjvoPBhBwVnJRq/+hi2Q3EMiVF538/o9dBuj9TVLclo9DuONqt5xfWSaE6MYiFKpo/lFPJ/iSI72rYWw5Hc7w==
-"@rollup/rollup-linux-riscv64-gnu@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz#8ed09c1d1262ada4c38d791a28ae0fea28b80cc9"
- integrity sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==
+"@rollup/rollup-linux-riscv64-gnu@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.2.tgz#80d63c5562915a2f8616a04251fcaee0218112b0"
+ integrity sha512-EAz6vjPwHHs2qOCnpQkw4xs14XJq84I81sDRGPEjKPFVPBw7fwvtwhVjcZR6SLydCv8zNK8YGFblKWd/vRmP8g==
-"@rollup/rollup-linux-s390x-gnu@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz#938138d3c8e0c96f022252a28441dcfb17afd7ec"
- integrity sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==
+"@rollup/rollup-linux-s390x-gnu@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.2.tgz#ef62e9bc5cc3b84fcfe96ec0a42d1989691217b3"
+ integrity sha512-IJSUX1xb8k/zN9j2I7B5Re6B0NNJDJ1+soezjNojhT8DEVeDNptq2jgycCOpRhyGj0+xBn7Cq+PK7Q+nd2hxLA==
-"@rollup/rollup-linux-x64-gnu@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz#1a7481137a54740bee1ded4ae5752450f155d942"
- integrity sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==
+"@rollup/rollup-linux-x64-gnu@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.2.tgz#6a275282a0080fee98ddd9fda0de23c4c6bafd48"
+ integrity sha512-OgaToJ8jSxTpgGkZSkwKE+JQGihdcaqnyHEFOSAU45utQ+yLruE1dkonB2SDI8t375wOKgNn8pQvaWY9kPzxDQ==
-"@rollup/rollup-linux-x64-musl@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz#f1186afc601ac4f4fc25fac4ca15ecbee3a1874d"
- integrity sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==
+"@rollup/rollup-linux-x64-musl@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.2.tgz#64f0c704107e6b45b26dd8c2e1ff64246e4a1251"
+ integrity sha512-5V3mPpWkB066XZZBgSd1lwozBk7tmOkKtquyCJ6T4LN3mzKENXyBwWNQn8d0Ci81hvlBw5RoFgleVpL6aScLYg==
-"@rollup/rollup-win32-arm64-msvc@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz#ed6603e93636a96203c6915be4117245c1bd2daf"
- integrity sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==
+"@rollup/rollup-win32-arm64-msvc@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.2.tgz#bada17b0c5017ff58d0feba401c43ff5a646c693"
+ integrity sha512-ayVstadfLeeXI9zUPiKRVT8qF55hm7hKa+0N1V6Vj+OTNFfKSoUxyZvzVvgtBxqSb5URQ8sK6fhwxr9/MLmxdA==
-"@rollup/rollup-win32-ia32-msvc@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz#14e0b404b1c25ebe6157a15edb9c46959ba74c54"
- integrity sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==
+"@rollup/rollup-win32-ia32-msvc@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.2.tgz#a716d862f6ac39d88bdb825e27f63aeb0387cd66"
+ integrity sha512-Mda7iG4fOLHNsPqjWSjANvNZYoW034yxgrndof0DwCy0D3FvTjeNo+HGE6oGWgvcLZNLlcp0hLEFcRs+UGsMLg==
-"@rollup/rollup-win32-x64-msvc@4.18.0":
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz#5d694d345ce36b6ecf657349e03eb87297e68da4"
- integrity sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==
+"@rollup/rollup-win32-x64-msvc@4.19.2":
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.2.tgz#d67206c5f2e4b2832ce360bbbde194e96d16dc51"
+ integrity sha512-DPi0ubYhSow/00YqmG1jWm3qt1F8aXziHc/UNy8bo9cpCacqhuWu+iSq/fp2SyEQK7iYTZ60fBU9cat3MXTjIQ==
"@rushstack/eslint-patch@^1.1.0":
- version "1.10.3"
- resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20"
- integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==
+ version "1.10.4"
+ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz#427d5549943a9c6fce808e39ea64dbe60d4047f1"
+ integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==
"@sideway/address@^4.1.5":
version "4.1.5"
@@ -2013,154 +2228,34 @@
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
-"@sindresorhus/is@^5.2.0":
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668"
- integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==
+"@sindresorhus/is@^4.0.0":
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
+ integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
-"@szmarczak/http-timer@^5.0.1":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a"
- integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==
+"@szmarczak/http-timer@^4.0.5":
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807"
+ integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==
dependencies:
- defer-to-connect "^2.0.1"
+ defer-to-connect "^2.0.0"
"@tanstack/react-virtual@^3.0.0-beta.60":
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/@tanstack/react-virtual/-/react-virtual-3.5.1.tgz#1ce466f530a10f781871360ed2bf7ff83e664f85"
- integrity sha512-jIsuhfgy8GqA67PdWqg73ZB2LFE+HD9hjWL1L6ifEIZVyZVAKpYmgUG4WsKQ005aEyImJmbuimPiEvc57IY0Aw==
+ version "3.8.4"
+ resolved "https://registry.yarnpkg.com/@tanstack/react-virtual/-/react-virtual-3.8.4.tgz#7f5d8a71f525976c98be46fecd3dbee2d90b5dac"
+ integrity sha512-Dq0VQr3QlTS2qL35g360QaJWBt7tCn/0xw4uZ0dHXPLO1Ak4Z4nVX4vuj1Npg1b/jqNMDToRtR5OIxM2NXRBWg==
dependencies:
- "@tanstack/virtual-core" "3.5.1"
+ "@tanstack/virtual-core" "3.8.4"
-"@tanstack/virtual-core@3.5.1":
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.5.1.tgz#f519149bce9156d0e7954b9531df15f446f2fc12"
- integrity sha512-046+AUSiDru/V9pajE1du8WayvBKeCvJ2NmKPy/mR8/SbKKrqmSbj7LJBfXE+nSq4f5TBXvnCzu0kcYebI9WdQ==
-
-"@tauri-apps/api@2.0.0-beta.14", "@tauri-apps/api@^2.0.0-beta.14":
- version "2.0.0-beta.14"
- resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-2.0.0-beta.14.tgz#8c1c65c07559cd29c5103a99e0abe5331cc2246f"
- integrity sha512-YLYgHqdwWswr4Y70+hRzaLD6kLIUgHhE3shLXNquPiTaQ9+cX3Q2dB0AFfqsua6NXYFNe7LfkmMzaqEzqv3yQg==
-
-"@tauri-apps/cli-darwin-arm64@2.0.0-beta.13":
- version "2.0.0-beta.13"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.0.0-beta.13.tgz#4926b310f5c39f967753c1c6b9aa20916011ebb6"
- integrity sha512-/ibwIj1n2TQSXazGr79K4sfiZ85JndGXjMVN5QD9M8AkhpqgiSM+QT+qfIb+Y8p/RY9v1w1h3+zKMJXjhIppbA==
-
-"@tauri-apps/cli-darwin-x64@2.0.0-beta.13":
- version "2.0.0-beta.13"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.0.0-beta.13.tgz#50fee7410ef12e705aa446be7f640b7da504c0e3"
- integrity sha512-DNqvRzlrH0ZEo+MxdbJIFOYGPCI7iVXzPxSRU+WFz9aa388fZSVEw9jWer5WaAR5FBgp3bDjrkjPuejSb2A8fw==
-
-"@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-beta.13":
- version "2.0.0-beta.13"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.0.0-beta.13.tgz#209af191283ec4730fed8fe8e5299a91710e4b38"
- integrity sha512-DACLzD8PqgURFBDTnxGODBw/8AP1M5etMrc73dCYs2d4aingc2fVxGYeIQBA0SgijznoCk+pcOmiRsNKO6gemw==
-
-"@tauri-apps/cli-linux-arm64-gnu@2.0.0-beta.13":
- version "2.0.0-beta.13"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.0.0-beta.13.tgz#01064bcc7cad8db596e7b54382f7b8e7a96d60e9"
- integrity sha512-qm141KNMD6ZjbtAntEZYqiEbiAD0Y6CQnfzmARM9OAPkHD2vk0rnGWSa87N8lnAA27LVAnKj+nTtt77dRLlaVA==
-
-"@tauri-apps/cli-linux-arm64-musl@2.0.0-beta.13":
- version "2.0.0-beta.13"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.0.0-beta.13.tgz#1974a209612fd2bbd2b66dc13406f495e5e38dbd"
- integrity sha512-AnB+FaqnKfGszStoj7NFZyxMV3Dz4jJcTcCE+EUYJ8Tctah35EJS/39ykskXjXonhxzg8Zr7joXRUVgGFk/yVA==
-
-"@tauri-apps/cli-linux-x64-gnu@2.0.0-beta.13":
- version "2.0.0-beta.13"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.0.0-beta.13.tgz#55fbbb3fe12c1c6fe1e4cae6dce055dcb23a522b"
- integrity sha512-do+H48Sq/CJPRCSj7aK4j+QXi5OLbqmVt3YUB7H/krH4PFobveIhm2UpEwTjdEWO2tFTCttj07GD/OYxDhzD/g==
-
-"@tauri-apps/cli-linux-x64-musl@2.0.0-beta.13":
- version "2.0.0-beta.13"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.0.0-beta.13.tgz#67b0f6859072ec297b39dfb5bdf76fc897cfe6f4"
- integrity sha512-txkn8CAb8/n6vOHvuXhUBKBJFAip6dF11qqK1lcpsgpNdv1UbvpZYYbjEd8y4jWyjN7OEoIseTtzFzXdezycDw==
-
-"@tauri-apps/cli-win32-arm64-msvc@2.0.0-beta.13":
- version "2.0.0-beta.13"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.0.0-beta.13.tgz#96de65e90b29545ac3825ed51c1fd22648a40299"
- integrity sha512-SKa+qiZQ0+JXTHYtZKJw6RuUoolI/GU7E7pTHfkhYpGFO8UXLpTABkQ0KbN0RK0Bw/MOFFVqnAN2AoXLgPUDEA==
-
-"@tauri-apps/cli-win32-ia32-msvc@2.0.0-beta.13":
- version "2.0.0-beta.13"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.0.0-beta.13.tgz#ff3fe14c68abed27810d727a6d7e78c7f172785c"
- integrity sha512-4i9MK2mxNVF2Y1Wp6r/73Xhpevaz1sXD1DezfCDC8Fdszxo2IhkIZ0AYF5/M+TnSLyJk2u5TtFCnbaOt5e4gCg==
-
-"@tauri-apps/cli-win32-x64-msvc@2.0.0-beta.13":
- version "2.0.0-beta.13"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.0.0-beta.13.tgz#adac497f4cb289f147678ceced59102ae4d2696a"
- integrity sha512-aQRwG/dc9zScIzCst646uyprppxc1Gx4jFJUw4yAEikO32SOS+90c8NFEj6H3HtZBmhzfI3JDxrGJl7ORAOCCQ==
-
-"@tauri-apps/cli@==2.0.0-beta.13":
- version "2.0.0-beta.13"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-2.0.0-beta.13.tgz#59f410c680cce0707675c78a745bf5c6faa1a6a3"
- integrity sha512-Kp0zSvrhXrOQL+8evRMJufnDYDinWXaBb1Un8x4cptrM0GAKjYddV4vjNsXvEyjlXv0S+SWJD0OUNHQyMDUlAg==
- optionalDependencies:
- "@tauri-apps/cli-darwin-arm64" "2.0.0-beta.13"
- "@tauri-apps/cli-darwin-x64" "2.0.0-beta.13"
- "@tauri-apps/cli-linux-arm-gnueabihf" "2.0.0-beta.13"
- "@tauri-apps/cli-linux-arm64-gnu" "2.0.0-beta.13"
- "@tauri-apps/cli-linux-arm64-musl" "2.0.0-beta.13"
- "@tauri-apps/cli-linux-x64-gnu" "2.0.0-beta.13"
- "@tauri-apps/cli-linux-x64-musl" "2.0.0-beta.13"
- "@tauri-apps/cli-win32-arm64-msvc" "2.0.0-beta.13"
- "@tauri-apps/cli-win32-ia32-msvc" "2.0.0-beta.13"
- "@tauri-apps/cli-win32-x64-msvc" "2.0.0-beta.13"
-
-"@tauri-apps/plugin-dialog@^2.0.0-beta.6":
- version "2.0.0-beta.6"
- resolved "https://registry.yarnpkg.com/@tauri-apps/plugin-dialog/-/plugin-dialog-2.0.0-beta.6.tgz#e42b80278d914318992cfc0534bc3c6977ed52ac"
- integrity sha512-Rw8C8t/0y3QExEinp+cAOZi/BDt0c9jifv0bS3WDCwQt9ANdmfCWKamsIhqwemt3MjepkU2RV8bvphzoWlbOGw==
- dependencies:
- "@tauri-apps/api" "2.0.0-beta.14"
-
-"@tauri-apps/plugin-fs@^2.0.0-beta.6":
- version "2.0.0-beta.6"
- resolved "https://registry.yarnpkg.com/@tauri-apps/plugin-fs/-/plugin-fs-2.0.0-beta.6.tgz#ac0e0b171e5c8320e26ca763e780d91a1d1e4e4a"
- integrity sha512-R7M5wggENzJhiA0HwP63AzdF6uzdXRYe0z+ETSue9gvJmqKtqVp+qx9JLsWSfwENHy8RDKmrnuDL18kx/Q2aFA==
- dependencies:
- "@tauri-apps/api" "2.0.0-beta.14"
-
-"@tauri-apps/plugin-http@^2.0.0-beta.7":
- version "2.0.0-beta.7"
- resolved "https://registry.yarnpkg.com/@tauri-apps/plugin-http/-/plugin-http-2.0.0-beta.7.tgz#0472b6b71c9df5d889c8a81e136ce3dd824aeeb6"
- integrity sha512-mxdhcpPPT2oHm0FWe6HS2UbQW2LFTbAv2vExrTYAPJSuXOp2kisgOjazZtswYqpmftpcSZ4dFpmzNlQp188e/g==
- dependencies:
- "@tauri-apps/api" "2.0.0-beta.14"
-
-"@tauri-apps/plugin-os@^2.0.0-beta.6":
- version "2.0.0-beta.6"
- resolved "https://registry.yarnpkg.com/@tauri-apps/plugin-os/-/plugin-os-2.0.0-beta.6.tgz#2ce79d3edfa81401da4f4ff61549700f37766b61"
- integrity sha512-28Ts286o4YH3vZ+swptVblRMuMa1MLjLbgPpnR1wuPNzzR4p7J6+Hr3Euge71RIsFJhjAeP1XkNbHgpAFj4Mpg==
- dependencies:
- "@tauri-apps/api" "2.0.0-beta.14"
-
-"@tauri-apps/plugin-process@^2.0.0-beta.6":
- version "2.0.0-beta.6"
- resolved "https://registry.yarnpkg.com/@tauri-apps/plugin-process/-/plugin-process-2.0.0-beta.6.tgz#3835d4d61a9565a8451bfc3e47afe827bba8f050"
- integrity sha512-Rem3r8lGe6ZSvncqIV9xpq2hOey7krMoPh5nu7WxbR73LOSkRBUDaYMvZjXu1DrJ3LEyXxo48sp76+9MW2Rp/w==
- dependencies:
- "@tauri-apps/api" "2.0.0-beta.14"
-
-"@tauri-apps/plugin-shell@^2.0.0-beta.7":
- version "2.0.0-beta.7"
- resolved "https://registry.yarnpkg.com/@tauri-apps/plugin-shell/-/plugin-shell-2.0.0-beta.7.tgz#43159959ff8ef83435df6d64be381606f6e02130"
- integrity sha512-oJxWbEiNRcoMM0PrePjJnjPHEAN1sbYuWaQ1QMtLPdjHsl83RLk+RpFzkL5WvtGknfiKY7T2qEthOID4br+mvg==
- dependencies:
- "@tauri-apps/api" "2.0.0-beta.14"
-
-"@tauri-apps/plugin-updater@^2.0.0-beta.6":
- version "2.0.0-beta.6"
- resolved "https://registry.yarnpkg.com/@tauri-apps/plugin-updater/-/plugin-updater-2.0.0-beta.6.tgz#2b889638ea65ec0cfafa8e8adc530e10dfd40278"
- integrity sha512-CKgVNsbpGPp8yIUWitszdQ2DVglRZ8jescxacJ43HkaI7oz26EQPL3VwPjjwIQ1RX166JQcNJuM8grcZd8QjBg==
- dependencies:
- "@tauri-apps/api" "2.0.0-beta.14"
+"@tanstack/virtual-core@3.8.4":
+ version "3.8.4"
+ resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.8.4.tgz#0ff84b6a0e4b394335cf7ccf759c36b58cbd02eb"
+ integrity sha512-iO5Ujgw3O1yIxWDe9FgUPNkGjyT657b1WNX52u+Wv1DyBFEpdCdGkuVaky0M3hHFqNWjAmHWTn4wgj9rTr7ZQg==
"@testing-library/dom@^10.0.0":
- version "10.1.0"
- resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.1.0.tgz#2d073e49771ad614da999ca48f199919e5176fb6"
- integrity sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==
+ version "10.4.0"
+ resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.0.tgz#82a9d9462f11d240ecadbf406607c6ceeeff43a8"
+ integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/runtime" "^7.12.5"
@@ -2195,10 +2290,10 @@
"@testing-library/dom" "^10.0.0"
"@types/react-dom" "^18.0.0"
-"@tootallnate/quickjs-emscripten@^0.23.0":
- version "0.23.0"
- resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c"
- integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==
+"@tootallnate/once@2":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
+ integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
"@ts-stack/markdown@^1.5.0":
version "1.5.0"
@@ -2228,9 +2323,9 @@
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
"@tweenjs/tween.js@^23.1.1", "@tweenjs/tween.js@~23.1.1":
- version "23.1.2"
- resolved "https://registry.yarnpkg.com/@tweenjs/tween.js/-/tween.js-23.1.2.tgz#4e5357fd6742f5aa50447d3fa808aed4cda93ed7"
- integrity sha512-kMCNaZCJugWI86xiEHaY338CU5JpD0B97p1j1IKNn/Zto8PgACjQx0UxbHjmOcLl/dDOBnItwD07KmCs75pxtQ==
+ version "23.1.3"
+ resolved "https://registry.yarnpkg.com/@tweenjs/tween.js/-/tween.js-23.1.3.tgz#eff0245735c04a928bb19c026b58c2a56460539d"
+ integrity sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==
"@types/aria-query@^5.0.1":
version "5.0.4"
@@ -2270,15 +2365,32 @@
dependencies:
"@babel/types" "^7.20.7"
+"@types/cacheable-request@^6.0.1":
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183"
+ integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==
+ dependencies:
+ "@types/http-cache-semantics" "*"
+ "@types/keyv" "^3.1.4"
+ "@types/node" "*"
+ "@types/responselike" "^1.0.0"
+
"@types/d3-force@^3.0.10":
version "3.0.10"
resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-3.0.10.tgz#6dc8fc6e1f35704f3b057090beeeb7ac674bff1a"
integrity sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==
+"@types/electron@^1.6.10":
+ version "1.6.10"
+ resolved "https://registry.yarnpkg.com/@types/electron/-/electron-1.6.10.tgz#7e87888ed3888767cca68e92772c2c8ea46bc873"
+ integrity sha512-MOCVyzIwkBEloreoCVrTV108vSf8fFIJPsGruLCoAoBZdxtnJUqKA4lNonf/2u1twSjAspPEfmEheC+TLm/cMw==
+ dependencies:
+ electron "*"
+
"@types/eslint@^8.4.5":
- version "8.56.10"
- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d"
- integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==
+ version "8.56.11"
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.11.tgz#e2ff61510a3b9454b3329fe7731e3b4c6f780041"
+ integrity sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==
dependencies:
"@types/estree" "*"
"@types/json-schema" "*"
@@ -2288,7 +2400,22 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
-"@types/http-cache-semantics@^4.0.2":
+"@types/fs-extra@^9.0.1":
+ version "9.0.13"
+ resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45"
+ integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==
+ dependencies:
+ "@types/node" "*"
+
+"@types/glob@^7.1.1":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
+ integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
+ dependencies:
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/http-cache-semantics@*":
version "4.0.4"
resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4"
integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
@@ -2330,29 +2457,43 @@
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
-"@types/mocha@^10.0.0", "@types/mocha@^10.0.6":
- version "10.0.6"
- resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.6.tgz#818551d39113081048bdddbef96701b4e8bb9d1b"
- integrity sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==
-
-"@types/node@*", "@types/node@^20.1.0", "@types/node@^20.1.1", "@types/node@^20.11.28":
- version "20.14.2"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18"
- integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==
+"@types/keyv@^3.1.4":
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6"
+ integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==
dependencies:
- undici-types "~5.26.4"
+ "@types/node" "*"
+
+"@types/minimatch@*":
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca"
+ integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
+
+"@types/mocha@^10.0.6":
+ version "10.0.7"
+ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.7.tgz#4c620090f28ca7f905a94b706f74dc5b57b44f2f"
+ integrity sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==
+
+"@types/node@*":
+ version "22.0.2"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.0.2.tgz#9fb1a2b31970871e8bf696f0e8a40d2e6d2bd04e"
+ integrity sha512-yPL6DyFwY5PiMVEwymNeqUTKsDczQBJ/5T7W/46RwLU/VH+AA8aT5TZkvBviLKLbbm0hlfftEkGrNzfRk/fofQ==
+ dependencies:
+ undici-types "~6.11.1"
"@types/node@^18.19.31":
- version "18.19.34"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.34.tgz#c3fae2bbbdb94b4a52fe2d229d0dccce02ef3d27"
- integrity sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g==
+ version "18.19.42"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.42.tgz#b54ed4752c85427906aab40917b0f7f3d724bf72"
+ integrity sha512-d2ZFc/3lnK2YCYhos8iaNIYu9Vfhr92nHiyJHRltXWjXUBjEE+A4I58Tdbnw4VhggSW+2j5y5gTrLs4biNnubg==
dependencies:
undici-types "~5.26.4"
-"@types/normalize-package-data@^2.4.1":
- version "2.4.4"
- resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901"
- integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==
+"@types/node@^20.9.0":
+ version "20.14.13"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.13.tgz#bf4fe8959ae1c43bc284de78bd6c01730933736b"
+ integrity sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==
+ dependencies:
+ undici-types "~5.26.4"
"@types/parse-json@^4.0.0":
version "4.0.2"
@@ -2400,6 +2541,13 @@
"@types/prop-types" "*"
csstype "^3.0.2"
+"@types/responselike@^1.0.0":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50"
+ integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==
+ dependencies:
+ "@types/node" "*"
+
"@types/semver@^7.3.12":
version "7.5.8"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
@@ -2451,24 +2599,19 @@
"@types/node" "*"
"@types/webxr@*":
- version "0.5.16"
- resolved "https://registry.yarnpkg.com/@types/webxr/-/webxr-0.5.16.tgz#28955aa2d1197d1ef0b9826ae0f7e68f7eca0601"
- integrity sha512-0E0Cl84FECtzrB4qG19TNTqpunw0F1YF0QZZnFMF6pDw1kNKJtrlTKlVB34stGIsHbZsYQ7H0tNjPfZftkHHoA==
-
-"@types/which@^2.0.1":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@types/which/-/which-2.0.2.tgz#54541d02d6b1daee5ec01ac0d1b37cecf37db1ae"
- integrity sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==
+ version "0.5.19"
+ resolved "https://registry.yarnpkg.com/@types/webxr/-/webxr-0.5.19.tgz#463a27bc06ff1c0a0c997e86b48bf24c5f50a4af"
+ integrity sha512-4hxA+NwohSgImdTSlPXEqDqqFktNgmTXQ05ff1uWam05tNGroCMp4G+4XVl6qWm1p7GQ/9oD41kAYsSssF6Mzw==
"@types/wicg-file-system-access@^2023.10.5":
version "2023.10.5"
resolved "https://registry.yarnpkg.com/@types/wicg-file-system-access/-/wicg-file-system-access-2023.10.5.tgz#14b3c25eb4d914b5734795bdea71da229f918b9d"
integrity sha512-e9kZO9kCdLqT2h9Tw38oGv9UNzBBWaR1MzuAavxPcsV/7FJ3tWbU6RI3uB+yKIDPGLkGVbplS52ub0AcRLvrhA==
-"@types/ws@^8.5.10", "@types/ws@^8.5.3":
- version "8.5.10"
- resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787"
- integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==
+"@types/ws@^8.5.10":
+ version "8.5.12"
+ resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e"
+ integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==
dependencies:
"@types/node" "*"
@@ -2491,7 +2634,7 @@
dependencies:
"@types/node" "*"
-"@typescript-eslint/eslint-plugin@^5.5.0":
+"@typescript-eslint/eslint-plugin@^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0":
version "5.62.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db"
integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==
@@ -2514,7 +2657,7 @@
dependencies:
"@typescript-eslint/utils" "5.62.0"
-"@typescript-eslint/parser@^5.5.0":
+"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0":
version "5.62.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7"
integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==
@@ -2616,7 +2759,7 @@
p-limit "^5.0.0"
pathe "^1.1.1"
-"@vitest/snapshot@1.6.0", "@vitest/snapshot@^1.2.1", "@vitest/snapshot@^1.2.2":
+"@vitest/snapshot@1.6.0":
version "1.6.0"
resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-1.6.0.tgz#deb7e4498a5299c1198136f56e6e0f692e6af470"
integrity sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==
@@ -2649,169 +2792,10 @@
dependencies:
debug "^4.3.4"
-"@wdio/cli@^8.24.3":
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/@wdio/cli/-/cli-8.38.2.tgz#a9c7cfa3df7ad18815a6e8024bfb2f90afba09ed"
- integrity sha512-p9y6jxmpmw53OoB9v/uTLwMetmz7Q0K7NewdVONgmeTY/ERpkU15qL3fMw1rXb+E+vrV8dlce4srnXroec6SFA==
- dependencies:
- "@types/node" "^20.1.1"
- "@vitest/snapshot" "^1.2.1"
- "@wdio/config" "8.38.2"
- "@wdio/globals" "8.38.2"
- "@wdio/logger" "8.38.0"
- "@wdio/protocols" "8.38.0"
- "@wdio/types" "8.38.2"
- "@wdio/utils" "8.38.2"
- async-exit-hook "^2.0.1"
- chalk "^5.2.0"
- chokidar "^3.5.3"
- cli-spinners "^2.9.0"
- dotenv "^16.3.1"
- ejs "^3.1.9"
- execa "^8.0.1"
- import-meta-resolve "^4.0.0"
- inquirer "9.2.12"
- lodash.flattendeep "^4.4.0"
- lodash.pickby "^4.6.0"
- lodash.union "^4.6.0"
- read-pkg-up "10.0.0"
- recursive-readdir "^2.2.3"
- webdriverio "8.38.2"
- yargs "^17.7.2"
-
-"@wdio/config@8.38.2":
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/@wdio/config/-/config-8.38.2.tgz#b8abc9fa860c77089a99dafb8f6ea5dd975a3071"
- integrity sha512-xlnapTr1vOA0h5HsHTIqj47729FbG3WjxmgHweDEQvcT4C1g9l+WKf+N3FM7DNNoIsAqxKi6rOHG02rJADQJtw==
- dependencies:
- "@wdio/logger" "8.38.0"
- "@wdio/types" "8.38.2"
- "@wdio/utils" "8.38.2"
- decamelize "^6.0.0"
- deepmerge-ts "^5.0.0"
- glob "^10.2.2"
- import-meta-resolve "^4.0.0"
-
-"@wdio/globals@8.38.2", "@wdio/globals@^8.29.3", "@wdio/globals@^8.36.0":
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/@wdio/globals/-/globals-8.38.2.tgz#d761f45f746d0eb75bd138c63f12da3862c9bee3"
- integrity sha512-iIrUF1EODfHLh3V/CSNCqbNNxUTe3ND+c86zDjzJcPFjawLX1plvAApsU/eDmtsFShcOS2KHbfSjiydFoqQG1Q==
- optionalDependencies:
- expect-webdriverio "^4.11.2"
- webdriverio "8.38.2"
-
-"@wdio/local-runner@^8.36.0":
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/@wdio/local-runner/-/local-runner-8.38.2.tgz#8539d27f1e43619cbedec4c1ab72447c454613bd"
- integrity sha512-syW+R5VUHJ3GBkQGFcNYe6MYwWRgklc9W7A83xQDTvKWFNHCetLvc8AtKZ54vs8MItBejjU+Oh94ZNbNX1pBcg==
- dependencies:
- "@types/node" "^20.1.0"
- "@wdio/logger" "8.38.0"
- "@wdio/repl" "8.24.12"
- "@wdio/runner" "8.38.2"
- "@wdio/types" "8.38.2"
- async-exit-hook "^2.0.1"
- split2 "^4.1.0"
- stream-buffers "^3.0.2"
-
-"@wdio/logger@8.38.0", "@wdio/logger@^8.28.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@wdio/logger/-/logger-8.38.0.tgz#a96406267e800bef9c58ac95de00f42ab0d3ac5c"
- integrity sha512-kcHL86RmNbcQP+Gq/vQUGlArfU6IIcbbnNp32rRIraitomZow+iEoc519rdQmSVusDozMS5DZthkgDdxK+vz6Q==
- dependencies:
- chalk "^5.1.2"
- loglevel "^1.6.0"
- loglevel-plugin-prefix "^0.8.4"
- strip-ansi "^7.1.0"
-
-"@wdio/mocha-framework@^8.36.0":
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/@wdio/mocha-framework/-/mocha-framework-8.38.2.tgz#5174546406f435a696b301a3efc1ac4704c6d036"
- integrity sha512-qJmRL5E6/ypjCUACH4hvCAAmTdU4YUrUlp9o/IKvTIAHMnZPE0/HgUFixCeu8Mop+rdzTPVBrbqxpRDdSnraYA==
- dependencies:
- "@types/mocha" "^10.0.0"
- "@types/node" "^20.1.0"
- "@wdio/logger" "8.38.0"
- "@wdio/types" "8.38.2"
- "@wdio/utils" "8.38.2"
- mocha "^10.0.0"
-
-"@wdio/protocols@8.38.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@wdio/protocols/-/protocols-8.38.0.tgz#05a3b63cc1318f82b39263e10892d907a7a2f278"
- integrity sha512-7BPi7aXwUtnXZPeWJRmnCNFjyDvGrXlBmN9D4Pi58nILkyjVRQKEY9/qv/pcdyB0cvmIvw++Kl/1Lg+RxG++UA==
-
-"@wdio/repl@8.24.12":
- version "8.24.12"
- resolved "https://registry.yarnpkg.com/@wdio/repl/-/repl-8.24.12.tgz#b09746ae4f51f7da684312db617e598f2d064d9a"
- integrity sha512-321F3sWafnlw93uRTSjEBVuvWCxTkWNDs7ektQS15drrroL3TMeFOynu4rDrIz0jXD9Vas0HCD2Tq/P0uxFLdw==
- dependencies:
- "@types/node" "^20.1.0"
-
-"@wdio/reporter@8.38.2":
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/@wdio/reporter/-/reporter-8.38.2.tgz#9daf7c442d233f9f0e225732285c9593a6e45ca9"
- integrity sha512-R78UdAtAnkaV22NYlCCcbPPhmYweiDURiw64LYhlVIQrKNuXUQcafR2kRlWKy31rZc9thSLs5LzrZDReENUlFQ==
- dependencies:
- "@types/node" "^20.1.0"
- "@wdio/logger" "8.38.0"
- "@wdio/types" "8.38.2"
- diff "^5.0.0"
- object-inspect "^1.12.0"
-
-"@wdio/runner@8.38.2":
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/@wdio/runner/-/runner-8.38.2.tgz#ce6c94f3486a5b68a97ae2a299af8830ab085226"
- integrity sha512-5lPnKSX2BBLI2AbYW+hoGPiEUAJXj8F8I6NC2LaBVzf1CLN+w2HWZ7lUiqS14XT0b5/hlSUX6+JYwUXlDbpuuw==
- dependencies:
- "@types/node" "^20.11.28"
- "@wdio/config" "8.38.2"
- "@wdio/globals" "8.38.2"
- "@wdio/logger" "8.38.0"
- "@wdio/types" "8.38.2"
- "@wdio/utils" "8.38.2"
- deepmerge-ts "^5.1.0"
- expect-webdriverio "^4.12.0"
- gaze "^1.1.3"
- webdriver "8.38.2"
- webdriverio "8.38.2"
-
-"@wdio/spec-reporter@^8.36.0":
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/@wdio/spec-reporter/-/spec-reporter-8.38.2.tgz#703983f9f9279e9dcef9f5e95610fa63ca0fabc1"
- integrity sha512-Dntk+lmrp+0I3HRRWkkXED+smshvgsW5cdLKwJhEJ1liI48MdBpdNGf9IHTVckE6nfxcWDyFI4icD9qYv/5bFA==
- dependencies:
- "@wdio/reporter" "8.38.2"
- "@wdio/types" "8.38.2"
- chalk "^5.1.2"
- easy-table "^1.2.0"
- pretty-ms "^7.0.0"
-
-"@wdio/types@8.38.2":
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/@wdio/types/-/types-8.38.2.tgz#00d6874ced6bc2b081d3d0d43808f95861bb0705"
- integrity sha512-+wj1c1OSLdnN4WO5b44Ih4263dTl/eSwMGSI4/pCgIyXIuYQH38JQ+6WRa+c8vJEskUzboq2cSgEQumVZ39ozQ==
- dependencies:
- "@types/node" "^20.1.0"
-
-"@wdio/utils@8.38.2":
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/@wdio/utils/-/utils-8.38.2.tgz#d10b0cdeccf507b20ba94bdde0f91dd22fc35d49"
- integrity sha512-y5AnBwsGcu/XuCBGCgKmlvKdwEIFyzLA+Cr+denySxY3jbWDONtPUcGaVdFALwsIa5jcIjcATqGmZcCPGnkd7g==
- dependencies:
- "@puppeteer/browsers" "^1.6.0"
- "@wdio/logger" "8.38.0"
- "@wdio/types" "8.38.2"
- decamelize "^6.0.0"
- deepmerge-ts "^5.1.0"
- edgedriver "^5.5.0"
- geckodriver "^4.3.1"
- get-port "^7.0.0"
- import-meta-resolve "^4.0.0"
- locate-app "^2.1.0"
- safaridriver "^0.1.0"
- split2 "^4.2.0"
- wait-port "^1.0.4"
+"@xmldom/xmldom@^0.8.8":
+ version "0.8.10"
+ resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99"
+ integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==
"@xstate/cli@^0.5.17":
version "0.5.17"
@@ -2861,17 +2845,18 @@
dependencies:
"@xstate/machine-extractor" "^0.16.0"
-"@zip.js/zip.js@^2.7.44":
- version "2.7.45"
- resolved "https://registry.yarnpkg.com/@zip.js/zip.js/-/zip.js-2.7.45.tgz#823fe2789401d8c1d836ce866578379ec1bd6f0b"
- integrity sha512-Mm2EXF33DJQ/3GWWEWeP1UCqzpQ5+fiMvT3QWspsXY05DyqqxWu7a9awSzU4/spHMHVFrTjani1PR0vprgZpow==
+abbrev@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-abort-controller@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
- integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
+accepts@~1.3.8:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
+ integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
dependencies:
- event-target-shim "^5.0.0"
+ mime-types "~2.1.34"
+ negotiator "0.6.3"
acorn-jsx@^5.3.2:
version "5.3.2"
@@ -2886,16 +2871,31 @@ acorn-walk@^8.1.1, acorn-walk@^8.3.2:
acorn "^8.11.0"
acorn@^8.11.0, acorn@^8.11.3, acorn@^8.4.1, acorn@^8.9.0:
- version "8.12.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c"
- integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==
+ version "8.12.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
+ integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
-agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317"
- integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==
+agent-base@6, agent-base@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
dependencies:
- debug "^4.3.4"
+ debug "4"
+
+agentkeepalive@^4.2.1:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923"
+ integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==
+ dependencies:
+ humanize-ms "^1.2.1"
+
+aggregate-error@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
+ dependencies:
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
ajv@^6.12.4:
version "6.12.6"
@@ -2907,17 +2907,12 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ansi-colors@4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
- integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
-
-ansi-escapes@^4.3.2:
- version "4.3.2"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
- integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
+ansi-escapes@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-5.0.0.tgz#b6a0caf0eef0c41af190e9a749e0c00ec04bb2a6"
+ integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==
dependencies:
- type-fest "^0.21.3"
+ type-fest "^1.0.2"
ansi-regex@^5.0.1:
version "5.0.1"
@@ -2948,7 +2943,7 @@ ansi-styles@^5.0.0:
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
-ansi-styles@^6.1.0:
+ansi-styles@^6.0.0, ansi-styles@^6.1.0:
version "6.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
@@ -2966,31 +2961,18 @@ anymatch@~3.1.2:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-archiver-utils@^5.0.0, archiver-utils@^5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-5.0.2.tgz#63bc719d951803efc72cf961a56ef810760dd14d"
- integrity sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==
- dependencies:
- glob "^10.0.0"
- graceful-fs "^4.2.0"
- is-stream "^2.0.1"
- lazystream "^1.0.0"
- lodash "^4.17.15"
- normalize-path "^3.0.0"
- readable-stream "^4.0.0"
+"aproba@^1.0.3 || ^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
+ integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
-archiver@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/archiver/-/archiver-7.0.1.tgz#c9d91c350362040b8927379c7aa69c0655122f61"
- integrity sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==
+are-we-there-yet@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd"
+ integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==
dependencies:
- archiver-utils "^5.0.2"
- async "^3.2.4"
- buffer-crc32 "^1.0.0"
- readable-stream "^4.0.0"
- readdir-glob "^1.1.2"
- tar-stream "^3.0.0"
- zip-stream "^6.0.1"
+ delegates "^1.0.0"
+ readable-stream "^3.6.0"
arg@^4.1.0:
version "4.1.3"
@@ -3007,14 +2989,21 @@ argparse@^2.0.1:
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-aria-query@5.3.0, aria-query@^5.0.0, aria-query@^5.3.0:
+aria-query@5.3.0, aria-query@^5.0.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e"
integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==
dependencies:
dequal "^2.0.3"
-array-buffer-byte-length@^1.0.1:
+aria-query@~5.1.3:
+ version "5.1.3"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e"
+ integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
+ dependencies:
+ deep-equal "^2.0.5"
+
+array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
@@ -3022,6 +3011,11 @@ array-buffer-byte-length@^1.0.1:
call-bind "^1.0.5"
is-array-buffer "^3.0.4"
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
+
array-includes@^3.1.6, array-includes@^3.1.7, array-includes@^3.1.8:
version "3.1.8"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d"
@@ -3083,17 +3077,7 @@ array.prototype.flatmap@^1.3.2:
es-abstract "^1.22.1"
es-shim-unscopables "^1.0.0"
-array.prototype.toreversed@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba"
- integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.2.0"
- es-abstract "^1.22.1"
- es-shim-unscopables "^1.0.0"
-
-array.prototype.tosorted@^1.1.3:
+array.prototype.tosorted@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc"
integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==
@@ -3123,6 +3107,18 @@ asap@~2.0.3:
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==
+asar@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/asar/-/asar-3.2.0.tgz#e6edb5edd6f627ebef04db62f771c61bea9c1221"
+ integrity sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==
+ dependencies:
+ chromium-pickle-js "^0.2.0"
+ commander "^5.0.0"
+ glob "^7.1.6"
+ minimatch "^3.0.4"
+ optionalDependencies:
+ "@types/glob" "^7.1.1"
+
assertion-error@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
@@ -3133,13 +3129,6 @@ ast-types-flow@^0.0.8:
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6"
integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==
-ast-types@^0.13.4:
- version "0.13.4"
- resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782"
- integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==
- dependencies:
- tslib "^2.0.1"
-
ast-types@^0.16.1:
version "0.16.1"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2"
@@ -3147,11 +3136,6 @@ ast-types@^0.16.1:
dependencies:
tslib "^2.0.1"
-async-exit-hook@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3"
- integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==
-
async@^2.6.4:
version "2.6.4"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221"
@@ -3159,16 +3143,21 @@ async@^2.6.4:
dependencies:
lodash "^4.17.14"
-async@^3.2.3, async@^3.2.4:
- version "3.2.5"
- resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66"
- integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==
-
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+at-least-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+
+author-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/author-regex/-/author-regex-1.0.0.tgz#d08885be6b9bbf9439fe087c76287245f0a81450"
+ integrity sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==
+
autoprefixer@^10.4.19:
version "10.4.19"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f"
@@ -3188,10 +3177,10 @@ available-typed-arrays@^1.0.7:
dependencies:
possible-typed-array-names "^1.0.0"
-axe-core@=4.7.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf"
- integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==
+axe-core@^4.9.1:
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.0.tgz#d9e56ab0147278272739a000880196cdfe113b59"
+ integrity sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==
axios@^0.26.1:
version "0.26.1"
@@ -3201,25 +3190,20 @@ axios@^0.26.1:
follow-redirects "^1.14.8"
axios@^1.6.1:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621"
- integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.3.tgz#a1125f2faf702bc8e8f2104ec3a76fab40257d85"
+ integrity sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==
dependencies:
follow-redirects "^1.15.6"
form-data "^4.0.0"
proxy-from-env "^1.1.0"
-axobject-query@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a"
- integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==
+axobject-query@~3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1"
+ integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==
dependencies:
- dequal "^2.0.3"
-
-b4a@^1.6.4:
- version "1.6.6"
- resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.6.tgz#a4cc349a3851987c3c4ac2d7785c18744f6da9ba"
- integrity sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==
+ deep-equal "^2.0.5"
babel-plugin-macros@^3.1.0:
version "3.1.0"
@@ -3286,39 +3270,6 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-bare-events@^2.0.0, bare-events@^2.2.0:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.4.2.tgz#3140cca7a0e11d49b3edc5041ab560659fd8e1f8"
- integrity sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==
-
-bare-fs@^2.1.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-2.3.1.tgz#cdbd63dac7a552dfb2b87d18c822298d1efd213d"
- integrity sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==
- dependencies:
- bare-events "^2.0.0"
- bare-path "^2.0.0"
- bare-stream "^2.0.0"
-
-bare-os@^2.1.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/bare-os/-/bare-os-2.4.0.tgz#5de5e3ba7704f459c9656629edca7cc736e06608"
- integrity sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==
-
-bare-path@^2.0.0, bare-path@^2.1.0:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/bare-path/-/bare-path-2.1.3.tgz#594104c829ef660e43b5589ec8daef7df6cedb3e"
- integrity sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==
- dependencies:
- bare-os "^2.1.0"
-
-bare-stream@^2.0.0:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/bare-stream/-/bare-stream-2.1.3.tgz#070b69919963a437cc9e20554ede079ce0a129b2"
- integrity sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==
- dependencies:
- streamx "^2.18.0"
-
base16@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70"
@@ -3329,7 +3280,7 @@ base64-arraybuffer@^1.0.2:
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
-base64-js@^1.3.1:
+base64-js@^1.3.1, base64-js@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@@ -3341,11 +3292,6 @@ basic-auth@^2.0.1:
dependencies:
safe-buffer "5.1.2"
-basic-ftp@^5.0.2:
- version "5.0.5"
- resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0"
- integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==
-
binary-extensions@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
@@ -3369,6 +3315,42 @@ bl@^4.1.0:
inherits "^2.0.4"
readable-stream "^3.4.0"
+bluebird@^3.1.1:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+body-parser@1.20.2:
+ version "1.20.2"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
+ integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
+ dependencies:
+ bytes "3.1.2"
+ content-type "~1.0.5"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ on-finished "2.4.1"
+ qs "6.11.0"
+ raw-body "2.5.2"
+ type-is "~1.6.18"
+ unpipe "1.0.0"
+
+bonjour-service@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02"
+ integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+ multicast-dns "^7.2.5"
+
+boolean@^3.0.1:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
+ integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -3391,22 +3373,7 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
-browser-stdout@1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
- integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
-
-browserslist@^4.23.0:
- version "4.23.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.1.tgz#ce4af0534b3d37db5c1a4ca98b9080f985041e96"
- integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==
- dependencies:
- caniuse-lite "^1.0.30001629"
- electron-to-chromium "^1.4.796"
- node-releases "^2.0.14"
- update-browserslist-db "^1.0.16"
-
-browserslist@^4.23.1:
+browserslist@^4.23.0, browserslist@^4.23.1:
version "4.23.2"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed"
integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==
@@ -3416,17 +3383,17 @@ browserslist@^4.23.1:
node-releases "^2.0.14"
update-browserslist-db "^1.1.0"
-buffer-crc32@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-1.0.0.tgz#a10993b9055081d55304bd9feb4a072de179f405"
- integrity sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==
-
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
-buffer@^5.2.1, buffer@^5.5.0:
+buffer-from@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
+buffer@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
@@ -3434,36 +3401,57 @@ buffer@^5.2.1, buffer@^5.5.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
-buffer@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
- integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
- dependencies:
- base64-js "^1.3.1"
- ieee754 "^1.2.1"
+bytes@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
cac@^6.7.14:
version "6.7.14"
resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959"
integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
-cacheable-lookup@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27"
- integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==
-
-cacheable-request@^10.2.8:
- version "10.2.14"
- resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d"
- integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==
+cacache@^16.1.0:
+ version "16.1.3"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e"
+ integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==
dependencies:
- "@types/http-cache-semantics" "^4.0.2"
- get-stream "^6.0.1"
- http-cache-semantics "^4.1.1"
- keyv "^4.5.3"
- mimic-response "^4.0.0"
- normalize-url "^8.0.0"
- responselike "^3.0.0"
+ "@npmcli/fs" "^2.1.0"
+ "@npmcli/move-file" "^2.0.0"
+ chownr "^2.0.0"
+ fs-minipass "^2.1.0"
+ glob "^8.0.1"
+ infer-owner "^1.0.4"
+ lru-cache "^7.7.1"
+ minipass "^3.1.6"
+ minipass-collect "^1.0.2"
+ minipass-flush "^1.0.5"
+ minipass-pipeline "^1.2.4"
+ mkdirp "^1.0.4"
+ p-map "^4.0.0"
+ promise-inflight "^1.0.1"
+ rimraf "^3.0.2"
+ ssri "^9.0.0"
+ tar "^6.1.11"
+ unique-filename "^2.0.0"
+
+cacheable-lookup@^5.0.3:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005"
+ integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==
+
+cacheable-request@^7.0.2:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817"
+ integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==
+ dependencies:
+ clone-response "^1.0.2"
+ get-stream "^5.1.0"
+ http-cache-semantics "^4.0.0"
+ keyv "^4.0.0"
+ lowercase-keys "^2.0.0"
+ normalize-url "^6.0.1"
+ responselike "^2.0.0"
call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
version "1.0.7"
@@ -3486,25 +3474,15 @@ camelcase-css@^2.0.1:
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
-camelcase@^6.0.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
- integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
-
-caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001629:
- version "1.0.30001636"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz#b15f52d2bdb95fad32c2f53c0b68032b85188a78"
- integrity sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==
-
-caniuse-lite@^1.0.30001640:
- version "1.0.30001643"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz#9c004caef315de9452ab970c3da71085f8241dbd"
- integrity sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==
+caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001640:
+ version "1.0.30001646"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz#d472f2882259ba032dd73ee069ff01bfd059b25d"
+ integrity sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==
chai@^4.3.10:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1"
- integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8"
+ integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==
dependencies:
assertion-error "^1.1.0"
check-error "^1.0.3"
@@ -3512,7 +3490,7 @@ chai@^4.3.10:
get-func-name "^2.0.2"
loupe "^2.3.6"
pathval "^1.1.1"
- type-detect "^4.0.8"
+ type-detect "^4.1.0"
chalk@^2.4.2:
version "2.4.2"
@@ -3531,7 +3509,7 @@ chalk@^3.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2:
+chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -3539,16 +3517,6 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@^5.1.2, chalk@^5.2.0, chalk@^5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385"
- integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==
-
-chardet@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
- integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-
check-error@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694"
@@ -3556,21 +3524,6 @@ check-error@^1.0.3:
dependencies:
get-func-name "^2.0.2"
-chokidar@3.5.3:
- version "3.5.3"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
- integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
- dependencies:
- anymatch "~3.1.2"
- braces "~3.0.2"
- glob-parent "~5.1.2"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.6.0"
- optionalDependencies:
- fsevents "~2.3.2"
-
chokidar@^3.5.3:
version "3.6.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
@@ -3591,18 +3544,26 @@ chownr@^2.0.0:
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
-chromium-bidi@0.4.16:
- version "0.4.16"
- resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.4.16.tgz#8a67bfdf6bb8804efc22765a82859d20724b46ab"
- integrity sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==
- dependencies:
- mitt "3.0.0"
+chrome-trace-event@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b"
+ integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==
+
+chromium-pickle-js@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
+ integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==
ci-info@^3.2.0:
version "3.9.0"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
+clean-stack@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
cli-cursor@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
@@ -3610,15 +3571,25 @@ cli-cursor@^3.1.0:
dependencies:
restore-cursor "^3.1.0"
-cli-spinners@^2.5.0, cli-spinners@^2.9.0:
+cli-cursor@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea"
+ integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==
+ dependencies:
+ restore-cursor "^4.0.0"
+
+cli-spinners@^2.5.0:
version "2.9.2"
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41"
integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==
-cli-width@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5"
- integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==
+cli-truncate@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389"
+ integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==
+ dependencies:
+ slice-ansi "^5.0.0"
+ string-width "^5.0.0"
client-only@^0.0.1:
version "0.0.1"
@@ -3643,6 +3614,13 @@ cliui@^8.0.1:
strip-ansi "^6.0.1"
wrap-ansi "^7.0.0"
+clone-response@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3"
+ integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==
+ dependencies:
+ mimic-response "^1.0.0"
+
clone@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
@@ -3690,6 +3668,16 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+color-support@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
+ integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
+
+colorette@^2.0.20:
+ version "2.0.20"
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a"
+ integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==
+
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@@ -3697,31 +3685,30 @@ combined-stream@^1.0.8:
dependencies:
delayed-stream "~1.0.0"
-commander@^4.0.0:
+commander@^4.0.0, commander@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
+commander@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
+ integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
+
commander@^8.0.0:
version "8.3.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
-commander@^9.3.0:
+commander@^9.4.0:
version "9.5.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30"
integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==
-compress-commons@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-6.0.2.tgz#26d31251a66b9d6ba23a84064ecd3a6a71d2609e"
- integrity sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==
- dependencies:
- crc-32 "^1.2.0"
- crc32-stream "^6.0.0"
- is-stream "^2.0.1"
- normalize-path "^3.0.0"
- readable-stream "^4.0.0"
+compare-version@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080"
+ integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==
concat-map@0.0.1:
version "0.0.1"
@@ -3738,11 +3725,38 @@ confusing-browser-globals@^1.0.11:
resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81"
integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==
+console-control-strings@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
+
+content-disposition@0.5.4:
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
+ integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
+ dependencies:
+ safe-buffer "5.2.1"
+
+content-type@~1.0.4, content-type@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
+ integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
+
convert-source-map@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
+
+cookie@0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
+ integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
+
core-js-compat@^3.36.1, core-js-compat@^3.37.1:
version "3.37.1"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee"
@@ -3771,19 +3785,6 @@ cosmiconfig@^7.0.0:
path-type "^4.0.0"
yaml "^1.10.0"
-crc-32@^1.2.0:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff"
- integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==
-
-crc32-stream@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-6.0.0.tgz#8529a3868f8b27abb915f6c3617c0fadedbf9430"
- integrity sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==
- dependencies:
- crc-32 "^1.2.0"
- readable-stream "^4.0.0"
-
create-require@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
@@ -3794,12 +3795,10 @@ crelt@^1.0.5:
resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72"
integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==
-cross-fetch@4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983"
- integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==
- dependencies:
- node-fetch "^2.6.12"
+cross-dirname@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/cross-dirname/-/cross-dirname-0.1.0.tgz#b899599f30a5389f59e78c150e19f957ad16a37c"
+ integrity sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==
cross-fetch@^3.1.5:
version "3.1.8"
@@ -3808,7 +3807,18 @@ cross-fetch@^3.1.5:
dependencies:
node-fetch "^2.6.12"
-cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
+cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -3817,6 +3827,11 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
+cross-zip@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/cross-zip/-/cross-zip-4.0.1.tgz#1bbf5d3b0e5a77b5f5ca130a6d38f770786e1270"
+ integrity sha512-n63i0lZ0rvQ6FXiGQ+/JFCKAUyPFhLQYJIqKaa+tSJtfKeULF/IDNDAbdnSIxgS4NTuw2b0+lj8LzfITuq+ZxQ==
+
css-line-break@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0"
@@ -3824,16 +3839,6 @@ css-line-break@^2.1.0:
dependencies:
utrie "^1.0.2"
-css-shorthand-properties@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz#1c808e63553c283f289f2dd56fcee8f3337bd935"
- integrity sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==
-
-css-value@^0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/css-value/-/css-value-0.0.1.tgz#5efd6c2eea5ea1fd6b6ac57ec0427b18452424ea"
- integrity sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==
-
css.escape@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
@@ -3854,30 +3859,6 @@ csstype@^3.0.2:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
-"d3-dispatch@1 - 3":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e"
- integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==
-
-d3-force@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4"
- integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==
- dependencies:
- d3-dispatch "1 - 3"
- d3-quadtree "1 - 3"
- d3-timer "1 - 3"
-
-"d3-quadtree@1 - 3":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f"
- integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==
-
-"d3-timer@1 - 3":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0"
- integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==
-
damerau-levenshtein@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
@@ -3888,11 +3869,6 @@ data-uri-to-buffer@^4.0.0:
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e"
integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==
-data-uri-to-buffer@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b"
- integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==
-
data-view-buffer@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2"
@@ -3920,17 +3896,17 @@ data-view-byte-offset@^1.0.0:
es-errors "^1.3.0"
is-data-view "^1.0.1"
-debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
- version "4.3.5"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e"
- integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
+debug@2.6.9, debug@^2.2.0:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
- ms "2.1.2"
+ ms "2.0.0"
-debug@4.3.4:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
- integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
+ version "4.3.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b"
+ integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==
dependencies:
ms "2.1.2"
@@ -3941,11 +3917,6 @@ debug@^3.2.7:
dependencies:
ms "^2.1.1"
-decamelize@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837"
- integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==
-
decamelize@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-6.0.0.tgz#8cad4d916fde5c41a264a43d0ecc56fe3d31749e"
@@ -3965,16 +3936,35 @@ deep-eql@^4.1.3:
dependencies:
type-detect "^4.0.0"
+deep-equal@^2.0.5:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1"
+ integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==
+ dependencies:
+ array-buffer-byte-length "^1.0.0"
+ call-bind "^1.0.5"
+ es-get-iterator "^1.1.3"
+ get-intrinsic "^1.2.2"
+ is-arguments "^1.1.1"
+ is-array-buffer "^3.0.2"
+ is-date-object "^1.0.5"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.2"
+ isarray "^2.0.5"
+ object-is "^1.1.5"
+ object-keys "^1.1.1"
+ object.assign "^4.1.4"
+ regexp.prototype.flags "^1.5.1"
+ side-channel "^1.0.4"
+ which-boxed-primitive "^1.0.2"
+ which-collection "^1.0.1"
+ which-typed-array "^1.1.13"
+
deep-is@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
-deepmerge-ts@^5.0.0, deepmerge-ts@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz#c55206cc4c7be2ded89b9c816cf3608884525d7a"
- integrity sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==
-
defaults@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a"
@@ -3982,7 +3972,7 @@ defaults@^1.0.3:
dependencies:
clone "^1.0.2"
-defer-to-connect@^2.0.1:
+defer-to-connect@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
@@ -3996,7 +3986,7 @@ define-data-property@^1.0.1, define-data-property@^1.1.4:
es-errors "^1.3.0"
gopd "^1.0.1"
-define-properties@^1.2.0, define-properties@^1.2.1:
+define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
@@ -4005,34 +3995,40 @@ define-properties@^1.2.0, define-properties@^1.2.1:
has-property-descriptors "^1.0.0"
object-keys "^1.1.1"
-degenerator@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5"
- integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==
- dependencies:
- ast-types "^0.13.4"
- escodegen "^2.1.0"
- esprima "^4.0.1"
-
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
+
+depd@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
dequal@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
-devtools-protocol@0.0.1147663:
- version "0.0.1147663"
- resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz#4ec5610b39a6250d1f87e6b9c7e16688ed0ac78e"
- integrity sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==
+destroy@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
+ integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
-devtools-protocol@^0.0.1302984:
- version "0.0.1302984"
- resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1302984.tgz#4d8614264105394bfc39dd268121bd549a877f1a"
- integrity sha512-Rgh2Sk5fUSCtEx4QGH9iwTyECdFPySG2nlz5J8guGh2Wlha6uzSOCq/DCEC8faHlLaMPZJMuZ4ovgcX4LvOkKA==
+detect-libc@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
+ integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
+
+detect-node@^2.0.4:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
+ integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
didyoumean@^1.2.2:
version "1.2.2"
@@ -4044,20 +4040,18 @@ diff-sequences@^29.6.3:
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
-diff@5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
- integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
-
diff@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
-diff@^5.0.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531"
- integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
+dir-compare@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-4.2.0.tgz#d1d4999c14fbf55281071fdae4293b3b9ce86f19"
+ integrity sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==
+ dependencies:
+ minimatch "^3.0.5"
+ p-limit "^3.1.0 "
dir-glob@^3.0.1:
version "3.0.1"
@@ -4071,6 +4065,13 @@ dlv@^1.1.3:
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
+dns-packet@^5.2.2:
+ version "5.6.1"
+ resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f"
+ integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==
+ dependencies:
+ "@leichtgewicht/ip-codec" "^2.0.1"
+
doctrine@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
@@ -4090,7 +4091,7 @@ dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9:
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453"
integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==
-dotenv@^16.0.3, dotenv@^16.3.1:
+dotenv@^16.0.3:
version "16.4.5"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
@@ -4100,51 +4101,88 @@ eastasianwidth@^0.2.0:
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
-easy-table@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/easy-table/-/easy-table-1.2.0.tgz#ba9225d7138fee307bfd4f0b5bc3c04bdc7c54eb"
- integrity sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
+
+electron-installer-common@^0.10.2:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/electron-installer-common/-/electron-installer-common-0.10.3.tgz#40f9db644ca60eb28673d545b67ee0113aef4444"
+ integrity sha512-mYbP+6i+nHMIm0WZHXgGdmmXMe+KXncl6jZYQNcCF9C1WsNA9C5SZ2VP4TLQMSIoFO+X4ugkMEA5uld1bmyEvA==
dependencies:
- ansi-regex "^5.0.1"
+ "@malept/cross-spawn-promise" "^1.0.0"
+ asar "^3.0.0"
+ debug "^4.1.1"
+ fs-extra "^9.0.0"
+ glob "^7.1.4"
+ lodash "^4.17.15"
+ parse-author "^2.0.0"
+ semver "^7.1.1"
+ tmp-promise "^3.0.2"
optionalDependencies:
- wcwidth "^1.0.1"
+ "@types/fs-extra" "^9.0.1"
-edge-paths@^3.0.5:
- version "3.0.5"
- resolved "https://registry.yarnpkg.com/edge-paths/-/edge-paths-3.0.5.tgz#9a35361d701d9b5dc07f641cebe8da01ede80937"
- integrity sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==
+electron-installer-debian@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/electron-installer-debian/-/electron-installer-debian-3.2.0.tgz#2a9c8220f50a57807de8f93619a0d61ec41271e0"
+ integrity sha512-58ZrlJ1HQY80VucsEIG9tQ//HrTlG6sfofA3nRGr6TmkX661uJyu4cMPPh6kXW+aHdq/7+q25KyQhDrXvRL7jw==
dependencies:
- "@types/which" "^2.0.1"
- which "^2.0.2"
+ "@malept/cross-spawn-promise" "^1.0.0"
+ debug "^4.1.1"
+ electron-installer-common "^0.10.2"
+ fs-extra "^9.0.0"
+ get-folder-size "^2.0.1"
+ lodash "^4.17.4"
+ word-wrap "^1.2.3"
+ yargs "^16.0.2"
-edgedriver@^5.5.0:
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/edgedriver/-/edgedriver-5.6.0.tgz#fea8d7ac9b328753fc250aceaeb6d1fbcf33fb87"
- integrity sha512-IeJXEczG+DNYBIa9gFgVYTqrawlxmc9SUqUsWU2E98jOsO/amA7wzabKOS8Bwgr/3xWoyXCJ6yGFrbFKrilyyQ==
+electron-installer-redhat@^3.2.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/electron-installer-redhat/-/electron-installer-redhat-3.4.0.tgz#4a7f8d67b48b7d5b23bd1eb074f4b684ae43b192"
+ integrity sha512-gEISr3U32Sgtj+fjxUAlSDo3wyGGq6OBx7rF5UdpIgbnpUvMN4W5uYb0ThpnAZ42VEJh/3aODQXHbFS4f5J3Iw==
dependencies:
- "@wdio/logger" "^8.28.0"
- "@zip.js/zip.js" "^2.7.44"
- decamelize "^6.0.0"
- edge-paths "^3.0.5"
- node-fetch "^3.3.2"
- which "^4.0.0"
+ "@malept/cross-spawn-promise" "^1.0.0"
+ debug "^4.1.1"
+ electron-installer-common "^0.10.2"
+ fs-extra "^9.0.0"
+ lodash "^4.17.15"
+ word-wrap "^1.2.3"
+ yargs "^16.0.2"
-ejs@^3.1.9:
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b"
- integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==
+electron-squirrel-startup@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/electron-squirrel-startup/-/electron-squirrel-startup-1.0.1.tgz#c9171568d724884c7a2b03760bfeedcf921c63ab"
+ integrity sha512-sTfFIHGku+7PsHLJ7v0dRcZNkALrV+YEozINTW8X1nM//e5O3L+rfYuvSW00lmGHnYmUjARZulD8F2V8ISI9RA==
dependencies:
- jake "^10.8.5"
-
-electron-to-chromium@^1.4.796:
- version "1.4.803"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.803.tgz#cf55808a5ee12e2a2778bbe8cdc941ef87c2093b"
- integrity sha512-61H9mLzGOCLLVsnLiRzCbc63uldP0AniRYPV3hbGVtONA1pI7qSGILdbofR7A8TMbOypDocEAjH/e+9k1QIe3g==
+ debug "^2.2.0"
electron-to-chromium@^1.4.820:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.2.tgz#6126ad229ce45e781ec54ca40db0504787f23d19"
- integrity sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz#cd477c830dd6fca41fbd5465c1ff6ce08ac22343"
+ integrity sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==
+
+electron-winstaller@^5.3.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/electron-winstaller/-/electron-winstaller-5.4.0.tgz#f0660d476d5c4f579fdf7edd2f0cf01d54c4d0b2"
+ integrity sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==
+ dependencies:
+ "@electron/asar" "^3.2.1"
+ debug "^4.1.1"
+ fs-extra "^7.0.1"
+ lodash "^4.17.21"
+ temp "^0.9.0"
+ optionalDependencies:
+ "@electron/windows-sign" "^1.1.2"
+
+electron@*, electron@^31.2.1:
+ version "31.3.1"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-31.3.1.tgz#de5f21f10db1ba0568e0cdd7ae76ec40a4b800c3"
+ integrity sha512-9fiuWlRhBfygtcT+auRd/WdBK/f8LZZcrpx0RjpXhH2DPTP/PfnkC4JB1PW55qCbGbh4wAgkYbf4ExIag8oGCA==
+ dependencies:
+ "@electron/get" "^2.0.0"
+ "@types/node" "^20.9.0"
+ extract-zip "^2.0.1"
emoji-regex@^8.0.0:
version "8.0.0"
@@ -4156,6 +4194,18 @@ emoji-regex@^9.2.2:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
+
+encoding@^0.1.13:
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
+ integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
+ dependencies:
+ iconv-lite "^0.6.2"
+
end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
@@ -4168,14 +4218,24 @@ entities@^4.5.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
-error-ex@^1.3.1, error-ex@^1.3.2:
+env-paths@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
+ integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
+
+err-code@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9"
+ integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==
+
+error-ex@^1.2.0, error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3:
+es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3:
version "1.23.3"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0"
integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
@@ -4239,7 +4299,22 @@ es-errors@^1.2.1, es-errors@^1.3.0:
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
-es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.19:
+es-get-iterator@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6"
+ integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.3"
+ has-symbols "^1.0.3"
+ is-arguments "^1.1.1"
+ is-map "^2.0.2"
+ is-set "^2.0.2"
+ is-string "^1.0.7"
+ isarray "^2.0.5"
+ stop-iteration-iterator "^1.0.0"
+
+es-iterator-helpers@^1.0.19:
version "1.0.19"
resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8"
integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==
@@ -4291,6 +4366,11 @@ es-to-primitive@^1.2.1:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
+es6-error@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
+ integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
+
esbuild@^0.21.3:
version "0.21.5"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d"
@@ -4325,12 +4405,12 @@ escalade@^3.1.1, escalade@^3.1.2:
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
-escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
- integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
-escape-string-regexp@^1.0.5:
+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
@@ -4340,21 +4420,10 @@ escape-string-regexp@^2.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
-escape-string-regexp@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
- integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
-
-escodegen@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17"
- integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
- dependencies:
- esprima "^4.0.1"
- estraverse "^5.2.0"
- esutils "^2.0.2"
- optionalDependencies:
- source-map "~0.6.1"
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-config-react-app@^7.0.1:
version "7.0.1"
@@ -4408,7 +4477,7 @@ eslint-plugin-flowtype@^8.0.3:
lodash "^4.17.21"
string-natural-compare "^3.0.1"
-eslint-plugin-import@^2.25.3:
+eslint-plugin-import@^2.25.0, eslint-plugin-import@^2.25.3:
version "2.29.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643"
integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==
@@ -4439,26 +4508,26 @@ eslint-plugin-jest@^25.3.0:
"@typescript-eslint/experimental-utils" "^5.0.0"
eslint-plugin-jsx-a11y@^6.5.1:
- version "6.8.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2"
- integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==
+ version "6.9.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#67ab8ff460d4d3d6a0b4a570e9c1670a0a8245c8"
+ integrity sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==
dependencies:
- "@babel/runtime" "^7.23.2"
- aria-query "^5.3.0"
- array-includes "^3.1.7"
+ aria-query "~5.1.3"
+ array-includes "^3.1.8"
array.prototype.flatmap "^1.3.2"
ast-types-flow "^0.0.8"
- axe-core "=4.7.0"
- axobject-query "^3.2.1"
+ axe-core "^4.9.1"
+ axobject-query "~3.1.1"
damerau-levenshtein "^1.0.8"
emoji-regex "^9.2.2"
- es-iterator-helpers "^1.0.15"
- hasown "^2.0.0"
+ es-iterator-helpers "^1.0.19"
+ hasown "^2.0.2"
jsx-ast-utils "^3.3.5"
language-tags "^1.0.9"
minimatch "^3.1.2"
- object.entries "^1.1.7"
- object.fromentries "^2.0.7"
+ object.fromentries "^2.0.8"
+ safe-regex-test "^1.0.3"
+ string.prototype.includes "^2.0.0"
eslint-plugin-react-hooks@^4.3.0:
version "4.6.2"
@@ -4466,28 +4535,28 @@ eslint-plugin-react-hooks@^4.3.0:
integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==
eslint-plugin-react@^7.27.1:
- version "7.34.2"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz#2780a1a35a51aca379d86d29b9a72adc6bfe6b66"
- integrity sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==
+ version "7.35.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz#00b1e4559896710e58af6358898f2ff917ea4c41"
+ integrity sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==
dependencies:
array-includes "^3.1.8"
array.prototype.findlast "^1.2.5"
array.prototype.flatmap "^1.3.2"
- array.prototype.toreversed "^1.1.2"
- array.prototype.tosorted "^1.1.3"
+ array.prototype.tosorted "^1.1.4"
doctrine "^2.1.0"
es-iterator-helpers "^1.0.19"
estraverse "^5.3.0"
+ hasown "^2.0.2"
jsx-ast-utils "^2.4.1 || ^3.0.0"
minimatch "^3.1.2"
object.entries "^1.1.8"
object.fromentries "^2.0.8"
- object.hasown "^1.1.4"
object.values "^1.2.0"
prop-types "^15.8.1"
resolve "^2.0.0-next.5"
semver "^6.3.1"
string.prototype.matchall "^4.0.11"
+ string.prototype.repeat "^1.0.0"
eslint-plugin-suggest-no-throw@^1.0.0:
version "1.0.0"
@@ -4527,7 +4596,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
-eslint@^8.57.0:
+eslint@^8.0.1:
version "8.57.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668"
integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
@@ -4580,15 +4649,15 @@ espree@^9.6.0, espree@^9.6.1:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.4.1"
-esprima@^4.0.1, esprima@~4.0.0:
+esprima@~4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.4.2:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
- integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
+ integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
dependencies:
estraverse "^5.1.0"
@@ -4626,20 +4695,33 @@ esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-event-target-shim@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
- integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
eventemitter3@^4.0.0:
version "4.0.7"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
-events@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
- integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+eventemitter3@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4"
+ integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
+
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
execa@^8.0.1:
version "8.0.1"
@@ -4661,21 +4743,14 @@ exenv@^1.2.0:
resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
integrity sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==
-expect-webdriverio@^4.11.2, expect-webdriverio@^4.12.0:
- version "4.15.1"
- resolved "https://registry.yarnpkg.com/expect-webdriverio/-/expect-webdriverio-4.15.1.tgz#3fa8e7ea2dc2b0548aeeda4daae55f2fdd3505c8"
- integrity sha512-xtBSidt7Whs1fsUC+utxVzfmkmaStXWW17b+BcMCiCltx0Yku6l7BTv1Y14DEKX8L6rttaDQobYyRtBKbi4ssg==
+expand-tilde@^2.0.0, expand-tilde@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+ integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==
dependencies:
- "@vitest/snapshot" "^1.2.2"
- expect "^29.7.0"
- jest-matcher-utils "^29.7.0"
- lodash.isequal "^4.5.0"
- optionalDependencies:
- "@wdio/globals" "^8.29.3"
- "@wdio/logger" "^8.28.0"
- webdriverio "^8.29.3"
+ homedir-polyfill "^1.0.1"
-expect@^29.0.0, expect@^29.7.0:
+expect@^29.0.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc"
integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==
@@ -4686,16 +4761,56 @@ expect@^29.0.0, expect@^29.7.0:
jest-message-util "^29.7.0"
jest-util "^29.7.0"
-external-editor@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
- integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
- dependencies:
- chardet "^0.7.0"
- iconv-lite "^0.4.24"
- tmp "^0.0.33"
+exponential-backoff@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6"
+ integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==
-extract-zip@2.0.1:
+express-ws@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/express-ws/-/express-ws-5.0.2.tgz#5b02d41b937d05199c6c266d7cc931c823bda8eb"
+ integrity sha512-0uvmuk61O9HXgLhGl3QhNSEtRsQevtmbL94/eILaliEADZBHZOQUAiHFrGPrgsjikohyrmSG5g+sCfASTt0lkQ==
+ dependencies:
+ ws "^7.4.6"
+
+express@^4.17.1:
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465"
+ integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==
+ dependencies:
+ accepts "~1.3.8"
+ array-flatten "1.1.1"
+ body-parser "1.20.2"
+ content-disposition "0.5.4"
+ content-type "~1.0.4"
+ cookie "0.6.0"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "2.0.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "1.2.0"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.7"
+ qs "6.11.0"
+ range-parser "~1.2.1"
+ safe-buffer "5.2.1"
+ send "0.18.0"
+ serve-static "1.15.0"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+extract-zip@^2.0.0, extract-zip@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
@@ -4706,22 +4821,12 @@ extract-zip@2.0.1:
optionalDependencies:
"@types/yauzl" "^2.9.1"
-fast-deep-equal@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
- integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==
-
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-fast-fifo@^1.2.0, fast-fifo@^1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c"
- integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==
-
-fast-glob@^3.2.9, fast-glob@^3.3.0:
+fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.0:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
@@ -4799,14 +4904,6 @@ fflate@~0.8.2:
resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea"
integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==
-figures@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-5.0.0.tgz#126cd055052dea699f8a54e8c9450e6ecfc44d5f"
- integrity sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==
- dependencies:
- escape-string-regexp "^5.0.0"
- is-unicode-supported "^1.2.0"
-
file-entry-cache@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
@@ -4814,12 +4911,19 @@ file-entry-cache@^6.0.1:
dependencies:
flat-cache "^3.0.4"
-filelist@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
- integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
+filename-reserved-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229"
+ integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==
+
+filenamify@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-4.3.0.tgz#62391cb58f02b09971c9d4f9d63b3cf9aba03106"
+ integrity sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==
dependencies:
- minimatch "^5.0.1"
+ filename-reserved-regex "^2.0.0"
+ strip-outer "^1.0.1"
+ trim-repeated "^1.0.0"
fill-range@^7.1.1:
version "7.1.1"
@@ -4828,7 +4932,35 @@ fill-range@^7.1.1:
dependencies:
to-regex-range "^5.0.1"
-find-up@5.0.0, find-up@^5.0.0:
+finalhandler@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
+ integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ statuses "2.0.1"
+ unpipe "~1.0.0"
+
+find-up@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==
+ dependencies:
+ locate-path "^2.0.0"
+
+find-up@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+find-up@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
@@ -4836,14 +4968,6 @@ find-up@5.0.0, find-up@^5.0.0:
locate-path "^6.0.0"
path-exists "^4.0.0"
-find-up@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790"
- integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==
- dependencies:
- locate-path "^7.1.0"
- path-exists "^5.0.0"
-
flat-cache@^3.0.4:
version "3.2.0"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
@@ -4853,16 +4977,19 @@ flat-cache@^3.0.4:
keyv "^4.5.3"
rimraf "^3.0.2"
-flat@^5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
- integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
-
flatted@^3.2.9:
version "3.3.1"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
+flora-colossus@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/flora-colossus/-/flora-colossus-2.0.0.tgz#af1e85db0a8256ef05f3fb531c1235236c97220a"
+ integrity sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==
+ dependencies:
+ debug "^4.3.4"
+ fs-extra "^10.1.0"
+
flux@^4.0.1:
version "4.0.4"
resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.4.tgz#9661182ea81d161ee1a6a6af10d20485ef2ac572"
@@ -4891,11 +5018,6 @@ foreground-child@^3.1.0:
cross-spawn "^7.0.0"
signal-exit "^4.0.1"
-form-data-encoder@^2.1.2:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5"
- integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==
-
form-data@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
@@ -4912,12 +5034,31 @@ formdata-polyfill@^4.0.10:
dependencies:
fetch-blob "^3.1.2"
+forwarded@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
+ integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
+
fraction.js@^4.3.7:
version "4.3.7"
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
-fs-extra@^11.2.0:
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
+
+fs-extra@^10.0.0, fs-extra@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
+ integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
+fs-extra@^11.1.0, fs-extra@^11.1.1:
version "11.2.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b"
integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==
@@ -4926,7 +5067,35 @@ fs-extra@^11.2.0:
jsonfile "^6.0.1"
universalify "^2.0.0"
-fs-minipass@^2.0.0:
+fs-extra@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
+ integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
+ integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^9.0.0, fs-extra@^9.0.1:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
+fs-minipass@^2.0.0, fs-minipass@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
@@ -4953,7 +5122,7 @@ function-bind@^1.1.2:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
-function.prototype.name@^1.1.5, function.prototype.name@^1.1.6:
+function.prototype.name@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd"
integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
@@ -4973,26 +5142,33 @@ fuse.js@^7.0.0:
resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-7.0.0.tgz#6573c9fcd4c8268e403b4fc7d7131ffcf99a9eb2"
integrity sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==
-gaze@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
- integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==
+galactus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/galactus/-/galactus-1.0.0.tgz#c2615182afa0c6d0859b92e56ae36d052827db7e"
+ integrity sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==
dependencies:
- globule "^1.0.0"
+ debug "^4.3.4"
+ flora-colossus "^2.0.0"
+ fs-extra "^10.1.0"
-geckodriver@^4.3.1:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/geckodriver/-/geckodriver-4.4.1.tgz#b39b26a17f9166038702743f5722b6d83e0483f6"
- integrity sha512-nnAdIrwLkMcDu4BitWXF23pEMeZZ0Cj7HaWWFdSpeedBP9z6ft150JYiGO2mwzw6UiR823Znk1JeIf07RyzloA==
+gar@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/gar/-/gar-1.0.4.tgz#f777bc7db425c0572fdeb52676172ca1ae9888b8"
+ integrity sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==
+
+gauge@^4.0.3:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce"
+ integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==
dependencies:
- "@wdio/logger" "^8.28.0"
- "@zip.js/zip.js" "^2.7.44"
- decamelize "^6.0.0"
- http-proxy-agent "^7.0.2"
- https-proxy-agent "^7.0.4"
- node-fetch "^3.3.2"
- tar-fs "^3.0.6"
- which "^4.0.0"
+ aproba "^1.0.3 || ^2.0.0"
+ color-support "^1.1.3"
+ console-control-strings "^1.1.0"
+ has-unicode "^2.0.1"
+ signal-exit "^3.0.7"
+ string-width "^4.2.3"
+ strip-ansi "^6.0.1"
+ wide-align "^1.1.5"
gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
@@ -5004,12 +5180,27 @@ get-caller-file@^2.0.5:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+get-folder-size@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/get-folder-size/-/get-folder-size-2.0.1.tgz#3fe0524dd3bad05257ef1311331417bcd020a497"
+ integrity sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA==
+ dependencies:
+ gar "^1.0.4"
+ tiny-each-async "2.0.3"
+
get-func-name@^2.0.1, get-func-name@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41"
integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==
-get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
+get-installed-path@^2.0.3:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/get-installed-path/-/get-installed-path-2.1.1.tgz#a1f33dc6b8af542c9331084e8edbe37fe2634152"
+ integrity sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==
+ dependencies:
+ global-modules "1.0.0"
+
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
@@ -5020,10 +5211,22 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@
has-symbols "^1.0.3"
hasown "^2.0.0"
-get-port@^7.0.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/get-port/-/get-port-7.1.0.tgz#d5a500ebfc7aa705294ec2b83cc38c5d0e364fec"
- integrity sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==
+get-package-info@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/get-package-info/-/get-package-info-1.0.0.tgz#6432796563e28113cd9474dbbd00052985a4999c"
+ integrity sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==
+ dependencies:
+ bluebird "^3.1.1"
+ debug "^2.2.0"
+ lodash.get "^4.0.0"
+ read-pkg-up "^2.0.0"
+
+get-stream@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
get-stream@^5.1.0:
version "5.2.0"
@@ -5032,11 +5235,6 @@ get-stream@^5.1.0:
dependencies:
pump "^3.0.0"
-get-stream@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
- integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
-
get-stream@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2"
@@ -5051,16 +5249,6 @@ get-symbol-description@^1.0.2:
es-errors "^1.3.0"
get-intrinsic "^1.2.4"
-get-uri@^6.0.1:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.3.tgz#0d26697bc13cf91092e519aa63aa60ee5b6f385a"
- integrity sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==
- dependencies:
- basic-ftp "^5.0.2"
- data-uri-to-buffer "^6.0.2"
- debug "^4.3.4"
- fs-extra "^11.2.0"
-
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
@@ -5075,29 +5263,19 @@ glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
-glob@8.1.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
- integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^5.0.1"
- once "^1.3.0"
-
-glob@^10.0.0, glob@^10.2.2, glob@^10.3.10:
- version "10.4.1"
- resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2"
- integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==
+glob@^10.3.10:
+ version "10.4.5"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
+ integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
dependencies:
foreground-child "^3.1.0"
jackspeak "^3.1.2"
minimatch "^9.0.4"
minipass "^7.1.2"
+ package-json-from-dist "^1.0.0"
path-scurry "^1.11.1"
-glob@^7.1.3:
+glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
@@ -5109,17 +5287,48 @@ glob@^7.1.3:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@~7.1.1:
- version "7.1.7"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
- integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
+glob@^8.0.1:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
+ integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
- minimatch "^3.0.4"
+ minimatch "^5.0.1"
once "^1.3.0"
- path-is-absolute "^1.0.0"
+
+global-agent@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6"
+ integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==
+ dependencies:
+ boolean "^3.0.1"
+ es6-error "^4.1.1"
+ matcher "^3.0.0"
+ roarr "^2.15.3"
+ semver "^7.3.2"
+ serialize-error "^7.0.1"
+
+global-modules@1.0.0, global-modules@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+ integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
+ dependencies:
+ global-prefix "^1.0.1"
+ is-windows "^1.0.1"
+ resolve-dir "^1.0.0"
+
+global-prefix@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+ integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==
+ dependencies:
+ expand-tilde "^2.0.2"
+ homedir-polyfill "^1.0.1"
+ ini "^1.3.4"
+ is-windows "^1.0.1"
+ which "^1.2.14"
globals@^11.1.0:
version "11.12.0"
@@ -5133,7 +5342,7 @@ globals@^13.19.0:
dependencies:
type-fest "^0.20.2"
-globalthis@^1.0.3:
+globalthis@^1.0.1, globalthis@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
@@ -5158,15 +5367,6 @@ globrex@^0.1.2:
resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098"
integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==
-globule@^1.0.0:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.4.tgz#7c11c43056055a75a6e68294453c17f2796170fb"
- integrity sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==
- dependencies:
- glob "~7.1.1"
- lodash "^4.17.21"
- minimatch "~3.0.2"
-
gonzales-pe@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3"
@@ -5186,42 +5386,37 @@ gopd@^1.0.1:
dependencies:
get-intrinsic "^1.1.3"
-got@^12.6.1:
- version "12.6.1"
- resolved "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549"
- integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==
+got@^11.7.0, got@^11.8.5:
+ version "11.8.6"
+ resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a"
+ integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==
dependencies:
- "@sindresorhus/is" "^5.2.0"
- "@szmarczak/http-timer" "^5.0.1"
- cacheable-lookup "^7.0.0"
- cacheable-request "^10.2.8"
+ "@sindresorhus/is" "^4.0.0"
+ "@szmarczak/http-timer" "^4.0.5"
+ "@types/cacheable-request" "^6.0.1"
+ "@types/responselike" "^1.0.0"
+ cacheable-lookup "^5.0.3"
+ cacheable-request "^7.0.2"
decompress-response "^6.0.0"
- form-data-encoder "^2.1.2"
- get-stream "^6.0.1"
- http2-wrapper "^2.1.10"
- lowercase-keys "^3.0.0"
- p-cancelable "^3.0.0"
- responselike "^3.0.0"
+ http2-wrapper "^1.0.0-beta.5.2"
+ lowercase-keys "^2.0.0"
+ p-cancelable "^2.0.0"
+ responselike "^2.0.0"
-graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9:
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
-grapheme-splitter@^1.0.2:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
- integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
-
graphemer@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
happy-dom@^14.3.10:
- version "14.12.0"
- resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-14.12.0.tgz#40c748578c6ebfb707e6ae69179d6c541d8f63b3"
- integrity sha512-dHcnlGFY2o2CdxfuYpqwSrBrpj/Kuzv4u4f3TU5yHW1GL24dKij4pv1BRjXnXc3uWo8qsCbToF9weaDsm/He8A==
+ version "14.12.3"
+ resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-14.12.3.tgz#1b5892c670461fd1db041bee690981c22d3d521f"
+ integrity sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==
dependencies:
entities "^4.5.0"
webidl-conversions "^7.0.0"
@@ -5266,6 +5461,11 @@ has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
dependencies:
has-symbols "^1.0.3"
+has-unicode@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==
+
hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
@@ -5273,17 +5473,22 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
dependencies:
function-bind "^1.1.2"
-he@1.2.0, he@^1.2.0:
+he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-hosted-git-info@^7.0.0:
- version "7.0.2"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17"
- integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==
+homedir-polyfill@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
+ integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
dependencies:
- lru-cache "^10.0.1"
+ parse-passwd "^1.0.0"
+
+hosted-git-info@^2.1.4:
+ version "2.8.9"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
+ integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
html-encoding-sniffer@^3.0.0:
version "3.0.0"
@@ -5293,25 +5498,37 @@ html-encoding-sniffer@^3.0.0:
whatwg-encoding "^2.0.0"
html2canvas-pro@^1.5.5:
- version "1.5.5"
- resolved "https://registry.yarnpkg.com/html2canvas-pro/-/html2canvas-pro-1.5.5.tgz#8486a62b8ce0ff2d9062c34a85cbe5e74a096278"
- integrity sha512-Vk0Yiy9dCTxDxZfDRG3adwMV8gYVuuIFc+mbuAzZ9mCSInjYIiO6AxPL7OaNZUK/fI/FHDechxKj9QjPCVFRQw==
+ version "1.5.8"
+ resolved "https://registry.yarnpkg.com/html2canvas-pro/-/html2canvas-pro-1.5.8.tgz#d40ba9732c455943fc269f0606895ac00bb0c864"
+ integrity sha512-bVGAU7IvhBwBlRAmX6QhekX8lsaxmYoF6zIwf/HNlHscjx+KN8jw/U4PQRYqeEVm9+m13hcS1l5ChJB9/e29Lw==
dependencies:
css-line-break "^2.1.0"
text-segmentation "^1.0.3"
-http-cache-semantics@^4.1.1:
+http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
-http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.2:
- version "7.0.2"
- resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e"
- integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==
+http-errors@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
dependencies:
- agent-base "^7.1.0"
- debug "^4.3.4"
+ depd "2.0.0"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ toidentifier "1.0.1"
+
+http-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
+ integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
+ dependencies:
+ "@tootallnate/once" "2"
+ agent-base "6"
+ debug "4"
http-proxy@^1.18.1:
version "1.18.1"
@@ -5341,20 +5558,20 @@ http-server@^14.1.1:
union "~0.5.0"
url-join "^4.0.1"
-http2-wrapper@^2.1.10:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a"
- integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==
+http2-wrapper@^1.0.0-beta.5.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d"
+ integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==
dependencies:
quick-lru "^5.1.1"
- resolve-alpn "^1.2.0"
+ resolve-alpn "^1.0.0"
-https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.4:
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168"
- integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==
+https-proxy-agent@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
+ integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
dependencies:
- agent-base "^7.0.2"
+ agent-base "6"
debug "4"
human-signals@^5.0.0:
@@ -5362,26 +5579,33 @@ human-signals@^5.0.0:
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28"
integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==
-husky@^9.0.11:
- version "9.0.11"
- resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.11.tgz#fc91df4c756050de41b3e478b2158b87c1e79af9"
- integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==
-
-iconv-lite@0.6.3:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
- integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+humanize-ms@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
+ integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==
dependencies:
- safer-buffer ">= 2.1.2 < 3.0.0"
+ ms "^2.0.0"
-iconv-lite@^0.4.24:
+husky@^9.0.11:
+ version "9.1.4"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.4.tgz#926fd19c18d345add5eab0a42b2b6d9a80259b34"
+ integrity sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==
+
+iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
-ieee754@^1.1.13, ieee754@^1.2.1:
+iconv-lite@0.6.3, iconv-lite@^0.6.2:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+ieee754@^1.1.13:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@@ -5404,11 +5628,6 @@ import-fresh@^3.2.1:
parent-module "^1.0.0"
resolve-from "^4.0.0"
-import-meta-resolve@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#f9db8bead9fafa61adb811db77a2bf22c5399706"
- integrity sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==
-
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -5419,6 +5638,11 @@ indent-string@^4.0.0:
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+infer-owner@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -5427,33 +5651,17 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
+inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-inquirer@9.2.12:
- version "9.2.12"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.2.12.tgz#0348e9311765b7c93fce143bb1c0ef1ae879b1d7"
- integrity sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==
- dependencies:
- "@ljharb/through" "^2.3.11"
- ansi-escapes "^4.3.2"
- chalk "^5.3.0"
- cli-cursor "^3.1.0"
- cli-width "^4.1.0"
- external-editor "^3.1.0"
- figures "^5.0.0"
- lodash "^4.17.21"
- mute-stream "1.0.0"
- ora "^5.4.1"
- run-async "^3.0.0"
- rxjs "^7.8.1"
- string-width "^4.2.3"
- strip-ansi "^6.0.1"
- wrap-ansi "^6.2.0"
+ini@^1.3.4:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-internal-slot@^1.0.7:
+internal-slot@^1.0.4, internal-slot@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802"
integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
@@ -5462,6 +5670,11 @@ internal-slot@^1.0.7:
hasown "^2.0.0"
side-channel "^1.0.4"
+interpret@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4"
+ integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==
+
ip-address@^9.0.5:
version "9.0.5"
resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a"
@@ -5470,7 +5683,20 @@ ip-address@^9.0.5:
jsbn "1.1.0"
sprintf-js "^1.1.3"
-is-array-buffer@^3.0.4:
+ipaddr.js@1.9.1:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+
+is-arguments@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-array-buffer@^3.0.2, is-array-buffer@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98"
integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
@@ -5517,12 +5743,12 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.8.1:
- version "2.13.1"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
- integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
+is-core-module@^2.13.0, is-core-module@^2.13.1:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea"
+ integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==
dependencies:
- hasown "^2.0.0"
+ hasown "^2.0.2"
is-data-view@^1.0.1:
version "1.0.1"
@@ -5555,6 +5781,11 @@ is-fullwidth-code-point@^3.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+is-fullwidth-code-point@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88"
+ integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
+
is-generator-function@^1.0.10:
version "1.0.10"
resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
@@ -5574,7 +5805,12 @@ is-interactive@^1.0.0:
resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
-is-map@^2.0.3:
+is-lambda@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5"
+ integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==
+
+is-map@^2.0.2, is-map@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e"
integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==
@@ -5601,16 +5837,6 @@ is-path-inside@^3.0.3:
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
-is-plain-obj@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
- integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
-
-is-plain-obj@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0"
- integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
-
is-regex@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
@@ -5619,7 +5845,7 @@ is-regex@^1.1.4:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
-is-set@^2.0.3:
+is-set@^2.0.2, is-set@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d"
integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==
@@ -5631,10 +5857,10 @@ is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
dependencies:
call-bind "^1.0.7"
-is-stream@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
- integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==
is-stream@^3.0.0:
version "3.0.0"
@@ -5667,11 +5893,6 @@ is-unicode-supported@^0.1.0:
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
-is-unicode-supported@^1.2.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714"
- integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==
-
is-weakmap@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd"
@@ -5692,6 +5913,11 @@ is-weakset@^2.0.3:
call-bind "^1.0.7"
get-intrinsic "^1.2.4"
+is-windows@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
isarray@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
@@ -5702,16 +5928,16 @@ isarray@~1.0.0:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
+isbinaryfile@^4.0.8:
+ version "4.0.10"
+ resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3"
+ integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==
+
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-isexe@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d"
- integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==
-
isomorphic-fetch@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4"
@@ -5732,24 +5958,14 @@ iterator.prototype@^1.1.2:
set-function-name "^2.0.1"
jackspeak@^3.1.2:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.0.tgz#a75763ff36ad778ede6a156d8ee8b124de445b4a"
- integrity sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==
+ version "3.4.3"
+ resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
+ integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
dependencies:
"@isaacs/cliui" "^8.0.2"
optionalDependencies:
"@pkgjs/parseargs" "^0.11.0"
-jake@^10.8.5:
- version "10.9.1"
- resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b"
- integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==
- dependencies:
- async "^3.2.3"
- chalk "^4.0.2"
- filelist "^1.0.4"
- minimatch "^3.1.2"
-
jest-diff@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a"
@@ -5808,9 +6024,9 @@ jiti@^1.21.0:
integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==
joi@^17.11.0:
- version "17.13.1"
- resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.1.tgz#9c7b53dc3b44dd9ae200255cc3b398874918a6ca"
- integrity sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==
+ version "17.13.3"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec"
+ integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==
dependencies:
"@hapi/hoek" "^9.3.0"
"@hapi/topo" "^5.1.0"
@@ -5818,6 +6034,11 @@ joi@^17.11.0:
"@sideway/formula" "^3.0.1"
"@sideway/pinpoint" "^2.0.0"
+jose@^4.15.5:
+ version "4.15.9"
+ resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.9.tgz#9b68eda29e9a0614c042fa29387196c7dd800100"
+ integrity sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==
+
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -5828,7 +6049,7 @@ js-tokens@^9.0.0:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-9.0.0.tgz#0f893996d6f3ed46df7f0a3b12a03f5fd84223c1"
integrity sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==
-js-yaml@4.1.0, js-yaml@^4.1.0:
+js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
@@ -5860,11 +6081,6 @@ json-parse-even-better-errors@^2.3.0:
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
-json-parse-even-better-errors@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da"
- integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==
-
json-rpc-2.0@^1.6.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/json-rpc-2.0/-/json-rpc-2.0-1.7.0.tgz#840deb0bc168463e12bceb462f7fe225e793fc17"
@@ -5880,6 +6096,11 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+json-stringify-safe@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
+
json5@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
@@ -5892,6 +6113,13 @@ json5@^2.2.3:
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
jsonfile@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
@@ -5921,18 +6149,18 @@ jszip@^3.10.1:
readable-stream "~2.3.6"
setimmediate "^1.0.5"
-keyv@^4.5.3:
+junk@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1"
+ integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==
+
+keyv@^4.0.0, keyv@^4.5.3:
version "4.5.4"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
dependencies:
json-buffer "3.0.1"
-ky@^0.33.0:
- version "0.33.3"
- resolved "https://registry.yarnpkg.com/ky/-/ky-0.33.3.tgz#bf1ad322a3f2c3428c13cfa4b3af95e6c4a2f543"
- integrity sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==
-
language-subtag-registry@^0.3.20:
version "0.3.23"
resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7"
@@ -5945,13 +6173,6 @@ language-tags@^1.0.9:
dependencies:
language-subtag-registry "^0.3.20"
-lazystream@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638"
- integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==
- dependencies:
- readable-stream "^2.0.5"
-
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@@ -5982,10 +6203,27 @@ lines-and-columns@^1.1.6:
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
-lines-and-columns@^2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42"
- integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==
+listr2@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/listr2/-/listr2-7.0.2.tgz#3aa3e1549dfaf3c57ab5eeaba754da3b87f33063"
+ integrity sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==
+ dependencies:
+ cli-truncate "^3.1.0"
+ colorette "^2.0.20"
+ eventemitter3 "^5.0.1"
+ log-update "^5.0.1"
+ rfdc "^1.3.0"
+ wrap-ansi "^8.1.0"
+
+load-json-file@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+ integrity sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ strip-bom "^3.0.0"
local-pkg@^0.5.0:
version "0.5.0"
@@ -5995,14 +6233,20 @@ local-pkg@^0.5.0:
mlly "^1.4.2"
pkg-types "^1.0.3"
-locate-app@^2.1.0:
- version "2.4.15"
- resolved "https://registry.yarnpkg.com/locate-app/-/locate-app-2.4.15.tgz#e64c4fafea3e41bab4a18ed98df79e6bfe6f6566"
- integrity sha512-oAGHATXPUHSQ74Om+3dXBRNYtCzU7Wzuhlj/WIZchqHb/5/TGJRzLEtHipMDOak0UZG9U365RMXyBzgV/fhOww==
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==
dependencies:
- "@promptbook/utils" "0.50.0-10"
- type-fest "2.13.0"
- userhome "1.0.0"
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
locate-path@^6.0.0:
version "6.0.0"
@@ -6011,18 +6255,6 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
-locate-path@^7.1.0:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a"
- integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==
- dependencies:
- p-locate "^6.0.0"
-
-lodash.clonedeep@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
- integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
-
lodash.curry@^4.0.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170"
@@ -6033,47 +6265,27 @@ lodash.debounce@^4.0.8:
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
-lodash.flattendeep@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
- integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==
-
lodash.flow@^3.3.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a"
integrity sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==
-lodash.isequal@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
- integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
+lodash.get@^4.0.0:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
+ integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==
lodash.merge@^4.6.2:
version "4.6.2"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-lodash.pickby@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff"
- integrity sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==
-
-lodash.union@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
- integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==
-
-lodash.zip@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020"
- integrity sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==
-
-lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.2, lodash@^4.17.21:
+lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.2, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-log-symbols@4.1.0, log-symbols@^4.1.0:
+log-symbols@^4.0.0, log-symbols@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
@@ -6081,15 +6293,16 @@ log-symbols@4.1.0, log-symbols@^4.1.0:
chalk "^4.1.0"
is-unicode-supported "^0.1.0"
-loglevel-plugin-prefix@^0.8.4:
- version "0.8.4"
- resolved "https://registry.yarnpkg.com/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz#2fe0e05f1a820317d98d8c123e634c1bd84ff644"
- integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==
-
-loglevel@^1.6.0:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.1.tgz#d63976ac9bcd03c7c873116d41c2a85bafff1be7"
- integrity sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==
+log-update@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-5.0.1.tgz#9e928bf70cb183c1f0c9e91d9e6b7115d597ce09"
+ integrity sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==
+ dependencies:
+ ansi-escapes "^5.0.0"
+ cli-cursor "^4.0.0"
+ slice-ansi "^5.0.0"
+ strip-ansi "^7.0.1"
+ wrap-ansi "^8.0.1"
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
@@ -6105,15 +6318,15 @@ loupe@^2.3.6, loupe@^2.3.7:
dependencies:
get-func-name "^2.0.1"
-lowercase-keys@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2"
- integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==
+lowercase-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
+ integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
-lru-cache@^10.0.1, lru-cache@^10.2.0:
- version "10.2.2"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878"
- integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==
+lru-cache@^10.2.0:
+ version "10.4.3"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
+ integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
lru-cache@^5.1.1:
version "5.1.1"
@@ -6122,7 +6335,14 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
-lru-cache@^7.14.1:
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+lru-cache@^7.7.1:
version "7.18.3"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
@@ -6133,17 +6353,72 @@ lz-string@^1.5.0:
integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
magic-string@^0.30.5:
- version "0.30.10"
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e"
- integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==
+ version "0.30.11"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.11.tgz#301a6f93b3e8c2cb13ac1a7a673492c0dfd12954"
+ integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==
dependencies:
- "@jridgewell/sourcemap-codec" "^1.4.15"
+ "@jridgewell/sourcemap-codec" "^1.5.0"
make-error@^1.1.1:
version "1.3.6"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
+make-fetch-happen@^10.0.3:
+ version "10.2.1"
+ resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164"
+ integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==
+ dependencies:
+ agentkeepalive "^4.2.1"
+ cacache "^16.1.0"
+ http-cache-semantics "^4.1.0"
+ http-proxy-agent "^5.0.0"
+ https-proxy-agent "^5.0.0"
+ is-lambda "^1.0.1"
+ lru-cache "^7.7.1"
+ minipass "^3.1.6"
+ minipass-collect "^1.0.2"
+ minipass-fetch "^2.0.3"
+ minipass-flush "^1.0.5"
+ minipass-pipeline "^1.2.4"
+ negotiator "^0.6.3"
+ promise-retry "^2.0.1"
+ socks-proxy-agent "^7.0.0"
+ ssri "^9.0.0"
+
+map-age-cleaner@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
+ integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
+ dependencies:
+ p-defer "^1.0.0"
+
+matcher@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca"
+ integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==
+ dependencies:
+ escape-string-regexp "^4.0.0"
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
+
+mem@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
+ integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
+ dependencies:
+ map-age-cleaner "^0.1.1"
+ mimic-fn "^2.0.0"
+ p-is-promise "^2.0.0"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
+
merge-stream@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@@ -6159,6 +6434,11 @@ meshoptimizer@~0.18.1:
resolved "https://registry.yarnpkg.com/meshoptimizer/-/meshoptimizer-0.18.1.tgz#cdb90907f30a7b5b1190facd3b7ee6b7087797d8"
integrity sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
+
micromatch@^4.0.4, micromatch@^4.0.5:
version "4.0.7"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
@@ -6172,19 +6452,19 @@ mime-db@1.52.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-mime-types@^2.1.12:
+mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
-mime@^1.6.0:
+mime@1.6.0, mime@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
-mimic-fn@^2.1.0:
+mimic-fn@^2.0.0, mimic-fn@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
@@ -6194,28 +6474,21 @@ mimic-fn@^4.0.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
+mimic-response@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
+ integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
+
mimic-response@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
-mimic-response@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f"
- integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==
-
min-indent@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
-minimatch@5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b"
- integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==
- dependencies:
- brace-expansion "^2.0.1"
-
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
@@ -6223,33 +6496,65 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
dependencies:
brace-expansion "^1.1.7"
-minimatch@^5.0.1, minimatch@^5.1.0:
+minimatch@^5.0.1:
version "5.1.6"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
dependencies:
brace-expansion "^2.0.1"
-minimatch@^9.0.0, minimatch@^9.0.4:
- version "9.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51"
- integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==
+minimatch@^9.0.3, minimatch@^9.0.4:
+ version "9.0.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+ integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
dependencies:
brace-expansion "^2.0.1"
-minimatch@~3.0.2:
- version "3.0.8"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1"
- integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==
- dependencies:
- brace-expansion "^1.1.7"
-
minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8:
version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-minipass@^3.0.0:
+minipass-collect@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
+ integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass-fetch@^2.0.3:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add"
+ integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==
+ dependencies:
+ minipass "^3.1.6"
+ minipass-sized "^1.0.3"
+ minizlib "^2.1.2"
+ optionalDependencies:
+ encoding "^0.1.13"
+
+minipass-flush@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
+ integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass-pipeline@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c"
+ integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass-sized@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70"
+ integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6:
version "3.3.6"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
@@ -6266,7 +6571,7 @@ minipass@^5.0.0:
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
-minizlib@^2.1.1:
+minizlib@^2.1.1, minizlib@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
@@ -6274,29 +6579,19 @@ minizlib@^2.1.1:
minipass "^3.0.0"
yallist "^4.0.0"
-mitt@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.0.tgz#69ef9bd5c80ff6f57473e8d89326d01c414be0bd"
- integrity sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==
-
-mkdirp-classic@^0.5.2:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
- integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
-
-mkdirp@^0.5.6:
+mkdirp@^0.5.1, mkdirp@^0.5.6:
version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies:
minimist "^1.2.6"
-mkdirp@^1.0.3:
+mkdirp@^1.0.3, mkdirp@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-mlly@^1.4.2, mlly@^1.7.0:
+mlly@^1.4.2, mlly@^1.7.1:
version "1.7.1"
resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.1.tgz#e0336429bb0731b6a8e887b438cbdae522c8f32f"
integrity sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==
@@ -6306,51 +6601,28 @@ mlly@^1.4.2, mlly@^1.7.0:
pkg-types "^1.1.1"
ufo "^1.5.3"
-mocha@^10.0.0:
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.4.0.tgz#ed03db96ee9cfc6d20c56f8e2af07b961dbae261"
- integrity sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==
- dependencies:
- ansi-colors "4.1.1"
- browser-stdout "1.3.1"
- chokidar "3.5.3"
- debug "4.3.4"
- diff "5.0.0"
- escape-string-regexp "4.0.0"
- find-up "5.0.0"
- glob "8.1.0"
- he "1.2.0"
- js-yaml "4.1.0"
- log-symbols "4.1.0"
- minimatch "5.0.1"
- ms "2.1.3"
- serialize-javascript "6.0.0"
- strip-json-comments "3.1.1"
- supports-color "8.1.1"
- workerpool "6.2.1"
- yargs "16.2.0"
- yargs-parser "20.2.4"
- yargs-unparser "2.0.0"
-
-moment@2.30.1:
- version "2.30.1"
- resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae"
- integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-ms@2.1.3, ms@^2.1.1:
+ms@2.1.3, ms@^2.0.0, ms@^2.1.1:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-mute-stream@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e"
- integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==
+multicast-dns@^7.2.5:
+ version "7.2.5"
+ resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced"
+ integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==
+ dependencies:
+ dns-packet "^5.2.2"
+ thunky "^1.0.2"
mz@^2.7.0:
version "2.7.0"
@@ -6376,10 +6648,29 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-netmask@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7"
- integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==
+negotiator@0.6.3, negotiator@^0.6.3:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
+ integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+node-abi@^3.45.0:
+ version "3.65.0"
+ resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3"
+ integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==
+ dependencies:
+ semver "^7.3.5"
+
+node-api-version@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.2.0.tgz#5177441da2b1046a4d4547ab9e0972eed7b1ac1d"
+ integrity sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==
+ dependencies:
+ semver "^7.3.5"
node-domexception@^1.0.0:
version "1.0.0"
@@ -6395,27 +6686,51 @@ node-fetch@3.3.2, node-fetch@^3.3.2:
fetch-blob "^3.1.4"
formdata-polyfill "^4.0.10"
-node-fetch@^2.6.1, node-fetch@^2.6.12:
+node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7:
version "2.7.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
dependencies:
whatwg-url "^5.0.0"
-node-releases@^2.0.14:
- version "2.0.14"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
- integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
-
-normalize-package-data@^6.0.0:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.1.tgz#fa69e9452210f0fabf4d79ee08d0c2870c51ed88"
- integrity sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==
+node-gyp@^9.0.0:
+ version "9.4.1"
+ resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185"
+ integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==
dependencies:
- hosted-git-info "^7.0.0"
- is-core-module "^2.8.1"
+ env-paths "^2.2.0"
+ exponential-backoff "^3.1.1"
+ glob "^7.1.4"
+ graceful-fs "^4.2.6"
+ make-fetch-happen "^10.0.3"
+ nopt "^6.0.0"
+ npmlog "^6.0.0"
+ rimraf "^3.0.2"
semver "^7.3.5"
- validate-npm-package-license "^3.0.4"
+ tar "^6.1.2"
+ which "^2.0.2"
+
+node-releases@^2.0.14:
+ version "2.0.18"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
+ integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
+
+nopt@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d"
+ integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==
+ dependencies:
+ abbrev "^1.0.0"
+
+normalize-package-data@^2.3.2:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
@@ -6427,10 +6742,17 @@ normalize-range@^0.1.2:
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
-normalize-url@^8.0.0:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a"
- integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==
+normalize-url@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
+ integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==
+ dependencies:
+ path-key "^2.0.0"
npm-run-path@^5.1.0:
version "5.3.0"
@@ -6439,20 +6761,43 @@ npm-run-path@^5.1.0:
dependencies:
path-key "^4.0.0"
+npmlog@^6.0.0:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830"
+ integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==
+ dependencies:
+ are-we-there-yet "^3.0.0"
+ console-control-strings "^1.1.0"
+ gauge "^4.0.3"
+ set-blocking "^2.0.0"
+
object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+object-hash@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5"
+ integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==
+
object-hash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
-object-inspect@^1.12.0, object-inspect@^1.13.1:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
- integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
+object-inspect@^1.13.1:
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
+ integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
+
+object-is@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07"
+ integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
object-keys@^1.1.1:
version "1.1.1"
@@ -6469,7 +6814,7 @@ object.assign@^4.1.4, object.assign@^4.1.5:
has-symbols "^1.0.3"
object-keys "^1.1.1"
-object.entries@^1.1.7, object.entries@^1.1.8:
+object.entries@^1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41"
integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==
@@ -6497,15 +6842,6 @@ object.groupby@^1.0.1:
define-properties "^1.2.1"
es-abstract "^1.23.2"
-object.hasown@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc"
- integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==
- dependencies:
- define-properties "^1.2.1"
- es-abstract "^1.23.2"
- es-object-atoms "^1.0.0"
-
object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b"
@@ -6515,6 +6851,18 @@ object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
+oidc-token-hash@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz#9a229f0a1ce9d4fc89bcaee5478c97a889e7b7b6"
+ integrity sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==
+
+on-finished@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
+ integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
+ dependencies:
+ ee-first "1.1.1"
+
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@@ -6546,6 +6894,16 @@ opener@^1.5.1:
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
+openid-client@^5.6.5:
+ version "5.6.5"
+ resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.6.5.tgz#c149ad07b9c399476dc347097e297bbe288b8b00"
+ integrity sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==
+ dependencies:
+ jose "^4.15.5"
+ lru-cache "^6.0.0"
+ object-hash "^2.2.0"
+ oidc-token-hash "^5.0.3"
+
optionator@^0.9.3:
version "0.9.4"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
@@ -6558,7 +6916,7 @@ optionator@^0.9.3:
type-check "^0.4.0"
word-wrap "^1.2.5"
-ora@^5.4.1:
+ora@^5.1.0:
version "5.4.1"
resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18"
integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
@@ -6573,30 +6931,47 @@ ora@^5.4.1:
strip-ansi "^6.0.0"
wcwidth "^1.0.1"
-os-tmpdir@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
- integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
+p-cancelable@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf"
+ integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==
-p-cancelable@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050"
- integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==
+p-defer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
+ integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==
-p-limit@^3.0.2:
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==
+
+p-is-promise@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
+ integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-limit@^3.0.2, "p-limit@^3.1.0 ":
version "3.1.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
dependencies:
yocto-queue "^0.1.0"
-p-limit@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644"
- integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==
- dependencies:
- yocto-queue "^1.0.0"
-
p-limit@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-5.0.0.tgz#6946d5b7140b649b7a33a027d89b4c625b3a5985"
@@ -6604,6 +6979,20 @@ p-limit@^5.0.0:
dependencies:
yocto-queue "^1.0.0"
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==
+ dependencies:
+ p-limit "^1.1.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
p-locate@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
@@ -6611,34 +7000,27 @@ p-locate@^5.0.0:
dependencies:
p-limit "^3.0.2"
-p-locate@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f"
- integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==
+p-map@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
dependencies:
- p-limit "^4.0.0"
+ aggregate-error "^3.0.0"
-pac-proxy-agent@^7.0.0, pac-proxy-agent@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz#6b9ddc002ec3ff0ba5fdf4a8a21d363bcc612d75"
- integrity sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==
- dependencies:
- "@tootallnate/quickjs-emscripten" "^0.23.0"
- agent-base "^7.0.2"
- debug "^4.3.4"
- get-uri "^6.0.1"
- http-proxy-agent "^7.0.0"
- https-proxy-agent "^7.0.2"
- pac-resolver "^7.0.0"
- socks-proxy-agent "^8.0.2"
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==
-pac-resolver@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6"
- integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==
- dependencies:
- degenerator "^5.0.0"
- netmask "^2.0.2"
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+package-json-from-dist@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00"
+ integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==
pako@~1.0.2:
version "1.0.11"
@@ -6652,6 +7034,13 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
+parse-author@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-2.0.0.tgz#d3460bf1ddd0dfaeed42da754242e65fb684a81f"
+ integrity sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==
+ dependencies:
+ author-regex "^1.0.0"
+
parse-color@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619"
@@ -6659,6 +7048,13 @@ parse-color@^1.0.0:
dependencies:
color-convert "~0.5.0"
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==
+ dependencies:
+ error-ex "^1.2.0"
+
parse-json@^5.0.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
@@ -6669,37 +7065,36 @@ parse-json@^5.0.0:
json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6"
-parse-json@^7.0.0:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-7.1.1.tgz#68f7e6f0edf88c54ab14c00eb700b753b14e2120"
- integrity sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==
- dependencies:
- "@babel/code-frame" "^7.21.4"
- error-ex "^1.3.2"
- json-parse-even-better-errors "^3.0.0"
- lines-and-columns "^2.0.3"
- type-fest "^3.8.0"
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+ integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==
-parse-ms@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d"
- integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==
+parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
path-exists@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
-path-exists@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7"
- integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==
-
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
+
path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
@@ -6723,6 +7118,18 @@ path-scurry@^1.11.1:
lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
+
+path-type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+ integrity sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==
+ dependencies:
+ pify "^2.0.0"
+
path-type@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
@@ -6738,6 +7145,11 @@ pathval@^1.1.1:
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
+pe-library@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/pe-library/-/pe-library-1.0.1.tgz#02735430885a622576a53cd8827658b7d2fada0e"
+ integrity sha512-nh39Mo1eGWmZS7y+mK/dQIqg7S1lp38DpRxkyoHf0ZcUs/HDc+yyTjuOtTvSMZHmfSLuSQaX945u05Y2Q6UWZg==
+
pend@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
@@ -6753,7 +7165,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-pify@^2.3.0:
+pify@^2.0.0, pify@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
@@ -6770,29 +7182,45 @@ pixelmatch@^5.3.0:
dependencies:
pngjs "^6.0.0"
+pkg-dir@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
pkg-types@^1.0.3, pkg-types@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.1.tgz#07b626880749beb607b0c817af63aac1845a73f2"
- integrity sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.3.tgz#161bb1242b21daf7795036803f28e30222e476e3"
+ integrity sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==
dependencies:
confbox "^0.1.7"
- mlly "^1.7.0"
+ mlly "^1.7.1"
pathe "^1.1.2"
-playwright-core@1.45.1:
- version "1.45.1"
- resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.45.1.tgz#549a2701556b58245cc75263f9fc2795c1158dc1"
- integrity sha512-LF4CUUtrUu2TCpDw4mcrAIuYrEjVDfT1cHbJMfwnE2+1b8PZcFzPNgvZCvq2JfQ4aTjRCCHw5EJ2tmr2NSzdPg==
+playwright-core@1.45.3:
+ version "1.45.3"
+ resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.45.3.tgz#e77bc4c78a621b96c3e629027534ee1d25faac93"
+ integrity sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==
-playwright@1.45.1:
- version "1.45.1"
- resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.45.1.tgz#aaa6b0d6db14796b599d80c6679e63444e942534"
- integrity sha512-Hjrgae4kpSQBr98nhCj3IScxVeVUixqj+5oyif8TdIn2opTCPEzqAqNMeK42i3cWDCVu9MI+ZsGWw+gVR4ISBg==
+playwright@1.45.3:
+ version "1.45.3"
+ resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.45.3.tgz#75143f73093a6e1467f7097083d2f0846fb8dd2f"
+ integrity sha512-QhVaS+lpluxCaioejDZ95l4Y4jSFCsBvl2UZkpeXlzxmqS+aABr5c82YmfMHrL6x27nvrvykJAFpkzT2eWdJww==
dependencies:
- playwright-core "1.45.1"
+ playwright-core "1.45.3"
optionalDependencies:
fsevents "2.3.2"
+plist@^3.0.0, plist@^3.0.5, plist@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9"
+ integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==
+ dependencies:
+ "@xmldom/xmldom" "^0.8.8"
+ base64-js "^1.5.1"
+ xmlbuilder "^15.1.1"
+
pngjs@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821"
@@ -6842,16 +7270,16 @@ postcss-load-config@^4.0.1:
yaml "^2.3.4"
postcss-nested@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c"
- integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131"
+ integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==
dependencies:
- postcss-selector-parser "^6.0.11"
+ postcss-selector-parser "^6.1.1"
-postcss-selector-parser@^6.0.11:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53"
- integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==
+postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38"
+ integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
@@ -6862,9 +7290,9 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^8.4.23, postcss@^8.4.31, postcss@^8.4.39:
- version "8.4.39"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3"
- integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==
+ version "8.4.40"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.40.tgz#eb81f2a4dd7668ed869a6db25999e02e9ad909d8"
+ integrity sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==
dependencies:
nanoid "^3.3.7"
picocolors "^1.0.1"
@@ -6875,16 +7303,18 @@ postinstall-postinstall@^2.1.0:
resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3"
integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==
+postject@^1.0.0-alpha.6:
+ version "1.0.0-alpha.6"
+ resolved "https://registry.yarnpkg.com/postject/-/postject-1.0.0-alpha.6.tgz#9d022332272e2cfce8dea4cfce1ee6dd1b2ee135"
+ integrity sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==
+ dependencies:
+ commander "^9.4.0"
+
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-prettier@2.8.1:
- version "2.8.1"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc"
- integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==
-
prettier@^2.8.8:
version "2.8.8"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
@@ -6908,28 +7338,29 @@ pretty-format@^29.0.0, pretty-format@^29.7.0:
ansi-styles "^5.0.0"
react-is "^18.0.0"
-pretty-ms@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8"
- integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==
- dependencies:
- parse-ms "^2.1.0"
-
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-process@^0.11.10:
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
- integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
-
-progress@2.0.3:
+progress@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==
+
+promise-retry@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22"
+ integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==
+ dependencies:
+ err-code "^2.0.2"
+ retry "^0.12.0"
+
promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
@@ -6946,33 +7377,13 @@ prop-types@^15.7.2, prop-types@^15.8.1:
object-assign "^4.1.1"
react-is "^16.13.1"
-proxy-agent@6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.3.0.tgz#72f7bb20eb06049db79f7f86c49342c34f9ba08d"
- integrity sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==
+proxy-addr@~2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
+ integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
dependencies:
- agent-base "^7.0.2"
- debug "^4.3.4"
- http-proxy-agent "^7.0.0"
- https-proxy-agent "^7.0.0"
- lru-cache "^7.14.1"
- pac-proxy-agent "^7.0.0"
- proxy-from-env "^1.1.0"
- socks-proxy-agent "^8.0.1"
-
-proxy-agent@6.3.1:
- version "6.3.1"
- resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.3.1.tgz#40e7b230552cf44fd23ffaf7c59024b692612687"
- integrity sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==
- dependencies:
- agent-base "^7.0.2"
- debug "^4.3.4"
- http-proxy-agent "^7.0.0"
- https-proxy-agent "^7.0.2"
- lru-cache "^7.14.1"
- pac-proxy-agent "^7.0.1"
- proxy-from-env "^1.1.0"
- socks-proxy-agent "^8.0.2"
+ forwarded "0.2.0"
+ ipaddr.js "1.9.1"
proxy-from-env@^1.1.0:
version "1.1.0"
@@ -6992,56 +7403,49 @@ punycode@^2.1.0:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
-puppeteer-core@^20.9.0:
- version "20.9.0"
- resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-20.9.0.tgz#6f4b420001b64419deab38d398a4d9cd071040e6"
- integrity sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==
- dependencies:
- "@puppeteer/browsers" "1.4.6"
- chromium-bidi "0.4.16"
- cross-fetch "4.0.0"
- debug "4.3.4"
- devtools-protocol "0.0.1147663"
- ws "8.13.0"
-
pure-color@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e"
integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==
+qs@6.11.0:
+ version "6.11.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
+ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
+ dependencies:
+ side-channel "^1.0.4"
+
qs@^6.4.0:
- version "6.12.1"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a"
- integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
+ integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
dependencies:
side-channel "^1.0.6"
-query-selector-shadow-dom@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz#1c7b0058eff4881ac44f45d8f84ede32e9a2f349"
- integrity sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==
-
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-queue-tick@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142"
- integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==
-
quick-lru@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
-randombytes@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
- integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+raw-body@2.5.2:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
+ integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
dependencies:
- safe-buffer "^5.1.0"
+ bytes "3.1.2"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
re-resizable@^6.9.11:
version "6.9.17"
@@ -7129,19 +7533,19 @@ react-refresh@^0.14.2:
integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
react-router-dom@^6.23.1:
- version "6.23.1"
- resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.23.1.tgz#30cbf266669693e9492aa4fc0dde2541ab02322f"
- integrity sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.26.0.tgz#8debe13295c58605c04f93018d659a763245e58c"
+ integrity sha512-RRGUIiDtLrkX3uYcFiCIxKFWMcWQGMojpYZfcstc63A1+sSnVgILGIm9gNUA6na3Fm1QuPGSBQH2EMbAZOnMsQ==
dependencies:
- "@remix-run/router" "1.16.1"
- react-router "6.23.1"
+ "@remix-run/router" "1.19.0"
+ react-router "6.26.0"
-react-router@6.23.1:
- version "6.23.1"
- resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.23.1.tgz#d08cbdbd9d6aedc13eea6e94bc6d9b29cb1c4be9"
- integrity sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==
+react-router@6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.26.0.tgz#d5af4c46835b202348ef2b7ddacd32a2db539fde"
+ integrity sha512-wVQq0/iFYd3iZ9H2l3N3k4PL8EEHcb0XlU2Na8nEwmiXgIUElEH6gaJDtUQxJ+JFzmIXaQjfdpcGWaM6IoQGxg==
dependencies:
- "@remix-run/router" "1.16.1"
+ "@remix-run/router" "1.19.0"
react-textarea-autosize@^8.3.2:
version "8.5.3"
@@ -7159,6 +7563,13 @@ react@^18.3.1:
dependencies:
loose-envify "^1.1.0"
+read-binary-file-arch@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz#959c4637daa932280a9b911b1a6766a7e44288fc"
+ integrity sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==
+ dependencies:
+ debug "^4.3.4"
+
read-cache@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
@@ -7166,26 +7577,33 @@ read-cache@^1.0.0:
dependencies:
pify "^2.3.0"
-read-pkg-up@10.0.0:
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-10.0.0.tgz#0542d21ff1001d2bfff1f6eac8b4d1d1dc486617"
- integrity sha512-jgmKiS//w2Zs+YbX039CorlkOp8FIVbSAN8r8GJHDsGlmNPXo+VeHkqAwCiQVTTx5/LwLZTcEw59z3DvcLbr0g==
+read-pkg-up@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+ integrity sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==
dependencies:
- find-up "^6.3.0"
- read-pkg "^8.0.0"
- type-fest "^3.12.0"
+ find-up "^2.0.0"
+ read-pkg "^2.0.0"
-read-pkg@^8.0.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-8.1.0.tgz#6cf560b91d90df68bce658527e7e3eee75f7c4c7"
- integrity sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==
+read-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+ integrity sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==
dependencies:
- "@types/normalize-package-data" "^2.4.1"
- normalize-package-data "^6.0.0"
- parse-json "^7.0.0"
- type-fest "^4.2.0"
+ load-json-file "^2.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^2.0.0"
-readable-stream@^2.0.5, readable-stream@~2.3.6:
+readable-stream@^3.4.0, readable-stream@^3.6.0:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
+ integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readable-stream@~2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
@@ -7198,33 +7616,6 @@ readable-stream@^2.0.5, readable-stream@~2.3.6:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readable-stream@^3.4.0:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
- integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
-readable-stream@^4.0.0:
- version "4.5.2"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09"
- integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==
- dependencies:
- abort-controller "^3.0.0"
- buffer "^6.0.3"
- events "^3.3.0"
- process "^0.11.10"
- string_decoder "^1.3.0"
-
-readdir-glob@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584"
- integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==
- dependencies:
- minimatch "^5.1.0"
-
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -7243,12 +7634,12 @@ recast@^0.23.1:
tiny-invariant "^1.3.3"
tslib "^2.0.1"
-recursive-readdir@^2.2.3:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372"
- integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==
+rechoir@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22"
+ integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==
dependencies:
- minimatch "^3.0.5"
+ resolve "^1.20.0"
redent@^3.0.0:
version "3.0.0"
@@ -7295,7 +7686,7 @@ regenerator-transform@^0.15.2:
dependencies:
"@babel/runtime" "^7.8.4"
-regexp.prototype.flags@^1.5.2:
+regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334"
integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
@@ -7334,17 +7725,39 @@ requires-port@^1.0.0:
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
-resolve-alpn@^1.2.0:
+resedit@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/resedit/-/resedit-2.0.2.tgz#875adfb3eb975e27e4d0bec1214b8ccc37509d5d"
+ integrity sha512-UKTnq602iVe+W5SyRAQx/WdWMnlDiONfXBLFg/ur4QE4EQQ8eP7Jgm5mNXdK12kKawk1vvXPja2iXKqZiGDW6Q==
+ dependencies:
+ pe-library "^1.0.1"
+
+resolve-alpn@^1.0.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
+resolve-dir@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+ integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==
+ dependencies:
+ expand-tilde "^2.0.0"
+ global-modules "^1.0.0"
+
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
-resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4:
+resolve-package@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-package/-/resolve-package-1.0.1.tgz#686f70b188bd7d675f5bbc4282ccda060abb9d27"
+ integrity sha512-rzB7NnQpOkPHBWFPP3prUMqOP6yg3HkRGgcvR+lDyvyHoY3fZLFLYDkPXh78SPVBAE6VTCk/V+j8we4djg6o4g==
+ dependencies:
+ get-installed-path "^2.0.3"
+
+resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4:
version "1.22.8"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
@@ -7362,19 +7775,12 @@ resolve@^2.0.0-next.5:
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
-responselike@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626"
- integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==
+responselike@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc"
+ integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==
dependencies:
- lowercase-keys "^3.0.0"
-
-resq@^1.9.1:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/resq/-/resq-1.11.0.tgz#edec8c58be9af800fd628118c0ca8815283de196"
- integrity sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==
- dependencies:
- fast-deep-equal "^2.0.1"
+ lowercase-keys "^2.0.0"
restore-cursor@^3.1.0:
version "3.1.0"
@@ -7384,15 +7790,28 @@ restore-cursor@^3.1.0:
onetime "^5.1.0"
signal-exit "^3.0.2"
+restore-cursor@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9"
+ integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+retry@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
+ integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==
+
reusify@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-rgb2hex@0.2.5:
- version "0.2.5"
- resolved "https://registry.yarnpkg.com/rgb2hex/-/rgb2hex-0.2.5.tgz#f82230cd3ab1364fa73c99be3a691ed688f8dbdc"
- integrity sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==
+rfdc@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
+ integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
rimraf@^3.0.2:
version "3.0.2"
@@ -7401,6 +7820,25 @@ rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
+rimraf@~2.6.2:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
+ integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+ dependencies:
+ glob "^7.1.3"
+
+roarr@^2.15.3:
+ version "2.15.4"
+ resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd"
+ integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==
+ dependencies:
+ boolean "^3.0.1"
+ detect-node "^2.0.4"
+ globalthis "^1.0.1"
+ json-stringify-safe "^5.0.1"
+ semver-compare "^1.0.0"
+ sprintf-js "^1.1.2"
+
rollup@^2.77.2:
version "2.79.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
@@ -7409,35 +7847,30 @@ rollup@^2.77.2:
fsevents "~2.3.2"
rollup@^4.13.0:
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.18.0.tgz#497f60f0c5308e4602cf41136339fbf87d5f5dda"
- integrity sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==
+ version "4.19.2"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.19.2.tgz#4985cd2028965157e8d674a70e49f33aca9038eb"
+ integrity sha512-6/jgnN1svF9PjNYJ4ya3l+cqutg49vOZ4rVgsDKxdl+5gpGPnByFXWGyfH9YGx9i3nfBwSu1Iyu6vGwFFA0BdQ==
dependencies:
"@types/estree" "1.0.5"
optionalDependencies:
- "@rollup/rollup-android-arm-eabi" "4.18.0"
- "@rollup/rollup-android-arm64" "4.18.0"
- "@rollup/rollup-darwin-arm64" "4.18.0"
- "@rollup/rollup-darwin-x64" "4.18.0"
- "@rollup/rollup-linux-arm-gnueabihf" "4.18.0"
- "@rollup/rollup-linux-arm-musleabihf" "4.18.0"
- "@rollup/rollup-linux-arm64-gnu" "4.18.0"
- "@rollup/rollup-linux-arm64-musl" "4.18.0"
- "@rollup/rollup-linux-powerpc64le-gnu" "4.18.0"
- "@rollup/rollup-linux-riscv64-gnu" "4.18.0"
- "@rollup/rollup-linux-s390x-gnu" "4.18.0"
- "@rollup/rollup-linux-x64-gnu" "4.18.0"
- "@rollup/rollup-linux-x64-musl" "4.18.0"
- "@rollup/rollup-win32-arm64-msvc" "4.18.0"
- "@rollup/rollup-win32-ia32-msvc" "4.18.0"
- "@rollup/rollup-win32-x64-msvc" "4.18.0"
+ "@rollup/rollup-android-arm-eabi" "4.19.2"
+ "@rollup/rollup-android-arm64" "4.19.2"
+ "@rollup/rollup-darwin-arm64" "4.19.2"
+ "@rollup/rollup-darwin-x64" "4.19.2"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.19.2"
+ "@rollup/rollup-linux-arm-musleabihf" "4.19.2"
+ "@rollup/rollup-linux-arm64-gnu" "4.19.2"
+ "@rollup/rollup-linux-arm64-musl" "4.19.2"
+ "@rollup/rollup-linux-powerpc64le-gnu" "4.19.2"
+ "@rollup/rollup-linux-riscv64-gnu" "4.19.2"
+ "@rollup/rollup-linux-s390x-gnu" "4.19.2"
+ "@rollup/rollup-linux-x64-gnu" "4.19.2"
+ "@rollup/rollup-linux-x64-musl" "4.19.2"
+ "@rollup/rollup-win32-arm64-msvc" "4.19.2"
+ "@rollup/rollup-win32-ia32-msvc" "4.19.2"
+ "@rollup/rollup-win32-x64-msvc" "4.19.2"
fsevents "~2.3.2"
-run-async@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/run-async/-/run-async-3.0.0.tgz#42a432f6d76c689522058984384df28be379daad"
- integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==
-
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@@ -7452,11 +7885,6 @@ rxjs@^7.8.1:
dependencies:
tslib "^2.1.0"
-safaridriver@^0.1.0:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/safaridriver/-/safaridriver-0.1.2.tgz#166571d5881c7d6f884900d92d51ee1309c05aa4"
- integrity sha512-4R309+gWflJktzPXBQCobbWEHlzC4aK3a+Ov3tz2Ib2aBxiwd11phkdIBH1l0EO22x24CJMUQkpKFumRriCSRg==
-
safe-array-concat@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb"
@@ -7472,7 +7900,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@^5.1.0, safe-buffer@~5.2.0:
+safe-buffer@5.2.1, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@@ -7503,29 +7931,66 @@ secure-compare@3.0.1:
resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3"
integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==
-semver@^6.3.1:
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==
+
+"semver@2 || 3 || 4 || 5", semver@^5.5.0:
+ version "5.7.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^6.2.0, semver@^6.3.1:
version "6.3.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.3.5, semver@^7.3.7:
- version "7.6.2"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
- integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
+semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7:
+ version "7.6.3"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
+ integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
-serialize-error@^11.0.1:
- version "11.0.3"
- resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-11.0.3.tgz#b54f439e15da5b4961340fbbd376b6b04aa52e92"
- integrity sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==
+send@0.18.0:
+ version "0.18.0"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
+ integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
dependencies:
- type-fest "^2.12.2"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "2.4.1"
+ range-parser "~1.2.1"
+ statuses "2.0.1"
-serialize-javascript@6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
- integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
+serialize-error@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18"
+ integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==
dependencies:
- randombytes "^2.1.0"
+ type-fest "^0.13.1"
+
+serve-static@1.15.0:
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
+ integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.18.0"
+
+set-blocking@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
set-function-length@^1.2.1:
version "1.2.2"
@@ -7554,6 +8019,18 @@ setimmediate@^1.0.5:
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
+ dependencies:
+ shebang-regex "^1.0.0"
+
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -7561,6 +8038,11 @@ shebang-command@^2.0.0:
dependencies:
shebang-regex "^3.0.0"
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
+
shebang-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
@@ -7581,7 +8063,7 @@ siginfo@^2.0.0:
resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30"
integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==
-signal-exit@^3.0.2:
+signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.7:
version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
@@ -7601,21 +8083,29 @@ slash@^3.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+slice-ansi@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a"
+ integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==
+ dependencies:
+ ansi-styles "^6.0.0"
+ is-fullwidth-code-point "^4.0.0"
+
smart-buffer@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
-socks-proxy-agent@^8.0.1, socks-proxy-agent@^8.0.2:
- version "8.0.3"
- resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz#6b2da3d77364fde6292e810b496cb70440b9b89d"
- integrity sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==
+socks-proxy-agent@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6"
+ integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==
dependencies:
- agent-base "^7.1.1"
- debug "^4.3.4"
- socks "^2.7.1"
+ agent-base "^6.0.2"
+ debug "^4.3.3"
+ socks "^2.6.2"
-socks@^2.7.1:
+socks@^2.6.2:
version "2.8.3"
resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5"
integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==
@@ -7628,16 +8118,19 @@ source-map-js@^1.2.0:
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
-source-map@~0.6.1:
+source-map-support@^0.5.13:
+ version "0.5.21"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+ integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map@^0.6.0, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-spacetrim@0.11.25:
- version "0.11.25"
- resolved "https://registry.yarnpkg.com/spacetrim/-/spacetrim-0.11.25.tgz#9c941f36ea22c7ac3d1b0e63b2d5b5ec16e6cb6f"
- integrity sha512-SWxXDROciuJs9YEYXUBjot5k/cqNGPPbT3QmkInFne4AGc1y+76It+jqU8rfsXKt57RRiunzZn1m9+KfuuNklw==
-
spdx-correct@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c"
@@ -7664,16 +8157,18 @@ spdx-license-ids@^3.0.0:
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326"
integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==
-split2@^4.1.0, split2@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4"
- integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==
-
-sprintf-js@^1.1.3:
+sprintf-js@^1.1.2, sprintf-js@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a"
integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
+ssri@^9.0.0:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057"
+ integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==
+ dependencies:
+ minipass "^3.1.1"
+
stack-utils@^2.0.3:
version "2.0.6"
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
@@ -7686,33 +8181,29 @@ stackback@0.0.2:
resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b"
integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
std-env@^3.5.0:
version "3.7.0"
resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2"
integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==
-stream-buffers@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-3.0.3.tgz#9fc6ae267d9c4df1190a781e011634cac58af3cd"
- integrity sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==
-
-streamx@^2.15.0, streamx@^2.18.0:
- version "2.18.0"
- resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.18.0.tgz#5bc1a51eb412a667ebfdcd4e6cf6a6fc65721ac7"
- integrity sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==
+stop-iteration-iterator@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
+ integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==
dependencies:
- fast-fifo "^1.3.2"
- queue-tick "^1.0.1"
- text-decoder "^1.1.0"
- optionalDependencies:
- bare-events "^2.2.0"
+ internal-slot "^1.0.4"
string-natural-compare@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
-"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -7721,7 +8212,7 @@ string-natural-compare@^3.0.1:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
-string-width@^5.0.1, string-width@^5.1.2:
+string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
@@ -7730,6 +8221,14 @@ string-width@^5.0.1, string-width@^5.1.2:
emoji-regex "^9.2.2"
strip-ansi "^7.0.1"
+string.prototype.includes@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f"
+ integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
+
string.prototype.matchall@^4.0.11:
version "4.0.11"
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a"
@@ -7748,6 +8247,14 @@ string.prototype.matchall@^4.0.11:
set-function-name "^2.0.2"
side-channel "^1.0.6"
+string.prototype.repeat@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#e90872ee0308b29435aa26275f6e1b762daee01a"
+ integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
+
string.prototype.trim@^1.2.9:
version "1.2.9"
resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4"
@@ -7776,7 +8283,7 @@ string.prototype.trimstart@^1.0.8:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
-string_decoder@^1.1.1, string_decoder@^1.3.0:
+string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
@@ -7797,7 +8304,7 @@ string_decoder@~1.1.1:
dependencies:
ansi-regex "^5.0.1"
-strip-ansi@^7.0.1, strip-ansi@^7.1.0:
+strip-ansi@^7.0.1:
version "7.1.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
@@ -7809,6 +8316,11 @@ strip-bom@^3.0.0:
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==
+
strip-final-newline@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
@@ -7821,7 +8333,7 @@ strip-indent@^3.0.0:
dependencies:
min-indent "^1.0.0"
-strip-json-comments@3.1.1, strip-json-comments@^3.1.1:
+strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
@@ -7833,6 +8345,13 @@ strip-literal@^2.0.0:
dependencies:
js-tokens "^9.0.0"
+strip-outer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631"
+ integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==
+ dependencies:
+ escape-string-regexp "^1.0.2"
+
style-mod@^4.0.0, style-mod@^4.1.0:
version "4.1.2"
resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.1.2.tgz#ca238a1ad4786520f7515a8539d5a63691d7bf67"
@@ -7851,12 +8370,17 @@ sucrase@^3.32.0:
pirates "^4.0.1"
ts-interface-checker "^0.1.9"
-supports-color@8.1.1:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
- integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
+sudo-prompt@^9.1.1:
+ version "9.2.1"
+ resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd"
+ integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==
+
+sumchecker@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42"
+ integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==
dependencies:
- has-flag "^4.0.0"
+ debug "^4.1.0"
supports-color@^5.3.0:
version "5.5.0"
@@ -7878,9 +8402,9 @@ supports-preserve-symlinks-flag@^1.0.0:
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
tailwindcss@^3.4.1:
- version "3.4.4"
- resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.4.tgz#351d932273e6abfa75ce7d226b5bf3a6cb257c05"
- integrity sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==
+ version "3.4.7"
+ resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.7.tgz#6092f18767f5933f59375b9afe558e592fc77201"
+ integrity sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==
dependencies:
"@alloc/quick-lru" "^5.2.0"
arg "^5.0.2"
@@ -7905,36 +8429,7 @@ tailwindcss@^3.4.1:
resolve "^1.22.2"
sucrase "^3.32.0"
-tar-fs@3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.4.tgz#a21dc60a2d5d9f55e0089ccd78124f1d3771dbbf"
- integrity sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==
- dependencies:
- mkdirp-classic "^0.5.2"
- pump "^3.0.0"
- tar-stream "^3.1.5"
-
-tar-fs@^3.0.6:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.6.tgz#eaccd3a67d5672f09ca8e8f9c3d2b89fa173f217"
- integrity sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==
- dependencies:
- pump "^3.0.0"
- tar-stream "^3.1.5"
- optionalDependencies:
- bare-fs "^2.1.1"
- bare-path "^2.1.0"
-
-tar-stream@^3.0.0, tar-stream@^3.1.5:
- version "3.1.7"
- resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b"
- integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==
- dependencies:
- b4a "^1.6.4"
- fast-fifo "^1.2.0"
- streamx "^2.15.0"
-
-tar@^6.1.11:
+tar@^6.0.5, tar@^6.1.11, tar@^6.1.2:
version "6.2.1"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a"
integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==
@@ -7946,12 +8441,13 @@ tar@^6.1.11:
mkdirp "^1.0.3"
yallist "^4.0.0"
-text-decoder@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.1.0.tgz#3379e728fcf4d3893ec1aea35e8c2cac215ef190"
- integrity sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==
+temp@^0.9.0:
+ version "0.9.4"
+ resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620"
+ integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==
dependencies:
- b4a "^1.6.4"
+ mkdirp "^0.5.1"
+ rimraf "~2.6.2"
text-segmentation@^1.0.3:
version "1.0.3"
@@ -7984,10 +8480,15 @@ three@^0.166.1:
resolved "https://registry.yarnpkg.com/three/-/three-0.166.1.tgz#322cfc48fff4e751cd47d61fd1558c387d098d7c"
integrity sha512-LtuafkKHHzm61AQA1be2MAYIw1IjmhOUxhBa0prrLpEMWbV7ijvxCRHjSgHPGp2493wLBzwKV46tA9nivLEgKg==
-through@^2.3.8:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+thunky@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
+ integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
+
+tiny-each-async@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/tiny-each-async/-/tiny-each-async-2.0.3.tgz#8ebbbfd6d6295f1370003fbb37162afe5a0a51d1"
+ integrity sha512-5ROII7nElnAirvFn8g7H7MtpfV1daMcyfTGQwsn/x2VtyV+VPiO5CjReCJtWLvoKTDEDmZocf3cNPraiMnBXLA==
tiny-invariant@^1.3.3:
version "1.3.3"
@@ -8009,12 +8510,17 @@ tinyspy@^2.2.0:
resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1"
integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==
-tmp@^0.0.33:
- version "0.0.33"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
- integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+tmp-promise@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7"
+ integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==
dependencies:
- os-tmpdir "~1.0.2"
+ tmp "^0.2.0"
+
+tmp@^0.2.0:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae"
+ integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==
to-fast-properties@^2.0.0:
version "2.0.0"
@@ -8028,17 +8534,29 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+trim-repeated@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
+ integrity sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==
+ dependencies:
+ escape-string-regexp "^1.0.2"
+
ts-interface-checker@^0.1.9:
version "0.1.13"
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
-ts-node@^10.9.1:
+ts-node@^10.0.0, ts-node@^10.9.1:
version "10.9.2"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f"
integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==
@@ -8058,9 +8576,9 @@ ts-node@^10.9.1:
yn "3.1.1"
tsconfck@^3.0.3:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.1.0.tgz#30c63b15972b591adb41dc9a339a02743d090c81"
- integrity sha512-CMjc5zMnyAjcS9sPLytrbFmj89st2g+JYtY/c02ug4Q+CZaAtCgbyviI0n1YvjZE/pzoc6FbNsINS13DOL1B9w==
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.1.1.tgz#c7284913262c293b43b905b8b034f524de4a3162"
+ integrity sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==
tsconfig-paths@^3.15.0:
version "3.15.0"
@@ -8101,40 +8619,33 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
-type-detect@^4.0.0, type-detect@^4.0.8:
- version "4.0.8"
- resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
- integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+type-detect@^4.0.0, type-detect@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c"
+ integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==
-type-fest@2.13.0:
- version "2.13.0"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.13.0.tgz#d1ecee38af29eb2e863b22299a3d68ef30d2abfb"
- integrity sha512-lPfAm42MxE4/456+QyIaaVBAwgpJb6xZ8PRu09utnhPdWwcyj9vgy6Sq0Z5yNbJ21EdxB5dRU/Qg8bsyAMtlcw==
+type-fest@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
+ integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
-type-fest@^0.21.3:
- version "0.21.3"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
- integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
+type-fest@^1.0.2:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1"
+ integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==
-type-fest@^2.12.2:
- version "2.19.0"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
- integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
-
-type-fest@^3.12.0, type-fest@^3.8.0:
- version "3.13.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706"
- integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==
-
-type-fest@^4.2.0:
- version "4.20.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.20.1.tgz#d97bb1e923bf524e5b4b43421d586760fb2ee8be"
- integrity sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==
+type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
typed-array-buffer@^1.0.2:
version "1.0.2"
@@ -8180,10 +8691,10 @@ typed-array-length@^1.0.6:
is-typed-array "^1.1.13"
possible-typed-array-names "^1.0.0"
-typescript@^5.4.5:
- version "5.4.5"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611"
- integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==
+typescript@^5.0.0:
+ version "5.5.4"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba"
+ integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==
ua-parser-js@^1.0.35, ua-parser-js@^1.0.37:
version "1.0.38"
@@ -8191,9 +8702,9 @@ ua-parser-js@^1.0.35, ua-parser-js@^1.0.37:
integrity sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==
ufo@^1.5.3:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344"
- integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"
+ integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==
unbox-primitive@^1.0.2:
version "1.0.2"
@@ -8205,19 +8716,16 @@ unbox-primitive@^1.0.2:
has-symbols "^1.0.3"
which-boxed-primitive "^1.0.2"
-unbzip2-stream@1.4.3:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
- integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==
- dependencies:
- buffer "^5.2.1"
- through "^2.3.8"
-
undici-types@~5.26.4:
version "5.26.5"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+undici-types@~6.11.1:
+ version "6.11.1"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.11.1.tgz#432ea6e8efd54a48569705a699e62d8f4981b197"
+ integrity sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==
+
unicode-canonical-property-names-ecmascript@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
@@ -8248,18 +8756,34 @@ union@~0.5.0:
dependencies:
qs "^6.4.0"
+unique-filename@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2"
+ integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==
+ dependencies:
+ unique-slug "^3.0.0"
+
+unique-slug@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9"
+ integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
universalify@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
-update-browserslist-db@^1.0.16:
- version "1.0.16"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356"
- integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==
- dependencies:
- escalade "^3.1.2"
- picocolors "^1.0.1"
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
update-browserslist-db@^1.1.0:
version "1.1.0"
@@ -8303,16 +8827,24 @@ use-sync-external-store@^1.0.0:
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9"
integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==
-userhome@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/userhome/-/userhome-1.0.0.tgz#b6491ff12d21a5e72671df9ccc8717e1c6688c0b"
- integrity sha512-ayFKY3H+Pwfy4W98yPdtH1VqH4psDeyW8lYYFzfecR9d6hqLpqhecktvYR3SEEXt7vG0S1JEpciI3g94pMErig==
+username@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/username/-/username-5.1.0.tgz#a7f9325adce2d0166448cdd55d4985b1360f2508"
+ integrity sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==
+ dependencies:
+ execa "^1.0.0"
+ mem "^4.3.0"
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
+
utrie@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
@@ -8330,7 +8862,7 @@ v8-compile-cache-lib@^3.0.1:
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
-validate-npm-package-license@^3.0.4:
+validate-npm-package-license@^3.0.1:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
@@ -8338,6 +8870,11 @@ validate-npm-package-license@^3.0.4:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
+vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
+
vite-node@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-1.6.0.tgz#2c7e61129bfecc759478fa592754fd9704aaba7f"
@@ -8372,10 +8909,10 @@ vite-tsconfig-paths@^4.3.2:
globrex "^0.1.2"
tsconfck "^3.0.3"
-vite@^5.0.0, vite@^5.3.3:
- version "5.3.3"
- resolved "https://registry.yarnpkg.com/vite/-/vite-5.3.3.tgz#5265b1f0a825b3b6564c2d07524777c83e3c04c2"
- integrity sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==
+vite@^5.0.0, vite@^5.0.12:
+ version "5.3.5"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-5.3.5.tgz#b847f846fb2b6cb6f6f4ed50a830186138cb83d8"
+ integrity sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==
dependencies:
esbuild "^0.21.3"
postcss "^8.4.39"
@@ -8461,15 +8998,6 @@ wait-on@^7.2.0:
minimist "^1.2.8"
rxjs "^7.8.1"
-wait-port@^1.0.4:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/wait-port/-/wait-port-1.1.0.tgz#e5d64ee071118d985e2b658ae7ad32b2ce29b6b5"
- integrity sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==
- dependencies:
- chalk "^4.1.2"
- commander "^9.3.0"
- debug "^4.3.4"
-
warning@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
@@ -8501,54 +9029,6 @@ web-vitals@^3.5.2:
resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-3.5.2.tgz#5bb58461bbc173c3f00c2ddff8bfe6e680999ca9"
integrity sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==
-webdriver@8.38.2:
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/webdriver/-/webdriver-8.38.2.tgz#e109844d19f516f7de261f4825daca95516564e7"
- integrity sha512-NGfjW0BDYwFgOIzeojOcWGn3tYloQdvHr+Y2xKKYVqa9Rs0x1mzlTjU1kWtC4DaV8DltskwaPa7o+s8hTNpuyA==
- dependencies:
- "@types/node" "^20.1.0"
- "@types/ws" "^8.5.3"
- "@wdio/config" "8.38.2"
- "@wdio/logger" "8.38.0"
- "@wdio/protocols" "8.38.0"
- "@wdio/types" "8.38.2"
- "@wdio/utils" "8.38.2"
- deepmerge-ts "^5.1.0"
- got "^12.6.1"
- ky "^0.33.0"
- ws "^8.8.0"
-
-webdriverio@8.38.2, webdriverio@^8.29.3:
- version "8.38.2"
- resolved "https://registry.yarnpkg.com/webdriverio/-/webdriverio-8.38.2.tgz#5a53205cecfb9e2d3bdb1de0400e1194c1d08029"
- integrity sha512-r09y5UfivyYh5JOzT2SpJJ1zDmQl/R4OTH12opUqkjvp21BibCQm/uu1mrxGy4lzSHljrvqSVrrcGI+6UA1O8w==
- dependencies:
- "@types/node" "^20.1.0"
- "@wdio/config" "8.38.2"
- "@wdio/logger" "8.38.0"
- "@wdio/protocols" "8.38.0"
- "@wdio/repl" "8.24.12"
- "@wdio/types" "8.38.2"
- "@wdio/utils" "8.38.2"
- archiver "^7.0.0"
- aria-query "^5.0.0"
- css-shorthand-properties "^1.1.1"
- css-value "^0.0.1"
- devtools-protocol "^0.0.1302984"
- grapheme-splitter "^1.0.2"
- import-meta-resolve "^4.0.0"
- is-plain-obj "^4.1.0"
- jszip "^3.10.1"
- lodash.clonedeep "^4.5.0"
- lodash.zip "^4.2.0"
- minimatch "^9.0.0"
- puppeteer-core "^20.9.0"
- query-selector-shadow-dom "^1.0.0"
- resq "^1.9.1"
- rgb2hex "0.2.5"
- serialize-error "^11.0.1"
- webdriver "8.38.2"
-
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
@@ -8596,12 +9076,12 @@ which-boxed-primitive@^1.0.2:
is-symbol "^1.0.3"
which-builtin-type@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b"
- integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.4.tgz#592796260602fc3514a1b5ee7fa29319b72380c3"
+ integrity sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==
dependencies:
- function.prototype.name "^1.1.5"
- has-tostringtag "^1.0.0"
+ function.prototype.name "^1.1.6"
+ has-tostringtag "^1.0.2"
is-async-function "^2.0.0"
is-date-object "^1.0.5"
is-finalizationregistry "^1.0.2"
@@ -8610,10 +9090,10 @@ which-builtin-type@^1.1.3:
is-weakref "^1.0.2"
isarray "^2.0.5"
which-boxed-primitive "^1.0.2"
- which-collection "^1.0.1"
- which-typed-array "^1.1.9"
+ which-collection "^1.0.2"
+ which-typed-array "^1.1.15"
-which-collection@^1.0.1:
+which-collection@^1.0.1, which-collection@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0"
integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==
@@ -8623,7 +9103,7 @@ which-collection@^1.0.1:
is-weakmap "^2.0.2"
is-weakset "^2.0.3"
-which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9:
+which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15:
version "1.1.15"
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d"
integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==
@@ -8634,6 +9114,13 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9:
gopd "^1.0.1"
has-tostringtag "^1.0.2"
+which@^1.2.14, which@^1.2.9:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
which@^2.0.1, which@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
@@ -8641,31 +9128,26 @@ which@^2.0.1, which@^2.0.2:
dependencies:
isexe "^2.0.0"
-which@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a"
- integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==
- dependencies:
- isexe "^3.1.1"
-
why-is-node-running@^2.2.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e"
- integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04"
+ integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==
dependencies:
siginfo "^2.0.0"
stackback "0.0.2"
-word-wrap@^1.2.5:
+wide-align@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
+ integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
+ dependencies:
+ string-width "^1.0.2 || 2 || 3 || 4"
+
+word-wrap@^1.2.3, word-wrap@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
-workerpool@6.2.1:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
- integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
-
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
@@ -8675,16 +9157,7 @@ workerpool@6.2.1:
string-width "^4.1.0"
strip-ansi "^6.0.0"
-wrap-ansi@^6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
- integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
-wrap-ansi@^8.1.0:
+wrap-ansi@^8.0.1, wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
@@ -8698,15 +9171,20 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-ws@8.13.0:
- version "8.13.0"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
- integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
+ws@^7.4.6:
+ version "7.5.10"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9"
+ integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==
-ws@^8.17.0, ws@^8.8.0:
- version "8.17.1"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b"
- integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
+ws@^8.17.0:
+ version "8.18.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc"
+ integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==
+
+xmlbuilder@^15.1.1:
+ version "15.1.1"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5"
+ integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==
"xstate-beta@npm:xstate@beta":
version "5.0.0-beta.54"
@@ -8718,6 +9196,21 @@ xstate@^4.33.4, xstate@^4.38.2:
resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.38.3.tgz#4e15e7ad3aa0ca1eea2010548a5379966d8f1075"
integrity sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw==
+xterm-addon-fit@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.5.0.tgz#2d51b983b786a97dcd6cde805e700c7f913bc596"
+ integrity sha512-DsS9fqhXHacEmsPxBJZvfj2la30Iz9xk+UKjhQgnYNkrUIN5CYLbw7WEfz117c7+S86S/tpHPfvNxJsF5/G8wQ==
+
+xterm-addon-search@^0.8.0:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.8.2.tgz#be7aa74d5ff12c901707c6ff674229f214318032"
+ integrity sha512-I1863mjn8P6uVrqm/X+btalVsqjAKLhnhpbP7SavAOpEkI1jJhbHU2UTp7NjeRtcKTks6UWk/ycgds5snDSejg==
+
+xterm@^4.9.0:
+ version "4.19.0"
+ resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0.tgz#c0f9d09cd61de1d658f43ca75f992197add9ef6d"
+ integrity sha512-c3Cp4eOVsYY5Q839dR5IejghRPpxciGmLWWaP9g+ppfMeBChMeLa1DCA+pmX/jyDZ+zxFOmlJL/82qVdayVoGQ==
+
y18n@^5.0.5:
version "5.0.8"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
@@ -8739,14 +9232,9 @@ yaml@^1.10.0:
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
yaml@^2.3.4:
- version "2.4.5"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.5.tgz#60630b206dd6d84df97003d33fc1ddf6296cca5e"
- integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==
-
-yargs-parser@20.2.4:
- version "20.2.4"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
- integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d"
+ integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==
yargs-parser@^20.2.2:
version "20.2.9"
@@ -8758,17 +9246,7 @@ yargs-parser@^21.1.1:
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
-yargs-unparser@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
- integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
- dependencies:
- camelcase "^6.0.0"
- decamelize "^4.0.0"
- flat "^5.0.2"
- is-plain-obj "^2.1.0"
-
-yargs@16.2.0:
+yargs@^16.0.2:
version "16.2.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
@@ -8781,20 +9259,7 @@ yargs@16.2.0:
y18n "^5.0.5"
yargs-parser "^20.2.2"
-yargs@17.7.1:
- version "17.7.1"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967"
- integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==
- dependencies:
- cliui "^8.0.1"
- escalade "^3.1.1"
- get-caller-file "^2.0.5"
- require-directory "^2.1.1"
- string-width "^4.2.3"
- y18n "^5.0.5"
- yargs-parser "^21.1.1"
-
-yargs@17.7.2, yargs@^17.7.2:
+yargs@^17.0.1:
version "17.7.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
@@ -8807,6 +9272,14 @@ yargs@17.7.2, yargs@^17.7.2:
y18n "^5.0.5"
yargs-parser "^21.1.1"
+yarn-or-npm@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz#6336eea4dff7e23e226acc98c1a8ada17a1b8666"
+ integrity sha512-fTiQP6WbDAh5QZAVdbMQkecZoahnbOjClTQhzv74WX5h2Uaidj1isf9FDes11TKtsZ0/ZVfZsqZ+O3x6aLERHQ==
+ dependencies:
+ cross-spawn "^6.0.5"
+ pkg-dir "^4.2.0"
+
yarn@^1.22.22:
version "1.22.22"
resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.22.tgz#ac34549e6aa8e7ead463a7407e1c7390f61a6610"
@@ -8831,15 +9304,6 @@ yocto-queue@^0.1.0:
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
yocto-queue@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
- integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
-
-zip-stream@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-6.0.1.tgz#e141b930ed60ccaf5d7fa9c8260e0d1748a2bbfb"
- integrity sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==
- dependencies:
- archiver-utils "^5.0.0"
- compress-commons "^6.0.2"
- readable-stream "^4.0.0"
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110"
+ integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==