diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 518265a08..1d67ab40f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -54,6 +54,18 @@ jobs: echo "GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}" echo "GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}" + buildid: + name: Generate build ID + runs-on: ubuntu-latest + outputs: + buildids: ${{ steps.get.outputs.bid }} + steps: + - id: get + shell: bash -xe {0} + run: | + bdat=`date +"%Y%m%d%I%M%S"` + echo "bid=${bdat}" >> $GITHUB_OUTPUT + start-self-host: runs-on: ubuntu-latest needs: debug-inputs @@ -130,18 +142,9 @@ jobs: with: node-version-file: '.nvmrc' - - name: Setup pnpm - run: npm install -g pnpm - - - name: Get pnpm store directory - id: pnpm-cache - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - name: Install dependencies run: | - pnpm install + npm install - name: Setup Surfer run: | @@ -150,12 +153,12 @@ jobs: - name: Bump version if: ${{ inputs.update_version && inputs.update_branch == 'release' }} run: | - pnpm surfer ci --brand ${{ inputs.update_branch }} --bump prerelease + npm run surfer -- ci --brand ${{ inputs.update_branch }} --bump prerelease - name: Bump version without new version if: ${{ !inputs.update_version || inputs.update_branch == 'twilight' }} run: | - pnpm surfer ci --brand ${{ inputs.update_branch }} + npm run surfer -- ci --brand ${{ inputs.update_branch }} - name: Debug run: | @@ -199,18 +202,9 @@ jobs: with: node-version-file: '.nvmrc' - - name: Setup pnpm - run: npm install -g pnpm - - - name: Get pnpm store directory - id: pnpm-cache - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - name: Install dependencies run: | - pnpm install + npm install - name: Setup Surfer run: | @@ -218,15 +212,14 @@ jobs: - name: Activate Surfer CLI run: | - echo "There's a bug in the Surfer CLI, we run this so that Surfer sets everything up correctly" - pnpm surfer ci --brand ${{ inputs.update_branch }} --display-version ${{ needs.build-data.outputs.version }} + npm run surfer -- ci --brand ${{ inputs.update_branch }} --display-version ${{ needs.build-data.outputs.version }} - name: Check version run: | echo "$(pwd)" - ls . - echo "version=$(pnpm surfer get version | xargs)" >> $GITHUB_OUTPUT - if [[ $(pnpm surfer get version | xargs) == ${{ needs.build-data.outputs.version }} ]]; then + echo $(npm run --silent surfer -- get version | xargs) + echo "version=$(npm run --silent surfer -- get version | xargs)" >> $GITHUB_OUTPUT + if [[ $(npm run --silent surfer -- get version | xargs) == ${{ needs.build-data.outputs.version }} ]]; then echo ">>> Version matches" else echo ">>> Version mismatch" @@ -256,27 +249,18 @@ jobs: git config --global user.email "mauro-balades@users.noreply.github.com" git config --global user.name "mauro-balades" - - name: Setup pnpm - run: npm install -g pnpm - - - name: Get pnpm store directory - id: pnpm-cache - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - name: Install dependencies run: | - pnpm install + npm install - name: Load Surfer CI setup - run: pnpm surfer ci --brand ${{ inputs.update_branch }} --display-version ${{ needs.build-data.outputs.version }} + run: npm run surfer -- ci --brand ${{ inputs.update_branch }} --display-version ${{ needs.build-data.outputs.version }} - name: Download Firefox source and dependencies - run: pnpm surfer download --verbose + run: npm run download --verbose - name: Import - run: pnpm surfer import --verbose + run: npm run import -- --verbose - name: Compress run: | @@ -294,7 +278,7 @@ jobs: windows-step-1: name: Windows build step 1 (PGO build) uses: ./.github/workflows/windows-release-build.yml - needs: [build-data] + needs: [build-data, buildid] permissions: contents: write secrets: inherit @@ -303,6 +287,7 @@ jobs: generate-gpo: true profile-data-path-archive: zen-windows-profile-data-and-jarlog.zip release-branch: ${{ inputs.update_branch }} + MOZ_BUILD_DATE: ${{needs.buildid.outputs.buildids}} windows-step-2: name: Windows build step 2 (Generate profile data) @@ -322,11 +307,12 @@ jobs: permissions: contents: write secrets: inherit - needs: [build-data, windows-step-2, start-self-host] + needs: [build-data, windows-step-2, start-self-host, buildid] with: build-version: ${{ needs.build-data.outputs.version }} generate-gpo: false release-branch: ${{ inputs.update_branch }} + MOZ_BUILD_DATE: ${{needs.buildid.outputs.buildids}} linux: name: Linux build @@ -334,10 +320,11 @@ jobs: permissions: contents: write secrets: inherit - needs: [build-data, start-self-host] + needs: [build-data, start-self-host, buildid] with: build-version: ${{ needs.build-data.outputs.version }} release-branch: ${{ inputs.update_branch }} + MOZ_BUILD_DATE: ${{needs.buildid.outputs.buildids}} mac: name: macOS build @@ -345,7 +332,19 @@ jobs: permissions: contents: write secrets: inherit - needs: [build-data] + needs: [build-data, buildid] + with: + build-version: ${{ needs.build-data.outputs.version }} + release-branch: ${{ inputs.update_branch }} + MOZ_BUILD_DATE: ${{needs.buildid.outputs.buildids}} + + mac-uni: + name: macOS build (Universal) + uses: ./.github/workflows/macos-universal-release-build.yml + permissions: + contents: write + secrets: inherit + needs: [build-data, mac] with: build-version: ${{ needs.build-data.outputs.version }} release-branch: ${{ inputs.update_branch }} @@ -373,14 +372,14 @@ jobs: - name: Install dependencies run: | - npm install -g pnpm + npm install sudo apt-get update sudo apt-get -y install libfuse2 desktop-file-utils appstream - name: Download Linux build uses: actions/download-artifact@v4 with: - name: zen.linux-${{ matrix.arch }}.tar.bz2 + name: zen.linux-${{ matrix.arch }}.tar.xz - name: Execute AppImage build run: | @@ -453,7 +452,7 @@ jobs: if: ${{ inputs.create_release || inputs.update_branch == 'twilight' }} permissions: write-all name: Release - needs: [build-data, linux, windows-step-3, check-release, mac, appimage, source, lint, stop-self-hosted] + needs: [build-data, linux, windows-step-3, check-release, mac-uni, appimage, source, lint, stop-self-hosted] runs-on: ubuntu-latest environment: name: ${{ inputs.update_branch == 'release' && 'Deploy-Release' || 'Deploy-Twilight' }} @@ -483,6 +482,7 @@ jobs: token: ${{ secrets.DEPLOY_KEY }} - name: Download object files + if: ${{ inputs.update_branch == 'release' }} run: | git clone https://github.com/zen-browser/windows-binaries.git .github/workflows/object @@ -503,8 +503,7 @@ jobs: cp -a ../windows_update_manifest_arm64/. updates/ fi - cp -a ../macos_update_manifest_aarch64/. updates/ - cp -a ../macos_update_manifest_x86_64/. updates/ + cp -a ../macos_update_manifest/. updates/ - name: Commit uses: stefanzweifel/git-auto-commit-action@v5 @@ -517,33 +516,33 @@ jobs: # If we are on Twilight, we want to just update the Twilight tag's release - name: Update Twilight tag if: ${{ inputs.update_branch == 'twilight' }} - uses: marvinpinto/action-automatic-releases@master + uses: softprops/action-gh-release@v2 with: files: | - zen.source.tar.zst - zen.linux-x86_64.tar.bz2 - zen.linux-aarch64.tar.bz2 - zen-x86_64.AppImage - zen-x86_64.AppImage.zsync - zen-aarch64.AppImage - zen-aarch64.AppImage.zsync - zen.win-x86_64.zip - zen.win-arm64.zip - linux.mar - linux-aarch64.mar - windows.mar - windows-arm64.mar - macos-x86_64.mar - macos-aarch64.mar - zen.installer.exe - zen.installer-arm64.exe - zen.macos-x86_64.dmg - zen.macos-aarch64.dmg - automatic_release_tag: 'twilight' - title: 'Twilight build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }} at ${{ needs.build-data.outputs.build_time }})' + ./zen.source.tar.zst/* + ./zen.linux-x86_64.tar.xz/* + ./zen.linux-aarch64.tar.xz/* + ./zen-x86_64.AppImage/* + ./zen-x86_64.AppImage.zsync/* + ./zen-aarch64.AppImage/* + ./zen-aarch64.AppImage.zsync/* + ./zen.win-x86_64.zip/* + ./zen.win-arm64.zip/* + ./linux.mar/* + ./linux-aarch64.mar/* + ./windows.mar/* + ./windows-arm64.mar/* + ./macos.mar/* + ./zen.installer.exe/* + ./zen.installer-arm64.exe/* + ./zen.macos-universal.dmg/* + tag_name: 'twilight' + name: 'Twilight build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }} at ${{ needs.build-data.outputs.build_time }})' draft: false + generate_release_notes: false prerelease: true - repo_token: ${{ secrets.DEPLOY_KEY }} + token: ${{ secrets.DEPLOY_KEY }} + fail_on_unmatched_files: false env: GITHUB_REPOSITORY: ${{ github.repository }} @@ -551,30 +550,30 @@ jobs: uses: marvinpinto/action-automatic-releases@master if: ${{ inputs.update_branch == 'release' }} with: - repo_token: '${{ secrets.DEPLOY_KEY }}' - automatic_release_tag: ${{ needs.build-data.outputs.version }} + token: '${{ secrets.DEPLOY_KEY }}' + tag_name: ${{ needs.build-data.outputs.version }} prerelease: false - title: 'Release build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})' + fail_on_unmatched_files: false + generate_release_notes: false + name: 'Release build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})' files: | - zen.source.tar.zst - zen.linux-x86_64.tar.bz2 - zen.linux-aarch64.tar.bz2 - zen-x86_64.AppImage - zen-x86_64.AppImage.zsync - zen-aarch64.AppImage - zen-aarch64.AppImage.zsync - .github/workflows/object/windows-x64-signed-x86_64/zen.win-x86_64.zip - .github/workflows/object/windows-x64-signed-arm64/zen.win-arm64.zip - linux.mar - linux-aarch64.mar - .github/workflows/object/windows-x64-signed-x86_64/windows.mar - .github/workflows/object/windows-x64-signed-arm64/windows-arm64.mar - macos-x86_64.mar - macos-aarch64.mar - .github/workflows/object/windows-x64-signed-x86_64/zen.installer.exe - .github/workflows/object/windows-x64-signed-arm64/zen.installer-arm64.exe - zen.macos-x86_64.dmg - zen.macos-aarch64.dmg + ./zen.source.tar.zst/* + ./zen.linux-x86_64.tar.xz/* + ./zen.linux-aarch64.tar.xz/* + ./zen-x86_64.AppImage/* + ./zen-x86_64.AppImage.zsync/* + ./zen-aarch64.AppImage/* + ./zen-aarch64.AppImage.zsync/* + ./.github/workflows/object/windows-x64-signed-x86_64/zen.win-x86_64.zip + ./.github/workflows/object/windows-x64-signed-arm64/zen.win-arm64.zip + ./linux.mar/* + ./linux-aarch64.mar/* + ./.github/workflows/object/windows-x64-signed-x86_64/windows.mar + ./.github/workflows/object/windows-x64-signed-arm64/windows-arm64.mar + ./macos.mar/* + ./.github/workflows/object/windows-x64-signed-x86_64/zen.installer.exe + ./.github/workflows/object/windows-x64-signed-arm64/zen.installer-arm64.exe + ./zen.macos-universal.dmg/* prepare-flatpak: if: ${{ inputs.create_release && inputs.update_branch == 'release' }} @@ -652,12 +651,12 @@ jobs: - name: Download Linux x86_64 build uses: actions/download-artifact@v4 with: - name: zen.linux-x86_64.tar.bz2 + name: zen.linux-x86_64.tar.xz - name: Download Linux aarch64 build uses: actions/download-artifact@v4 with: - name: zen.linux-aarch64.tar.bz2 + name: zen.linux-aarch64.tar.xz - name: Update repository uses: actions/checkout@v4 @@ -679,8 +678,8 @@ jobs: python3 ./zen-browser/scripts/prepare-flatpak-release.py \ --flatpak-archive archive.tar \ --version ${{ needs.build-data.outputs.version }} \ - --linux-archive zen.linux-x86_64.tar.bz2 \ - --linux-aarch64-archive zen.linux-aarch64.tar.bz2 \ + --linux-archive zen.linux-x86_64.tar.xz \ + --linux-aarch64-archive zen.linux-aarch64.tar.xz \ --output app.zen_browser.zen.yml \ --template-root ./zen-browser/flatpak @@ -693,7 +692,7 @@ jobs: run: | rm -rf zen-browser rm -rf archive.tar - rm -rf zen.linux-x86_64.tar.bz2 + rm -rf zen.linux-x86_64.tar.xz - name: Upload Flatpak manifest uses: actions/upload-artifact@v4 diff --git a/.github/workflows/check-candidate-release.yml b/.github/workflows/check-candidate-release.yml index f2d9c9478..4b7c2a981 100644 --- a/.github/workflows/check-candidate-release.yml +++ b/.github/workflows/check-candidate-release.yml @@ -2,7 +2,7 @@ name: Check Firefox Candidate Release on: schedule: - - cron: '0 21 * * 1' + - cron: '59 4 * * 2' workflow_dispatch: jobs: diff --git a/.github/workflows/code-linter.yml b/.github/workflows/code-linter.yml index 9928b2cfb..d9cd6db7c 100644 --- a/.github/workflows/code-linter.yml +++ b/.github/workflows/code-linter.yml @@ -27,11 +27,8 @@ jobs: - name: Setup autopep8 run: sudo apt install python3-autopep8 - - name: Setup pnpm - run: npm install -g pnpm - - name: Install dependencies - run: pnpm install + run: npm install - name: Lint - run: pnpm lint + run: npm run lint diff --git a/.github/workflows/linux-release-build.yml b/.github/workflows/linux-release-build.yml index 6875bf682..2b18b6976 100644 --- a/.github/workflows/linux-release-build.yml +++ b/.github/workflows/linux-release-build.yml @@ -11,6 +11,10 @@ on: description: 'The branch to build' required: true type: string + MOZ_BUILD_DATE: + type: string + required: true + default: '' jobs: build-linux: @@ -77,24 +81,15 @@ jobs: path: /home/runner/.cache/sccache key: ${{ runner.os }}-sccache - - name: Setup pnpm - run: npm install -g pnpm - - - name: Get pnpm store directory - id: pnpm-cache - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - name: Install dependencies run: | - pnpm install + npm install - name: Load Surfer CI setup - run: pnpm surfer ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }} + run: npm run surfer -- ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }} - name: Download Firefox source and dependencies - run: pnpm surfer download + run: npm run download - name: Fix Rust version run: | @@ -111,7 +106,7 @@ jobs: - name: Import env: SURFER_COMPAT: ${{ matrix.arch }} - run: pnpm surfer import + run: npm run import - name: Build language packs run: sh scripts/download-language-packs.sh @@ -130,6 +125,9 @@ jobs: continue-on-error: true run: | export SURFER_PLATFORM="linux" + if [[ -n ${{ inputs.MOZ_BUILD_DATE }} ]];then + export MOZ_BUILD_DATE=${{ inputs.MOZ_BUILD_DATE }} + fi bash .github/workflows/src/release-build.sh - name: Package @@ -139,19 +137,19 @@ jobs: run: | export SURFER_PLATFORM="linux" export ZEN_RELEASE=1 - pnpm package + npm run package - name: Rename artifacts run: | - mv dist/zen-*.tar.bz2 "zen.linux-${{ matrix.arch }}.tar.bz2" + mv dist/zen-*.tar.xz "zen.linux-${{ matrix.arch }}.tar.xz" mv dist/output.mar linux${{ matrix.arch == 'aarch64' && '-aarch64' || '' }}.mar - name: Upload build artifact (binary) uses: actions/upload-artifact@v4 with: retention-days: 5 - name: zen.linux-${{ matrix.arch }}.tar.bz2 - path: ./zen.linux-${{ matrix.arch }}.tar.bz2 + name: zen.linux-${{ matrix.arch }}.tar.xz + path: ./zen.linux-${{ matrix.arch }}.tar.xz - name: Upload build artifact (.mar) uses: actions/upload-artifact@v4 diff --git a/.github/workflows/macos-release-build.yml b/.github/workflows/macos-release-build.yml index e3bb85823..b3f5c51c0 100644 --- a/.github/workflows/macos-release-build.yml +++ b/.github/workflows/macos-release-build.yml @@ -11,6 +11,10 @@ on: description: 'The branch to build' required: true type: string + MOZ_BUILD_DATE: + type: string + required: true + default: '' jobs: mac-build: @@ -77,24 +81,15 @@ jobs: echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zsh source ~/.bash_profile - - name: Setup pnpm - run: npm install -g pnpm - - - name: Get pnpm store directory - id: pnpm-cache - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - name: Install dependencies run: | - pnpm install + npm install - name: Load surfer CI setup - run: pnpm surfer ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }} + run: npm run surfer -- ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }} - name: Download Firefox source and dependencies - run: pnpm surfer download + run: npm run download - name: Bootstrap run: | @@ -107,7 +102,7 @@ jobs: - name: Import env: SURFER_COMPAT: ${{ matrix.arch }} - run: pnpm surfer import --verbose + run: npm run import -- --verbose - name: Build language packs run: sh scripts/download-language-packs.sh @@ -118,72 +113,47 @@ jobs: ZEN_RELEASE_BRANCH: ${{ inputs.release-branch }} run: | export SURFER_PLATFORM="darwin" + if [[ -n ${{ inputs.MOZ_BUILD_DATE }} ]];then + export MOZ_BUILD_DATE=${{ inputs.MOZ_BUILD_DATE }} + fi bash .github/workflows/src/release-build.sh - - name: Import APPLE DEVELOPER ID CERTIFICATE for .app - uses: Apple-Actions/import-codesign-certs@v3 - with: - p12-file-base64: ${{ secrets.macOS_CERTIFICATES_P12_For_App_BASE64 }} - p12-password: ${{ secrets.macOS_CERTIFICATES_P12_PASSWORD }} - - - name: Import provisioning profile for .app - run: | - echo "${{ secrets.macOS_PROVISIONING_PROFILE }}" | base64 --decode > ./engine/Zen_Browser.provisionprofile - ls -la - - name: Package env: SURFER_COMPAT: ${{ matrix.arch }} ZEN_GA_DISABLE_PGO: true - MACOS_APPLE_ACCOUNT_ID: ${{ secrets.macOS_AppleAccountId }} - MACOS_APPLE_DEVELOPER_ID_TEAM_ID: ${{ secrets.macOS_AppleDeveloperIdTeamId }} - MACOS_APPLE_DEVELOPER_ID_PASSWORD: ${{ secrets.macOS_AppleDeveloperIdPassword }} run: | export SURFER_PLATFORM="darwin" - export MACOS_APPLE_DEVELOPER_ID="${{ secrets.macOS_AppleDeveloperId }}" export ZEN_RELEASE=1 - pnpm package + npm run package - name: Rename artifacts run: | - mv ./dist/output.mar macos-${{ matrix.arch }}.mar - - - name: Remove sensitive information - run: | - rm -f ./engine/Zen_Browser.provisionprofile - - - name: Sign .dmg - run: | + echo "Tarballing DMG" set -ex - hdiutil convert ./dist/*.dmg -format UDZO -imagekey zlib-level=9 -o zen.macos-${{ matrix.arch }}.dmg - xattr -cr zen.macos-${{ matrix.arch }}.dmg - codesign -s "${{ secrets.macOS_AppleDeveloperId }}" zen.macos-${{ matrix.arch }}.dmg - xcrun notarytool submit "zen.macos-${{ matrix.arch }}.dmg" \ - --apple-id "${{ secrets.macOS_AppleAccountId }}" \ - --team-id "${{ secrets.macOS_AppleDeveloperIdTeamId }}" \ - --password "${{ secrets.macOS_AppleDeveloperIdPassword }}" \ - --no-s3-acceleration \ - --verbose \ - --wait - xcrun stapler staple "zen.macos-${{ matrix.arch }}.dmg" + mv ./dist/*.dmg ./zen-${{ matrix.arch }}-apple-darwin-dist.dmg + mv ./engine/obj-${{ matrix.arch }}-apple-darwin/dist/host/bin/mar ./zen-macos-host-mar + mv ./engine/obj-${{ matrix.arch }}-apple-darwin/dist/bin/platform.ini ./platform.ini - - name: Upload build artifact + - name: Upload dist dmg uses: actions/upload-artifact@v4 with: - retention-days: 5 - name: zen.macos-${{ matrix.arch }}.dmg - path: ./zen.macos-${{ matrix.arch }}.dmg + retention-days: 1 + name: zen-${{ matrix.arch }}-apple-darwin-dist.dmg + path: ./zen-${{ matrix.arch }}-apple-darwin-dist.dmg - - name: Upload build artifact (.mar) + - name: Upload host mar uses: actions/upload-artifact@v4 + if: matrix.arch == 'aarch64' with: - retention-days: 5 - name: macos-${{ matrix.arch }}.mar - path: ./macos-${{ matrix.arch }}.mar + retention-days: 1 + name: zen-macos-host-mar + path: ./zen-macos-host-mar - - name: Upload build artifact (update manifests) + - name: Upload platform.ini uses: actions/upload-artifact@v4 + if: matrix.arch == 'x86_64' with: - retention-days: 5 - name: macos_update_manifest_${{ matrix.arch }} - path: ./dist/update + retention-days: 1 + name: platform.ini + path: ./platform.ini diff --git a/.github/workflows/macos-universal-release-build.yml b/.github/workflows/macos-universal-release-build.yml new file mode 100644 index 000000000..a940d2714 --- /dev/null +++ b/.github/workflows/macos-universal-release-build.yml @@ -0,0 +1,261 @@ +name: macOS Release Build + +on: + workflow_call: + inputs: + build-version: + description: 'The version to build' + required: true + type: string + release-branch: + description: 'The branch to build' + required: true + type: string + +jobs: + mac-build: + name: Unify macOS (Universal) + runs-on: 'macos-14' + + strategy: + fail-fast: false + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + token: ${{ secrets.DEPLOY_KEY }} + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + + - name: Setup Python + uses: actions/setup-python@v5 + # note: This will use the version defined in '.python-version' by default + + - name: Setup Git + run: | + git config --global user.email "mauro-balades@users.noreply.github.com" + git config --global user.name "mauro-balades" + + - name: Install system dependencies + run: | + brew update + brew install cairo sccache gnu-tar mercurial + sudo pip install setuptools + + brew uninstall --ignore-dependencies python3.12 -f + + export PATH="$(python3 -m site --user-base)/bin":$PATH + python3 -m pip install --user mercurial + + rm '/usr/local/bin/2to3-3.11' '/usr/local/bin/2to3-3.12' '/usr/local/bin/2to3' + rm '/usr/local/bin/idle3.11' '/usr/local/bin/idle3.12' '/usr/local/bin/idle3' + rm '/usr/local/bin/pydoc3.11' '/usr/local/bin/pydoc3.12' '/usr/local/bin/pydoc3' + rm '/usr/local/bin/python3.11' '/usr/local/bin/python3.12' '/usr/local/bin/python3' + rm '/usr/local/bin/python3.11-config' '/usr/local/bin/python3.12-config' '/usr/local/bin/python3-config' + + brew install watchman + + cargo install apple-codesign + + - name: Force usage of gnu-tar + run: | + echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.bash_profile + echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zsh + source ~/.bash_profile + + - name: Install dependencies + run: | + npm install + + - name: Load surfer CI setup + run: npm run surfer -- ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }} + + - name: Download Firefox source and dependencies + run: npm run download + + - name: Bootstrap + run: | + cd engine + export SURFER_PLATFORM="darwin" + export PATH="$(python3 -m site --user-base)/bin":$PATH + ./mach --no-interactive bootstrap --application-choice browser --no-system-changes + cd .. + + - name: Import + run: npm run import + + - name: Populate mozconfig + env: + SURFER_MOZCONFIG_ONLY: true + run: | + npm run build + cd engine + ./mach configure + + - name: Download x86_64 DMG from artifacts + uses: actions/download-artifact@v4 + with: + name: zen-x86_64-apple-darwin-dist.dmg + + - name: Download aarch64 DMG from artifacts + uses: actions/download-artifact@v4 + with: + name: zen-aarch64-apple-darwin-dist.dmg + + - name: Remove any existing .app folders + run: | + set -x + cd engine + rm -rf "./obj-x86_64-apple-darwin/" || true + rm -rf "./obj-aarch64-apple-darwin/" || true + + - name: Extract .app from dmg + run: | + set -ex + cd engine + echo "Extracting x86_64 .app from dmg" + mkdir -p ./obj-x86_64-apple-darwin/dist + mkdir -p ./obj-aarch64-apple-darwin/dist + ./mach python -m mozbuild.action.unpack_dmg \ + ../zen-x86_64-apple-darwin-dist.dmg \ + ./obj-x86_64-apple-darwin/dist + echo "Extracting aarch64 .app from dmg" + ./mach python -m mozbuild.action.unpack_dmg \ + ../zen-aarch64-apple-darwin-dist.dmg \ + ./obj-aarch64-apple-darwin/dist + + - name: Find first .app folder name + run: | + cd engine/obj-x86_64-apple-darwin/dist + export APP_NAME=$(basename "$(find . -maxdepth 1 -name "Zen *.app" -type d | head -n 1)" .app) + echo "APP_NAME=$APP_NAME" >> $GITHUB_ENV + echo "APP_NAME=$APP_NAME" + + - name: List .app folders + run: | + ls engine/ + echo "--------------------" + cd engine/obj-x86_64-apple-darwin/dist + find . -maxdepth 1 -name "*.app" -type d + cd ../.. + + - name: create .p12 for codesign 🖊️ + run: | + cd engine + echo "${{ secrets.macOS_CERTIFICATES_P12_For_App_BASE64 }}" > cert.txt + base64 --decode -i cert.txt -o zenCert.p12 + echo "${{ secrets.macOS_CERTIFICATES_P12_PASSWORD }}" > zenpCertPassword.passwd + + - name: Remove certificate sensitive information + run: | + rm engine/cert.txt || true + + - name: Import provisioning profile for .app + run: | + echo "${{ secrets.macOS_PROVISIONING_PROFILE }}" | base64 --decode > ./engine/Zen_Browser.provisionprofile + ls -la + + - name: Unify architectures + run: | + cd engine + ./mach python "./toolkit/mozapps/installer/unify.py" "./obj-x86_64-apple-darwin/dist/${{ env.APP_NAME }}.app" "./obj-aarch64-apple-darwin/dist/${{ env.APP_NAME }}.app" + echo "Merged aaarch64 into x86_64!" + + - name: Import APPLE DEVELOPER ID CERTIFICATE for .app + uses: Apple-Actions/import-codesign-certs@v3 + with: + p12-file-base64: ${{ secrets.macOS_CERTIFICATES_P12_For_App_BASE64 }} + p12-password: ${{ secrets.macOS_CERTIFICATES_P12_PASSWORD }} + + - name: Copy provisioning profile for .app (embedded in .app) + run: | + cd engine + echo "Copying provisioning profile for .app on both architectures (${{ env.APP_NAME }})" + cp ./Zen_Browser.provisionprofile "./embedded.provisionprofile" + + - name: Sign .app + run: | + cd engine + # TODO: Change it to "production" once we figure out the issue with the webauth + ./mach macos-sign -v -r -c "release" -e "production-without-restricted" -a "./obj-x86_64-apple-darwin/dist/${{ env.APP_NAME }}.app" --rcodesign-p12-file zenCert.p12 --rcodesign-p12-password-file zenpCertPassword.passwd + + - name: Create DMG + run: | + cd engine + ./mach python -m mozbuild.action.make_dmg \ + --volume-name "${{ env.APP_NAME }}" \ + --background ./browser/branding/${{ inputs.release-branch }}/background.png \ + --icon ./browser/branding/${{ inputs.release-branch }}/firefox.icns \ + --dsstore ./browser/branding/${{ inputs.release-branch }}/dsstore \ + ./obj-x86_64-apple-darwin/dist/ ../zen-macOS-universal-temp.dmg + + - name: Remove sensitive information + run: | + rm -f ./engine/Zen_Browser.provisionprofile + + - name: Sign .dmg + run: | + set -ex + hdiutil convert zen-macOS-universal-temp.dmg -format UDZO -imagekey zlib-level=9 -o zen.macos-universal.dmg + codesign -s "${{ secrets.macOS_AppleDeveloperId }}" zen.macos-universal.dmg + xcrun notarytool submit "zen.macos-universal.dmg" \ + --apple-id "${{ secrets.macOS_AppleAccountId }}" \ + --team-id "${{ secrets.macOS_AppleDeveloperIdTeamId }}" \ + --password "${{ secrets.macOS_AppleDeveloperIdPassword }}" \ + --no-s3-acceleration \ + --wait + xcrun stapler staple "zen.macos-universal.dmg" + + - name: Download host mar + uses: actions/download-artifact@v4 + with: + name: zen-macos-host-mar + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + retention-days: 5 + name: zen.macos-universal.dmg + path: ./zen.macos-universal.dmg + + - name: Download platform.ini + uses: actions/download-artifact@v4 + with: + name: platform.ini + + - name: Package for mar + env: + JUST_MAR: true + run: | + # we don't need it anymore + set -ex + rm -rf ./engine/obj-aarch64-apple-darwin + mkdir -p ./engine/obj-x86_64-apple-darwin/dist/bin + mv ./platform.ini ./engine/obj-x86_64-apple-darwin/dist/bin/platform.ini + export SURFER_PLATFORM="darwin" + export ZEN_RELEASE=1 + # full path to zen-macos-host-mar + export MAR=$(pwd)/zen-macos-host-mar + chmod +x $MAR + echo "MAR=$MAR" + npm run package -- --verbose + mv ./dist/output.mar ./macos.mar + + - name: Upload build artifact (.mar) + uses: actions/upload-artifact@v4 + with: + retention-days: 5 + name: macos.mar + path: ./macos.mar + + - name: Upload build artifact (update manifests) + uses: actions/upload-artifact@v4 + with: + retention-days: 5 + name: macos_update_manifest + path: ./dist/update diff --git a/.github/workflows/pr-test.yml b/.github/workflows/pr-test.yml index 385cb2fb4..2d18f0dcc 100644 --- a/.github/workflows/pr-test.yml +++ b/.github/workflows/pr-test.yml @@ -19,14 +19,11 @@ jobs: with: node-version-file: '.nvmrc' - - name: Setup pnpm - run: npm install -g pnpm - - name: Install Surfer run: npm i -g @zen-browser/surfer - name: Install dependencies - run: pnpm install + run: npm install - name: Download Firefox and dependencies run: surfer download diff --git a/.github/workflows/src/release-build.sh b/.github/workflows/src/release-build.sh index 29f1f4d32..be7119a2d 100644 --- a/.github/workflows/src/release-build.sh +++ b/.github/workflows/src/release-build.sh @@ -17,12 +17,12 @@ if command -v Xvfb &> /dev/null; then export DISPLAY=:2 fi export ZEN_RELEASE=1 - pnpm build + npm run build else echo "Xvfb could not be found, running without it" echo "ASSUMING YOU ARE RUNNING THIS ON MACOS" set -v export ZEN_RELEASE=1 - pnpm build + npm run build fi diff --git a/.github/workflows/update-submodules.yml b/.github/workflows/update-submodules.yml deleted file mode 100644 index 18fa6cc26..000000000 --- a/.github/workflows/update-submodules.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Update Components Submodules - -on: - push: - branches: - - dev - workflow_dispatch: - workflow_call: - -jobs: - update-submodules: - runs-on: ubuntu-latest - if: "!contains(github.event.head_commit.message, '[skip ci]')" - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - submodules: recursive - token: ${{ secrets.DEPLOY_KEY }} - - - name: Update submodules - run: | - git submodule update --remote --merge - - - name: Commit - uses: stefanzweifel/git-auto-commit-action@v5 - with: - commit_message: '[skip ci] 📦 Update submodules' - commit_user_name: Zen Browser Robot - commit_user_email: zen-browser-auto@users.noreply.github.com diff --git a/.github/workflows/windows-profile-build.yml b/.github/workflows/windows-profile-build.yml index 97a18017c..4076fcec3 100644 --- a/.github/workflows/windows-profile-build.yml +++ b/.github/workflows/windows-profile-build.yml @@ -41,14 +41,11 @@ jobs: git config --global user.email "mauro-balades@users.noreply.github.com" git config --global user.name "mauro-balades" - - name: Setup pnpm - run: npm install -g pnpm - - name: Install Surfer run: npm i -g @zen-browser/surfer - name: Load Surfer CI setup - run: pnpm surfer ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }} + run: npm run surfer -- ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }} - name: Download artifact if: ${{ matrix.arch == 'x86_64' }} @@ -74,13 +71,13 @@ jobs: if: ${{ matrix.arch == 'x86_64' }} run: | git config --global core.safecrlf false - pnpm surfer download + npm run download - name: Import patches if: ${{ matrix.arch == 'x86_64' }} env: SURFER_NO_BRANDING_PATCH: true - run: pnpm surfer import + run: npm run import - name: Generate if: ${{ matrix.arch == 'x86_64' }} diff --git a/.github/workflows/windows-release-build.yml b/.github/workflows/windows-release-build.yml index 34bd85140..ff49f48f3 100644 --- a/.github/workflows/windows-release-build.yml +++ b/.github/workflows/windows-release-build.yml @@ -18,6 +18,10 @@ on: description: 'The branch to build' required: true type: string + MOZ_BUILD_DATE: + type: string + required: true + default: '' jobs: windows-build: @@ -48,9 +52,6 @@ jobs: with: node-version-file: '.nvmrc' - - name: Setup pnpm - run: npm install -g pnpm - - name: Setup Git run: | git config --global user.email "mauro-balades@users.noreply.github.com" @@ -58,16 +59,16 @@ jobs: - name: Install dependencies run: | - pnpm install + npm install sudo apt-get update sudo apt-get install -y python3 python3-pip dos2unix yasm nasm build-essential libgtk2.0-dev libpython3-dev m4 uuid libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdrm-dev libdbus-glib-1-dev libgtk-3-dev libpulse-dev libx11-xcb-dev libxt-dev xvfb lld llvm --fix-missing - name: Load Surfer CI setup - run: pnpm surfer ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }} + run: npm run surfer -- ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }} - name: Download Firefox and dependencies if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }} - run: pnpm surfer download + run: npm run download - name: win-cross Cache env: @@ -148,9 +149,8 @@ jobs: cd engine/ chmod -R +x "$(echo ~)/win-cross/vs2022" || true cd .. - npm install -g pnpm export SURFER_PLATFORM="win32" - pnpm surfer bootstrap + npm run bootstrap cd engine/ ls ~/.mozbuild/clang/lib/clang/ echo "export LIB=\"$(cd ~/.mozbuild/clang/lib/clang/* && cd lib/windows && pwd)\"" >> ../configs/common/mozconfig @@ -181,7 +181,7 @@ jobs: if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }} env: SURFER_COMPAT: ${{ matrix.arch }} - run: pnpm surfer import --verbose + run: npm run import -- --verbose - name: Build language packs if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }} @@ -216,6 +216,9 @@ jobs: if test ${{ inputs.generate-gpo }} = true; then export ZEN_GA_GENERATE_PROFILE=1 fi + if [[ -n ${{ inputs.MOZ_BUILD_DATE }} ]];then + export MOZ_BUILD_DATE=${{ inputs.MOZ_BUILD_DATE }} + fi bash .github/workflows/src/release-build.sh - name: Package @@ -228,8 +231,8 @@ jobs: export SURFER_PLATFORM="win32" export ZEN_CROSS_COMPILING=1 export ZEN_RELEASE=1 - pnpm package - mv ./dist/zen-$(pnpm surfer get version | xargs).en-US.win64${{ matrix.arch == 'aarch64' && '-aarch64' || '' }}.zip zen.win64.zip + npm run package + mv ./dist/zen-$(npm run --silent surfer -- get version | xargs).en-US.win64${{ matrix.arch == 'aarch64' && '-aarch64' || '' }}.zip zen.win64.zip ls ./dist ls . diff --git a/.gitignore b/.gitignore index d57494754..e8be44c7a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ dist/ windsign-temp/ venv/ + +!firefox-cache/ diff --git a/README.md b/README.md index 036ad3d8f..8387bb050 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,9 @@ ## 🖥️ Compatibility -Zen is currently built using firefox version `134.0.2`! 🚀 +Zen is currently built using firefox version `135.0`! 🚀 -- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using firefox version `RC 134.0.2`! +- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using firefox version `RC 135.0`! - Check out the latest [release notes](https://zen-browser.app/release-notes)! - Part of our mission is to keep Zen up-to-date with the latest version of Firefox, so you can enjoy the latest features and security updates! @@ -117,7 +117,7 @@ Some components used by @zen-browser as an attempt to make firefox forks a bette #### `Run Locally` -In order to download and run zen locally, please follow [these instructions](https://docs.zen-browser.app/contribute/desktop). +In order to download and run zen locally, please follow [these instructions](https://docs.zen-browser.app/building). #### `Special Thanks` @@ -129,6 +129,7 @@ Zen couldn't be in its current state without the help of these amazing projects! - Zen's default preferences are based on [BetterFox](https://github.com/yokoffing/Betterfox) - Gradient image extracted from [Arc Palette](https://github.com/neurokitti/Arc_Palette) +- `icons.css` has been modified from [Edge Firefox](https://github.com/bmFtZQ/edge-frfox) (MIT licensed file). ### 🖥️ Comparison with other browsers diff --git a/build/codesign/browser.developer.entitlements.xml b/build/codesign/browser.developer.entitlements.xml deleted file mode 100644 index 7722dd8df..000000000 --- a/build/codesign/browser.developer.entitlements.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - com.apple.security.cs.allow-unsigned-executable-memory - - - com.apple.security.cs.allow-jit - - - com.apple.security.cs.disable-library-validation - - - com.apple.security.device.audio-input - - - com.apple.security.device.camera - - - com.apple.security.personal-information.location - - - com.apple.security.automation.apple-events - - - com.apple.security.smartcard - - - com.apple.application-identifier - H36NPCN86W.app.zen-browser.zen - - diff --git a/build/codesign/codesign.bash b/build/codesign/codesign.bash deleted file mode 100644 index 74104451b..000000000 --- a/build/codesign/codesign.bash +++ /dev/null @@ -1,179 +0,0 @@ -#!/bin/bash -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at https://mozilla.org/MPL/2.0/. -# -# Runs codesign commands to codesign a Firefox .app bundle and enable macOS -# Hardened Runtime. Intended to be manually run by developers working on macOS -# 10.14+ who want to enable Hardened Runtime for manual testing. This is -# provided as a stop-gap until automated build tooling is available that signs -# binaries with a certificate generated during builds (bug 1522409). This -# script requires macOS 10.14 because Hardened Runtime is only available for -# applications running on 10.14 despite support for the codesign "-o runtime" -# option being available in 10.13.6 and newer. -# -# The script requires an identity string (-i option) from an Apple Developer -# ID certificate. This can be found in the macOS KeyChain after configuring an -# Apple Developer ID certificate. -# -# Example usage on macOS 10.14: -# -# $ ./mach build -# $ ./mach build package -# $ open -# -# $ ./security/mac/hardenedruntime/codesign.bash \ -# -a ~/Nightly.app \ -# -i \ -# -b security/mac/hardenedruntime/browser.developer.entitlements.xml -# -p security/mac/hardenedruntime/plugin-container.developer.entitlements.xml -# $ open ~/Nightly.app -# - -usage () -{ - echo "Usage: $0 " - echo " -a " - echo " -i " - echo " -b " - echo " -p " - echo " [-o ]" - exit -1 -} - -# Make sure we are running on macOS with the sw_vers command available. -SWVERS=/usr/bin/sw_vers -if [ ! -x ${SWVERS} ]; then - echo "ERROR: macOS 10.14 or later is required" - exit -1 -fi - -# Require macOS 10.14 or newer. -#OSVERSION=`${SWVERS} -productVersion|sed -En 's/[0-9]+\.([0-9]+)\.[0-9]+/\1/p'`; -#if [ ${OSVERSION} \< 14 ]; then -# echo "ERROR: macOS 10.14 or later is required" -# exit -1 -#fi - -while getopts "a:i:b:o:p:" opt; do - case ${opt} in - a ) BUNDLE=$OPTARG ;; - i ) IDENTITY=$OPTARG ;; - b ) BROWSER_ENTITLEMENTS_FILE=$OPTARG ;; - p ) PLUGINCONTAINER_ENTITLEMENTS_FILE=$OPTARG ;; - o ) OUTPUT_DMG_FILE=$OPTARG ;; - \? ) usage; exit -1 ;; - esac -done - -if [ -z "${BUNDLE}" ] || - [ -z "${IDENTITY}" ] || - [ -z "${PLUGINCONTAINER_ENTITLEMENTS_FILE}" ] || - [ -z "${BROWSER_ENTITLEMENTS_FILE}" ]; then - usage - exit -1 -fi - -if [ ! -d "${BUNDLE}" ]; then - echo "Invalid bundle. Bundle should be a .app directory" - usage - exit -1 -fi - -if [ ! -e "${PLUGINCONTAINER_ENTITLEMENTS_FILE}" ]; then - echo "Invalid entitlements file" - usage - exit -1 -fi - -if [ ! -e "${BROWSER_ENTITLEMENTS_FILE}" ]; then - echo "Invalid entitlements file" - usage - exit -1 -fi - -# DMG file output flag is optional -if [ ! -z "${OUTPUT_DMG_FILE}" ] && - [ -e "${OUTPUT_DMG_FILE}" ]; then - echo "Output dmg file ${OUTPUT_DMG_FILE} exists. Please delete it first." - usage - exit -1 -fi - -echo "-------------------------------------------------------------------------" -echo "bundle: $BUNDLE" -echo "identity: $IDENTITY" -echo "browser entitlements file: $BROWSER_ENTITLEMENTS_FILE" -echo "plugin-container entitlements file: $PLUGINCONTAINER_ENTITLEMENTS_FILE" -echo "output dmg file (optional): $OUTPUT_DMG_FILE" -echo "-------------------------------------------------------------------------" - -set -x - -# move Zen_Browser.provisionprofile to the Contents directory -#cp Zen_Browser.provisionprofile "${BUNDLE}"/Contents/embedded.provisionprofile - -# Clear extended attributes which cause codesign to fail -xattr -cr "${BUNDLE}" - -# Sign these binaries first. Signing of some binaries has an ordering -# requirement where other binaries must be signed first. -codesign --force -o runtime --verbose --sign "$IDENTITY" \ -"${BUNDLE}/Contents/Library/LaunchServices/org.mozilla.updater" \ -"${BUNDLE}/Contents/MacOS/XUL" \ -"${BUNDLE}"/Contents/embedded.provisionprofile \ -"${BUNDLE}/Contents/MacOS/pingsender" - -# Sign every ${BUNDLE}/Contents/MacOS/*.dylib -find "${BUNDLE}"/Contents/MacOS -type f -name "*.dylib" -exec \ -codesign --force --verbose --sign "$IDENTITY" {} \; - -find "${BUNDLE}"/Contents/MacOS -type f -name "*.dylib" -exec \ -codesign -vvv --strict --deep --verbose {} \; - -codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \ -"${BUNDLE}"/Contents/MacOS/updater.app - -# Sign zen main executable -codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \ ---entitlements ${BROWSER_ENTITLEMENTS_FILE} \ -"${BUNDLE}"/Contents/MacOS/zen - -# Sign Library/LaunchServices -codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \ -"${BUNDLE}"/Contents/Library/LaunchServices/org.mozilla.updater - -# Sign gmp-clearkey files -find "${BUNDLE}"/Contents/Resources/gmp-clearkey -type f -exec \ -codesign --force -o runtime --verbose --sign "$IDENTITY" {} \; - -# Sign the main bundle -codesign --force -o runtime --verbose --sign "$IDENTITY" \ ---entitlements ${BROWSER_ENTITLEMENTS_FILE} "${BUNDLE}" - -# Sign the plugin-container bundle with deep -codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \ ---entitlements ${PLUGINCONTAINER_ENTITLEMENTS_FILE} \ -"${BUNDLE}"/Contents/MacOS/plugin-container.app - -# Validate -codesign -vvv --deep --strict "${BUNDLE}" - -# Create a DMG -if [ ! -z "${OUTPUT_DMG_FILE}" ]; then - DISK_IMAGE_DIR=`mktemp -d` - TEMP_FILE=`mktemp` - TEMP_DMG=${TEMP_FILE}.dmg - NAME=`basename "${BUNDLE}"` - - ditto "${BUNDLE}" "${DISK_IMAGE_DIR}/${NAME}" - hdiutil create -size 400m -fs HFS+ \ - -volname Firefox -srcfolder "${DISK_IMAGE_DIR}" "${TEMP_DMG}" - hdiutil convert -format UDZO \ - -o "${OUTPUT_DMG_FILE}" "${TEMP_DMG}" - - rm ${TEMP_FILE} - rm ${TEMP_DMG} - rm -rf "${DISK_IMAGE_DIR}" -fi diff --git a/build/codesign/plugin-container.developer.entitlements.xml b/build/codesign/plugin-container.developer.entitlements.xml deleted file mode 100644 index 050c2df66..000000000 --- a/build/codesign/plugin-container.developer.entitlements.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - com.apple.security.cs.allow-unsigned-executable-memory - - - com.apple.security.cs.allow-jit - - - com.apple.security.cs.disable-library-validation - - - com.apple.security.device.audio-input - - - com.apple.security.device.camera - - - com.apple.security.personal-information.location - - - com.apple.security.automation.apple-events - - \ No newline at end of file diff --git a/build/winsign/sign.ps1 b/build/winsign/sign.ps1 index 89e7b6514..c5cba97c5 100644 --- a/build/winsign/sign.ps1 +++ b/build/winsign/sign.ps1 @@ -29,7 +29,7 @@ echo "Downloaded x86_64 artifacts" mkdir engine\obj-x86_64-pc-windows-msvc\ -ErrorAction SilentlyContinue -pnpm surfer ci --brand release +npm run surfer -- ci --brand release function SignAndPackage($name) { echo "Executing on $name" @@ -53,7 +53,7 @@ function SignAndPackage($name) { } echo "Compat Mode? $env:SURFER_COMPAT" - pnpm surfer package --verbose + npm run package -- --verbose # In the release script, we do the following: # tar -xvf .github/workflows/object/windows-x64-signed-x86_64.tar.gz -C windows-x64-signed-x86_64 diff --git a/configs/common/mozconfig b/configs/common/mozconfig index f840e768c..74fda5740 100644 --- a/configs/common/mozconfig +++ b/configs/common/mozconfig @@ -9,7 +9,6 @@ ac_add_options --with-l10n-base="${topsrcdir}/browser/locales" export MOZ_USER_DIR="${name}" export MOZ_APP_BASENAME=Zen export MOZ_APP_PROFILE=${binName} -export MOZ_APP_DISPLAYNAME="${name}" export MOZ_BRANDING_DIRECTORY=${brandingDir} export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir} diff --git a/docs/issue-metrics/2025_2025-01-01..2025-01-31.md b/docs/issue-metrics/2025_2025-01-01..2025-01-31.md new file mode 100644 index 000000000..0eed99eba --- /dev/null +++ b/docs/issue-metrics/2025_2025-01-01..2025-01-31.md @@ -0,0 +1,522 @@ +# Issue Metrics + +| Metric | Average | Median | 90th percentile | +| --- | --- | --- | ---: | +| Time to first response | 1 day, 2:25:19 | 4:38:40 | 2 days, 20:40:51 | +| Time to close | 1 day, 21:15:55 | 8:22:21 | 5 days, 17:16:45 | + +| Metric | Count | +| --- | ---: | +| Number of items that remain open | 274 | +| Number of items closed | 230 | +| Total number of items created | 504 | + +| Title | URL | Time to first response | Time to close | +| --- | --- | --- | --- | +| Screen Sharing Issues when using Google Meet in Zen Browser | https://github.com/zen-browser/desktop/issues/4798 | 0:20:41 | 0:20:40 | +| All tabs are gone after I close Zen | https://github.com/zen-browser/desktop/issues/4797 | 1:59:48 | None | +| Setting the "Zen URL Bar" behavior to "Always floating" works the same as "Floating only when typing". | https://github.com/zen-browser/desktop/issues/4796 | None | None | +| Toggle Compact Mode Not Responsive | https://github.com/zen-browser/desktop/issues/4795 | 1:25:51 | 1:25:51 | +| Closing the last tab doesn't close the browser (again) | https://github.com/zen-browser/desktop/issues/4794 | 3:26:40 | None | +| flickering images | https://github.com/zen-browser/desktop/issues/4791 | None | None | +| Zen incorrectly assumes background color to be dark on some websites, making text unreadable | https://github.com/zen-browser/desktop/issues/4789 | 0:09:17 | 0:09:17 | +| Ctrl-tab should not cycle through essential tabs | https://github.com/zen-browser/desktop/issues/4787 | 4:08:36 | None | +| Erroneous conflicting shortcut (and maybe missing shortcut options) | https://github.com/zen-browser/desktop/issues/4785 | None | None | +| Touchpad space switching issue | https://github.com/zen-browser/desktop/issues/4783 | None | 0:02:16 | +| Closing 'new tab' or last opened tab opens last pinned tab or pinned essential if there is no pinned tab | https://github.com/zen-browser/desktop/issues/4779 | 0:41:29 | 1:03:21 | +| Scrolling bar UI issue: ugly white background | https://github.com/zen-browser/desktop/issues/4778 | 1:05:49 | 4:13:36 | +| Extensions become "big" after switching mode | https://github.com/zen-browser/desktop/issues/4777 | 1:36:21 | 1:36:21 | +| Missing "New Tab" option at the bottom of tab column | https://github.com/zen-browser/desktop/issues/4776 | 1:27:47 | 1:27:47 | +| PDF tab becomes unusable after unloading with unsaved edits | https://github.com/zen-browser/desktop/issues/4772 | None | 2:02:14 | +| Cloudflare ZeroTrust (Warp) VPN unable to connect if Zen is default browser | https://github.com/zen-browser/desktop/issues/4771 | None | None | +| Default Wayland Icon shows up in some places in KDE when installing from AppImage | https://github.com/zen-browser/desktop/issues/4770 | 2:51:55 | 2:54:44 | +| If i close a tab in the sidebar it reloads the entire window and also goes to the starting tabs again which i dont need | https://github.com/zen-browser/desktop/issues/4769 | 1:30:05 | 4:24:03 | +| Font doesnt load properly !! | https://github.com/zen-browser/desktop/issues/4767 | 1:27:56 | 3:58:48 | +| Tab Creation | https://github.com/zen-browser/desktop/issues/4766 | None | 0:01:11 | +| Open application menu button missing in Single toolbar mode | https://github.com/zen-browser/desktop/issues/4765 | 4:28:00 | 4:28:00 | +| moving through workspaces by trackpad swipe tracks the movement but not the direction | https://github.com/zen-browser/desktop/issues/4764 | None | None | +| Netflix does not work in zen | https://github.com/zen-browser/desktop/issues/4762 | 0:07:51 | 1:51:17 | +| Unable to remove duplicate workspaces buttons. | https://github.com/zen-browser/desktop/issues/4761 | 5:03:40 | 5:03:40 | +| Zen Identifies as Firefox in Powertoys run search plugin | https://github.com/zen-browser/desktop/issues/4759 | None | None | +| Close Window Keyboard Shortcut does nothing | https://github.com/zen-browser/desktop/issues/4758 | None | None | +| Scrolling on the tabs on a touch screen does nothing | https://github.com/zen-browser/desktop/issues/4757 | None | None | +| Glance stops working after closing with an unfinished form | https://github.com/zen-browser/desktop/issues/4756 | None | None | +| Dragging tabs scrollbar grabs window | https://github.com/zen-browser/desktop/issues/4755 | 7:07:32 | 7:07:31 | +| Pinned Tabs - URL does not reset when tab is closed, only when returning to the tab | https://github.com/zen-browser/desktop/issues/4754 | None | None | +| "empty space ontop of the vertical tabs" NOT fixed | https://github.com/zen-browser/desktop/issues/4753 | None | None | +| Passkeys using mac touchID is not working | https://github.com/zen-browser/desktop/issues/4752 | None | 8:03:39 | +| Out of order or hidden extensions on launch. Single Toolbar Mode | https://github.com/zen-browser/desktop/issues/4747 | None | None | +| Show in compact view not working | https://github.com/zen-browser/desktop/issues/4745 | 12:20:42 | 12:20:42 | +| Closing tab at the bottom of the tabs list puts you back on the top even if the tab isn't selected. | https://github.com/zen-browser/desktop/issues/4744 | 4:59:52 | 12:43:27 | +| Customizing toolbar spits the app | https://github.com/zen-browser/desktop/issues/4737 | 17:20:17 | 1 day, 0:31:32 | +| Zen URL bar settings doesn't work properly | https://github.com/zen-browser/desktop/issues/4736 | 12:52:11 | None | +| BUG: Bookmarks toolbar items shows 'Show more' arrow even though there are no more bookmarked items | https://github.com/zen-browser/desktop/issues/4735 | None | None | +| Scrolling after closing tab | https://github.com/zen-browser/desktop/issues/4733 | 15:39:10 | 1 day, 1:22:37 | +| BUG: Whole browser broken on Windows | https://github.com/zen-browser/desktop/issues/4732 | 0:08:04 | None | +| BUG: CTRL+SHIFT+B causes UI glitch by trying to show Bookmarks Toolbar in Single Toolbar Mode | https://github.com/zen-browser/desktop/issues/4731 | None | None | +| BUG:Abnormal printing of web articles | https://github.com/zen-browser/desktop/issues/4730 | 20:28:04 | 20:28:04 | +| JS close() calls constantly close the entire browser when a website calling it is the only tab left | https://github.com/zen-browser/desktop/issues/4729 | None | None | +| Dragging empty space on sidebar tabs undocks and moves the program | https://github.com/zen-browser/desktop/issues/4728 | 21:01:43 | 21:01:43 | +| The tab bar and top bar overlap and make it annoying to close the browser. | https://github.com/zen-browser/desktop/issues/4726 | None | None | +| Tab switching to recent tab (Ctrl-Tab) doesn't work across workspaces | https://github.com/zen-browser/desktop/issues/4725 | None | None | +| Top and side bars do not disappear in fullscreen mode | https://github.com/zen-browser/desktop/issues/4723 | 13:46:56 | 22:02:10 | +| Toggling "Display workspaces as an icon strip" twice doesn't return to correctly rendered strip | https://github.com/zen-browser/desktop/issues/4722 | None | None | +| Separate window cannot be closed | https://github.com/zen-browser/desktop/issues/4719 | 1 day, 1:32:05 | None | +| Customize the toolbar without the toggle sidebar icon | https://github.com/zen-browser/desktop/issues/4717 | 1 day, 1:07:42 | None | +| No option to translate to Vietnamese | https://github.com/zen-browser/desktop/issues/4716 | None | None | +| When opening a site with prompt credentials form, the site cannot be opened | https://github.com/zen-browser/desktop/issues/4715 | None | None | +| Links that are not from same domain are opened in Glance when clicked within essential tab, even when Glance is disabled and browser restarted. | https://github.com/zen-browser/desktop/issues/4714 | None | None | +| Selected audio output device (speaker) is not being used | https://github.com/zen-browser/desktop/issues/4713 | None | None | +| ZEN BROWSER crash when open "more tools" menu twice | https://github.com/zen-browser/desktop/issues/4712 | 0:02:34 | None | +| Infinity loading | https://github.com/zen-browser/desktop/issues/4711 | None | 6:24:50 | +| Duplicate entry in Settings > Keyboard Shortcuts | https://github.com/zen-browser/desktop/issues/4709 | None | None | +| [BUG] Extension icons becomes huge after folding tabbar | https://github.com/zen-browser/desktop/issues/4707 | 9:14:59 | None | +| Duplicate entries in settings page | https://github.com/zen-browser/desktop/issues/4706 | None | None | +| Jitter / Stutter on macbook pro with apple silicon | https://github.com/zen-browser/desktop/issues/4705 | 0:21:08 | None | +| Wallpaper settings subsections don't take full width | https://github.com/zen-browser/desktop/issues/4704 | None | None | +| Zen Rice sharing is broken | https://github.com/zen-browser/desktop/issues/4701 | 2:38:42 | 11:21:17 | +| Preedit text misplacement in search box under Wayland with Fcitx5 input method | https://github.com/zen-browser/desktop/issues/4699 | None | None | +| permanently disable browser.tabs.allow_transparent_browser | https://github.com/zen-browser/desktop/issues/4698 | 1 day, 15:39:09 | None | +| Bookmarks Duplicated & Out of Sync | https://github.com/zen-browser/desktop/issues/4697 | None | None | +| Twitch freeze when alt-tabbing | https://github.com/zen-browser/desktop/issues/4696 | 2 days, 3:55:36 | None | +| Popup for TST extension that should occur once, occurs every time Zen is launched (Windows build issue, not Mac) | https://github.com/zen-browser/desktop/issues/4695 | 0:17:58 | None | +| overflow menu. | https://github.com/zen-browser/desktop/issues/4694 | None | None | +| Close tab X button hitbox is different between hover hitbox and click hitbox | https://github.com/zen-browser/desktop/issues/4692 | None | None | +| Menu Alignment Issues | https://github.com/zen-browser/desktop/issues/4691 | None | None | +| Zen freezes several times a day | https://github.com/zen-browser/desktop/issues/4690 | 2 days, 1:37:06 | 2 days, 5:28:59 | +| Scroll issue | https://github.com/zen-browser/desktop/issues/4689 | None | None | +| Issue with Zen Browser Getting Uninstalled Automatically | https://github.com/zen-browser/desktop/issues/4688 | None | None | +| Glance and Keyboard Focus | https://github.com/zen-browser/desktop/issues/4687 | 15:14:37 | None | +| Opening a new Tab when currently in an Essential tab, opens the news tab in Glance Mode | https://github.com/zen-browser/desktop/issues/4686 | 2 days, 4:20:37 | None | +| Empty Space on Tab bar above Workspace when aligned to right | https://github.com/zen-browser/desktop/issues/4683 | 1 day, 23:36:21 | None | +| [BUG] Native sidebar and Zen sidepanel splitters are positioned too close to each other | https://github.com/zen-browser/desktop/issues/4680 | None | None | +| Terminology (and icons) for Sidebars and Side Web Panels too similar and ambiguous | https://github.com/zen-browser/desktop/issues/4679 | 0:11:52 | 2 days, 15:30:38 | +| Customize toolbar in single toolbar mode looks like multiple toolbars | https://github.com/zen-browser/desktop/issues/4678 | None | None | +| Elements in top toolbar overlap when it is resized too small | https://github.com/zen-browser/desktop/issues/4676 | None | None | +| Empty space on the top of compact mode small sidebar | https://github.com/zen-browser/desktop/issues/4674 | 0:14:45 | 0:14:45 | +| Headset is not recognized in google meet | https://github.com/zen-browser/desktop/issues/4671 | None | None | +| Popup is cut in compact mode | https://github.com/zen-browser/desktop/issues/4670 | None | None | +| Combining windows causes tabs in other workspaces to become inaccessible | https://github.com/zen-browser/desktop/issues/4668 | None | None | +| Adjust search text and icon size when searching on a new tab. | https://github.com/zen-browser/desktop/issues/4667 | None | None | +| Tabs freezes while my RAM/VRAM utlizing | https://github.com/zen-browser/desktop/issues/4666 | None | None | +| Workspace Icons are overlayed with the theme color | https://github.com/zen-browser/desktop/issues/4665 | 15:18:13 | 15:18:13 | +| Unable to assign Cmd+Z for undo | https://github.com/zen-browser/desktop/issues/4664 | None | None | +| Black Screen on Windows after opening the Zen Browser | https://github.com/zen-browser/desktop/issues/4663 | None | None | +| Forward button icon slightly offcenter | https://github.com/zen-browser/desktop/issues/4662 | None | None | +| Everything opens in Glance | https://github.com/zen-browser/desktop/issues/4661 | 13:00:08 | 13:00:08 | +| Wrong location of title bar buttons when opening external links from VS Code | https://github.com/zen-browser/desktop/issues/4660 | None | None | +| Web Page print would not render preview | https://github.com/zen-browser/desktop/issues/4659 | 0:18:04 | 0:18:04 | +| Issue with Youtube playback in 4K quality | https://github.com/zen-browser/desktop/issues/4652 | None | None | +| when searching on the address bar, a new tab open instead of the origion tab | https://github.com/zen-browser/desktop/issues/4651 | None | None | +| Compact mode won't disable after changing which toolbars are hidden | https://github.com/zen-browser/desktop/issues/4649 | 16:26:34 | None | +| Problem with tab bar and top bar | https://github.com/zen-browser/desktop/issues/4648 | 7:28:57 | None | +| Excessive margin between bookmark sidebar and center pane | https://github.com/zen-browser/desktop/issues/4647 | 7:37:12 | None | +| I am not able to save my bookmarks of zen with the autoExportHTML flag, this works fine on firefox though. | https://github.com/zen-browser/desktop/issues/4646 | None | None | +| Dropdown input is not selected | https://github.com/zen-browser/desktop/issues/4645 | None | None | +| Toolbar becomes big after customizing the bookmarks placement | https://github.com/zen-browser/desktop/issues/4641 | None | None | +| Zen Mods are not properly installing | https://github.com/zen-browser/desktop/issues/4640 | None | None | +| HDR video plays in SDR | https://github.com/zen-browser/desktop/issues/4639 | None | 3 days, 3:56:44 | +| The rounded corner to the bottom right of the web viewport needs a bigger border radius on linux GTK | https://github.com/zen-browser/desktop/issues/4638 | 3:57:05 | 3:57:05 | +| Tab bar title not aligned properly | https://github.com/zen-browser/desktop/issues/4636 | None | None | +| Window Control Buttons Missing on Linux | https://github.com/zen-browser/desktop/issues/4635 | None | None | +| System freezes while using zen browser | https://github.com/zen-browser/desktop/issues/4634 | 4 days, 17:38:33 | None | +| keymaps issue | https://github.com/zen-browser/desktop/issues/4631 | 0:42:05 | None | +| tool bar stucked | https://github.com/zen-browser/desktop/issues/4630 | 7:29:01 | 1 day, 2:03:18 | +| side bar bug | https://github.com/zen-browser/desktop/issues/4628 | None | None | +| System Crashes (Blue Screen) While Using Zen Browser | https://github.com/zen-browser/desktop/issues/4627 | 10:07:14 | None | +| Macos fullscreen url bar overlaps with bookmark | https://github.com/zen-browser/desktop/issues/4625 | None | None | +| pdf will not load to print | https://github.com/zen-browser/desktop/issues/4623 | 1:48:06 | 1 day, 21:47:12 | +| The sidebar loses it's colour when in compact mode and revealed using the mouse cursor | https://github.com/zen-browser/desktop/issues/4621 | None | None | +| Printer Menu Perpetually Loads; cannot print anything from the browser | https://github.com/zen-browser/desktop/issues/4620 | 0:17:13 | 0:17:13 | +| Extension install dialog is over the tab-bar | https://github.com/zen-browser/desktop/issues/4617 | None | None | +| Light and Dark Mode from Firefox UI Bug | https://github.com/zen-browser/desktop/issues/4616 | None | None | +| Starting 1.7.1b, colourful dark theme doesn't work on browser frame | https://github.com/zen-browser/desktop/issues/4615 | None | None | +| Installing mods overwrites all currently installed ones | https://github.com/zen-browser/desktop/issues/4614 | None | None | +| text pops out of the buttons in Russian | https://github.com/zen-browser/desktop/issues/4613 | None | None | +| Can't do sidebar smaller | https://github.com/zen-browser/desktop/issues/4612 | 0:54:29 | 1 day, 14:32:22 | +| Customized toolbar icons aren't showing | https://github.com/zen-browser/desktop/issues/4610 | 5 days, 0:37:36 | None | +| Web view rounded corners disappear when `backdrop-filter` is used in the page | https://github.com/zen-browser/desktop/issues/4609 | None | None | +| Links don't open in browser | https://github.com/zen-browser/desktop/issues/4608 | None | 6 days, 11:27:06 | +| Issues with tab bar padding and workspaces | https://github.com/zen-browser/desktop/issues/4607 | None | 6 days, 11:37:23 | +| New Windows do not focus the address bar automatically | https://github.com/zen-browser/desktop/issues/4606 | None | None | +| Keybinding Conflict in Zen Browser | https://github.com/zen-browser/desktop/issues/4605 | 2 days, 17:44:23 | None | +| Zen browser URL bar flickering | https://github.com/zen-browser/desktop/issues/4604 | 23:56:25 | None | +| Workspace icon does not get set on creation | https://github.com/zen-browser/desktop/issues/4603 | None | None | +| Browser crashed when clicking expand toolbar button | https://github.com/zen-browser/desktop/issues/4600 | None | None | +| Close Pinned tabs in right click menu ignores "close tab shortcut behaviour" in prefs | https://github.com/zen-browser/desktop/issues/4599 | None | None | +| Weird color highlight (again) & thin border on right side | https://github.com/zen-browser/desktop/issues/4598 | None | None | +| Window control buttons disappear on MacOS | https://github.com/zen-browser/desktop/issues/4597 | None | None | +| Zen is not showing up in the default web browser selection on Elementary OS 8 settings | https://github.com/zen-browser/desktop/issues/4594 | 3:27:41 | 23:09:00 | +| My accounts keep signing out after a while. (Google, Github) | https://github.com/zen-browser/desktop/issues/4593 | 6 days, 0:59:05 | None | +| Arrows are Backwards | https://github.com/zen-browser/desktop/issues/4592 | 7:58:01 | 19:33:43 | +| Bookmarks Toolbar automatically hides in "Single toolbar" layout even though "Alway Show" is enabled | https://github.com/zen-browser/desktop/issues/4591 | None | None | +| Zen couldn’t find any programs that contain bookmark, history or password data. | https://github.com/zen-browser/desktop/issues/4589 | 0:12:09 | 0:12:09 | +| Cannot remove Workspace switch from side bar/toolbar | https://github.com/zen-browser/desktop/issues/4588 | 0:10:50 | 0:18:19 | +| Window size of [Shows tabs from other devices] | https://github.com/zen-browser/desktop/issues/4586 | None | None | +| Bug, tabs getting "stuck" randomly, unclickable | https://github.com/zen-browser/desktop/issues/4583 | 11:25:21 | None | +| Sort Mods Store by popularity | https://github.com/zen-browser/desktop/issues/4582 | 6:36:38 | 6:36:38 | +| Significant FPS drop when playing 4k/1440p youtube video | https://github.com/zen-browser/desktop/issues/4580 | 0:12:21 | None | +| Adressbar only showing on hover if sidebar width is collabsed | https://github.com/zen-browser/desktop/issues/4579 | 0:07:48 | 0:13:21 | +| Can't find on github search | https://github.com/zen-browser/desktop/issues/4576 | 4:34:29 | 4:34:29 | +| URL is shifted to the right when a permission is granted to a website | https://github.com/zen-browser/desktop/issues/4574 | 4:46:44 | 15:13:36 | +| can't change font for different languages | https://github.com/zen-browser/desktop/issues/4573 | 13:11:54 | 2 days, 19:07:15 | +| Extention storage full or | https://github.com/zen-browser/desktop/issues/4572 | None | None | +| Sidebar layout issues | https://github.com/zen-browser/desktop/issues/4570 | None | None | +| codeiq.vex.com unsupported since 1.7.2b | https://github.com/zen-browser/desktop/issues/4569 | 0:56:16 | 17:32:41 | +| Zen not showing any webpage when out of compact mode | https://github.com/zen-browser/desktop/issues/4566 | None | None | +| Discord Web App Forces Links to Open in Glance Window, Overriding User Preferences | https://github.com/zen-browser/desktop/issues/4564 | 2:42:18 | 3:30:19 | +| Some Firefox settings wiped after signing into sync | https://github.com/zen-browser/desktop/issues/4562 | 0:39:56 | None | +| Empty space on top of sidebar in compact mode | https://github.com/zen-browser/desktop/issues/4561 | 0:05:34 | 0:05:34 | +| Cannot Click to Place Cursor in Address-Bar on Linux and Windows | https://github.com/zen-browser/desktop/issues/4560 | 4 days, 18:49:29 | None | +| Prezo.ai : site broken, not loading properly on Zen Browser. | https://github.com/zen-browser/desktop/issues/4557 | 1 day, 20:29:16 | None | +| Printing preview loads indefinitely | https://github.com/zen-browser/desktop/issues/4555 | 2:59:17 | 2 days, 9:39:10 | +| Neither swipe gestures nor mouse forward/backward buttons work to switch workspaces | https://github.com/zen-browser/desktop/issues/4554 | 1:04:38 | None | +| Expand Sidebar Icon missing when sidebar is folded | https://github.com/zen-browser/desktop/issues/4553 | 5:31:28 | None | +| Windows' button shadows, bleed into the website space | https://github.com/zen-browser/desktop/issues/4551 | None | None | +| MacOS pointer not hiding when entering fullscreen | https://github.com/zen-browser/desktop/issues/4550 | None | None | +| Private browsing Profile Icon is missing | https://github.com/zen-browser/desktop/issues/4549 | None | None | +| When customizing toolbar allows the browser window to be dragged but not maximized. | https://github.com/zen-browser/desktop/issues/4548 | None | None | +| Workspace icons moved from top to side bar | https://github.com/zen-browser/desktop/issues/4547 | 3:50:50 | 3:50:50 | +| macOS: 'All Desktops' option in dock icon context menu not functioning | https://github.com/zen-browser/desktop/issues/4546 | None | None | +| OPTIONS preflight request uses HTTPS while GET request is HTTP in Angular | https://github.com/zen-browser/desktop/issues/4545 | None | None | +| Cannot adjust horizontal split width when zen web panels are pinned | https://github.com/zen-browser/desktop/issues/4544 | None | None | +| Searchbar widget doesn't iconify in collapsed mode Sidebar | https://github.com/zen-browser/desktop/issues/4543 | None | None | +| Rightmost icon in multiple toolbars disappears on launch | https://github.com/zen-browser/desktop/issues/4542 | None | None | +| Essentials disappear when switching container with PiP playing | https://github.com/zen-browser/desktop/issues/4541 | None | None | +| Workspace switchers over vertical tabs misplaced after 1.7.2b | https://github.com/zen-browser/desktop/issues/4540 | 9:53:46 | 11:31:54 | +| Compact mode works once per window | https://github.com/zen-browser/desktop/issues/4539 | 0:15:28 | 18:44:40 | +| 1Password integrations | https://github.com/zen-browser/desktop/issues/4538 | 12:10:26 | 15:09:30 | +| Extra white space at the top of the sidebar | https://github.com/zen-browser/desktop/issues/4537 | 4:37:10 | 3 days, 6:44:37 | +| Windows - Can't hide any Bars | https://github.com/zen-browser/desktop/issues/4536 | 12:20:24 | 12:20:24 | +| Typo | https://github.com/zen-browser/desktop/issues/4534 | 13:55:02 | 13:55:02 | +| Viewport rounded corners flicker & sharpness | https://github.com/zen-browser/desktop/issues/4533 | None | 0:05:25 | +| Reloading Unloaded PDF tabs creates duplicates | https://github.com/zen-browser/desktop/issues/4532 | 9:22:02 | None | +| Browser shows extra animation every time user switches to a split | https://github.com/zen-browser/desktop/issues/4531 | 16:36:14 | None | +| Screenshot icon disappeads from toolbar after each time my MAC is shutdown | https://github.com/zen-browser/desktop/issues/4530 | None | 1 day, 8:23:32 | +| I want to close my WINDOW with Ctrl + W | https://github.com/zen-browser/desktop/issues/4529 | 0:21:41 | 1 day, 2:07:59 | +| Browser Closes when All Tabs in Default Workspace are Closed Even with Other Tabs | https://github.com/zen-browser/desktop/issues/4528 | None | None | +| IDN address show punny code in URL | https://github.com/zen-browser/desktop/issues/4527 | None | None | +| Text is garbled in google docs | https://github.com/zen-browser/desktop/issues/4522 | 1 day, 2:06:08 | 2 days, 6:20:50 | +| Sidebar issues | https://github.com/zen-browser/desktop/issues/4520 | None | None | +| Sidebar wallpaper blur Macos | https://github.com/zen-browser/desktop/issues/4519 | None | None | +| Zen crashes on macOS when expanding and collapsing tab bar | https://github.com/zen-browser/desktop/issues/4518 | 8:01:33 | 8:05:17 | +| Hide and unhide sidebar impacts the Extensions icons size | https://github.com/zen-browser/desktop/issues/4517 | 4 days, 11:55:27 | None | +| Overflow menu gone in single toolbar mode | https://github.com/zen-browser/desktop/issues/4516 | None | None | +| light theme page container looks like outset | https://github.com/zen-browser/desktop/issues/4515 | 6:33:55 | 6:33:55 | +| marvinpinto/action-automatic-releases should be updated to Node20 | https://github.com/zen-browser/desktop/issues/4514 | None | None | +| Searching using the new tab search box shows the name of the engine in the address bar | https://github.com/zen-browser/desktop/issues/4512 | None | None | +| Icons in collapsible top bar don't line up with other single toolbar icons | https://github.com/zen-browser/desktop/issues/4511 | None | None | +| Top button wrap feature hides buttons when there is space | https://github.com/zen-browser/desktop/issues/4510 | None | None | +| Hide bars doesn't work after last update | https://github.com/zen-browser/desktop/issues/4509 | 0:53:56 | 4:12:00 | +| artifacts/lines across screen on some websites. | https://github.com/zen-browser/desktop/issues/4508 | None | None | +| Browser freezes and CPU usage spikes after opening/closing "More tools" twice | https://github.com/zen-browser/desktop/issues/4507 | 1:22:50 | None | +| flood to Google by fast open/close broser. request support base64 favicon | https://github.com/zen-browser/desktop/issues/4506 | None | None | +| "Pin Tab" missing in keyboard shortcut settings | https://github.com/zen-browser/desktop/issues/4504 | None | None | +| Container tab opens the old signed in page | https://github.com/zen-browser/desktop/issues/4503 | None | None | +| Container Indicator Still Showing With New Window | https://github.com/zen-browser/desktop/issues/4502 | 8:13:52 | 8:13:52 | +| Text on PDFs/Powerpoints is completely unreadable | https://github.com/zen-browser/desktop/issues/4501 | 0:09:15 | 0:09:18 | +| Bookmarks in toolbar and ability to add bookmarks dissapppeared with release 1.7.1b | https://github.com/zen-browser/desktop/issues/4499 | 4 days, 3:23:33 | 3 days, 7:20:47 | +| Theme Selection Issue After Browser Update version 1.7.1b Windows | https://github.com/zen-browser/desktop/issues/4498 | 0:28:37 | 0:28:37 | +| Browser Freeze on image copy | https://github.com/zen-browser/desktop/issues/4497 | None | None | +| Fcitx5 doesn't load skins / themes / settings on KDE 6 wayland | https://github.com/zen-browser/desktop/issues/4495 | 1:42:18 | None | +| When starting zen browser it takes a long time starting up | https://github.com/zen-browser/desktop/issues/4494 | None | None | +| Scrolling between the workspaces is very slow.. | https://github.com/zen-browser/desktop/issues/4493 | None | 9 days, 9:07:24 | +| Theme colour interfering with webpage | https://github.com/zen-browser/desktop/issues/4492 | 1:24:45 | 1:24:45 | +| Essentials turning into pinned tab in new window | https://github.com/zen-browser/desktop/issues/4491 | None | None | +| All add-ons have been disabled by safe mode on version 1.7.1b Windows | https://github.com/zen-browser/desktop/issues/4490 | None | 23:06:20 | +| Opening the overflow menu twice freezes the browser window on MacOs | https://github.com/zen-browser/desktop/issues/4489 | 1 day, 10:02:01 | 5 days, 8:07:24 | +| After updating to 1.7.1 Zen "broke" | https://github.com/zen-browser/desktop/issues/4488 | 0:28:58 | 3:10:29 | +| After highlighting search toolbar the background blur breaks out. | https://github.com/zen-browser/desktop/issues/4487 | 3:22:32 | None | +| Compact Mode No Longer Hides Sidebar and Top Toolbar | https://github.com/zen-browser/desktop/issues/4486 | 0:13:16 | 0:20:02 | +| mailto dialog breaks when compact mode is enabled | https://github.com/zen-browser/desktop/issues/4485 | None | None | +| Toolbar is not hiding after hide both top bar and tab bar | https://github.com/zen-browser/desktop/issues/4484 | 0:46:49 | 0:54:21 | +| After last update, ZEN browser just disappered! | https://github.com/zen-browser/desktop/issues/4482 | 2:13:47 | 1 day, 19:31:19 | +| browser.tabs.closeWindowWithLastTab does not work when there are essentials or pinned tabs | https://github.com/zen-browser/desktop/issues/4481 | None | None | +| Address Bar Slides Down Unexpectedly When Hovering for Toolbar in Full-Screen Mode | https://github.com/zen-browser/desktop/issues/4480 | None | None | +| Web panel icon in the sidebar is missing | https://github.com/zen-browser/desktop/issues/4479 | 4:50:13 | None | +| Broken scrollbar on the sidebar | https://github.com/zen-browser/desktop/issues/4478 | 4:38:40 | 4:38:40 | +| Tab Toolbar No Longer Collapsing | https://github.com/zen-browser/desktop/issues/4477 | 2:05:12 | 4:17:18 | +| Tab group collapsing seems to not work | https://github.com/zen-browser/desktop/issues/4476 | 0:13:43 | 9:07:00 | +| No button to enable compact mode in settings page | https://github.com/zen-browser/desktop/issues/4473 | 5:51:29 | 6:25:51 | +| Can't click out of submenus or right-click context menu. | https://github.com/zen-browser/desktop/issues/4471 | None | 0:14:04 | +| "Some of Zen's security features may offer less protection on your current operating system" | https://github.com/zen-browser/desktop/issues/4470 | 0:42:44 | 0:42:47 | +| Dragging out the last tab from the tab list opens up another window | https://github.com/zen-browser/desktop/issues/4469 | 1:50:02 | None | +| Wrong location of input content directly after creating a new tab page | https://github.com/zen-browser/desktop/issues/4468 | 14:53:17 | 14:53:17 | +| active Essentials tab - url changed is opening in the active Essentials tab instead of new tab | https://github.com/zen-browser/desktop/issues/4467 | 0:04:56 | 0:04:56 | +| The Current Workspace Indicator is no longer clickable. | https://github.com/zen-browser/desktop/issues/4466 | 0:41:38 | None | +| My browser addons do not show up or have any effect in the Web panel tabs? | https://github.com/zen-browser/desktop/issues/4465 | None | None | +| Profile switcher not showing in collapsed sidebar | https://github.com/zen-browser/desktop/issues/4464 | None | None | +| Facebook does not work | https://github.com/zen-browser/desktop/issues/4463 | None | 0:08:40 | +| Latest Twilight Release breaks UI on MacOS | https://github.com/zen-browser/desktop/issues/4462 | 0:38:30 | 19:02:04 | +| Zen Compact mode doesn't work at all | https://github.com/zen-browser/desktop/issues/4461 | 0:33:07 | 1:45:21 | +| Extension permissions window shifted | https://github.com/zen-browser/desktop/issues/4460 | 1:45:17 | None | +| Browser Extensions Display Incorrectly When Changing Sidebar Width in Single Toolbar Mode | https://github.com/zen-browser/desktop/issues/4459 | None | None | +| Missing "Change theme colors" | https://github.com/zen-browser/desktop/issues/4458 | 3:34:32 | None | +| Zen getting closed immediately when I open it after screen is locked for some time | https://github.com/zen-browser/desktop/issues/4457 | 1 day, 3:23:38 | 6 days, 4:08:52 | +| Tab sidebar does not sliding properly with touchpad (IT FIXED WHEN UPDATE 1.7B) | https://github.com/zen-browser/desktop/issues/4456 | 4:03:13 | 4:04:23 | +| Massive Visual Glitch | https://github.com/zen-browser/desktop/issues/4455 | 4:28:14 | 4:38:13 | +| Tab and top bars not collapsing when upgrading from 1.7b to 1.7.1b | https://github.com/zen-browser/desktop/issues/4454 | 1:36:02 | 5:22:48 | +| Workspace Emoji not updating choice | https://github.com/zen-browser/desktop/issues/4453 | None | None | +| Synchronizing Duplicates Default Workspace | https://github.com/zen-browser/desktop/issues/4452 | 1 day, 7:42:33 | None | +| Tabs freeze when opening new ones | https://github.com/zen-browser/desktop/issues/4451 | 8:44:35 | None | +| Severe memory leak | https://github.com/zen-browser/desktop/issues/4450 | 3:35:43 | None | +| Tab Retitle Not Working For All Workspaces | https://github.com/zen-browser/desktop/issues/4448 | None | None | +| Scrolling horizontally on the sidebar animates even when current workspace is the only workspace | https://github.com/zen-browser/desktop/issues/4447 | None | None | +| Essentials Loading In Wrong Workspace When Using Firefox Multi-Acccount Containers | https://github.com/zen-browser/desktop/issues/4446 | 1 day, 13:29:49 | 1 day, 22:44:12 | +| Link to Firefox app in about:protections | https://github.com/zen-browser/desktop/issues/4445 | 17:52:50 | None | +| The name of the application displayed in the notification | https://github.com/zen-browser/desktop/issues/4444 | None | None | +| Bookmarks duplicate on new window (sometimes) | https://github.com/zen-browser/desktop/issues/4443 | None | 9 days, 4:00:20 | +| "Undo Close Window" action does not work correctly | https://github.com/zen-browser/desktop/issues/4442 | None | None | +| Zen Browser very slow to load all websites | https://github.com/zen-browser/desktop/issues/4441 | None | 8:28:11 | +| Close Browser issue | https://github.com/zen-browser/desktop/issues/4440 | None | None | +| 1password-extension connection failure on ZEN browser | https://github.com/zen-browser/desktop/issues/4438 | 0:13:02 | None | +| Container indicators always show on tabs dragged out of window, even if they are opened in their containers' default workspaces | https://github.com/zen-browser/desktop/issues/4437 | None | None | +| Essentials in new windows open in container of last used workspace instead of their actual containers | https://github.com/zen-browser/desktop/issues/4436 | None | None | +| Forced compact mode on multiple toolbars view, right of screen cut off | https://github.com/zen-browser/desktop/issues/4434 | 2:00:41 | 10:00:34 | +| Forced compact mode on multiple toolbars view, right of screen cut off | https://github.com/zen-browser/desktop/issues/4433 | 10:03:04 | 10:03:04 | +| problem moving icons | https://github.com/zen-browser/desktop/issues/4432 | None | 1 day, 22:26:39 | +| (Regression?) Tab moving is buggy after switching workspaces | https://github.com/zen-browser/desktop/issues/4431 | None | 13 days, 3:51:45 | +| Changing theme to light does not work | https://github.com/zen-browser/desktop/issues/4430 | None | 1:26:30 | +| Bottom Corners are not Rounded | https://github.com/zen-browser/desktop/issues/4428 | 0:09:07 | 0:09:07 | +| Moving bookmark items to sidebar makes it stuck | https://github.com/zen-browser/desktop/issues/4427 | None | None | +| Actual Window Width of Zen Twilight 1.7t (2025-01-18 at 00:37:45) | https://github.com/zen-browser/desktop/issues/4426 | 4:16:49 | None | +| Text in modals are blank | https://github.com/zen-browser/desktop/issues/4425 | None | None | +| Problem customizing the toolbar | https://github.com/zen-browser/desktop/issues/4424 | None | None | +| REGRESSION: Non-workspace users are seeing an useless button. | https://github.com/zen-browser/desktop/issues/4423 | 1:27:08 | 1:27:08 | +| Homepage and new tabs are clashing/reseting between two extensions after restarting the browser | https://github.com/zen-browser/desktop/issues/4420 | 9:59:30 | None | +| Zen browser (flatpak Linux) too slow to load the first website on first start | https://github.com/zen-browser/desktop/issues/4418 | None | None | +| Buggy Youtube entering and exiting full screen mode | https://github.com/zen-browser/desktop/issues/4417 | 1:28:01 | None | +| Unexpected UI for essential's active tabs | https://github.com/zen-browser/desktop/issues/4416 | None | None | +| old tab is not opening again. | https://github.com/zen-browser/desktop/issues/4412 | 13:38:37 | 13:57:44 | +| All gone on update | https://github.com/zen-browser/desktop/issues/4411 | 0:16:47 | 0:18:50 | +| https://discord.com requires login every refresh and is irresponsive when using Ctrl+Shift+I | https://github.com/zen-browser/desktop/issues/4408 | None | None | +| Required to double-click non tab elements in vertical tab bar | https://github.com/zen-browser/desktop/issues/4406 | None | 15 days, 1:43:06 | +| New tab opened with link click does not scroll into view, or have any indication that a new tab is been created | https://github.com/zen-browser/desktop/issues/4405 | None | None | +| Uneven padding in the window border | https://github.com/zen-browser/desktop/issues/4404 | None | None | +| editing problem in the url bar | https://github.com/zen-browser/desktop/issues/4403 | None | None | +| CMD+W closes the browser. | https://github.com/zen-browser/desktop/issues/4402 | 0:13:23 | 0:13:23 | +| Toolbar blinks when in compact mode and while hovering over it with a mouse | https://github.com/zen-browser/desktop/issues/4401 | 0:36:52 | 0:36:52 | +| When two windows of Zen are opened, they have slightly different color scheme | https://github.com/zen-browser/desktop/issues/4400 | 1 day, 4:29:58 | 2 days, 2:33:55 | +| Browser freezes after abruptly closing essential before loading them | https://github.com/zen-browser/desktop/issues/4399 | None | None | +| Collapsible Sidebar Not Functioning Correctly | https://github.com/zen-browser/desktop/issues/4398 | 2:47:32 | 2:47:32 | +| Failed to find update in twilight | https://github.com/zen-browser/desktop/issues/4397 | 2:49:14 | 3:02:05 | +| keepassxc addon not working on garuda linux | https://github.com/zen-browser/desktop/issues/4396 | None | 0:01:02 | +| (MacOS) Audio on browser not app-adjustable in utilities that allow individual app volume control. | https://github.com/zen-browser/desktop/issues/4395 | None | None | +| When enabling and disabling compact mode, depending on the web page you are viewing, the page jitters | https://github.com/zen-browser/desktop/issues/4394 | 3:26:06 | 3:26:06 | +| No dialog to give an "escape full screen" button when in full screen video, i.e on YouTube | https://github.com/zen-browser/desktop/issues/4392 | 4:01:26 | 4:01:26 | +| Pinned tabs are looking like regular tabs with a separator | https://github.com/zen-browser/desktop/issues/4391 | 0:48:28 | 21:14:22 | +| Added a new container and workspace, changed the icon and color, which caused in the search bar indicator to disappear. | https://github.com/zen-browser/desktop/issues/4390 | None | None | +| toolbar doesnt pop up when opening tabs with middle mouse click | https://github.com/zen-browser/desktop/issues/4389 | None | None | +| tabs are unloaded too quickly | https://github.com/zen-browser/desktop/issues/4388 | 0:27:37 | None | +| 1.7b When browser closes when the last tab is closed, it creates a new tab, and then quits | https://github.com/zen-browser/desktop/issues/4387 | None | None | +| 1.7b Active Tab Design | https://github.com/zen-browser/desktop/issues/4386 | 1:19:07 | None | +| Visual glitches with fonts on some websites | https://github.com/zen-browser/desktop/issues/4385 | 1:13:45 | 1:13:45 | +| 1.7b laggy in general compared to 1.6b | https://github.com/zen-browser/desktop/issues/4384 | 2:20:31 | 6 days, 23:13:36 | +| Tab unloader does not work; does not reduce resource consumption | https://github.com/zen-browser/desktop/issues/4383 | 6:47:30 | None | +| ZIP download button does nothing | https://github.com/zen-browser/desktop/issues/4382 | 0:26:46 | 0:26:46 | +| The history button is broken on the side bar | https://github.com/zen-browser/desktop/issues/4381 | 1:36:08 | None | +| Pixelated Text | https://github.com/zen-browser/desktop/issues/4380 | 1:34:11 | 1:34:11 | +| Allow workspaces have their own pinned tabs not working 1.7b | https://github.com/zen-browser/desktop/issues/4379 | 5:21:45 | 5:21:45 | +| Full LTO causes crash with flatpak | https://github.com/zen-browser/desktop/issues/4378 | 7:38:51 | None | +| Lost all pins and essentials on update 1.7b | https://github.com/zen-browser/desktop/issues/4377 | 6:01:05 | None | +| 1.7b tab bar choppy animation and interaction issue | https://github.com/zen-browser/desktop/issues/4376 | 22:56:24 | None | +| Workspace switching by touchpad swipe doesn't work with too many tabs open. | https://github.com/zen-browser/desktop/issues/4375 | 0:05:39 | None | +| Synced tabs pop-up layout messed up | https://github.com/zen-browser/desktop/issues/4371 | None | None | +| Keyboard shortcuts keep being reset | https://github.com/zen-browser/desktop/issues/4370 | 17:21:42 | 2 days, 1:32:20 | +| Zen doesn't respond quickly (~2 min) to discord attempting to download .deb file for update | https://github.com/zen-browser/desktop/issues/4369 | 0:32:40 | None | +| Compact tab bar isn't going to hide at last Twilight build (1.7t (2025-01-15)) | https://github.com/zen-browser/desktop/issues/4368 | 0:33:05 | 0:33:05 | +| Sidebar does't change width properly. | https://github.com/zen-browser/desktop/issues/4367 | 1:29:43 | 1:29:43 | +| Dialog box appearing in wrong direction | https://github.com/zen-browser/desktop/issues/4366 | 1:59:09 | 4:33:28 | +| 1Password says there's a Firefox update available | https://github.com/zen-browser/desktop/issues/4365 | 5:09:12 | None | +| Sometimes tabs stuck and not clickable | https://github.com/zen-browser/desktop/issues/4362 | 0:19:25 | None | +| Side Web Panel icon shows after start when deactivated | https://github.com/zen-browser/desktop/issues/4361 | 19:20:10 | None | +| Tab bar scrolls slow and buggy | https://github.com/zen-browser/desktop/issues/4359 | 0:09:28 | 0:23:50 | +| Zen Browser opens zen-beta? | https://github.com/zen-browser/desktop/issues/4358 | 11:38:19 | 1 day, 0:36:24 | +| Tab bar is blue | https://github.com/zen-browser/desktop/issues/4357 | 1:27:20 | 1:28:24 | +| Require Device Sign-in to fill passwords does not work | https://github.com/zen-browser/desktop/issues/4356 | 1 day, 13:54:07 | None | +| Quicktime browser plugin not displaying | https://github.com/zen-browser/desktop/issues/4355 | 0:02:21 | 1 day, 3:43:36 | +| Html Date (Month) Input is not working. | https://github.com/zen-browser/desktop/issues/4354 | 1 day, 4:02:04 | None | +| Proxies cannot be used to access google, YouTube, and more | https://github.com/zen-browser/desktop/issues/4352 | 1:35:57 | 1 day, 0:46:50 | +| Round edging not functional on some sites | https://github.com/zen-browser/desktop/issues/4351 | 2:37:01 | 1 day, 5:36:14 | +| Sign pop up windows not using container assigned to workspace. | https://github.com/zen-browser/desktop/issues/4350 | None | None | +| Browser bug , not work correctly | https://github.com/zen-browser/desktop/issues/4348 | 2:26:52 | 17 days, 7:42:31 | +| Opening settings causes sidebar to go ultra wide | https://github.com/zen-browser/desktop/issues/4347 | None | None | +| Notification for 'new tab' does not work | https://github.com/zen-browser/desktop/issues/4346 | 3:25:57 | 21:01:52 | +| New tab created with link click OR ctrl+T is obscured by empty/unused toolbar space | https://github.com/zen-browser/desktop/issues/4345 | None | None | +| Jittering in tab groups | https://github.com/zen-browser/desktop/issues/4343 | 3:11:54 | 3:32:43 | +| Sidebar Jittering While In compact mode | https://github.com/zen-browser/desktop/issues/4342 | None | None | +| [Windows] Videos crash in the second view | https://github.com/zen-browser/desktop/issues/4341 | 6:12:02 | None | +| Page refresh | https://github.com/zen-browser/desktop/issues/4338 | 11:57:25 | None | +| Expand Side's bar changes position of forward and backward buttons | https://github.com/zen-browser/desktop/issues/4336 | 12:19:39 | None | +| breaks after using rectify11 and mica for everyone | https://github.com/zen-browser/desktop/issues/4335 | None | 3:03:08 | +| Link "Zen support site" redirects to firefox support site | https://github.com/zen-browser/desktop/issues/4333 | 16:39:30 | 16:39:30 | +| Opening discord keeps crashing the tab | https://github.com/zen-browser/desktop/issues/4332 | 0:24:48 | 0:24:48 | +| space between essentials/tabs and the workspace title is different for default vs others | https://github.com/zen-browser/desktop/issues/4329 | None | 1 day, 0:42:55 | +| Essential disappears, but it's still there | https://github.com/zen-browser/desktop/issues/4328 | 17:21:42 | 2 days, 3:52:35 | +| Text in PDF is (still) distorted | https://github.com/zen-browser/desktop/issues/4327 | 1 day, 0:20:39 | 1 day, 0:20:39 | +| Waiting since very long for Hold click to preview link | https://github.com/zen-browser/desktop/issues/4326 | 1 day, 1:18:24 | 1 day, 1:18:24 | +| Can't close window by closing the last tab | https://github.com/zen-browser/desktop/issues/4325 | 0:50:23 | 1 day, 3:13:18 | +| Zen Browser on MacOS is not restoring tabs after closing window | https://github.com/zen-browser/desktop/issues/4324 | 1 day, 3:29:13 | None | +| Some videos can't play in Zen Browser | https://github.com/zen-browser/desktop/issues/4323 | 2 days, 14:26:03 | None | +| Web panel pin button has wrong icon when clicking for the first time | https://github.com/zen-browser/desktop/issues/4322 | None | None | +| Slow scrolling speed on the vertical tab bar in 1.6b | https://github.com/zen-browser/desktop/issues/4321 | 1:18:21 | 1 day, 5:19:47 | +| browser.urlbar.suggest.topsites set to false make url cannot be edited | https://github.com/zen-browser/desktop/issues/4319 | 1 day, 3:38:03 | 2 days, 9:54:46 | +| Tab volume icon not showing in collapsed toolbar unless tab is active | https://github.com/zen-browser/desktop/issues/4316 | None | 0:08:41 | +| Profile avatar picture flashes and is overridden by firefox account avatar | https://github.com/zen-browser/desktop/issues/4315 | 8:16:31 | 8:16:31 | +| Zen Browser Turn Light At Lost Focus | https://github.com/zen-browser/desktop/issues/4314 | 2 days, 4:11:22 | 5 days, 16:04:18 | +| "Log-in to this network" modal & button not interactible | https://github.com/zen-browser/desktop/issues/4313 | None | None | +| Sudden Crashes on Arch Linux with Multiple Tabs Opened | https://github.com/zen-browser/desktop/issues/4309 | 2:56:11 | None | +| Since 1.6b, tab bar scrolls slowly and unpredictably when using a touchpad | https://github.com/zen-browser/desktop/issues/4307 | 2:14:54 | 13:01:41 | +| Breaking Keyboard Shortcuts | https://github.com/zen-browser/desktop/issues/4306 | 2:00:54 | 4 days, 2:12:32 | +| [TWILIGHT] New update has some bugs I've found so far | https://github.com/zen-browser/desktop/issues/4304 | 4:56:10 | 19 days, 5:12:42 | +| blurry fonts on 32:9 aspect ratio | https://github.com/zen-browser/desktop/issues/4303 | 6:21:35 | None | +| Checked Radio button UI issue | https://github.com/zen-browser/desktop/issues/4302 | 0:51:38 | None | +| Firefox Home shortcut is turned off. | https://github.com/zen-browser/desktop/issues/4300 | 10:54:39 | None | +| Unable to edit URL in address bar | https://github.com/zen-browser/desktop/issues/4299 | 9:46:51 | 23:24:13 | +| Private Window New Tab is not showing blank page. | https://github.com/zen-browser/desktop/issues/4297 | None | None | +| Essential Tabs URLs Disappear After Brew Update and Browser Restart | https://github.com/zen-browser/desktop/issues/4296 | 2 days, 12:54:19 | None | +| Floating URL bar misplaced after opening Customize Toolbar | https://github.com/zen-browser/desktop/issues/4295 | 17:27:44 | None | +| Unfocusing the browser with "widget.gtk.rounded-bottom-corners.enabled" causes the bottom corners to stop being rounded | https://github.com/zen-browser/desktop/issues/4294 | None | 12:46:25 | +| Pin to toolbar text out of place on Mac | https://github.com/zen-browser/desktop/issues/4293 | None | None | +| the slider on the home screen looks just like a dot when turned on | https://github.com/zen-browser/desktop/issues/4291 | None | None | +| Closing the last tab in the only workspace should close the browser | https://github.com/zen-browser/desktop/issues/4289 | 2:29:09 | 19:14:35 | +| Scrolling on touchpad broken | https://github.com/zen-browser/desktop/issues/4288 | None | 0:07:44 | +| Sidebar behaving weird when compact mode is in "hide toolbar only" mode | https://github.com/zen-browser/desktop/issues/4287 | 1 day, 5:36:16 | 1 day, 23:15:29 | +| Zen Beta (any version) is completely broken for me | https://github.com/zen-browser/desktop/issues/4286 | 0:28:01 | 21:07:29 | +| Previous and Next page buttons switched | https://github.com/zen-browser/desktop/issues/4285 | 0:34:35 | 0:34:35 | +| Random crash after using the browser for some time. | https://github.com/zen-browser/desktop/issues/4284 | None | None | +| Even if you have recent activity turned on in the settings, it will be turned off the next time you start Zen Browser. | https://github.com/zen-browser/desktop/issues/4283 | 0:04:23 | None | +| [windows only] wired orange-ish background in new version | https://github.com/zen-browser/desktop/issues/4281 | 0:01:44 | 0:01:44 | +| Blurred fonts on Webpages | https://github.com/zen-browser/desktop/issues/4280 | 0:55:49 | 0:55:49 | +| Customize Toolbar breaks the browser layout | https://github.com/zen-browser/desktop/issues/4279 | 1:37:10 | None | +| When second window is opened, Essential tabs are not visible for this window | https://github.com/zen-browser/desktop/issues/4278 | None | None | +| Frame color is grey instead of light or dark themed | https://github.com/zen-browser/desktop/issues/4277 | 13:26:52 | 9 days, 19:55:41 | +| Tab styling bug | https://github.com/zen-browser/desktop/issues/4276 | None | 4:32:10 | +| Vertical Toolbar Resizing | https://github.com/zen-browser/desktop/issues/4275 | 1:10:26 | 5:40:14 | +| Scoll Bar has lower scroll factor. | https://github.com/zen-browser/desktop/issues/4274 | 8:35:00 | 8:35:00 | +| Closing last tab does not close browser | https://github.com/zen-browser/desktop/issues/4273 | 9:04:24 | 12:10:08 | +| I can't disable workspaces anymore | https://github.com/zen-browser/desktop/issues/4272 | 0:10:05 | 13:14:51 | +| Why there is strange styling / background color on some of the pages? | https://github.com/zen-browser/desktop/issues/4271 | None | 0:12:17 | +| Customize Toolbar not saving changes upon relaunch. | https://github.com/zen-browser/desktop/issues/4270 | 2 days, 0:05:19 | None | +| White line at the bottom | https://github.com/zen-browser/desktop/issues/4269 | None | None | +| History / recently visited pages list contains only icons, no names or adresses | https://github.com/zen-browser/desktop/issues/4265 | 2 days, 21:24:58 | None | +| Weird color highlight when window is in focus | https://github.com/zen-browser/desktop/issues/4264 | 1 day, 4:13:23 | 1 day, 20:39:36 | +| Workspaces | https://github.com/zen-browser/desktop/issues/4263 | None | 2:26:35 | +| Audio indicator not showing for sites playing audio when not chosen | https://github.com/zen-browser/desktop/issues/4262 | None | None | +| Theme color | https://github.com/zen-browser/desktop/issues/4261 | 0:11:52 | 3 days, 0:13:33 | +| Performance lag/FPS drops on HP Spectre laptop only | https://github.com/zen-browser/desktop/issues/4260 | None | None | +| Browser window colors change when window is inactive/unfocused | https://github.com/zen-browser/desktop/issues/4258 | 1 day, 7:13:53 | 0:08:23 | +| Each update requires the binary to be re-downloaded. | https://github.com/zen-browser/desktop/issues/4257 | None | None | +| Workspaces button (above tabs) does not hide even tho I have only one workspace. | https://github.com/zen-browser/desktop/issues/4256 | 0:39:33 | 2 days, 0:19:16 | +| Keyboard Shortcuts reset everytime I open the browser | https://github.com/zen-browser/desktop/issues/4255 | 8:48:29 | 2 days, 3:25:34 | +| When opening a new window, inned tabs are also reopen in the new window (tho some become "New Tab"). | https://github.com/zen-browser/desktop/issues/4254 | None | None | +| Back and Forward buttons moved to the right and flipped | https://github.com/zen-browser/desktop/issues/4253 | 12:03:43 | 0:11:45 | +| Web Developer Tools missing labels in collapsed toolbar. | https://github.com/zen-browser/desktop/issues/4252 | None | None | +| Can't change location in the weather widget | https://github.com/zen-browser/desktop/issues/4250 | 3 days, 18:40:41 | None | +| Tabs crashing randomlly | https://github.com/zen-browser/desktop/issues/4249 | 3 days, 11:21:20 | None | +| Freesync broken in fullscreen | https://github.com/zen-browser/desktop/issues/4248 | None | None | +| Floating URL touchpad switch workspace | https://github.com/zen-browser/desktop/issues/4246 | None | None | +| Page open. No Tab in tab bar. | https://github.com/zen-browser/desktop/issues/4244 | None | 12 days, 20:38:18 | +| Sidebar not working properly. | https://github.com/zen-browser/desktop/issues/4242 | 10:58:19 | 1 day, 6:06:30 | +| Why are the tabs on the right? | https://github.com/zen-browser/desktop/issues/4241 | 3:53:16 | 9 days, 21:54:56 | +| Shortcuts for cycling workspaces are not working on non-English keyboard layout | https://github.com/zen-browser/desktop/issues/4240 | 14:14:25 | None | +| Unsetting some keyboard shortcuts causes the application to get stuck in the splash screen. | https://github.com/zen-browser/desktop/issues/4238 | 4 days, 17:04:39 | 4 days, 17:04:38 | +| Google's access speed is very slow, other browsers open at the same time, no problem! | https://github.com/zen-browser/desktop/issues/4237 | None | None | +| Bookmark cannot deleted/edit when the the name starts with "?..." | https://github.com/zen-browser/desktop/issues/4236 | None | None | +| I set the startup page to be a blank page; browser never responds. | https://github.com/zen-browser/desktop/issues/4235 | 19 days, 4:19:18 | None | +| bug: In `compact mode` the `user account` icon in top bar is broken after first click - 1.0.2-b.5 (Firefox 133.0.3) | https://github.com/zen-browser/desktop/issues/4232 | 1 day, 11:10:39 | 2 days, 6:06:01 | +| screencast is not working underwayland | https://github.com/zen-browser/desktop/issues/4231 | 16 days, 20:54:10 | None | +| gradient theme color disappears | https://github.com/zen-browser/desktop/issues/4230 | 4 days, 12:17:20 | None | +| Autofilling not working in some webpages | https://github.com/zen-browser/desktop/issues/4229 | None | 2 days, 14:08:32 | +| Not possible to use CTRL + F on a web panel | https://github.com/zen-browser/desktop/issues/4228 | None | None | +| Switch workspace animation without workspaces | https://github.com/zen-browser/desktop/issues/4227 | None | None | +| Command Option L always opens inspector despite keyboard shortcut setting | https://github.com/zen-browser/desktop/issues/4224 | 2 days, 13:08:20 | 4 days, 12:27:38 | +| Webgl applications not working. | https://github.com/zen-browser/desktop/issues/4223 | 1:45:58 | None | +| Pins syncing across windows | https://github.com/zen-browser/desktop/issues/4222 | 2 days, 23:53:53 | 15 days, 21:21:10 | +| URL/Title bar can be scrolled up on Windows | https://github.com/zen-browser/desktop/issues/4220 | 5 days, 1:26:35 | None | +| [Linux][tarball] Twilight - Can't update/wrong notification | https://github.com/zen-browser/desktop/issues/4219 | 0:15:28 | 0:15:28 | +| [Linux][Flatpak] Light/Dark Theme settings not respected | https://github.com/zen-browser/desktop/issues/4217 | 0:49:02 | 1:47:37 | +| cant close side menu and back and forward buttons swapped. | https://github.com/zen-browser/desktop/issues/4216 | 12:38:36 | None | +| MacOS CMD+Shift+L opens Dev Tools | https://github.com/zen-browser/desktop/issues/4215 | 1:48:05 | 1:48:05 | +| Dark mode problem | https://github.com/zen-browser/desktop/issues/4214 | 2:02:31 | 2:02:35 | +| Unwanted separation in zen | https://github.com/zen-browser/desktop/issues/4213 | 2:48:23 | 2:48:23 | +| ctrl+shift+c not working | https://github.com/zen-browser/desktop/issues/4212 | 1:02:17 | 2:59:00 | +| Black screen on launch | https://github.com/zen-browser/desktop/issues/4211 | 2:12:26 | 5:25:52 | +| When adding 2500 Tabs to the essentials section the browser becomes unresponsive | https://github.com/zen-browser/desktop/issues/4210 | 3:34:59 | None | +| [Bug] Minimize & Maximize buttons are not visible in Title bar | https://github.com/zen-browser/desktop/issues/4209 | 22:13:45 | None | +| Vertical tab bar isn't working as expected | https://github.com/zen-browser/desktop/issues/4208 | 7:06:10 | None | +| thinks that there is an update available / failed | https://github.com/zen-browser/desktop/issues/4207 | 0:12:57 | 0:12:57 | +| Compact Bar Doesn't Fully Close | https://github.com/zen-browser/desktop/issues/4205 | 3:18:39 | 3:18:39 | +| twilight: release note link does not go to the right page | https://github.com/zen-browser/desktop/issues/4203 | 13:07:36 | 13:07:36 | +| Update pop up failed on twilight | https://github.com/zen-browser/desktop/issues/4202 | 0:12:04 | 0:25:02 | +| Auto-filling passwords is broken for any website on MacOS | https://github.com/zen-browser/desktop/issues/4201 | 1 day, 10:59:13 | 0:13:22 | +| Test | https://github.com/zen-browser/desktop/issues/4199 | None | 0:00:13 | +| If site opens tab using JS, and you switch workspace, it opens in wrong workspace | https://github.com/zen-browser/desktop/issues/4197 | None | None | +| Resetting keyboard shortcuts not reflected in the UI | https://github.com/zen-browser/desktop/issues/4194 | None | None | +| Fetch requests not showing in the Network panel | https://github.com/zen-browser/desktop/issues/4192 | 4 days, 12:19:17 | None | +| Search bar overlapping essentials area bug | https://github.com/zen-browser/desktop/issues/4191 | 20:07:09 | 20:07:09 | +| url bar is sized wrong when not in compact mode | https://github.com/zen-browser/desktop/issues/4190 | 10:45:50 | 10:45:50 | +| Compact mode sidebar trigger area is too wide (macOS) | https://github.com/zen-browser/desktop/issues/4189 | 15:13:53 | 15:13:53 | +| Install Add-on From File... | https://github.com/zen-browser/desktop/issues/4186 | None | None | +| Arrangement of back & forward arrows changes after toggling the sidebar's width | https://github.com/zen-browser/desktop/issues/4185 | None | None | +| Workspaces bar problems on toolbar | https://github.com/zen-browser/desktop/issues/4183 | 10 days, 6:32:09 | None | +| "Breakpoint A breakpoint has been reached." | https://github.com/zen-browser/desktop/issues/4181 | 3 days, 2:30:20 | None | +| (Detailed Report) Using Ctrl+Tab to switch from splitted tabs to other tabs only works for tabs adjacent to the last split if "change tabs on hover" is turned on | https://github.com/zen-browser/desktop/issues/4180 | None | None | +| unloaded tabs with unsaved changes cannot be opened | https://github.com/zen-browser/desktop/issues/4179 | 15 days, 8:16:21 | None | +| broken page background on some sites | https://github.com/zen-browser/desktop/issues/4178 | 1 day, 0:42:21 | 7 days, 5:35:11 | +| Deleting certain keyboard shortcuts crashes the file on restart | https://github.com/zen-browser/desktop/issues/4177 | 3 days, 13:52:28 | 7 days, 12:06:28 | +| Disabeling forward/backward mouse buttons for switching workspaces und trigger back/forward of current website. | https://github.com/zen-browser/desktop/issues/4176 | 10 days, 2:11:24 | None | +| A Silly White Line Appears At The Top Of The Browser Window In Windows | https://github.com/zen-browser/desktop/issues/4175 | 1 day, 23:59:40 | 1 day, 23:59:40 | +| Zooming in PDF viewer is not working when using scrollwheel click to scroll throught PDF | https://github.com/zen-browser/desktop/issues/4173 | 3 days, 2:26:50 | None | +| compact mode tabs flickers when cursor is on window border | https://github.com/zen-browser/desktop/issues/4172 | None | None | +| Since the app is no longer in beta, the app shouldn't use strings with 'beta' in it and replace those with a normal string such as "Zen Browser". | https://github.com/zen-browser/desktop/issues/4171 | 0:12:14 | 0:19:44 | +| Linux version doesn't use the system proxy | https://github.com/zen-browser/desktop/issues/4170 | 10 days, 23:13:16 | None | +| Reordering Essentials is weird | https://github.com/zen-browser/desktop/issues/4169 | 3 days, 8:53:15 | 8 days, 3:19:28 | +| Duplicate preferences for "Use themed...." | https://github.com/zen-browser/desktop/issues/4166 | None | 0:02:33 | +| Entering compact mode on one window engages compact mode on all windows | https://github.com/zen-browser/desktop/issues/4165 | 17 days, 6:17:00 | 17 days, 6:17:00 | +| Bug: Unable to perform a search, tab stuck on loading | https://github.com/zen-browser/desktop/issues/4160 | None | 1:30:36 | +| Windows 11 - Compact Mode - Hide Tab Bar - Doesn't hide if using touch | https://github.com/zen-browser/desktop/issues/4157 | None | None | +| just goes blank when i decide to open new tab | https://github.com/zen-browser/desktop/issues/4156 | None | None | +| decoding problem "i think" | https://github.com/zen-browser/desktop/issues/4155 | None | None | +| Performance And Black Squares Issue | https://github.com/zen-browser/desktop/issues/4154 | None | None | +| the design of the "new tab" button does not allow it to be distinguished properly | https://github.com/zen-browser/desktop/issues/4153 | 0:20:19 | None | +| Pinned tabs do not Refresh Automatically after browser restart | https://github.com/zen-browser/desktop/issues/4152 | 3 days, 4:53:05 | None | +| Startup load broken | https://github.com/zen-browser/desktop/issues/4151 | None | 0:06:12 | +| An intuitive problem with the automatic theme (light/dark) | https://github.com/zen-browser/desktop/issues/4150 | None | None | +| Zen keeps resetting Home page every so often | https://github.com/zen-browser/desktop/issues/4148 | 12 days, 1:40:29 | None | +| Bookmarks toolbar blank on single toolbar layout | https://github.com/zen-browser/desktop/issues/4146 | 1:28:06 | 1 day, 20:15:55 | +| UI Bug: Wrong aspect ratio in tab switcher on ultra wide screens (32:9) | https://github.com/zen-browser/desktop/issues/4144 | None | None | +| pdf.js jumps across pages when activating annonation tools | https://github.com/zen-browser/desktop/issues/4143 | None | None | +| A black bar appeared at the top of the browser. | https://github.com/zen-browser/desktop/issues/4137 | 1:08:53 | 1:08:53 | +| --zen-primary-color affecting Zen about pages | https://github.com/zen-browser/desktop/issues/4135 | 0:34:32 | 0:34:32 | +| Essentials load in wrong container when opening new window with different workspace | https://github.com/zen-browser/desktop/issues/4134 | 1 day, 4:39:10 | 9 days, 21:24:46 | +| Container Indicator Issue | https://github.com/zen-browser/desktop/issues/4132 | 0:15:50 | 1:36:18 | +| Bookmarks Separator Issue | https://github.com/zen-browser/desktop/issues/4131 | 6:20:17 | None | +| Bookmarks Modal Issue | https://github.com/zen-browser/desktop/issues/4130 | 0:19:20 | 1:37:35 | +| Bookmarks Random Appearing Issue | https://github.com/zen-browser/desktop/issues/4129 | 6:25:12 | 28 days, 23:29:22 | +| Bookmarks FOUC Type Issue | https://github.com/zen-browser/desktop/issues/4128 | 6:28:48 | None | +| Shortcuts Issue When Second Window Is Used: | https://github.com/zen-browser/desktop/issues/4127 | 4 days, 0:15:45 | 4 days, 0:15:45 | +| Essentials & Pinned Disappear With Second Window | https://github.com/zen-browser/desktop/issues/4126 | 3:18:35 | None | +| Can't install themes with nightly | https://github.com/zen-browser/desktop/issues/4124 | 9 days, 23:09:45 | 9 days, 23:11:39 | +| pid changes on boot | https://github.com/zen-browser/desktop/issues/4122 | 0:50:20 | 0:50:20 | +| Download fails if you delete a random file while downloading | https://github.com/zen-browser/desktop/issues/4120 | 7:44:40 | 7:59:19 | +| Zen asks to be the default browser every time after recent update. | https://github.com/zen-browser/desktop/issues/4118 | 7:20:20 | 2 days, 14:22:58 | +| Popups partially hidden when on sidebar | https://github.com/zen-browser/desktop/issues/4117 | 12:56:59 | 12:56:59 | +| [Twilight] Not seeing search for emojis for workspaces like mentioned in release notes | https://github.com/zen-browser/desktop/issues/4114 | 8:04:36 | 8:04:35 | +| Themes installed from Firefox store don't do anything | https://github.com/zen-browser/desktop/issues/4113 | 5 days, 19:00:45 | None | +| Misplaced Footer on Websites | https://github.com/zen-browser/desktop/issues/4112 | 0:01:36 | 0:34:51 | +| A weird bar appears randomly stopping the user from switching tabs | https://github.com/zen-browser/desktop/issues/4111 | 0:07:57 | None | +| Sidebar tries to handle event when trying to dismiss toast message | https://github.com/zen-browser/desktop/issues/4110 | 4:08:06 | None | +| pages are not saving | https://github.com/zen-browser/desktop/issues/4109 | 14:28:07 | 14:28:07 | +| Issue with Toolbar Pinning/Unpinning Affecting Sidebar Width in Zen Browser | https://github.com/zen-browser/desktop/issues/4108 | 19 days, 11:38:38 | 19 days, 11:38:38 | +| Doesn't download video after "save video as" button | https://github.com/zen-browser/desktop/issues/4106 | 0:24:18 | 1 day, 8:44:52 | +| Random bar when moving mouse to the top | https://github.com/zen-browser/desktop/issues/4105 | 0:28:07 | 19 days, 14:14:16 | +| Overflow menu is permanently shown with only Customize Toolbar | https://github.com/zen-browser/desktop/issues/4104 | None | 0:02:52 | +| Opens a weird tab after closing all tabs | https://github.com/zen-browser/desktop/issues/4103 | 1 day, 0:01:43 | 1 day, 0:01:43 | +| Horizontal tab layout when supposed to be vertical | https://github.com/zen-browser/desktop/issues/4102 | None | 0:09:22 | +| Unable to click on back button due to overlapping of the tab sidebar under `Multiple Toolbars` layout | https://github.com/zen-browser/desktop/issues/4100 | 4:11:09 | None | +| Toolbar rendering issue while browser is in Foreground | https://github.com/zen-browser/desktop/issues/4099 | 1:56:07 | 1:56:07 | +| Video playback stops when toggling mono audio | https://github.com/zen-browser/desktop/issues/4098 | None | None | + +_This report was generated with the [Issue Metrics Action](https://github.com/github/issue-metrics)_ +Search query used to find these items: `repo:zen-browser/desktop is:issue created:2025-01-01..2025-01-31` diff --git a/firefox-cache/l10n-last-commit-hash b/firefox-cache/l10n-last-commit-hash new file mode 100644 index 000000000..3fd61f125 --- /dev/null +++ b/firefox-cache/l10n-last-commit-hash @@ -0,0 +1 @@ +7d861618502fc97ac8da8a1a78ec09b226c55dd5 diff --git a/flatpak/app.zen_browser.zen.yml.template b/flatpak/app.zen_browser.zen.yml.template index 8c76a831c..a8f5adeac 100644 --- a/flatpak/app.zen_browser.zen.yml.template +++ b/flatpak/app.zen_browser.zen.yml.template @@ -44,14 +44,14 @@ modules: sources: - type: archive - url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-x86_64.tar.bz2 + url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-x86_64.tar.xz sha256: {linux_sha256} strip-components: 0 only-arches: - x86_64 - type: archive - url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-aarch64.tar.bz2 + url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-aarch64.tar.xz sha256: {linux_aarch64_sha256} strip-components: 0 only-arches: diff --git a/l10n b/l10n index 1abc46f17..83464a5d3 160000 --- a/l10n +++ b/l10n @@ -1 +1 @@ -Subproject commit 1abc46f17d90b4e38af88539944d4a664568ec4c +Subproject commit 83464a5d3596558a8d15c7fd7f495f61726a0f05 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..060ae5c5f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4545 @@ +{ + "name": "zen-core", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "zen-core", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@zen-browser/surfer": "^1.9.18" + }, + "devDependencies": { + "husky": "^9.1.7", + "lint-staged": "^15.3.0", + "prettier": "^3.4.2", + "prettier-plugin-sh": "^0.14.0" + } + }, + "node_modules/@oozcitak/dom": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", + "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==", + "dependencies": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/url": "1.0.4", + "@oozcitak/util": "8.3.8" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@oozcitak/infra": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", + "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", + "dependencies": { + "@oozcitak/util": "8.3.8" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@oozcitak/url": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", + "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", + "dependencies": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@oozcitak/util": { + "version": "8.3.8", + "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", + "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@resvg/resvg-js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-1.4.0.tgz", + "integrity": "sha512-AcsRqAPFMIOxlMZCHxSxTG5vZTbW95xFDrQDTmsX/VEwc3tgLL9E4Be2nIJjWrdvIQxsTlaWYJsn2pxkki9Ltg==", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@resvg/resvg-js-android-arm-eabi": "1.4.0", + "@resvg/resvg-js-android-arm64": "1.4.0", + "@resvg/resvg-js-darwin-arm64": "1.4.0", + "@resvg/resvg-js-darwin-x64": "1.4.0", + "@resvg/resvg-js-linux-arm-gnueabihf": "1.4.0", + "@resvg/resvg-js-linux-arm64-gnu": "1.4.0", + "@resvg/resvg-js-linux-arm64-musl": "1.4.0", + "@resvg/resvg-js-linux-x64-gnu": "1.4.0", + "@resvg/resvg-js-linux-x64-musl": "1.4.0", + "@resvg/resvg-js-win32-arm64-msvc": "1.4.0", + "@resvg/resvg-js-win32-ia32-msvc": "1.4.0", + "@resvg/resvg-js-win32-x64-msvc": "1.4.0" + } + }, + "node_modules/@resvg/resvg-js-android-arm-eabi": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm-eabi/-/resvg-js-android-arm-eabi-1.4.0.tgz", + "integrity": "sha512-8C7P2dYNeL5mghCgJ+2IqNwv5V50d5pZQYIvGYlbP7d3OB/T8uVEcmuflYgWq+/vEn1gZE+Q2A0tFJOHqIvH9A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-android-arm64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm64/-/resvg-js-android-arm64-1.4.0.tgz", + "integrity": "sha512-BQp3zo+/8Ns9u2NCh7YeII2KflsiXfJDrwahXk21PuDp0l1KcMjdQ2o4dTWTskF5Dba/rcuDa94T5GD9Pgap7g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-darwin-arm64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-arm64/-/resvg-js-darwin-arm64-1.4.0.tgz", + "integrity": "sha512-IuvUOIpdxk5fEqr8EXgdCfugRWS88HlXwSeHPDVNCh/9kQ7exRoVi5CDOipkngUPYKxbKTekJWTxQHRUtf8oNQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-darwin-x64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-x64/-/resvg-js-darwin-x64-1.4.0.tgz", + "integrity": "sha512-XFao3tkBBPHubVvXDX/ViYf2509tgqcfUc6bDtVYHCUOecK10ppbtdMRRnXjesi3towPQj2peiRUEavTIBbfGg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-arm-gnueabihf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm-gnueabihf/-/resvg-js-linux-arm-gnueabihf-1.4.0.tgz", + "integrity": "sha512-RAjGdBJKGO5tSE1PsTl2WpG/TkgJGqsHIFtaQAUWNG4/LQ+0MNAptBOGrvNZvmRu+hVIk1t8m9rKme2RMdmlLQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-arm64-gnu": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-gnu/-/resvg-js-linux-arm64-gnu-1.4.0.tgz", + "integrity": "sha512-mT0UWGyzSaTu48sJGQno9zaZqk7j9ZjZppNu/TkLqObYu0xSeTnxnU73/Xy+byZh9RvLY/994bEaOP50jpDW/g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-arm64-musl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-musl/-/resvg-js-linux-arm64-musl-1.4.0.tgz", + "integrity": "sha512-wfl0dk9pNExJeFxRoAO0P0ywVkqW80FqsCH6KCtTbB1f2P2NY0paAKPho1LJ2z1YSzq3ngganyAKPl2PoBqn4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-x64-gnu": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-1.4.0.tgz", + "integrity": "sha512-XDebImgHmQMIjxISZ4UsV9iHcO2IJnkKrT9/F5SWF3MgqRLro2pIY1JsgW70sEjkHlcyF7dbTa/M7TAgSz0uvg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-x64-musl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-1.4.0.tgz", + "integrity": "sha512-cvq7pPQECLyP5SoI5ECZL0RhKcgz7sQTjYWQdZjFdF6riN40uWSo1Le31+oLLCwSoSOo8Z60xmU95ChbZjSY5Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-win32-arm64-msvc": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-arm64-msvc/-/resvg-js-win32-arm64-msvc-1.4.0.tgz", + "integrity": "sha512-4waye03doDRsQmtibxiTQ7alAmvT2D7gt5n3gmIMsAP8fF+szRQ+cD/ClPZdBIMonhAUbe3nLMduocOe2Jp59Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-win32-ia32-msvc": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-ia32-msvc/-/resvg-js-win32-ia32-msvc-1.4.0.tgz", + "integrity": "sha512-9Ld/Hv8nXslvodPv9wL3wec8Tf9kFAO4t9632Y66aAcGZBNW/xAwzbgDOSv32N763tsLphleu1DhJ7nXKZIz9A==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-win32-x64-msvc": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-x64-msvc/-/resvg-js-win32-x64-msvc-1.4.0.tgz", + "integrity": "sha512-sMGQdOIop6a/s+cmFodnQNNykvr/MavgBXCzVt9jp1Rq4PXWtn8uwSsUupsn3SHPJCZ83kee6m4JCnak6Rec9A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "node_modules/@zen-browser/surfer": { + "version": "1.9.18", + "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.9.18.tgz", + "integrity": "sha512-lTMQ/RkIYI1fBjvd+UWHwcZqIk3H2X0wZniwFFpQOVg3wNEjljk3DVcuxwOEy08PrQYbxEX1vfQLyyjzlJWnEw==", + "license": "MPL-2.0", + "dependencies": { + "@resvg/resvg-js": "^1.4.0", + "async-icns": "^1.0.2", + "axios": "^0.21.1", + "chalk": "^4.1.0", + "cli-progress": "^3.9.1", + "commander": "^6.2.1", + "execa": "^5.1.1", + "fast-extract": "^1.1.0", + "fs-extra": "^10.0.0", + "ini": "^3.0.0", + "is-apple-silicon": "github:trickypr/is-apple-silicon", + "kleur": "^4.1.5", + "modern-async": "^1.1.2", + "mount-dmg": "^1.0.1", + "picomatch": "^2.3.1", + "png-to-ico": "^2.1.4", + "prompts": "^2.4.1", + "rustic": "^1.2.1", + "semver": "^7.3.7", + "sharp": "^0.30.7", + "tiny-glob": "^0.2.9", + "xmlbuilder2": "^3.0.2" + }, + "bin": { + "surfer": "dist/index.js" + } + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/async-compat": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/async-compat/-/async-compat-1.6.8.tgz", + "integrity": "sha512-MVKdync5q2FgE+x/AErx0mtJSZgQxWBGIx7vOcQbXmTh04OAF41N2zQX5XhAb0Mq/sMSFqzZSSFwzZ3rrROsSg==", + "dependencies": { + "is-error": "^2.2.2", + "is-promise": "^4.0.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async-icns": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/async-icns/-/async-icns-1.0.2.tgz", + "integrity": "sha512-d2P/f3aAWdOE3+tEqTW4HLj9Ob7/t54/NH2nRFK9Q7ZhJJXK7TlF1G3vgB6UP/ILHjI3Akjv+d8sFXyAZxCIFQ==", + "dependencies": { + "commander": "^9.2.0" + }, + "bin": { + "async-icns": "cli.js" + } + }, + "node_modules/async-icns/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-3.0.1.tgz", + "integrity": "sha512-jrCW5ZhfQ/Vt07WX1Ngs+yn9BDqPL/gw28S7s9H6QK/gupnizNzJAss5akW20ISgOrbLTlXOOCTJeNUQqruAWQ==", + "dependencies": { + "readable-stream": "^3.0.1" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bops": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bops/-/bops-0.1.1.tgz", + "integrity": "sha512-Cx1zStcMp+YoFan8OgudNPMih82eJZE+27feki1WeyoFTR9Ye7AR1SUW3saE6QQvdS/g52aJ2IojBjWOiRiLbw==", + "dependencies": { + "base64-js": "0.0.2", + "to-utf8": "0.0.1" + } + }, + "node_modules/bops/node_modules/base64-js": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", + "integrity": "sha512-Pj9L87dCdGcKlSqPVUjD+q96pbIx1zQQLb2CUiWURfjiBELv84YX+0nGnKmyT/9KkC7PQk7UN1w+Al8bBozaxQ==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + }, + "node_modules/buffer-v6-polyfill": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/buffer-v6-polyfill/-/buffer-v6-polyfill-1.0.5.tgz", + "integrity": "sha512-LdUw/JMZyKN+EBDbOHqynYtOLXDjgo+uf5vCUhfO5hVsU2chvbqyexizvxUMaU4ipYZy9MiQyIFwMeIgsb6nBA==" + }, + "node_modules/call-once-fn": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/call-once-fn/-/call-once-fn-1.0.15.tgz", + "integrity": "sha512-LPMeZc0iO4Ep9XCtvRk9ecOdQpJd1DKRWly1+95F+OinTRJri39ZUVItxJu0ru/KzBbbv0cmKFb0gzG4PJCinA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dependencies": { + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-js-pure": { + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.40.0.tgz", + "integrity": "sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/extract-base-iterator": { + "version": "1.2.22", + "resolved": "https://registry.npmjs.org/extract-base-iterator/-/extract-base-iterator-1.2.22.tgz", + "integrity": "sha512-gGMzo6ijt6oh9VSLOG3H+rpyzkoCYkVBgF/qdxVM/Wc/eKJyX2gxrBN8gO7IbnAMxre36wvzwzzD6umw80i3CQ==", + "dependencies": { + "graceful-fs": "^4.2.11", + "is-absolute": "^1.0.0", + "lodash.compact": "^3.0.1", + "mkdirp-classic": "^0.5.3", + "object-assign": "^4.1.1", + "queue-cb": "^1.4.16", + "rimraf2": "^2.8.2", + "stack-base-iterator": "^1.1.20" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fast-extract": { + "version": "1.3.31", + "resolved": "https://registry.npmjs.org/fast-extract/-/fast-extract-1.3.31.tgz", + "integrity": "sha512-P3poghIIxD7mEIHymqaeevrrdWD23JLyagIfox+/jw6r0L8CtjHJsg/S/YZsHH6V2/IfK5tHoBsiyAqBIocSHw==", + "dependencies": { + "bl": "^3.0.0", + "buffer-v6-polyfill": "^1.0.5", + "call-once-fn": "^1.0.15", + "content-disposition": "^0.5.4", + "flush-write-stream": "^2.0.0", + "lodash.throttle": "^4.1.1", + "mkdirp-classic": "^0.5.3", + "mock-require-lazy": "^1.0.14", + "next-tick": "^1.1.0", + "on-one": "^0.1.4", + "progress-stream": "^2.0.0", + "pumpify": "^2.0.1", + "queue-cb": "^1.4.16", + "readable-stream": "^2.3.7", + "require_optional": "^1.0.1", + "rimraf2": "^2.8.2", + "signal-exit": "^3.0.7", + "tar-iterator": "^1.2.25", + "temp-suffix": "^0.1.14", + "unbzip2-stream": "^1.4.3", + "zip-iterator": "^1.2.23" + }, + "engines": { + "node": ">=0.8" + }, + "peerDependencies": { + "lzma-native": "*" + }, + "peerDependenciesMeta": { + "lzma-native": { + "optional": true + } + } + }, + "node_modules/fifo": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/fifo/-/fifo-2.4.1.tgz", + "integrity": "sha512-XTbUCNmo54Jav0hcL6VxDuY4x1eCQH61HEF80C2Oww283pfjQ2C8avZeyq4v43sW2S2403kmzssE9j4lbF66Sg==" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flush-write-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-2.0.0.tgz", + "integrity": "sha512-uXClqPxT4xW0lcdSBheb2ObVU+kuqUk3Jk64EwieirEXZx9XUrVwp/JuBfKAWaM4T5Td/VL7QLDWPXp/MvGm/g==", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hash-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hash-string/-/hash-string-1.0.0.tgz", + "integrity": "sha512-dtNNyxXobzHavayZwOwRWhBTqS9GX4jDjIMsGc0fDyaN2A+4zMn5Ua9ODDCggN6w3Spma6mAHL3ImmW3BkWDmQ==" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", + "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-apple-silicon": { + "version": "1.0.1", + "resolved": "git+ssh://git@github.com/trickypr/is-apple-silicon.git#5f75501a1d7566ba9f94174b6825d7bd9d302b6a", + "license": "MIT" + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-error": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", + "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==" + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lifecycle": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lifecycle/-/lifecycle-1.0.4.tgz", + "integrity": "sha512-FJx0SNrM2rouctdOH4rATsHT+BvgyXX4LEQ+Yn9COQNPK3u4XAPp9qS7OKpRO22MeT39oxkjZkRcLnHxSmiduw==" + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lint-staged": { + "version": "15.4.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.3.tgz", + "integrity": "sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==", + "dev": true, + "dependencies": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", + "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", + "dev": true, + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/lodash.compact": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.compact/-/lodash.compact-3.0.1.tgz", + "integrity": "sha512-2ozeiPi+5eBXW1CLtzjk8XQFhQOEMwwfxblqeq6EGyTxZJ1bPATqilY0e6g2SLQpP4KuMeuioBhEnWz5Pr7ICQ==" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/mock-require-lazy": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/mock-require-lazy/-/mock-require-lazy-1.0.14.tgz", + "integrity": "sha512-PNuw/5/+IJLgOSJoXv4DYBu840i2NmhRFgUoB/To/hvL7J8YxjjrvNaAaPotq7Ndff344pDFSqDqGpstdhB8Tg==", + "dependencies": { + "get-caller-file": "^2.0.5", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/modern-async": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/modern-async/-/modern-async-1.1.5.tgz", + "integrity": "sha512-Yioj6tw1jvZef+bYjcZN9gMPBpVkkqGOMbQg/1U9dIqdij44mpftvNJxTf/u2Gc6oobuNGUFWNJwJwq8qEs9bw==", + "dependencies": { + "core-js-pure": "^3.19.1", + "nanoassert": "^2.0.0" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/nicolas-van" + } + }, + "node_modules/mount-dmg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mount-dmg/-/mount-dmg-1.0.1.tgz", + "integrity": "sha512-YEHSgtE1d6jIm6ht0uqo4MWQSXHvHYujgURXf+59hQDErH5bL5rv4uGwko8ejiFIeK6ySk8jBX1oX9NrlmBTCg==", + "dependencies": { + "shell-escape": "^0.2.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mvdan-sh": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/mvdan-sh/-/mvdan-sh-0.10.1.tgz", + "integrity": "sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==", + "dev": true + }, + "node_modules/nanoassert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", + "integrity": "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==" + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==" + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/node-abi": { + "version": "3.73.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.73.0.tgz", + "integrity": "sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-one": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/on-one/-/on-one-0.1.4.tgz", + "integrity": "sha512-fWyHjSVZvs7Dkt7F/fZCm4Eoxv7+uQkaiUYh3jDVN15khYa5iTnFWW9VM8rQgStAca5cDxHzyAT7cF+gfyLgcg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/png-to-ico": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/png-to-ico/-/png-to-ico-2.1.8.tgz", + "integrity": "sha512-Nf+IIn/cZ/DIZVdGveJp86NG5uNib1ZXMiDd/8x32HCTeKSvgpyg6D/6tUBn1QO/zybzoMK0/mc3QRgAyXdv9w==", + "dependencies": { + "@types/node": "^17.0.36", + "minimist": "^1.2.6", + "pngjs": "^6.0.0" + }, + "bin": { + "png-to-ico": "bin/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prettier": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-sh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-sh/-/prettier-plugin-sh-0.14.0.tgz", + "integrity": "sha512-hfXulj5+zEl/ulrO5kMuuTPKmXvOg0bnLHY1hKFNN/N+/903iZbNp8NyZBTsgI8dtkSgFfAEIQq0IQTyP1ZVFQ==", + "dev": true, + "dependencies": { + "mvdan-sh": "^0.10.1", + "sh-syntax": "^0.4.1" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + }, + "peerDependencies": { + "prettier": "^3.0.3" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz", + "integrity": "sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==", + "dependencies": { + "speedometer": "~1.0.0", + "through2": "~2.0.3" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "dependencies": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + } + }, + "node_modules/queue-cb": { + "version": "1.4.16", + "resolved": "https://registry.npmjs.org/queue-cb/-/queue-cb-1.4.16.tgz", + "integrity": "sha512-7g8cAIeoENe4kYgLAjTF7j7nX71pLlGdIAViR8U8pmHD3UA116+LjMRyucE6c6qUYBlv4ppaYXCTZjlo/IN27w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "dependencies": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, + "node_modules/require_optional/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "node_modules/rimraf2": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rimraf2/-/rimraf2-2.8.2.tgz", + "integrity": "sha512-Bz7P3Zu6lEpek5LduIqg5A2mRu8kCllR+rGYofqq9bRRiHC9m+Py/EiINPt9iu/XOqQ//Q++XSka7EwL3K3Chw==", + "bin": { + "rimraf2": "bin.js" + }, + "peerDependencies": { + "glob": "*" + }, + "peerDependenciesMeta": { + "glob": { + "optional": true + } + } + }, + "node_modules/rustic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rustic/-/rustic-1.2.2.tgz", + "integrity": "sha512-aagYrcImcYj3QbaP7nirOw8/q8aULMu0LkKucP9B4WsRbXlXpk195nYAEB+uJzAcgk2pKS+yMzbAJtIoOqwZoQ==" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sh-syntax": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/sh-syntax/-/sh-syntax-0.4.2.tgz", + "integrity": "sha512-/l2UZ5fhGZLVZa16XQM9/Vq/hezGGbdHeVEA01uWjOL1+7Ek/gt6FquW0iKKws4a9AYPYvlz6RyVvjh3JxOteg==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/sharp": { + "version": "0.30.7", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz", + "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==", + "hasInstallScript": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.1", + "node-addon-api": "^5.0.0", + "prebuild-install": "^7.1.1", + "semver": "^7.3.7", + "simple-get": "^4.0.1", + "tar-fs": "^2.1.1", + "tunnel-agent": "^0.6.0" + }, + "engines": { + "node": ">=12.13.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-escape": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/shell-escape/-/shell-escape-0.2.0.tgz", + "integrity": "sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==" + }, + "node_modules/short-hash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/short-hash/-/short-hash-1.0.0.tgz", + "integrity": "sha512-qbUCD2Pkl4IXRyVqneEjGnUr0NGDGLzZnBUVGJngIQZf/FrhOL0yJhH+JQzak0t8xMmScIKpoX1SxOsPHdwa4w==", + "dependencies": { + "hash-string": "^1.0.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/speedometer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz", + "integrity": "sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/stack-base-iterator": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/stack-base-iterator/-/stack-base-iterator-1.1.20.tgz", + "integrity": "sha512-dlhhk0qesNjtXQCvJsayyvrUIh4gz6HkGC3g00RmXUgpbpYV7SJm97/Ac2HNUfO2mtq68DEGvt+msCf7Uk55Hg==", + "dependencies": { + "asap": "^2.0.6", + "async-compat": "^1.6.8", + "call-once-fn": "^1.0.15", + "fifo": "^2.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-iterator": { + "version": "1.2.25", + "resolved": "https://registry.npmjs.org/tar-iterator/-/tar-iterator-1.2.25.tgz", + "integrity": "sha512-PyjH/Rils3eQ2ThsBG4O8zQLx/nPkoS/Iqvob4wEtpOJoO5DcqQKeI88aGWC3ktG6ms1Lgf1qrYtCo59W4WeRg==", + "dependencies": { + "call-once-fn": "^1.0.15", + "extract-base-iterator": "^1.2.22", + "lifecycle": "^1.0.4", + "lodash.compact": "^3.0.1", + "mkdirp-classic": "^0.5.3", + "on-one": "^0.1.4", + "rimraf2": "^2.8.2", + "tar-stream-compat": "2.1.5" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream-compat": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/tar-stream-compat/-/tar-stream-compat-2.1.5.tgz", + "integrity": "sha512-hhIcRHj6S+y7IDR+VO8IcOjPUsAJ+50POvGK1fDFqbOTLTs/J7YA07TUgvpSkYkYuRUfYsuAFM/0SrvrdIZMdQ==", + "dependencies": { + "bl": "^2.2.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.4.4", + "fs-constants": "^1.0.0", + "inherits": "^2.0.4", + "readable-stream": "^2.3.7" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tar-stream-compat/node_modules/bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/tar-stream/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/temp-suffix": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/temp-suffix/-/temp-suffix-0.1.14.tgz", + "integrity": "sha512-OqUZmSYtyGgteGxgjh8mkV69Zr1GXSYMj/+VUol698zxnopimbAlmIx5cQIIg1F9XDyA01htZfxLqC1FQZ7hbw==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-utf8": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/to-utf8/-/to-utf8-0.0.1.tgz", + "integrity": "sha512-zks18/TWT1iHO3v0vFp5qLKOG27m67ycq/Y7a7cTiRuUNlc4gf3HGnkRgMv0NyhnfTamtkYBJl+YeD1/j07gBQ==" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xmlbuilder2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz", + "integrity": "sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==", + "dependencies": { + "@oozcitak/dom": "1.15.10", + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8", + "js-yaml": "3.14.1" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip/-/zip-1.2.0.tgz", + "integrity": "sha512-8B4Z9BXJKkI8BkHhKvQan4rwCzUENnj95YHFYrI7F1NbqKCIdW86kujctzEB+kJ6XapHPiAhiZ9xi5GbW5SPdw==", + "dependencies": { + "bops": "~0.1.1" + } + }, + "node_modules/zip-iterator": { + "version": "1.2.23", + "resolved": "https://registry.npmjs.org/zip-iterator/-/zip-iterator-1.2.23.tgz", + "integrity": "sha512-gS+3YsU/vIHXxaViw67Dm1DMyN7U5iVU/NFB0rWYKyN7MYlOH61icBZm8RWesDtknsUaT9saEChwj+ueZKS8Dg==", + "dependencies": { + "buffer-v6-polyfill": "^1.0.5", + "call-once-fn": "^1.0.15", + "extract-base-iterator": "^1.2.22", + "lifecycle": "^1.0.4", + "lodash.compact": "^3.0.1", + "mkdirp-classic": "^0.5.3", + "on-one": "^0.1.4", + "os-shim": "^0.1.3", + "queue-cb": "^1.4.16", + "readable-stream": "^2.3.7", + "rimraf2": "^2.8.2", + "short-hash": "^1.0.0", + "temp-suffix": "^0.1.14", + "zip": "^1.2.0" + }, + "engines": { + "node": ">=0.8" + } + } + }, + "dependencies": { + "@oozcitak/dom": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", + "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==", + "requires": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/url": "1.0.4", + "@oozcitak/util": "8.3.8" + } + }, + "@oozcitak/infra": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", + "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", + "requires": { + "@oozcitak/util": "8.3.8" + } + }, + "@oozcitak/url": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", + "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", + "requires": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8" + } + }, + "@oozcitak/util": { + "version": "8.3.8", + "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", + "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==" + }, + "@resvg/resvg-js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-1.4.0.tgz", + "integrity": "sha512-AcsRqAPFMIOxlMZCHxSxTG5vZTbW95xFDrQDTmsX/VEwc3tgLL9E4Be2nIJjWrdvIQxsTlaWYJsn2pxkki9Ltg==", + "requires": { + "@resvg/resvg-js-android-arm-eabi": "1.4.0", + "@resvg/resvg-js-android-arm64": "1.4.0", + "@resvg/resvg-js-darwin-arm64": "1.4.0", + "@resvg/resvg-js-darwin-x64": "1.4.0", + "@resvg/resvg-js-linux-arm-gnueabihf": "1.4.0", + "@resvg/resvg-js-linux-arm64-gnu": "1.4.0", + "@resvg/resvg-js-linux-arm64-musl": "1.4.0", + "@resvg/resvg-js-linux-x64-gnu": "1.4.0", + "@resvg/resvg-js-linux-x64-musl": "1.4.0", + "@resvg/resvg-js-win32-arm64-msvc": "1.4.0", + "@resvg/resvg-js-win32-ia32-msvc": "1.4.0", + "@resvg/resvg-js-win32-x64-msvc": "1.4.0" + } + }, + "@resvg/resvg-js-android-arm-eabi": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm-eabi/-/resvg-js-android-arm-eabi-1.4.0.tgz", + "integrity": "sha512-8C7P2dYNeL5mghCgJ+2IqNwv5V50d5pZQYIvGYlbP7d3OB/T8uVEcmuflYgWq+/vEn1gZE+Q2A0tFJOHqIvH9A==", + "optional": true + }, + "@resvg/resvg-js-android-arm64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm64/-/resvg-js-android-arm64-1.4.0.tgz", + "integrity": "sha512-BQp3zo+/8Ns9u2NCh7YeII2KflsiXfJDrwahXk21PuDp0l1KcMjdQ2o4dTWTskF5Dba/rcuDa94T5GD9Pgap7g==", + "optional": true + }, + "@resvg/resvg-js-darwin-arm64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-arm64/-/resvg-js-darwin-arm64-1.4.0.tgz", + "integrity": "sha512-IuvUOIpdxk5fEqr8EXgdCfugRWS88HlXwSeHPDVNCh/9kQ7exRoVi5CDOipkngUPYKxbKTekJWTxQHRUtf8oNQ==", + "optional": true + }, + "@resvg/resvg-js-darwin-x64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-x64/-/resvg-js-darwin-x64-1.4.0.tgz", + "integrity": "sha512-XFao3tkBBPHubVvXDX/ViYf2509tgqcfUc6bDtVYHCUOecK10ppbtdMRRnXjesi3towPQj2peiRUEavTIBbfGg==", + "optional": true + }, + "@resvg/resvg-js-linux-arm-gnueabihf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm-gnueabihf/-/resvg-js-linux-arm-gnueabihf-1.4.0.tgz", + "integrity": "sha512-RAjGdBJKGO5tSE1PsTl2WpG/TkgJGqsHIFtaQAUWNG4/LQ+0MNAptBOGrvNZvmRu+hVIk1t8m9rKme2RMdmlLQ==", + "optional": true + }, + "@resvg/resvg-js-linux-arm64-gnu": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-gnu/-/resvg-js-linux-arm64-gnu-1.4.0.tgz", + "integrity": "sha512-mT0UWGyzSaTu48sJGQno9zaZqk7j9ZjZppNu/TkLqObYu0xSeTnxnU73/Xy+byZh9RvLY/994bEaOP50jpDW/g==", + "optional": true + }, + "@resvg/resvg-js-linux-arm64-musl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-musl/-/resvg-js-linux-arm64-musl-1.4.0.tgz", + "integrity": "sha512-wfl0dk9pNExJeFxRoAO0P0ywVkqW80FqsCH6KCtTbB1f2P2NY0paAKPho1LJ2z1YSzq3ngganyAKPl2PoBqn4g==", + "optional": true + }, + "@resvg/resvg-js-linux-x64-gnu": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-1.4.0.tgz", + "integrity": "sha512-XDebImgHmQMIjxISZ4UsV9iHcO2IJnkKrT9/F5SWF3MgqRLro2pIY1JsgW70sEjkHlcyF7dbTa/M7TAgSz0uvg==", + "optional": true + }, + "@resvg/resvg-js-linux-x64-musl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-1.4.0.tgz", + "integrity": "sha512-cvq7pPQECLyP5SoI5ECZL0RhKcgz7sQTjYWQdZjFdF6riN40uWSo1Le31+oLLCwSoSOo8Z60xmU95ChbZjSY5Q==", + "optional": true + }, + "@resvg/resvg-js-win32-arm64-msvc": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-arm64-msvc/-/resvg-js-win32-arm64-msvc-1.4.0.tgz", + "integrity": "sha512-4waye03doDRsQmtibxiTQ7alAmvT2D7gt5n3gmIMsAP8fF+szRQ+cD/ClPZdBIMonhAUbe3nLMduocOe2Jp59Q==", + "optional": true + }, + "@resvg/resvg-js-win32-ia32-msvc": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-ia32-msvc/-/resvg-js-win32-ia32-msvc-1.4.0.tgz", + "integrity": "sha512-9Ld/Hv8nXslvodPv9wL3wec8Tf9kFAO4t9632Y66aAcGZBNW/xAwzbgDOSv32N763tsLphleu1DhJ7nXKZIz9A==", + "optional": true + }, + "@resvg/resvg-js-win32-x64-msvc": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-x64-msvc/-/resvg-js-win32-x64-msvc-1.4.0.tgz", + "integrity": "sha512-sMGQdOIop6a/s+cmFodnQNNykvr/MavgBXCzVt9jp1Rq4PXWtn8uwSsUupsn3SHPJCZ83kee6m4JCnak6Rec9A==", + "optional": true + }, + "@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "@zen-browser/surfer": { + "version": "1.9.18", + "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.9.18.tgz", + "integrity": "sha512-lTMQ/RkIYI1fBjvd+UWHwcZqIk3H2X0wZniwFFpQOVg3wNEjljk3DVcuxwOEy08PrQYbxEX1vfQLyyjzlJWnEw==", + "requires": { + "@resvg/resvg-js": "^1.4.0", + "async-icns": "^1.0.2", + "axios": "^0.21.1", + "chalk": "^4.1.0", + "cli-progress": "^3.9.1", + "commander": "^6.2.1", + "execa": "^5.1.1", + "fast-extract": "^1.1.0", + "fs-extra": "^10.0.0", + "ini": "^3.0.0", + "is-apple-silicon": "github:trickypr/is-apple-silicon", + "kleur": "^4.1.5", + "modern-async": "^1.1.2", + "mount-dmg": "^1.0.1", + "picomatch": "^2.3.1", + "png-to-ico": "^2.1.4", + "prompts": "^2.4.1", + "rustic": "^1.2.1", + "semver": "^7.3.7", + "sharp": "^0.30.7", + "tiny-glob": "^0.2.9", + "xmlbuilder2": "^3.0.2" + } + }, + "ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "requires": { + "environment": "^1.0.0" + } + }, + "ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "async-compat": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/async-compat/-/async-compat-1.6.8.tgz", + "integrity": "sha512-MVKdync5q2FgE+x/AErx0mtJSZgQxWBGIx7vOcQbXmTh04OAF41N2zQX5XhAb0Mq/sMSFqzZSSFwzZ3rrROsSg==", + "requires": { + "is-error": "^2.2.2", + "is-promise": "^4.0.0" + } + }, + "async-icns": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/async-icns/-/async-icns-1.0.2.tgz", + "integrity": "sha512-d2P/f3aAWdOE3+tEqTW4HLj9Ob7/t54/NH2nRFK9Q7ZhJJXK7TlF1G3vgB6UP/ILHjI3Akjv+d8sFXyAZxCIFQ==", + "requires": { + "commander": "^9.2.0" + }, + "dependencies": { + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" + } + } + }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bl": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-3.0.1.tgz", + "integrity": "sha512-jrCW5ZhfQ/Vt07WX1Ngs+yn9BDqPL/gw28S7s9H6QK/gupnizNzJAss5akW20ISgOrbLTlXOOCTJeNUQqruAWQ==", + "requires": { + "readable-stream": "^3.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "bops": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bops/-/bops-0.1.1.tgz", + "integrity": "sha512-Cx1zStcMp+YoFan8OgudNPMih82eJZE+27feki1WeyoFTR9Ye7AR1SUW3saE6QQvdS/g52aJ2IojBjWOiRiLbw==", + "requires": { + "base64-js": "0.0.2", + "to-utf8": "0.0.1" + }, + "dependencies": { + "base64-js": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", + "integrity": "sha512-Pj9L87dCdGcKlSqPVUjD+q96pbIx1zQQLb2CUiWURfjiBELv84YX+0nGnKmyT/9KkC7PQk7UN1w+Al8bBozaxQ==" + } + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + }, + "buffer-v6-polyfill": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/buffer-v6-polyfill/-/buffer-v6-polyfill-1.0.5.tgz", + "integrity": "sha512-LdUw/JMZyKN+EBDbOHqynYtOLXDjgo+uf5vCUhfO5hVsU2chvbqyexizvxUMaU4ipYZy9MiQyIFwMeIgsb6nBA==" + }, + "call-once-fn": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/call-once-fn/-/call-once-fn-1.0.15.tgz", + "integrity": "sha512-LPMeZc0iO4Ep9XCtvRk9ecOdQpJd1DKRWly1+95F+OinTRJri39ZUVItxJu0ru/KzBbbv0cmKFb0gzG4PJCinA==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "requires": { + "restore-cursor": "^5.0.0" + } + }, + "cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "requires": { + "string-width": "^4.2.3" + } + }, + "cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "requires": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + } + } + } + }, + "color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "requires": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "core-js-pure": { + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.40.0.tgz", + "integrity": "sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" + }, + "duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, + "extract-base-iterator": { + "version": "1.2.22", + "resolved": "https://registry.npmjs.org/extract-base-iterator/-/extract-base-iterator-1.2.22.tgz", + "integrity": "sha512-gGMzo6ijt6oh9VSLOG3H+rpyzkoCYkVBgF/qdxVM/Wc/eKJyX2gxrBN8gO7IbnAMxre36wvzwzzD6umw80i3CQ==", + "requires": { + "graceful-fs": "^4.2.11", + "is-absolute": "^1.0.0", + "lodash.compact": "^3.0.1", + "mkdirp-classic": "^0.5.3", + "object-assign": "^4.1.1", + "queue-cb": "^1.4.16", + "rimraf2": "^2.8.2", + "stack-base-iterator": "^1.1.20" + } + }, + "fast-extract": { + "version": "1.3.31", + "resolved": "https://registry.npmjs.org/fast-extract/-/fast-extract-1.3.31.tgz", + "integrity": "sha512-P3poghIIxD7mEIHymqaeevrrdWD23JLyagIfox+/jw6r0L8CtjHJsg/S/YZsHH6V2/IfK5tHoBsiyAqBIocSHw==", + "requires": { + "bl": "^3.0.0", + "buffer-v6-polyfill": "^1.0.5", + "call-once-fn": "^1.0.15", + "content-disposition": "^0.5.4", + "flush-write-stream": "^2.0.0", + "lodash.throttle": "^4.1.1", + "mkdirp-classic": "^0.5.3", + "mock-require-lazy": "^1.0.14", + "next-tick": "^1.1.0", + "on-one": "^0.1.4", + "progress-stream": "^2.0.0", + "pumpify": "^2.0.1", + "queue-cb": "^1.4.16", + "readable-stream": "^2.3.7", + "require_optional": "^1.0.1", + "rimraf2": "^2.8.2", + "signal-exit": "^3.0.7", + "tar-iterator": "^1.2.25", + "temp-suffix": "^0.1.14", + "unbzip2-stream": "^1.4.3", + "zip-iterator": "^1.2.23" + } + }, + "fifo": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/fifo/-/fifo-2.4.1.tgz", + "integrity": "sha512-XTbUCNmo54Jav0hcL6VxDuY4x1eCQH61HEF80C2Oww283pfjQ2C8avZeyq4v43sW2S2403kmzssE9j4lbF66Sg==" + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "flush-write-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-2.0.0.tgz", + "integrity": "sha512-uXClqPxT4xW0lcdSBheb2ObVU+kuqUk3Jk64EwieirEXZx9XUrVwp/JuBfKAWaM4T5Td/VL7QLDWPXp/MvGm/g==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "hash-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hash-string/-/hash-string-1.0.0.tgz", + "integrity": "sha512-dtNNyxXobzHavayZwOwRWhBTqS9GX4jDjIMsGc0fDyaN2A+4zMn5Ua9ODDCggN6w3Spma6mAHL3ImmW3BkWDmQ==" + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", + "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-apple-silicon": { + "version": "git+ssh://git@github.com/trickypr/is-apple-silicon.git#5f75501a1d7566ba9f94174b6825d7bd9d302b6a", + "from": "is-apple-silicon@github:trickypr/is-apple-silicon" + }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "is-error": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", + "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==" + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" + }, + "lifecycle": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lifecycle/-/lifecycle-1.0.4.tgz", + "integrity": "sha512-FJx0SNrM2rouctdOH4rATsHT+BvgyXX4LEQ+Yn9COQNPK3u4XAPp9qS7OKpRO22MeT39oxkjZkRcLnHxSmiduw==" + }, + "lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true + }, + "lint-staged": { + "version": "15.4.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.3.tgz", + "integrity": "sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==", + "dev": true, + "requires": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" + }, + "dependencies": { + "chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true + }, + "commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true + }, + "execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + } + }, + "get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true + }, + "human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "listr2": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", + "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", + "dev": true, + "requires": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + } + }, + "lodash.compact": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.compact/-/lodash.compact-3.0.1.tgz", + "integrity": "sha512-2ozeiPi+5eBXW1CLtzjk8XQFhQOEMwwfxblqeq6EGyTxZJ1bPATqilY0e6g2SLQpP4KuMeuioBhEnWz5Pr7ICQ==" + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "requires": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "requires": { + "get-east-asian-width": "^1.0.0" + } + }, + "slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "requires": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + } + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "mock-require-lazy": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/mock-require-lazy/-/mock-require-lazy-1.0.14.tgz", + "integrity": "sha512-PNuw/5/+IJLgOSJoXv4DYBu840i2NmhRFgUoB/To/hvL7J8YxjjrvNaAaPotq7Ndff344pDFSqDqGpstdhB8Tg==", + "requires": { + "get-caller-file": "^2.0.5", + "normalize-path": "^3.0.0" + } + }, + "modern-async": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/modern-async/-/modern-async-1.1.5.tgz", + "integrity": "sha512-Yioj6tw1jvZef+bYjcZN9gMPBpVkkqGOMbQg/1U9dIqdij44mpftvNJxTf/u2Gc6oobuNGUFWNJwJwq8qEs9bw==", + "requires": { + "core-js-pure": "^3.19.1", + "nanoassert": "^2.0.0" + } + }, + "mount-dmg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mount-dmg/-/mount-dmg-1.0.1.tgz", + "integrity": "sha512-YEHSgtE1d6jIm6ht0uqo4MWQSXHvHYujgURXf+59hQDErH5bL5rv4uGwko8ejiFIeK6ySk8jBX1oX9NrlmBTCg==", + "requires": { + "shell-escape": "^0.2.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "mvdan-sh": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/mvdan-sh/-/mvdan-sh-0.10.1.tgz", + "integrity": "sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==", + "dev": true + }, + "nanoassert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", + "integrity": "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==" + }, + "napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==" + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node-abi": { + "version": "3.73.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.73.0.tgz", + "integrity": "sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==", + "requires": { + "semver": "^7.3.5" + } + }, + "node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "on-one": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/on-one/-/on-one-0.1.4.tgz", + "integrity": "sha512-fWyHjSVZvs7Dkt7F/fZCm4Eoxv7+uQkaiUYh3jDVN15khYa5iTnFWW9VM8rQgStAca5cDxHzyAT7cF+gfyLgcg==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true + }, + "png-to-ico": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/png-to-ico/-/png-to-ico-2.1.8.tgz", + "integrity": "sha512-Nf+IIn/cZ/DIZVdGveJp86NG5uNib1ZXMiDd/8x32HCTeKSvgpyg6D/6tUBn1QO/zybzoMK0/mc3QRgAyXdv9w==", + "requires": { + "@types/node": "^17.0.36", + "minimist": "^1.2.6", + "pngjs": "^6.0.0" + } + }, + "pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==" + }, + "prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, + "prettier": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true + }, + "prettier-plugin-sh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-sh/-/prettier-plugin-sh-0.14.0.tgz", + "integrity": "sha512-hfXulj5+zEl/ulrO5kMuuTPKmXvOg0bnLHY1hKFNN/N+/903iZbNp8NyZBTsgI8dtkSgFfAEIQq0IQTyP1ZVFQ==", + "dev": true, + "requires": { + "mvdan-sh": "^0.10.1", + "sh-syntax": "^0.4.1" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz", + "integrity": "sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==", + "requires": { + "speedometer": "~1.0.0", + "through2": "~2.0.3" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "dependencies": { + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + } + } + }, + "pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "requires": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + } + }, + "queue-cb": { + "version": "1.4.16", + "resolved": "https://registry.npmjs.org/queue-cb/-/queue-cb-1.4.16.tgz", + "integrity": "sha512-7g8cAIeoENe4kYgLAjTF7j7nX71pLlGdIAViR8U8pmHD3UA116+LjMRyucE6c6qUYBlv4ppaYXCTZjlo/IN27w==" + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + } + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + } + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==" + }, + "restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "requires": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "dependencies": { + "onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "requires": { + "mimic-function": "^5.0.0" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } + } + }, + "rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "rimraf2": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rimraf2/-/rimraf2-2.8.2.tgz", + "integrity": "sha512-Bz7P3Zu6lEpek5LduIqg5A2mRu8kCllR+rGYofqq9bRRiHC9m+Py/EiINPt9iu/XOqQ//Q++XSka7EwL3K3Chw==", + "requires": {} + }, + "rustic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rustic/-/rustic-1.2.2.tgz", + "integrity": "sha512-aagYrcImcYj3QbaP7nirOw8/q8aULMu0LkKucP9B4WsRbXlXpk195nYAEB+uJzAcgk2pKS+yMzbAJtIoOqwZoQ==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + }, + "sh-syntax": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/sh-syntax/-/sh-syntax-0.4.2.tgz", + "integrity": "sha512-/l2UZ5fhGZLVZa16XQM9/Vq/hezGGbdHeVEA01uWjOL1+7Ek/gt6FquW0iKKws4a9AYPYvlz6RyVvjh3JxOteg==", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "sharp": { + "version": "0.30.7", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz", + "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==", + "requires": { + "color": "^4.2.3", + "detect-libc": "^2.0.1", + "node-addon-api": "^5.0.0", + "prebuild-install": "^7.1.1", + "semver": "^7.3.7", + "simple-get": "^4.0.1", + "tar-fs": "^2.1.1", + "tunnel-agent": "^0.6.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shell-escape": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/shell-escape/-/shell-escape-0.2.0.tgz", + "integrity": "sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==" + }, + "short-hash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/short-hash/-/short-hash-1.0.0.tgz", + "integrity": "sha512-qbUCD2Pkl4IXRyVqneEjGnUr0NGDGLzZnBUVGJngIQZf/FrhOL0yJhH+JQzak0t8xMmScIKpoX1SxOsPHdwa4w==", + "requires": { + "hash-string": "^1.0.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + } + } + }, + "speedometer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz", + "integrity": "sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "stack-base-iterator": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/stack-base-iterator/-/stack-base-iterator-1.1.20.tgz", + "integrity": "sha512-dlhhk0qesNjtXQCvJsayyvrUIh4gz6HkGC3g00RmXUgpbpYV7SJm97/Ac2HNUfO2mtq68DEGvt+msCf7Uk55Hg==", + "requires": { + "asap": "^2.0.6", + "async-compat": "^1.6.8", + "call-once-fn": "^1.0.15", + "fifo": "^2.4.1" + } + }, + "stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar-fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-iterator": { + "version": "1.2.25", + "resolved": "https://registry.npmjs.org/tar-iterator/-/tar-iterator-1.2.25.tgz", + "integrity": "sha512-PyjH/Rils3eQ2ThsBG4O8zQLx/nPkoS/Iqvob4wEtpOJoO5DcqQKeI88aGWC3ktG6ms1Lgf1qrYtCo59W4WeRg==", + "requires": { + "call-once-fn": "^1.0.15", + "extract-base-iterator": "^1.2.22", + "lifecycle": "^1.0.4", + "lodash.compact": "^3.0.1", + "mkdirp-classic": "^0.5.3", + "on-one": "^0.1.4", + "rimraf2": "^2.8.2", + "tar-stream-compat": "2.1.5" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "tar-stream-compat": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/tar-stream-compat/-/tar-stream-compat-2.1.5.tgz", + "integrity": "sha512-hhIcRHj6S+y7IDR+VO8IcOjPUsAJ+50POvGK1fDFqbOTLTs/J7YA07TUgvpSkYkYuRUfYsuAFM/0SrvrdIZMdQ==", + "requires": { + "bl": "^2.2.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.4.4", + "fs-constants": "^1.0.0", + "inherits": "^2.0.4", + "readable-stream": "^2.3.7" + }, + "dependencies": { + "bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + } + } + }, + "temp-suffix": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/temp-suffix/-/temp-suffix-0.1.14.tgz", + "integrity": "sha512-OqUZmSYtyGgteGxgjh8mkV69Zr1GXSYMj/+VUol698zxnopimbAlmIx5cQIIg1F9XDyA01htZfxLqC1FQZ7hbw==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "to-utf8": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/to-utf8/-/to-utf8-0.0.1.tgz", + "integrity": "sha512-zks18/TWT1iHO3v0vFp5qLKOG27m67ycq/Y7a7cTiRuUNlc4gf3HGnkRgMv0NyhnfTamtkYBJl+YeD1/j07gBQ==" + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "requires": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "requires": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "xmlbuilder2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz", + "integrity": "sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==", + "requires": { + "@oozcitak/dom": "1.15.10", + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8", + "js-yaml": "3.14.1" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true + }, + "zip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip/-/zip-1.2.0.tgz", + "integrity": "sha512-8B4Z9BXJKkI8BkHhKvQan4rwCzUENnj95YHFYrI7F1NbqKCIdW86kujctzEB+kJ6XapHPiAhiZ9xi5GbW5SPdw==", + "requires": { + "bops": "~0.1.1" + } + }, + "zip-iterator": { + "version": "1.2.23", + "resolved": "https://registry.npmjs.org/zip-iterator/-/zip-iterator-1.2.23.tgz", + "integrity": "sha512-gS+3YsU/vIHXxaViw67Dm1DMyN7U5iVU/NFB0rWYKyN7MYlOH61icBZm8RWesDtknsUaT9saEChwj+ueZKS8Dg==", + "requires": { + "buffer-v6-polyfill": "^1.0.5", + "call-once-fn": "^1.0.15", + "extract-base-iterator": "^1.2.22", + "lifecycle": "^1.0.4", + "lodash.compact": "^3.0.1", + "mkdirp-classic": "^0.5.3", + "on-one": "^0.1.4", + "os-shim": "^0.1.3", + "queue-cb": "^1.4.16", + "readable-stream": "^2.3.7", + "rimraf2": "^2.8.2", + "short-hash": "^1.0.0", + "temp-suffix": "^0.1.14", + "zip": "^1.2.0" + } + } + } +} diff --git a/package.json b/package.json index 5cf332487..0e72e8cda 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,12 @@ "update-ff:raw": "surfer update", "update-newtab": "python3 scripts/update_newtab.py", "update-ff:rc": "python3 scripts/update_ff.py --rc", + "update-ff:l10n": "python3 scripts/update_ff.py --just-l10n", "pretty": "prettier . --write && autopep8 -r --in-place scripts/ src/", "lint": "npx prettier . --check && autopep8 --diff scripts/ src/", "prepare": "husky", - "reset-ff": "surfer reset" + "reset-ff": "surfer reset", + "surfer": "surfer" }, "repository": { "type": "git", @@ -39,7 +41,7 @@ }, "homepage": "https://github.com/zen-browser/core#readme", "dependencies": { - "@zen-browser/surfer": "^1.9.8" + "@zen-browser/surfer": "^1.9.18" }, "devDependencies": { "husky": "^9.1.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c4a6d2148..a05c0dac3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@zen-browser/surfer': - specifier: ^1.9.8 - version: 1.9.8(glob@7.2.3) + specifier: ^1.9.16 + version: 1.9.16(glob@7.2.3) devDependencies: husky: specifier: ^9.1.7 @@ -122,8 +122,8 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@zen-browser/surfer@1.9.8': - resolution: {integrity: sha512-dx4ouPDB7bg+eWR+NNuhdroR0JyZ+bWlxpAFskl9TiR3cvr1qtmZG9bYSF27nLNOUSWgKNamjevP785B08Cxjg==} + '@zen-browser/surfer@1.9.16': + resolution: {integrity: sha512-6/Vcp1Ox9mt53hoBUuxFvpnRMnlvjFb3GBOcRhpqoYW/yi9mlV3G48icE717wGCoR2TThfuS6SYVfiT/G1kkrw==} hasBin: true ansi-escapes@7.0.0: @@ -152,8 +152,8 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - async-compat@1.6.1: - resolution: {integrity: sha512-8ggRAJiUews+8pjzG/fQ0O9QOPxHFa3DGvvMoH67rukjIiRL7AVGcaUSkA6ecZYlDvyom7zet7zy1ZFjRliuqw==} + async-compat@1.6.8: + resolution: {integrity: sha512-MVKdync5q2FgE+x/AErx0mtJSZgQxWBGIx7vOcQbXmTh04OAF41N2zQX5XhAb0Mq/sMSFqzZSSFwzZ3rrROsSg==} engines: {node: '>=0.8'} async-icns@1.0.2: @@ -207,8 +207,8 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - call-once-fn@1.0.6: - resolution: {integrity: sha512-zBcRjl/aFJEJqNSNw0gtzi4ZtDLBqPqIbU8qyXv5M2biF2nYHqcpIXOWo6ZhhDAQDkr9WgXQnLLyXQJvWm5AMg==} + call-once-fn@1.0.15: + resolution: {integrity: sha512-LPMeZc0iO4Ep9XCtvRk9ecOdQpJd1DKRWly1+95F+OinTRJri39ZUVItxJu0ru/KzBbbv0cmKFb0gzG4PJCinA==} engines: {node: '>=0.8'} chalk@4.1.2: @@ -337,12 +337,12 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - extract-base-iterator@1.2.10: - resolution: {integrity: sha512-xdSKIpRrB+AqUJByl1pIOAyHs2vUfA4pL05SiB/9ZhC4AYS4G9a5TNmKEfY6KKeoPw5eFLoQ/9hVUUq5BIguFA==} + extract-base-iterator@1.2.22: + resolution: {integrity: sha512-gGMzo6ijt6oh9VSLOG3H+rpyzkoCYkVBgF/qdxVM/Wc/eKJyX2gxrBN8gO7IbnAMxre36wvzwzzD6umw80i3CQ==} engines: {node: '>=0.8'} - fast-extract@1.3.10: - resolution: {integrity: sha512-XrV3AQLlaW4sDMSOwcBRDBMaEdJKgXT2EhtsqTufdZWWNN2b8zmRSGee/VV/vurO0agKoEVCyxja2DmkBzv6lg==} + fast-extract@1.3.31: + resolution: {integrity: sha512-P3poghIIxD7mEIHymqaeevrrdWD23JLyagIfox+/jw6r0L8CtjHJsg/S/YZsHH6V2/IfK5tHoBsiyAqBIocSHw==} engines: {node: '>=0.8'} peerDependencies: lzma-native: '*' @@ -369,10 +369,6 @@ packages: debug: optional: true - fs-access-compat@1.1.4: - resolution: {integrity: sha512-Qvy38V5JTnQT9pDulL2HBDiuZ1XbA3IHLJrHZpsP2gcBocflwnrbIcRd/dcH+ax55JEqqc8N1ARpaxITlp7hMg==} - engines: {node: '>=0.8'} - fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -588,8 +584,8 @@ packages: mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - mock-require-lazy@1.0.6: - resolution: {integrity: sha512-+0sOddS06fxFPJEDulH1Qssavf7D8UWa54Z6LQFuKwWwKwXLIU2JHnNt9Qi449LkqrKtNVa0rHhAzoJCZxvTgg==} + mock-require-lazy@1.0.14: + resolution: {integrity: sha512-PNuw/5/+IJLgOSJoXv4DYBu840i2NmhRFgUoB/To/hvL7J8YxjjrvNaAaPotq7Ndff344pDFSqDqGpstdhB8Tg==} engines: {node: '>=0.8'} modern-async@1.1.5: @@ -607,14 +603,14 @@ packages: nanoassert@2.0.0: resolution: {integrity: sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==} - napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - node-abi@3.71.0: - resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} + node-abi@3.73.0: + resolution: {integrity: sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==} engines: {node: '>=10'} node-addon-api@5.1.0: @@ -636,6 +632,10 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + on-one@0.1.4: + resolution: {integrity: sha512-fWyHjSVZvs7Dkt7F/fZCm4Eoxv7+uQkaiUYh3jDVN15khYa5iTnFWW9VM8rQgStAca5cDxHzyAT7cF+gfyLgcg==} + engines: {node: '>=0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -685,8 +685,8 @@ packages: resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} engines: {node: '>=12.13.0'} - prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} engines: {node: '>=10'} hasBin: true @@ -717,8 +717,8 @@ packages: pumpify@2.0.1: resolution: {integrity: sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==} - queue-cb@1.4.10: - resolution: {integrity: sha512-Hi3ZvXvKhrmxJhn6FhwsyW/Dd6OFZy2RWPXrAxQFw0jDnoiOzx2edkarCr5RpR6no7nZ+O4if59M/2HKzFy3hw==} + queue-cb@1.4.16: + resolution: {integrity: sha512-7g8cAIeoENe4kYgLAjTF7j7nX71pLlGdIAViR8U8pmHD3UA116+LjMRyucE6c6qUYBlv4ppaYXCTZjlo/IN27w==} engines: {node: '>=0.8'} rc@1.2.8: @@ -828,8 +828,8 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - stack-base-iterator@1.1.11: - resolution: {integrity: sha512-c9f/rUFy/GJCEn0kx7gqIM/LByOrvOAq4I0cEVeahcmSGFfFa2xAto6/RcjApT0qbz/+IrA0OCM7CHnSiVDrOw==} + stack-base-iterator@1.1.20: + resolution: {integrity: sha512-dlhhk0qesNjtXQCvJsayyvrUIh4gz6HkGC3g00RmXUgpbpYV7SJm97/Ac2HNUfO2mtq68DEGvt+msCf7Uk55Hg==} engines: {node: '>=0.8'} stream-shift@1.0.3: @@ -850,9 +850,6 @@ packages: string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -880,8 +877,8 @@ packages: tar-fs@2.1.2: resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} - tar-iterator@1.2.9: - resolution: {integrity: sha512-sHgC+mJjn5n4v1YDQsFyGUg8Up6byOWV8QjQh/ZOYSOVkmg5q9ivpTgIKJrQOUihivsh+4pQlY5gMmXyH4AyOg==} + tar-iterator@1.2.25: + resolution: {integrity: sha512-PyjH/Rils3eQ2ThsBG4O8zQLx/nPkoS/Iqvob4wEtpOJoO5DcqQKeI88aGWC3ktG6ms1Lgf1qrYtCo59W4WeRg==} engines: {node: '>=0.8'} tar-stream-compat@2.1.5: @@ -892,8 +889,8 @@ packages: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - temp-suffix@0.1.6: - resolution: {integrity: sha512-oxSvTMUHbFUEbCIQGJa221DvtpA1oNSlthyGjPJ/yiAum8JgE/Nu4jHh7osM7IKHPomRDCmxmYdTuX442EuZKg==} + temp-suffix@0.1.14: + resolution: {integrity: sha512-OqUZmSYtyGgteGxgjh8mkV69Zr1GXSYMj/+VUol698zxnopimbAlmIx5cQIIg1F9XDyA01htZfxLqC1FQZ7hbw==} engines: {node: '>=0.8'} through2@2.0.5: @@ -957,8 +954,8 @@ packages: engines: {node: '>= 14'} hasBin: true - zip-iterator@1.2.7: - resolution: {integrity: sha512-hLYAZigng8q3AWJyNJgiUAokV/NXYBXgLeYt+PnkcXMES9syJwiLCBJ1qvoBEip97E5/H0T5OwpZcCrx91FE8A==} + zip-iterator@1.2.23: + resolution: {integrity: sha512-gS+3YsU/vIHXxaViw67Dm1DMyN7U5iVU/NFB0rWYKyN7MYlOH61icBZm8RWesDtknsUaT9saEChwj+ueZKS8Dg==} engines: {node: '>=0.8'} zip@1.2.0: @@ -1036,7 +1033,7 @@ snapshots: '@types/node@17.0.45': {} - '@zen-browser/surfer@1.9.8(glob@7.2.3)': + '@zen-browser/surfer@1.9.16(glob@7.2.3)': dependencies: '@resvg/resvg-js': 1.4.0 async-icns: 1.0.2 @@ -1045,7 +1042,7 @@ snapshots: cli-progress: 3.12.0 commander: 6.2.1 execa: 5.1.1 - fast-extract: 1.3.10(glob@7.2.3) + fast-extract: 1.3.31(glob@7.2.3) fs-extra: 10.1.0 ini: 3.0.1 is-apple-silicon: https://codeload.github.com/trickypr/is-apple-silicon/tar.gz/5f75501a1d7566ba9f94174b6825d7bd9d302b6a @@ -1085,7 +1082,7 @@ snapshots: asap@2.0.6: {} - async-compat@1.6.1: + async-compat@1.6.8: dependencies: is-error: 2.2.2 is-promise: 4.0.0 @@ -1153,7 +1150,7 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - call-once-fn@1.0.6: {} + call-once-fn@1.0.15: {} chalk@4.1.2: dependencies: @@ -1277,43 +1274,42 @@ snapshots: expand-template@2.0.3: {} - extract-base-iterator@1.2.10(glob@7.2.3): + extract-base-iterator@1.2.22(glob@7.2.3): dependencies: - fs-access-compat: 1.1.4 graceful-fs: 4.2.11 is-absolute: 1.0.0 lodash.compact: 3.0.1 mkdirp-classic: 0.5.3 object-assign: 4.1.1 - queue-cb: 1.4.10 + queue-cb: 1.4.16 rimraf2: 2.8.2(glob@7.2.3) - stack-base-iterator: 1.1.11 + stack-base-iterator: 1.1.20 transitivePeerDependencies: - glob - fast-extract@1.3.10(glob@7.2.3): + fast-extract@1.3.31(glob@7.2.3): dependencies: bl: 3.0.1 buffer-v6-polyfill: 1.0.5 - call-once-fn: 1.0.6 + call-once-fn: 1.0.15 content-disposition: 0.5.4 - end-of-stream: 1.4.4 flush-write-stream: 2.0.0 lodash.throttle: 4.1.1 mkdirp-classic: 0.5.3 - mock-require-lazy: 1.0.6 + mock-require-lazy: 1.0.14 next-tick: 1.1.0 + on-one: 0.1.4 progress-stream: 2.0.0 pumpify: 2.0.1 - queue-cb: 1.4.10 + queue-cb: 1.4.16 readable-stream: 2.3.8 require_optional: 1.0.1 rimraf2: 2.8.2(glob@7.2.3) signal-exit: 3.0.7 - tar-iterator: 1.2.9(glob@7.2.3) - temp-suffix: 0.1.6 + tar-iterator: 1.2.25(glob@7.2.3) + temp-suffix: 0.1.14 unbzip2-stream: 1.4.3 - zip-iterator: 1.2.7(glob@7.2.3) + zip-iterator: 1.2.23(glob@7.2.3) transitivePeerDependencies: - glob @@ -1330,8 +1326,6 @@ snapshots: follow-redirects@1.15.9: {} - fs-access-compat@1.1.4: {} - fs-constants@1.0.0: {} fs-extra@10.1.0: @@ -1515,7 +1509,7 @@ snapshots: mkdirp-classic@0.5.3: {} - mock-require-lazy@1.0.6: + mock-require-lazy@1.0.14: dependencies: get-caller-file: 2.0.5 normalize-path: 3.0.0 @@ -1535,11 +1529,11 @@ snapshots: nanoassert@2.0.0: {} - napi-build-utils@1.0.2: {} + napi-build-utils@2.0.0: {} next-tick@1.1.0: {} - node-abi@3.71.0: + node-abi@3.73.0: dependencies: semver: 7.6.3 @@ -1557,6 +1551,8 @@ snapshots: object-assign@4.1.1: {} + on-one@0.1.4: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -1594,15 +1590,15 @@ snapshots: pngjs@6.0.0: {} - prebuild-install@7.1.2: + prebuild-install@7.1.3: dependencies: detect-libc: 2.0.3 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.71.0 + napi-build-utils: 2.0.0 + node-abi: 3.73.0 pump: 3.0.2 rc: 1.2.8 simple-get: 4.0.1 @@ -1640,7 +1636,7 @@ snapshots: inherits: 2.0.4 pump: 3.0.2 - queue-cb@1.4.10: {} + queue-cb@1.4.16: {} rc@1.2.8: dependencies: @@ -1662,7 +1658,7 @@ snapshots: readable-stream@3.6.2: dependencies: inherits: 2.0.4 - string_decoder: 1.3.0 + string_decoder: 1.1.1 util-deprecate: 1.0.2 require_optional@1.0.1: @@ -1702,7 +1698,7 @@ snapshots: color: 4.2.3 detect-libc: 2.0.3 node-addon-api: 5.1.0 - prebuild-install: 7.1.2 + prebuild-install: 7.1.3 semver: 7.6.3 simple-get: 4.0.1 tar-fs: 2.1.2 @@ -1752,11 +1748,11 @@ snapshots: sprintf-js@1.0.3: {} - stack-base-iterator@1.1.11: + stack-base-iterator@1.1.20: dependencies: asap: 2.0.6 - async-compat: 1.6.1 - call-once-fn: 1.0.6 + async-compat: 1.6.8 + call-once-fn: 1.0.15 fifo: 2.4.1 stream-shift@1.0.3: {} @@ -1779,10 +1775,6 @@ snapshots: dependencies: safe-buffer: 5.1.2 - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -1808,16 +1800,14 @@ snapshots: pump: 3.0.2 tar-stream: 2.2.0 - tar-iterator@1.2.9(glob@7.2.3): + tar-iterator@1.2.25(glob@7.2.3): dependencies: - call-once-fn: 1.0.6 - end-of-stream: 1.4.4 - extract-base-iterator: 1.2.10(glob@7.2.3) - fs-access-compat: 1.1.4 + call-once-fn: 1.0.15 + extract-base-iterator: 1.2.22(glob@7.2.3) lifecycle: 1.0.4 lodash.compact: 3.0.1 mkdirp-classic: 0.5.3 - queue-cb: 1.4.10 + on-one: 0.1.4 rimraf2: 2.8.2(glob@7.2.3) tar-stream-compat: 2.1.5 transitivePeerDependencies: @@ -1840,7 +1830,7 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - temp-suffix@0.1.6: + temp-suffix@0.1.14: dependencies: imurmurhash: 0.1.4 @@ -1902,22 +1892,21 @@ snapshots: yaml@2.6.1: {} - zip-iterator@1.2.7(glob@7.2.3): + zip-iterator@1.2.23(glob@7.2.3): dependencies: buffer-v6-polyfill: 1.0.5 - call-once-fn: 1.0.6 - end-of-stream: 1.4.4 - extract-base-iterator: 1.2.10(glob@7.2.3) - fs-access-compat: 1.1.4 + call-once-fn: 1.0.15 + extract-base-iterator: 1.2.22(glob@7.2.3) lifecycle: 1.0.4 lodash.compact: 3.0.1 mkdirp-classic: 0.5.3 + on-one: 0.1.4 os-shim: 0.1.3 - queue-cb: 1.4.10 + queue-cb: 1.4.16 readable-stream: 2.3.8 rimraf2: 2.8.2(glob@7.2.3) short-hash: 1.0.0 - temp-suffix: 0.1.6 + temp-suffix: 0.1.14 zip: 1.2.0 transitivePeerDependencies: - glob diff --git a/scripts/download-language-packs.sh b/scripts/download-language-packs.sh index f59e96312..4363c6f21 100644 --- a/scripts/download-language-packs.sh +++ b/scripts/download-language-packs.sh @@ -7,8 +7,14 @@ git config --global fetch.prune true cd $CURRENT_DIR +LAST_FIREFOX_L10N_COMMIT=$(cat ./firefox-cache/l10n-last-commit-hash) + cd ./l10n +rm -rf firefox-l10n +# clone only from LAST_FIREFOX_L10N_COMMIT git clone https://github.com/mozilla-l10n/firefox-l10n +cd firefox-l10n +git checkout $LAST_FIREFOX_L10N_COMMIT cd $CURRENT_DIR update_language() { diff --git a/scripts/update_ff.py b/scripts/update_ff.py index 2cbe1f358..df61856d5 100644 --- a/scripts/update_ff.py +++ b/scripts/update_ff.py @@ -18,8 +18,8 @@ def update_rc(last_version: str): with open("surfer.json", "w") as f: data["version"]["candidate"] = rc_version json.dump(data, f, indent=2) - print("Download the new engine by running 'pnpm download'.") - os.system("pnpm download") + print("Download the new engine by running 'npm run download'.") + os.system("npm run download") else: print("No new Firefox RC version available.") @@ -28,7 +28,7 @@ def update_ff(is_rc: bool = False, last_version: str = ""): """Runs the npm command to update the 'ff' component.""" if is_rc: return update_rc(last_version) - result = os.system("pnpm update-ff:raw") + result = os.system("npm run update-ff:raw") if result != 0: raise RuntimeError("Failed to update 'ff' component.") @@ -57,21 +57,38 @@ def update_readme(last_version, new_version, is_rc=False): raise RuntimeError(f"README.md file not found: {e}") +def update_l10n_last_commit_hash(): + L10N_REPO = "https://github.com/mozilla-l10n/firefox-l10n" + try: + os.system(f"git clone {L10N_REPO} l10n-temp") + if not os.path.exists("firefox-cache"): + os.mkdir("firefox-cache") + os.system("cat l10n-temp/.git/refs/heads/main > firefox-cache/l10n-last-commit-hash") + except KeyboardInterrupt: + print("Exiting...") + shutil.rmtree("l10n-temp") + + def main(): """Main function to update versions and README.""" arg_parser = argparse.ArgumentParser() arg_parser.add_argument( "--rc", help="Indicates that this is a release candidate.", default=False, action="store_true") + arg_parser.add_argument( + "--just-l10n", help="Only update the l10n last commit hash.", default=False, action="store_true") args = arg_parser.parse_args() try: - last_version = get_version_from_file("surfer.json", args.rc) - update_ff(args.rc, last_version) - new_version = get_version_from_file("surfer.json", args.rc) - update_readme(last_version, new_version, args.rc) - print( - f"Updated version from {last_version} to {new_version} in README.md.") + if not args.just_l10n: + last_version = get_version_from_file("surfer.json", args.rc) + update_ff(args.rc, last_version) + new_version = get_version_from_file("surfer.json", args.rc) + update_readme(last_version, new_version, args.rc) + print( + f"Updated version from {last_version} to {new_version} in README.md.") + print("Updating l10n last commit hash.") + update_l10n_last_commit_hash() except Exception as e: print(f"An error occurred: {e}") diff --git a/src/browser/app/profile/zen-browser.js b/src/browser/app/profile/zen-browser.js index afd33a56f..fa3dfc6be 100644 --- a/src/browser/app/profile/zen-browser.js +++ b/src/browser/app/profile/zen-browser.js @@ -8,9 +8,7 @@ #endif #endif -pref("browser.tabs.cardPreview.enabled", true); -pref("browser.tabs.hoverPreview.enabled", true); -pref("browser.tabs.cardPreview.delayMs", 100); +pref("browser.tabs.hoverPreview.enabled", false); #ifdef MOZ_UPDATE_CHANNEL pref("devtools.debugger.prompt-connection", true); @@ -82,15 +80,17 @@ pref('zen.welcome-screen.seen', false); pref('zen.tabs.vertical', true); pref('zen.tabs.vertical.right-side', false); +pref('zen.tabs.rename-tabs', true); pref('zen.theme.accent-color', "#ffb787"); pref('zen.theme.content-element-separation', 6); // In pixels pref('zen.theme.pill-button', false); pref('zen.theme.gradient', true); -pref('zen.theme.essentials-favicon-bg', false); +pref('zen.theme.gradient.show-custom-colors', false); +pref('zen.theme.essentials-favicon-bg', true); pref('zen.tabs.show-newtab-vertical', true); -pref('zen.view.show-newtab-button-border-top', true); -pref('zen.view.show-newtab-button-top', false); +pref('zen.view.show-newtab-button-border-top', false); +pref('zen.view.show-newtab-button-top', true); #ifdef MOZILLA_OFFICIAL pref('zen.rice.api.url', 'https://share.zen-browser.app', locked); @@ -102,18 +102,12 @@ pref('zen.injections.match-urls', 'http://localhost/*', locked); pref('zen.rice.share.notice.accepted', false); #ifdef XP_MACOSX -pref('zen.theme.border-radius', 12); // In pixels -#else -#ifdef XP_WIN -pref('zen.theme.border-radius', 12); // In pixels +pref('zen.theme.border-radius', 10); // In pixels #else pref('zen.theme.border-radius', 8); // In pixels #endif -#endif pref('zen.theme.color-prefs.use-workspace-colors', true); -pref('zen.theme.color-prefs.amoled', false); -pref('zen.theme.color-prefs.colorful', false); pref('zen.view.compact.hide-tabbar', true); pref('zen.view.compact.hide-toolbar', false); @@ -124,7 +118,9 @@ pref('zen.view.compact.color-toolbar', true); pref('zen.view.compact.color-sidebar', true); pref('zen.view.compact.animate-sidebar', true); +pref('zen.urlbar.replace-newtab', true); pref('zen.urlbar.behavior', 'floating-on-type'); // default, floating-on-type, float +pref('zen.urlbar.wait-to-clear', 45000); // in ms (default 45s) #ifdef XP_MACOSX // Disable for macos in the meantime until @HarryHeres finds a solution for hight DPI screens @@ -133,6 +129,10 @@ pref('zen.view.experimental-rounded-view', false); pref('zen.view.experimental-rounded-view', true); #endif +#ifdef XP_WIN +pref('zen.widget.windows.acrylic', true); +#endif + // Glance pref('zen.glance.enabled', true); pref('zen.glance.hold-duration', 300); // in ms @@ -142,6 +142,10 @@ pref('zen.glance.activation-method', 'alt'); // ctrl, alt, shift, none, hold pref('zen.view.sidebar-height-throttle', 200); // in ms pref('zen.view.sidebar-expanded.max-width', 500); +#ifdef XP_MACOSX +pref('zen.view.mac.show-three-dot-menu', false); +pref('zen.widget.mac.mono-window-controls', true); +#endif pref('zen.view.show-bottom-border', false); pref('zen.view.use-single-toolbar', true); pref('zen.view.sidebar-expanded', true); @@ -158,7 +162,6 @@ pref('zen.view.hide-window-controls', true); pref('zen.view.experimental-no-window-controls', false); pref('zen.tabs.dim-pending', true); -pref('zen.tabs.newtab-on-middle-click', true); pref('zen.keyboard.shortcuts.enabled', true); pref('zen.keyboard.shortcuts.version', 0); // Empty string means default shortcuts @@ -167,15 +170,15 @@ pref('zen.keyboard.shortcuts.disable-mainkeyset-clear', false); // for debugging pref('zen.themes.updated-value-observer', false); pref('zen.tab-unloader.enabled', true); -pref('zen.tab-unloader.timeout-minutes', 20); +pref('zen.tab-unloader.timeout-minutes', 40); pref('zen.tab-unloader.excluded-urls', "example.com,example.org"); pref('zen.pinned-tab-manager.debug', false); pref('zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url', false); -pref('zen.pinned-tab-manager.close-shortcut-behavior', 'switch'); +pref('zen.pinned-tab-manager.close-shortcut-behavior', 'unload-switch'); -// Pref to enable the new profiles (TODO: Check this out!) -//pref("browser.profiles.enabled", true); +// TODO: Check this out! +pref("browser.profiles.enabled", false); // Zen webpanels (calling it sidebar due to legacy reasons) pref('zen.sidebar.data', "{\"data\":\n {\"p1\":{\n \"url\":\"https://www.wikipedia.org/\"\n },\n\"p2\":{\n \"url\":\"https://m.twitter.com/\",\n\"ua\": true\n },\n\"p3\": {\n \"url\": \"https://www.youtube.com/\",\n\"ua\": true\n},\n\"p4\": {\n \"url\": \"https://translate.google.com/\",\n\"ua\": true\n},\n\"p5\": {\n \"url\": \"https://todoist.com/\",\n\"ua\": true\n}},\n\"index\":[\"p1\",\"p2\",\"p3\",\"p4\",\"p5\"]}"); @@ -184,13 +187,12 @@ pref('zen.sidebar.close-on-blur', true); pref('zen.sidebar.max-webpanels', 8); // Zen Split View -pref('zen.splitView.working', false); pref('zen.splitView.min-resize-width', 7); pref('zen.splitView.change-on-hover', false); pref('zen.splitView.rearrange-hover-size', 24); // Startup flags -pref('zen.startup.smooth-scroll-in-tabs', false); +pref('zen.startup.smooth-scroll-in-tabs', true); // Zen Workspaces pref('zen.workspaces.disabled_for_testing', false); @@ -199,7 +201,7 @@ pref('zen.workspaces.hide-default-container-indicator', true); pref('zen.workspaces.individual-pinned-tabs', true); pref('zen.workspaces.show-icon-strip', true); pref('zen.workspaces.force-container-workspace', false); -pref('zen.workspaces.open-new-tab-if-last-unpinned-tab-is-closed', true); +pref('zen.workspaces.open-new-tab-if-last-unpinned-tab-is-closed', false); pref('zen.workspaces.show-workspace-indicator', true); pref('zen.workspaces.swipe-actions', true); pref('zen.workspaces.wrap-around-navigation', true); @@ -382,6 +384,7 @@ pref("browser.urlbar.quicksuggest.enabled", false); pref("browser.urlbar.suggest.quicksuggest.sponsored", false); pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); pref("browser.urlbar.groupLabels.enabled", false); +pref("browser.urlbar.keepPanelOpenDuringImeComposition", true); // IMPORTANT: Fixes closing the urlbar when on some languages pref("browser.formfill.enable", false); pref("security.insecure_connection_text.enabled", true); pref("security.insecure_connection_text.pbmode.enabled", true); @@ -429,7 +432,7 @@ pref("browser.aboutwelcome.enabled", false); // ---- Experimental settings to try make zen faster pref("gfx.canvas.accelerated.cache-items", 32768); -pref("gfx.canvas.accelerated.cache-size", 4096); +pref("gfx.canvas.accelerated.cache-size", 256); pref("gfx.content.skia-font-cache-size", 80); pref("media.memory_cache_max_size", 1048576); diff --git a/src/browser/base/content/ZenCustomizableUI.sys.mjs b/src/browser/base/content/ZenCustomizableUI.sys.mjs index 2a210cba3..a3622a5ee 100644 --- a/src/browser/base/content/ZenCustomizableUI.sys.mjs +++ b/src/browser/base/content/ZenCustomizableUI.sys.mjs @@ -4,7 +4,7 @@ export var ZenCustomizableUI = new (class { constructor() {} TYPE_TOOLBAR = 'toolbar'; - defaultSidebarIcons = ['zen-profile-button', 'zen-workspaces-button', 'downloads-button']; + defaultSidebarIcons = ['preferences-button', 'zen-workspaces-button', 'downloads-button']; startup(CustomizableUIInternal) { CustomizableUIInternal.registerArea( @@ -126,7 +126,7 @@ export var ZenCustomizableUI = new (class { window.CustomizableUI.registerToolbarNode(window.document.getElementById('zen-sidebar-top-buttons')); window.CustomizableUI.registerToolbarNode(window.document.getElementById('zen-sidebar-icons-wrapper')); window.addEventListener( - 'MozAfterPaint', + 'DOMContentLoaded', () => { this._dispatchResizeEvent(window); }, diff --git a/src/browser/base/content/ZenStartup.mjs b/src/browser/base/content/ZenStartup.mjs index 363dababe..88e4fad4b 100644 --- a/src/browser/base/content/ZenStartup.mjs +++ b/src/browser/base/content/ZenStartup.mjs @@ -3,11 +3,9 @@ var ZenStartup = { init() { this.openWatermark(); - window.SessionStore.promiseInitialized.then(() => { - this._changeSidebarLocation(); - this._zenInitBrowserLayout(); - this._initSearchBar(); - }); + this._changeSidebarLocation(); + this._zenInitBrowserLayout(); + this._initSearchBar(); }, _zenInitBrowserLayout() { @@ -31,11 +29,7 @@ document.getElementById('zen-appcontent-navbar-container').appendChild(deckTemplate); } - // Disable smooth scroll - gBrowser.tabContainer.arrowScrollbox.smoothScroll = Services.prefs.getBoolPref( - 'zen.startup.smooth-scroll-in-tabs', - false - ); + this._initSidebarScrolling(); gZenCompactModeManager.init(); ZenWorkspaces.init(); @@ -86,6 +80,35 @@ } }, + _initSidebarScrolling() { + // Disable smooth scroll + const canSmoothScroll = Services.prefs.getBoolPref('zen.startup.smooth-scroll-in-tabs', false); + const tabsWrapper = document.getElementById('zen-tabs-wrapper'); + gBrowser.tabContainer.addEventListener('wheel', (event) => { + if (canSmoothScroll) return; + event.preventDefault(); // Prevent the smooth scroll behavior + gBrowser.tabContainer.scrollTop += event.deltaY * 20; // Apply immediate scroll + }); + // Detect overflow and underflow + const observer = new ResizeObserver((_) => { + const tabContainer = gBrowser.tabContainer; + // const isVertical = tabContainer.getAttribute('orient') === 'vertical'; + // let contentSize = tabsWrapper.getBoundingClientRect()[isVertical ? 'height' : 'width']; + // NOTE: This should be contentSize > scrollClientSize, but due + // to how Gecko internally rounds in those cases, we allow for some + // minor differences (the internal Gecko layout size is 1/60th of a + // pixel, so 0.02 should cover it). + //let overflowing = contentSize - tabContainer.arrowScrollbox.scrollClientSize > 0.02; + let overflowing = true; // cheatign the system, because we want to always show make the element overflowing + + window.requestAnimationFrame(() => { + tabContainer.arrowScrollbox.toggleAttribute('overflowing', overflowing); + tabContainer.arrowScrollbox.dispatchEvent(new CustomEvent(overflowing ? 'overflow' : 'underflow')); + }); + }); + observer.observe(tabsWrapper); + }, + _initSearchBar() { // Only focus the url bar gURLBar.focus(); diff --git a/src/browser/base/content/ZenUIManager.mjs b/src/browser/base/content/ZenUIManager.mjs index bb1416956..82de90f62 100644 --- a/src/browser/base/content/ZenUIManager.mjs +++ b/src/browser/base/content/ZenUIManager.mjs @@ -1,20 +1,26 @@ var gZenUIManager = { _popupTrackingElements: [], _hoverPausedForExpand: false, + _hasLoadedDOM: false, init() { document.addEventListener('popupshowing', this.onPopupShowing.bind(this)); document.addEventListener('popuphidden', this.onPopupHidden.bind(this)); XPCOMUtils.defineLazyPreferenceGetter(this, 'sidebarHeightThrottle', 'zen.view.sidebar-height-throttle', 500); XPCOMUtils.defineLazyPreferenceGetter(this, 'contentElementSeparation', 'zen.theme.content-element-separation', 0); + XPCOMUtils.defineLazyPreferenceGetter(this, 'urlbarWaitToClear', 'zen.urlbar.wait-to-clear', 0); + + gURLBar._zenTrimURL = this.urlbarTrim.bind(this); ChromeUtils.defineLazyGetter(this, 'motion', () => { return ChromeUtils.importESModule('chrome://browser/content/zen-vendor/motion.min.mjs', { global: 'current' }); }); - new ResizeObserver(gZenCommonActions.throttle(this.updateTabsToolbar.bind(this), this.sidebarHeightThrottle)).observe( - document.getElementById('tabbrowser-tabs') - ); + ChromeUtils.defineLazyGetter(this, '_toastContainer', () => { + return document.getElementById('zen-toast-container'); + }); + + new ResizeObserver(this.updateTabsToolbar.bind(this)).observe(document.getElementById('TabsToolbar')); new ResizeObserver( gZenCommonActions.throttle( @@ -22,25 +28,60 @@ var gZenUIManager = { this.sidebarHeightThrottle ) ).observe(document.getElementById('navigator-toolbox')); + + SessionStore.promiseAllWindowsRestored.then(() => { + this._hasLoadedDOM = true; + this.updateTabsToolbar(); + }); + + window.addEventListener('TabClose', this.onTabClose.bind(this)); + this.tabsWrapper.addEventListener('scroll', this.saveScrollbarState.bind(this)); }, updateTabsToolbar() { // Set tabs max-height to the "toolbar-items" height - const toolbarItems = document.getElementById('tabbrowser-tabs'); - const tabs = document.getElementById('tabbrowser-arrowscrollbox'); - tabs.style.maxHeight = '0px'; // reset to 0 - const toolbarRect = toolbarItems.getBoundingClientRect(); - let height = toolbarRect.height; - // -5 for the controls padding - let totalHeight = toolbarRect.height - this.contentElementSeparation * 2 - 5; - // remove the height from other elements that aren't hidden - const otherElements = document.querySelectorAll('#tabbrowser-tabs > *:not([hidden="true"])'); - for (let tab of otherElements) { - if (tabs === tab) continue; - totalHeight -= tab.getBoundingClientRect().height; + const tabs = this.tabsWrapper; + // Remove tabs so we can accurately calculate the height + // without them affecting the height of the toolbar + for (const tab of gBrowser.tabs) { + if (tab.hasAttribute('zen-essential')) { + continue; + } + tab.style.maxHeight = '0px'; } - tabs.style.maxHeight = totalHeight + 'px'; - //console.info('ZenThemeModifier: set tabs max-height to', totalHeight + 'px'); + tabs.style.flex = '1'; + tabs.style.removeProperty('max-height'); + const toolbarRect = tabs.getBoundingClientRect(); + let height = toolbarRect.height; + for (const tab of gBrowser.tabs) { + if (tab.hasAttribute('zen-essential')) { + continue; + } + tab.style.removeProperty('max-height'); + } + tabs.style.removeProperty('flex'); + tabs.style.maxHeight = height + 'px'; + }, + + get tabsWrapper() { + if (this._tabsWrapper) { + return this._tabsWrapper; + } + this._tabsWrapper = document.getElementById('zen-tabs-wrapper'); + return this._tabsWrapper; + }, + + saveScrollbarState() { + this._scrollbarState = this.tabsWrapper.scrollTop; + }, + + restoreScrollbarState() { + this.tabsWrapper.scrollTop = this._scrollbarState; + }, + + onTabClose(event) { + this.updateTabsToolbar(); + this.restoreScrollbarState(); }, openAndChangeToTab(url, options) { @@ -55,9 +96,7 @@ var gZenUIManager = { }, generateUuidv4() { - return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => - (+c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))).toString(16) - ); + return Services.uuid.generateUUID().toString(); }, toogleBookmarksSidebar() { @@ -113,6 +152,111 @@ var gZenUIManager = { this.__currentPopup = null; this.__currentPopupTrackElement = null; }, + + // Section: URL bar + + get newtabButtons() { + return document.querySelectorAll('#tabs-newtab-button'); + }, + + _prevUrlbarLabel: null, + _lastSearch: '', + _clearTimeout: null, + _lastTab: null, + + handleNewTab(werePassedURL, searchClipboard, where) { + const shouldOpenURLBar = + Services.prefs.getBoolPref('zen.urlbar.replace-newtab') && !werePassedURL && !searchClipboard && where === 'tab'; + if (shouldOpenURLBar) { + if (this._clearTimeout) { + clearTimeout(this._clearTimeout); + } + this._lastTab = gBrowser.selectedTab; + this._lastTab._visuallySelected = false; + this._prevUrlbarLabel = gURLBar._untrimmedValue; + gURLBar._zenHandleUrlbarClose = this.handleUrlbarClose.bind(this); + gURLBar.setAttribute('zen-newtab', true); + for (const button of this.newtabButtons) { + button.setAttribute('in-urlbar', true); + } + document.getElementById('Browser:OpenLocation').doCommand(); + gURLBar.search(this._lastSearch); + return true; + } + return false; + }, + + clearUrlbarData() { + this._prevUrlbarLabel = null; + this._lastSearch = ''; + }, + + handleUrlbarClose(onSwitch) { + gURLBar._zenHandleUrlbarClose = null; + gURLBar.removeAttribute('zen-newtab'); + this._lastTab._visuallySelected = true; + this._lastTab = null; + for (const button of this.newtabButtons) { + button.removeAttribute('in-urlbar'); + } + if (onSwitch) { + this.clearUrlbarData(); + } else { + this._lastSearch = gURLBar._untrimmedValue; + this._clearTimeout = setTimeout(() => { + this.clearUrlbarData(); + }, this.urlbarWaitToClear); + } + gURLBar.setURI(this._prevUrlbarLabel, onSwitch, false, false, !onSwitch); + gURLBar.handleRevert(); + if (gURLBar.focused) { + gURLBar.view.close({ elementPicked: onSwitch }); + gURLBar.updateTextOverflow(); + if (gBrowser.selectedTab.linkedBrowser && onSwitch) { + gURLBar.getBrowserState(gBrowser.selectedTab.linkedBrowser).urlbarFocused = false; + } + } + }, + + urlbarTrim(aURL) { + if (gZenVerticalTabsManager._hasSetSingleToolbar) { + let url = BrowserUIUtils.removeSingleTrailingSlashFromURL(aURL); + return url.startsWith('http://') || url.startsWith('https://') ? url.split('/')[2] : url; + } + return BrowserUIUtils.trimURL(aURL); + }, + + // Section: Notification messages + _createToastElement(messageId, options) { + const element = document.createXULElement('vbox'); + const label = document.createXULElement('label'); + document.l10n.setAttributes(label, messageId, options); + element.appendChild(label); + if (options.descriptionId) { + const description = document.createXULElement('label'); + description.classList.add('description'); + document.l10n.setAttributes(description, options.descriptionId, options); + element.appendChild(description); + } + element.classList.add('zen-toast'); + return element; + }, + + async showToast(messageId, options = {}) { + const toast = this._createToastElement(messageId, options); + this._toastContainer.removeAttribute('hidden'); + this._toastContainer.appendChild(toast); + await this.motion.animate(toast, { opacity: [0, 1], scale: [0.8, 1] }, { type: 'spring', bounce: 0.4 }); + await new Promise((resolve) => setTimeout(resolve, 3000)); + await this.motion.animate(toast, { opacity: [1, 0], scale: [1, 0.9] }, { duration: 0.2, bounce: 0 }); + const toastHeight = toast.getBoundingClientRect().height; + // 5 for the separation between toasts + await this.motion.animate(toast, { marginBottom: [0, `-${toastHeight + 5}px`] }, { duration: 0.2 }); + toast.remove(); + if (!this._toastContainer.hasChildNodes()) { + this._toastContainer.setAttribute('hidden', 'true'); + } + }, }; var gZenVerticalTabsManager = { @@ -147,27 +291,14 @@ var gZenVerticalTabsManager = { window.addEventListener('customizationstarting', this._preCustomize.bind(this)); window.addEventListener('aftercustomization', this._postCustomize.bind(this)); - window.addEventListener('DOMContentLoaded', updateEvent, { once: true }); - - const tabs = document.getElementById('tabbrowser-tabs'); - - XPCOMUtils.defineLazyPreferenceGetter(this, 'canOpenTabOnMiddleClick', 'zen.tabs.newtab-on-middle-click', true); + this._updateEvent(); if (!this.isWindowsStyledButtons) { document.documentElement.setAttribute('zen-window-buttons-reversed', true); } - if (tabs) { - tabs.addEventListener('mouseup', this.openNewTabOnTabsMiddleClick.bind(this)); - } - }, - - openNewTabOnTabsMiddleClick(event) { - if (event.button === 1 && event.target.id === 'tabbrowser-tabs' && this.canOpenTabOnMiddleClick) { - document.getElementById('cmd_newNavigatorTabNoEvent').doCommand(); - event.stopPropagation(); - event.preventDefault(); - } + this._renameTabHalt = this.renameTabHalt.bind(this); + gBrowser.tabContainer.addEventListener('dblclick', this.renameTabStart.bind(this)); }, toggleExpand() { @@ -204,6 +335,45 @@ var gZenVerticalTabsManager = { return this.__topButtonsSeparatorElement; }, + animateTab(aTab) { + if (!gZenUIManager.motion || !aTab || !gZenUIManager._hasLoadedDOM) { + return; + } + // get next visible tab + const isLastTab = () => { + const visibleTabs = gBrowser.visibleTabs; + return visibleTabs[visibleTabs.length - 1] === aTab; + }; + + const tabSize = aTab.getBoundingClientRect().height; + const transform = `-${tabSize}px`; + gZenUIManager.motion + .animate( + aTab, + { + opacity: [0, 1], + transform: ['scale(0.95)', 'scale(1)'], + marginBottom: isLastTab() ? [] : [transform, '0px'], + }, + { + duration: 0.2, + easing: 'ease-out', + } + ) + .then(() => { + aTab.style.removeProperty('margin-bottom'); + aTab.style.removeProperty('transform'); + aTab.style.removeProperty('opacity'); + }); + gZenUIManager.motion + .animate(aTab.querySelector('.tab-content'), { + filter: ['blur(1px)', 'blur(0px)'], + }) + .then(() => { + aTab.querySelector('.tab-stack').style.removeProperty('filter'); + }); + }, + get actualWindowButtons() { // we have multiple ".titlebar-buttonbox-container" in the DOM, because of the titlebar if (!this.__actualWindowButtons) { @@ -295,6 +465,11 @@ var gZenVerticalTabsManager = { gBrowser.tabContainer.setAttribute('orient', isVerticalTabs ? 'vertical' : 'horizontal'); gBrowser.tabContainer.arrowScrollbox.setAttribute('orient', isVerticalTabs ? 'vertical' : 'horizontal'); + // on purpose, we set the orient to horizontal, because the arrowScrollbox is vertical + gBrowser.tabContainer.arrowScrollbox.scrollbox.setAttribute( + 'orient', + isVerticalTabs && ZenWorkspaces.workspaceEnabled ? 'horizontal' : 'vertical' + ); const buttonsTarget = document.getElementById('zen-sidebar-top-buttons-customization-target'); if (isRightSide) { @@ -448,6 +623,7 @@ var gZenVerticalTabsManager = { } catch (e) { console.error(e); } + gZenUIManager.updateTabsToolbar(); this._isUpdating = false; }, @@ -488,4 +664,85 @@ var gZenVerticalTabsManager = { } target.appendChild(child); }, + + renameTabKeydown(event) { + if (event.key === 'Enter') { + let label = this._tabEdited.querySelector('.tab-label-container-editing'); + let input = this._tabEdited.querySelector('#tab-label-input'); + let newName = input.value.trim(); + + // Check if name is blank, reset if so + // Always remove, so we can always rename and if it's empty, + // it will reset to the original name anyway + this._tabEdited.removeAttribute('zen-has-static-label'); + if (newName) { + gBrowser._setTabLabel(this._tabEdited, newName); + this._tabEdited.setAttribute('zen-has-static-label', 'true'); + } else { + gBrowser.setTabTitle(this._tabEdited); + } + + // Maybe add some confetti here?!? + gZenUIManager.motion.animate( + this._tabEdited, + { + scale: [1, 0.98, 1], + }, + { + duration: 0.25, + } + ); + + this._tabEdited.querySelector('.tab-editor-container').remove(); + label.classList.remove('tab-label-container-editing'); + + this._tabEdited = null; + } else if (event.key === 'Escape') { + event.target.blur(); + } + }, + + renameTabStart(event) { + if ( + this._tabEdited || + !Services.prefs.getBoolPref('zen.tabs.rename-tabs') || + Services.prefs.getBoolPref('browser.tabs.closeTabByDblclick') || + !gZenVerticalTabsManager._prefsSidebarExpanded + ) + return; + this._tabEdited = event.target.closest('.tabbrowser-tab'); + if (!this._tabEdited || !this._tabEdited.pinned || this._tabEdited.hasAttribute('zen-essential')) { + this._tabEdited = null; + return; + } + const label = this._tabEdited.querySelector('.tab-label-container'); + label.classList.add('tab-label-container-editing'); + + const container = window.MozXULElement.parseXULToFragment(` + + `); + label.after(container); + const containerHtml = this._tabEdited.querySelector('.tab-editor-container'); + const input = document.createElement('input'); + input.id = 'tab-label-input'; + input.value = this._tabEdited.label; + input.addEventListener('keydown', this.renameTabKeydown.bind(this)); + + containerHtml.appendChild(input); + input.focus(); + input.select(); + + input.addEventListener('blur', this._renameTabHalt); + }, + + renameTabHalt(event) { + if (document.activeElement === event.target || !this._tabEdited) { + return; + } + this._tabEdited.querySelector('.tab-editor-container').remove(); + const label = this._tabEdited.querySelector('.tab-label-container-editing'); + label.classList.remove('tab-label-container-editing'); + + this._tabEdited = null; + }, }; diff --git a/src/browser/base/content/browser-commands-js.patch b/src/browser/base/content/browser-commands-js.patch index 293d011e5..e39ef0bb4 100644 --- a/src/browser/base/content/browser-commands-js.patch +++ b/src/browser/base/content/browser-commands-js.patch @@ -1,8 +1,19 @@ diff --git a/browser/base/content/browser-commands.js b/browser/base/content/browser-commands.js -index 352de44dda36e3f6672eb353f42978ede0cd2681..d6956a318c34bfb12b0ba957edab1166e1a4edaf 100644 +index 352de44dda36e3f6672eb353f42978ede0cd2681..66d1616da17df3430cec0994a346f0f446944f1a 100644 --- a/browser/base/content/browser-commands.js +++ b/browser/base/content/browser-commands.js -@@ -407,8 +407,8 @@ var BrowserCommands = { +@@ -318,6 +318,10 @@ var BrowserCommands = { + } + } + ++ if (gZenUIManager.handleNewTab(werePassedURL, searchClipboard, where)) { ++ return; ++ } ++ + // A notification intended to be useful for modular peformance tracking + // starting as close as is reasonably possible to the time when the user + // expressed the intent to open a new tab. Since there are a lot of +@@ -407,8 +411,8 @@ var BrowserCommands = { (event.ctrlKey || event.metaKey || event.altKey) && gBrowser.selectedTab.pinned ) { diff --git a/src/browser/base/content/browser-init-js.patch b/src/browser/base/content/browser-init-js.patch index 3d3d188ed..0cbd4ecba 100644 --- a/src/browser/base/content/browser-init-js.patch +++ b/src/browser/base/content/browser-init-js.patch @@ -1,11 +1,11 @@ diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js -index 9df41bb3c82919839ee1408aa4d177ea7ee40a56..e37c64fa2c2ea39762be4285a1a7055463ded537 100644 +index 63100defacf66c6b3232b9e0a783a5fd14e3a46a..22b79b021ff0baab4dac602447a124308208c828 100644 --- a/browser/base/content/browser-init.js +++ b/browser/base/content/browser-init.js -@@ -152,13 +152,15 @@ var gBrowserInit = { - elem.setAttribute("skipintoolbarset", "true"); - } - } +@@ -162,13 +162,15 @@ var gBrowserInit = { + elem.setAttribute("skipintoolbarset", "true"); + } + } + ZenCustomizableUI.init(window); for (let area of CustomizableUI.areas) { let type = CustomizableUI.getAreaType(area); @@ -16,10 +16,10 @@ index 9df41bb3c82919839ee1408aa4d177ea7ee40a56..e37c64fa2c2ea39762be4285a1a70554 } } + ZenCustomizableUI.registerToolbarNodes(window); - if (isVerticalTabs) { - // Show the vertical tabs toolbar - setToolbarVisibility( -@@ -253,6 +255,10 @@ var gBrowserInit = { + if (isVerticalTabs) { + // Show the vertical tabs toolbar + setToolbarVisibility( +@@ -287,6 +289,10 @@ var gBrowserInit = { gPrivateBrowsingUI.init(); BrowserSearch.init(); BrowserPageActions.init(); diff --git a/src/browser/base/content/browser-js.patch b/src/browser/base/content/browser-js.patch index 7ead783f1..db2f39965 100644 --- a/src/browser/base/content/browser-js.patch +++ b/src/browser/base/content/browser-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js -index 9a65dcc7ad41ab961907c95338e023b173d4f474..9477e0c115ed3c4a670f1ac63846b6de01bf8b8c 100644 +index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..1f051e8a1e8a58e8bb721196deecfa36f4089dd6 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -32,6 +32,7 @@ ChromeUtils.defineESModuleGetters(this, { @@ -10,7 +10,7 @@ index 9a65dcc7ad41ab961907c95338e023b173d4f474..9477e0c115ed3c4a670f1ac63846b6de DevToolsSocketStatus: "resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs", DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs", -@@ -630,6 +631,15 @@ XPCOMUtils.defineLazyPreferenceGetter( +@@ -632,6 +633,15 @@ XPCOMUtils.defineLazyPreferenceGetter( false ); @@ -26,19 +26,18 @@ index 9a65dcc7ad41ab961907c95338e023b173d4f474..9477e0c115ed3c4a670f1ac63846b6de customElements.setElementCreationCallback("screenshots-buttons", () => { Services.scriptloader.loadSubScript( "chrome://browser/content/screenshots/screenshots-buttons.js", -@@ -3440,6 +3450,11 @@ var XULBrowserWindow = { +@@ -3440,6 +3450,10 @@ var XULBrowserWindow = { AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser); TranslationsParent.onLocationChange(gBrowser.selectedBrowser); + gZenViewSplitter.onLocationChange(gBrowser.selectedBrowser); + ZenWorkspaces.onLocationChange(gBrowser.selectedBrowser); + gZenTabUnloader.onLocationChange(gBrowser.selectedBrowser); -+ gZenGlanceManager.onLocationChange(gBrowser.selectedBrowser); + PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); if (!gMultiProcessBrowser) { -@@ -4435,7 +4450,7 @@ nsBrowserAccess.prototype = { +@@ -4435,7 +4449,7 @@ nsBrowserAccess.prototype = { // Passing a null-URI to only create the content window, // and pass true for aSkipLoad to prevent loading of // about:blank @@ -47,7 +46,7 @@ index 9a65dcc7ad41ab961907c95338e023b173d4f474..9477e0c115ed3c4a670f1ac63846b6de null, aParams, aWhere, -@@ -4443,6 +4458,10 @@ nsBrowserAccess.prototype = { +@@ -4443,6 +4457,10 @@ nsBrowserAccess.prototype = { aName, true ); @@ -58,7 +57,7 @@ index 9a65dcc7ad41ab961907c95338e023b173d4f474..9477e0c115ed3c4a670f1ac63846b6de }, openURIInFrame: function browser_openURIInFrame( -@@ -7281,6 +7300,12 @@ var gDialogBox = { +@@ -7285,6 +7303,12 @@ var gDialogBox = { parentElement.showModal(); this._didOpenHTMLDialog = true; diff --git a/src/browser/base/content/browser-sets-js.patch b/src/browser/base/content/browser-sets-js.patch index be4f74496..78d0fb929 100644 --- a/src/browser/base/content/browser-sets-js.patch +++ b/src/browser/base/content/browser-sets-js.patch @@ -1,13 +1,13 @@ diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js -index 3031278749317d153624c6ccfbcc9d47aaf4089f..e67a8c3b56c01334627350c494b0139638ebf19a 100644 +index 61aef2d420a78fb1910f556b71f6db75a16180ed..a3a1e70bedb760c165c338c28de6f2ee924df8de 100644 --- a/browser/base/content/browser-sets.js +++ b/browser/base/content/browser-sets.js -@@ -245,7 +245,7 @@ document.addEventListener( +@@ -250,7 +250,7 @@ document.addEventListener( } }); - document.getElementById("mainKeyset").addEventListener("command", event => { + document.getElementById("zenKeyset").addEventListener("command", event => { - switch (event.target.id) { - case "goHome": - BrowserCommands.home(); + const SIDEBAR_REVAMP_PREF = "sidebar.revamp"; + const SIDEBAR_REVAMP_ENABLED = Services.prefs.getBoolPref( + SIDEBAR_REVAMP_PREF, diff --git a/src/browser/base/content/browser-xhtml.patch b/src/browser/base/content/browser-xhtml.patch index de5a5be77..248781b38 100644 --- a/src/browser/base/content/browser-xhtml.patch +++ b/src/browser/base/content/browser-xhtml.patch @@ -1,17 +1,17 @@ diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml -index ca8953f3604f4f70de76576964af5f3c733f17a0..a2731ef6d4392301217cd05f6583e4814f1118e2 100644 +index 891c067d6ad718061c410c04743bed25744504b5..b7ded9691225068b23e4d6a5113242d0c0f5f842 100644 --- a/browser/base/content/browser.xhtml +++ b/browser/base/content/browser.xhtml -@@ -101,6 +101,8 @@ +@@ -99,6 +99,8 @@ - + +#include zen-preloaded.inc.xhtml + # All JS files which are needed by browser.xhtml and other top level windows to # support MacOS specific features *must* go into the global-scripts.inc file so # that they can be shared with macWindow.inc.xhtml. -@@ -145,6 +147,7 @@ +@@ -143,6 +145,7 @@ window.addEventListener("DOMContentLoaded", gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true }); @@ -19,7 +19,7 @@ index ca8953f3604f4f70de76576964af5f3c733f17a0..a2731ef6d4392301217cd05f6583e481 # All sets except for popupsets (commands, keys, and stringbundles) -@@ -166,9 +169,12 @@ +@@ -164,9 +167,13 @@ @@ -27,6 +27,7 @@ index ca8953f3604f4f70de76576964af5f3c733f17a0..a2731ef6d4392301217cd05f6583e481 - -#include browser-box.inc.xhtml + ++ + #include navigator-toolbox.inc.xhtml + + diff --git a/src/browser/base/content/main-popupset-inc-xhtml.patch b/src/browser/base/content/main-popupset-inc-xhtml.patch index b1423139c..1ebbd1437 100644 --- a/src/browser/base/content/main-popupset-inc-xhtml.patch +++ b/src/browser/base/content/main-popupset-inc-xhtml.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml -index 1fb595272a184f9a40f56f87d86232e3324f7750..8dd0f0ff856be524a5fa27fb8c6180c1fe058134 100644 +index e5f3424eaeeec0ba552537f167dd99e912216d94..4bdfcdb23fe9c44ad3d4de273c64f4cc31cb4034 100644 --- a/browser/base/content/main-popupset.inc.xhtml +++ b/browser/base/content/main-popupset.inc.xhtml -@@ -144,6 +144,10 @@ +@@ -181,6 +181,10 @@ hidden="true" tabspecific="true" aria-labelledby="editBookmarkPanelTitle"> @@ -13,17 +13,17 @@ index 1fb595272a184f9a40f56f87d86232e3324f7750..8dd0f0ff856be524a5fa27fb8c6180c1 -@@ -169,6 +173,7 @@ +@@ -206,6 +210,7 @@ class="footer-button"/> -+ ++ -@@ -454,6 +459,8 @@ +@@ -535,6 +540,8 @@ - #include popup-notifications.inc + #include popup-notifications.inc.xhtml +#include zen-popupset.inc.xhtml + diff --git a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch index 26f8253e4..0f75a3ff5 100644 --- a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch +++ b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml -index 00391af141d9015fe5839534e5e6b22a91ba65d9..17d8ac96986e698b09033b870c24fc2f61c47a05 100644 +index a0a382643a2f74b6d789f3641ef300eed202d5e9..7a2be5fe6cdecb771ce3326008085ae402a465de 100644 --- a/browser/base/content/navigator-toolbox.inc.xhtml +++ b/browser/base/content/navigator-toolbox.inc.xhtml @@ -2,7 +2,7 @@ @@ -29,23 +29,30 @@ index 00391af141d9015fe5839534e5e6b22a91ba65d9..17d8ac96986e698b09033b870c24fc2f