aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.all-contributorsrc18
-rw-r--r--.github/dependabot.yml12
-rw-r--r--.github/workflows/builds.yml50
-rw-r--r--.github/workflows/homebrew-cask-updates.yml74
-rw-r--r--.github/workflows/reddit.yml8
-rw-r--r--.github/workflows/tag-repos.yml40
-rw-r--r--.github/workflows/winget-bucket-update.yml25
-rw-r--r--.gitignore1
-rw-r--r--.nvmrc2
-rw-r--r--.vscode/settings.json2
-rw-r--r--CONTRIBUTING.md6
-rw-r--r--Dockerfile3
-rw-r--r--README.md4
-rw-r--r--docs/dbus/org.ferdium.Ferdium.xml7
-rw-r--r--electron-builder.yml1
-rw-r--r--package.json100
-rw-r--r--pnpm-lock.yaml1528
m---------recipes0
-rw-r--r--src/@types/stores.types.ts11
-rw-r--r--src/api/UserApi.ts4
-rw-r--r--src/api/server/ServerApi.ts36
-rw-r--r--src/components/layout/Sidebar.tsx2
-rw-r--r--src/components/settings/account/AccountDashboard.tsx8
-rw-r--r--src/components/settings/settings/EditSettingsForm.tsx100
-rw-r--r--src/components/settings/team/TeamDashboard.tsx4
-rw-r--r--src/components/ui/InfoBar.tsx7
-rw-r--r--src/components/ui/Infobox.tsx7
-rw-r--r--src/components/ui/button/index.tsx3
-rw-r--r--src/components/ui/loader/index.tsx5
-rw-r--r--src/config.ts23
-rw-r--r--src/containers/settings/EditServiceScreen.tsx4
-rw-r--r--src/containers/settings/EditSettingsScreen.tsx67
-rw-r--r--src/containers/settings/RecipesScreen.tsx4
-rw-r--r--src/environment-remote.ts11
-rw-r--r--src/features/workspaces/components/WorkspaceSwitchingIndicator.tsx3
-rw-r--r--src/features/workspaces/store.ts5
-rw-r--r--src/helpers/certs-helpers.ts22
-rw-r--r--src/i18n/locales/de.json7
-rw-r--r--src/i18n/locales/en-US.json7
-rw-r--r--src/i18n/locales/id.json40
-rw-r--r--src/i18n/locales/ja.json1
-rw-r--r--src/i18n/locales/ru.json28
-rw-r--r--src/i18n/locales/zh-HANS.json7
-rw-r--r--src/index.ts24
-rw-r--r--src/jsUtils.ts3
-rw-r--r--src/lib/Menu.ts4
-rw-r--r--src/lib/Tray.ts2
-rw-r--r--src/lib/dbus/Ferdium.ts8
-rw-r--r--src/models/Service.ts4
-rw-r--r--src/models/User.ts2
-rw-r--r--src/stores/AppStore.ts6
-rw-r--r--src/stores/ServicesStore.ts58
-rw-r--r--src/stores/SettingsStore.ts10
-rw-r--r--src/stores/UserStore.ts27
-rw-r--r--src/stores/lib/Request.ts9
-rw-r--r--src/themes/default/index.ts3
-rw-r--r--src/webview/lib/RecipeWebview.ts6
-rw-r--r--src/webview/notifications.ts4
-rw-r--r--src/webview/recipe.ts17
-rw-r--r--test/jsUtils.test.ts16
60 files changed, 1433 insertions, 1067 deletions
diff --git a/.all-contributorsrc b/.all-contributorsrc
index 5412786b1..25a715c24 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -2965,6 +2965,24 @@
2965 "code", 2965 "code",
2966 "infra" 2966 "infra"
2967 ] 2967 ]
2968 },
2969 {
2970 "login": "xduugu",
2971 "name": "xduugu",
2972 "avatar_url": "https://avatars.githubusercontent.com/u/1039174?v=4",
2973 "profile": "https://github.com/xduugu",
2974 "contributions": [
2975 "infra"
2976 ]
2977 },
2978 {
2979 "login": "dutscher",
2980 "name": "Willy Woitas",
2981 "avatar_url": "https://avatars.githubusercontent.com/u/14682?v=4",
2982 "profile": "http://www.willy-woitas.de",
2983 "contributions": [
2984 "code"
2985 ]
2968 } 2986 }
2969 ], 2987 ],
2970 "commitType": "docs" 2988 "commitType": "docs"
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 3a3cce576..26048beba 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,11 +1,11 @@
1# To get started with Dependabot version updates, you'll need to specify which
2# package ecosystems to update and where the package manifests are located.
3# Please see the documentation for all configuration options:
4# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
6version: 2 1version: 2
7updates: 2updates:
8 - package-ecosystem: "npm" # See documentation for possible values 3 - package-ecosystem: "npm" # See documentation for possible values
9 directory: "/" # Location of package manifests 4 directory: "/" # Location of package manifests
10 schedule: 5 schedule:
11 interval: "weekly" 6 interval: "daily"
7 # Maintain dependencies for GitHub Actions
8 - package-ecosystem: "github-actions"
9 directory: "/"
10 schedule:
11 interval: "daily"
diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml
index 8e5f6c9bf..6ad31da9e 100644
--- a/.github/workflows/builds.yml
+++ b/.github/workflows/builds.yml
@@ -40,24 +40,24 @@ jobs:
40 should_run: ${{ steps.should_run.outputs.should_run }} 40 should_run: ${{ steps.should_run.outputs.should_run }}
41 steps: 41 steps:
42 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled' 42 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled'
43 uses: actions/checkout@v3 43 uses: actions/checkout@v4
44 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }} 44 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }}
45 with: 45 with:
46 ref: nightly 46 ref: nightly
47 submodules: recursive 47 submodules: recursive
48 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging 48 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging
49 - name: Install pnpm 49 - name: Install pnpm
50 uses: pnpm/action-setup@v2 50 uses: pnpm/action-setup@v3
51 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }} 51 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }}
52 - name: Use Node.js specified in the '.nvmrc' file 52 - name: Use Node.js specified in the '.nvmrc' file
53 uses: actions/setup-node@v3 53 uses: actions/setup-node@v4
54 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }} 54 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }}
55 with: 55 with:
56 node-version-file: '.nvmrc' 56 node-version-file: '.nvmrc'
57 cache: 'pnpm' 57 cache: 'pnpm'
58 - name: Install node dependencies 58 - name: Install node dependencies
59 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }} 59 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }}
60 uses: nick-fields/retry@v2.8.3 60 uses: nick-fields/retry@v3
61 with: 61 with:
62 command: pnpm i 62 command: pnpm i
63 timeout_minutes: 15 63 timeout_minutes: 15
@@ -141,14 +141,14 @@ jobs:
141 echo "ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder" >> $GITHUB_ENV 141 echo "ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder" >> $GITHUB_ENV
142 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV 142 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV
143 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled' or this is a forced rebuild on the nightly branch 143 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled' or this is a forced rebuild on the nightly branch
144 uses: actions/checkout@v3 144 uses: actions/checkout@v4
145 if: ${{ github.event_name == 'schedule' || env.MANUAL_REBUILD_ON_NIGHTLY == 'true' }} 145 if: ${{ github.event_name == 'schedule' || env.MANUAL_REBUILD_ON_NIGHTLY == 'true' }}
146 with: 146 with:
147 submodules: recursive 147 submodules: recursive
148 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging 148 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging
149 ref: nightly 149 ref: nightly
150 - name: Checkout code along with submodules for any branch if the trigger event is NOT 'scheduled' and this is NOT a forced rebuild on the nightly branch 150 - name: Checkout code along with submodules for any branch if the trigger event is NOT 'scheduled' and this is NOT a forced rebuild on the nightly branch
151 uses: actions/checkout@v3 151 uses: actions/checkout@v4
152 if: ${{ github.event_name != 'schedule' && env.MANUAL_REBUILD_ON_NIGHTLY != 'true' }} 152 if: ${{ github.event_name != 'schedule' && env.MANUAL_REBUILD_ON_NIGHTLY != 'true' }}
153 with: 153 with:
154 submodules: recursive 154 submodules: recursive
@@ -157,28 +157,28 @@ jobs:
157 run: echo "GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV 157 run: echo "GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV
158 shell: bash 158 shell: bash
159 - name: Cache electron modules 159 - name: Cache electron modules
160 uses: actions/cache@v3 160 uses: actions/cache@v4
161 env: 161 env:
162 cache-name: cache-electron-modules 162 cache-name: cache-electron-modules
163 with: 163 with:
164 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }} 164 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }}
165 path: ${{ env.ELECTRON_CACHE }} 165 path: ${{ env.ELECTRON_CACHE }}
166 - name: Cache electron-builder modules 166 - name: Cache electron-builder modules
167 uses: actions/cache@v3 167 uses: actions/cache@v4
168 env: 168 env:
169 cache-name: cache-electron-builder-modules 169 cache-name: cache-electron-builder-modules
170 with: 170 with:
171 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }} 171 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }}
172 path: ${{ env.ELECTRON_BUILDER_CACHE }} 172 path: ${{ env.ELECTRON_BUILDER_CACHE }}
173 - name: Install pnpm 173 - name: Install pnpm
174 uses: pnpm/action-setup@v2 174 uses: pnpm/action-setup@v3
175 - name: Use Node.js specified in the '.nvmrc' file 175 - name: Use Node.js specified in the '.nvmrc' file
176 uses: actions/setup-node@v3 176 uses: actions/setup-node@v4
177 with: 177 with:
178 node-version-file: '.nvmrc' 178 node-version-file: '.nvmrc'
179 cache: 'pnpm' 179 cache: 'pnpm'
180 - name: Install node dependencies 180 - name: Install node dependencies
181 uses: nick-fields/retry@v2.8.3 181 uses: nick-fields/retry@v3
182 with: 182 with:
183 command: pnpm i 183 command: pnpm i
184 timeout_minutes: 15 184 timeout_minutes: 15
@@ -220,14 +220,14 @@ jobs:
220 echo "ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder" >> $GITHUB_ENV 220 echo "ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder" >> $GITHUB_ENV
221 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV 221 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV
222 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled' or this is a forced rebuild on the nightly branch 222 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled' or this is a forced rebuild on the nightly branch
223 uses: actions/checkout@v3 223 uses: actions/checkout@v4
224 if: ${{ github.event_name == 'schedule' || env.MANUAL_REBUILD_ON_NIGHTLY == 'true' }} 224 if: ${{ github.event_name == 'schedule' || env.MANUAL_REBUILD_ON_NIGHTLY == 'true' }}
225 with: 225 with:
226 submodules: recursive 226 submodules: recursive
227 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging 227 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging
228 ref: nightly 228 ref: nightly
229 - name: Checkout code along with submodules for any branch if the trigger event is NOT 'scheduled' and this is NOT a forced rebuild on the nightly branch 229 - name: Checkout code along with submodules for any branch if the trigger event is NOT 'scheduled' and this is NOT a forced rebuild on the nightly branch
230 uses: actions/checkout@v3 230 uses: actions/checkout@v4
231 if: ${{ github.event_name != 'schedule' && env.MANUAL_REBUILD_ON_NIGHTLY != 'true' }} 231 if: ${{ github.event_name != 'schedule' && env.MANUAL_REBUILD_ON_NIGHTLY != 'true' }}
232 with: 232 with:
233 submodules: recursive 233 submodules: recursive
@@ -236,28 +236,28 @@ jobs:
236 run: echo "GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV 236 run: echo "GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV
237 shell: bash 237 shell: bash
238 - name: Cache electron modules 238 - name: Cache electron modules
239 uses: actions/cache@v3 239 uses: actions/cache@v4
240 env: 240 env:
241 cache-name: cache-electron-modules 241 cache-name: cache-electron-modules
242 with: 242 with:
243 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }} 243 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }}
244 path: ${{ env.ELECTRON_CACHE }} 244 path: ${{ env.ELECTRON_CACHE }}
245 - name: Cache electron-builder modules 245 - name: Cache electron-builder modules
246 uses: actions/cache@v3 246 uses: actions/cache@v4
247 env: 247 env:
248 cache-name: cache-electron-builder-modules 248 cache-name: cache-electron-builder-modules
249 with: 249 with:
250 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }} 250 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }}
251 path: ${{ env.ELECTRON_BUILDER_CACHE }} 251 path: ${{ env.ELECTRON_BUILDER_CACHE }}
252 - name: Install pnpm 252 - name: Install pnpm
253 uses: pnpm/action-setup@v2 253 uses: pnpm/action-setup@v3
254 - name: Use Node.js specified in the '.nvmrc' file 254 - name: Use Node.js specified in the '.nvmrc' file
255 uses: actions/setup-node@v3 255 uses: actions/setup-node@v4
256 with: 256 with:
257 node-version-file: '.nvmrc' 257 node-version-file: '.nvmrc'
258 cache: 'pnpm' 258 cache: 'pnpm'
259 - name: Install node dependencies 259 - name: Install node dependencies
260 uses: nick-fields/retry@v2.8.3 260 uses: nick-fields/retry@v3
261 with: 261 with:
262 command: pnpm i 262 command: pnpm i
263 timeout_minutes: 15 263 timeout_minutes: 15
@@ -320,14 +320,14 @@ jobs:
320 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV 320 echo "MANUAL_REBUILD_ON_NIGHTLY=${{ github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]') }}" >> $GITHUB_ENV
321 shell: bash 321 shell: bash
322 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled' or this is a forced rebuild on the nightly branch 322 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'scheduled' or this is a forced rebuild on the nightly branch
323 uses: actions/checkout@v3 323 uses: actions/checkout@v4
324 if: ${{ github.event_name == 'schedule' || env.MANUAL_REBUILD_ON_NIGHTLY == 'true' }} 324 if: ${{ github.event_name == 'schedule' || env.MANUAL_REBUILD_ON_NIGHTLY == 'true' }}
325 with: 325 with:
326 submodules: recursive 326 submodules: recursive
327 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging 327 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging
328 ref: nightly 328 ref: nightly
329 - name: Checkout code along with submodules for any branch if the trigger event is NOT 'scheduled' and this is NOT a forced rebuild on the nightly branch 329 - name: Checkout code along with submodules for any branch if the trigger event is NOT 'scheduled' and this is NOT a forced rebuild on the nightly branch
330 uses: actions/checkout@v3 330 uses: actions/checkout@v4
331 if: ${{ github.event_name != 'schedule' && env.MANUAL_REBUILD_ON_NIGHTLY != 'true' }} 331 if: ${{ github.event_name != 'schedule' && env.MANUAL_REBUILD_ON_NIGHTLY != 'true' }}
332 with: 332 with:
333 submodules: recursive 333 submodules: recursive
@@ -336,23 +336,23 @@ jobs:
336 run: echo "GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV 336 run: echo "GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV
337 shell: bash 337 shell: bash
338 - name: Cache electron modules 338 - name: Cache electron modules
339 uses: actions/cache@v3 339 uses: actions/cache@v4
340 env: 340 env:
341 cache-name: cache-electron-modules 341 cache-name: cache-electron-modules
342 with: 342 with:
343 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }} 343 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }}
344 path: ${{ env.ELECTRON_CACHE }} 344 path: ${{ env.ELECTRON_CACHE }}
345 - name: Cache electron-builder modules 345 - name: Cache electron-builder modules
346 uses: actions/cache@v3 346 uses: actions/cache@v4
347 env: 347 env:
348 cache-name: cache-electron-builder-modules 348 cache-name: cache-electron-builder-modules
349 with: 349 with:
350 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }} 350 key: ${{ runner.os }}-${{ env.cache-name }}-${{ secrets.CACHE_VERSION }}-${{ hashFiles('./pnpm-lock.yaml') }}
351 path: ${{ env.ELECTRON_BUILDER_CACHE }} 351 path: ${{ env.ELECTRON_BUILDER_CACHE }}
352 - name: Install pnpm 352 - name: Install pnpm
353 uses: pnpm/action-setup@v2 353 uses: pnpm/action-setup@v3
354 - name: Use Node.js specified in the '.nvmrc' file 354 - name: Use Node.js specified in the '.nvmrc' file
355 uses: actions/setup-node@v3 355 uses: actions/setup-node@v4
356 with: 356 with:
357 node-version-file: '.nvmrc' 357 node-version-file: '.nvmrc'
358 cache: 'pnpm' 358 cache: 'pnpm'
@@ -365,7 +365,7 @@ jobs:
365 sed -i 's/\/usr\/bin\/env node/node/g' "$PNPM_BASEDIR/pnpm/bin/pnpm.cjs" 365 sed -i 's/\/usr\/bin\/env node/node/g' "$PNPM_BASEDIR/pnpm/bin/pnpm.cjs"
366 shell: bash 366 shell: bash
367 - name: Install node dependencies 367 - name: Install node dependencies
368 uses: nick-fields/retry@v2.8.3 368 uses: nick-fields/retry@v3
369 with: 369 with:
370 command: pnpm i 370 command: pnpm i
371 timeout_minutes: 15 371 timeout_minutes: 15
diff --git a/.github/workflows/homebrew-cask-updates.yml b/.github/workflows/homebrew-cask-updates.yml
index eaecc0b2c..0d70868dd 100644
--- a/.github/workflows/homebrew-cask-updates.yml
+++ b/.github/workflows/homebrew-cask-updates.yml
@@ -8,41 +8,41 @@ on:
8 8
9jobs: 9jobs:
10 bump-casks: 10 bump-casks:
11 runs-on: macos-latest 11 runs-on: macos-12
12 steps: 12 steps:
13 - name: Publish nightly 13 - name: Publish nightly
14 uses: macauley/action-homebrew-bump-cask@v1 14 uses: macauley/action-homebrew-bump-cask@v1
15 if: ${{ contains(github.event.release.tag_name, 'nightly') }} 15 if: ${{ contains(github.event.release.tag_name, 'nightly') }}
16 with: 16 with:
17 # Required, custom GitHub access token with only the 'public_repo' scope enabled 17 # Required, custom GitHub access token with only the 'public_repo' scope enabled
18 token: ${{ secrets.HOMEBREW_FERDIUM_PUBLISH_TOKEN }} 18 token: ${{ secrets.HOMEBREW_FERDIUM_PUBLISH_TOKEN }}
19 # Bump all outdated casks in this tap 19 # Bump all outdated casks in this tap
20 tap: ferdium/homebrew-ferdium 20 tap: ferdium/homebrew-ferdium
21 # Bump only these casks if outdated 21 # Bump only these casks if outdated
22 cask: ferdium-nightly 22 cask: ferdium-nightly
23 livecheck: true 23 livecheck: true
24 dryrun: false 24 dryrun: false
25 - name: Publish beta 25 - name: Publish beta
26 uses: macauley/action-homebrew-bump-cask@v1 26 uses: macauley/action-homebrew-bump-cask@v1
27 if: ${{ contains(github.event.release.tag_name, 'beta') }} 27 if: ${{ contains(github.event.release.tag_name, 'beta') }}
28 with: 28 with:
29 # Required, custom GitHub access token with only the 'public_repo' scope enabled 29 # Required, custom GitHub access token with only the 'public_repo' scope enabled
30 token: ${{ secrets.HOMEBREW_FERDIUM_PUBLISH_TOKEN }} 30 token: ${{ secrets.HOMEBREW_FERDIUM_PUBLISH_TOKEN }}
31 # Bump all outdated casks in this tap 31 # Bump all outdated casks in this tap
32 tap: ferdium/homebrew-ferdium 32 tap: ferdium/homebrew-ferdium
33 # Bump only these casks if outdated 33 # Bump only these casks if outdated
34 cask: ferdium-beta 34 cask: ferdium-beta
35 livecheck: true 35 livecheck: true
36 dryrun: false 36 dryrun: false
37 - name: Publish release 37 - name: Publish release
38 uses: macauley/action-homebrew-bump-cask@v1 38 uses: macauley/action-homebrew-bump-cask@v1
39 if: ${{ !contains(github.event.release.tag_name, 'nightly') && !contains(github.event.release.tag_name, 'beta') }} 39 if: ${{ !contains(github.event.release.tag_name, 'nightly') && !contains(github.event.release.tag_name, 'beta') }}
40 with: 40 with:
41 # Required, custom GitHub access token with only the 'public_repo' scope enabled 41 # Required, custom GitHub access token with only the 'public_repo' scope enabled
42 token: ${{ secrets.HOMEBREW_FERDIUM_PUBLISH_TOKEN }} 42 token: ${{ secrets.HOMEBREW_FERDIUM_PUBLISH_TOKEN }}
43 # Bump all outdated casks in this tap 43 # Bump all outdated casks in this tap
44 tap: ferdium/homebrew-ferdium 44 tap: ferdium/homebrew-ferdium
45 # Bump only these casks if outdated 45 # Bump only these casks if outdated
46 cask: ferdium 46 cask: ferdium
47 livecheck: true 47 livecheck: true
48 dryrun: false 48 dryrun: false
diff --git a/.github/workflows/reddit.yml b/.github/workflows/reddit.yml
index 79149c405..77c771030 100644
--- a/.github/workflows/reddit.yml
+++ b/.github/workflows/reddit.yml
@@ -6,17 +6,17 @@ on:
6 6
7jobs: 7jobs:
8 test: 8 test:
9 runs-on: ubuntu-latest 9 runs-on: ubuntu-22.04
10 steps: 10 steps:
11 - name: Release for Reddit 11 - name: Release for Reddit
12 uses: bluwy/release-for-reddit-action@v1.2.0 12 uses: bluwy/release-for-reddit-action@v2
13 with: 13 with:
14 username: ${{ secrets.REDDIT_USERNAME }} 14 username: ${{ secrets.REDDIT_USERNAME }}
15 password: ${{ secrets.REDDIT_PASSWORD }} 15 password: ${{ secrets.REDDIT_PASSWORD }}
16 app-id: ${{ secrets.REDDIT_APP_ID }} 16 app-id: ${{ secrets.REDDIT_APP_ID }}
17 app-secret: ${{ secrets.REDDIT_APP_SECRET }} 17 app-secret: ${{ secrets.REDDIT_APP_SECRET }}
18 subreddit: ferdium # Submit to /r/ferdium 18 subreddit: ferdium # Submit to /r/ferdium
19 title: "[Release] Ferdium ${{ github.event.release.tag_name }}" 19 title: '[Release] Ferdium ${{ github.event.release.tag_name }}'
20 # flair-id: "7aa4f288-bf0d-11ec-a939-8e36666e1f23" 20 # flair-id: "7aa4f288-bf0d-11ec-a939-8e36666e1f23"
21 comment: "${{ github.event.release.body }}" 21 comment: '${{ github.event.release.body }}'
22 notification: true 22 notification: true
diff --git a/.github/workflows/tag-repos.yml b/.github/workflows/tag-repos.yml
index 6ef055e7b..0e5de76a5 100644
--- a/.github/workflows/tag-repos.yml
+++ b/.github/workflows/tag-repos.yml
@@ -8,27 +8,27 @@ on:
8 8
9jobs: 9jobs:
10 tag-repos: 10 tag-repos:
11 runs-on: macos-latest 11 runs-on: macos-12
12 steps: 12 steps:
13 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'release' 13 - name: Checkout code along with submodules for the 'nightly' branch if the trigger event is 'release'
14 uses: actions/checkout@v3 14 uses: actions/checkout@v4
15 if: ${{ contains(github.event.release.tag_name, 'nightly') || (github.event_name == 'workflow_dispatch') }} 15 if: ${{ contains(github.event.release.tag_name, 'nightly') || (github.event_name == 'workflow_dispatch') }}
16 with: 16 with:
17 ref: nightly 17 ref: nightly
18 submodules: recursive 18 submodules: recursive
19 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging 19 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging
20 - name: Checkout code along with submodules for the 'release' branch if the trigger event is 'release' 20 - name: Checkout code along with submodules for the 'release' branch if the trigger event is 'release'
21 uses: actions/checkout@v3 21 uses: actions/checkout@v4
22 if: ${{ !contains(github.event.release.tag_name, 'nightly') }} 22 if: ${{ !contains(github.event.release.tag_name, 'nightly') }}
23 with: 23 with:
24 ref: release 24 ref: release
25 submodules: recursive 25 submodules: recursive
26 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging 26 fetch-depth: 0 # Note: Needed to be able to pull the 'develop' branch as well for merging
27 - name: Extract Git tag name from the currently checked out branch (not from the branch where this run was kicked off) 27 - name: Extract Git tag name from the currently checked out branch (not from the branch where this run was kicked off)
28 run: | 28 run: |
29 TAG_NAME=$(node -p 'require("./package.json").version') 29 TAG_NAME=$(node -p 'require("./package.json").version')
30 echo "TAG_NAME=v$TAG_NAME" >> $GITHUB_ENV 30 echo "TAG_NAME=v$TAG_NAME" >> $GITHUB_ENV
31 shell: bash 31 shell: bash
32 # Note: commented out the tagging of the main repo - since that is auto-created when a new release is published 32 # Note: commented out the tagging of the main repo - since that is auto-created when a new release is published
33 # - name: Tag the main repo 33 # - name: Tag the main repo
34 # run: | 34 # run: |
diff --git a/.github/workflows/winget-bucket-update.yml b/.github/workflows/winget-bucket-update.yml
index 1013a8921..84886b46a 100644
--- a/.github/workflows/winget-bucket-update.yml
+++ b/.github/workflows/winget-bucket-update.yml
@@ -9,7 +9,7 @@ on:
9 workflow_dispatch: 9 workflow_dispatch:
10 inputs: 10 inputs:
11 message: 11 message:
12 description: "Channel to update" 12 description: 'Channel to update'
13 required: false 13 required: false
14 release: 14 release:
15 types: [published] 15 types: [published]
@@ -19,13 +19,13 @@ env:
19 19
20jobs: 20jobs:
21 manual_winget_update: 21 manual_winget_update:
22 runs-on: windows-latest 22 runs-on: windows-2022
23 name: "Manual winget update: ${{ github.event.inputs.message }}" 23 name: 'Manual winget update: ${{ github.event.inputs.message }}'
24 if: ${{ github.event_name == 'workflow_dispatch' }} 24 if: ${{ github.event_name == 'workflow_dispatch' }}
25 steps: 25 steps:
26 - name: "Install winget" 26 - name: 'Install winget'
27 # cf https://github.com/actions/virtual-environments/issues/910#issuecomment-1009640391 27 # cf https://github.com/actions/virtual-environments/issues/910#issuecomment-1009640391
28 # TODO: update urls to get more updated version 28 # TODO: update urls to get more updated version
29 run: | 29 run: |
30 $ErrorActionPreference = 'Stop' 30 $ErrorActionPreference = 'Stop'
31 31
@@ -35,10 +35,10 @@ jobs:
35 iwr 'https://github.com/microsoft/winget-cli/releases/download/v1.1.12653/9c0fe2ce7f8e410eb4a8f417de74517e_License1.xml' -Outfile $env:TEMP\winget.license 35 iwr 'https://github.com/microsoft/winget-cli/releases/download/v1.1.12653/9c0fe2ce7f8e410eb4a8f417de74517e_License1.xml' -Outfile $env:TEMP\winget.license
36 36
37 Add-AppxProvisionedPackage -Online -PackagePath $env:TEMP\winget.msixbundle -LicensePath $env:TEMP\winget.license -DependencyPackagePath @("$env:TEMP\vclibs.appx", "$env:TEMP\vclibsuwp.appx") 37 Add-AppxProvisionedPackage -Online -PackagePath $env:TEMP\winget.msixbundle -LicensePath $env:TEMP\winget.license -DependencyPackagePath @("$env:TEMP\vclibs.appx", "$env:TEMP\vclibsuwp.appx")
38 - name: "Verify winget" 38 - name: 'Verify winget'
39 run: | 39 run: |
40 winget --info 40 winget --info
41 - name: "Get release tag" 41 - name: 'Get release tag'
42 run: | 42 run: |
43 if ("${{ contains(github.event.inputs.message, '[nightly]') }}" -eq $True) { 43 if ("${{ contains(github.event.inputs.message, '[nightly]') }}" -eq $True) {
44 $preRel = $True 44 $preRel = $True
@@ -64,7 +64,7 @@ jobs:
64 echo "last_version=$lastVersion" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append 64 echo "last_version=$lastVersion" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
65 echo "PACKAGE_NAME=$package" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append 65 echo "PACKAGE_NAME=$package" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
66 66
67 - name: "Verify if version already exist on winget" 67 - name: 'Verify if version already exist on winget'
68 run: | 68 run: |
69 $lastVersion = '${{ env.last_version }}' 69 $lastVersion = '${{ env.last_version }}'
70 $versions = winget show --id '${{ env.PACKAGE_NAME }}' --versions --accept-source-agreements 70 $versions = winget show --id '${{ env.PACKAGE_NAME }}' --versions --accept-source-agreements
@@ -73,7 +73,7 @@ jobs:
73 echo "version_exists=true" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append 73 echo "version_exists=true" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
74 } 74 }
75 75
76 - name: "Publish update" 76 - name: 'Publish update'
77 if: ${{ env.version_exists != 'true' }} 77 if: ${{ env.version_exists != 'true' }}
78 run: | 78 run: |
79 $release=Invoke-RestMethod -Uri '${{ env.REPO_URL }}' 79 $release=Invoke-RestMethod -Uri '${{ env.REPO_URL }}'
@@ -95,11 +95,10 @@ jobs:
95 Write-Host $command 95 Write-Host $command
96 Invoke-Expression $command 96 Invoke-Expression $command
97 97
98
99 winget_release: 98 winget_release:
100 name: "Update winget after publish: ${{ github.event.inputs.message }}" 99 name: 'Update winget after publish: ${{ github.event.inputs.message }}'
101 if: ${{ github.event_name == 'release' }} 100 if: ${{ github.event_name == 'release' }}
102 runs-on: windows-latest 101 runs-on: windows-2022
103 steps: 102 steps:
104 - name: Check release type 103 - name: Check release type
105 run: | 104 run: |
diff --git a/.gitignore b/.gitignore
index 246e6d00c..6254ae6a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -368,6 +368,7 @@ build
368.tmp 368.tmp
369.stage 369.stage
370server*.log 370server*.log
371*.zwc*
371 372
372# These entries have been merged from the git submodule repo 'internal-server' 373# These entries have been merged from the git submodule repo 'internal-server'
373 374
diff --git a/.nvmrc b/.nvmrc
index f3f52b42d..2dbbe00e6 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
20.9.0 20.11.1
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 5060e4994..42a06efe9 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -17,7 +17,7 @@
17 // "explorer.confirmDelete": false, 17 // "explorer.confirmDelete": false,
18 // "explorer.confirmDragAndDrop": false, 18 // "explorer.confirmDragAndDrop": false,
19 19
20 "eslint.runtime": "node", 20 // "eslint.runtime": "node",
21 "eslint.format.enable": true, 21 "eslint.format.enable": true,
22 "eslint.workingDirectories": [{ "mode": "auto" }], 22 "eslint.workingDirectories": [{ "mode": "auto" }],
23 // "eslint.packageManager": "npm", 23 // "eslint.packageManager": "npm",
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 97d464d5e..6de52e863 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -62,8 +62,8 @@ Currently, these are the combinations of system dependencies that work for MacOS
62# Note: 'jq' is not a required system dependency; its only here to show the combined output of versions needed 62# Note: 'jq' is not a required system dependency; its only here to show the combined output of versions needed
63$ jq --null-input '[inputs.engines] | add' < ./package.json < ./recipes/package.json 63$ jq --null-input '[inputs.engines] | add' < ./package.json < ./recipes/package.json
64{ 64{
65 "node": "20.9.0", 65 "node": "20.11.1",
66 "pnpm": "8.10.0" 66 "pnpm": "8.15.3"
67} 67}
68``` 68```
69 69
@@ -130,7 +130,7 @@ If you want to copy them outside of the image, simply mount a volume into a diff
130```bash 130```bash
131DATE=`date +"%Y-%b-%d-%H-%M"` 131DATE=`date +"%Y-%b-%d-%H-%M"`
132mkdir -p ~/Downloads/$DATE 132mkdir -p ~/Downloads/$DATE
133docker run -e GIT_SHA=`git rev-parse --short HEAD` -v ~/Downloads/$DATE:/ferdium-out -it ferdium-package sh 133docker run -e GIT_SHA=`git rev-parse --short HEAD` -v ~/Downloads/$DATE:/ferdium-out -it ferdium-package-`uname -m` sh
134# inside the container: 134# inside the container:
135mv /ferdium/Ferdium-*.AppImage /ferdium-out/Ferdium-$GIT_SHA.AppImage 135mv /ferdium/Ferdium-*.AppImage /ferdium-out/Ferdium-$GIT_SHA.AppImage
136mv /ferdium/ferdium-*.tar.gz /ferdium-out/Ferdium-$GIT_SHA.tar.gz 136mv /ferdium/ferdium-*.tar.gz /ferdium-out/Ferdium-$GIT_SHA.tar.gz
diff --git a/Dockerfile b/Dockerfile
index 806f10a2b..83baba00b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
1# Note: Before running this file, you should have already cloned the git repo + submodules on the host machine. This is used when actively developing on your local machine, but you want to build for a different architecture 1# Note: Before running this file, you should have already cloned the git repo + submodules on the host machine. This is used when actively developing on your local machine, but you want to build for a different architecture
2 2
3FROM docker.io/library/node:20.9.0-buster as builder 3FROM docker.io/library/node:20.11.1-buster AS builder
4 4
5ENV PATH="/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/lib:/usr/include:/usr/share" 5ENV PATH="/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/lib:/usr/include:/usr/share"
6 6
@@ -13,6 +13,7 @@ ARG PREVAL_BUILD_INFO_PLACEHOLDERS=true
13# Note: 'fpm' is needed for building on ARM machines 13# Note: 'fpm' is needed for building on ARM machines
14RUN apt-get update -y \ 14RUN apt-get update -y \
15 && apt-get install --no-install-recommends -y rpm ruby gem \ 15 && apt-get install --no-install-recommends -y rpm ruby gem \
16 && gem install dotenv -v 2.8.1 --no-ri --no-rdoc --no-document \
16 && gem install fpm --no-ri --no-rdoc --no-document 17 && gem install fpm --no-ri --no-rdoc --no-document
17 18
18WORKDIR /usr/src/ferdium 19WORKDIR /usr/src/ferdium
diff --git a/README.md b/README.md
index 6f8fb8ca8..623406948 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@
21 21
22[![Open Collective backers](https://img.shields.io/static/v1?label=Contribute%20on%20Open%20Collective&message=Donate%20to%20Ferdium&color=9cf&logo=open-collective)](https://opencollective.com/ferdium#category-CONTRIBUTE) 22[![Open Collective backers](https://img.shields.io/static/v1?label=Contribute%20on%20Open%20Collective&message=Donate%20to%20Ferdium&color=9cf&logo=open-collective)](https://opencollective.com/ferdium#category-CONTRIBUTE)
23<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> 23<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
24<a href='#contributors-'><img src='https://img.shields.io/badge/contributors-316-default.svg?logo=github&color=6c64e4' alt='Contributors'/></a> 24<a href='#contributors-'><img src='https://img.shields.io/badge/contributors-318-default.svg?logo=github&color=6c64e4' alt='Contributors'/></a>
25<!-- ALL-CONTRIBUTORS-BADGE:END --> 25<!-- ALL-CONTRIBUTORS-BADGE:END -->
26 26
27- [Ferdium](#ferdium) 27- [Ferdium](#ferdium)
@@ -496,6 +496,8 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
496 </tr> 496 </tr>
497 <tr> 497 <tr>
498 <td align="center" valign="top" width="14.28%"><a href='https://github.com/mcmxcdev' title='MCMXC: code, infra'><img src='https://avatars.githubusercontent.com/u/16797721?v=4' alt='mcmxcdev' style='width:100px;'/></a></td> 498 <td align="center" valign="top" width="14.28%"><a href='https://github.com/mcmxcdev' title='MCMXC: code, infra'><img src='https://avatars.githubusercontent.com/u/16797721?v=4' alt='mcmxcdev' style='width:100px;'/></a></td>
499 <td align="center" valign="top" width="14.28%"><a href='https://github.com/xduugu' title='xduugu: infra'><img src='https://avatars.githubusercontent.com/u/1039174?v=4' alt='xduugu' style='width:100px;'/></a></td>
500 <td align="center" valign="top" width="14.28%"><a href='http://www.willy-woitas.de' title='Willy Woitas: code'><img src='https://avatars.githubusercontent.com/u/14682?v=4' alt='dutscher' style='width:100px;'/></a></td>
499 </tr> 501 </tr>
500 </tbody> 502 </tbody>
501</table> 503</table>
diff --git a/docs/dbus/org.ferdium.Ferdium.xml b/docs/dbus/org.ferdium.Ferdium.xml
index 8c66a9e21..0ee395328 100644
--- a/docs/dbus/org.ferdium.Ferdium.xml
+++ b/docs/dbus/org.ferdium.Ferdium.xml
@@ -38,6 +38,13 @@
38 --> 38 -->
39 <method name="ToggleWindow" /> 39 <method name="ToggleWindow" />
40 <!-- 40 <!--
41 ToggleToTalk:
42
43 Toggles the microphone in the active service if supported and currently
44 applicable.
45 -->
46 <method name="ToggleToTalk" />
47 <!--
41 Muted: 48 Muted:
42 49
43 Gets or sets the current muted state of notifications. 50 Gets or sets the current muted state of notifications.
diff --git a/electron-builder.yml b/electron-builder.yml
index a3b41090c..ba76bfde1 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -78,6 +78,7 @@ mac:
78 extendInfo: 78 extendInfo:
79 NSCameraUsageDescription: "This app requires camera access for video chats" 79 NSCameraUsageDescription: "This app requires camera access for video chats"
80 NSMicrophoneUsageDescription: "This app requires microphone access for voice chats" 80 NSMicrophoneUsageDescription: "This app requires microphone access for voice chats"
81 NSFocusStatusUsageDescription: "This app requires focus access for DND functionality"
81 82
82win: 83win:
83 artifactName: "${productName}-${os}-Installer-${version}-${arch}.${ext}" 84 artifactName: "${productName}-${os}-Installer-${version}-${arch}.${ext}"
diff --git a/package.json b/package.json
index e704d9135..338904c9f 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
3 "productName": "Ferdium", 3 "productName": "Ferdium",
4 "desktopName": "ferdium.desktop", 4 "desktopName": "ferdium.desktop",
5 "appId": "org.ferdium.ferdium-app", 5 "appId": "org.ferdium.ferdium-app",
6 "version": "6.7.0", 6 "version": "6.7.1",
7 "description": "Messaging app for WhatsApp, Slack, Telegram, Hangouts and many many more.", 7 "description": "Messaging app for WhatsApp, Slack, Telegram, Hangouts and many many more.",
8 "author": "Ferdium Contributors <hello@ferdium.org> (https://ferdium.org/)", 8 "author": "Ferdium Contributors <hello@ferdium.org> (https://ferdium.org/)",
9 "license": "Apache-2.0", 9 "license": "Apache-2.0",
@@ -13,15 +13,15 @@
13 "repository": "https://github.com/ferdium/ferdium-app.git", 13 "repository": "https://github.com/ferdium/ferdium-app.git",
14 "private": true, 14 "private": true,
15 "engines": { 15 "engines": {
16 "node": "^20.9.0", 16 "node": "20.11.1",
17 "pnpm": "^8.10.0" 17 "pnpm": "8.15.3"
18 }, 18 },
19 "engine-strict": true, 19 "engine-strict": true,
20 "volta": { 20 "volta": {
21 "node": "20.9.0", 21 "node": "20.11.1",
22 "pnpm": "8.10.0" 22 "pnpm": "8.15.3"
23 }, 23 },
24 "packageManager": "pnpm@8.10.0", 24 "packageManager": "pnpm@8.15.3",
25 "scripts": { 25 "scripts": {
26 "prepare": "is-ci || husky install", 26 "prepare": "is-ci || husky install",
27 "start": "electron ./build", 27 "start": "electron ./build",
@@ -63,32 +63,32 @@
63 "@adonisjs/session": "1.1.0", 63 "@adonisjs/session": "1.1.0",
64 "@adonisjs/shield": "1.1.0", 64 "@adonisjs/shield": "1.1.0",
65 "@adonisjs/validator": "5.1.0", 65 "@adonisjs/validator": "5.1.0",
66 "@electron/remote": "2.1.0", 66 "@electron/remote": "2.1.2",
67 "@emotion/react": "11.11.1", 67 "@emotion/react": "11.11.3",
68 "@emotion/styled": "11.11.0", 68 "@emotion/styled": "11.11.0",
69 "@krisdages/electron-process-manager": "3.0.0", 69 "@krisdages/electron-process-manager": "3.0.0",
70 "@mdi/js": "7.3.67", 70 "@mdi/js": "7.4.47",
71 "@mdi/react": "1.6.1", 71 "@mdi/react": "1.6.1",
72 "@mui/icons-material": "5.14.19", 72 "@mui/icons-material": "5.15.10",
73 "@mui/material": "5.14.19", 73 "@mui/material": "5.15.10",
74 "@octokit/core": "5.0.2", 74 "@octokit/core": "5.1.0",
75 "@sentry/electron": "4.14.0", 75 "@sentry/electron": "4.14.0",
76 "@superwf/mobx-react-router": "7.4.0", 76 "@superwf/mobx-react-router": "7.4.0",
77 "auto-launch": "5.0.6", 77 "auto-launch": "5.0.6",
78 "classnames": "2.3.2", 78 "classnames": "2.5.1",
79 "color": "4.2.3", 79 "color": "4.2.3",
80 "csstype": "3.1.2", 80 "csstype": "3.1.3",
81 "darkreader": "4.9.69", 81 "darkreader": "4.9.77",
82 "dbus-next": "0.10.2", 82 "dbus-next": "0.10.2",
83 "debug": "4.3.4", 83 "debug": "4.3.4",
84 "electron-dl": "3.5.1", 84 "electron-dl": "3.5.2",
85 "electron-find": "1.0.7", 85 "electron-find": "1.0.7",
86 "electron-react-titlebar": "1.2.1", 86 "electron-react-titlebar": "1.2.1",
87 "electron-updater": "6.1.7", 87 "electron-updater": "6.1.7",
88 "electron-window-state": "5.0.3", 88 "electron-window-state": "5.0.3",
89 "fast-folder-size": "2.2.0", 89 "fast-folder-size": "2.2.0",
90 "fs-extra": "11.2.0", 90 "fs-extra": "11.2.0",
91 "google-translate-api-x": "10.6.7", 91 "google-translate-api-x": "10.6.8",
92 "history": "5.3.0", 92 "history": "5.3.0",
93 "immutable": "4.3.2", 93 "immutable": "4.3.2",
94 "jsonwebtoken": "9.0.2", 94 "jsonwebtoken": "9.0.2",
@@ -96,13 +96,13 @@
96 "languagedetect": "2.0.0", 96 "languagedetect": "2.0.0",
97 "lodash": "4.17.21", 97 "lodash": "4.17.21",
98 "macos-version": "5.2.1", 98 "macos-version": "5.2.1",
99 "markdown-to-jsx": "7.3.2", 99 "markdown-to-jsx": "7.4.1",
100 "minimist": "1.2.8", 100 "minimist": "1.2.8",
101 "mobx": "6.12.0", 101 "mobx": "6.12.0",
102 "mobx-localstorage": "1.2.0", 102 "mobx-localstorage": "1.2.0",
103 "mobx-react": "7.6.0", 103 "mobx-react": "7.6.0",
104 "mobx-react-form": "6.6.0", 104 "mobx-react-form": "6.9.3",
105 "moment": "2.29.4", 105 "moment": "2.30.1",
106 "ms": "2.1.3", 106 "ms": "2.1.3",
107 "normalize-url": "6.1.0", 107 "normalize-url": "6.1.0",
108 "os-name": "4.0.1", 108 "os-name": "4.0.1",
@@ -115,87 +115,85 @@
115 "react-dom": "18.2.0", 115 "react-dom": "18.2.0",
116 "react-dropzone": "14.2.3", 116 "react-dropzone": "14.2.3",
117 "react-electron-web-view": "2.0.1", 117 "react-electron-web-view": "2.0.1",
118 "react-intl": "6.5.5", 118 "react-intl": "6.6.2",
119 "react-jss": "10.10.0", 119 "react-jss": "10.10.0",
120 "react-loader-spinner": "5.4.5", 120 "react-loader-spinner": "5.4.5",
121 "react-modal": "3.16.1", 121 "react-modal": "3.16.1",
122 "react-router-dom": "6.20.1", 122 "react-router-dom": "6.22.1",
123 "react-sortable-hoc": "2.0.0", 123 "react-sortable-hoc": "2.0.0",
124 "react-tooltip": "5.24.0", 124 "react-tooltip": "5.26.2",
125 "react-topbar-progress-indicator": "4.1.1", 125 "react-topbar-progress-indicator": "4.1.1",
126 "react-transition-group": "4.4.5", 126 "react-transition-group": "4.4.5",
127 "route-parser": "0.0.5", 127 "route-parser": "0.0.5",
128 "sanitize-filename": "1.6.3", 128 "sanitize-filename": "1.6.3",
129 "semver": "7.5.4", 129 "semver": "7.6.0",
130 "sqlite3": "5.1.6", 130 "sqlite3": "5.1.6",
131 "tar": "6.2.0", 131 "tar": "6.2.0",
132 "tslib": "2.6.2", 132 "tslib": "2.6.2",
133 "useragent-generator": "1.1.1-amkt-22079-finish.0", 133 "useragent-generator": "1.1.1-amkt-22079-finish.0",
134 "uuid": "9.0.1", 134 "uuid": "9.0.1",
135 "validator": "13.11.0", 135 "validator": "13.11.0"
136 "ws": "8.14.2"
137 }, 136 },
138 "devDependencies": { 137 "devDependencies": {
139 "@biomejs/biome": "1.4.1", 138 "@biomejs/biome": "1.4.1",
140 "@commitlint/cli": "17.7.1", 139 "@commitlint/cli": "18.6.1",
141 "@commitlint/config-conventional": "17.7.0", 140 "@commitlint/config-conventional": "18.6.2",
142 "@electron/notarize": "1.2.3", 141 "@electron/notarize": "1.2.3",
143 "@formatjs/cli": "6.2.4", 142 "@formatjs/cli": "6.2.7",
144 "@jest/types": "29.6.3", 143 "@jest/types": "29.6.3",
145 "@types/auto-launch": "5.0.5", 144 "@types/auto-launch": "5.0.5",
146 "@types/color": "3.0.6", 145 "@types/color": "3.0.6",
147 "@types/fs-extra": "11.0.4", 146 "@types/fs-extra": "11.0.4",
148 "@types/jest": "29.5.10", 147 "@types/jest": "29.5.12",
149 "@types/lodash": "4.14.202", 148 "@types/lodash": "4.14.202",
150 "@types/minimist": "1.2.5", 149 "@types/minimist": "1.2.5",
151 "@types/ms": "0.7.34", 150 "@types/ms": "0.7.34",
152 "@types/node": "20.10.3", 151 "@types/node": "20.11.19",
153 "@types/prop-types": "15.7.11", 152 "@types/prop-types": "15.7.11",
154 "@types/react": "18.2.41", 153 "@types/react": "18.2.55",
155 "@types/react-color": "3.0.10", 154 "@types/react-color": "3.0.11",
156 "@types/react-dom": "18.2.17", 155 "@types/react-dom": "18.2.19",
157 "@types/react-loader": "2.4.8", 156 "@types/react-transition-group": "4.4.10",
158 "@types/react-transition-group": "4.4.9",
159 "@types/route-parser": "0.1.7", 157 "@types/route-parser": "0.1.7",
160 "@types/semver": "7.5.6", 158 "@types/semver": "7.5.7",
161 "@types/tar": "6.1.10", 159 "@types/tar": "6.1.11",
162 "@types/uuid": "9.0.7", 160 "@types/uuid": "9.0.8",
163 "@types/validator": "13.11.7", 161 "@types/validator": "13.11.9",
164 "@typescript-eslint/eslint-plugin": "6.15.0", 162 "@typescript-eslint/eslint-plugin": "6.21.0",
165 "@typescript-eslint/parser": "6.15.0", 163 "@typescript-eslint/parser": "6.21.0",
166 "all-contributors-cli": "6.26.1", 164 "all-contributors-cli": "6.26.1",
167 "chalk": "5.3.0", 165 "chalk": "5.3.0",
168 "concurrently": "8.2.2", 166 "concurrently": "8.2.2",
169 "cross-env": "7.0.3", 167 "cross-env": "7.0.3",
170 "electron": "27.1.3", 168 "electron": "29.1.1",
171 "electron-builder": "24.9.1", 169 "electron-builder": "24.9.1",
172 "esbuild": "0.16.17", 170 "esbuild": "0.16.17",
173 "esbuild-plugin-copy": "2.1.1", 171 "esbuild-plugin-copy": "2.1.1",
174 "esbuild-runner": "2.2.2", 172 "esbuild-runner": "2.2.2",
175 "esbuild-sass-plugin": "2.16.0", 173 "esbuild-sass-plugin": "2.16.1",
176 "eslint": "8.56.0", 174 "eslint": "8.56.0",
177 "eslint-config-airbnb": "19.0.4", 175 "eslint-config-airbnb": "19.0.4",
178 "eslint-config-airbnb-typescript": "17.1.0", 176 "eslint-config-airbnb-typescript": "17.1.0",
179 "eslint-config-prettier": "9.1.0", 177 "eslint-config-prettier": "9.1.0",
180 "eslint-plugin-import": "2.29.1", 178 "eslint-plugin-import": "2.29.1",
181 "eslint-plugin-jest": "27.6.0", 179 "eslint-plugin-jest": "27.9.0",
182 "eslint-plugin-jsx-a11y": "6.8.0", 180 "eslint-plugin-jsx-a11y": "6.8.0",
183 "eslint-plugin-prettier": "5.1.1", 181 "eslint-plugin-prettier": "5.1.3",
184 "eslint-plugin-react": "7.33.2", 182 "eslint-plugin-react": "7.33.2",
185 "eslint-plugin-react-hooks": "4.6.0", 183 "eslint-plugin-react-hooks": "4.6.0",
186 "eslint-plugin-sonar": "0.12.0", 184 "eslint-plugin-sonar": "0.12.0",
187 "eslint-plugin-unicorn": "50.0.1", 185 "eslint-plugin-unicorn": "50.0.1",
188 "gulp-livereload": "4.0.2", 186 "gulp-livereload": "4.0.2",
189 "husky": "8.0.3", 187 "husky": "9.0.11",
190 "is-ci": "3.0.1", 188 "is-ci": "3.0.1",
191 "jest": "29.7.0", 189 "jest": "29.7.0",
192 "prettier": "3.1.1", 190 "prettier": "3.2.5",
193 "preval-build-info": "1.0.3", 191 "preval-build-info": "1.0.3",
194 "rimraf": "5.0.5", 192 "rimraf": "5.0.5",
195 "simple-git": "3.21.0", 193 "simple-git": "3.22.0",
196 "tiny-glob": "0.2.9", 194 "tiny-glob": "0.2.9",
197 "ts-node": "10.9.1", 195 "ts-node": "10.9.2",
198 "typescript": "5.3.2", 196 "typescript": "5.3.3",
199 "wait-on": "7.2.0" 197 "wait-on": "7.2.0"
200 }, 198 },
201 "pnpm": { 199 "pnpm": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4f3ed41bb..9bde69532 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -45,32 +45,32 @@ dependencies:
45 specifier: 5.1.0 45 specifier: 5.1.0
46 version: 5.1.0 46 version: 5.1.0
47 '@electron/remote': 47 '@electron/remote':
48 specifier: 2.1.0 48 specifier: 2.1.2
49 version: 2.1.0(electron@27.1.3) 49 version: 2.1.2(electron@29.1.1)
50 '@emotion/react': 50 '@emotion/react':
51 specifier: 11.11.1 51 specifier: 11.11.3
52 version: 11.11.1(@types/react@18.2.41)(react@18.2.0) 52 version: 11.11.3(@types/react@18.2.55)(react@18.2.0)
53 '@emotion/styled': 53 '@emotion/styled':
54 specifier: 11.11.0 54 specifier: 11.11.0
55 version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.41)(react@18.2.0) 55 version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
56 '@krisdages/electron-process-manager': 56 '@krisdages/electron-process-manager':
57 specifier: 3.0.0 57 specifier: 3.0.0
58 version: 3.0.0(@electron/remote@2.1.0)(electron@27.1.3)(rxjs@7.8.1) 58 version: 3.0.0(@electron/remote@2.1.2)(electron@29.1.1)(rxjs@7.8.1)
59 '@mdi/js': 59 '@mdi/js':
60 specifier: 7.3.67 60 specifier: 7.4.47
61 version: 7.3.67 61 version: 7.4.47
62 '@mdi/react': 62 '@mdi/react':
63 specifier: 1.6.1 63 specifier: 1.6.1
64 version: 1.6.1 64 version: 1.6.1
65 '@mui/icons-material': 65 '@mui/icons-material':
66 specifier: 5.14.19 66 specifier: 5.15.10
67 version: 5.14.19(@mui/material@5.14.19)(@types/react@18.2.41)(react@18.2.0) 67 version: 5.15.10(@mui/material@5.15.10)(@types/react@18.2.55)(react@18.2.0)
68 '@mui/material': 68 '@mui/material':
69 specifier: 5.14.19 69 specifier: 5.15.10
70 version: 5.14.19(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) 70 version: 5.15.10(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
71 '@octokit/core': 71 '@octokit/core':
72 specifier: 5.0.2 72 specifier: 5.1.0
73 version: 5.0.2 73 version: 5.1.0
74 '@sentry/electron': 74 '@sentry/electron':
75 specifier: 4.14.0 75 specifier: 4.14.0
76 version: 4.14.0 76 version: 4.14.0
@@ -81,17 +81,17 @@ dependencies:
81 specifier: 5.0.6 81 specifier: 5.0.6
82 version: 5.0.6 82 version: 5.0.6
83 classnames: 83 classnames:
84 specifier: 2.3.2 84 specifier: 2.5.1
85 version: 2.3.2 85 version: 2.5.1
86 color: 86 color:
87 specifier: 4.2.3 87 specifier: 4.2.3
88 version: 4.2.3 88 version: 4.2.3
89 csstype: 89 csstype:
90 specifier: 3.1.2 90 specifier: 3.1.3
91 version: 3.1.2 91 version: 3.1.3
92 darkreader: 92 darkreader:
93 specifier: 4.9.69 93 specifier: 4.9.77
94 version: 4.9.69 94 version: 4.9.77
95 dbus-next: 95 dbus-next:
96 specifier: 0.10.2 96 specifier: 0.10.2
97 version: 0.10.2 97 version: 0.10.2
@@ -99,8 +99,8 @@ dependencies:
99 specifier: 4.3.4 99 specifier: 4.3.4
100 version: 4.3.4(supports-color@5.5.0) 100 version: 4.3.4(supports-color@5.5.0)
101 electron-dl: 101 electron-dl:
102 specifier: 3.5.1 102 specifier: 3.5.2
103 version: 3.5.1 103 version: 3.5.2
104 electron-find: 104 electron-find:
105 specifier: 1.0.7 105 specifier: 1.0.7
106 version: 1.0.7 106 version: 1.0.7
@@ -120,8 +120,8 @@ dependencies:
120 specifier: 11.2.0 120 specifier: 11.2.0
121 version: 11.2.0 121 version: 11.2.0
122 google-translate-api-x: 122 google-translate-api-x:
123 specifier: 10.6.7 123 specifier: 10.6.8
124 version: 10.6.7 124 version: 10.6.8
125 history: 125 history:
126 specifier: 5.3.0 126 specifier: 5.3.0
127 version: 5.3.0 127 version: 5.3.0
@@ -144,8 +144,8 @@ dependencies:
144 specifier: 5.2.1 144 specifier: 5.2.1
145 version: 5.2.1 145 version: 5.2.1
146 markdown-to-jsx: 146 markdown-to-jsx:
147 specifier: 7.3.2 147 specifier: 7.4.1
148 version: 7.3.2(react@18.2.0) 148 version: 7.4.1(react@18.2.0)
149 minimist: 149 minimist:
150 specifier: 1.2.8 150 specifier: 1.2.8
151 version: 1.2.8 151 version: 1.2.8
@@ -159,11 +159,11 @@ dependencies:
159 specifier: 7.6.0 159 specifier: 7.6.0
160 version: 7.6.0(mobx@6.12.0)(react-dom@18.2.0)(react@18.2.0) 160 version: 7.6.0(mobx@6.12.0)(react-dom@18.2.0)(react@18.2.0)
161 mobx-react-form: 161 mobx-react-form:
162 specifier: 6.6.0 162 specifier: 6.9.3
163 version: 6.6.0(mobx@6.12.0) 163 version: 6.9.3(mobx@6.12.0)
164 moment: 164 moment:
165 specifier: 2.29.4 165 specifier: 2.30.1
166 version: 2.29.4 166 version: 2.30.1
167 ms: 167 ms:
168 specifier: 2.1.3 168 specifier: 2.1.3
169 version: 2.1.3 169 version: 2.1.3
@@ -201,26 +201,26 @@ dependencies:
201 specifier: 2.0.1 201 specifier: 2.0.1
202 version: 2.0.1(react-dom@18.2.0)(react@18.2.0) 202 version: 2.0.1(react-dom@18.2.0)(react@18.2.0)
203 react-intl: 203 react-intl:
204 specifier: 6.5.5 204 specifier: 6.6.2
205 version: 6.5.5(react@18.2.0)(typescript@5.3.2) 205 version: 6.6.2(react@18.2.0)(typescript@5.3.3)
206 react-jss: 206 react-jss:
207 specifier: 10.10.0 207 specifier: 10.10.0
208 version: 10.10.0(react@18.2.0) 208 version: 10.10.0(react@18.2.0)
209 react-loader-spinner: 209 react-loader-spinner:
210 specifier: 5.4.5 210 specifier: 5.4.5
211 version: 5.4.5(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) 211 version: 5.4.5(@babel/core@7.24.0)(react-dom@18.2.0)(react@18.2.0)
212 react-modal: 212 react-modal:
213 specifier: 3.16.1 213 specifier: 3.16.1
214 version: 3.16.1(react-dom@18.2.0)(react@18.2.0) 214 version: 3.16.1(react-dom@18.2.0)(react@18.2.0)
215 react-router-dom: 215 react-router-dom:
216 specifier: 6.20.1 216 specifier: 6.22.1
217 version: 6.20.1(react-dom@18.2.0)(react@18.2.0) 217 version: 6.22.1(react-dom@18.2.0)(react@18.2.0)
218 react-sortable-hoc: 218 react-sortable-hoc:
219 specifier: 2.0.0 219 specifier: 2.0.0
220 version: 2.0.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) 220 version: 2.0.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)
221 react-tooltip: 221 react-tooltip:
222 specifier: 5.24.0 222 specifier: 5.26.2
223 version: 5.24.0(react-dom@18.2.0)(react@18.2.0) 223 version: 5.26.2(react-dom@18.2.0)(react@18.2.0)
224 react-topbar-progress-indicator: 224 react-topbar-progress-indicator:
225 specifier: 4.1.1 225 specifier: 4.1.1
226 version: 4.1.1(react@18.2.0) 226 version: 4.1.1(react@18.2.0)
@@ -234,8 +234,8 @@ dependencies:
234 specifier: 1.6.3 234 specifier: 1.6.3
235 version: 1.6.3 235 version: 1.6.3
236 semver: 236 semver:
237 specifier: 7.5.4 237 specifier: 7.6.0
238 version: 7.5.4 238 version: 7.6.0
239 sqlite3: 239 sqlite3:
240 specifier: 5.1.6 240 specifier: 5.1.6
241 version: 5.1.6 241 version: 5.1.6
@@ -254,9 +254,6 @@ dependencies:
254 validator: 254 validator:
255 specifier: 13.11.0 255 specifier: 13.11.0
256 version: 13.11.0 256 version: 13.11.0
257 ws:
258 specifier: 8.14.2
259 version: 8.14.2
260 257
261optionalDependencies: 258optionalDependencies:
262 macos-notification-state: 259 macos-notification-state:
@@ -271,17 +268,17 @@ devDependencies:
271 specifier: 1.4.1 268 specifier: 1.4.1
272 version: 1.4.1 269 version: 1.4.1
273 '@commitlint/cli': 270 '@commitlint/cli':
274 specifier: 17.7.1 271 specifier: 18.6.1
275 version: 17.7.1 272 version: 18.6.1(@types/node@20.11.19)(typescript@5.3.3)
276 '@commitlint/config-conventional': 273 '@commitlint/config-conventional':
277 specifier: 17.7.0 274 specifier: 18.6.2
278 version: 17.7.0 275 version: 18.6.2
279 '@electron/notarize': 276 '@electron/notarize':
280 specifier: 1.2.3 277 specifier: 1.2.3
281 version: 1.2.3 278 version: 1.2.3
282 '@formatjs/cli': 279 '@formatjs/cli':
283 specifier: 6.2.4 280 specifier: 6.2.7
284 version: 6.2.4 281 version: 6.2.7
285 '@jest/types': 282 '@jest/types':
286 specifier: 29.6.3 283 specifier: 29.6.3
287 version: 29.6.3 284 version: 29.6.3
@@ -295,8 +292,8 @@ devDependencies:
295 specifier: 11.0.4 292 specifier: 11.0.4
296 version: 11.0.4 293 version: 11.0.4
297 '@types/jest': 294 '@types/jest':
298 specifier: 29.5.10 295 specifier: 29.5.12
299 version: 29.5.10 296 version: 29.5.12
300 '@types/lodash': 297 '@types/lodash':
301 specifier: 4.14.202 298 specifier: 4.14.202
302 version: 4.14.202 299 version: 4.14.202
@@ -307,47 +304,44 @@ devDependencies:
307 specifier: 0.7.34 304 specifier: 0.7.34
308 version: 0.7.34 305 version: 0.7.34
309 '@types/node': 306 '@types/node':
310 specifier: 20.10.3 307 specifier: 20.11.19
311 version: 20.10.3 308 version: 20.11.19
312 '@types/prop-types': 309 '@types/prop-types':
313 specifier: 15.7.11 310 specifier: 15.7.11
314 version: 15.7.11 311 version: 15.7.11
315 '@types/react': 312 '@types/react':
316 specifier: 18.2.41 313 specifier: 18.2.55
317 version: 18.2.41 314 version: 18.2.55
318 '@types/react-color': 315 '@types/react-color':
319 specifier: 3.0.10 316 specifier: 3.0.11
320 version: 3.0.10 317 version: 3.0.11
321 '@types/react-dom': 318 '@types/react-dom':
322 specifier: 18.2.17 319 specifier: 18.2.19
323 version: 18.2.17 320 version: 18.2.19
324 '@types/react-loader':
325 specifier: 2.4.8
326 version: 2.4.8
327 '@types/react-transition-group': 321 '@types/react-transition-group':
328 specifier: 4.4.9 322 specifier: 4.4.10
329 version: 4.4.9 323 version: 4.4.10
330 '@types/route-parser': 324 '@types/route-parser':
331 specifier: 0.1.7 325 specifier: 0.1.7
332 version: 0.1.7 326 version: 0.1.7
333 '@types/semver': 327 '@types/semver':
334 specifier: 7.5.6 328 specifier: 7.5.7
335 version: 7.5.6 329 version: 7.5.7
336 '@types/tar': 330 '@types/tar':
337 specifier: 6.1.10 331 specifier: 6.1.11
338 version: 6.1.10 332 version: 6.1.11
339 '@types/uuid': 333 '@types/uuid':
340 specifier: 9.0.7 334 specifier: 9.0.8
341 version: 9.0.7 335 version: 9.0.8
342 '@types/validator': 336 '@types/validator':
343 specifier: 13.11.7 337 specifier: 13.11.9
344 version: 13.11.7 338 version: 13.11.9
345 '@typescript-eslint/eslint-plugin': 339 '@typescript-eslint/eslint-plugin':
346 specifier: 6.15.0 340 specifier: 6.21.0
347 version: 6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.2) 341 version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3)
348 '@typescript-eslint/parser': 342 '@typescript-eslint/parser':
349 specifier: 6.15.0 343 specifier: 6.21.0
350 version: 6.15.0(eslint@8.56.0)(typescript@5.3.2) 344 version: 6.21.0(eslint@8.56.0)(typescript@5.3.3)
351 all-contributors-cli: 345 all-contributors-cli:
352 specifier: 6.26.1 346 specifier: 6.26.1
353 version: 6.26.1 347 version: 6.26.1
@@ -361,8 +355,8 @@ devDependencies:
361 specifier: 7.0.3 355 specifier: 7.0.3
362 version: 7.0.3 356 version: 7.0.3
363 electron: 357 electron:
364 specifier: 27.1.3 358 specifier: 29.1.1
365 version: 27.1.3 359 version: 29.1.1
366 electron-builder: 360 electron-builder:
367 specifier: 24.9.1 361 specifier: 24.9.1
368 version: 24.9.1 362 version: 24.9.1
@@ -376,8 +370,8 @@ devDependencies:
376 specifier: 2.2.2 370 specifier: 2.2.2
377 version: 2.2.2(esbuild@0.16.17) 371 version: 2.2.2(esbuild@0.16.17)
378 esbuild-sass-plugin: 372 esbuild-sass-plugin:
379 specifier: 2.16.0 373 specifier: 2.16.1
380 version: 2.16.0(esbuild@0.16.17) 374 version: 2.16.1(esbuild@0.16.17)
381 eslint: 375 eslint:
382 specifier: 8.56.0 376 specifier: 8.56.0
383 version: 8.56.0 377 version: 8.56.0
@@ -386,22 +380,22 @@ devDependencies:
386 version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.56.0) 380 version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.56.0)
387 eslint-config-airbnb-typescript: 381 eslint-config-airbnb-typescript:
388 specifier: 17.1.0 382 specifier: 17.1.0
389 version: 17.1.0(@typescript-eslint/eslint-plugin@6.15.0)(@typescript-eslint/parser@6.15.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0) 383 version: 17.1.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0)
390 eslint-config-prettier: 384 eslint-config-prettier:
391 specifier: 9.1.0 385 specifier: 9.1.0
392 version: 9.1.0(eslint@8.56.0) 386 version: 9.1.0(eslint@8.56.0)
393 eslint-plugin-import: 387 eslint-plugin-import:
394 specifier: 2.29.1 388 specifier: 2.29.1
395 version: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint@8.56.0) 389 version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)
396 eslint-plugin-jest: 390 eslint-plugin-jest:
397 specifier: 27.6.0 391 specifier: 27.9.0
398 version: 27.6.0(@typescript-eslint/eslint-plugin@6.15.0)(eslint@8.56.0)(jest@29.7.0)(typescript@5.3.2) 392 version: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.56.0)(jest@29.7.0)(typescript@5.3.3)
399 eslint-plugin-jsx-a11y: 393 eslint-plugin-jsx-a11y:
400 specifier: 6.8.0 394 specifier: 6.8.0
401 version: 6.8.0(eslint@8.56.0) 395 version: 6.8.0(eslint@8.56.0)
402 eslint-plugin-prettier: 396 eslint-plugin-prettier:
403 specifier: 5.1.1 397 specifier: 5.1.3
404 version: 5.1.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) 398 version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5)
405 eslint-plugin-react: 399 eslint-plugin-react:
406 specifier: 7.33.2 400 specifier: 7.33.2
407 version: 7.33.2(eslint@8.56.0) 401 version: 7.33.2(eslint@8.56.0)
@@ -410,7 +404,7 @@ devDependencies:
410 version: 4.6.0(eslint@8.56.0) 404 version: 4.6.0(eslint@8.56.0)
411 eslint-plugin-sonar: 405 eslint-plugin-sonar:
412 specifier: 0.12.0 406 specifier: 0.12.0
413 version: 0.12.0(@babel/core@7.23.6)(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.2) 407 version: 0.12.0(@babel/core@7.24.0)(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3)
414 eslint-plugin-unicorn: 408 eslint-plugin-unicorn:
415 specifier: 50.0.1 409 specifier: 50.0.1
416 version: 50.0.1(eslint@8.56.0) 410 version: 50.0.1(eslint@8.56.0)
@@ -418,17 +412,17 @@ devDependencies:
418 specifier: 4.0.2 412 specifier: 4.0.2
419 version: 4.0.2 413 version: 4.0.2
420 husky: 414 husky:
421 specifier: 8.0.3 415 specifier: 9.0.11
422 version: 8.0.3 416 version: 9.0.11
423 is-ci: 417 is-ci:
424 specifier: 3.0.1 418 specifier: 3.0.1
425 version: 3.0.1 419 version: 3.0.1
426 jest: 420 jest:
427 specifier: 29.7.0 421 specifier: 29.7.0
428 version: 29.7.0(@types/node@20.10.3)(ts-node@10.9.1) 422 version: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2)
429 prettier: 423 prettier:
430 specifier: 3.1.1 424 specifier: 3.2.5
431 version: 3.1.1 425 version: 3.2.5
432 preval-build-info: 426 preval-build-info:
433 specifier: 1.0.3 427 specifier: 1.0.3
434 version: 1.0.3 428 version: 1.0.3
@@ -436,17 +430,17 @@ devDependencies:
436 specifier: 5.0.5 430 specifier: 5.0.5
437 version: 5.0.5 431 version: 5.0.5
438 simple-git: 432 simple-git:
439 specifier: 3.21.0 433 specifier: 3.22.0
440 version: 3.21.0 434 version: 3.22.0
441 tiny-glob: 435 tiny-glob:
442 specifier: 0.2.9 436 specifier: 0.2.9
443 version: 0.2.9 437 version: 0.2.9
444 ts-node: 438 ts-node:
445 specifier: 10.9.1 439 specifier: 10.9.2
446 version: 10.9.1(@types/node@20.10.3)(typescript@5.3.2) 440 version: 10.9.2(@types/node@20.11.19)(typescript@5.3.3)
447 typescript: 441 typescript:
448 specifier: 5.3.2 442 specifier: 5.3.3
449 version: 5.3.2 443 version: 5.3.3
450 wait-on: 444 wait-on:
451 specifier: 7.2.0 445 specifier: 7.2.0
452 version: 7.2.0(debug@4.3.4) 446 version: 7.2.0(debug@4.3.4)
@@ -599,7 +593,7 @@ packages:
599 debug: 4.3.4(supports-color@5.5.0) 593 debug: 4.3.4(supports-color@5.5.0)
600 knex: 0.21.21(sqlite3@5.1.6) 594 knex: 0.21.21(sqlite3@5.1.6)
601 lodash: 4.17.21 595 lodash: 4.17.21
602 moment: 2.29.4 596 moment: 2.30.1
603 pluralize: 8.0.0 597 pluralize: 8.0.0
604 pretty-hrtime: 1.0.3 598 pretty-hrtime: 1.0.3
605 require-all: 3.0.0 599 require-all: 3.0.0
@@ -664,6 +658,14 @@ packages:
664 dependencies: 658 dependencies:
665 '@jridgewell/gen-mapping': 0.3.3 659 '@jridgewell/gen-mapping': 0.3.3
666 '@jridgewell/trace-mapping': 0.3.20 660 '@jridgewell/trace-mapping': 0.3.20
661 dev: true
662
663 /@ampproject/remapping@2.3.0:
664 resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
665 engines: {node: '>=6.0.0'}
666 dependencies:
667 '@jridgewell/gen-mapping': 0.3.5
668 '@jridgewell/trace-mapping': 0.3.25
667 669
668 /@babel/code-frame@7.23.5: 670 /@babel/code-frame@7.23.5:
669 resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} 671 resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
@@ -704,20 +706,20 @@ packages:
704 - supports-color 706 - supports-color
705 dev: true 707 dev: true
706 708
707 /@babel/core@7.23.6: 709 /@babel/core@7.24.0:
708 resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} 710 resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==}
709 engines: {node: '>=6.9.0'} 711 engines: {node: '>=6.9.0'}
710 dependencies: 712 dependencies:
711 '@ampproject/remapping': 2.2.1 713 '@ampproject/remapping': 2.3.0
712 '@babel/code-frame': 7.23.5 714 '@babel/code-frame': 7.23.5
713 '@babel/generator': 7.23.6 715 '@babel/generator': 7.23.6
714 '@babel/helper-compilation-targets': 7.23.6 716 '@babel/helper-compilation-targets': 7.23.6
715 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) 717 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0)
716 '@babel/helpers': 7.23.6 718 '@babel/helpers': 7.24.0
717 '@babel/parser': 7.23.6 719 '@babel/parser': 7.24.0
718 '@babel/template': 7.22.15 720 '@babel/template': 7.24.0
719 '@babel/traverse': 7.23.6 721 '@babel/traverse': 7.24.0
720 '@babel/types': 7.23.6 722 '@babel/types': 7.24.0
721 convert-source-map: 2.0.0 723 convert-source-map: 2.0.0
722 debug: 4.3.4(supports-color@5.5.0) 724 debug: 4.3.4(supports-color@5.5.0)
723 gensync: 1.0.0-beta.2 725 gensync: 1.0.0-beta.2
@@ -726,14 +728,14 @@ packages:
726 transitivePeerDependencies: 728 transitivePeerDependencies:
727 - supports-color 729 - supports-color
728 730
729 /@babel/eslint-parser@7.22.9(@babel/core@7.23.6)(eslint@8.56.0): 731 /@babel/eslint-parser@7.23.10(@babel/core@7.24.0)(eslint@8.56.0):
730 resolution: {integrity: sha512-xdMkt39/nviO/4vpVdrEYPwXCsYIXSSAr6mC7WQsNIlGnuxKyKE7GZjalcnbSWiC4OXGNNN3UQPeHfjSC6sTDA==} 732 resolution: {integrity: sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw==}
731 engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} 733 engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
732 peerDependencies: 734 peerDependencies:
733 '@babel/core': '>=7.11.0' 735 '@babel/core': ^7.11.0
734 eslint: ^7.5.0 || ^8.0.0 736 eslint: ^7.5.0 || ^8.0.0
735 dependencies: 737 dependencies:
736 '@babel/core': 7.23.6 738 '@babel/core': 7.24.0
737 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 739 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
738 eslint: 8.56.0 740 eslint: 8.56.0
739 eslint-visitor-keys: 2.1.0 741 eslint-visitor-keys: 2.1.0
@@ -753,9 +755,9 @@ packages:
753 resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} 755 resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==}
754 engines: {node: '>=6.9.0'} 756 engines: {node: '>=6.9.0'}
755 dependencies: 757 dependencies:
756 '@babel/types': 7.23.6 758 '@babel/types': 7.24.0
757 '@jridgewell/gen-mapping': 0.3.3 759 '@jridgewell/gen-mapping': 0.3.5
758 '@jridgewell/trace-mapping': 0.3.20 760 '@jridgewell/trace-mapping': 0.3.25
759 jsesc: 2.5.2 761 jsesc: 2.5.2
760 762
761 /@babel/helper-annotate-as-pure@7.22.5: 763 /@babel/helper-annotate-as-pure@7.22.5:
@@ -782,7 +784,7 @@ packages:
782 dependencies: 784 dependencies:
783 '@babel/compat-data': 7.23.5 785 '@babel/compat-data': 7.23.5
784 '@babel/helper-validator-option': 7.23.5 786 '@babel/helper-validator-option': 7.23.5
785 browserslist: 4.22.2 787 browserslist: 4.23.0
786 lru-cache: 5.1.1 788 lru-cache: 5.1.1
787 semver: 6.3.1 789 semver: 6.3.1
788 790
@@ -823,13 +825,13 @@ packages:
823 '@babel/helper-validator-identifier': 7.22.20 825 '@babel/helper-validator-identifier': 7.22.20
824 dev: true 826 dev: true
825 827
826 /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): 828 /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0):
827 resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} 829 resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
828 engines: {node: '>=6.9.0'} 830 engines: {node: '>=6.9.0'}
829 peerDependencies: 831 peerDependencies:
830 '@babel/core': ^7.0.0 832 '@babel/core': ^7.0.0
831 dependencies: 833 dependencies:
832 '@babel/core': 7.23.6 834 '@babel/core': 7.24.0
833 '@babel/helper-environment-visitor': 7.22.20 835 '@babel/helper-environment-visitor': 7.22.20
834 '@babel/helper-module-imports': 7.22.15 836 '@babel/helper-module-imports': 7.22.15
835 '@babel/helper-simple-access': 7.22.5 837 '@babel/helper-simple-access': 7.22.5
@@ -880,13 +882,13 @@ packages:
880 - supports-color 882 - supports-color
881 dev: true 883 dev: true
882 884
883 /@babel/helpers@7.23.6: 885 /@babel/helpers@7.24.0:
884 resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} 886 resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==}
885 engines: {node: '>=6.9.0'} 887 engines: {node: '>=6.9.0'}
886 dependencies: 888 dependencies:
887 '@babel/template': 7.22.15 889 '@babel/template': 7.24.0
888 '@babel/traverse': 7.23.6 890 '@babel/traverse': 7.24.0
889 '@babel/types': 7.23.6 891 '@babel/types': 7.24.0
890 transitivePeerDependencies: 892 transitivePeerDependencies:
891 - supports-color 893 - supports-color
892 894
@@ -905,12 +907,12 @@ packages:
905 dependencies: 907 dependencies:
906 '@babel/types': 7.23.5 908 '@babel/types': 7.23.5
907 909
908 /@babel/parser@7.23.6: 910 /@babel/parser@7.24.0:
909 resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} 911 resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==}
910 engines: {node: '>=6.0.0'} 912 engines: {node: '>=6.0.0'}
911 hasBin: true 913 hasBin: true
912 dependencies: 914 dependencies:
913 '@babel/types': 7.23.6 915 '@babel/types': 7.24.0
914 916
915 /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.5): 917 /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.5):
916 resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 918 resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
@@ -967,13 +969,13 @@ packages:
967 '@babel/helper-plugin-utils': 7.22.5 969 '@babel/helper-plugin-utils': 7.22.5
968 dev: true 970 dev: true
969 971
970 /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.6): 972 /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.24.0):
971 resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} 973 resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==}
972 engines: {node: '>=6.9.0'} 974 engines: {node: '>=6.9.0'}
973 peerDependencies: 975 peerDependencies:
974 '@babel/core': ^7.0.0-0 976 '@babel/core': ^7.0.0-0
975 dependencies: 977 dependencies:
976 '@babel/core': 7.23.6 978 '@babel/core': 7.24.0
977 '@babel/helper-plugin-utils': 7.22.5 979 '@babel/helper-plugin-utils': 7.22.5
978 dev: false 980 dev: false
979 981
@@ -1057,6 +1059,12 @@ packages:
1057 dependencies: 1059 dependencies:
1058 regenerator-runtime: 0.14.0 1060 regenerator-runtime: 0.14.0
1059 1061
1062 /@babel/runtime@7.23.9:
1063 resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==}
1064 engines: {node: '>=6.9.0'}
1065 dependencies:
1066 regenerator-runtime: 0.14.0
1067
1060 /@babel/template@7.22.15: 1068 /@babel/template@7.22.15:
1061 resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} 1069 resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
1062 engines: {node: '>=6.9.0'} 1070 engines: {node: '>=6.9.0'}
@@ -1065,6 +1073,14 @@ packages:
1065 '@babel/parser': 7.23.5 1073 '@babel/parser': 7.23.5
1066 '@babel/types': 7.23.5 1074 '@babel/types': 7.23.5
1067 1075
1076 /@babel/template@7.24.0:
1077 resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==}
1078 engines: {node: '>=6.9.0'}
1079 dependencies:
1080 '@babel/code-frame': 7.23.5
1081 '@babel/parser': 7.24.0
1082 '@babel/types': 7.24.0
1083
1068 /@babel/traverse@7.23.5(supports-color@5.5.0): 1084 /@babel/traverse@7.23.5(supports-color@5.5.0):
1069 resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} 1085 resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==}
1070 engines: {node: '>=6.9.0'} 1086 engines: {node: '>=6.9.0'}
@@ -1082,8 +1098,8 @@ packages:
1082 transitivePeerDependencies: 1098 transitivePeerDependencies:
1083 - supports-color 1099 - supports-color
1084 1100
1085 /@babel/traverse@7.23.6: 1101 /@babel/traverse@7.24.0:
1086 resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} 1102 resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==}
1087 engines: {node: '>=6.9.0'} 1103 engines: {node: '>=6.9.0'}
1088 dependencies: 1104 dependencies:
1089 '@babel/code-frame': 7.23.5 1105 '@babel/code-frame': 7.23.5
@@ -1092,8 +1108,8 @@ packages:
1092 '@babel/helper-function-name': 7.23.0 1108 '@babel/helper-function-name': 7.23.0
1093 '@babel/helper-hoist-variables': 7.22.5 1109 '@babel/helper-hoist-variables': 7.22.5
1094 '@babel/helper-split-export-declaration': 7.22.6 1110 '@babel/helper-split-export-declaration': 7.22.6
1095 '@babel/parser': 7.23.6 1111 '@babel/parser': 7.24.0
1096 '@babel/types': 7.23.6 1112 '@babel/types': 7.24.0
1097 debug: 4.3.4(supports-color@5.5.0) 1113 debug: 4.3.4(supports-color@5.5.0)
1098 globals: 11.12.0 1114 globals: 11.12.0
1099 transitivePeerDependencies: 1115 transitivePeerDependencies:
@@ -1107,8 +1123,8 @@ packages:
1107 '@babel/helper-validator-identifier': 7.22.20 1123 '@babel/helper-validator-identifier': 7.22.20
1108 to-fast-properties: 2.0.0 1124 to-fast-properties: 2.0.0
1109 1125
1110 /@babel/types@7.23.6: 1126 /@babel/types@7.24.0:
1111 resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} 1127 resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==}
1112 engines: {node: '>=6.9.0'} 1128 engines: {node: '>=6.9.0'}
1113 dependencies: 1129 dependencies:
1114 '@babel/helper-string-parser': 7.23.4 1130 '@babel/helper-string-parser': 7.23.4
@@ -1192,46 +1208,47 @@ packages:
1192 engines: {node: '>=0.1.90'} 1208 engines: {node: '>=0.1.90'}
1193 dev: false 1209 dev: false
1194 1210
1195 /@commitlint/cli@17.7.1: 1211 /@commitlint/cli@18.6.1(@types/node@20.11.19)(typescript@5.3.3):
1196 resolution: {integrity: sha512-BCm/AT06SNCQtvFv921iNhudOHuY16LswT0R3OeolVGLk8oP+Rk9TfQfgjH7QPMjhvp76bNqGFEcpKojxUNW1g==} 1212 resolution: {integrity: sha512-5IDE0a+lWGdkOvKH892HHAZgbAjcj1mT5QrfA/SVbLJV/BbBMGyKN0W5mhgjekPJJwEQdVNvhl9PwUacY58Usw==}
1197 engines: {node: '>=v14'} 1213 engines: {node: '>=v18'}
1198 hasBin: true 1214 hasBin: true
1199 dependencies: 1215 dependencies:
1200 '@commitlint/format': 17.4.4 1216 '@commitlint/format': 18.6.1
1201 '@commitlint/lint': 17.7.0 1217 '@commitlint/lint': 18.6.1
1202 '@commitlint/load': 17.7.1 1218 '@commitlint/load': 18.6.1(@types/node@20.11.19)(typescript@5.3.3)
1203 '@commitlint/read': 17.5.1 1219 '@commitlint/read': 18.6.1
1204 '@commitlint/types': 17.4.4 1220 '@commitlint/types': 18.6.1
1205 execa: 5.1.1 1221 execa: 5.1.1
1206 lodash.isfunction: 3.0.9 1222 lodash.isfunction: 3.0.9
1207 resolve-from: 5.0.0 1223 resolve-from: 5.0.0
1208 resolve-global: 1.0.0 1224 resolve-global: 1.0.0
1209 yargs: 17.7.2 1225 yargs: 17.7.2
1210 transitivePeerDependencies: 1226 transitivePeerDependencies:
1211 - '@swc/core' 1227 - '@types/node'
1212 - '@swc/wasm' 1228 - typescript
1213 dev: true 1229 dev: true
1214 1230
1215 /@commitlint/config-conventional@17.7.0: 1231 /@commitlint/config-conventional@18.6.2:
1216 resolution: {integrity: sha512-iicqh2o6et+9kWaqsQiEYZzfLbtoWv9uZl8kbI8EGfnc0HeGafQBF7AJ0ylN9D/2kj6txltsdyQs8+2fTMwWEw==} 1232 resolution: {integrity: sha512-PcgSYg1AKGQIwDQKbaHtJsfqYy4uJTC7crLVZ83lfjcPaec4Pry2vLeaWej7ao2KsT20l9dWoMPpEGg8LWdUuA==}
1217 engines: {node: '>=v14'} 1233 engines: {node: '>=v18'}
1218 dependencies: 1234 dependencies:
1219 conventional-changelog-conventionalcommits: 6.1.0 1235 '@commitlint/types': 18.6.1
1236 conventional-changelog-conventionalcommits: 7.0.2
1220 dev: true 1237 dev: true
1221 1238
1222 /@commitlint/config-validator@17.6.7: 1239 /@commitlint/config-validator@18.6.1:
1223 resolution: {integrity: sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==} 1240 resolution: {integrity: sha512-05uiToBVfPhepcQWE1ZQBR/Io3+tb3gEotZjnI4tTzzPk16NffN6YABgwFQCLmzZefbDcmwWqJWc2XT47q7Znw==}
1224 engines: {node: '>=v14'} 1241 engines: {node: '>=v18'}
1225 dependencies: 1242 dependencies:
1226 '@commitlint/types': 17.4.4 1243 '@commitlint/types': 18.6.1
1227 ajv: 8.12.0 1244 ajv: 8.12.0
1228 dev: true 1245 dev: true
1229 1246
1230 /@commitlint/ensure@17.6.7: 1247 /@commitlint/ensure@18.6.1:
1231 resolution: {integrity: sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==} 1248 resolution: {integrity: sha512-BPm6+SspyxQ7ZTsZwXc7TRQL5kh5YWt3euKmEIBZnocMFkJevqs3fbLRb8+8I/cfbVcAo4mxRlpTPfz8zX7SnQ==}
1232 engines: {node: '>=v14'} 1249 engines: {node: '>=v18'}
1233 dependencies: 1250 dependencies:
1234 '@commitlint/types': 17.4.4 1251 '@commitlint/types': 18.6.1
1235 lodash.camelcase: 4.3.0 1252 lodash.camelcase: 4.3.0
1236 lodash.kebabcase: 4.1.1 1253 lodash.kebabcase: 4.1.1
1237 lodash.snakecase: 4.1.1 1254 lodash.snakecase: 4.1.1
@@ -1239,123 +1256,119 @@ packages:
1239 lodash.upperfirst: 4.3.1 1256 lodash.upperfirst: 4.3.1
1240 dev: true 1257 dev: true
1241 1258
1242 /@commitlint/execute-rule@17.4.0: 1259 /@commitlint/execute-rule@18.6.1:
1243 resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} 1260 resolution: {integrity: sha512-7s37a+iWyJiGUeMFF6qBlyZciUkF8odSAnHijbD36YDctLhGKoYltdvuJ/AFfRm6cBLRtRk9cCVPdsEFtt/2rg==}
1244 engines: {node: '>=v14'} 1261 engines: {node: '>=v18'}
1245 dev: true 1262 dev: true
1246 1263
1247 /@commitlint/format@17.4.4: 1264 /@commitlint/format@18.6.1:
1248 resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==} 1265 resolution: {integrity: sha512-K8mNcfU/JEFCharj2xVjxGSF+My+FbUHoqR+4GqPGrHNqXOGNio47ziiR4HQUPKtiNs05o8/WyLBoIpMVOP7wg==}
1249 engines: {node: '>=v14'} 1266 engines: {node: '>=v18'}
1250 dependencies: 1267 dependencies:
1251 '@commitlint/types': 17.4.4 1268 '@commitlint/types': 18.6.1
1252 chalk: 4.1.2 1269 chalk: 4.1.2
1253 dev: true 1270 dev: true
1254 1271
1255 /@commitlint/is-ignored@17.7.0: 1272 /@commitlint/is-ignored@18.6.1:
1256 resolution: {integrity: sha512-043rA7m45tyEfW7Zv2vZHF++176MLHH9h70fnPoYlB1slKBeKl8BwNIlnPg4xBdRBVNPaCqvXxWswx2GR4c9Hw==} 1273 resolution: {integrity: sha512-MOfJjkEJj/wOaPBw5jFjTtfnx72RGwqYIROABudOtJKW7isVjFe9j0t8xhceA02QebtYf4P/zea4HIwnXg8rvA==}
1257 engines: {node: '>=v14'} 1274 engines: {node: '>=v18'}
1258 dependencies: 1275 dependencies:
1259 '@commitlint/types': 17.4.4 1276 '@commitlint/types': 18.6.1
1260 semver: 7.5.4 1277 semver: 7.6.0
1261 dev: true 1278 dev: true
1262 1279
1263 /@commitlint/lint@17.7.0: 1280 /@commitlint/lint@18.6.1:
1264 resolution: {integrity: sha512-TCQihm7/uszA5z1Ux1vw+Nf3yHTgicus/+9HiUQk+kRSQawByxZNESeQoX9ujfVd3r4Sa+3fn0JQAguG4xvvbA==} 1281 resolution: {integrity: sha512-8WwIFo3jAuU+h1PkYe5SfnIOzp+TtBHpFr4S8oJWhu44IWKuVx6GOPux3+9H1iHOan/rGBaiacicZkMZuluhfQ==}
1265 engines: {node: '>=v14'} 1282 engines: {node: '>=v18'}
1266 dependencies: 1283 dependencies:
1267 '@commitlint/is-ignored': 17.7.0 1284 '@commitlint/is-ignored': 18.6.1
1268 '@commitlint/parse': 17.7.0 1285 '@commitlint/parse': 18.6.1
1269 '@commitlint/rules': 17.7.0 1286 '@commitlint/rules': 18.6.1
1270 '@commitlint/types': 17.4.4 1287 '@commitlint/types': 18.6.1
1271 dev: true 1288 dev: true
1272 1289
1273 /@commitlint/load@17.7.1: 1290 /@commitlint/load@18.6.1(@types/node@20.11.19)(typescript@5.3.3):
1274 resolution: {integrity: sha512-S/QSOjE1ztdogYj61p6n3UbkUvweR17FQ0zDbNtoTLc+Hz7vvfS7ehoTMQ27hPSjVBpp7SzEcOQu081RLjKHJQ==} 1291 resolution: {integrity: sha512-p26x8734tSXUHoAw0ERIiHyW4RaI4Bj99D8YgUlVV9SedLf8hlWAfyIFhHRIhfPngLlCe0QYOdRKYFt8gy56TA==}
1275 engines: {node: '>=v14'} 1292 engines: {node: '>=v18'}
1276 dependencies: 1293 dependencies:
1277 '@commitlint/config-validator': 17.6.7 1294 '@commitlint/config-validator': 18.6.1
1278 '@commitlint/execute-rule': 17.4.0 1295 '@commitlint/execute-rule': 18.6.1
1279 '@commitlint/resolve-extends': 17.6.7 1296 '@commitlint/resolve-extends': 18.6.1
1280 '@commitlint/types': 17.4.4 1297 '@commitlint/types': 18.6.1
1281 '@types/node': 20.4.7
1282 chalk: 4.1.2 1298 chalk: 4.1.2
1283 cosmiconfig: 8.1.3 1299 cosmiconfig: 8.3.6(typescript@5.3.3)
1284 cosmiconfig-typescript-loader: 4.3.0(@types/node@20.4.7)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.3.2) 1300 cosmiconfig-typescript-loader: 5.0.0(@types/node@20.11.19)(cosmiconfig@8.3.6)(typescript@5.3.3)
1285 lodash.isplainobject: 4.0.6 1301 lodash.isplainobject: 4.0.6
1286 lodash.merge: 4.6.2 1302 lodash.merge: 4.6.2
1287 lodash.uniq: 4.5.0 1303 lodash.uniq: 4.5.0
1288 resolve-from: 5.0.0 1304 resolve-from: 5.0.0
1289 ts-node: 10.9.1(@types/node@20.4.7)(typescript@5.3.2)
1290 typescript: 5.3.2
1291 transitivePeerDependencies: 1305 transitivePeerDependencies:
1292 - '@swc/core' 1306 - '@types/node'
1293 - '@swc/wasm' 1307 - typescript
1294 dev: true 1308 dev: true
1295 1309
1296 /@commitlint/message@17.4.2: 1310 /@commitlint/message@18.6.1:
1297 resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==} 1311 resolution: {integrity: sha512-VKC10UTMLcpVjMIaHHsY1KwhuTQtdIKPkIdVEwWV+YuzKkzhlI3aNy6oo1eAN6b/D2LTtZkJe2enHmX0corYRw==}
1298 engines: {node: '>=v14'} 1312 engines: {node: '>=v18'}
1299 dev: true 1313 dev: true
1300 1314
1301 /@commitlint/parse@17.7.0: 1315 /@commitlint/parse@18.6.1:
1302 resolution: {integrity: sha512-dIvFNUMCUHqq5Abv80mIEjLVfw8QNuA4DS7OWip4pcK/3h5wggmjVnlwGCDvDChkw2TjK1K6O+tAEV78oxjxag==} 1316 resolution: {integrity: sha512-eS/3GREtvVJqGZrwAGRwR9Gdno3YcZ6Xvuaa+vUF8j++wsmxrA2En3n0ccfVO2qVOLJC41ni7jSZhQiJpMPGOQ==}
1303 engines: {node: '>=v14'} 1317 engines: {node: '>=v18'}
1304 dependencies: 1318 dependencies:
1305 '@commitlint/types': 17.4.4 1319 '@commitlint/types': 18.6.1
1306 conventional-changelog-angular: 6.0.0 1320 conventional-changelog-angular: 7.0.0
1307 conventional-commits-parser: 4.0.0 1321 conventional-commits-parser: 5.0.0
1308 dev: true 1322 dev: true
1309 1323
1310 /@commitlint/read@17.5.1: 1324 /@commitlint/read@18.6.1:
1311 resolution: {integrity: sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==} 1325 resolution: {integrity: sha512-ia6ODaQFzXrVul07ffSgbZGFajpe8xhnDeLIprLeyfz3ivQU1dIoHp7yz0QIorZ6yuf4nlzg4ZUkluDrGN/J/w==}
1312 engines: {node: '>=v14'} 1326 engines: {node: '>=v18'}
1313 dependencies: 1327 dependencies:
1314 '@commitlint/top-level': 17.4.0 1328 '@commitlint/top-level': 18.6.1
1315 '@commitlint/types': 17.4.4 1329 '@commitlint/types': 18.6.1
1316 fs-extra: 11.2.0
1317 git-raw-commits: 2.0.11 1330 git-raw-commits: 2.0.11
1318 minimist: 1.2.8 1331 minimist: 1.2.8
1319 dev: true 1332 dev: true
1320 1333
1321 /@commitlint/resolve-extends@17.6.7: 1334 /@commitlint/resolve-extends@18.6.1:
1322 resolution: {integrity: sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==} 1335 resolution: {integrity: sha512-ifRAQtHwK+Gj3Bxj/5chhc4L2LIc3s30lpsyW67yyjsETR6ctHAHRu1FSpt0KqahK5xESqoJ92v6XxoDRtjwEQ==}
1323 engines: {node: '>=v14'} 1336 engines: {node: '>=v18'}
1324 dependencies: 1337 dependencies:
1325 '@commitlint/config-validator': 17.6.7 1338 '@commitlint/config-validator': 18.6.1
1326 '@commitlint/types': 17.4.4 1339 '@commitlint/types': 18.6.1
1327 import-fresh: 3.3.0 1340 import-fresh: 3.3.0
1328 lodash.mergewith: 4.6.2 1341 lodash.mergewith: 4.6.2
1329 resolve-from: 5.0.0 1342 resolve-from: 5.0.0
1330 resolve-global: 1.0.0 1343 resolve-global: 1.0.0
1331 dev: true 1344 dev: true
1332 1345
1333 /@commitlint/rules@17.7.0: 1346 /@commitlint/rules@18.6.1:
1334 resolution: {integrity: sha512-J3qTh0+ilUE5folSaoK91ByOb8XeQjiGcdIdiB/8UT1/Rd1itKo0ju/eQVGyFzgTMYt8HrDJnGTmNWwcMR1rmA==} 1347 resolution: {integrity: sha512-kguM6HxZDtz60v/zQYOe0voAtTdGybWXefA1iidjWYmyUUspO1zBPQEmJZ05/plIAqCVyNUTAiRPWIBKLCrGew==}
1335 engines: {node: '>=v14'} 1348 engines: {node: '>=v18'}
1336 dependencies: 1349 dependencies:
1337 '@commitlint/ensure': 17.6.7 1350 '@commitlint/ensure': 18.6.1
1338 '@commitlint/message': 17.4.2 1351 '@commitlint/message': 18.6.1
1339 '@commitlint/to-lines': 17.4.0 1352 '@commitlint/to-lines': 18.6.1
1340 '@commitlint/types': 17.4.4 1353 '@commitlint/types': 18.6.1
1341 execa: 5.1.1 1354 execa: 5.1.1
1342 dev: true 1355 dev: true
1343 1356
1344 /@commitlint/to-lines@17.4.0: 1357 /@commitlint/to-lines@18.6.1:
1345 resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==} 1358 resolution: {integrity: sha512-Gl+orGBxYSNphx1+83GYeNy5N0dQsHBQ9PJMriaLQDB51UQHCVLBT/HBdOx5VaYksivSf5Os55TLePbRLlW50Q==}
1346 engines: {node: '>=v14'} 1359 engines: {node: '>=v18'}
1347 dev: true 1360 dev: true
1348 1361
1349 /@commitlint/top-level@17.4.0: 1362 /@commitlint/top-level@18.6.1:
1350 resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==} 1363 resolution: {integrity: sha512-HyiHQZUTf0+r0goTCDs/bbVv/LiiQ7AVtz6KIar+8ZrseB9+YJAIo8HQ2IC2QT1y3N1lbW6OqVEsTHjbT6hGSw==}
1351 engines: {node: '>=v14'} 1364 engines: {node: '>=v18'}
1352 dependencies: 1365 dependencies:
1353 find-up: 5.0.0 1366 find-up: 5.0.0
1354 dev: true 1367 dev: true
1355 1368
1356 /@commitlint/types@17.4.4: 1369 /@commitlint/types@18.6.1:
1357 resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} 1370 resolution: {integrity: sha512-gwRLBLra/Dozj2OywopeuHj2ac26gjGkz2cZ+86cTJOdtWfiRRr4+e77ZDAGc6MDWxaWheI+mAV5TLWWRwqrFg==}
1358 engines: {node: '>=v14'} 1371 engines: {node: '>=v18'}
1359 dependencies: 1372 dependencies:
1360 chalk: 4.1.2 1373 chalk: 4.1.2
1361 dev: true 1374 dev: true
@@ -1445,12 +1458,12 @@ packages:
1445 - supports-color 1458 - supports-color
1446 dev: true 1459 dev: true
1447 1460
1448 /@electron/remote@2.1.0(electron@27.1.3): 1461 /@electron/remote@2.1.2(electron@29.1.1):
1449 resolution: {integrity: sha512-38jzz2beoYTo0DNS+aoaGyLS/fHeNTAc1Aom6HlYsxKnvVWjcg4xriC7J2IUkYSEDHGKX/D7jUst+mH4dHR6QA==} 1462 resolution: {integrity: sha512-EPwNx+nhdrTBxyCqXt/pftoQg/ybtWDW3DUWHafejvnB1ZGGfMpv6e15D8KeempocjXe78T7WreyGGb3mlZxdA==}
1450 peerDependencies: 1463 peerDependencies:
1451 electron: '>= 13.0.0' 1464 electron: '>= 13.0.0'
1452 dependencies: 1465 dependencies:
1453 electron: 27.1.3 1466 electron: 29.1.1
1454 dev: false 1467 dev: false
1455 1468
1456 /@electron/universal@1.4.1: 1469 /@electron/universal@1.4.1:
@@ -1518,8 +1531,8 @@ packages:
1518 resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} 1531 resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
1519 dev: false 1532 dev: false
1520 1533
1521 /@emotion/react@11.11.1(@types/react@18.2.41)(react@18.2.0): 1534 /@emotion/react@11.11.3(@types/react@18.2.55)(react@18.2.0):
1522 resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==} 1535 resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==}
1523 peerDependencies: 1536 peerDependencies:
1524 '@types/react': '*' 1537 '@types/react': '*'
1525 react: '>=16.8.0' 1538 react: '>=16.8.0'
@@ -1530,11 +1543,11 @@ packages:
1530 '@babel/runtime': 7.23.5 1543 '@babel/runtime': 7.23.5
1531 '@emotion/babel-plugin': 11.11.0 1544 '@emotion/babel-plugin': 11.11.0
1532 '@emotion/cache': 11.11.0 1545 '@emotion/cache': 11.11.0
1533 '@emotion/serialize': 1.1.2 1546 '@emotion/serialize': 1.1.3
1534 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) 1547 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
1535 '@emotion/utils': 1.2.1 1548 '@emotion/utils': 1.2.1
1536 '@emotion/weak-memoize': 0.3.1 1549 '@emotion/weak-memoize': 0.3.1
1537 '@types/react': 18.2.41 1550 '@types/react': 18.2.55
1538 hoist-non-react-statics: 3.3.2 1551 hoist-non-react-statics: 3.3.2
1539 react: 18.2.0 1552 react: 18.2.0
1540 dev: false 1553 dev: false
@@ -1546,14 +1559,24 @@ packages:
1546 '@emotion/memoize': 0.8.1 1559 '@emotion/memoize': 0.8.1
1547 '@emotion/unitless': 0.8.1 1560 '@emotion/unitless': 0.8.1
1548 '@emotion/utils': 1.2.1 1561 '@emotion/utils': 1.2.1
1549 csstype: 3.1.2 1562 csstype: 3.1.3
1563 dev: false
1564
1565 /@emotion/serialize@1.1.3:
1566 resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==}
1567 dependencies:
1568 '@emotion/hash': 0.9.1
1569 '@emotion/memoize': 0.8.1
1570 '@emotion/unitless': 0.8.1
1571 '@emotion/utils': 1.2.1
1572 csstype: 3.1.3
1550 dev: false 1573 dev: false
1551 1574
1552 /@emotion/sheet@1.2.2: 1575 /@emotion/sheet@1.2.2:
1553 resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} 1576 resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==}
1554 dev: false 1577 dev: false
1555 1578
1556 /@emotion/styled@11.11.0(@emotion/react@11.11.1)(@types/react@18.2.41)(react@18.2.0): 1579 /@emotion/styled@11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0):
1557 resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} 1580 resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==}
1558 peerDependencies: 1581 peerDependencies:
1559 '@emotion/react': ^11.0.0-rc.0 1582 '@emotion/react': ^11.0.0-rc.0
@@ -1566,11 +1589,11 @@ packages:
1566 '@babel/runtime': 7.23.5 1589 '@babel/runtime': 7.23.5
1567 '@emotion/babel-plugin': 11.11.0 1590 '@emotion/babel-plugin': 11.11.0
1568 '@emotion/is-prop-valid': 1.2.1 1591 '@emotion/is-prop-valid': 1.2.1
1569 '@emotion/react': 11.11.1(@types/react@18.2.41)(react@18.2.0) 1592 '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
1570 '@emotion/serialize': 1.1.2 1593 '@emotion/serialize': 1.1.2
1571 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) 1594 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
1572 '@emotion/utils': 1.2.1 1595 '@emotion/utils': 1.2.1
1573 '@types/react': 18.2.41 1596 '@types/react': 18.2.55
1574 react: 18.2.0 1597 react: 18.2.0
1575 dev: false 1598 dev: false
1576 1599
@@ -1837,36 +1860,36 @@ packages:
1837 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1860 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1838 dev: true 1861 dev: true
1839 1862
1840 /@floating-ui/core@1.5.1: 1863 /@floating-ui/core@1.6.0:
1841 resolution: {integrity: sha512-QgcKYwzcc8vvZ4n/5uklchy8KVdjJwcOeI+HnnTNclJjs2nYsy23DOCf+sSV1kBwD9yDAoVKCkv/gEPzgQU3Pw==} 1864 resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==}
1842 dependencies: 1865 dependencies:
1843 '@floating-ui/utils': 0.1.6 1866 '@floating-ui/utils': 0.2.1
1844 dev: false 1867 dev: false
1845 1868
1846 /@floating-ui/dom@1.5.3: 1869 /@floating-ui/dom@1.6.1:
1847 resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} 1870 resolution: {integrity: sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==}
1848 dependencies: 1871 dependencies:
1849 '@floating-ui/core': 1.5.1 1872 '@floating-ui/core': 1.6.0
1850 '@floating-ui/utils': 0.1.6 1873 '@floating-ui/utils': 0.2.1
1851 dev: false 1874 dev: false
1852 1875
1853 /@floating-ui/react-dom@2.0.4(react-dom@18.2.0)(react@18.2.0): 1876 /@floating-ui/react-dom@2.0.8(react-dom@18.2.0)(react@18.2.0):
1854 resolution: {integrity: sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==} 1877 resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==}
1855 peerDependencies: 1878 peerDependencies:
1856 react: '>=16.8.0' 1879 react: '>=16.8.0'
1857 react-dom: '>=16.8.0' 1880 react-dom: '>=16.8.0'
1858 dependencies: 1881 dependencies:
1859 '@floating-ui/dom': 1.5.3 1882 '@floating-ui/dom': 1.6.1
1860 react: 18.2.0 1883 react: 18.2.0
1861 react-dom: 18.2.0(react@18.2.0) 1884 react-dom: 18.2.0(react@18.2.0)
1862 dev: false 1885 dev: false
1863 1886
1864 /@floating-ui/utils@0.1.6: 1887 /@floating-ui/utils@0.2.1:
1865 resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} 1888 resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==}
1866 dev: false 1889 dev: false
1867 1890
1868 /@formatjs/cli@6.2.4: 1891 /@formatjs/cli@6.2.7:
1869 resolution: {integrity: sha512-g1o9O143F5TGB55skib3fKbyjifPa9YoDcX9L07hVJocRKngCcu4JhKViyUSN55KGcN2ttfBomM+wihN6wtBSQ==} 1892 resolution: {integrity: sha512-F8sPvXsrjOXKAXpbZo3HObq3TZWNa91cimRukmy/54GRo83V0q2ybj9YXtBfcGlnFhzRFXq8ukkTtHgYeRMJaQ==}
1870 engines: {node: '>= 16'} 1893 engines: {node: '>= 16'}
1871 hasBin: true 1894 hasBin: true
1872 peerDependencies: 1895 peerDependencies:
@@ -1876,10 +1899,10 @@ packages:
1876 optional: true 1899 optional: true
1877 dev: true 1900 dev: true
1878 1901
1879 /@formatjs/ecma402-abstract@1.18.0: 1902 /@formatjs/ecma402-abstract@1.18.2:
1880 resolution: {integrity: sha512-PEVLoa3zBevWSCZzPIM/lvPCi8P5l4G+NXQMc/CjEiaCWgyHieUoo0nM7Bs0n/NbuQ6JpXEolivQ9pKSBHaDlA==} 1903 resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==}
1881 dependencies: 1904 dependencies:
1882 '@formatjs/intl-localematcher': 0.5.2 1905 '@formatjs/intl-localematcher': 0.5.4
1883 tslib: 2.6.2 1906 tslib: 2.6.2
1884 dev: false 1907 dev: false
1885 1908
@@ -1889,59 +1912,59 @@ packages:
1889 tslib: 2.6.2 1912 tslib: 2.6.2
1890 dev: false 1913 dev: false
1891 1914
1892 /@formatjs/icu-messageformat-parser@2.7.3: 1915 /@formatjs/icu-messageformat-parser@2.7.6:
1893 resolution: {integrity: sha512-X/jy10V9S/vW+qlplqhMUxR8wErQ0mmIYSq4mrjpjDl9mbuGcCILcI1SUYkL5nlM4PJqpc0KOS0bFkkJNPxYRw==} 1916 resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==}
1894 dependencies: 1917 dependencies:
1895 '@formatjs/ecma402-abstract': 1.18.0 1918 '@formatjs/ecma402-abstract': 1.18.2
1896 '@formatjs/icu-skeleton-parser': 1.7.0 1919 '@formatjs/icu-skeleton-parser': 1.8.0
1897 tslib: 2.6.2 1920 tslib: 2.6.2
1898 dev: false 1921 dev: false
1899 1922
1900 /@formatjs/icu-skeleton-parser@1.7.0: 1923 /@formatjs/icu-skeleton-parser@1.8.0:
1901 resolution: {integrity: sha512-Cfdo/fgbZzpN/jlN/ptQVe0lRHora+8ezrEeg2RfrNjyp+YStwBy7cqDY8k5/z2LzXg6O0AdzAV91XS0zIWv+A==} 1924 resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==}
1902 dependencies: 1925 dependencies:
1903 '@formatjs/ecma402-abstract': 1.18.0 1926 '@formatjs/ecma402-abstract': 1.18.2
1904 tslib: 2.6.2 1927 tslib: 2.6.2
1905 dev: false 1928 dev: false
1906 1929
1907 /@formatjs/intl-displaynames@6.6.4: 1930 /@formatjs/intl-displaynames@6.6.6:
1908 resolution: {integrity: sha512-ET8KQ+L9Q0K8x1SnJQa4DNssUcbATlMopWqYvGGR8yAvw5qwAQc1fv+DshCoZNIE9pbcue0IGC4kWNAkWqlFag==} 1931 resolution: {integrity: sha512-Dg5URSjx0uzF8VZXtHb6KYZ6LFEEhCbAbKoYChYHEOnMFTw/ZU3jIo/NrujzQD2EfKPgQzIq73LOUvW6Z/LpFA==}
1909 dependencies: 1932 dependencies:
1910 '@formatjs/ecma402-abstract': 1.18.0 1933 '@formatjs/ecma402-abstract': 1.18.2
1911 '@formatjs/intl-localematcher': 0.5.2 1934 '@formatjs/intl-localematcher': 0.5.4
1912 tslib: 2.6.2 1935 tslib: 2.6.2
1913 dev: false 1936 dev: false
1914 1937
1915 /@formatjs/intl-listformat@7.5.3: 1938 /@formatjs/intl-listformat@7.5.5:
1916 resolution: {integrity: sha512-l7EOr0Yh1m8KagytukB90yw81uyzrM7amKFrgxXqphz4KeSIL0KPa68lPsdtZ+JmQB73GaDQRwLOwUKFZ1VZPQ==} 1939 resolution: {integrity: sha512-XoI52qrU6aBGJC9KJddqnacuBbPlb/bXFN+lIFVFhQ1RnFHpzuFrlFdjD9am2O7ZSYsyqzYRpkVcXeT1GHkwDQ==}
1917 dependencies: 1940 dependencies:
1918 '@formatjs/ecma402-abstract': 1.18.0 1941 '@formatjs/ecma402-abstract': 1.18.2
1919 '@formatjs/intl-localematcher': 0.5.2 1942 '@formatjs/intl-localematcher': 0.5.4
1920 tslib: 2.6.2 1943 tslib: 2.6.2
1921 dev: false 1944 dev: false
1922 1945
1923 /@formatjs/intl-localematcher@0.5.2: 1946 /@formatjs/intl-localematcher@0.5.4:
1924 resolution: {integrity: sha512-txaaE2fiBMagLrR4jYhxzFO6wEdEG4TPMqrzBAcbr4HFUYzH/YC+lg6OIzKCHm8WgDdyQevxbAAV1OgcXctuGw==} 1947 resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==}
1925 dependencies: 1948 dependencies:
1926 tslib: 2.6.2 1949 tslib: 2.6.2
1927 dev: false 1950 dev: false
1928 1951
1929 /@formatjs/intl@2.9.9(typescript@5.3.2): 1952 /@formatjs/intl@2.10.0(typescript@5.3.3):
1930 resolution: {integrity: sha512-JI3CNgL2Zdg5lv9ncT2sYKqbAj2RGrCbdzaCckIxMPxn4QuHuOVvYUGmBAXVusBmfG/0sxLmMrnwnBioz+QKdA==} 1953 resolution: {integrity: sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==}
1931 peerDependencies: 1954 peerDependencies:
1932 typescript: '5' 1955 typescript: ^4.7 || 5
1933 peerDependenciesMeta: 1956 peerDependenciesMeta:
1934 typescript: 1957 typescript:
1935 optional: true 1958 optional: true
1936 dependencies: 1959 dependencies:
1937 '@formatjs/ecma402-abstract': 1.18.0 1960 '@formatjs/ecma402-abstract': 1.18.2
1938 '@formatjs/fast-memoize': 2.2.0 1961 '@formatjs/fast-memoize': 2.2.0
1939 '@formatjs/icu-messageformat-parser': 2.7.3 1962 '@formatjs/icu-messageformat-parser': 2.7.6
1940 '@formatjs/intl-displaynames': 6.6.4 1963 '@formatjs/intl-displaynames': 6.6.6
1941 '@formatjs/intl-listformat': 7.5.3 1964 '@formatjs/intl-listformat': 7.5.5
1942 intl-messageformat: 10.5.8 1965 intl-messageformat: 10.5.11
1943 tslib: 2.6.2 1966 tslib: 2.6.2
1944 typescript: 5.3.2 1967 typescript: 5.3.3
1945 dev: false 1968 dev: false
1946 1969
1947 /@gar/promisify@1.1.3: 1970 /@gar/promisify@1.1.3:
@@ -2022,14 +2045,14 @@ packages:
2022 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2045 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2023 dependencies: 2046 dependencies:
2024 '@jest/types': 29.6.3 2047 '@jest/types': 29.6.3
2025 '@types/node': 20.10.3 2048 '@types/node': 20.11.19
2026 chalk: 4.1.2 2049 chalk: 4.1.2
2027 jest-message-util: 29.7.0 2050 jest-message-util: 29.7.0
2028 jest-util: 29.7.0 2051 jest-util: 29.7.0
2029 slash: 3.0.0 2052 slash: 3.0.0
2030 dev: true 2053 dev: true
2031 2054
2032 /@jest/core@29.7.0(ts-node@10.9.1): 2055 /@jest/core@29.7.0(ts-node@10.9.2):
2033 resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} 2056 resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
2034 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2057 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2035 peerDependencies: 2058 peerDependencies:
@@ -2043,14 +2066,14 @@ packages:
2043 '@jest/test-result': 29.7.0 2066 '@jest/test-result': 29.7.0
2044 '@jest/transform': 29.7.0 2067 '@jest/transform': 29.7.0
2045 '@jest/types': 29.6.3 2068 '@jest/types': 29.6.3
2046 '@types/node': 20.10.3 2069 '@types/node': 20.11.19
2047 ansi-escapes: 4.3.2 2070 ansi-escapes: 4.3.2
2048 chalk: 4.1.2 2071 chalk: 4.1.2
2049 ci-info: 3.8.0 2072 ci-info: 3.8.0
2050 exit: 0.1.2 2073 exit: 0.1.2
2051 graceful-fs: 4.2.11 2074 graceful-fs: 4.2.11
2052 jest-changed-files: 29.7.0 2075 jest-changed-files: 29.7.0
2053 jest-config: 29.7.0(@types/node@20.10.3)(ts-node@10.9.1) 2076 jest-config: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2)
2054 jest-haste-map: 29.7.0 2077 jest-haste-map: 29.7.0
2055 jest-message-util: 29.7.0 2078 jest-message-util: 29.7.0
2056 jest-regex-util: 29.6.3 2079 jest-regex-util: 29.6.3
@@ -2078,7 +2101,7 @@ packages:
2078 dependencies: 2101 dependencies:
2079 '@jest/fake-timers': 29.7.0 2102 '@jest/fake-timers': 29.7.0
2080 '@jest/types': 29.6.3 2103 '@jest/types': 29.6.3
2081 '@types/node': 20.10.3 2104 '@types/node': 20.11.19
2082 jest-mock: 29.7.0 2105 jest-mock: 29.7.0
2083 dev: true 2106 dev: true
2084 2107
@@ -2105,7 +2128,7 @@ packages:
2105 dependencies: 2128 dependencies:
2106 '@jest/types': 29.6.3 2129 '@jest/types': 29.6.3
2107 '@sinonjs/fake-timers': 10.2.0 2130 '@sinonjs/fake-timers': 10.2.0
2108 '@types/node': 20.10.3 2131 '@types/node': 20.11.19
2109 jest-message-util: 29.7.0 2132 jest-message-util: 29.7.0
2110 jest-mock: 29.7.0 2133 jest-mock: 29.7.0
2111 jest-util: 29.7.0 2134 jest-util: 29.7.0
@@ -2138,7 +2161,7 @@ packages:
2138 '@jest/transform': 29.7.0 2161 '@jest/transform': 29.7.0
2139 '@jest/types': 29.6.3 2162 '@jest/types': 29.6.3
2140 '@jridgewell/trace-mapping': 0.3.20 2163 '@jridgewell/trace-mapping': 0.3.20
2141 '@types/node': 20.10.3 2164 '@types/node': 20.11.19
2142 chalk: 4.1.2 2165 chalk: 4.1.2
2143 collect-v8-coverage: 1.0.1 2166 collect-v8-coverage: 1.0.1
2144 exit: 0.1.2 2167 exit: 0.1.2
@@ -2226,7 +2249,7 @@ packages:
2226 '@jest/schemas': 29.6.3 2249 '@jest/schemas': 29.6.3
2227 '@types/istanbul-lib-coverage': 2.0.4 2250 '@types/istanbul-lib-coverage': 2.0.4
2228 '@types/istanbul-reports': 3.0.1 2251 '@types/istanbul-reports': 3.0.1
2229 '@types/node': 20.10.3 2252 '@types/node': 20.11.19
2230 '@types/yargs': 17.0.24 2253 '@types/yargs': 17.0.24
2231 chalk: 4.1.2 2254 chalk: 4.1.2
2232 dev: true 2255 dev: true
@@ -2239,14 +2262,30 @@ packages:
2239 '@jridgewell/sourcemap-codec': 1.4.15 2262 '@jridgewell/sourcemap-codec': 1.4.15
2240 '@jridgewell/trace-mapping': 0.3.20 2263 '@jridgewell/trace-mapping': 0.3.20
2241 2264
2265 /@jridgewell/gen-mapping@0.3.5:
2266 resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
2267 engines: {node: '>=6.0.0'}
2268 dependencies:
2269 '@jridgewell/set-array': 1.2.1
2270 '@jridgewell/sourcemap-codec': 1.4.15
2271 '@jridgewell/trace-mapping': 0.3.25
2272
2242 /@jridgewell/resolve-uri@3.1.1: 2273 /@jridgewell/resolve-uri@3.1.1:
2243 resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 2274 resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
2244 engines: {node: '>=6.0.0'} 2275 engines: {node: '>=6.0.0'}
2245 2276
2277 /@jridgewell/resolve-uri@3.1.2:
2278 resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
2279 engines: {node: '>=6.0.0'}
2280
2246 /@jridgewell/set-array@1.1.2: 2281 /@jridgewell/set-array@1.1.2:
2247 resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 2282 resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
2248 engines: {node: '>=6.0.0'} 2283 engines: {node: '>=6.0.0'}
2249 2284
2285 /@jridgewell/set-array@1.2.1:
2286 resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
2287 engines: {node: '>=6.0.0'}
2288
2250 /@jridgewell/sourcemap-codec@1.4.15: 2289 /@jridgewell/sourcemap-codec@1.4.15:
2251 resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 2290 resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
2252 2291
@@ -2256,6 +2295,12 @@ packages:
2256 '@jridgewell/resolve-uri': 3.1.1 2295 '@jridgewell/resolve-uri': 3.1.1
2257 '@jridgewell/sourcemap-codec': 1.4.15 2296 '@jridgewell/sourcemap-codec': 1.4.15
2258 2297
2298 /@jridgewell/trace-mapping@0.3.25:
2299 resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
2300 dependencies:
2301 '@jridgewell/resolve-uri': 3.1.2
2302 '@jridgewell/sourcemap-codec': 1.4.15
2303
2259 /@jridgewell/trace-mapping@0.3.9: 2304 /@jridgewell/trace-mapping@0.3.9:
2260 resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 2305 resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
2261 dependencies: 2306 dependencies:
@@ -2263,15 +2308,15 @@ packages:
2263 '@jridgewell/sourcemap-codec': 1.4.15 2308 '@jridgewell/sourcemap-codec': 1.4.15
2264 dev: true 2309 dev: true
2265 2310
2266 /@krisdages/electron-process-manager@3.0.0(@electron/remote@2.1.0)(electron@27.1.3)(rxjs@7.8.1): 2311 /@krisdages/electron-process-manager@3.0.0(@electron/remote@2.1.2)(electron@29.1.1)(rxjs@7.8.1):
2267 resolution: {integrity: sha512-Gs8McOVC6BVdfP4SeF+l5nx85eFooarm37K5mxs1PESI59a7oLwRf5Yd2tsZ6Ye14bCG0eTJGDv3yPuixBg3OQ==} 2312 resolution: {integrity: sha512-Gs8McOVC6BVdfP4SeF+l5nx85eFooarm37K5mxs1PESI59a7oLwRf5Yd2tsZ6Ye14bCG0eTJGDv3yPuixBg3OQ==}
2268 peerDependencies: 2313 peerDependencies:
2269 '@electron/remote': '>= 1.2.0' 2314 '@electron/remote': '>= 1.2.0'
2270 electron: '>= 10' 2315 electron: '>= 10'
2271 rxjs: '>= 7' 2316 rxjs: '>= 7'
2272 dependencies: 2317 dependencies:
2273 '@electron/remote': 2.1.0(electron@27.1.3) 2318 '@electron/remote': 2.1.2(electron@29.1.1)
2274 electron: 27.1.3 2319 electron: 29.1.1
2275 electron-process-reporter: /@krisdages/electron-process-reporter@2.0.0-rxjs7-1.4.0(rxjs@7.8.1) 2320 electron-process-reporter: /@krisdages/electron-process-reporter@2.0.0-rxjs7-1.4.0(rxjs@7.8.1)
2276 rxjs: 7.8.1 2321 rxjs: 7.8.1
2277 dev: false 2322 dev: false
@@ -2318,8 +2363,8 @@ packages:
2318 - supports-color 2363 - supports-color
2319 dev: true 2364 dev: true
2320 2365
2321 /@mapbox/node-pre-gyp@1.0.10: 2366 /@mapbox/node-pre-gyp@1.0.11:
2322 resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} 2367 resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
2323 hasBin: true 2368 hasBin: true
2324 dependencies: 2369 dependencies:
2325 detect-libc: 2.0.1 2370 detect-libc: 2.0.1
@@ -2329,15 +2374,15 @@ packages:
2329 nopt: 5.0.0 2374 nopt: 5.0.0
2330 npmlog: 5.0.1 2375 npmlog: 5.0.1
2331 rimraf: 3.0.2 2376 rimraf: 3.0.2
2332 semver: 7.5.4 2377 semver: 7.6.0
2333 tar: 6.2.0 2378 tar: 6.2.0
2334 transitivePeerDependencies: 2379 transitivePeerDependencies:
2335 - encoding 2380 - encoding
2336 - supports-color 2381 - supports-color
2337 dev: false 2382 dev: false
2338 2383
2339 /@mdi/js@7.3.67: 2384 /@mdi/js@7.4.47:
2340 resolution: {integrity: sha512-MnRjknFqpTC6FifhGHjZ0+QYq2bAkZFQqIj8JA2AdPZbBxUvr8QSgB2yPAJ8/ob/XkR41xlg5majDR3c1JP1hw==} 2385 resolution: {integrity: sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==}
2341 dev: false 2386 dev: false
2342 2387
2343 /@mdi/react@1.6.1: 2388 /@mdi/react@1.6.1:
@@ -2346,8 +2391,8 @@ packages:
2346 prop-types: 15.8.1 2391 prop-types: 15.8.1
2347 dev: false 2392 dev: false
2348 2393
2349 /@mui/base@5.0.0-beta.25(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): 2394 /@mui/base@5.0.0-beta.36(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
2350 resolution: {integrity: sha512-Iiv+IcappRRv6IBlknIVmLkXxfp51NEX1+l9f+dIbBuPU4PaRULegr1lCeHKsC45KU5ruxM5xMg4R/de03aJQg==} 2395 resolution: {integrity: sha512-6A8fYiXgjqTO6pgj31Hc8wm1M3rFYCxDRh09dBVk0L0W4cb2lnurRJa3cAyic6hHY+we1S58OdGYRbKmOsDpGQ==}
2351 engines: {node: '>=12.0.0'} 2396 engines: {node: '>=12.0.0'}
2352 peerDependencies: 2397 peerDependencies:
2353 '@types/react': ^17.0.0 || ^18.0.0 2398 '@types/react': ^17.0.0 || ^18.0.0
@@ -2357,24 +2402,24 @@ packages:
2357 '@types/react': 2402 '@types/react':
2358 optional: true 2403 optional: true
2359 dependencies: 2404 dependencies:
2360 '@babel/runtime': 7.23.5 2405 '@babel/runtime': 7.23.9
2361 '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0) 2406 '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0)
2362 '@mui/types': 7.2.10(@types/react@18.2.41) 2407 '@mui/types': 7.2.13(@types/react@18.2.55)
2363 '@mui/utils': 5.14.19(@types/react@18.2.41)(react@18.2.0) 2408 '@mui/utils': 5.15.9(@types/react@18.2.55)(react@18.2.0)
2364 '@popperjs/core': 2.11.8 2409 '@popperjs/core': 2.11.8
2365 '@types/react': 18.2.41 2410 '@types/react': 18.2.55
2366 clsx: 2.0.0 2411 clsx: 2.1.0
2367 prop-types: 15.8.1 2412 prop-types: 15.8.1
2368 react: 18.2.0 2413 react: 18.2.0
2369 react-dom: 18.2.0(react@18.2.0) 2414 react-dom: 18.2.0(react@18.2.0)
2370 dev: false 2415 dev: false
2371 2416
2372 /@mui/core-downloads-tracker@5.14.19: 2417 /@mui/core-downloads-tracker@5.15.10:
2373 resolution: {integrity: sha512-y4JseIen5pmZs1n9hHy95HKKioKco8f6N2lford2AmjJigVJOv0KsU0qryiCpyuEUZmi/xCduVilHsK9DSkPcA==} 2418 resolution: {integrity: sha512-qPv7B+LeMatYuzRjB3hlZUHqinHx/fX4YFBiaS19oC02A1e9JFuDKDvlyRQQ5oRSbJJt0QlaLTlr0IcauVcJRQ==}
2374 dev: false 2419 dev: false
2375 2420
2376 /@mui/icons-material@5.14.19(@mui/material@5.14.19)(@types/react@18.2.41)(react@18.2.0): 2421 /@mui/icons-material@5.15.10(@mui/material@5.15.10)(@types/react@18.2.55)(react@18.2.0):
2377 resolution: {integrity: sha512-yjP8nluXxZGe3Y7pS+yxBV+hWZSsSBampCxkZwaw+1l+feL+rfP74vbEFbMrX/Kil9I/Y1tWfy5bs/eNvwNpWw==} 2422 resolution: {integrity: sha512-9cF8oUHZKo9oQ7EQ3pxPELaZuZVmphskU4OI6NiJNDVN7zcuvrEsuWjYo1Zh4fLiC39Nrvm30h/B51rcUjvSGA==}
2378 engines: {node: '>=12.0.0'} 2423 engines: {node: '>=12.0.0'}
2379 peerDependencies: 2424 peerDependencies:
2380 '@mui/material': ^5.0.0 2425 '@mui/material': ^5.0.0
@@ -2384,14 +2429,14 @@ packages:
2384 '@types/react': 2429 '@types/react':
2385 optional: true 2430 optional: true
2386 dependencies: 2431 dependencies:
2387 '@babel/runtime': 7.23.5 2432 '@babel/runtime': 7.23.9
2388 '@mui/material': 5.14.19(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) 2433 '@mui/material': 5.15.10(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
2389 '@types/react': 18.2.41 2434 '@types/react': 18.2.55
2390 react: 18.2.0 2435 react: 18.2.0
2391 dev: false 2436 dev: false
2392 2437
2393 /@mui/material@5.14.19(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): 2438 /@mui/material@5.15.10(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0):
2394 resolution: {integrity: sha512-jSPLXst/YPgDGolhiu4rbethKjLVrI1IkoK8YrFUv8ygxDuhQdsE6+ZqjSSRXk3ytTMf6ghPnQ88OFRk4XjpNw==} 2439 resolution: {integrity: sha512-YJJGHjwDOucecjDEV5l9ISTCo+l9YeWrho623UajzoHRYxuKUmwrGVYOW4PKwGvCx9SU9oklZnbbi2Clc5XZHw==}
2395 engines: {node: '>=12.0.0'} 2440 engines: {node: '>=12.0.0'}
2396 peerDependencies: 2441 peerDependencies:
2397 '@emotion/react': ^11.5.0 2442 '@emotion/react': ^11.5.0
@@ -2407,18 +2452,18 @@ packages:
2407 '@types/react': 2452 '@types/react':
2408 optional: true 2453 optional: true
2409 dependencies: 2454 dependencies:
2410 '@babel/runtime': 7.23.5 2455 '@babel/runtime': 7.23.9
2411 '@emotion/react': 11.11.1(@types/react@18.2.41)(react@18.2.0) 2456 '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
2412 '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.41)(react@18.2.0) 2457 '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
2413 '@mui/base': 5.0.0-beta.25(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) 2458 '@mui/base': 5.0.0-beta.36(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0)
2414 '@mui/core-downloads-tracker': 5.14.19 2459 '@mui/core-downloads-tracker': 5.15.10
2415 '@mui/system': 5.14.19(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.41)(react@18.2.0) 2460 '@mui/system': 5.15.9(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0)
2416 '@mui/types': 7.2.10(@types/react@18.2.41) 2461 '@mui/types': 7.2.13(@types/react@18.2.55)
2417 '@mui/utils': 5.14.19(@types/react@18.2.41)(react@18.2.0) 2462 '@mui/utils': 5.15.9(@types/react@18.2.55)(react@18.2.0)
2418 '@types/react': 18.2.41 2463 '@types/react': 18.2.55
2419 '@types/react-transition-group': 4.4.9 2464 '@types/react-transition-group': 4.4.10
2420 clsx: 2.0.0 2465 clsx: 2.1.0
2421 csstype: 3.1.2 2466 csstype: 3.1.3
2422 prop-types: 15.8.1 2467 prop-types: 15.8.1
2423 react: 18.2.0 2468 react: 18.2.0
2424 react-dom: 18.2.0(react@18.2.0) 2469 react-dom: 18.2.0(react@18.2.0)
@@ -2426,8 +2471,8 @@ packages:
2426 react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) 2471 react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0)
2427 dev: false 2472 dev: false
2428 2473
2429 /@mui/private-theming@5.14.19(@types/react@18.2.41)(react@18.2.0): 2474 /@mui/private-theming@5.15.9(@types/react@18.2.55)(react@18.2.0):
2430 resolution: {integrity: sha512-U9w39VpXLGVM8wZlUU/47YGTsBSk60ZQRRxQZtdqPfN1N7OVllQeN4cEKZKR8PjqqR3aYRcSciQ4dc6CttRoXQ==} 2475 resolution: {integrity: sha512-/aMJlDOxOTAXyp4F2rIukW1O0anodAMCkv1DfBh/z9vaKHY3bd5fFf42wmP+0GRmwMinC5aWPpNfHXOED1fEtg==}
2431 engines: {node: '>=12.0.0'} 2476 engines: {node: '>=12.0.0'}
2432 peerDependencies: 2477 peerDependencies:
2433 '@types/react': ^17.0.0 || ^18.0.0 2478 '@types/react': ^17.0.0 || ^18.0.0
@@ -2436,15 +2481,15 @@ packages:
2436 '@types/react': 2481 '@types/react':
2437 optional: true 2482 optional: true
2438 dependencies: 2483 dependencies:
2439 '@babel/runtime': 7.23.5 2484 '@babel/runtime': 7.23.9
2440 '@mui/utils': 5.14.19(@types/react@18.2.41)(react@18.2.0) 2485 '@mui/utils': 5.15.9(@types/react@18.2.55)(react@18.2.0)
2441 '@types/react': 18.2.41 2486 '@types/react': 18.2.55
2442 prop-types: 15.8.1 2487 prop-types: 15.8.1
2443 react: 18.2.0 2488 react: 18.2.0
2444 dev: false 2489 dev: false
2445 2490
2446 /@mui/styled-engine@5.14.19(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): 2491 /@mui/styled-engine@5.15.9(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0):
2447 resolution: {integrity: sha512-jtj/Pyn/bS8PM7NXdFNTHWZfE3p+vItO4/HoQbUeAv3u+cnWXcTBGHHY/xdIn446lYGFDczTh1YyX8G4Ts0Rtg==} 2492 resolution: {integrity: sha512-NRKtYkL5PZDH7dEmaLEIiipd3mxNnQSO+Yo8rFNBNptY8wzQnQ+VjayTq39qH7Sast5cwHKYFusUrQyD+SS4Og==}
2448 engines: {node: '>=12.0.0'} 2493 engines: {node: '>=12.0.0'}
2449 peerDependencies: 2494 peerDependencies:
2450 '@emotion/react': ^11.4.1 2495 '@emotion/react': ^11.4.1
@@ -2456,17 +2501,17 @@ packages:
2456 '@emotion/styled': 2501 '@emotion/styled':
2457 optional: true 2502 optional: true
2458 dependencies: 2503 dependencies:
2459 '@babel/runtime': 7.23.5 2504 '@babel/runtime': 7.23.9
2460 '@emotion/cache': 11.11.0 2505 '@emotion/cache': 11.11.0
2461 '@emotion/react': 11.11.1(@types/react@18.2.41)(react@18.2.0) 2506 '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
2462 '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.41)(react@18.2.0) 2507 '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
2463 csstype: 3.1.2 2508 csstype: 3.1.3
2464 prop-types: 15.8.1 2509 prop-types: 15.8.1
2465 react: 18.2.0 2510 react: 18.2.0
2466 dev: false 2511 dev: false
2467 2512
2468 /@mui/system@5.14.19(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.41)(react@18.2.0): 2513 /@mui/system@5.15.9(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0):
2469 resolution: {integrity: sha512-4e3Q+2nx+vgEsd0h5ftxlZGB7XtkkPos/zWqCqnxUs1l/T70s0lF2YNrWHHdSQ7LgtBu0eQ0qweZG2pR7KwkAw==} 2514 resolution: {integrity: sha512-SxkaaZ8jsnIJ77bBXttfG//LUf6nTfOcaOuIgItqfHv60ZCQy/Hu7moaob35kBb+guxVJnoSZ+7vQJrA/E7pKg==}
2470 engines: {node: '>=12.0.0'} 2515 engines: {node: '>=12.0.0'}
2471 peerDependencies: 2516 peerDependencies:
2472 '@emotion/react': ^11.5.0 2517 '@emotion/react': ^11.5.0
@@ -2481,33 +2526,33 @@ packages:
2481 '@types/react': 2526 '@types/react':
2482 optional: true 2527 optional: true
2483 dependencies: 2528 dependencies:
2484 '@babel/runtime': 7.23.5 2529 '@babel/runtime': 7.23.9
2485 '@emotion/react': 11.11.1(@types/react@18.2.41)(react@18.2.0) 2530 '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0)
2486 '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.41)(react@18.2.0) 2531 '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0)
2487 '@mui/private-theming': 5.14.19(@types/react@18.2.41)(react@18.2.0) 2532 '@mui/private-theming': 5.15.9(@types/react@18.2.55)(react@18.2.0)
2488 '@mui/styled-engine': 5.14.19(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) 2533 '@mui/styled-engine': 5.15.9(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0)
2489 '@mui/types': 7.2.10(@types/react@18.2.41) 2534 '@mui/types': 7.2.13(@types/react@18.2.55)
2490 '@mui/utils': 5.14.19(@types/react@18.2.41)(react@18.2.0) 2535 '@mui/utils': 5.15.9(@types/react@18.2.55)(react@18.2.0)
2491 '@types/react': 18.2.41 2536 '@types/react': 18.2.55
2492 clsx: 2.0.0 2537 clsx: 2.1.0
2493 csstype: 3.1.2 2538 csstype: 3.1.3
2494 prop-types: 15.8.1 2539 prop-types: 15.8.1
2495 react: 18.2.0 2540 react: 18.2.0
2496 dev: false 2541 dev: false
2497 2542
2498 /@mui/types@7.2.10(@types/react@18.2.41): 2543 /@mui/types@7.2.13(@types/react@18.2.55):
2499 resolution: {integrity: sha512-wX1vbDC+lzF7FlhT6A3ffRZgEoKWPF8VqRoTu4lZwouFX2t90KyCMsgepMw5DxLak1BSp/KP86CmtZttikb/gQ==} 2544 resolution: {integrity: sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==}
2500 peerDependencies: 2545 peerDependencies:
2501 '@types/react': ^17.0.0 || ^18.0.0 2546 '@types/react': ^17.0.0 || ^18.0.0
2502 peerDependenciesMeta: 2547 peerDependenciesMeta:
2503 '@types/react': 2548 '@types/react':
2504 optional: true 2549 optional: true
2505 dependencies: 2550 dependencies:
2506 '@types/react': 18.2.41 2551 '@types/react': 18.2.55
2507 dev: false 2552 dev: false
2508 2553
2509 /@mui/utils@5.14.19(@types/react@18.2.41)(react@18.2.0): 2554 /@mui/utils@5.15.9(@types/react@18.2.55)(react@18.2.0):
2510 resolution: {integrity: sha512-qAHvTXzk7basbyqPvhgWqN6JbmI2wLB/mf97GkSlz5c76MiKYV6Ffjvw9BjKZQ1YRb8rDX9kgdjRezOcoB91oQ==} 2555 resolution: {integrity: sha512-yDYfr61bCYUz1QtwvpqYy/3687Z8/nS4zv7lv/ih/6ZFGMl1iolEvxRmR84v2lOYxlds+kq1IVYbXxDKh8Z9sg==}
2511 engines: {node: '>=12.0.0'} 2556 engines: {node: '>=12.0.0'}
2512 peerDependencies: 2557 peerDependencies:
2513 '@types/react': ^17.0.0 || ^18.0.0 2558 '@types/react': ^17.0.0 || ^18.0.0
@@ -2516,9 +2561,9 @@ packages:
2516 '@types/react': 2561 '@types/react':
2517 optional: true 2562 optional: true
2518 dependencies: 2563 dependencies:
2519 '@babel/runtime': 7.23.5 2564 '@babel/runtime': 7.23.9
2520 '@types/prop-types': 15.7.11 2565 '@types/prop-types': 15.7.11
2521 '@types/react': 18.2.41 2566 '@types/react': 18.2.55
2522 prop-types: 15.8.1 2567 prop-types: 15.8.1
2523 react: 18.2.0 2568 react: 18.2.0
2524 react-is: 18.2.0 2569 react-is: 18.2.0
@@ -2561,7 +2606,7 @@ packages:
2561 requiresBuild: true 2606 requiresBuild: true
2562 dependencies: 2607 dependencies:
2563 '@gar/promisify': 1.1.3 2608 '@gar/promisify': 1.1.3
2564 semver: 7.5.4 2609 semver: 7.6.0
2565 dev: false 2610 dev: false
2566 optional: true 2611 optional: true
2567 2612
@@ -2571,7 +2616,7 @@ packages:
2571 requiresBuild: true 2616 requiresBuild: true
2572 dependencies: 2617 dependencies:
2573 '@gar/promisify': 1.1.3 2618 '@gar/promisify': 1.1.3
2574 semver: 7.5.4 2619 semver: 7.6.0
2575 dev: false 2620 dev: false
2576 optional: true 2621 optional: true
2577 2622
@@ -2602,8 +2647,8 @@ packages:
2602 engines: {node: '>= 18'} 2647 engines: {node: '>= 18'}
2603 dev: false 2648 dev: false
2604 2649
2605 /@octokit/core@5.0.2: 2650 /@octokit/core@5.1.0:
2606 resolution: {integrity: sha512-cZUy1gUvd4vttMic7C0lwPed8IYXWYp8kHIMatyhY8t8n3Cpw2ILczkV5pGMPqef7v0bLo0pOHrEHarsau2Ydg==} 2651 resolution: {integrity: sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==}
2607 engines: {node: '>= 18'} 2652 engines: {node: '>= 18'}
2608 dependencies: 2653 dependencies:
2609 '@octokit/auth-token': 4.0.0 2654 '@octokit/auth-token': 4.0.0
@@ -2684,8 +2729,8 @@ packages:
2684 resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} 2729 resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
2685 dev: false 2730 dev: false
2686 2731
2687 /@remix-run/router@1.13.1: 2732 /@remix-run/router@1.15.1:
2688 resolution: {integrity: sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==} 2733 resolution: {integrity: sha512-zcU0gM3z+3iqj8UX45AmWY810l3oUmXM7uH4dt5xtzvMhRtYVhKGOmgOd1877dOPPepfCjUv57w+syamWIYe7w==}
2689 engines: {node: '>=14.0.0'} 2734 engines: {node: '>=14.0.0'}
2690 dev: false 2735 dev: false
2691 2736
@@ -2901,7 +2946,7 @@ packages:
2901 dependencies: 2946 dependencies:
2902 '@types/http-cache-semantics': 4.0.4 2947 '@types/http-cache-semantics': 4.0.4
2903 '@types/keyv': 3.1.4 2948 '@types/keyv': 3.1.4
2904 '@types/node': 20.10.3 2949 '@types/node': 20.11.19
2905 '@types/responselike': 1.0.3 2950 '@types/responselike': 1.0.3
2906 2951
2907 /@types/color-convert@2.0.3: 2952 /@types/color-convert@2.0.3:
@@ -2930,25 +2975,25 @@ packages:
2930 resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} 2975 resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
2931 dependencies: 2976 dependencies:
2932 '@types/jsonfile': 6.1.4 2977 '@types/jsonfile': 6.1.4
2933 '@types/node': 20.10.3 2978 '@types/node': 20.11.19
2934 dev: true 2979 dev: true
2935 2980
2936 /@types/fs-extra@9.0.13: 2981 /@types/fs-extra@9.0.13:
2937 resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} 2982 resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==}
2938 dependencies: 2983 dependencies:
2939 '@types/node': 20.10.3 2984 '@types/node': 20.11.19
2940 dev: true 2985 dev: true
2941 2986
2942 /@types/graceful-fs@4.1.5: 2987 /@types/graceful-fs@4.1.5:
2943 resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} 2988 resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==}
2944 dependencies: 2989 dependencies:
2945 '@types/node': 20.10.3 2990 '@types/node': 20.11.19
2946 dev: true 2991 dev: true
2947 2992
2948 /@types/hoist-non-react-statics@3.3.5: 2993 /@types/hoist-non-react-statics@3.3.5:
2949 resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} 2994 resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==}
2950 dependencies: 2995 dependencies:
2951 '@types/react': 18.2.41 2996 '@types/react': 18.2.55
2952 hoist-non-react-statics: 3.3.2 2997 hoist-non-react-statics: 3.3.2
2953 dev: false 2998 dev: false
2954 2999
@@ -2971,8 +3016,8 @@ packages:
2971 '@types/istanbul-lib-report': 3.0.0 3016 '@types/istanbul-lib-report': 3.0.0
2972 dev: true 3017 dev: true
2973 3018
2974 /@types/jest@29.5.10: 3019 /@types/jest@29.5.12:
2975 resolution: {integrity: sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==} 3020 resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==}
2976 dependencies: 3021 dependencies:
2977 expect: 29.7.0 3022 expect: 29.7.0
2978 pretty-format: 29.7.0 3023 pretty-format: 29.7.0
@@ -2989,13 +3034,13 @@ packages:
2989 /@types/jsonfile@6.1.4: 3034 /@types/jsonfile@6.1.4:
2990 resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} 3035 resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==}
2991 dependencies: 3036 dependencies:
2992 '@types/node': 20.10.3 3037 '@types/node': 20.11.19
2993 dev: true 3038 dev: true
2994 3039
2995 /@types/keyv@3.1.4: 3040 /@types/keyv@3.1.4:
2996 resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} 3041 resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
2997 dependencies: 3042 dependencies:
2998 '@types/node': 20.10.3 3043 '@types/node': 20.11.19
2999 3044
3000 /@types/lodash@4.14.202: 3045 /@types/lodash@4.14.202:
3001 resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} 3046 resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==}
@@ -3009,20 +3054,11 @@ packages:
3009 resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} 3054 resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
3010 dev: true 3055 dev: true
3011 3056
3012 /@types/node@18.19.2: 3057 /@types/node@20.11.19:
3013 resolution: {integrity: sha512-6wzfBdbWpe8QykUkXBjtmO3zITA0A3FIjoy+in0Y2K4KrCiRhNYJIdwAPDffZ3G6GnaKaSLSEa9ZuORLfEoiwg==} 3058 resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==}
3014 dependencies:
3015 undici-types: 5.26.5
3016
3017 /@types/node@20.10.3:
3018 resolution: {integrity: sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==}
3019 dependencies: 3059 dependencies:
3020 undici-types: 5.26.5 3060 undici-types: 5.26.5
3021 3061
3022 /@types/node@20.4.7:
3023 resolution: {integrity: sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==}
3024 dev: true
3025
3026 /@types/normalize-package-data@2.4.1: 3062 /@types/normalize-package-data@2.4.1:
3027 resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} 3063 resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
3028 dev: true 3064 dev: true
@@ -3035,7 +3071,7 @@ packages:
3035 resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} 3071 resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==}
3036 requiresBuild: true 3072 requiresBuild: true
3037 dependencies: 3073 dependencies:
3038 '@types/node': 20.10.3 3074 '@types/node': 20.11.19
3039 xmlbuilder: 15.1.1 3075 xmlbuilder: 15.1.1
3040 dev: true 3076 dev: true
3041 optional: true 3077 optional: true
@@ -3043,47 +3079,41 @@ packages:
3043 /@types/prop-types@15.7.11: 3079 /@types/prop-types@15.7.11:
3044 resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} 3080 resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==}
3045 3081
3046 /@types/react-color@3.0.10: 3082 /@types/react-color@3.0.11:
3047 resolution: {integrity: sha512-6K5BAn3zyd8lW8UbckIAVeXGxR82Za9jyGD2DBEynsa7fKaguLDVtjfypzs7fgEV7bULgs7uhds8A8v1wABTvQ==} 3083 resolution: {integrity: sha512-20m5GpzmdqwmSdnPeMs4UPPUuvkS4ESwakL6u2YN1hbo+ajWiiTwGYIMGhdcJFGeoLyAsr7TVonbZrMhU3+pdw==}
3048 dependencies: 3084 dependencies:
3049 '@types/react': 18.2.41 3085 '@types/react': 18.2.55
3050 '@types/reactcss': 1.2.10 3086 '@types/reactcss': 1.2.10
3051 dev: true 3087 dev: true
3052 3088
3053 /@types/react-dom@18.2.17: 3089 /@types/react-dom@18.2.19:
3054 resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} 3090 resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==}
3055 dependencies:
3056 '@types/react': 18.2.41
3057 dev: true
3058
3059 /@types/react-loader@2.4.8:
3060 resolution: {integrity: sha512-tcUpbl7JRPxaskhjQsLMsMt8BVkbquqzjMdb+ud3dJdhBcaJr9Wbmrx5t2UG6Ikc7DHu47jEC82ob7disr5rHw==}
3061 dependencies: 3091 dependencies:
3062 '@types/react': 18.2.41 3092 '@types/react': 18.2.55
3063 dev: true 3093 dev: true
3064 3094
3065 /@types/react-transition-group@4.4.9: 3095 /@types/react-transition-group@4.4.10:
3066 resolution: {integrity: sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==} 3096 resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==}
3067 dependencies: 3097 dependencies:
3068 '@types/react': 18.2.41 3098 '@types/react': 18.2.55
3069 3099
3070 /@types/react@18.2.41: 3100 /@types/react@18.2.55:
3071 resolution: {integrity: sha512-CwOGr/PiLiNBxEBqpJ7fO3kocP/2SSuC9fpH5K7tusrg4xPSRT/193rzolYwQnTN02We/ATXKnb6GqA5w4fRxw==} 3101 resolution: {integrity: sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==}
3072 dependencies: 3102 dependencies:
3073 '@types/prop-types': 15.7.11 3103 '@types/prop-types': 15.7.11
3074 '@types/scheduler': 0.16.8 3104 '@types/scheduler': 0.16.8
3075 csstype: 3.1.2 3105 csstype: 3.1.3
3076 3106
3077 /@types/reactcss@1.2.10: 3107 /@types/reactcss@1.2.10:
3078 resolution: {integrity: sha512-gf5qJ1wOYP8N5q9H8/5c3QZHQzu8ltPClhM0vEWuBu9SGg4KSzgpJd2TShEsQDwsYn+mtnJ1xHUdJyzj/r9WrA==} 3108 resolution: {integrity: sha512-gf5qJ1wOYP8N5q9H8/5c3QZHQzu8ltPClhM0vEWuBu9SGg4KSzgpJd2TShEsQDwsYn+mtnJ1xHUdJyzj/r9WrA==}
3079 dependencies: 3109 dependencies:
3080 '@types/react': 18.2.41 3110 '@types/react': 18.2.55
3081 dev: true 3111 dev: true
3082 3112
3083 /@types/responselike@1.0.3: 3113 /@types/responselike@1.0.3:
3084 resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} 3114 resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
3085 dependencies: 3115 dependencies:
3086 '@types/node': 20.10.3 3116 '@types/node': 20.11.19
3087 3117
3088 /@types/route-parser@0.1.7: 3118 /@types/route-parser@0.1.7:
3089 resolution: {integrity: sha512-haO+3HVio/4w+yuMJTjqfSo0ivOV8WnXaOReVD6QN729UGBEyizWNGc2Jd0OLsJDucIod4aJSsPLBeLj2uzMCQ==} 3119 resolution: {integrity: sha512-haO+3HVio/4w+yuMJTjqfSo0ivOV8WnXaOReVD6QN729UGBEyizWNGc2Jd0OLsJDucIod4aJSsPLBeLj2uzMCQ==}
@@ -3092,8 +3122,8 @@ packages:
3092 /@types/scheduler@0.16.8: 3122 /@types/scheduler@0.16.8:
3093 resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} 3123 resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==}
3094 3124
3095 /@types/semver@7.5.6: 3125 /@types/semver@7.5.7:
3096 resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} 3126 resolution: {integrity: sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==}
3097 dev: true 3127 dev: true
3098 3128
3099 /@types/stack-trace@0.0.29: 3129 /@types/stack-trace@0.0.29:
@@ -3104,23 +3134,23 @@ packages:
3104 resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} 3134 resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==}
3105 dev: true 3135 dev: true
3106 3136
3107 /@types/tar@6.1.10: 3137 /@types/tar@6.1.11:
3108 resolution: {integrity: sha512-60ZO+W0tRKJ3ggdzJKp75xKVlNogKYMqGvr2bMH/+k3T0BagfYTnbmVDFMJB1BFttz6yRgP5MDGP27eh7brrqw==} 3138 resolution: {integrity: sha512-ThA1WD8aDdVU4VLuyq5NEqriwXErF5gEIJeyT6gHBWU7JtSmW2a5qjNv3/vR82O20mW+1vhmeZJfBQPT3HCugg==}
3109 dependencies: 3139 dependencies:
3110 '@types/node': 20.10.3 3140 '@types/node': 20.11.19
3111 minipass: 4.2.8 3141 minipass: 4.2.8
3112 dev: true 3142 dev: true
3113 3143
3114 /@types/uuid@9.0.7: 3144 /@types/uuid@9.0.8:
3115 resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} 3145 resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==}
3116 dev: true 3146 dev: true
3117 3147
3118 /@types/validator@13.11.7: 3148 /@types/validator@13.11.9:
3119 resolution: {integrity: sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q==} 3149 resolution: {integrity: sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw==}
3120 dev: true 3150 dev: true
3121 3151
3122 /@types/verror@1.10.9: 3152 /@types/verror@1.10.10:
3123 resolution: {integrity: sha512-MLx9Z+9lGzwEuW16ubGeNkpBDE84RpB/NyGgg6z2BTpWzKkGU451cAY3UkUzZEp72RHF585oJ3V8JVNqIplcAQ==} 3153 resolution: {integrity: sha512-l4MM0Jppn18hb9xmM6wwD1uTdShpf9Pn80aXTStnK1C94gtPvJcV2FrDmbOQUAQfJ1cKZHktkQUDwEqaAKXMMg==}
3124 requiresBuild: true 3154 requiresBuild: true
3125 dev: true 3155 dev: true
3126 optional: true 3156 optional: true
@@ -3139,10 +3169,10 @@ packages:
3139 resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} 3169 resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
3140 requiresBuild: true 3170 requiresBuild: true
3141 dependencies: 3171 dependencies:
3142 '@types/node': 20.10.3 3172 '@types/node': 20.11.19
3143 optional: true 3173 optional: true
3144 3174
3145 /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.2): 3175 /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3):
3146 resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} 3176 resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
3147 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3177 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3148 peerDependencies: 3178 peerDependencies:
@@ -3154,24 +3184,24 @@ packages:
3154 optional: true 3184 optional: true
3155 dependencies: 3185 dependencies:
3156 '@eslint-community/regexpp': 4.10.0 3186 '@eslint-community/regexpp': 4.10.0
3157 '@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.2) 3187 '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
3158 '@typescript-eslint/scope-manager': 5.62.0 3188 '@typescript-eslint/scope-manager': 5.62.0
3159 '@typescript-eslint/type-utils': 5.62.0(eslint@8.56.0)(typescript@5.3.2) 3189 '@typescript-eslint/type-utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
3160 '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.2) 3190 '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
3161 debug: 4.3.4(supports-color@5.5.0) 3191 debug: 4.3.4(supports-color@5.5.0)
3162 eslint: 8.56.0 3192 eslint: 8.56.0
3163 graphemer: 1.4.0 3193 graphemer: 1.4.0
3164 ignore: 5.3.0 3194 ignore: 5.3.0
3165 natural-compare-lite: 1.4.0 3195 natural-compare-lite: 1.4.0
3166 semver: 7.5.4 3196 semver: 7.6.0
3167 tsutils: 3.21.0(typescript@5.3.2) 3197 tsutils: 3.21.0(typescript@5.3.3)
3168 typescript: 5.3.2 3198 typescript: 5.3.3
3169 transitivePeerDependencies: 3199 transitivePeerDependencies:
3170 - supports-color 3200 - supports-color
3171 dev: true 3201 dev: true
3172 3202
3173 /@typescript-eslint/eslint-plugin@6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.2): 3203 /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3):
3174 resolution: {integrity: sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg==} 3204 resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
3175 engines: {node: ^16.0.0 || >=18.0.0} 3205 engines: {node: ^16.0.0 || >=18.0.0}
3176 peerDependencies: 3206 peerDependencies:
3177 '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha 3207 '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
@@ -3182,25 +3212,25 @@ packages:
3182 optional: true 3212 optional: true
3183 dependencies: 3213 dependencies:
3184 '@eslint-community/regexpp': 4.10.0 3214 '@eslint-community/regexpp': 4.10.0
3185 '@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.2) 3215 '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
3186 '@typescript-eslint/scope-manager': 6.15.0 3216 '@typescript-eslint/scope-manager': 6.21.0
3187 '@typescript-eslint/type-utils': 6.15.0(eslint@8.56.0)(typescript@5.3.2) 3217 '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
3188 '@typescript-eslint/utils': 6.15.0(eslint@8.56.0)(typescript@5.3.2) 3218 '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
3189 '@typescript-eslint/visitor-keys': 6.15.0 3219 '@typescript-eslint/visitor-keys': 6.21.0
3190 debug: 4.3.4(supports-color@5.5.0) 3220 debug: 4.3.4(supports-color@5.5.0)
3191 eslint: 8.56.0 3221 eslint: 8.56.0
3192 graphemer: 1.4.0 3222 graphemer: 1.4.0
3193 ignore: 5.3.0 3223 ignore: 5.3.0
3194 natural-compare: 1.4.0 3224 natural-compare: 1.4.0
3195 semver: 7.5.4 3225 semver: 7.6.0
3196 ts-api-utils: 1.0.3(typescript@5.3.2) 3226 ts-api-utils: 1.0.3(typescript@5.3.3)
3197 typescript: 5.3.2 3227 typescript: 5.3.3
3198 transitivePeerDependencies: 3228 transitivePeerDependencies:
3199 - supports-color 3229 - supports-color
3200 dev: true 3230 dev: true
3201 3231
3202 /@typescript-eslint/parser@6.15.0(eslint@8.56.0)(typescript@5.3.2): 3232 /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3):
3203 resolution: {integrity: sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==} 3233 resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
3204 engines: {node: ^16.0.0 || >=18.0.0} 3234 engines: {node: ^16.0.0 || >=18.0.0}
3205 peerDependencies: 3235 peerDependencies:
3206 eslint: ^7.0.0 || ^8.0.0 3236 eslint: ^7.0.0 || ^8.0.0
@@ -3209,13 +3239,13 @@ packages:
3209 typescript: 3239 typescript:
3210 optional: true 3240 optional: true
3211 dependencies: 3241 dependencies:
3212 '@typescript-eslint/scope-manager': 6.15.0 3242 '@typescript-eslint/scope-manager': 6.21.0
3213 '@typescript-eslint/types': 6.15.0 3243 '@typescript-eslint/types': 6.21.0
3214 '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.3.2) 3244 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3)
3215 '@typescript-eslint/visitor-keys': 6.15.0 3245 '@typescript-eslint/visitor-keys': 6.21.0
3216 debug: 4.3.4(supports-color@5.5.0) 3246 debug: 4.3.4(supports-color@5.5.0)
3217 eslint: 8.56.0 3247 eslint: 8.56.0
3218 typescript: 5.3.2 3248 typescript: 5.3.3
3219 transitivePeerDependencies: 3249 transitivePeerDependencies:
3220 - supports-color 3250 - supports-color
3221 dev: true 3251 dev: true
@@ -3228,15 +3258,15 @@ packages:
3228 '@typescript-eslint/visitor-keys': 5.62.0 3258 '@typescript-eslint/visitor-keys': 5.62.0
3229 dev: true 3259 dev: true
3230 3260
3231 /@typescript-eslint/scope-manager@6.15.0: 3261 /@typescript-eslint/scope-manager@6.21.0:
3232 resolution: {integrity: sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==} 3262 resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
3233 engines: {node: ^16.0.0 || >=18.0.0} 3263 engines: {node: ^16.0.0 || >=18.0.0}
3234 dependencies: 3264 dependencies:
3235 '@typescript-eslint/types': 6.15.0 3265 '@typescript-eslint/types': 6.21.0
3236 '@typescript-eslint/visitor-keys': 6.15.0 3266 '@typescript-eslint/visitor-keys': 6.21.0
3237 dev: true 3267 dev: true
3238 3268
3239 /@typescript-eslint/type-utils@5.62.0(eslint@8.56.0)(typescript@5.3.2): 3269 /@typescript-eslint/type-utils@5.62.0(eslint@8.56.0)(typescript@5.3.3):
3240 resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} 3270 resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
3241 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3271 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3242 peerDependencies: 3272 peerDependencies:
@@ -3246,18 +3276,18 @@ packages:
3246 typescript: 3276 typescript:
3247 optional: true 3277 optional: true
3248 dependencies: 3278 dependencies:
3249 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.2) 3279 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3)
3250 '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.2) 3280 '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
3251 debug: 4.3.4(supports-color@5.5.0) 3281 debug: 4.3.4(supports-color@5.5.0)
3252 eslint: 8.56.0 3282 eslint: 8.56.0
3253 tsutils: 3.21.0(typescript@5.3.2) 3283 tsutils: 3.21.0(typescript@5.3.3)
3254 typescript: 5.3.2 3284 typescript: 5.3.3
3255 transitivePeerDependencies: 3285 transitivePeerDependencies:
3256 - supports-color 3286 - supports-color
3257 dev: true 3287 dev: true
3258 3288
3259 /@typescript-eslint/type-utils@6.15.0(eslint@8.56.0)(typescript@5.3.2): 3289 /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3):
3260 resolution: {integrity: sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ==} 3290 resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
3261 engines: {node: ^16.0.0 || >=18.0.0} 3291 engines: {node: ^16.0.0 || >=18.0.0}
3262 peerDependencies: 3292 peerDependencies:
3263 eslint: ^7.0.0 || ^8.0.0 3293 eslint: ^7.0.0 || ^8.0.0
@@ -3266,12 +3296,12 @@ packages:
3266 typescript: 3296 typescript:
3267 optional: true 3297 optional: true
3268 dependencies: 3298 dependencies:
3269 '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.3.2) 3299 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3)
3270 '@typescript-eslint/utils': 6.15.0(eslint@8.56.0)(typescript@5.3.2) 3300 '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
3271 debug: 4.3.4(supports-color@5.5.0) 3301 debug: 4.3.4(supports-color@5.5.0)
3272 eslint: 8.56.0 3302 eslint: 8.56.0
3273 ts-api-utils: 1.0.3(typescript@5.3.2) 3303 ts-api-utils: 1.0.3(typescript@5.3.3)
3274 typescript: 5.3.2 3304 typescript: 5.3.3
3275 transitivePeerDependencies: 3305 transitivePeerDependencies:
3276 - supports-color 3306 - supports-color
3277 dev: true 3307 dev: true
@@ -3281,12 +3311,12 @@ packages:
3281 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3311 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3282 dev: true 3312 dev: true
3283 3313
3284 /@typescript-eslint/types@6.15.0: 3314 /@typescript-eslint/types@6.21.0:
3285 resolution: {integrity: sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==} 3315 resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
3286 engines: {node: ^16.0.0 || >=18.0.0} 3316 engines: {node: ^16.0.0 || >=18.0.0}
3287 dev: true 3317 dev: true
3288 3318
3289 /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.2): 3319 /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3):
3290 resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} 3320 resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
3291 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3321 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3292 peerDependencies: 3322 peerDependencies:
@@ -3300,15 +3330,15 @@ packages:
3300 debug: 4.3.4(supports-color@5.5.0) 3330 debug: 4.3.4(supports-color@5.5.0)
3301 globby: 11.1.0 3331 globby: 11.1.0
3302 is-glob: 4.0.3 3332 is-glob: 4.0.3
3303 semver: 7.5.4 3333 semver: 7.6.0
3304 tsutils: 3.21.0(typescript@5.3.2) 3334 tsutils: 3.21.0(typescript@5.3.3)
3305 typescript: 5.3.2 3335 typescript: 5.3.3
3306 transitivePeerDependencies: 3336 transitivePeerDependencies:
3307 - supports-color 3337 - supports-color
3308 dev: true 3338 dev: true
3309 3339
3310 /@typescript-eslint/typescript-estree@6.15.0(typescript@5.3.2): 3340 /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3):
3311 resolution: {integrity: sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==} 3341 resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
3312 engines: {node: ^16.0.0 || >=18.0.0} 3342 engines: {node: ^16.0.0 || >=18.0.0}
3313 peerDependencies: 3343 peerDependencies:
3314 typescript: '*' 3344 typescript: '*'
@@ -3316,19 +3346,20 @@ packages:
3316 typescript: 3346 typescript:
3317 optional: true 3347 optional: true
3318 dependencies: 3348 dependencies:
3319 '@typescript-eslint/types': 6.15.0 3349 '@typescript-eslint/types': 6.21.0
3320 '@typescript-eslint/visitor-keys': 6.15.0 3350 '@typescript-eslint/visitor-keys': 6.21.0
3321 debug: 4.3.4(supports-color@5.5.0) 3351 debug: 4.3.4(supports-color@5.5.0)
3322 globby: 11.1.0 3352 globby: 11.1.0
3323 is-glob: 4.0.3 3353 is-glob: 4.0.3
3324 semver: 7.5.4 3354 minimatch: 9.0.3
3325 ts-api-utils: 1.0.3(typescript@5.3.2) 3355 semver: 7.6.0
3326 typescript: 5.3.2 3356 ts-api-utils: 1.0.3(typescript@5.3.3)
3357 typescript: 5.3.3
3327 transitivePeerDependencies: 3358 transitivePeerDependencies:
3328 - supports-color 3359 - supports-color
3329 dev: true 3360 dev: true
3330 3361
3331 /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.2): 3362 /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3):
3332 resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} 3363 resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
3333 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3364 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3334 peerDependencies: 3365 peerDependencies:
@@ -3336,32 +3367,32 @@ packages:
3336 dependencies: 3367 dependencies:
3337 '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 3368 '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
3338 '@types/json-schema': 7.0.15 3369 '@types/json-schema': 7.0.15
3339 '@types/semver': 7.5.6 3370 '@types/semver': 7.5.7
3340 '@typescript-eslint/scope-manager': 5.62.0 3371 '@typescript-eslint/scope-manager': 5.62.0
3341 '@typescript-eslint/types': 5.62.0 3372 '@typescript-eslint/types': 5.62.0
3342 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.2) 3373 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3)
3343 eslint: 8.56.0 3374 eslint: 8.56.0
3344 eslint-scope: 5.1.1 3375 eslint-scope: 5.1.1
3345 semver: 7.5.4 3376 semver: 7.6.0
3346 transitivePeerDependencies: 3377 transitivePeerDependencies:
3347 - supports-color 3378 - supports-color
3348 - typescript 3379 - typescript
3349 dev: true 3380 dev: true
3350 3381
3351 /@typescript-eslint/utils@6.15.0(eslint@8.56.0)(typescript@5.3.2): 3382 /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3):
3352 resolution: {integrity: sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw==} 3383 resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
3353 engines: {node: ^16.0.0 || >=18.0.0} 3384 engines: {node: ^16.0.0 || >=18.0.0}
3354 peerDependencies: 3385 peerDependencies:
3355 eslint: ^7.0.0 || ^8.0.0 3386 eslint: ^7.0.0 || ^8.0.0
3356 dependencies: 3387 dependencies:
3357 '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 3388 '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
3358 '@types/json-schema': 7.0.15 3389 '@types/json-schema': 7.0.15
3359 '@types/semver': 7.5.6 3390 '@types/semver': 7.5.7
3360 '@typescript-eslint/scope-manager': 6.15.0 3391 '@typescript-eslint/scope-manager': 6.21.0
3361 '@typescript-eslint/types': 6.15.0 3392 '@typescript-eslint/types': 6.21.0
3362 '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.3.2) 3393 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3)
3363 eslint: 8.56.0 3394 eslint: 8.56.0
3364 semver: 7.5.4 3395 semver: 7.6.0
3365 transitivePeerDependencies: 3396 transitivePeerDependencies:
3366 - supports-color 3397 - supports-color
3367 - typescript 3398 - typescript
@@ -3375,11 +3406,11 @@ packages:
3375 eslint-visitor-keys: 3.4.3 3406 eslint-visitor-keys: 3.4.3
3376 dev: true 3407 dev: true
3377 3408
3378 /@typescript-eslint/visitor-keys@6.15.0: 3409 /@typescript-eslint/visitor-keys@6.21.0:
3379 resolution: {integrity: sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==} 3410 resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
3380 engines: {node: ^16.0.0 || >=18.0.0} 3411 engines: {node: ^16.0.0 || >=18.0.0}
3381 dependencies: 3412 dependencies:
3382 '@typescript-eslint/types': 6.15.0 3413 '@typescript-eslint/types': 6.21.0
3383 eslint-visitor-keys: 3.4.3 3414 eslint-visitor-keys: 3.4.3
3384 dev: true 3415 dev: true
3385 3416
@@ -3852,7 +3883,7 @@ packages:
3852 minimatch: 5.1.6 3883 minimatch: 5.1.6
3853 read-config-file: 6.3.2 3884 read-config-file: 6.3.2
3854 sanitize-filename: 1.6.3 3885 sanitize-filename: 1.6.3
3855 semver: 7.5.4 3886 semver: 7.6.0
3856 tar: 6.2.0 3887 tar: 6.2.0
3857 temp-file: 3.4.0 3888 temp-file: 3.4.0
3858 transitivePeerDependencies: 3889 transitivePeerDependencies:
@@ -3870,6 +3901,7 @@ packages:
3870 3901
3871 /aproba@2.0.0: 3902 /aproba@2.0.0:
3872 resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} 3903 resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
3904 requiresBuild: true
3873 dev: false 3905 dev: false
3874 3906
3875 /are-we-there-yet@2.0.0: 3907 /are-we-there-yet@2.0.0:
@@ -4180,22 +4212,22 @@ packages:
4180 resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} 4212 resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
4181 engines: {node: '>=10', npm: '>=6'} 4213 engines: {node: '>=10', npm: '>=6'}
4182 dependencies: 4214 dependencies:
4183 '@babel/runtime': 7.23.5 4215 '@babel/runtime': 7.23.9
4184 cosmiconfig: 7.1.0 4216 cosmiconfig: 7.1.0
4185 resolve: 1.22.8 4217 resolve: 1.22.8
4186 dev: false 4218 dev: false
4187 4219
4188 /babel-plugin-styled-components@2.1.4(@babel/core@7.23.6)(styled-components@5.3.11): 4220 /babel-plugin-styled-components@2.1.4(@babel/core@7.24.0)(styled-components@5.3.11):
4189 resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} 4221 resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==}
4190 peerDependencies: 4222 peerDependencies:
4191 styled-components: '>= 2' 4223 styled-components: '>= 2'
4192 dependencies: 4224 dependencies:
4193 '@babel/helper-annotate-as-pure': 7.22.5 4225 '@babel/helper-annotate-as-pure': 7.22.5
4194 '@babel/helper-module-imports': 7.22.15 4226 '@babel/helper-module-imports': 7.22.15
4195 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.6) 4227 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.24.0)
4196 lodash: 4.17.21 4228 lodash: 4.17.21
4197 picomatch: 2.3.1 4229 picomatch: 2.3.1
4198 styled-components: 5.3.11(@babel/core@7.23.6)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) 4230 styled-components: 5.3.11(@babel/core@7.24.0)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)
4199 transitivePeerDependencies: 4231 transitivePeerDependencies:
4200 - '@babel/core' 4232 - '@babel/core'
4201 dev: false 4233 dev: false
@@ -4371,7 +4403,7 @@ packages:
4371 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 4403 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
4372 hasBin: true 4404 hasBin: true
4373 dependencies: 4405 dependencies:
4374 caniuse-lite: 1.0.30001571 4406 caniuse-lite: 1.0.30001596
4375 electron-to-chromium: 1.4.490 4407 electron-to-chromium: 1.4.490
4376 node-releases: 2.0.13 4408 node-releases: 2.0.13
4377 update-browserslist-db: 1.0.11(browserslist@4.21.10) 4409 update-browserslist-db: 1.0.11(browserslist@4.21.10)
@@ -4382,10 +4414,21 @@ packages:
4382 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 4414 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
4383 hasBin: true 4415 hasBin: true
4384 dependencies: 4416 dependencies:
4385 caniuse-lite: 1.0.30001571 4417 caniuse-lite: 1.0.30001596
4386 electron-to-chromium: 1.4.616 4418 electron-to-chromium: 1.4.616
4387 node-releases: 2.0.14 4419 node-releases: 2.0.14
4388 update-browserslist-db: 1.0.13(browserslist@4.22.2) 4420 update-browserslist-db: 1.0.13(browserslist@4.22.2)
4421 dev: true
4422
4423 /browserslist@4.23.0:
4424 resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
4425 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
4426 hasBin: true
4427 dependencies:
4428 caniuse-lite: 1.0.30001596
4429 electron-to-chromium: 1.4.699
4430 node-releases: 2.0.14
4431 update-browserslist-db: 1.0.13(browserslist@4.23.0)
4389 4432
4390 /bser@2.1.1: 4433 /bser@2.1.1:
4391 resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 4434 resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
@@ -4625,8 +4668,8 @@ packages:
4625 resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} 4668 resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
4626 dev: false 4669 dev: false
4627 4670
4628 /caniuse-lite@1.0.30001571: 4671 /caniuse-lite@1.0.30001596:
4629 resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} 4672 resolution: {integrity: sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==}
4630 4673
4631 /caseless@0.12.0: 4674 /caseless@0.12.0:
4632 resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} 4675 resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
@@ -4724,8 +4767,8 @@ packages:
4724 static-extend: 0.1.2 4767 static-extend: 0.1.2
4725 dev: false 4768 dev: false
4726 4769
4727 /classnames@2.3.2: 4770 /classnames@2.5.1:
4728 resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} 4771 resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
4729 dev: false 4772 dev: false
4730 4773
4731 /clean-regexp@1.0.0: 4774 /clean-regexp@1.0.0:
@@ -4843,8 +4886,8 @@ packages:
4843 readable-stream: 2.3.8 4886 readable-stream: 2.3.8
4844 dev: true 4887 dev: true
4845 4888
4846 /clsx@2.0.0: 4889 /clsx@2.1.0:
4847 resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} 4890 resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==}
4848 engines: {node: '>=6'} 4891 engines: {node: '>=6'}
4849 dev: false 4892 dev: false
4850 4893
@@ -5008,6 +5051,7 @@ packages:
5008 5051
5009 /console-control-strings@1.1.0: 5052 /console-control-strings@1.1.0:
5010 resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 5053 resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
5054 requiresBuild: true
5011 dev: false 5055 dev: false
5012 5056
5013 /content-disposition@0.5.4: 5057 /content-disposition@0.5.4:
@@ -5021,29 +5065,29 @@ packages:
5021 resolution: {integrity: sha512-TF30kpKhTH8AGCG3dut0rdd/19B7Z+qCnrMoBLpyQu/2drZdNrrpcjPEoJeSVsQM+8KmWG5O56oPDjSSUsuTyA==} 5065 resolution: {integrity: sha512-TF30kpKhTH8AGCG3dut0rdd/19B7Z+qCnrMoBLpyQu/2drZdNrrpcjPEoJeSVsQM+8KmWG5O56oPDjSSUsuTyA==}
5022 dev: true 5066 dev: true
5023 5067
5024 /conventional-changelog-angular@6.0.0: 5068 /conventional-changelog-angular@7.0.0:
5025 resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} 5069 resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==}
5026 engines: {node: '>=14'} 5070 engines: {node: '>=16'}
5027 dependencies: 5071 dependencies:
5028 compare-func: 2.0.0 5072 compare-func: 2.0.0
5029 dev: true 5073 dev: true
5030 5074
5031 /conventional-changelog-conventionalcommits@6.1.0: 5075 /conventional-changelog-conventionalcommits@7.0.2:
5032 resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==} 5076 resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==}
5033 engines: {node: '>=14'} 5077 engines: {node: '>=16'}
5034 dependencies: 5078 dependencies:
5035 compare-func: 2.0.0 5079 compare-func: 2.0.0
5036 dev: true 5080 dev: true
5037 5081
5038 /conventional-commits-parser@4.0.0: 5082 /conventional-commits-parser@5.0.0:
5039 resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} 5083 resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==}
5040 engines: {node: '>=14'} 5084 engines: {node: '>=16'}
5041 hasBin: true 5085 hasBin: true
5042 dependencies: 5086 dependencies:
5043 JSONStream: 1.3.5 5087 JSONStream: 1.3.5
5044 is-text-path: 1.0.1 5088 is-text-path: 2.0.0
5045 meow: 8.1.2 5089 meow: 12.1.1
5046 split2: 3.2.2 5090 split2: 4.2.0
5047 dev: true 5091 dev: true
5048 5092
5049 /convert-source-map@1.9.0: 5093 /convert-source-map@1.9.0:
@@ -5084,19 +5128,18 @@ packages:
5084 /core-util-is@1.0.3: 5128 /core-util-is@1.0.3:
5085 resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 5129 resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
5086 5130
5087 /cosmiconfig-typescript-loader@4.3.0(@types/node@20.4.7)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.3.2): 5131 /cosmiconfig-typescript-loader@5.0.0(@types/node@20.11.19)(cosmiconfig@8.3.6)(typescript@5.3.3):
5088 resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} 5132 resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==}
5089 engines: {node: '>=12', npm: '>=6'} 5133 engines: {node: '>=v16'}
5090 peerDependencies: 5134 peerDependencies:
5091 '@types/node': '*' 5135 '@types/node': '*'
5092 cosmiconfig: '>=7' 5136 cosmiconfig: '>=8.2'
5093 ts-node: '>=10' 5137 typescript: '>=4'
5094 typescript: '>=3'
5095 dependencies: 5138 dependencies:
5096 '@types/node': 20.4.7 5139 '@types/node': 20.11.19
5097 cosmiconfig: 8.1.3 5140 cosmiconfig: 8.3.6(typescript@5.3.3)
5098 ts-node: 10.9.1(@types/node@20.4.7)(typescript@5.3.2) 5141 jiti: 1.21.0
5099 typescript: 5.3.2 5142 typescript: 5.3.3
5100 dev: true 5143 dev: true
5101 5144
5102 /cosmiconfig@7.1.0: 5145 /cosmiconfig@7.1.0:
@@ -5110,14 +5153,20 @@ packages:
5110 yaml: 1.10.2 5153 yaml: 1.10.2
5111 dev: false 5154 dev: false
5112 5155
5113 /cosmiconfig@8.1.3: 5156 /cosmiconfig@8.3.6(typescript@5.3.3):
5114 resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} 5157 resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==}
5115 engines: {node: '>=14'} 5158 engines: {node: '>=14'}
5159 peerDependencies:
5160 typescript: '>=4.9.5'
5161 peerDependenciesMeta:
5162 typescript:
5163 optional: true
5116 dependencies: 5164 dependencies:
5117 import-fresh: 3.3.0 5165 import-fresh: 3.3.0
5118 js-yaml: 4.1.0 5166 js-yaml: 4.1.0
5119 parse-json: 5.2.0 5167 parse-json: 5.2.0
5120 path-type: 4.0.0 5168 path-type: 4.0.0
5169 typescript: 5.3.3
5121 dev: true 5170 dev: true
5122 5171
5123 /crc@3.8.0: 5172 /crc@3.8.0:
@@ -5128,7 +5177,7 @@ packages:
5128 dev: true 5177 dev: true
5129 optional: true 5178 optional: true
5130 5179
5131 /create-jest@29.7.0(@types/node@20.10.3)(ts-node@10.9.1): 5180 /create-jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2):
5132 resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} 5181 resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
5133 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 5182 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
5134 hasBin: true 5183 hasBin: true
@@ -5137,7 +5186,7 @@ packages:
5137 chalk: 4.1.2 5186 chalk: 4.1.2
5138 exit: 0.1.2 5187 exit: 0.1.2
5139 graceful-fs: 4.2.11 5188 graceful-fs: 4.2.11
5140 jest-config: 29.7.0(@types/node@20.10.3)(ts-node@10.9.1) 5189 jest-config: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2)
5141 jest-util: 29.7.0 5190 jest-util: 29.7.0
5142 prompts: 2.4.2 5191 prompts: 2.4.2
5143 transitivePeerDependencies: 5192 transitivePeerDependencies:
@@ -5209,7 +5258,7 @@ packages:
5209 /css-jss@10.10.0: 5258 /css-jss@10.10.0:
5210 resolution: {integrity: sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA==} 5259 resolution: {integrity: sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA==}
5211 dependencies: 5260 dependencies:
5212 '@babel/runtime': 7.23.5 5261 '@babel/runtime': 7.23.9
5213 jss: 10.10.0 5262 jss: 10.10.0
5214 jss-preset-default: 10.10.0 5263 jss-preset-default: 10.10.0
5215 dev: false 5264 dev: false
@@ -5225,18 +5274,19 @@ packages:
5225 /css-vendor@2.0.8: 5274 /css-vendor@2.0.8:
5226 resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} 5275 resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==}
5227 dependencies: 5276 dependencies:
5228 '@babel/runtime': 7.23.5 5277 '@babel/runtime': 7.23.9
5229 is-in-browser: 1.1.3 5278 is-in-browser: 1.1.3
5230 dev: false 5279 dev: false
5231 5280
5232 /csstype@3.1.2: 5281 /csstype@3.1.3:
5233 resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 5282 resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
5234 5283
5235 /d@1.0.1: 5284 /d@1.0.2:
5236 resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} 5285 resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==}
5286 engines: {node: '>=0.12'}
5237 dependencies: 5287 dependencies:
5238 es5-ext: 0.10.62 5288 es5-ext: 0.10.64
5239 type: 1.2.0 5289 type: 2.7.2
5240 dev: false 5290 dev: false
5241 5291
5242 /damerau-levenshtein@1.0.8: 5292 /damerau-levenshtein@1.0.8:
@@ -5248,8 +5298,8 @@ packages:
5248 engines: {node: '>=8'} 5298 engines: {node: '>=8'}
5249 dev: true 5299 dev: true
5250 5300
5251 /darkreader@4.9.69: 5301 /darkreader@4.9.77:
5252 resolution: {integrity: sha512-8Z/eeoKK/8y0y/LlxHlnIvSj08zdBqeZYfqR0OcF1+GEfOjIaz/2VOpxyCsJFn92qUTbmDICjYphxvR9G320Tw==} 5302 resolution: {integrity: sha512-PHv6pOEFIdoiQxJewUxnbrcB7aJsTgiECws9KNNxEpk2bma1CZNaweFALyADfmosAaoDlJaxvbpzXMxcc0T+jA==}
5253 dev: false 5303 dev: false
5254 5304
5255 /dashdash@1.14.1: 5305 /dashdash@1.14.1:
@@ -5494,6 +5544,7 @@ packages:
5494 5544
5495 /delegates@1.0.0: 5545 /delegates@1.0.0:
5496 resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 5546 resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
5547 requiresBuild: true
5497 dev: false 5548 dev: false
5498 5549
5499 /depd@1.1.2: 5550 /depd@1.1.2:
@@ -5595,7 +5646,7 @@ packages:
5595 requiresBuild: true 5646 requiresBuild: true
5596 dependencies: 5647 dependencies:
5597 '@types/plist': 3.0.5 5648 '@types/plist': 3.0.5
5598 '@types/verror': 1.10.9 5649 '@types/verror': 1.10.10
5599 ajv: 6.12.6 5650 ajv: 6.12.6
5600 crc: 3.8.0 5651 crc: 3.8.0
5601 iconv-corefoundation: 1.1.7 5652 iconv-corefoundation: 1.1.7
@@ -5622,8 +5673,8 @@ packages:
5622 /dom-helpers@5.2.1: 5673 /dom-helpers@5.2.1:
5623 resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} 5674 resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
5624 dependencies: 5675 dependencies:
5625 '@babel/runtime': 7.23.5 5676 '@babel/runtime': 7.23.9
5626 csstype: 3.1.2 5677 csstype: 3.1.3
5627 dev: false 5678 dev: false
5628 5679
5629 /dot-prop@5.3.0: 5680 /dot-prop@5.3.0:
@@ -5717,8 +5768,8 @@ packages:
5717 - supports-color 5768 - supports-color
5718 dev: true 5769 dev: true
5719 5770
5720 /electron-dl@3.5.1: 5771 /electron-dl@3.5.2:
5721 resolution: {integrity: sha512-5Yb9s/iPVJ5mW5x3j6XkKxt7WEqREr/AhYxZmtEfW1ffQHs1+aGoiQ2fXCAU6UIXMnWog2MXK82vrxJsjA3nbQ==} 5772 resolution: {integrity: sha512-i104cl+u8yJ0lhpRAtUWfeGuWuL1PL6TBiw2gLf0MMIBjfgE485Ags2mcySx4uWU9P9uj/vsD3jd7X+w1lzZxw==}
5722 engines: {node: '>=12'} 5773 engines: {node: '>=12'}
5723 dependencies: 5774 dependencies:
5724 ext-name: 5.0.0 5775 ext-name: 5.0.0
@@ -5747,7 +5798,7 @@ packages:
5747 /electron-react-titlebar@1.2.1(react-dom@18.2.0)(react@18.2.0): 5798 /electron-react-titlebar@1.2.1(react-dom@18.2.0)(react@18.2.0):
5748 resolution: {integrity: sha512-cU1/vZKVgYQhG8lk5RuuAmmoxk0pas+GBHYT9hQEvvHrek4eAvuBg7x6+D+IyBOO7T+UgW/KehNm2pPHekIiew==} 5799 resolution: {integrity: sha512-cU1/vZKVgYQhG8lk5RuuAmmoxk0pas+GBHYT9hQEvvHrek4eAvuBg7x6+D+IyBOO7T+UgW/KehNm2pPHekIiew==}
5749 dependencies: 5800 dependencies:
5750 classnames: 2.3.2 5801 classnames: 2.5.1
5751 lodash: 4.17.21 5802 lodash: 4.17.21
5752 react-window: 1.8.8(react-dom@18.2.0)(react@18.2.0) 5803 react-window: 1.8.8(react-dom@18.2.0)(react@18.2.0)
5753 transitivePeerDependencies: 5804 transitivePeerDependencies:
@@ -5761,6 +5812,10 @@ packages:
5761 5812
5762 /electron-to-chromium@1.4.616: 5813 /electron-to-chromium@1.4.616:
5763 resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} 5814 resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==}
5815 dev: true
5816
5817 /electron-to-chromium@1.4.699:
5818 resolution: {integrity: sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==}
5764 5819
5765 /electron-updater@6.1.7: 5820 /electron-updater@6.1.7:
5766 resolution: {integrity: sha512-SNOhYizjkm4ET+Y8ilJyUzcVsFJDtINzVN1TyHnZeMidZEG3YoBebMyXc/J6WSiXdUaOjC7ngekN6rNp6ardHA==} 5821 resolution: {integrity: sha512-SNOhYizjkm4ET+Y8ilJyUzcVsFJDtINzVN1TyHnZeMidZEG3YoBebMyXc/J6WSiXdUaOjC7ngekN6rNp6ardHA==}
@@ -5771,7 +5826,7 @@ packages:
5771 lazy-val: 1.0.5 5826 lazy-val: 1.0.5
5772 lodash.escaperegexp: 4.1.2 5827 lodash.escaperegexp: 4.1.2
5773 lodash.isequal: 4.5.0 5828 lodash.isequal: 4.5.0
5774 semver: 7.5.4 5829 semver: 7.6.0
5775 tiny-typed-emitter: 2.1.0 5830 tiny-typed-emitter: 2.1.0
5776 transitivePeerDependencies: 5831 transitivePeerDependencies:
5777 - supports-color 5832 - supports-color
@@ -5785,14 +5840,14 @@ packages:
5785 mkdirp: 0.5.6 5840 mkdirp: 0.5.6
5786 dev: false 5841 dev: false
5787 5842
5788 /electron@27.1.3: 5843 /electron@29.1.1:
5789 resolution: {integrity: sha512-7eD8VMhhlL5J531OOawn00eMthUkX1e3qN5Nqd7eMK8bg5HxQBrn8bdPlvUEnCano9KhrVwaDnGeuzWoDOGpjQ==} 5844 resolution: {integrity: sha512-cXN15NgCi7MkzGo5/23ZQbii+0UfhmUiDjACunmzcUofYCjF42XhFbL7JZnwgI0qtBCCeJU8qZNZt9lU91gUFw==}
5790 engines: {node: '>= 12.20.55'} 5845 engines: {node: '>= 12.20.55'}
5791 hasBin: true 5846 hasBin: true
5792 requiresBuild: true 5847 requiresBuild: true
5793 dependencies: 5848 dependencies:
5794 '@electron/get': 2.0.3 5849 '@electron/get': 2.0.3
5795 '@types/node': 18.19.2 5850 '@types/node': 20.11.19
5796 extract-zip: 2.0.1 5851 extract-zip: 2.0.1
5797 transitivePeerDependencies: 5852 transitivePeerDependencies:
5798 - supports-color 5853 - supports-color
@@ -5964,13 +6019,14 @@ packages:
5964 is-symbol: 1.0.4 6019 is-symbol: 1.0.4
5965 dev: true 6020 dev: true
5966 6021
5967 /es5-ext@0.10.62: 6022 /es5-ext@0.10.64:
5968 resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} 6023 resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==}
5969 engines: {node: '>=0.10'} 6024 engines: {node: '>=0.10'}
5970 requiresBuild: true 6025 requiresBuild: true
5971 dependencies: 6026 dependencies:
5972 es6-iterator: 2.0.3 6027 es6-iterator: 2.0.3
5973 es6-symbol: 3.1.3 6028 es6-symbol: 3.1.4
6029 esniff: 2.0.1
5974 next-tick: 1.1.0 6030 next-tick: 1.1.0
5975 dev: false 6031 dev: false
5976 6032
@@ -5982,25 +6038,26 @@ packages:
5982 /es6-iterator@2.0.3: 6038 /es6-iterator@2.0.3:
5983 resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} 6039 resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==}
5984 dependencies: 6040 dependencies:
5985 d: 1.0.1 6041 d: 1.0.2
5986 es5-ext: 0.10.62 6042 es5-ext: 0.10.64
5987 es6-symbol: 3.1.3 6043 es6-symbol: 3.1.4
5988 dev: false 6044 dev: false
5989 6045
5990 /es6-symbol@3.1.3: 6046 /es6-symbol@3.1.4:
5991 resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} 6047 resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==}
6048 engines: {node: '>=0.12'}
5992 dependencies: 6049 dependencies:
5993 d: 1.0.1 6050 d: 1.0.2
5994 ext: 1.7.0 6051 ext: 1.7.0
5995 dev: false 6052 dev: false
5996 6053
5997 /es6-weak-map@2.0.3: 6054 /es6-weak-map@2.0.3:
5998 resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} 6055 resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==}
5999 dependencies: 6056 dependencies:
6000 d: 1.0.1 6057 d: 1.0.2
6001 es5-ext: 0.10.62 6058 es5-ext: 0.10.64
6002 es6-iterator: 2.0.3 6059 es6-iterator: 2.0.3
6003 es6-symbol: 3.1.3 6060 es6-symbol: 3.1.4
6004 dev: false 6061 dev: false
6005 6062
6006 /esbuild-plugin-copy@2.1.1(esbuild@0.16.17): 6063 /esbuild-plugin-copy@2.1.1(esbuild@0.16.17):
@@ -6026,8 +6083,8 @@ packages:
6026 tslib: 2.4.0 6083 tslib: 2.4.0
6027 dev: true 6084 dev: true
6028 6085
6029 /esbuild-sass-plugin@2.16.0(esbuild@0.16.17): 6086 /esbuild-sass-plugin@2.16.1(esbuild@0.16.17):
6030 resolution: {integrity: sha512-mGCe9MxNYvZ+j77Q/QFO+rwUGA36mojDXkOhtVmoyz1zwYbMaNrtVrmXwwYDleS/UMKTNU3kXuiTtPiAD3K+Pw==} 6087 resolution: {integrity: sha512-mBB2aEF0xk7yo+Q9pSUh8xYED/1O2wbAM6IauGkDrqy6pl9SbJNakLeLGXiNpNujWIudu8TJTZCv2L5AQYRXtA==}
6031 peerDependencies: 6088 peerDependencies:
6032 esbuild: ^0.19.4 || ^0.16.7 6089 esbuild: ^0.19.4 || ^0.16.7
6033 dependencies: 6090 dependencies:
@@ -6101,13 +6158,13 @@ packages:
6101 dependencies: 6158 dependencies:
6102 confusing-browser-globals: 1.0.11 6159 confusing-browser-globals: 1.0.11
6103 eslint: 8.56.0 6160 eslint: 8.56.0
6104 eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint@8.56.0) 6161 eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)
6105 object.assign: 4.1.5 6162 object.assign: 4.1.5
6106 object.entries: 1.1.7 6163 object.entries: 1.1.7
6107 semver: 6.3.1 6164 semver: 6.3.1
6108 dev: true 6165 dev: true
6109 6166
6110 /eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@6.15.0)(@typescript-eslint/parser@6.15.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0): 6167 /eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0):
6111 resolution: {integrity: sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==} 6168 resolution: {integrity: sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==}
6112 peerDependencies: 6169 peerDependencies:
6113 '@typescript-eslint/eslint-plugin': ^5.13.0 || ^6.0.0 6170 '@typescript-eslint/eslint-plugin': ^5.13.0 || ^6.0.0
@@ -6115,11 +6172,11 @@ packages:
6115 eslint: ^7.32.0 || ^8.2.0 6172 eslint: ^7.32.0 || ^8.2.0
6116 eslint-plugin-import: ^2.25.3 6173 eslint-plugin-import: ^2.25.3
6117 dependencies: 6174 dependencies:
6118 '@typescript-eslint/eslint-plugin': 6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.2) 6175 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3)
6119 '@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.2) 6176 '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
6120 eslint: 8.56.0 6177 eslint: 8.56.0
6121 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.56.0) 6178 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.56.0)
6122 eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint@8.56.0) 6179 eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)
6123 dev: true 6180 dev: true
6124 6181
6125 /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.56.0): 6182 /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.56.0):
@@ -6134,7 +6191,7 @@ packages:
6134 dependencies: 6191 dependencies:
6135 eslint: 8.56.0 6192 eslint: 8.56.0
6136 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.56.0) 6193 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.56.0)
6137 eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint@8.56.0) 6194 eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)
6138 eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) 6195 eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0)
6139 eslint-plugin-react: 7.33.2(eslint@8.56.0) 6196 eslint-plugin-react: 7.33.2(eslint@8.56.0)
6140 eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) 6197 eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0)
@@ -6161,7 +6218,7 @@ packages:
6161 - supports-color 6218 - supports-color
6162 dev: true 6219 dev: true
6163 6220
6164 /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): 6221 /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0):
6165 resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 6222 resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
6166 engines: {node: '>=4'} 6223 engines: {node: '>=4'}
6167 peerDependencies: 6224 peerDependencies:
@@ -6182,7 +6239,7 @@ packages:
6182 eslint-import-resolver-webpack: 6239 eslint-import-resolver-webpack:
6183 optional: true 6240 optional: true
6184 dependencies: 6241 dependencies:
6185 '@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.2) 6242 '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
6186 debug: 3.2.7 6243 debug: 3.2.7
6187 eslint: 8.56.0 6244 eslint: 8.56.0
6188 eslint-import-resolver-node: 0.3.9 6245 eslint-import-resolver-node: 0.3.9
@@ -6190,7 +6247,7 @@ packages:
6190 - supports-color 6247 - supports-color
6191 dev: true 6248 dev: true
6192 6249
6193 /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.15.0)(eslint@8.56.0): 6250 /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0):
6194 resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} 6251 resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
6195 engines: {node: '>=4'} 6252 engines: {node: '>=4'}
6196 peerDependencies: 6253 peerDependencies:
@@ -6200,7 +6257,7 @@ packages:
6200 '@typescript-eslint/parser': 6257 '@typescript-eslint/parser':
6201 optional: true 6258 optional: true
6202 dependencies: 6259 dependencies:
6203 '@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.2) 6260 '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
6204 array-includes: 3.1.7 6261 array-includes: 3.1.7
6205 array.prototype.findlastindex: 1.2.3 6262 array.prototype.findlastindex: 1.2.3
6206 array.prototype.flat: 1.3.2 6263 array.prototype.flat: 1.3.2
@@ -6209,7 +6266,7 @@ packages:
6209 doctrine: 2.1.0 6266 doctrine: 2.1.0
6210 eslint: 8.56.0 6267 eslint: 8.56.0
6211 eslint-import-resolver-node: 0.3.9 6268 eslint-import-resolver-node: 0.3.9
6212 eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) 6269 eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0)
6213 hasown: 2.0.0 6270 hasown: 2.0.0
6214 is-core-module: 2.13.1 6271 is-core-module: 2.13.1
6215 is-glob: 4.0.3 6272 is-glob: 4.0.3
@@ -6225,11 +6282,11 @@ packages:
6225 - supports-color 6282 - supports-color
6226 dev: true 6283 dev: true
6227 6284
6228 /eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.15.0)(eslint@8.56.0)(jest@29.7.0)(typescript@5.3.2): 6285 /eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.56.0)(jest@29.7.0)(typescript@5.3.3):
6229 resolution: {integrity: sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==} 6286 resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==}
6230 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 6287 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
6231 peerDependencies: 6288 peerDependencies:
6232 '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 6289 '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 || ^7.0.0
6233 eslint: ^7.0.0 || ^8.0.0 6290 eslint: ^7.0.0 || ^8.0.0
6234 jest: '*' 6291 jest: '*'
6235 peerDependenciesMeta: 6292 peerDependenciesMeta:
@@ -6238,10 +6295,10 @@ packages:
6238 jest: 6295 jest:
6239 optional: true 6296 optional: true
6240 dependencies: 6297 dependencies:
6241 '@typescript-eslint/eslint-plugin': 6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.2) 6298 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3)
6242 '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.2) 6299 '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
6243 eslint: 8.56.0 6300 eslint: 8.56.0
6244 jest: 29.7.0(@types/node@20.10.3)(ts-node@10.9.1) 6301 jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2)
6245 transitivePeerDependencies: 6302 transitivePeerDependencies:
6246 - supports-color 6303 - supports-color
6247 - typescript 6304 - typescript
@@ -6272,8 +6329,8 @@ packages:
6272 object.fromentries: 2.0.7 6329 object.fromentries: 2.0.7
6273 dev: true 6330 dev: true
6274 6331
6275 /eslint-plugin-prettier@5.1.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1): 6332 /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5):
6276 resolution: {integrity: sha512-WQpV3mSmIobb77s4qiCZu3dBrZZ0rj8ckSfBtRrgNK9Wnh2s3eiaxNTWloz1LJ1WtvqZES/PAI7PLvsrGt/CEA==} 6333 resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==}
6277 engines: {node: ^14.18.0 || >=16.0.0} 6334 engines: {node: ^14.18.0 || >=16.0.0}
6278 peerDependencies: 6335 peerDependencies:
6279 '@types/eslint': '>=8.0.0' 6336 '@types/eslint': '>=8.0.0'
@@ -6288,7 +6345,7 @@ packages:
6288 dependencies: 6345 dependencies:
6289 eslint: 8.56.0 6346 eslint: 8.56.0
6290 eslint-config-prettier: 9.1.0(eslint@8.56.0) 6347 eslint-config-prettier: 9.1.0(eslint@8.56.0)
6291 prettier: 3.1.1 6348 prettier: 3.2.5
6292 prettier-linter-helpers: 1.0.0 6349 prettier-linter-helpers: 1.0.0
6293 synckit: 0.8.6 6350 synckit: 0.8.6
6294 dev: true 6351 dev: true
@@ -6327,15 +6384,15 @@ packages:
6327 string.prototype.matchall: 4.0.8 6384 string.prototype.matchall: 4.0.8
6328 dev: true 6385 dev: true
6329 6386
6330 /eslint-plugin-sonar@0.12.0(@babel/core@7.23.6)(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.2): 6387 /eslint-plugin-sonar@0.12.0(@babel/core@7.24.0)(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3):
6331 resolution: {integrity: sha512-49linjQRXazFXZR4PXHwgMkkrnLavZTeSkxJ5+k3PoNqGm/shgJCVmdQAki3AJNqM+huZSwYxwsWS+LSpB48cQ==} 6388 resolution: {integrity: sha512-49linjQRXazFXZR4PXHwgMkkrnLavZTeSkxJ5+k3PoNqGm/shgJCVmdQAki3AJNqM+huZSwYxwsWS+LSpB48cQ==}
6332 engines: {node: '>=14'} 6389 engines: {node: '>=14'}
6333 peerDependencies: 6390 peerDependencies:
6334 eslint: ^7.0.0 || ^8.0.0 6391 eslint: ^7.0.0 || ^8.0.0
6335 typescript: ^4.0.0 || ^5.0.0 6392 typescript: ^4.0.0 || ^5.0.0
6336 dependencies: 6393 dependencies:
6337 '@babel/eslint-parser': 7.22.9(@babel/core@7.23.6)(eslint@8.56.0) 6394 '@babel/eslint-parser': 7.23.10(@babel/core@7.24.0)(eslint@8.56.0)
6338 '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.2) 6395 '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3)
6339 builtin-modules: 3.3.0 6396 builtin-modules: 3.3.0
6340 bytes: 3.1.2 6397 bytes: 3.1.2
6341 eslint: 8.56.0 6398 eslint: 8.56.0
@@ -6346,7 +6403,7 @@ packages:
6346 regexpp: 3.2.0 6403 regexpp: 3.2.0
6347 scslre: 0.2.0 6404 scslre: 0.2.0
6348 tmp: 0.2.1 6405 tmp: 0.2.1
6349 typescript: 5.3.2 6406 typescript: 5.3.3
6350 transitivePeerDependencies: 6407 transitivePeerDependencies:
6351 - '@babel/core' 6408 - '@babel/core'
6352 - '@typescript-eslint/parser' 6409 - '@typescript-eslint/parser'
@@ -6383,7 +6440,7 @@ packages:
6383 read-pkg-up: 7.0.1 6440 read-pkg-up: 7.0.1
6384 regexp-tree: 0.1.27 6441 regexp-tree: 0.1.27
6385 regjsparser: 0.10.0 6442 regjsparser: 0.10.0
6386 semver: 7.5.4 6443 semver: 7.6.0
6387 strip-indent: 3.0.0 6444 strip-indent: 3.0.0
6388 transitivePeerDependencies: 6445 transitivePeerDependencies:
6389 - supports-color 6446 - supports-color
@@ -6467,6 +6524,16 @@ packages:
6467 engines: {node: '>=6'} 6524 engines: {node: '>=6'}
6468 dev: false 6525 dev: false
6469 6526
6527 /esniff@2.0.1:
6528 resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==}
6529 engines: {node: '>=0.10'}
6530 dependencies:
6531 d: 1.0.2
6532 es5-ext: 0.10.64
6533 event-emitter: 0.3.5
6534 type: 2.7.2
6535 dev: false
6536
6470 /espree@9.6.1: 6537 /espree@9.6.1:
6471 resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 6538 resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
6472 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 6539 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -6518,8 +6585,8 @@ packages:
6518 /event-emitter@0.3.5: 6585 /event-emitter@0.3.5:
6519 resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} 6586 resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==}
6520 dependencies: 6587 dependencies:
6521 d: 1.0.1 6588 d: 1.0.2
6522 es5-ext: 0.10.62 6589 es5-ext: 0.10.64
6523 dev: false 6590 dev: false
6524 6591
6525 /event-stream@3.3.4: 6592 /event-stream@3.3.4:
@@ -7039,6 +7106,7 @@ packages:
7039 graceful-fs: 4.2.11 7106 graceful-fs: 4.2.11
7040 jsonfile: 6.1.0 7107 jsonfile: 6.1.0
7041 universalify: 2.0.1 7108 universalify: 2.0.1
7109 dev: false
7042 7110
7043 /fs-extra@6.0.1: 7111 /fs-extra@6.0.1:
7044 resolution: {integrity: sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==} 7112 resolution: {integrity: sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==}
@@ -7268,7 +7336,7 @@ packages:
7268 es6-error: 4.1.1 7336 es6-error: 4.1.1
7269 matcher: 3.0.0 7337 matcher: 3.0.0
7270 roarr: 2.15.4 7338 roarr: 2.15.4
7271 semver: 7.5.4 7339 semver: 7.6.0
7272 serialize-error: 7.0.1 7340 serialize-error: 7.0.1
7273 optional: true 7341 optional: true
7274 7342
@@ -7336,8 +7404,8 @@ packages:
7336 resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 7404 resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
7337 dev: true 7405 dev: true
7338 7406
7339 /google-translate-api-x@10.6.7: 7407 /google-translate-api-x@10.6.8:
7340 resolution: {integrity: sha512-xw20Kjv5u84Q3FwKTk4CU1PZrYoOsRcKq0z7J3a98aIcscOCZnW3T43Rb/SOl/JPUj/QYyjJiRW9G+MQhxUnAw==} 7408 resolution: {integrity: sha512-vlXnCQhMcy00P2uX/mK3NzJb4HBMhoKo39PSmupiiVKLgsAZp8b22OV48dcAUxykAuPxQreyBYz4P6jFCzeZjA==}
7341 engines: {node: '>=14.0.0'} 7409 engines: {node: '>=14.0.0'}
7342 dev: false 7410 dev: false
7343 7411
@@ -7438,6 +7506,7 @@ packages:
7438 7506
7439 /has-unicode@2.0.1: 7507 /has-unicode@2.0.1:
7440 resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 7508 resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
7509 requiresBuild: true
7441 dev: false 7510 dev: false
7442 7511
7443 /has-value@0.3.1: 7512 /has-value@0.3.1:
@@ -7640,9 +7709,9 @@ packages:
7640 dev: false 7709 dev: false
7641 optional: true 7710 optional: true
7642 7711
7643 /husky@8.0.3: 7712 /husky@9.0.11:
7644 resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} 7713 resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==}
7645 engines: {node: '>=14'} 7714 engines: {node: '>=18'}
7646 hasBin: true 7715 hasBin: true
7647 dev: true 7716 dev: true
7648 7717
@@ -7784,12 +7853,12 @@ packages:
7784 engines: {node: '>= 0.10'} 7853 engines: {node: '>= 0.10'}
7785 dev: false 7854 dev: false
7786 7855
7787 /intl-messageformat@10.5.8: 7856 /intl-messageformat@10.5.11:
7788 resolution: {integrity: sha512-NRf0jpBWV0vd671G5b06wNofAN8tp7WWDogMZyaU8GUAsmbouyvgwmFJI7zLjfAMpm3zK+vSwRP3jzaoIcMbaA==} 7857 resolution: {integrity: sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==}
7789 dependencies: 7858 dependencies:
7790 '@formatjs/ecma402-abstract': 1.18.0 7859 '@formatjs/ecma402-abstract': 1.18.2
7791 '@formatjs/fast-memoize': 2.2.0 7860 '@formatjs/fast-memoize': 2.2.0
7792 '@formatjs/icu-messageformat-parser': 2.7.3 7861 '@formatjs/icu-messageformat-parser': 2.7.6
7793 tslib: 2.6.2 7862 tslib: 2.6.2
7794 dev: false 7863 dev: false
7795 7864
@@ -8143,11 +8212,11 @@ packages:
8143 has-symbols: 1.0.3 8212 has-symbols: 1.0.3
8144 dev: true 8213 dev: true
8145 8214
8146 /is-text-path@1.0.1: 8215 /is-text-path@2.0.0:
8147 resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} 8216 resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==}
8148 engines: {node: '>=0.10.0'} 8217 engines: {node: '>=8'}
8149 dependencies: 8218 dependencies:
8150 text-extensions: 1.9.0 8219 text-extensions: 2.4.0
8151 dev: true 8220 dev: true
8152 8221
8153 /is-typed-array@1.1.12: 8222 /is-typed-array@1.1.12:
@@ -8259,7 +8328,7 @@ packages:
8259 '@babel/parser': 7.23.5 8328 '@babel/parser': 7.23.5
8260 '@istanbuljs/schema': 0.1.3 8329 '@istanbuljs/schema': 0.1.3
8261 istanbul-lib-coverage: 3.2.0 8330 istanbul-lib-coverage: 3.2.0
8262 semver: 7.5.4 8331 semver: 7.6.0
8263 transitivePeerDependencies: 8332 transitivePeerDependencies:
8264 - supports-color 8333 - supports-color
8265 dev: true 8334 dev: true
@@ -8339,7 +8408,7 @@ packages:
8339 '@jest/expect': 29.7.0 8408 '@jest/expect': 29.7.0
8340 '@jest/test-result': 29.7.0 8409 '@jest/test-result': 29.7.0
8341 '@jest/types': 29.6.3 8410 '@jest/types': 29.6.3
8342 '@types/node': 20.10.3 8411 '@types/node': 20.11.19
8343 chalk: 4.1.2 8412 chalk: 4.1.2
8344 co: 4.6.0 8413 co: 4.6.0
8345 dedent: 1.5.1 8414 dedent: 1.5.1
@@ -8360,7 +8429,7 @@ packages:
8360 - supports-color 8429 - supports-color
8361 dev: true 8430 dev: true
8362 8431
8363 /jest-cli@29.7.0(@types/node@20.10.3)(ts-node@10.9.1): 8432 /jest-cli@29.7.0(@types/node@20.11.19)(ts-node@10.9.2):
8364 resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} 8433 resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
8365 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8434 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
8366 hasBin: true 8435 hasBin: true
@@ -8370,14 +8439,14 @@ packages:
8370 node-notifier: 8439 node-notifier:
8371 optional: true 8440 optional: true
8372 dependencies: 8441 dependencies:
8373 '@jest/core': 29.7.0(ts-node@10.9.1) 8442 '@jest/core': 29.7.0(ts-node@10.9.2)
8374 '@jest/test-result': 29.7.0 8443 '@jest/test-result': 29.7.0
8375 '@jest/types': 29.6.3 8444 '@jest/types': 29.6.3
8376 chalk: 4.1.2 8445 chalk: 4.1.2
8377 create-jest: 29.7.0(@types/node@20.10.3)(ts-node@10.9.1) 8446 create-jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2)
8378 exit: 0.1.2 8447 exit: 0.1.2
8379 import-local: 3.1.0 8448 import-local: 3.1.0
8380 jest-config: 29.7.0(@types/node@20.10.3)(ts-node@10.9.1) 8449 jest-config: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2)
8381 jest-util: 29.7.0 8450 jest-util: 29.7.0
8382 jest-validate: 29.7.0 8451 jest-validate: 29.7.0
8383 yargs: 17.7.2 8452 yargs: 17.7.2
@@ -8388,7 +8457,7 @@ packages:
8388 - ts-node 8457 - ts-node
8389 dev: true 8458 dev: true
8390 8459
8391 /jest-config@29.7.0(@types/node@20.10.3)(ts-node@10.9.1): 8460 /jest-config@29.7.0(@types/node@20.11.19)(ts-node@10.9.2):
8392 resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} 8461 resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
8393 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8462 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
8394 peerDependencies: 8463 peerDependencies:
@@ -8403,7 +8472,7 @@ packages:
8403 '@babel/core': 7.23.5 8472 '@babel/core': 7.23.5
8404 '@jest/test-sequencer': 29.7.0 8473 '@jest/test-sequencer': 29.7.0
8405 '@jest/types': 29.6.3 8474 '@jest/types': 29.6.3
8406 '@types/node': 20.10.3 8475 '@types/node': 20.11.19
8407 babel-jest: 29.7.0(@babel/core@7.23.5) 8476 babel-jest: 29.7.0(@babel/core@7.23.5)
8408 chalk: 4.1.2 8477 chalk: 4.1.2
8409 ci-info: 3.8.0 8478 ci-info: 3.8.0
@@ -8423,7 +8492,7 @@ packages:
8423 pretty-format: 29.7.0 8492 pretty-format: 29.7.0
8424 slash: 3.0.0 8493 slash: 3.0.0
8425 strip-json-comments: 3.1.1 8494 strip-json-comments: 3.1.1
8426 ts-node: 10.9.1(@types/node@20.10.3)(typescript@5.3.2) 8495 ts-node: 10.9.2(@types/node@20.11.19)(typescript@5.3.3)
8427 transitivePeerDependencies: 8496 transitivePeerDependencies:
8428 - babel-plugin-macros 8497 - babel-plugin-macros
8429 - supports-color 8498 - supports-color
@@ -8464,7 +8533,7 @@ packages:
8464 '@jest/environment': 29.7.0 8533 '@jest/environment': 29.7.0
8465 '@jest/fake-timers': 29.7.0 8534 '@jest/fake-timers': 29.7.0
8466 '@jest/types': 29.6.3 8535 '@jest/types': 29.6.3
8467 '@types/node': 20.10.3 8536 '@types/node': 20.11.19
8468 jest-mock: 29.7.0 8537 jest-mock: 29.7.0
8469 jest-util: 29.7.0 8538 jest-util: 29.7.0
8470 dev: true 8539 dev: true
@@ -8480,7 +8549,7 @@ packages:
8480 dependencies: 8549 dependencies:
8481 '@jest/types': 29.6.3 8550 '@jest/types': 29.6.3
8482 '@types/graceful-fs': 4.1.5 8551 '@types/graceful-fs': 4.1.5
8483 '@types/node': 20.10.3 8552 '@types/node': 20.11.19
8484 anymatch: 3.1.3 8553 anymatch: 3.1.3
8485 fb-watchman: 2.0.2 8554 fb-watchman: 2.0.2
8486 graceful-fs: 4.2.11 8555 graceful-fs: 4.2.11
@@ -8531,7 +8600,7 @@ packages:
8531 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8600 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
8532 dependencies: 8601 dependencies:
8533 '@jest/types': 29.6.3 8602 '@jest/types': 29.6.3
8534 '@types/node': 20.10.3 8603 '@types/node': 20.11.19
8535 jest-util: 29.7.0 8604 jest-util: 29.7.0
8536 dev: true 8605 dev: true
8537 8606
@@ -8586,7 +8655,7 @@ packages:
8586 '@jest/test-result': 29.7.0 8655 '@jest/test-result': 29.7.0
8587 '@jest/transform': 29.7.0 8656 '@jest/transform': 29.7.0
8588 '@jest/types': 29.6.3 8657 '@jest/types': 29.6.3
8589 '@types/node': 20.10.3 8658 '@types/node': 20.11.19
8590 chalk: 4.1.2 8659 chalk: 4.1.2
8591 emittery: 0.13.1 8660 emittery: 0.13.1
8592 graceful-fs: 4.2.11 8661 graceful-fs: 4.2.11
@@ -8617,7 +8686,7 @@ packages:
8617 '@jest/test-result': 29.7.0 8686 '@jest/test-result': 29.7.0
8618 '@jest/transform': 29.7.0 8687 '@jest/transform': 29.7.0
8619 '@jest/types': 29.6.3 8688 '@jest/types': 29.6.3
8620 '@types/node': 20.10.3 8689 '@types/node': 20.11.19
8621 chalk: 4.1.2 8690 chalk: 4.1.2
8622 cjs-module-lexer: 1.2.2 8691 cjs-module-lexer: 1.2.2
8623 collect-v8-coverage: 1.0.1 8692 collect-v8-coverage: 1.0.1
@@ -8659,7 +8728,7 @@ packages:
8659 jest-util: 29.7.0 8728 jest-util: 29.7.0
8660 natural-compare: 1.4.0 8729 natural-compare: 1.4.0
8661 pretty-format: 29.7.0 8730 pretty-format: 29.7.0
8662 semver: 7.5.4 8731 semver: 7.6.0
8663 transitivePeerDependencies: 8732 transitivePeerDependencies:
8664 - supports-color 8733 - supports-color
8665 dev: true 8734 dev: true
@@ -8669,7 +8738,7 @@ packages:
8669 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8738 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
8670 dependencies: 8739 dependencies:
8671 '@jest/types': 29.6.3 8740 '@jest/types': 29.6.3
8672 '@types/node': 20.10.3 8741 '@types/node': 20.11.19
8673 chalk: 4.1.2 8742 chalk: 4.1.2
8674 ci-info: 3.8.0 8743 ci-info: 3.8.0
8675 graceful-fs: 4.2.11 8744 graceful-fs: 4.2.11
@@ -8694,7 +8763,7 @@ packages:
8694 dependencies: 8763 dependencies:
8695 '@jest/test-result': 29.7.0 8764 '@jest/test-result': 29.7.0
8696 '@jest/types': 29.6.3 8765 '@jest/types': 29.6.3
8697 '@types/node': 20.10.3 8766 '@types/node': 20.11.19
8698 ansi-escapes: 4.3.2 8767 ansi-escapes: 4.3.2
8699 chalk: 4.1.2 8768 chalk: 4.1.2
8700 emittery: 0.13.1 8769 emittery: 0.13.1
@@ -8706,13 +8775,13 @@ packages:
8706 resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} 8775 resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
8707 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8776 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
8708 dependencies: 8777 dependencies:
8709 '@types/node': 20.10.3 8778 '@types/node': 20.11.19
8710 jest-util: 29.7.0 8779 jest-util: 29.7.0
8711 merge-stream: 2.0.0 8780 merge-stream: 2.0.0
8712 supports-color: 8.1.1 8781 supports-color: 8.1.1
8713 dev: true 8782 dev: true
8714 8783
8715 /jest@29.7.0(@types/node@20.10.3)(ts-node@10.9.1): 8784 /jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2):
8716 resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} 8785 resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
8717 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8786 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
8718 hasBin: true 8787 hasBin: true
@@ -8722,10 +8791,10 @@ packages:
8722 node-notifier: 8791 node-notifier:
8723 optional: true 8792 optional: true
8724 dependencies: 8793 dependencies:
8725 '@jest/core': 29.7.0(ts-node@10.9.1) 8794 '@jest/core': 29.7.0(ts-node@10.9.2)
8726 '@jest/types': 29.6.3 8795 '@jest/types': 29.6.3
8727 import-local: 3.1.0 8796 import-local: 3.1.0
8728 jest-cli: 29.7.0(@types/node@20.10.3)(ts-node@10.9.1) 8797 jest-cli: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2)
8729 transitivePeerDependencies: 8798 transitivePeerDependencies:
8730 - '@types/node' 8799 - '@types/node'
8731 - babel-plugin-macros 8800 - babel-plugin-macros
@@ -8733,6 +8802,11 @@ packages:
8733 - ts-node 8802 - ts-node
8734 dev: true 8803 dev: true
8735 8804
8805 /jiti@1.21.0:
8806 resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
8807 hasBin: true
8808 dev: true
8809
8736 /joi@17.11.0: 8810 /joi@17.11.0:
8737 resolution: {integrity: sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==} 8811 resolution: {integrity: sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==}
8738 dependencies: 8812 dependencies:
@@ -8791,7 +8865,7 @@ packages:
8791 resolution: {integrity: sha512-TuDuZ5KrgyjoCIppdPXBMqiGfota55+odM+j2cQ5rt/XKyKmqGB3Whz1F8SN8+60yYGy/Nu5lbRZ+rx8kBIvBw==} 8865 resolution: {integrity: sha512-TuDuZ5KrgyjoCIppdPXBMqiGfota55+odM+j2cQ5rt/XKyKmqGB3Whz1F8SN8+60yYGy/Nu5lbRZ+rx8kBIvBw==}
8792 engines: {node: '>=10'} 8866 engines: {node: '>=10'}
8793 dependencies: 8867 dependencies:
8794 '@babel/runtime': 7.23.5 8868 '@babel/runtime': 7.23.9
8795 chalk: 4.1.2 8869 chalk: 4.1.2
8796 pegjs: 0.10.0 8870 pegjs: 0.10.0
8797 dev: true 8871 dev: true
@@ -8876,7 +8950,7 @@ packages:
8876 lodash.isstring: 4.0.1 8950 lodash.isstring: 4.0.1
8877 lodash.once: 4.1.1 8951 lodash.once: 4.1.1
8878 ms: 2.1.3 8952 ms: 2.1.3
8879 semver: 7.5.4 8953 semver: 7.6.0
8880 dev: false 8954 dev: false
8881 8955
8882 /jsprim@1.4.2: 8956 /jsprim@1.4.2:
@@ -8892,7 +8966,7 @@ packages:
8892 /jss-plugin-camel-case@10.10.0: 8966 /jss-plugin-camel-case@10.10.0:
8893 resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} 8967 resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==}
8894 dependencies: 8968 dependencies:
8895 '@babel/runtime': 7.23.5 8969 '@babel/runtime': 7.23.9
8896 hyphenate-style-name: 1.0.4 8970 hyphenate-style-name: 1.0.4
8897 jss: 10.10.0 8971 jss: 10.10.0
8898 dev: false 8972 dev: false
@@ -8900,7 +8974,7 @@ packages:
8900 /jss-plugin-compose@10.10.0: 8974 /jss-plugin-compose@10.10.0:
8901 resolution: {integrity: sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==} 8975 resolution: {integrity: sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==}
8902 dependencies: 8976 dependencies:
8903 '@babel/runtime': 7.23.5 8977 '@babel/runtime': 7.23.9
8904 jss: 10.10.0 8978 jss: 10.10.0
8905 tiny-warning: 1.0.3 8979 tiny-warning: 1.0.3
8906 dev: false 8980 dev: false
@@ -8908,21 +8982,21 @@ packages:
8908 /jss-plugin-default-unit@10.10.0: 8982 /jss-plugin-default-unit@10.10.0:
8909 resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} 8983 resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==}
8910 dependencies: 8984 dependencies:
8911 '@babel/runtime': 7.23.5 8985 '@babel/runtime': 7.23.9
8912 jss: 10.10.0 8986 jss: 10.10.0
8913 dev: false 8987 dev: false
8914 8988
8915 /jss-plugin-expand@10.10.0: 8989 /jss-plugin-expand@10.10.0:
8916 resolution: {integrity: sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==} 8990 resolution: {integrity: sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==}
8917 dependencies: 8991 dependencies:
8918 '@babel/runtime': 7.23.5 8992 '@babel/runtime': 7.23.9
8919 jss: 10.10.0 8993 jss: 10.10.0
8920 dev: false 8994 dev: false
8921 8995
8922 /jss-plugin-extend@10.10.0: 8996 /jss-plugin-extend@10.10.0:
8923 resolution: {integrity: sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==} 8997 resolution: {integrity: sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==}
8924 dependencies: 8998 dependencies:
8925 '@babel/runtime': 7.23.5 8999 '@babel/runtime': 7.23.9
8926 jss: 10.10.0 9000 jss: 10.10.0
8927 tiny-warning: 1.0.3 9001 tiny-warning: 1.0.3
8928 dev: false 9002 dev: false
@@ -8930,14 +9004,14 @@ packages:
8930 /jss-plugin-global@10.10.0: 9004 /jss-plugin-global@10.10.0:
8931 resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} 9005 resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==}
8932 dependencies: 9006 dependencies:
8933 '@babel/runtime': 7.23.5 9007 '@babel/runtime': 7.23.9
8934 jss: 10.10.0 9008 jss: 10.10.0
8935 dev: false 9009 dev: false
8936 9010
8937 /jss-plugin-nested@10.10.0: 9011 /jss-plugin-nested@10.10.0:
8938 resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} 9012 resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==}
8939 dependencies: 9013 dependencies:
8940 '@babel/runtime': 7.23.5 9014 '@babel/runtime': 7.23.9
8941 jss: 10.10.0 9015 jss: 10.10.0
8942 tiny-warning: 1.0.3 9016 tiny-warning: 1.0.3
8943 dev: false 9017 dev: false
@@ -8945,14 +9019,14 @@ packages:
8945 /jss-plugin-props-sort@10.10.0: 9019 /jss-plugin-props-sort@10.10.0:
8946 resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} 9020 resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==}
8947 dependencies: 9021 dependencies:
8948 '@babel/runtime': 7.23.5 9022 '@babel/runtime': 7.23.9
8949 jss: 10.10.0 9023 jss: 10.10.0
8950 dev: false 9024 dev: false
8951 9025
8952 /jss-plugin-rule-value-function@10.10.0: 9026 /jss-plugin-rule-value-function@10.10.0:
8953 resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} 9027 resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==}
8954 dependencies: 9028 dependencies:
8955 '@babel/runtime': 7.23.5 9029 '@babel/runtime': 7.23.9
8956 jss: 10.10.0 9030 jss: 10.10.0
8957 tiny-warning: 1.0.3 9031 tiny-warning: 1.0.3
8958 dev: false 9032 dev: false
@@ -8960,7 +9034,7 @@ packages:
8960 /jss-plugin-rule-value-observable@10.10.0: 9034 /jss-plugin-rule-value-observable@10.10.0:
8961 resolution: {integrity: sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==} 9035 resolution: {integrity: sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==}
8962 dependencies: 9036 dependencies:
8963 '@babel/runtime': 7.23.5 9037 '@babel/runtime': 7.23.9
8964 jss: 10.10.0 9038 jss: 10.10.0
8965 symbol-observable: 1.2.0 9039 symbol-observable: 1.2.0
8966 dev: false 9040 dev: false
@@ -8968,7 +9042,7 @@ packages:
8968 /jss-plugin-template@10.10.0: 9042 /jss-plugin-template@10.10.0:
8969 resolution: {integrity: sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==} 9043 resolution: {integrity: sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==}
8970 dependencies: 9044 dependencies:
8971 '@babel/runtime': 7.23.5 9045 '@babel/runtime': 7.23.9
8972 jss: 10.10.0 9046 jss: 10.10.0
8973 tiny-warning: 1.0.3 9047 tiny-warning: 1.0.3
8974 dev: false 9048 dev: false
@@ -8976,7 +9050,7 @@ packages:
8976 /jss-plugin-vendor-prefixer@10.10.0: 9050 /jss-plugin-vendor-prefixer@10.10.0:
8977 resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} 9051 resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==}
8978 dependencies: 9052 dependencies:
8979 '@babel/runtime': 7.23.5 9053 '@babel/runtime': 7.23.9
8980 css-vendor: 2.0.8 9054 css-vendor: 2.0.8
8981 jss: 10.10.0 9055 jss: 10.10.0
8982 dev: false 9056 dev: false
@@ -8984,7 +9058,7 @@ packages:
8984 /jss-preset-default@10.10.0: 9058 /jss-preset-default@10.10.0:
8985 resolution: {integrity: sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==} 9059 resolution: {integrity: sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==}
8986 dependencies: 9060 dependencies:
8987 '@babel/runtime': 7.23.5 9061 '@babel/runtime': 7.23.9
8988 jss: 10.10.0 9062 jss: 10.10.0
8989 jss-plugin-camel-case: 10.10.0 9063 jss-plugin-camel-case: 10.10.0
8990 jss-plugin-compose: 10.10.0 9064 jss-plugin-compose: 10.10.0
@@ -9004,7 +9078,7 @@ packages:
9004 resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} 9078 resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==}
9005 dependencies: 9079 dependencies:
9006 '@babel/runtime': 7.23.5 9080 '@babel/runtime': 7.23.5
9007 csstype: 3.1.2 9081 csstype: 3.1.3
9008 is-in-browser: 1.1.3 9082 is-in-browser: 1.1.3
9009 tiny-warning: 1.0.3 9083 tiny-warning: 1.0.3
9010 dev: false 9084 dev: false
@@ -9373,7 +9447,7 @@ packages:
9373 /lru-queue@0.1.0: 9447 /lru-queue@0.1.0:
9374 resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} 9448 resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==}
9375 dependencies: 9449 dependencies:
9376 es5-ext: 0.10.62 9450 es5-ext: 0.10.64
9377 dev: false 9451 dev: false
9378 9452
9379 /lru_map@0.3.3: 9453 /lru_map@0.3.3:
@@ -9508,8 +9582,8 @@ packages:
9508 object-visit: 1.0.1 9582 object-visit: 1.0.1
9509 dev: false 9583 dev: false
9510 9584
9511 /markdown-to-jsx@7.3.2(react@18.2.0): 9585 /markdown-to-jsx@7.4.1(react@18.2.0):
9512 resolution: {integrity: sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==} 9586 resolution: {integrity: sha512-GbrbkTnHp9u6+HqbPRFJbObi369AgJNXi/sGqq5HRsoZW063xR1XDCaConqq+whfEIAlzB1YPnOgsPc7B7bc/A==}
9513 engines: {node: '>= 10'} 9587 engines: {node: '>= 10'}
9514 peerDependencies: 9588 peerDependencies:
9515 react: '>= 0.14.0' 9589 react: '>= 0.14.0'
@@ -9546,8 +9620,8 @@ packages:
9546 /memoizee@0.4.15: 9620 /memoizee@0.4.15:
9547 resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} 9621 resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==}
9548 dependencies: 9622 dependencies:
9549 d: 1.0.1 9623 d: 1.0.2
9550 es5-ext: 0.10.62 9624 es5-ext: 0.10.64
9551 es6-weak-map: 2.0.3 9625 es6-weak-map: 2.0.3
9552 event-emitter: 0.3.5 9626 event-emitter: 0.3.5
9553 is-promise: 2.2.2 9627 is-promise: 2.2.2
@@ -9556,6 +9630,11 @@ packages:
9556 timers-ext: 0.1.7 9630 timers-ext: 0.1.7
9557 dev: false 9631 dev: false
9558 9632
9633 /meow@12.1.1:
9634 resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
9635 engines: {node: '>=16.10'}
9636 dev: true
9637
9559 /meow@8.1.2: 9638 /meow@8.1.2:
9560 resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} 9639 resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==}
9561 engines: {node: '>=10'} 9640 engines: {node: '>=10'}
@@ -9816,8 +9895,8 @@ packages:
9816 reactive-localstorage: 0.0.2 9895 reactive-localstorage: 0.0.2
9817 dev: false 9896 dev: false
9818 9897
9819 /mobx-react-form@6.6.0(mobx@6.12.0): 9898 /mobx-react-form@6.9.3(mobx@6.12.0):
9820 resolution: {integrity: sha512-Md7ne7tS4GX/TNMSmxKX4aTB1FVOVYCv/452k/Bftc4HK+4iozzlQX9jmCBlpSEAswpoqRE5e/Px/ANPay0DLg==} 9899 resolution: {integrity: sha512-T7FKfLD+BfNwHRgW32QGxBW1fTEZWjIQ5dGacHzOBZCBKynHMEPHonYxBZaavduGpchF96dHTTAeRlAdqsN8fA==}
9821 engines: {node: '>=8.0.0'} 9900 engines: {node: '>=8.0.0'}
9822 peerDependencies: 9901 peerDependencies:
9823 mobx: ^6.0.0 9902 mobx: ^6.0.0
@@ -9872,8 +9951,8 @@ packages:
9872 engines: {node: '>=0.10.0'} 9951 engines: {node: '>=0.10.0'}
9873 dev: false 9952 dev: false
9874 9953
9875 /moment@2.29.4: 9954 /moment@2.30.1:
9876 resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} 9955 resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
9877 dev: false 9956 dev: false
9878 9957
9879 /ms@2.0.0: 9958 /ms@2.0.0:
@@ -10020,7 +10099,7 @@ packages:
10020 nopt: 5.0.0 10099 nopt: 5.0.0
10021 npmlog: 6.0.2 10100 npmlog: 6.0.2
10022 rimraf: 3.0.2 10101 rimraf: 3.0.2
10023 semver: 7.5.4 10102 semver: 7.6.0
10024 tar: 6.2.0 10103 tar: 6.2.0
10025 which: 2.0.2 10104 which: 2.0.2
10026 transitivePeerDependencies: 10105 transitivePeerDependencies:
@@ -10043,7 +10122,7 @@ packages:
10043 nopt: 6.0.0 10122 nopt: 6.0.0
10044 npmlog: 6.0.2 10123 npmlog: 6.0.2
10045 rimraf: 3.0.2 10124 rimraf: 3.0.2
10046 semver: 7.5.4 10125 semver: 7.6.0
10047 tar: 6.2.0 10126 tar: 6.2.0
10048 which: 2.0.2 10127 which: 2.0.2
10049 transitivePeerDependencies: 10128 transitivePeerDependencies:
@@ -10100,6 +10179,7 @@ packages:
10100 resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} 10179 resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
10101 engines: {node: '>=6'} 10180 engines: {node: '>=6'}
10102 hasBin: true 10181 hasBin: true
10182 requiresBuild: true
10103 dependencies: 10183 dependencies:
10104 abbrev: 1.1.1 10184 abbrev: 1.1.1
10105 dev: false 10185 dev: false
@@ -10129,7 +10209,7 @@ packages:
10129 dependencies: 10209 dependencies:
10130 hosted-git-info: 4.1.0 10210 hosted-git-info: 4.1.0
10131 is-core-module: 2.13.1 10211 is-core-module: 2.13.1
10132 semver: 7.5.4 10212 semver: 7.6.0
10133 validate-npm-package-license: 3.0.4 10213 validate-npm-package-license: 3.0.4
10134 dev: true 10214 dev: true
10135 10215
@@ -10647,8 +10727,8 @@ packages:
10647 dev: true 10727 dev: true
10648 optional: true 10728 optional: true
10649 10729
10650 /prettier@3.1.1: 10730 /prettier@3.2.5:
10651 resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} 10731 resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
10652 engines: {node: '>=14'} 10732 engines: {node: '>=14'}
10653 hasBin: true 10733 hasBin: true
10654 dev: true 10734 dev: true
@@ -11038,7 +11118,7 @@ packages:
11038 react-dom: '>=16.9.0' 11118 react-dom: '>=16.9.0'
11039 dependencies: 11119 dependencies:
11040 '@babel/runtime': 7.23.5 11120 '@babel/runtime': 7.23.5
11041 classnames: 2.3.2 11121 classnames: 2.5.1
11042 rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) 11122 rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0)
11043 react: 18.2.0 11123 react: 18.2.0
11044 react-dom: 18.2.0(react@18.2.0) 11124 react-dom: 18.2.0(react@18.2.0)
@@ -11118,27 +11198,27 @@ packages:
11118 react-dom: 18.2.0(react@18.2.0) 11198 react-dom: 18.2.0(react@18.2.0)
11119 dev: false 11199 dev: false
11120 11200
11121 /react-intl@6.5.5(react@18.2.0)(typescript@5.3.2): 11201 /react-intl@6.6.2(react@18.2.0)(typescript@5.3.3):
11122 resolution: {integrity: sha512-cI5UKvBh4tc1zxLIziHBYGMX3dhYWDEFlvUDVN6NfT2i96zTXz/zH2AmM8+2waqgOhwkFUzd+7kK1G9q7fiC2g==} 11202 resolution: {integrity: sha512-IpW2IkLtGENSFlX3vfH11rjuCIsW0VyjT0Q1pPKMZPtT2z1FxLt4weFT5Ezti2TScT1xiyb3aQBFth9EB7jzAg==}
11123 peerDependencies: 11203 peerDependencies:
11124 react: ^16.6.0 || 17 || 18 11204 react: ^16.6.0 || 17 || 18
11125 typescript: '5' 11205 typescript: ^4.7 || 5
11126 peerDependenciesMeta: 11206 peerDependenciesMeta:
11127 typescript: 11207 typescript:
11128 optional: true 11208 optional: true
11129 dependencies: 11209 dependencies:
11130 '@formatjs/ecma402-abstract': 1.18.0 11210 '@formatjs/ecma402-abstract': 1.18.2
11131 '@formatjs/icu-messageformat-parser': 2.7.3 11211 '@formatjs/icu-messageformat-parser': 2.7.6
11132 '@formatjs/intl': 2.9.9(typescript@5.3.2) 11212 '@formatjs/intl': 2.10.0(typescript@5.3.3)
11133 '@formatjs/intl-displaynames': 6.6.4 11213 '@formatjs/intl-displaynames': 6.6.6
11134 '@formatjs/intl-listformat': 7.5.3 11214 '@formatjs/intl-listformat': 7.5.5
11135 '@types/hoist-non-react-statics': 3.3.5 11215 '@types/hoist-non-react-statics': 3.3.5
11136 '@types/react': 18.2.41 11216 '@types/react': 18.2.55
11137 hoist-non-react-statics: 3.3.2 11217 hoist-non-react-statics: 3.3.2
11138 intl-messageformat: 10.5.8 11218 intl-messageformat: 10.5.11
11139 react: 18.2.0 11219 react: 18.2.0
11140 tslib: 2.6.2 11220 tslib: 2.6.2
11141 typescript: 5.3.2 11221 typescript: 5.3.3
11142 dev: false 11222 dev: false
11143 11223
11144 /react-is@16.13.1: 11224 /react-is@16.13.1:
@@ -11170,7 +11250,7 @@ packages:
11170 resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} 11250 resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==}
11171 dev: false 11251 dev: false
11172 11252
11173 /react-loader-spinner@5.4.5(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0): 11253 /react-loader-spinner@5.4.5(@babel/core@7.24.0)(react-dom@18.2.0)(react@18.2.0):
11174 resolution: {integrity: sha512-32f+sb/v2tnNfyvnCCOS4fpyVHsGXjSyNo6QLniHcaj1XjKLxx14L2z0h6szRugOL8IEJ+53GPwNAdbkDqmy4g==} 11254 resolution: {integrity: sha512-32f+sb/v2tnNfyvnCCOS4fpyVHsGXjSyNo6QLniHcaj1XjKLxx14L2z0h6szRugOL8IEJ+53GPwNAdbkDqmy4g==}
11175 peerDependencies: 11255 peerDependencies:
11176 react: ^16.0.0 || ^17.0.0 || ^18.0.0 11256 react: ^16.0.0 || ^17.0.0 || ^18.0.0
@@ -11179,7 +11259,7 @@ packages:
11179 react: 18.2.0 11259 react: 18.2.0
11180 react-dom: 18.2.0(react@18.2.0) 11260 react-dom: 18.2.0(react@18.2.0)
11181 react-is: 18.2.0 11261 react-is: 18.2.0
11182 styled-components: 5.3.11(@babel/core@7.23.6)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) 11262 styled-components: 5.3.11(@babel/core@7.24.0)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)
11183 styled-tools: 1.7.2 11263 styled-tools: 1.7.2
11184 transitivePeerDependencies: 11264 transitivePeerDependencies:
11185 - '@babel/core' 11265 - '@babel/core'
@@ -11200,26 +11280,26 @@ packages:
11200 warning: 4.0.3 11280 warning: 4.0.3
11201 dev: false 11281 dev: false
11202 11282
11203 /react-router-dom@6.20.1(react-dom@18.2.0)(react@18.2.0): 11283 /react-router-dom@6.22.1(react-dom@18.2.0)(react@18.2.0):
11204 resolution: {integrity: sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==} 11284 resolution: {integrity: sha512-iwMyyyrbL7zkKY7MRjOVRy+TMnS/OPusaFVxM2P11x9dzSzGmLsebkCvYirGq0DWB9K9hOspHYYtDz33gE5Duw==}
11205 engines: {node: '>=14.0.0'} 11285 engines: {node: '>=14.0.0'}
11206 peerDependencies: 11286 peerDependencies:
11207 react: '>=16.8' 11287 react: '>=16.8'
11208 react-dom: '>=16.8' 11288 react-dom: '>=16.8'
11209 dependencies: 11289 dependencies:
11210 '@remix-run/router': 1.13.1 11290 '@remix-run/router': 1.15.1
11211 react: 18.2.0 11291 react: 18.2.0
11212 react-dom: 18.2.0(react@18.2.0) 11292 react-dom: 18.2.0(react@18.2.0)
11213 react-router: 6.20.1(react@18.2.0) 11293 react-router: 6.22.1(react@18.2.0)
11214 dev: false 11294 dev: false
11215 11295
11216 /react-router@6.20.1(react@18.2.0): 11296 /react-router@6.22.1(react@18.2.0):
11217 resolution: {integrity: sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==} 11297 resolution: {integrity: sha512-0pdoRGwLtemnJqn1K0XHUbnKiX0S4X8CgvVVmHGOWmofESj31msHo/1YiqcJWK7Wxfq2a4uvvtS01KAQyWK/CQ==}
11218 engines: {node: '>=14.0.0'} 11298 engines: {node: '>=14.0.0'}
11219 peerDependencies: 11299 peerDependencies:
11220 react: '>=16.8' 11300 react: '>=16.8'
11221 dependencies: 11301 dependencies:
11222 '@remix-run/router': 1.13.1 11302 '@remix-run/router': 1.15.1
11223 react: 18.2.0 11303 react: 18.2.0
11224 dev: false 11304 dev: false
11225 11305
@@ -11237,14 +11317,14 @@ packages:
11237 react-dom: 18.2.0(react@18.2.0) 11317 react-dom: 18.2.0(react@18.2.0)
11238 dev: false 11318 dev: false
11239 11319
11240 /react-tooltip@5.24.0(react-dom@18.2.0)(react@18.2.0): 11320 /react-tooltip@5.26.2(react-dom@18.2.0)(react@18.2.0):
11241 resolution: {integrity: sha512-HjstgpOrUwP4eN6mHU4EThpbxVuKO5SvqumRt1aAcPq0ya+pIVVxlwltndtdIIMBJ7w3jnN05vNfcfh2sxE2mQ==} 11321 resolution: {integrity: sha512-C1qHiqWYn6l5c98kL/NKFyJSw5G11vUVJkgOPcKgn306c5iL5317LxMNn5Qg1GSSM7Qvtsd6KA5MvwfgxFF7Dg==}
11242 peerDependencies: 11322 peerDependencies:
11243 react: '>=16.14.0' 11323 react: '>=16.14.0'
11244 react-dom: '>=16.14.0' 11324 react-dom: '>=16.14.0'
11245 dependencies: 11325 dependencies:
11246 '@floating-ui/dom': 1.5.3 11326 '@floating-ui/dom': 1.6.1
11247 classnames: 2.3.2 11327 classnames: 2.5.1
11248 react: 18.2.0 11328 react: 18.2.0
11249 react-dom: 18.2.0(react@18.2.0) 11329 react-dom: 18.2.0(react@18.2.0)
11250 dev: false 11330 dev: false
@@ -11822,8 +11902,8 @@ packages:
11822 resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 11902 resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
11823 hasBin: true 11903 hasBin: true
11824 11904
11825 /semver@7.5.4: 11905 /semver@7.6.0:
11826 resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 11906 resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
11827 engines: {node: '>=10'} 11907 engines: {node: '>=10'}
11828 hasBin: true 11908 hasBin: true
11829 dependencies: 11909 dependencies:
@@ -12046,8 +12126,8 @@ packages:
12046 scmp: 2.0.0 12126 scmp: 2.0.0
12047 dev: false 12127 dev: false
12048 12128
12049 /simple-git@3.21.0: 12129 /simple-git@3.22.0:
12050 resolution: {integrity: sha512-oTzw9248AF5bDTMk9MrxsRzEzivMlY+DWH0yWS4VYpMhNLhDWnN06pCtaUyPnqv/FpsdeNmRqmZugMABHRPdDA==} 12130 resolution: {integrity: sha512-6JujwSs0ac82jkGjMHiCnTifvf1crOiY/+tfs/Pqih6iow7VrpNKRRNdWm6RtaXpvvv/JGNYhlUtLhGFqHF+Yw==}
12051 dependencies: 12131 dependencies:
12052 '@kwsites/file-exists': 1.1.1 12132 '@kwsites/file-exists': 1.1.1
12053 '@kwsites/promise-deferred': 1.1.1 12133 '@kwsites/promise-deferred': 1.1.1
@@ -12066,7 +12146,7 @@ packages:
12066 resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} 12146 resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==}
12067 engines: {node: '>=10'} 12147 engines: {node: '>=10'}
12068 dependencies: 12148 dependencies:
12069 semver: 7.5.4 12149 semver: 7.6.0
12070 dev: true 12150 dev: true
12071 12151
12072 /sisteransi@1.0.5: 12152 /sisteransi@1.0.5:
@@ -12261,6 +12341,11 @@ packages:
12261 readable-stream: 3.6.2 12341 readable-stream: 3.6.2
12262 dev: true 12342 dev: true
12263 12343
12344 /split2@4.2.0:
12345 resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
12346 engines: {node: '>= 10.x'}
12347 dev: true
12348
12264 /split@0.3.3: 12349 /split@0.3.3:
12265 resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} 12350 resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==}
12266 dependencies: 12351 dependencies:
@@ -12279,11 +12364,8 @@ packages:
12279 /sqlite3@5.1.6: 12364 /sqlite3@5.1.6:
12280 resolution: {integrity: sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==} 12365 resolution: {integrity: sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==}
12281 requiresBuild: true 12366 requiresBuild: true
12282 peerDependenciesMeta:
12283 node-gyp:
12284 optional: true
12285 dependencies: 12367 dependencies:
12286 '@mapbox/node-pre-gyp': 1.0.10 12368 '@mapbox/node-pre-gyp': 1.0.11
12287 node-addon-api: 4.3.0 12369 node-addon-api: 4.3.0
12288 tar: 6.2.0 12370 tar: 6.2.0
12289 optionalDependencies: 12371 optionalDependencies:
@@ -12526,7 +12608,7 @@ packages:
12526 engines: {node: '>=8'} 12608 engines: {node: '>=8'}
12527 dev: true 12609 dev: true
12528 12610
12529 /styled-components@5.3.11(@babel/core@7.23.6)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): 12611 /styled-components@5.3.11(@babel/core@7.24.0)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0):
12530 resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} 12612 resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==}
12531 engines: {node: '>=10'} 12613 engines: {node: '>=10'}
12532 peerDependencies: 12614 peerDependencies:
@@ -12539,7 +12621,7 @@ packages:
12539 '@emotion/is-prop-valid': 1.2.1 12621 '@emotion/is-prop-valid': 1.2.1
12540 '@emotion/stylis': 0.8.5 12622 '@emotion/stylis': 0.8.5
12541 '@emotion/unitless': 0.7.5 12623 '@emotion/unitless': 0.7.5
12542 babel-plugin-styled-components: 2.1.4(@babel/core@7.23.6)(styled-components@5.3.11) 12624 babel-plugin-styled-components: 2.1.4(@babel/core@7.24.0)(styled-components@5.3.11)
12543 css-to-react-native: 3.2.0 12625 css-to-react-native: 3.2.0
12544 hoist-non-react-statics: 3.3.2 12626 hoist-non-react-statics: 3.3.2
12545 react: 18.2.0 12627 react: 18.2.0
@@ -12671,9 +12753,9 @@ packages:
12671 minimatch: 3.1.2 12753 minimatch: 3.1.2
12672 dev: true 12754 dev: true
12673 12755
12674 /text-extensions@1.9.0: 12756 /text-extensions@2.4.0:
12675 resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} 12757 resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==}
12676 engines: {node: '>=0.10'} 12758 engines: {node: '>=8'}
12677 dev: true 12759 dev: true
12678 12760
12679 /text-hex@1.0.0: 12761 /text-hex@1.0.0:
@@ -12718,7 +12800,7 @@ packages:
12718 /timers-ext@0.1.7: 12800 /timers-ext@0.1.7:
12719 resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} 12801 resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==}
12720 dependencies: 12802 dependencies:
12721 es5-ext: 0.10.62 12803 es5-ext: 0.10.64
12722 next-tick: 1.1.0 12804 next-tick: 1.1.0
12723 dev: false 12805 dev: false
12724 12806
@@ -12868,17 +12950,17 @@ packages:
12868 dependencies: 12950 dependencies:
12869 utf8-byte-length: 1.0.4 12951 utf8-byte-length: 1.0.4
12870 12952
12871 /ts-api-utils@1.0.3(typescript@5.3.2): 12953 /ts-api-utils@1.0.3(typescript@5.3.3):
12872 resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} 12954 resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
12873 engines: {node: '>=16.13.0'} 12955 engines: {node: '>=16.13.0'}
12874 peerDependencies: 12956 peerDependencies:
12875 typescript: '>=4.2.0' 12957 typescript: '>=4.2.0'
12876 dependencies: 12958 dependencies:
12877 typescript: 5.3.2 12959 typescript: 5.3.3
12878 dev: true 12960 dev: true
12879 12961
12880 /ts-node@10.9.1(@types/node@20.10.3)(typescript@5.3.2): 12962 /ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3):
12881 resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} 12963 resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
12882 hasBin: true 12964 hasBin: true
12883 peerDependencies: 12965 peerDependencies:
12884 '@swc/core': '>=1.2.50' 12966 '@swc/core': '>=1.2.50'
@@ -12896,45 +12978,14 @@ packages:
12896 '@tsconfig/node12': 1.0.11 12978 '@tsconfig/node12': 1.0.11
12897 '@tsconfig/node14': 1.0.3 12979 '@tsconfig/node14': 1.0.3
12898 '@tsconfig/node16': 1.0.4 12980 '@tsconfig/node16': 1.0.4
12899 '@types/node': 20.10.3 12981 '@types/node': 20.11.19
12900 acorn: 8.11.2 12982 acorn: 8.11.2
12901 acorn-walk: 8.2.0 12983 acorn-walk: 8.2.0
12902 arg: 4.1.3 12984 arg: 4.1.3
12903 create-require: 1.1.1 12985 create-require: 1.1.1
12904 diff: 4.0.2 12986 diff: 4.0.2
12905 make-error: 1.3.6 12987 make-error: 1.3.6
12906 typescript: 5.3.2 12988 typescript: 5.3.3
12907 v8-compile-cache-lib: 3.0.1
12908 yn: 3.1.1
12909 dev: true
12910
12911 /ts-node@10.9.1(@types/node@20.4.7)(typescript@5.3.2):
12912 resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
12913 hasBin: true
12914 peerDependencies:
12915 '@swc/core': '>=1.2.50'
12916 '@swc/wasm': '>=1.2.50'
12917 '@types/node': '*'
12918 typescript: '>=2.7'
12919 peerDependenciesMeta:
12920 '@swc/core':
12921 optional: true
12922 '@swc/wasm':
12923 optional: true
12924 dependencies:
12925 '@cspotcode/source-map-support': 0.8.1
12926 '@tsconfig/node10': 1.0.9
12927 '@tsconfig/node12': 1.0.11
12928 '@tsconfig/node14': 1.0.3
12929 '@tsconfig/node16': 1.0.4
12930 '@types/node': 20.4.7
12931 acorn: 8.11.2
12932 acorn-walk: 8.2.0
12933 arg: 4.1.3
12934 create-require: 1.1.1
12935 diff: 4.0.2
12936 make-error: 1.3.6
12937 typescript: 5.3.2
12938 v8-compile-cache-lib: 3.0.1 12989 v8-compile-cache-lib: 3.0.1
12939 yn: 3.1.1 12990 yn: 3.1.1
12940 dev: true 12991 dev: true
@@ -12964,14 +13015,14 @@ packages:
12964 engines: {node: '>=0.6.x'} 13015 engines: {node: '>=0.6.x'}
12965 dev: false 13016 dev: false
12966 13017
12967 /tsutils@3.21.0(typescript@5.3.2): 13018 /tsutils@3.21.0(typescript@5.3.3):
12968 resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 13019 resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
12969 engines: {node: '>= 6'} 13020 engines: {node: '>= 6'}
12970 peerDependencies: 13021 peerDependencies:
12971 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' 13022 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'
12972 dependencies: 13023 dependencies:
12973 tslib: 1.14.1 13024 tslib: 1.14.1
12974 typescript: 5.3.2 13025 typescript: 5.3.3
12975 dev: true 13026 dev: true
12976 13027
12977 /tunnel-agent@0.6.0: 13028 /tunnel-agent@0.6.0:
@@ -13044,10 +13095,6 @@ packages:
13044 engines: {node: '>=0.10.5'} 13095 engines: {node: '>=0.10.5'}
13045 dev: false 13096 dev: false
13046 13097
13047 /type@1.2.0:
13048 resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==}
13049 dev: false
13050
13051 /type@2.7.2: 13098 /type@2.7.2:
13052 resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} 13099 resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
13053 dev: false 13100 dev: false
@@ -13096,8 +13143,8 @@ packages:
13096 hasBin: true 13143 hasBin: true
13097 dev: true 13144 dev: true
13098 13145
13099 /typescript@5.3.2: 13146 /typescript@5.3.3:
13100 resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} 13147 resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
13101 engines: {node: '>=14.17'} 13148 engines: {node: '>=14.17'}
13102 hasBin: true 13149 hasBin: true
13103 13150
@@ -13246,6 +13293,17 @@ packages:
13246 browserslist: 4.22.2 13293 browserslist: 4.22.2
13247 escalade: 3.1.1 13294 escalade: 3.1.1
13248 picocolors: 1.0.0 13295 picocolors: 1.0.0
13296 dev: true
13297
13298 /update-browserslist-db@1.0.13(browserslist@4.23.0):
13299 resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
13300 hasBin: true
13301 peerDependencies:
13302 browserslist: '>= 4.21.0'
13303 dependencies:
13304 browserslist: 4.23.0
13305 escalade: 3.1.1
13306 picocolors: 1.0.0
13249 13307
13250 /uri-js@4.4.1: 13308 /uri-js@4.4.1:
13251 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 13309 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
@@ -13494,6 +13552,7 @@ packages:
13494 13552
13495 /wide-align@1.1.5: 13553 /wide-align@1.1.5:
13496 resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 13554 resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
13555 requiresBuild: true
13497 dependencies: 13556 dependencies:
13498 string-width: 4.2.3 13557 string-width: 4.2.3
13499 dev: false 13558 dev: false
@@ -13584,19 +13643,6 @@ packages:
13584 signal-exit: 3.0.7 13643 signal-exit: 3.0.7
13585 dev: true 13644 dev: true
13586 13645
13587 /ws@8.14.2:
13588 resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==}
13589 engines: {node: '>=10.0.0'}
13590 peerDependencies:
13591 bufferutil: ^4.0.1
13592 utf-8-validate: '>=5.0.2'
13593 peerDependenciesMeta:
13594 bufferutil:
13595 optional: true
13596 utf-8-validate:
13597 optional: true
13598 dev: false
13599
13600 /xml2js@0.4.23: 13646 /xml2js@0.4.23:
13601 resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} 13647 resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==}
13602 engines: {node: '>=4.0.0'} 13648 engines: {node: '>=4.0.0'}
diff --git a/recipes b/recipes
Subproject 725d0e802198cb48f0f9e115506550e414ab78d Subproject e1d9f2d1fb8b3ceb2ec87b7b595de20611dde99
diff --git a/src/@types/stores.types.ts b/src/@types/stores.types.ts
index 973889802..c2d7bd78a 100644
--- a/src/@types/stores.types.ts
+++ b/src/@types/stores.types.ts
@@ -87,12 +87,14 @@ export interface AppStore extends TypedStore {
87 authRequestFailed: () => void; 87 authRequestFailed: () => void;
88 autoLaunchOnStart: () => void; 88 autoLaunchOnStart: () => void;
89 automaticUpdates: boolean; 89 automaticUpdates: boolean;
90 isTwoFactorAutoCatcherEnabled: boolean;
91 twoFactorAutoCatcherMatcher: string;
90 clearAppCacheRequest: () => void; 92 clearAppCacheRequest: () => void;
91 clipboardNotifications: boolean; 93 clipboardNotifications: boolean;
92 darkMode: boolean; 94 darkMode: boolean;
93 dictionaries: [];
94 enableSpellchecking: boolean; 95 enableSpellchecking: boolean;
95 enableTranslator: boolean; 96 enableTranslator: boolean;
97 useSelfSignedCertificates: boolean;
96 fetchDataInterval: 4; 98 fetchDataInterval: 4;
97 get(key: string): any; 99 get(key: string): any;
98 getAppCacheSizeRequest: () => void; 100 getAppCacheSizeRequest: () => void;
@@ -234,7 +236,6 @@ interface SettingsStore extends TypedStore {
234 remove: (value: any) => void; 236 remove: (value: any) => void;
235 fileSystemSettingsTypes: any[]; 237 fileSystemSettingsTypes: any[];
236 loaded: boolean; 238 loaded: boolean;
237 updateAppSettingsRequest: () => void;
238 _fileSystemSettingsCache: () => void; 239 _fileSystemSettingsCache: () => void;
239 all: ISettings; 240 all: ISettings;
240 app: AppStore; 241 app: AppStore;
@@ -304,7 +305,6 @@ interface UserStore extends TypedStore {
304 accountType: () => void; 305 accountType: () => void;
305 authToken: () => void; 306 authToken: () => void;
306 deleteAccountRequest: () => void; 307 deleteAccountRequest: () => void;
307 fetchUserInfoInterval: null;
308 getLegacyServicesRequest: () => void; 308 getLegacyServicesRequest: () => void;
309 getUserInfoRequest: CachedRequest; 309 getUserInfoRequest: CachedRequest;
310 hasCompletedSignup: () => void; 310 hasCompletedSignup: () => void;
@@ -327,15 +327,10 @@ interface UserStore extends TypedStore {
327 _retrievePassword: () => void; 327 _retrievePassword: () => void;
328 changeServerRoute: () => void; 328 changeServerRoute: () => void;
329 data: User; 329 data: User;
330 importRoute: string;
331 inviteRoute: string;
332 isLoggedIn: boolean; 330 isLoggedIn: boolean;
333 isTokenExpired: boolean; 331 isTokenExpired: boolean;
334 legacyServices: () => void;
335 loginRoute: string; 332 loginRoute: string;
336 logoutRoute: string;
337 passwordRoute: string; 333 passwordRoute: string;
338 setupRoute: string;
339 signupRoute: string; 334 signupRoute: string;
340 team: () => void; 335 team: () => void;
341} 336}
diff --git a/src/api/UserApi.ts b/src/api/UserApi.ts
index 9364b3383..38f489131 100644
--- a/src/api/UserApi.ts
+++ b/src/api/UserApi.ts
@@ -52,10 +52,6 @@ export default class UserApi {
52 return this.server.updateUserInfo(userData); 52 return this.server.updateUserInfo(userData);
53 } 53 }
54 54
55 getLegacyServices() {
56 return this.server.getLegacyServices();
57 }
58
59 delete() { 55 delete() {
60 return this.server.deleteAccount(); 56 return this.server.deleteAccount();
61 } 57 }
diff --git a/src/api/server/ServerApi.ts b/src/api/server/ServerApi.ts
index 1530dd478..9e7582e1e 100644
--- a/src/api/server/ServerApi.ts
+++ b/src/api/server/ServerApi.ts
@@ -22,7 +22,7 @@ import UserModel from '../../models/User';
22import sleep from '../../helpers/async-helpers'; 22import sleep from '../../helpers/async-helpers';
23 23
24import { SERVER_NOT_LOADED } from '../../config'; 24import { SERVER_NOT_LOADED } from '../../config';
25import { userDataRecipesPath, userDataPath } from '../../environment-remote'; 25import { userDataRecipesPath } from '../../environment-remote';
26import { asarRecipesPath } from '../../helpers/asar-helpers'; 26import { asarRecipesPath } from '../../helpers/asar-helpers';
27import apiBase from '../apiBase'; 27import apiBase from '../apiBase';
28import { 28import {
@@ -500,40 +500,6 @@ export default class ServerApi {
500 debug('ServerApi::healthCheck resolves'); 500 debug('ServerApi::healthCheck resolves');
501 } 501 }
502 502
503 async getLegacyServices() {
504 const file = userDataPath('settings', 'services.json');
505
506 try {
507 const config = readJsonSync(file);
508
509 if (Object.hasOwn(config, 'services')) {
510 const services = await Promise.all(
511 config.services.map(async (s: { service: any }) => {
512 const service = s;
513 const request = await sendAuthRequest(
514 `${apiBase()}/recipes/${s.service}`,
515 );
516
517 if (request.status === 200) {
518 const data = await request.json();
519 // @ts-expect-error Property 'recipe' does not exist on type '{ service: any; }'.
520 service.recipe = new RecipePreviewModel(data);
521 }
522
523 return service;
524 }),
525 );
526
527 debug('ServerApi::getLegacyServices resolves', services);
528 return services;
529 }
530 } catch {
531 console.error('ServerApi::getLegacyServices no config found');
532 }
533
534 return [];
535 }
536
537 // Helper 503 // Helper
538 async _mapServiceModels(services: any[]) { 504 async _mapServiceModels(services: any[]) {
539 const recipes = services.map((s: { recipeId: string }) => s.recipeId); 505 const recipes = services.map((s: { recipeId: string }) => s.recipeId);
diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx
index e423e408b..1106113f0 100644
--- a/src/components/layout/Sidebar.tsx
+++ b/src/components/layout/Sidebar.tsx
@@ -318,7 +318,7 @@ class Sidebar extends Component<IProps, IState> {
318 <Icon icon={mdiCheckAll} size={1.5} /> 318 <Icon icon={mdiCheckAll} size={1.5} />
319 </button> 319 </button>
320 ) : null} 320 ) : null}
321 {stores!.settings.all.app.lockingFeatureEnabled ? ( 321 {stores!.settings.all.app.isLockingFeatureEnabled ? (
322 <button 322 <button
323 type="button" 323 type="button"
324 className="sidebar__button" 324 className="sidebar__button"
diff --git a/src/components/settings/account/AccountDashboard.tsx b/src/components/settings/account/AccountDashboard.tsx
index ffa684458..eab019084 100644
--- a/src/components/settings/account/AccountDashboard.tsx
+++ b/src/components/settings/account/AccountDashboard.tsx
@@ -7,7 +7,11 @@ import { H1, H2 } from '../../ui/headline';
7import Loader from '../../ui/loader'; 7import Loader from '../../ui/loader';
8import Button from '../../ui/button'; 8import Button from '../../ui/button';
9import Infobox from '../../ui/infobox/index'; 9import Infobox from '../../ui/infobox/index';
10import { LOCAL_SERVER, LIVE_FRANZ_API } from '../../../config'; 10import {
11 DEFAULT_LOADER_COLOR,
12 LOCAL_SERVER,
13 LIVE_FRANZ_API,
14} from '../../../config';
11import User from '../../../models/User'; 15import User from '../../../models/User';
12 16
13const messages = defineMessages({ 17const messages = defineMessages({
@@ -123,7 +127,7 @@ class AccountDashboard extends Component<IProp> {
123 )} 127 )}
124 {!isUsingWithoutAccount && ( 128 {!isUsingWithoutAccount && (
125 <> 129 <>
126 {isLoading && <Loader color="#FFFFFF" />} 130 {isLoading && <Loader color={DEFAULT_LOADER_COLOR} />}
127 131
128 {!isLoading && userInfoRequestFailed && ( 132 {!isLoading && userInfoRequestFailed && (
129 <Infobox 133 <Infobox
diff --git a/src/components/settings/settings/EditSettingsForm.tsx b/src/components/settings/settings/EditSettingsForm.tsx
index 1672a1411..81cfe8b12 100644
--- a/src/components/settings/settings/EditSettingsForm.tsx
+++ b/src/components/settings/settings/EditSettingsForm.tsx
@@ -15,6 +15,7 @@ import Infobox from '../../ui/Infobox';
15import { H1, H2, H3, H5 } from '../../ui/headline'; 15import { H1, H2, H3, H5 } from '../../ui/headline';
16import { 16import {
17 ferdiumVersion, 17 ferdiumVersion,
18 userDataCertsPath,
18 userDataPath, 19 userDataPath,
19 userDataRecipesPath, 20 userDataRecipesPath,
20} from '../../../environment-remote'; 21} from '../../../environment-remote';
@@ -238,6 +239,10 @@ const messages = defineMessages({
238 id: 'settings.app.updateStatusUpToDate', 239 id: 'settings.app.updateStatusUpToDate',
239 defaultMessage: 'You are using the latest version of Ferdium', 240 defaultMessage: 'You are using the latest version of Ferdium',
240 }, 241 },
242 servicesUpdateStatusUpToDate: {
243 id: 'settings.app.servicesUpdateStatusUpToDate',
244 defaultMessage: 'Your services are up-to-date',
245 },
241 currentVersion: { 246 currentVersion: {
242 id: 'settings.app.currentVersion', 247 id: 'settings.app.currentVersion',
243 defaultMessage: 'Current version:', 248 defaultMessage: 'Current version:',
@@ -258,6 +263,20 @@ const messages = defineMessages({
258 id: 'settings.app.form.splitColumns', 263 id: 'settings.app.form.splitColumns',
259 defaultMessage: 'Number of columns', 264 defaultMessage: 'Number of columns',
260 }, 265 },
266 warningSelfSignedCertificates: {
267 id: 'settings.app.warningSelfSignedCertificates',
268 defaultMessage:
269 'WARNING: Only enable this feature if you know what you are doing. Enabling this is a security risk and should only be used for testing purposes.',
270 },
271 infoOpenCertificatesFolder: {
272 id: 'settings.app.infoOpenCertificatesFolder',
273 defaultMessage:
274 'To install a certificate, click the button below to open the certificates folder and copy it into the folder. After that you can refresh the service (CTRL/CMD + R). To remove/uninstall, simply delete the certificate file and restart Ferdium.',
275 },
276 buttonOpenFerdiumCertsFolder: {
277 id: 'settings.app.buttonOpenFerdiumCertsFolder',
278 defaultMessage: 'Open certificates folder',
279 },
261}); 280});
262 281
263const Hr = (): ReactElement => ( 282const Hr = (): ReactElement => (
@@ -284,10 +303,12 @@ interface IProps extends WrappedComponentProps {
284 isClearingAllCache: boolean; 303 isClearingAllCache: boolean;
285 isTodosActivated: boolean; 304 isTodosActivated: boolean;
286 automaticUpdates: boolean; 305 automaticUpdates: boolean;
306 isTwoFactorAutoCatcherEnabled: boolean;
307 twoFactorAutoCatcherMatcher: string;
287 isDarkmodeEnabled: boolean; 308 isDarkmodeEnabled: boolean;
288 isAdaptableDarkModeEnabled: boolean; 309 isAdaptableDarkModeEnabled: boolean;
289 isUseGrayscaleServicesEnabled: boolean; 310 isUseGrayscaleServicesEnabled: boolean;
290 lockingFeatureEnabled: boolean; 311 isLockingFeatureEnabled: boolean;
291 isSplitModeEnabled: boolean; 312 isSplitModeEnabled: boolean;
292 isOnline: boolean; 313 isOnline: boolean;
293 showServicesUpdatedInfoBar: boolean; 314 showServicesUpdatedInfoBar: boolean;
@@ -335,7 +356,8 @@ class EditSettingsForm extends Component<IProps, IState> {
335 this.props.form.submit({ 356 this.props.form.submit({
336 onSuccess: (form: Form) => { 357 onSuccess: (form: Form) => {
337 const values = form.values(); 358 const values = form.values();
338 const { accentColor } = values; 359 const { accentColor, isTwoFactorAutoCatcherEnabled } = values;
360
339 if (accentColor.trim().length === 0) { 361 if (accentColor.trim().length === 0) {
340 values.accentColor = DEFAULT_ACCENT_COLOR; 362 values.accentColor = DEFAULT_ACCENT_COLOR;
341 } 363 }
@@ -343,6 +365,15 @@ class EditSettingsForm extends Component<IProps, IState> {
343 if (progressbarAccentColor.trim().length === 0) { 365 if (progressbarAccentColor.trim().length === 0) {
344 values.progressbarAccentColor = DEFAULT_ACCENT_COLOR; 366 values.progressbarAccentColor = DEFAULT_ACCENT_COLOR;
345 } 367 }
368
369 // set twoFactorAutoCatcherMatcher to the default value, if its get enabled the input is prefilled
370 if (
371 !isTwoFactorAutoCatcherEnabled &&
372 values.twoFactorAutoCatcherMatcher.length === 0
373 ) {
374 values.twoFactorAutoCatcherMatcher =
375 DEFAULT_APP_SETTINGS.twoFactorAutoCatcherMatcher;
376 }
346 this.props.onSubmit(values); 377 this.props.onSubmit(values);
347 }, 378 },
348 onError: noop, 379 onError: noop,
@@ -367,6 +398,7 @@ class EditSettingsForm extends Component<IProps, IState> {
367 onClearAllCache, 398 onClearAllCache,
368 getCacheSize, 399 getCacheSize,
369 automaticUpdates, 400 automaticUpdates,
401 isTwoFactorAutoCatcherEnabled,
370 isDarkmodeEnabled, 402 isDarkmodeEnabled,
371 isSplitModeEnabled, 403 isSplitModeEnabled,
372 openProcessManager, 404 openProcessManager,
@@ -383,8 +415,12 @@ class EditSettingsForm extends Component<IProps, IState> {
383 updateButtonLabelMessage = messages.updateStatusAvailable; 415 updateButtonLabelMessage = messages.updateStatusAvailable;
384 } 416 }
385 417
386 const { lockingFeatureEnabled, scheduledDNDEnabled, reloadAfterResume } = 418 const {
387 window['ferdium'].stores.settings.all.app; 419 isLockingFeatureEnabled,
420 scheduledDNDEnabled,
421 reloadAfterResume,
422 useSelfSignedCertificates,
423 } = window['ferdium'].stores.settings.all.app;
388 424
389 let cacheSize; 425 let cacheSize;
390 let notCleared; 426 let notCleared;
@@ -407,6 +443,7 @@ class EditSettingsForm extends Component<IProps, IState> {
407 443
408 const profileFolder = userDataPath(); 444 const profileFolder = userDataPath();
409 const recipeFolder = userDataRecipesPath(); 445 const recipeFolder = userDataRecipesPath();
446 const certsFolder = userDataCertsPath();
410 447
411 return ( 448 return (
412 <div className="settings__main"> 449 <div className="settings__main">
@@ -813,6 +850,15 @@ class EditSettingsForm extends Component<IProps, IState> {
813 <Toggle {...form.$('notifyTaskBarOnMessage').bind()} /> 850 <Toggle {...form.$('notifyTaskBarOnMessage').bind()} />
814 )} 851 )}
815 852
853 <Toggle {...form.$('isTwoFactorAutoCatcherEnabled').bind()} />
854
855 {isTwoFactorAutoCatcherEnabled && (
856 <Input
857 onChange={e => this.submit(e)}
858 {...form.$('twoFactorAutoCatcherMatcher').bind()}
859 />
860 )}
861
816 <Hr /> 862 <Hr />
817 863
818 <Select field={form.$('webRTCIPHandlingPolicy')} /> 864 <Select field={form.$('webRTCIPHandlingPolicy')} />
@@ -836,8 +882,8 @@ class EditSettingsForm extends Component<IProps, IState> {
836 882
837 <Hr /> 883 <Hr />
838 884
839 <Toggle {...form.$('lockingFeatureEnabled').bind()} /> 885 <Toggle {...form.$('isLockingFeatureEnabled').bind()} />
840 {lockingFeatureEnabled && ( 886 {isLockingFeatureEnabled && (
841 <> 887 <>
842 {isMac && systemPreferences.canPromptTouchID() && ( 888 {isMac && systemPreferences.canPromptTouchID() && (
843 <Toggle {...form.$('useTouchIdToUnlock').bind()} /> 889 <Toggle {...form.$('useTouchIdToUnlock').bind()} />
@@ -943,6 +989,43 @@ class EditSettingsForm extends Component<IProps, IState> {
943 {intl.formatMessage(messages.appRestartRequired)} 989 {intl.formatMessage(messages.appRestartRequired)}
944 </p> 990 </p>
945 991
992 <Toggle {...form.$('useSelfSignedCertificates').bind()} />
993
994 {useSelfSignedCertificates && (
995 <div className="settings__settings-group">
996 <p
997 style={{
998 padding: '0rem 0rem 1rem 0rem',
999 textAlign: 'justify',
1000 fontSize: '1.1rem',
1001 }}
1002 >
1003 {intl.formatMessage(messages.infoOpenCertificatesFolder)}
1004 </p>
1005 <div className="settings__open-settings-cache-container">
1006 <Button
1007 buttonType="secondary"
1008 label={intl.formatMessage(
1009 messages.buttonOpenFerdiumCertsFolder,
1010 )}
1011 className="settings__open-settings-file-button"
1012 onClick={() => openPath(certsFolder)}
1013 />
1014 </div>
1015 </div>
1016 )}
1017
1018 <p
1019 className="settings__help"
1020 style={{
1021 padding: useSelfSignedCertificates
1022 ? '1rem 0rem 0rem 0rem'
1023 : undefined,
1024 }}
1025 >
1026 {intl.formatMessage(messages.warningSelfSignedCertificates)}
1027 </p>
1028
946 <Hr /> 1029 <Hr />
947 1030
948 <Input 1031 <Input
@@ -1117,7 +1200,10 @@ class EditSettingsForm extends Component<IProps, IState> {
1117 ) : ( 1200 ) : (
1118 <p> 1201 <p>
1119 <Icon icon={mdiPowerPlug} /> 1202 <Icon icon={mdiPowerPlug} />
1120 &nbsp;Your services are up-to-date. 1203 &nbsp;
1204 {intl.formatMessage(
1205 messages.servicesUpdateStatusUpToDate,
1206 )}
1121 </p> 1207 </p>
1122 )} 1208 )}
1123 </> 1209 </>
diff --git a/src/components/settings/team/TeamDashboard.tsx b/src/components/settings/team/TeamDashboard.tsx
index 406656160..96613373e 100644
--- a/src/components/settings/team/TeamDashboard.tsx
+++ b/src/components/settings/team/TeamDashboard.tsx
@@ -10,7 +10,7 @@ import Loader from '../../ui/loader';
10import Button from '../../ui/button'; 10import Button from '../../ui/button';
11import Infobox from '../../ui/Infobox'; 11import Infobox from '../../ui/Infobox';
12import { H1 } from '../../ui/headline'; 12import { H1 } from '../../ui/headline';
13import { LIVE_FRANZ_API } from '../../../config'; 13import { DEFAULT_LOADER_COLOR, LIVE_FRANZ_API } from '../../../config';
14 14
15const messages = defineMessages({ 15const messages = defineMessages({
16 headline: { 16 headline: {
@@ -128,7 +128,7 @@ class TeamDashboard extends Component<IProps> {
128 </span> 128 </span>
129 </div> 129 </div>
130 <div className="settings__body"> 130 <div className="settings__body">
131 {isLoading && <Loader color="#FFFFFF" />} 131 {isLoading && <Loader color={DEFAULT_LOADER_COLOR} />}
132 132
133 {!isLoading && userInfoRequestFailed && ( 133 {!isLoading && userInfoRequestFailed && (
134 <Infobox 134 <Infobox
diff --git a/src/components/ui/InfoBar.tsx b/src/components/ui/InfoBar.tsx
index ae37546df..f3f1adbe7 100644
--- a/src/components/ui/InfoBar.tsx
+++ b/src/components/ui/InfoBar.tsx
@@ -8,6 +8,7 @@ import { noop } from 'lodash';
8import Loader from './loader/index'; 8import Loader from './loader/index';
9import Appear from './effects/Appear'; 9import Appear from './effects/Appear';
10import Icon from './icon'; 10import Icon from './icon';
11import { DEFAULT_LOADER_COLOR } from '../../config';
11 12
12const messages = defineMessages({ 13const messages = defineMessages({
13 hide: { 14 hide: {
@@ -71,7 +72,11 @@ class InfoBar extends Component<IProps> {
71 className="contentWrapper" 72 className="contentWrapper"
72 style={{ display: 'flex', gap: '8px' }} 73 style={{ display: 'flex', gap: '8px' }}
73 > 74 >
74 <Loader size={18} loaded={!ctaLoading} color="#FFFFFF" /> 75 <Loader
76 size={18}
77 loaded={!ctaLoading}
78 color={DEFAULT_LOADER_COLOR}
79 />
75 {ctaLabel} 80 {ctaLabel}
76 </div> 81 </div>
77 </button> 82 </button>
diff --git a/src/components/ui/Infobox.tsx b/src/components/ui/Infobox.tsx
index 742717ed7..14e1a581c 100644
--- a/src/components/ui/Infobox.tsx
+++ b/src/components/ui/Infobox.tsx
@@ -6,6 +6,7 @@ import { noop } from 'lodash';
6import { observer } from 'mobx-react'; 6import { observer } from 'mobx-react';
7import Loader from './loader/index'; 7import Loader from './loader/index';
8import Icon from './icon'; 8import Icon from './icon';
9import { DEFAULT_LOADER_COLOR } from '../../config';
9 10
10const icons = { 11const icons = {
11 'checkbox-marked-circle-outline': mdiCheckboxMarkedCircleOutline, 12 'checkbox-marked-circle-outline': mdiCheckboxMarkedCircleOutline,
@@ -84,7 +85,11 @@ class Infobox extends Component<IProps, IState> {
84 className="contentWrapper" 85 className="contentWrapper"
85 style={{ display: 'flex', gap: '8px' }} 86 style={{ display: 'flex', gap: '8px' }}
86 > 87 >
87 <Loader size={18} loaded={!ctaLoading} color="#FFFFFF" /> 88 <Loader
89 size={18}
90 loaded={!ctaLoading}
91 color={DEFAULT_LOADER_COLOR}
92 />
88 {ctaLabel} 93 {ctaLabel}
89 </div> 94 </div>
90 </button> 95 </button>
diff --git a/src/components/ui/button/index.tsx b/src/components/ui/button/index.tsx
index a2194e34d..3247072a9 100644
--- a/src/components/ui/button/index.tsx
+++ b/src/components/ui/button/index.tsx
@@ -8,6 +8,7 @@ import withStyles, { WithStylesProps } from 'react-jss';
8import Loader from '../loader/index'; 8import Loader from '../loader/index';
9import { Theme } from '../../../themes'; 9import { Theme } from '../../../themes';
10import { IFormField } from '../typings/generic'; 10import { IFormField } from '../typings/generic';
11import { DEFAULT_LOADER_COLOR } from '../../../config';
11 12
12type ButtonType = 13type ButtonType =
13 | 'primary' 14 | 'primary'
@@ -194,7 +195,7 @@ class ButtonComponent extends Component<IProps, IState> {
194 <> 195 <>
195 {showLoader && ( 196 {showLoader && (
196 <div className={classes.loaderContainer}> 197 <div className={classes.loaderContainer}>
197 <Loader size={18} color="#FFFFFF" /> 198 <Loader size={18} color={DEFAULT_LOADER_COLOR} />
198 </div> 199 </div>
199 )} 200 )}
200 <div className={classes.label}> 201 <div className={classes.label}>
diff --git a/src/components/ui/loader/index.tsx b/src/components/ui/loader/index.tsx
index 2cee00d96..c0ae15028 100644
--- a/src/components/ui/loader/index.tsx
+++ b/src/components/ui/loader/index.tsx
@@ -4,6 +4,7 @@ import injectStyle, { WithStylesProps } from 'react-jss';
4import { Oval } from 'react-loader-spinner'; 4import { Oval } from 'react-loader-spinner';
5import { inject } from 'mobx-react'; 5import { inject } from 'mobx-react';
6import { FerdiumStores } from '../../../@types/stores.types'; 6import { FerdiumStores } from '../../../@types/stores.types';
7import { DEFAULT_LOADER_COLOR } from '../../../config';
7 8
8const styles = () => ({ 9const styles = () => ({
9 container: { 10 container: {
@@ -29,11 +30,11 @@ class LoaderComponent extends Component<IProps> {
29 const { 30 const {
30 classes, 31 classes,
31 className, 32 className,
32 size = 36, 33 size = 100,
33 color = this.props.stores?.settings.app.accentColor, 34 color = this.props.stores?.settings.app.accentColor,
34 loaded = false, 35 loaded = false,
35 } = this.props; 36 } = this.props;
36 const loaderColor = color || '#FFFFFF'; 37 const loaderColor = color ?? DEFAULT_LOADER_COLOR;
37 38
38 return ( 39 return (
39 <div 40 <div
diff --git a/src/config.ts b/src/config.ts
index d8b028104..5b9a5eaba 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -27,12 +27,8 @@ export const LIVE_API_FERDIUM_WEBSITE = 'https://ferdium.org';
27export const LIVE_API_FERDIUM_LIBRETRANSLATE = 27export const LIVE_API_FERDIUM_LIBRETRANSLATE =
28 'https://translator.ferdium.org/translate'; 28 'https://translator.ferdium.org/translate';
29 29
30export const STATS_API = 'https://stats.franzinfra.com';
31
32export const LOCAL_TODOS_FRONTEND_URL = 'http://localhost:4000'; 30export const LOCAL_TODOS_FRONTEND_URL = 'http://localhost:4000';
33export const PRODUCTION_TODOS_FRONTEND_URL = 'https://app.franztodos.com'; 31export const PRODUCTION_TODOS_FRONTEND_URL = 'https://app.franztodos.com';
34export const DEVELOPMENT_TODOS_FRONTEND_URL =
35 'https://development--franz-todos.netlify.com';
36 32
37export const CDN_URL = 'https://cdn.franzinfra.com'; 33export const CDN_URL = 'https://cdn.franzinfra.com';
38 34
@@ -282,11 +278,6 @@ export const TODO_APPS = {
282 [CUSTOM_TODO_SERVICE]: 'Other service', 278 [CUSTOM_TODO_SERVICE]: 'Other service',
283}; 279};
284 280
285export const DEFAULT_TODO_SERVICE = TODO_TODOIST_URL;
286export const DEFAULT_TODO_RECIPE_ID =
287 TODO_SERVICE_RECIPE_IDS[DEFAULT_TODO_SERVICE];
288export const DEFAULT_TODO_SERVICE_NAME = TODO_APPS[DEFAULT_TODO_SERVICE];
289
290export const SIDEBAR_WIDTH = { 281export const SIDEBAR_WIDTH = {
291 35: 'Extremely slim sidebar', 282 35: 'Extremely slim sidebar',
292 45: 'Very slim sidebar', 283 45: 'Very slim sidebar',
@@ -329,7 +320,8 @@ export const GITHUB_FRANZ_URL = 'https://github.com/meetfranz';
329export const GITHUB_FERDIUM_URL = 'https://github.com/ferdium'; 320export const GITHUB_FERDIUM_URL = 'https://github.com/ferdium';
330export const FERDIUM_SERVICE_REQUEST = `${GITHUB_FERDIUM_URL}/ferdium-app/issues`; 321export const FERDIUM_SERVICE_REQUEST = `${GITHUB_FERDIUM_URL}/ferdium-app/issues`;
331export const FERDIUM_TRANSLATION = 'https://crowdin.com/project/ferdium-app'; 322export const FERDIUM_TRANSLATION = 'https://crowdin.com/project/ferdium-app';
332export const FRANZ_DEV_DOCS = 'http://bit.ly/franz-dev-hub'; 323export const FERDIUM_DEV_DOCS =
324 'https://github.com/ferdium/ferdium-recipes/blob/main/docs/integration.md';
333 325
334export const FILE_SYSTEM_SETTINGS_TYPES = ['app', 'proxy']; 326export const FILE_SYSTEM_SETTINGS_TYPES = ['app', 'proxy'];
335 327
@@ -351,6 +343,8 @@ export const DEFAULT_SERVICE_ORDER = 99; // something high enough that it gets a
351export const SPLIT_COLUMNS_MIN = 1; 343export const SPLIT_COLUMNS_MIN = 1;
352export const SPLIT_COLUMNS_MAX = 5; 344export const SPLIT_COLUMNS_MAX = 5;
353 345
346export const DEFAULT_LOADER_COLOR = '#FFFFFF';
347
354export const DEFAULT_APP_SETTINGS = { 348export const DEFAULT_APP_SETTINGS = {
355 autoLaunchOnStart: false, 349 autoLaunchOnStart: false,
356 autoLaunchInBackground: false, 350 autoLaunchInBackground: false,
@@ -366,6 +360,8 @@ export const DEFAULT_APP_SETTINGS = {
366 clipboardNotifications: true, 360 clipboardNotifications: true,
367 notifyTaskBarOnMessage: false, 361 notifyTaskBarOnMessage: false,
368 showDisabledServices: true, 362 showDisabledServices: true,
363 isTwoFactorAutoCatcherEnabled: false,
364 twoFactorAutoCatcherMatcher: 'token, code, sms, verify',
369 showServiceName: false, 365 showServiceName: false,
370 showMessageBadgeWhenMuted: true, 366 showMessageBadgeWhenMuted: true,
371 showDragArea: false, 367 showDragArea: false,
@@ -384,9 +380,9 @@ export const DEFAULT_APP_SETTINGS = {
384 380
385 // Ferdium specific options 381 // Ferdium specific options
386 server: LIVE_FERDIUM_API, 382 server: LIVE_FERDIUM_API,
387 predefinedTodoServer: DEFAULT_TODO_SERVICE, 383 predefinedTodoServer: TODO_TODOIST_URL,
388 autohideMenuBar: false, 384 autohideMenuBar: false,
389 lockingFeatureEnabled: false, 385 isLockingFeatureEnabled: false,
390 locked: false, 386 locked: false,
391 lockedPassword: '', 387 lockedPassword: '',
392 useTouchIdToUnlock: true, 388 useTouchIdToUnlock: true,
@@ -432,6 +428,7 @@ export const DEFAULT_APP_SETTINGS = {
432 customTodoServer: '', 428 customTodoServer: '',
433 locale: 'en-US', 429 locale: 'en-US',
434 keepAllWorkspacesLoaded: false, 430 keepAllWorkspacesLoaded: false,
431 useSelfSignedCertificates: false,
435}; 432};
436 433
437export const DEFAULT_SERVICE_SETTINGS = { 434export const DEFAULT_SERVICE_SETTINGS = {
@@ -457,7 +454,7 @@ export const DEFAULT_SERVICE_SETTINGS = {
457 disablewebsecurity: false, 454 disablewebsecurity: false,
458 spellcheckerLanguage: false, 455 spellcheckerLanguage: false,
459 onlyShowFavoritesInUnreadCount: false, 456 onlyShowFavoritesInUnreadCount: false,
460 proxyFeatureEnabled: false, 457 isProxyFeatureEnabled: false,
461 proxyHost: '', 458 proxyHost: '',
462 proxyPort: 0, 459 proxyPort: 0,
463 proxyUser: '', 460 proxyUser: '',
diff --git a/src/containers/settings/EditServiceScreen.tsx b/src/containers/settings/EditServiceScreen.tsx
index 946ec09d3..3c65877c8 100644
--- a/src/containers/settings/EditServiceScreen.tsx
+++ b/src/containers/settings/EditServiceScreen.tsx
@@ -409,9 +409,9 @@ class EditServiceScreen extends Component<IProps> {
409 label: intl.formatMessage(messages.enableProxy), 409 label: intl.formatMessage(messages.enableProxy),
410 value: ifUndefined<boolean>( 410 value: ifUndefined<boolean>(
411 serviceProxyConfig.isEnabled, 411 serviceProxyConfig.isEnabled,
412 DEFAULT_SERVICE_SETTINGS.proxyFeatureEnabled, 412 DEFAULT_SERVICE_SETTINGS.isProxyFeatureEnabled,
413 ), 413 ),
414 default: DEFAULT_SERVICE_SETTINGS.proxyFeatureEnabled, 414 default: DEFAULT_SERVICE_SETTINGS.isProxyFeatureEnabled,
415 type: 'checkbox', 415 type: 'checkbox',
416 }, 416 },
417 host: { 417 host: {
diff --git a/src/containers/settings/EditSettingsScreen.tsx b/src/containers/settings/EditSettingsScreen.tsx
index 8190bef3e..5d1b09296 100644
--- a/src/containers/settings/EditSettingsScreen.tsx
+++ b/src/containers/settings/EditSettingsScreen.tsx
@@ -99,6 +99,16 @@ const messages = defineMessages({
99 id: 'settings.app.form.notifyTaskBarOnMessage', 99 id: 'settings.app.form.notifyTaskBarOnMessage',
100 defaultMessage: 'Notify TaskBar/Dock on new message', 100 defaultMessage: 'Notify TaskBar/Dock on new message',
101 }, 101 },
102 isTwoFactorAutoCatcherEnabled: {
103 id: 'settings.app.form.isTwoFactorAutoCatcherEnabled',
104 defaultMessage:
105 'Auto-catch two-factor codes from notifications (Ex.: android messages) and copy to clipboard',
106 },
107 twoFactorAutoCatcherMatcher: {
108 id: 'settings.app.form.twoFactorAutoCatcherMatcher',
109 defaultMessage:
110 'Comma-separated and case-insensitive words/expressions to catch two-factor codes from. Ex.: token, code, sms, verify',
111 },
102 navigationBarBehaviour: { 112 navigationBarBehaviour: {
103 id: 'settings.app.form.navigationBarBehaviour', 113 id: 'settings.app.form.navigationBarBehaviour',
104 defaultMessage: 'Navigation bar behaviour', 114 defaultMessage: 'Navigation bar behaviour',
@@ -295,6 +305,10 @@ const messages = defineMessages({
295 id: 'settings.app.form.enableTranslator', 305 id: 'settings.app.form.enableTranslator',
296 defaultMessage: 'Enable Translator', 306 defaultMessage: 'Enable Translator',
297 }, 307 },
308 useSelfSignedCertificates: {
309 id: 'settings.app.form.useSelfSignedCertificates',
310 defaultMessage: 'Enable self-signed certificates',
311 },
298 enableGPUAcceleration: { 312 enableGPUAcceleration: {
299 id: 'settings.app.form.enableGPUAcceleration', 313 id: 'settings.app.form.enableGPUAcceleration',
300 defaultMessage: 'Enable GPU Acceleration', 314 defaultMessage: 'Enable GPU Acceleration',
@@ -379,6 +393,10 @@ class EditSettingsScreen extends Component<
379 privateNotifications: Boolean(settingsData.privateNotifications), 393 privateNotifications: Boolean(settingsData.privateNotifications),
380 clipboardNotifications: Boolean(settingsData.clipboardNotifications), 394 clipboardNotifications: Boolean(settingsData.clipboardNotifications),
381 notifyTaskBarOnMessage: Boolean(settingsData.notifyTaskBarOnMessage), 395 notifyTaskBarOnMessage: Boolean(settingsData.notifyTaskBarOnMessage),
396 isTwoFactorAutoCatcherEnabled: Boolean(
397 settingsData.isTwoFactorAutoCatcherEnabled,
398 ),
399 twoFactorAutoCatcherMatcher: settingsData.twoFactorAutoCatcherMatcher,
382 navigationBarBehaviour: settingsData.navigationBarBehaviour, 400 navigationBarBehaviour: settingsData.navigationBarBehaviour,
383 webRTCIPHandlingPolicy: settingsData.webRTCIPHandlingPolicy, 401 webRTCIPHandlingPolicy: settingsData.webRTCIPHandlingPolicy,
384 searchEngine: settingsData.searchEngine, 402 searchEngine: settingsData.searchEngine,
@@ -394,7 +412,7 @@ class EditSettingsScreen extends Component<
394 wakeUpHibernationSplay: Boolean(settingsData.wakeUpHibernationSplay), 412 wakeUpHibernationSplay: Boolean(settingsData.wakeUpHibernationSplay),
395 predefinedTodoServer: settingsData.predefinedTodoServer, 413 predefinedTodoServer: settingsData.predefinedTodoServer,
396 customTodoServer: settingsData.customTodoServer, 414 customTodoServer: settingsData.customTodoServer,
397 lockingFeatureEnabled: Boolean(settingsData.lockingFeatureEnabled), 415 isLockingFeatureEnabled: Boolean(settingsData.isLockingFeatureEnabled),
398 lockedPassword: useOriginalPassword 416 lockedPassword: useOriginalPassword
399 ? this.props.stores.settings.all.app.lockedPassword 417 ? this.props.stores.settings.all.app.lockedPassword
400 : hash(String(settingsData.lockedPassword)), 418 : hash(String(settingsData.lockedPassword)),
@@ -439,6 +457,9 @@ class EditSettingsScreen extends Component<
439 showDragArea: Boolean(settingsData.showDragArea), 457 showDragArea: Boolean(settingsData.showDragArea),
440 enableSpellchecking: Boolean(settingsData.enableSpellchecking), 458 enableSpellchecking: Boolean(settingsData.enableSpellchecking),
441 enableTranslator: Boolean(settingsData.enableTranslator), 459 enableTranslator: Boolean(settingsData.enableTranslator),
460 useSelfSignedCertificates: Boolean(
461 settingsData.useSelfSignedCertificates,
462 ),
442 spellcheckerLanguage: settingsData.spellcheckerLanguage, 463 spellcheckerLanguage: settingsData.spellcheckerLanguage,
443 userAgentPref: settingsData.userAgentPref, 464 userAgentPref: settingsData.userAgentPref,
444 beta: Boolean(settingsData.beta), // we need this info in the main process as well 465 beta: Boolean(settingsData.beta), // we need this info in the main process as well
@@ -673,6 +694,23 @@ class EditSettingsScreen extends Component<
673 default: DEFAULT_APP_SETTINGS.notifyTaskBarOnMessage, 694 default: DEFAULT_APP_SETTINGS.notifyTaskBarOnMessage,
674 type: 'checkbox', 695 type: 'checkbox',
675 }, 696 },
697 isTwoFactorAutoCatcherEnabled: {
698 label: intl.formatMessage(messages.isTwoFactorAutoCatcherEnabled),
699 value: ifUndefined<boolean>(
700 settings.all.app.isTwoFactorAutoCatcherEnabled,
701 DEFAULT_APP_SETTINGS.isTwoFactorAutoCatcherEnabled,
702 ),
703 default: DEFAULT_APP_SETTINGS.isTwoFactorAutoCatcherEnabled,
704 type: 'checkbox',
705 },
706 twoFactorAutoCatcherMatcher: {
707 label: intl.formatMessage(messages.twoFactorAutoCatcherMatcher),
708 value: ifUndefined<string>(
709 settings.all.app.twoFactorAutoCatcherMatcher,
710 DEFAULT_APP_SETTINGS.twoFactorAutoCatcherMatcher,
711 ),
712 default: DEFAULT_APP_SETTINGS.twoFactorAutoCatcherMatcher,
713 },
676 navigationBarBehaviour: { 714 navigationBarBehaviour: {
677 label: intl.formatMessage(messages.navigationBarBehaviour), 715 label: intl.formatMessage(messages.navigationBarBehaviour),
678 value: ifUndefined<string>( 716 value: ifUndefined<string>(
@@ -789,13 +827,13 @@ class EditSettingsScreen extends Component<
789 ), 827 ),
790 default: DEFAULT_APP_SETTINGS.customTodoServer, 828 default: DEFAULT_APP_SETTINGS.customTodoServer,
791 }, 829 },
792 lockingFeatureEnabled: { 830 isLockingFeatureEnabled: {
793 label: intl.formatMessage(messages.enableLock), 831 label: intl.formatMessage(messages.enableLock),
794 value: ifUndefined<boolean>( 832 value: ifUndefined<boolean>(
795 settings.all.app.lockingFeatureEnabled, 833 settings.all.app.isLockingFeatureEnabled,
796 DEFAULT_APP_SETTINGS.lockingFeatureEnabled, 834 DEFAULT_APP_SETTINGS.isLockingFeatureEnabled,
797 ), 835 ),
798 default: DEFAULT_APP_SETTINGS.lockingFeatureEnabled, 836 default: DEFAULT_APP_SETTINGS.isLockingFeatureEnabled,
799 type: 'checkbox', 837 type: 'checkbox',
800 }, 838 },
801 lockedPassword: { 839 lockedPassword: {
@@ -906,6 +944,15 @@ class EditSettingsScreen extends Component<
906 default: DEFAULT_APP_SETTINGS.enableTranslator, 944 default: DEFAULT_APP_SETTINGS.enableTranslator,
907 type: 'checkbox', 945 type: 'checkbox',
908 }, 946 },
947 useSelfSignedCertificates: {
948 label: intl.formatMessage(messages.useSelfSignedCertificates),
949 value: ifUndefined<boolean>(
950 settings.all.app.useSelfSignedCertificates,
951 DEFAULT_APP_SETTINGS.useSelfSignedCertificates,
952 ),
953 default: DEFAULT_APP_SETTINGS.useSelfSignedCertificates,
954 type: 'checkbox',
955 },
909 spellcheckerLanguage: { 956 spellcheckerLanguage: {
910 label: intl.formatMessage(globalMessages.spellcheckerLanguage), 957 label: intl.formatMessage(globalMessages.spellcheckerLanguage),
911 value: ifUndefined<string>( 958 value: ifUndefined<string>(
@@ -1207,7 +1254,7 @@ class EditSettingsScreen extends Component<
1207 updateVersion, 1254 updateVersion,
1208 updateStatusTypes, 1255 updateStatusTypes,
1209 isClearingAllCache, 1256 isClearingAllCache,
1210 lockingFeatureEnabled, 1257 isLockingFeatureEnabled,
1211 } = app; 1258 } = app;
1212 const { checkForUpdates, installUpdate, clearAllCache } = 1259 const { checkForUpdates, installUpdate, clearAllCache } =
1213 this.props.actions.app; 1260 this.props.actions.app;
@@ -1231,7 +1278,7 @@ class EditSettingsScreen extends Component<
1231 getCacheSize={() => app.cacheSize} 1278 getCacheSize={() => app.cacheSize}
1232 isClearingAllCache={isClearingAllCache} 1279 isClearingAllCache={isClearingAllCache}
1233 onClearAllCache={clearAllCache} 1280 onClearAllCache={clearAllCache}
1234 lockingFeatureEnabled={lockingFeatureEnabled} 1281 isLockingFeatureEnabled={isLockingFeatureEnabled}
1235 automaticUpdates={this.props.stores.settings.app.automaticUpdates} 1282 automaticUpdates={this.props.stores.settings.app.automaticUpdates}
1236 isDarkmodeEnabled={this.props.stores.settings.app.darkMode} 1283 isDarkmodeEnabled={this.props.stores.settings.app.darkMode}
1237 isAdaptableDarkModeEnabled={ 1284 isAdaptableDarkModeEnabled={
@@ -1241,6 +1288,12 @@ class EditSettingsScreen extends Component<
1241 this.props.stores.settings.app.useGrayscaleServices 1288 this.props.stores.settings.app.useGrayscaleServices
1242 } 1289 }
1243 isSplitModeEnabled={this.props.stores.settings.app.splitMode} 1290 isSplitModeEnabled={this.props.stores.settings.app.splitMode}
1291 isTwoFactorAutoCatcherEnabled={
1292 this.props.stores.settings.app.isTwoFactorAutoCatcherEnabled
1293 }
1294 twoFactorAutoCatcherMatcher={
1295 this.props.stores.settings.app.twoFactorAutoCatcherMatcher
1296 }
1244 isTodosActivated={this.props.stores.todos.isFeatureEnabledByUser} 1297 isTodosActivated={this.props.stores.todos.isFeatureEnabledByUser}
1245 openProcessManager={() => this.openProcessManager()} 1298 openProcessManager={() => this.openProcessManager()}
1246 isOnline={app.isOnline} 1299 isOnline={app.isOnline}
diff --git a/src/containers/settings/RecipesScreen.tsx b/src/containers/settings/RecipesScreen.tsx
index 1fb2673a8..a46510d54 100644
--- a/src/containers/settings/RecipesScreen.tsx
+++ b/src/containers/settings/RecipesScreen.tsx
@@ -8,7 +8,7 @@ import Recipe from '../../models/Recipe';
8import { StoresProps } from '../../@types/ferdium-components.types'; 8import { StoresProps } from '../../@types/ferdium-components.types';
9import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard'; 9import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard';
10import ErrorBoundary from '../../components/util/ErrorBoundary'; 10import ErrorBoundary from '../../components/util/ErrorBoundary';
11import { CUSTOM_WEBSITE_RECIPE_ID, FRANZ_DEV_DOCS } from '../../config'; 11import { CUSTOM_WEBSITE_RECIPE_ID, FERDIUM_DEV_DOCS } from '../../config';
12import { userDataRecipesPath } from '../../environment-remote'; 12import { userDataRecipesPath } from '../../environment-remote';
13import { asarRecipesPath } from '../../helpers/asar-helpers'; 13import { asarRecipesPath } from '../../helpers/asar-helpers';
14import { communityRecipesStore } from '../../features/communityRecipes'; 14import { communityRecipesStore } from '../../features/communityRecipes';
@@ -176,7 +176,7 @@ class RecipesScreen extends Component<IProps, IState> {
176 recipeDirectory={recipeDirectory} 176 recipeDirectory={recipeDirectory}
177 openRecipeDirectory={() => openPath(recipeDirectory)} 177 openRecipeDirectory={() => openPath(recipeDirectory)}
178 openDevDocs={() => 178 openDevDocs={() =>
179 appActions.openExternalUrl({ url: FRANZ_DEV_DOCS }) 179 appActions.openExternalUrl({ url: FERDIUM_DEV_DOCS })
180 } 180 }
181 /> 181 />
182 </ErrorBoundary> 182 </ErrorBoundary>
diff --git a/src/environment-remote.ts b/src/environment-remote.ts
index da1477346..346a75e97 100644
--- a/src/environment-remote.ts
+++ b/src/environment-remote.ts
@@ -10,8 +10,6 @@ import {
10 LIVE_WS_API, 10 LIVE_WS_API,
11 LOCAL_WS_API, 11 LOCAL_WS_API,
12 DEV_WS_API, 12 DEV_WS_API,
13 LOCAL_TODOS_FRONTEND_URL,
14 PRODUCTION_TODOS_FRONTEND_URL,
15} from './config'; 13} from './config';
16import { isWindows } from './environment'; 14import { isWindows } from './environment';
17 15
@@ -50,34 +48,33 @@ export function userDataRecipesPath(...segments: string[]): string {
50 return userDataPath('recipes', ...[segments].flat()); 48 return userDataPath('recipes', ...[segments].flat());
51} 49}
52 50
51export function userDataCertsPath(...segments: string[]): string {
52 return userDataPath('certs', ...[segments].flat());
53}
54
53const useLocalAPI = process.env.USE_LOCAL_API; 55const useLocalAPI = process.env.USE_LOCAL_API;
54export const useLiveAPI = process.env.USE_LIVE_API; 56export const useLiveAPI = process.env.USE_LIVE_API;
55 57
56let api: string; 58let api: string;
57let wsApi: string; 59let wsApi: string;
58let web: string; 60let web: string;
59let todos: string;
60if (!isDevMode || (isDevMode && useLiveAPI)) { 61if (!isDevMode || (isDevMode && useLiveAPI)) {
61 api = LIVE_FERDIUM_API; 62 api = LIVE_FERDIUM_API;
62 wsApi = LIVE_WS_API; 63 wsApi = LIVE_WS_API;
63 web = LIVE_API_FERDIUM_WEBSITE; 64 web = LIVE_API_FERDIUM_WEBSITE;
64 todos = PRODUCTION_TODOS_FRONTEND_URL;
65} else if (isDevMode && useLocalAPI) { 65} else if (isDevMode && useLocalAPI) {
66 api = LOCAL_API; 66 api = LOCAL_API;
67 wsApi = LOCAL_WS_API; 67 wsApi = LOCAL_WS_API;
68 web = LOCAL_API_WEBSITE; 68 web = LOCAL_API_WEBSITE;
69 todos = LOCAL_TODOS_FRONTEND_URL;
70} else { 69} else {
71 api = DEV_FRANZ_API; 70 api = DEV_FRANZ_API;
72 wsApi = DEV_WS_API; 71 wsApi = DEV_WS_API;
73 web = DEV_API_FRANZ_WEBSITE; 72 web = DEV_API_FRANZ_WEBSITE;
74 todos = PRODUCTION_TODOS_FRONTEND_URL;
75} 73}
76 74
77export const API: string = api; 75export const API: string = api;
78export const API_VERSION: string = 'v1'; 76export const API_VERSION: string = 'v1';
79export const WS_API: string = wsApi; 77export const WS_API: string = wsApi;
80export const WEBSITE: string = web; 78export const WEBSITE: string = web;
81export const TODOS_FRONTEND: string = todos;
82// For deeplink protocol: 'ferdium' or 'ferdium-dev' if we want '{DEEPLINK_PROTOCOL_CLIENT}://' 79// For deeplink protocol: 'ferdium' or 'ferdium-dev' if we want '{DEEPLINK_PROTOCOL_CLIENT}://'
83export const protocolClient = isDevMode ? 'ferdium-dev' : 'ferdium'; 80export const protocolClient = isDevMode ? 'ferdium-dev' : 'ferdium';
diff --git a/src/features/workspaces/components/WorkspaceSwitchingIndicator.tsx b/src/features/workspaces/components/WorkspaceSwitchingIndicator.tsx
index 0fce811e5..19dd9037d 100644
--- a/src/features/workspaces/components/WorkspaceSwitchingIndicator.tsx
+++ b/src/features/workspaces/components/WorkspaceSwitchingIndicator.tsx
@@ -5,6 +5,7 @@ import classnames from 'classnames';
5import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 5import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
6import Loader from '../../../components/ui/loader'; 6import Loader from '../../../components/ui/loader';
7import { workspaceStore } from '../index'; 7import { workspaceStore } from '../index';
8import { DEFAULT_LOADER_COLOR } from '../../../config';
8 9
9const messages = defineMessages({ 10const messages = defineMessages({
10 switchingTo: { 11 switchingTo: {
@@ -70,7 +71,7 @@ class WorkspaceSwitchingIndicator extends Component<IProps> {
70 return ( 71 return (
71 <div className={classnames([classes.wrapper])}> 72 <div className={classnames([classes.wrapper])}>
72 <div className={classes.component}> 73 <div className={classes.component}>
73 <Loader className={classes.spinner} color="#FFFFFF" /> 74 <Loader className={classes.spinner} color={DEFAULT_LOADER_COLOR} />
74 <p className={classes.message}> 75 <p className={classes.message}>
75 {`${intl.formatMessage(messages.switchingTo)} ${nextWorkspaceName}`} 76 {`${intl.formatMessage(messages.switchingTo)} ${nextWorkspaceName}`}
76 </p> 77 </p>
diff --git a/src/features/workspaces/store.ts b/src/features/workspaces/store.ts
index 34a4126c8..f97009186 100644
--- a/src/features/workspaces/store.ts
+++ b/src/features/workspaces/store.ts
@@ -51,11 +51,6 @@ export default class WorkspacesStore extends FeatureStore {
51 return getUserWorkspacesRequest.result || []; 51 return getUserWorkspacesRequest.result || [];
52 } 52 }
53 53
54 @computed get isLoadingWorkspaces() {
55 if (!this.isFeatureActive) return false;
56 return getUserWorkspacesRequest.isExecutingFirstTime;
57 }
58
59 @computed get settings() { 54 @computed get settings() {
60 return localStorage.getItem('workspaces') || {}; 55 return localStorage.getItem('workspaces') || {};
61 } 56 }
diff --git a/src/helpers/certs-helpers.ts b/src/helpers/certs-helpers.ts
new file mode 100644
index 000000000..a6c83f5c4
--- /dev/null
+++ b/src/helpers/certs-helpers.ts
@@ -0,0 +1,22 @@
1import { readdirSync, readFileSync, ensureDirSync } from 'fs-extra';
2import { join } from 'node:path';
3import { userDataCertsPath } from '../environment-remote';
4import { removeNewLines } from '../jsUtils';
5
6export function checkIfCertIsPresent(certData: string): boolean {
7 const certsFolder = userDataCertsPath();
8
9 ensureDirSync(certsFolder);
10
11 const certs: string[] = [];
12
13 for (const file of readdirSync(certsFolder)) {
14 const cert = readFileSync(join(certsFolder, file), {
15 encoding: 'utf8',
16 flag: 'r',
17 });
18 certs.push(removeNewLines(cert));
19 }
20
21 return certs.length > 0 && certs.includes(removeNewLines(certData));
22}
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index 66514ad8f..fda047798 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -187,6 +187,7 @@
187 "settings.account.yourLicense": "Ihre Ferdium-Lizenz:", 187 "settings.account.yourLicense": "Ihre Ferdium-Lizenz:",
188 "settings.app.accentColorInfo": "Geben Sie Ihre Farbwahl in einem CSS-kompatiblen Format an. (Standardwert: {defaultAccentColor} oder leeren Sie das Eingabefeld)", 188 "settings.app.accentColorInfo": "Geben Sie Ihre Farbwahl in einem CSS-kompatiblen Format an. (Standardwert: {defaultAccentColor} oder leeren Sie das Eingabefeld)",
189 "settings.app.buttonInstallUpdate": "Neu starten und Aktualisierungen installieren", 189 "settings.app.buttonInstallUpdate": "Neu starten und Aktualisierungen installieren",
190 "settings.app.buttonOpenFerdiumCertsFolder": "Ordner „Zertifikate” öffnen",
190 "settings.app.buttonOpenFerdiumProfileFolder": "Profilordner anzeigen", 191 "settings.app.buttonOpenFerdiumProfileFolder": "Profilordner anzeigen",
191 "settings.app.buttonOpenFerdiumServiceRecipesFolder": "Rezeptordner öffnen", 192 "settings.app.buttonOpenFerdiumServiceRecipesFolder": "Rezeptordner öffnen",
192 "settings.app.buttonOpenImportExport": "Importieren/Exportieren", 193 "settings.app.buttonOpenImportExport": "Importieren/Exportieren",
@@ -228,6 +229,7 @@
228 "settings.app.form.hideWorkspacesButton": "Schaltfläche „Arbeitsbereich” ausblenden", 229 "settings.app.form.hideWorkspacesButton": "Schaltfläche „Arbeitsbereich” ausblenden",
229 "settings.app.form.iconSize": "Symbolgröße des Dienstes", 230 "settings.app.form.iconSize": "Symbolgröße des Dienstes",
230 "settings.app.form.inactivityLock": "Nach Inaktivität sperren", 231 "settings.app.form.inactivityLock": "Nach Inaktivität sperren",
232 "settings.app.form.isTwoFactorAutoCatcherEnabled": "Automatisches Erfassen von Zwei-Faktor-Codes aus Benachrichtigungen (z. B.: Android-Nachrichten) und Kopieren in die Zwischenablage",
231 "settings.app.form.keepAllWorkspacesLoaded": "Alle Arbeitsbereiche geladen lassen", 233 "settings.app.form.keepAllWorkspacesLoaded": "Alle Arbeitsbereiche geladen lassen",
232 "settings.app.form.language": "Sprache", 234 "settings.app.form.language": "Sprache",
233 "settings.app.form.lockPassword": "Passwort", 235 "settings.app.form.lockPassword": "Passwort",
@@ -257,9 +259,11 @@
257 "settings.app.form.startMinimized": "Minimiert starten", 259 "settings.app.form.startMinimized": "Minimiert starten",
258 "settings.app.form.translatorEngine": "Übersetzungsmaschine", 260 "settings.app.form.translatorEngine": "Übersetzungsmaschine",
259 "settings.app.form.translatorLanguage": "Standard-Übersetzungssprache", 261 "settings.app.form.translatorLanguage": "Standard-Übersetzungssprache",
262 "settings.app.form.twoFactorAutoCatcherMatcher": "Durch Kommata getrennte Wörter/Ausdrücke ohne Berücksichtigung der Groß-/Kleinschreibung, um Zwei-Faktor-Codes abzufangen. Bsp.: Token, Code, SMS, Verifizieren",
260 "settings.app.form.universalDarkMode": "Universellen Dunkelmodus aktivieren", 263 "settings.app.form.universalDarkMode": "Universellen Dunkelmodus aktivieren",
261 "settings.app.form.useGrayscaleServices": "Graustufendienste verwenden", 264 "settings.app.form.useGrayscaleServices": "Graustufendienste verwenden",
262 "settings.app.form.useHorizontalStyle": "Horizontalen Stil verwenden", 265 "settings.app.form.useHorizontalStyle": "Horizontalen Stil verwenden",
266 "settings.app.form.useSelfSignedCertificates": "Selbstsignierte Zertifikate aktivieren",
263 "settings.app.form.useTouchIdToUnlock": "Verwenden von Touch ID zum Entsperren von Ferdium erlauben", 267 "settings.app.form.useTouchIdToUnlock": "Verwenden von Touch ID zum Entsperren von Ferdium erlauben",
264 "settings.app.form.wakeUpHibernationSplay": "Splay Ruhe/Weckzyklen, um die Last zu reduzieren", 268 "settings.app.form.wakeUpHibernationSplay": "Splay Ruhe/Weckzyklen, um die Last zu reduzieren",
265 "settings.app.form.wakeUpHibernationStrategy": "Ruhezustand Strategie nach automatischem Aufwachen", 269 "settings.app.form.wakeUpHibernationStrategy": "Ruhezustand Strategie nach automatischem Aufwachen",
@@ -274,6 +278,7 @@
274 "settings.app.headlineUpdates": "Updates", 278 "settings.app.headlineUpdates": "Updates",
275 "settings.app.hibernateInfo": "Standardmäßig öffnet Ferdium alle deine Dienste im Hintergrund, sodass diese bereit sind, wenn du sie verwenden möchtest. \"Service Hibernation\" wird deine Dienste nach einer bestimmten Zeitspanne schließen. Dies ist nützlich, um RAM zu sparen oder Dienste davon abzuhalten, deinen Computer zu verlangsamen.", 279 "settings.app.hibernateInfo": "Standardmäßig öffnet Ferdium alle deine Dienste im Hintergrund, sodass diese bereit sind, wenn du sie verwenden möchtest. \"Service Hibernation\" wird deine Dienste nach einer bestimmten Zeitspanne schließen. Dies ist nützlich, um RAM zu sparen oder Dienste davon abzuhalten, deinen Computer zu verlangsamen.",
276 "settings.app.inactivityLockInfo": "Minuten der Inaktivität, nach denen Ferdium automatisch sperren soll. Verwenden Sie 0, um dies zu deaktivieren", 280 "settings.app.inactivityLockInfo": "Minuten der Inaktivität, nach denen Ferdium automatisch sperren soll. Verwenden Sie 0, um dies zu deaktivieren",
281 "settings.app.infoOpenCertificatesFolder": "Um ein Zertifikat zu installieren, klicken Sie auf die Schaltfläche unten, um den Zertifikatsordner zu öffnen, und kopieren Sie es in den Ordner. Danach können Sie den Dienst aktualisieren (STRG/CMD + R). Zum Entfernen/Deinstallieren löschen Sie einfach die Zertifikatsdatei und starten Ferdium neu.",
277 "settings.app.lockInfo": "Die Passwort-Sperre erlaubt es dir, deine Nachrichten zu schützen.\nMit der Passwort-Sperre wirst du sowohl beim Starten von Ferdium als auch wenn du das Programm manuell sperrst darum gebeten, dein Passwort einzugeben.\nDu kannst Ferdium über das Sperrsymbol in der unteren linken Ecke oder mit dem Shortcut {lockShortcut} sperren.", 282 "settings.app.lockInfo": "Die Passwort-Sperre erlaubt es dir, deine Nachrichten zu schützen.\nMit der Passwort-Sperre wirst du sowohl beim Starten von Ferdium als auch wenn du das Programm manuell sperrst darum gebeten, dein Passwort einzugeben.\nDu kannst Ferdium über das Sperrsymbol in der unteren linken Ecke oder mit dem Shortcut {lockShortcut} sperren.",
278 "settings.app.lockedPassword": "Passwort", 283 "settings.app.lockedPassword": "Passwort",
279 "settings.app.lockedPasswordInfo": "Bitte stelle sicher, dass du ein Passwort setzt, an welches du dich erinnern kannst.\nSolltest du dieses Passwort vergessen, musst du Ferdium neu installieren.", 284 "settings.app.lockedPasswordInfo": "Bitte stelle sicher, dass du ein Passwort setzt, an welches du dich erinnern kannst.\nSolltest du dieses Passwort vergessen, musst du Ferdium neu installieren.",
@@ -294,6 +299,7 @@
294 "settings.app.sectionUpdates": "App-Aktualisierungseinstellungen", 299 "settings.app.sectionUpdates": "App-Aktualisierungseinstellungen",
295 "settings.app.sentryInfo": "Das Senden von Telemetriedaten ermöglicht es uns, Fehler in Ferdium zu finden - es werden keine persönlichen Informationen wie Ihre Nachrichtendaten gesendet!", 300 "settings.app.sentryInfo": "Das Senden von Telemetriedaten ermöglicht es uns, Fehler in Ferdium zu finden - es werden keine persönlichen Informationen wie Ihre Nachrichtendaten gesendet!",
296 "settings.app.serverHelp": "Verbunden mit dem Server unter {serverURL}", 301 "settings.app.serverHelp": "Verbunden mit dem Server unter {serverURL}",
302 "settings.app.servicesUpdateStatusUpToDate": "Ihre Dienste sind auf dem neuesten Stand",
297 "settings.app.spellCheckerLanguageInfo": "Ferdium verwendet den eingebauten Rechtschreibprüfer deines Macs, um nach Tippfehlern zu suchen. Wenn du die zu überprüfenden Sprachen ändern möchtest, kannst du das in deinen Systemeinstellungen tun.", 303 "settings.app.spellCheckerLanguageInfo": "Ferdium verwendet den eingebauten Rechtschreibprüfer deines Macs, um nach Tippfehlern zu suchen. Wenn du die zu überprüfenden Sprachen ändern möchtest, kannst du das in deinen Systemeinstellungen tun.",
298 "settings.app.subheadlineCache": "Cache", 304 "settings.app.subheadlineCache": "Cache",
299 "settings.app.subheadlineFerdiumProfile": "Ferdium Profil", 305 "settings.app.subheadlineFerdiumProfile": "Ferdium Profil",
@@ -303,6 +309,7 @@
303 "settings.app.updateStatusAvailable": "Update verfügbar, lädt herunter...", 309 "settings.app.updateStatusAvailable": "Update verfügbar, lädt herunter...",
304 "settings.app.updateStatusSearching": "Suche nach Updates...", 310 "settings.app.updateStatusSearching": "Suche nach Updates...",
305 "settings.app.updateStatusUpToDate": "Sie verwenden die neueste Version von Ferdium", 311 "settings.app.updateStatusUpToDate": "Sie verwenden die neueste Version von Ferdium",
312 "settings.app.warningSelfSignedCertificates": "Warnhinweis: Aktivieren Sie diese Funktion nur, wenn Sie wissen, was Sie tun. Das Aktivieren dieser Funktion stellt ein Sicherheitsrisiko dar und sollte nur zu Testzwecken verwendet werden.",
306 "settings.invite.headline": "Lade drei Deiner Freunde ein", 313 "settings.invite.headline": "Lade drei Deiner Freunde ein",
307 "settings.navigation.account": "Konto", 314 "settings.navigation.account": "Konto",
308 "settings.navigation.availableServices": "Verfügbare Dienste", 315 "settings.navigation.availableServices": "Verfügbare Dienste",
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index da6d825b6..90a45e83c 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -188,6 +188,7 @@
188 "settings.account.yourLicense": "Your Ferdium License:", 188 "settings.account.yourLicense": "Your Ferdium License:",
189 "settings.app.accentColorInfo": "Write your color choice in a CSS-compatible format. (Default: {defaultAccentColor} or clear the input field)", 189 "settings.app.accentColorInfo": "Write your color choice in a CSS-compatible format. (Default: {defaultAccentColor} or clear the input field)",
190 "settings.app.buttonInstallUpdate": "Restart & install update", 190 "settings.app.buttonInstallUpdate": "Restart & install update",
191 "settings.app.buttonOpenFerdiumCertsFolder": "Open certificates folder",
191 "settings.app.buttonOpenFerdiumProfileFolder": "Open Profile folder", 192 "settings.app.buttonOpenFerdiumProfileFolder": "Open Profile folder",
192 "settings.app.buttonOpenFerdiumServiceRecipesFolder": "Open Service Recipes folder", 193 "settings.app.buttonOpenFerdiumServiceRecipesFolder": "Open Service Recipes folder",
193 "settings.app.buttonOpenImportExport": "Import / Export", 194 "settings.app.buttonOpenImportExport": "Import / Export",
@@ -230,6 +231,7 @@
230 "settings.app.form.hideWorkspacesButton": "Hide Workspace Drawer button", 231 "settings.app.form.hideWorkspacesButton": "Hide Workspace Drawer button",
231 "settings.app.form.iconSize": "Service icon size", 232 "settings.app.form.iconSize": "Service icon size",
232 "settings.app.form.inactivityLock": "Lock after inactivity", 233 "settings.app.form.inactivityLock": "Lock after inactivity",
234 "settings.app.form.isTwoFactorAutoCatcherEnabled": "Auto-catch two-factor codes from notifications (Ex.: android messages) and copy to clipboard",
233 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", 235 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded",
234 "settings.app.form.language": "Language", 236 "settings.app.form.language": "Language",
235 "settings.app.form.lockPassword": "Password", 237 "settings.app.form.lockPassword": "Password",
@@ -259,9 +261,11 @@
259 "settings.app.form.startMinimized": "Start minimized", 261 "settings.app.form.startMinimized": "Start minimized",
260 "settings.app.form.translatorEngine": "Translator Engine", 262 "settings.app.form.translatorEngine": "Translator Engine",
261 "settings.app.form.translatorLanguage": "Default Translator language", 263 "settings.app.form.translatorLanguage": "Default Translator language",
264 "settings.app.form.twoFactorAutoCatcherMatcher": "Comma-separated and case-insensitive words/expressions to catch two-factor codes from. Ex.: token, code, sms, verify",
262 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 265 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
263 "settings.app.form.useGrayscaleServices": "Use grayscale services", 266 "settings.app.form.useGrayscaleServices": "Use grayscale services",
264 "settings.app.form.useHorizontalStyle": "Use horizontal style", 267 "settings.app.form.useHorizontalStyle": "Use horizontal style",
268 "settings.app.form.useSelfSignedCertificates": "Enable self-signed certificates",
265 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdium", 269 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdium",
266 "settings.app.form.wakeUpHibernationSplay": "Splay hibernate/wake cycles to reduce load", 270 "settings.app.form.wakeUpHibernationSplay": "Splay hibernate/wake cycles to reduce load",
267 "settings.app.form.wakeUpHibernationStrategy": "Hibernation strategy after automatic wake up", 271 "settings.app.form.wakeUpHibernationStrategy": "Hibernation strategy after automatic wake up",
@@ -276,6 +280,7 @@
276 "settings.app.headlineUpdates": "Updates", 280 "settings.app.headlineUpdates": "Updates",
277 "settings.app.hibernateInfo": "By default, Ferdium will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 281 "settings.app.hibernateInfo": "By default, Ferdium will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
278 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdium should automatically lock. Use 0 to disable", 282 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdium should automatically lock. Use 0 to disable",
283 "settings.app.infoOpenCertificatesFolder": "To install a certificate, click the button below to open the certificates folder and copy it into the folder. After that you can refresh the service (CTRL/CMD + R). To remove/uninstall, simply delete the certificate file and restart Ferdium.",
279 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdium or lock Ferdium yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 284 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdium or lock Ferdium yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
280 "settings.app.lockedPassword": "Password", 285 "settings.app.lockedPassword": "Password",
281 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdium.", 286 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdium.",
@@ -296,6 +301,7 @@
296 "settings.app.sectionUpdates": "App Updates Settings", 301 "settings.app.sectionUpdates": "App Updates Settings",
297 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdium - we will not send any personal information like your message data!", 302 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdium - we will not send any personal information like your message data!",
298 "settings.app.serverHelp": "Connected to server at {serverURL}", 303 "settings.app.serverHelp": "Connected to server at {serverURL}",
304 "settings.app.servicesUpdateStatusUpToDate": "Your services are up-to-date",
299 "settings.app.spellCheckerLanguageInfo": "Ferdium uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.", 305 "settings.app.spellCheckerLanguageInfo": "Ferdium uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.",
300 "settings.app.subheadlineCache": "Cache", 306 "settings.app.subheadlineCache": "Cache",
301 "settings.app.subheadlineFerdiumProfile": "Ferdium Profile", 307 "settings.app.subheadlineFerdiumProfile": "Ferdium Profile",
@@ -305,6 +311,7 @@
305 "settings.app.updateStatusAvailable": "Update available, downloading...", 311 "settings.app.updateStatusAvailable": "Update available, downloading...",
306 "settings.app.updateStatusSearching": "Searching for updates...", 312 "settings.app.updateStatusSearching": "Searching for updates...",
307 "settings.app.updateStatusUpToDate": "You are using the latest version of Ferdium", 313 "settings.app.updateStatusUpToDate": "You are using the latest version of Ferdium",
314 "settings.app.warningSelfSignedCertificates": "WARNING: Only enable this feature if you know what you are doing. Enabling this is a security risk and should only be used for testing purposes.",
308 "settings.invite.headline": "Invite Friends", 315 "settings.invite.headline": "Invite Friends",
309 "settings.navigation.account": "Account", 316 "settings.navigation.account": "Account",
310 "settings.navigation.availableServices": "Available services", 317 "settings.navigation.availableServices": "Available services",
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json
index b87168320..7017f3e75 100644
--- a/src/i18n/locales/id.json
+++ b/src/i18n/locales/id.json
@@ -9,6 +9,8 @@
9 "connectionLostBanner.cta": "Muat ulang Layanan", 9 "connectionLostBanner.cta": "Muat ulang Layanan",
10 "connectionLostBanner.informationLink": "Ada apa ini?", 10 "connectionLostBanner.informationLink": "Ada apa ini?",
11 "connectionLostBanner.message": "Yah! Ferdium terputus dari {name}.", 11 "connectionLostBanner.message": "Yah! Ferdium terputus dari {name}.",
12 "downloadManager.empty": "Daftar unduhan Anda kosong.",
13 "downloadManager.headline": "Pengelola unduhan",
12 "feature.basicAuth.signIn": "Masuk", 14 "feature.basicAuth.signIn": "Masuk",
13 "feature.publishDebugInfo.error": "Ada kesalahan saat mencoba memublikasikan informasi debug. Silakan coba lagi nanti atau lihat konsol untuk informasi lebih lanjut.", 15 "feature.publishDebugInfo.error": "Ada kesalahan saat mencoba memublikasikan informasi debug. Silakan coba lagi nanti atau lihat konsol untuk informasi lebih lanjut.",
14 "feature.publishDebugInfo.info": "Mempublikasikan informasi debug Anda membantu kami menemukan masalah dan kesalahan di Ferdium. Dengan mempublikasikan informasi debug anda, Anda menerima kebijakan privasi dan persyaratan layanan Ferdium Debugger", 16 "feature.publishDebugInfo.info": "Mempublikasikan informasi debug Anda membantu kami menemukan masalah dan kesalahan di Ferdium. Dengan mempublikasikan informasi debug anda, Anda menerima kebijakan privasi dan persyaratan layanan Ferdium Debugger",
@@ -21,6 +23,9 @@
21 "feature.quickSwitch.search": "Mencari...", 23 "feature.quickSwitch.search": "Mencari...",
22 "global.api.unhealthy": "Tidak dapat terhubung ke layanan {serverNameParse}", 24 "global.api.unhealthy": "Tidak dapat terhubung ke layanan {serverNameParse}",
23 "global.cancel": "Batalkan", 25 "global.cancel": "Batalkan",
26 "global.clearCache": "Hapus cache",
27 "global.downloads": "Unduhan",
28 "global.edit": "Edit",
24 "global.no": "Tidak", 29 "global.no": "Tidak",
25 "global.notConnectedToTheInternet": "Anda tidak tersambung ke internet.", 30 "global.notConnectedToTheInternet": "Anda tidak tersambung ke internet.",
26 "global.ok": "Oke", 31 "global.ok": "Oke",
@@ -35,6 +40,7 @@
35 "global.submit": "Kirim", 40 "global.submit": "Kirim",
36 "global.userAgentHelp": "Gunakan 'https://whatmyuseragent.com/' (untuk menemukan) atau 'https://developers.whatismybrowser.com/useragents/explore/' (untuk memilih) agen pengguna yang Anda inginkan dan salin di sini.", 41 "global.userAgentHelp": "Gunakan 'https://whatmyuseragent.com/' (untuk menemukan) atau 'https://developers.whatismybrowser.com/useragents/explore/' (untuk memilih) agen pengguna yang Anda inginkan dan salin di sini.",
37 "global.yes": "Ya", 42 "global.yes": "Ya",
43 "infobar.authRequestFailed": "Terjadi kesalahan saat mencoba melakukan permintaan yang diautentikasi. Silakan coba logout dan login kembali jika kesalahan ini berlanjut.",
38 "infobar.buttonChangelog": "Yang baru", 44 "infobar.buttonChangelog": "Yang baru",
39 "infobar.buttonInstallUpdate": "Mulai ulang & instal pembaruan", 45 "infobar.buttonInstallUpdate": "Mulai ulang & instal pembaruan",
40 "infobar.buttonReloadServices": "Muat ulang layanan", 46 "infobar.buttonReloadServices": "Muat ulang layanan",
@@ -42,6 +48,7 @@
42 "infobar.requiredRequestsFailed": "Gagal memuat layanan dan informasi pengguna", 48 "infobar.requiredRequestsFailed": "Gagal memuat layanan dan informasi pengguna",
43 "infobar.servicesUpdated": "Layanan Anda telah diperbarui.", 49 "infobar.servicesUpdated": "Layanan Anda telah diperbarui.",
44 "infobar.updateAvailable": "Versi baru Ferdium tersedia.", 50 "infobar.updateAvailable": "Versi baru Ferdium tersedia.",
51 "infobox.dismiss": "Menolak",
45 "invite.email.label": "Alamat email", 52 "invite.email.label": "Alamat email",
46 "invite.headline.friends": "Undang 3 teman atau kolega Anda", 53 "invite.headline.friends": "Undang 3 teman atau kolega Anda",
47 "invite.name.label": "Nama", 54 "invite.name.label": "Nama",
@@ -93,18 +100,29 @@
93 "menu.file": "Berkas", 100 "menu.file": "Berkas",
94 "menu.help": "Bantuan", 101 "menu.help": "Bantuan",
95 "menu.help.changelog": "Log Perubahan", 102 "menu.help.changelog": "Log Perubahan",
103 "menu.help.debugInfo": "Salin Informasi Debug",
104 "menu.help.debugInfoCopiedBody": "Informasi Debug Anda telah disalin ke clipboard Anda.",
105 "menu.help.debugInfoCopiedHeadline": "Informasi Debug Ferdium",
106 "menu.help.importExportData": "Impor/Ekspor Data Konfigurasi",
96 "menu.help.learnMore": "Pelajari Lebih Lanjut", 107 "menu.help.learnMore": "Pelajari Lebih Lanjut",
97 "menu.help.privacy": "Pernyataan Privasi", 108 "menu.help.privacy": "Pernyataan Privasi",
109 "menu.help.publishDebugInfo": "Publikasikan Informasi Debug",
98 "menu.help.support": "Dukungan", 110 "menu.help.support": "Dukungan",
99 "menu.help.tos": "Ketentuan Layanan", 111 "menu.help.tos": "Ketentuan Layanan",
100 "menu.services": "Layanan", 112 "menu.services": "Layanan",
101 "menu.services.activatePreviousService": "Aktifkan layanan sebelumnya", 113 "menu.services.activatePreviousService": "Aktifkan layanan sebelumnya",
102 "menu.services.addNewService": "Tambahkan Layanan Baru...", 114 "menu.services.addNewService": "Tambahkan Layanan Baru...",
115 "menu.services.copyToClipboard": "Salin ke clipboard",
116 "menu.services.goHome": "Beranda",
103 "menu.services.setNextServiceActive": "Aktifkan layanan berikutnya", 117 "menu.services.setNextServiceActive": "Aktifkan layanan berikutnya",
104 "menu.view": "Tampilan", 118 "menu.view": "Tampilan",
119 "menu.view.back": "Kembali",
120 "menu.view.forward": "Maju",
121 "menu.view.lockFerdium": "Kunci Ferdium",
105 "menu.view.reloadFerdium": "Muat Ulang Ferdium", 122 "menu.view.reloadFerdium": "Muat Ulang Ferdium",
106 "menu.view.reloadService": "Muat ulang Layanan", 123 "menu.view.reloadService": "Muat ulang Layanan",
107 "menu.view.resetZoom": "Ukuran Sebenarnya", 124 "menu.view.resetZoom": "Ukuran Sebenarnya",
125 "menu.view.toggleDarkMode": "Aktifkan Mode Gelap",
108 "menu.view.toggleDevTools": "Aktif/Nonaktifkan alat pengembang", 126 "menu.view.toggleDevTools": "Aktif/Nonaktifkan alat pengembang",
109 "menu.view.toggleFullScreen": "Aktif/Nonaktifkan Layar Penuh", 127 "menu.view.toggleFullScreen": "Aktif/Nonaktifkan Layar Penuh",
110 "menu.view.toggleServiceDevTools": "Aktif/Nonaktifkan layanan alat pengembang", 128 "menu.view.toggleServiceDevTools": "Aktif/Nonaktifkan layanan alat pengembang",
@@ -123,6 +141,7 @@
123 "password.link.login": "Masuk ke akun Anda", 141 "password.link.login": "Masuk ke akun Anda",
124 "password.link.signup": "Buat akun gratis", 142 "password.link.signup": "Buat akun gratis",
125 "password.noUser": "Tidak ditemukan pengguna dengan email tersebut", 143 "password.noUser": "Tidak ditemukan pengguna dengan email tersebut",
144 "password.successInfo": "Kata sandi baru Anda telah dikirim ke alamat email Anda",
126 "service.crashHandler.action": "Muat Ulang {name}", 145 "service.crashHandler.action": "Muat Ulang {name}",
127 "service.crashHandler.autoReload": "Mencoba memulihkan {name} secara otomatis dalam {seconds} detik", 146 "service.crashHandler.autoReload": "Mencoba memulihkan {name} secara otomatis dalam {seconds} detik",
128 "service.crashHandler.headline": "Ya Ampun!", 147 "service.crashHandler.headline": "Ya Ampun!",
@@ -130,11 +149,18 @@
130 "service.disabledHandler.action": "Aktifkan {name}", 149 "service.disabledHandler.action": "Aktifkan {name}",
131 "service.disabledHandler.headline": "{name} dinonaktifkan", 150 "service.disabledHandler.headline": "{name} dinonaktifkan",
132 "service.errorHandler.action": "Muat Ulang {name}", 151 "service.errorHandler.action": "Muat Ulang {name}",
152 "service.errorHandler.editAction": "Edit {name}",
133 "service.errorHandler.headline": "Ya Ampun!", 153 "service.errorHandler.headline": "Ya Ampun!",
134 "service.errorHandler.message": "Kesalahan", 154 "service.errorHandler.message": "Kesalahan",
135 "service.errorHandler.text": "{name} gagal dimuat", 155 "service.errorHandler.text": "{name} gagal dimuat",
156 "service.webviewLoader.loading": "Memuat {service}",
136 "services.getStarted": "Memulai", 157 "services.getStarted": "Memulai",
158 "services.login": "Silahkan login untuk menggunakan Ferdium.",
159 "services.serverInfo": "Sebagai pilihan, Anda dapat mengubah server Ferdium dengan mengeklik roda gigi di pojok kiri bawah. Jika Anda beralih (dari salah satu server yang dihosting) untuk menggunakan Ferdium tanpa akun, mohon diperhatikan bahwa Anda dapat mengekspor data Anda dari server itu dan kemudian mengimpornya menggunakan menu Bantuan untuk menggunakan kembali semua ruang kerja dan layanan yang dikonfigurasi!",
160 "services.serverless": "Gunakan Ferdium tanpa Akun",
137 "settings.account.account.editButton": "Edit akun", 161 "settings.account.account.editButton": "Edit akun",
162 "settings.account.accountUnavailable": "Akun tidak tersedia",
163 "settings.account.accountUnavailableInfo": "Anda menggunakan Ferdium tanpa akun. Jika Anda ingin menggunakan Ferdium dengan akun dan menjaga layanan Anda tetap tersinkronisasi di seluruh instalasi, silahkan pilih server di tab Pengaturan lalu login.",
138 "settings.account.buttonSave": "Perbarui profil", 164 "settings.account.buttonSave": "Perbarui profil",
139 "settings.account.deleteAccount": "Hapus akun", 165 "settings.account.deleteAccount": "Hapus akun",
140 "settings.account.deleteEmailSent": "Anda menerima email dengan tautan untuk mengonfirmasi penghapusan akun. Akun dan data Anda tidak bisa dipulihkan!", 166 "settings.account.deleteEmailSent": "Anda menerima email dengan tautan untuk mengonfirmasi penghapusan akun. Akun dan data Anda tidak bisa dipulihkan!",
@@ -149,12 +175,26 @@
149 "settings.account.tryReloadServices": "Coba lagi", 175 "settings.account.tryReloadServices": "Coba lagi",
150 "settings.account.tryReloadUserInfoRequest": "Coba lagi", 176 "settings.account.tryReloadUserInfoRequest": "Coba lagi",
151 "settings.account.userInfoRequestFailed": "Gagal memuat informasi pengguna", 177 "settings.account.userInfoRequestFailed": "Gagal memuat informasi pengguna",
178 "settings.account.yourLicense": "Lisensi Ferdium Anda:",
179 "settings.app.accentColorInfo": "Tulis pilihan warna Anda dalam format yang kompatibel dengan CSS. (Default: {defaultAccentColor} atau kosongkan kolom input)",
152 "settings.app.buttonInstallUpdate": "Mulai ulang & instal pembaruan", 180 "settings.app.buttonInstallUpdate": "Mulai ulang & instal pembaruan",
181 "settings.app.buttonOpenFerdiumCertsFolder": "Buka folder sertifikat",
182 "settings.app.buttonOpenFerdiumProfileFolder": "Buka folder Profil",
183 "settings.app.buttonOpenImportExport": "Impor / Ekspor",
153 "settings.app.buttonSearchForUpdate": "Periksa versi baru", 184 "settings.app.buttonSearchForUpdate": "Periksa versi baru",
185 "settings.app.buttonShowChangelog": "Tampilkan daftar perubahan",
154 "settings.app.cacheInfo": "Singgahan Ferdium sedang menggunakan ruang disk {size}.", 186 "settings.app.cacheInfo": "Singgahan Ferdium sedang menggunakan ruang disk {size}.",
187 "settings.app.cacheNotCleared": "Tidak dapat menghapus semua cache",
188 "settings.app.closeSettings": "Tutup pengaturan",
155 "settings.app.currentVersion": "Versi saat ini:", 189 "settings.app.currentVersion": "Versi saat ini:",
190 "settings.app.form.accentColor": "Warna aksen",
191 "settings.app.form.adaptableDarkMode": "Sinkronkan mode gelap dengan pengaturan mode gelap OS saya",
192 "settings.app.form.alwaysShowWorkspaces": "Selalu tampilkan laci ruang kerja",
156 "settings.app.form.autoLaunchInBackground": "Buka di latar belakang", 193 "settings.app.form.autoLaunchInBackground": "Buka di latar belakang",
157 "settings.app.form.autoLaunchOnStart": "Jalankan Ferdium saat komputer dimulai", 194 "settings.app.form.autoLaunchOnStart": "Jalankan Ferdium saat komputer dimulai",
195 "settings.app.form.automaticUpdates": "Aktifkan pembaruan",
196 "settings.app.form.beta": "Sertakan pra-rilis",
197 "settings.app.form.confirmOnQuit": "Konfirmasikan saat keluar dari Ferdium",
158 "settings.app.form.darkMode": "Aktifkan Mode Gelap", 198 "settings.app.form.darkMode": "Aktifkan Mode Gelap",
159 "settings.app.form.enableGPUAcceleration": "Aktifkan Akselerasi GPU", 199 "settings.app.form.enableGPUAcceleration": "Aktifkan Akselerasi GPU",
160 "settings.app.form.enableLock": "Aktifkan Kunci Kata Sandi", 200 "settings.app.form.enableLock": "Aktifkan Kunci Kata Sandi",
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json
index ed2c60736..b9bf4def7 100644
--- a/src/i18n/locales/ja.json
+++ b/src/i18n/locales/ja.json
@@ -296,6 +296,7 @@
296 "settings.app.sectionUpdates": "アプリのアップデート設定", 296 "settings.app.sectionUpdates": "アプリのアップデート設定",
297 "settings.app.sentryInfo": "統計情報を送信すると開発者がFerdiumのエラーを発見するのに役立ちます。メッセージのデータのような個人情報は一切送信しません。", 297 "settings.app.sentryInfo": "統計情報を送信すると開発者がFerdiumのエラーを発見するのに役立ちます。メッセージのデータのような個人情報は一切送信しません。",
298 "settings.app.serverHelp": "{serverURL}でサーバーに接続しました", 298 "settings.app.serverHelp": "{serverURL}でサーバーに接続しました",
299 "settings.app.servicesUpdateStatusUpToDate": "サービスは最新です",
299 "settings.app.spellCheckerLanguageInfo": "FerdiumはスペルチェックにmacOSシステムのスペルチェッカーを使用しています。スペルチェッカーでチェックする言語を変更するには、macOSのシステム環境設定から行ってください。", 300 "settings.app.spellCheckerLanguageInfo": "FerdiumはスペルチェックにmacOSシステムのスペルチェッカーを使用しています。スペルチェッカーでチェックする言語を変更するには、macOSのシステム環境設定から行ってください。",
300 "settings.app.subheadlineCache": "キャッシュ", 301 "settings.app.subheadlineCache": "キャッシュ",
301 "settings.app.subheadlineFerdiumProfile": "Ferdiumプロフィール", 302 "settings.app.subheadlineFerdiumProfile": "Ferdiumプロフィール",
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json
index 110341565..317b1eda2 100644
--- a/src/i18n/locales/ru.json
+++ b/src/i18n/locales/ru.json
@@ -9,6 +9,8 @@
9 "connectionLostBanner.cta": "Перезапустить сервис", 9 "connectionLostBanner.cta": "Перезапустить сервис",
10 "connectionLostBanner.informationLink": "Что случилось?", 10 "connectionLostBanner.informationLink": "Что случилось?",
11 "connectionLostBanner.message": "О нет! Ferdium потерял связь с {name}.", 11 "connectionLostBanner.message": "О нет! Ferdium потерял связь с {name}.",
12 "downloadManager.empty": "Ваш список загрузок пуст.",
13 "downloadManager.headline": "Менеджер загрузок",
12 "feature.basicAuth.signIn": "Войти", 14 "feature.basicAuth.signIn": "Войти",
13 "feature.publishDebugInfo.error": "При попытке опубликовать отладочную информацию произошла ошибка. Пожалуйста, повторите попытку позже или просмотрите консоль для получения дополнительной информации.", 15 "feature.publishDebugInfo.error": "При попытке опубликовать отладочную информацию произошла ошибка. Пожалуйста, повторите попытку позже или просмотрите консоль для получения дополнительной информации.",
14 "feature.publishDebugInfo.info": "Публикация вашей отладочной информации помогает нам найти проблемы и ошибки в Ferdium. Публикуя вашу отладочную информацию, вы принимаете политику конфиденциальности Ferdium Debugger'ов и условия предоставления услуг", 16 "feature.publishDebugInfo.info": "Публикация вашей отладочной информации помогает нам найти проблемы и ошибки в Ferdium. Публикуя вашу отладочную информацию, вы принимаете политику конфиденциальности Ferdium Debugger'ов и условия предоставления услуг",
@@ -20,10 +22,14 @@
20 "feature.quickSwitch.info": "Выберите сервис с Tab, вверх и вниз. Откройте сервис нажав на ENTER.", 22 "feature.quickSwitch.info": "Выберите сервис с Tab, вверх и вниз. Откройте сервис нажав на ENTER.",
21 "feature.quickSwitch.search": "Поиск...", 23 "feature.quickSwitch.search": "Поиск...",
22 "feature.quickSwitch.title": "Быстрое переключение", 24 "feature.quickSwitch.title": "Быстрое переключение",
25 "global.api.unhealthy": "Не удается подключиться к онлайн-сервисам {serverNameParse}",
23 "global.cancel": "Отмена", 26 "global.cancel": "Отмена",
27 "global.clearCache": "Очистить кэш",
28 "global.downloads": "Загрузки",
24 "global.edit": "Правка", 29 "global.edit": "Правка",
25 "global.no": "Нет", 30 "global.no": "Нет",
26 "global.notConnectedToTheInternet": "Вы не подключены к сети Интернет.", 31 "global.notConnectedToTheInternet": "Вы не подключены к сети Интернет.",
32 "global.ok": "Ok",
27 "global.quit": "Выйти", 33 "global.quit": "Выйти",
28 "global.quitConfirmation": "Вы действительно хотите выйти из Ferdium?", 34 "global.quitConfirmation": "Вы действительно хотите выйти из Ferdium?",
29 "global.save": "Сохранить", 35 "global.save": "Сохранить",
@@ -57,6 +63,7 @@
57 "locked.submit.label": "Разблокировать", 63 "locked.submit.label": "Разблокировать",
58 "locked.touchId": "Разблокировать с Touch ID", 64 "locked.touchId": "Разблокировать с Touch ID",
59 "locked.unlockWithPassword": "Разблокировать паролем", 65 "locked.unlockWithPassword": "Разблокировать паролем",
66 "login.customServerQuestion": "Использовать пользовательский сервер Ferdium?",
60 "login.email.label": "Адрес электронной почты", 67 "login.email.label": "Адрес электронной почты",
61 "login.headline": "Вход", 68 "login.headline": "Вход",
62 "login.invalidCredentials": "Неправильный адрес электронной почты или пароль", 69 "login.invalidCredentials": "Неправильный адрес электронной почты или пароль",
@@ -104,9 +111,11 @@
104 "menu.services": "Сервис", 111 "menu.services": "Сервис",
105 "menu.services.activatePreviousService": "Активировать предыдущий сервис", 112 "menu.services.activatePreviousService": "Активировать предыдущий сервис",
106 "menu.services.addNewService": "Добавить новый сервис...", 113 "menu.services.addNewService": "Добавить новый сервис...",
114 "menu.services.copyToClipboard": "Копировать в буфер обмена",
107 "menu.services.goHome": "Домой", 115 "menu.services.goHome": "Домой",
108 "menu.services.setNextServiceActive": "Активировать следующий сервис", 116 "menu.services.setNextServiceActive": "Активировать следующий сервис",
109 "menu.todos": "Задачи", 117 "menu.todos": "Задачи",
118 "menu.todos.disableTodos": "Отключить задачи",
110 "menu.todos.enableTodos": "Включить задачи", 119 "menu.todos.enableTodos": "Включить задачи",
111 "menu.view": "Вид", 120 "menu.view": "Вид",
112 "menu.view.back": "Назад", 121 "menu.view.back": "Назад",
@@ -175,7 +184,9 @@
175 "settings.app.buttonInstallUpdate": "Перезапустить и установить обновления", 184 "settings.app.buttonInstallUpdate": "Перезапустить и установить обновления",
176 "settings.app.buttonOpenFerdiumProfileFolder": "Открыть папку профиля", 185 "settings.app.buttonOpenFerdiumProfileFolder": "Открыть папку профиля",
177 "settings.app.buttonOpenFerdiumServiceRecipesFolder": "Открыть папку сервисных протоколов", 186 "settings.app.buttonOpenFerdiumServiceRecipesFolder": "Открыть папку сервисных протоколов",
187 "settings.app.buttonOpenImportExport": "Импорт / Экспорт",
178 "settings.app.buttonSearchForUpdate": "Проверить обновления", 188 "settings.app.buttonSearchForUpdate": "Проверить обновления",
189 "settings.app.buttonShowChangelog": "Показать историю изменений",
179 "settings.app.cacheInfo": "Кэш занимает {size} на диске.", 190 "settings.app.cacheInfo": "Кэш занимает {size} на диске.",
180 "settings.app.cacheNotCleared": "Не удалось очистить весь кэш", 191 "settings.app.cacheNotCleared": "Не удалось очистить весь кэш",
181 "settings.app.closeSettings": "Закрыть настройки", 192 "settings.app.closeSettings": "Закрыть настройки",
@@ -202,6 +213,9 @@
202 "settings.app.form.enableTodos": "Включить задания Ferdium", 213 "settings.app.form.enableTodos": "Включить задания Ferdium",
203 "settings.app.form.hibernateOnStartup": "Оставлять сервисы в состоянии глубокого сна во время запуска", 214 "settings.app.form.hibernateOnStartup": "Оставлять сервисы в состоянии глубокого сна во время запуска",
204 "settings.app.form.hibernationStrategy": "Стратегия гибернации", 215 "settings.app.form.hibernationStrategy": "Стратегия гибернации",
216 "settings.app.form.hideDownloadButton": "Скрыть кнопку \"Загрузки\"",
217 "settings.app.form.hideNotificationsButton": "Скрыть кнопки уведомлений и звука",
218 "settings.app.form.hideSettingsButton": "Скрыть кнопку настроек",
205 "settings.app.form.iconSize": "Размер иконки сервиса", 219 "settings.app.form.iconSize": "Размер иконки сервиса",
206 "settings.app.form.inactivityLock": "Заблокировать после бездействия", 220 "settings.app.form.inactivityLock": "Заблокировать после бездействия",
207 "settings.app.form.keepAllWorkspacesLoaded": "Сохранить все рабочие окружения загруженными", 221 "settings.app.form.keepAllWorkspacesLoaded": "Сохранить все рабочие окружения загруженными",
@@ -219,6 +233,7 @@
219 "settings.app.form.scheduledDNDEnd": "Кому", 233 "settings.app.form.scheduledDNDEnd": "Кому",
220 "settings.app.form.scheduledDNDStart": "От", 234 "settings.app.form.scheduledDNDStart": "От",
221 "settings.app.form.searchEngine": "Поисковая система", 235 "settings.app.form.searchEngine": "Поисковая система",
236 "settings.app.form.sentry": "Отправить данные телеметрии",
222 "settings.app.form.serviceRibbonWidth": "Ширина боковой панели", 237 "settings.app.form.serviceRibbonWidth": "Ширина боковой панели",
223 "settings.app.form.showDisabledServices": "Показывать вкладки отключённых служб", 238 "settings.app.form.showDisabledServices": "Показывать вкладки отключённых служб",
224 "settings.app.form.showDragArea": "Показать перетаскиваемую область в окне", 239 "settings.app.form.showDragArea": "Показать перетаскиваемую область в окне",
@@ -246,6 +261,11 @@
246 "settings.app.restartRequired": "Изменения требуют перезагрузки приложения", 261 "settings.app.restartRequired": "Изменения требуют перезагрузки приложения",
247 "settings.app.scheduledDNDInfo": "Запланированный режим \"не беспокоить\" позволяет вам определить период времени, в течение которого вы не желаете получать уведомления от Ferdium.", 262 "settings.app.scheduledDNDInfo": "Запланированный режим \"не беспокоить\" позволяет вам определить период времени, в течение которого вы не желаете получать уведомления от Ferdium.",
248 "settings.app.scheduledDNDTimeInfo": "Время в 24-часовом формате. Время окончания может быть раньше времени начала (например, начало 17:00, конец 09:00), чтобы включить ночной режим \"не беспокоить\".", 263 "settings.app.scheduledDNDTimeInfo": "Время в 24-часовом формате. Время окончания может быть раньше времени начала (например, начало 17:00, конец 09:00), чтобы включить ночной режим \"не беспокоить\".",
264 "settings.app.sectionLanguage": "Настройка языка",
265 "settings.app.sectionUpdates": "Настройки обновления приложения",
266 "settings.app.sentryInfo": "Отправка телеметрии позволяет нам находить ошибки в Ferdium - мы не будем отправлять никакой личной информации, включая ваши сообщения!",
267 "settings.app.serverHelp": "Подключен к серверу {serverURL}",
268 "settings.app.servicesUpdateStatusUpToDate": "Ваши сервисы актуальны",
249 "settings.app.spellCheckerLanguageInfo": "Ferdium использует встроенную проверку орфографии вашего устройства. Если вы желаете изменить язык проверки орфографии, вы можете произвести это в системных настройках вашего устройства.", 269 "settings.app.spellCheckerLanguageInfo": "Ferdium использует встроенную проверку орфографии вашего устройства. Если вы желаете изменить язык проверки орфографии, вы можете произвести это в системных настройках вашего устройства.",
250 "settings.app.subheadlineCache": "Кэш", 270 "settings.app.subheadlineCache": "Кэш",
251 "settings.app.subheadlineFerdiumProfile": "Профиль Ferdium", 271 "settings.app.subheadlineFerdiumProfile": "Профиль Ferdium",
@@ -255,10 +275,12 @@
255 "settings.app.updateStatusAvailable": "Доступно обновление, идёт загрузка...", 275 "settings.app.updateStatusAvailable": "Доступно обновление, идёт загрузка...",
256 "settings.app.updateStatusSearching": "Поиск обновлений...", 276 "settings.app.updateStatusSearching": "Поиск обновлений...",
257 "settings.app.updateStatusUpToDate": "Вы используете актуальную версию Ferdium", 277 "settings.app.updateStatusUpToDate": "Вы используете актуальную версию Ferdium",
278 "settings.app.warningSelfSignedCertificates": "ВНИМАНИЕ: Включите эту функцию, только если вы знаете, что делаете. Включение этой опции представляет собой угрозу безопасности и должно использоваться только в целях тестирования.",
258 "settings.invite.headline": "Пригласить друзей", 279 "settings.invite.headline": "Пригласить друзей",
259 "settings.navigation.account": "Учетная запись", 280 "settings.navigation.account": "Учетная запись",
260 "settings.navigation.availableServices": "Доступные сервисы", 281 "settings.navigation.availableServices": "Доступные сервисы",
261 "settings.navigation.logout": "Выход", 282 "settings.navigation.logout": "Выход",
283 "settings.navigation.releaseNotes": "Информация о выпуске",
262 "settings.navigation.supportFerdium": "О Ferdium", 284 "settings.navigation.supportFerdium": "О Ferdium",
263 "settings.navigation.team": "Управление Командой", 285 "settings.navigation.team": "Управление Командой",
264 "settings.navigation.yourServices": "Ваши сервисы", 286 "settings.navigation.yourServices": "Ваши сервисы",
@@ -275,6 +297,7 @@
275 "settings.recipes.missingService": "Не можете найти сервис?", 297 "settings.recipes.missingService": "Не можете найти сервис?",
276 "settings.recipes.nothingFound": "Извините, но сервис не соответствует вашему поисковому запросу - но вы все еще можете добавить его, используя опцию \"Пользовательский сайт\". Пожалуйста, обратите внимание, что на сайте может отображаться больше служб, которые могли быть добавлены в новых версиях Ferdium. Для получения новых сервисов, пожалуйста, обновите Ferdium до актуальной версии.", 298 "settings.recipes.nothingFound": "Извините, но сервис не соответствует вашему поисковому запросу - но вы все еще можете добавить его, используя опцию \"Пользовательский сайт\". Пожалуйста, обратите внимание, что на сайте может отображаться больше служб, которые могли быть добавлены в новых версиях Ferdium. Для получения новых сервисов, пожалуйста, обновите Ferdium до актуальной версии.",
277 "settings.recipes.servicesSuccessfulAddedInfo": "Сервис успешно добавлен", 299 "settings.recipes.servicesSuccessfulAddedInfo": "Сервис успешно добавлен",
300 "settings.releasenotes.headline": "Информация о выпуске",
278 "settings.searchService": "Найти сервис", 301 "settings.searchService": "Найти сервис",
279 "settings.service.error.goBack": "Вернуться к сервисам", 302 "settings.service.error.goBack": "Вернуться к сервисам",
280 "settings.service.error.headline": "Ошибка", 303 "settings.service.error.headline": "Ошибка",
@@ -306,6 +329,8 @@
306 "settings.service.form.indirectMessages": "Показывать значок уведомлений для всех новых сообщений", 329 "settings.service.form.indirectMessages": "Показывать значок уведомлений для всех новых сообщений",
307 "settings.service.form.isHibernatedEnabledInfo": "Когда включено, служба будет отключена по истечении времени, чтобы сохранить системные ресурсы.", 330 "settings.service.form.isHibernatedEnabledInfo": "Когда включено, служба будет отключена по истечении времени, чтобы сохранить системные ресурсы.",
308 "settings.service.form.isMutedInfo": "Когда выключено, все звуковые уведомления будут отключены", 331 "settings.service.form.isMutedInfo": "Когда выключено, все звуковые уведомления будут отключены",
332 "settings.service.form.maxFileSize": "Максимальный размер файла:",
333 "settings.service.form.maxFileSizeError": "Файл, который вы пытаетесь отправить, слишком большой.",
309 "settings.service.form.name": "Имя", 334 "settings.service.form.name": "Имя",
310 "settings.service.form.onlyShowFavoritesInUnreadCount": "Отображение только \"Избранного\" в количестве непрочитанного", 335 "settings.service.form.onlyShowFavoritesInUnreadCount": "Отображение только \"Избранного\" в количестве непрочитанного",
311 "settings.service.form.openDarkmodeCss": "Открыть darkmode.css", 336 "settings.service.form.openDarkmodeCss": "Открыть darkmode.css",
@@ -326,6 +351,7 @@
326 "settings.service.form.team": "Команда", 351 "settings.service.form.team": "Команда",
327 "settings.service.form.useHostedService": "Использовать собственный сервис {name}.", 352 "settings.service.form.useHostedService": "Использовать собственный сервис {name}.",
328 "settings.service.form.yourServices": "Ваши сервисы", 353 "settings.service.form.yourServices": "Ваши сервисы",
354 "settings.service.reloadRequired": "Изменения требуют перезагрузки службы",
329 "settings.services.deletedInfo": "Сервис был удален", 355 "settings.services.deletedInfo": "Сервис был удален",
330 "settings.services.discoverServices": "Найти сервисы", 356 "settings.services.discoverServices": "Найти сервисы",
331 "settings.services.headline": "Ваши сервисы", 357 "settings.services.headline": "Ваши сервисы",
@@ -346,6 +372,7 @@
346 "settings.team.manageAction": "Управляйте вашей командой на meetfranz.com", 372 "settings.team.manageAction": "Управляйте вашей командой на meetfranz.com",
347 "settings.team.teamsUnavailable": "Команды недоступны", 373 "settings.team.teamsUnavailable": "Команды недоступны",
348 "settings.team.teamsUnavailableInfo": "Команды на текущий момент доступны только при использовании сервера Franz и после приобретения Franz Professional. Пожалуйста, измените Ваш сервер на https://api.franzinfra.com для использования Teams.", 374 "settings.team.teamsUnavailableInfo": "Команды на текущий момент доступны только при использовании сервера Franz и после приобретения Franz Professional. Пожалуйста, измените Ваш сервер на https://api.franzinfra.com для использования Teams.",
375 "settings.team.tryReloadUserInfoRequest": "Попробуйте перезагрузить",
349 "settings.user.form.accountType.company": "Компания", 376 "settings.user.form.accountType.company": "Компания",
350 "settings.user.form.accountType.individual": "Индивидуальный", 377 "settings.user.form.accountType.individual": "Индивидуальный",
351 "settings.user.form.accountType.label": "Тип аккаунта", 378 "settings.user.form.accountType.label": "Тип аккаунта",
@@ -377,6 +404,7 @@
377 "setupAssistant.submit.label": "Начнем", 404 "setupAssistant.submit.label": "Начнем",
378 "sidebar.muteApp": "Отключить уведомления и звук", 405 "sidebar.muteApp": "Отключить уведомления и звук",
379 "sidebar.unmuteApp": "Включить уведомления и звук", 406 "sidebar.unmuteApp": "Включить уведомления и звук",
407 "signup.company.label": "Компания",
380 "signup.email.label": "Адрес электронной почты", 408 "signup.email.label": "Адрес электронной почты",
381 "signup.emailDuplicate": "Пользователь с таким адресом электронной почты уже существует", 409 "signup.emailDuplicate": "Пользователь с таким адресом электронной почты уже существует",
382 "signup.firstname.label": "Имя", 410 "signup.firstname.label": "Имя",
diff --git a/src/i18n/locales/zh-HANS.json b/src/i18n/locales/zh-HANS.json
index 8aa0e15f6..ab76b9141 100644
--- a/src/i18n/locales/zh-HANS.json
+++ b/src/i18n/locales/zh-HANS.json
@@ -9,6 +9,8 @@
9 "connectionLostBanner.cta": "重启服务", 9 "connectionLostBanner.cta": "重启服务",
10 "connectionLostBanner.informationLink": "发生了什么?", 10 "connectionLostBanner.informationLink": "发生了什么?",
11 "connectionLostBanner.message": "不好!Ferdium失去了与 {name} 的连接。", 11 "connectionLostBanner.message": "不好!Ferdium失去了与 {name} 的连接。",
12 "downloadManager.empty": "您的下载列表是空的。",
13 "downloadManager.headline": "下载管理器",
12 "feature.basicAuth.signIn": "登入", 14 "feature.basicAuth.signIn": "登入",
13 "feature.publishDebugInfo.error": "试图发布调试信息时出错。请稍后再试或查看控制台以获取更多信息。", 15 "feature.publishDebugInfo.error": "试图发布调试信息时出错。请稍后再试或查看控制台以获取更多信息。",
14 "feature.publishDebugInfo.info": "发布您的调试信息有助于我们在 Ferdium 中找到问题和错误。 通过发布您的调试信息,您接受 Ferdium 调试器的隐私政策和服务条款", 16 "feature.publishDebugInfo.info": "发布您的调试信息有助于我们在 Ferdium 中找到问题和错误。 通过发布您的调试信息,您接受 Ferdium 调试器的隐私政策和服务条款",
@@ -22,6 +24,8 @@
22 "feature.quickSwitch.title": "快速切换", 24 "feature.quickSwitch.title": "快速切换",
23 "global.api.unhealthy": "无法连接 {serverNameParse} 在线服务", 25 "global.api.unhealthy": "无法连接 {serverNameParse} 在线服务",
24 "global.cancel": "取消", 26 "global.cancel": "取消",
27 "global.clearCache": "清除缓存",
28 "global.downloads": "下载",
25 "global.edit": "编辑", 29 "global.edit": "编辑",
26 "global.no": "否", 30 "global.no": "否",
27 "global.notConnectedToTheInternet": "没有网络服务", 31 "global.notConnectedToTheInternet": "没有网络服务",
@@ -218,6 +222,7 @@
218 "settings.app.form.hibernateOnStartup": "启动时保持休眠服务", 222 "settings.app.form.hibernateOnStartup": "启动时保持休眠服务",
219 "settings.app.form.hibernationStrategy": "休眠策略", 223 "settings.app.form.hibernationStrategy": "休眠策略",
220 "settings.app.form.hideCollapseButton": "隐藏折叠按钮", 224 "settings.app.form.hideCollapseButton": "隐藏折叠按钮",
225 "settings.app.form.hideDownloadButton": "隐藏下载按钮",
221 "settings.app.form.hideNotificationsButton": "隐藏通知和声音按钮", 226 "settings.app.form.hideNotificationsButton": "隐藏通知和声音按钮",
222 "settings.app.form.hideRecipesButton": "隐藏配方按钮", 227 "settings.app.form.hideRecipesButton": "隐藏配方按钮",
223 "settings.app.form.hideSettingsButton": "隐藏设置按钮", 228 "settings.app.form.hideSettingsButton": "隐藏设置按钮",
@@ -271,6 +276,8 @@
271 "settings.app.headlineUpdates": "更新", 276 "settings.app.headlineUpdates": "更新",
272 "settings.app.hibernateInfo": "默认情况下,Ferdium将保持您所有的服务在后台打开并加载,这样当您想要使用它们时他们就可以了。 服务休眠将在指定数量后卸载您的服务。这有助于保存内存或保持服务以减慢您的计算机速度。", 277 "settings.app.hibernateInfo": "默认情况下,Ferdium将保持您所有的服务在后台打开并加载,这样当您想要使用它们时他们就可以了。 服务休眠将在指定数量后卸载您的服务。这有助于保存内存或保持服务以减慢您的计算机速度。",
273 "settings.app.inactivityLockInfo": "停止活动的分钟,然后Ferdium将自动锁定。使用 0 禁用。", 278 "settings.app.inactivityLockInfo": "停止活动的分钟,然后Ferdium将自动锁定。使用 0 禁用。",
279 "settings.app.lockInfo": "密码锁可以使您的消息受到保护。\n\n使用密码锁,每当您启动Ferdium或使用锁定符号 {lockShortcut} 在左下角或快捷键中锁定Ferdium时,都会提示您输入密码。",
280 "settings.app.lockedPassword": "密码",
274 "settings.app.restartRequired": "重启后生效", 281 "settings.app.restartRequired": "重启后生效",
275 "settings.app.subheadlineCache": "缓存", 282 "settings.app.subheadlineCache": "缓存",
276 "settings.app.translationHelp": "帮助我们将Ferdium翻译至您的语言。", 283 "settings.app.translationHelp": "帮助我们将Ferdium翻译至您的语言。",
diff --git a/src/index.ts b/src/index.ts
index e466b4ab1..fe254b4f6 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -50,6 +50,7 @@ import { openExternalUrl } from './helpers/url-helpers';
50import userAgent from './helpers/userAgent-helpers'; 50import userAgent from './helpers/userAgent-helpers';
51import { translateTo } from './helpers/translation-helpers'; 51import { translateTo } from './helpers/translation-helpers';
52import { darkThemeGrayDarkest } from './themes/legacy'; 52import { darkThemeGrayDarkest } from './themes/legacy';
53import { checkIfCertIsPresent } from './helpers/certs-helpers';
53 54
54const debug = require('./preload-safe-debug')('Ferdium:App'); 55const debug = require('./preload-safe-debug')('Ferdium:App');
55 56
@@ -752,3 +753,26 @@ app.on('will-finish-launching', () => {
752 }); 753 });
753 }); 754 });
754}); 755});
756
757app.on(
758 'certificate-error',
759 (event, _webContents, _url, _error, certificate, callback) => {
760 // On certificate error we disable default behaviour (stop loading the page)
761 // and we then say "it is all fine - true" to the callback
762 event.preventDefault();
763
764 const useSelfSignedCertificates =
765 retrieveSettingValue(
766 'useSelfSignedCertificates',
767 DEFAULT_APP_SETTINGS.useSelfSignedCertificates,
768 ) === true;
769
770 // Check if the certificate is trusted
771 if (!useSelfSignedCertificates) {
772 callback(false);
773 return;
774 }
775
776 callback(checkIfCertIsPresent(certificate.data));
777 },
778);
diff --git a/src/jsUtils.ts b/src/jsUtils.ts
index 0095028ef..31d6a2121 100644
--- a/src/jsUtils.ts
+++ b/src/jsUtils.ts
@@ -30,3 +30,6 @@ export const acceleratorString = (
30 prefix: string = '(', 30 prefix: string = '(',
31 suffix: string = ')', 31 suffix: string = ')',
32) => (index <= 10 ? `${prefix}${keyCombo}+${index % 10}${suffix}` : ''); 32) => (index <= 10 ? `${prefix}${keyCombo}+${index % 10}${suffix}` : '');
33
34export const removeNewLines = (input: string): string =>
35 input.replaceAll(/\r?\n|\r/g, '');
diff --git a/src/lib/Menu.ts b/src/lib/Menu.ts
index 8ad4441d2..12dc1e42c 100644
--- a/src/lib/Menu.ts
+++ b/src/lib/Menu.ts
@@ -709,7 +709,7 @@ class FranzMenu implements StoresProps {
709 const { intl } = window['ferdium']; 709 const { intl } = window['ferdium'];
710 const locked = 710 const locked =
711 this.stores.settings.app.locked && 711 this.stores.settings.app.locked &&
712 this.stores.settings.app.lockingFeatureEnabled && 712 this.stores.settings.app.isLockingFeatureEnabled &&
713 this.stores.user.isLoggedIn; 713 this.stores.user.isLoggedIn;
714 const { actions } = this; 714 const { actions } = this;
715 const tpl = titleBarTemplateFactory(intl, locked); 715 const tpl = titleBarTemplateFactory(intl, locked);
@@ -847,7 +847,7 @@ class FranzMenu implements StoresProps {
847 accelerator: `${lockFerdiumShortcutKey()}`, 847 accelerator: `${lockFerdiumShortcutKey()}`,
848 enabled: 848 enabled:
849 this.stores.user.isLoggedIn && 849 this.stores.user.isLoggedIn &&
850 this.stores.settings.app.lockingFeatureEnabled, 850 this.stores.settings.app.isLockingFeatureEnabled,
851 click() { 851 click() {
852 actions.settings.update({ 852 actions.settings.update({
853 type: 'app', 853 type: 'app',
diff --git a/src/lib/Tray.ts b/src/lib/Tray.ts
index d83f91478..726d32b23 100644
--- a/src/lib/Tray.ts
+++ b/src/lib/Tray.ts
@@ -208,7 +208,7 @@ export default class TrayIcon {
208 if (indicator === '•') { 208 if (indicator === '•') {
209 assetFromIndicator = INDICATOR_TRAY_INDIRECT; 209 assetFromIndicator = INDICATOR_TRAY_INDIRECT;
210 } 210 }
211 if (indicator !== 0) { 211 if (indicator !== 0 && indicator !== '•') {
212 assetFromIndicator = INDICATOR_TRAY_UNREAD; 212 assetFromIndicator = INDICATOR_TRAY_UNREAD;
213 } 213 }
214 return assetFromIndicator; 214 return assetFromIndicator;
diff --git a/src/lib/dbus/Ferdium.ts b/src/lib/dbus/Ferdium.ts
index b2a9105f4..853be68e1 100644
--- a/src/lib/dbus/Ferdium.ts
+++ b/src/lib/dbus/Ferdium.ts
@@ -31,6 +31,10 @@ export default class Ferdium extends dbus.interface.Interface {
31 this.dbus.trayIcon._toggleWindow(); 31 this.dbus.trayIcon._toggleWindow();
32 } 32 }
33 33
34 ToggleToTalk(): void {
35 this.dbus.trayIcon.mainWindow?.webContents.send('toggle-to-talk');
36 }
37
34 emitUnreadChanged(): void { 38 emitUnreadChanged(): void {
35 Ferdium.emitPropertiesChanged( 39 Ferdium.emitPropertiesChanged(
36 this, 40 this,
@@ -66,6 +70,10 @@ Ferdium.configureMembers({
66 inSignature: '', 70 inSignature: '',
67 outSignature: '', 71 outSignature: '',
68 }, 72 },
73 ToggleToTalk: {
74 inSignature: '',
75 outSignature: '',
76 },
69 }, 77 },
70 properties: { 78 properties: {
71 Muted: { 79 Muted: {
diff --git a/src/models/Service.ts b/src/models/Service.ts
index b1f0bc271..da9fa43dd 100644
--- a/src/models/Service.ts
+++ b/src/models/Service.ts
@@ -641,4 +641,8 @@ export default class Service {
641 this.unreadDirectMessageCount = 0; 641 this.unreadDirectMessageCount = 0;
642 this.unreadIndirectMessageCount = 0; 642 this.unreadIndirectMessageCount = 0;
643 } 643 }
644
645 toggleToTalk(): void {
646 this.webview?.send('toggle-to-talk');
647 }
644} 648}
diff --git a/src/models/User.ts b/src/models/User.ts
index 6540a14e9..f89ea0465 100644
--- a/src/models/User.ts
+++ b/src/models/User.ts
@@ -27,8 +27,6 @@ export default class User {
27 27
28 @observable accountType: string | null = null; 28 @observable accountType: string | null = null;
29 29
30 @observable emailIsConfirmed = true;
31
32 // Note: Kept around to be able to handle the response from Franz server 30 // Note: Kept around to be able to handle the response from Franz server
33 // better assume it's confirmed to avoid noise 31 // better assume it's confirmed to avoid noise
34 @observable subscription = {}; 32 @observable subscription = {};
diff --git a/src/stores/AppStore.ts b/src/stores/AppStore.ts
index 9af0a9a4f..b8356bd56 100644
--- a/src/stores/AppStore.ts
+++ b/src/stores/AppStore.ts
@@ -121,13 +121,11 @@ export default class AppStore extends TypedStore {
121 121
122 @observable isFocused = true; 122 @observable isFocused = true;
123 123
124 @observable lockingFeatureEnabled = 124 @observable isLockingFeatureEnabled =
125 DEFAULT_APP_SETTINGS.lockingFeatureEnabled; 125 DEFAULT_APP_SETTINGS.isLockingFeatureEnabled;
126 126
127 @observable launchInBackground = DEFAULT_APP_SETTINGS.autoLaunchInBackground; 127 @observable launchInBackground = DEFAULT_APP_SETTINGS.autoLaunchInBackground;
128 128
129 dictionaries = [];
130
131 fetchDataInterval: NodeJS.Timeout | null = null; 129 fetchDataInterval: NodeJS.Timeout | null = null;
132 130
133 @observable downloads: Download[] = []; 131 @observable downloads: Download[] = [];
diff --git a/src/stores/ServicesStore.ts b/src/stores/ServicesStore.ts
index 95aae6ccb..d7804a3fe 100644
--- a/src/stores/ServicesStore.ts
+++ b/src/stores/ServicesStore.ts
@@ -1,5 +1,5 @@
1import { join } from 'node:path'; 1import { join } from 'node:path';
2import { ipcRenderer, shell } from 'electron'; 2import { clipboard, ipcRenderer, shell } from 'electron';
3import { action, reaction, computed, observable, makeObservable } from 'mobx'; 3import { action, reaction, computed, observable, makeObservable } from 'mobx';
4import { debounce, remove } from 'lodash'; 4import { debounce, remove } from 'lodash';
5import ms from 'ms'; 5import ms from 'ms';
@@ -65,6 +65,8 @@ export default class ServicesStore extends TypedStore {
65 // No service ID should be in the list multiple times, not all service IDs have to be in the list 65 // No service ID should be in the list multiple times, not all service IDs have to be in the list
66 @observable lastUsedServices: string[] = []; 66 @observable lastUsedServices: string[] = [];
67 67
68 private toggleToTalkCallback = () => this.active?.toggleToTalk();
69
68 constructor(stores: Stores, api: ApiInterface, actions: Actions) { 70 constructor(stores: Stores, api: ApiInterface, actions: Actions) {
69 super(stores, api, actions); 71 super(stores, api, actions);
70 72
@@ -239,6 +241,8 @@ export default class ServicesStore extends TypedStore {
239 initialize() { 241 initialize() {
240 super.initialize(); 242 super.initialize();
241 243
244 ipcRenderer.on('toggle-to-talk', this.toggleToTalkCallback);
245
242 // Check services to become hibernated 246 // Check services to become hibernated
243 this.serviceMaintenanceTick(); 247 this.serviceMaintenanceTick();
244 } 248 }
@@ -246,6 +250,8 @@ export default class ServicesStore extends TypedStore {
246 teardown() { 250 teardown() {
247 super.teardown(); 251 super.teardown();
248 252
253 ipcRenderer.off('toggle-to-talk', this.toggleToTalkCallback);
254
249 // Stop checking services for hibernation 255 // Stop checking services for hibernation
250 this.serviceMaintenanceTick.cancel(); 256 this.serviceMaintenanceTick.cancel();
251 } 257 }
@@ -828,6 +834,54 @@ export default class ServicesStore extends TypedStore {
828 break; 834 break;
829 } 835 }
830 case 'notification': { 836 case 'notification': {
837 const { notificationId, options } = args[0];
838
839 const { isTwoFactorAutoCatcherEnabled, twoFactorAutoCatcherMatcher } =
840 this.stores.settings.all.app;
841
842 debug(
843 'Settings for catch tokens',
844 isTwoFactorAutoCatcherEnabled,
845 twoFactorAutoCatcherMatcher,
846 );
847
848 if (isTwoFactorAutoCatcherEnabled) {
849 /*
850 parse the token digits from sms body, find "token" or "code" in options.body which reflect the sms content
851 ---
852 Token: 03624 / SMS-Code = PIN Token
853 ---
854 Prüfcode 010313 für Microsoft-Authentifizierung verwenden.
855 ---
856 483133 is your GitHub authentication code. @github.com #483133
857 ---
858 eBay: Ihr Sicherheitscode lautet 080090. \nEr läuft in 15 Minuten ab. Geben Sie den Code nicht an andere weiter.
859 ---
860 PayPal: Ihr Sicherheitscode lautet: 989605. Geben Sie diesen Code nicht weiter.
861 */
862
863 const rawBody = options.body;
864 const { 0: token } = /\d{5,6}/.exec(options.body) || [];
865
866 const wordsToCatch = twoFactorAutoCatcherMatcher
867 .replaceAll(', ', ',')
868 .split(',');
869
870 debug('wordsToCatch', wordsToCatch);
871
872 if (
873 token &&
874 wordsToCatch.some(a =>
875 options.body.toLowerCase().includes(a.toLowerCase()),
876 )
877 ) {
878 // with the extra "+ " it shows its copied to clipboard in the notification
879 options.body = `+ ${rawBody}`;
880 clipboard.writeText(token);
881 debug('Token parsed and copied to clipboard');
882 }
883 }
884
831 // Check if we are in scheduled Do-not-Disturb time 885 // Check if we are in scheduled Do-not-Disturb time
832 const { scheduledDNDEnabled, scheduledDNDStart, scheduledDNDEnd } = 886 const { scheduledDNDEnabled, scheduledDNDStart, scheduledDNDEnd } =
833 this.stores.settings.all.app; 887 this.stores.settings.all.app;
@@ -839,8 +893,6 @@ export default class ServicesStore extends TypedStore {
839 return; 893 return;
840 } 894 }
841 895
842 const { notificationId, options } = args[0];
843
844 if (service.isMuted || this.stores.settings.all.app.isAppMuted) { 896 if (service.isMuted || this.stores.settings.all.app.isAppMuted) {
845 Object.assign(options, { 897 Object.assign(options, {
846 silent: true, 898 silent: true,
diff --git a/src/stores/SettingsStore.ts b/src/stores/SettingsStore.ts
index 90cd82690..010290a4a 100644
--- a/src/stores/SettingsStore.ts
+++ b/src/stores/SettingsStore.ts
@@ -11,17 +11,11 @@ import {
11 LOCAL_SERVER, 11 LOCAL_SERVER,
12} from '../config'; 12} from '../config';
13import { hash } from '../helpers/password-helpers'; 13import { hash } from '../helpers/password-helpers';
14import Request from './lib/Request';
15import TypedStore from './lib/TypedStore'; 14import TypedStore from './lib/TypedStore';
16 15
17const debug = require('../preload-safe-debug')('Ferdium:SettingsStore'); 16const debug = require('../preload-safe-debug')('Ferdium:SettingsStore');
18 17
19export default class SettingsStore extends TypedStore { 18export default class SettingsStore extends TypedStore {
20 @observable updateAppSettingsRequest = new Request(
21 this.api.local,
22 'updateAppSettings',
23 );
24
25 @observable loaded: boolean = false; 19 @observable loaded: boolean = false;
26 20
27 fileSystemSettingsTypes = FILE_SYSTEM_SETTINGS_TYPES; 21 fileSystemSettingsTypes = FILE_SYSTEM_SETTINGS_TYPES;
@@ -67,7 +61,7 @@ export default class SettingsStore extends TypedStore {
67 let inactivityTimer; 61 let inactivityTimer;
68 getCurrentWindow().on('blur', () => { 62 getCurrentWindow().on('blur', () => {
69 if ( 63 if (
70 this.all.app.lockingFeatureEnabled && 64 this.all.app.isLockingFeatureEnabled &&
71 this.all.app.inactivityLock !== 0 65 this.all.app.inactivityLock !== 0
72 ) { 66 ) {
73 inactivityTimer = setTimeout( 67 inactivityTimer = setTimeout(
@@ -94,7 +88,7 @@ export default class SettingsStore extends TypedStore {
94 if ( 88 if (
95 !this.loaded && 89 !this.loaded &&
96 resp.type === 'app' && 90 resp.type === 'app' &&
97 resp.data.lockingFeatureEnabled 91 resp.data.isLockingFeatureEnabled
98 ) { 92 ) {
99 process.nextTick(() => { 93 process.nextTick(() => {
100 if (!this.all.app.locked) { 94 if (!this.all.app.locked) {
diff --git a/src/stores/UserStore.ts b/src/stores/UserStore.ts
index f98f7d340..9c3fcd3b9 100644
--- a/src/stores/UserStore.ts
+++ b/src/stores/UserStore.ts
@@ -60,11 +60,6 @@ export default class UserStore extends TypedStore {
60 'updateInfo', 60 'updateInfo',
61 ); 61 );
62 62
63 @observable getLegacyServicesRequest: CachedRequest = new CachedRequest(
64 this.api.user,
65 'getLegacyServices',
66 );
67
68 @observable deleteAccountRequest: CachedRequest = new CachedRequest( 63 @observable deleteAccountRequest: CachedRequest = new CachedRequest(
69 this.api.user, 64 this.api.user,
70 'delete', 65 'delete',
@@ -93,8 +88,6 @@ export default class UserStore extends TypedStore {
93 88
94 @observable logoutReason: string | null = null; 89 @observable logoutReason: string | null = null;
95 90
96 fetchUserInfoInterval = null;
97
98 constructor(stores: Stores, api: ApiInterface, actions: Actions) { 91 constructor(stores: Stores, api: ApiInterface, actions: Actions) {
99 super(stores, api, actions); 92 super(stores, api, actions);
100 93
@@ -132,26 +125,10 @@ export default class UserStore extends TypedStore {
132 return this.LOGIN_ROUTE; 125 return this.LOGIN_ROUTE;
133 } 126 }
134 127
135 get logoutRoute(): string {
136 return this.LOGOUT_ROUTE;
137 }
138
139 get signupRoute(): string { 128 get signupRoute(): string {
140 return this.SIGNUP_ROUTE; 129 return this.SIGNUP_ROUTE;
141 } 130 }
142 131
143 get setupRoute(): string {
144 return this.SETUP_ROUTE;
145 }
146
147 get inviteRoute(): string {
148 return this.INVITE_ROUTE;
149 }
150
151 get importRoute(): string {
152 return this.IMPORT_ROUTE;
153 }
154
155 get passwordRoute(): string { 132 get passwordRoute(): string {
156 return this.PASSWORD_ROUTE; 133 return this.PASSWORD_ROUTE;
157 } 134 }
@@ -191,10 +168,6 @@ export default class UserStore extends TypedStore {
191 return this.data.team || null; 168 return this.data.team || null;
192 } 169 }
193 170
194 @computed get legacyServices(): any {
195 return this.getLegacyServicesRequest.execute() || {};
196 }
197
198 // Actions 171 // Actions
199 @action async _login({ email, password }): Promise<void> { 172 @action async _login({ email, password }): Promise<void> {
200 const authToken = await this.loginRequest.execute(email, password).promise; 173 const authToken = await this.loginRequest.execute(email, password).promise;
diff --git a/src/stores/lib/Request.ts b/src/stores/lib/Request.ts
index 911c5ccfb..587af87d7 100644
--- a/src/stores/lib/Request.ts
+++ b/src/stores/lib/Request.ts
@@ -1,5 +1,4 @@
1import { observable, action, computed, makeObservable } from 'mobx'; 1import { observable, action, computed, makeObservable } from 'mobx';
2import { isEqual } from 'lodash/fp';
3 2
4// eslint-disable-next-line no-use-before-define 3// eslint-disable-next-line no-use-before-define
5type Hook = (request: Request) => void; 4type Hook = (request: Request) => void;
@@ -123,14 +122,6 @@ export default class Request {
123 return this.execute(...args); 122 return this.execute(...args);
124 } 123 }
125 124
126 isExecutingWithArgs(...args: any[]): boolean {
127 return (
128 this.isExecuting &&
129 this.currentApiCall &&
130 isEqual(this.currentApiCall.args, args)
131 );
132 }
133
134 @computed get isExecutingFirstTime(): boolean { 125 @computed get isExecutingFirstTime(): boolean {
135 return !this.wasExecuted && this.isExecuting; 126 return !this.wasExecuted && this.isExecuting;
136 } 127 }
diff --git a/src/themes/default/index.ts b/src/themes/default/index.ts
index cc886f299..ac04a6e3b 100644
--- a/src/themes/default/index.ts
+++ b/src/themes/default/index.ts
@@ -3,6 +3,7 @@ import { cloneDeep } from 'lodash';
3 3
4import * as legacyStyles from '../legacy'; 4import * as legacyStyles from '../legacy';
5import type IStyleTypes from '../IStyleTypes'; 5import type IStyleTypes from '../IStyleTypes';
6import { DEFAULT_LOADER_COLOR } from '../../config';
6 7
7export default (brandPrimary: string) => { 8export default (brandPrimary: string) => {
8 if (!brandPrimary) { 9 if (!brandPrimary) {
@@ -14,7 +15,7 @@ export default (brandPrimary: string) => {
14 const brandDanger = '#d9534f'; 15 const brandDanger = '#d9534f';
15 const uiFontSize = 14; 16 const uiFontSize = 14;
16 const colorBackground = legacyStyles.themeGrayLighter; 17 const colorBackground = legacyStyles.themeGrayLighter;
17 const colorContentBackground = '#FFFFFF'; 18 const colorContentBackground = DEFAULT_LOADER_COLOR;
18 const colorText = legacyStyles.themeGrayDark; 19 const colorText = legacyStyles.themeGrayDark;
19 const inputColor = legacyStyles.themeGray; 20 const inputColor = legacyStyles.themeGray;
20 const inputBackground = legacyStyles.themeGrayLightest; 21 const inputBackground = legacyStyles.themeGrayLightest;
diff --git a/src/webview/lib/RecipeWebview.ts b/src/webview/lib/RecipeWebview.ts
index 44b3c5ab4..31e9a288d 100644
--- a/src/webview/lib/RecipeWebview.ts
+++ b/src/webview/lib/RecipeWebview.ts
@@ -40,6 +40,8 @@ class RecipeWebview {
40 40
41 loopFunc = () => null; 41 loopFunc = () => null;
42 42
43 toggleToTalkFunc = () => null;
44
43 darkModeHandler: ((darkMode: boolean, config: any) => void) | null = null; 45 darkModeHandler: ((darkMode: boolean, config: any) => void) | null = null;
44 46
45 // TODO Remove this once we implement a proper wrapper. 47 // TODO Remove this once we implement a proper wrapper.
@@ -199,6 +201,10 @@ class RecipeWebview {
199 openNewWindow(url) { 201 openNewWindow(url) {
200 ipcRenderer.sendToHost('new-window', url); 202 ipcRenderer.sendToHost('new-window', url);
201 } 203 }
204
205 toggleToTalk(fn) {
206 this.toggleToTalkFunc = fn;
207 }
202} 208}
203 209
204export default RecipeWebview; 210export default RecipeWebview;
diff --git a/src/webview/notifications.ts b/src/webview/notifications.ts
index aa88f13a2..e4401ab6e 100644
--- a/src/webview/notifications.ts
+++ b/src/webview/notifications.ts
@@ -37,7 +37,7 @@ export const notificationsClassDefinition = `(() => {
37 constructor(title = '', options = {}) { 37 constructor(title = '', options = {}) {
38 this.title = title; 38 this.title = title;
39 this.options = options; 39 this.options = options;
40 try{ 40 try {
41 window.ferdium.displayNotification(title, options) 41 window.ferdium.displayNotification(title, options)
42 .then(() => { 42 .then(() => {
43 if (typeof (this.onClick) === 'function') { 43 if (typeof (this.onClick) === 'function') {
@@ -51,7 +51,7 @@ export const notificationsClassDefinition = `(() => {
51 if (typeof (this.onClick) === 'function') { 51 if (typeof (this.onClick) === 'function') {
52 this.onClick(); 52 this.onClick();
53 } 53 }
54 }); 54 });
55 } 55 }
56 } 56 }
57 57
diff --git a/src/webview/recipe.ts b/src/webview/recipe.ts
index b394f1517..148ea6fab 100644
--- a/src/webview/recipe.ts
+++ b/src/webview/recipe.ts
@@ -44,7 +44,7 @@ import {
44} from './spellchecker'; 44} from './spellchecker';
45 45
46import { DEFAULT_APP_SETTINGS } from '../config'; 46import { DEFAULT_APP_SETTINGS } from '../config';
47import { ifUndefined, safeParseInt } from '../jsUtils'; 47import { cleanseJSObject, ifUndefined, safeParseInt } from '../jsUtils';
48import { AppStore } from '../@types/stores.types'; 48import { AppStore } from '../@types/stores.types';
49import Service from '../models/Service'; 49import Service from '../models/Service';
50 50
@@ -124,8 +124,14 @@ contextBridge.exposeInMainWorld('ferdium', {
124 safeParseInt(text), 124 safeParseInt(text),
125 setDialogTitle: (title: string | null | undefined) => 125 setDialogTitle: (title: string | null | undefined) =>
126 dialogTitleHandler.setDialogTitle(title), 126 dialogTitleHandler.setDialogTitle(title),
127 displayNotification: (title: string, options: any) => 127 displayNotification: (title: string, options: any) => {
128 notificationsHandler.displayNotification(title, options), 128 notificationsHandler.displayNotification(
129 title,
130 // The following line is needed so that a proper clone of the "options" object is made.
131 // This line was causing issues with some services.
132 cleanseJSObject(options),
133 );
134 },
129 getDisplayMediaSelector, 135 getDisplayMediaSelector,
130}); 136});
131 137
@@ -158,6 +164,7 @@ class RecipeController {
158 'service-settings-update': 'updateServiceSettings', 164 'service-settings-update': 'updateServiceSettings',
159 'get-service-id': 'serviceIdEcho', 165 'get-service-id': 'serviceIdEcho',
160 'find-in-page': 'openFindInPage', 166 'find-in-page': 'openFindInPage',
167 'toggle-to-talk': 'toggleToTalk',
161 }; 168 };
162 169
163 universalDarkModeInjected = false; 170 universalDarkModeInjected = false;
@@ -483,6 +490,10 @@ class RecipeController {
483 }, 225), 490 }, 225),
484 ); 491 );
485 } 492 }
493
494 toggleToTalk() {
495 this.recipe?.toggleToTalkFunc?.();
496 }
486} 497}
487 498
488/* eslint-disable no-new */ 499/* eslint-disable no-new */
diff --git a/test/jsUtils.test.ts b/test/jsUtils.test.ts
index 138158611..0662c3c48 100644
--- a/test/jsUtils.test.ts
+++ b/test/jsUtils.test.ts
@@ -151,4 +151,20 @@ describe('jsUtils', () => {
151 expect(jsUtils.acceleratorString(11, 'abc')).toEqual(''); 151 expect(jsUtils.acceleratorString(11, 'abc')).toEqual('');
152 }); 152 });
153 }); 153 });
154
155 describe('removeNewLines', () => {
156 it('handles unix style new lines', () => {
157 expect(jsUtils.removeNewLines('abc def\nghi')).toEqual('abc defghi');
158 });
159
160 it('handles windows style new lines', () => {
161 expect(jsUtils.removeNewLines('abc def\r\nghi')).toEqual('abc defghi');
162 });
163
164 it('handles new lines in the beginning, middle and ending of the string', () => {
165 expect(jsUtils.removeNewLines('\nabc def\r\nghi\n')).toEqual(
166 'abc defghi',
167 );
168 });
169 });
154}); 170});