diff --git a/.eslintrc.yml b/.eslintrc.yml
deleted file mode 100644
index f2fc834..0000000
--- a/.eslintrc.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-extends: eslint-config-dmitmel/presets/node
-env:
- browser: true
-plugins: ["prettier"]
-
-settings:
- node:
- tryExtensions: [".tsx", ".ts", ".jsx", ".js", ".json", ".node"]
-
-ignorePatterns: ["src/arrpc/**"]
-
-rules:
- prettier/prettier:
- - error
- node/no-unsupported-features/es-syntax:
- - error
- - ignores:
- - modules
-
-overrides:
- - files: "**/*.ts*"
- extends:
- - eslint-config-dmitmel/presets/typescript-addon
- parserOptions:
- project: "tsconfig.json"
- sourceType: module
- rules:
- eqeqeq: 0
- require-await: 0
- no-undefined: 0
- node/no-unsupported-features/es-syntax: 0
- "@typescript-eslint/no-dynamic-delete": 0
- "@typescript-eslint/no-explicit-any": 0
- "@typescript-eslint/no-non-null-asserted-optional-chain": 0
- "@typescript-eslint/naming-convention": 0
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 86a39e8..ca9e9b4 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -3,7 +3,7 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
- interval: "daily"
+ interval: "weekly"
- package-ecosystem: npm
directory: "/"
schedule:
diff --git a/.github/release.md b/.github/release.md
index 693ce20..4d274f0 100644
--- a/.github/release.md
+++ b/.github/release.md
@@ -1,3 +1,4 @@
# Thanks for checking out ArmCord dev builds!
-These builds are unstable and not ready for full release. They contain new experimental features and changes. We provide no official support for them.
+
+These builds are unstable and not ready for full release. They contain new experimental features and changes. We provide no official support for them.
Make sure to join our [Discord server](https://discord.gg/uaW5vMY3V6) to share opinions, or to chat with ArmCord developers!
diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml
index b47ef8e..6e43f9f 100644
--- a/.github/workflows/dev.yml
+++ b/.github/workflows/dev.yml
@@ -1,185 +1,147 @@
name: Dev build
on:
- push:
- branches:
- - dev
+ push:
+ branches:
+ - dev
env:
- FORCE_COLOR: true
+ FORCE_COLOR: true
jobs:
- build-linux:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
+ build-linux:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json
+ - uses: pnpm/action-setup@v4
- - name: Use Node.js 18
- uses: actions/setup-node@v2
- with:
- node-version: 18
- cache: "pnpm"
+ - name: Use Node.js 22
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: "pnpm"
- - name: Install Node dependencies
- run: pnpm install -g cargo-cp-artifact && pnpm install
+ - name: Install Node dependencies
+ run: pnpm i
- - name: Install Electron-Builder
- run: pnpm install -g electron-builder
+ - name: Build
+ run: pnpm run build && pnpm electron-builder --linux zip
- - name: Build
- run: npm run build && electron-builder --linux zip && electron-builder --arm64 --linux zip
+ - name: Upload artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: ArmCordLinux
+ path: dist/armcord-*.zip
- - name: Upload artifact
- uses: actions/upload-artifact@v2
- with:
- name: ArmCordLinux.zip
- path: dist/ArmCord-3.3.0.zip
- - name: Upload artifact
- uses: actions/upload-artifact@v2
- with:
- name: ArmCordLinuxArm64.zip
- path: dist/ArmCord-3.3.0-arm64.zip
- build-snap:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
+ build-linux-arm:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json
+ - uses: pnpm/action-setup@v4
- - name: Use Node.js 18
- uses: actions/setup-node@v2
- with:
- node-version: 18
- cache: "pnpm"
+ - name: Use Node.js 22
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: "pnpm"
- - name: Install Node dependencies
- run: pnpm install -g cargo-cp-artifact && pnpm install
+ - name: Install Node dependencies
+ run: pnpm i
- - name: Install Electron-Builder
- run: pnpm install -g electron-builder
+ - name: Build
+ run: pnpm run build && pnpm electron-builder --arm64 --linux zip
- - name: Build
- run: npm run build && electron-builder --linux snap --config.snap.grade=devel
+ - name: Upload artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: ArmCordLinuxArm64
+ path: dist/armcord-*-arm64.zip
- - uses: snapcore/action-publish@v1
- env:
- SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
- with:
- snap: dist/ArmCord_3.3.0_amd64.snap
- release: edge
- build-windows:
- runs-on: windows-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
+ build-windows:
+ runs-on: windows-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json
+ - uses: pnpm/action-setup@v4
- - name: Use Node.js 18
- uses: actions/setup-node@v2
- with:
- node-version: 18
- cache: "pnpm"
+ - name: Use Node.js 22
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: "pnpm"
- - name: Install Node dependencies
- run: pnpm install -g cargo-cp-artifact && pnpm install
+ - name: Install Node dependencies
+ run: pnpm i
- - name: Install Electron-Builder
- run: pnpm install -g electron-builder
+ - name: Build
+ run: pnpm run build && pnpm electron-builder --windows zip
- - name: Build
- run: npm run build && electron-builder --windows zip
+ - name: Upload artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: ArmCordWindows
+ path: dist/armcord-3.3.0-win.zip
- - name: Upload artifact
- uses: actions/upload-artifact@v2
- with:
- name: ArmCordWindows.zip
- path: dist/ArmCord-3.3.0-win.zip
- build-windowsOnARM:
- runs-on: windows-latest
- steps:
- - uses: actions/setup-node@v3
- with:
- node-version: '18'
+ build-windows-arm:
+ runs-on: windows-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
- - name: Checkout code
- uses: actions/checkout@v2
+ - uses: actions/setup-node@v4
+ with:
+ node-version: "22"
- - name: Set architecture
- run: set npm_config_arch=arm64
+ - name: Set architecture
+ run: set npm_config_arch=arm64
- - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json
+ - uses: pnpm/action-setup@v4 # Install pnpm using packageManager key in package.json
- - name: Install Node dependencies
- run: pnpm install -g cargo-cp-artifact && pnpm install
+ - name: Install Node dependencies
+ run: pnpm i
- - name: Install Electron-Builder
- run: pnpm install -g electron-builder
+ - name: Build
+ run: pnpm run build && pnpm electron-builder --windows zip --arm64
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: Build
- run: npm run build && electron-builder --windows zip --arm64
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: Upload artifact
- uses: actions/upload-artifact@v2
- with:
- name: ArmCordWindowsArm64.zip
- path: dist\ArmCord-3.3.0-arm64-win.zip
+ - name: Upload artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: ArmCordWindowsArm64
+ path: dist\armcord-3.3.0-arm64-win.zip
- release:
- runs-on: ubuntu-latest
- needs: [build-linux, build-windows, build-windowsOnARM]
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
+ release:
+ runs-on: ubuntu-latest
+ needs: [build-linux, build-windows, build-windows-arm, build-linux-arm]
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
- - uses: actions/download-artifact@v2
- with:
- name: ArmCordWindows.zip
- path: windows
+ - uses: actions/download-artifact@v4
+ with:
+ path: release-files
- - uses: actions/download-artifact@v2
- with:
- name: ArmCordLinux.zip
- path: linux
+ - name: Get short commit hash
+ id: vars
+ run: echo "sha_short=$(git rev-parse --short "$GITHUB_SHA")" >> $GITHUB_OUTPUT
- - uses: actions/download-artifact@v2
- with:
- name: ArmCordLinuxArm64.zip
- path: linux
- - uses: actions/download-artifact@v2
- with:
- name: ArmCordWindowsArm64.zip
- path: windows
+ - run: gh release delete devbuild -y --cleanup-tag
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: Get some values needed for the release
- id: vars
- shell: bash
- run: |
- echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
-
- - uses: dev-drprasad/delete-tag-and-release@v0.2.1
- with:
- delete_release: true
- tag_name: devbuild
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Create the release
- uses: softprops/action-gh-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- tag_name: devbuild
- name: Dev Build ${{ steps.vars.outputs.sha_short }}
- draft: false
- prerelease: true
- body_path: .github/release.md
- files: |
- linux/ArmCord-3.3.0.zip
- linux/ArmCord-3.3.0-arm64.zip
- windows/ArmCord-3.3.0-win.zip
- windows/ArmCord-3.3.0-arm64-win.zip
+ - name: Create Release
+ uses: ncipollo/release-action@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ bodyFile: .github/release.md
+ generateReleaseNotes: true
+ name: Dev Build ${{ steps.vars.outputs.sha_short }}
+ prerelease: true
+ tag: devbuild
+ artifacts: "release-files/**/*.zip"
diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml
new file mode 100644
index 0000000..1663a6a
--- /dev/null
+++ b/.github/workflows/eslint.yml
@@ -0,0 +1,32 @@
+name: Lint
+
+on:
+ push:
+ branches:
+ - "*"
+ pull_request:
+ branches:
+ - "*"
+
+jobs:
+ run-linters:
+ name: Run linters
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Check out Git repository
+ uses: actions/checkout@v4
+
+ - uses: pnpm/action-setup@v4
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: pnpm
+
+ - name: Install Node.js dependencies
+ run: pnpm install
+
+ - name: Run linters
+ run: pnpm run lint
diff --git a/.github/workflows/stable.yml b/.github/workflows/stable.yml
index d760688..fdd400a 100644
--- a/.github/workflows/stable.yml
+++ b/.github/workflows/stable.yml
@@ -1,11 +1,11 @@
name: Release build
-on:
- push:
- branches:
- - stable
+on:
+ push:
+ branches:
+ - stable
env:
- FORCE_COLOR: true
+ FORCE_COLOR: true
jobs:
build-linux:
@@ -13,69 +13,67 @@ jobs:
steps:
- name: Checkout code
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json
+ - uses: pnpm/action-setup@v4
- - name: Use Node.js 18
- uses: actions/setup-node@v2
+ - name: Use Node.js 22
+ uses: actions/setup-node@v4
with:
- node-version: 18
+ node-version: 22
cache: "pnpm"
- name: Install Node dependencies
- run: pnpm install -g cargo-cp-artifact && pnpm install
-
- - name: Install Electron-Builder
- run: pnpm install -g electron-builder
+ run: pnpm i -g cargo-cp-artifact electron-builder && pnpm i
- name: Build
- run: npm run build && electron-builder --linux && electron-builder --arm64 --linux && electron-builder --armv7l --linux
+ run: pnpm run build && electron-builder --linux && electron-builder --arm64 --linux && electron-builder --armv7l --linux
env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
- name: List all files in the dist directory
run: ls -l dist
+
- name: Delete unpacked builds
run: rm -rf dist/linux-unpacked && rm -rf dist/linux-arm64-unpacked && rm -rf dist/linux-armv7l-unpacked
+
- name: Upload artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v4
with:
name: ArmCordLinux
path: dist/
-
build-mac:
runs-on: macos-latest
steps:
- name: Checkout code
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json
+ - uses: pnpm/action-setup@v4
- - name: Use Node.js 18
- uses: actions/setup-node@v2
+ - name: Use Node.js 22
+ uses: actions/setup-node@v4
with:
- node-version: 18
+ node-version: 22
cache: "pnpm"
- name: Install Node dependencies
- run: pnpm install -g cargo-cp-artifact && pnpm install
-
- - name: Install Electron-Builder
- run: pnpm install -g electron-builder
+ run: pnpm i -g cargo-cp-artifact electron-builder && pnpm i
- name: Build
- run: npm run build && electron-builder --macos --x64 --arm64
+ run: pnpm run build && electron-builder --macos --x64 --arm64
env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
- name: List all files in the dist directory
run: ls -l dist
+
- name: Delete unpacked builds
run: rm -rf dist/macos-unpacked
- name: Upload artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v4
with:
name: ArmCordMac
path: dist/
@@ -84,62 +82,62 @@ jobs:
runs-on: windows-latest
steps:
- name: Checkout code
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json
+ - uses: pnpm/action-setup@v4
- - name: Use Node.js 18
- uses: actions/setup-node@v2
+ - name: Use Node.js 22
+ uses: actions/setup-node@v4
with:
- node-version: 18
+ node-version: 22
cache: "pnpm"
- name: Install Node dependencies
- run: pnpm install -g cargo-cp-artifact && pnpm install
-
- - name: Install Electron-Builder
- run: pnpm install -g electron-builder
+ run: pnpm i -g cargo-cp-artifact electron-builder && pnpm i
- name: Build
- run: npm run build && electron-builder --windows
+ run: pnpm run build && electron-builder --windows
env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
- name: Delete unpacked builds
run: Remove-Item -LiteralPath ".\dist\win-unpacked" -Force -Recurse
+
- name: Upload artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v4
with:
name: ArmCordWindows
path: dist/
+
build-windowsOnARM:
runs-on: windows-latest
steps:
- - uses: actions/setup-node@v3
- with:
- node-version: '18'
-
- name: Checkout code
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
+
+ - uses: pnpm/action-setup@v4
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version: "22"
+ cache: "pnpm"
- name: Set architecture
run: set npm_config_arch=arm64
- - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json
-
- name: Install Node dependencies
- run: pnpm install -g cargo-cp-artifact && pnpm install
-
- - name: Install Electron-Builder
- run: pnpm install -g electron-builder
+ run: pnpm install -g cargo-cp-artifact electron-builder && pnpm install
- name: Build
- run: npm run build && electron-builder --windows --arm64
+ run: pnpm run build && electron-builder --windows --arm64
env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
- name: Delete unpacked builds
run: Remove-Item -LiteralPath ".\dist\win-arm64-unpacked" -Force -Recurse
+
- name: Upload artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v4
with:
name: ArmCordWindowsArm64
path: dist/
@@ -148,86 +146,93 @@ jobs:
needs: [build-linux, build-mac, build-windows, build-windowsOnARM]
steps:
- - uses: actions/download-artifact@v2
+ - uses: actions/download-artifact@v4
with:
name: ArmCordMac
path: macos
- - uses: actions/download-artifact@v2
+
+ - uses: actions/download-artifact@v4
with:
name: ArmCordWindows
path: windows
- - uses: actions/download-artifact@v2
+
+ - uses: actions/download-artifact@v4
with:
name: ArmCordWindowsArm64
path: windows
- - uses: actions/download-artifact@v2
+
+ - uses: actions/download-artifact@v4
with:
name: ArmCordLinux
path: linux
+
- name: ls
run: ls
+
- name: Delete unwanted directories
run: rm -rf {linux,macos,windows}/*/
- rm -rf {linux,macos,windows}/.icon*
- rm -rf {linux,macos,windows}/builder-debug.yml
+ rm -rf {linux,macos,windows}/.icon*
+ rm -rf {linux,macos,windows}/builder-debug.yml
+
- name: ls dirs
- run: ls linux && ls macos && ls windows
+ run: ls linux && ls macos && ls windows
+
- name: Get some values needed for the release
id: vars
shell: bash
run: |
- echo "::set-output name=releaseTag::$(git describe --tags --abbrev=0)"
+ echo "::set-output name=releaseTag::$(git describe --tags --abbrev=0)"
- name: Create Release
- uses: actions/github-script@v2
+ uses: actions/github-script@v7
with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- console.log('environment', process.versions);
-
- const fs = require('fs').promises;
-
- const { repo: { owner, repo }, sha } = context;
- console.log({ owner, repo, sha });
+ github-token: ${{secrets.GITHUB_TOKEN}}
+ script: |
+ console.log('environment', process.versions);
- const release = await github.repos.createRelease({
- owner, repo,
- tag_name: process.env.releaseTag,
- draft: true,
- target_commitish: sha
- });
+ const fs = require('fs').promises;
- console.log('created release', { release });
-
- for (let file of await fs.readdir('linux')) {
- // do whatever filtering you want here, I'm just uploading all the files
- console.log('uploading', file);
- await github.repos.uploadReleaseAsset({
- owner, repo,
- release_id: release.data.id,
- name: file,
- data: await fs.readFile(`./linux/${file}`)
- });
- }
- for (let file of await fs.readdir('windows')) {
- // do whatever filtering you want here, I'm just uploading all the files
- console.log('uploading', file);
- await github.repos.uploadReleaseAsset({
- owner, repo,
- release_id: release.data.id,
- name: file,
- data: await fs.readFile(`./windows/${file}`)
- });
- }
- for (let file of await fs.readdir('macos')) {
- // do whatever filtering you want here, I'm just uploading all the files
- console.log('uploading', file);
- await github.repos.uploadReleaseAsset({
- owner, repo,
- release_id: release.data.id,
- name: file,
- data: await fs.readFile(`./macos/${file}`)
- });
- }
+ const { repo: { owner, repo }, sha } = context;
+ console.log({ owner, repo, sha });
+
+ const release = await github.repos.createRelease({
+ owner, repo,
+ tag_name: process.env.releaseTag,
+ draft: true,
+ target_commitish: sha
+ });
+
+ console.log('created release', { release });
+
+ for (let file of await fs.readdir('linux')) {
+ // do whatever filtering you want here, I'm just uploading all the files
+ console.log('uploading', file);
+ await github.repos.uploadReleaseAsset({
+ owner, repo,
+ release_id: release.data.id,
+ name: file,
+ data: await fs.readFile(`./linux/${file}`)
+ });
+ }
+ for (let file of await fs.readdir('windows')) {
+ // do whatever filtering you want here, I'm just uploading all the files
+ console.log('uploading', file);
+ await github.repos.uploadReleaseAsset({
+ owner, repo,
+ release_id: release.data.id,
+ name: file,
+ data: await fs.readFile(`./windows/${file}`)
+ });
+ }
+ for (let file of await fs.readdir('macos')) {
+ // do whatever filtering you want here, I'm just uploading all the files
+ console.log('uploading', file);
+ await github.repos.uploadReleaseAsset({
+ owner, repo,
+ release_id: release.data.id,
+ name: file,
+ data: await fs.readFile(`./macos/${file}`)
+ });
+ }
env:
- releaseTag: ${{ steps.vars.outputs.releaseTag }}
+ releaseTag: ${{ steps.vars.outputs.releaseTag }}
diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml
index 4aae935..9d8e518 100644
--- a/.github/workflows/winget.yml
+++ b/.github/workflows/winget.yml
@@ -1,13 +1,13 @@
name: Publish to WinGet
on:
- release:
- types: [released]
+ release:
+ types: [released]
jobs:
- publish:
- runs-on: ubuntu-latest
- steps:
- - uses: vedantmgoyal2009/winget-releaser@v2
- with:
- identifier: ArmCord.ArmCord
- token: ${{ secrets.WINGET_TOKEN }}
+ publish:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: vedantmgoyal2009/winget-releaser@v2
+ with:
+ identifier: ArmCord.ArmCord
+ token: ${{ secrets.WINGET_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 97c3499..4d1d86c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@ dist
ts-out/
ts-out
package-lock.json
+.pnpm-store
\ No newline at end of file
diff --git a/.hooks/pre-commit b/.hooks/pre-commit
index 659139f..e21d833 100755
--- a/.hooks/pre-commit
+++ b/.hooks/pre-commit
@@ -1,5 +1,5 @@
#!/bin/sh
set -e
-npm run format
+pnpm run format
git add -A
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..cea5430
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,5 @@
+{
+ "recommendations": [
+ "ExodiusStudios.comment-anchors"
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 7a73a41..89d6efb 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,2 +1,21 @@
{
+ "cSpell.words": [
+ "armcord",
+ "armcordinternal",
+ "arrpc",
+ "Autogain",
+ "clientmod",
+ "copyfiles",
+ "Ducko",
+ "modloader",
+ "nsis",
+ "smartfridge",
+ "smartfrigde",
+ "togglefullscreen",
+ "unmaximize",
+ "vaapi"
+ ],
+ "cSpell.ignorePaths": [
+ "assets/lang"
+ ]
}
\ No newline at end of file
diff --git a/README.md b/README.md
index e29f222..f470c3a 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,17 @@
![](https://armcord.app/logo.png)
-
ArmCord is a custom client designed to enhance your Discord experience while keeping everything lightweight.
+
ArmCord is a custom client designed to enhance your Discord experience while keeping everything lightweight.
# Features
-- **Standalone client**
+- **Standalone client**
ArmCord is built as a standalone client and doesn't rely on the original Discord client in any way.
- **Various mods built-in**
-
+
Enjoy [Vencord](https://github.com/Vendicated/Vencord), [Shelter](https://github.com/uwu/shelter) and their many features, or have a more vanilla experience, it's your choice!
- **Themes**
@@ -25,7 +25,7 @@
- **Supports Rich Presence**
Unlike other clients, ArmCord supports rich presence (game activity) out of the box thanks to [arRPC](https://arrpc.openasar.dev).
-
+
- **Mobile support**
ArmCord has **experimental** mobile support for phones running Linux such as the PinePhone. While this is still far from an ideal solution, we're slowly trying to improve it.
@@ -34,7 +34,6 @@
ArmCord is using a newer build of Electron than the stock Discord app. This means you can have a much more stable and secure experience, along with slightly better performance.
-
- **Cross-platform support!**
ArmCord was originally created for ARM64 Linux devices since Discord doesn't support them. We soon decided to support every platform that [Electron supports](https://github.com/electron/electron#platform-support)!
@@ -42,9 +41,11 @@
# How to run/install it?
## Packaging status
+
[![Packaging status](https://repology.org/badge/vertical-allrepos/armcord.svg)](https://repology.org/project/armcord/versions)
### Windows
+
@@ -52,106 +53,146 @@
If you're using an older version of Windows, you need to use [pre-built installers](https://www.armcord.app/download).
### Flatpak
+
### Debian, Ubuntu and Raspbian repository
+
ArmCord is available on our official repositories for `apt` package manager. By using this method you'll receive automatic updates and get all the dependencies. Run the following commands to install ArmCord from them:
+
```sh
curl -fsSL https://apt.armcord.app/public.gpg | sudo gpg --dearmor -o /usr/share/keyrings/armcord.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/armcord.gpg] https://apt.armcord.app/ stable main" | sudo tee /etc/apt/sources.list.d/armcord.list
sudo apt update
sudo apt install armcord
```
+
If you previously used old ArmCord apt repo, here's how you can remove it:
+
```sh
sudo rm /etc/apt/sources.list.d/armcord.list
sudo rm /usr/share/keyrings/armcord.gpg
sudo apt update
```
+
### Snap package
+
ArmCord is also available on the Snap store [here](https://snapcraft.io/armcord).
Similar to `armcord-git` on AUR, you can install the latest dev builds through snaps by running this command:
+
```shell
sudo snap install armcord --channel=latest/edge
```
+
Snapd will automatically update the app including developer builds.
+
### Winget Package
+
ArmCord is also available on the [winget-pkgs](https://github.com/microsoft/winget-pkgs) repository:
-```
+
+```ps1
winget install ArmCord.ArmCord
```
+
### Scoop package
+
ArmCord is also available on [Scoop extras](https://github.com/ScoopInstaller/Extras) repo:
-```
+
+```ps1
scoop bucket add extras
```
-```
+
+```ps1
scoop install armcord
```
+
### AUR Package
+
ArmCord is also available on the Arch User Repository (AUR):
+
- [armcord-bin](https://aur.archlinux.org/packages/armcord-bin) - ArmCord Release ~ Static binary from release, stable release only
+
- [armcord-git](https://aur.archlinux.org/packages/armcord-git) - ArmCord Dev ~ Latest devbuild built from source (takes ~1 minute) using the system electron
Install it via an AUR helper tool like `yay`.
**Example:** `yay -S armcord-bin`
+
### Homebrew repository
-ArmcCord also has a homebrew repository
-```
+
+ArmCord also has a homebrew repository
+
+```zsh
brew tap armcord/armcord
```
-```
+
+```zsh
brew install --cask armcord
```
+
### FreeBSD
+
You can also get ArmCord running on FreeBSD by following [these instructions](https://gist.github.com/axyiee/4d29c982ac85d5d26f98a51040b5de37).
+
### Pi-Apps
+
ArmCord is also available in [Pi-Apps](https://github.com/Botspot/pi-apps).
[![badge](https://github.com/Botspot/pi-apps/blob/master/icons/badge.png?raw=true)](https://github.com/Botspot/pi-apps)
### Pre-built binaries:
+
Check the **releases tab** for precompiled packages for Linux, Windows, and Mac OS. Alternatively, use our Sourceforge mirror.
### Compiling:
- Alternatively, you can run ArmCord from source ([NodeJS](https://nodejs.dev), [pnpm](https://pnpm.io/installation#using-npm), and [rust toolchain](https://www.rust-lang.org/tools/install) are required):
- 1. Clone ArmCord repo: `git clone https://github.com/ArmCord/ArmCord.git`
- 2. Run `pnpm install` to install dependencies
- 3. Build with `npm run build`
- 4. Compile/Package with `npm run package`
+ Alternatively, you can run ArmCord from source ([NodeJS](https://nodejs.dev), [pnpm](https://pnpm.io/installation#using-npm), and [rust toolchain](https://www.rust-lang.org/tools/install) are required):
+
+ 1. Clone ArmCord repo: `git clone https://github.com/ArmCord/ArmCord.git`
+ 2. Run `pnpm install` to install dependencies
+ 3. Build with `pnpm run build`
+ 4. Compile/Package with `pnpm run package`
# FAQ
+
## Do you have a support Discord?
[![](https://dcbadge.vercel.app/api/server/TnhxcqynZ2)](https://discord.gg/TnhxcqynZ2)
-## Will I get banned for using this?
+
+## Will I get banned for using this?
+
- You are breaking [Discord ToS](https://discord.com/terms#software-in-discord%E2%80%99s-services) by using ArmCord, but no one has been banned from using it or any of the client mods included.
## Can I use this on anything other than ARM?
+
- Yes! ArmCord should work normally under Windows, MacOS, and Linux as long as it has Electron support.
## How can I access the settings?
+
- Open Discord settings and there should be a button `ArmCord Settings` button with a white Discord icon, you can also right click on the tray icon and click `Open Settings`
-## How does this work?
+## How does this work?
+
- We are using the official web app and wrapping it up in Electron. While you may think this is lame and done like thousands of times before, what makes us unique is that we actually strive for creating a customized experience. You can very easily load themes and mods with no installers/injectors. You can even make the client have transparency effects and follow the fluent design of Windows! At its core, it's just a simple web wrapper, however, we applied many patches to make this work well for you <3
-## Why is macOS support lacking?
+## Why is MacOS support lacking?
+
- Due to me not owning any macOS device, I can't easily debug/test or do anything related to it. Of course, VMs and Hackintosh machines exist but from my experience, these are unreliable or very time-consuming to set up and maintain. While ArmCord "works" on macOS you may encounter weird issues or inconsistencies with other apps in terms of how they behave (for example macOS lack of tray).
## Where can I find the source code?
+
- The source code is on [GitHub](https://github.com/ArmCord/ArmCord/).
## Where can I translate this?
+
- Translations are done using our [Weblate page](https://hosted.weblate.org/projects/armcord/armcord/).
# Credits
+
- [ArmCord UI design, branding, and a few features](https://github.com/kckarnige)
- [OpenAsar](https://github.com/GooseMod/OpenAsar)
- [arRPC (for Rich Presence)](https://github.com/OpenAsar/arrpc)
@@ -162,4 +203,4 @@ ArmCord is also available in [Pi-Apps](https://github.com/Botspot/pi-apps).
- (Pre v3.0.0) [custom-electron-titlebar](https://github.com/AlexTorresSk/custom-electron-titlebar)
- [electron-builder](https://electron.build)
-Discord is trademark of Discord Inc. ArmCord is not affiliated with or endorsed by Discord Inc.
+Discord is trademark of Discord Inc. ArmCord is not affiliated with or endorsed by Discord Inc.
diff --git a/assets/Square150x150Logo.png b/assets/Square150x150Logo.png
index 2cadefa..f5a207a 100644
Binary files a/assets/Square150x150Logo.png and b/assets/Square150x150Logo.png differ
diff --git a/assets/Square44x44Logo.png b/assets/Square44x44Logo.png
index 17cbf7b..7ff2ffb 100644
Binary files a/assets/Square44x44Logo.png and b/assets/Square44x44Logo.png differ
diff --git a/assets/StoreLogo.png b/assets/StoreLogo.png
index 324fdce..ff28e52 100644
Binary files a/assets/StoreLogo.png and b/assets/StoreLogo.png differ
diff --git a/assets/Wide310x150Logo.png b/assets/Wide310x150Logo.png
index d34d730..a1e623d 100644
Binary files a/assets/Wide310x150Logo.png and b/assets/Wide310x150Logo.png differ
diff --git a/assets/ac_black_plug.png b/assets/ac_black_plug.png
index 4486366..15fe2ec 100644
Binary files a/assets/ac_black_plug.png and b/assets/ac_black_plug.png differ
diff --git a/assets/ac_black_plug_hollow.png b/assets/ac_black_plug_hollow.png
index c824274..82e7f2d 100644
Binary files a/assets/ac_black_plug_hollow.png and b/assets/ac_black_plug_hollow.png differ
diff --git a/assets/ac_icon.png b/assets/ac_icon.png
index 324fdce..ff28e52 100644
Binary files a/assets/ac_icon.png and b/assets/ac_icon.png differ
diff --git a/assets/ac_icon_transparent.png b/assets/ac_icon_transparent.png
index 0fde29f..b2693c4 100644
Binary files a/assets/ac_icon_transparent.png and b/assets/ac_icon_transparent.png differ
diff --git a/assets/ac_plug_colored.png b/assets/ac_plug_colored.png
index 7a96645..8083841 100644
Binary files a/assets/ac_plug_colored.png and b/assets/ac_plug_colored.png differ
diff --git a/assets/ac_white_plug.png b/assets/ac_white_plug.png
index 1af1313..e0d0ed0 100644
Binary files a/assets/ac_white_plug.png and b/assets/ac_white_plug.png differ
diff --git a/assets/screenshot-1920x1080.png b/assets/screenshot-1920x1080.png
index 92a5565..46a5d50 100644
Binary files a/assets/screenshot-1920x1080.png and b/assets/screenshot-1920x1080.png differ
diff --git a/build/appx/Square150x150Logo.png b/build/appx/Square150x150Logo.png
index d54a96c..1b54d95 100644
Binary files a/build/appx/Square150x150Logo.png and b/build/appx/Square150x150Logo.png differ
diff --git a/build/appx/Square44x44Logo.png b/build/appx/Square44x44Logo.png
index 4f033c3..549e305 100644
Binary files a/build/appx/Square44x44Logo.png and b/build/appx/Square44x44Logo.png differ
diff --git a/build/appx/Wide310x150Logo.png b/build/appx/Wide310x150Logo.png
index d34d730..a1e623d 100644
Binary files a/build/appx/Wide310x150Logo.png and b/build/appx/Wide310x150Logo.png differ
diff --git a/eslint.config.js b/eslint.config.js
new file mode 100644
index 0000000..27235c6
--- /dev/null
+++ b/eslint.config.js
@@ -0,0 +1,48 @@
+/* eslint-disable n/no-unpublished-import */
+// @ts-check
+
+import eslint from "@eslint/js";
+import tseslint from "typescript-eslint";
+import prettier from "eslint-plugin-prettier";
+import n from "eslint-plugin-n";
+
+export default tseslint.config(
+ eslint.configs.recommended,
+ {ignores: ["ts-out", "src/discord/content/js"]}, // REVIEW - investigate discord files a bit before finalizing this - I think these are meant to be run in the app console, and this would be difficult to type
+ ...tseslint.configs.recommendedTypeChecked,
+ ...tseslint.configs.stylisticTypeChecked,
+ n.configs["flat/recommended"],
+ {
+ settings: {
+ n: {
+ allowModules: ["electron"],
+ tryExtensions: [".tsx", ".ts", ".jsx", ".js", ".json", ".node", ".d.ts"]
+ }
+ },
+ plugins: {
+ prettier,
+ n
+ },
+ languageOptions: {
+ parserOptions: {
+ project: true,
+ tsconfigRootDir: import.meta.dirname
+ }
+ },
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ rules: {
+ "no-constant-binary-expression": 0,
+ "n/no-unsupported-features/node-builtins": 1,
+ "@typescript-eslint/no-unused-vars": [
+ 2,
+ {
+ argsIgnorePattern: "^_",
+ varsIgnorePattern: "^_",
+ caughtErrorsIgnorePattern: "^_"
+ }
+ ],
+ // @ts-expect-error - Don't worry about it
+ ...prettier.configs.recommended.rules
+ }
+ }
+);
diff --git a/package.json b/package.json
index a6860cf..a5d7812 100644
--- a/package.json
+++ b/package.json
@@ -1,23 +1,23 @@
{
- "name": "ArmCord",
+ "name": "armcord",
"version": "3.3.0",
"description": "ArmCord is a custom client designed to enhance your Discord experience while keeping everything lightweight.",
"main": "ts-out/main.js",
"engines": {
- "node": ">=18.0.0"
+ "node": ">=22"
},
"scripts": {
"build": "tsc && copyfiles -u 1 src/**/*.html src/**/**/*.css src/**/**/*.js ts-out/ && copyfiles package.json ts-out/ && copyfiles assets/**/** ts-out/",
"watch": "tsc -w",
- "start": "npm run build && electron ./ts-out/main.js",
- "startThemeManager": "npm run build && electron ./ts-out/main.js themes",
- "startKeybindManager": "npm run build && electron ./ts-out/main.js keybinds",
- "startWayland": "npm run build && electron ./ts-out/main.js --ozone-platform-hint=auto --enable-features=WebRTCPipeWireCapturer,WaylandWindowDecorations --disable-gpu",
- "package": "npm run build && electron-builder",
- "packageQuick": "npm run build && electron-builder --dir",
+ "start": "pnpm run build && electron ./ts-out/main.js",
+ "startThemeManager": "pnpm run build && electron ./ts-out/main.js themes",
+ "startKeybindManager": "pnpm run build && electron ./ts-out/main.js keybinds",
+ "startWayland": "pnpm run build && electron ./ts-out/main.js --ozone-platform-hint=auto --enable-features=WebRTCPipeWireCapturer,WaylandWindowDecorations --disable-gpu",
+ "package": "pnpm run build && electron-builder",
+ "packageQuick": "pnpm run build && electron-builder --dir",
"format": "prettier --write src *.json",
- "lint": "eslint src --ext .js,.jsx,.ts,.tsx --ignore-path .gitignore",
- "CIbuild": "npm run build && electron-builder --linux zip && electron-builder --windows zip && electron-builder --macos zip",
+ "lint": "eslint \"**/*.{ts,tsx,js,jsx}\" .",
+ "CIbuild": "pnpm run build && electron-builder --linux zip && electron-builder --windows zip && electron-builder --macos zip",
"prepare": "git config --local core.hooksPath .hooks/"
},
"repository": {
@@ -32,27 +32,27 @@
},
"homepage": "https://github.com/armcord/armcord#readme",
"devDependencies": {
- "@types/node": "^20.11.1",
- "@types/ws": "^8.5.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
+ "@eslint/js": "^9.4.0",
+ "@types/eslint__js": "^8.42.3",
+ "@types/node": "^20.14.2",
+ "@types/ws": "^8.5.10",
"copyfiles": "^2.4.1",
- "electron": "30.0.5",
- "electron-builder": "^24.13.3",
- "eslint": "^8.40.0",
- "eslint-config-dmitmel": "github:dmitmel/eslint-config-dmitmel",
- "eslint-plugin-node": "^11.1.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.7.1",
- "typescript": "^4.9.3"
+ "electron": "30.1.0",
+ "electron-builder": "25.0.0-alpha.9",
+ "eslint": "^9.4.0",
+ "eslint-plugin-n": "^17.8.1",
+ "eslint-plugin-prettier": "^5.1.3",
+ "prettier": "^3.3.1",
+ "typescript": "^5.4.5",
+ "typescript-eslint": "^7.12.0"
},
"dependencies": {
"arrpc": "github:OpenAsar/arrpc",
- "cross-fetch": "^3.1.5",
+ "cross-fetch": "^4.0.0",
"electron-context-menu": "^4.0.0",
"extract-zip": "^2.0.1",
- "v8-compile-cache": "^2.3.0",
- "ws": "^8.11.0"
+ "v8-compile-cache": "^2.4.0",
+ "ws": "^8.17.0"
},
"build": {
"snap": {
@@ -95,6 +95,6 @@
"applicationId": "smartfrigde.ArmCord"
}
},
- "packageManager": "pnpm@9.1.1",
+ "packageManager": "pnpm@9.2.0",
"package-manager-strict": false
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 02a1a55..a331c2d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -12,8 +12,8 @@ importers:
specifier: github:OpenAsar/arrpc
version: https://codeload.github.com/OpenAsar/arrpc/tar.gz/c62ec6a04c8d870530aa6944257fe745f6c59a24
cross-fetch:
- specifier: ^3.1.5
- version: 3.1.5
+ specifier: ^4.0.0
+ version: 4.0.0(encoding@0.1.13)
electron-context-menu:
specifier: ^4.0.0
version: 4.0.0
@@ -21,51 +21,51 @@ importers:
specifier: ^2.0.1
version: 2.0.1
v8-compile-cache:
- specifier: ^2.3.0
- version: 2.3.0
+ specifier: ^2.4.0
+ version: 2.4.0
ws:
- specifier: ^8.11.0
- version: 8.11.0
+ specifier: ^8.17.0
+ version: 8.17.0
devDependencies:
+ '@eslint/js':
+ specifier: ^9.4.0
+ version: 9.4.0
+ '@types/eslint__js':
+ specifier: ^8.42.3
+ version: 8.42.3
'@types/node':
- specifier: ^20.11.1
- version: 20.11.28
+ specifier: ^20.14.2
+ version: 20.14.2
'@types/ws':
- specifier: ^8.5.3
- version: 8.5.3
- '@typescript-eslint/eslint-plugin':
- specifier: ^5.59.2
- version: 5.59.2(@typescript-eslint/parser@5.59.2(eslint@8.40.0)(typescript@4.9.3))(eslint@8.40.0)(typescript@4.9.3)
- '@typescript-eslint/parser':
- specifier: ^5.59.2
- version: 5.59.2(eslint@8.40.0)(typescript@4.9.3)
+ specifier: ^8.5.10
+ version: 8.5.10
copyfiles:
specifier: ^2.4.1
version: 2.4.1
electron:
- specifier: 30.0.5
- version: 30.0.5
+ specifier: 30.1.0
+ version: 30.1.0
electron-builder:
- specifier: ^24.13.3
- version: 24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
+ specifier: 25.0.0-alpha.9
+ version: 25.0.0-alpha.9(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9))
eslint:
- specifier: ^8.40.0
- version: 8.40.0
- eslint-config-dmitmel:
- specifier: github:dmitmel/eslint-config-dmitmel
- version: https://codeload.github.com/dmitmel/eslint-config-dmitmel/tar.gz/d97129ec35235415c6ae6a42299f55cdbb5d75fd(eslint@8.40.0)
- eslint-plugin-node:
- specifier: ^11.1.0
- version: 11.1.0(eslint@8.40.0)
+ specifier: ^9.4.0
+ version: 9.4.0
+ eslint-plugin-n:
+ specifier: ^17.8.1
+ version: 17.8.1(eslint@9.4.0)
eslint-plugin-prettier:
- specifier: ^4.2.1
- version: 4.2.1(eslint@8.40.0)(prettier@2.7.1)
+ specifier: ^5.1.3
+ version: 5.1.3(@types/eslint@8.56.10)(eslint@9.4.0)(prettier@3.3.1)
prettier:
- specifier: ^2.7.1
- version: 2.7.1
+ specifier: ^3.3.1
+ version: 3.3.1
typescript:
- specifier: ^4.9.3
- version: 4.9.3
+ specifier: ^5.4.5
+ version: 5.4.5
+ typescript-eslint:
+ specifier: ^7.12.0
+ version: 7.12.0(eslint@9.4.0)(typescript@5.4.5)
packages:
@@ -76,27 +76,32 @@ packages:
resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==}
engines: {node: '>= 8.9.0'}
- '@electron/asar@3.2.4':
- resolution: {integrity: sha512-lykfY3TJRRWFeTxccEKdf1I6BLl2Plw81H0bbp4Fc5iEc67foDCa5pjJQULVgo0wF+Dli75f3xVcdb/67FFZ/g==}
+ '@electron/asar@3.2.10':
+ resolution: {integrity: sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==}
engines: {node: '>=10.12.0'}
hasBin: true
- '@electron/get@2.0.2':
- resolution: {integrity: sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==}
+ '@electron/get@2.0.3':
+ resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==}
engines: {node: '>=12'}
- '@electron/notarize@2.2.1':
- resolution: {integrity: sha512-aL+bFMIkpR0cmmj5Zgy0LMKEpgy43/hw5zadEArgmAMWWlKc5buwFvFT9G/o/YJkvXAJm5q3iuTuLaiaXW39sg==}
+ '@electron/notarize@2.3.0':
+ resolution: {integrity: sha512-EiTBU0BwE7HZZjAG1fFWQaiQpCuPrVGn7jPss1kUjD6eTTdXXd29RiZqEqkgN7xqt/Pgn4g3I7Saqovanrfj3w==}
engines: {node: '>= 10.0.0'}
- '@electron/osx-sign@1.0.5':
- resolution: {integrity: sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==}
+ '@electron/osx-sign@1.3.0':
+ resolution: {integrity: sha512-TEXhxlYSDRr9JWK5nWdOv5MtuUdaZ412uxIIEQ0hLt80o0HYWtQJBlW5QmrQDMtebzATaOjKG9UfCzLyA90zWQ==}
engines: {node: '>=12.0.0'}
hasBin: true
- '@electron/universal@1.5.1':
- resolution: {integrity: sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==}
- engines: {node: '>=8.6'}
+ '@electron/rebuild@3.6.0':
+ resolution: {integrity: sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw==}
+ engines: {node: '>=12.13.0'}
+ hasBin: true
+
+ '@electron/universal@2.0.1':
+ resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==}
+ engines: {node: '>=16.4'}
'@eslint-community/eslint-utils@4.4.0':
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
@@ -104,32 +109,44 @@ packages:
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
- '@eslint-community/regexpp@4.5.1':
- resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==}
+ '@eslint-community/regexpp@4.10.1':
+ resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint/eslintrc@2.0.3':
- resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@eslint/config-array@0.15.1':
+ resolution: {integrity: sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@8.40.0':
- resolution: {integrity: sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@eslint/eslintrc@3.1.0':
+ resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@humanwhocodes/config-array@0.11.8':
- resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
- engines: {node: '>=10.10.0'}
+ '@eslint/js@9.4.0':
+ resolution: {integrity: sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/object-schema@2.1.3':
+ resolution: {integrity: sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@gar/promisify@1.1.3':
+ resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
'@humanwhocodes/module-importer@1.0.1':
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
- '@humanwhocodes/object-schema@1.2.1':
- resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
+ '@humanwhocodes/retry@0.3.0':
+ resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
+ engines: {node: '>=18.18'}
- '@malept/cross-spawn-promise@1.1.1':
- resolution: {integrity: sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==}
- engines: {node: '>= 10'}
+ '@isaacs/cliui@8.0.2':
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+
+ '@malept/cross-spawn-promise@2.0.0':
+ resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==}
+ engines: {node: '>= 12.13.0'}
'@malept/flatpak-bundler@0.4.0':
resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==}
@@ -147,6 +164,23 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
+ '@npmcli/fs@2.1.2':
+ resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ '@npmcli/move-file@2.0.1':
+ resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ deprecated: This functionality has been moved to @npmcli/fs
+
+ '@pkgjs/parseargs@0.11.0':
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+
+ '@pkgr/core@0.1.1':
+ resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+
'@sindresorhus/is@4.6.0':
resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
engines: {node: '>=10'}
@@ -162,110 +196,123 @@ packages:
'@types/cacheable-request@6.0.3':
resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
- '@types/debug@4.1.7':
- resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==}
+ '@types/debug@4.1.12':
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+
+ '@types/eslint@8.56.10':
+ resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==}
+
+ '@types/eslint__js@8.42.3':
+ resolution: {integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==}
+
+ '@types/estree@1.0.5':
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
'@types/fs-extra@9.0.13':
resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==}
- '@types/http-cache-semantics@4.0.1':
- resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==}
+ '@types/http-cache-semantics@4.0.4':
+ resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
- '@types/json-schema@7.0.11':
- resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
'@types/keyv@3.1.4':
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
- '@types/ms@0.7.31':
- resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
+ '@types/ms@0.7.34':
+ resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
- '@types/node@20.11.28':
- resolution: {integrity: sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA==}
+ '@types/node@20.14.2':
+ resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==}
- '@types/plist@3.0.2':
- resolution: {integrity: sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==}
+ '@types/plist@3.0.5':
+ resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==}
- '@types/responselike@1.0.0':
- resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
+ '@types/responselike@1.0.3':
+ resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
- '@types/semver@7.3.13':
- resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==}
+ '@types/verror@1.10.10':
+ resolution: {integrity: sha512-l4MM0Jppn18hb9xmM6wwD1uTdShpf9Pn80aXTStnK1C94gtPvJcV2FrDmbOQUAQfJ1cKZHktkQUDwEqaAKXMMg==}
- '@types/verror@1.10.6':
- resolution: {integrity: sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==}
+ '@types/ws@8.5.10':
+ resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==}
- '@types/ws@8.5.3':
- resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==}
+ '@types/yauzl@2.10.3':
+ resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
- '@types/yauzl@2.10.0':
- resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
-
- '@typescript-eslint/eslint-plugin@5.59.2':
- resolution: {integrity: sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/eslint-plugin@7.12.0':
+ resolution: {integrity: sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==}
+ engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
- '@typescript-eslint/parser': ^5.0.0
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ '@typescript-eslint/parser': ^7.0.0
+ eslint: ^8.56.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/parser@5.59.2':
- resolution: {integrity: sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/parser@7.12.0':
+ resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==}
+ engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ eslint: ^8.56.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/scope-manager@5.59.2':
- resolution: {integrity: sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/scope-manager@7.12.0':
+ resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==}
+ engines: {node: ^18.18.0 || >=20.0.0}
- '@typescript-eslint/type-utils@5.59.2':
- resolution: {integrity: sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/type-utils@7.12.0':
+ resolution: {integrity: sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==}
+ engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
- eslint: '*'
+ eslint: ^8.56.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/types@5.59.2':
- resolution: {integrity: sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/types@7.12.0':
+ resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==}
+ engines: {node: ^18.18.0 || >=20.0.0}
- '@typescript-eslint/typescript-estree@5.59.2':
- resolution: {integrity: sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/typescript-estree@7.12.0':
+ resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==}
+ engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/utils@5.59.2':
- resolution: {integrity: sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/utils@7.12.0':
+ resolution: {integrity: sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==}
+ engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ eslint: ^8.56.0
- '@typescript-eslint/visitor-keys@5.59.2':
- resolution: {integrity: sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/visitor-keys@7.12.0':
+ resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+
+ '@xmldom/xmldom@0.8.10':
+ resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==}
+ engines: {node: '>=10.0.0'}
+
+ abbrev@1.1.1:
+ resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- acorn@8.8.2:
- resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
+ acorn@8.11.3:
+ resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
engines: {node: '>=0.4.0'}
hasBin: true
@@ -273,6 +320,14 @@ packages:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
+ agentkeepalive@4.5.0:
+ resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
+ engines: {node: '>= 8.0.0'}
+
+ aggregate-error@3.1.0:
+ resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
+ engines: {node: '>=8'}
+
ajv-keywords@3.5.2:
resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
peerDependencies:
@@ -297,15 +352,18 @@ packages:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
- app-builder-bin@4.0.0:
- resolution: {integrity: sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==}
+ app-builder-bin@5.0.0-alpha.3:
+ resolution: {integrity: sha512-bWTAF50v4ZAVLq6EPZYhaLsFSJLfZz5s9MIeP5k1RkkBsibyJV/Dv6NxfaDO0I++iBmcLKsuzB5E8b1qaeXqew==}
- app-builder-lib@24.13.3:
- resolution: {integrity: sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==}
+ app-builder-lib@25.0.0-alpha.9:
+ resolution: {integrity: sha512-rxkOK9QaNVmbB0Al+qA1xN6M6aIB/mMo5s7nrFmRf4p9ZFXuGcaqEBSmOUA1zf4r7pK1IpfOMiV0cS4lvXTZbQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
- dmg-builder: 24.13.3
- electron-builder-squirrel-windows: 24.13.3
+ dmg-builder: 25.0.0-alpha.9
+ electron-builder-squirrel-windows: 25.0.0-alpha.9
+
+ aproba@2.0.0:
+ resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
archiver-utils@2.1.0:
resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==}
@@ -319,6 +377,11 @@ packages:
resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==}
engines: {node: '>= 10'}
+ are-we-there-yet@3.0.1:
+ resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ deprecated: This package is no longer supported.
+
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
@@ -343,8 +406,8 @@ packages:
resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==}
engines: {node: '>=0.12.0'}
- async@3.2.4:
- resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==}
+ async@3.2.5:
+ resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==}
asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
@@ -377,36 +440,36 @@ packages:
brace-expansion@2.0.1:
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
- braces@3.0.2:
- resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
buffer-crc32@0.2.13:
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
- buffer-equal@1.0.0:
- resolution: {integrity: sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==}
- engines: {node: '>=0.4.0'}
-
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
- builder-util-runtime@9.2.4:
- resolution: {integrity: sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==}
+ builder-util-runtime@9.2.5-alpha.2:
+ resolution: {integrity: sha512-/Ln2ddejGj2HNMJ+X66mKHRcOvmRzUO/dSi8t4hSV64J7IA+DE+mqDb+zogIE2gin7p7YwcGiOkKny4nwPPPXg==}
engines: {node: '>=12.0.0'}
- builder-util@24.13.1:
- resolution: {integrity: sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA==}
+ builder-util@25.0.0-alpha.9:
+ resolution: {integrity: sha512-WR4YsR9YuPADtYN6a3D8qQ0quU7W9EIIVd13xA6gO2hmWxioDmJvxeF73fLfkh0S//C5GK6XXO8lTlPBN9SeFg==}
+
+ cacache@16.1.3:
+ resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
cacheable-lookup@5.0.4:
resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
engines: {node: '>=10.6.0'}
- cacheable-request@7.0.2:
- resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==}
+ cacheable-request@7.0.4:
+ resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==}
engines: {node: '>=8'}
callsites@3.1.0:
@@ -424,10 +487,22 @@ packages:
chromium-pickle-js@0.2.0:
resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==}
- ci-info@3.6.1:
- resolution: {integrity: sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==}
+ ci-info@3.9.0:
+ resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
+ clean-stack@2.2.0:
+ resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
+ engines: {node: '>=6'}
+
+ cli-cursor@3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+
+ cli-spinners@2.9.2:
+ resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+ engines: {node: '>=6'}
+
cli-truncate@2.1.0:
resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
engines: {node: '>=8'}
@@ -446,6 +521,10 @@ packages:
clone-response@1.0.3:
resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
+ clone@1.0.4:
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
@@ -453,6 +532,10 @@ packages:
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ color-support@1.1.3:
+ resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
+ hasBin: true
+
combined-stream@1.0.8:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
engines: {node: '>= 0.8'}
@@ -472,8 +555,14 @@ packages:
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- config-file-ts@0.2.4:
- resolution: {integrity: sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ==}
+ config-file-ts@0.2.6:
+ resolution: {integrity: sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==}
+
+ config-file-ts@0.2.8-rc1:
+ resolution: {integrity: sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==}
+
+ console-control-strings@1.1.0:
+ resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
copyfiles@2.4.1:
resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==}
@@ -497,15 +586,15 @@ packages:
crc@3.8.0:
resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==}
- cross-fetch@3.1.5:
- resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==}
+ cross-fetch@4.0.0:
+ resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==}
cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
- debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ debug@4.3.5:
+ resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -520,30 +609,44 @@ packages:
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ defaults@1.0.4:
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
+
defer-to-connect@2.0.1:
resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
engines: {node: '>=10'}
- define-properties@1.1.4:
- resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==}
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
+ delegates@1.0.0:
+ resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
+
+ detect-libc@2.0.3:
+ resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
+ engines: {node: '>=8'}
+
detect-node@2.1.0:
resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
- dir-compare@3.3.0:
- resolution: {integrity: sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==}
+ dir-compare@4.2.0:
+ resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==}
dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
- dmg-builder@24.13.3:
- resolution: {integrity: sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==}
+ dmg-builder@25.0.0-alpha.9:
+ resolution: {integrity: sha512-8j4ZBcVZStoedNbKKcOvjnvk9Q2RZd+aXgLtl0tpXQaLd/MmcS/IbkwnrPbqo7bguXd8yjrGlvYWiVCu3WovpA==}
dmg-license@1.0.11:
resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==}
@@ -551,27 +654,34 @@ packages:
os: [darwin]
hasBin: true
- doctrine@3.0.0:
- resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
- engines: {node: '>=6.0.0'}
+ dotenv-expand@11.0.6:
+ resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==}
+ engines: {node: '>=12'}
dotenv-expand@5.1.0:
resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==}
+ dotenv@16.4.5:
+ resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
+ engines: {node: '>=12'}
+
dotenv@9.0.2:
resolution: {integrity: sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==}
engines: {node: '>=10'}
- ejs@3.1.8:
- resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==}
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ ejs@3.1.10:
+ resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
engines: {node: '>=0.10.0'}
hasBin: true
- electron-builder-squirrel-windows@24.13.3:
- resolution: {integrity: sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg==}
+ electron-builder-squirrel-windows@25.0.0-alpha.9:
+ resolution: {integrity: sha512-IK6r96UPVIQcttJrXJ7Kt4nxQarmlZVsKkqMZQUWPu4Sof5bCe0PEMTIFISvgzo7y4MDdjVsCJ9ljZK19PIKZA==}
- electron-builder@24.13.3:
- resolution: {integrity: sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg==}
+ electron-builder@25.0.0-alpha.9:
+ resolution: {integrity: sha512-Jy9r/WZglgi7I9jmMCd7RSeSVBeRkiYDrl8cJxHYM4VtyTerL1E7u/mennZO+x7zDf633OVOGmxfk+lPWRSmKA==}
engines: {node: '>=14.0.0'}
hasBin: true
@@ -587,11 +697,11 @@ packages:
resolution: {integrity: sha512-8TjjAh8Ec51hUi3o4TaU0mD3GMTOESi866oRNavj9A3IQJ7pmv+MJVmdZBFGw4GFT36X7bkqnuDNYvkQgvyI8Q==}
engines: {node: '>=18'}
- electron-publish@24.13.1:
- resolution: {integrity: sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==}
+ electron-publish@25.0.0-alpha.9:
+ resolution: {integrity: sha512-vdqOXtCjrO72sZCB8hfvd8ZTKmUvWMLQ/f78Qe0UH4B+dCShtHnqbUM9Ed1Igsaw0svm2+cW+ce2yVZglr2Z3A==}
- electron@30.0.5:
- resolution: {integrity: sha512-+a7PjcAq2HrfF1l+Ez8n0W9YeZIam7E9ERHEGs+L2dqKu7qxk8GNSEFoBEPCpLI00p/fc0d76L9IcLCQJdNFqA==}
+ electron@30.1.0:
+ resolution: {integrity: sha512-9O8m7kinjwMH5Df0hpXbwUaqI6pk3aJm1sKQUkQGCF7NDbNkGhu2BXgqaicPU6oe26zQPc5vtwWnHmiKlh1hYA==}
engines: {node: '>= 12.20.55'}
hasBin: true
@@ -601,9 +711,19 @@ packages:
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ encoding@0.1.13:
+ resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
+
end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+ enhanced-resolve@5.17.0:
+ resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==}
+ engines: {node: '>=10.13.0'}
+
env-paths@2.2.1:
resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
engines: {node: '>=6'}
@@ -611,11 +731,19 @@ packages:
err-code@2.0.3:
resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
+ es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
es6-error@4.1.1:
resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==}
- escalade@3.1.1:
- resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ escalade@3.1.2:
+ resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
engines: {node: '>=6'}
escape-goat@4.0.0:
@@ -630,64 +758,58 @@ packages:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
- eslint-config-dmitmel@https://codeload.github.com/dmitmel/eslint-config-dmitmel/tar.gz/d97129ec35235415c6ae6a42299f55cdbb5d75fd:
- resolution: {tarball: https://codeload.github.com/dmitmel/eslint-config-dmitmel/tar.gz/d97129ec35235415c6ae6a42299f55cdbb5d75fd}
- version: 8.3.0
- engines: {node: '>=8.10.0'}
+ eslint-compat-utils@0.5.1:
+ resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==}
+ engines: {node: '>=12'}
peerDependencies:
- eslint: '>=8.17.0'
+ eslint: '>=6.0.0'
- eslint-plugin-es@3.0.1:
- resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==}
- engines: {node: '>=8.10.0'}
+ eslint-plugin-es-x@7.7.0:
+ resolution: {integrity: sha512-aP3qj8BwiEDPttxQkZdI221DLKq9sI/qHolE2YSQL1/9+xk7dTV+tB1Fz8/IaCA+lnLA1bDEnvaS2LKs0k2Uig==}
+ engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
- eslint: '>=4.19.1'
+ eslint: '>=8'
- eslint-plugin-node@11.1.0:
- resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==}
- engines: {node: '>=8.10.0'}
+ eslint-plugin-n@17.8.1:
+ resolution: {integrity: sha512-KdG0h0voZms8UhndNu8DeWx1eM4sY+A4iXtsNo6kOfJLYHNeTGPacGalJ9GcvrbmOL3r/7QOMwVZDSw+1SqsrA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: '>=5.16.0'
+ eslint: '>=8.23.0'
- eslint-plugin-prettier@4.2.1:
- resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
- engines: {node: '>=12.0.0'}
+ eslint-plugin-prettier@5.1.3:
+ resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
- eslint: '>=7.28.0'
+ '@types/eslint': '>=8.0.0'
+ eslint: '>=8.0.0'
eslint-config-prettier: '*'
- prettier: '>=2.0.0'
+ prettier: '>=3.0.0'
peerDependenciesMeta:
+ '@types/eslint':
+ optional: true
eslint-config-prettier:
optional: true
- eslint-scope@5.1.1:
- resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
- engines: {node: '>=8.0.0'}
+ eslint-scope@8.0.1:
+ resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint-scope@7.2.0:
- resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==}
+ eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- eslint-utils@2.1.0:
- resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==}
- engines: {node: '>=6'}
+ eslint-visitor-keys@4.0.0:
+ resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint-visitor-keys@1.3.0:
- resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==}
- engines: {node: '>=4'}
-
- eslint-visitor-keys@3.4.1:
- resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint@8.40.0:
- resolution: {integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ eslint@9.4.0:
+ resolution: {integrity: sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
- espree@9.5.2:
- resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ espree@10.0.1:
+ resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
esquery@1.5.0:
resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
@@ -697,10 +819,6 @@ packages:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
- estraverse@4.3.0:
- resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
- engines: {node: '>=4.0'}
-
estraverse@5.3.0:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
@@ -709,6 +827,9 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
+ exponential-backoff@3.1.1:
+ resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==}
+
ext-list@2.2.2:
resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==}
engines: {node: '>=0.10.0'}
@@ -729,11 +850,11 @@ packages:
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
- fast-diff@1.2.0:
- resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==}
+ fast-diff@1.3.0:
+ resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
- fast-glob@3.2.12:
- resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
+ fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
fast-json-stable-stringify@2.1.0:
@@ -742,33 +863,37 @@ packages:
fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
- fastq@1.15.0:
- resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
+ fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
fd-slicer@1.1.0:
resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
- file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ file-entry-cache@8.0.0:
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
filelist@1.0.4:
resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
- fill-range@7.0.1:
- resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
find-up@5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
- flat-cache@3.0.4:
- resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ flat-cache@4.0.1:
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
- flatted@3.2.7:
- resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
+ flatted@3.3.1:
+ resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
+
+ foreground-child@3.1.1:
+ resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+ engines: {node: '>=14'}
form-data@4.0.0:
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
@@ -781,6 +906,10 @@ packages:
resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
engines: {node: '>=12'}
+ fs-extra@11.2.0:
+ resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
+ engines: {node: '>=14.14'}
+
fs-extra@8.1.0:
resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
engines: {node: '>=6 <7 || >=8'}
@@ -796,8 +925,13 @@ packages:
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
- function-bind@1.1.1:
- resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ gauge@4.0.4:
+ resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ deprecated: This package is no longer supported.
get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
@@ -807,13 +941,17 @@ packages:
resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
engines: {node: '>=18'}
- get-intrinsic@1.1.3:
- resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==}
+ get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
get-stream@5.2.0:
resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
engines: {node: '>=8'}
+ get-tsconfig@4.7.5:
+ resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==}
+
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -822,57 +960,81 @@ packages:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
+ glob@10.4.1:
+ resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==}
+ engines: {node: '>=16 || 14 >=14.18'}
+ hasBin: true
+
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
+ glob@8.1.0:
+ resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
+ engines: {node: '>=12'}
+ deprecated: Glob versions prior to v9 are no longer supported
+
global-agent@3.0.0:
resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==}
engines: {node: '>=10.0'}
- globals@13.20.0:
- resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
- engines: {node: '>=8'}
+ globals@14.0.0:
+ resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
+ engines: {node: '>=18'}
- globalthis@1.0.3:
- resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
+ globals@15.4.0:
+ resolution: {integrity: sha512-unnwvMZpv0eDUyjNyh9DH/yxUaRYrEjW/qK4QcdrHg3oO11igUQrCSgODHEqxlKg8v2CD2Sd7UkqqEBoz5U7TQ==}
+ engines: {node: '>=18'}
+
+ globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
globby@11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
+ gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+
got@11.8.6:
resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
engines: {node: '>=10.19.0'}
- graceful-fs@4.2.10:
- resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- grapheme-splitter@1.0.4:
- resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
+ graphemer@1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
- has-property-descriptors@1.0.0:
- resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
+ has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
has-symbols@1.0.3:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'}
- has@1.0.3:
- resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
- engines: {node: '>= 0.4.0'}
+ has-unicode@2.0.1:
+ resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
hosted-git-info@4.1.0:
resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
engines: {node: '>=10'}
- http-cache-semantics@4.1.0:
- resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==}
+ http-cache-semantics@4.1.1:
+ resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
http-proxy-agent@5.0.0:
resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
@@ -886,6 +1048,9 @@ packages:
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
engines: {node: '>= 6'}
+ humanize-ms@1.2.1:
+ resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
+
iconv-corefoundation@1.1.7:
resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==}
engines: {node: ^8.11.2 || >=10}
@@ -898,8 +1063,8 @@ packages:
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
- ignore@5.2.4:
- resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
+ ignore@5.3.1:
+ resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
engines: {node: '>= 4'}
import-fresh@3.3.0:
@@ -910,6 +1075,13 @@ packages:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
+ indent-string@4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+
+ infer-owner@1.0.4:
+ resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==}
+
inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
@@ -917,13 +1089,14 @@ packages:
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ ip-address@9.0.5:
+ resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==}
+ engines: {node: '>= 12'}
+
is-ci@3.0.1:
resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
hasBin: true
- is-core-module@2.11.0:
- resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
-
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@@ -940,6 +1113,13 @@ packages:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
+ is-interactive@1.0.0:
+ resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+ engines: {node: '>=8'}
+
+ is-lambda@1.0.1:
+ resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==}
+
is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
@@ -952,6 +1132,10 @@ packages:
resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
engines: {node: '>=0.10.0'}
+ is-unicode-supported@0.1.0:
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+
isarray@0.0.1:
resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
@@ -962,25 +1146,29 @@ packages:
resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==}
engines: {node: '>= 8.0.0'}
- isbinaryfile@5.0.0:
- resolution: {integrity: sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==}
- engines: {node: '>= 14.0.0'}
+ isbinaryfile@5.0.2:
+ resolution: {integrity: sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==}
+ engines: {node: '>= 18.0.0'}
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
- jake@10.8.5:
- resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==}
+ jackspeak@3.4.0:
+ resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==}
+ engines: {node: '>=14'}
+
+ jake@10.9.1:
+ resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==}
engines: {node: '>=10'}
hasBin: true
- js-sdsl@4.4.0:
- resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==}
-
js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
+ jsbn@1.1.0:
+ resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
+
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
@@ -993,8 +1181,8 @@ packages:
json-stringify-safe@5.0.1:
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
- json5@2.2.1:
- resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==}
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
hasBin: true
@@ -1004,8 +1192,8 @@ packages:
jsonfile@6.1.0:
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
- keyv@4.5.2:
- resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==}
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
lazy-val@1.0.5:
resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==}
@@ -1043,14 +1231,30 @@ packages:
lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ log-symbols@4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+
lowercase-keys@2.0.0:
resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==}
engines: {node: '>=8'}
+ lru-cache@10.2.2:
+ resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
+ engines: {node: 14 || >=16.14}
+
lru-cache@6.0.0:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
+ lru-cache@7.18.3:
+ resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
+ engines: {node: '>=12'}
+
+ make-fetch-happen@10.2.1:
+ resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
matcher@3.0.0:
resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==}
engines: {node: '>=10'}
@@ -1059,8 +1263,8 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
- micromatch@4.0.5:
- resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ micromatch@4.0.7:
+ resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
engines: {node: '>=8.6'}
mime-db@1.52.0:
@@ -1076,6 +1280,10 @@ packages:
engines: {node: '>=4.0.0'}
hasBin: true
+ mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
mimic-response@1.0.1:
resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==}
engines: {node: '>=4'}
@@ -1091,13 +1299,45 @@ packages:
resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
engines: {node: '>=10'}
- minimist@1.2.7:
- resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==}
+ minimatch@9.0.4:
+ resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
+ engines: {node: '>=16 || 14 >=14.17'}
- minipass@3.3.4:
- resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==}
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ minipass-collect@1.0.2:
+ resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==}
+ engines: {node: '>= 8'}
+
+ minipass-fetch@2.1.2:
+ resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ minipass-flush@1.0.5:
+ resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==}
+ engines: {node: '>= 8'}
+
+ minipass-pipeline@1.2.4:
+ resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==}
engines: {node: '>=8'}
+ minipass-sized@1.0.3:
+ resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==}
+ engines: {node: '>=8'}
+
+ minipass@3.3.6:
+ resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
+ engines: {node: '>=8'}
+
+ minipass@5.0.0:
+ resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
+ engines: {node: '>=8'}
+
+ minipass@7.1.2:
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
minizlib@2.1.2:
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
engines: {node: '>= 8'}
@@ -1110,17 +1350,28 @@ packages:
ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
- natural-compare-lite@1.4.0:
- resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
+ node-abi@3.63.0:
+ resolution: {integrity: sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==}
+ engines: {node: '>=10'}
+
node-addon-api@1.7.2:
resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==}
- node-fetch@2.6.7:
- resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
+ node-api-version@0.2.0:
+ resolution: {integrity: sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==}
+
+ node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
engines: {node: 4.x || >=6.0.0}
peerDependencies:
encoding: ^0.1.0
@@ -1128,9 +1379,19 @@ packages:
encoding:
optional: true
+ node-gyp@9.4.1:
+ resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==}
+ engines: {node: ^12.13 || ^14.13 || >=16}
+ hasBin: true
+
noms@0.0.0:
resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==}
+ nopt@6.0.0:
+ resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ hasBin: true
+
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
@@ -1139,6 +1400,11 @@ packages:
resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
engines: {node: '>=10'}
+ npmlog@6.0.2:
+ resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ deprecated: This package is no longer supported.
+
object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
@@ -1146,10 +1412,18 @@ packages:
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- optionator@0.9.1:
- resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
+ onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
+ ora@5.4.1:
+ resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+ engines: {node: '>=10'}
+
p-cancelable@2.1.1:
resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==}
engines: {node: '>=8'}
@@ -1162,6 +1436,10 @@ packages:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
+ p-map@4.0.0:
+ resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
+ engines: {node: '>=10'}
+
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -1182,8 +1460,9 @@ packages:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
- path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ path-scurry@1.11.1:
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+ engines: {node: '>=16 || 14 >=14.18'}
path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
@@ -1196,9 +1475,9 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
- plist@3.0.6:
- resolution: {integrity: sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==}
- engines: {node: '>=6'}
+ plist@3.1.0:
+ resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==}
+ engines: {node: '>=10.4.0'}
prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
@@ -1208,9 +1487,9 @@ packages:
resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
engines: {node: '>=6.0.0'}
- prettier@2.7.1:
- resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==}
- engines: {node: '>=10.13.0'}
+ prettier@3.3.1:
+ resolution: {integrity: sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==}
+ engines: {node: '>=14'}
hasBin: true
process-nextick-args@2.0.1:
@@ -1220,6 +1499,14 @@ packages:
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
engines: {node: '>=0.4.0'}
+ promise-inflight@1.0.1:
+ resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
+ peerDependencies:
+ bluebird: '*'
+ peerDependenciesMeta:
+ bluebird:
+ optional: true
+
promise-retry@2.0.1:
resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
engines: {node: '>=10'}
@@ -1227,8 +1514,8 @@ packages:
pump@3.0.0:
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
- punycode@2.1.1:
- resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
pupa@3.1.0:
@@ -1242,15 +1529,23 @@ packages:
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
engines: {node: '>=10'}
+ read-binary-file-arch@1.0.6:
+ resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==}
+ hasBin: true
+
read-config-file@6.3.2:
resolution: {integrity: sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==}
engines: {node: '>=12.0.0'}
+ read-config-file@6.4.0:
+ resolution: {integrity: sha512-uB5QOBeF84PT61GlV11OTV4jUGHAO3iDEOP6v9ygxhG6Bs9PLg7WsjNT6mtIX2G+x8lJTr4ZWNeG6LDTKkNf2Q==}
+ engines: {node: '>=12.0.0'}
+
readable-stream@1.0.34:
resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==}
- readable-stream@2.3.7:
- resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==}
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
readable-stream@3.6.2:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
@@ -1259,10 +1554,6 @@ packages:
readdir-glob@1.1.3:
resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
- regexpp@3.2.0:
- resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
- engines: {node: '>=8'}
-
require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -1274,13 +1565,16 @@ packages:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
- resolve@1.22.2:
- resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
- hasBin: true
+ resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
responselike@2.0.1:
resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==}
+ restore-cursor@3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+
retry@0.12.0:
resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
engines: {node: '>= 4'}
@@ -1304,29 +1598,27 @@ packages:
safe-buffer@5.1.2:
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
sanitize-filename@1.6.3:
resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==}
- sax@1.2.4:
- resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
+ sax@1.4.1:
+ resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
semver-compare@1.0.0:
resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
- semver@6.3.0:
- resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
- semver@7.3.8:
- resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
- engines: {node: '>=10'}
- hasBin: true
-
- semver@7.5.4:
- resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
+ semver@7.6.2:
+ resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
hasBin: true
@@ -1334,6 +1626,9 @@ packages:
resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==}
engines: {node: '>=10'}
+ set-blocking@2.0.0:
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -1342,6 +1637,13 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
simple-update-notifier@2.0.0:
resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==}
engines: {node: '>=10'}
@@ -1362,6 +1664,14 @@ packages:
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
+ socks-proxy-agent@7.0.0:
+ resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==}
+ engines: {node: '>= 10'}
+
+ socks@2.8.3:
+ resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==}
+ engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
+
sort-keys-length@1.0.1:
resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==}
engines: {node: '>=0.10.0'}
@@ -1377,8 +1687,12 @@ packages:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
- sprintf-js@1.1.2:
- resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==}
+ sprintf-js@1.1.3:
+ resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
+
+ ssri@9.0.1:
+ resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
stat-mode@1.0.0:
resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==}
@@ -1388,6 +1702,10 @@ packages:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+
string-width@7.1.0:
resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==}
engines: {node: '>=18'}
@@ -1398,6 +1716,9 @@ 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'}
@@ -1418,16 +1739,20 @@ packages:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
- supports-preserve-symlinks-flag@1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
+ synckit@0.8.8:
+ resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+
+ tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
tar-stream@2.2.0:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
engines: {node: '>=6'}
- tar@6.1.12:
- resolution: {integrity: sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==}
+ tar@6.2.1:
+ resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
engines: {node: '>=10'}
temp-file@3.4.0:
@@ -1442,9 +1767,9 @@ packages:
tmp-promise@3.0.3:
resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==}
- tmp@0.2.1:
- resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==}
- engines: {node: '>=8.17.0'}
+ tmp@0.2.3:
+ resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==}
+ engines: {node: '>=14.14'}
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
@@ -1456,14 +1781,14 @@ packages:
truncate-utf8-bytes@1.0.2:
resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==}
- tslib@1.14.1:
- resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
-
- tsutils@3.21.0:
- resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
- engines: {node: '>= 6'}
+ ts-api-utils@1.3.0:
+ resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
+ engines: {node: '>=16'}
peerDependencies:
- typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
+ typescript: '>=4.2.0'
+
+ tslib@2.6.3:
+ resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
@@ -1473,24 +1798,38 @@ packages:
resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
engines: {node: '>=10'}
- type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
+ typescript-eslint@7.12.0:
+ resolution: {integrity: sha512-D6HKNbQcnNu3BaN4HkQCR16tgG8Q2AMUWPgvhrJksOXu+d6ys07yC06ONiV2kcsEfWC22voB6C3PvK2MqlBZ7w==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ eslint: ^8.56.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
- typescript@4.9.3:
- resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==}
- engines: {node: '>=4.2.0'}
+ typescript@5.4.5:
+ resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
+ engines: {node: '>=14.17'}
hasBin: true
undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+ unique-filename@2.0.1:
+ resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ unique-slug@3.0.0:
+ resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
universalify@0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}
- universalify@2.0.0:
- resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
+ universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
untildify@4.0.0:
@@ -1504,19 +1843,22 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
- utf8-byte-length@1.0.4:
- resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==}
+ utf8-byte-length@1.0.5:
+ resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==}
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- v8-compile-cache@2.3.0:
- resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
+ v8-compile-cache@2.4.0:
+ resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==}
verror@1.10.1:
resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==}
engines: {node: '>=0.6.0'}
+ wcwidth@1.0.1:
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
@@ -1528,23 +1870,30 @@ packages:
engines: {node: '>= 8'}
hasBin: true
- word-wrap@1.2.3:
- resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
+ wide-align@1.1.5:
+ resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
+
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- ws@8.11.0:
- resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==}
+ ws@8.17.0:
+ resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
- utf-8-validate: ^5.0.2
+ utf-8-validate: '>=5.0.2'
peerDependenciesMeta:
bufferutil:
optional: true
@@ -1578,8 +1927,8 @@ packages:
resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
engines: {node: '>=10'}
- yargs@17.6.2:
- resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==}
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
yauzl@2.10.0:
@@ -1602,72 +1951,99 @@ snapshots:
ajv: 6.12.6
ajv-keywords: 3.5.2(ajv@6.12.6)
- '@electron/asar@3.2.4':
+ '@electron/asar@3.2.10':
dependencies:
- chromium-pickle-js: 0.2.0
commander: 5.1.0
glob: 7.2.3
minimatch: 3.1.2
- '@electron/get@2.0.2':
+ '@electron/get@2.0.3':
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
env-paths: 2.2.1
fs-extra: 8.1.0
got: 11.8.6
progress: 2.0.3
- semver: 6.3.0
+ semver: 6.3.1
sumchecker: 3.0.1
optionalDependencies:
global-agent: 3.0.0
transitivePeerDependencies:
- supports-color
- '@electron/notarize@2.2.1':
+ '@electron/notarize@2.3.0':
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
fs-extra: 9.1.0
promise-retry: 2.0.1
transitivePeerDependencies:
- supports-color
- '@electron/osx-sign@1.0.5':
+ '@electron/osx-sign@1.3.0':
dependencies:
compare-version: 0.1.2
- debug: 4.3.4
+ debug: 4.3.5
fs-extra: 10.1.0
isbinaryfile: 4.0.10
- minimist: 1.2.7
- plist: 3.0.6
+ minimist: 1.2.8
+ plist: 3.1.0
transitivePeerDependencies:
- supports-color
- '@electron/universal@1.5.1':
+ '@electron/rebuild@3.6.0':
dependencies:
- '@electron/asar': 3.2.4
- '@malept/cross-spawn-promise': 1.1.1
- debug: 4.3.4
- dir-compare: 3.3.0
- fs-extra: 9.1.0
+ '@malept/cross-spawn-promise': 2.0.0
+ chalk: 4.1.2
+ debug: 4.3.5
+ detect-libc: 2.0.3
+ fs-extra: 10.1.0
+ got: 11.8.6
+ node-abi: 3.63.0
+ node-api-version: 0.2.0
+ node-gyp: 9.4.1
+ ora: 5.4.1
+ read-binary-file-arch: 1.0.6
+ semver: 7.6.2
+ tar: 6.2.1
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+
+ '@electron/universal@2.0.1':
+ dependencies:
+ '@electron/asar': 3.2.10
+ '@malept/cross-spawn-promise': 2.0.0
+ debug: 4.3.5
+ dir-compare: 4.2.0
+ fs-extra: 11.2.0
+ minimatch: 9.0.4
+ plist: 3.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.4.0)':
+ dependencies:
+ eslint: 9.4.0
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.10.1': {}
+
+ '@eslint/config-array@0.15.1':
+ dependencies:
+ '@eslint/object-schema': 2.1.3
+ debug: 4.3.5
minimatch: 3.1.2
- plist: 3.0.6
transitivePeerDependencies:
- supports-color
- '@eslint-community/eslint-utils@4.4.0(eslint@8.40.0)':
- dependencies:
- eslint: 8.40.0
- eslint-visitor-keys: 3.4.1
-
- '@eslint-community/regexpp@4.5.1': {}
-
- '@eslint/eslintrc@2.0.3':
+ '@eslint/eslintrc@3.1.0':
dependencies:
ajv: 6.12.6
- debug: 4.3.4
- espree: 9.5.2
- globals: 13.20.0
- ignore: 5.2.4
+ debug: 4.3.5
+ espree: 10.0.1
+ globals: 14.0.0
+ ignore: 5.3.1
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
@@ -1675,27 +2051,32 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@8.40.0': {}
+ '@eslint/js@9.4.0': {}
- '@humanwhocodes/config-array@0.11.8':
- dependencies:
- '@humanwhocodes/object-schema': 1.2.1
- debug: 4.3.4
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
+ '@eslint/object-schema@2.1.3': {}
+
+ '@gar/promisify@1.1.3': {}
'@humanwhocodes/module-importer@1.0.1': {}
- '@humanwhocodes/object-schema@1.2.1': {}
+ '@humanwhocodes/retry@0.3.0': {}
- '@malept/cross-spawn-promise@1.1.1':
+ '@isaacs/cliui@8.0.2':
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
+ '@malept/cross-spawn-promise@2.0.0':
dependencies:
cross-spawn: 7.0.3
'@malept/flatpak-bundler@0.4.0':
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
fs-extra: 9.1.0
lodash: 4.17.21
tmp-promise: 3.0.3
@@ -1712,7 +2093,22 @@ snapshots:
'@nodelib/fs.walk@1.2.8':
dependencies:
'@nodelib/fs.scandir': 2.1.5
- fastq: 1.15.0
+ fastq: 1.17.1
+
+ '@npmcli/fs@2.1.2':
+ dependencies:
+ '@gar/promisify': 1.1.3
+ semver: 7.6.2
+
+ '@npmcli/move-file@2.0.1':
+ dependencies:
+ mkdirp: 1.0.4
+ rimraf: 3.0.2
+
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
+
+ '@pkgr/core@0.1.1': {}
'@sindresorhus/is@4.6.0': {}
@@ -1724,153 +2120,172 @@ snapshots:
'@types/cacheable-request@6.0.3':
dependencies:
- '@types/http-cache-semantics': 4.0.1
+ '@types/http-cache-semantics': 4.0.4
'@types/keyv': 3.1.4
- '@types/node': 20.11.28
- '@types/responselike': 1.0.0
+ '@types/node': 20.14.2
+ '@types/responselike': 1.0.3
- '@types/debug@4.1.7':
+ '@types/debug@4.1.12':
dependencies:
- '@types/ms': 0.7.31
+ '@types/ms': 0.7.34
+
+ '@types/eslint@8.56.10':
+ dependencies:
+ '@types/estree': 1.0.5
+ '@types/json-schema': 7.0.15
+
+ '@types/eslint__js@8.42.3':
+ dependencies:
+ '@types/eslint': 8.56.10
+
+ '@types/estree@1.0.5': {}
'@types/fs-extra@9.0.13':
dependencies:
- '@types/node': 20.11.28
+ '@types/node': 20.14.2
- '@types/http-cache-semantics@4.0.1': {}
+ '@types/http-cache-semantics@4.0.4': {}
- '@types/json-schema@7.0.11': {}
+ '@types/json-schema@7.0.15': {}
'@types/keyv@3.1.4':
dependencies:
- '@types/node': 20.11.28
+ '@types/node': 20.14.2
- '@types/ms@0.7.31': {}
+ '@types/ms@0.7.34': {}
- '@types/node@20.11.28':
+ '@types/node@20.14.2':
dependencies:
undici-types: 5.26.5
- '@types/plist@3.0.2':
+ '@types/plist@3.0.5':
dependencies:
- '@types/node': 20.11.28
+ '@types/node': 20.14.2
xmlbuilder: 15.1.1
optional: true
- '@types/responselike@1.0.0':
+ '@types/responselike@1.0.3':
dependencies:
- '@types/node': 20.11.28
+ '@types/node': 20.14.2
- '@types/semver@7.3.13': {}
-
- '@types/verror@1.10.6':
+ '@types/verror@1.10.10':
optional: true
- '@types/ws@8.5.3':
+ '@types/ws@8.5.10':
dependencies:
- '@types/node': 20.11.28
+ '@types/node': 20.14.2
- '@types/yauzl@2.10.0':
+ '@types/yauzl@2.10.3':
dependencies:
- '@types/node': 20.11.28
+ '@types/node': 20.14.2
optional: true
- '@typescript-eslint/eslint-plugin@5.59.2(@typescript-eslint/parser@5.59.2(eslint@8.40.0)(typescript@4.9.3))(eslint@8.40.0)(typescript@4.9.3)':
+ '@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)':
dependencies:
- '@eslint-community/regexpp': 4.5.1
- '@typescript-eslint/parser': 5.59.2(eslint@8.40.0)(typescript@4.9.3)
- '@typescript-eslint/scope-manager': 5.59.2
- '@typescript-eslint/type-utils': 5.59.2(eslint@8.40.0)(typescript@4.9.3)
- '@typescript-eslint/utils': 5.59.2(eslint@8.40.0)(typescript@4.9.3)
- debug: 4.3.4
- eslint: 8.40.0
- grapheme-splitter: 1.0.4
- ignore: 5.2.4
- natural-compare-lite: 1.4.0
- semver: 7.3.8
- tsutils: 3.21.0(typescript@4.9.3)
+ '@eslint-community/regexpp': 4.10.1
+ '@typescript-eslint/parser': 7.12.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/scope-manager': 7.12.0
+ '@typescript-eslint/type-utils': 7.12.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.12.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/visitor-keys': 7.12.0
+ eslint: 9.4.0
+ graphemer: 1.4.0
+ ignore: 5.3.1
+ natural-compare: 1.4.0
+ ts-api-utils: 1.3.0(typescript@5.4.5)
optionalDependencies:
- typescript: 4.9.3
+ typescript: 5.4.5
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@5.59.2(eslint@8.40.0)(typescript@4.9.3)':
+ '@typescript-eslint/parser@7.12.0(eslint@9.4.0)(typescript@5.4.5)':
dependencies:
- '@typescript-eslint/scope-manager': 5.59.2
- '@typescript-eslint/types': 5.59.2
- '@typescript-eslint/typescript-estree': 5.59.2(typescript@4.9.3)
- debug: 4.3.4
- eslint: 8.40.0
+ '@typescript-eslint/scope-manager': 7.12.0
+ '@typescript-eslint/types': 7.12.0
+ '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5)
+ '@typescript-eslint/visitor-keys': 7.12.0
+ debug: 4.3.5
+ eslint: 9.4.0
optionalDependencies:
- typescript: 4.9.3
+ typescript: 5.4.5
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@5.59.2':
+ '@typescript-eslint/scope-manager@7.12.0':
dependencies:
- '@typescript-eslint/types': 5.59.2
- '@typescript-eslint/visitor-keys': 5.59.2
+ '@typescript-eslint/types': 7.12.0
+ '@typescript-eslint/visitor-keys': 7.12.0
- '@typescript-eslint/type-utils@5.59.2(eslint@8.40.0)(typescript@4.9.3)':
+ '@typescript-eslint/type-utils@7.12.0(eslint@9.4.0)(typescript@5.4.5)':
dependencies:
- '@typescript-eslint/typescript-estree': 5.59.2(typescript@4.9.3)
- '@typescript-eslint/utils': 5.59.2(eslint@8.40.0)(typescript@4.9.3)
- debug: 4.3.4
- eslint: 8.40.0
- tsutils: 3.21.0(typescript@4.9.3)
+ '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.12.0(eslint@9.4.0)(typescript@5.4.5)
+ debug: 4.3.5
+ eslint: 9.4.0
+ ts-api-utils: 1.3.0(typescript@5.4.5)
optionalDependencies:
- typescript: 4.9.3
+ typescript: 5.4.5
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@5.59.2': {}
+ '@typescript-eslint/types@7.12.0': {}
- '@typescript-eslint/typescript-estree@5.59.2(typescript@4.9.3)':
+ '@typescript-eslint/typescript-estree@7.12.0(typescript@5.4.5)':
dependencies:
- '@typescript-eslint/types': 5.59.2
- '@typescript-eslint/visitor-keys': 5.59.2
- debug: 4.3.4
+ '@typescript-eslint/types': 7.12.0
+ '@typescript-eslint/visitor-keys': 7.12.0
+ debug: 4.3.5
globby: 11.1.0
is-glob: 4.0.3
- semver: 7.3.8
- tsutils: 3.21.0(typescript@4.9.3)
+ minimatch: 9.0.4
+ semver: 7.6.2
+ ts-api-utils: 1.3.0(typescript@5.4.5)
optionalDependencies:
- typescript: 4.9.3
+ typescript: 5.4.5
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@5.59.2(eslint@8.40.0)(typescript@4.9.3)':
+ '@typescript-eslint/utils@7.12.0(eslint@9.4.0)(typescript@5.4.5)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0)
- '@types/json-schema': 7.0.11
- '@types/semver': 7.3.13
- '@typescript-eslint/scope-manager': 5.59.2
- '@typescript-eslint/types': 5.59.2
- '@typescript-eslint/typescript-estree': 5.59.2(typescript@4.9.3)
- eslint: 8.40.0
- eslint-scope: 5.1.1
- semver: 7.3.8
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
+ '@typescript-eslint/scope-manager': 7.12.0
+ '@typescript-eslint/types': 7.12.0
+ '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5)
+ eslint: 9.4.0
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/visitor-keys@5.59.2':
+ '@typescript-eslint/visitor-keys@7.12.0':
dependencies:
- '@typescript-eslint/types': 5.59.2
- eslint-visitor-keys: 3.4.1
+ '@typescript-eslint/types': 7.12.0
+ eslint-visitor-keys: 3.4.3
- acorn-jsx@5.3.2(acorn@8.8.2):
+ '@xmldom/xmldom@0.8.10': {}
+
+ abbrev@1.1.1: {}
+
+ acorn-jsx@5.3.2(acorn@8.11.3):
dependencies:
- acorn: 8.8.2
+ acorn: 8.11.3
- acorn@8.8.2: {}
+ acorn@8.11.3: {}
agent-base@6.0.2:
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
+ agentkeepalive@4.5.0:
+ dependencies:
+ humanize-ms: 1.2.1
+
+ aggregate-error@3.1.0:
+ dependencies:
+ clean-stack: 2.2.0
+ indent-string: 4.0.0
+
ajv-keywords@3.5.2(ajv@6.12.6):
dependencies:
ajv: 6.12.6
@@ -1892,46 +2307,50 @@ snapshots:
ansi-styles@6.2.1: {}
- app-builder-bin@4.0.0: {}
+ app-builder-bin@5.0.0-alpha.3: {}
- app-builder-lib@24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3)))(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3)):
+ app-builder-lib@25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9(electron-builder-squirrel-windows@25.0.0-alpha.9))(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9)):
dependencies:
'@develar/schema-utils': 2.6.5
- '@electron/notarize': 2.2.1
- '@electron/osx-sign': 1.0.5
- '@electron/universal': 1.5.1
+ '@electron/notarize': 2.3.0
+ '@electron/osx-sign': 1.3.0
+ '@electron/rebuild': 3.6.0
+ '@electron/universal': 2.0.1
'@malept/flatpak-bundler': 0.4.0
'@types/fs-extra': 9.0.13
async-exit-hook: 2.0.1
bluebird-lst: 1.0.9
- builder-util: 24.13.1
- builder-util-runtime: 9.2.4
+ builder-util: 25.0.0-alpha.9
+ builder-util-runtime: 9.2.5-alpha.2
chromium-pickle-js: 0.2.0
- debug: 4.3.4
- dmg-builder: 24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
- ejs: 3.1.8
- electron-builder-squirrel-windows: 24.13.3(dmg-builder@24.13.3)
- electron-publish: 24.13.1
+ debug: 4.3.5
+ dmg-builder: 25.0.0-alpha.9(electron-builder-squirrel-windows@25.0.0-alpha.9)
+ ejs: 3.1.10
+ electron-builder-squirrel-windows: 25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9)
+ electron-publish: 25.0.0-alpha.9
form-data: 4.0.0
fs-extra: 10.1.0
hosted-git-info: 4.1.0
is-ci: 3.0.1
- isbinaryfile: 5.0.0
+ isbinaryfile: 5.0.2
js-yaml: 4.1.0
lazy-val: 1.0.5
minimatch: 5.1.6
- read-config-file: 6.3.2
+ read-config-file: 6.4.0
sanitize-filename: 1.6.3
- semver: 7.5.4
- tar: 6.1.12
+ semver: 7.6.2
+ tar: 6.2.1
temp-file: 3.4.0
transitivePeerDependencies:
+ - bluebird
- supports-color
+ aproba@2.0.0: {}
+
archiver-utils@2.1.0:
dependencies:
glob: 7.2.3
- graceful-fs: 4.2.10
+ graceful-fs: 4.2.11
lazystream: 1.0.1
lodash.defaults: 4.2.0
lodash.difference: 4.5.0
@@ -1939,12 +2358,12 @@ snapshots:
lodash.isplainobject: 4.0.6
lodash.union: 4.6.0
normalize-path: 3.0.0
- readable-stream: 2.3.7
+ readable-stream: 2.3.8
archiver-utils@3.0.4:
dependencies:
glob: 7.2.3
- graceful-fs: 4.2.10
+ graceful-fs: 4.2.11
lazystream: 1.0.1
lodash.defaults: 4.2.0
lodash.difference: 4.5.0
@@ -1957,20 +2376,25 @@ snapshots:
archiver@5.3.2:
dependencies:
archiver-utils: 2.1.0
- async: 3.2.4
+ async: 3.2.5
buffer-crc32: 0.2.13
readable-stream: 3.6.2
readdir-glob: 1.1.3
tar-stream: 2.2.0
zip-stream: 4.1.1
+ are-we-there-yet@3.0.1:
+ dependencies:
+ delegates: 1.0.0
+ readable-stream: 3.6.2
+
argparse@2.0.1: {}
array-union@2.1.0: {}
arrpc@https://codeload.github.com/OpenAsar/arrpc/tar.gz/c62ec6a04c8d870530aa6944257fe745f6c59a24:
dependencies:
- ws: 8.11.0
+ ws: 8.17.0
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -1983,7 +2407,7 @@ snapshots:
async-exit-hook@2.0.1: {}
- async@3.2.4: {}
+ async@3.2.5: {}
asynckit@0.4.0: {}
@@ -2017,14 +2441,12 @@ snapshots:
dependencies:
balanced-match: 1.0.2
- braces@3.0.2:
+ braces@3.0.3:
dependencies:
- fill-range: 7.0.1
+ fill-range: 7.1.1
buffer-crc32@0.2.13: {}
- buffer-equal@1.0.0: {}
-
buffer-from@1.1.2: {}
buffer@5.7.1:
@@ -2032,23 +2454,23 @@ snapshots:
base64-js: 1.5.1
ieee754: 1.2.1
- builder-util-runtime@9.2.4:
+ builder-util-runtime@9.2.5-alpha.2:
dependencies:
- debug: 4.3.4
- sax: 1.2.4
+ debug: 4.3.5
+ sax: 1.4.1
transitivePeerDependencies:
- supports-color
- builder-util@24.13.1:
+ builder-util@25.0.0-alpha.9:
dependencies:
7zip-bin: 5.2.0
- '@types/debug': 4.1.7
- app-builder-bin: 4.0.0
+ '@types/debug': 4.1.12
+ app-builder-bin: 5.0.0-alpha.3
bluebird-lst: 1.0.9
- builder-util-runtime: 9.2.4
+ builder-util-runtime: 9.2.5-alpha.2
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4
+ debug: 4.3.5
fs-extra: 10.1.0
http-proxy-agent: 5.0.0
https-proxy-agent: 5.0.1
@@ -2060,14 +2482,37 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ cacache@16.1.3:
+ dependencies:
+ '@npmcli/fs': 2.1.2
+ '@npmcli/move-file': 2.0.1
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ glob: 8.1.0
+ infer-owner: 1.0.4
+ lru-cache: 7.18.3
+ minipass: 3.3.6
+ minipass-collect: 1.0.2
+ minipass-flush: 1.0.5
+ minipass-pipeline: 1.2.4
+ mkdirp: 1.0.4
+ p-map: 4.0.0
+ promise-inflight: 1.0.1
+ rimraf: 3.0.2
+ ssri: 9.0.1
+ tar: 6.2.1
+ unique-filename: 2.0.1
+ transitivePeerDependencies:
+ - bluebird
+
cacheable-lookup@5.0.4: {}
- cacheable-request@7.0.2:
+ cacheable-request@7.0.4:
dependencies:
clone-response: 1.0.3
get-stream: 5.2.0
- http-cache-semantics: 4.1.0
- keyv: 4.5.2
+ http-cache-semantics: 4.1.1
+ keyv: 4.5.4
lowercase-keys: 2.0.0
normalize-url: 6.1.0
responselike: 2.0.1
@@ -2083,7 +2528,15 @@ snapshots:
chromium-pickle-js@0.2.0: {}
- ci-info@3.6.1: {}
+ ci-info@3.9.0: {}
+
+ clean-stack@2.2.0: {}
+
+ cli-cursor@3.1.0:
+ dependencies:
+ restore-cursor: 3.1.0
+
+ cli-spinners@2.9.2: {}
cli-truncate@2.1.0:
dependencies:
@@ -2112,12 +2565,16 @@ snapshots:
dependencies:
mimic-response: 1.0.1
+ clone@1.0.4: {}
+
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
color-name@1.1.4: {}
+ color-support@1.1.3: {}
+
combined-stream@1.0.8:
dependencies:
delayed-stream: 1.0.0
@@ -2135,10 +2592,17 @@ snapshots:
concat-map@0.0.1: {}
- config-file-ts@0.2.4:
+ config-file-ts@0.2.6:
dependencies:
- glob: 7.2.3
- typescript: 4.9.3
+ glob: 10.4.1
+ typescript: 5.4.5
+
+ config-file-ts@0.2.8-rc1:
+ dependencies:
+ glob: 10.4.1
+ typescript: 5.4.5
+
+ console-control-strings@1.1.0: {}
copyfiles@2.4.1:
dependencies:
@@ -2167,9 +2631,9 @@ snapshots:
buffer: 5.7.1
optional: true
- cross-fetch@3.1.5:
+ cross-fetch@4.0.0(encoding@0.1.13):
dependencies:
- node-fetch: 2.6.7
+ node-fetch: 2.7.0(encoding@0.1.13)
transitivePeerDependencies:
- encoding
@@ -2179,7 +2643,7 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
- debug@4.3.4:
+ debug@4.3.5:
dependencies:
ms: 2.1.2
@@ -2189,90 +2653,113 @@ snapshots:
deep-is@0.1.4: {}
+ defaults@1.0.4:
+ dependencies:
+ clone: 1.0.4
+
defer-to-connect@2.0.1: {}
- define-properties@1.1.4:
+ define-data-property@1.1.4:
dependencies:
- has-property-descriptors: 1.0.0
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ gopd: 1.0.1
+ optional: true
+
+ define-properties@1.2.1:
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
object-keys: 1.1.1
optional: true
delayed-stream@1.0.0: {}
+ delegates@1.0.0: {}
+
+ detect-libc@2.0.3: {}
+
detect-node@2.1.0:
optional: true
- dir-compare@3.3.0:
+ dir-compare@4.2.0:
dependencies:
- buffer-equal: 1.0.0
minimatch: 3.1.2
+ p-limit: 3.1.0
dir-glob@3.0.1:
dependencies:
path-type: 4.0.0
- dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3)):
+ dmg-builder@25.0.0-alpha.9(electron-builder-squirrel-windows@25.0.0-alpha.9):
dependencies:
- app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3)))(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
- builder-util: 24.13.1
- builder-util-runtime: 9.2.4
+ app-builder-lib: 25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9(electron-builder-squirrel-windows@25.0.0-alpha.9))(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9))
+ builder-util: 25.0.0-alpha.9
+ builder-util-runtime: 9.2.5-alpha.2
fs-extra: 10.1.0
iconv-lite: 0.6.3
js-yaml: 4.1.0
optionalDependencies:
dmg-license: 1.0.11
transitivePeerDependencies:
+ - bluebird
- electron-builder-squirrel-windows
- supports-color
dmg-license@1.0.11:
dependencies:
- '@types/plist': 3.0.2
- '@types/verror': 1.10.6
+ '@types/plist': 3.0.5
+ '@types/verror': 1.10.10
ajv: 6.12.6
crc: 3.8.0
iconv-corefoundation: 1.1.7
- plist: 3.0.6
+ plist: 3.1.0
smart-buffer: 4.2.0
verror: 1.10.1
optional: true
- doctrine@3.0.0:
+ dotenv-expand@11.0.6:
dependencies:
- esutils: 2.0.3
+ dotenv: 16.4.5
dotenv-expand@5.1.0: {}
+ dotenv@16.4.5: {}
+
dotenv@9.0.2: {}
- ejs@3.1.8:
- dependencies:
- jake: 10.8.5
+ eastasianwidth@0.2.0: {}
- electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3):
+ ejs@3.1.10:
dependencies:
- app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3)))(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
+ jake: 10.9.1
+
+ electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9):
+ dependencies:
+ app-builder-lib: 25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9(electron-builder-squirrel-windows@25.0.0-alpha.9))(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9))
archiver: 5.3.2
- builder-util: 24.13.1
+ builder-util: 25.0.0-alpha.9
fs-extra: 10.1.0
transitivePeerDependencies:
+ - bluebird
- dmg-builder
- supports-color
- electron-builder@24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3)):
+ electron-builder@25.0.0-alpha.9(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9)):
dependencies:
- app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3)))(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
- builder-util: 24.13.1
- builder-util-runtime: 9.2.4
+ app-builder-lib: 25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9(electron-builder-squirrel-windows@25.0.0-alpha.9))(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@25.0.0-alpha.9))
+ builder-util: 25.0.0-alpha.9
+ builder-util-runtime: 9.2.5-alpha.2
chalk: 4.1.2
- dmg-builder: 24.13.3(electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3))
+ dmg-builder: 25.0.0-alpha.9(electron-builder-squirrel-windows@25.0.0-alpha.9)
fs-extra: 10.1.0
is-ci: 3.0.1
lazy-val: 1.0.5
read-config-file: 6.3.2
simple-update-notifier: 2.0.0
- yargs: 17.6.2
+ yargs: 17.7.2
transitivePeerDependencies:
+ - bluebird
- electron-builder-squirrel-windows
- supports-color
@@ -2290,11 +2777,11 @@ snapshots:
electron-is-dev@3.0.1: {}
- electron-publish@24.13.1:
+ electron-publish@25.0.0-alpha.9:
dependencies:
'@types/fs-extra': 9.0.13
- builder-util: 24.13.1
- builder-util-runtime: 9.2.4
+ builder-util: 25.0.0-alpha.9
+ builder-util-runtime: 9.2.5-alpha.2
chalk: 4.1.2
fs-extra: 10.1.0
lazy-val: 1.0.5
@@ -2302,10 +2789,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- electron@30.0.5:
+ electron@30.1.0:
dependencies:
- '@electron/get': 2.0.2
- '@types/node': 20.11.28
+ '@electron/get': 2.0.3
+ '@types/node': 20.14.2
extract-zip: 2.0.1
transitivePeerDependencies:
- supports-color
@@ -2314,18 +2801,38 @@ snapshots:
emoji-regex@8.0.0: {}
+ emoji-regex@9.2.2: {}
+
+ encoding@0.1.13:
+ dependencies:
+ iconv-lite: 0.6.3
+ optional: true
+
end-of-stream@1.4.4:
dependencies:
once: 1.4.0
+ enhanced-resolve@5.17.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+
env-paths@2.2.1: {}
err-code@2.0.3: {}
+ es-define-property@1.0.0:
+ dependencies:
+ get-intrinsic: 1.2.4
+ optional: true
+
+ es-errors@1.3.0:
+ optional: true
+
es6-error@4.1.1:
optional: true
- escalade@3.1.1: {}
+ escalade@3.1.2: {}
escape-goat@4.0.0: {}
@@ -2333,100 +2840,92 @@ snapshots:
escape-string-regexp@5.0.0: {}
- eslint-config-dmitmel@https://codeload.github.com/dmitmel/eslint-config-dmitmel/tar.gz/d97129ec35235415c6ae6a42299f55cdbb5d75fd(eslint@8.40.0):
+ eslint-compat-utils@0.5.1(eslint@9.4.0):
dependencies:
- eslint: 8.40.0
+ eslint: 9.4.0
+ semver: 7.6.2
- eslint-plugin-es@3.0.1(eslint@8.40.0):
+ eslint-plugin-es-x@7.7.0(eslint@9.4.0):
dependencies:
- eslint: 8.40.0
- eslint-utils: 2.1.0
- regexpp: 3.2.0
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
+ '@eslint-community/regexpp': 4.10.1
+ eslint: 9.4.0
+ eslint-compat-utils: 0.5.1(eslint@9.4.0)
- eslint-plugin-node@11.1.0(eslint@8.40.0):
+ eslint-plugin-n@17.8.1(eslint@9.4.0):
dependencies:
- eslint: 8.40.0
- eslint-plugin-es: 3.0.1(eslint@8.40.0)
- eslint-utils: 2.1.0
- ignore: 5.2.4
- minimatch: 3.1.2
- resolve: 1.22.2
- semver: 6.3.0
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
+ enhanced-resolve: 5.17.0
+ eslint: 9.4.0
+ eslint-plugin-es-x: 7.7.0(eslint@9.4.0)
+ get-tsconfig: 4.7.5
+ globals: 15.4.0
+ ignore: 5.3.1
+ minimatch: 9.0.4
+ semver: 7.6.2
- eslint-plugin-prettier@4.2.1(eslint@8.40.0)(prettier@2.7.1):
+ eslint-plugin-prettier@5.1.3(@types/eslint@8.56.10)(eslint@9.4.0)(prettier@3.3.1):
dependencies:
- eslint: 8.40.0
- prettier: 2.7.1
+ eslint: 9.4.0
+ prettier: 3.3.1
prettier-linter-helpers: 1.0.0
+ synckit: 0.8.8
+ optionalDependencies:
+ '@types/eslint': 8.56.10
- eslint-scope@5.1.1:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 4.3.0
-
- eslint-scope@7.2.0:
+ eslint-scope@8.0.1:
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
- eslint-utils@2.1.0:
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint-visitor-keys@4.0.0: {}
+
+ eslint@9.4.0:
dependencies:
- eslint-visitor-keys: 1.3.0
-
- eslint-visitor-keys@1.3.0: {}
-
- eslint-visitor-keys@3.4.1: {}
-
- eslint@8.40.0:
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0)
- '@eslint-community/regexpp': 4.5.1
- '@eslint/eslintrc': 2.0.3
- '@eslint/js': 8.40.0
- '@humanwhocodes/config-array': 0.11.8
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
+ '@eslint-community/regexpp': 4.10.1
+ '@eslint/config-array': 0.15.1
+ '@eslint/eslintrc': 3.1.0
+ '@eslint/js': 9.4.0
'@humanwhocodes/module-importer': 1.0.1
+ '@humanwhocodes/retry': 0.3.0
'@nodelib/fs.walk': 1.2.8
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4
- doctrine: 3.0.0
+ debug: 4.3.5
escape-string-regexp: 4.0.0
- eslint-scope: 7.2.0
- eslint-visitor-keys: 3.4.1
- espree: 9.5.2
+ eslint-scope: 8.0.1
+ eslint-visitor-keys: 4.0.0
+ espree: 10.0.1
esquery: 1.5.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
+ file-entry-cache: 8.0.0
find-up: 5.0.0
glob-parent: 6.0.2
- globals: 13.20.0
- grapheme-splitter: 1.0.4
- ignore: 5.2.4
- import-fresh: 3.3.0
+ ignore: 5.3.1
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
- js-sdsl: 4.4.0
- js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
- optionator: 0.9.1
+ optionator: 0.9.4
strip-ansi: 6.0.1
- strip-json-comments: 3.1.1
text-table: 0.2.0
transitivePeerDependencies:
- supports-color
- espree@9.5.2:
+ espree@10.0.1:
dependencies:
- acorn: 8.8.2
- acorn-jsx: 5.3.2(acorn@8.8.2)
- eslint-visitor-keys: 3.4.1
+ acorn: 8.11.3
+ acorn-jsx: 5.3.2(acorn@8.11.3)
+ eslint-visitor-keys: 4.0.0
esquery@1.5.0:
dependencies:
@@ -2436,12 +2935,12 @@ snapshots:
dependencies:
estraverse: 5.3.0
- estraverse@4.3.0: {}
-
estraverse@5.3.0: {}
esutils@2.0.3: {}
+ exponential-backoff@3.1.1: {}
+
ext-list@2.2.2:
dependencies:
mime-db: 1.52.0
@@ -2453,11 +2952,11 @@ snapshots:
extract-zip@2.0.1:
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
get-stream: 5.2.0
yauzl: 2.10.0
optionalDependencies:
- '@types/yauzl': 2.10.0
+ '@types/yauzl': 2.10.3
transitivePeerDependencies:
- supports-color
@@ -2466,21 +2965,21 @@ snapshots:
fast-deep-equal@3.1.3: {}
- fast-diff@1.2.0: {}
+ fast-diff@1.3.0: {}
- fast-glob@3.2.12:
+ fast-glob@3.3.2:
dependencies:
'@nodelib/fs.stat': 2.0.5
'@nodelib/fs.walk': 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
- micromatch: 4.0.5
+ micromatch: 4.0.7
fast-json-stable-stringify@2.1.0: {}
fast-levenshtein@2.0.6: {}
- fastq@1.15.0:
+ fastq@1.17.1:
dependencies:
reusify: 1.0.4
@@ -2488,15 +2987,15 @@ snapshots:
dependencies:
pend: 1.2.0
- file-entry-cache@6.0.1:
+ file-entry-cache@8.0.0:
dependencies:
- flat-cache: 3.0.4
+ flat-cache: 4.0.1
filelist@1.0.4:
dependencies:
minimatch: 5.1.6
- fill-range@7.0.1:
+ fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
@@ -2505,12 +3004,17 @@ snapshots:
locate-path: 6.0.0
path-exists: 4.0.0
- flat-cache@3.0.4:
+ flat-cache@4.0.1:
dependencies:
- flatted: 3.2.7
- rimraf: 3.0.2
+ flatted: 3.3.1
+ keyv: 4.5.4
- flatted@3.2.7: {}
+ flatted@3.3.1: {}
+
+ foreground-child@3.1.1:
+ dependencies:
+ cross-spawn: 7.0.3
+ signal-exit: 4.1.0
form-data@4.0.0:
dependencies:
@@ -2522,46 +3026,70 @@ snapshots:
fs-extra@10.1.0:
dependencies:
- graceful-fs: 4.2.10
+ graceful-fs: 4.2.11
jsonfile: 6.1.0
- universalify: 2.0.0
+ universalify: 2.0.1
+
+ fs-extra@11.2.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
fs-extra@8.1.0:
dependencies:
- graceful-fs: 4.2.10
+ graceful-fs: 4.2.11
jsonfile: 4.0.0
universalify: 0.1.2
fs-extra@9.1.0:
dependencies:
at-least-node: 1.0.0
- graceful-fs: 4.2.10
+ graceful-fs: 4.2.11
jsonfile: 6.1.0
- universalify: 2.0.0
+ universalify: 2.0.1
fs-minipass@2.1.0:
dependencies:
- minipass: 3.3.4
+ minipass: 3.3.6
fs.realpath@1.0.0: {}
- function-bind@1.1.1: {}
+ function-bind@1.1.2:
+ optional: true
+
+ gauge@4.0.4:
+ dependencies:
+ aproba: 2.0.0
+ color-support: 1.1.3
+ console-control-strings: 1.1.0
+ has-unicode: 2.0.1
+ signal-exit: 3.0.7
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wide-align: 1.1.5
get-caller-file@2.0.5: {}
get-east-asian-width@1.2.0: {}
- get-intrinsic@1.1.3:
+ get-intrinsic@1.2.4:
dependencies:
- function-bind: 1.1.1
- has: 1.0.3
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ has-proto: 1.0.3
has-symbols: 1.0.3
+ hasown: 2.0.2
optional: true
get-stream@5.2.0:
dependencies:
pump: 3.0.0
+ get-tsconfig@4.7.5:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -2570,6 +3098,14 @@ snapshots:
dependencies:
is-glob: 4.0.3
+ glob@10.4.1:
+ dependencies:
+ foreground-child: 3.1.1
+ jackspeak: 3.4.0
+ minimatch: 9.0.4
+ minipass: 7.1.2
+ path-scurry: 1.11.1
+
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
@@ -2579,77 +3115,97 @@ snapshots:
once: 1.4.0
path-is-absolute: 1.0.1
+ glob@8.1.0:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 5.1.6
+ once: 1.4.0
+
global-agent@3.0.0:
dependencies:
boolean: 3.2.0
es6-error: 4.1.1
matcher: 3.0.0
roarr: 2.15.4
- semver: 7.5.4
+ semver: 7.6.2
serialize-error: 7.0.1
optional: true
- globals@13.20.0:
- dependencies:
- type-fest: 0.20.2
+ globals@14.0.0: {}
- globalthis@1.0.3:
+ globals@15.4.0: {}
+
+ globalthis@1.0.4:
dependencies:
- define-properties: 1.1.4
+ define-properties: 1.2.1
+ gopd: 1.0.1
optional: true
globby@11.1.0:
dependencies:
array-union: 2.1.0
dir-glob: 3.0.1
- fast-glob: 3.2.12
- ignore: 5.2.4
+ fast-glob: 3.3.2
+ ignore: 5.3.1
merge2: 1.4.1
slash: 3.0.0
+ gopd@1.0.1:
+ dependencies:
+ get-intrinsic: 1.2.4
+ optional: true
+
got@11.8.6:
dependencies:
'@sindresorhus/is': 4.6.0
'@szmarczak/http-timer': 4.0.6
'@types/cacheable-request': 6.0.3
- '@types/responselike': 1.0.0
+ '@types/responselike': 1.0.3
cacheable-lookup: 5.0.4
- cacheable-request: 7.0.2
+ cacheable-request: 7.0.4
decompress-response: 6.0.0
http2-wrapper: 1.0.3
lowercase-keys: 2.0.0
p-cancelable: 2.1.1
responselike: 2.0.1
- graceful-fs@4.2.10: {}
+ graceful-fs@4.2.11: {}
- grapheme-splitter@1.0.4: {}
+ graphemer@1.4.0: {}
has-flag@4.0.0: {}
- has-property-descriptors@1.0.0:
+ has-property-descriptors@1.0.2:
dependencies:
- get-intrinsic: 1.1.3
+ es-define-property: 1.0.0
+ optional: true
+
+ has-proto@1.0.3:
optional: true
has-symbols@1.0.3:
optional: true
- has@1.0.3:
+ has-unicode@2.0.1: {}
+
+ hasown@2.0.2:
dependencies:
- function-bind: 1.1.1
+ function-bind: 1.1.2
+ optional: true
hosted-git-info@4.1.0:
dependencies:
lru-cache: 6.0.0
- http-cache-semantics@4.1.0: {}
+ http-cache-semantics@4.1.1: {}
http-proxy-agent@5.0.0:
dependencies:
'@tootallnate/once': 2.0.0
agent-base: 6.0.2
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
@@ -2661,10 +3217,14 @@ snapshots:
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
+ humanize-ms@1.2.1:
+ dependencies:
+ ms: 2.1.3
+
iconv-corefoundation@1.1.7:
dependencies:
cli-truncate: 2.1.0
@@ -2677,7 +3237,7 @@ snapshots:
ieee754@1.2.1: {}
- ignore@5.2.4: {}
+ ignore@5.3.1: {}
import-fresh@3.3.0:
dependencies:
@@ -2686,6 +3246,10 @@ snapshots:
imurmurhash@0.1.4: {}
+ indent-string@4.0.0: {}
+
+ infer-owner@1.0.4: {}
+
inflight@1.0.6:
dependencies:
once: 1.4.0
@@ -2693,13 +3257,14 @@ snapshots:
inherits@2.0.4: {}
+ ip-address@9.0.5:
+ dependencies:
+ jsbn: 1.1.0
+ sprintf-js: 1.1.3
+
is-ci@3.0.1:
dependencies:
- ci-info: 3.6.1
-
- is-core-module@2.11.0:
- dependencies:
- has: 1.0.3
+ ci-info: 3.9.0
is-extglob@2.1.1: {}
@@ -2711,35 +3276,47 @@ snapshots:
dependencies:
is-extglob: 2.1.1
+ is-interactive@1.0.0: {}
+
+ is-lambda@1.0.1: {}
+
is-number@7.0.0: {}
is-path-inside@3.0.3: {}
is-plain-obj@1.1.0: {}
+ is-unicode-supported@0.1.0: {}
+
isarray@0.0.1: {}
isarray@1.0.0: {}
isbinaryfile@4.0.10: {}
- isbinaryfile@5.0.0: {}
+ isbinaryfile@5.0.2: {}
isexe@2.0.0: {}
- jake@10.8.5:
+ jackspeak@3.4.0:
dependencies:
- async: 3.2.4
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+
+ jake@10.9.1:
+ dependencies:
+ async: 3.2.5
chalk: 4.1.2
filelist: 1.0.4
minimatch: 3.1.2
- js-sdsl@4.4.0: {}
-
js-yaml@4.1.0:
dependencies:
argparse: 2.0.1
+ jsbn@1.1.0: {}
+
json-buffer@3.0.1: {}
json-schema-traverse@0.4.1: {}
@@ -2749,19 +3326,19 @@ snapshots:
json-stringify-safe@5.0.1:
optional: true
- json5@2.2.1: {}
+ json5@2.2.3: {}
jsonfile@4.0.0:
optionalDependencies:
- graceful-fs: 4.2.10
+ graceful-fs: 4.2.11
jsonfile@6.1.0:
dependencies:
- universalify: 2.0.0
+ universalify: 2.0.1
optionalDependencies:
- graceful-fs: 4.2.10
+ graceful-fs: 4.2.11
- keyv@4.5.2:
+ keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
@@ -2769,7 +3346,7 @@ snapshots:
lazystream@1.0.1:
dependencies:
- readable-stream: 2.3.7
+ readable-stream: 2.3.8
levn@0.4.1:
dependencies:
@@ -2794,12 +3371,43 @@ snapshots:
lodash@4.17.21: {}
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+
lowercase-keys@2.0.0: {}
+ lru-cache@10.2.2: {}
+
lru-cache@6.0.0:
dependencies:
yallist: 4.0.0
+ lru-cache@7.18.3: {}
+
+ make-fetch-happen@10.2.1:
+ dependencies:
+ agentkeepalive: 4.5.0
+ cacache: 16.1.3
+ http-cache-semantics: 4.1.1
+ http-proxy-agent: 5.0.0
+ https-proxy-agent: 5.0.1
+ is-lambda: 1.0.1
+ lru-cache: 7.18.3
+ minipass: 3.3.6
+ minipass-collect: 1.0.2
+ minipass-fetch: 2.1.2
+ minipass-flush: 1.0.5
+ minipass-pipeline: 1.2.4
+ negotiator: 0.6.3
+ promise-retry: 2.0.1
+ socks-proxy-agent: 7.0.0
+ ssri: 9.0.1
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+
matcher@3.0.0:
dependencies:
escape-string-regexp: 4.0.0
@@ -2807,9 +3415,9 @@ snapshots:
merge2@1.4.1: {}
- micromatch@4.0.5:
+ micromatch@4.0.7:
dependencies:
- braces: 3.0.2
+ braces: 3.0.3
picomatch: 2.3.1
mime-db@1.52.0: {}
@@ -2820,6 +3428,8 @@ snapshots:
mime@2.6.0: {}
+ mimic-fn@2.1.0: {}
+
mimic-response@1.0.1: {}
mimic-response@3.1.0: {}
@@ -2832,41 +3442,113 @@ snapshots:
dependencies:
brace-expansion: 2.0.1
- minimist@1.2.7: {}
+ minimatch@9.0.4:
+ dependencies:
+ brace-expansion: 2.0.1
- minipass@3.3.4:
+ minimist@1.2.8: {}
+
+ minipass-collect@1.0.2:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass-fetch@2.1.2:
+ dependencies:
+ minipass: 3.3.6
+ minipass-sized: 1.0.3
+ minizlib: 2.1.2
+ optionalDependencies:
+ encoding: 0.1.13
+
+ minipass-flush@1.0.5:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass-pipeline@1.2.4:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass-sized@1.0.3:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass@3.3.6:
dependencies:
yallist: 4.0.0
+ minipass@5.0.0: {}
+
+ minipass@7.1.2: {}
+
minizlib@2.1.2:
dependencies:
- minipass: 3.3.4
+ minipass: 3.3.6
yallist: 4.0.0
mkdirp@1.0.4: {}
ms@2.1.2: {}
- natural-compare-lite@1.4.0: {}
+ ms@2.1.3: {}
natural-compare@1.4.0: {}
+ negotiator@0.6.3: {}
+
+ node-abi@3.63.0:
+ dependencies:
+ semver: 7.6.2
+
node-addon-api@1.7.2:
optional: true
- node-fetch@2.6.7:
+ node-api-version@0.2.0:
+ dependencies:
+ semver: 7.6.2
+
+ node-fetch@2.7.0(encoding@0.1.13):
dependencies:
whatwg-url: 5.0.0
+ optionalDependencies:
+ encoding: 0.1.13
+
+ node-gyp@9.4.1:
+ dependencies:
+ env-paths: 2.2.1
+ exponential-backoff: 3.1.1
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ make-fetch-happen: 10.2.1
+ nopt: 6.0.0
+ npmlog: 6.0.2
+ rimraf: 3.0.2
+ semver: 7.6.2
+ tar: 6.2.1
+ which: 2.0.2
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
noms@0.0.0:
dependencies:
inherits: 2.0.4
readable-stream: 1.0.34
+ nopt@6.0.0:
+ dependencies:
+ abbrev: 1.1.1
+
normalize-path@3.0.0: {}
normalize-url@6.1.0: {}
+ npmlog@6.0.2:
+ dependencies:
+ are-we-there-yet: 3.0.1
+ console-control-strings: 1.1.0
+ gauge: 4.0.4
+ set-blocking: 2.0.0
+
object-keys@1.1.1:
optional: true
@@ -2874,14 +3556,30 @@ snapshots:
dependencies:
wrappy: 1.0.2
- optionator@0.9.1:
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
+ optionator@0.9.4:
dependencies:
deep-is: 0.1.4
fast-levenshtein: 2.0.6
levn: 0.4.1
prelude-ls: 1.2.1
type-check: 0.4.0
- word-wrap: 1.2.3
+ word-wrap: 1.2.5
+
+ ora@5.4.1:
+ dependencies:
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.9.2
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
p-cancelable@2.1.1: {}
@@ -2893,6 +3591,10 @@ snapshots:
dependencies:
p-limit: 3.1.0
+ p-map@4.0.0:
+ dependencies:
+ aggregate-error: 3.1.0
+
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
@@ -2905,7 +3607,10 @@ snapshots:
path-key@3.1.1: {}
- path-parse@1.0.7: {}
+ path-scurry@1.11.1:
+ dependencies:
+ lru-cache: 10.2.2
+ minipass: 7.1.2
path-type@4.0.0: {}
@@ -2913,8 +3618,9 @@ snapshots:
picomatch@2.3.1: {}
- plist@3.0.6:
+ plist@3.1.0:
dependencies:
+ '@xmldom/xmldom': 0.8.10
base64-js: 1.5.1
xmlbuilder: 15.1.1
@@ -2922,14 +3628,16 @@ snapshots:
prettier-linter-helpers@1.0.0:
dependencies:
- fast-diff: 1.2.0
+ fast-diff: 1.3.0
- prettier@2.7.1: {}
+ prettier@3.3.1: {}
process-nextick-args@2.0.1: {}
progress@2.0.3: {}
+ promise-inflight@1.0.1: {}
+
promise-retry@2.0.1:
dependencies:
err-code: 2.0.3
@@ -2940,7 +3648,7 @@ snapshots:
end-of-stream: 1.4.4
once: 1.4.0
- punycode@2.1.1: {}
+ punycode@2.3.1: {}
pupa@3.1.0:
dependencies:
@@ -2950,13 +3658,28 @@ snapshots:
quick-lru@5.1.1: {}
+ read-binary-file-arch@1.0.6:
+ dependencies:
+ debug: 4.3.5
+ transitivePeerDependencies:
+ - supports-color
+
read-config-file@6.3.2:
dependencies:
- config-file-ts: 0.2.4
+ config-file-ts: 0.2.6
dotenv: 9.0.2
dotenv-expand: 5.1.0
js-yaml: 4.1.0
- json5: 2.2.1
+ json5: 2.2.3
+ lazy-val: 1.0.5
+
+ read-config-file@6.4.0:
+ dependencies:
+ config-file-ts: 0.2.8-rc1
+ dotenv: 16.4.5
+ dotenv-expand: 11.0.6
+ js-yaml: 4.1.0
+ json5: 2.2.3
lazy-val: 1.0.5
readable-stream@1.0.34:
@@ -2966,7 +3689,7 @@ snapshots:
isarray: 0.0.1
string_decoder: 0.10.31
- readable-stream@2.3.7:
+ readable-stream@2.3.8:
dependencies:
core-util-is: 1.0.3
inherits: 2.0.4
@@ -2979,31 +3702,30 @@ snapshots:
readable-stream@3.6.2:
dependencies:
inherits: 2.0.4
- string_decoder: 1.1.1
+ string_decoder: 1.3.0
util-deprecate: 1.0.2
readdir-glob@1.1.3:
dependencies:
minimatch: 5.1.6
- regexpp@3.2.0: {}
-
require-directory@2.1.1: {}
resolve-alpn@1.2.1: {}
resolve-from@4.0.0: {}
- resolve@1.22.2:
- dependencies:
- is-core-module: 2.11.0
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
+ resolve-pkg-maps@1.0.0: {}
responselike@2.0.1:
dependencies:
lowercase-keys: 2.0.0
+ restore-cursor@3.1.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
retry@0.12.0: {}
reusify@1.0.4: {}
@@ -3016,10 +3738,10 @@ snapshots:
dependencies:
boolean: 3.2.0
detect-node: 2.1.0
- globalthis: 1.0.3
+ globalthis: 1.0.4
json-stringify-safe: 5.0.1
semver-compare: 1.0.0
- sprintf-js: 1.1.2
+ sprintf-js: 1.1.3
optional: true
run-parallel@1.2.0:
@@ -3028,41 +3750,43 @@ snapshots:
safe-buffer@5.1.2: {}
+ safe-buffer@5.2.1: {}
+
safer-buffer@2.1.2: {}
sanitize-filename@1.6.3:
dependencies:
truncate-utf8-bytes: 1.0.2
- sax@1.2.4: {}
+ sax@1.4.1: {}
semver-compare@1.0.0:
optional: true
- semver@6.3.0: {}
+ semver@6.3.1: {}
- semver@7.3.8:
- dependencies:
- lru-cache: 6.0.0
-
- semver@7.5.4:
- dependencies:
- lru-cache: 6.0.0
+ semver@7.6.2: {}
serialize-error@7.0.1:
dependencies:
type-fest: 0.13.1
optional: true
+ set-blocking@2.0.0: {}
+
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
shebang-regex@3.0.0: {}
+ signal-exit@3.0.7: {}
+
+ signal-exit@4.1.0: {}
+
simple-update-notifier@2.0.0:
dependencies:
- semver: 7.5.4
+ semver: 7.6.2
slash@3.0.0: {}
@@ -3078,8 +3802,20 @@ snapshots:
ansi-styles: 6.2.1
is-fullwidth-code-point: 4.0.0
- smart-buffer@4.2.0:
- optional: true
+ smart-buffer@4.2.0: {}
+
+ socks-proxy-agent@7.0.0:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.3.5
+ socks: 2.8.3
+ transitivePeerDependencies:
+ - supports-color
+
+ socks@2.8.3:
+ dependencies:
+ ip-address: 9.0.5
+ smart-buffer: 4.2.0
sort-keys-length@1.0.1:
dependencies:
@@ -3096,8 +3832,11 @@ snapshots:
source-map@0.6.1: {}
- sprintf-js@1.1.2:
- optional: true
+ sprintf-js@1.1.3: {}
+
+ ssri@9.0.1:
+ dependencies:
+ minipass: 3.3.6
stat-mode@1.0.0: {}
@@ -3107,6 +3846,12 @@ snapshots:
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
+ string-width@5.1.2:
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
+
string-width@7.1.0:
dependencies:
emoji-regex: 10.3.0
@@ -3119,6 +3864,10 @@ 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
@@ -3131,7 +3880,7 @@ snapshots:
sumchecker@3.0.1:
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
@@ -3139,7 +3888,12 @@ snapshots:
dependencies:
has-flag: 4.0.0
- supports-preserve-symlinks-flag@1.0.0: {}
+ synckit@0.8.8:
+ dependencies:
+ '@pkgr/core': 0.1.1
+ tslib: 2.6.3
+
+ tapable@2.2.1: {}
tar-stream@2.2.0:
dependencies:
@@ -3149,11 +3903,11 @@ snapshots:
inherits: 2.0.4
readable-stream: 3.6.2
- tar@6.1.12:
+ tar@6.2.1:
dependencies:
chownr: 2.0.0
fs-minipass: 2.1.0
- minipass: 3.3.4
+ minipass: 5.0.0
minizlib: 2.1.2
mkdirp: 1.0.4
yallist: 4.0.0
@@ -3167,16 +3921,14 @@ snapshots:
through2@2.0.5:
dependencies:
- readable-stream: 2.3.7
+ readable-stream: 2.3.8
xtend: 4.0.2
tmp-promise@3.0.3:
dependencies:
- tmp: 0.2.1
+ tmp: 0.2.3
- tmp@0.2.1:
- dependencies:
- rimraf: 3.0.2
+ tmp@0.2.3: {}
to-regex-range@5.0.1:
dependencies:
@@ -3186,14 +3938,13 @@ snapshots:
truncate-utf8-bytes@1.0.2:
dependencies:
- utf8-byte-length: 1.0.4
+ utf8-byte-length: 1.0.5
- tslib@1.14.1: {}
-
- tsutils@3.21.0(typescript@4.9.3):
+ ts-api-utils@1.3.0(typescript@5.4.5):
dependencies:
- tslib: 1.14.1
- typescript: 4.9.3
+ typescript: 5.4.5
+
+ tslib@2.6.3: {}
type-check@0.4.0:
dependencies:
@@ -3202,15 +3953,32 @@ snapshots:
type-fest@0.13.1:
optional: true
- type-fest@0.20.2: {}
+ typescript-eslint@7.12.0(eslint@9.4.0)(typescript@5.4.5):
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 7.12.0(@typescript-eslint/parser@7.12.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/parser': 7.12.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.12.0(eslint@9.4.0)(typescript@5.4.5)
+ eslint: 9.4.0
+ optionalDependencies:
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
- typescript@4.9.3: {}
+ typescript@5.4.5: {}
undici-types@5.26.5: {}
+ unique-filename@2.0.1:
+ dependencies:
+ unique-slug: 3.0.0
+
+ unique-slug@3.0.0:
+ dependencies:
+ imurmurhash: 0.1.4
+
universalify@0.1.2: {}
- universalify@2.0.0: {}
+ universalify@2.0.1: {}
untildify@4.0.0: {}
@@ -3221,13 +3989,13 @@ snapshots:
uri-js@4.4.1:
dependencies:
- punycode: 2.1.1
+ punycode: 2.3.1
- utf8-byte-length@1.0.4: {}
+ utf8-byte-length@1.0.5: {}
util-deprecate@1.0.2: {}
- v8-compile-cache@2.3.0: {}
+ v8-compile-cache@2.4.0: {}
verror@1.10.1:
dependencies:
@@ -3236,6 +4004,10 @@ snapshots:
extsprintf: 1.4.1
optional: true
+ wcwidth@1.0.1:
+ dependencies:
+ defaults: 1.0.4
+
webidl-conversions@3.0.1: {}
whatwg-url@5.0.0:
@@ -3247,7 +4019,11 @@ snapshots:
dependencies:
isexe: 2.0.0
- word-wrap@1.2.3: {}
+ wide-align@1.1.5:
+ dependencies:
+ string-width: 4.2.3
+
+ word-wrap@1.2.5: {}
wrap-ansi@7.0.0:
dependencies:
@@ -3255,9 +4031,15 @@ snapshots:
string-width: 4.2.3
strip-ansi: 6.0.1
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+
wrappy@1.0.2: {}
- ws@8.11.0: {}
+ ws@8.17.0: {}
xmlbuilder@15.1.1: {}
@@ -3274,17 +4056,17 @@ snapshots:
yargs@16.2.0:
dependencies:
cliui: 7.0.4
- escalade: 3.1.1
+ escalade: 3.1.2
get-caller-file: 2.0.5
require-directory: 2.1.1
string-width: 4.2.3
y18n: 5.0.8
yargs-parser: 20.2.9
- yargs@17.6.2:
+ yargs@17.7.2:
dependencies:
cliui: 8.0.1
- escalade: 3.1.1
+ escalade: 3.1.2
get-caller-file: 2.0.5
require-directory: 2.1.1
string-width: 4.2.3
diff --git a/prettier.config.cjs b/prettier.config.js
similarity index 78%
rename from prettier.config.cjs
rename to prettier.config.js
index d8902c1..dfabec1 100644
--- a/prettier.config.cjs
+++ b/prettier.config.js
@@ -1,4 +1,5 @@
-module.exports = {
+/** @type {import("prettier").Config} */
+const config = {
printWidth: 120,
tabWidth: 4,
useTabs: false,
@@ -12,3 +13,5 @@ module.exports = {
arrowParens: "always",
endOfLine: "auto"
};
+
+export default config;
diff --git a/src/common/config.ts b/src/common/config.ts
index 8b5de07..43dd0fa 100644
--- a/src/common/config.ts
+++ b/src/common/config.ts
@@ -1,6 +1,7 @@
import {app, dialog} from "electron";
import path from "path";
import fs from "fs";
+import type {Settings} from "../types/settings.d.js";
import {getWindowStateLocation} from "./windowState.js";
export let firstRun: boolean;
export function checkForDataFolder(): void {
@@ -11,64 +12,32 @@ export function checkForDataFolder(): void {
}
}
-export interface Settings {
- // Referenced for detecting a broken config.
- "0"?: string;
- // Referenced once for disabling mod updating.
- noBundleUpdates?: boolean;
- // Only used for external url warning dialog.
- ignoreProtocolWarning?: boolean;
- customIcon: string;
- windowStyle: string;
- channel: string;
- armcordCSP: boolean;
- minimizeToTray: boolean;
- multiInstance: boolean;
- spellcheck: boolean;
- mods: string;
- dynamicIcon: boolean;
- mobileMode: boolean;
- skipSplash: boolean;
- performanceMode: string;
- customJsBundle: RequestInfo | URL;
- customCssBundle: RequestInfo | URL;
- startMinimized: boolean;
- useLegacyCapturer: boolean;
- tray: boolean;
- keybinds: Array;
- inviteWebsocket: boolean;
- disableAutogain: boolean;
- trayIcon: string;
- doneSetup: boolean;
- clientName: string;
-}
export function getConfigLocation(): string {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
return `${storagePath}settings.json`;
}
-export async function getConfig(object: K): Promise {
- let rawdata = fs.readFileSync(getConfigLocation(), "utf-8");
- let returndata = JSON.parse(rawdata);
- return returndata[object];
+// REVIEW - If I remember correctly fs doesn't need async. I have adjusted the Promise to reflect so.
+// Why touch it when it worked fine? The Async-ness of this function caused headaches in a lot of other places.
+// Tested with src/tray.ts - Seems to work great!
+// NOTE - Removed getConfigSync(object: K) - Redundant now.
+export function getConfig(object: K): Settings[K] {
+ const rawData = fs.readFileSync(getConfigLocation(), "utf-8");
+ const returnData = JSON.parse(rawData) as Settings;
+ return returnData[object];
}
-export function getConfigSync(object: K) {
- let rawdata = fs.readFileSync(getConfigLocation(), "utf-8");
- let returndata = JSON.parse(rawdata);
- return returndata[object];
-}
-export async function setConfig(object: K, toSet: Settings[K]): Promise {
- let rawdata = fs.readFileSync(getConfigLocation(), "utf-8");
- let parsed = JSON.parse(rawdata);
+export function setConfig(object: K, toSet: Settings[K]): void {
+ const rawData = fs.readFileSync(getConfigLocation(), "utf-8");
+ const parsed = JSON.parse(rawData) as Settings;
parsed[object] = toSet;
- let toSave = JSON.stringify(parsed, null, 4);
+ const toSave = JSON.stringify(parsed, null, 4);
fs.writeFileSync(getConfigLocation(), toSave, "utf-8");
}
-export async function setConfigBulk(object: Settings): Promise {
+export function setConfigBulk(object: Settings): void {
let existingData = {};
try {
const existingDataBuffer = fs.readFileSync(getConfigLocation(), "utf-8");
- existingData = JSON.parse(existingDataBuffer.toString());
+ existingData = JSON.parse(existingDataBuffer.toString()) as Settings;
} catch (error) {
// Ignore errors when the file doesn't exist or parsing fails
}
@@ -78,7 +47,7 @@ export async function setConfigBulk(object: Settings): Promise {
const toSave = JSON.stringify(mergedData, null, 4);
fs.writeFileSync(getConfigLocation(), toSave, "utf-8");
}
-export async function checkIfConfigExists(): Promise {
+export function checkIfConfigExists(): void {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
const settingsFile = `${storagePath}settings.json`;
@@ -91,7 +60,7 @@ export async function checkIfConfigExists(): Promise {
console.log("First run of the ArmCord. Starting setup.");
setup();
firstRun = true;
- } else if ((await getConfig("doneSetup")) == false) {
+ } else if (getConfig("doneSetup") == false) {
console.log("First run of the ArmCord. Starting setup.");
setup();
firstRun = true;
@@ -99,9 +68,9 @@ export async function checkIfConfigExists(): Promise {
console.log("ArmCord has been run before. Skipping setup.");
}
}
-export async function checkIfConfigIsBroken(): Promise {
+export function checkIfConfigIsBroken(): void {
try {
- let settingsData = fs.readFileSync(getConfigLocation(), "utf-8");
+ const settingsData = fs.readFileSync(getConfigLocation(), "utf-8");
JSON.parse(settingsData);
console.log("Config is fine");
} catch (e) {
@@ -114,7 +83,7 @@ export async function checkIfConfigIsBroken(): Promise {
);
}
try {
- let windowData = fs.readFileSync(getWindowStateLocation(), "utf-8");
+ const windowData = fs.readFileSync(getWindowStateLocation(), "utf-8");
JSON.parse(windowData);
console.log("Window config is fine");
} catch (e) {
diff --git a/src/common/dom.ts b/src/common/dom.ts
index 7f0a73b..dc24e1a 100644
--- a/src/common/dom.ts
+++ b/src/common/dom.ts
@@ -5,7 +5,7 @@ export function addStyle(styleString: string): void {
}
export function addScript(scriptString: string): void {
- let script = document.createElement("script");
+ const script = document.createElement("script");
script.textContent = scriptString;
document.body.append(script);
}
diff --git a/src/common/flags.ts b/src/common/flags.ts
index bbd68e7..4b87581 100644
--- a/src/common/flags.ts
+++ b/src/common/flags.ts
@@ -2,7 +2,7 @@ import {app} from "electron";
import {getConfig} from "./config.js";
export let transparency: boolean;
-export async function injectElectronFlags(): Promise {
+export function injectElectronFlags(): void {
// MIT License
// Copyright (c) 2022 GooseNest
@@ -29,7 +29,7 @@ export async function injectElectronFlags(): Promise {
battery: "--enable-features=TurnOffStreamingMediaCachingOnBattery --force_low_power_gpu", // Known to have better battery life for Chromium?
vaapi: "--ignore-gpu-blocklist --enable-features=VaapiVideoDecoder --enable-gpu-rasterization --enable-zero-copy --force_high_performance_gpu --use-gl=desktop --disable-features=UseChromeOSDirectVideoDecoder"
};
- switch (await getConfig("performanceMode")) {
+ switch (getConfig("performanceMode")) {
case "performance":
console.log("Performance mode enabled");
app.commandLine.appendArgument(presets.performance);
@@ -41,7 +41,7 @@ export async function injectElectronFlags(): Promise {
default:
console.log("No performance modes set");
}
- if ((await getConfig("windowStyle")) == "transparent" && process.platform === "win32") {
+ if (getConfig("windowStyle") == "transparent" && process.platform === "win32") {
transparency = true;
}
}
diff --git a/src/common/lang.ts b/src/common/lang.ts
index 3035256..b222767 100644
--- a/src/common/lang.ts
+++ b/src/common/lang.ts
@@ -1,26 +1,27 @@
import {app} from "electron";
import path from "path";
import fs from "fs";
-export async function setLang(language: string): Promise {
+import {i18nStrings} from "../types/i18nStrings";
+export function setLang(language: string): void {
const langConfigFile = `${path.join(app.getPath("userData"), "/storage/")}lang.json`;
if (!fs.existsSync(langConfigFile)) {
fs.writeFileSync(langConfigFile, "{}", "utf-8");
}
- let rawdata = fs.readFileSync(langConfigFile, "utf-8");
- let parsed = JSON.parse(rawdata);
+ const rawData = fs.readFileSync(langConfigFile, "utf-8");
+ const parsed = JSON.parse(rawData) as i18nStrings;
parsed.lang = language;
- let toSave = JSON.stringify(parsed, null, 4);
+ const toSave = JSON.stringify(parsed, null, 4);
fs.writeFileSync(langConfigFile, toSave, "utf-8");
}
let language: string;
-export async function getLang(object: string): Promise {
+export function getLang(object: string): string {
if (language == undefined) {
try {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
const langConfigFile = `${storagePath}lang.json`;
- let rawdata = fs.readFileSync(langConfigFile, "utf-8");
- let parsed = JSON.parse(rawdata);
+ const rawData = fs.readFileSync(langConfigFile, "utf-8");
+ const parsed = JSON.parse(rawData) as i18nStrings;
language = parsed.lang;
} catch (_e) {
console.log("Language config file doesn't exist. Fallback to English.");
@@ -34,26 +35,26 @@ export async function getLang(object: string): Promise {
if (!fs.existsSync(langPath)) {
langPath = path.join(import.meta.dirname, "../", "/assets/lang/en-US.json");
}
- let rawdata = fs.readFileSync(langPath, "utf-8");
- let parsed = JSON.parse(rawdata);
+ let rawData = fs.readFileSync(langPath, "utf-8");
+ let parsed = JSON.parse(rawData) as i18nStrings;
if (parsed[object] == undefined) {
console.log(`${object} is undefined in ${language}`);
langPath = path.join(import.meta.dirname, "../", "/assets/lang/en-US.json");
- rawdata = fs.readFileSync(langPath, "utf-8");
- parsed = JSON.parse(rawdata);
+ rawData = fs.readFileSync(langPath, "utf-8");
+ parsed = JSON.parse(rawData) as i18nStrings;
return parsed[object];
} else {
return parsed[object];
}
}
-export async function getLangName(): Promise {
+export function getLangName(): string {
if (language == undefined) {
try {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
const langConfigFile = `${storagePath}lang.json`;
- let rawdata = fs.readFileSync(langConfigFile, "utf-8");
- let parsed = JSON.parse(rawdata);
+ const rawData = fs.readFileSync(langConfigFile, "utf-8");
+ const parsed = JSON.parse(rawData) as i18nStrings;
language = parsed.lang;
} catch (_e) {
console.log("Language config file doesn't exist. Fallback to English.");
diff --git a/src/common/windowState.ts b/src/common/windowState.ts
index efc9847..9377d98 100644
--- a/src/common/windowState.ts
+++ b/src/common/windowState.ts
@@ -1,34 +1,31 @@
import {app} from "electron";
import path from "path";
import fs from "fs";
-export interface WindowState {
- width: number;
- height: number;
- x: number;
- y: number;
- isMaximized: boolean;
-}
+import {WindowState} from "../types/windowState";
export function getWindowStateLocation() {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
return `${storagePath}window.json`;
}
-export async function setWindowState(object: WindowState): Promise {
+export function setWindowState(object: WindowState): void {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
const saveFile = `${storagePath}window.json`;
- let toSave = JSON.stringify(object, null, 4);
+ const toSave = JSON.stringify(object, null, 4);
fs.writeFileSync(saveFile, toSave, "utf-8");
}
-export async function getWindowState(object: K): Promise {
+
+// REVIEW - Similar to getConfig, this seems to return a promise when it has no async. Originally Promise
+
+export function getWindowState(object: K): WindowState[K] {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
const settingsFile = `${storagePath}window.json`;
if (!fs.existsSync(settingsFile)) {
fs.writeFileSync(settingsFile, "{}", "utf-8");
}
- let rawdata = fs.readFileSync(settingsFile, "utf-8");
- let returndata = JSON.parse(rawdata);
- console.log(`[Window state manager] ${returndata}`);
- return returndata[object];
+ const rawData = fs.readFileSync(settingsFile, "utf-8");
+ const returnData = JSON.parse(rawData) as WindowState;
+ console.log(`[Window state manager] ${JSON.stringify(returnData)}`);
+ return returnData[object];
}
diff --git a/src/discord/content/css/inAppSettings.css b/src/discord/content/css/inAppSettings.css
index 489ec88..aafb592 100644
--- a/src/discord/content/css/inAppSettings.css
+++ b/src/discord/content/css/inAppSettings.css
@@ -34,7 +34,9 @@
border-radius: 10px;
width: 80%;
height: 80%;
- box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
+ box-shadow:
+ 0 4px 8px 0 rgba(0, 0, 0, 0.2),
+ 0 6px 20px 0 rgba(0, 0, 0, 0.19);
-webkit-animation-name: animatetop;
-webkit-animation-duration: 0.4s;
animation-name: animatetop;
diff --git a/src/discord/content/css/screenshare.css b/src/discord/content/css/screenshare.css
index 77fa8a4..308c934 100644
--- a/src/discord/content/css/screenshare.css
+++ b/src/discord/content/css/screenshare.css
@@ -47,7 +47,9 @@
.desktop-capturer-selection__btn:hover,
.desktop-capturer-selection__btn:focus {
background: #7289da;
- box-shadow: 0 0 4px rgba(0, 0, 0, 0.45), 0 0 2px rgba(0, 0, 0, 0.25);
+ box-shadow:
+ 0 0 4px rgba(0, 0, 0, 0.45),
+ 0 0 2px rgba(0, 0, 0, 0.25);
color: #fff;
}
.desktop-capturer-selection__thumbnail {
diff --git a/src/discord/content/js/disableAutogain.js b/src/discord/content/js/disableAutogain.js
index e53e88a..f5c7b60 100644
--- a/src/discord/content/js/disableAutogain.js
+++ b/src/discord/content/js/disableAutogain.js
@@ -50,7 +50,7 @@ function setConstraint(constraint, name, value) {
}
function disableAutogain(constraints) {
console.log("Automatically unsetting gain!", constraints);
- if (constraints && constraints.audio) {
+ if (constraints?.audio) {
if (typeof constraints.audio !== "object") {
constraints.audio = {};
}
diff --git a/src/discord/extensions/csp.ts b/src/discord/extensions/csp.ts
index 86df102..c4b4acf 100644
--- a/src/discord/extensions/csp.ts
+++ b/src/discord/extensions/csp.ts
@@ -1,8 +1,8 @@
import electron from "electron";
import {getConfig} from "../../common/config.js";
-const unstrictCSP = (): void => {
- console.log("Setting up CSP unstricter...");
+const unrestrictCSP = (): void => {
+ console.log("Setting up CSP unrestricter...");
electron.session.defaultSession.webRequest.onHeadersReceived(({responseHeaders, resourceType}, done) => {
if (!responseHeaders) return done({});
@@ -19,9 +19,10 @@ const unstrictCSP = (): void => {
});
};
-electron.app.whenReady().then(async () => {
- if (await getConfig("armcordCSP")) {
- unstrictCSP();
+void electron.app.whenReady().then(() => {
+ // REVIEW - Awaiting the line above will hang the app.
+ if (getConfig("armcordCSP")) {
+ unrestrictCSP();
} else {
console.log("ArmCord CSP is disabled. The CSP should be managed by a third-party plugin(s).");
}
diff --git a/src/discord/extensions/mods.ts b/src/discord/extensions/mods.ts
index c8517c4..c30371e 100644
--- a/src/discord/extensions/mods.ts
+++ b/src/discord/extensions/mods.ts
@@ -3,23 +3,23 @@ import extract from "extract-zip";
import path from "path";
import {getConfig} from "../../common/config.js";
import fs from "fs";
-import {promisify} from "node:util";
-import {pipeline} from "stream";
-const streamPipeline = promisify(pipeline);
+import {Readable} from "stream";
+import type {ReadableStream} from "stream/web";
+import {finished} from "stream/promises";
async function updateModBundle(): Promise {
- if ((await getConfig("noBundleUpdates")) == undefined ?? false) {
+ if (getConfig("noBundleUpdates") == undefined || false) {
try {
console.log("Downloading mod bundle");
const distFolder = `${app.getPath("userData")}/plugins/loader/dist/`;
while (!fs.existsSync(distFolder)) {
//waiting
}
- let name: string = await getConfig("mods");
+ const name: string = getConfig("mods");
if (name == "custom") {
// aspy fix
- let bundle: string = await (await fetch(await getConfig("customJsBundle"))).text();
+ const bundle: string = await (await fetch(getConfig("customJsBundle"))).text();
fs.writeFileSync(`${distFolder}bundle.js`, bundle, "utf-8");
- let css: string = await (await fetch(await getConfig("customCssBundle"))).text();
+ const css: string = await (await fetch(getConfig("customCssBundle"))).text();
fs.writeFileSync(`${distFolder}bundle.css`, css, "utf-8");
} else {
const clientMods = {
@@ -31,9 +31,9 @@ async function updateModBundle(): Promise {
shelter: "https://armcord.app/placeholder.css"
};
console.log(clientMods[name as keyof typeof clientMods]);
- let bundle: string = await (await fetch(clientMods[name as keyof typeof clientMods])).text();
+ const bundle: string = await (await fetch(clientMods[name as keyof typeof clientMods])).text();
fs.writeFileSync(`${distFolder}bundle.js`, bundle, "utf-8");
- let css: string = await (await fetch(clientModsCss[name as keyof typeof clientModsCss])).text();
+ const css: string = await (await fetch(clientModsCss[name as keyof typeof clientModsCss])).text();
fs.writeFileSync(`${distFolder}bundle.css`, css, "utf-8");
}
} catch (e) {
@@ -53,14 +53,14 @@ export let modInstallState: string;
export function updateModInstallState() {
modInstallState = "modDownload";
- updateModBundle();
+ void updateModBundle(); // REVIEW - Awaiting this will hang the app on the splash
import("./plugin.js");
modInstallState = "done";
}
export async function installModLoader(): Promise {
- if ((await getConfig("mods")) == "none") {
+ if (getConfig("mods") == "none") {
modInstallState = "none";
fs.rmSync(`${app.getPath("userData")}/plugins/loader`, {recursive: true, force: true});
@@ -80,7 +80,7 @@ export async function installModLoader(): Promise {
fs.rmSync(`${app.getPath("userData")}/plugins/loader`, {recursive: true, force: true});
modInstallState = "installing";
- let zipPath = `${app.getPath("temp")}/loader.zip`;
+ const zipPath = `${app.getPath("temp")}/loader.zip`;
if (!fs.existsSync(pluginFolder)) {
fs.mkdirSync(pluginFolder);
@@ -88,31 +88,35 @@ export async function installModLoader(): Promise {
}
// Add more of these later if needed!
- let URLs = [
+ const URLs = [
"https://armcord.app/loader.zip",
"https://armcord.vercel.app/loader.zip",
"https://raw.githubusercontent.com/ArmCord/website/new/public/loader.zip"
];
- let loaderZip: any;
+ // REVIEW - Rewrote this
while (true) {
- if (URLs.length <= 0) throw new Error(`unexpected response ${loaderZip.statusText}`);
-
- try {
- loaderZip = await fetch(URLs[0]);
- } catch (err) {
- console.log("[Mod loader] Failed to download. Links left to try: " + (URLs.length - 1));
- URLs.splice(0, 1);
-
- continue;
+ let completed = false;
+ await fetch(URLs[0])
+ .then(async (loaderZip) => {
+ const fileStream = fs.createWriteStream(zipPath);
+ await finished(Readable.fromWeb(loaderZip.body as ReadableStream).pipe(fileStream)).then(
+ async () => {
+ await extract(zipPath, {dir: path.join(app.getPath("userData"), "plugins")}).then(() => {
+ updateModInstallState();
+ completed = true;
+ });
+ }
+ );
+ })
+ .catch(() => {
+ console.warn(`[Mod loader] Failed to download. Links left to try: ${URLs.length - 1}`);
+ URLs.splice(0, 1);
+ });
+ if (completed || URLs.length == 0) {
+ break;
}
-
- break;
}
- await streamPipeline(loaderZip.body, fs.createWriteStream(zipPath));
- await extract(zipPath, {dir: path.join(app.getPath("userData"), "plugins")});
-
- updateModInstallState();
} catch (e) {
console.log("[Mod loader] Failed to install modloader");
console.error(e);
diff --git a/src/discord/extensions/plugin.ts b/src/discord/extensions/plugin.ts
index f33056a..7035177 100644
--- a/src/discord/extensions/plugin.ts
+++ b/src/discord/extensions/plugin.ts
@@ -1,4 +1,4 @@
-import * as fs from "fs";
+import fs from "fs";
import {app, session} from "electron";
const userDataPath = app.getPath("userData");
const pluginFolder = `${userDataPath}/plugins`;
@@ -6,12 +6,13 @@ if (!fs.existsSync(pluginFolder)) {
fs.mkdirSync(pluginFolder);
console.log("Created missing plugin folder");
}
-app.whenReady().then(() => {
+await app.whenReady().then(() => {
fs.readdirSync(pluginFolder).forEach((file) => {
try {
const manifest = fs.readFileSync(`${pluginFolder}/${file}/manifest.json`, "utf8");
- const pluginFile = JSON.parse(manifest);
- session.defaultSession.loadExtension(`${pluginFolder}/${file}`);
+ // NOTE - The below type assertion is just what we need from the chrome manifest
+ const pluginFile = JSON.parse(manifest) as {name: string; author: string};
+ void session.defaultSession.loadExtension(`${pluginFolder}/${file}`); // REVIEW - Awaiting this will cause plugins to not inject
console.log(`[Mod loader] Loaded ${pluginFile.name} made by ${pluginFile.author}`);
} catch (err) {
console.error(err);
diff --git a/src/discord/ipc.ts b/src/discord/ipc.ts
index 14891bd..6fc93fe 100644
--- a/src/discord/ipc.ts
+++ b/src/discord/ipc.ts
@@ -1,19 +1,19 @@
//ipc stuff
-import {app, clipboard, desktopCapturer, ipcMain, nativeImage, shell} from "electron";
+import {app, clipboard, desktopCapturer, ipcMain, nativeImage, shell, SourcesOptions} from "electron";
import {mainWindow} from "./window.js";
import os from "os";
import fs from "fs";
import path from "path";
-import {getConfig, setConfigBulk, getConfigLocation, Settings} from "../common/config.js";
+import {getConfig, setConfigBulk, getConfigLocation} from "../common/config.js";
import {setLang, getLang, getLangName} from "../common/lang.js";
-import {sleep} from "../common/sleep.js";
import {getVersion, getDisplayVersion} from "../common/version.js";
import {customTitlebar} from "../main.js";
import {createSettingsWindow} from "../settings/main.js";
import {splashWindow} from "../splash/main.js";
import {createTManagerWindow} from "../themeManager/main.js";
import {modInstallState} from "./extensions/mods.js";
+import {Settings} from "../types/settings.d.js";
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
@@ -30,7 +30,7 @@ export function registerIpc(): void {
return getLang(toGet);
});
ipcMain.on("open-external-link", (_event, href: string) => {
- shell.openExternal(href);
+ void shell.openExternal(href);
});
ipcMain.on("setPing", (_event, pingCount: number) => {
switch (os.platform()) {
@@ -39,7 +39,7 @@ export function registerIpc(): void {
break;
case "win32":
if (pingCount > 0) {
- let image = nativeImage.createFromPath(path.join(import.meta.dirname, "../", `/assets/ping.png`));
+ const image = nativeImage.createFromPath(path.join(import.meta.dirname, "../", `/assets/ping.png`));
mainWindow.setOverlayIcon(image, "badgeCount");
} else {
mainWindow.setOverlayIcon(null, "badgeCount");
@@ -80,9 +80,9 @@ export function registerIpc(): void {
ipcMain.on("modInstallState", (event) => {
event.returnValue = modInstallState;
});
- ipcMain.on("splashEnd", async () => {
+ ipcMain.on("splashEnd", () => {
splashWindow.close();
- if (await getConfig("startMinimized")) {
+ if (getConfig("startMinimized")) {
mainWindow.hide();
} else {
mainWindow.show();
@@ -92,75 +92,77 @@ export function registerIpc(): void {
app.relaunch();
app.exit();
});
- ipcMain.on("minimizeToTray", async (event) => {
- event.returnValue = await getConfig("minimizeToTray");
+ ipcMain.on("saveSettings", (_event, args: Settings) => {
+ setConfigBulk(args);
});
- ipcMain.on("channel", async (event) => {
- event.returnValue = await getConfig("channel");
+ ipcMain.on("minimizeToTray", (event) => {
+ event.returnValue = getConfig("minimizeToTray");
});
- ipcMain.on("clientmod", async (event) => {
- event.returnValue = await getConfig("mods");
+ ipcMain.on("channel", (event) => {
+ event.returnValue = getConfig("channel");
});
- ipcMain.on("legacyCapturer", async (event) => {
- event.returnValue = await getConfig("useLegacyCapturer");
+ ipcMain.on("clientmod", (event) => {
+ event.returnValue = getConfig("mods");
});
- ipcMain.on("trayIcon", async (event) => {
- event.returnValue = await getConfig("trayIcon");
+ ipcMain.on("legacyCapturer", (event) => {
+ event.returnValue = getConfig("useLegacyCapturer");
});
- ipcMain.on("disableAutogain", async (event) => {
- event.returnValue = await getConfig("disableAutogain");
+ ipcMain.on("trayIcon", (event) => {
+ event.returnValue = getConfig("trayIcon");
+ });
+ ipcMain.on("disableAutogain", (event) => {
+ event.returnValue = getConfig("disableAutogain");
});
ipcMain.on("titlebar", (event) => {
event.returnValue = customTitlebar;
});
- ipcMain.on("mobileMode", async (event) => {
- event.returnValue = await getConfig("mobileMode");
+ ipcMain.on("mobileMode", (event) => {
+ event.returnValue = getConfig("mobileMode");
});
+ // REVIEW - I don't see a reason to await the actual action of running the settings window. The user cannot open more than one anyway, as defined in the function.
ipcMain.on("openSettingsWindow", () => {
- createSettingsWindow();
+ void createSettingsWindow();
});
ipcMain.on("openManagerWindow", () => {
- createTManagerWindow();
+ void createTManagerWindow();
});
- ipcMain.on("setting-armcordCSP", async (event) => {
- if (await getConfig("armcordCSP")) {
+ ipcMain.on("setting-armcordCSP", (event) => {
+ if (getConfig("armcordCSP")) {
event.returnValue = true;
} else {
event.returnValue = false;
}
});
- ipcMain.handle("DESKTOP_CAPTURER_GET_SOURCES", (_event, opts) => desktopCapturer.getSources(opts));
+ // NOTE - I assume this would return sources based on the fact that the function only ingests sources
+ ipcMain.handle("DESKTOP_CAPTURER_GET_SOURCES", (_event, opts: SourcesOptions) => desktopCapturer.getSources(opts));
ipcMain.on("saveSettings", (_event, args: Settings) => {
console.log(args);
setConfigBulk(args);
});
- ipcMain.on("openStorageFolder", async () => {
+ // REVIEW - The lower 4 functions had await sleep(1000), I'm not sure why. Behavior is same regardless
+ ipcMain.on("openStorageFolder", () => {
shell.showItemInFolder(storagePath);
- await sleep(1000);
});
- ipcMain.on("openThemesFolder", async () => {
+ ipcMain.on("openThemesFolder", () => {
shell.showItemInFolder(themesPath);
- await sleep(1000);
});
- ipcMain.on("openPluginsFolder", async () => {
+ ipcMain.on("openPluginsFolder", () => {
shell.showItemInFolder(pluginsPath);
- await sleep(1000);
});
- ipcMain.on("openCrashesFolder", async () => {
+ ipcMain.on("openCrashesFolder", () => {
shell.showItemInFolder(path.join(app.getPath("temp"), `${app.getName()} Crashes`));
- await sleep(1000);
});
- ipcMain.on("getLangName", async (event) => {
- event.returnValue = await getLangName();
+ ipcMain.on("getLangName", (event) => {
+ event.returnValue = getLangName();
});
- ipcMain.on("crash", async () => {
+ ipcMain.on("crash", () => {
process.crash();
});
ipcMain.handle("getSetting", (_event, toGet: keyof Settings) => {
return getConfig(toGet);
});
ipcMain.on("copyDebugInfo", () => {
- let settingsFileContent = fs.readFileSync(getConfigLocation(), "utf-8");
+ const settingsFileContent = fs.readFileSync(getConfigLocation(), "utf-8");
clipboard.writeText(
`**OS:** ${os.platform()} ${os.version()}\n**Architecture:** ${os.arch()}\n**ArmCord version:** ${getVersion()}\n**Electron version:** ${
process.versions.electron
diff --git a/src/discord/menu.ts b/src/discord/menu.ts
index 734eefb..6b8aeef 100644
--- a/src/discord/menu.ts
+++ b/src/discord/menu.ts
@@ -1,17 +1,9 @@
-import {BrowserWindow, Menu, app, clipboard} from "electron";
+import {BrowserWindow, Menu, app} from "electron";
import {mainWindow} from "./window.js";
import {createSettingsWindow} from "../settings/main.js";
-function paste(contents: any): void {
- const contentTypes = clipboard.availableFormats().toString();
- //Workaround: fix pasting the images.
- if (contentTypes.includes("image/") && contentTypes.includes("text/html")) {
- clipboard.writeImage(clipboard.readImage());
- }
- contents.paste();
-}
-export async function setMenu(): Promise {
- let template: Electron.MenuItemConstructorOptions[] = [
+export function setMenu(): void {
+ const template: Electron.MenuItemConstructorOptions[] = [
{
label: "ArmCord",
submenu: [
@@ -28,7 +20,7 @@ export async function setMenu(): Promise {
label: "Open settings",
accelerator: "CmdOrCtrl+Shift+'",
click() {
- createSettingsWindow();
+ void createSettingsWindow();
}
},
{
@@ -67,13 +59,6 @@ export async function setMenu(): Promise {
{type: "separator"},
{label: "Cut", accelerator: "CmdOrCtrl+X", role: "cut"},
{label: "Copy", accelerator: "CmdOrCtrl+C", role: "copy"},
- {
- label: "Paste",
- accelerator: "CmdOrCtrl+V",
- click() {
- paste(mainWindow.webContents);
- }
- },
{label: "Select All", accelerator: "CmdOrCtrl+A", role: "selectAll"}
]
},
diff --git a/src/discord/preload/bridge.mts b/src/discord/preload/bridge.ts
similarity index 77%
rename from src/discord/preload/bridge.mts
rename to src/discord/preload/bridge.ts
index b055872..0529d9b 100644
--- a/src/discord/preload/bridge.mts
+++ b/src/discord/preload/bridge.ts
@@ -1,8 +1,9 @@
-import {contextBridge, ipcRenderer} from "electron";
+import {contextBridge, ipcRenderer, type SourcesOptions} from "electron";
import {injectTitlebar} from "./titlebar.mjs";
+import type {ArmCordWindow} from "../../types/armcordWindow.d.js";
const CANCEL_ID = "desktop-capturer-selection__cancel";
const desktopCapturer = {
- getSources: (opts: any) => ipcRenderer.invoke("DESKTOP_CAPTURER_GET_SOURCES", opts)
+ getSources: (opts: SourcesOptions) => ipcRenderer.invoke("DESKTOP_CAPTURER_GET_SOURCES", opts)
};
interface IPCSources {
id: string;
@@ -10,9 +11,9 @@ interface IPCSources {
thumbnail: HTMLCanvasElement;
}
async function getDisplayMediaSelector(): Promise {
- const sources: IPCSources[] = await desktopCapturer.getSources({
+ const sources = (await desktopCapturer.getSources({
types: ["screen", "window"]
- });
+ })) as IPCSources[];
return ``;
document.body.appendChild(selectionElem);
document.querySelectorAll(".desktop-capturer-selection__btn").forEach((button) => {
- button.addEventListener("click", async () => {
+ button.addEventListener("click", () => {
try {
const id = button.getAttribute("data-id");
const title = button.getAttribute("title");
diff --git a/src/discord/window.ts b/src/discord/window.ts
index 394d45d..eb4823d 100644
--- a/src/discord/window.ts
+++ b/src/discord/window.ts
@@ -1,9 +1,11 @@
// To allow seamless switching between custom titlebar and native os titlebar,
-// I had to add most of the window creation code here to split both into seperete functions
+// I had to add most of the window creation code here to split both into separate functions
// WHY? Because I can't use the same code for both due to annoying bug with value `frame` not responding to variables
// I'm sorry for this mess but I'm not sure how to fix it.
import {BrowserWindow, MessageBoxOptions, app, dialog, nativeImage, shell} from "electron";
import path from "path";
+import type EventEmitter from "events";
+import {ThemeManifest} from "../types/themeManifest.d.js";
import {registerIpc} from "./ipc.js";
import {setMenu} from "./menu.js";
import * as fs from "fs";
@@ -28,7 +30,7 @@ contextMenu({
// Only show it when right-clicking text
visible: parameters.selectionText.trim().length > 0,
click: () => {
- shell.openExternal(`https://google.com/search?q=${encodeURIComponent(parameters.selectionText)}`);
+ void shell.openExternal(`https://google.com/search?q=${encodeURIComponent(parameters.selectionText)}`);
}
},
{
@@ -36,27 +38,30 @@ contextMenu({
// Only show it when right-clicking text
visible: parameters.selectionText.trim().length > 0,
click: () => {
- shell.openExternal(`https://duckduckgo.com/?q=${encodeURIComponent(parameters.selectionText)}`);
+ void shell.openExternal(`https://duckduckgo.com/?q=${encodeURIComponent(parameters.selectionText)}`);
}
}
]
});
-async function doAfterDefiningTheWindow(): Promise {
- if ((await getWindowState("isMaximized")) ?? false) {
+function doAfterDefiningTheWindow(): void {
+ if (getWindowState("isMaximized") ?? false) {
mainWindow.setSize(835, 600); //just so the whole thing doesn't cover whole screen
mainWindow.maximize();
- mainWindow.webContents.executeJavaScript(`document.body.setAttribute("isMaximized", "");`);
+ void mainWindow.webContents.executeJavaScript(`document.body.setAttribute("isMaximized", "");`);
mainWindow.hide(); // please don't flashbang the user
}
- if ((await getConfig("windowStyle")) == "transparency" && process.platform === "win32") {
+ if (getConfig("windowStyle") == "transparency" && process.platform === "win32") {
mainWindow.setBackgroundMaterial("mica");
- if ((await getConfig("startMinimized")) == false) {
+ if (getConfig("startMinimized") == false) {
mainWindow.show();
}
}
- let ignoreProtocolWarning = await getConfig("ignoreProtocolWarning");
+
+ // REVIEW - Test the protocol warning. I was not sure how to get it to pop up. For now I've voided the promises.
+
+ const ignoreProtocolWarning = getConfig("ignoreProtocolWarning");
registerIpc();
- if (await getConfig("mobileMode")) {
+ if (getConfig("mobileMode")) {
mainWindow.webContents.userAgent =
"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.149 Mobile Safari/537.36";
} else {
@@ -96,9 +101,9 @@ async function doAfterDefiningTheWindow(): Promise {
}
};
if (url.startsWith("https:") || url.startsWith("http:") || url.startsWith("mailto:")) {
- shell.openExternal(url);
+ void shell.openExternal(url);
} else if (ignoreProtocolWarning) {
- shell.openExternal(url);
+ void shell.openExternal(url);
} else {
const options: MessageBoxOptions = {
type: "question",
@@ -111,7 +116,7 @@ async function doAfterDefiningTheWindow(): Promise {
checkboxChecked: false
};
- dialog.showMessageBox(mainWindow, options).then(({response, checkboxChecked}) => {
+ void dialog.showMessageBox(mainWindow, options).then(({response, checkboxChecked}) => {
console.log(response, checkboxChecked);
if (checkboxChecked) {
if (response == 0) {
@@ -121,13 +126,13 @@ async function doAfterDefiningTheWindow(): Promise {
}
}
if (response == 0) {
- shell.openExternal(url);
+ void shell.openExternal(url);
}
});
}
return {action: "deny"};
});
- if ((await getConfig("useLegacyCapturer")) == false) {
+ if (getConfig("useLegacyCapturer") == false) {
console.log("Starting screenshare module...");
import("./screenshare/main.js");
}
@@ -137,9 +142,12 @@ async function doAfterDefiningTheWindow(): Promise {
(_, callback) => callback({cancel: true})
);
- if ((await getConfig("trayIcon")) == "default" || (await getConfig("dynamicIcon"))) {
- mainWindow.webContents.on("page-favicon-updated", async () => {
- let faviconBase64 = await mainWindow.webContents.executeJavaScript(`
+ if (getConfig("trayIcon") == "default" || getConfig("dynamicIcon")) {
+ mainWindow.webContents.on("page-favicon-updated", () => {
+ // REVIEW - no need to await if we just .then() - This works!
+ void mainWindow.webContents
+ .executeJavaScript(
+ `
var getFavicon = function(){
var favicon = undefined;
var nodeList = document.getElementsByTagName("link");
@@ -153,29 +161,33 @@ async function doAfterDefiningTheWindow(): Promise {
return favicon;
}
getFavicon()
- `);
- let buf = Buffer.from(faviconBase64.replace(/^data:image\/\w+;base64,/, ""), "base64");
- fs.writeFileSync(path.join(app.getPath("temp"), "/", "tray.png"), buf, "utf-8");
- let trayPath = nativeImage.createFromPath(path.join(app.getPath("temp"), "/", "tray.png"));
- if (process.platform === "darwin" && trayPath.getSize().height > 22)
- trayPath = trayPath.resize({height: 22});
- if (process.platform === "win32" && trayPath.getSize().height > 32)
- trayPath = trayPath.resize({height: 32});
- if (await getConfig("tray")) {
- if ((await getConfig("trayIcon")) == "default") {
- tray.setImage(trayPath);
- }
- }
- if (await getConfig("dynamicIcon")) {
- mainWindow.setIcon(trayPath);
- }
+ `
+ )
+ .then((faviconBase64: string) => {
+ const buf = Buffer.from(faviconBase64.replace(/^data:image\/\w+;base64,/, ""), "base64");
+ fs.writeFileSync(path.join(app.getPath("temp"), "/", "tray.png"), buf, "utf-8");
+ let trayPath = nativeImage.createFromPath(path.join(app.getPath("temp"), "/", "tray.png"));
+ if (process.platform === "darwin" && trayPath.getSize().height > 22)
+ trayPath = trayPath.resize({height: 22});
+ if (process.platform === "win32" && trayPath.getSize().height > 32)
+ trayPath = trayPath.resize({height: 32});
+ if (getConfig("tray")) {
+ if (getConfig("trayIcon") == "default") {
+ tray.setImage(trayPath);
+ }
+ }
+ if (getConfig("dynamicIcon")) {
+ mainWindow.setIcon(trayPath);
+ }
+ });
});
}
- mainWindow.webContents.on("page-title-updated", async (e, title) => {
+ mainWindow.webContents.on("page-title-updated", (e, title) => {
const armCordSuffix = " - ArmCord"; /* identify */
if (!title.endsWith(armCordSuffix)) {
e.preventDefault();
- await mainWindow.webContents.executeJavaScript(
+ // REVIEW - I don't see a reason to wait for the titlebar to update
+ void mainWindow.webContents.executeJavaScript(
`document.title = '${title.replace("Discord |", "") + armCordSuffix}'`
);
}
@@ -193,7 +205,7 @@ async function doAfterDefiningTheWindow(): Promise {
fs.readdirSync(themesFolder).forEach((file) => {
try {
const manifest = fs.readFileSync(`${themesFolder}/${file}/manifest.json`, "utf8");
- let themeFile = JSON.parse(manifest);
+ const themeFile = JSON.parse(manifest) as ThemeManifest;
if (
fs
.readFileSync(path.join(userDataPath, "/disabled.txt"))
@@ -213,23 +225,23 @@ async function doAfterDefiningTheWindow(): Promise {
}
});
});
- await setMenu();
- mainWindow.on("close", async (e) => {
+ setMenu();
+ mainWindow.on("close", (e) => {
if (process.platform === "darwin" && forceQuit) {
mainWindow.close();
} else {
- let [width, height] = mainWindow.getSize();
- await setWindowState({
+ const [width, height] = mainWindow.getSize();
+ setWindowState({
width,
height,
isMaximized: mainWindow.isMaximized(),
x: mainWindow.getPosition()[0],
y: mainWindow.getPosition()[1]
});
- if (await getConfig("minimizeToTray")) {
+ if (getConfig("minimizeToTray")) {
e.preventDefault();
mainWindow.hide();
- } else if (!(await getConfig("minimizeToTray"))) {
+ } else if (!getConfig("minimizeToTray")) {
e.preventDefault();
app.quit();
}
@@ -244,43 +256,49 @@ async function doAfterDefiningTheWindow(): Promise {
}
});
}
+
+ // REVIEW - Awaiting javascript execution is silly
mainWindow.on("focus", () => {
- mainWindow.webContents.executeJavaScript(`document.body.removeAttribute("unFocused");`);
+ void mainWindow.webContents.executeJavaScript(`document.body.removeAttribute("unFocused");`);
});
mainWindow.on("blur", () => {
- mainWindow.webContents.executeJavaScript(`document.body.setAttribute("unFocused", "");`);
+ void mainWindow.webContents.executeJavaScript(`document.body.setAttribute("unFocused", "");`);
});
mainWindow.on("maximize", () => {
- mainWindow.webContents.executeJavaScript(`document.body.setAttribute("isMaximized", "");`);
+ void mainWindow.webContents.executeJavaScript(`document.body.setAttribute("isMaximized", "");`);
});
mainWindow.on("unmaximize", () => {
- mainWindow.webContents.executeJavaScript(`document.body.removeAttribute("isMaximized");`);
+ void mainWindow.webContents.executeJavaScript(`document.body.removeAttribute("isMaximized");`);
});
- if ((await getConfig("inviteWebsocket")) == true) {
- const server = await new RPCServer();
- server.on("activity", (data: string) => mainWindow.webContents.send("rpc", data));
- server.on("invite", (code: string) => {
- console.log(code);
- createInviteWindow(code);
+ if (getConfig("inviteWebsocket")) {
+ // NOTE - RPCServer appears to be untyped. cool.
+ // REVIEW - Whatever Ducko has done here to make an async constructor is awful.
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
+ new RPCServer().then((server: EventEmitter) => {
+ server.on("activity", (data: string) => mainWindow.webContents.send("rpc", data));
+ server.on("invite", (code: string) => {
+ console.log(code);
+ createInviteWindow(code);
+ });
});
}
if (firstRun) {
mainWindow.close();
}
//loadURL broke for no good reason after E28
- mainWindow.loadFile(`${import.meta.dirname}/../splash/redirect.html`);
+ void mainWindow.loadFile(`${import.meta.dirname}/../splash/redirect.html`);
- if (await getConfig("skipSplash")) {
+ if (getConfig("skipSplash")) {
mainWindow.show();
}
}
-export async function createCustomWindow(): Promise {
+export function createCustomWindow(): void {
mainWindow = new BrowserWindow({
- width: (await getWindowState("width")) ?? 835,
- height: (await getWindowState("height")) ?? 600,
- x: await getWindowState("x"),
- y: await getWindowState("y"),
+ width: getWindowState("width") ?? 835,
+ height: getWindowState("height") ?? 600,
+ x: getWindowState("x"),
+ y: getWindowState("y"),
title: "ArmCord",
show: false,
darkTheme: true,
@@ -292,17 +310,17 @@ export async function createCustomWindow(): Promise {
webviewTag: true,
sandbox: false,
preload: path.join(import.meta.dirname, "preload/preload.mjs"),
- spellcheck: await getConfig("spellcheck")
+ spellcheck: getConfig("spellcheck")
}
});
doAfterDefiningTheWindow();
}
-export async function createNativeWindow(): Promise {
+export function createNativeWindow(): void {
mainWindow = new BrowserWindow({
- width: (await getWindowState("width")) ?? 835,
- height: (await getWindowState("height")) ?? 600,
- x: await getWindowState("x"),
- y: await getWindowState("y"),
+ width: getWindowState("width") ?? 835,
+ height: getWindowState("height") ?? 600,
+ x: getWindowState("x"),
+ y: getWindowState("y"),
title: "ArmCord",
darkTheme: true,
icon: iconPath,
@@ -314,17 +332,17 @@ export async function createNativeWindow(): Promise {
webviewTag: true,
sandbox: false,
preload: path.join(import.meta.dirname, "preload/preload.mjs"),
- spellcheck: await getConfig("spellcheck")
+ spellcheck: getConfig("spellcheck")
}
});
doAfterDefiningTheWindow();
}
-export async function createTransparentWindow(): Promise {
+export function createTransparentWindow(): void {
mainWindow = new BrowserWindow({
- width: (await getWindowState("width")) ?? 835,
- height: (await getWindowState("height")) ?? 600,
- x: await getWindowState("x"),
- y: await getWindowState("y"),
+ width: getWindowState("width") ?? 835,
+ height: getWindowState("height") ?? 600,
+ x: getWindowState("x"),
+ y: getWindowState("y"),
title: "ArmCord",
darkTheme: true,
icon: iconPath,
@@ -336,12 +354,12 @@ export async function createTransparentWindow(): Promise {
sandbox: false,
webviewTag: true,
preload: path.join(import.meta.dirname, "preload/preload.mjs"),
- spellcheck: await getConfig("spellcheck")
+ spellcheck: getConfig("spellcheck")
}
});
doAfterDefiningTheWindow();
}
-export async function createInviteWindow(code: string): Promise {
+export function createInviteWindow(code: string): void {
inviteWindow = new BrowserWindow({
width: 800,
height: 600,
@@ -352,15 +370,16 @@ export async function createInviteWindow(code: string): Promise {
autoHideMenuBar: true,
webPreferences: {
sandbox: false,
- spellcheck: await getConfig("spellcheck")
+ spellcheck: getConfig("spellcheck")
}
});
- let formInviteURL = `https://discord.com/invite/${code}`;
+ const formInviteURL = `https://discord.com/invite/${code}`;
inviteWindow.webContents.session.webRequest.onBeforeRequest((details, callback) => {
if (details.url.includes("ws://")) return callback({cancel: true});
return callback({});
});
- inviteWindow.loadURL(formInviteURL);
+ // REVIEW - This shouldn't matter, since below we have an event on it
+ void inviteWindow.loadURL(formInviteURL);
inviteWindow.webContents.once("did-finish-load", () => {
if (!mainWindow.webContents.isLoading()) {
inviteWindow.show();
diff --git a/src/main.ts b/src/main.ts
index 486685c..1cc7315 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -11,23 +11,22 @@ import {createSplashWindow} from "./splash/main.js";
import {createSetupWindow} from "./setup/main.js";
import {
setConfig,
- getConfigSync,
checkForDataFolder,
checkIfConfigExists,
checkIfConfigIsBroken,
getConfig,
firstRun,
- Settings,
getConfigLocation
} from "./common/config.js";
import {injectElectronFlags} from "./common/flags.js";
import {setLang} from "./common/lang.js";
import {installModLoader} from "./discord/extensions/mods.js";
export let iconPath: string;
-export let settings: any;
+import type {Settings} from "./types/settings";
+export let settings: Settings;
export let customTitlebar: boolean;
-app.on("render-process-gone", (event, webContents, details) => {
+app.on("render-process-gone", (_event, _webContents, details) => {
if (details.reason == "crashed") {
app.relaunch();
}
@@ -35,23 +34,23 @@ app.on("render-process-gone", (event, webContents, details) => {
async function args(): Promise {
let argNum = 2;
if (process.argv[0] == "electron") argNum++;
- let args = process.argv[argNum];
+ const args = process.argv[argNum];
if (args == undefined) return;
if (args.startsWith("--")) return; //electron flag
if (args.includes("=")) {
- let e = args.split("=");
- await setConfig(e[0] as keyof Settings, e[1]);
+ const e = args.split("=");
+ setConfig(e[0] as keyof Settings, e[1]);
console.log(`Setting ${e[0]} to ${e[1]}`);
app.relaunch();
app.exit();
} else if (args == "themes") {
- app.whenReady().then(async () => {
- createTManagerWindow();
+ await app.whenReady().then(async () => {
+ await createTManagerWindow();
});
}
}
-args(); // i want my top level awaits
-if (!app.requestSingleInstanceLock() && getConfigSync("multiInstance") == (false ?? undefined)) {
+await args(); // i want my top level awaits - IMPLEMENTED :)
+if (!app.requestSingleInstanceLock() && getConfig("multiInstance") == (false ?? undefined)) {
// if value isn't set after 3.2.4
// kill if 2nd instance
app.quit();
@@ -82,21 +81,22 @@ if (!app.requestSingleInstanceLock() && getConfigSync("multiInstance") == (false
checkIfConfigIsBroken();
injectElectronFlags();
console.log("[Config Manager] Current config: " + fs.readFileSync(getConfigLocation(), "utf-8"));
- app.whenReady().then(async () => {
- if ((await getConfig("customIcon")) !== undefined ?? null) {
- iconPath = await getConfig("customIcon");
+ void app.whenReady().then(async () => {
+ // REVIEW - Awaiting the line above will cause a hang at startup
+ if (getConfig("customIcon") !== null) {
+ iconPath = getConfig("customIcon");
} else {
iconPath = path.join(import.meta.dirname, "../", "/assets/desktop.png");
}
async function init(): Promise {
- if ((await getConfig("skipSplash")) == false) {
- createSplashWindow();
+ if (getConfig("skipSplash") == false) {
+ void createSplashWindow(); // REVIEW - Awaiting will hang at start
}
if (firstRun == true) {
- await setLang(new Intl.DateTimeFormat().resolvedOptions().locale);
- createSetupWindow();
+ setLang(new Intl.DateTimeFormat().resolvedOptions().locale);
+ await createSetupWindow();
}
- switch (await getConfig("windowStyle")) {
+ switch (getConfig("windowStyle")) {
case "default":
createCustomWindow();
customTitlebar = true;
@@ -125,8 +125,9 @@ if (!app.requestSingleInstanceLock() && getConfigSync("multiInstance") == (false
callback(true);
}
});
- app.on("activate", async function () {
- if (BrowserWindow.getAllWindows().length === 0) await init();
+ app.on("activate", function () {
+ // REVIEW - I don't think it really matters if this promise is voided
+ if (BrowserWindow.getAllWindows().length === 0) void init();
});
});
}
diff --git a/src/settings/main.ts b/src/settings/main.ts
index 9c721ad..1da41e3 100644
--- a/src/settings/main.ts
+++ b/src/settings/main.ts
@@ -2,10 +2,11 @@ import {BrowserWindow, app, shell} from "electron";
import path from "path";
import fs from "fs";
import {getDisplayVersion} from "../common/version.js";
+import type {ThemeManifest} from "../types/themeManifest.d.js";
let settingsWindow: BrowserWindow;
let instance = 0;
-export function createSettingsWindow(): void {
+export async function createSettingsWindow(): Promise {
console.log("Creating a settings window.");
instance += 1;
if (instance > 1) {
@@ -28,7 +29,7 @@ export function createSettingsWindow(): void {
}
});
async function settingsLoadPage(): Promise {
- settingsWindow.loadURL(`file://${import.meta.dirname}/settings.html`);
+ await settingsWindow.loadURL(`file://${import.meta.dirname}/settings.html`);
}
const userDataPath = app.getPath("userData");
const themesFolder = `${userDataPath}/themes/`;
@@ -43,7 +44,7 @@ export function createSettingsWindow(): void {
fs.readdirSync(themesFolder).forEach((file) => {
try {
const manifest = fs.readFileSync(`${themesFolder}/${file}/manifest.json`, "utf8");
- let themeFile = JSON.parse(manifest);
+ const themeFile = JSON.parse(manifest) as ThemeManifest;
if (
fs
.readFileSync(path.join(userDataPath, "/disabled.txt"))
@@ -64,10 +65,10 @@ export function createSettingsWindow(): void {
});
});
settingsWindow.webContents.setWindowOpenHandler(({url}) => {
- shell.openExternal(url);
+ void shell.openExternal(url);
return {action: "deny"};
});
- settingsLoadPage();
+ await settingsLoadPage();
settingsWindow.on("close", () => {
instance = 0;
});
diff --git a/src/settings/preload.mts b/src/settings/preload.mts
index 2b5820c..ccc15a2 100644
--- a/src/settings/preload.mts
+++ b/src/settings/preload.mts
@@ -1,11 +1,14 @@
import {contextBridge, ipcRenderer} from "electron";
+import {Settings} from "../types/settings";
//import {addStyle} from "../utils.js";
console.log("ArmCord Settings");
console.log(process.platform);
contextBridge.exposeInMainWorld("settings", {
- save: (...args: any) => ipcRenderer.send("saveSettings", ...args),
+ // REVIEW - this may be typed incorrectly, I'm not sure how "..." works
+ save: (...args: Settings[]) => ipcRenderer.send("saveSettings", ...args),
restart: () => ipcRenderer.send("restart"),
- saveAlert: (restartFunc: any) => ipcRenderer.send("saveAlert", restartFunc),
+ // REVIEW - I couldn't find a reference to anything about the below function
+ saveAlert: (restartFunc: () => void) => ipcRenderer.send("saveAlert", restartFunc),
getLang: (toGet: string) => ipcRenderer.invoke("getLang", toGet),
get: (toGet: string) => ipcRenderer.invoke("getSetting", toGet),
openThemesFolder: () => ipcRenderer.send("openThemesFolder"),
@@ -17,7 +20,8 @@ contextBridge.exposeInMainWorld("settings", {
crash: () => ipcRenderer.send("crash"),
os: process.platform
});
-
+/*
ipcRenderer.on("themeLoader", (_event, message) => {
//addStyle(message);
});
+*/
diff --git a/src/settings/settings.css b/src/settings/settings.css
index 8b33c92..ed6fd11 100644
--- a/src/settings/settings.css
+++ b/src/settings/settings.css
@@ -260,6 +260,7 @@ select option {
select {
-webkit-appearance: button;
-moz-appearance: button;
+ appearance: button;
background-color: var(--background-secondary-alt);
background-position: center right;
background-repeat: no-repeat;
diff --git a/src/settings/settings.html b/src/settings/settings.html
index 950dff2..d0710f6 100644
--- a/src/settings/settings.html
+++ b/src/settings/settings.html
@@ -1,4 +1,4 @@
-
+
diff --git a/src/setup/main.ts b/src/setup/main.ts
index ce9fd14..896a1c2 100644
--- a/src/setup/main.ts
+++ b/src/setup/main.ts
@@ -1,42 +1,47 @@
import {BrowserWindow, app, ipcMain} from "electron";
import path from "path";
-import * as fs from "fs";
+import fs from "fs";
import {iconPath} from "../main.js";
-import {setConfigBulk, getConfigLocation, Settings} from "../common/config.js";
+import {setConfigBulk, getConfigLocation} from "../common/config.js";
+import type {Settings} from "../types/settings.d.js";
let setupWindow: BrowserWindow;
-export function createSetupWindow(): void {
- setupWindow = new BrowserWindow({
- width: 390,
- height: 470,
- title: "ArmCord Setup",
- darkTheme: true,
- icon: iconPath,
- frame: false,
- autoHideMenuBar: true,
- webPreferences: {
- sandbox: false,
- spellcheck: false,
- preload: path.join(import.meta.dirname, "preload.mjs")
- }
- });
- ipcMain.on("saveSettings", (_event, args: Settings) => {
- console.log(args);
- setConfigBulk(args);
- });
- ipcMain.on("setup-minimize", () => {
- setupWindow.minimize();
- });
- ipcMain.on("setup-getOS", (event) => {
- event.returnValue = process.platform;
- });
- ipcMain.on("setup-quit", async () => {
- fs.unlink(await getConfigLocation(), (err) => {
- if (err) throw err;
-
- console.log('Closed during setup. "settings.json" was deleted');
- app.quit();
+export async function createSetupWindow(): Promise {
+ // NOTE - intentionally hang the process until setup is completed
+ return new Promise((resolve) => {
+ setupWindow = new BrowserWindow({
+ width: 390,
+ height: 470,
+ title: "ArmCord Setup",
+ darkTheme: true,
+ icon: iconPath,
+ frame: false,
+ autoHideMenuBar: true,
+ webPreferences: {
+ sandbox: false,
+ spellcheck: false,
+ preload: path.join(import.meta.dirname, "preload.mjs")
+ }
});
+ ipcMain.on("saveSettings", (_event, args: Settings) => {
+ console.log(args);
+ setConfigBulk(args);
+ resolve();
+ });
+ ipcMain.on("setup-minimize", () => {
+ setupWindow.minimize();
+ });
+ ipcMain.on("setup-getOS", (event) => {
+ event.returnValue = process.platform;
+ });
+ ipcMain.on("setup-quit", () => {
+ fs.unlink(getConfigLocation(), (err) => {
+ if (err) throw err;
+
+ console.log('Closed during setup. "settings.json" was deleted');
+ app.quit();
+ });
+ });
+ void setupWindow.loadURL(`file://${import.meta.dirname}/setup.html`);
});
- setupWindow.loadURL(`file://${import.meta.dirname}/setup.html`);
}
diff --git a/src/setup/preload.mts b/src/setup/preload.mts
index 921901d..c3b36a3 100644
--- a/src/setup/preload.mts
+++ b/src/setup/preload.mts
@@ -1,13 +1,14 @@
import {contextBridge, ipcRenderer} from "electron";
import {injectTitlebar} from "../discord/preload/titlebar.mjs";
+import {Settings} from "../types/settings";
injectTitlebar();
contextBridge.exposeInMainWorld("armcordinternal", {
restart: () => ipcRenderer.send("restart"),
- getOS: ipcRenderer.sendSync("setup-getOS"),
- saveSettings: (...args: any) => ipcRenderer.send("saveSettings", ...args),
+ getOS: ipcRenderer.sendSync("setup-getOS") as string, // String as far as I care.
+ saveSettings: (...args: [Settings]) => ipcRenderer.send("saveSettings", ...args),
getLang: (toGet: string) =>
- ipcRenderer.invoke("getLang", toGet).then((result) => {
+ ipcRenderer.invoke("getLang", toGet).then((result: string) => {
return result;
})
});
diff --git a/src/setup/setup.html b/src/setup/setup.html
index b43904f..73fe4b2 100644
--- a/src/setup/setup.html
+++ b/src/setup/setup.html
@@ -1,4 +1,4 @@
-
+
@@ -123,9 +123,8 @@
});
if (window.armcordinternal.getOS == "linux") {
document.getElementById("tray").value = "false";
- document.getElementById(
- "linuxNotice"
- ).innerHTML = `Linux may not work well with tray icons. Depending on your system configuration, you may not be able to see the tray icon. Enable at your own risk. Can be changed later.`;
+ document.getElementById("linuxNotice").innerHTML =
+ `Linux may not work well with tray icons. Depending on your system configuration, you may not be able to see the tray icon. Enable at your own risk. Can be changed later.`;
}
document.getElementById("next-page4").addEventListener("click", () => {
window.armcordinternal.saveSettings({
diff --git a/src/splash/main.ts b/src/splash/main.ts
index bc9bdcf..0e47edc 100644
--- a/src/splash/main.ts
+++ b/src/splash/main.ts
@@ -19,5 +19,5 @@ export async function createSplashWindow(): Promise {
preload: path.join(import.meta.dirname, "preload.mjs")
}
});
- splashWindow.loadFile(path.join(import.meta.dirname, "splash.html"));
+ await splashWindow.loadFile(path.join(import.meta.dirname, "splash.html"));
}
diff --git a/src/splash/preload.mts b/src/splash/preload.mts
index 5fb7182..2f584e1 100644
--- a/src/splash/preload.mts
+++ b/src/splash/preload.mts
@@ -2,10 +2,10 @@ import {contextBridge, ipcRenderer} from "electron";
contextBridge.exposeInMainWorld("internal", {
restart: () => ipcRenderer.send("restart"),
- installState: ipcRenderer.sendSync("modInstallState"),
- version: ipcRenderer.sendSync("get-app-version", "app-version"),
+ installState: ipcRenderer.sendSync("modInstallState") as string,
+ version: ipcRenderer.sendSync("get-app-version", "app-version") as string,
getLang: (toGet: string) =>
- ipcRenderer.invoke("getLang", toGet).then((result) => {
+ ipcRenderer.invoke("getLang", toGet).then((result: string) => {
return result;
}),
splashEnd: () => ipcRenderer.send("splashEnd")
diff --git a/src/splash/redirect.html b/src/splash/redirect.html
index e2addcd..2012278 100644
--- a/src/splash/redirect.html
+++ b/src/splash/redirect.html
@@ -1,4 +1,4 @@
-
+
Loading
diff --git a/src/splash/splash.css b/src/splash/splash.css
index 538634b..8772d64 100644
--- a/src/splash/splash.css
+++ b/src/splash/splash.css
@@ -53,6 +53,7 @@ body {
font-family: "Whitney", sans-serif;
box-sizing: border-box;
-webkit-user-select: none;
+ user-select: none;
cursor: default;
}
diff --git a/src/splash/splash.html b/src/splash/splash.html
index a0663a9..e50adf4 100644
--- a/src/splash/splash.html
+++ b/src/splash/splash.html
@@ -1,4 +1,4 @@
-
+
diff --git a/src/themeManager/main.ts b/src/themeManager/main.ts
index 13ff1a5..acb47a2 100644
--- a/src/themeManager/main.ts
+++ b/src/themeManager/main.ts
@@ -1,36 +1,22 @@
import {BrowserWindow, app, dialog, ipcMain, shell} from "electron";
import path from "path";
import fs from "fs";
-import {sleep} from "../common/sleep.js";
import {createInviteWindow, mainWindow} from "../discord/window.js";
+import type {ThemeManifest} from "../types/themeManifest.d.js";
let themeWindow: BrowserWindow;
let instance = 0;
-interface ThemeManifest {
- name?: string;
- author?: string;
- description?: string;
- version?: string;
- invite?: string;
- authorId?: string;
- theme: string;
- authorLink?: string;
- donate?: string;
- patreon?: string;
- website?: string;
- source?: string;
- updateSrc?: string;
- supportsArmCordTitlebar?: boolean;
-}
+
function parseBDManifest(content: string) {
const metaReg = /@([^ ]*) (.*)/g;
if (!content.startsWith("/**")) {
throw new Error("Not a manifest.");
}
- let manifest: ThemeManifest = {theme: "src.css"};
+ const manifest: ThemeManifest = {theme: "src.css", name: "null"}; // Will be defined later
let match;
while ((match = metaReg.exec(content)) !== null) {
- let [_, key, value] = match;
+ const [_, key] = match;
+ let [value] = match;
if (key === "import") break;
value = value.trim();
@@ -88,7 +74,7 @@ function parseBDManifest(content: string) {
}
const userDataPath = app.getPath("userData");
const themesPath = path.join(userDataPath, "/themes/");
-export function createTManagerWindow(): void {
+export async function createTManagerWindow(): Promise {
console.log("Creating theme manager window.");
instance += 1;
if (instance > 1) {
@@ -118,13 +104,13 @@ export function createTManagerWindow(): void {
if (url.startsWith("https://discord.gg/")) {
createInviteWindow(url.replace("https://discord.gg/", ""));
} else {
- shell.openExternal(url);
+ void shell.openExternal(url);
}
}
});
async function managerLoadPage(): Promise {
- themeWindow.loadFile(`${import.meta.dirname}/manager.html`);
+ await themeWindow.loadFile(`${import.meta.dirname}/manager.html`);
}
const userDataPath = app.getPath("userData");
const themesFolder = `${userDataPath}/themes/`;
@@ -135,27 +121,24 @@ export function createTManagerWindow(): void {
if (!fs.existsSync(`${userDataPath}/disabled.txt`)) {
fs.writeFileSync(path.join(userDataPath, "/disabled.txt"), "");
}
- ipcMain.on("openThemesFolder", async () => {
+ ipcMain.on("openThemesFolder", () => {
shell.showItemInFolder(themesPath);
- await sleep(1000);
});
- ipcMain.on("reloadMain", async () => {
+ ipcMain.on("reloadMain", () => {
mainWindow.webContents.reload();
});
- ipcMain.on("addToDisabled", async (_event, name: string) => {
+ ipcMain.on("addToDisabled", (_event, name: string) => {
fs.appendFileSync(path.join(userDataPath, "/disabled.txt"), `${name}\n`);
- sleep(1000);
});
- ipcMain.on("disabled", async (e) => {
+ ipcMain.on("disabled", (e) => {
e.returnValue = fs.readFileSync(path.join(userDataPath, "/disabled.txt")).toString();
});
- ipcMain.on("removeFromDisabled", async (_event, name: string) => {
- let e = await fs.readFileSync(path.join(userDataPath, "/disabled.txt")).toString();
+ ipcMain.on("removeFromDisabled", (_event, name: string) => {
+ const e = fs.readFileSync(path.join(userDataPath, "/disabled.txt")).toString();
fs.writeFileSync(path.join(userDataPath, "/disabled.txt"), e.replace(name, ""));
- sleep(1000);
});
- ipcMain.on("uninstallTheme", async (_event, id: string) => {
- let themePath = path.join(themesFolder, id);
+ ipcMain.on("uninstallTheme", (_event, id: string) => {
+ const themePath = path.join(themesFolder, id);
if (fs.existsSync(themePath)) {
fs.rmdirSync(themePath, {recursive: true});
console.log(`Removed ${id} folder`);
@@ -166,33 +149,35 @@ export function createTManagerWindow(): void {
themeWindow.webContents.reload();
mainWindow.webContents.reload();
});
- ipcMain.on("installBDTheme", async (_event, link: string) => {
- try {
- let code = await (await fetch(link)).text();
- let manifest = parseBDManifest(code);
- let themePath = path.join(themesFolder, `${manifest.name?.replace(" ", "-")}-BD`);
- if (!fs.existsSync(themePath)) {
- fs.mkdirSync(themePath);
- console.log(`Created ${manifest.name} folder`);
+ ipcMain.on("installBDTheme", (_event, link: string) => {
+ return async () => {
+ try {
+ const code = await (await fetch(link)).text();
+ const manifest = parseBDManifest(code);
+ const themePath = path.join(themesFolder, `${manifest.name?.replace(" ", "-")}-BD`);
+ if (!fs.existsSync(themePath)) {
+ fs.mkdirSync(themePath);
+ console.log(`Created ${manifest.name} folder`);
+ }
+ manifest.updateSrc = link;
+ if (code.includes(".titlebar")) manifest.supportsArmCordTitlebar = true;
+ else manifest.supportsArmCordTitlebar = false;
+ fs.writeFileSync(path.join(themePath, "manifest.json"), JSON.stringify(manifest));
+ fs.writeFileSync(path.join(themePath, "src.css"), code);
+ dialog.showMessageBoxSync({
+ type: "info",
+ title: "BD Theme import success",
+ message: "Successfully imported theme from link."
+ });
+ themeWindow.webContents.reload();
+ mainWindow.webContents.reload();
+ } catch (e) {
+ dialog.showErrorBox(
+ "BD Theme import fail",
+ "Failed to import theme from link. Please make sure that it's a valid BetterDiscord Theme."
+ );
}
- manifest.updateSrc = link;
- if (code.includes(".titlebar")) manifest.supportsArmCordTitlebar = true;
- else manifest.supportsArmCordTitlebar = false;
- fs.writeFileSync(path.join(themePath, "manifest.json"), JSON.stringify(manifest));
- fs.writeFileSync(path.join(themePath, "src.css"), code);
- dialog.showMessageBoxSync({
- type: "info",
- title: "BD Theme import success",
- message: "Successfully imported theme from link."
- });
- themeWindow.webContents.reload();
- mainWindow.webContents.reload();
- } catch (e) {
- dialog.showErrorBox(
- "BD Theme import fail",
- "Failed to import theme from link. Please make sure that it's a valid BetterDiscord Theme."
- );
- }
+ };
});
themeWindow.webContents.on("did-finish-load", () => {
fs.readdirSync(themesFolder).forEach((file) => {
@@ -206,7 +191,7 @@ export function createTManagerWindow(): void {
});
});
- managerLoadPage();
+ await managerLoadPage();
themeWindow.on("close", () => {
instance = 0;
});
diff --git a/src/themeManager/manager.html b/src/themeManager/manager.html
index fef651b..ccce842 100644
--- a/src/themeManager/manager.html
+++ b/src/themeManager/manager.html
@@ -1,4 +1,4 @@
-
+