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