aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Vijay A <vraravam@users.noreply.github.com>2023-08-03 07:09:13 +0530
committerLibravatar Vijay A <vraravam@users.noreply.github.com>2023-08-03 07:09:13 +0530
commit5560d992c0475869b5720520caf24b47b59cb5dc (patch)
tree46bac5d56b1fd684ec89e9b464da67e784757218
parentMerge branch 'develop' into release and bump version (diff)
parent6.4.1-nightly.17 [skip ci] (diff)
downloadferdium-app-6.4.1-beta.1.tar.gz
ferdium-app-6.4.1-beta.1.tar.zst
ferdium-app-6.4.1-beta.1.zip
Merge develop into release (Bump to 6.4.1-beta.1)v6.4.1-beta.1
-rw-r--r--.eslintignore3
-rw-r--r--.eslintrc.js174
-rw-r--r--.github/workflows/builds.yml77
-rw-r--r--.npmrc2
-rw-r--r--.prettierrc.js2
-rw-r--r--.vscode/settings.json27
-rw-r--r--CONTRIBUTING.md4
-rw-r--r--commitlint.config.js2
-rw-r--r--jest.config.js10
-rw-r--r--package.json109
-rw-r--r--pnpm-lock.yaml2809
m---------recipes0
-rw-r--r--scripts/add-crowdin-contributors.ts44
-rw-r--r--scripts/link-readme.ts2
-rw-r--r--src/@types/ferdium.types.ts1
-rw-r--r--src/@types/kebab-case.d.ts1
-rw-r--r--src/@types/mobx-form.types.ts32
-rw-r--r--src/@types/mobx-react-form.d.ts1
-rw-r--r--src/@types/stores.types.ts10
-rw-r--r--src/actions/index.ts4
-rw-r--r--src/actions/lib/actions.ts1
-rw-r--r--src/api/UserApi.ts2
-rw-r--r--src/api/apiBase.ts7
-rw-r--r--src/api/server/LocalApi.ts2
-rw-r--r--src/api/server/ServerApi.ts34
-rw-r--r--src/app.tsx2
-rw-r--r--src/components/AppUpdateInfoBar.tsx1
-rw-r--r--src/components/auth/Invite.tsx3
-rw-r--r--src/components/auth/Login.tsx3
-rw-r--r--src/components/auth/Welcome.tsx5
-rw-r--r--src/components/layout/Sidebar.tsx260
-rw-r--r--src/components/services/content/ServiceView.tsx2
-rw-r--r--src/components/services/content/ServiceWebview.tsx2
-rw-r--r--src/components/services/tabs/TabBarSortableList.tsx2
-rw-r--r--src/components/services/tabs/TabItem.tsx11
-rw-r--r--src/components/services/tabs/Tabbar.tsx2
-rw-r--r--src/components/settings/account/AccountDashboard.tsx9
-rw-r--r--src/components/settings/navigation/SettingsNavigation.tsx6
-rw-r--r--src/components/settings/releaseNotes/ReleaseNotesDashboard.tsx12
-rw-r--r--src/components/settings/releaseNotes/ReleaseNotesLayout.tsx1
-rw-r--r--src/components/settings/services/ServiceItem.tsx20
-rw-r--r--src/components/settings/settings/EditSettingsForm.tsx64
-rw-r--r--src/components/settings/supportFerdium/SupportFerdiumDashboard.tsx2
-rw-r--r--src/components/settings/team/TeamDashboard.tsx9
-rw-r--r--src/components/ui/AppLoader/index.tsx23
-rw-r--r--src/components/ui/InfoBar.tsx30
-rw-r--r--src/components/ui/Infobox.tsx1
-rw-r--r--src/components/ui/Link.tsx4
-rw-r--r--src/components/ui/Loader.tsx1
-rw-r--r--src/components/ui/Radio.tsx11
-rw-r--r--src/components/ui/Select.tsx4
-rw-r--r--src/components/ui/Tabs/TabItem.tsx4
-rw-r--r--src/components/ui/Tabs/Tabs.tsx2
-rw-r--r--src/components/ui/WebviewLoader/index.tsx2
-rw-r--r--src/components/ui/badge/ProBadge.tsx14
-rw-r--r--src/components/ui/badge/index.tsx18
-rw-r--r--src/components/ui/button/index.tsx5
-rw-r--r--src/components/ui/colorPickerInput/index.tsx37
-rw-r--r--src/components/ui/effects/Appear.tsx27
-rw-r--r--src/components/ui/headline/index.tsx27
-rw-r--r--src/components/ui/icon/index.tsx12
-rw-r--r--src/components/ui/infobox/index.tsx1
-rw-r--r--src/components/ui/loader/index.tsx14
-rw-r--r--src/components/ui/select/index.tsx44
-rw-r--r--src/components/ui/toggle/index.tsx14
-rw-r--r--src/components/ui/typings/generic.ts2
-rw-r--r--src/components/ui/wrapper/index.tsx2
-rw-r--r--src/components/util/ErrorBoundary/index.tsx16
-rw-r--r--src/config.ts6
-rw-r--r--src/containers/auth/AuthReleaseNotesScreen.tsx12
-rw-r--r--src/containers/auth/WelcomeScreen.tsx4
-rw-r--r--src/containers/layout/AppLayoutContainer.tsx1
-rw-r--r--src/containers/settings/EditSettingsScreen.tsx21
-rw-r--r--src/containers/settings/EditUserScreen.tsx6
-rw-r--r--src/electron/exception.ts1
-rw-r--r--src/electron/ipc-api/appIndicator.ts2
-rw-r--r--src/electron/ipc-api/dnd.ts3
-rw-r--r--src/electron/ipc-api/download.ts2
-rw-r--r--src/electron/ipc-api/localServer.ts4
-rw-r--r--src/electron/macOSPermissions.ts3
-rw-r--r--src/environment-remote.ts2
-rw-r--r--src/environment.ts4
-rw-r--r--src/features/appearance/index.ts7
-rw-r--r--src/features/communityRecipes/store.ts2
-rw-r--r--src/features/serviceProxy/index.ts6
-rw-r--r--src/features/todos/actions.ts2
-rw-r--r--src/features/webControls/components/WebControls.tsx22
-rw-r--r--src/features/workspaces/actions.ts3
-rw-r--r--src/features/workspaces/components/WorkspaceDrawer.tsx16
-rw-r--r--src/features/workspaces/components/WorkspaceDrawerItem.tsx4
-rw-r--r--src/features/workspaces/components/WorkspacesDashboard.tsx2
-rw-r--r--src/features/workspaces/containers/EditWorkspaceScreen.tsx3
-rw-r--r--src/features/workspaces/store.ts1
-rw-r--r--src/helpers/asar-helpers.ts2
-rw-r--r--src/helpers/password-helpers.ts2
-rw-r--r--src/helpers/recipe-helpers.ts3
-rw-r--r--src/helpers/url-helpers.ts2
-rw-r--r--src/helpers/userAgent-helpers.ts3
-rw-r--r--src/i18n/languages.ts2
-rw-r--r--src/i18n/locales/de.json1
-rw-r--r--src/i18n/locales/fr.json1
-rw-r--r--src/i18n/locales/lv.json103
-rw-r--r--src/index.ts36
-rw-r--r--src/internal-server/app/Controllers/Http/ImageController.js2
-rw-r--r--src/internal-server/app/Controllers/Http/UserController.js27
-rw-r--r--src/internal-server/app/Controllers/Http/WorkspaceController.js7
-rw-r--r--src/internal-server/app/ImageHelper.js2
-rw-r--r--src/internal-server/database/factory.js1
-rw-r--r--src/internal-server/public/js/transfer.js1
-rw-r--r--src/internal-server/start.ts2
-rw-r--r--src/internal-server/start/routes.js2
-rw-r--r--src/internal-server/test.ts2
-rw-r--r--src/jsUtils.ts6
-rw-r--r--src/lib/Form.ts1
-rw-r--r--src/lib/Menu.ts5
-rw-r--r--src/lib/Tray.ts2
-rw-r--r--src/models/Recipe.ts10
-rw-r--r--src/models/RecipePreview.ts2
-rw-r--r--src/models/Service.ts2
-rw-r--r--src/preload-safe-debug.ts4
-rw-r--r--src/routes.tsx17
-rw-r--r--src/stores/AppStore.ts4
-rw-r--r--src/stores/GlobalErrorStore.ts12
-rw-r--r--src/stores/RecipesStore.ts1
-rw-r--r--src/stores/ServicesStore.ts21
-rw-r--r--src/stores/SettingsStore.ts21
-rw-r--r--src/stores/UserStore.ts4
-rw-r--r--src/stores/lib/CachedRequest.ts6
-rw-r--r--src/stores/lib/Request.ts1
-rw-r--r--src/stores/lib/TypedStore.ts2
-rw-r--r--src/styles/animations.scss50
-rw-r--r--src/styles/auth.scss67
-rw-r--r--src/styles/badge.scss6
-rw-r--r--src/styles/button.scss4
-rw-r--r--src/styles/colors.scss72
-rw-r--r--src/styles/globals.scss46
-rw-r--r--src/styles/info-bar.scss34
-rw-r--r--src/styles/infobox.scss26
-rw-r--r--src/styles/input.scss40
-rw-r--r--src/styles/invite.scss8
-rw-r--r--src/styles/layout.scss6
-rw-r--r--src/styles/reset.scss139
-rw-r--r--src/styles/searchInput.scss4
-rw-r--r--src/styles/select.scss2
-rw-r--r--src/styles/service-table.scss34
-rw-r--r--src/styles/services.scss29
-rw-r--r--src/styles/settings.scss162
-rw-r--r--src/styles/status-bar-target-url.scss2
-rw-r--r--src/styles/tabs.scss7
-rw-r--r--src/styles/title-bar.scss36
-rw-r--r--src/styles/toggle.scss2
-rw-r--r--src/styles/type-helper.scss99
-rw-r--r--src/styles/type.scss4
-rw-r--r--src/styles/vertical.scss21
-rw-r--r--src/styles/welcome.scss4
-rw-r--r--src/themes/default/index.ts2
-rw-r--r--src/themes/legacy/index.ts11
-rw-r--r--src/webview/contextMenuBuilder.ts50
-rw-r--r--src/webview/darkmode.ts2
-rw-r--r--src/webview/lib/Userscript.ts9
-rw-r--r--src/webview/recipe.ts21
-rw-r--r--test/helpers/update-helpers.test.ts29
-rw-r--r--test/jsUtils.test.ts12
163 files changed, 3420 insertions, 2172 deletions
diff --git a/.eslintignore b/.eslintignore
index 79e0599d5..f1867f427 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -31,6 +31,3 @@ node_modules
31# package files 31# package files
32package.json 32package.json
33pnpm-lock.yaml 33pnpm-lock.yaml
34
35# Json
36*.json
diff --git a/.eslintrc.js b/.eslintrc.js
index e89b5a618..94dcbf8e8 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,18 +1,24 @@
1/** @type {import('eslint').Linter.Config} */ 1/** @type {import('eslint').Linter.Config} */
2
3module.exports = { 2module.exports = {
4 root: true, 3 root: true,
5 parserOptions: { 4 parserOptions: {
6 ecmaFeatures: { 5 ecmaFeatures: {
7 jsx: true, 6 jsx: true,
8 }, 7 },
9 ecmaVersion: 2018, 8 ecmaVersion: 'latest',
10 sourceType: 'module', 9 sourceType: 'module',
11 project: './tsconfig.json', 10 project: './tsconfig.json',
12 }, 11 },
13 ignorePatterns: ['node_modules', 'build', 'recipes', '.eslintrc.js'], 12 ignorePatterns: ['node_modules', 'build', 'recipes'],
14 extends: ['airbnb', 'plugin:unicorn/recommended', 'prettier'], 13 extends: [
15 plugins: ['jest', 'prettier'], 14 'airbnb',
15 'plugin:react/jsx-runtime',
16 'plugin:jest/recommended',
17 'plugin:unicorn/recommended',
18 'plugin:sonar/recommended',
19 'plugin:prettier/recommended',
20 ],
21 plugins: ['jest'],
16 settings: { 22 settings: {
17 react: { 23 react: {
18 pragma: 'React', // Pragma to use, default to "React" 24 pragma: 'React', // Pragma to use, default to "React"
@@ -24,127 +30,55 @@ module.exports = {
24 }, 30 },
25 env: { 31 env: {
26 browser: true, 32 browser: true,
27 es6: true, 33 es2024: true,
28 node: true, 34 node: true,
29 jest: true, 35 jest: true,
30 }, 36 },
37 reportUnusedDisableDirectives: true,
31 overrides: [ 38 overrides: [
32 { 39 {
33 files: ['**/*.ts', '**/*.tsx'], 40 files: ['**/*.ts', '**/*.tsx'],
34 extends: ['airbnb-typescript', 'plugin:unicorn/recommended', 'prettier'], 41 extends: [
42 'airbnb-typescript',
43 'plugin:@typescript-eslint/eslint-recommended',
44 'plugin:@typescript-eslint/strict',
45 // TODO: Opt-in to a stricter ruleset in the future
46 // 'plugin:@typescript-eslint/strict-type-checked',
47 'plugin:@typescript-eslint/stylistic-type-checked',
48 ],
35 parser: '@typescript-eslint/parser', 49 parser: '@typescript-eslint/parser',
36 plugins: ['@typescript-eslint', 'jest', 'prettier'], 50 plugins: [],
37 rules: { 51 rules: {
38 // eslint 52 // eslint
39 'arrow-parens': 0, 53 'no-use-before-define': 2,
40 'array-callback-return': 1, 54
41 'class-methods-use-this': 0,
42 'consistent-return': 0,
43 'function-paren-newline': 0,
44 'implicit-arrow-linebreak': 0,
45 'linebreak-style': 0,
46 'max-len': 0,
47 'no-confusing-arrow': 0,
48 'no-console': 0,
49 'no-param-reassign': 0,
50 'no-restricted-syntax': 0,
51 'no-return-assign': 1,
52 'no-underscore-dangle': 0,
53 'no-use-before-define': 0,
54 'prefer-destructuring': 1,
55 'object-curly-newline': 0,
56 'operator-linebreak': 0,
57 // @typescript-eslint 55 // @typescript-eslint
58 // TODO: Turn this rule on again after gulp -> webpack migration
59 // gulp-typescript doesn't consider custom index.d.ts in @types
60 // This is necessary as workaround for window.ferdium vs window['ferdium'] 56 // This is necessary as workaround for window.ferdium vs window['ferdium']
61 '@typescript-eslint/dot-notation': 0, 57 '@typescript-eslint/dot-notation': 0,
62 '@typescript-eslint/indent': 0, 58 '@typescript-eslint/indent': 0,
63 '@typescript-eslint/no-shadow': 0, 59 '@typescript-eslint/no-shadow': 0,
64 '@typescript-eslint/no-unused-expressions': 0, 60 '@typescript-eslint/no-var-requires': 0,
61 '@typescript-eslint/no-explicit-any': 0,
62 '@typescript-eslint/no-inferrable-types': 0,
63 '@typescript-eslint/no-non-null-assertion': 0,
64 '@typescript-eslint/prefer-nullish-coalescing': 0,
65 '@typescript-eslint/consistent-indexed-object-style': 0,
66 '@typescript-eslint/consistent-type-assertions': 0,
67 '@typescript-eslint/consistent-type-definitions': 0,
68 '@typescript-eslint/no-empty-interface': 0,
69
65 // eslint-plugin-import 70 // eslint-plugin-import
66 'import/extensions': 0,
67 'import/no-cycle': 1,
68 'import/no-extraneous-dependencies': 0, 71 'import/no-extraneous-dependencies': 0,
69 'import/no-unresolved': 0,
70 'import/prefer-default-export': 0,
71 // eslint-plugin-react
72 // TODO: [TS DEBT] should remove below config once application converted to TS
73 'react/default-props-match-prop-types': 0,
74 'react/require-default-props': 0,
75 '@typescript-eslint/no-useless-constructor': 0,
76 // eslint-plugin-react
77 'react/destructuring-assignment': 0,
78 'react/button-has-type': 0,
79 'react/forbid-prop-types': 0,
80 'react/jsx-curly-newline': 0,
81 'react/no-unused-prop-types': 1,
82 'react/react-in-jsx-scope': 0,
83 'react/jsx-no-bind': 0,
84 'react/jsx-no-target-blank': 0,
85 'react/jsx-props-no-spreading': 0,
86 'react/no-deprecated': 1,
87 'react/no-array-index-key': 0,
88 'react/prefer-stateless-function': 0,
89 'react/sort-comp': 0,
90 'react/state-in-constructor': 0,
91 'react/static-property-placement': 0,
92 'react/function-component-definition': 0,
93 'react/jsx-no-useless-fragment': 0,
94 // eslint-plugin-jsx-a11y
95 'jsx-a11y/click-events-have-key-events': 1,
96 'jsx-a11y/mouse-events-have-key-events': 1,
97 'jsx-a11y/label-has-for': [
98 2,
99 {
100 components: ['Label'],
101 required: {
102 every: ['id'],
103 },
104 allowChildren: false,
105 },
106 ],
107 'jsx-a11y/no-static-element-interactions': 0,
108 'jsx-a11y/no-noninteractive-element-interactions': 1,
109 // eslint-plugin-unicorn
110 'unicorn/filename-case': 0,
111 'unicorn/no-null': 0,
112 'unicorn/no-useless-undefined': 0,
113 'unicorn/prefer-module': 0,
114 'unicorn/prevent-abbreviations': 0,
115 'unicorn/prefer-node-protocol': 0,
116 'unicorn/import-style': [
117 2,
118 {
119 styles: {
120 path: {
121 named: true,
122 },
123 },
124 },
125 ],
126 'unicorn/consistent-destructuring': 0,
127 // INFO: Turned off due to src/internal-server/database/factory.js
128 'unicorn/no-empty-file': 0,
129 // eslint-plugin-prettier
130 'prettier/prettier': 1,
131 }, 72 },
132 }, 73 },
133 ], 74 ],
134 rules: { 75 rules: {
135 // eslint 76 // eslint
136 'arrow-parens': 0, 77 'array-callback-return': 1,
137 'class-methods-use-this': 0, 78 'class-methods-use-this': 0,
138 'consistent-return': 1, 79 'consistent-return': 1,
139 'implicit-arrow-linebreak': 0,
140 indent: 0,
141 // TODO: Turn this rule on once the js to ts conversions are over
142 // This is necessary as workaround for window.ferdium vs window['ferdium']
143 'dot-notation': 0,
144 'function-paren-newline': 0,
145 'linebreak-style': 0,
146 'max-len': 0,
147 'no-await-in-loop': 1, 80 'no-await-in-loop': 1,
81 'no-return-assign': 1,
148 'no-console': [ 82 'no-console': [
149 1, 83 1,
150 { 84 {
@@ -154,41 +88,47 @@ module.exports = {
154 'no-param-reassign': 1, 88 'no-param-reassign': 1,
155 'no-restricted-syntax': 0, 89 'no-restricted-syntax': 0,
156 'no-underscore-dangle': 0, 90 'no-underscore-dangle': 0,
157 'operator-linebreak': 0,
158 'prefer-destructuring': 1, 91 'prefer-destructuring': 1,
159 'object-curly-newline': 0,
160 // eslint-plugin-import 92 // eslint-plugin-import
161 'import/extensions': 0, 93 'import/extensions': 0,
162 'import/prefer-default-export': 0, 94 'import/prefer-default-export': 0,
163 'import/no-extraneous-dependencies': 0, // various false positives, re-enable at some point
164 'import/no-unresolved': 0, 95 'import/no-unresolved': 0,
96 'import/no-cycle': 1,
97 'import/no-extraneous-dependencies': 0,
165 // eslint-plugin-react 98 // eslint-plugin-react
166 'react/forbid-prop-types': 1, 99 'react/forbid-prop-types': 1,
167 'react/destructuring-assignment': 0, 100 'react/destructuring-assignment': 0,
168 'react/jsx-curly-newline': 0,
169 'react/react-in-jsx-scope': 0,
170 'react/jsx-filename-extension': 1, 101 'react/jsx-filename-extension': 1,
171 'react/jsx-one-expression-per-line': 0,
172 'react/jsx-no-bind': 1, 102 'react/jsx-no-bind': 1,
173 'react/jsx-props-no-spreading': 0, 103 'react/jsx-props-no-spreading': 0,
174 'react/prefer-stateless-function': 1, 104 'react/prefer-stateless-function': 1,
175 'react/prop-types': 0,
176 'react/static-property-placement': 0, 105 'react/static-property-placement': 0,
177 'react/state-in-constructor': 1, 106 'react/state-in-constructor': 1,
178 'react/sort-comp': 0, 107 'react/sort-comp': 0,
179 'react/function-component-definition': 0, 108 'react/function-component-definition': 0,
180 'react/jsx-no-useless-fragment': 0, 109 'react/default-props-match-prop-types': 0,
181 // eslint-plugin-jsx-a11y 110 'react/require-default-props': 0,
111 'react/no-unused-prop-types': 1,
112 'react/no-deprecated': 1,
113 // eslint-plugin-jsx-a11y
182 'jsx-a11y/click-events-have-key-events': 1, 114 'jsx-a11y/click-events-have-key-events': 1,
183 'jsx-a11y/no-static-element-interactions': 1, 115 'jsx-a11y/no-static-element-interactions': 1,
184 'jsx-a11y/no-noninteractive-element-interactions': 1, 116 'jsx-a11y/no-noninteractive-element-interactions': 1,
185 // eslint-plugin-unicorn 117 'jsx-a11y/label-has-for': [
118 2,
119 {
120 components: ['Label'],
121 required: {
122 every: ['id'],
123 },
124 allowChildren: false,
125 },
126 ],
127 // eslint-plugin-unicorn
186 'unicorn/filename-case': 0, 128 'unicorn/filename-case': 0,
187 'unicorn/no-null': 0, 129 'unicorn/no-null': 0,
188 'unicorn/no-useless-undefined': 0,
189 'unicorn/prefer-module': 0, 130 'unicorn/prefer-module': 0,
190 'unicorn/prevent-abbreviations': 0, 131 'unicorn/prevent-abbreviations': 0,
191 'unicorn/prefer-node-protocol': 0,
192 'unicorn/import-style': [ 132 'unicorn/import-style': [
193 2, 133 2,
194 { 134 {
@@ -200,9 +140,7 @@ module.exports = {
200 }, 140 },
201 ], 141 ],
202 'unicorn/consistent-destructuring': 0, 142 'unicorn/consistent-destructuring': 0,
203 // INFO: Turned off due to src/internal-server/database/factory.js 143 // eslint-plugin-sonar
204 'unicorn/no-empty-file': 0, 144 'sonar/function-name': 0,
205 // eslint-plugin-prettier
206 'prettier/prettier': 1,
207 }, 145 },
208}; 146};
diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml
index 09eb68fde..84feaa167 100644
--- a/.github/workflows/builds.yml
+++ b/.github/workflows/builds.yml
@@ -23,7 +23,7 @@ on:
23 workflow_dispatch: 23 workflow_dispatch:
24 inputs: 24 inputs:
25 message: 25 message:
26 description: "Message for build" 26 description: 'Message for build'
27 required: true 27 required: true
28 schedule: 28 schedule:
29 - cron: '0 0 * * *' # every night at 12 am 29 - cron: '0 0 * * *' # every night at 12 am
@@ -34,8 +34,8 @@ env:
34 34
35jobs: 35jobs:
36 check_updates: 36 check_updates:
37 runs-on: ubuntu-20.04 37 runs-on: ubuntu-22.04
38 name: "Check latest commit: ${{ github.event.inputs.message }}" 38 name: 'Check latest commit: ${{ github.event.inputs.message }}'
39 outputs: 39 outputs:
40 should_run: ${{ steps.should_run.outputs.should_run }} 40 should_run: ${{ steps.should_run.outputs.should_run }}
41 steps: 41 steps:
@@ -46,17 +46,18 @@ jobs:
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
50 uses: pnpm/action-setup@v2
51 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }}
49 - name: Use Node.js specified in the '.nvmrc' file 52 - name: Use Node.js specified in the '.nvmrc' file
50 uses: actions/setup-node@v3 53 uses: actions/setup-node@v3
51 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]')) }}
52 with: 55 with:
53 node-version-file: ".nvmrc" 56 node-version-file: '.nvmrc'
54 - name: Install pnpm 57 cache: 'pnpm'
55 if: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && contains(github.event.inputs.message, '[nightly branch]')) }}
56 run: npm i -gf "pnpm@$(node -p 'require("./package.json").engines.pnpm')" && pnpm -v
57 - name: Install node dependencies 58 - name: Install node dependencies
58 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]')) }}
59 uses: nick-fields/retry@v2.8.2 60 uses: nick-fields/retry@v2.8.3
60 with: 61 with:
61 command: pnpm i 62 command: pnpm i
62 timeout_minutes: 15 63 timeout_minutes: 15
@@ -128,7 +129,7 @@ jobs:
128 fi 129 fi
129 130
130 build_mac: 131 build_mac:
131 name: "macos ${{ github.event.inputs.message }}" 132 name: 'macos ${{ github.event.inputs.message }}'
132 needs: check_updates 133 needs: check_updates
133 if: ${{ (needs.check_updates.outputs.should_run != 'false') && (github.event_name != 'workflow_dispatch' || (github.event_name == 'workflow_dispatch' && (contains(github.event.inputs.message, '[macOS]') || (!contains(github.event.inputs.message, '[macOS]') && !contains(github.event.inputs.message, '[Linux]') && !contains(github.event.inputs.message, '[Windows]'))))) }} 134 if: ${{ (needs.check_updates.outputs.should_run != 'false') && (github.event_name != 'workflow_dispatch' || (github.event_name == 'workflow_dispatch' && (contains(github.event.inputs.message, '[macOS]') || (!contains(github.event.inputs.message, '[macOS]') && !contains(github.event.inputs.message, '[Linux]') && !contains(github.event.inputs.message, '[Windows]'))))) }}
134 runs-on: macos-12 135 runs-on: macos-12
@@ -136,7 +137,6 @@ jobs:
136 - name: Set env vars 137 - name: Set env vars
137 run: | 138 run: |
138 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV 139 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV
139 echo "PNPM_CACHE=$HOME/.pnpm-store" >> $GITHUB_ENV
140 echo "ELECTRON_CACHE=$HOME/.cache/electron" >> $GITHUB_ENV 140 echo "ELECTRON_CACHE=$HOME/.cache/electron" >> $GITHUB_ENV
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
@@ -161,23 +161,24 @@ jobs:
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('./package-lock.json') }} 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@v3
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('./package-lock.json') }} 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
174 uses: pnpm/action-setup@v2
173 - name: Use Node.js specified in the '.nvmrc' file 175 - name: Use Node.js specified in the '.nvmrc' file
174 uses: actions/setup-node@v3 176 uses: actions/setup-node@v3
175 with: 177 with:
176 node-version-file: ".nvmrc" 178 node-version-file: '.nvmrc'
177 - name: Install pnpm 179 cache: 'pnpm'
178 run: npm i -gf "pnpm@$(node -p 'require("./package.json").engines.pnpm')" && pnpm -v
179 - name: Install node dependencies 180 - name: Install node dependencies
180 uses: nick-fields/retry@v2.8.2 181 uses: nick-fields/retry@v2.8.3
181 with: 182 with:
182 command: pnpm i 183 command: pnpm i
183 timeout_minutes: 15 184 timeout_minutes: 15
@@ -207,15 +208,14 @@ jobs:
207 shell: bash 208 shell: bash
208 209
209 build_linux: 210 build_linux:
210 name: "ubuntu ${{ github.event.inputs.message }}" 211 name: 'ubuntu ${{ github.event.inputs.message }}'
211 needs: check_updates 212 needs: check_updates
212 if: ${{ (needs.check_updates.outputs.should_run != 'false') && (github.event_name != 'workflow_dispatch' || (github.event_name == 'workflow_dispatch' && (contains(github.event.inputs.message, '[Linux]') || (!contains(github.event.inputs.message, '[macOS]') && !contains(github.event.inputs.message, '[Linux]') && !contains(github.event.inputs.message, '[Windows]'))))) }} 213 if: ${{ (needs.check_updates.outputs.should_run != 'false') && (github.event_name != 'workflow_dispatch' || (github.event_name == 'workflow_dispatch' && (contains(github.event.inputs.message, '[Linux]') || (!contains(github.event.inputs.message, '[macOS]') && !contains(github.event.inputs.message, '[Linux]') && !contains(github.event.inputs.message, '[Windows]'))))) }}
213 runs-on: ubuntu-20.04 214 runs-on: ubuntu-22.04
214 steps: 215 steps:
215 - name: Set env vars 216 - name: Set env vars
216 run: | 217 run: |
217 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV 218 echo "NPM_CACHE=$HOME/.npm" >> $GITHUB_ENV
218 echo "PNPM_CACHE=$HOME/.pnpm-store" >> $GITHUB_ENV
219 echo "ELECTRON_CACHE=$HOME/.cache/electron" >> $GITHUB_ENV 219 echo "ELECTRON_CACHE=$HOME/.cache/electron" >> $GITHUB_ENV
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
@@ -240,23 +240,24 @@ jobs:
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('./package-lock.json') }} 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@v3
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('./package-lock.json') }} 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
253 uses: pnpm/action-setup@v2
252 - name: Use Node.js specified in the '.nvmrc' file 254 - name: Use Node.js specified in the '.nvmrc' file
253 uses: actions/setup-node@v3 255 uses: actions/setup-node@v3
254 with: 256 with:
255 node-version-file: ".nvmrc" 257 node-version-file: '.nvmrc'
256 - name: Install pnpm 258 cache: 'pnpm'
257 run: npm i -gf "pnpm@$(node -p 'require("./package.json").engines.pnpm')" && pnpm -v
258 - name: Install node dependencies 259 - name: Install node dependencies
259 uses: nick-fields/retry@v2.8.2 260 uses: nick-fields/retry@v2.8.3
260 with: 261 with:
261 command: pnpm i 262 command: pnpm i
262 timeout_minutes: 15 263 timeout_minutes: 15
@@ -305,16 +306,15 @@ jobs:
305 shell: bash 306 shell: bash
306 307
307 build_windows: 308 build_windows:
308 name: "windows ${{ github.event.inputs.message }}" 309 name: 'windows ${{ github.event.inputs.message }}'
309 needs: check_updates 310 needs: check_updates
310 if: ${{ (needs.check_updates.outputs.should_run != 'false') && (github.event_name != 'workflow_dispatch' || (github.event_name == 'workflow_dispatch' && (contains(github.event.inputs.message, '[Windows]') || (!contains(github.event.inputs.message, '[macOS]') && !contains(github.event.inputs.message, '[Linux]') && !contains(github.event.inputs.message, '[Windows]'))))) }} 311 if: ${{ (needs.check_updates.outputs.should_run != 'false') && (github.event_name != 'workflow_dispatch' || (github.event_name == 'workflow_dispatch' && (contains(github.event.inputs.message, '[Windows]') || (!contains(github.event.inputs.message, '[macOS]') && !contains(github.event.inputs.message, '[Linux]') && !contains(github.event.inputs.message, '[Windows]'))))) }}
311 runs-on: windows-2019 312 runs-on: windows-2022
312 steps: 313 steps:
313 - name: Set env vars 314 - name: Set env vars
314 run: | 315 run: |
315 echo "HOME=$USERPROFILE" >> $GITHUB_ENV 316 echo "HOME=$USERPROFILE" >> $GITHUB_ENV
316 echo "NPM_CACHE=$USERPROFILE/.npm" >> $GITHUB_ENV 317 echo "NPM_CACHE=$USERPROFILE/.npm" >> $GITHUB_ENV
317 echo "PNPM_CACHE=$USERPROFILE/.pnpm-store" >> $GITHUB_ENV
318 echo "ELECTRON_CACHE=$USERPROFILE/.cache/electron" >> $GITHUB_ENV 318 echo "ELECTRON_CACHE=$USERPROFILE/.cache/electron" >> $GITHUB_ENV
319 echo "ELECTRON_BUILDER_CACHE=$USERPROFILE/.cache/electron-builder" >> $GITHUB_ENV 319 echo "ELECTRON_BUILDER_CACHE=$USERPROFILE/.cache/electron-builder" >> $GITHUB_ENV
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
@@ -340,27 +340,24 @@ jobs:
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('./package-lock.json') }} 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@v3
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('./package-lock.json') }} 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
353 uses: pnpm/action-setup@v2
352 - name: Use Node.js specified in the '.nvmrc' file 354 - name: Use Node.js specified in the '.nvmrc' file
353 uses: actions/setup-node@v3 355 uses: actions/setup-node@v3
354 with: 356 with:
355 node-version-file: ".nvmrc" 357 node-version-file: '.nvmrc'
356 - name: Install pnpm 358 cache: 'pnpm'
357 run: npm i -gf "pnpm@$(node -p 'require(\"./package.json\").engines.pnpm')" && pnpm -v
358 # TODO: Remove this once https://github.com/electron-userland/electron-builder/issues/6933#issuecomment-1213438889 is resolved
359 - name: Tweak pnpm.cjs
360 run: sed -i 's/\/usr\/bin\/env node/node/g' /c/npm/prefix/node_modules/pnpm/bin/pnpm.cjs
361 shell: bash
362 - name: Install node dependencies 359 - name: Install node dependencies
363 uses: nick-fields/retry@v2.8.2 360 uses: nick-fields/retry@v2.8.3
364 with: 361 with:
365 command: pnpm i 362 command: pnpm i
366 timeout_minutes: 15 363 timeout_minutes: 15
@@ -383,8 +380,6 @@ jobs:
383 if: ${{ env.GIT_BRANCH_NAME == 'nightly' || env.GIT_BRANCH_NAME == 'release' }} 380 if: ${{ env.GIT_BRANCH_NAME == 'nightly' || env.GIT_BRANCH_NAME == 'release' }}
384 env: 381 env:
385 GH_TOKEN: ${{ secrets.FERDIUM_PUBLISH_TOKEN }} 382 GH_TOKEN: ${{ secrets.FERDIUM_PUBLISH_TOKEN }}
386 CSC_IDENTITY_AUTO_DISCOVERY: true 383 CSC_IDENTITY_AUTO_DISCOVERY: false
387 WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
388 WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
389 run: pnpm build --publish always 384 run: pnpm build --publish always
390 shell: bash 385 shell: bash
diff --git a/.npmrc b/.npmrc
index 9de4cdb0f..537d986a1 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1,5 +1,5 @@
1save-exact = true 1save-exact = true
2engine-strict = true 2engine-strict = true
3unsafe-perm = true 3unsafe-perm = true
4legacy-peer-deps = true
5frozen-lockfile = false 4frozen-lockfile = false
5strict-peer-dependencies = true
diff --git a/.prettierrc.js b/.prettierrc.js
index 6a0a09497..f2feee853 100644
--- a/.prettierrc.js
+++ b/.prettierrc.js
@@ -1,5 +1,5 @@
1/** @type {import("prettier").Options} */
1module.exports = { 2module.exports = {
2 singleQuote: true, 3 singleQuote: true,
3 arrowParens: 'avoid', 4 arrowParens: 'avoid',
4 trailingComma: 'all',
5}; 5};
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 815aa0cfb..ac616e418 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -8,8 +8,6 @@
8 // "editor.fontFamily": "Fira Code", 8 // "editor.fontFamily": "Fira Code",
9 // "editor.fontLigatures": true, 9 // "editor.fontLigatures": true,
10 "editor.detectIndentation": false, 10 "editor.detectIndentation": false,
11 "editor.bracketPairColorization.enabled": true,
12 "editor.bracketPairColorization.independentColorPoolPerBracketType": true,
13 "editor.guides.bracketPairs": "active", 11 "editor.guides.bracketPairs": "active",
14 "editor.codeActionsOnSave": { 12 "editor.codeActionsOnSave": {
15 "source.fixAll": true, 13 "source.fixAll": true,
@@ -19,21 +17,17 @@
19 // "explorer.confirmDelete": false, 17 // "explorer.confirmDelete": false,
20 // "explorer.confirmDragAndDrop": false, 18 // "explorer.confirmDragAndDrop": false,
21 19
22 "eslint.enable": true,
23 "eslint.runtime": "node", 20 "eslint.runtime": "node",
24 "eslint.format.enable": true, 21 "eslint.format.enable": true,
25 "eslint.alwaysShowStatus": true, 22 "eslint.workingDirectories": [{ "mode": "auto" }],
26 "eslint.workingDirectories": [ { "mode": "auto" } ],
27 // "eslint.packageManager": "npm", 23 // "eslint.packageManager": "npm",
28 "eslint.validate": ["javascript","javascriptreact","typescript","typescriptreact"], 24 "eslint.validate": [
29 "editor.defaultFormatter": "dbaeumer.vscode-eslint", 25 "javascript",
30 "[javascript]": { "editor.defaultFormatter": "dbaeumer.vscode-eslint" }, 26 "javascriptreact",
31 "[javascriptreact]": { "editor.defaultFormatter": "dbaeumer.vscode-eslint" }, 27 "typescript",
32 "[typescript]": { "editor.defaultFormatter": "dbaeumer.vscode-eslint" }, 28 "typescriptreact"
33 "[typescriptreact]": { "editor.defaultFormatter": "dbaeumer.vscode-eslint" }, 29 ],
34 "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, 30 "editor.defaultFormatter": "esbenp.prettier-vscode",
35 "[jsonc]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
36
37 31
38 // "workbench.colorTheme": "Visual Studio Dark", 32 // "workbench.colorTheme": "Visual Studio Dark",
39 // "workbench.iconTheme": "material-icon-theme", 33 // "workbench.iconTheme": "material-icon-theme",
@@ -42,15 +36,12 @@
42 // "terminal.integrated.copyOnSelection": true, 36 // "terminal.integrated.copyOnSelection": true,
43 "terminal.integrated.defaultProfile.osx": "zsh", 37 "terminal.integrated.defaultProfile.osx": "zsh",
44 "terminal.integrated.cursorBlinking": true, 38 "terminal.integrated.cursorBlinking": true,
45 "terminal.integrated.cursorStyle": "block",
46 "terminal.integrated.shellIntegration.enabled":true,
47 39
48 "git.mergeEditor": false,
49 "git.enableSmartCommit": true, 40 "git.enableSmartCommit": true,
50 "diffEditor.ignoreTrimWhitespace": false, 41 "diffEditor.ignoreTrimWhitespace": false,
51 42
52 // "formatFiles.runOrganizeImports": true, 43 // "formatFiles.runOrganizeImports": true,
53 44
54 "javascript.preferences.importModuleSpecifier": "relative", 45 "javascript.preferences.importModuleSpecifier": "relative",
55 "typescript.preferences.importModuleSpecifier": "relative", 46 "typescript.preferences.importModuleSpecifier": "relative"
56} 47}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 149fb747b..59a8dccb5 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -182,7 +182,9 @@ git checkout nightly && git pull -r
182git checkout release 182git checkout release
183git merge --no-ff nightly --no-verify 183git merge --no-ff nightly --no-verify
184# <manually resolve conflicts> 184# <manually resolve conflicts>
185# <manually bump version with 'beta' name (if beta) in `package.json` and `package-lock.json`> 185# <manually bump version with 'beta' name (if beta) in `package.json`>
186# <run the build script for your OS from the `scripts` folder>
187# <add all pertinent changes to git>
186# <create commit> 188# <create commit>
187# <create tag> 189# <create tag>
188git push 190git push
diff --git a/commitlint.config.js b/commitlint.config.js
index 28fe5c5bf..422b19445 100644
--- a/commitlint.config.js
+++ b/commitlint.config.js
@@ -1 +1 @@
module.exports = {extends: ['@commitlint/config-conventional']} module.exports = { extends: ['@commitlint/config-conventional'] };
diff --git a/jest.config.js b/jest.config.js
index ba4ed9cd2..6639ca88b 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -1,8 +1,8 @@
1/** @type {import('@jest/types').Config.InitialOptions} */
2/* 1/*
3 * For a detailed explanation regarding each configuration property and type check, visit: 2 * For a detailed explanation regarding each configuration property and type check, visit:
4 * https://jestjs.io/docs/configuration 3 * https://jestjs.io/docs/configuration
5 */ 4 */
5/** @type {import('@jest/types').Config.InitialOptions} */
6module.exports = { 6module.exports = {
7 // Automatically clear mock calls, instances and results before every test 7 // Automatically clear mock calls, instances and results before every test
8 clearMocks: true, 8 clearMocks: true,
@@ -31,8 +31,8 @@ module.exports = {
31 '/src/internal-server', 31 '/src/internal-server',
32 ], 32 ],
33 33
34 "transform": { 34 transform: {
35 "^.+\\.tsx?$": "esbuild-runner/jest", 35 '^.+\\.tsx?$': 'esbuild-runner/jest',
36 "^.+\\.ts?$": "esbuild-runner/jest" 36 '^.+\\.ts?$': 'esbuild-runner/jest',
37 } 37 },
38}; 38};
diff --git a/package.json b/package.json
index 490e74c86..70668fa08 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.4.0", 6 "version": "6.4.1-beta.1",
7 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", 7 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, 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",
@@ -17,6 +17,11 @@
17 "pnpm": "8.6.2" 17 "pnpm": "8.6.2"
18 }, 18 },
19 "engine-strict": true, 19 "engine-strict": true,
20 "volta": {
21 "node": "18.15.0",
22 "pnpm": "8.6.2"
23 },
24 "packageManager": "pnpm@8.6.2",
20 "scripts": { 25 "scripts": {
21 "prepare": "is-ci || husky install", 26 "prepare": "is-ci || husky install",
22 "start": "electron ./build", 27 "start": "electron ./build",
@@ -26,15 +31,16 @@
26 "dev": "node esbuild.mjs --watch", 31 "dev": "node esbuild.mjs --watch",
27 "test": "jest", 32 "test": "jest",
28 "test:watch": "jest --watch", 33 "test:watch": "jest --watch",
29 "lint": "tsc --noEmit && eslint \"{src,test,scripts}/**/*.{js,jsx,mjs,ts,tsx}\"", 34 "typecheck": "tsc --noEmit",
35 "lint": "eslint \"{src,test,scripts}/**/*.{js,jsx,mjs,ts,tsx}\"",
30 "lint:fix": "eslint --fix \"{src,test,scripts}/**/*.{js,jsx,mjs,ts,tsx}\"", 36 "lint:fix": "eslint --fix \"{src,test,scripts}/**/*.{js,jsx,mjs,ts,tsx}\"",
31 "extract": "formatjs extract \"src/**/*.{js,jsx,mjs,ts,tsx}\" --ignore=\"**/*.d.ts\" --out-file temp.json --flatten --id-interpolation-pattern '[sha512:contenthash:base64:6]' --preserve-whitespace", 37 "extract": "formatjs extract \"src/**/*.{js,jsx,mjs,ts,tsx}\" --ignore=\"**/*.d.ts\" --out-file temp.json --flatten --id-interpolation-pattern '[sha512:contenthash:base64:6]' --preserve-whitespace",
32 "compile": "formatjs compile \"temp.json\" --out-file src/i18n/locales/en-US.json", 38 "compile": "formatjs compile \"temp.json\" --out-file src/i18n/locales/en-US.json",
33 "manage-translations": "pnpm extract && pnpm compile && rimraf temp.json", 39 "manage-translations": "pnpm extract && pnpm compile && rimraf temp.json",
34 "build": "preval-build-info-cli && node esbuild.mjs && electron-builder", 40 "build": "preval-build-info-cli && node esbuild.mjs && electron-builder",
35 "contributors": "all-contributors", 41 "contributors": "all-contributors",
36 "reformat-files": "prettier --ignore-path .eslintignore --write --require-pragma \"**/*.{js,jsx,mjs,ts,tsx,scss}\"", 42 "reformat-files": "prettier --ignore-path .eslintignore --write \"**/*.{js,jsx,mjs,ts,tsx,scss}\"",
37 "prepare-code": "pnpm lint:fix && pnpm reformat-files && pnpm manage-translations", 43 "prepare-code": "pnpm typecheck && pnpm lint:fix && pnpm reformat-files && pnpm manage-translations",
38 "link-readme": "ts-node scripts/link-readme.ts", 44 "link-readme": "ts-node scripts/link-readme.ts",
39 "minify-images": "./scripts/minify-images.sh", 45 "minify-images": "./scripts/minify-images.sh",
40 "start:server": "ts-node src/internal-server/test.ts", 46 "start:server": "ts-node src/internal-server/test.ts",
@@ -59,11 +65,10 @@
59 "@krisdages/electron-process-manager": "3.0.0", 65 "@krisdages/electron-process-manager": "3.0.0",
60 "@mdi/js": "7.2.96", 66 "@mdi/js": "7.2.96",
61 "@mdi/react": "1.6.1", 67 "@mdi/react": "1.6.1",
62 "@octokit/core": "4.2.1", 68 "@octokit/core": "5.0.0",
63 "@sentry/electron": "4.1.2", 69 "@sentry/electron": "4.1.2",
64 "@superwf/mobx-react-router": "7.4.0", 70 "@superwf/mobx-react-router": "7.4.0",
65 "auto-launch": "5.0.6", 71 "auto-launch": "5.0.6",
66 "btoa": "1.2.1",
67 "classnames": "2.3.2", 72 "classnames": "2.3.2",
68 "color": "4.2.3", 73 "color": "4.2.3",
69 "csstype": "3.1.2", 74 "csstype": "3.1.2",
@@ -75,22 +80,22 @@
75 "electron-react-titlebar": "1.2.1", 80 "electron-react-titlebar": "1.2.1",
76 "electron-updater": "5.3.0", 81 "electron-updater": "5.3.0",
77 "electron-window-state": "5.0.3", 82 "electron-window-state": "5.0.3",
78 "fast-folder-size": "1.7.1", 83 "fast-folder-size": "2.1.0",
79 "fs-extra": "11.1.1", 84 "fs-extra": "11.1.1",
80 "google-translate-api-x": "10.6.7", 85 "google-translate-api-x": "10.6.7",
81 "history": "5.3.0", 86 "history": "5.3.0",
82 "immutable": "4.3.0", 87 "immutable": "4.3.1",
83 "jsonwebtoken": "9.0.0", 88 "jsonwebtoken": "9.0.1",
84 "jss": "10.10.0", 89 "jss": "10.10.0",
85 "languagedetect": "2.0.0", 90 "languagedetect": "2.0.0",
86 "lodash": "4.17.21", 91 "lodash": "4.17.21",
87 "macos-version": "5.2.1", 92 "macos-version": "5.2.1",
88 "markdown-to-jsx": "7.2.1", 93 "markdown-to-jsx": "7.2.1",
89 "minimist": "1.2.8", 94 "minimist": "1.2.8",
90 "mobx": "6.9.0", 95 "mobx": "6.10.0",
91 "mobx-localstorage": "1.2.0", 96 "mobx-localstorage": "1.2.0",
92 "mobx-react": "7.6.0", 97 "mobx-react": "7.6.0",
93 "mobx-react-form": "3.2.0", 98 "mobx-react-form": "6.3.5",
94 "moment": "2.29.4", 99 "moment": "2.29.4",
95 "ms": "2.1.3", 100 "ms": "2.1.3",
96 "node-fetch": "2.6.11", 101 "node-fetch": "2.6.11",
@@ -108,78 +113,112 @@
108 "react-jss": "10.10.0", 113 "react-jss": "10.10.0",
109 "react-loader": "2.4.7", 114 "react-loader": "2.4.7",
110 "react-modal": "3.16.1", 115 "react-modal": "3.16.1",
111 "react-router-dom": "6.4.2", 116 "react-router-dom": "6.11.2",
112 "react-sortable-hoc": "2.0.0", 117 "react-sortable-hoc": "2.0.0",
113 "react-tooltip": "4.5.1", 118 "react-tooltip": "5.13.1",
114 "react-topbar-progress-indicator": "4.1.1", 119 "react-topbar-progress-indicator": "4.1.1",
115 "react-transition-group": "1.2.1", 120 "react-transition-group": "4.4.5",
116 "route-parser": "0.0.5", 121 "route-parser": "0.0.5",
117 "sanitize-filename": "1.6.3", 122 "sanitize-filename": "1.6.3",
118 "semver": "7.5.1", 123 "semver": "7.5.4",
119 "sqlite3": "5.1.6", 124 "sqlite3": "5.1.6",
120 "tar": "6.1.15", 125 "tar": "6.1.15",
121 "tslib": "2.5.3", 126 "tslib": "2.6.0",
122 "useragent-generator": "1.1.1-amkt-22079-finish.0", 127 "useragent-generator": "1.1.1-amkt-22079-finish.0",
123 "uuid": "9.0.0", 128 "uuid": "9.0.0",
124 "validator": "13.9.0", 129 "validator": "13.9.0",
125 "ws": "8.13.0" 130 "ws": "8.13.0"
126 }, 131 },
127 "devDependencies": { 132 "devDependencies": {
128 "@commitlint/cli": "17.6.5", 133 "@commitlint/cli": "17.6.7",
129 "@commitlint/config-conventional": "17.6.5", 134 "@commitlint/config-conventional": "17.6.7",
130 "@electron/notarize": "1.2.3", 135 "@electron/notarize": "1.2.3",
131 "@formatjs/cli": "6.1.3", 136 "@formatjs/cli": "6.1.3",
137 "@jest/types": "29.6.1",
138 "@types/auto-launch": "5.0.2",
132 "@types/color": "3.0.3", 139 "@types/color": "3.0.3",
133 "@types/expect.js": "0.3.29",
134 "@types/fs-extra": "11.0.1", 140 "@types/fs-extra": "11.0.1",
135 "@types/jest": "29.5.2", 141 "@types/jest": "29.5.3",
136 "@types/lodash": "4.14.195", 142 "@types/lodash": "4.14.195",
143 "@types/minimist": "1.2.2",
137 "@types/ms": "0.7.31", 144 "@types/ms": "0.7.31",
138 "@types/node": "18.15.3", 145 "@types/node": "18.15.3",
146 "@types/prop-types": "15.7.5",
139 "@types/react": "18.2.12", 147 "@types/react": "18.2.12",
148 "@types/react-color": "3.0.6",
140 "@types/react-dom": "18.2.5", 149 "@types/react-dom": "18.2.5",
150 "@types/react-loader": "2.4.5",
151 "@types/react-transition-group": "4.4.6",
141 "@types/route-parser": "0.1.4", 152 "@types/route-parser": "0.1.4",
153 "@types/semver": "7.5.0",
142 "@types/tar": "6.1.5", 154 "@types/tar": "6.1.5",
143 "@types/uuid": "9.0.2", 155 "@types/uuid": "9.0.2",
144 "@types/validator": "13.7.17", 156 "@types/validator": "13.7.17",
145 "@typescript-eslint/eslint-plugin": "5.59.11", 157 "@typescript-eslint/eslint-plugin": "6.1.0",
146 "@typescript-eslint/parser": "5.59.11", 158 "@typescript-eslint/parser": "6.1.0",
147 "all-contributors-cli": "6.26.0", 159 "all-contributors-cli": "6.26.1",
148 "chalk": "5.2.0", 160 "chalk": "5.3.0",
149 "concurrently": "8.2.0", 161 "concurrently": "8.2.0",
150 "cross-env": "7.0.3", 162 "cross-env": "7.0.3",
151 "electron": "25.2.0", 163 "electron": "25.4.0",
152 "electron-builder": "24.4.0", 164 "electron-builder": "24.4.0",
153 "esbuild": "0.16.17", 165 "esbuild": "0.16.17",
154 "esbuild-plugin-copy": "2.1.1", 166 "esbuild-plugin-copy": "2.1.1",
155 "esbuild-runner": "2.2.2", 167 "esbuild-runner": "2.2.2",
156 "esbuild-sass-plugin": "2.9.0", 168 "esbuild-sass-plugin": "2.10.0",
157 "eslint": "8.39.0", 169 "eslint": "8.45.0",
158 "eslint-config-airbnb": "19.0.4", 170 "eslint-config-airbnb": "19.0.4",
159 "eslint-config-airbnb-typescript": "17.0.0", 171 "eslint-config-airbnb-typescript": "17.1.0",
160 "eslint-config-prettier": "8.8.0", 172 "eslint-config-prettier": "8.8.0",
161 "eslint-plugin-import": "2.27.5", 173 "eslint-plugin-import": "2.27.5",
162 "eslint-plugin-jest": "27.2.1", 174 "eslint-plugin-jest": "27.2.3",
163 "eslint-plugin-jsx-a11y": "6.7.1", 175 "eslint-plugin-jsx-a11y": "6.7.1",
164 "eslint-plugin-prettier": "4.2.1", 176 "eslint-plugin-prettier": "5.0.0",
165 "eslint-plugin-react": "7.32.2", 177 "eslint-plugin-react": "7.33.0",
166 "eslint-plugin-react-hooks": "4.6.0", 178 "eslint-plugin-react-hooks": "4.6.0",
167 "eslint-plugin-unicorn": "46.0.0", 179 "eslint-plugin-sonar": "0.12.0",
180 "eslint-plugin-unicorn": "48.0.0",
168 "gulp-livereload": "4.0.2", 181 "gulp-livereload": "4.0.2",
169 "husky": "8.0.3", 182 "husky": "8.0.3",
170 "is-ci": "3.0.1", 183 "is-ci": "3.0.1",
171 "jest": "29.5.0", 184 "jest": "29.6.1",
172 "prettier": "2.8.8", 185 "prettier": "3.0.0",
173 "preval-build-info": "1.0.3", 186 "preval-build-info": "1.0.3",
174 "rimraf": "5.0.1", 187 "rimraf": "5.0.1",
175 "simple-git": "3.19.0", 188 "simple-git": "3.19.1",
176 "tiny-glob": "0.2.9", 189 "tiny-glob": "0.2.9",
190 "ts-node": "10.9.1",
177 "typescript": "5.0.4", 191 "typescript": "5.0.4",
178 "wait-on": "7.0.1" 192 "wait-on": "7.0.1"
179 }, 193 },
180 "pnpm": { 194 "pnpm": {
181 "overrides": { 195 "overrides": {
182 "usocket": "_EXCLUDED_" 196 "usocket": "_EXCLUDED_"
197 },
198 "peerDependencyRules": {
199 "allowedVersions": {
200 "@typescript-eslint/parser": "^6.0.0",
201 "esbuild-sass-plugin>esbuild": "^0.16.7",
202 "react-electron-web-view>react": "^18.0.0",
203 "react-electron-web-view>react-dom": "^18.0.0",
204 "react-loader>react": "^18.0.0",
205 "react-loader>react-dom": "^18.0.0",
206 "react-sortable-hoc>react": "^18.0.0",
207 "react-sortable-hoc>react-dom": "^18.0.0"
208 }
209 },
210 "allowedDeprecatedVersions": {
211 "kleur": "2.0.2",
212 "set-value": "1.0.0",
213 "request": "2.88.2",
214 "har-validator": "5.1.5",
215 "uuid": "3.4.0",
216 "@sinonjs/fake-timers": "10.2.0",
217 "@npmcli/move-file": "1.1.2 || 2.0.1",
218 "source-map-resolve": "0.5.3",
219 "source-map-url": "0.4.1",
220 "resolve-url": "0.2.1",
221 "urix": "0.1.0"
183 } 222 }
184 }, 223 },
185 "overrides": { 224 "overrides": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fff081d9c..5b1308312 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -46,10 +46,10 @@ dependencies:
46 version: 5.1.0 46 version: 5.1.0
47 '@electron/remote': 47 '@electron/remote':
48 specifier: 2.0.10 48 specifier: 2.0.10
49 version: 2.0.10(electron@25.2.0) 49 version: 2.0.10(electron@25.4.0)
50 '@krisdages/electron-process-manager': 50 '@krisdages/electron-process-manager':
51 specifier: 3.0.0 51 specifier: 3.0.0
52 version: 3.0.0(@electron/remote@2.0.10)(electron@25.2.0)(rxjs@7.8.1) 52 version: 3.0.0(@electron/remote@2.0.10)(electron@25.4.0)(rxjs@7.8.1)
53 '@mdi/js': 53 '@mdi/js':
54 specifier: 7.2.96 54 specifier: 7.2.96
55 version: 7.2.96 55 version: 7.2.96
@@ -57,20 +57,17 @@ dependencies:
57 specifier: 1.6.1 57 specifier: 1.6.1
58 version: 1.6.1 58 version: 1.6.1
59 '@octokit/core': 59 '@octokit/core':
60 specifier: 4.2.1 60 specifier: 5.0.0
61 version: 4.2.1 61 version: 5.0.0
62 '@sentry/electron': 62 '@sentry/electron':
63 specifier: 4.1.2 63 specifier: 4.1.2
64 version: 4.1.2 64 version: 4.1.2
65 '@superwf/mobx-react-router': 65 '@superwf/mobx-react-router':
66 specifier: 7.4.0 66 specifier: 7.4.0
67 version: 7.4.0(history@5.3.0)(mobx@6.9.0)(path-to-regexp@6.2.1) 67 version: 7.4.0(history@5.3.0)(mobx@6.10.0)(path-to-regexp@6.2.1)
68 auto-launch: 68 auto-launch:
69 specifier: 5.0.6 69 specifier: 5.0.6
70 version: 5.0.6 70 version: 5.0.6
71 btoa:
72 specifier: 1.2.1
73 version: 1.2.1
74 classnames: 71 classnames:
75 specifier: 2.3.2 72 specifier: 2.3.2
76 version: 2.3.2 73 version: 2.3.2
@@ -105,8 +102,8 @@ dependencies:
105 specifier: 5.0.3 102 specifier: 5.0.3
106 version: 5.0.3 103 version: 5.0.3
107 fast-folder-size: 104 fast-folder-size:
108 specifier: 1.7.1 105 specifier: 2.1.0
109 version: 1.7.1 106 version: 2.1.0
110 fs-extra: 107 fs-extra:
111 specifier: 11.1.1 108 specifier: 11.1.1
112 version: 11.1.1 109 version: 11.1.1
@@ -117,11 +114,11 @@ dependencies:
117 specifier: 5.3.0 114 specifier: 5.3.0
118 version: 5.3.0 115 version: 5.3.0
119 immutable: 116 immutable:
120 specifier: 4.3.0 117 specifier: 4.3.1
121 version: 4.3.0 118 version: 4.3.1
122 jsonwebtoken: 119 jsonwebtoken:
123 specifier: 9.0.0 120 specifier: 9.0.1
124 version: 9.0.0 121 version: 9.0.1
125 jss: 122 jss:
126 specifier: 10.10.0 123 specifier: 10.10.0
127 version: 10.10.0 124 version: 10.10.0
@@ -141,17 +138,17 @@ dependencies:
141 specifier: 1.2.8 138 specifier: 1.2.8
142 version: 1.2.8 139 version: 1.2.8
143 mobx: 140 mobx:
144 specifier: 6.9.0 141 specifier: 6.10.0
145 version: 6.9.0 142 version: 6.10.0
146 mobx-localstorage: 143 mobx-localstorage:
147 specifier: 1.2.0 144 specifier: 1.2.0
148 version: 1.2.0(mobx@6.9.0) 145 version: 1.2.0(mobx@6.10.0)
149 mobx-react: 146 mobx-react:
150 specifier: 7.6.0 147 specifier: 7.6.0
151 version: 7.6.0(mobx@6.9.0)(react-dom@18.2.0)(react@18.2.0) 148 version: 7.6.0(mobx@6.10.0)(react-dom@18.2.0)(react@18.2.0)
152 mobx-react-form: 149 mobx-react-form:
153 specifier: 3.2.0 150 specifier: 6.3.5
154 version: 3.2.0(mobx@6.9.0) 151 version: 6.3.5(mobx@6.10.0)
155 moment: 152 moment:
156 specifier: 2.29.4 153 specifier: 2.29.4
157 version: 2.29.4 154 version: 2.29.4
@@ -204,20 +201,20 @@ dependencies:
204 specifier: 3.16.1 201 specifier: 3.16.1
205 version: 3.16.1(react-dom@18.2.0)(react@18.2.0) 202 version: 3.16.1(react-dom@18.2.0)(react@18.2.0)
206 react-router-dom: 203 react-router-dom:
207 specifier: 6.4.2 204 specifier: 6.11.2
208 version: 6.4.2(react-dom@18.2.0)(react@18.2.0) 205 version: 6.11.2(react-dom@18.2.0)(react@18.2.0)
209 react-sortable-hoc: 206 react-sortable-hoc:
210 specifier: 2.0.0 207 specifier: 2.0.0
211 version: 2.0.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) 208 version: 2.0.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)
212 react-tooltip: 209 react-tooltip:
213 specifier: 4.5.1 210 specifier: 5.13.1
214 version: 4.5.1(react-dom@18.2.0)(react@18.2.0) 211 version: 5.13.1(react-dom@18.2.0)(react@18.2.0)
215 react-topbar-progress-indicator: 212 react-topbar-progress-indicator:
216 specifier: 4.1.1 213 specifier: 4.1.1
217 version: 4.1.1(react@18.2.0) 214 version: 4.1.1(react@18.2.0)
218 react-transition-group: 215 react-transition-group:
219 specifier: 1.2.1 216 specifier: 4.4.5
220 version: 1.2.1(react-dom@18.2.0)(react@18.2.0) 217 version: 4.4.5(react-dom@18.2.0)(react@18.2.0)
221 route-parser: 218 route-parser:
222 specifier: 0.0.5 219 specifier: 0.0.5
223 version: 0.0.5 220 version: 0.0.5
@@ -225,8 +222,8 @@ dependencies:
225 specifier: 1.6.3 222 specifier: 1.6.3
226 version: 1.6.3 223 version: 1.6.3
227 semver: 224 semver:
228 specifier: 7.5.1 225 specifier: 7.5.4
229 version: 7.5.1 226 version: 7.5.4
230 sqlite3: 227 sqlite3:
231 specifier: 5.1.6 228 specifier: 5.1.6
232 version: 5.1.6 229 version: 5.1.6
@@ -234,8 +231,8 @@ dependencies:
234 specifier: 6.1.15 231 specifier: 6.1.15
235 version: 6.1.15 232 version: 6.1.15
236 tslib: 233 tslib:
237 specifier: 2.5.3 234 specifier: 2.6.0
238 version: 2.5.3 235 version: 2.6.0
239 useragent-generator: 236 useragent-generator:
240 specifier: 1.1.1-amkt-22079-finish.0 237 specifier: 1.1.1-amkt-22079-finish.0
241 version: 1.1.1-amkt-22079-finish.0 238 version: 1.1.1-amkt-22079-finish.0
@@ -259,47 +256,68 @@ optionalDependencies:
259 256
260devDependencies: 257devDependencies:
261 '@commitlint/cli': 258 '@commitlint/cli':
262 specifier: 17.6.5 259 specifier: 17.6.7
263 version: 17.6.5 260 version: 17.6.7
264 '@commitlint/config-conventional': 261 '@commitlint/config-conventional':
265 specifier: 17.6.5 262 specifier: 17.6.7
266 version: 17.6.5 263 version: 17.6.7
267 '@electron/notarize': 264 '@electron/notarize':
268 specifier: 1.2.3 265 specifier: 1.2.3
269 version: 1.2.3 266 version: 1.2.3
270 '@formatjs/cli': 267 '@formatjs/cli':
271 specifier: 6.1.3 268 specifier: 6.1.3
272 version: 6.1.3 269 version: 6.1.3
270 '@jest/types':
271 specifier: 29.6.1
272 version: 29.6.1
273 '@types/auto-launch':
274 specifier: 5.0.2
275 version: 5.0.2
273 '@types/color': 276 '@types/color':
274 specifier: 3.0.3 277 specifier: 3.0.3
275 version: 3.0.3 278 version: 3.0.3
276 '@types/expect.js':
277 specifier: 0.3.29
278 version: 0.3.29
279 '@types/fs-extra': 279 '@types/fs-extra':
280 specifier: 11.0.1 280 specifier: 11.0.1
281 version: 11.0.1 281 version: 11.0.1
282 '@types/jest': 282 '@types/jest':
283 specifier: 29.5.2 283 specifier: 29.5.3
284 version: 29.5.2 284 version: 29.5.3
285 '@types/lodash': 285 '@types/lodash':
286 specifier: 4.14.195 286 specifier: 4.14.195
287 version: 4.14.195 287 version: 4.14.195
288 '@types/minimist':
289 specifier: 1.2.2
290 version: 1.2.2
288 '@types/ms': 291 '@types/ms':
289 specifier: 0.7.31 292 specifier: 0.7.31
290 version: 0.7.31 293 version: 0.7.31
291 '@types/node': 294 '@types/node':
292 specifier: 18.15.3 295 specifier: 18.15.3
293 version: 18.15.3 296 version: 18.15.3
297 '@types/prop-types':
298 specifier: 15.7.5
299 version: 15.7.5
294 '@types/react': 300 '@types/react':
295 specifier: 18.2.12 301 specifier: 18.2.12
296 version: 18.2.12 302 version: 18.2.12
303 '@types/react-color':
304 specifier: 3.0.6
305 version: 3.0.6
297 '@types/react-dom': 306 '@types/react-dom':
298 specifier: 18.2.5 307 specifier: 18.2.5
299 version: 18.2.5 308 version: 18.2.5
309 '@types/react-loader':
310 specifier: 2.4.5
311 version: 2.4.5
312 '@types/react-transition-group':
313 specifier: 4.4.6
314 version: 4.4.6
300 '@types/route-parser': 315 '@types/route-parser':
301 specifier: 0.1.4 316 specifier: 0.1.4
302 version: 0.1.4 317 version: 0.1.4
318 '@types/semver':
319 specifier: 7.5.0
320 version: 7.5.0
303 '@types/tar': 321 '@types/tar':
304 specifier: 6.1.5 322 specifier: 6.1.5
305 version: 6.1.5 323 version: 6.1.5
@@ -310,17 +328,17 @@ devDependencies:
310 specifier: 13.7.17 328 specifier: 13.7.17
311 version: 13.7.17 329 version: 13.7.17
312 '@typescript-eslint/eslint-plugin': 330 '@typescript-eslint/eslint-plugin':
313 specifier: 5.59.11 331 specifier: 6.1.0
314 version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.39.0)(typescript@5.0.4) 332 version: 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.0.4)
315 '@typescript-eslint/parser': 333 '@typescript-eslint/parser':
316 specifier: 5.59.11 334 specifier: 6.1.0
317 version: 5.59.11(eslint@8.39.0)(typescript@5.0.4) 335 version: 6.1.0(eslint@8.45.0)(typescript@5.0.4)
318 all-contributors-cli: 336 all-contributors-cli:
319 specifier: 6.26.0 337 specifier: 6.26.1
320 version: 6.26.0 338 version: 6.26.1
321 chalk: 339 chalk:
322 specifier: 5.2.0 340 specifier: 5.3.0
323 version: 5.2.0 341 version: 5.3.0
324 concurrently: 342 concurrently:
325 specifier: 8.2.0 343 specifier: 8.2.0
326 version: 8.2.0 344 version: 8.2.0
@@ -328,8 +346,8 @@ devDependencies:
328 specifier: 7.0.3 346 specifier: 7.0.3
329 version: 7.0.3 347 version: 7.0.3
330 electron: 348 electron:
331 specifier: 25.2.0 349 specifier: 25.4.0
332 version: 25.2.0 350 version: 25.4.0
333 electron-builder: 351 electron-builder:
334 specifier: 24.4.0 352 specifier: 24.4.0
335 version: 24.4.0 353 version: 24.4.0
@@ -343,41 +361,44 @@ devDependencies:
343 specifier: 2.2.2 361 specifier: 2.2.2
344 version: 2.2.2(esbuild@0.16.17) 362 version: 2.2.2(esbuild@0.16.17)
345 esbuild-sass-plugin: 363 esbuild-sass-plugin:
346 specifier: 2.9.0 364 specifier: 2.10.0
347 version: 2.9.0(esbuild@0.16.17) 365 version: 2.10.0(esbuild@0.16.17)
348 eslint: 366 eslint:
349 specifier: 8.39.0 367 specifier: 8.45.0
350 version: 8.39.0 368 version: 8.45.0
351 eslint-config-airbnb: 369 eslint-config-airbnb:
352 specifier: 19.0.4 370 specifier: 19.0.4
353 version: 19.0.4(eslint-plugin-import@2.27.5)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.32.2)(eslint@8.39.0) 371 version: 19.0.4(eslint-plugin-import@2.27.5)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.0)(eslint@8.45.0)
354 eslint-config-airbnb-typescript: 372 eslint-config-airbnb-typescript:
355 specifier: 17.0.0 373 specifier: 17.1.0
356 version: 17.0.0(@typescript-eslint/eslint-plugin@5.59.11)(@typescript-eslint/parser@5.59.11)(eslint-plugin-import@2.27.5)(eslint@8.39.0) 374 version: 17.1.0(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint-plugin-import@2.27.5)(eslint@8.45.0)
357 eslint-config-prettier: 375 eslint-config-prettier:
358 specifier: 8.8.0 376 specifier: 8.8.0
359 version: 8.8.0(eslint@8.39.0) 377 version: 8.8.0(eslint@8.45.0)
360 eslint-plugin-import: 378 eslint-plugin-import:
361 specifier: 2.27.5 379 specifier: 2.27.5
362 version: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.39.0) 380 version: 2.27.5(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)
363 eslint-plugin-jest: 381 eslint-plugin-jest:
364 specifier: 27.2.1 382 specifier: 27.2.3
365 version: 27.2.1(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.39.0)(jest@29.5.0)(typescript@5.0.4) 383 version: 27.2.3(@typescript-eslint/eslint-plugin@6.1.0)(eslint@8.45.0)(jest@29.6.1)(typescript@5.0.4)
366 eslint-plugin-jsx-a11y: 384 eslint-plugin-jsx-a11y:
367 specifier: 6.7.1 385 specifier: 6.7.1
368 version: 6.7.1(eslint@8.39.0) 386 version: 6.7.1(eslint@8.45.0)
369 eslint-plugin-prettier: 387 eslint-plugin-prettier:
370 specifier: 4.2.1 388 specifier: 5.0.0
371 version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.8) 389 version: 5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0)
372 eslint-plugin-react: 390 eslint-plugin-react:
373 specifier: 7.32.2 391 specifier: 7.33.0
374 version: 7.32.2(eslint@8.39.0) 392 version: 7.33.0(eslint@8.45.0)
375 eslint-plugin-react-hooks: 393 eslint-plugin-react-hooks:
376 specifier: 4.6.0 394 specifier: 4.6.0
377 version: 4.6.0(eslint@8.39.0) 395 version: 4.6.0(eslint@8.45.0)
396 eslint-plugin-sonar:
397 specifier: 0.12.0
398 version: 0.12.0(@babel/core@7.22.9)(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.0.4)
378 eslint-plugin-unicorn: 399 eslint-plugin-unicorn:
379 specifier: 46.0.0 400 specifier: 48.0.0
380 version: 46.0.0(eslint@8.39.0) 401 version: 48.0.0(eslint@8.45.0)
381 gulp-livereload: 402 gulp-livereload:
382 specifier: 4.0.2 403 specifier: 4.0.2
383 version: 4.0.2 404 version: 4.0.2
@@ -388,11 +409,11 @@ devDependencies:
388 specifier: 3.0.1 409 specifier: 3.0.1
389 version: 3.0.1 410 version: 3.0.1
390 jest: 411 jest:
391 specifier: 29.5.0 412 specifier: 29.6.1
392 version: 29.5.0(@types/node@18.15.3)(ts-node@10.9.1) 413 version: 29.6.1(@types/node@18.15.3)(ts-node@10.9.1)
393 prettier: 414 prettier:
394 specifier: 2.8.8 415 specifier: 3.0.0
395 version: 2.8.8 416 version: 3.0.0
396 preval-build-info: 417 preval-build-info:
397 specifier: 1.0.3 418 specifier: 1.0.3
398 version: 1.0.3 419 version: 1.0.3
@@ -400,11 +421,14 @@ devDependencies:
400 specifier: 5.0.1 421 specifier: 5.0.1
401 version: 5.0.1 422 version: 5.0.1
402 simple-git: 423 simple-git:
403 specifier: 3.19.0 424 specifier: 3.19.1
404 version: 3.19.0 425 version: 3.19.1
405 tiny-glob: 426 tiny-glob:
406 specifier: 0.2.9 427 specifier: 0.2.9
407 version: 0.2.9 428 version: 0.2.9
429 ts-node:
430 specifier: 10.9.1
431 version: 10.9.1(@types/node@18.15.3)(typescript@5.0.4)
408 typescript: 432 typescript:
409 specifier: 5.0.4 433 specifier: 5.0.4
410 version: 5.0.4 434 version: 5.0.4
@@ -418,6 +442,11 @@ packages:
418 resolution: {integrity: sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==} 442 resolution: {integrity: sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==}
419 dev: true 443 dev: true
420 444
445 /@aashutoshrathi/word-wrap@1.2.6:
446 resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
447 engines: {node: '>=0.10.0'}
448 dev: true
449
421 /@adonisjs/ace@5.1.0: 450 /@adonisjs/ace@5.1.0:
422 resolution: {integrity: sha512-5G0E4U1nRMiE58HEtONZUqTCammEbCZS6iCvCNMgfeyZXrsmSxLe5XmD1StEFAbt1FUUkRxYl6f38xXhKxOHkg==} 451 resolution: {integrity: sha512-5G0E4U1nRMiE58HEtONZUqTCammEbCZS6iCvCNMgfeyZXrsmSxLe5XmD1StEFAbt1FUUkRxYl6f38xXhKxOHkg==}
423 dependencies: 452 dependencies:
@@ -622,11 +651,19 @@ packages:
622 '@jridgewell/trace-mapping': 0.3.18 651 '@jridgewell/trace-mapping': 0.3.18
623 dev: true 652 dev: true
624 653
625 /@babel/code-frame@7.21.4: 654 /@ampproject/remapping@2.2.1:
626 resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} 655 resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
656 engines: {node: '>=6.0.0'}
657 dependencies:
658 '@jridgewell/gen-mapping': 0.3.3
659 '@jridgewell/trace-mapping': 0.3.18
660 dev: true
661
662 /@babel/code-frame@7.22.5:
663 resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
627 engines: {node: '>=6.9.0'} 664 engines: {node: '>=6.9.0'}
628 dependencies: 665 dependencies:
629 '@babel/highlight': 7.18.6 666 '@babel/highlight': 7.22.5
630 dev: true 667 dev: true
631 668
632 /@babel/compat-data@7.20.1: 669 /@babel/compat-data@7.20.1:
@@ -634,12 +671,17 @@ packages:
634 engines: {node: '>=6.9.0'} 671 engines: {node: '>=6.9.0'}
635 dev: true 672 dev: true
636 673
674 /@babel/compat-data@7.22.9:
675 resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==}
676 engines: {node: '>=6.9.0'}
677 dev: true
678
637 /@babel/core@7.20.5: 679 /@babel/core@7.20.5:
638 resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==} 680 resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==}
639 engines: {node: '>=6.9.0'} 681 engines: {node: '>=6.9.0'}
640 dependencies: 682 dependencies:
641 '@ampproject/remapping': 2.2.0 683 '@ampproject/remapping': 2.2.0
642 '@babel/code-frame': 7.21.4 684 '@babel/code-frame': 7.22.5
643 '@babel/generator': 7.20.5 685 '@babel/generator': 7.20.5
644 '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.20.5) 686 '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.20.5)
645 '@babel/helper-module-transforms': 7.20.2 687 '@babel/helper-module-transforms': 7.20.2
@@ -652,11 +694,48 @@ packages:
652 debug: 4.3.4 694 debug: 4.3.4
653 gensync: 1.0.0-beta.2 695 gensync: 1.0.0-beta.2
654 json5: 2.2.1 696 json5: 2.2.1
655 semver: 6.3.0 697 semver: 6.3.1
656 transitivePeerDependencies: 698 transitivePeerDependencies:
657 - supports-color 699 - supports-color
658 dev: true 700 dev: true
659 701
702 /@babel/core@7.22.9:
703 resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==}
704 engines: {node: '>=6.9.0'}
705 dependencies:
706 '@ampproject/remapping': 2.2.1
707 '@babel/code-frame': 7.22.5
708 '@babel/generator': 7.22.9
709 '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9)
710 '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9)
711 '@babel/helpers': 7.22.6
712 '@babel/parser': 7.22.7
713 '@babel/template': 7.22.5
714 '@babel/traverse': 7.22.8
715 '@babel/types': 7.22.5
716 convert-source-map: 1.9.0
717 debug: 4.3.4
718 gensync: 1.0.0-beta.2
719 json5: 2.2.3
720 semver: 6.3.1
721 transitivePeerDependencies:
722 - supports-color
723 dev: true
724
725 /@babel/eslint-parser@7.22.9(@babel/core@7.22.9)(eslint@8.45.0):
726 resolution: {integrity: sha512-xdMkt39/nviO/4vpVdrEYPwXCsYIXSSAr6mC7WQsNIlGnuxKyKE7GZjalcnbSWiC4OXGNNN3UQPeHfjSC6sTDA==}
727 engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
728 peerDependencies:
729 '@babel/core': '>=7.11.0'
730 eslint: ^7.5.0 || ^8.0.0
731 dependencies:
732 '@babel/core': 7.22.9
733 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
734 eslint: 8.45.0
735 eslint-visitor-keys: 2.1.0
736 semver: 6.3.1
737 dev: true
738
660 /@babel/generator@7.20.5: 739 /@babel/generator@7.20.5:
661 resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==} 740 resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==}
662 engines: {node: '>=6.9.0'} 741 engines: {node: '>=6.9.0'}
@@ -666,6 +745,16 @@ packages:
666 jsesc: 2.5.2 745 jsesc: 2.5.2
667 dev: true 746 dev: true
668 747
748 /@babel/generator@7.22.9:
749 resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==}
750 engines: {node: '>=6.9.0'}
751 dependencies:
752 '@babel/types': 7.22.5
753 '@jridgewell/gen-mapping': 0.3.3
754 '@jridgewell/trace-mapping': 0.3.18
755 jsesc: 2.5.2
756 dev: true
757
669 /@babel/helper-compilation-targets@7.20.0(@babel/core@7.20.5): 758 /@babel/helper-compilation-targets@7.20.0(@babel/core@7.20.5):
670 resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} 759 resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==}
671 engines: {node: '>=6.9.0'} 760 engines: {node: '>=6.9.0'}
@@ -676,7 +765,21 @@ packages:
676 '@babel/core': 7.20.5 765 '@babel/core': 7.20.5
677 '@babel/helper-validator-option': 7.18.6 766 '@babel/helper-validator-option': 7.18.6
678 browserslist: 4.21.4 767 browserslist: 4.21.4
679 semver: 6.3.0 768 semver: 6.3.1
769 dev: true
770
771 /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9):
772 resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==}
773 engines: {node: '>=6.9.0'}
774 peerDependencies:
775 '@babel/core': ^7.0.0
776 dependencies:
777 '@babel/compat-data': 7.22.9
778 '@babel/core': 7.22.9
779 '@babel/helper-validator-option': 7.22.5
780 browserslist: 4.21.10
781 lru-cache: 5.1.1
782 semver: 6.3.1
680 dev: true 783 dev: true
681 784
682 /@babel/helper-environment-visitor@7.18.9: 785 /@babel/helper-environment-visitor@7.18.9:
@@ -684,6 +787,11 @@ packages:
684 engines: {node: '>=6.9.0'} 787 engines: {node: '>=6.9.0'}
685 dev: true 788 dev: true
686 789
790 /@babel/helper-environment-visitor@7.22.5:
791 resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==}
792 engines: {node: '>=6.9.0'}
793 dev: true
794
687 /@babel/helper-function-name@7.19.0: 795 /@babel/helper-function-name@7.19.0:
688 resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} 796 resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==}
689 engines: {node: '>=6.9.0'} 797 engines: {node: '>=6.9.0'}
@@ -692,6 +800,14 @@ packages:
692 '@babel/types': 7.20.5 800 '@babel/types': 7.20.5
693 dev: true 801 dev: true
694 802
803 /@babel/helper-function-name@7.22.5:
804 resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==}
805 engines: {node: '>=6.9.0'}
806 dependencies:
807 '@babel/template': 7.22.5
808 '@babel/types': 7.22.5
809 dev: true
810
695 /@babel/helper-hoist-variables@7.18.6: 811 /@babel/helper-hoist-variables@7.18.6:
696 resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} 812 resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==}
697 engines: {node: '>=6.9.0'} 813 engines: {node: '>=6.9.0'}
@@ -699,6 +815,13 @@ packages:
699 '@babel/types': 7.20.5 815 '@babel/types': 7.20.5
700 dev: true 816 dev: true
701 817
818 /@babel/helper-hoist-variables@7.22.5:
819 resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
820 engines: {node: '>=6.9.0'}
821 dependencies:
822 '@babel/types': 7.22.5
823 dev: true
824
702 /@babel/helper-module-imports@7.18.6: 825 /@babel/helper-module-imports@7.18.6:
703 resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 826 resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
704 engines: {node: '>=6.9.0'} 827 engines: {node: '>=6.9.0'}
@@ -706,6 +829,13 @@ packages:
706 '@babel/types': 7.20.5 829 '@babel/types': 7.20.5
707 dev: true 830 dev: true
708 831
832 /@babel/helper-module-imports@7.22.5:
833 resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==}
834 engines: {node: '>=6.9.0'}
835 dependencies:
836 '@babel/types': 7.22.5
837 dev: true
838
709 /@babel/helper-module-transforms@7.20.2: 839 /@babel/helper-module-transforms@7.20.2:
710 resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} 840 resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==}
711 engines: {node: '>=6.9.0'} 841 engines: {node: '>=6.9.0'}
@@ -714,7 +844,7 @@ packages:
714 '@babel/helper-module-imports': 7.18.6 844 '@babel/helper-module-imports': 7.18.6
715 '@babel/helper-simple-access': 7.20.2 845 '@babel/helper-simple-access': 7.20.2
716 '@babel/helper-split-export-declaration': 7.18.6 846 '@babel/helper-split-export-declaration': 7.18.6
717 '@babel/helper-validator-identifier': 7.19.1 847 '@babel/helper-validator-identifier': 7.22.5
718 '@babel/template': 7.18.10 848 '@babel/template': 7.18.10
719 '@babel/traverse': 7.20.5 849 '@babel/traverse': 7.20.5
720 '@babel/types': 7.20.5 850 '@babel/types': 7.20.5
@@ -722,6 +852,20 @@ packages:
722 - supports-color 852 - supports-color
723 dev: true 853 dev: true
724 854
855 /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9):
856 resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==}
857 engines: {node: '>=6.9.0'}
858 peerDependencies:
859 '@babel/core': ^7.0.0
860 dependencies:
861 '@babel/core': 7.22.9
862 '@babel/helper-environment-visitor': 7.22.5
863 '@babel/helper-module-imports': 7.22.5
864 '@babel/helper-simple-access': 7.22.5
865 '@babel/helper-split-export-declaration': 7.22.6
866 '@babel/helper-validator-identifier': 7.22.5
867 dev: true
868
725 /@babel/helper-plugin-utils@7.20.2: 869 /@babel/helper-plugin-utils@7.20.2:
726 resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} 870 resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==}
727 engines: {node: '>=6.9.0'} 871 engines: {node: '>=6.9.0'}
@@ -734,6 +878,13 @@ packages:
734 '@babel/types': 7.20.5 878 '@babel/types': 7.20.5
735 dev: true 879 dev: true
736 880
881 /@babel/helper-simple-access@7.22.5:
882 resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
883 engines: {node: '>=6.9.0'}
884 dependencies:
885 '@babel/types': 7.22.5
886 dev: true
887
737 /@babel/helper-split-export-declaration@7.18.6: 888 /@babel/helper-split-export-declaration@7.18.6:
738 resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 889 resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==}
739 engines: {node: '>=6.9.0'} 890 engines: {node: '>=6.9.0'}
@@ -741,13 +892,25 @@ packages:
741 '@babel/types': 7.20.5 892 '@babel/types': 7.20.5
742 dev: true 893 dev: true
743 894
895 /@babel/helper-split-export-declaration@7.22.6:
896 resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
897 engines: {node: '>=6.9.0'}
898 dependencies:
899 '@babel/types': 7.22.5
900 dev: true
901
744 /@babel/helper-string-parser@7.19.4: 902 /@babel/helper-string-parser@7.19.4:
745 resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 903 resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==}
746 engines: {node: '>=6.9.0'} 904 engines: {node: '>=6.9.0'}
747 dev: true 905 dev: true
748 906
749 /@babel/helper-validator-identifier@7.19.1: 907 /@babel/helper-string-parser@7.22.5:
750 resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 908 resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
909 engines: {node: '>=6.9.0'}
910 dev: true
911
912 /@babel/helper-validator-identifier@7.22.5:
913 resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
751 engines: {node: '>=6.9.0'} 914 engines: {node: '>=6.9.0'}
752 dev: true 915 dev: true
753 916
@@ -756,6 +919,11 @@ packages:
756 engines: {node: '>=6.9.0'} 919 engines: {node: '>=6.9.0'}
757 dev: true 920 dev: true
758 921
922 /@babel/helper-validator-option@7.22.5:
923 resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==}
924 engines: {node: '>=6.9.0'}
925 dev: true
926
759 /@babel/helpers@7.20.6: 927 /@babel/helpers@7.20.6:
760 resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==} 928 resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==}
761 engines: {node: '>=6.9.0'} 929 engines: {node: '>=6.9.0'}
@@ -767,11 +935,22 @@ packages:
767 - supports-color 935 - supports-color
768 dev: true 936 dev: true
769 937
770 /@babel/highlight@7.18.6: 938 /@babel/helpers@7.22.6:
771 resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 939 resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==}
772 engines: {node: '>=6.9.0'} 940 engines: {node: '>=6.9.0'}
773 dependencies: 941 dependencies:
774 '@babel/helper-validator-identifier': 7.19.1 942 '@babel/template': 7.22.5
943 '@babel/traverse': 7.22.8
944 '@babel/types': 7.22.5
945 transitivePeerDependencies:
946 - supports-color
947 dev: true
948
949 /@babel/highlight@7.22.5:
950 resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
951 engines: {node: '>=6.9.0'}
952 dependencies:
953 '@babel/helper-validator-identifier': 7.22.5
775 chalk: 2.4.2 954 chalk: 2.4.2
776 js-tokens: 4.0.0 955 js-tokens: 4.0.0
777 dev: true 956 dev: true
@@ -784,6 +963,14 @@ packages:
784 '@babel/types': 7.20.5 963 '@babel/types': 7.20.5
785 dev: true 964 dev: true
786 965
966 /@babel/parser@7.22.7:
967 resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==}
968 engines: {node: '>=6.0.0'}
969 hasBin: true
970 dependencies:
971 '@babel/types': 7.22.5
972 dev: true
973
787 /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.20.5): 974 /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.20.5):
788 resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 975 resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
789 peerDependencies: 976 peerDependencies:
@@ -936,16 +1123,25 @@ packages:
936 resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} 1123 resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==}
937 engines: {node: '>=6.9.0'} 1124 engines: {node: '>=6.9.0'}
938 dependencies: 1125 dependencies:
939 '@babel/code-frame': 7.21.4 1126 '@babel/code-frame': 7.22.5
940 '@babel/parser': 7.20.5 1127 '@babel/parser': 7.20.5
941 '@babel/types': 7.20.5 1128 '@babel/types': 7.20.5
942 dev: true 1129 dev: true
943 1130
1131 /@babel/template@7.22.5:
1132 resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==}
1133 engines: {node: '>=6.9.0'}
1134 dependencies:
1135 '@babel/code-frame': 7.22.5
1136 '@babel/parser': 7.22.7
1137 '@babel/types': 7.22.5
1138 dev: true
1139
944 /@babel/traverse@7.20.5: 1140 /@babel/traverse@7.20.5:
945 resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==} 1141 resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==}
946 engines: {node: '>=6.9.0'} 1142 engines: {node: '>=6.9.0'}
947 dependencies: 1143 dependencies:
948 '@babel/code-frame': 7.21.4 1144 '@babel/code-frame': 7.22.5
949 '@babel/generator': 7.20.5 1145 '@babel/generator': 7.20.5
950 '@babel/helper-environment-visitor': 7.18.9 1146 '@babel/helper-environment-visitor': 7.18.9
951 '@babel/helper-function-name': 7.19.0 1147 '@babel/helper-function-name': 7.19.0
@@ -959,12 +1155,39 @@ packages:
959 - supports-color 1155 - supports-color
960 dev: true 1156 dev: true
961 1157
1158 /@babel/traverse@7.22.8:
1159 resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==}
1160 engines: {node: '>=6.9.0'}
1161 dependencies:
1162 '@babel/code-frame': 7.22.5
1163 '@babel/generator': 7.22.9
1164 '@babel/helper-environment-visitor': 7.22.5
1165 '@babel/helper-function-name': 7.22.5
1166 '@babel/helper-hoist-variables': 7.22.5
1167 '@babel/helper-split-export-declaration': 7.22.6
1168 '@babel/parser': 7.22.7
1169 '@babel/types': 7.22.5
1170 debug: 4.3.4
1171 globals: 11.12.0
1172 transitivePeerDependencies:
1173 - supports-color
1174 dev: true
1175
962 /@babel/types@7.20.5: 1176 /@babel/types@7.20.5:
963 resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} 1177 resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==}
964 engines: {node: '>=6.9.0'} 1178 engines: {node: '>=6.9.0'}
965 dependencies: 1179 dependencies:
966 '@babel/helper-string-parser': 7.19.4 1180 '@babel/helper-string-parser': 7.19.4
967 '@babel/helper-validator-identifier': 7.19.1 1181 '@babel/helper-validator-identifier': 7.22.5
1182 to-fast-properties: 2.0.0
1183 dev: true
1184
1185 /@babel/types@7.22.5:
1186 resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==}
1187 engines: {node: '>=6.9.0'}
1188 dependencies:
1189 '@babel/helper-string-parser': 7.22.5
1190 '@babel/helper-validator-identifier': 7.22.5
968 to-fast-properties: 2.0.0 1191 to-fast-properties: 2.0.0
969 dev: true 1192 dev: true
970 1193
@@ -977,14 +1200,14 @@ packages:
977 engines: {node: '>=0.1.90'} 1200 engines: {node: '>=0.1.90'}
978 dev: false 1201 dev: false
979 1202
980 /@commitlint/cli@17.6.5: 1203 /@commitlint/cli@17.6.7:
981 resolution: {integrity: sha512-3PQrWr/uo6lzF5k7n5QuosCYnzaxP9qGBp3jhWP0Vmsa7XA6wrl9ccPqfQyXpSbQE3zBROVO3TDqgPKe4tfmLQ==} 1204 resolution: {integrity: sha512-nzZmfO5KIOupYppn1MsnYX/80I+KDlxiwkks3CJT0XT+t34UgqGi3eSyEuzgcIjPlORk5/GMaAEiys78iLfGMg==}
982 engines: {node: '>=v14'} 1205 engines: {node: '>=v14'}
983 hasBin: true 1206 hasBin: true
984 dependencies: 1207 dependencies:
985 '@commitlint/format': 17.4.4 1208 '@commitlint/format': 17.4.4
986 '@commitlint/lint': 17.6.5 1209 '@commitlint/lint': 17.6.7
987 '@commitlint/load': 17.5.0 1210 '@commitlint/load': 17.6.7
988 '@commitlint/read': 17.5.1 1211 '@commitlint/read': 17.5.1
989 '@commitlint/types': 17.4.4 1212 '@commitlint/types': 17.4.4
990 execa: 5.1.1 1213 execa: 5.1.1
@@ -997,23 +1220,23 @@ packages:
997 - '@swc/wasm' 1220 - '@swc/wasm'
998 dev: true 1221 dev: true
999 1222
1000 /@commitlint/config-conventional@17.6.5: 1223 /@commitlint/config-conventional@17.6.7:
1001 resolution: {integrity: sha512-Xl9H9KLl86NZm5CYNTNF9dcz1xelE/EbvhWIWcYxG/rn3UWYWdWmmnX2q6ZduNdLFSGbOxzUpIx61j5zxbeXxg==} 1224 resolution: {integrity: sha512-4oTpEUC0HRM54QRHBPMOJW1pETp7usxXn9RuNYNWHcmu8wi1mpws95hvS20u2n6HtIkTn0jfn7vHioCm4AGUTw==}
1002 engines: {node: '>=v14'} 1225 engines: {node: '>=v14'}
1003 dependencies: 1226 dependencies:
1004 conventional-changelog-conventionalcommits: 5.0.0 1227 conventional-changelog-conventionalcommits: 5.0.0
1005 dev: true 1228 dev: true
1006 1229
1007 /@commitlint/config-validator@17.4.4: 1230 /@commitlint/config-validator@17.6.7:
1008 resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} 1231 resolution: {integrity: sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==}
1009 engines: {node: '>=v14'} 1232 engines: {node: '>=v14'}
1010 dependencies: 1233 dependencies:
1011 '@commitlint/types': 17.4.4 1234 '@commitlint/types': 17.4.4
1012 ajv: 8.12.0 1235 ajv: 8.12.0
1013 dev: true 1236 dev: true
1014 1237
1015 /@commitlint/ensure@17.4.4: 1238 /@commitlint/ensure@17.6.7:
1016 resolution: {integrity: sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==} 1239 resolution: {integrity: sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==}
1017 engines: {node: '>=v14'} 1240 engines: {node: '>=v14'}
1018 dependencies: 1241 dependencies:
1019 '@commitlint/types': 17.4.4 1242 '@commitlint/types': 17.4.4
@@ -1037,31 +1260,31 @@ packages:
1037 chalk: 4.1.2 1260 chalk: 4.1.2
1038 dev: true 1261 dev: true
1039 1262
1040 /@commitlint/is-ignored@17.6.5: 1263 /@commitlint/is-ignored@17.6.7:
1041 resolution: {integrity: sha512-CQvAPt9gX7cuUbMrIaIMKczfWJqqr6m8IlJs0F2zYwyyMTQ87QMHIj5jJ5HhOaOkaj6dvTMVGx8Dd1I4xgUuoQ==} 1264 resolution: {integrity: sha512-vqyNRqtbq72P2JadaoWiuoLtXIs9SaAWDqdtef6G2zsoXqKFc7vqj1f+thzVgosXG3X/5K9jNp+iYijmvOfc/g==}
1042 engines: {node: '>=v14'} 1265 engines: {node: '>=v14'}
1043 dependencies: 1266 dependencies:
1044 '@commitlint/types': 17.4.4 1267 '@commitlint/types': 17.4.4
1045 semver: 7.5.0 1268 semver: 7.5.2
1046 dev: true 1269 dev: true
1047 1270
1048 /@commitlint/lint@17.6.5: 1271 /@commitlint/lint@17.6.7:
1049 resolution: {integrity: sha512-BSJMwkE4LWXrOsiP9KoHG+/heSDfvOL/Nd16+ojTS/DX8HZr8dNl8l3TfVr/d/9maWD8fSegRGtBtsyGuugFrw==} 1272 resolution: {integrity: sha512-TW+AozfuOFMrHn+jdwtz0IWu8REKFp0eryOvoBp2r8IXNc4KihKB1spAiUB6SFyHD6hVVeolz12aHnJ3Mb+xVQ==}
1050 engines: {node: '>=v14'} 1273 engines: {node: '>=v14'}
1051 dependencies: 1274 dependencies:
1052 '@commitlint/is-ignored': 17.6.5 1275 '@commitlint/is-ignored': 17.6.7
1053 '@commitlint/parse': 17.6.5 1276 '@commitlint/parse': 17.6.7
1054 '@commitlint/rules': 17.6.5 1277 '@commitlint/rules': 17.6.7
1055 '@commitlint/types': 17.4.4 1278 '@commitlint/types': 17.4.4
1056 dev: true 1279 dev: true
1057 1280
1058 /@commitlint/load@17.5.0: 1281 /@commitlint/load@17.6.7:
1059 resolution: {integrity: sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==} 1282 resolution: {integrity: sha512-QZ2rJTbX55BQdYrCm/p6+hh/pFBgC9nTJxfsrK6xRPe2thiQzHN0AQDBqBwAirn6gIkHrjIbCbtAE6kiDYLjrw==}
1060 engines: {node: '>=v14'} 1283 engines: {node: '>=v14'}
1061 dependencies: 1284 dependencies:
1062 '@commitlint/config-validator': 17.4.4 1285 '@commitlint/config-validator': 17.6.7
1063 '@commitlint/execute-rule': 17.4.0 1286 '@commitlint/execute-rule': 17.4.0
1064 '@commitlint/resolve-extends': 17.4.4 1287 '@commitlint/resolve-extends': 17.6.7
1065 '@commitlint/types': 17.4.4 1288 '@commitlint/types': 17.4.4
1066 '@types/node': 18.15.3 1289 '@types/node': 18.15.3
1067 chalk: 4.1.2 1290 chalk: 4.1.2
@@ -1083,8 +1306,8 @@ packages:
1083 engines: {node: '>=v14'} 1306 engines: {node: '>=v14'}
1084 dev: true 1307 dev: true
1085 1308
1086 /@commitlint/parse@17.6.5: 1309 /@commitlint/parse@17.6.7:
1087 resolution: {integrity: sha512-0zle3bcn1Hevw5Jqpz/FzEWNo2KIzUbc1XyGg6WrWEoa6GH3A1pbqNF6MvE6rjuy6OY23c8stWnb4ETRZyN+Yw==} 1310 resolution: {integrity: sha512-ibO03BgEns+JJpohpBZYD49mCdSNMg6fTv7vA5yqzEFWkBQk5NWhEBw2yG+Z1UClStIRkMkAYyI2HzoQG9tCQQ==}
1088 engines: {node: '>=v14'} 1311 engines: {node: '>=v14'}
1089 dependencies: 1312 dependencies:
1090 '@commitlint/types': 17.4.4 1313 '@commitlint/types': 17.4.4
@@ -1103,11 +1326,11 @@ packages:
1103 minimist: 1.2.8 1326 minimist: 1.2.8
1104 dev: true 1327 dev: true
1105 1328
1106 /@commitlint/resolve-extends@17.4.4: 1329 /@commitlint/resolve-extends@17.6.7:
1107 resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} 1330 resolution: {integrity: sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==}
1108 engines: {node: '>=v14'} 1331 engines: {node: '>=v14'}
1109 dependencies: 1332 dependencies:
1110 '@commitlint/config-validator': 17.4.4 1333 '@commitlint/config-validator': 17.6.7
1111 '@commitlint/types': 17.4.4 1334 '@commitlint/types': 17.4.4
1112 import-fresh: 3.3.0 1335 import-fresh: 3.3.0
1113 lodash.mergewith: 4.6.2 1336 lodash.mergewith: 4.6.2
@@ -1115,11 +1338,11 @@ packages:
1115 resolve-global: 1.0.0 1338 resolve-global: 1.0.0
1116 dev: true 1339 dev: true
1117 1340
1118 /@commitlint/rules@17.6.5: 1341 /@commitlint/rules@17.6.7:
1119 resolution: {integrity: sha512-uTB3zSmnPyW2qQQH+Dbq2rekjlWRtyrjDo4aLFe63uteandgkI+cc0NhhbBAzcXShzVk0qqp8SlkQMu0mgHg/A==} 1342 resolution: {integrity: sha512-x/SDwDTN3w3Gr5xkhrIORu96rlKCc8ZLYEMXRqi9+MB33st2mKcGvKa5uJuigHlbl3xm75bAAubATrodVrjguQ==}
1120 engines: {node: '>=v14'} 1343 engines: {node: '>=v14'}
1121 dependencies: 1344 dependencies:
1122 '@commitlint/ensure': 17.4.4 1345 '@commitlint/ensure': 17.6.7
1123 '@commitlint/message': 17.4.2 1346 '@commitlint/message': 17.4.2
1124 '@commitlint/to-lines': 17.4.0 1347 '@commitlint/to-lines': 17.4.0
1125 '@commitlint/types': 17.4.4 1348 '@commitlint/types': 17.4.4
@@ -1188,7 +1411,7 @@ packages:
1188 fs-extra: 8.1.0 1411 fs-extra: 8.1.0
1189 got: 11.8.6 1412 got: 11.8.6
1190 progress: 2.0.3 1413 progress: 2.0.3
1191 semver: 6.3.0 1414 semver: 6.3.1
1192 sumchecker: 3.0.1 1415 sumchecker: 3.0.1
1193 optionalDependencies: 1416 optionalDependencies:
1194 global-agent: 3.0.0 1417 global-agent: 3.0.0
@@ -1235,7 +1458,7 @@ packages:
1235 node-api-version: 0.1.4 1458 node-api-version: 0.1.4
1236 node-gyp: 9.3.1 1459 node-gyp: 9.3.1
1237 ora: 5.4.1 1460 ora: 5.4.1
1238 semver: 7.5.1 1461 semver: 7.5.4
1239 tar: 6.1.15 1462 tar: 6.1.15
1240 yargs: 17.7.2 1463 yargs: 17.7.2
1241 transitivePeerDependencies: 1464 transitivePeerDependencies:
@@ -1243,12 +1466,12 @@ packages:
1243 - supports-color 1466 - supports-color
1244 dev: true 1467 dev: true
1245 1468
1246 /@electron/remote@2.0.10(electron@25.2.0): 1469 /@electron/remote@2.0.10(electron@25.4.0):
1247 resolution: {integrity: sha512-3SFKKaQXcyWgwmibud+UqJl/XlHOgLcI3fwtB9pNelPSJAcTxocOJrF6FaxBIQaj1+R05Di6xuAswZpXAW7xhA==} 1470 resolution: {integrity: sha512-3SFKKaQXcyWgwmibud+UqJl/XlHOgLcI3fwtB9pNelPSJAcTxocOJrF6FaxBIQaj1+R05Di6xuAswZpXAW7xhA==}
1248 peerDependencies: 1471 peerDependencies:
1249 electron: '>= 13.0.0' 1472 electron: '>= 13.0.0'
1250 dependencies: 1473 dependencies:
1251 electron: 25.2.0 1474 electron: 25.4.0
1252 dev: false 1475 dev: false
1253 1476
1254 /@electron/universal@1.3.4: 1477 /@electron/universal@1.3.4:
@@ -1474,29 +1697,29 @@ packages:
1474 dev: true 1697 dev: true
1475 optional: true 1698 optional: true
1476 1699
1477 /@eslint-community/eslint-utils@4.3.0(eslint@8.39.0): 1700 /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0):
1478 resolution: {integrity: sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==} 1701 resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
1479 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1702 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1480 peerDependencies: 1703 peerDependencies:
1481 eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 1704 eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
1482 dependencies: 1705 dependencies:
1483 eslint: 8.39.0 1706 eslint: 8.45.0
1484 eslint-visitor-keys: 3.4.1 1707 eslint-visitor-keys: 3.4.1
1485 dev: true 1708 dev: true
1486 1709
1487 /@eslint-community/regexpp@4.4.0: 1710 /@eslint-community/regexpp@4.6.0:
1488 resolution: {integrity: sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==} 1711 resolution: {integrity: sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw==}
1489 engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 1712 engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
1490 dev: true 1713 dev: true
1491 1714
1492 /@eslint/eslintrc@2.0.3: 1715 /@eslint/eslintrc@2.1.0:
1493 resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} 1716 resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==}
1494 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1717 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1495 dependencies: 1718 dependencies:
1496 ajv: 6.12.6 1719 ajv: 6.12.6
1497 debug: 4.3.4 1720 debug: 4.3.4
1498 espree: 9.5.2 1721 espree: 9.6.1
1499 globals: 13.19.0 1722 globals: 13.20.0
1500 ignore: 5.2.4 1723 ignore: 5.2.4
1501 import-fresh: 3.3.0 1724 import-fresh: 3.3.0
1502 js-yaml: 4.1.0 1725 js-yaml: 4.1.0
@@ -1506,11 +1729,21 @@ packages:
1506 - supports-color 1729 - supports-color
1507 dev: true 1730 dev: true
1508 1731
1509 /@eslint/js@8.39.0: 1732 /@eslint/js@8.44.0:
1510 resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==} 1733 resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==}
1511 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1734 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1512 dev: true 1735 dev: true
1513 1736
1737 /@floating-ui/core@1.3.1:
1738 resolution: {integrity: sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==}
1739 dev: false
1740
1741 /@floating-ui/dom@1.4.5:
1742 resolution: {integrity: sha512-96KnRWkRnuBSSFbj0sFGwwOUd8EkiecINVl0O9wiZlZ64EkpyAOG3Xc2vKKNJmru0Z7RqWNymA+6b8OZqjgyyw==}
1743 dependencies:
1744 '@floating-ui/core': 1.3.1
1745 dev: false
1746
1514 /@formatjs/cli@6.1.3: 1747 /@formatjs/cli@6.1.3:
1515 resolution: {integrity: sha512-PdTXZTY8LqxwmvFqdifn89gjXnPUpGtGyFs0BnoeLuOuxZFSnBfIs5WQCVMaJnr1+0vNNlXyT0VAIAwjRpf6BA==} 1748 resolution: {integrity: sha512-PdTXZTY8LqxwmvFqdifn89gjXnPUpGtGyFs0BnoeLuOuxZFSnBfIs5WQCVMaJnr1+0vNNlXyT0VAIAwjRpf6BA==}
1516 engines: {node: '>= 16'} 1749 engines: {node: '>= 16'}
@@ -1526,13 +1759,13 @@ packages:
1526 resolution: {integrity: sha512-6ueQTeJZtwKjmh23bdkq/DMqH4l4bmfvtQH98blOSbiXv/OUiyijSW6jU22IT8BNM1ujCaEvJfTtyCYVH38EMQ==} 1759 resolution: {integrity: sha512-6ueQTeJZtwKjmh23bdkq/DMqH4l4bmfvtQH98blOSbiXv/OUiyijSW6jU22IT8BNM1ujCaEvJfTtyCYVH38EMQ==}
1527 dependencies: 1760 dependencies:
1528 '@formatjs/intl-localematcher': 0.4.0 1761 '@formatjs/intl-localematcher': 0.4.0
1529 tslib: 2.5.3 1762 tslib: 2.6.0
1530 dev: false 1763 dev: false
1531 1764
1532 /@formatjs/fast-memoize@2.2.0: 1765 /@formatjs/fast-memoize@2.2.0:
1533 resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} 1766 resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==}
1534 dependencies: 1767 dependencies:
1535 tslib: 2.5.3 1768 tslib: 2.6.0
1536 dev: false 1769 dev: false
1537 1770
1538 /@formatjs/icu-messageformat-parser@2.6.0: 1771 /@formatjs/icu-messageformat-parser@2.6.0:
@@ -1540,14 +1773,14 @@ packages:
1540 dependencies: 1773 dependencies:
1541 '@formatjs/ecma402-abstract': 1.17.0 1774 '@formatjs/ecma402-abstract': 1.17.0
1542 '@formatjs/icu-skeleton-parser': 1.6.0 1775 '@formatjs/icu-skeleton-parser': 1.6.0
1543 tslib: 2.5.3 1776 tslib: 2.6.0
1544 dev: false 1777 dev: false
1545 1778
1546 /@formatjs/icu-skeleton-parser@1.6.0: 1779 /@formatjs/icu-skeleton-parser@1.6.0:
1547 resolution: {integrity: sha512-eMmxNpoX/J1IPUjPGSZwo0Wh+7CEvdEMddP2Jxg1gQJXfGfht/FdW2D5XDFj3VMbOTUQlDIdZJY7uC6O6gjPoA==} 1780 resolution: {integrity: sha512-eMmxNpoX/J1IPUjPGSZwo0Wh+7CEvdEMddP2Jxg1gQJXfGfht/FdW2D5XDFj3VMbOTUQlDIdZJY7uC6O6gjPoA==}
1548 dependencies: 1781 dependencies:
1549 '@formatjs/ecma402-abstract': 1.17.0 1782 '@formatjs/ecma402-abstract': 1.17.0
1550 tslib: 2.5.3 1783 tslib: 2.6.0
1551 dev: false 1784 dev: false
1552 1785
1553 /@formatjs/intl-displaynames@6.5.0: 1786 /@formatjs/intl-displaynames@6.5.0:
@@ -1555,7 +1788,7 @@ packages:
1555 dependencies: 1788 dependencies:
1556 '@formatjs/ecma402-abstract': 1.17.0 1789 '@formatjs/ecma402-abstract': 1.17.0
1557 '@formatjs/intl-localematcher': 0.4.0 1790 '@formatjs/intl-localematcher': 0.4.0
1558 tslib: 2.5.3 1791 tslib: 2.6.0
1559 dev: false 1792 dev: false
1560 1793
1561 /@formatjs/intl-listformat@7.4.0: 1794 /@formatjs/intl-listformat@7.4.0:
@@ -1563,13 +1796,13 @@ packages:
1563 dependencies: 1796 dependencies:
1564 '@formatjs/ecma402-abstract': 1.17.0 1797 '@formatjs/ecma402-abstract': 1.17.0
1565 '@formatjs/intl-localematcher': 0.4.0 1798 '@formatjs/intl-localematcher': 0.4.0
1566 tslib: 2.5.3 1799 tslib: 2.6.0
1567 dev: false 1800 dev: false
1568 1801
1569 /@formatjs/intl-localematcher@0.4.0: 1802 /@formatjs/intl-localematcher@0.4.0:
1570 resolution: {integrity: sha512-bRTd+rKomvfdS4QDlVJ6TA/Jx1F2h/TBVO5LjvhQ7QPPHp19oPNMIum7W2CMEReq/zPxpmCeB31F9+5gl/qtvw==} 1803 resolution: {integrity: sha512-bRTd+rKomvfdS4QDlVJ6TA/Jx1F2h/TBVO5LjvhQ7QPPHp19oPNMIum7W2CMEReq/zPxpmCeB31F9+5gl/qtvw==}
1571 dependencies: 1804 dependencies:
1572 tslib: 2.5.3 1805 tslib: 2.6.0
1573 dev: false 1806 dev: false
1574 1807
1575 /@formatjs/intl@2.9.0(typescript@5.0.4): 1808 /@formatjs/intl@2.9.0(typescript@5.0.4):
@@ -1586,7 +1819,7 @@ packages:
1586 '@formatjs/intl-displaynames': 6.5.0 1819 '@formatjs/intl-displaynames': 6.5.0
1587 '@formatjs/intl-listformat': 7.4.0 1820 '@formatjs/intl-listformat': 7.4.0
1588 intl-messageformat: 10.5.0 1821 intl-messageformat: 10.5.0
1589 tslib: 2.5.3 1822 tslib: 2.6.0
1590 typescript: 5.0.4 1823 typescript: 5.0.4
1591 dev: false 1824 dev: false
1592 1825
@@ -1603,8 +1836,8 @@ packages:
1603 '@hapi/hoek': 9.3.0 1836 '@hapi/hoek': 9.3.0
1604 dev: true 1837 dev: true
1605 1838
1606 /@humanwhocodes/config-array@0.11.8: 1839 /@humanwhocodes/config-array@0.11.10:
1607 resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} 1840 resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==}
1608 engines: {node: '>=10.10.0'} 1841 engines: {node: '>=10.10.0'}
1609 dependencies: 1842 dependencies:
1610 '@humanwhocodes/object-schema': 1.2.1 1843 '@humanwhocodes/object-schema': 1.2.1
@@ -1637,7 +1870,7 @@ packages:
1637 dependencies: 1870 dependencies:
1638 string-width: 5.1.2 1871 string-width: 5.1.2
1639 string-width-cjs: /string-width@4.2.3 1872 string-width-cjs: /string-width@4.2.3
1640 strip-ansi: 7.0.1 1873 strip-ansi: 7.1.0
1641 strip-ansi-cjs: /strip-ansi@6.0.1 1874 strip-ansi-cjs: /strip-ansi@6.0.1
1642 wrap-ansi: 8.1.0 1875 wrap-ansi: 8.1.0
1643 wrap-ansi-cjs: /wrap-ansi@7.0.0 1876 wrap-ansi-cjs: /wrap-ansi@7.0.0
@@ -1659,20 +1892,20 @@ packages:
1659 engines: {node: '>=8'} 1892 engines: {node: '>=8'}
1660 dev: true 1893 dev: true
1661 1894
1662 /@jest/console@29.5.0: 1895 /@jest/console@29.6.1:
1663 resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} 1896 resolution: {integrity: sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q==}
1664 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1897 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1665 dependencies: 1898 dependencies:
1666 '@jest/types': 29.5.0 1899 '@jest/types': 29.6.1
1667 '@types/node': 18.15.3 1900 '@types/node': 18.15.3
1668 chalk: 4.1.2 1901 chalk: 4.1.2
1669 jest-message-util: 29.5.0 1902 jest-message-util: 29.6.1
1670 jest-util: 29.5.0 1903 jest-util: 29.6.1
1671 slash: 3.0.0 1904 slash: 3.0.0
1672 dev: true 1905 dev: true
1673 1906
1674 /@jest/core@29.5.0(ts-node@10.9.1): 1907 /@jest/core@29.6.1(ts-node@10.9.1):
1675 resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} 1908 resolution: {integrity: sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ==}
1676 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1909 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1677 peerDependencies: 1910 peerDependencies:
1678 node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1911 node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
@@ -1680,11 +1913,11 @@ packages:
1680 node-notifier: 1913 node-notifier:
1681 optional: true 1914 optional: true
1682 dependencies: 1915 dependencies:
1683 '@jest/console': 29.5.0 1916 '@jest/console': 29.6.1
1684 '@jest/reporters': 29.5.0 1917 '@jest/reporters': 29.6.1
1685 '@jest/test-result': 29.5.0 1918 '@jest/test-result': 29.6.1
1686 '@jest/transform': 29.5.0 1919 '@jest/transform': 29.6.1
1687 '@jest/types': 29.5.0 1920 '@jest/types': 29.6.1
1688 '@types/node': 18.15.3 1921 '@types/node': 18.15.3
1689 ansi-escapes: 4.3.2 1922 ansi-escapes: 4.3.2
1690 chalk: 4.1.2 1923 chalk: 4.1.2
@@ -1692,20 +1925,20 @@ packages:
1692 exit: 0.1.2 1925 exit: 0.1.2
1693 graceful-fs: 4.2.11 1926 graceful-fs: 4.2.11
1694 jest-changed-files: 29.5.0 1927 jest-changed-files: 29.5.0
1695 jest-config: 29.5.0(@types/node@18.15.3)(ts-node@10.9.1) 1928 jest-config: 29.6.1(@types/node@18.15.3)(ts-node@10.9.1)
1696 jest-haste-map: 29.5.0 1929 jest-haste-map: 29.6.1
1697 jest-message-util: 29.5.0 1930 jest-message-util: 29.6.1
1698 jest-regex-util: 29.4.3 1931 jest-regex-util: 29.4.3
1699 jest-resolve: 29.5.0 1932 jest-resolve: 29.6.1
1700 jest-resolve-dependencies: 29.5.0 1933 jest-resolve-dependencies: 29.6.1
1701 jest-runner: 29.5.0 1934 jest-runner: 29.6.1
1702 jest-runtime: 29.5.0 1935 jest-runtime: 29.6.1
1703 jest-snapshot: 29.5.0 1936 jest-snapshot: 29.6.1
1704 jest-util: 29.5.0 1937 jest-util: 29.6.1
1705 jest-validate: 29.5.0 1938 jest-validate: 29.6.1
1706 jest-watcher: 29.5.0 1939 jest-watcher: 29.6.1
1707 micromatch: 4.0.5 1940 micromatch: 4.0.5
1708 pretty-format: 29.5.0 1941 pretty-format: 29.6.1
1709 slash: 3.0.0 1942 slash: 3.0.0
1710 strip-ansi: 6.0.1 1943 strip-ansi: 6.0.1
1711 transitivePeerDependencies: 1944 transitivePeerDependencies:
@@ -1713,14 +1946,14 @@ packages:
1713 - ts-node 1946 - ts-node
1714 dev: true 1947 dev: true
1715 1948
1716 /@jest/environment@29.5.0: 1949 /@jest/environment@29.6.1:
1717 resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} 1950 resolution: {integrity: sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A==}
1718 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1951 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1719 dependencies: 1952 dependencies:
1720 '@jest/fake-timers': 29.5.0 1953 '@jest/fake-timers': 29.6.1
1721 '@jest/types': 29.5.0 1954 '@jest/types': 29.6.1
1722 '@types/node': 18.15.3 1955 '@types/node': 18.15.3
1723 jest-mock: 29.5.0 1956 jest-mock: 29.6.1
1724 dev: true 1957 dev: true
1725 1958
1726 /@jest/expect-utils@29.5.0: 1959 /@jest/expect-utils@29.5.0:
@@ -1730,42 +1963,49 @@ packages:
1730 jest-get-type: 29.4.3 1963 jest-get-type: 29.4.3
1731 dev: true 1964 dev: true
1732 1965
1733 /@jest/expect@29.5.0: 1966 /@jest/expect-utils@29.6.1:
1734 resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} 1967 resolution: {integrity: sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw==}
1735 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1968 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1736 dependencies: 1969 dependencies:
1737 expect: 29.5.0 1970 jest-get-type: 29.4.3
1738 jest-snapshot: 29.5.0 1971 dev: true
1972
1973 /@jest/expect@29.6.1:
1974 resolution: {integrity: sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg==}
1975 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1976 dependencies:
1977 expect: 29.6.1
1978 jest-snapshot: 29.6.1
1739 transitivePeerDependencies: 1979 transitivePeerDependencies:
1740 - supports-color 1980 - supports-color
1741 dev: true 1981 dev: true
1742 1982
1743 /@jest/fake-timers@29.5.0: 1983 /@jest/fake-timers@29.6.1:
1744 resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} 1984 resolution: {integrity: sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg==}
1745 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1985 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1746 dependencies: 1986 dependencies:
1747 '@jest/types': 29.5.0 1987 '@jest/types': 29.6.1
1748 '@sinonjs/fake-timers': 10.2.0 1988 '@sinonjs/fake-timers': 10.2.0
1749 '@types/node': 18.15.3 1989 '@types/node': 18.15.3
1750 jest-message-util: 29.5.0 1990 jest-message-util: 29.6.1
1751 jest-mock: 29.5.0 1991 jest-mock: 29.6.1
1752 jest-util: 29.5.0 1992 jest-util: 29.6.1
1753 dev: true 1993 dev: true
1754 1994
1755 /@jest/globals@29.5.0: 1995 /@jest/globals@29.6.1:
1756 resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} 1996 resolution: {integrity: sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A==}
1757 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1997 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1758 dependencies: 1998 dependencies:
1759 '@jest/environment': 29.5.0 1999 '@jest/environment': 29.6.1
1760 '@jest/expect': 29.5.0 2000 '@jest/expect': 29.6.1
1761 '@jest/types': 29.5.0 2001 '@jest/types': 29.6.1
1762 jest-mock: 29.5.0 2002 jest-mock: 29.6.1
1763 transitivePeerDependencies: 2003 transitivePeerDependencies:
1764 - supports-color 2004 - supports-color
1765 dev: true 2005 dev: true
1766 2006
1767 /@jest/reporters@29.5.0: 2007 /@jest/reporters@29.6.1:
1768 resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} 2008 resolution: {integrity: sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA==}
1769 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2009 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1770 peerDependencies: 2010 peerDependencies:
1771 node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 2011 node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
@@ -1774,10 +2014,10 @@ packages:
1774 optional: true 2014 optional: true
1775 dependencies: 2015 dependencies:
1776 '@bcoe/v8-coverage': 0.2.3 2016 '@bcoe/v8-coverage': 0.2.3
1777 '@jest/console': 29.5.0 2017 '@jest/console': 29.6.1
1778 '@jest/test-result': 29.5.0 2018 '@jest/test-result': 29.6.1
1779 '@jest/transform': 29.5.0 2019 '@jest/transform': 29.6.1
1780 '@jest/types': 29.5.0 2020 '@jest/types': 29.6.1
1781 '@jridgewell/trace-mapping': 0.3.18 2021 '@jridgewell/trace-mapping': 0.3.18
1782 '@types/node': 18.15.3 2022 '@types/node': 18.15.3
1783 chalk: 4.1.2 2023 chalk: 4.1.2
@@ -1790,9 +2030,9 @@ packages:
1790 istanbul-lib-report: 3.0.0 2030 istanbul-lib-report: 3.0.0
1791 istanbul-lib-source-maps: 4.0.1 2031 istanbul-lib-source-maps: 4.0.1
1792 istanbul-reports: 3.1.5 2032 istanbul-reports: 3.1.5
1793 jest-message-util: 29.5.0 2033 jest-message-util: 29.6.1
1794 jest-util: 29.5.0 2034 jest-util: 29.6.1
1795 jest-worker: 29.5.0 2035 jest-worker: 29.6.1
1796 slash: 3.0.0 2036 slash: 3.0.0
1797 string-length: 4.0.2 2037 string-length: 4.0.2
1798 strip-ansi: 6.0.1 2038 strip-ansi: 6.0.1
@@ -1808,8 +2048,15 @@ packages:
1808 '@sinclair/typebox': 0.25.24 2048 '@sinclair/typebox': 0.25.24
1809 dev: true 2049 dev: true
1810 2050
1811 /@jest/source-map@29.4.3: 2051 /@jest/schemas@29.6.0:
1812 resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} 2052 resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==}
2053 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2054 dependencies:
2055 '@sinclair/typebox': 0.27.8
2056 dev: true
2057
2058 /@jest/source-map@29.6.0:
2059 resolution: {integrity: sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==}
1813 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2060 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1814 dependencies: 2061 dependencies:
1815 '@jridgewell/trace-mapping': 0.3.18 2062 '@jridgewell/trace-mapping': 0.3.18
@@ -1817,41 +2064,41 @@ packages:
1817 graceful-fs: 4.2.11 2064 graceful-fs: 4.2.11
1818 dev: true 2065 dev: true
1819 2066
1820 /@jest/test-result@29.5.0: 2067 /@jest/test-result@29.6.1:
1821 resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} 2068 resolution: {integrity: sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw==}
1822 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2069 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1823 dependencies: 2070 dependencies:
1824 '@jest/console': 29.5.0 2071 '@jest/console': 29.6.1
1825 '@jest/types': 29.5.0 2072 '@jest/types': 29.6.1
1826 '@types/istanbul-lib-coverage': 2.0.4 2073 '@types/istanbul-lib-coverage': 2.0.4
1827 collect-v8-coverage: 1.0.1 2074 collect-v8-coverage: 1.0.1
1828 dev: true 2075 dev: true
1829 2076
1830 /@jest/test-sequencer@29.5.0: 2077 /@jest/test-sequencer@29.6.1:
1831 resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} 2078 resolution: {integrity: sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg==}
1832 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2079 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1833 dependencies: 2080 dependencies:
1834 '@jest/test-result': 29.5.0 2081 '@jest/test-result': 29.6.1
1835 graceful-fs: 4.2.11 2082 graceful-fs: 4.2.11
1836 jest-haste-map: 29.5.0 2083 jest-haste-map: 29.6.1
1837 slash: 3.0.0 2084 slash: 3.0.0
1838 dev: true 2085 dev: true
1839 2086
1840 /@jest/transform@29.5.0: 2087 /@jest/transform@29.6.1:
1841 resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} 2088 resolution: {integrity: sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg==}
1842 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2089 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1843 dependencies: 2090 dependencies:
1844 '@babel/core': 7.20.5 2091 '@babel/core': 7.20.5
1845 '@jest/types': 29.5.0 2092 '@jest/types': 29.6.1
1846 '@jridgewell/trace-mapping': 0.3.18 2093 '@jridgewell/trace-mapping': 0.3.18
1847 babel-plugin-istanbul: 6.1.1 2094 babel-plugin-istanbul: 6.1.1
1848 chalk: 4.1.2 2095 chalk: 4.1.2
1849 convert-source-map: 2.0.0 2096 convert-source-map: 2.0.0
1850 fast-json-stable-stringify: 2.1.0 2097 fast-json-stable-stringify: 2.1.0
1851 graceful-fs: 4.2.11 2098 graceful-fs: 4.2.11
1852 jest-haste-map: 29.5.0 2099 jest-haste-map: 29.6.1
1853 jest-regex-util: 29.4.3 2100 jest-regex-util: 29.4.3
1854 jest-util: 29.5.0 2101 jest-util: 29.6.1
1855 micromatch: 4.0.5 2102 micromatch: 4.0.5
1856 pirates: 4.0.5 2103 pirates: 4.0.5
1857 slash: 3.0.0 2104 slash: 3.0.0
@@ -1860,11 +2107,11 @@ packages:
1860 - supports-color 2107 - supports-color
1861 dev: true 2108 dev: true
1862 2109
1863 /@jest/types@29.5.0: 2110 /@jest/types@29.6.1:
1864 resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} 2111 resolution: {integrity: sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==}
1865 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2112 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1866 dependencies: 2113 dependencies:
1867 '@jest/schemas': 29.4.3 2114 '@jest/schemas': 29.6.0
1868 '@types/istanbul-lib-coverage': 2.0.4 2115 '@types/istanbul-lib-coverage': 2.0.4
1869 '@types/istanbul-reports': 3.0.1 2116 '@types/istanbul-reports': 3.0.1
1870 '@types/node': 18.15.3 2117 '@types/node': 18.15.3
@@ -1889,6 +2136,15 @@ packages:
1889 '@jridgewell/trace-mapping': 0.3.18 2136 '@jridgewell/trace-mapping': 0.3.18
1890 dev: true 2137 dev: true
1891 2138
2139 /@jridgewell/gen-mapping@0.3.3:
2140 resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
2141 engines: {node: '>=6.0.0'}
2142 dependencies:
2143 '@jridgewell/set-array': 1.1.2
2144 '@jridgewell/sourcemap-codec': 1.4.15
2145 '@jridgewell/trace-mapping': 0.3.18
2146 dev: true
2147
1892 /@jridgewell/resolve-uri@3.1.0: 2148 /@jridgewell/resolve-uri@3.1.0:
1893 resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 2149 resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
1894 engines: {node: '>=6.0.0'} 2150 engines: {node: '>=6.0.0'}
@@ -1926,15 +2182,15 @@ packages:
1926 '@jridgewell/sourcemap-codec': 1.4.15 2182 '@jridgewell/sourcemap-codec': 1.4.15
1927 dev: true 2183 dev: true
1928 2184
1929 /@krisdages/electron-process-manager@3.0.0(@electron/remote@2.0.10)(electron@25.2.0)(rxjs@7.8.1): 2185 /@krisdages/electron-process-manager@3.0.0(@electron/remote@2.0.10)(electron@25.4.0)(rxjs@7.8.1):
1930 resolution: {integrity: sha512-Gs8McOVC6BVdfP4SeF+l5nx85eFooarm37K5mxs1PESI59a7oLwRf5Yd2tsZ6Ye14bCG0eTJGDv3yPuixBg3OQ==} 2186 resolution: {integrity: sha512-Gs8McOVC6BVdfP4SeF+l5nx85eFooarm37K5mxs1PESI59a7oLwRf5Yd2tsZ6Ye14bCG0eTJGDv3yPuixBg3OQ==}
1931 peerDependencies: 2187 peerDependencies:
1932 '@electron/remote': '>= 1.2.0' 2188 '@electron/remote': '>= 1.2.0'
1933 electron: '>= 10' 2189 electron: '>= 10'
1934 rxjs: '>= 7' 2190 rxjs: '>= 7'
1935 dependencies: 2191 dependencies:
1936 '@electron/remote': 2.0.10(electron@25.2.0) 2192 '@electron/remote': 2.0.10(electron@25.4.0)
1937 electron: 25.2.0 2193 electron: 25.4.0
1938 electron-process-reporter: /@krisdages/electron-process-reporter@2.0.0-rxjs7-1.4.0(rxjs@7.8.1) 2194 electron-process-reporter: /@krisdages/electron-process-reporter@2.0.0-rxjs7-1.4.0(rxjs@7.8.1)
1939 rxjs: 7.8.1 2195 rxjs: 7.8.1
1940 dev: false 2196 dev: false
@@ -1999,7 +2255,7 @@ packages:
1999 nopt: 5.0.0 2255 nopt: 5.0.0
2000 npmlog: 5.0.1 2256 npmlog: 5.0.1
2001 rimraf: 3.0.2 2257 rimraf: 3.0.2
2002 semver: 7.5.1 2258 semver: 7.5.4
2003 tar: 6.1.15 2259 tar: 6.1.15
2004 transitivePeerDependencies: 2260 transitivePeerDependencies:
2005 - encoding 2261 - encoding
@@ -2016,6 +2272,12 @@ packages:
2016 prop-types: 15.8.1 2272 prop-types: 15.8.1
2017 dev: false 2273 dev: false
2018 2274
2275 /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1:
2276 resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==}
2277 dependencies:
2278 eslint-scope: 5.1.1
2279 dev: true
2280
2019 /@nodelib/fs.scandir@2.1.5: 2281 /@nodelib/fs.scandir@2.1.5:
2020 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 2282 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
2021 engines: {node: '>= 8'} 2283 engines: {node: '>= 8'}
@@ -2046,7 +2308,7 @@ packages:
2046 resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} 2308 resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==}
2047 dependencies: 2309 dependencies:
2048 '@gar/promisify': 1.1.3 2310 '@gar/promisify': 1.1.3
2049 semver: 7.5.1 2311 semver: 7.5.4
2050 dev: false 2312 dev: false
2051 optional: true 2313 optional: true
2052 2314
@@ -2055,7 +2317,7 @@ packages:
2055 engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 2317 engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
2056 dependencies: 2318 dependencies:
2057 '@gar/promisify': 1.1.3 2319 '@gar/promisify': 1.1.3
2058 semver: 7.5.1 2320 semver: 7.5.4
2059 dev: true 2321 dev: true
2060 2322
2061 /@npmcli/move-file@1.1.2: 2323 /@npmcli/move-file@1.1.2:
@@ -2077,89 +2339,70 @@ packages:
2077 rimraf: 3.0.2 2339 rimraf: 3.0.2
2078 dev: true 2340 dev: true
2079 2341
2080 /@octokit/auth-token@3.0.2: 2342 /@octokit/auth-token@4.0.0:
2081 resolution: {integrity: sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==} 2343 resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==}
2082 engines: {node: '>= 14'} 2344 engines: {node: '>= 18'}
2083 dependencies:
2084 '@octokit/types': 8.0.0
2085 dev: false 2345 dev: false
2086 2346
2087 /@octokit/core@4.2.1: 2347 /@octokit/core@5.0.0:
2088 resolution: {integrity: sha512-tEDxFx8E38zF3gT7sSMDrT1tGumDgsw5yPG6BBh/X+5ClIQfMH/Yqocxz1PnHx6CHyF6pxmovUTOfZAUvQ0Lvw==} 2348 resolution: {integrity: sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==}
2089 engines: {node: '>= 14'} 2349 engines: {node: '>= 18'}
2090 dependencies: 2350 dependencies:
2091 '@octokit/auth-token': 3.0.2 2351 '@octokit/auth-token': 4.0.0
2092 '@octokit/graphql': 5.0.4 2352 '@octokit/graphql': 7.0.1
2093 '@octokit/request': 6.2.2 2353 '@octokit/request': 8.1.1
2094 '@octokit/request-error': 3.0.2 2354 '@octokit/request-error': 5.0.0
2095 '@octokit/types': 9.0.0 2355 '@octokit/types': 11.1.0
2096 before-after-hook: 2.2.3 2356 before-after-hook: 2.2.3
2097 universal-user-agent: 6.0.0 2357 universal-user-agent: 6.0.0
2098 transitivePeerDependencies:
2099 - encoding
2100 dev: false 2358 dev: false
2101 2359
2102 /@octokit/endpoint@7.0.3: 2360 /@octokit/endpoint@9.0.0:
2103 resolution: {integrity: sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==} 2361 resolution: {integrity: sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==}
2104 engines: {node: '>= 14'} 2362 engines: {node: '>= 18'}
2105 dependencies: 2363 dependencies:
2106 '@octokit/types': 8.0.0 2364 '@octokit/types': 11.1.0
2107 is-plain-object: 5.0.0 2365 is-plain-object: 5.0.0
2108 universal-user-agent: 6.0.0 2366 universal-user-agent: 6.0.0
2109 dev: false 2367 dev: false
2110 2368
2111 /@octokit/graphql@5.0.4: 2369 /@octokit/graphql@7.0.1:
2112 resolution: {integrity: sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==} 2370 resolution: {integrity: sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==}
2113 engines: {node: '>= 14'} 2371 engines: {node: '>= 18'}
2114 dependencies: 2372 dependencies:
2115 '@octokit/request': 6.2.2 2373 '@octokit/request': 8.1.1
2116 '@octokit/types': 8.0.0 2374 '@octokit/types': 11.1.0
2117 universal-user-agent: 6.0.0 2375 universal-user-agent: 6.0.0
2118 transitivePeerDependencies:
2119 - encoding
2120 dev: false
2121
2122 /@octokit/openapi-types@14.0.0:
2123 resolution: {integrity: sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==}
2124 dev: false 2376 dev: false
2125 2377
2126 /@octokit/openapi-types@16.0.0: 2378 /@octokit/openapi-types@18.0.0:
2127 resolution: {integrity: sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==} 2379 resolution: {integrity: sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==}
2128 dev: false 2380 dev: false
2129 2381
2130 /@octokit/request-error@3.0.2: 2382 /@octokit/request-error@5.0.0:
2131 resolution: {integrity: sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==} 2383 resolution: {integrity: sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==}
2132 engines: {node: '>= 14'} 2384 engines: {node: '>= 18'}
2133 dependencies: 2385 dependencies:
2134 '@octokit/types': 8.0.0 2386 '@octokit/types': 11.1.0
2135 deprecation: 2.3.1 2387 deprecation: 2.3.1
2136 once: 1.4.0 2388 once: 1.4.0
2137 dev: false 2389 dev: false
2138 2390
2139 /@octokit/request@6.2.2: 2391 /@octokit/request@8.1.1:
2140 resolution: {integrity: sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==} 2392 resolution: {integrity: sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==}
2141 engines: {node: '>= 14'} 2393 engines: {node: '>= 18'}
2142 dependencies: 2394 dependencies:
2143 '@octokit/endpoint': 7.0.3 2395 '@octokit/endpoint': 9.0.0
2144 '@octokit/request-error': 3.0.2 2396 '@octokit/request-error': 5.0.0
2145 '@octokit/types': 8.0.0 2397 '@octokit/types': 11.1.0
2146 is-plain-object: 5.0.0 2398 is-plain-object: 5.0.0
2147 node-fetch: 2.6.11
2148 universal-user-agent: 6.0.0 2399 universal-user-agent: 6.0.0
2149 transitivePeerDependencies:
2150 - encoding
2151 dev: false
2152
2153 /@octokit/types@8.0.0:
2154 resolution: {integrity: sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==}
2155 dependencies:
2156 '@octokit/openapi-types': 14.0.0
2157 dev: false 2400 dev: false
2158 2401
2159 /@octokit/types@9.0.0: 2402 /@octokit/types@11.1.0:
2160 resolution: {integrity: sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==} 2403 resolution: {integrity: sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==}
2161 dependencies: 2404 dependencies:
2162 '@octokit/openapi-types': 16.0.0 2405 '@octokit/openapi-types': 18.0.0
2163 dev: false 2406 dev: false
2164 2407
2165 /@pkgjs/parseargs@0.11.0: 2408 /@pkgjs/parseargs@0.11.0:
@@ -2169,8 +2412,20 @@ packages:
2169 dev: true 2412 dev: true
2170 optional: true 2413 optional: true
2171 2414
2172 /@remix-run/router@1.0.2: 2415 /@pkgr/utils@2.4.2:
2173 resolution: {integrity: sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ==} 2416 resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==}
2417 engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
2418 dependencies:
2419 cross-spawn: 7.0.3
2420 fast-glob: 3.3.1
2421 is-glob: 4.0.3
2422 open: 9.1.0
2423 picocolors: 1.0.0
2424 tslib: 2.6.0
2425 dev: true
2426
2427 /@remix-run/router@1.6.2:
2428 resolution: {integrity: sha512-LzqpSrMK/3JBAVBI9u3NWtOhWNw5AMQfrUFYB0+bDHTSw17z++WJLsPsxAuK+oSddsxk4d7F/JcdDPM1M5YAhA==}
2174 engines: {node: '>=14'} 2429 engines: {node: '>=14'}
2175 dev: false 2430 dev: false
2176 2431
@@ -2202,7 +2457,7 @@ packages:
2202 '@sentry/types': 7.16.0 2457 '@sentry/types': 7.16.0
2203 '@sentry/utils': 7.16.0 2458 '@sentry/utils': 7.16.0
2204 deepmerge: 4.2.2 2459 deepmerge: 4.2.2
2205 tslib: 2.5.3 2460 tslib: 2.6.0
2206 transitivePeerDependencies: 2461 transitivePeerDependencies:
2207 - supports-color 2462 - supports-color
2208 dev: false 2463 dev: false
@@ -2253,6 +2508,10 @@ packages:
2253 resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} 2508 resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==}
2254 dev: true 2509 dev: true
2255 2510
2511 /@sinclair/typebox@0.27.8:
2512 resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
2513 dev: true
2514
2256 /@sindresorhus/is@4.6.0: 2515 /@sindresorhus/is@4.6.0:
2257 resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} 2516 resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
2258 engines: {node: '>=10'} 2517 engines: {node: '>=10'}
@@ -2265,6 +2524,7 @@ packages:
2265 2524
2266 /@sinonjs/fake-timers@10.2.0: 2525 /@sinonjs/fake-timers@10.2.0:
2267 resolution: {integrity: sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==} 2526 resolution: {integrity: sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==}
2527 deprecated: Use version 10.1.0. Version 10.2.0 has potential breaking issues
2268 dependencies: 2528 dependencies:
2269 '@sinonjs/commons': 3.0.0 2529 '@sinonjs/commons': 3.0.0
2270 dev: true 2530 dev: true
@@ -2278,7 +2538,7 @@ packages:
2278 resetable: 1.0.3 2538 resetable: 1.0.3
2279 dev: false 2539 dev: false
2280 2540
2281 /@superwf/mobx-react-router@7.4.0(history@5.3.0)(mobx@6.9.0)(path-to-regexp@6.2.1): 2541 /@superwf/mobx-react-router@7.4.0(history@5.3.0)(mobx@6.10.0)(path-to-regexp@6.2.1):
2282 resolution: {integrity: sha512-3Mq3p1mTJPYpDkYzAzhFLBCPqP528pHyu2V3UFSwcGGPUiFqFFmz31RIRYFHF13anQ2joxwrSllKZj0NiLMFpw==} 2542 resolution: {integrity: sha512-3Mq3p1mTJPYpDkYzAzhFLBCPqP528pHyu2V3UFSwcGGPUiFqFFmz31RIRYFHF13anQ2joxwrSllKZj0NiLMFpw==}
2283 peerDependencies: 2543 peerDependencies:
2284 history: '>=5' 2544 history: '>=5'
@@ -2286,7 +2546,7 @@ packages:
2286 path-to-regexp: '>=6' 2546 path-to-regexp: '>=6'
2287 dependencies: 2547 dependencies:
2288 history: 5.3.0 2548 history: 5.3.0
2289 mobx: 6.9.0 2549 mobx: 6.10.0
2290 path-to-regexp: 6.2.1 2550 path-to-regexp: 6.2.1
2291 dev: false 2551 dev: false
2292 2552
@@ -2323,6 +2583,10 @@ packages:
2323 resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} 2583 resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
2324 dev: true 2584 dev: true
2325 2585
2586 /@types/auto-launch@5.0.2:
2587 resolution: {integrity: sha512-b03X09+GCM9t6AUECpwA2gUPYs8s5tJHFJw92sK8EiJ7G4QNbsHmXV7nfCfP6G6ivtm230vi4oNfe8AzRgzxMQ==}
2588 dev: true
2589
2326 /@types/babel__core@7.1.20: 2590 /@types/babel__core@7.1.20:
2327 resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} 2591 resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==}
2328 dependencies: 2592 dependencies:
@@ -2382,10 +2646,6 @@ packages:
2382 '@types/ms': 0.7.31 2646 '@types/ms': 0.7.31
2383 dev: true 2647 dev: true
2384 2648
2385 /@types/expect.js@0.3.29:
2386 resolution: {integrity: sha512-zLlr7lW52PKk7GAMJc2v8zaVJUgkrOJBa+6/aGbzq/TYsrqrNT719kkf/98lrgCiV+VO/uwJM0E328NGtcB5yQ==}
2387 dev: true
2388
2389 /@types/fs-extra@11.0.1: 2649 /@types/fs-extra@11.0.1:
2390 resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} 2650 resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==}
2391 dependencies: 2651 dependencies:
@@ -2431,15 +2691,15 @@ packages:
2431 '@types/istanbul-lib-report': 3.0.0 2691 '@types/istanbul-lib-report': 3.0.0
2432 dev: true 2692 dev: true
2433 2693
2434 /@types/jest@29.5.2: 2694 /@types/jest@29.5.3:
2435 resolution: {integrity: sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==} 2695 resolution: {integrity: sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==}
2436 dependencies: 2696 dependencies:
2437 expect: 29.5.0 2697 expect: 29.5.0
2438 pretty-format: 29.5.0 2698 pretty-format: 29.5.0
2439 dev: true 2699 dev: true
2440 2700
2441 /@types/json-schema@7.0.11: 2701 /@types/json-schema@7.0.12:
2442 resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 2702 resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
2443 dev: true 2703 dev: true
2444 2704
2445 /@types/json5@0.0.29: 2705 /@types/json5@0.0.29:
@@ -2492,12 +2752,31 @@ packages:
2492 /@types/prop-types@15.7.5: 2752 /@types/prop-types@15.7.5:
2493 resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 2753 resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
2494 2754
2755 /@types/react-color@3.0.6:
2756 resolution: {integrity: sha512-OzPIO5AyRmLA7PlOyISlgabpYUa3En74LP8mTMa0veCA719SvYQov4WLMsHvCgXP+L+KI9yGhYnqZafVGG0P4w==}
2757 dependencies:
2758 '@types/react': 18.2.12
2759 '@types/reactcss': 1.2.6
2760 dev: true
2761
2495 /@types/react-dom@18.2.5: 2762 /@types/react-dom@18.2.5:
2496 resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==} 2763 resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==}
2497 dependencies: 2764 dependencies:
2498 '@types/react': 18.2.12 2765 '@types/react': 18.2.12
2499 dev: true 2766 dev: true
2500 2767
2768 /@types/react-loader@2.4.5:
2769 resolution: {integrity: sha512-eBtnKxGx/B+z6kSOMiVBYLPZmXLZDVoChSYk57N91HZKB1wSPICHPrgvlhC5j8Y7MCfoYRt4/emRwh2OQIhFrg==}
2770 dependencies:
2771 '@types/react': 18.2.12
2772 dev: true
2773
2774 /@types/react-transition-group@4.4.6:
2775 resolution: {integrity: sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==}
2776 dependencies:
2777 '@types/react': 18.2.12
2778 dev: true
2779
2501 /@types/react@18.2.12: 2780 /@types/react@18.2.12:
2502 resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} 2781 resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==}
2503 dependencies: 2782 dependencies:
@@ -2505,6 +2784,12 @@ packages:
2505 '@types/scheduler': 0.16.2 2784 '@types/scheduler': 0.16.2
2506 csstype: 3.1.2 2785 csstype: 3.1.2
2507 2786
2787 /@types/reactcss@1.2.6:
2788 resolution: {integrity: sha512-qaIzpCuXNWomGR1Xq8SCFTtF4v8V27Y6f+b9+bzHiv087MylI/nTCqqdChNeWS7tslgROmYB7yeiruWX7WnqNg==}
2789 dependencies:
2790 '@types/react': 18.2.12
2791 dev: true
2792
2508 /@types/responselike@1.0.0: 2793 /@types/responselike@1.0.0:
2509 resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} 2794 resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
2510 dependencies: 2795 dependencies:
@@ -2517,8 +2802,8 @@ packages:
2517 /@types/scheduler@0.16.2: 2802 /@types/scheduler@0.16.2:
2518 resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 2803 resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
2519 2804
2520 /@types/semver@7.3.13: 2805 /@types/semver@7.5.0:
2521 resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} 2806 resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==}
2522 2807
2523 /@types/stack-trace@0.0.29: 2808 /@types/stack-trace@0.0.29:
2524 resolution: {integrity: sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==} 2809 resolution: {integrity: sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==}
@@ -2566,60 +2851,83 @@ packages:
2566 '@types/node': 18.15.3 2851 '@types/node': 18.15.3
2567 optional: true 2852 optional: true
2568 2853
2569 /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.39.0)(typescript@5.0.4): 2854 /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.0.4):
2570 resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} 2855 resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
2571 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2856 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2572 peerDependencies: 2857 peerDependencies:
2573 '@typescript-eslint/parser': ^5.0.0 2858 '@typescript-eslint/parser': ^5.0.0 || ^6.0.0
2574 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 2859 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
2575 typescript: '*' 2860 typescript: '*'
2576 peerDependenciesMeta: 2861 peerDependenciesMeta:
2577 typescript: 2862 typescript:
2578 optional: true 2863 optional: true
2579 dependencies: 2864 dependencies:
2580 '@eslint-community/regexpp': 4.4.0 2865 '@eslint-community/regexpp': 4.6.0
2581 '@typescript-eslint/parser': 5.59.11(eslint@8.39.0)(typescript@5.0.4) 2866 '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.0.4)
2582 '@typescript-eslint/scope-manager': 5.59.11 2867 '@typescript-eslint/scope-manager': 5.62.0
2583 '@typescript-eslint/type-utils': 5.59.11(eslint@8.39.0)(typescript@5.0.4) 2868 '@typescript-eslint/type-utils': 5.62.0(eslint@8.45.0)(typescript@5.0.4)
2584 '@typescript-eslint/utils': 5.59.11(eslint@8.39.0)(typescript@5.0.4) 2869 '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.0.4)
2585 debug: 4.3.4 2870 debug: 4.3.4
2586 eslint: 8.39.0 2871 eslint: 8.45.0
2587 grapheme-splitter: 1.0.4 2872 graphemer: 1.4.0
2588 ignore: 5.2.4 2873 ignore: 5.2.4
2589 natural-compare-lite: 1.4.0 2874 natural-compare-lite: 1.4.0
2590 semver: 7.5.1 2875 semver: 7.5.4
2591 tsutils: 3.21.0(typescript@5.0.4) 2876 tsutils: 3.21.0(typescript@5.0.4)
2592 typescript: 5.0.4 2877 typescript: 5.0.4
2593 transitivePeerDependencies: 2878 transitivePeerDependencies:
2594 - supports-color 2879 - supports-color
2595 dev: true 2880 dev: true
2596 2881
2597 /@typescript-eslint/parser@5.59.11(eslint@8.39.0)(typescript@5.0.4): 2882 /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.0.4):
2598 resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} 2883 resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==}
2599 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2884 engines: {node: ^16.0.0 || >=18.0.0}
2600 peerDependencies: 2885 peerDependencies:
2601 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 2886 '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
2887 eslint: ^7.0.0 || ^8.0.0
2602 typescript: '*' 2888 typescript: '*'
2603 peerDependenciesMeta: 2889 peerDependenciesMeta:
2604 typescript: 2890 typescript:
2605 optional: true 2891 optional: true
2606 dependencies: 2892 dependencies:
2607 '@typescript-eslint/scope-manager': 5.59.11 2893 '@eslint-community/regexpp': 4.6.0
2608 '@typescript-eslint/types': 5.59.11 2894 '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.0.4)
2609 '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.0.4) 2895 '@typescript-eslint/scope-manager': 6.1.0
2896 '@typescript-eslint/type-utils': 6.1.0(eslint@8.45.0)(typescript@5.0.4)
2897 '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.0.4)
2898 '@typescript-eslint/visitor-keys': 6.1.0
2610 debug: 4.3.4 2899 debug: 4.3.4
2611 eslint: 8.39.0 2900 eslint: 8.45.0
2901 graphemer: 1.4.0
2902 ignore: 5.2.4
2903 natural-compare: 1.4.0
2904 natural-compare-lite: 1.4.0
2905 semver: 7.5.4
2906 ts-api-utils: 1.0.1(typescript@5.0.4)
2612 typescript: 5.0.4 2907 typescript: 5.0.4
2613 transitivePeerDependencies: 2908 transitivePeerDependencies:
2614 - supports-color 2909 - supports-color
2615 dev: true 2910 dev: true
2616 2911
2617 /@typescript-eslint/scope-manager@5.48.1: 2912 /@typescript-eslint/parser@6.1.0(eslint@8.45.0)(typescript@5.0.4):
2618 resolution: {integrity: sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==} 2913 resolution: {integrity: sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==}
2619 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2914 engines: {node: ^16.0.0 || >=18.0.0}
2915 peerDependencies:
2916 eslint: ^7.0.0 || ^8.0.0
2917 typescript: '*'
2918 peerDependenciesMeta:
2919 typescript:
2920 optional: true
2620 dependencies: 2921 dependencies:
2621 '@typescript-eslint/types': 5.48.1 2922 '@typescript-eslint/scope-manager': 6.1.0
2622 '@typescript-eslint/visitor-keys': 5.48.1 2923 '@typescript-eslint/types': 6.1.0
2924 '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.0.4)
2925 '@typescript-eslint/visitor-keys': 6.1.0
2926 debug: 4.3.4
2927 eslint: 8.45.0
2928 typescript: 5.0.4
2929 transitivePeerDependencies:
2930 - supports-color
2623 dev: true 2931 dev: true
2624 2932
2625 /@typescript-eslint/scope-manager@5.59.11: 2933 /@typescript-eslint/scope-manager@5.59.11:
@@ -2630,8 +2938,24 @@ packages:
2630 '@typescript-eslint/visitor-keys': 5.59.11 2938 '@typescript-eslint/visitor-keys': 5.59.11
2631 dev: true 2939 dev: true
2632 2940
2633 /@typescript-eslint/type-utils@5.59.11(eslint@8.39.0)(typescript@5.0.4): 2941 /@typescript-eslint/scope-manager@5.62.0:
2634 resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} 2942 resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
2943 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2944 dependencies:
2945 '@typescript-eslint/types': 5.62.0
2946 '@typescript-eslint/visitor-keys': 5.62.0
2947 dev: true
2948
2949 /@typescript-eslint/scope-manager@6.1.0:
2950 resolution: {integrity: sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==}
2951 engines: {node: ^16.0.0 || >=18.0.0}
2952 dependencies:
2953 '@typescript-eslint/types': 6.1.0
2954 '@typescript-eslint/visitor-keys': 6.1.0
2955 dev: true
2956
2957 /@typescript-eslint/type-utils@5.62.0(eslint@8.45.0)(typescript@5.0.4):
2958 resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
2635 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2959 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2636 peerDependencies: 2960 peerDependencies:
2637 eslint: '*' 2961 eslint: '*'
@@ -2640,19 +2964,34 @@ packages:
2640 typescript: 2964 typescript:
2641 optional: true 2965 optional: true
2642 dependencies: 2966 dependencies:
2643 '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.0.4) 2967 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4)
2644 '@typescript-eslint/utils': 5.59.11(eslint@8.39.0)(typescript@5.0.4) 2968 '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.0.4)
2645 debug: 4.3.4 2969 debug: 4.3.4
2646 eslint: 8.39.0 2970 eslint: 8.45.0
2647 tsutils: 3.21.0(typescript@5.0.4) 2971 tsutils: 3.21.0(typescript@5.0.4)
2648 typescript: 5.0.4 2972 typescript: 5.0.4
2649 transitivePeerDependencies: 2973 transitivePeerDependencies:
2650 - supports-color 2974 - supports-color
2651 dev: true 2975 dev: true
2652 2976
2653 /@typescript-eslint/types@5.48.1: 2977 /@typescript-eslint/type-utils@6.1.0(eslint@8.45.0)(typescript@5.0.4):
2654 resolution: {integrity: sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==} 2978 resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==}
2655 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2979 engines: {node: ^16.0.0 || >=18.0.0}
2980 peerDependencies:
2981 eslint: ^7.0.0 || ^8.0.0
2982 typescript: '*'
2983 peerDependenciesMeta:
2984 typescript:
2985 optional: true
2986 dependencies:
2987 '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.0.4)
2988 '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.0.4)
2989 debug: 4.3.4
2990 eslint: 8.45.0
2991 ts-api-utils: 1.0.1(typescript@5.0.4)
2992 typescript: 5.0.4
2993 transitivePeerDependencies:
2994 - supports-color
2656 dev: true 2995 dev: true
2657 2996
2658 /@typescript-eslint/types@5.59.11: 2997 /@typescript-eslint/types@5.59.11:
@@ -2660,8 +2999,18 @@ packages:
2660 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2999 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2661 dev: true 3000 dev: true
2662 3001
2663 /@typescript-eslint/typescript-estree@5.48.1(typescript@5.0.4): 3002 /@typescript-eslint/types@5.62.0:
2664 resolution: {integrity: sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==} 3003 resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
3004 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3005 dev: true
3006
3007 /@typescript-eslint/types@6.1.0:
3008 resolution: {integrity: sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==}
3009 engines: {node: ^16.0.0 || >=18.0.0}
3010 dev: true
3011
3012 /@typescript-eslint/typescript-estree@5.59.11(typescript@5.0.4):
3013 resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==}
2665 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3014 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2666 peerDependencies: 3015 peerDependencies:
2667 typescript: '*' 3016 typescript: '*'
@@ -2669,20 +3018,20 @@ packages:
2669 typescript: 3018 typescript:
2670 optional: true 3019 optional: true
2671 dependencies: 3020 dependencies:
2672 '@typescript-eslint/types': 5.48.1 3021 '@typescript-eslint/types': 5.59.11
2673 '@typescript-eslint/visitor-keys': 5.48.1 3022 '@typescript-eslint/visitor-keys': 5.59.11
2674 debug: 4.3.4 3023 debug: 4.3.4
2675 globby: 11.1.0 3024 globby: 11.1.0
2676 is-glob: 4.0.3 3025 is-glob: 4.0.3
2677 semver: 7.5.1 3026 semver: 7.5.4
2678 tsutils: 3.21.0(typescript@5.0.4) 3027 tsutils: 3.21.0(typescript@5.0.4)
2679 typescript: 5.0.4 3028 typescript: 5.0.4
2680 transitivePeerDependencies: 3029 transitivePeerDependencies:
2681 - supports-color 3030 - supports-color
2682 dev: true 3031 dev: true
2683 3032
2684 /@typescript-eslint/typescript-estree@5.59.11(typescript@5.0.4): 3033 /@typescript-eslint/typescript-estree@5.62.0(typescript@5.0.4):
2685 resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} 3034 resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
2686 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3035 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2687 peerDependencies: 3036 peerDependencies:
2688 typescript: '*' 3037 typescript: '*'
@@ -2690,64 +3039,96 @@ packages:
2690 typescript: 3039 typescript:
2691 optional: true 3040 optional: true
2692 dependencies: 3041 dependencies:
2693 '@typescript-eslint/types': 5.59.11 3042 '@typescript-eslint/types': 5.62.0
2694 '@typescript-eslint/visitor-keys': 5.59.11 3043 '@typescript-eslint/visitor-keys': 5.62.0
2695 debug: 4.3.4 3044 debug: 4.3.4
2696 globby: 11.1.0 3045 globby: 11.1.0
2697 is-glob: 4.0.3 3046 is-glob: 4.0.3
2698 semver: 7.5.1 3047 semver: 7.5.4
2699 tsutils: 3.21.0(typescript@5.0.4) 3048 tsutils: 3.21.0(typescript@5.0.4)
2700 typescript: 5.0.4 3049 typescript: 5.0.4
2701 transitivePeerDependencies: 3050 transitivePeerDependencies:
2702 - supports-color 3051 - supports-color
2703 dev: true 3052 dev: true
2704 3053
2705 /@typescript-eslint/utils@5.48.1(eslint@8.39.0)(typescript@5.0.4): 3054 /@typescript-eslint/typescript-estree@6.1.0(typescript@5.0.4):
2706 resolution: {integrity: sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==} 3055 resolution: {integrity: sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==}
2707 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3056 engines: {node: ^16.0.0 || >=18.0.0}
2708 peerDependencies: 3057 peerDependencies:
2709 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 3058 typescript: '*'
3059 peerDependenciesMeta:
3060 typescript:
3061 optional: true
2710 dependencies: 3062 dependencies:
2711 '@types/json-schema': 7.0.11 3063 '@typescript-eslint/types': 6.1.0
2712 '@types/semver': 7.3.13 3064 '@typescript-eslint/visitor-keys': 6.1.0
2713 '@typescript-eslint/scope-manager': 5.48.1 3065 debug: 4.3.4
2714 '@typescript-eslint/types': 5.48.1 3066 globby: 11.1.0
2715 '@typescript-eslint/typescript-estree': 5.48.1(typescript@5.0.4) 3067 is-glob: 4.0.3
2716 eslint: 8.39.0 3068 semver: 7.5.4
2717 eslint-scope: 5.1.1 3069 ts-api-utils: 1.0.1(typescript@5.0.4)
2718 eslint-utils: 3.0.0(eslint@8.39.0) 3070 typescript: 5.0.4
2719 semver: 7.5.1
2720 transitivePeerDependencies: 3071 transitivePeerDependencies:
2721 - supports-color 3072 - supports-color
2722 - typescript
2723 dev: true 3073 dev: true
2724 3074
2725 /@typescript-eslint/utils@5.59.11(eslint@8.39.0)(typescript@5.0.4): 3075 /@typescript-eslint/utils@5.59.11(eslint@8.45.0)(typescript@5.0.4):
2726 resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} 3076 resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==}
2727 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3077 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2728 peerDependencies: 3078 peerDependencies:
2729 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 3079 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
2730 dependencies: 3080 dependencies:
2731 '@eslint-community/eslint-utils': 4.3.0(eslint@8.39.0) 3081 '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0)
2732 '@types/json-schema': 7.0.11 3082 '@types/json-schema': 7.0.12
2733 '@types/semver': 7.3.13 3083 '@types/semver': 7.5.0
2734 '@typescript-eslint/scope-manager': 5.59.11 3084 '@typescript-eslint/scope-manager': 5.59.11
2735 '@typescript-eslint/types': 5.59.11 3085 '@typescript-eslint/types': 5.59.11
2736 '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.0.4) 3086 '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.0.4)
2737 eslint: 8.39.0 3087 eslint: 8.45.0
2738 eslint-scope: 5.1.1 3088 eslint-scope: 5.1.1
2739 semver: 7.5.1 3089 semver: 7.5.4
2740 transitivePeerDependencies: 3090 transitivePeerDependencies:
2741 - supports-color 3091 - supports-color
2742 - typescript 3092 - typescript
2743 dev: true 3093 dev: true
2744 3094
2745 /@typescript-eslint/visitor-keys@5.48.1: 3095 /@typescript-eslint/utils@5.62.0(eslint@8.45.0)(typescript@5.0.4):
2746 resolution: {integrity: sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==} 3096 resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
2747 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3097 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3098 peerDependencies:
3099 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
2748 dependencies: 3100 dependencies:
2749 '@typescript-eslint/types': 5.48.1 3101 '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0)
2750 eslint-visitor-keys: 3.4.1 3102 '@types/json-schema': 7.0.12
3103 '@types/semver': 7.5.0
3104 '@typescript-eslint/scope-manager': 5.62.0
3105 '@typescript-eslint/types': 5.62.0
3106 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4)
3107 eslint: 8.45.0
3108 eslint-scope: 5.1.1
3109 semver: 7.5.4
3110 transitivePeerDependencies:
3111 - supports-color
3112 - typescript
3113 dev: true
3114
3115 /@typescript-eslint/utils@6.1.0(eslint@8.45.0)(typescript@5.0.4):
3116 resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==}
3117 engines: {node: ^16.0.0 || >=18.0.0}
3118 peerDependencies:
3119 eslint: ^7.0.0 || ^8.0.0
3120 dependencies:
3121 '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0)
3122 '@types/json-schema': 7.0.12
3123 '@types/semver': 7.5.0
3124 '@typescript-eslint/scope-manager': 6.1.0
3125 '@typescript-eslint/types': 6.1.0
3126 '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.0.4)
3127 eslint: 8.45.0
3128 semver: 7.5.4
3129 transitivePeerDependencies:
3130 - supports-color
3131 - typescript
2751 dev: true 3132 dev: true
2752 3133
2753 /@typescript-eslint/visitor-keys@5.59.11: 3134 /@typescript-eslint/visitor-keys@5.59.11:
@@ -2758,6 +3139,29 @@ packages:
2758 eslint-visitor-keys: 3.4.1 3139 eslint-visitor-keys: 3.4.1
2759 dev: true 3140 dev: true
2760 3141
3142 /@typescript-eslint/visitor-keys@5.62.0:
3143 resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
3144 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3145 dependencies:
3146 '@typescript-eslint/types': 5.62.0
3147 eslint-visitor-keys: 3.4.1
3148 dev: true
3149
3150 /@typescript-eslint/visitor-keys@6.1.0:
3151 resolution: {integrity: sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==}
3152 engines: {node: ^16.0.0 || >=18.0.0}
3153 dependencies:
3154 '@typescript-eslint/types': 6.1.0
3155 eslint-visitor-keys: 3.4.1
3156 dev: true
3157
3158 /@xmldom/xmldom@0.8.10:
3159 resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==}
3160 engines: {node: '>=10.0.0'}
3161 requiresBuild: true
3162 dev: true
3163 optional: true
3164
2761 /JSONStream@1.3.5: 3165 /JSONStream@1.3.5:
2762 resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} 3166 resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
2763 hasBin: true 3167 hasBin: true
@@ -2777,12 +3181,12 @@ packages:
2777 negotiator: 0.6.3 3181 negotiator: 0.6.3
2778 dev: false 3182 dev: false
2779 3183
2780 /acorn-jsx@5.3.2(acorn@8.8.2): 3184 /acorn-jsx@5.3.2(acorn@8.10.0):
2781 resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 3185 resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
2782 peerDependencies: 3186 peerDependencies:
2783 acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 3187 acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
2784 dependencies: 3188 dependencies:
2785 acorn: 8.8.2 3189 acorn: 8.10.0
2786 dev: true 3190 dev: true
2787 3191
2788 /acorn-node@1.8.2: 3192 /acorn-node@1.8.2:
@@ -2809,8 +3213,8 @@ packages:
2809 hasBin: true 3213 hasBin: true
2810 dev: false 3214 dev: false
2811 3215
2812 /acorn@8.8.2: 3216 /acorn@8.10.0:
2813 resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 3217 resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
2814 engines: {node: '>=0.4.0'} 3218 engines: {node: '>=0.4.0'}
2815 hasBin: true 3219 hasBin: true
2816 dev: true 3220 dev: true
@@ -2823,6 +3227,15 @@ packages:
2823 transitivePeerDependencies: 3227 transitivePeerDependencies:
2824 - supports-color 3228 - supports-color
2825 3229
3230 /agent-base@7.1.0:
3231 resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
3232 engines: {node: '>= 14'}
3233 dependencies:
3234 debug: 4.3.4
3235 transitivePeerDependencies:
3236 - supports-color
3237 dev: false
3238
2826 /agentkeepalive@4.2.1: 3239 /agentkeepalive@4.2.1:
2827 resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} 3240 resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==}
2828 engines: {node: '>= 8.0.0'} 3241 engines: {node: '>= 8.0.0'}
@@ -2865,8 +3278,8 @@ packages:
2865 uri-js: 4.4.1 3278 uri-js: 4.4.1
2866 dev: true 3279 dev: true
2867 3280
2868 /all-contributors-cli@6.26.0: 3281 /all-contributors-cli@6.26.1:
2869 resolution: {integrity: sha512-HOMfawD0XyNbOvLUn7rOAP5N9RLnbH+Y/9/IoxwPzCmy6srHSFyRMwbpD0H7Tw+1QzdJT8RH7bTe1IZkPhF+NQ==} 3282 resolution: {integrity: sha512-Ymgo3FJACRBEd1eE653FD1J/+uD0kqpUNYfr9zNC1Qby0LgbhDBzB3EF6uvkAbYpycStkk41J+0oo37Lc02yEw==}
2870 engines: {node: '>=4'} 3283 engines: {node: '>=4'}
2871 hasBin: true 3284 hasBin: true
2872 dependencies: 3285 dependencies:
@@ -3199,10 +3612,10 @@ packages:
3199 isbinaryfile: 5.0.0 3612 isbinaryfile: 5.0.0
3200 js-yaml: 4.1.0 3613 js-yaml: 4.1.0
3201 lazy-val: 1.0.5 3614 lazy-val: 1.0.5
3202 minimatch: 5.1.2 3615 minimatch: 5.1.6
3203 read-config-file: 6.3.2 3616 read-config-file: 6.3.2
3204 sanitize-filename: 1.6.3 3617 sanitize-filename: 1.6.3
3205 semver: 7.5.1 3618 semver: 7.5.4
3206 tar: 6.1.15 3619 tar: 6.1.15
3207 temp-file: 3.4.0 3620 temp-file: 3.4.0
3208 transitivePeerDependencies: 3621 transitivePeerDependencies:
@@ -3278,6 +3691,13 @@ packages:
3278 engines: {node: '>=0.10.0'} 3691 engines: {node: '>=0.10.0'}
3279 dev: false 3692 dev: false
3280 3693
3694 /array-buffer-byte-length@1.0.0:
3695 resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
3696 dependencies:
3697 call-bind: 1.0.2
3698 is-array-buffer: 3.0.2
3699 dev: true
3700
3281 /array-each@1.0.1: 3701 /array-each@1.0.1:
3282 resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} 3702 resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==}
3283 engines: {node: '>=0.10.0'} 3703 engines: {node: '>=0.10.0'}
@@ -3293,8 +3713,8 @@ packages:
3293 dependencies: 3713 dependencies:
3294 call-bind: 1.0.2 3714 call-bind: 1.0.2
3295 define-properties: 1.2.0 3715 define-properties: 1.2.0
3296 es-abstract: 1.20.4 3716 es-abstract: 1.22.1
3297 get-intrinsic: 1.2.0 3717 get-intrinsic: 1.2.1
3298 is-string: 1.0.7 3718 is-string: 1.0.7
3299 dev: true 3719 dev: true
3300 3720
@@ -3318,8 +3738,8 @@ packages:
3318 engines: {node: '>= 0.4'} 3738 engines: {node: '>= 0.4'}
3319 dependencies: 3739 dependencies:
3320 call-bind: 1.0.2 3740 call-bind: 1.0.2
3321 define-properties: 1.1.4 3741 define-properties: 1.2.0
3322 es-abstract: 1.20.4 3742 es-abstract: 1.22.1
3323 es-shim-unscopables: 1.0.0 3743 es-shim-unscopables: 1.0.0
3324 dev: true 3744 dev: true
3325 3745
@@ -3329,7 +3749,7 @@ packages:
3329 dependencies: 3749 dependencies:
3330 call-bind: 1.0.2 3750 call-bind: 1.0.2
3331 define-properties: 1.2.0 3751 define-properties: 1.2.0
3332 es-abstract: 1.20.4 3752 es-abstract: 1.22.1
3333 es-shim-unscopables: 1.0.0 3753 es-shim-unscopables: 1.0.0
3334 dev: true 3754 dev: true
3335 3755
@@ -3338,9 +3758,21 @@ packages:
3338 dependencies: 3758 dependencies:
3339 call-bind: 1.0.2 3759 call-bind: 1.0.2
3340 define-properties: 1.2.0 3760 define-properties: 1.2.0
3341 es-abstract: 1.20.4 3761 es-abstract: 1.22.1
3342 es-shim-unscopables: 1.0.0 3762 es-shim-unscopables: 1.0.0
3343 get-intrinsic: 1.2.0 3763 get-intrinsic: 1.2.1
3764 dev: true
3765
3766 /arraybuffer.prototype.slice@1.0.1:
3767 resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==}
3768 engines: {node: '>= 0.4'}
3769 dependencies:
3770 array-buffer-byte-length: 1.0.0
3771 call-bind: 1.0.2
3772 define-properties: 1.2.0
3773 get-intrinsic: 1.2.1
3774 is-array-buffer: 3.0.2
3775 is-shared-array-buffer: 1.0.2
3344 dev: true 3776 dev: true
3345 3777
3346 /arrify@1.0.1: 3778 /arrify@1.0.1:
@@ -3444,14 +3876,14 @@ packages:
3444 deep-equal: 2.2.0 3876 deep-equal: 2.2.0
3445 dev: true 3877 dev: true
3446 3878
3447 /babel-jest@29.5.0(@babel/core@7.20.5): 3879 /babel-jest@29.6.1(@babel/core@7.20.5):
3448 resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} 3880 resolution: {integrity: sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A==}
3449 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 3881 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
3450 peerDependencies: 3882 peerDependencies:
3451 '@babel/core': ^7.8.0 3883 '@babel/core': ^7.8.0
3452 dependencies: 3884 dependencies:
3453 '@babel/core': 7.20.5 3885 '@babel/core': 7.20.5
3454 '@jest/transform': 29.5.0 3886 '@jest/transform': 29.6.1
3455 '@types/babel__core': 7.1.20 3887 '@types/babel__core': 7.1.20
3456 babel-plugin-istanbul: 6.1.1 3888 babel-plugin-istanbul: 6.1.1
3457 babel-preset-jest: 29.5.0(@babel/core@7.20.5) 3889 babel-preset-jest: 29.5.0(@babel/core@7.20.5)
@@ -3522,7 +3954,6 @@ packages:
3522 /base64-js@1.5.1: 3954 /base64-js@1.5.1:
3523 resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 3955 resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
3524 requiresBuild: true 3956 requiresBuild: true
3525 dev: true
3526 3957
3527 /base@0.11.2: 3958 /base@0.11.2:
3528 resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} 3959 resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
@@ -3561,20 +3992,13 @@ packages:
3561 /big-integer@1.6.51: 3992 /big-integer@1.6.51:
3562 resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} 3993 resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==}
3563 engines: {node: '>=0.6'} 3994 engines: {node: '>=0.6'}
3564 dev: false 3995 dev: true
3565 3996
3566 /binary-extensions@2.2.0: 3997 /binary-extensions@2.2.0:
3567 resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 3998 resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
3568 engines: {node: '>=8'} 3999 engines: {node: '>=8'}
3569 dev: true 4000 dev: true
3570 4001
3571 /binary@0.3.0:
3572 resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==}
3573 dependencies:
3574 buffers: 0.1.1
3575 chainsaw: 0.1.0
3576 dev: false
3577
3578 /bindings@1.5.0: 4002 /bindings@1.5.0:
3579 resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 4003 resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
3580 dependencies: 4004 dependencies:
@@ -3582,6 +4006,13 @@ packages:
3582 dev: false 4006 dev: false
3583 optional: true 4007 optional: true
3584 4008
4009 /bl@1.2.3:
4010 resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==}
4011 dependencies:
4012 readable-stream: 2.3.8
4013 safe-buffer: 5.2.1
4014 dev: false
4015
3585 /bl@4.1.0: 4016 /bl@4.1.0:
3586 resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 4017 resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
3587 dependencies: 4018 dependencies:
@@ -3596,10 +4027,6 @@ packages:
3596 bluebird: 3.7.2 4027 bluebird: 3.7.2
3597 dev: true 4028 dev: true
3598 4029
3599 /bluebird@3.4.7:
3600 resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==}
3601 dev: false
3602
3603 /bluebird@3.7.2: 4030 /bluebird@3.7.2:
3604 resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} 4031 resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
3605 dev: true 4032 dev: true
@@ -3617,6 +4044,13 @@ packages:
3617 resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} 4044 resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==}
3618 optional: true 4045 optional: true
3619 4046
4047 /bplist-parser@0.2.0:
4048 resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==}
4049 engines: {node: '>= 5.10.0'}
4050 dependencies:
4051 big-integer: 1.6.51
4052 dev: true
4053
3620 /brace-expansion@1.1.11: 4054 /brace-expansion@1.1.11:
3621 resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 4055 resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
3622 dependencies: 4056 dependencies:
@@ -3654,12 +4088,23 @@ packages:
3654 fill-range: 7.0.1 4088 fill-range: 7.0.1
3655 dev: true 4089 dev: true
3656 4090
4091 /browserslist@4.21.10:
4092 resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==}
4093 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
4094 hasBin: true
4095 dependencies:
4096 caniuse-lite: 1.0.30001518
4097 electron-to-chromium: 1.4.482
4098 node-releases: 2.0.13
4099 update-browserslist-db: 1.0.11(browserslist@4.21.10)
4100 dev: true
4101
3657 /browserslist@4.21.4: 4102 /browserslist@4.21.4:
3658 resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 4103 resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==}
3659 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 4104 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
3660 hasBin: true 4105 hasBin: true
3661 dependencies: 4106 dependencies:
3662 caniuse-lite: 1.0.30001506 4107 caniuse-lite: 1.0.30001518
3663 electron-to-chromium: 1.4.284 4108 electron-to-chromium: 1.4.284
3664 node-releases: 2.0.6 4109 node-releases: 2.0.6
3665 update-browserslist-db: 1.0.10(browserslist@4.21.4) 4110 update-browserslist-db: 1.0.10(browserslist@4.21.4)
@@ -3676,10 +4121,15 @@ packages:
3676 engines: {node: '>=0.6.19'} 4121 engines: {node: '>=0.6.19'}
3677 dev: false 4122 dev: false
3678 4123
3679 /btoa@1.2.1: 4124 /buffer-alloc-unsafe@1.1.0:
3680 resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} 4125 resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==}
3681 engines: {node: '>= 0.4.0'} 4126 dev: false
3682 hasBin: true 4127
4128 /buffer-alloc@1.2.0:
4129 resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==}
4130 dependencies:
4131 buffer-alloc-unsafe: 1.1.0
4132 buffer-fill: 1.0.0
3683 dev: false 4133 dev: false
3684 4134
3685 /buffer-crc32@0.2.13: 4135 /buffer-crc32@0.2.13:
@@ -3694,27 +4144,20 @@ packages:
3694 engines: {node: '>=0.4.0'} 4144 engines: {node: '>=0.4.0'}
3695 dev: true 4145 dev: true
3696 4146
4147 /buffer-fill@1.0.0:
4148 resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==}
4149 dev: false
4150
3697 /buffer-from@1.1.2: 4151 /buffer-from@1.1.2:
3698 resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 4152 resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
3699 dev: true 4153 dev: true
3700 4154
3701 /buffer-indexof-polyfill@1.0.2:
3702 resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==}
3703 engines: {node: '>=0.10'}
3704 dev: false
3705
3706 /buffer@5.7.1: 4155 /buffer@5.7.1:
3707 resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 4156 resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
3708 requiresBuild: true 4157 requiresBuild: true
3709 dependencies: 4158 dependencies:
3710 base64-js: 1.5.1 4159 base64-js: 1.5.1
3711 ieee754: 1.2.1 4160 ieee754: 1.2.1
3712 dev: true
3713
3714 /buffers@0.1.1:
3715 resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==}
3716 engines: {node: '>=0.2.0'}
3717 dev: false
3718 4161
3719 /builder-util-runtime@9.1.1: 4162 /builder-util-runtime@9.1.1:
3720 resolution: {integrity: sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==} 4163 resolution: {integrity: sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==}
@@ -3764,6 +4207,13 @@ packages:
3764 engines: {node: '>=6'} 4207 engines: {node: '>=6'}
3765 dev: true 4208 dev: true
3766 4209
4210 /bundle-name@3.0.0:
4211 resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==}
4212 engines: {node: '>=12'}
4213 dependencies:
4214 run-applescript: 5.0.0
4215 dev: true
4216
3767 /bytes@1.0.0: 4217 /bytes@1.0.0:
3768 resolution: {integrity: sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ==} 4218 resolution: {integrity: sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ==}
3769 dev: true 4219 dev: true
@@ -3771,7 +4221,6 @@ packages:
3771 /bytes@3.1.2: 4221 /bytes@3.1.2:
3772 resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 4222 resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
3773 engines: {node: '>= 0.8'} 4223 engines: {node: '>= 0.8'}
3774 dev: false
3775 4224
3776 /cacache@15.3.0: 4225 /cacache@15.3.0:
3777 resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} 4226 resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==}
@@ -3861,7 +4310,7 @@ packages:
3861 resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 4310 resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
3862 dependencies: 4311 dependencies:
3863 function-bind: 1.1.1 4312 function-bind: 1.1.1
3864 get-intrinsic: 1.2.0 4313 get-intrinsic: 1.2.1
3865 4314
3866 /caller-path@0.1.0: 4315 /caller-path@0.1.0:
3867 resolution: {integrity: sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==} 4316 resolution: {integrity: sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==}
@@ -3903,24 +4352,14 @@ packages:
3903 engines: {node: '>=10'} 4352 engines: {node: '>=10'}
3904 dev: true 4353 dev: true
3905 4354
3906 /caniuse-lite@1.0.30001506: 4355 /caniuse-lite@1.0.30001518:
3907 resolution: {integrity: sha512-6XNEcpygZMCKaufIcgpQNZNf00GEqc7VQON+9Rd0K1bMYo8xhMZRAo5zpbnbMNizi4YNgIDAFrdykWsvY3H4Hw==} 4356 resolution: {integrity: sha512-rup09/e3I0BKjncL+FesTayKtPrdwKhUufQFd3riFw1hHg8JmIFoInYfB102cFcY/pPgGmdyl/iy+jgiDi2vdA==}
3908 dev: true 4357 dev: true
3909 4358
3910 /caseless@0.12.0: 4359 /caseless@0.12.0:
3911 resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} 4360 resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
3912 dev: false 4361 dev: false
3913 4362
3914 /chain-function@1.0.1:
3915 resolution: {integrity: sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==}
3916 dev: false
3917
3918 /chainsaw@0.1.0:
3919 resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==}
3920 dependencies:
3921 traverse: 0.3.9
3922 dev: false
3923
3924 /chalk@2.4.2: 4363 /chalk@2.4.2:
3925 resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 4364 resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
3926 engines: {node: '>=4'} 4365 engines: {node: '>=4'}
@@ -3938,8 +4377,8 @@ packages:
3938 supports-color: 7.2.0 4377 supports-color: 7.2.0
3939 dev: true 4378 dev: true
3940 4379
3941 /chalk@5.2.0: 4380 /chalk@5.3.0:
3942 resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} 4381 resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
3943 engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 4382 engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
3944 dev: true 4383 dev: true
3945 4384
@@ -4442,7 +4881,7 @@ packages:
4442 dependencies: 4881 dependencies:
4443 nice-try: 1.0.5 4882 nice-try: 1.0.5
4444 path-key: 2.0.1 4883 path-key: 2.0.1
4445 semver: 5.7.1 4884 semver: 5.7.2
4446 shebang-command: 1.2.0 4885 shebang-command: 1.2.0
4447 which: 1.3.1 4886 which: 1.3.1
4448 dev: false 4887 dev: false
@@ -4467,7 +4906,7 @@ packages:
4467 /css-jss@10.10.0: 4906 /css-jss@10.10.0:
4468 resolution: {integrity: sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA==} 4907 resolution: {integrity: sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA==}
4469 dependencies: 4908 dependencies:
4470 '@babel/runtime': 7.20.7 4909 '@babel/runtime': 7.21.5
4471 jss: 10.10.0 4910 jss: 10.10.0
4472 jss-preset-default: 10.10.0 4911 jss-preset-default: 10.10.0
4473 dev: false 4912 dev: false
@@ -4475,7 +4914,7 @@ packages:
4475 /css-vendor@2.0.8: 4914 /css-vendor@2.0.8:
4476 resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} 4915 resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==}
4477 dependencies: 4916 dependencies:
4478 '@babel/runtime': 7.20.7 4917 '@babel/runtime': 7.21.5
4479 is-in-browser: 1.1.3 4918 is-in-browser: 1.1.3
4480 dev: false 4919 dev: false
4481 4920
@@ -4596,6 +5035,59 @@ packages:
4596 dependencies: 5035 dependencies:
4597 mimic-response: 3.1.0 5036 mimic-response: 3.1.0
4598 5037
5038 /decompress-tar@4.1.1:
5039 resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==}
5040 engines: {node: '>=4'}
5041 dependencies:
5042 file-type: 5.2.0
5043 is-stream: 1.1.0
5044 tar-stream: 1.6.2
5045 dev: false
5046
5047 /decompress-tarbz2@4.1.1:
5048 resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==}
5049 engines: {node: '>=4'}
5050 dependencies:
5051 decompress-tar: 4.1.1
5052 file-type: 6.2.0
5053 is-stream: 1.1.0
5054 seek-bzip: 1.0.6
5055 unbzip2-stream: 1.4.3
5056 dev: false
5057
5058 /decompress-targz@4.1.1:
5059 resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==}
5060 engines: {node: '>=4'}
5061 dependencies:
5062 decompress-tar: 4.1.1
5063 file-type: 5.2.0
5064 is-stream: 1.1.0
5065 dev: false
5066
5067 /decompress-unzip@4.0.1:
5068 resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==}
5069 engines: {node: '>=4'}
5070 dependencies:
5071 file-type: 3.9.0
5072 get-stream: 2.3.1
5073 pify: 2.3.0
5074 yauzl: 2.10.0
5075 dev: false
5076
5077 /decompress@4.2.1:
5078 resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==}
5079 engines: {node: '>=4'}
5080 dependencies:
5081 decompress-tar: 4.1.1
5082 decompress-tarbz2: 4.1.1
5083 decompress-targz: 4.1.1
5084 decompress-unzip: 4.0.1
5085 graceful-fs: 4.2.11
5086 make-dir: 1.3.0
5087 pify: 2.3.0
5088 strip-dirs: 2.1.0
5089 dev: false
5090
4599 /dedent@0.7.0: 5091 /dedent@0.7.0:
4600 resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} 5092 resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
4601 dev: true 5093 dev: true
@@ -4605,9 +5097,9 @@ packages:
4605 dependencies: 5097 dependencies:
4606 call-bind: 1.0.2 5098 call-bind: 1.0.2
4607 es-get-iterator: 1.1.2 5099 es-get-iterator: 1.1.2
4608 get-intrinsic: 1.2.0 5100 get-intrinsic: 1.2.1
4609 is-arguments: 1.1.1 5101 is-arguments: 1.1.1
4610 is-array-buffer: 3.0.1 5102 is-array-buffer: 3.0.2
4611 is-date-object: 1.0.5 5103 is-date-object: 1.0.5
4612 is-regex: 1.1.4 5104 is-regex: 1.1.4
4613 is-shared-array-buffer: 1.0.2 5105 is-shared-array-buffer: 1.0.2
@@ -4615,11 +5107,11 @@ packages:
4615 object-is: 1.1.5 5107 object-is: 1.1.5
4616 object-keys: 1.1.1 5108 object-keys: 1.1.1
4617 object.assign: 4.1.4 5109 object.assign: 4.1.4
4618 regexp.prototype.flags: 1.4.3 5110 regexp.prototype.flags: 1.5.0
4619 side-channel: 1.0.4 5111 side-channel: 1.0.4
4620 which-boxed-primitive: 1.0.2 5112 which-boxed-primitive: 1.0.2
4621 which-collection: 1.0.1 5113 which-collection: 1.0.1
4622 which-typed-array: 1.1.9 5114 which-typed-array: 1.1.11
4623 dev: true 5115 dev: true
4624 5116
4625 /deep-is@0.1.4: 5117 /deep-is@0.1.4:
@@ -4630,6 +5122,24 @@ packages:
4630 resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 5122 resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
4631 engines: {node: '>=0.10.0'} 5123 engines: {node: '>=0.10.0'}
4632 5124
5125 /default-browser-id@3.0.0:
5126 resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==}
5127 engines: {node: '>=12'}
5128 dependencies:
5129 bplist-parser: 0.2.0
5130 untildify: 4.0.0
5131 dev: true
5132
5133 /default-browser@4.0.0:
5134 resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==}
5135 engines: {node: '>=14.16'}
5136 dependencies:
5137 bundle-name: 3.0.0
5138 default-browser-id: 3.0.0
5139 execa: 7.1.1
5140 titleize: 3.0.0
5141 dev: true
5142
4633 /defaults@1.0.4: 5143 /defaults@1.0.4:
4634 resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} 5144 resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
4635 dependencies: 5145 dependencies:
@@ -4640,12 +5150,9 @@ packages:
4640 resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} 5150 resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
4641 engines: {node: '>=10'} 5151 engines: {node: '>=10'}
4642 5152
4643 /define-properties@1.1.4: 5153 /define-lazy-prop@3.0.0:
4644 resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 5154 resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
4645 engines: {node: '>= 0.4'} 5155 engines: {node: '>=12'}
4646 dependencies:
4647 has-property-descriptors: 1.0.0
4648 object-keys: 1.1.1
4649 dev: true 5156 dev: true
4650 5157
4651 /define-properties@1.2.0: 5158 /define-properties@1.2.0:
@@ -4780,7 +5287,7 @@ packages:
4780 ajv: 6.12.6 5287 ajv: 6.12.6
4781 crc: 3.8.0 5288 crc: 3.8.0
4782 iconv-corefoundation: 1.1.7 5289 iconv-corefoundation: 1.1.7
4783 plist: 3.0.6 5290 plist: 3.1.0
4784 smart-buffer: 4.2.0 5291 smart-buffer: 4.2.0
4785 verror: 1.10.1 5292 verror: 1.10.1
4786 dev: true 5293 dev: true
@@ -4800,10 +5307,11 @@ packages:
4800 esutils: 2.0.3 5307 esutils: 2.0.3
4801 dev: true 5308 dev: true
4802 5309
4803 /dom-helpers@3.4.0: 5310 /dom-helpers@5.2.1:
4804 resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} 5311 resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
4805 dependencies: 5312 dependencies:
4806 '@babel/runtime': 7.21.5 5313 '@babel/runtime': 7.21.5
5314 csstype: 3.1.2
4807 dev: false 5315 dev: false
4808 5316
4809 /dot-prop@5.3.0: 5317 /dot-prop@5.3.0:
@@ -4827,12 +5335,6 @@ packages:
4827 engines: {node: '>=10'} 5335 engines: {node: '>=10'}
4828 dev: true 5336 dev: true
4829 5337
4830 /duplexer2@0.1.4:
4831 resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==}
4832 dependencies:
4833 readable-stream: 2.3.8
4834 dev: false
4835
4836 /duplexer@0.1.2: 5338 /duplexer@0.1.2:
4837 resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} 5339 resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
4838 dev: false 5340 dev: false
@@ -4944,17 +5446,21 @@ packages:
4944 resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} 5446 resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==}
4945 dev: true 5447 dev: true
4946 5448
5449 /electron-to-chromium@1.4.482:
5450 resolution: {integrity: sha512-h+UqpfmEr1Qkk0zp7ej/jid7CXoq4m4QzW6wNTb0ELJ/BZCpA4wgUylBIMGCe621tnr4l5VmoHjdoSx2lbnNJA==}
5451 dev: true
5452
4947 /electron-updater@5.3.0: 5453 /electron-updater@5.3.0:
4948 resolution: {integrity: sha512-iKEr7yQBcvnQUPnSDYGSWC9t0eF2YbZWeYYYZzYxdl+HiRejXFENjYMnYjoOm2zxyD6Cr2JTHZhp9pqxiXuCOw==} 5454 resolution: {integrity: sha512-iKEr7yQBcvnQUPnSDYGSWC9t0eF2YbZWeYYYZzYxdl+HiRejXFENjYMnYjoOm2zxyD6Cr2JTHZhp9pqxiXuCOw==}
4949 dependencies: 5455 dependencies:
4950 '@types/semver': 7.3.13 5456 '@types/semver': 7.5.0
4951 builder-util-runtime: 9.1.1 5457 builder-util-runtime: 9.1.1
4952 fs-extra: 10.1.0 5458 fs-extra: 10.1.0
4953 js-yaml: 4.1.0 5459 js-yaml: 4.1.0
4954 lazy-val: 1.0.5 5460 lazy-val: 1.0.5
4955 lodash.escaperegexp: 4.1.2 5461 lodash.escaperegexp: 4.1.2
4956 lodash.isequal: 4.5.0 5462 lodash.isequal: 4.5.0
4957 semver: 7.5.1 5463 semver: 7.5.4
4958 typed-emitter: 2.1.0 5464 typed-emitter: 2.1.0
4959 transitivePeerDependencies: 5465 transitivePeerDependencies:
4960 - supports-color 5466 - supports-color
@@ -4968,8 +5474,8 @@ packages:
4968 mkdirp: 0.5.6 5474 mkdirp: 0.5.6
4969 dev: false 5475 dev: false
4970 5476
4971 /electron@25.2.0: 5477 /electron@25.4.0:
4972 resolution: {integrity: sha512-I/rhcW2sV2fyiveVSBr2N7v5ZiCtdGY0UiNCDZgk2fpSC+irQjbeh7JT2b4vWmJ2ogOXBjqesrN9XszTIG6DHg==} 5478 resolution: {integrity: sha512-VLTRxDhL4UvQbqM7pTNENnJo62cdAPZT92N+B7BZQ5Xfok1wuVPEewIjBot4K7U3EpLUuHn1veeLzho3ihiP+Q==}
4973 engines: {node: '>= 12.20.55'} 5479 engines: {node: '>= 12.20.55'}
4974 hasBin: true 5480 hasBin: true
4975 requiresBuild: true 5481 requiresBuild: true
@@ -5057,41 +5563,56 @@ packages:
5057 string-template: 0.2.1 5563 string-template: 0.2.1
5058 dev: true 5564 dev: true
5059 5565
5060 /es-abstract@1.20.4: 5566 /es-abstract@1.22.1:
5061 resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} 5567 resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==}
5062 engines: {node: '>= 0.4'} 5568 engines: {node: '>= 0.4'}
5063 dependencies: 5569 dependencies:
5570 array-buffer-byte-length: 1.0.0
5571 arraybuffer.prototype.slice: 1.0.1
5572 available-typed-arrays: 1.0.5
5064 call-bind: 1.0.2 5573 call-bind: 1.0.2
5574 es-set-tostringtag: 2.0.1
5065 es-to-primitive: 1.2.1 5575 es-to-primitive: 1.2.1
5066 function-bind: 1.1.1
5067 function.prototype.name: 1.1.5 5576 function.prototype.name: 1.1.5
5068 get-intrinsic: 1.2.0 5577 get-intrinsic: 1.2.1
5069 get-symbol-description: 1.0.0 5578 get-symbol-description: 1.0.0
5579 globalthis: 1.0.3
5580 gopd: 1.0.1
5070 has: 1.0.3 5581 has: 1.0.3
5071 has-property-descriptors: 1.0.0 5582 has-property-descriptors: 1.0.0
5583 has-proto: 1.0.1
5072 has-symbols: 1.0.3 5584 has-symbols: 1.0.3
5073 internal-slot: 1.0.3 5585 internal-slot: 1.0.5
5586 is-array-buffer: 3.0.2
5074 is-callable: 1.2.7 5587 is-callable: 1.2.7
5075 is-negative-zero: 2.0.2 5588 is-negative-zero: 2.0.2
5076 is-regex: 1.1.4 5589 is-regex: 1.1.4
5077 is-shared-array-buffer: 1.0.2 5590 is-shared-array-buffer: 1.0.2
5078 is-string: 1.0.7 5591 is-string: 1.0.7
5592 is-typed-array: 1.1.12
5079 is-weakref: 1.0.2 5593 is-weakref: 1.0.2
5080 object-inspect: 1.12.2 5594 object-inspect: 1.12.3
5081 object-keys: 1.1.1 5595 object-keys: 1.1.1
5082 object.assign: 4.1.4 5596 object.assign: 4.1.4
5083 regexp.prototype.flags: 1.4.3 5597 regexp.prototype.flags: 1.5.0
5598 safe-array-concat: 1.0.0
5084 safe-regex-test: 1.0.0 5599 safe-regex-test: 1.0.0
5600 string.prototype.trim: 1.2.7
5085 string.prototype.trimend: 1.0.6 5601 string.prototype.trimend: 1.0.6
5086 string.prototype.trimstart: 1.0.6 5602 string.prototype.trimstart: 1.0.6
5603 typed-array-buffer: 1.0.0
5604 typed-array-byte-length: 1.0.0
5605 typed-array-byte-offset: 1.0.0
5606 typed-array-length: 1.0.4
5087 unbox-primitive: 1.0.2 5607 unbox-primitive: 1.0.2
5608 which-typed-array: 1.1.11
5088 dev: true 5609 dev: true
5089 5610
5090 /es-get-iterator@1.1.2: 5611 /es-get-iterator@1.1.2:
5091 resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} 5612 resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==}
5092 dependencies: 5613 dependencies:
5093 call-bind: 1.0.2 5614 call-bind: 1.0.2
5094 get-intrinsic: 1.2.0 5615 get-intrinsic: 1.2.1
5095 has-symbols: 1.0.3 5616 has-symbols: 1.0.3
5096 is-arguments: 1.1.1 5617 is-arguments: 1.1.1
5097 is-map: 2.0.2 5618 is-map: 2.0.2
@@ -5100,6 +5621,15 @@ packages:
5100 isarray: 2.0.5 5621 isarray: 2.0.5
5101 dev: true 5622 dev: true
5102 5623
5624 /es-set-tostringtag@2.0.1:
5625 resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
5626 engines: {node: '>= 0.4'}
5627 dependencies:
5628 get-intrinsic: 1.2.1
5629 has: 1.0.3
5630 has-tostringtag: 1.0.0
5631 dev: true
5632
5103 /es-shim-unscopables@1.0.0: 5633 /es-shim-unscopables@1.0.0:
5104 resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 5634 resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
5105 dependencies: 5635 dependencies:
@@ -5176,14 +5706,14 @@ packages:
5176 tslib: 2.4.0 5706 tslib: 2.4.0
5177 dev: true 5707 dev: true
5178 5708
5179 /esbuild-sass-plugin@2.9.0(esbuild@0.16.17): 5709 /esbuild-sass-plugin@2.10.0(esbuild@0.16.17):
5180 resolution: {integrity: sha512-D7c8Ub+C4RfaqhOoo9EEWprYmP5ZCmpmcodmYDtpvCfPZLgsSbLaLHPXdul4TUWUMH5eJ6POw+aes/s42ffwrA==} 5710 resolution: {integrity: sha512-STv849QGT8g77RRFmroSt4VBVKjv+dypKcO4aWz8IP4G5JbRH0KC0+B8ODuzlUNu9R5MbkGcev/62RDP/JcZ2Q==}
5181 peerDependencies: 5711 peerDependencies:
5182 esbuild: ^0.17.17 5712 esbuild: ^0.18.0 || ^0.16.7
5183 dependencies: 5713 dependencies:
5184 esbuild: 0.16.17 5714 esbuild: 0.16.17
5185 resolve: 1.22.2 5715 resolve: 1.22.2
5186 sass: 1.62.1 5716 sass: 1.64.0
5187 dev: true 5717 dev: true
5188 5718
5189 /esbuild@0.16.17: 5719 /esbuild@0.16.17:
@@ -5244,7 +5774,7 @@ packages:
5244 resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 5774 resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
5245 engines: {node: '>=10'} 5775 engines: {node: '>=10'}
5246 5776
5247 /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.27.5)(eslint@8.39.0): 5777 /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.27.5)(eslint@8.45.0):
5248 resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} 5778 resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==}
5249 engines: {node: ^10.12.0 || >=12.0.0} 5779 engines: {node: ^10.12.0 || >=12.0.0}
5250 peerDependencies: 5780 peerDependencies:
@@ -5252,29 +5782,29 @@ packages:
5252 eslint-plugin-import: ^2.25.2 5782 eslint-plugin-import: ^2.25.2
5253 dependencies: 5783 dependencies:
5254 confusing-browser-globals: 1.0.11 5784 confusing-browser-globals: 1.0.11
5255 eslint: 8.39.0 5785 eslint: 8.45.0
5256 eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.39.0) 5786 eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)
5257 object.assign: 4.1.4 5787 object.assign: 4.1.4
5258 object.entries: 1.1.6 5788 object.entries: 1.1.6
5259 semver: 6.3.0 5789 semver: 6.3.1
5260 dev: true 5790 dev: true
5261 5791
5262 /eslint-config-airbnb-typescript@17.0.0(@typescript-eslint/eslint-plugin@5.59.11)(@typescript-eslint/parser@5.59.11)(eslint-plugin-import@2.27.5)(eslint@8.39.0): 5792 /eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint-plugin-import@2.27.5)(eslint@8.45.0):
5263 resolution: {integrity: sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==} 5793 resolution: {integrity: sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==}
5264 peerDependencies: 5794 peerDependencies:
5265 '@typescript-eslint/eslint-plugin': ^5.13.0 5795 '@typescript-eslint/eslint-plugin': ^5.13.0 || ^6.0.0
5266 '@typescript-eslint/parser': ^5.0.0 5796 '@typescript-eslint/parser': ^5.0.0 || ^6.0.0
5267 eslint: ^7.32.0 || ^8.2.0 5797 eslint: ^7.32.0 || ^8.2.0
5268 eslint-plugin-import: ^2.25.3 5798 eslint-plugin-import: ^2.25.3
5269 dependencies: 5799 dependencies:
5270 '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.39.0)(typescript@5.0.4) 5800 '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.0.4)
5271 '@typescript-eslint/parser': 5.59.11(eslint@8.39.0)(typescript@5.0.4) 5801 '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.0.4)
5272 eslint: 8.39.0 5802 eslint: 8.45.0
5273 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.27.5)(eslint@8.39.0) 5803 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.27.5)(eslint@8.45.0)
5274 eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.39.0) 5804 eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)
5275 dev: true 5805 dev: true
5276 5806
5277 /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.27.5)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.32.2)(eslint@8.39.0): 5807 /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.27.5)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.0)(eslint@8.45.0):
5278 resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} 5808 resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==}
5279 engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} 5809 engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0}
5280 peerDependencies: 5810 peerDependencies:
@@ -5284,23 +5814,23 @@ packages:
5284 eslint-plugin-react: ^7.28.0 5814 eslint-plugin-react: ^7.28.0
5285 eslint-plugin-react-hooks: ^4.3.0 5815 eslint-plugin-react-hooks: ^4.3.0
5286 dependencies: 5816 dependencies:
5287 eslint: 8.39.0 5817 eslint: 8.45.0
5288 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.27.5)(eslint@8.39.0) 5818 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.27.5)(eslint@8.45.0)
5289 eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.39.0) 5819 eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)
5290 eslint-plugin-jsx-a11y: 6.7.1(eslint@8.39.0) 5820 eslint-plugin-jsx-a11y: 6.7.1(eslint@8.45.0)
5291 eslint-plugin-react: 7.32.2(eslint@8.39.0) 5821 eslint-plugin-react: 7.33.0(eslint@8.45.0)
5292 eslint-plugin-react-hooks: 4.6.0(eslint@8.39.0) 5822 eslint-plugin-react-hooks: 4.6.0(eslint@8.45.0)
5293 object.assign: 4.1.4 5823 object.assign: 4.1.4
5294 object.entries: 1.1.6 5824 object.entries: 1.1.6
5295 dev: true 5825 dev: true
5296 5826
5297 /eslint-config-prettier@8.8.0(eslint@8.39.0): 5827 /eslint-config-prettier@8.8.0(eslint@8.45.0):
5298 resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} 5828 resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==}
5299 hasBin: true 5829 hasBin: true
5300 peerDependencies: 5830 peerDependencies:
5301 eslint: '>=7.0.0' 5831 eslint: '>=7.0.0'
5302 dependencies: 5832 dependencies:
5303 eslint: 8.39.0 5833 eslint: 8.45.0
5304 dev: true 5834 dev: true
5305 5835
5306 /eslint-import-resolver-node@0.3.7: 5836 /eslint-import-resolver-node@0.3.7:
@@ -5308,12 +5838,12 @@ packages:
5308 dependencies: 5838 dependencies:
5309 debug: 3.2.7 5839 debug: 3.2.7
5310 is-core-module: 2.11.0 5840 is-core-module: 2.11.0
5311 resolve: 1.22.2 5841 resolve: 1.22.1
5312 transitivePeerDependencies: 5842 transitivePeerDependencies:
5313 - supports-color 5843 - supports-color
5314 dev: true 5844 dev: true
5315 5845
5316 /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.39.0): 5846 /eslint-module-utils@2.7.4(@typescript-eslint/parser@6.1.0)(eslint-import-resolver-node@0.3.7)(eslint@8.45.0):
5317 resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} 5847 resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
5318 engines: {node: '>=4'} 5848 engines: {node: '>=4'}
5319 peerDependencies: 5849 peerDependencies:
@@ -5334,15 +5864,15 @@ packages:
5334 eslint-import-resolver-webpack: 5864 eslint-import-resolver-webpack:
5335 optional: true 5865 optional: true
5336 dependencies: 5866 dependencies:
5337 '@typescript-eslint/parser': 5.59.11(eslint@8.39.0)(typescript@5.0.4) 5867 '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.0.4)
5338 debug: 3.2.7 5868 debug: 3.2.7
5339 eslint: 8.39.0 5869 eslint: 8.45.0
5340 eslint-import-resolver-node: 0.3.7 5870 eslint-import-resolver-node: 0.3.7
5341 transitivePeerDependencies: 5871 transitivePeerDependencies:
5342 - supports-color 5872 - supports-color
5343 dev: true 5873 dev: true
5344 5874
5345 /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.39.0): 5875 /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.1.0)(eslint@8.45.0):
5346 resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} 5876 resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
5347 engines: {node: '>=4'} 5877 engines: {node: '>=4'}
5348 peerDependencies: 5878 peerDependencies:
@@ -5352,15 +5882,15 @@ packages:
5352 '@typescript-eslint/parser': 5882 '@typescript-eslint/parser':
5353 optional: true 5883 optional: true
5354 dependencies: 5884 dependencies:
5355 '@typescript-eslint/parser': 5.59.11(eslint@8.39.0)(typescript@5.0.4) 5885 '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.0.4)
5356 array-includes: 3.1.6 5886 array-includes: 3.1.6
5357 array.prototype.flat: 1.3.1 5887 array.prototype.flat: 1.3.1
5358 array.prototype.flatmap: 1.3.1 5888 array.prototype.flatmap: 1.3.1
5359 debug: 3.2.7 5889 debug: 3.2.7
5360 doctrine: 2.1.0 5890 doctrine: 2.1.0
5361 eslint: 8.39.0 5891 eslint: 8.45.0
5362 eslint-import-resolver-node: 0.3.7 5892 eslint-import-resolver-node: 0.3.7
5363 eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.39.0) 5893 eslint-module-utils: 2.7.4(@typescript-eslint/parser@6.1.0)(eslint-import-resolver-node@0.3.7)(eslint@8.45.0)
5364 has: 1.0.3 5894 has: 1.0.3
5365 is-core-module: 2.11.0 5895 is-core-module: 2.11.0
5366 is-glob: 4.0.3 5896 is-glob: 4.0.3
@@ -5375,11 +5905,11 @@ packages:
5375 - supports-color 5905 - supports-color
5376 dev: true 5906 dev: true
5377 5907
5378 /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.39.0)(jest@29.5.0)(typescript@5.0.4): 5908 /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@6.1.0)(eslint@8.45.0)(jest@29.6.1)(typescript@5.0.4):
5379 resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} 5909 resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==}
5380 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 5910 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
5381 peerDependencies: 5911 peerDependencies:
5382 '@typescript-eslint/eslint-plugin': ^5.0.0 5912 '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0
5383 eslint: ^7.0.0 || ^8.0.0 5913 eslint: ^7.0.0 || ^8.0.0
5384 jest: '*' 5914 jest: '*'
5385 peerDependenciesMeta: 5915 peerDependenciesMeta:
@@ -5388,16 +5918,16 @@ packages:
5388 jest: 5918 jest:
5389 optional: true 5919 optional: true
5390 dependencies: 5920 dependencies:
5391 '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.39.0)(typescript@5.0.4) 5921 '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.0.4)
5392 '@typescript-eslint/utils': 5.48.1(eslint@8.39.0)(typescript@5.0.4) 5922 '@typescript-eslint/utils': 5.59.11(eslint@8.45.0)(typescript@5.0.4)
5393 eslint: 8.39.0 5923 eslint: 8.45.0
5394 jest: 29.5.0(@types/node@18.15.3)(ts-node@10.9.1) 5924 jest: 29.6.1(@types/node@18.15.3)(ts-node@10.9.1)
5395 transitivePeerDependencies: 5925 transitivePeerDependencies:
5396 - supports-color 5926 - supports-color
5397 - typescript 5927 - typescript
5398 dev: true 5928 dev: true
5399 5929
5400 /eslint-plugin-jsx-a11y@6.7.1(eslint@8.39.0): 5930 /eslint-plugin-jsx-a11y@6.7.1(eslint@8.45.0):
5401 resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} 5931 resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
5402 engines: {node: '>=4.0'} 5932 engines: {node: '>=4.0'}
5403 peerDependencies: 5933 peerDependencies:
@@ -5412,7 +5942,7 @@ packages:
5412 axobject-query: 3.1.1 5942 axobject-query: 3.1.1
5413 damerau-levenshtein: 1.0.8 5943 damerau-levenshtein: 1.0.8
5414 emoji-regex: 9.2.2 5944 emoji-regex: 9.2.2
5415 eslint: 8.39.0 5945 eslint: 8.45.0
5416 has: 1.0.3 5946 has: 1.0.3
5417 jsx-ast-utils: 3.3.3 5947 jsx-ast-utils: 3.3.3
5418 language-tags: 1.0.5 5948 language-tags: 1.0.5
@@ -5422,34 +5952,38 @@ packages:
5422 semver: 6.3.0 5952 semver: 6.3.0
5423 dev: true 5953 dev: true
5424 5954
5425 /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.8): 5955 /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0):
5426 resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} 5956 resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==}
5427 engines: {node: '>=12.0.0'} 5957 engines: {node: ^14.18.0 || >=16.0.0}
5428 peerDependencies: 5958 peerDependencies:
5429 eslint: '>=7.28.0' 5959 '@types/eslint': '>=8.0.0'
5960 eslint: '>=8.0.0'
5430 eslint-config-prettier: '*' 5961 eslint-config-prettier: '*'
5431 prettier: '>=2.0.0' 5962 prettier: '>=3.0.0'
5432 peerDependenciesMeta: 5963 peerDependenciesMeta:
5964 '@types/eslint':
5965 optional: true
5433 eslint-config-prettier: 5966 eslint-config-prettier:
5434 optional: true 5967 optional: true
5435 dependencies: 5968 dependencies:
5436 eslint: 8.39.0 5969 eslint: 8.45.0
5437 eslint-config-prettier: 8.8.0(eslint@8.39.0) 5970 eslint-config-prettier: 8.8.0(eslint@8.45.0)
5438 prettier: 2.8.8 5971 prettier: 3.0.0
5439 prettier-linter-helpers: 1.0.0 5972 prettier-linter-helpers: 1.0.0
5973 synckit: 0.8.5
5440 dev: true 5974 dev: true
5441 5975
5442 /eslint-plugin-react-hooks@4.6.0(eslint@8.39.0): 5976 /eslint-plugin-react-hooks@4.6.0(eslint@8.45.0):
5443 resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 5977 resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
5444 engines: {node: '>=10'} 5978 engines: {node: '>=10'}
5445 peerDependencies: 5979 peerDependencies:
5446 eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 5980 eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
5447 dependencies: 5981 dependencies:
5448 eslint: 8.39.0 5982 eslint: 8.45.0
5449 dev: true 5983 dev: true
5450 5984
5451 /eslint-plugin-react@7.32.2(eslint@8.39.0): 5985 /eslint-plugin-react@7.33.0(eslint@8.45.0):
5452 resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} 5986 resolution: {integrity: sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw==}
5453 engines: {node: '>=4'} 5987 engines: {node: '>=4'}
5454 peerDependencies: 5988 peerDependencies:
5455 eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 5989 eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
@@ -5458,9 +5992,9 @@ packages:
5458 array.prototype.flatmap: 1.3.1 5992 array.prototype.flatmap: 1.3.1
5459 array.prototype.tosorted: 1.1.1 5993 array.prototype.tosorted: 1.1.1
5460 doctrine: 2.1.0 5994 doctrine: 2.1.0
5461 eslint: 8.39.0 5995 eslint: 8.45.0
5462 estraverse: 5.3.0 5996 estraverse: 5.3.0
5463 jsx-ast-utils: 3.3.3 5997 jsx-ast-utils: 3.3.4
5464 minimatch: 3.1.2 5998 minimatch: 3.1.2
5465 object.entries: 1.1.6 5999 object.entries: 1.1.6
5466 object.fromentries: 2.0.6 6000 object.fromentries: 2.0.6
@@ -5468,21 +6002,56 @@ packages:
5468 object.values: 1.1.6 6002 object.values: 1.1.6
5469 prop-types: 15.8.1 6003 prop-types: 15.8.1
5470 resolve: 2.0.0-next.4 6004 resolve: 2.0.0-next.4
5471 semver: 6.3.0 6005 semver: 6.3.1
5472 string.prototype.matchall: 4.0.8 6006 string.prototype.matchall: 4.0.8
5473 dev: true 6007 dev: true
5474 6008
5475 /eslint-plugin-unicorn@46.0.0(eslint@8.39.0): 6009 /eslint-plugin-sonar@0.12.0(@babel/core@7.22.9)(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.0.4):
5476 resolution: {integrity: sha512-j07WkC+PFZwk8J33LYp6JMoHa1lXc1u6R45pbSAipjpfpb7KIGr17VE2D685zCxR5VL4cjrl65kTJflziQWMDA==} 6010 resolution: {integrity: sha512-49linjQRXazFXZR4PXHwgMkkrnLavZTeSkxJ5+k3PoNqGm/shgJCVmdQAki3AJNqM+huZSwYxwsWS+LSpB48cQ==}
5477 engines: {node: '>=14.18'} 6011 engines: {node: '>=14'}
6012 peerDependencies:
6013 eslint: ^7.0.0 || ^8.0.0
6014 typescript: ^4.0.0 || ^5.0.0
6015 dependencies:
6016 '@babel/eslint-parser': 7.22.9(@babel/core@7.22.9)(eslint@8.45.0)
6017 '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.0.4)
6018 builtin-modules: 3.3.0
6019 bytes: 3.1.2
6020 eslint: 8.45.0
6021 eslint-plugin-react: 7.33.0(eslint@8.45.0)
6022 eslint-plugin-react-hooks: 4.6.0(eslint@8.45.0)
6023 eslint-plugin-sonarjs: 0.19.0(eslint@8.45.0)
6024 functional-red-black-tree: 1.0.1
6025 regexpp: 3.2.0
6026 scslre: 0.2.0
6027 tmp: 0.2.1
6028 typescript: 5.0.4
6029 transitivePeerDependencies:
6030 - '@babel/core'
6031 - '@typescript-eslint/parser'
6032 - supports-color
6033 dev: true
6034
6035 /eslint-plugin-sonarjs@0.19.0(eslint@8.45.0):
6036 resolution: {integrity: sha512-6+s5oNk5TFtVlbRxqZN7FIGmjdPCYQKaTzFPmqieCmsU1kBYDzndTeQav0xtQNwZJWu5awWfTGe8Srq9xFOGnw==}
6037 engines: {node: '>=14'}
5478 peerDependencies: 6038 peerDependencies:
5479 eslint: '>=8.28.0' 6039 eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
5480 dependencies: 6040 dependencies:
5481 '@babel/helper-validator-identifier': 7.19.1 6041 eslint: 8.45.0
5482 '@eslint-community/eslint-utils': 4.3.0(eslint@8.39.0) 6042 dev: true
6043
6044 /eslint-plugin-unicorn@48.0.0(eslint@8.45.0):
6045 resolution: {integrity: sha512-8fk/v3p1ro34JSVDBEmtOq6EEQRpMR0iTir79q69KnXFZ6DJyPkT3RAi+ZoTqhQMdDSpGh8BGR68ne1sP5cnAA==}
6046 engines: {node: '>=16'}
6047 peerDependencies:
6048 eslint: '>=8.44.0'
6049 dependencies:
6050 '@babel/helper-validator-identifier': 7.22.5
6051 '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0)
5483 ci-info: 3.8.0 6052 ci-info: 3.8.0
5484 clean-regexp: 1.0.0 6053 clean-regexp: 1.0.0
5485 eslint: 8.39.0 6054 eslint: 8.45.0
5486 esquery: 1.5.0 6055 esquery: 1.5.0
5487 indent-string: 4.0.0 6056 indent-string: 4.0.0
5488 is-builtin-module: 3.2.1 6057 is-builtin-module: 3.2.1
@@ -5490,10 +6059,9 @@ packages:
5490 lodash: 4.17.21 6059 lodash: 4.17.21
5491 pluralize: 8.0.0 6060 pluralize: 8.0.0
5492 read-pkg-up: 7.0.1 6061 read-pkg-up: 7.0.1
5493 regexp-tree: 0.1.24 6062 regexp-tree: 0.1.27
5494 regjsparser: 0.9.1 6063 regjsparser: 0.10.0
5495 safe-regex: 2.1.1 6064 semver: 7.5.4
5496 semver: 7.5.1
5497 strip-indent: 3.0.0 6065 strip-indent: 3.0.0
5498 dev: true 6066 dev: true
5499 6067
@@ -5505,24 +6073,14 @@ packages:
5505 estraverse: 4.3.0 6073 estraverse: 4.3.0
5506 dev: true 6074 dev: true
5507 6075
5508 /eslint-scope@7.2.0: 6076 /eslint-scope@7.2.1:
5509 resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} 6077 resolution: {integrity: sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==}
5510 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 6078 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
5511 dependencies: 6079 dependencies:
5512 esrecurse: 4.3.0 6080 esrecurse: 4.3.0
5513 estraverse: 5.3.0 6081 estraverse: 5.3.0
5514 dev: true 6082 dev: true
5515 6083
5516 /eslint-utils@3.0.0(eslint@8.39.0):
5517 resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
5518 engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
5519 peerDependencies:
5520 eslint: '>=5'
5521 dependencies:
5522 eslint: 8.39.0
5523 eslint-visitor-keys: 2.1.0
5524 dev: true
5525
5526 /eslint-visitor-keys@2.1.0: 6084 /eslint-visitor-keys@2.1.0:
5527 resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 6085 resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
5528 engines: {node: '>=10'} 6086 engines: {node: '>=10'}
@@ -5533,16 +6091,16 @@ packages:
5533 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 6091 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
5534 dev: true 6092 dev: true
5535 6093
5536 /eslint@8.39.0: 6094 /eslint@8.45.0:
5537 resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==} 6095 resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==}
5538 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 6096 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
5539 hasBin: true 6097 hasBin: true
5540 dependencies: 6098 dependencies:
5541 '@eslint-community/eslint-utils': 4.3.0(eslint@8.39.0) 6099 '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0)
5542 '@eslint-community/regexpp': 4.4.0 6100 '@eslint-community/regexpp': 4.6.0
5543 '@eslint/eslintrc': 2.0.3 6101 '@eslint/eslintrc': 2.1.0
5544 '@eslint/js': 8.39.0 6102 '@eslint/js': 8.44.0
5545 '@humanwhocodes/config-array': 0.11.8 6103 '@humanwhocodes/config-array': 0.11.10
5546 '@humanwhocodes/module-importer': 1.0.1 6104 '@humanwhocodes/module-importer': 1.0.1
5547 '@nodelib/fs.walk': 1.2.8 6105 '@nodelib/fs.walk': 1.2.8
5548 ajv: 6.12.6 6106 ajv: 6.12.6
@@ -5551,32 +6109,29 @@ packages:
5551 debug: 4.3.4 6109 debug: 4.3.4
5552 doctrine: 3.0.0 6110 doctrine: 3.0.0
5553 escape-string-regexp: 4.0.0 6111 escape-string-regexp: 4.0.0
5554 eslint-scope: 7.2.0 6112 eslint-scope: 7.2.1
5555 eslint-visitor-keys: 3.4.1 6113 eslint-visitor-keys: 3.4.1
5556 espree: 9.5.2 6114 espree: 9.6.1
5557 esquery: 1.5.0 6115 esquery: 1.5.0
5558 esutils: 2.0.3 6116 esutils: 2.0.3
5559 fast-deep-equal: 3.1.3 6117 fast-deep-equal: 3.1.3
5560 file-entry-cache: 6.0.1 6118 file-entry-cache: 6.0.1
5561 find-up: 5.0.0 6119 find-up: 5.0.0
5562 glob-parent: 6.0.2 6120 glob-parent: 6.0.2
5563 globals: 13.19.0 6121 globals: 13.20.0
5564 grapheme-splitter: 1.0.4 6122 graphemer: 1.4.0
5565 ignore: 5.2.4 6123 ignore: 5.2.4
5566 import-fresh: 3.3.0
5567 imurmurhash: 0.1.4 6124 imurmurhash: 0.1.4
5568 is-glob: 4.0.3 6125 is-glob: 4.0.3
5569 is-path-inside: 3.0.3 6126 is-path-inside: 3.0.3
5570 js-sdsl: 4.4.0
5571 js-yaml: 4.1.0 6127 js-yaml: 4.1.0
5572 json-stable-stringify-without-jsonify: 1.0.1 6128 json-stable-stringify-without-jsonify: 1.0.1
5573 levn: 0.4.1 6129 levn: 0.4.1
5574 lodash.merge: 4.6.2 6130 lodash.merge: 4.6.2
5575 minimatch: 3.1.2 6131 minimatch: 3.1.2
5576 natural-compare: 1.4.0 6132 natural-compare: 1.4.0
5577 optionator: 0.9.1 6133 optionator: 0.9.3
5578 strip-ansi: 6.0.1 6134 strip-ansi: 6.0.1
5579 strip-json-comments: 3.1.1
5580 text-table: 0.2.0 6135 text-table: 0.2.0
5581 transitivePeerDependencies: 6136 transitivePeerDependencies:
5582 - supports-color 6137 - supports-color
@@ -5587,12 +6142,12 @@ packages:
5587 engines: {node: '>=6'} 6142 engines: {node: '>=6'}
5588 dev: false 6143 dev: false
5589 6144
5590 /espree@9.5.2: 6145 /espree@9.6.1:
5591 resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} 6146 resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
5592 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 6147 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
5593 dependencies: 6148 dependencies:
5594 acorn: 8.8.2 6149 acorn: 8.10.0
5595 acorn-jsx: 5.3.2(acorn@8.8.2) 6150 acorn-jsx: 5.3.2(acorn@8.10.0)
5596 eslint-visitor-keys: 3.4.1 6151 eslint-visitor-keys: 3.4.1
5597 dev: true 6152 dev: true
5598 6153
@@ -5688,6 +6243,21 @@ packages:
5688 strip-final-newline: 2.0.0 6243 strip-final-newline: 2.0.0
5689 dev: true 6244 dev: true
5690 6245
6246 /execa@7.1.1:
6247 resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==}
6248 engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
6249 dependencies:
6250 cross-spawn: 7.0.3
6251 get-stream: 6.0.1
6252 human-signals: 4.3.1
6253 is-stream: 3.0.0
6254 merge-stream: 2.0.0
6255 npm-run-path: 5.1.0
6256 onetime: 6.0.0
6257 signal-exit: 3.0.7
6258 strip-final-newline: 3.0.0
6259 dev: true
6260
5691 /exenv@1.2.2: 6261 /exenv@1.2.2:
5692 resolution: {integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==} 6262 resolution: {integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==}
5693 dev: false 6263 dev: false
@@ -5730,6 +6300,18 @@ packages:
5730 jest-util: 29.5.0 6300 jest-util: 29.5.0
5731 dev: true 6301 dev: true
5732 6302
6303 /expect@29.6.1:
6304 resolution: {integrity: sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g==}
6305 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
6306 dependencies:
6307 '@jest/expect-utils': 29.6.1
6308 '@types/node': 18.15.3
6309 jest-get-type: 29.4.3
6310 jest-matcher-utils: 29.6.1
6311 jest-message-util: 29.6.1
6312 jest-util: 29.6.1
6313 dev: true
6314
5733 /ext-list@2.2.2: 6315 /ext-list@2.2.2:
5734 resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} 6316 resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==}
5735 engines: {node: '>=0.10.0'} 6317 engines: {node: '>=0.10.0'}
@@ -5831,20 +6413,23 @@ packages:
5831 /fast-deep-equal@3.1.3: 6413 /fast-deep-equal@3.1.3:
5832 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 6414 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
5833 6415
5834 /fast-diff@1.2.0: 6416 /fast-diff@1.3.0:
5835 resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} 6417 resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
5836 dev: true 6418 dev: true
5837 6419
5838 /fast-folder-size@1.7.1: 6420 /fast-folder-size@2.1.0:
5839 resolution: {integrity: sha512-YnQ/pHgeSxpTKnJ/LVe/0mWP3lafWmPFpcCVRLo2s251lD+qaksG2Ce1a7RTuLpN5W6PgFA4T5NYpW7sxWmDXA==} 6421 resolution: {integrity: sha512-3h+e4YJJ6fze5RMaByScrfRdHE+DnM/as8r/jbjmIGhgty6v2yBRNbtOiItqhRitv4kBv8WAOQvbPtnyYK3gHw==}
5840 hasBin: true 6422 hasBin: true
5841 requiresBuild: true 6423 requiresBuild: true
5842 dependencies: 6424 dependencies:
5843 unzipper: 0.10.11 6425 decompress: 4.2.1
6426 https-proxy-agent: 7.0.1
6427 transitivePeerDependencies:
6428 - supports-color
5844 dev: false 6429 dev: false
5845 6430
5846 /fast-glob@3.2.12: 6431 /fast-glob@3.3.1:
5847 resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 6432 resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
5848 engines: {node: '>=8.6.0'} 6433 engines: {node: '>=8.6.0'}
5849 dependencies: 6434 dependencies:
5850 '@nodelib/fs.stat': 2.0.5 6435 '@nodelib/fs.stat': 2.0.5
@@ -5918,7 +6503,22 @@ packages:
5918 resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} 6503 resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==}
5919 engines: {node: '>= 12'} 6504 engines: {node: '>= 12'}
5920 dependencies: 6505 dependencies:
5921 tslib: 2.5.3 6506 tslib: 2.6.0
6507 dev: false
6508
6509 /file-type@3.9.0:
6510 resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==}
6511 engines: {node: '>=0.10.0'}
6512 dev: false
6513
6514 /file-type@5.2.0:
6515 resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==}
6516 engines: {node: '>=4'}
6517 dev: false
6518
6519 /file-type@6.2.0:
6520 resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==}
6521 engines: {node: '>=4'}
5922 dev: false 6522 dev: false
5923 6523
5924 /file-uri-to-path@1.0.0: 6524 /file-uri-to-path@1.0.0:
@@ -5929,7 +6529,7 @@ packages:
5929 /filelist@1.0.4: 6529 /filelist@1.0.4:
5930 resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} 6530 resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
5931 dependencies: 6531 dependencies:
5932 minimatch: 5.1.2 6532 minimatch: 5.1.6
5933 dev: true 6533 dev: true
5934 6534
5935 /fill-range@4.0.0: 6535 /fill-range@4.0.0:
@@ -6095,6 +6695,10 @@ packages:
6095 resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} 6695 resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}
6096 dev: false 6696 dev: false
6097 6697
6698 /fs-constants@1.0.0:
6699 resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
6700 dev: false
6701
6098 /fs-extra@10.1.0: 6702 /fs-extra@10.1.0:
6099 resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} 6703 resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
6100 engines: {node: '>=12'} 6704 engines: {node: '>=12'}
@@ -6153,16 +6757,6 @@ packages:
6153 dev: true 6757 dev: true
6154 optional: true 6758 optional: true
6155 6759
6156 /fstream@1.0.12:
6157 resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==}
6158 engines: {node: '>=0.6'}
6159 dependencies:
6160 graceful-fs: 4.2.11
6161 inherits: 2.0.4
6162 mkdirp: 0.5.6
6163 rimraf: 2.7.1
6164 dev: false
6165
6166 /function-bind@1.1.1: 6760 /function-bind@1.1.1:
6167 resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 6761 resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
6168 6762
@@ -6171,11 +6765,15 @@ packages:
6171 engines: {node: '>= 0.4'} 6765 engines: {node: '>= 0.4'}
6172 dependencies: 6766 dependencies:
6173 call-bind: 1.0.2 6767 call-bind: 1.0.2
6174 define-properties: 1.1.4 6768 define-properties: 1.2.0
6175 es-abstract: 1.20.4 6769 es-abstract: 1.22.1
6176 functions-have-names: 1.2.3 6770 functions-have-names: 1.2.3
6177 dev: true 6771 dev: true
6178 6772
6773 /functional-red-black-tree@1.0.1:
6774 resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==}
6775 dev: true
6776
6179 /functions-have-names@1.2.3: 6777 /functions-have-names@1.2.3:
6180 resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 6778 resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
6181 dev: true 6779 dev: true
@@ -6218,18 +6816,12 @@ packages:
6218 engines: {node: 6.* || 8.* || >= 10.*} 6816 engines: {node: 6.* || 8.* || >= 10.*}
6219 dev: true 6817 dev: true
6220 6818
6221 /get-intrinsic@1.1.3: 6819 /get-intrinsic@1.2.1:
6222 resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} 6820 resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
6223 dependencies:
6224 function-bind: 1.1.1
6225 has: 1.0.3
6226 has-symbols: 1.0.3
6227
6228 /get-intrinsic@1.2.0:
6229 resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==}
6230 dependencies: 6821 dependencies:
6231 function-bind: 1.1.1 6822 function-bind: 1.1.1
6232 has: 1.0.3 6823 has: 1.0.3
6824 has-proto: 1.0.1
6233 has-symbols: 1.0.3 6825 has-symbols: 1.0.3
6234 6826
6235 /get-package-type@0.1.0: 6827 /get-package-type@0.1.0:
@@ -6237,6 +6829,14 @@ packages:
6237 engines: {node: '>=8.0.0'} 6829 engines: {node: '>=8.0.0'}
6238 dev: true 6830 dev: true
6239 6831
6832 /get-stream@2.3.1:
6833 resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==}
6834 engines: {node: '>=0.10.0'}
6835 dependencies:
6836 object-assign: 4.1.1
6837 pinkie-promise: 2.0.1
6838 dev: false
6839
6240 /get-stream@5.2.0: 6840 /get-stream@5.2.0:
6241 resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} 6841 resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
6242 engines: {node: '>=8'} 6842 engines: {node: '>=8'}
@@ -6252,7 +6852,7 @@ packages:
6252 engines: {node: '>= 0.4'} 6852 engines: {node: '>= 0.4'}
6253 dependencies: 6853 dependencies:
6254 call-bind: 1.0.2 6854 call-bind: 1.0.2
6255 get-intrinsic: 1.2.0 6855 get-intrinsic: 1.2.1
6256 dev: true 6856 dev: true
6257 6857
6258 /get-value@2.0.6: 6858 /get-value@2.0.6:
@@ -6303,7 +6903,7 @@ packages:
6303 dependencies: 6903 dependencies:
6304 foreground-child: 3.1.1 6904 foreground-child: 3.1.1
6305 jackspeak: 2.2.1 6905 jackspeak: 2.2.1
6306 minimatch: 9.0.1 6906 minimatch: 9.0.3
6307 minipass: 5.0.0 6907 minipass: 5.0.0
6308 path-scurry: 1.9.2 6908 path-scurry: 1.9.2
6309 dev: true 6909 dev: true
@@ -6325,7 +6925,7 @@ packages:
6325 fs.realpath: 1.0.0 6925 fs.realpath: 1.0.0
6326 inflight: 1.0.6 6926 inflight: 1.0.6
6327 inherits: 2.0.4 6927 inherits: 2.0.4
6328 minimatch: 5.1.2 6928 minimatch: 5.1.6
6329 once: 1.4.0 6929 once: 1.4.0
6330 dev: true 6930 dev: true
6331 6931
@@ -6338,7 +6938,7 @@ packages:
6338 es6-error: 4.1.1 6938 es6-error: 4.1.1
6339 matcher: 3.0.0 6939 matcher: 3.0.0
6340 roarr: 2.15.4 6940 roarr: 2.15.4
6341 semver: 7.5.1 6941 semver: 7.5.4
6342 serialize-error: 7.0.1 6942 serialize-error: 7.0.1
6343 optional: true 6943 optional: true
6344 6944
@@ -6374,8 +6974,8 @@ packages:
6374 engines: {node: '>=4'} 6974 engines: {node: '>=4'}
6375 dev: true 6975 dev: true
6376 6976
6377 /globals@13.19.0: 6977 /globals@13.20.0:
6378 resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} 6978 resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
6379 engines: {node: '>=8'} 6979 engines: {node: '>=8'}
6380 dependencies: 6980 dependencies:
6381 type-fest: 0.20.2 6981 type-fest: 0.20.2
@@ -6386,7 +6986,6 @@ packages:
6386 engines: {node: '>= 0.4'} 6986 engines: {node: '>= 0.4'}
6387 dependencies: 6987 dependencies:
6388 define-properties: 1.2.0 6988 define-properties: 1.2.0
6389 optional: true
6390 6989
6391 /globalyzer@0.1.0: 6990 /globalyzer@0.1.0:
6392 resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 6991 resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
@@ -6398,7 +6997,7 @@ packages:
6398 dependencies: 6997 dependencies:
6399 array-union: 2.1.0 6998 array-union: 2.1.0
6400 dir-glob: 3.0.1 6999 dir-glob: 3.0.1
6401 fast-glob: 3.2.12 7000 fast-glob: 3.3.1
6402 ignore: 5.2.4 7001 ignore: 5.2.4
6403 merge2: 1.4.1 7002 merge2: 1.4.1
6404 slash: 3.0.0 7003 slash: 3.0.0
@@ -6416,7 +7015,7 @@ packages:
6416 /gopd@1.0.1: 7015 /gopd@1.0.1:
6417 resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 7016 resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
6418 dependencies: 7017 dependencies:
6419 get-intrinsic: 1.2.0 7018 get-intrinsic: 1.2.1
6420 dev: true 7019 dev: true
6421 7020
6422 /got@11.8.6: 7021 /got@11.8.6:
@@ -6438,8 +7037,8 @@ packages:
6438 /graceful-fs@4.2.11: 7037 /graceful-fs@4.2.11:
6439 resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 7038 resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
6440 7039
6441 /grapheme-splitter@1.0.4: 7040 /graphemer@1.4.0:
6442 resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 7041 resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
6443 dev: true 7042 dev: true
6444 7043
6445 /gulp-livereload@4.0.2: 7044 /gulp-livereload@4.0.2:
@@ -6493,7 +7092,11 @@ packages:
6493 /has-property-descriptors@1.0.0: 7092 /has-property-descriptors@1.0.0:
6494 resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 7093 resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
6495 dependencies: 7094 dependencies:
6496 get-intrinsic: 1.2.0 7095 get-intrinsic: 1.2.1
7096
7097 /has-proto@1.0.1:
7098 resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
7099 engines: {node: '>= 0.4'}
6497 7100
6498 /has-symbols@1.0.3: 7101 /has-symbols@1.0.3:
6499 resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 7102 resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
@@ -6676,6 +7279,16 @@ packages:
6676 transitivePeerDependencies: 7279 transitivePeerDependencies:
6677 - supports-color 7280 - supports-color
6678 7281
7282 /https-proxy-agent@7.0.1:
7283 resolution: {integrity: sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==}
7284 engines: {node: '>= 14'}
7285 dependencies:
7286 agent-base: 7.1.0
7287 debug: 4.3.4
7288 transitivePeerDependencies:
7289 - supports-color
7290 dev: false
7291
6679 /human-signals@1.1.1: 7292 /human-signals@1.1.1:
6680 resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} 7293 resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==}
6681 engines: {node: '>=8.12.0'} 7294 engines: {node: '>=8.12.0'}
@@ -6686,6 +7299,11 @@ packages:
6686 engines: {node: '>=10.17.0'} 7299 engines: {node: '>=10.17.0'}
6687 dev: true 7300 dev: true
6688 7301
7302 /human-signals@4.3.1:
7303 resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
7304 engines: {node: '>=14.18.0'}
7305 dev: true
7306
6689 /humanize-ms@1.2.1: 7307 /humanize-ms@1.2.1:
6690 resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} 7308 resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
6691 dependencies: 7309 dependencies:
@@ -6727,15 +7345,14 @@ packages:
6727 /ieee754@1.2.1: 7345 /ieee754@1.2.1:
6728 resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 7346 resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
6729 requiresBuild: true 7347 requiresBuild: true
6730 dev: true
6731 7348
6732 /ignore@5.2.4: 7349 /ignore@5.2.4:
6733 resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 7350 resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
6734 engines: {node: '>= 4'} 7351 engines: {node: '>= 4'}
6735 dev: true 7352 dev: true
6736 7353
6737 /immutable@4.3.0: 7354 /immutable@4.3.1:
6738 resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} 7355 resolution: {integrity: sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==}
6739 7356
6740 /import-fresh@3.3.0: 7357 /import-fresh@3.3.0:
6741 resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 7358 resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
@@ -6819,11 +7436,11 @@ packages:
6819 through: 2.3.8 7436 through: 2.3.8
6820 dev: true 7437 dev: true
6821 7438
6822 /internal-slot@1.0.3: 7439 /internal-slot@1.0.5:
6823 resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 7440 resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
6824 engines: {node: '>= 0.4'} 7441 engines: {node: '>= 0.4'}
6825 dependencies: 7442 dependencies:
6826 get-intrinsic: 1.1.3 7443 get-intrinsic: 1.2.1
6827 has: 1.0.3 7444 has: 1.0.3
6828 side-channel: 1.0.4 7445 side-channel: 1.0.4
6829 dev: true 7446 dev: true
@@ -6839,7 +7456,7 @@ packages:
6839 '@formatjs/ecma402-abstract': 1.17.0 7456 '@formatjs/ecma402-abstract': 1.17.0
6840 '@formatjs/fast-memoize': 2.2.0 7457 '@formatjs/fast-memoize': 2.2.0
6841 '@formatjs/icu-messageformat-parser': 2.6.0 7458 '@formatjs/icu-messageformat-parser': 2.6.0
6842 tslib: 2.5.3 7459 tslib: 2.6.0
6843 dev: false 7460 dev: false
6844 7461
6845 /invariant@2.2.4: 7462 /invariant@2.2.4:
@@ -6886,12 +7503,12 @@ packages:
6886 has-tostringtag: 1.0.0 7503 has-tostringtag: 1.0.0
6887 dev: true 7504 dev: true
6888 7505
6889 /is-array-buffer@3.0.1: 7506 /is-array-buffer@3.0.2:
6890 resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} 7507 resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
6891 dependencies: 7508 dependencies:
6892 call-bind: 1.0.2 7509 call-bind: 1.0.2
6893 get-intrinsic: 1.2.0 7510 get-intrinsic: 1.2.1
6894 is-typed-array: 1.1.10 7511 is-typed-array: 1.1.12
6895 dev: true 7512 dev: true
6896 7513
6897 /is-arrayish@0.2.1: 7514 /is-arrayish@0.2.1:
@@ -6958,8 +7575,8 @@ packages:
6958 has: 1.0.3 7575 has: 1.0.3
6959 dev: true 7576 dev: true
6960 7577
6961 /is-core-module@2.12.0: 7578 /is-core-module@2.12.1:
6962 resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} 7579 resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
6963 dependencies: 7580 dependencies:
6964 has: 1.0.3 7581 has: 1.0.3
6965 7582
@@ -7002,6 +7619,18 @@ packages:
7002 kind-of: 6.0.3 7619 kind-of: 6.0.3
7003 dev: false 7620 dev: false
7004 7621
7622 /is-docker@2.2.1:
7623 resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
7624 engines: {node: '>=8'}
7625 hasBin: true
7626 dev: true
7627
7628 /is-docker@3.0.0:
7629 resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
7630 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
7631 hasBin: true
7632 dev: true
7633
7005 /is-extendable@0.1.1: 7634 /is-extendable@0.1.1:
7006 resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} 7635 resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
7007 engines: {node: '>=0.10.0'} 7636 engines: {node: '>=0.10.0'}
@@ -7042,6 +7671,14 @@ packages:
7042 resolution: {integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==} 7671 resolution: {integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==}
7043 dev: false 7672 dev: false
7044 7673
7674 /is-inside-container@1.0.0:
7675 resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
7676 engines: {node: '>=14.16'}
7677 hasBin: true
7678 dependencies:
7679 is-docker: 3.0.0
7680 dev: true
7681
7045 /is-interactive@1.0.0: 7682 /is-interactive@1.0.0:
7046 resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} 7683 resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
7047 engines: {node: '>=8'} 7684 engines: {node: '>=8'}
@@ -7054,6 +7691,10 @@ packages:
7054 resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 7691 resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
7055 dev: true 7692 dev: true
7056 7693
7694 /is-natural-number@4.0.1:
7695 resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==}
7696 dev: false
7697
7057 /is-negative-zero@2.0.2: 7698 /is-negative-zero@2.0.2:
7058 resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 7699 resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
7059 engines: {node: '>= 0.4'} 7700 engines: {node: '>= 0.4'}
@@ -7138,10 +7779,20 @@ packages:
7138 call-bind: 1.0.2 7779 call-bind: 1.0.2
7139 dev: true 7780 dev: true
7140 7781
7782 /is-stream@1.1.0:
7783 resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
7784 engines: {node: '>=0.10.0'}
7785 dev: false
7786
7141 /is-stream@2.0.1: 7787 /is-stream@2.0.1:
7142 resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 7788 resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
7143 engines: {node: '>=8'} 7789 engines: {node: '>=8'}
7144 7790
7791 /is-stream@3.0.0:
7792 resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
7793 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
7794 dev: true
7795
7145 /is-string@1.0.7: 7796 /is-string@1.0.7:
7146 resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 7797 resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
7147 engines: {node: '>= 0.4'} 7798 engines: {node: '>= 0.4'}
@@ -7163,15 +7814,11 @@ packages:
7163 text-extensions: 1.9.0 7814 text-extensions: 1.9.0
7164 dev: true 7815 dev: true
7165 7816
7166 /is-typed-array@1.1.10: 7817 /is-typed-array@1.1.12:
7167 resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} 7818 resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
7168 engines: {node: '>= 0.4'} 7819 engines: {node: '>= 0.4'}
7169 dependencies: 7820 dependencies:
7170 available-typed-arrays: 1.0.5 7821 which-typed-array: 1.1.11
7171 call-bind: 1.0.2
7172 for-each: 0.3.3
7173 gopd: 1.0.1
7174 has-tostringtag: 1.0.0
7175 dev: true 7822 dev: true
7176 7823
7177 /is-typedarray@1.0.0: 7824 /is-typedarray@1.0.0:
@@ -7204,7 +7851,7 @@ packages:
7204 resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 7851 resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==}
7205 dependencies: 7852 dependencies:
7206 call-bind: 1.0.2 7853 call-bind: 1.0.2
7207 get-intrinsic: 1.2.0 7854 get-intrinsic: 1.2.1
7208 dev: true 7855 dev: true
7209 7856
7210 /is-windows@1.0.2: 7857 /is-windows@1.0.2:
@@ -7212,6 +7859,13 @@ packages:
7212 engines: {node: '>=0.10.0'} 7859 engines: {node: '>=0.10.0'}
7213 dev: false 7860 dev: false
7214 7861
7862 /is-wsl@2.2.0:
7863 resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
7864 engines: {node: '>=8'}
7865 dependencies:
7866 is-docker: 2.2.1
7867 dev: true
7868
7215 /isarray@1.0.0: 7869 /isarray@1.0.0:
7216 resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 7870 resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
7217 7871
@@ -7261,7 +7915,7 @@ packages:
7261 '@babel/parser': 7.20.5 7915 '@babel/parser': 7.20.5
7262 '@istanbuljs/schema': 0.1.3 7916 '@istanbuljs/schema': 0.1.3
7263 istanbul-lib-coverage: 3.2.0 7917 istanbul-lib-coverage: 3.2.0
7264 semver: 6.3.0 7918 semver: 6.3.1
7265 transitivePeerDependencies: 7919 transitivePeerDependencies:
7266 - supports-color 7920 - supports-color
7267 dev: true 7921 dev: true
@@ -7322,27 +7976,27 @@ packages:
7322 p-limit: 3.1.0 7976 p-limit: 3.1.0
7323 dev: true 7977 dev: true
7324 7978
7325 /jest-circus@29.5.0: 7979 /jest-circus@29.6.1:
7326 resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} 7980 resolution: {integrity: sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ==}
7327 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 7981 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7328 dependencies: 7982 dependencies:
7329 '@jest/environment': 29.5.0 7983 '@jest/environment': 29.6.1
7330 '@jest/expect': 29.5.0 7984 '@jest/expect': 29.6.1
7331 '@jest/test-result': 29.5.0 7985 '@jest/test-result': 29.6.1
7332 '@jest/types': 29.5.0 7986 '@jest/types': 29.6.1
7333 '@types/node': 18.15.3 7987 '@types/node': 18.15.3
7334 chalk: 4.1.2 7988 chalk: 4.1.2
7335 co: 4.6.0 7989 co: 4.6.0
7336 dedent: 0.7.0 7990 dedent: 0.7.0
7337 is-generator-fn: 2.1.0 7991 is-generator-fn: 2.1.0
7338 jest-each: 29.5.0 7992 jest-each: 29.6.1
7339 jest-matcher-utils: 29.5.0 7993 jest-matcher-utils: 29.6.1
7340 jest-message-util: 29.5.0 7994 jest-message-util: 29.6.1
7341 jest-runtime: 29.5.0 7995 jest-runtime: 29.6.1
7342 jest-snapshot: 29.5.0 7996 jest-snapshot: 29.6.1
7343 jest-util: 29.5.0 7997 jest-util: 29.6.1
7344 p-limit: 3.1.0 7998 p-limit: 3.1.0
7345 pretty-format: 29.5.0 7999 pretty-format: 29.6.1
7346 pure-rand: 6.0.2 8000 pure-rand: 6.0.2
7347 slash: 3.0.0 8001 slash: 3.0.0
7348 stack-utils: 2.0.6 8002 stack-utils: 2.0.6
@@ -7350,8 +8004,8 @@ packages:
7350 - supports-color 8004 - supports-color
7351 dev: true 8005 dev: true
7352 8006
7353 /jest-cli@29.5.0(@types/node@18.15.3)(ts-node@10.9.1): 8007 /jest-cli@29.6.1(@types/node@18.15.3)(ts-node@10.9.1):
7354 resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} 8008 resolution: {integrity: sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing==}
7355 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8009 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7356 hasBin: true 8010 hasBin: true
7357 peerDependencies: 8011 peerDependencies:
@@ -7360,16 +8014,16 @@ packages:
7360 node-notifier: 8014 node-notifier:
7361 optional: true 8015 optional: true
7362 dependencies: 8016 dependencies:
7363 '@jest/core': 29.5.0(ts-node@10.9.1) 8017 '@jest/core': 29.6.1(ts-node@10.9.1)
7364 '@jest/test-result': 29.5.0 8018 '@jest/test-result': 29.6.1
7365 '@jest/types': 29.5.0 8019 '@jest/types': 29.6.1
7366 chalk: 4.1.2 8020 chalk: 4.1.2
7367 exit: 0.1.2 8021 exit: 0.1.2
7368 graceful-fs: 4.2.11 8022 graceful-fs: 4.2.11
7369 import-local: 3.1.0 8023 import-local: 3.1.0
7370 jest-config: 29.5.0(@types/node@18.15.3)(ts-node@10.9.1) 8024 jest-config: 29.6.1(@types/node@18.15.3)(ts-node@10.9.1)
7371 jest-util: 29.5.0 8025 jest-util: 29.6.1
7372 jest-validate: 29.5.0 8026 jest-validate: 29.6.1
7373 prompts: 2.4.2 8027 prompts: 2.4.2
7374 yargs: 17.7.2 8028 yargs: 17.7.2
7375 transitivePeerDependencies: 8029 transitivePeerDependencies:
@@ -7378,8 +8032,8 @@ packages:
7378 - ts-node 8032 - ts-node
7379 dev: true 8033 dev: true
7380 8034
7381 /jest-config@29.5.0(@types/node@18.15.3)(ts-node@10.9.1): 8035 /jest-config@29.6.1(@types/node@18.15.3)(ts-node@10.9.1):
7382 resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} 8036 resolution: {integrity: sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ==}
7383 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8037 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7384 peerDependencies: 8038 peerDependencies:
7385 '@types/node': '*' 8039 '@types/node': '*'
@@ -7391,26 +8045,26 @@ packages:
7391 optional: true 8045 optional: true
7392 dependencies: 8046 dependencies:
7393 '@babel/core': 7.20.5 8047 '@babel/core': 7.20.5
7394 '@jest/test-sequencer': 29.5.0 8048 '@jest/test-sequencer': 29.6.1
7395 '@jest/types': 29.5.0 8049 '@jest/types': 29.6.1
7396 '@types/node': 18.15.3 8050 '@types/node': 18.15.3
7397 babel-jest: 29.5.0(@babel/core@7.20.5) 8051 babel-jest: 29.6.1(@babel/core@7.20.5)
7398 chalk: 4.1.2 8052 chalk: 4.1.2
7399 ci-info: 3.8.0 8053 ci-info: 3.8.0
7400 deepmerge: 4.2.2 8054 deepmerge: 4.2.2
7401 glob: 7.2.3 8055 glob: 7.2.3
7402 graceful-fs: 4.2.11 8056 graceful-fs: 4.2.11
7403 jest-circus: 29.5.0 8057 jest-circus: 29.6.1
7404 jest-environment-node: 29.5.0 8058 jest-environment-node: 29.6.1
7405 jest-get-type: 29.4.3 8059 jest-get-type: 29.4.3
7406 jest-regex-util: 29.4.3 8060 jest-regex-util: 29.4.3
7407 jest-resolve: 29.5.0 8061 jest-resolve: 29.6.1
7408 jest-runner: 29.5.0 8062 jest-runner: 29.6.1
7409 jest-util: 29.5.0 8063 jest-util: 29.6.1
7410 jest-validate: 29.5.0 8064 jest-validate: 29.6.1
7411 micromatch: 4.0.5 8065 micromatch: 4.0.5
7412 parse-json: 5.2.0 8066 parse-json: 5.2.0
7413 pretty-format: 29.5.0 8067 pretty-format: 29.6.1
7414 slash: 3.0.0 8068 slash: 3.0.0
7415 strip-json-comments: 3.1.1 8069 strip-json-comments: 3.1.1
7416 ts-node: 10.9.1(@types/node@18.15.3)(typescript@5.0.4) 8070 ts-node: 10.9.1(@types/node@18.15.3)(typescript@5.0.4)
@@ -7425,7 +8079,17 @@ packages:
7425 chalk: 4.1.2 8079 chalk: 4.1.2
7426 diff-sequences: 29.4.3 8080 diff-sequences: 29.4.3
7427 jest-get-type: 29.4.3 8081 jest-get-type: 29.4.3
7428 pretty-format: 29.5.0 8082 pretty-format: 29.6.1
8083 dev: true
8084
8085 /jest-diff@29.6.1:
8086 resolution: {integrity: sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==}
8087 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
8088 dependencies:
8089 chalk: 4.1.2
8090 diff-sequences: 29.4.3
8091 jest-get-type: 29.4.3
8092 pretty-format: 29.6.1
7429 dev: true 8093 dev: true
7430 8094
7431 /jest-docblock@29.4.3: 8095 /jest-docblock@29.4.3:
@@ -7435,27 +8099,27 @@ packages:
7435 detect-newline: 3.1.0 8099 detect-newline: 3.1.0
7436 dev: true 8100 dev: true
7437 8101
7438 /jest-each@29.5.0: 8102 /jest-each@29.6.1:
7439 resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} 8103 resolution: {integrity: sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ==}
7440 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8104 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7441 dependencies: 8105 dependencies:
7442 '@jest/types': 29.5.0 8106 '@jest/types': 29.6.1
7443 chalk: 4.1.2 8107 chalk: 4.1.2
7444 jest-get-type: 29.4.3 8108 jest-get-type: 29.4.3
7445 jest-util: 29.5.0 8109 jest-util: 29.6.1
7446 pretty-format: 29.5.0 8110 pretty-format: 29.6.1
7447 dev: true 8111 dev: true
7448 8112
7449 /jest-environment-node@29.5.0: 8113 /jest-environment-node@29.6.1:
7450 resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} 8114 resolution: {integrity: sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ==}
7451 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8115 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7452 dependencies: 8116 dependencies:
7453 '@jest/environment': 29.5.0 8117 '@jest/environment': 29.6.1
7454 '@jest/fake-timers': 29.5.0 8118 '@jest/fake-timers': 29.6.1
7455 '@jest/types': 29.5.0 8119 '@jest/types': 29.6.1
7456 '@types/node': 18.15.3 8120 '@types/node': 18.15.3
7457 jest-mock: 29.5.0 8121 jest-mock: 29.6.1
7458 jest-util: 29.5.0 8122 jest-util: 29.6.1
7459 dev: true 8123 dev: true
7460 8124
7461 /jest-get-type@29.4.3: 8125 /jest-get-type@29.4.3:
@@ -7463,31 +8127,31 @@ packages:
7463 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8127 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7464 dev: true 8128 dev: true
7465 8129
7466 /jest-haste-map@29.5.0: 8130 /jest-haste-map@29.6.1:
7467 resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} 8131 resolution: {integrity: sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig==}
7468 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8132 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7469 dependencies: 8133 dependencies:
7470 '@jest/types': 29.5.0 8134 '@jest/types': 29.6.1
7471 '@types/graceful-fs': 4.1.5 8135 '@types/graceful-fs': 4.1.5
7472 '@types/node': 18.15.3 8136 '@types/node': 18.15.3
7473 anymatch: 3.1.3 8137 anymatch: 3.1.3
7474 fb-watchman: 2.0.2 8138 fb-watchman: 2.0.2
7475 graceful-fs: 4.2.11 8139 graceful-fs: 4.2.11
7476 jest-regex-util: 29.4.3 8140 jest-regex-util: 29.4.3
7477 jest-util: 29.5.0 8141 jest-util: 29.6.1
7478 jest-worker: 29.5.0 8142 jest-worker: 29.6.1
7479 micromatch: 4.0.5 8143 micromatch: 4.0.5
7480 walker: 1.0.8 8144 walker: 1.0.8
7481 optionalDependencies: 8145 optionalDependencies:
7482 fsevents: 2.3.2 8146 fsevents: 2.3.2
7483 dev: true 8147 dev: true
7484 8148
7485 /jest-leak-detector@29.5.0: 8149 /jest-leak-detector@29.6.1:
7486 resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} 8150 resolution: {integrity: sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ==}
7487 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8151 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7488 dependencies: 8152 dependencies:
7489 jest-get-type: 29.4.3 8153 jest-get-type: 29.4.3
7490 pretty-format: 29.5.0 8154 pretty-format: 29.6.1
7491 dev: true 8155 dev: true
7492 8156
7493 /jest-matcher-utils@29.5.0: 8157 /jest-matcher-utils@29.5.0:
@@ -7500,12 +8164,22 @@ packages:
7500 pretty-format: 29.5.0 8164 pretty-format: 29.5.0
7501 dev: true 8165 dev: true
7502 8166
8167 /jest-matcher-utils@29.6.1:
8168 resolution: {integrity: sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==}
8169 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
8170 dependencies:
8171 chalk: 4.1.2
8172 jest-diff: 29.6.1
8173 jest-get-type: 29.4.3
8174 pretty-format: 29.6.1
8175 dev: true
8176
7503 /jest-message-util@29.5.0: 8177 /jest-message-util@29.5.0:
7504 resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} 8178 resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==}
7505 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8179 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7506 dependencies: 8180 dependencies:
7507 '@babel/code-frame': 7.21.4 8181 '@babel/code-frame': 7.22.5
7508 '@jest/types': 29.5.0 8182 '@jest/types': 29.6.1
7509 '@types/stack-utils': 2.0.1 8183 '@types/stack-utils': 2.0.1
7510 chalk: 4.1.2 8184 chalk: 4.1.2
7511 graceful-fs: 4.2.11 8185 graceful-fs: 4.2.11
@@ -7515,16 +8189,31 @@ packages:
7515 stack-utils: 2.0.6 8189 stack-utils: 2.0.6
7516 dev: true 8190 dev: true
7517 8191
7518 /jest-mock@29.5.0: 8192 /jest-message-util@29.6.1:
7519 resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} 8193 resolution: {integrity: sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ==}
8194 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
8195 dependencies:
8196 '@babel/code-frame': 7.22.5
8197 '@jest/types': 29.6.1
8198 '@types/stack-utils': 2.0.1
8199 chalk: 4.1.2
8200 graceful-fs: 4.2.11
8201 micromatch: 4.0.5
8202 pretty-format: 29.6.1
8203 slash: 3.0.0
8204 stack-utils: 2.0.6
8205 dev: true
8206
8207 /jest-mock@29.6.1:
8208 resolution: {integrity: sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw==}
7520 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8209 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7521 dependencies: 8210 dependencies:
7522 '@jest/types': 29.5.0 8211 '@jest/types': 29.6.1
7523 '@types/node': 18.15.3 8212 '@types/node': 18.15.3
7524 jest-util: 29.5.0 8213 jest-util: 29.6.1
7525 dev: true 8214 dev: true
7526 8215
7527 /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): 8216 /jest-pnp-resolver@1.2.3(jest-resolve@29.6.1):
7528 resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} 8217 resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
7529 engines: {node: '>=6'} 8218 engines: {node: '>=6'}
7530 peerDependencies: 8219 peerDependencies:
@@ -7533,7 +8222,7 @@ packages:
7533 jest-resolve: 8222 jest-resolve:
7534 optional: true 8223 optional: true
7535 dependencies: 8224 dependencies:
7536 jest-resolve: 29.5.0 8225 jest-resolve: 29.6.1
7537 dev: true 8226 dev: true
7538 8227
7539 /jest-regex-util@29.4.3: 8228 /jest-regex-util@29.4.3:
@@ -7541,117 +8230,115 @@ packages:
7541 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8230 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7542 dev: true 8231 dev: true
7543 8232
7544 /jest-resolve-dependencies@29.5.0: 8233 /jest-resolve-dependencies@29.6.1:
7545 resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} 8234 resolution: {integrity: sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw==}
7546 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8235 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7547 dependencies: 8236 dependencies:
7548 jest-regex-util: 29.4.3 8237 jest-regex-util: 29.4.3
7549 jest-snapshot: 29.5.0 8238 jest-snapshot: 29.6.1
7550 transitivePeerDependencies: 8239 transitivePeerDependencies:
7551 - supports-color 8240 - supports-color
7552 dev: true 8241 dev: true
7553 8242
7554 /jest-resolve@29.5.0: 8243 /jest-resolve@29.6.1:
7555 resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} 8244 resolution: {integrity: sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg==}
7556 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8245 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7557 dependencies: 8246 dependencies:
7558 chalk: 4.1.2 8247 chalk: 4.1.2
7559 graceful-fs: 4.2.11 8248 graceful-fs: 4.2.11
7560 jest-haste-map: 29.5.0 8249 jest-haste-map: 29.6.1
7561 jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) 8250 jest-pnp-resolver: 1.2.3(jest-resolve@29.6.1)
7562 jest-util: 29.5.0 8251 jest-util: 29.6.1
7563 jest-validate: 29.5.0 8252 jest-validate: 29.6.1
7564 resolve: 1.22.2 8253 resolve: 1.22.2
7565 resolve.exports: 2.0.2 8254 resolve.exports: 2.0.2
7566 slash: 3.0.0 8255 slash: 3.0.0
7567 dev: true 8256 dev: true
7568 8257
7569 /jest-runner@29.5.0: 8258 /jest-runner@29.6.1:
7570 resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} 8259 resolution: {integrity: sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ==}
7571 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8260 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7572 dependencies: 8261 dependencies:
7573 '@jest/console': 29.5.0 8262 '@jest/console': 29.6.1
7574 '@jest/environment': 29.5.0 8263 '@jest/environment': 29.6.1
7575 '@jest/test-result': 29.5.0 8264 '@jest/test-result': 29.6.1
7576 '@jest/transform': 29.5.0 8265 '@jest/transform': 29.6.1
7577 '@jest/types': 29.5.0 8266 '@jest/types': 29.6.1
7578 '@types/node': 18.15.3 8267 '@types/node': 18.15.3
7579 chalk: 4.1.2 8268 chalk: 4.1.2
7580 emittery: 0.13.1 8269 emittery: 0.13.1
7581 graceful-fs: 4.2.11 8270 graceful-fs: 4.2.11
7582 jest-docblock: 29.4.3 8271 jest-docblock: 29.4.3
7583 jest-environment-node: 29.5.0 8272 jest-environment-node: 29.6.1
7584 jest-haste-map: 29.5.0 8273 jest-haste-map: 29.6.1
7585 jest-leak-detector: 29.5.0 8274 jest-leak-detector: 29.6.1
7586 jest-message-util: 29.5.0 8275 jest-message-util: 29.6.1
7587 jest-resolve: 29.5.0 8276 jest-resolve: 29.6.1
7588 jest-runtime: 29.5.0 8277 jest-runtime: 29.6.1
7589 jest-util: 29.5.0 8278 jest-util: 29.6.1
7590 jest-watcher: 29.5.0 8279 jest-watcher: 29.6.1
7591 jest-worker: 29.5.0 8280 jest-worker: 29.6.1
7592 p-limit: 3.1.0 8281 p-limit: 3.1.0
7593 source-map-support: 0.5.13 8282 source-map-support: 0.5.13
7594 transitivePeerDependencies: 8283 transitivePeerDependencies:
7595 - supports-color 8284 - supports-color
7596 dev: true 8285 dev: true
7597 8286
7598 /jest-runtime@29.5.0: 8287 /jest-runtime@29.6.1:
7599 resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} 8288 resolution: {integrity: sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ==}
7600 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8289 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7601 dependencies: 8290 dependencies:
7602 '@jest/environment': 29.5.0 8291 '@jest/environment': 29.6.1
7603 '@jest/fake-timers': 29.5.0 8292 '@jest/fake-timers': 29.6.1
7604 '@jest/globals': 29.5.0 8293 '@jest/globals': 29.6.1
7605 '@jest/source-map': 29.4.3 8294 '@jest/source-map': 29.6.0
7606 '@jest/test-result': 29.5.0 8295 '@jest/test-result': 29.6.1
7607 '@jest/transform': 29.5.0 8296 '@jest/transform': 29.6.1
7608 '@jest/types': 29.5.0 8297 '@jest/types': 29.6.1
7609 '@types/node': 18.15.3 8298 '@types/node': 18.15.3
7610 chalk: 4.1.2 8299 chalk: 4.1.2
7611 cjs-module-lexer: 1.2.2 8300 cjs-module-lexer: 1.2.2
7612 collect-v8-coverage: 1.0.1 8301 collect-v8-coverage: 1.0.1
7613 glob: 7.2.3 8302 glob: 7.2.3
7614 graceful-fs: 4.2.11 8303 graceful-fs: 4.2.11
7615 jest-haste-map: 29.5.0 8304 jest-haste-map: 29.6.1
7616 jest-message-util: 29.5.0 8305 jest-message-util: 29.6.1
7617 jest-mock: 29.5.0 8306 jest-mock: 29.6.1
7618 jest-regex-util: 29.4.3 8307 jest-regex-util: 29.4.3
7619 jest-resolve: 29.5.0 8308 jest-resolve: 29.6.1
7620 jest-snapshot: 29.5.0 8309 jest-snapshot: 29.6.1
7621 jest-util: 29.5.0 8310 jest-util: 29.6.1
7622 slash: 3.0.0 8311 slash: 3.0.0
7623 strip-bom: 4.0.0 8312 strip-bom: 4.0.0
7624 transitivePeerDependencies: 8313 transitivePeerDependencies:
7625 - supports-color 8314 - supports-color
7626 dev: true 8315 dev: true
7627 8316
7628 /jest-snapshot@29.5.0: 8317 /jest-snapshot@29.6.1:
7629 resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} 8318 resolution: {integrity: sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A==}
7630 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8319 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7631 dependencies: 8320 dependencies:
7632 '@babel/core': 7.20.5 8321 '@babel/core': 7.20.5
7633 '@babel/generator': 7.20.5 8322 '@babel/generator': 7.20.5
7634 '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.20.5) 8323 '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.20.5)
7635 '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.20.5) 8324 '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.20.5)
7636 '@babel/traverse': 7.20.5
7637 '@babel/types': 7.20.5 8325 '@babel/types': 7.20.5
7638 '@jest/expect-utils': 29.5.0 8326 '@jest/expect-utils': 29.6.1
7639 '@jest/transform': 29.5.0 8327 '@jest/transform': 29.6.1
7640 '@jest/types': 29.5.0 8328 '@jest/types': 29.6.1
7641 '@types/babel__traverse': 7.18.2
7642 '@types/prettier': 2.7.1 8329 '@types/prettier': 2.7.1
7643 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.20.5) 8330 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.20.5)
7644 chalk: 4.1.2 8331 chalk: 4.1.2
7645 expect: 29.5.0 8332 expect: 29.6.1
7646 graceful-fs: 4.2.11 8333 graceful-fs: 4.2.11
7647 jest-diff: 29.5.0 8334 jest-diff: 29.6.1
7648 jest-get-type: 29.4.3 8335 jest-get-type: 29.4.3
7649 jest-matcher-utils: 29.5.0 8336 jest-matcher-utils: 29.6.1
7650 jest-message-util: 29.5.0 8337 jest-message-util: 29.6.1
7651 jest-util: 29.5.0 8338 jest-util: 29.6.1
7652 natural-compare: 1.4.0 8339 natural-compare: 1.4.0
7653 pretty-format: 29.5.0 8340 pretty-format: 29.6.1
7654 semver: 7.5.1 8341 semver: 7.5.4
7655 transitivePeerDependencies: 8342 transitivePeerDependencies:
7656 - supports-color 8343 - supports-color
7657 dev: true 8344 dev: true
@@ -7660,7 +8347,7 @@ packages:
7660 resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} 8347 resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==}
7661 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8348 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7662 dependencies: 8349 dependencies:
7663 '@jest/types': 29.5.0 8350 '@jest/types': 29.6.1
7664 '@types/node': 18.15.3 8351 '@types/node': 18.15.3
7665 chalk: 4.1.2 8352 chalk: 4.1.2
7666 ci-info: 3.8.0 8353 ci-info: 3.8.0
@@ -7668,44 +8355,56 @@ packages:
7668 picomatch: 2.3.1 8355 picomatch: 2.3.1
7669 dev: true 8356 dev: true
7670 8357
7671 /jest-validate@29.5.0: 8358 /jest-util@29.6.1:
7672 resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} 8359 resolution: {integrity: sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==}
7673 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8360 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7674 dependencies: 8361 dependencies:
7675 '@jest/types': 29.5.0 8362 '@jest/types': 29.6.1
8363 '@types/node': 18.15.3
8364 chalk: 4.1.2
8365 ci-info: 3.8.0
8366 graceful-fs: 4.2.11
8367 picomatch: 2.3.1
8368 dev: true
8369
8370 /jest-validate@29.6.1:
8371 resolution: {integrity: sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA==}
8372 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
8373 dependencies:
8374 '@jest/types': 29.6.1
7676 camelcase: 6.3.0 8375 camelcase: 6.3.0
7677 chalk: 4.1.2 8376 chalk: 4.1.2
7678 jest-get-type: 29.4.3 8377 jest-get-type: 29.4.3
7679 leven: 3.1.0 8378 leven: 3.1.0
7680 pretty-format: 29.5.0 8379 pretty-format: 29.6.1
7681 dev: true 8380 dev: true
7682 8381
7683 /jest-watcher@29.5.0: 8382 /jest-watcher@29.6.1:
7684 resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} 8383 resolution: {integrity: sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA==}
7685 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8384 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7686 dependencies: 8385 dependencies:
7687 '@jest/test-result': 29.5.0 8386 '@jest/test-result': 29.6.1
7688 '@jest/types': 29.5.0 8387 '@jest/types': 29.6.1
7689 '@types/node': 18.15.3 8388 '@types/node': 18.15.3
7690 ansi-escapes: 4.3.2 8389 ansi-escapes: 4.3.2
7691 chalk: 4.1.2 8390 chalk: 4.1.2
7692 emittery: 0.13.1 8391 emittery: 0.13.1
7693 jest-util: 29.5.0 8392 jest-util: 29.6.1
7694 string-length: 4.0.2 8393 string-length: 4.0.2
7695 dev: true 8394 dev: true
7696 8395
7697 /jest-worker@29.5.0: 8396 /jest-worker@29.6.1:
7698 resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} 8397 resolution: {integrity: sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==}
7699 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8398 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7700 dependencies: 8399 dependencies:
7701 '@types/node': 18.15.3 8400 '@types/node': 18.15.3
7702 jest-util: 29.5.0 8401 jest-util: 29.6.1
7703 merge-stream: 2.0.0 8402 merge-stream: 2.0.0
7704 supports-color: 8.1.1 8403 supports-color: 8.1.1
7705 dev: true 8404 dev: true
7706 8405
7707 /jest@29.5.0(@types/node@18.15.3)(ts-node@10.9.1): 8406 /jest@29.6.1(@types/node@18.15.3)(ts-node@10.9.1):
7708 resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} 8407 resolution: {integrity: sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw==}
7709 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 8408 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7710 hasBin: true 8409 hasBin: true
7711 peerDependencies: 8410 peerDependencies:
@@ -7714,10 +8413,10 @@ packages:
7714 node-notifier: 8413 node-notifier:
7715 optional: true 8414 optional: true
7716 dependencies: 8415 dependencies:
7717 '@jest/core': 29.5.0(ts-node@10.9.1) 8416 '@jest/core': 29.6.1(ts-node@10.9.1)
7718 '@jest/types': 29.5.0 8417 '@jest/types': 29.6.1
7719 import-local: 3.1.0 8418 import-local: 3.1.0
7720 jest-cli: 29.5.0(@types/node@18.15.3)(ts-node@10.9.1) 8419 jest-cli: 29.6.1(@types/node@18.15.3)(ts-node@10.9.1)
7721 transitivePeerDependencies: 8420 transitivePeerDependencies:
7722 - '@types/node' 8421 - '@types/node'
7723 - supports-color 8422 - supports-color
@@ -7734,10 +8433,6 @@ packages:
7734 '@sideway/pinpoint': 2.0.0 8433 '@sideway/pinpoint': 2.0.0
7735 dev: true 8434 dev: true
7736 8435
7737 /js-sdsl@4.4.0:
7738 resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==}
7739 dev: true
7740
7741 /js-tokens@4.0.0: 8436 /js-tokens@4.0.0:
7742 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 8437 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
7743 8438
@@ -7827,6 +8522,12 @@ packages:
7827 hasBin: true 8522 hasBin: true
7828 dev: true 8523 dev: true
7829 8524
8525 /json5@2.2.3:
8526 resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
8527 engines: {node: '>=6'}
8528 hasBin: true
8529 dev: true
8530
7830 /jsonfile@4.0.0: 8531 /jsonfile@4.0.0:
7831 resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 8532 resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
7832 optionalDependencies: 8533 optionalDependencies:
@@ -7857,17 +8558,17 @@ packages:
7857 lodash.isstring: 4.0.1 8558 lodash.isstring: 4.0.1
7858 lodash.once: 4.1.1 8559 lodash.once: 4.1.1
7859 ms: 2.1.3 8560 ms: 2.1.3
7860 semver: 5.7.1 8561 semver: 5.7.2
7861 dev: false 8562 dev: false
7862 8563
7863 /jsonwebtoken@9.0.0: 8564 /jsonwebtoken@9.0.1:
7864 resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} 8565 resolution: {integrity: sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==}
7865 engines: {node: '>=12', npm: '>=6'} 8566 engines: {node: '>=12', npm: '>=6'}
7866 dependencies: 8567 dependencies:
7867 jws: 3.2.2 8568 jws: 3.2.2
7868 lodash: 4.17.21 8569 lodash: 4.17.21
7869 ms: 2.1.3 8570 ms: 2.1.3
7870 semver: 7.5.1 8571 semver: 7.5.4
7871 dev: false 8572 dev: false
7872 8573
7873 /jsprim@1.4.2: 8574 /jsprim@1.4.2:
@@ -7883,7 +8584,7 @@ packages:
7883 /jss-plugin-camel-case@10.10.0: 8584 /jss-plugin-camel-case@10.10.0:
7884 resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} 8585 resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==}
7885 dependencies: 8586 dependencies:
7886 '@babel/runtime': 7.20.7 8587 '@babel/runtime': 7.21.5
7887 hyphenate-style-name: 1.0.4 8588 hyphenate-style-name: 1.0.4
7888 jss: 10.10.0 8589 jss: 10.10.0
7889 dev: false 8590 dev: false
@@ -7891,7 +8592,7 @@ packages:
7891 /jss-plugin-compose@10.10.0: 8592 /jss-plugin-compose@10.10.0:
7892 resolution: {integrity: sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==} 8593 resolution: {integrity: sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==}
7893 dependencies: 8594 dependencies:
7894 '@babel/runtime': 7.20.7 8595 '@babel/runtime': 7.21.5
7895 jss: 10.10.0 8596 jss: 10.10.0
7896 tiny-warning: 1.0.3 8597 tiny-warning: 1.0.3
7897 dev: false 8598 dev: false
@@ -7899,21 +8600,21 @@ packages:
7899 /jss-plugin-default-unit@10.10.0: 8600 /jss-plugin-default-unit@10.10.0:
7900 resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} 8601 resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==}
7901 dependencies: 8602 dependencies:
7902 '@babel/runtime': 7.20.7 8603 '@babel/runtime': 7.21.5
7903 jss: 10.10.0 8604 jss: 10.10.0
7904 dev: false 8605 dev: false
7905 8606
7906 /jss-plugin-expand@10.10.0: 8607 /jss-plugin-expand@10.10.0:
7907 resolution: {integrity: sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==} 8608 resolution: {integrity: sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==}
7908 dependencies: 8609 dependencies:
7909 '@babel/runtime': 7.20.7 8610 '@babel/runtime': 7.21.5
7910 jss: 10.10.0 8611 jss: 10.10.0
7911 dev: false 8612 dev: false
7912 8613
7913 /jss-plugin-extend@10.10.0: 8614 /jss-plugin-extend@10.10.0:
7914 resolution: {integrity: sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==} 8615 resolution: {integrity: sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==}
7915 dependencies: 8616 dependencies:
7916 '@babel/runtime': 7.20.7 8617 '@babel/runtime': 7.21.5
7917 jss: 10.10.0 8618 jss: 10.10.0
7918 tiny-warning: 1.0.3 8619 tiny-warning: 1.0.3
7919 dev: false 8620 dev: false
@@ -7921,14 +8622,14 @@ packages:
7921 /jss-plugin-global@10.10.0: 8622 /jss-plugin-global@10.10.0:
7922 resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} 8623 resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==}
7923 dependencies: 8624 dependencies:
7924 '@babel/runtime': 7.20.7 8625 '@babel/runtime': 7.21.5
7925 jss: 10.10.0 8626 jss: 10.10.0
7926 dev: false 8627 dev: false
7927 8628
7928 /jss-plugin-nested@10.10.0: 8629 /jss-plugin-nested@10.10.0:
7929 resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} 8630 resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==}
7930 dependencies: 8631 dependencies:
7931 '@babel/runtime': 7.20.7 8632 '@babel/runtime': 7.21.5
7932 jss: 10.10.0 8633 jss: 10.10.0
7933 tiny-warning: 1.0.3 8634 tiny-warning: 1.0.3
7934 dev: false 8635 dev: false
@@ -7936,14 +8637,14 @@ packages:
7936 /jss-plugin-props-sort@10.10.0: 8637 /jss-plugin-props-sort@10.10.0:
7937 resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} 8638 resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==}
7938 dependencies: 8639 dependencies:
7939 '@babel/runtime': 7.20.7 8640 '@babel/runtime': 7.21.5
7940 jss: 10.10.0 8641 jss: 10.10.0
7941 dev: false 8642 dev: false
7942 8643
7943 /jss-plugin-rule-value-function@10.10.0: 8644 /jss-plugin-rule-value-function@10.10.0:
7944 resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} 8645 resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==}
7945 dependencies: 8646 dependencies:
7946 '@babel/runtime': 7.20.7 8647 '@babel/runtime': 7.21.5
7947 jss: 10.10.0 8648 jss: 10.10.0
7948 tiny-warning: 1.0.3 8649 tiny-warning: 1.0.3
7949 dev: false 8650 dev: false
@@ -7951,7 +8652,7 @@ packages:
7951 /jss-plugin-rule-value-observable@10.10.0: 8652 /jss-plugin-rule-value-observable@10.10.0:
7952 resolution: {integrity: sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==} 8653 resolution: {integrity: sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==}
7953 dependencies: 8654 dependencies:
7954 '@babel/runtime': 7.20.7 8655 '@babel/runtime': 7.21.5
7955 jss: 10.10.0 8656 jss: 10.10.0
7956 symbol-observable: 1.2.0 8657 symbol-observable: 1.2.0
7957 dev: false 8658 dev: false
@@ -7959,7 +8660,7 @@ packages:
7959 /jss-plugin-template@10.10.0: 8660 /jss-plugin-template@10.10.0:
7960 resolution: {integrity: sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==} 8661 resolution: {integrity: sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==}
7961 dependencies: 8662 dependencies:
7962 '@babel/runtime': 7.20.7 8663 '@babel/runtime': 7.21.5
7963 jss: 10.10.0 8664 jss: 10.10.0
7964 tiny-warning: 1.0.3 8665 tiny-warning: 1.0.3
7965 dev: false 8666 dev: false
@@ -7967,7 +8668,7 @@ packages:
7967 /jss-plugin-vendor-prefixer@10.10.0: 8668 /jss-plugin-vendor-prefixer@10.10.0:
7968 resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} 8669 resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==}
7969 dependencies: 8670 dependencies:
7970 '@babel/runtime': 7.20.7 8671 '@babel/runtime': 7.21.5
7971 css-vendor: 2.0.8 8672 css-vendor: 2.0.8
7972 jss: 10.10.0 8673 jss: 10.10.0
7973 dev: false 8674 dev: false
@@ -7975,7 +8676,7 @@ packages:
7975 /jss-preset-default@10.10.0: 8676 /jss-preset-default@10.10.0:
7976 resolution: {integrity: sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==} 8677 resolution: {integrity: sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==}
7977 dependencies: 8678 dependencies:
7978 '@babel/runtime': 7.20.7 8679 '@babel/runtime': 7.21.5
7979 jss: 10.10.0 8680 jss: 10.10.0
7980 jss-plugin-camel-case: 10.10.0 8681 jss-plugin-camel-case: 10.10.0
7981 jss-plugin-compose: 10.10.0 8682 jss-plugin-compose: 10.10.0
@@ -8008,6 +8709,16 @@ packages:
8008 object.assign: 4.1.4 8709 object.assign: 4.1.4
8009 dev: true 8710 dev: true
8010 8711
8712 /jsx-ast-utils@3.3.4:
8713 resolution: {integrity: sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==}
8714 engines: {node: '>=4.0'}
8715 dependencies:
8716 array-includes: 3.1.6
8717 array.prototype.flat: 1.3.1
8718 object.assign: 4.1.4
8719 object.values: 1.1.6
8720 dev: true
8721
8011 /jwa@1.4.1: 8722 /jwa@1.4.1:
8012 resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} 8723 resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==}
8013 dependencies: 8724 dependencies:
@@ -8185,10 +8896,6 @@ packages:
8185 resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 8896 resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
8186 dev: true 8897 dev: true
8187 8898
8188 /listenercount@1.0.1:
8189 resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==}
8190 dev: false
8191
8192 /livereload-js@2.4.0: 8899 /livereload-js@2.4.0:
8193 resolution: {integrity: sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==} 8900 resolution: {integrity: sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==}
8194 dev: true 8901 dev: true
@@ -8348,6 +9055,12 @@ packages:
8348 yallist: 2.1.2 9055 yallist: 2.1.2
8349 dev: false 9056 dev: false
8350 9057
9058 /lru-cache@5.1.1:
9059 resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
9060 dependencies:
9061 yallist: 3.1.1
9062 dev: true
9063
8351 /lru-cache@6.0.0: 9064 /lru-cache@6.0.0:
8352 resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 9065 resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
8353 engines: {node: '>=10'} 9066 engines: {node: '>=10'}
@@ -8392,11 +9105,18 @@ packages:
8392 node-exceptions: 2.0.2 9105 node-exceptions: 2.0.2
8393 dev: false 9106 dev: false
8394 9107
9108 /make-dir@1.3.0:
9109 resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==}
9110 engines: {node: '>=4'}
9111 dependencies:
9112 pify: 3.0.0
9113 dev: false
9114
8395 /make-dir@3.1.0: 9115 /make-dir@3.1.0:
8396 resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 9116 resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
8397 engines: {node: '>=8'} 9117 engines: {node: '>=8'}
8398 dependencies: 9118 dependencies:
8399 semver: 6.3.0 9119 semver: 6.3.1
8400 9120
8401 /make-error@1.3.6: 9121 /make-error@1.3.6:
8402 resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 9122 resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
@@ -8624,6 +9344,11 @@ packages:
8624 resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 9344 resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
8625 engines: {node: '>=6'} 9345 engines: {node: '>=6'}
8626 9346
9347 /mimic-fn@4.0.0:
9348 resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
9349 engines: {node: '>=12'}
9350 dev: true
9351
8627 /mimic-response@1.0.1: 9352 /mimic-response@1.0.1:
8628 resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} 9353 resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==}
8629 engines: {node: '>=4'} 9354 engines: {node: '>=4'}
@@ -8642,15 +9367,15 @@ packages:
8642 dependencies: 9367 dependencies:
8643 brace-expansion: 1.1.11 9368 brace-expansion: 1.1.11
8644 9369
8645 /minimatch@5.1.2: 9370 /minimatch@5.1.6:
8646 resolution: {integrity: sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==} 9371 resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
8647 engines: {node: '>=10'} 9372 engines: {node: '>=10'}
8648 dependencies: 9373 dependencies:
8649 brace-expansion: 2.0.1 9374 brace-expansion: 2.0.1
8650 dev: true 9375 dev: true
8651 9376
8652 /minimatch@9.0.1: 9377 /minimatch@9.0.3:
8653 resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} 9378 resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
8654 engines: {node: '>=16 || 14 >=14.17'} 9379 engines: {node: '>=16 || 14 >=14.17'}
8655 dependencies: 9380 dependencies:
8656 brace-expansion: 2.0.1 9381 brace-expansion: 2.0.1
@@ -8765,26 +9490,26 @@ packages:
8765 engines: {node: '>=10'} 9490 engines: {node: '>=10'}
8766 hasBin: true 9491 hasBin: true
8767 9492
8768 /mobx-localstorage@1.2.0(mobx@6.9.0): 9493 /mobx-localstorage@1.2.0(mobx@6.10.0):
8769 resolution: {integrity: sha512-fb03qyQfjnDIOW28qdV+h9AZ8qtJCZnzNgsej0YxCYwAR2ViykKxgHThikgOi+zJzJj5ljxWyvjGrr6CoptcFw==} 9494 resolution: {integrity: sha512-fb03qyQfjnDIOW28qdV+h9AZ8qtJCZnzNgsej0YxCYwAR2ViykKxgHThikgOi+zJzJj5ljxWyvjGrr6CoptcFw==}
8770 peerDependencies: 9495 peerDependencies:
8771 mobx: '>=3' 9496 mobx: '>=3'
8772 dependencies: 9497 dependencies:
8773 mobx: 6.9.0 9498 mobx: 6.10.0
8774 reactive-localstorage: 0.0.2 9499 reactive-localstorage: 0.0.2
8775 dev: false 9500 dev: false
8776 9501
8777 /mobx-react-form@3.2.0(mobx@6.9.0): 9502 /mobx-react-form@6.3.5(mobx@6.10.0):
8778 resolution: {integrity: sha512-7ddOvBulXW5VSMpxrok0A1VGZuWgn1cSvQ2HFXK2uMg631/37Anck7ASWEqK3AzKOaaP9/0kr7VCChqvhyotzQ==} 9503 resolution: {integrity: sha512-AsnfL1MC9Jm2wcF6hr7ayZjmqwrYw37LHMRFcjvXkmCSFEXM0/qKPA3/Ex3TOL4gmCEoBVoV/XhhfIuj5csUgQ==}
8779 engines: {node: '>=8.0.0'} 9504 engines: {node: '>=8.0.0'}
8780 peerDependencies: 9505 peerDependencies:
8781 mobx: ^6.0.0 9506 mobx: ^6.0.0
8782 dependencies: 9507 dependencies:
8783 lodash: 4.17.21 9508 lodash: 4.17.21
8784 mobx: 6.9.0 9509 mobx: 6.10.0
8785 dev: false 9510 dev: false
8786 9511
8787 /mobx-react-lite@3.4.0(mobx@6.9.0)(react-dom@18.2.0)(react@18.2.0): 9512 /mobx-react-lite@3.4.0(mobx@6.10.0)(react-dom@18.2.0)(react@18.2.0):
8788 resolution: {integrity: sha512-bRuZp3C0itgLKHu/VNxi66DN/XVkQG7xtoBVWxpvC5FhAqbOCP21+nPhULjnzEqd7xBMybp6KwytdUpZKEgpIQ==} 9513 resolution: {integrity: sha512-bRuZp3C0itgLKHu/VNxi66DN/XVkQG7xtoBVWxpvC5FhAqbOCP21+nPhULjnzEqd7xBMybp6KwytdUpZKEgpIQ==}
8789 peerDependencies: 9514 peerDependencies:
8790 mobx: ^6.1.0 9515 mobx: ^6.1.0
@@ -8797,12 +9522,12 @@ packages:
8797 react-native: 9522 react-native:
8798 optional: true 9523 optional: true
8799 dependencies: 9524 dependencies:
8800 mobx: 6.9.0 9525 mobx: 6.10.0
8801 react: 18.2.0 9526 react: 18.2.0
8802 react-dom: 18.2.0(react@18.2.0) 9527 react-dom: 18.2.0(react@18.2.0)
8803 dev: false 9528 dev: false
8804 9529
8805 /mobx-react@7.6.0(mobx@6.9.0)(react-dom@18.2.0)(react@18.2.0): 9530 /mobx-react@7.6.0(mobx@6.10.0)(react-dom@18.2.0)(react@18.2.0):
8806 resolution: {integrity: sha512-+HQUNuh7AoQ9ZnU6c4rvbiVVl+wEkb9WqYsVDzGLng+Dqj1XntHu79PvEWKtSMoMj67vFp/ZPXcElosuJO8ckA==} 9531 resolution: {integrity: sha512-+HQUNuh7AoQ9ZnU6c4rvbiVVl+wEkb9WqYsVDzGLng+Dqj1XntHu79PvEWKtSMoMj67vFp/ZPXcElosuJO8ckA==}
8807 peerDependencies: 9532 peerDependencies:
8808 mobx: ^6.1.0 9533 mobx: ^6.1.0
@@ -8815,14 +9540,14 @@ packages:
8815 react-native: 9540 react-native:
8816 optional: true 9541 optional: true
8817 dependencies: 9542 dependencies:
8818 mobx: 6.9.0 9543 mobx: 6.10.0
8819 mobx-react-lite: 3.4.0(mobx@6.9.0)(react-dom@18.2.0)(react@18.2.0) 9544 mobx-react-lite: 3.4.0(mobx@6.10.0)(react-dom@18.2.0)(react@18.2.0)
8820 react: 18.2.0 9545 react: 18.2.0
8821 react-dom: 18.2.0(react@18.2.0) 9546 react-dom: 18.2.0(react@18.2.0)
8822 dev: false 9547 dev: false
8823 9548
8824 /mobx@6.9.0: 9549 /mobx@6.10.0:
8825 resolution: {integrity: sha512-HdKewQEREEJgsWnErClfbFoVebze6rGazxFLU/XUyrII8dORfVszN1V0BMRnQSzcgsNNtkX8DHj3nC6cdWE9YQ==} 9550 resolution: {integrity: sha512-WMbVpCMFtolbB8swQ5E2YRrU+Yu8iLozCVx3CdGjbBKlP7dFiCSuiG06uea3JCFN5DnvtAX7+G5Bp82e2xu0ww==}
8826 dev: false 9551 dev: false
8827 9552
8828 /modify-filename@1.1.0: 9553 /modify-filename@1.1.0:
@@ -8909,7 +9634,7 @@ packages:
8909 resolution: {integrity: sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==} 9634 resolution: {integrity: sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==}
8910 engines: {node: '>=10'} 9635 engines: {node: '>=10'}
8911 dependencies: 9636 dependencies:
8912 semver: 7.5.1 9637 semver: 7.5.4
8913 dev: true 9638 dev: true
8914 9639
8915 /node-addon-api@1.7.2: 9640 /node-addon-api@1.7.2:
@@ -8931,7 +9656,7 @@ packages:
8931 /node-api-version@0.1.4: 9656 /node-api-version@0.1.4:
8932 resolution: {integrity: sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==} 9657 resolution: {integrity: sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==}
8933 dependencies: 9658 dependencies:
8934 semver: 7.5.1 9659 semver: 7.5.4
8935 dev: true 9660 dev: true
8936 9661
8937 /node-cookie@2.1.2: 9662 /node-cookie@2.1.2:
@@ -8984,7 +9709,7 @@ packages:
8984 nopt: 5.0.0 9709 nopt: 5.0.0
8985 npmlog: 6.0.2 9710 npmlog: 6.0.2
8986 rimraf: 3.0.2 9711 rimraf: 3.0.2
8987 semver: 7.5.1 9712 semver: 7.5.4
8988 tar: 6.1.15 9713 tar: 6.1.15
8989 which: 2.0.2 9714 which: 2.0.2
8990 transitivePeerDependencies: 9715 transitivePeerDependencies:
@@ -9005,7 +9730,7 @@ packages:
9005 nopt: 6.0.0 9730 nopt: 6.0.0
9006 npmlog: 6.0.2 9731 npmlog: 6.0.2
9007 rimraf: 3.0.2 9732 rimraf: 3.0.2
9008 semver: 7.5.1 9733 semver: 7.5.4
9009 tar: 6.1.15 9734 tar: 6.1.15
9010 which: 2.0.2 9735 which: 2.0.2
9011 transitivePeerDependencies: 9736 transitivePeerDependencies:
@@ -9027,6 +9752,10 @@ packages:
9027 dev: false 9752 dev: false
9028 optional: true 9753 optional: true
9029 9754
9755 /node-releases@2.0.13:
9756 resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
9757 dev: true
9758
9030 /node-releases@2.0.6: 9759 /node-releases@2.0.6:
9031 resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} 9760 resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==}
9032 dev: true 9761 dev: true
@@ -9075,7 +9804,7 @@ packages:
9075 dependencies: 9804 dependencies:
9076 hosted-git-info: 2.8.9 9805 hosted-git-info: 2.8.9
9077 resolve: 1.22.2 9806 resolve: 1.22.2
9078 semver: 5.7.1 9807 semver: 5.7.2
9079 validate-npm-package-license: 3.0.4 9808 validate-npm-package-license: 3.0.4
9080 dev: true 9809 dev: true
9081 9810
@@ -9084,8 +9813,8 @@ packages:
9084 engines: {node: '>=10'} 9813 engines: {node: '>=10'}
9085 dependencies: 9814 dependencies:
9086 hosted-git-info: 4.1.0 9815 hosted-git-info: 4.1.0
9087 is-core-module: 2.12.0 9816 is-core-module: 2.12.1
9088 semver: 7.5.1 9817 semver: 7.5.4
9089 validate-npm-package-license: 3.0.4 9818 validate-npm-package-license: 3.0.4
9090 dev: true 9819 dev: true
9091 9820
@@ -9108,6 +9837,13 @@ packages:
9108 dependencies: 9837 dependencies:
9109 path-key: 3.1.1 9838 path-key: 3.1.1
9110 9839
9840 /npm-run-path@5.1.0:
9841 resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
9842 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
9843 dependencies:
9844 path-key: 4.0.0
9845 dev: true
9846
9111 /npmlog@5.0.1: 9847 /npmlog@5.0.1:
9112 resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} 9848 resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
9113 dependencies: 9849 dependencies:
@@ -9143,8 +9879,8 @@ packages:
9143 kind-of: 3.2.2 9879 kind-of: 3.2.2
9144 dev: false 9880 dev: false
9145 9881
9146 /object-inspect@1.12.2: 9882 /object-inspect@1.12.3:
9147 resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} 9883 resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
9148 9884
9149 /object-is@1.1.5: 9885 /object-is@1.1.5:
9150 resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} 9886 resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==}
@@ -9170,7 +9906,7 @@ packages:
9170 engines: {node: '>= 0.4'} 9906 engines: {node: '>= 0.4'}
9171 dependencies: 9907 dependencies:
9172 call-bind: 1.0.2 9908 call-bind: 1.0.2
9173 define-properties: 1.1.4 9909 define-properties: 1.2.0
9174 has-symbols: 1.0.3 9910 has-symbols: 1.0.3
9175 object-keys: 1.1.1 9911 object-keys: 1.1.1
9176 dev: true 9912 dev: true
@@ -9191,7 +9927,7 @@ packages:
9191 dependencies: 9927 dependencies:
9192 call-bind: 1.0.2 9928 call-bind: 1.0.2
9193 define-properties: 1.2.0 9929 define-properties: 1.2.0
9194 es-abstract: 1.20.4 9930 es-abstract: 1.22.1
9195 dev: true 9931 dev: true
9196 9932
9197 /object.fromentries@2.0.6: 9933 /object.fromentries@2.0.6:
@@ -9200,14 +9936,14 @@ packages:
9200 dependencies: 9936 dependencies:
9201 call-bind: 1.0.2 9937 call-bind: 1.0.2
9202 define-properties: 1.2.0 9938 define-properties: 1.2.0
9203 es-abstract: 1.20.4 9939 es-abstract: 1.22.1
9204 dev: true 9940 dev: true
9205 9941
9206 /object.hasown@1.1.2: 9942 /object.hasown@1.1.2:
9207 resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} 9943 resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==}
9208 dependencies: 9944 dependencies:
9209 define-properties: 1.2.0 9945 define-properties: 1.2.0
9210 es-abstract: 1.20.4 9946 es-abstract: 1.22.1
9211 dev: true 9947 dev: true
9212 9948
9213 /object.map@1.0.1: 9949 /object.map@1.0.1:
@@ -9231,7 +9967,7 @@ packages:
9231 dependencies: 9967 dependencies:
9232 call-bind: 1.0.2 9968 call-bind: 1.0.2
9233 define-properties: 1.2.0 9969 define-properties: 1.2.0
9234 es-abstract: 1.20.4 9970 es-abstract: 1.22.1
9235 dev: true 9971 dev: true
9236 9972
9237 /on-finished@2.3.0: 9973 /on-finished@2.3.0:
@@ -9265,16 +10001,33 @@ packages:
9265 dependencies: 10001 dependencies:
9266 mimic-fn: 2.1.0 10002 mimic-fn: 2.1.0
9267 10003
9268 /optionator@0.9.1: 10004 /onetime@6.0.0:
9269 resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 10005 resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
10006 engines: {node: '>=12'}
10007 dependencies:
10008 mimic-fn: 4.0.0
10009 dev: true
10010
10011 /open@9.1.0:
10012 resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==}
10013 engines: {node: '>=14.16'}
10014 dependencies:
10015 default-browser: 4.0.0
10016 define-lazy-prop: 3.0.0
10017 is-inside-container: 1.0.0
10018 is-wsl: 2.2.0
10019 dev: true
10020
10021 /optionator@0.9.3:
10022 resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
9270 engines: {node: '>= 0.8.0'} 10023 engines: {node: '>= 0.8.0'}
9271 dependencies: 10024 dependencies:
10025 '@aashutoshrathi/word-wrap': 1.2.6
9272 deep-is: 0.1.4 10026 deep-is: 0.1.4
9273 fast-levenshtein: 2.0.6 10027 fast-levenshtein: 2.0.6
9274 levn: 0.4.1 10028 levn: 0.4.1
9275 prelude-ls: 1.2.1 10029 prelude-ls: 1.2.1
9276 type-check: 0.4.0 10030 type-check: 0.4.0
9277 word-wrap: 1.2.3
9278 dev: true 10031 dev: true
9279 10032
9280 /ora@5.4.1: 10033 /ora@5.4.1:
@@ -9367,7 +10120,7 @@ packages:
9367 resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 10120 resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
9368 engines: {node: '>=8'} 10121 engines: {node: '>=8'}
9369 dependencies: 10122 dependencies:
9370 '@babel/code-frame': 7.21.4 10123 '@babel/code-frame': 7.22.5
9371 error-ex: 1.3.2 10124 error-ex: 1.3.2
9372 json-parse-even-better-errors: 2.3.1 10125 json-parse-even-better-errors: 2.3.1
9373 lines-and-columns: 1.2.4 10126 lines-and-columns: 1.2.4
@@ -9410,6 +10163,11 @@ packages:
9410 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 10163 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
9411 engines: {node: '>=8'} 10164 engines: {node: '>=8'}
9412 10165
10166 /path-key@4.0.0:
10167 resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
10168 engines: {node: '>=12'}
10169 dev: true
10170
9413 /path-parse@1.0.7: 10171 /path-parse@1.0.7:
9414 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 10172 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
9415 10173
@@ -9491,6 +10249,16 @@ packages:
9491 safe-buffer: 5.2.1 10249 safe-buffer: 5.2.1
9492 dev: false 10250 dev: false
9493 10251
10252 /pify@2.3.0:
10253 resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
10254 engines: {node: '>=0.10.0'}
10255 dev: false
10256
10257 /pify@3.0.0:
10258 resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
10259 engines: {node: '>=4'}
10260 dev: false
10261
9494 /pify@4.0.1: 10262 /pify@4.0.1:
9495 resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 10263 resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
9496 engines: {node: '>=6'} 10264 engines: {node: '>=6'}
@@ -9501,6 +10269,18 @@ packages:
9501 engines: {node: '>=10'} 10269 engines: {node: '>=10'}
9502 dev: true 10270 dev: true
9503 10271
10272 /pinkie-promise@2.0.1:
10273 resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
10274 engines: {node: '>=0.10.0'}
10275 dependencies:
10276 pinkie: 2.0.4
10277 dev: false
10278
10279 /pinkie@2.0.4:
10280 resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
10281 engines: {node: '>=0.10.0'}
10282 dev: false
10283
9504 /pirates@4.0.5: 10284 /pirates@4.0.5:
9505 resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 10285 resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
9506 engines: {node: '>= 6'} 10286 engines: {node: '>= 6'}
@@ -9525,6 +10305,17 @@ packages:
9525 xmlbuilder: 15.1.1 10305 xmlbuilder: 15.1.1
9526 dev: true 10306 dev: true
9527 10307
10308 /plist@3.1.0:
10309 resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==}
10310 engines: {node: '>=10.4.0'}
10311 requiresBuild: true
10312 dependencies:
10313 '@xmldom/xmldom': 0.8.10
10314 base64-js: 1.5.1
10315 xmlbuilder: 15.1.1
10316 dev: true
10317 optional: true
10318
9528 /pluralize@8.0.0: 10319 /pluralize@8.0.0:
9529 resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 10320 resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
9530 engines: {node: '>=4'} 10321 engines: {node: '>=4'}
@@ -9548,13 +10339,21 @@ packages:
9548 resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 10339 resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
9549 engines: {node: '>=6.0.0'} 10340 engines: {node: '>=6.0.0'}
9550 dependencies: 10341 dependencies:
9551 fast-diff: 1.2.0 10342 fast-diff: 1.3.0
9552 dev: true 10343 dev: true
9553 10344
9554 /prettier@2.8.8: 10345 /prettier@2.8.8:
9555 resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 10346 resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
9556 engines: {node: '>=10.13.0'} 10347 engines: {node: '>=10.13.0'}
9557 hasBin: true 10348 hasBin: true
10349 requiresBuild: true
10350 dev: true
10351 optional: true
10352
10353 /prettier@3.0.0:
10354 resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==}
10355 engines: {node: '>=14'}
10356 hasBin: true
9558 dev: true 10357 dev: true
9559 10358
9560 /pretty-bytes@5.6.0: 10359 /pretty-bytes@5.6.0:
@@ -9571,6 +10370,15 @@ packages:
9571 react-is: 18.2.0 10370 react-is: 18.2.0
9572 dev: true 10371 dev: true
9573 10372
10373 /pretty-format@29.6.1:
10374 resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==}
10375 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
10376 dependencies:
10377 '@jest/schemas': 29.6.0
10378 ansi-styles: 5.2.0
10379 react-is: 18.2.0
10380 dev: true
10381
9574 /pretty-hrtime@1.0.3: 10382 /pretty-hrtime@1.0.3:
9575 resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} 10383 resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==}
9576 engines: {node: '>= 0.8'} 10384 engines: {node: '>= 0.8'}
@@ -9987,8 +10795,8 @@ packages:
9987 /react-electron-web-view@2.0.1(react-dom@18.2.0)(react@18.2.0): 10795 /react-electron-web-view@2.0.1(react-dom@18.2.0)(react@18.2.0):
9988 resolution: {integrity: sha512-C/mrvzvLzu/2j/ZFXkv1INNs7Sxv4EmySnAG/L24NRM8zW2Ij0aIbr0rNSLpg43RlAESKfM6TklMZu/UqPDFaA==} 10796 resolution: {integrity: sha512-C/mrvzvLzu/2j/ZFXkv1INNs7Sxv4EmySnAG/L24NRM8zW2Ij0aIbr0rNSLpg43RlAESKfM6TklMZu/UqPDFaA==}
9989 peerDependencies: 10797 peerDependencies:
9990 react: ^15.0.0 10798 react: ^15.0.0 || ^18.0.0
9991 react-dom: ^15.0.0 10799 react-dom: ^15.0.0 || ^18.0.0
9992 dependencies: 10800 dependencies:
9993 lodash.camelcase: 4.3.0 10801 lodash.camelcase: 4.3.0
9994 react: 18.2.0 10802 react: 18.2.0
@@ -10014,7 +10822,7 @@ packages:
10014 hoist-non-react-statics: 3.3.2 10822 hoist-non-react-statics: 3.3.2
10015 intl-messageformat: 10.5.0 10823 intl-messageformat: 10.5.0
10016 react: 18.2.0 10824 react: 18.2.0
10017 tslib: 2.5.3 10825 tslib: 2.6.0
10018 typescript: 5.0.4 10826 typescript: 5.0.4
10019 dev: false 10827 dev: false
10020 10828
@@ -10051,8 +10859,8 @@ packages:
10051 /react-loader@2.4.7(react-dom@18.2.0)(react@18.2.0): 10859 /react-loader@2.4.7(react-dom@18.2.0)(react@18.2.0):
10052 resolution: {integrity: sha512-pNW5xoSt0Q7HdmQh/EaIeeFbG0Ii74y6Le8gPdDyWyEFNgCiY1NcreQxMioQGjQ4Jo4EenQGKN/qMbxW+dpZkQ==} 10860 resolution: {integrity: sha512-pNW5xoSt0Q7HdmQh/EaIeeFbG0Ii74y6Le8gPdDyWyEFNgCiY1NcreQxMioQGjQ4Jo4EenQGKN/qMbxW+dpZkQ==}
10053 peerDependencies: 10861 peerDependencies:
10054 react: ^0.14.0 || ^15.0.0 || ^16.0.0 10862 react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^18.0.0
10055 react-dom: ^0.14.0 || ^15.0.0 || ^16.0.0 10863 react-dom: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^18.0.0
10056 dependencies: 10864 dependencies:
10057 create-react-class: 15.7.0 10865 create-react-class: 15.7.0
10058 prop-types: 15.8.1 10866 prop-types: 15.8.1
@@ -10076,26 +10884,26 @@ packages:
10076 warning: 4.0.3 10884 warning: 4.0.3
10077 dev: false 10885 dev: false
10078 10886
10079 /react-router-dom@6.4.2(react-dom@18.2.0)(react@18.2.0): 10887 /react-router-dom@6.11.2(react-dom@18.2.0)(react@18.2.0):
10080 resolution: {integrity: sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==} 10888 resolution: {integrity: sha512-JNbKtAeh1VSJQnH6RvBDNhxNwemRj7KxCzc5jb7zvDSKRnPWIFj9pO+eXqjM69gQJ0r46hSz1x4l9y0651DKWw==}
10081 engines: {node: '>=14'} 10889 engines: {node: '>=14'}
10082 peerDependencies: 10890 peerDependencies:
10083 react: '>=16.8' 10891 react: '>=16.8'
10084 react-dom: '>=16.8' 10892 react-dom: '>=16.8'
10085 dependencies: 10893 dependencies:
10086 '@remix-run/router': 1.0.2 10894 '@remix-run/router': 1.6.2
10087 react: 18.2.0 10895 react: 18.2.0
10088 react-dom: 18.2.0(react@18.2.0) 10896 react-dom: 18.2.0(react@18.2.0)
10089 react-router: 6.4.2(react@18.2.0) 10897 react-router: 6.11.2(react@18.2.0)
10090 dev: false 10898 dev: false
10091 10899
10092 /react-router@6.4.2(react@18.2.0): 10900 /react-router@6.11.2(react@18.2.0):
10093 resolution: {integrity: sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==} 10901 resolution: {integrity: sha512-74z9xUSaSX07t3LM+pS6Un0T55ibUE/79CzfZpy5wsPDZaea1F8QkrsiyRnA2YQ7LwE/umaydzXZV80iDCPkMg==}
10094 engines: {node: '>=14'} 10902 engines: {node: '>=14'}
10095 peerDependencies: 10903 peerDependencies:
10096 react: '>=16.8' 10904 react: '>=16.8'
10097 dependencies: 10905 dependencies:
10098 '@remix-run/router': 1.0.2 10906 '@remix-run/router': 1.6.2
10099 react: 18.2.0 10907 react: 18.2.0
10100 dev: false 10908 dev: false
10101 10909
@@ -10103,8 +10911,8 @@ packages:
10103 resolution: {integrity: sha512-JZUw7hBsAHXK7PTyErJyI7SopSBFRcFHDjWW5SWjcugY0i6iH7f+eJkY8cJmGMlZ1C9xz1J3Vjz0plFpavVeRg==} 10911 resolution: {integrity: sha512-JZUw7hBsAHXK7PTyErJyI7SopSBFRcFHDjWW5SWjcugY0i6iH7f+eJkY8cJmGMlZ1C9xz1J3Vjz0plFpavVeRg==}
10104 peerDependencies: 10912 peerDependencies:
10105 prop-types: ^15.5.7 10913 prop-types: ^15.5.7
10106 react: ^16.3.0 || ^17.0.0 10914 react: ^16.3.0 || ^17.0.0 || ^18.0.0
10107 react-dom: ^16.3.0 || ^17.0.0 10915 react-dom: ^16.3.0 || ^17.0.0 || ^18.0.0
10108 dependencies: 10916 dependencies:
10109 '@babel/runtime': 7.20.1 10917 '@babel/runtime': 7.20.1
10110 invariant: 2.2.4 10918 invariant: 2.2.4
@@ -10113,17 +10921,16 @@ packages:
10113 react-dom: 18.2.0(react@18.2.0) 10921 react-dom: 18.2.0(react@18.2.0)
10114 dev: false 10922 dev: false
10115 10923
10116 /react-tooltip@4.5.1(react-dom@18.2.0)(react@18.2.0): 10924 /react-tooltip@5.13.1(react-dom@18.2.0)(react@18.2.0):
10117 resolution: {integrity: sha512-Zo+CSFUGXar1uV+bgXFFDe7VeS2iByeIp5rTgTcc2HqtuOS5D76QapejNNfx320MCY91TlhTQat36KGFTqgcvw==} 10925 resolution: {integrity: sha512-9NstDFdjyy6cIH9zjeT70zXTHlW/TIGCOWQmhkAyqLFeQioLg1FXvb9ec7AxSpn0zyFUkFSLdFYxZRuewti3Aw==}
10118 engines: {npm: '>=6.13'}
10119 peerDependencies: 10926 peerDependencies:
10120 react: '>=16.0.0' 10927 react: '>=16.14.0'
10121 react-dom: '>=16.0.0' 10928 react-dom: '>=16.14.0'
10122 dependencies: 10929 dependencies:
10123 prop-types: 15.8.1 10930 '@floating-ui/dom': 1.4.5
10931 classnames: 2.3.2
10124 react: 18.2.0 10932 react: 18.2.0
10125 react-dom: 18.2.0(react@18.2.0) 10933 react-dom: 18.2.0(react@18.2.0)
10126 uuid: 7.0.3
10127 dev: false 10934 dev: false
10128 10935
10129 /react-topbar-progress-indicator@4.1.1(react@18.2.0): 10936 /react-topbar-progress-indicator@4.1.1(react@18.2.0):
@@ -10135,19 +10942,18 @@ packages:
10135 topbar: 0.1.4 10942 topbar: 0.1.4
10136 dev: false 10943 dev: false
10137 10944
10138 /react-transition-group@1.2.1(react-dom@18.2.0)(react@18.2.0): 10945 /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0):
10139 resolution: {integrity: sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==} 10946 resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
10140 peerDependencies: 10947 peerDependencies:
10141 react: ^15.0.0 || ^16.0.0 10948 react: '>=16.6.0'
10142 react-dom: ^15.0.0 || ^16.0.0 10949 react-dom: '>=16.6.0'
10143 dependencies: 10950 dependencies:
10144 chain-function: 1.0.1 10951 '@babel/runtime': 7.21.5
10145 dom-helpers: 3.4.0 10952 dom-helpers: 5.2.1
10146 loose-envify: 1.4.0 10953 loose-envify: 1.4.0
10147 prop-types: 15.8.1 10954 prop-types: 15.8.1
10148 react: 18.2.0 10955 react: 18.2.0
10149 react-dom: 18.2.0(react@18.2.0) 10956 react-dom: 18.2.0(react@18.2.0)
10150 warning: 3.0.0
10151 dev: false 10957 dev: false
10152 10958
10153 /react-window@1.8.8(react-dom@18.2.0)(react@18.2.0): 10959 /react-window@1.8.8(react-dom@18.2.0)(react@18.2.0):
@@ -10291,6 +11097,13 @@ packages:
10291 strip-indent: 3.0.0 11097 strip-indent: 3.0.0
10292 dev: true 11098 dev: true
10293 11099
11100 /refa@0.11.0:
11101 resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==}
11102 engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
11103 dependencies:
11104 '@eslint-community/regexpp': 4.6.0
11105 dev: true
11106
10294 /regenerator-runtime@0.13.11: 11107 /regenerator-runtime@0.13.11:
10295 resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 11108 resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
10296 11109
@@ -10302,22 +11115,35 @@ packages:
10302 safe-regex: 1.1.0 11115 safe-regex: 1.1.0
10303 dev: false 11116 dev: false
10304 11117
10305 /regexp-tree@0.1.24: 11118 /regexp-ast-analysis@0.6.0:
10306 resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} 11119 resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==}
11120 engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
11121 dependencies:
11122 '@eslint-community/regexpp': 4.6.0
11123 refa: 0.11.0
11124 dev: true
11125
11126 /regexp-tree@0.1.27:
11127 resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
10307 hasBin: true 11128 hasBin: true
10308 dev: true 11129 dev: true
10309 11130
10310 /regexp.prototype.flags@1.4.3: 11131 /regexp.prototype.flags@1.5.0:
10311 resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 11132 resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==}
10312 engines: {node: '>= 0.4'} 11133 engines: {node: '>= 0.4'}
10313 dependencies: 11134 dependencies:
10314 call-bind: 1.0.2 11135 call-bind: 1.0.2
10315 define-properties: 1.1.4 11136 define-properties: 1.2.0
10316 functions-have-names: 1.2.3 11137 functions-have-names: 1.2.3
10317 dev: true 11138 dev: true
10318 11139
10319 /regjsparser@0.9.1: 11140 /regexpp@3.2.0:
10320 resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} 11141 resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
11142 engines: {node: '>=8'}
11143 dev: true
11144
11145 /regjsparser@0.10.0:
11146 resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==}
10321 hasBin: true 11147 hasBin: true
10322 dependencies: 11148 dependencies:
10323 jsesc: 0.5.0 11149 jsesc: 0.5.0
@@ -10471,7 +11297,7 @@ packages:
10471 resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 11297 resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
10472 hasBin: true 11298 hasBin: true
10473 dependencies: 11299 dependencies:
10474 is-core-module: 2.12.0 11300 is-core-module: 2.12.1
10475 path-parse: 1.0.7 11301 path-parse: 1.0.7
10476 supports-preserve-symlinks-flag: 1.0.0 11302 supports-preserve-symlinks-flag: 1.0.0
10477 11303
@@ -10479,7 +11305,7 @@ packages:
10479 resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} 11305 resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
10480 hasBin: true 11306 hasBin: true
10481 dependencies: 11307 dependencies:
10482 is-core-module: 2.12.0 11308 is-core-module: 2.12.1
10483 path-parse: 1.0.7 11309 path-parse: 1.0.7
10484 supports-preserve-symlinks-flag: 1.0.0 11310 supports-preserve-symlinks-flag: 1.0.0
10485 dev: true 11311 dev: true
@@ -10511,13 +11337,6 @@ packages:
10511 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 11337 engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
10512 dev: true 11338 dev: true
10513 11339
10514 /rimraf@2.7.1:
10515 resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
10516 hasBin: true
10517 dependencies:
10518 glob: 7.2.3
10519 dev: false
10520
10521 /rimraf@3.0.2: 11340 /rimraf@3.0.2:
10522 resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 11341 resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
10523 hasBin: true 11342 hasBin: true
@@ -10553,6 +11372,13 @@ packages:
10553 engines: {node: '>= 0.9'} 11372 engines: {node: '>= 0.9'}
10554 dev: false 11373 dev: false
10555 11374
11375 /run-applescript@5.0.0:
11376 resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==}
11377 engines: {node: '>=12'}
11378 dependencies:
11379 execa: 5.1.1
11380 dev: true
11381
10556 /run-async@2.4.1: 11382 /run-async@2.4.1:
10557 resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} 11383 resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
10558 engines: {node: '>=0.12.0'} 11384 engines: {node: '>=0.12.0'}
@@ -10574,7 +11400,17 @@ packages:
10574 /rxjs@7.8.1: 11400 /rxjs@7.8.1:
10575 resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} 11401 resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
10576 dependencies: 11402 dependencies:
10577 tslib: 2.5.3 11403 tslib: 2.6.0
11404
11405 /safe-array-concat@1.0.0:
11406 resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==}
11407 engines: {node: '>=0.4'}
11408 dependencies:
11409 call-bind: 1.0.2
11410 get-intrinsic: 1.2.1
11411 has-symbols: 1.0.3
11412 isarray: 2.0.5
11413 dev: true
10578 11414
10579 /safe-buffer@5.1.2: 11415 /safe-buffer@5.1.2:
10580 resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 11416 resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
@@ -10590,7 +11426,7 @@ packages:
10590 resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 11426 resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
10591 dependencies: 11427 dependencies:
10592 call-bind: 1.0.2 11428 call-bind: 1.0.2
10593 get-intrinsic: 1.2.0 11429 get-intrinsic: 1.2.1
10594 is-regex: 1.1.4 11430 is-regex: 1.1.4
10595 dev: true 11431 dev: true
10596 11432
@@ -10600,12 +11436,6 @@ packages:
10600 ret: 0.1.15 11436 ret: 0.1.15
10601 dev: false 11437 dev: false
10602 11438
10603 /safe-regex@2.1.1:
10604 resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==}
10605 dependencies:
10606 regexp-tree: 0.1.24
10607 dev: true
10608
10609 /safe-stable-stringify@2.4.1: 11439 /safe-stable-stringify@2.4.1:
10610 resolution: {integrity: sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==} 11440 resolution: {integrity: sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==}
10611 engines: {node: '>=10'} 11441 engines: {node: '>=10'}
@@ -10619,13 +11449,13 @@ packages:
10619 dependencies: 11449 dependencies:
10620 truncate-utf8-bytes: 1.0.2 11450 truncate-utf8-bytes: 1.0.2
10621 11451
10622 /sass@1.62.1: 11452 /sass@1.64.0:
10623 resolution: {integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==} 11453 resolution: {integrity: sha512-m7YtAGmQta9uANIUJwXesAJMSncqH+3INc8kdVXs6eV6GUC8Qu2IYKQSN8PRLgiQfpca697G94klm2leYMxSHw==}
10624 engines: {node: '>=14.0.0'} 11454 engines: {node: '>=14.0.0'}
10625 hasBin: true 11455 hasBin: true
10626 dependencies: 11456 dependencies:
10627 chokidar: 3.5.3 11457 chokidar: 3.5.3
10628 immutable: 4.3.0 11458 immutable: 4.3.1
10629 source-map-js: 1.0.2 11459 source-map-js: 1.0.2
10630 dev: true 11460 dev: true
10631 11461
@@ -10642,10 +11472,25 @@ packages:
10642 resolution: {integrity: sha512-FaHoAk75AYhT+rnBmMpkvHSIcQma4OHzYXOhn1XXtgNomi0FTV8YEXYuh2EIdCg5IKMVyFbXeJT4Cn96+fzABg==} 11472 resolution: {integrity: sha512-FaHoAk75AYhT+rnBmMpkvHSIcQma4OHzYXOhn1XXtgNomi0FTV8YEXYuh2EIdCg5IKMVyFbXeJT4Cn96+fzABg==}
10643 dev: false 11473 dev: false
10644 11474
11475 /scslre@0.2.0:
11476 resolution: {integrity: sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==}
11477 dependencies:
11478 '@eslint-community/regexpp': 4.6.0
11479 refa: 0.11.0
11480 regexp-ast-analysis: 0.6.0
11481 dev: true
11482
11483 /seek-bzip@1.0.6:
11484 resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==}
11485 hasBin: true
11486 dependencies:
11487 commander: 2.20.3
11488 dev: false
11489
10645 /semver-closest@0.1.2: 11490 /semver-closest@0.1.2:
10646 resolution: {integrity: sha512-Q6qk0bPNlK5zG62mWFC8L0Qc6OJX76XRWxiPgZyrh98IZTL3HPErgUlPfCyrAPsHVpU+YP4lf5Mz+LzpId91Og==} 11491 resolution: {integrity: sha512-Q6qk0bPNlK5zG62mWFC8L0Qc6OJX76XRWxiPgZyrh98IZTL3HPErgUlPfCyrAPsHVpU+YP4lf5Mz+LzpId91Og==}
10647 dependencies: 11492 dependencies:
10648 semver: 5.7.1 11493 semver: 5.7.2
10649 dev: false 11494 dev: false
10650 11495
10651 /semver-compare@1.0.0: 11496 /semver-compare@1.0.0:
@@ -10660,26 +11505,36 @@ packages:
10660 /semver@5.7.1: 11505 /semver@5.7.1:
10661 resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 11506 resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
10662 hasBin: true 11507 hasBin: true
11508 dev: false
11509
11510 /semver@5.7.2:
11511 resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
11512 hasBin: true
10663 11513
10664 /semver@6.3.0: 11514 /semver@6.3.0:
10665 resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 11515 resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
10666 hasBin: true 11516 hasBin: true
11517 dev: true
11518
11519 /semver@6.3.1:
11520 resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
11521 hasBin: true
10667 11522
10668 /semver@7.0.0: 11523 /semver@7.0.0:
10669 resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} 11524 resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==}
10670 hasBin: true 11525 hasBin: true
10671 dev: true 11526 dev: true
10672 11527
10673 /semver@7.5.0: 11528 /semver@7.5.2:
10674 resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} 11529 resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==}
10675 engines: {node: '>=10'} 11530 engines: {node: '>=10'}
10676 hasBin: true 11531 hasBin: true
10677 dependencies: 11532 dependencies:
10678 lru-cache: 6.0.0 11533 lru-cache: 6.0.0
10679 dev: true 11534 dev: true
10680 11535
10681 /semver@7.5.1: 11536 /semver@7.5.4:
10682 resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} 11537 resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
10683 engines: {node: '>=10'} 11538 engines: {node: '>=10'}
10684 hasBin: true 11539 hasBin: true
10685 dependencies: 11540 dependencies:
@@ -10784,10 +11639,6 @@ packages:
10784 is-plain-object: 2.0.4 11639 is-plain-object: 2.0.4
10785 dev: false 11640 dev: false
10786 11641
10787 /setimmediate@1.0.5:
10788 resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
10789 dev: false
10790
10791 /setprototypeof@1.1.0: 11642 /setprototypeof@1.1.0:
10792 resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} 11643 resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==}
10793 dev: false 11644 dev: false
@@ -10856,8 +11707,8 @@ packages:
10856 resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 11707 resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
10857 dependencies: 11708 dependencies:
10858 call-bind: 1.0.2 11709 call-bind: 1.0.2
10859 get-intrinsic: 1.1.3 11710 get-intrinsic: 1.2.1
10860 object-inspect: 1.12.2 11711 object-inspect: 1.12.3
10861 11712
10862 /signal-exit@3.0.7: 11713 /signal-exit@3.0.7:
10863 resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 11714 resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@@ -10880,8 +11731,8 @@ packages:
10880 scmp: 2.0.0 11731 scmp: 2.0.0
10881 dev: false 11732 dev: false
10882 11733
10883 /simple-git@3.19.0: 11734 /simple-git@3.19.1:
10884 resolution: {integrity: sha512-hyH2p9Ptxjf/xPuL7HfXbpYt9gKhC1yWDh3KYIAYJJePAKV7AEjLN4xhp7lozOdNiaJ9jlVvAbBymVlcS2jRiA==} 11735 resolution: {integrity: sha512-Ck+rcjVaE1HotraRAS8u/+xgTvToTuoMkT9/l9lvuP5jftwnYUp6DwuJzsKErHgfyRk8IB8pqGHWEbM3tLgV1w==}
10885 dependencies: 11736 dependencies:
10886 '@kwsites/file-exists': 1.1.1 11737 '@kwsites/file-exists': 1.1.1
10887 '@kwsites/promise-deferred': 1.1.1 11738 '@kwsites/promise-deferred': 1.1.1
@@ -11233,7 +12084,7 @@ packages:
11233 dependencies: 12084 dependencies:
11234 eastasianwidth: 0.2.0 12085 eastasianwidth: 0.2.0
11235 emoji-regex: 9.2.2 12086 emoji-regex: 9.2.2
11236 strip-ansi: 7.0.1 12087 strip-ansi: 7.1.0
11237 dev: true 12088 dev: true
11238 12089
11239 /string.prototype.matchall@4.0.8: 12090 /string.prototype.matchall@4.0.8:
@@ -11241,28 +12092,37 @@ packages:
11241 dependencies: 12092 dependencies:
11242 call-bind: 1.0.2 12093 call-bind: 1.0.2
11243 define-properties: 1.2.0 12094 define-properties: 1.2.0
11244 es-abstract: 1.20.4 12095 es-abstract: 1.22.1
11245 get-intrinsic: 1.2.0 12096 get-intrinsic: 1.2.1
11246 has-symbols: 1.0.3 12097 has-symbols: 1.0.3
11247 internal-slot: 1.0.3 12098 internal-slot: 1.0.5
11248 regexp.prototype.flags: 1.4.3 12099 regexp.prototype.flags: 1.5.0
11249 side-channel: 1.0.4 12100 side-channel: 1.0.4
11250 dev: true 12101 dev: true
11251 12102
12103 /string.prototype.trim@1.2.7:
12104 resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==}
12105 engines: {node: '>= 0.4'}
12106 dependencies:
12107 call-bind: 1.0.2
12108 define-properties: 1.2.0
12109 es-abstract: 1.22.1
12110 dev: true
12111
11252 /string.prototype.trimend@1.0.6: 12112 /string.prototype.trimend@1.0.6:
11253 resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 12113 resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
11254 dependencies: 12114 dependencies:
11255 call-bind: 1.0.2 12115 call-bind: 1.0.2
11256 define-properties: 1.1.4 12116 define-properties: 1.2.0
11257 es-abstract: 1.20.4 12117 es-abstract: 1.22.1
11258 dev: true 12118 dev: true
11259 12119
11260 /string.prototype.trimstart@1.0.6: 12120 /string.prototype.trimstart@1.0.6:
11261 resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 12121 resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
11262 dependencies: 12122 dependencies:
11263 call-bind: 1.0.2 12123 call-bind: 1.0.2
11264 define-properties: 1.1.4 12124 define-properties: 1.2.0
11265 es-abstract: 1.20.4 12125 es-abstract: 1.22.1
11266 dev: true 12126 dev: true
11267 12127
11268 /string_decoder@0.10.31: 12128 /string_decoder@0.10.31:
@@ -11292,8 +12152,8 @@ packages:
11292 dependencies: 12152 dependencies:
11293 ansi-regex: 5.0.1 12153 ansi-regex: 5.0.1
11294 12154
11295 /strip-ansi@7.0.1: 12155 /strip-ansi@7.1.0:
11296 resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} 12156 resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
11297 engines: {node: '>=12'} 12157 engines: {node: '>=12'}
11298 dependencies: 12158 dependencies:
11299 ansi-regex: 6.0.1 12159 ansi-regex: 6.0.1
@@ -11314,10 +12174,21 @@ packages:
11314 engines: {node: '>=0.10.0'} 12174 engines: {node: '>=0.10.0'}
11315 dev: false 12175 dev: false
11316 12176
12177 /strip-dirs@2.1.0:
12178 resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==}
12179 dependencies:
12180 is-natural-number: 4.0.1
12181 dev: false
12182
11317 /strip-final-newline@2.0.0: 12183 /strip-final-newline@2.0.0:
11318 resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 12184 resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
11319 engines: {node: '>=6'} 12185 engines: {node: '>=6'}
11320 12186
12187 /strip-final-newline@3.0.0:
12188 resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
12189 engines: {node: '>=12'}
12190 dev: true
12191
11321 /strip-indent@3.0.0: 12192 /strip-indent@3.0.0:
11322 resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 12193 resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
11323 engines: {node: '>=8'} 12194 engines: {node: '>=8'}
@@ -11373,12 +12244,33 @@ packages:
11373 engines: {node: '>=0.10.0'} 12244 engines: {node: '>=0.10.0'}
11374 dev: false 12245 dev: false
11375 12246
12247 /synckit@0.8.5:
12248 resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==}
12249 engines: {node: ^14.18.0 || >=16.0.0}
12250 dependencies:
12251 '@pkgr/utils': 2.4.2
12252 tslib: 2.6.0
12253 dev: true
12254
11376 /syntax-error@1.4.0: 12255 /syntax-error@1.4.0:
11377 resolution: {integrity: sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==} 12256 resolution: {integrity: sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==}
11378 dependencies: 12257 dependencies:
11379 acorn-node: 1.8.2 12258 acorn-node: 1.8.2
11380 dev: false 12259 dev: false
11381 12260
12261 /tar-stream@1.6.2:
12262 resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==}
12263 engines: {node: '>= 0.8.0'}
12264 dependencies:
12265 bl: 1.2.3
12266 buffer-alloc: 1.2.0
12267 end-of-stream: 1.4.4
12268 fs-constants: 1.0.0
12269 readable-stream: 2.3.8
12270 to-buffer: 1.1.1
12271 xtend: 4.0.2
12272 dev: false
12273
11382 /tar@6.1.15: 12274 /tar@6.1.15:
11383 resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} 12275 resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==}
11384 engines: {node: '>=10'} 12276 engines: {node: '>=10'}
@@ -11501,6 +12393,11 @@ packages:
11501 resolution: {integrity: sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==} 12393 resolution: {integrity: sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==}
11502 dev: false 12394 dev: false
11503 12395
12396 /titleize@3.0.0:
12397 resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
12398 engines: {node: '>=12'}
12399 dev: true
12400
11504 /tmp-promise@3.0.3: 12401 /tmp-promise@3.0.3:
11505 resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} 12402 resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==}
11506 dependencies: 12403 dependencies:
@@ -11524,6 +12421,10 @@ packages:
11524 resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} 12421 resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
11525 dev: true 12422 dev: true
11526 12423
12424 /to-buffer@1.1.1:
12425 resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==}
12426 dev: false
12427
11527 /to-fast-properties@2.0.0: 12428 /to-fast-properties@2.0.0:
11528 resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 12429 resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
11529 engines: {node: '>=4'} 12430 engines: {node: '>=4'}
@@ -11588,10 +12489,6 @@ packages:
11588 /tr46@0.0.3: 12489 /tr46@0.0.3:
11589 resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 12490 resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
11590 12491
11591 /traverse@0.3.9:
11592 resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==}
11593 dev: false
11594
11595 /tree-kill@1.2.2: 12492 /tree-kill@1.2.2:
11596 resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 12493 resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
11597 hasBin: true 12494 hasBin: true
@@ -11611,6 +12508,15 @@ packages:
11611 dependencies: 12508 dependencies:
11612 utf8-byte-length: 1.0.4 12509 utf8-byte-length: 1.0.4
11613 12510
12511 /ts-api-utils@1.0.1(typescript@5.0.4):
12512 resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==}
12513 engines: {node: '>=16.13.0'}
12514 peerDependencies:
12515 typescript: '>=4.2.0'
12516 dependencies:
12517 typescript: 5.0.4
12518 dev: true
12519
11614 /ts-node@10.9.1(@types/node@18.15.3)(typescript@5.0.4): 12520 /ts-node@10.9.1(@types/node@18.15.3)(typescript@5.0.4):
11615 resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} 12521 resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
11616 hasBin: true 12522 hasBin: true
@@ -11631,7 +12537,7 @@ packages:
11631 '@tsconfig/node14': 1.0.3 12537 '@tsconfig/node14': 1.0.3
11632 '@tsconfig/node16': 1.0.4 12538 '@tsconfig/node16': 1.0.4
11633 '@types/node': 18.15.3 12539 '@types/node': 18.15.3
11634 acorn: 8.8.2 12540 acorn: 8.10.0
11635 acorn-walk: 8.2.0 12541 acorn-walk: 8.2.0
11636 arg: 4.1.3 12542 arg: 4.1.3
11637 create-require: 1.1.1 12543 create-require: 1.1.1
@@ -11658,8 +12564,8 @@ packages:
11658 resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} 12564 resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
11659 dev: true 12565 dev: true
11660 12566
11661 /tslib@2.5.3: 12567 /tslib@2.6.0:
11662 resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} 12568 resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==}
11663 12569
11664 /tsscmp@1.0.6: 12570 /tsscmp@1.0.6:
11665 resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} 12571 resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
@@ -11753,6 +12659,44 @@ packages:
11753 resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} 12659 resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
11754 dev: false 12660 dev: false
11755 12661
12662 /typed-array-buffer@1.0.0:
12663 resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
12664 engines: {node: '>= 0.4'}
12665 dependencies:
12666 call-bind: 1.0.2
12667 get-intrinsic: 1.2.1
12668 is-typed-array: 1.1.12
12669 dev: true
12670
12671 /typed-array-byte-length@1.0.0:
12672 resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
12673 engines: {node: '>= 0.4'}
12674 dependencies:
12675 call-bind: 1.0.2
12676 for-each: 0.3.3
12677 has-proto: 1.0.1
12678 is-typed-array: 1.1.12
12679 dev: true
12680
12681 /typed-array-byte-offset@1.0.0:
12682 resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
12683 engines: {node: '>= 0.4'}
12684 dependencies:
12685 available-typed-arrays: 1.0.5
12686 call-bind: 1.0.2
12687 for-each: 0.3.3
12688 has-proto: 1.0.1
12689 is-typed-array: 1.1.12
12690 dev: true
12691
12692 /typed-array-length@1.0.4:
12693 resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
12694 dependencies:
12695 call-bind: 1.0.2
12696 for-each: 0.3.3
12697 is-typed-array: 1.1.12
12698 dev: true
12699
11756 /typed-emitter@2.1.0: 12700 /typed-emitter@2.1.0:
11757 resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==} 12701 resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==}
11758 optionalDependencies: 12702 optionalDependencies:
@@ -11786,6 +12730,13 @@ packages:
11786 which-boxed-primitive: 1.0.2 12730 which-boxed-primitive: 1.0.2
11787 dev: true 12731 dev: true
11788 12732
12733 /unbzip2-stream@1.4.3:
12734 resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==}
12735 dependencies:
12736 buffer: 5.7.1
12737 through: 2.3.8
12738 dev: false
12739
11789 /unc-path-regex@0.1.2: 12740 /unc-path-regex@0.1.2:
11790 resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} 12741 resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==}
11791 engines: {node: '>=0.10.0'} 12742 engines: {node: '>=0.10.0'}
@@ -11859,6 +12810,11 @@ packages:
11859 engines: {node: '>=4'} 12810 engines: {node: '>=4'}
11860 dev: false 12811 dev: false
11861 12812
12813 /untildify@4.0.0:
12814 resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
12815 engines: {node: '>=8'}
12816 dev: true
12817
11862 /unused-filename@2.1.0: 12818 /unused-filename@2.1.0:
11863 resolution: {integrity: sha512-BMiNwJbuWmqCpAM1FqxCTD7lXF97AvfQC8Kr/DIeA6VtvhJaMDupZ82+inbjl5yVP44PcxOuCSxye1QMS0wZyg==} 12819 resolution: {integrity: sha512-BMiNwJbuWmqCpAM1FqxCTD7lXF97AvfQC8Kr/DIeA6VtvhJaMDupZ82+inbjl5yVP44PcxOuCSxye1QMS0wZyg==}
11864 engines: {node: '>=8'} 12820 engines: {node: '>=8'}
@@ -11867,21 +12823,6 @@ packages:
11867 path-exists: 4.0.0 12823 path-exists: 4.0.0
11868 dev: false 12824 dev: false
11869 12825
11870 /unzipper@0.10.11:
11871 resolution: {integrity: sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==}
11872 dependencies:
11873 big-integer: 1.6.51
11874 binary: 0.3.0
11875 bluebird: 3.4.7
11876 buffer-indexof-polyfill: 1.0.2
11877 duplexer2: 0.1.4
11878 fstream: 1.0.12
11879 graceful-fs: 4.2.11
11880 listenercount: 1.0.1
11881 readable-stream: 2.3.8
11882 setimmediate: 1.0.5
11883 dev: false
11884
11885 /upcast@2.1.2: 12826 /upcast@2.1.2:
11886 resolution: {integrity: sha512-c+ueM175OVWv9vr1SYA3rI1ao0bxq6Y7l6u5Sac25Hi0yWz9Lz341zt9/sVOa5+7lYcvHMb0xxaacFy/2lVF2w==} 12827 resolution: {integrity: sha512-c+ueM175OVWv9vr1SYA3rI1ao0bxq6Y7l6u5Sac25Hi0yWz9Lz341zt9/sVOa5+7lYcvHMb0xxaacFy/2lVF2w==}
11887 engines: {node: '>4'} 12828 engines: {node: '>4'}
@@ -11900,6 +12841,17 @@ packages:
11900 picocolors: 1.0.0 12841 picocolors: 1.0.0
11901 dev: true 12842 dev: true
11902 12843
12844 /update-browserslist-db@1.0.11(browserslist@4.21.10):
12845 resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
12846 hasBin: true
12847 peerDependencies:
12848 browserslist: '>= 4.21.0'
12849 dependencies:
12850 browserslist: 4.21.10
12851 escalade: 3.1.1
12852 picocolors: 1.0.0
12853 dev: true
12854
11903 /uri-js@4.4.1: 12855 /uri-js@4.4.1:
11904 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 12856 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
11905 dependencies: 12857 dependencies:
@@ -11945,11 +12897,6 @@ packages:
11945 hasBin: true 12897 hasBin: true
11946 dev: false 12898 dev: false
11947 12899
11948 /uuid@7.0.3:
11949 resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==}
11950 hasBin: true
11951 dev: false
11952
11953 /uuid@8.3.2: 12900 /uuid@8.3.2:
11954 resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 12901 resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
11955 hasBin: true 12902 hasBin: true
@@ -12054,12 +13001,6 @@ packages:
12054 engines: {node: '>=0.10.0'} 13001 engines: {node: '>=0.10.0'}
12055 dev: false 13002 dev: false
12056 13003
12057 /warning@3.0.0:
12058 resolution: {integrity: sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==}
12059 dependencies:
12060 loose-envify: 1.4.0
12061 dev: false
12062
12063 /warning@4.0.3: 13004 /warning@4.0.3:
12064 resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} 13005 resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==}
12065 dependencies: 13006 dependencies:
@@ -12118,8 +13059,8 @@ packages:
12118 resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} 13059 resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
12119 dev: true 13060 dev: true
12120 13061
12121 /which-typed-array@1.1.9: 13062 /which-typed-array@1.1.11:
12122 resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} 13063 resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
12123 engines: {node: '>= 0.4'} 13064 engines: {node: '>= 0.4'}
12124 dependencies: 13065 dependencies:
12125 available-typed-arrays: 1.0.5 13066 available-typed-arrays: 1.0.5
@@ -12127,7 +13068,6 @@ packages:
12127 for-each: 0.3.3 13068 for-each: 0.3.3
12128 gopd: 1.0.1 13069 gopd: 1.0.1
12129 has-tostringtag: 1.0.0 13070 has-tostringtag: 1.0.0
12130 is-typed-array: 1.1.10
12131 dev: true 13071 dev: true
12132 13072
12133 /which@1.3.1: 13073 /which@1.3.1:
@@ -12195,11 +13135,6 @@ packages:
12195 winston-transport: 4.5.0 13135 winston-transport: 4.5.0
12196 dev: false 13136 dev: false
12197 13137
12198 /word-wrap@1.2.3:
12199 resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
12200 engines: {node: '>=0.10.0'}
12201 dev: true
12202
12203 /wrap-ansi@6.2.0: 13138 /wrap-ansi@6.2.0:
12204 resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 13139 resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
12205 engines: {node: '>=8'} 13140 engines: {node: '>=8'}
@@ -12224,7 +13159,7 @@ packages:
12224 dependencies: 13159 dependencies:
12225 ansi-styles: 6.2.1 13160 ansi-styles: 6.2.1
12226 string-width: 5.1.2 13161 string-width: 5.1.2
12227 strip-ansi: 7.0.1 13162 strip-ansi: 7.1.0
12228 dev: true 13163 dev: true
12229 13164
12230 /wrappy@1.0.2: 13165 /wrappy@1.0.2:
@@ -12288,6 +13223,10 @@ packages:
12288 resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} 13223 resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
12289 dev: false 13224 dev: false
12290 13225
13226 /yallist@3.1.1:
13227 resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
13228 dev: true
13229
12291 /yallist@4.0.0: 13230 /yallist@4.0.0:
12292 resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 13231 resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
12293 13232
diff --git a/recipes b/recipes
Subproject b21abf5ec30c35773890382869ee9d9ab8f4ace Subproject 7c985caee07f9ff5e916004623017c453f26f0a
diff --git a/scripts/add-crowdin-contributors.ts b/scripts/add-crowdin-contributors.ts
index 242d338ce..217de8cef 100644
--- a/scripts/add-crowdin-contributors.ts
+++ b/scripts/add-crowdin-contributors.ts
@@ -1,5 +1,5 @@
1import fs from 'fs-extra'; 1import fs from 'fs-extra';
2import path from 'path'; 2import path from 'node:path';
3import allContributors from 'all-contributors-cli'; 3import allContributors from 'all-contributors-cli';
4 4
5/** 5/**
@@ -53,7 +53,7 @@ console.log(JSON.stringify(members));
53 * 5. Regenerate the README table using the CLI ('all-contributors generate') 53 * 5. Regenerate the README table using the CLI ('all-contributors generate')
54 * Please check if the generated data is ok and no data is lost. 54 * Please check if the generated data is ok and no data is lost.
55*/ 55*/
56const list: any[] = [ 56const list: { name: string; login: string; avatar_url: string }[] = [
57 { 57 {
58 name: 'vantezzen_', 58 name: 'vantezzen_',
59 login: 'vantezzen_', 59 login: 'vantezzen_',
@@ -1064,21 +1064,27 @@ const list: any[] = [
1064 }, 1064 },
1065]; 1065];
1066 1066
1067const infoPath = path.join(__dirname, '..', '.all-contributorsrc'); 1067const allContributorsFile = path.join(__dirname, '..', '.all-contributorsrc');
1068const info = fs.readJSONSync(infoPath); 1068const allContributorsJSON = fs.readJSONSync(allContributorsFile);
1069for (const user of list) {
1070 if (user.login) {
1071 info.contributors = allContributors.addContributorWithDetails({
1072 ...user,
1073 contributions: ['translation'],
1074 profile: `https://crowdin.com/profile/${user.login}`,
1075 options: {
1076 contributors: info.contributors,
1077 },
1078 });
1079 }
1080}
1081 1069
1082fs.writeJSONSync(infoPath, info, { 1070// eslint-disable-next-line unicorn/prefer-top-level-await
1083 spaces: 2, 1071(async () => {
1084}); 1072 allContributorsJSON.contributors = await Promise.all(
1073 list
1074 .filter(user => user.login)
1075 .map(user => {
1076 return allContributors.addContributorWithDetails({
1077 ...user,
1078 contributions: ['translation'],
1079 profile: `https://crowdin.com/profile/${user.login}`,
1080 options: {
1081 contributors: allContributorsJSON.contributors,
1082 },
1083 });
1084 }),
1085 );
1086
1087 fs.writeJSONSync(allContributorsFile, allContributorsJSON, {
1088 spaces: 2,
1089 });
1090})();
diff --git a/scripts/link-readme.ts b/scripts/link-readme.ts
index d80739178..47440f699 100644
--- a/scripts/link-readme.ts
+++ b/scripts/link-readme.ts
@@ -7,7 +7,7 @@
7 */ 7 */
8 8
9import fs from 'fs-extra'; 9import fs from 'fs-extra';
10import path from 'path'; 10import path from 'node:path';
11 11
12console.log('Linking issues and PRs in README.md'); 12console.log('Linking issues and PRs in README.md');
13 13
diff --git a/src/@types/ferdium.types.ts b/src/@types/ferdium.types.ts
index 70306f5fb..f54fb64ae 100644
--- a/src/@types/ferdium.types.ts
+++ b/src/@types/ferdium.types.ts
@@ -3,6 +3,7 @@ declare global {
3 ferdium: any; 3 ferdium: any;
4 } 4 }
5 5
6 // eslint-disable-next-line @typescript-eslint/no-namespace
6 namespace NodeJS { 7 namespace NodeJS {
7 interface ProcessEnv { 8 interface ProcessEnv {
8 GITHUB_AUTH_TOKEN: string; 9 GITHUB_AUTH_TOKEN: string;
diff --git a/src/@types/kebab-case.d.ts b/src/@types/kebab-case.d.ts
deleted file mode 100644
index 712405ac0..000000000
--- a/src/@types/kebab-case.d.ts
+++ /dev/null
@@ -1 +0,0 @@
1declare module 'kebab-case';
diff --git a/src/@types/mobx-form.types.ts b/src/@types/mobx-form.types.ts
index 07234a47a..aa274b9db 100644
--- a/src/@types/mobx-form.types.ts
+++ b/src/@types/mobx-form.types.ts
@@ -1,17 +1,17 @@
1import { File } from 'electron-dl';
2import { ChangeEventHandler, FocusEventHandler } from 'react'; 1import { ChangeEventHandler, FocusEventHandler } from 'react';
3import { GlobalError } from './ferdium-components.types'; 2import { GlobalError } from './ferdium-components.types';
4 3
5export interface FormFieldOptions { 4interface SelectOptions {
6 value?: string;
7 label?: string;
8 disabled?: boolean; 5 disabled?: boolean;
6 label?: string;
7 value?: string;
9} 8}
10 9
11export interface FormFields { 10interface Listeners {
12 fields: { 11 onChange?: ChangeEventHandler<HTMLInputElement | HTMLSelectElement>;
13 [key: string]: Field; 12 onBlur?: FocusEventHandler<HTMLElement>;
14 }; 13 onFocus?: FocusEventHandler<HTMLElement>;
14 onDrop?: (file: File) => void;
15} 15}
16 16
17export interface Field extends Listeners { 17export interface Field extends Listeners {
@@ -29,16 +29,8 @@ export interface Field extends Listeners {
29 set?: (value: any) => void; 29 set?: (value: any) => void;
30 [key: string]: any; 30 [key: string]: any;
31} 31}
32 32export interface FormFields {
33export interface SelectOptions { 33 fields: {
34 disabled?: boolean; 34 [key: string]: Field;
35 label?: string; 35 };
36 value?: string;
37}
38
39export interface Listeners {
40 onChange?: ChangeEventHandler<HTMLInputElement | HTMLSelectElement>;
41 onBlur?: FocusEventHandler<HTMLElement>;
42 onFocus?: FocusEventHandler<HTMLElement>;
43 onDrop?: (file: File) => void;
44} 36}
diff --git a/src/@types/mobx-react-form.d.ts b/src/@types/mobx-react-form.d.ts
deleted file mode 100644
index 4e19dc1c2..000000000
--- a/src/@types/mobx-react-form.d.ts
+++ /dev/null
@@ -1 +0,0 @@
1declare module 'mobx-react-form';
diff --git a/src/@types/stores.types.ts b/src/@types/stores.types.ts
index edea41ea9..dc5da563f 100644
--- a/src/@types/stores.types.ts
+++ b/src/@types/stores.types.ts
@@ -1,3 +1,4 @@
1/* eslint-disable no-use-before-define */
1import Workspace from '../features/workspaces/models/Workspace'; 2import Workspace from '../features/workspaces/models/Workspace';
2import Recipe from '../models/Recipe'; 3import Recipe from '../models/Recipe';
3import Service from '../models/Service'; 4import Service from '../models/Service';
@@ -59,6 +60,7 @@ interface Actions {
59interface Api { 60interface Api {
60 app: AppStore; 61 app: AppStore;
61 features: FeaturesStore; 62 features: FeaturesStore;
63 // eslint-disable-next-line @typescript-eslint/ban-types
62 local: {}; 64 local: {};
63 recipePreviews: RecipePreviewsStore; 65 recipePreviews: RecipePreviewsStore;
64 recipes: RecipeStore; 66 recipes: RecipeStore;
@@ -200,7 +202,7 @@ interface RouterStore {
200 replace: () => void; 202 replace: () => void;
201} 203}
202 204
203export interface ServicesStore extends TypedStore { 205interface ServicesStore extends TypedStore {
204 clearCacheRequest: () => void; 206 clearCacheRequest: () => void;
205 createServiceRequest: CachedRequest; 207 createServiceRequest: CachedRequest;
206 deleteServiceRequest: () => void; 208 deleteServiceRequest: () => void;
@@ -226,7 +228,7 @@ interface ISettings {
226 [key: string]: any; 228 [key: string]: any;
227} 229}
228 230
229export interface SettingsStore extends TypedStore { 231interface SettingsStore extends TypedStore {
230 update: (value: any) => void; 232 update: (value: any) => void;
231 remove: (value: any) => void; 233 remove: (value: any) => void;
232 fileSystemSettingsTypes: any[]; 234 fileSystemSettingsTypes: any[];
@@ -287,7 +289,7 @@ interface UIStore extends TypedStore {
287 theme: () => void; 289 theme: () => void;
288} 290}
289 291
290export interface UserStore extends TypedStore { 292interface UserStore extends TypedStore {
291 BASE_ROUTE: '/auth'; 293 BASE_ROUTE: '/auth';
292 CHANGE_SERVER_ROUTE: '/auth/server'; 294 CHANGE_SERVER_ROUTE: '/auth/server';
293 IMPORT_ROUTE: '/auth/signup/import'; 295 IMPORT_ROUTE: '/auth/signup/import';
@@ -337,7 +339,7 @@ export interface UserStore extends TypedStore {
337 team: () => void; 339 team: () => void;
338} 340}
339 341
340export interface WorkspacesStore extends TypedStore { 342interface WorkspacesStore extends TypedStore {
341 activeWorkspace: () => void; 343 activeWorkspace: () => void;
342 delete: ({ workspace }) => void; 344 delete: ({ workspace }) => void;
343 update: ({ workspace }) => void; 345 update: ({ workspace }) => void;
diff --git a/src/actions/index.ts b/src/actions/index.ts
index 983afa64b..5297a7a7b 100644
--- a/src/actions/index.ts
+++ b/src/actions/index.ts
@@ -10,7 +10,7 @@ import user from './user';
10import settings from './settings'; 10import settings from './settings';
11import requests from './requests'; 11import requests from './requests';
12import workspaces from '../features/workspaces/actions'; 12import workspaces from '../features/workspaces/actions';
13import todos from '../features/todos/actions'; 13import { todoActions } from '../features/todos/actions';
14 14
15const actions = { 15const actions = {
16 service, 16 service,
@@ -26,5 +26,5 @@ const actions = {
26export default Object.assign( 26export default Object.assign(
27 defineActions(actions, PropTypes.checkPropTypes), 27 defineActions(actions, PropTypes.checkPropTypes),
28 { workspaces }, 28 { workspaces },
29 { todos }, 29 { todos: todoActions },
30); 30);
diff --git a/src/actions/lib/actions.ts b/src/actions/lib/actions.ts
index faf576fd8..d3fd5f27c 100644
--- a/src/actions/lib/actions.ts
+++ b/src/actions/lib/actions.ts
@@ -8,6 +8,7 @@ export interface Actions {
8 [key: string]: { 8 [key: string]: {
9 [key: string]: { 9 [key: string]: {
10 (...args: any[]): void; 10 (...args: any[]): void;
11 // eslint-disable-next-line @typescript-eslint/ban-types
11 listeners: Function[]; 12 listeners: Function[];
12 notify: (params: any) => void; 13 notify: (params: any) => void;
13 listen: (listener: (params: any) => void) => void; 14 listen: (listener: (params: any) => void) => void;
diff --git a/src/api/UserApi.ts b/src/api/UserApi.ts
index 31c8acead..2b319207a 100644
--- a/src/api/UserApi.ts
+++ b/src/api/UserApi.ts
@@ -1,4 +1,4 @@
1import { BinaryLike } from 'crypto'; 1import { BinaryLike } from 'node:crypto';
2import { hash } from '../helpers/password-helpers'; 2import { hash } from '../helpers/password-helpers';
3 3
4export default class UserApi { 4export default class UserApi {
diff --git a/src/api/apiBase.ts b/src/api/apiBase.ts
index bc2cb3dd1..649895fbc 100644
--- a/src/api/apiBase.ts
+++ b/src/api/apiBase.ts
@@ -14,12 +14,7 @@ import { fixUrl } from '../helpers/url-helpers';
14 14
15// Note: This cannot be used from the internal-server since we are not running within the context of a browser window 15// Note: This cannot be used from the internal-server since we are not running within the context of a browser window
16export default function apiBase(withVersion = true) { 16export default function apiBase(withVersion = true) {
17 if ( 17 if (!(window as any).ferdium?.stores.settings?.all?.app.server) {
18 !(window as any).ferdium ||
19 !(window as any).ferdium.stores.settings ||
20 !(window as any).ferdium.stores.settings.all ||
21 !(window as any).ferdium.stores.settings.all.app.server
22 ) {
23 // Stores have not yet been loaded - return SERVER_NOT_LOADED to force a retry when stores are loaded 18 // Stores have not yet been loaded - return SERVER_NOT_LOADED to force a retry when stores are loaded
24 return SERVER_NOT_LOADED; 19 return SERVER_NOT_LOADED;
25 } 20 }
diff --git a/src/api/server/LocalApi.ts b/src/api/server/LocalApi.ts
index a292bc42d..6764816f9 100644
--- a/src/api/server/LocalApi.ts
+++ b/src/api/server/LocalApi.ts
@@ -1,4 +1,4 @@
1import { ExecException } from 'child_process'; 1import { ExecException } from 'node:child_process';
2import { ipcRenderer } from 'electron'; 2import { ipcRenderer } from 'electron';
3import fastFolderSize from 'fast-folder-size'; 3import fastFolderSize from 'fast-folder-size';
4 4
diff --git a/src/api/server/ServerApi.ts b/src/api/server/ServerApi.ts
index a3d873c65..7b17fcdcd 100644
--- a/src/api/server/ServerApi.ts
+++ b/src/api/server/ServerApi.ts
@@ -1,6 +1,6 @@
1/* eslint-disable import/no-import-module-exports */ 1/* eslint-disable import/no-import-module-exports */
2/* eslint-disable global-require */ 2/* eslint-disable global-require */
3import { join } from 'path'; 3import { join } from 'node:path';
4import tar from 'tar'; 4import tar from 'tar';
5import { 5import {
6 readdirSync, 6 readdirSync,
@@ -15,8 +15,8 @@ import {
15} from 'fs-extra'; 15} from 'fs-extra';
16 16
17import ServiceModel from '../../models/Service'; 17import ServiceModel from '../../models/Service';
18import RecipePreviewModel from '../../models/RecipePreview'; 18import RecipePreviewModel, { IRecipePreview } from '../../models/RecipePreview';
19import RecipeModel from '../../models/Recipe'; 19import RecipeModel, { IRecipe } from '../../models/Recipe';
20import UserModel from '../../models/User'; 20import UserModel from '../../models/User';
21 21
22import sleep from '../../helpers/async-helpers'; 22import sleep from '../../helpers/async-helpers';
@@ -44,9 +44,9 @@ const debug = require('../../preload-safe-debug')('Ferdium:ServerApi');
44module.paths.unshift(getDevRecipeDirectory(), getRecipeDirectory()); 44module.paths.unshift(getDevRecipeDirectory(), getRecipeDirectory());
45 45
46export default class ServerApi { 46export default class ServerApi {
47 recipePreviews: any[] = []; 47 recipePreviews: IRecipePreview[] = [];
48 48
49 recipes: any[] = []; 49 recipes: IRecipe[] = [];
50 50
51 // User 51 // User
52 async login(email: string, passwordHash: string) { 52 async login(email: string, passwordHash: string) {
@@ -55,7 +55,9 @@ export default class ServerApi {
55 { 55 {
56 method: 'POST', 56 method: 'POST',
57 headers: { 57 headers: {
58 Authorization: `Basic ${window.btoa(`${email}:${passwordHash}`)}`, 58 Authorization: `Basic ${Buffer.from(
59 `${email}:${passwordHash}`,
60 ).toString('base64')}`,
59 }, 61 },
60 }, 62 },
61 false, 63 false,
@@ -346,6 +348,7 @@ export default class ServerApi {
346 }) 348 })
347 .filter(recipe => recipe.id); 349 .filter(recipe => recipe.id);
348 350
351 // @ts-expect-error Type 'boolean' is not assignable to type 'ConcatArray<IRecipe>'.
349 // eslint-disable-next-line unicorn/prefer-spread 352 // eslint-disable-next-line unicorn/prefer-spread
350 this.recipes = this.recipes.concat(this._getDevRecipes()); 353 this.recipes = this.recipes.concat(this._getDevRecipes());
351 354
@@ -507,7 +510,7 @@ export default class ServerApi {
507 async _mapServiceModels(services: any[]) { 510 async _mapServiceModels(services: any[]) {
508 const recipes = services.map((s: { recipeId: string }) => s.recipeId); 511 const recipes = services.map((s: { recipeId: string }) => s.recipeId);
509 await this._bulkRecipeCheck(recipes); 512 await this._bulkRecipeCheck(recipes);
510 /* eslint-disable no-return-await */ 513
511 return Promise.all( 514 return Promise.all(
512 services.map(async (service: any) => this._prepareServiceModel(service)), 515 services.map(async (service: any) => this._prepareServiceModel(service)),
513 ); 516 );
@@ -515,9 +518,8 @@ export default class ServerApi {
515 } 518 }
516 519
517 async _prepareServiceModel(service: { recipeId: string }) { 520 async _prepareServiceModel(service: { recipeId: string }) {
518 let recipe: undefined;
519 try { 521 try {
520 recipe = this.recipes.find(r => r.id === service.recipeId); 522 const recipe = this.recipes.find(r => r.id === service.recipeId);
521 523
522 if (!recipe) { 524 if (!recipe) {
523 console.warn(`Recipe ${service.recipeId} not loaded`); 525 console.warn(`Recipe ${service.recipeId} not loaded`);
@@ -531,11 +533,10 @@ export default class ServerApi {
531 } 533 }
532 } 534 }
533 535
534 async _bulkRecipeCheck(unfilteredRecipes: any[]) { 536 async _bulkRecipeCheck(unfilteredRecipes: string[]) {
535 // Filter recipe duplicates as we don't need to download 3 Slack recipes 537 // Filter recipe duplicates as we don't need to download 3 Slack recipes
536 const recipes = unfilteredRecipes.filter( 538 const recipes = unfilteredRecipes.filter(
537 (elem: any, pos: number, arr: string | any[]) => 539 (elem: string, pos: number, arr: string[]) => arr.indexOf(elem) === pos,
538 arr.indexOf(elem) === pos,
539 ); 540 );
540 541
541 return Promise.all( 542 return Promise.all(
@@ -565,7 +566,7 @@ export default class ServerApi {
565 ).catch(error => console.error("Can't load recipe", error)); 566 ).catch(error => console.error("Can't load recipe", error));
566 } 567 }
567 568
568 _mapRecipePreviewModel(recipes: any[]) { 569 _mapRecipePreviewModel(recipes: IRecipePreview[]) {
569 return recipes 570 return recipes
570 .map(recipe => { 571 .map(recipe => {
571 try { 572 try {
@@ -575,7 +576,7 @@ export default class ServerApi {
575 return null; 576 return null;
576 } 577 }
577 }) 578 })
578 .filter(recipe => recipe !== null); 579 .filter(Boolean);
579 } 580 }
580 581
581 _getDevRecipes() { 582 _getDevRecipes() {
@@ -589,15 +590,14 @@ export default class ServerApi {
589 590
590 const recipes = paths 591 const recipes = paths
591 .map(id => { 592 .map(id => {
592 let Recipe;
593 try { 593 try {
594 // eslint-disable-next-line import/no-dynamic-require 594 // eslint-disable-next-line import/no-dynamic-require
595 Recipe = require(id)(RecipeModel); 595 const Recipe = require(id)(RecipeModel);
596
596 return new Recipe(loadRecipeConfig(id)); 597 return new Recipe(loadRecipeConfig(id));
597 } catch (error) { 598 } catch (error) {
598 console.error(error); 599 console.error(error);
599 } 600 }
600
601 return false; 601 return false;
602 }) 602 })
603 .filter(recipe => recipe.id) 603 .filter(recipe => recipe.id)
diff --git a/src/app.tsx b/src/app.tsx
index 4d4100c40..77ec27021 100644
--- a/src/app.tsx
+++ b/src/app.tsx
@@ -24,7 +24,7 @@ window.addEventListener('load', () => {
24 const api = apiFactory(serverApi, new LocalApi()); 24 const api = apiFactory(serverApi, new LocalApi());
25 const history = createHashHistory(); 25 const history = createHashHistory();
26 const router = new RouterStore(history); 26 const router = new RouterStore(history);
27 // @ts-ignore - Need to provide proper typings for actions 27 // @ts-expect-error - Need to provide proper typings for actions
28 const stores = storeFactory(api, actions, router); 28 const stores = storeFactory(api, actions, router);
29 const menu = new MenuFactory(stores, actions); 29 const menu = new MenuFactory(stores, actions);
30 const touchBar = new TouchBarFactory(stores, actions); 30 const touchBar = new TouchBarFactory(stores, actions);
diff --git a/src/components/AppUpdateInfoBar.tsx b/src/components/AppUpdateInfoBar.tsx
index b27578d10..b8e1bb61e 100644
--- a/src/components/AppUpdateInfoBar.tsx
+++ b/src/components/AppUpdateInfoBar.tsx
@@ -38,6 +38,7 @@ const AppUpdateInfoBar = (props: IProps) => {
38 type="primary" 38 type="primary"
39 ctaLabel={intl.formatMessage(messages.buttonInstallUpdate)} 39 ctaLabel={intl.formatMessage(messages.buttonInstallUpdate)}
40 onClick={event => { 40 onClick={event => {
41 // eslint-disable-next-line @typescript-eslint/no-unused-expressions
41 !isWinPortable && onInstallUpdate(event); 42 !isWinPortable && onInstallUpdate(event);
42 }} 43 }}
43 onHide={onHide} 44 onHide={onHide}
diff --git a/src/components/auth/Invite.tsx b/src/components/auth/Invite.tsx
index 4f2cb19fe..0d39d861a 100644
--- a/src/components/auth/Invite.tsx
+++ b/src/components/auth/Invite.tsx
@@ -86,8 +86,7 @@ class Invite extends Component<IProps, IState> {
86 }, 86 },
87 }, 87 },
88 }), 88 }),
89 // TODO: [TS DEBT] need to fix this type once mobx-react-form is updated to next version 89 ],
90 ] as any,
91 }, 90 },
92 }); 91 });
93 } 92 }
diff --git a/src/components/auth/Login.tsx b/src/components/auth/Login.tsx
index 0a95b0565..cf7abe654 100644
--- a/src/components/auth/Login.tsx
+++ b/src/components/auth/Login.tsx
@@ -68,7 +68,6 @@ interface IProps extends WrappedComponentProps {
68 isTokenExpired: boolean; 68 isTokenExpired: boolean;
69 isServerLogout: boolean; 69 isServerLogout: boolean;
70 signupRoute: string; 70 signupRoute: string;
71 // eslint-disable-next-line react/no-unused-prop-types
72 passwordRoute: string; // TODO: Uncomment this line after fixing password recovery in-app 71 passwordRoute: string; // TODO: Uncomment this line after fixing password recovery in-app
73 error: GlobalError; 72 error: GlobalError;
74} 73}
@@ -100,7 +99,7 @@ class Login extends Component<IProps> {
100 submit(e: FormEvent<HTMLFormElement>): void { 99 submit(e: FormEvent<HTMLFormElement>): void {
101 e.preventDefault(); 100 e.preventDefault();
102 this.form.submit({ 101 this.form.submit({
103 onSuccess: form => { 102 onSuccess: (form: Form) => {
104 this.props.onSubmit(form.values()); 103 this.props.onSubmit(form.values());
105 }, 104 },
106 onError: noop, 105 onError: noop,
diff --git a/src/components/auth/Welcome.tsx b/src/components/auth/Welcome.tsx
index 1aa8da4d6..259e3c335 100644
--- a/src/components/auth/Welcome.tsx
+++ b/src/components/auth/Welcome.tsx
@@ -44,10 +44,6 @@ interface IProps extends Partial<StoresProps>, WrappedComponentProps {
44@inject('actions') 44@inject('actions')
45@observer 45@observer
46class Welcome extends Component<IProps> { 46class Welcome extends Component<IProps> {
47 constructor(props: IProps) {
48 super(props);
49 }
50
51 useLocalServer(): void { 47 useLocalServer(): void {
52 serverlessLogin(this.props.actions); 48 serverlessLogin(this.props.actions);
53 } 49 }
@@ -95,6 +91,7 @@ class Welcome extends Component<IProps> {
95 className="settings__hr-sections" 91 className="settings__hr-sections"
96 style={{ marginTop: 24, marginBottom: 24, borderStyle: 'solid' }} 92 style={{ marginTop: 24, marginBottom: 24, borderStyle: 'solid' }}
97 /> 93 />
94 {/* eslint-disable-next-line react/button-has-type */}
98 <button 95 <button
99 className="button" 96 className="button"
100 onClick={this.useLocalServer.bind(this)} 97 onClick={this.useLocalServer.bind(this)}
diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx
index fac424477..6fd911a24 100644
--- a/src/components/layout/Sidebar.tsx
+++ b/src/components/layout/Sidebar.tsx
@@ -1,5 +1,5 @@
1import { Component } from 'react'; 1import { Component } from 'react';
2import ReactTooltip from 'react-tooltip'; 2import { Tooltip as ReactTooltip } from 'react-tooltip';
3import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 3import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
4import { inject, observer } from 'mobx-react'; 4import { inject, observer } from 'mobx-react';
5import { 5import {
@@ -80,6 +80,7 @@ interface IProps extends WrappedComponentProps {
80 showServiceNameSetting: boolean; 80 showServiceNameSetting: boolean;
81 showMessageBadgesEvenWhenMuted: boolean; 81 showMessageBadgesEvenWhenMuted: boolean;
82 isAppMuted: boolean; 82 isAppMuted: boolean;
83 // eslint-disable-next-line react/no-unused-prop-types
83 isMenuCollapsed: boolean; 84 isMenuCollapsed: boolean;
84 isWorkspaceDrawerOpen: boolean; 85 isWorkspaceDrawerOpen: boolean;
85 isTodosServiceActive: boolean; 86 isTodosServiceActive: boolean;
@@ -90,6 +91,7 @@ interface IProps extends WrappedComponentProps {
90 toggleCollapseMenu: () => void; 91 toggleCollapseMenu: () => void;
91 toggleWorkspaceDrawer: () => void; 92 toggleWorkspaceDrawer: () => void;
92 openSettings: (args: { path: string }) => void; 93 openSettings: (args: { path: string }) => void;
94 // eslint-disable-next-line react/no-unused-prop-types
93 closeSettings: () => void; 95 closeSettings: () => void;
94 setActive: (args: { serviceId: string }) => void; 96 setActive: (args: { serviceId: string }) => void;
95 reorder: (args: { oldIndex: number; newIndex: number }) => void; 97 reorder: (args: { oldIndex: number; newIndex: number }) => void;
@@ -123,10 +125,6 @@ class Sidebar extends Component<IProps, IState> {
123 }; 125 };
124 } 126 }
125 127
126 componentDidUpdate() {
127 ReactTooltip.rebuild();
128 }
129
130 enableToolTip() { 128 enableToolTip() {
131 this.setState({ tooltipEnabled: true }); 129 this.setState({ tooltipEnabled: true });
132 } 130 }
@@ -209,136 +207,146 @@ class Sidebar extends Component<IProps, IState> {
209 hibernateService={this.props.hibernateService} 207 hibernateService={this.props.hibernateService}
210 wakeUpService={this.props.wakeUpService} 208 wakeUpService={this.props.wakeUpService}
211 /> 209 />
212 <> 210 {numberActiveButtons <= 1 || hideCollapseButton ? null : (
213 {numberActiveButtons <= 1 || hideCollapseButton ? null : ( 211 <button
214 <button 212 type="button"
215 type="button" 213 onClick={() => toggleCollapseMenu()}
216 onClick={() => toggleCollapseMenu()} 214 className="sidebar__button sidebar__button--hamburger-menu"
217 className="sidebar__button sidebar__button--hamburger-menu" 215 >
218 > 216 {isMenuCollapsed ? <Icon icon={mdiMenu} size={1.5} /> : null}
219 {isMenuCollapsed ? <Icon icon={mdiMenu} size={1.5} /> : null}
220 217
221 {!isMenuCollapsed && !useHorizontalStyle ? ( 218 {!isMenuCollapsed && !useHorizontalStyle ? (
222 <Icon icon={mdiChevronDown} size={1.5} /> 219 <Icon icon={mdiChevronDown} size={1.5} />
223 ) : null} 220 ) : null}
224 221
225 {!isMenuCollapsed && useHorizontalStyle ? ( 222 {!isMenuCollapsed && useHorizontalStyle ? (
226 <Icon icon={mdiChevronRight} size={1.5} /> 223 <Icon icon={mdiChevronRight} size={1.5} />
227 ) : null} 224 ) : null}
228 </button> 225 </button>
229 )} 226 )}
230 {!hideRecipesButton && !isMenuCollapsed ? ( 227 {!hideRecipesButton && !isMenuCollapsed ? (
231 <button 228 <button
232 type="button" 229 type="button"
233 onClick={() => openSettings({ path: 'recipes' })} 230 onClick={() => openSettings({ path: 'recipes' })}
234 className="sidebar__button sidebar__button--new-service" 231 className="sidebar__button sidebar__button--new-service"
235 data-tip={`${intl.formatMessage( 232 data-tooltip-id="tooltip-sidebar-button"
236 messages.addNewService, 233 data-tooltip-content={`${intl.formatMessage(
237 )} (${addNewServiceShortcutKey(false)})`} 234 messages.addNewService,
238 > 235 )} (${addNewServiceShortcutKey(false)})`}
239 <Icon icon={mdiPlusBox} size={1.5} /> 236 >
240 </button> 237 <Icon icon={mdiPlusBox} size={1.5} />
241 ) : null} 238 </button>
242 {!hideSplitModeButton && !isMenuCollapsed ? ( 239 ) : null}
243 <button 240 {!hideSplitModeButton && !isMenuCollapsed ? (
244 type="button" 241 <button
245 onClick={() => { 242 type="button"
246 actions!.settings.update({ 243 onClick={() => {
247 type: 'app', 244 actions!.settings.update({
248 data: { 245 type: 'app',
249 splitMode: !splitMode, 246 data: {
250 }, 247 splitMode: !splitMode,
251 }); 248 },
252 }} 249 });
253 className="sidebar__button sidebar__button--split-mode-toggle" 250 }}
254 data-tip={`${intl.formatMessage( 251 className="sidebar__button sidebar__button--split-mode-toggle"
255 messages.splitModeToggle, 252 data-tooltip-id="tooltip-sidebar-button"
256 )} (${splitModeToggleShortcutKey(false)})`} 253 data-tooltip-content={`${intl.formatMessage(
257 > 254 messages.splitModeToggle,
258 <Icon icon={mdiViewSplitVertical} size={1.5} /> 255 )} (${splitModeToggleShortcutKey(false)})`}
259 </button> 256 >
260 ) : null} 257 <Icon icon={mdiViewSplitVertical} size={1.5} />
261 {!hideWorkspacesButton && !isMenuCollapsed ? ( 258 </button>
262 <button 259 ) : null}
263 type="button" 260 {!hideWorkspacesButton && !isMenuCollapsed ? (
264 onClick={() => { 261 <button
265 toggleWorkspaceDrawer(); 262 type="button"
266 this.updateToolTip(); 263 onClick={() => {
267 }} 264 toggleWorkspaceDrawer();
268 className={`sidebar__button sidebar__button--workspaces ${ 265 this.updateToolTip();
269 isWorkspaceDrawerOpen ? 'is-active' : '' 266 }}
270 }`} 267 className={`sidebar__button sidebar__button--workspaces ${
271 data-tip={`${intl.formatMessage( 268 isWorkspaceDrawerOpen ? 'is-active' : ''
272 workspaceToggleMessage, 269 }`}
273 )} (${workspaceToggleShortcutKey(false)})`} 270 data-tooltip-id="tooltip-sidebar-button"
274 > 271 data-tooltip-content={`${intl.formatMessage(
275 <Icon icon={mdiViewGrid} size={1.5} /> 272 workspaceToggleMessage,
276 </button> 273 )} (${workspaceToggleShortcutKey(false)})`}
277 ) : null} 274 >
278 {!hideNotificationsButton && !isMenuCollapsed ? ( 275 <Icon icon={mdiViewGrid} size={1.5} />
279 <button 276 </button>
280 type="button" 277 ) : null}
281 onClick={() => { 278 {!hideNotificationsButton && !isMenuCollapsed ? (
282 toggleMuteApp(); 279 <button
283 this.updateToolTip(); 280 type="button"
284 }} 281 onClick={() => {
285 className={`sidebar__button sidebar__button--audio ${ 282 toggleMuteApp();
286 isAppMuted ? 'is-muted' : '' 283 this.updateToolTip();
287 }`} 284 }}
288 data-tip={`${intl.formatMessage( 285 className={`sidebar__button sidebar__button--audio ${
289 isAppMuted ? messages.unmute : messages.mute, 286 isAppMuted ? 'is-muted' : ''
290 )} (${muteFerdiumShortcutKey(false)})`} 287 }`}
291 > 288 data-tooltip-id="tooltip-sidebar-button"
292 <Icon icon={isAppMuted ? mdiBellOff : mdiBell} size={1.5} /> 289 data-tooltip-content={`${intl.formatMessage(
293 </button> 290 isAppMuted ? messages.unmute : messages.mute,
294 ) : null} 291 )} (${muteFerdiumShortcutKey(false)})`}
295 {todosStore.isFeatureEnabledByUser && !isMenuCollapsed ? ( 292 >
296 <button 293 <Icon icon={isAppMuted ? mdiBellOff : mdiBell} size={1.5} />
297 type="button" 294 </button>
298 onClick={() => { 295 ) : null}
299 todoActions.toggleTodosPanel(); 296 {todosStore.isFeatureEnabledByUser && !isMenuCollapsed ? (
300 this.updateToolTip(); 297 <button
301 }} 298 type="button"
302 disabled={isTodosServiceActive} 299 onClick={() => {
303 className={`sidebar__button sidebar__button--todos ${ 300 todoActions.toggleTodosPanel();
304 todosStore.isTodosPanelVisible ? 'is-active' : '' 301 this.updateToolTip();
305 }`} 302 }}
306 data-tip={`${intl.formatMessage( 303 disabled={isTodosServiceActive}
307 todosToggleMessage, 304 className={`sidebar__button sidebar__button--todos ${
308 )} (${todosToggleShortcutKey(false)})`} 305 todosStore.isTodosPanelVisible ? 'is-active' : ''
309 > 306 }`}
310 <Icon icon={mdiCheckAll} size={1.5} /> 307 data-tooltip-id="tooltip-sidebar-button"
311 </button> 308 data-tooltip-content={`${intl.formatMessage(
312 ) : null} 309 todosToggleMessage,
313 {stores!.settings.all.app.lockingFeatureEnabled ? ( 310 )} (${todosToggleShortcutKey(false)})`}
314 <button 311 >
315 type="button" 312 <Icon icon={mdiCheckAll} size={1.5} />
316 className="sidebar__button" 313 </button>
317 onClick={() => { 314 ) : null}
318 actions!.settings.update({ 315 {stores!.settings.all.app.lockingFeatureEnabled ? (
319 type: 'app', 316 <button
320 data: { 317 type="button"
321 locked: true, 318 className="sidebar__button"
322 }, 319 onClick={() => {
323 }); 320 actions!.settings.update({
324 }} 321 type: 'app',
325 data-tip={`${intl.formatMessage( 322 data: {
326 messages.lockFerdium, 323 locked: true,
327 )} (${lockFerdiumShortcutKey(false)})`} 324 },
328 > 325 });
329 <Icon icon={mdiLock} size={1.5} /> 326 }}
330 </button> 327 data-tooltip-id="tooltip-sidebar-button"
331 ) : null} 328 data-tooltip-content={`${intl.formatMessage(
332 </> 329 messages.lockFerdium,
330 )} (${lockFerdiumShortcutKey(false)})`}
331 >
332 <Icon icon={mdiLock} size={1.5} />
333 </button>
334 ) : null}
333 {this.state.tooltipEnabled && ( 335 {this.state.tooltipEnabled && (
334 <ReactTooltip place="right" type="dark" effect="solid" /> 336 <ReactTooltip
337 id="tooltip-sidebar-button"
338 place="right"
339 variant="dark"
340 style={{ height: 'auto', overflowY: 'unset' }}
341 />
335 )} 342 )}
336 {!hideSettingsButton && !isMenuCollapsed ? ( 343 {!hideSettingsButton && !isMenuCollapsed ? (
337 <button 344 <button
338 type="button" 345 type="button"
339 onClick={() => openSettings({ path: 'app' })} 346 onClick={() => openSettings({ path: 'app' })}
340 className="sidebar__button sidebar__button--settings" 347 className="sidebar__button sidebar__button--settings"
341 data-tip={`${intl.formatMessage( 348 data-tooltip-id="tooltip-sidebar-button"
349 data-tooltip-content={`${intl.formatMessage(
342 globalMessages.settings, 350 globalMessages.settings,
343 )} (${settingsShortcutKey(false)})`} 351 )} (${settingsShortcutKey(false)})`}
344 > 352 >
diff --git a/src/components/services/content/ServiceView.tsx b/src/components/services/content/ServiceView.tsx
index 19dcdd07a..37dcafbe4 100644
--- a/src/components/services/content/ServiceView.tsx
+++ b/src/components/services/content/ServiceView.tsx
@@ -136,6 +136,7 @@ class ServiceView extends Component<IProps, IState> {
136 </> 136 </>
137 )} 137 )}
138 {service.isEnabled ? ( 138 {service.isEnabled ? (
139 // eslint-disable-next-line react/jsx-no-useless-fragment
139 <> 140 <>
140 {service.isHibernating ? ( 141 {service.isHibernating ? (
141 <div 142 <div
@@ -173,6 +174,7 @@ class ServiceView extends Component<IProps, IState> {
173 )} 174 )}
174 </> 175 </>
175 ) : ( 176 ) : (
177 // eslint-disable-next-line react/jsx-no-useless-fragment
176 <> 178 <>
177 {service.isActive && ( 179 {service.isActive && (
178 <ServiceDisabled 180 <ServiceDisabled
diff --git a/src/components/services/content/ServiceWebview.tsx b/src/components/services/content/ServiceWebview.tsx
index 008e1b227..50b5d478f 100644
--- a/src/components/services/content/ServiceWebview.tsx
+++ b/src/components/services/content/ServiceWebview.tsx
@@ -2,7 +2,7 @@ import { Component, ReactElement } from 'react';
2import { observer } from 'mobx-react'; 2import { observer } from 'mobx-react';
3import { action, makeObservable, observable, reaction } from 'mobx'; 3import { action, makeObservable, observable, reaction } from 'mobx';
4import ElectronWebView from 'react-electron-web-view'; 4import ElectronWebView from 'react-electron-web-view';
5import { join } from 'path'; 5import { join } from 'node:path';
6import ServiceModel from '../../../models/Service'; 6import ServiceModel from '../../../models/Service';
7 7
8const debug = require('../../../preload-safe-debug')('Ferdium:Services'); 8const debug = require('../../../preload-safe-debug')('Ferdium:Services');
diff --git a/src/components/services/tabs/TabBarSortableList.tsx b/src/components/services/tabs/TabBarSortableList.tsx
index 5f711c30d..a30587470 100644
--- a/src/components/services/tabs/TabBarSortableList.tsx
+++ b/src/components/services/tabs/TabBarSortableList.tsx
@@ -51,7 +51,7 @@ class TabBarSortableList extends Component<IProps> {
51 {services.map((service, index) => ( 51 {services.map((service, index) => (
52 <TabItem 52 <TabItem
53 key={service.id} 53 key={service.id}
54 // @ts-ignore 54 // @ts-expect-error Fix me
55 clickHandler={() => setActive({ serviceId: service.id })} 55 clickHandler={() => setActive({ serviceId: service.id })}
56 service={service} 56 service={service}
57 index={index} 57 index={index}
diff --git a/src/components/services/tabs/TabItem.tsx b/src/components/services/tabs/TabItem.tsx
index c883066ce..287dedfcb 100644
--- a/src/components/services/tabs/TabItem.tsx
+++ b/src/components/services/tabs/TabItem.tsx
@@ -234,7 +234,7 @@ class TabItem extends Component<IProps, IState> {
234 } = this.props; 234 } = this.props;
235 const { intl } = this.props; 235 const { intl } = this.props;
236 236
237 const menuTemplate: Array<MenuItemConstructorOptions> = [ 237 const menuTemplate: MenuItemConstructorOptions[] = [
238 { 238 {
239 label: service.name || service.recipe.name, 239 label: service.name || service.recipe.name,
240 enabled: false, 240 enabled: false,
@@ -295,7 +295,7 @@ class TabItem extends Component<IProps, IState> {
295 ? messages.wakeUpService 295 ? messages.wakeUpService
296 : messages.hibernateService, 296 : messages.hibernateService,
297 ), 297 ),
298 // eslint-disable-next-line no-confusing-arrow 298
299 click: () => 299 click: () =>
300 service.isHibernating ? wakeUpService() : hibernateService(), 300 service.isHibernating ? wakeUpService() : hibernateService(),
301 enabled: service.isEnabled && service.canHibernate, 301 enabled: service.isEnabled && service.canHibernate,
@@ -311,7 +311,7 @@ class TabItem extends Component<IProps, IState> {
311 { 311 {
312 label: intl.formatMessage(messages.deleteService), 312 label: intl.formatMessage(messages.deleteService),
313 click: () => { 313 click: () => {
314 // @ts-ignore 314 // @ts-expect-error Fix me
315 const selection = dialog.showMessageBoxSync(app.mainWindow, { 315 const selection = dialog.showMessageBoxSync(app.mainWindow, {
316 type: 'question', 316 type: 'question',
317 message: intl.formatMessage(messages.deleteService), 317 message: intl.formatMessage(messages.deleteService),
@@ -359,7 +359,8 @@ class TabItem extends Component<IProps, IState> {
359 onKeyDown={noop} 359 onKeyDown={noop}
360 role="presentation" 360 role="presentation"
361 onContextMenu={() => menu.popup()} 361 onContextMenu={() => menu.popup()}
362 data-tip={`${service.name} ${acceleratorString( 362 data-tooltip-id="tooltip-sidebar-button"
363 data-tooltip-content={`${service.name} ${acceleratorString(
363 shortcutIndex, 364 shortcutIndex,
364 cmdOrCtrlShortcutKey(false), 365 cmdOrCtrlShortcutKey(false),
365 )}`} 366 )}`}
@@ -416,6 +417,6 @@ class TabItem extends Component<IProps, IState> {
416} 417}
417 418
418export default injectIntl( 419export default injectIntl(
419 // @ts-ignore 420 // @ts-expect-error Fix me
420 SortableElement(injectSheet(styles, { injectTheme: true })(TabItem)), 421 SortableElement(injectSheet(styles, { injectTheme: true })(TabItem)),
421); 422);
diff --git a/src/components/services/tabs/Tabbar.tsx b/src/components/services/tabs/Tabbar.tsx
index f09877b2f..d19a4b8de 100644
--- a/src/components/services/tabs/Tabbar.tsx
+++ b/src/components/services/tabs/Tabbar.tsx
@@ -99,7 +99,7 @@ class TabBar extends Component<IProps> {
99 return ( 99 return (
100 <div> 100 <div>
101 <TabBarSortableList 101 <TabBarSortableList
102 // @ts-ignore 102 // @ts-expect-error Fix me
103 services={services} 103 services={services}
104 setActive={setActive} 104 setActive={setActive}
105 onSortEnd={this.onSortEnd} 105 onSortEnd={this.onSortEnd}
diff --git a/src/components/settings/account/AccountDashboard.tsx b/src/components/settings/account/AccountDashboard.tsx
index 163b0a160..de323c06e 100644
--- a/src/components/settings/account/AccountDashboard.tsx
+++ b/src/components/settings/account/AccountDashboard.tsx
@@ -1,7 +1,7 @@
1import { Component } from 'react'; 1import { Component } from 'react';
2import { observer } from 'mobx-react'; 2import { observer } from 'mobx-react';
3import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 3import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
4import ReactTooltip from 'react-tooltip'; 4import { Tooltip as ReactTooltip } from 'react-tooltip';
5import { H1, H2 } from '../../ui/headline'; 5import { H1, H2 } from '../../ui/headline';
6 6
7import Loader from '../../ui/Loader'; 7import Loader from '../../ui/Loader';
@@ -215,7 +215,12 @@ class AccountDashboard extends Component<IProp> {
215 </> 215 </>
216 )} 216 )}
217 </div> 217 </div>
218 <ReactTooltip place="right" type="dark" effect="solid" /> 218 <ReactTooltip
219 place="right"
220 variant="dark"
221 float
222 style={{ height: 'auto' }}
223 />
219 </div> 224 </div>
220 ); 225 );
221 } 226 }
diff --git a/src/components/settings/navigation/SettingsNavigation.tsx b/src/components/settings/navigation/SettingsNavigation.tsx
index 6ffaa411f..66763c6a6 100644
--- a/src/components/settings/navigation/SettingsNavigation.tsx
+++ b/src/components/settings/navigation/SettingsNavigation.tsx
@@ -53,10 +53,6 @@ interface IProps extends Partial<StoresProps>, WrappedComponentProps {
53@inject('stores', 'actions') 53@inject('stores', 'actions')
54@observer 54@observer
55class SettingsNavigation extends Component<IProps> { 55class SettingsNavigation extends Component<IProps> {
56 constructor(props: IProps) {
57 super(props);
58 }
59
60 handleLogout(): void { 56 handleLogout(): void {
61 const isUsingWithoutAccount = 57 const isUsingWithoutAccount =
62 this.props.stores!.settings.app.server === LOCAL_SERVER; 58 this.props.stores!.settings.app.server === LOCAL_SERVER;
@@ -186,7 +182,7 @@ class SettingsNavigation extends Component<IProps> {
186 <span className="settings-navigation__expander" /> 182 <span className="settings-navigation__expander" />
187 <button 183 <button
188 type="button" 184 type="button"
189 // @ts-ignore 185 // @ts-expect-error Fix me
190 to="/auth/logout" // TODO: [TS DEBT] Need to check if button take this prop 186 to="/auth/logout" // TODO: [TS DEBT] Need to check if button take this prop
191 className="settings-navigation__link" 187 className="settings-navigation__link"
192 onClick={this.handleLogout.bind(this)} 188 onClick={this.handleLogout.bind(this)}
diff --git a/src/components/settings/releaseNotes/ReleaseNotesDashboard.tsx b/src/components/settings/releaseNotes/ReleaseNotesDashboard.tsx
index ff7c45bb1..9b17e551c 100644
--- a/src/components/settings/releaseNotes/ReleaseNotesDashboard.tsx
+++ b/src/components/settings/releaseNotes/ReleaseNotesDashboard.tsx
@@ -1,6 +1,6 @@
1import { Component } from 'react'; 1import { Component } from 'react';
2import { observer } from 'mobx-react'; 2import { observer } from 'mobx-react';
3import { defineMessages, injectIntl } from 'react-intl'; 3import { IntlShape, defineMessages, injectIntl } from 'react-intl';
4import Markdown from 'markdown-to-jsx'; 4import Markdown from 'markdown-to-jsx';
5import { ferdiumVersion } from '../../../environment-remote'; 5import { ferdiumVersion } from '../../../environment-remote';
6import { 6import {
@@ -26,14 +26,14 @@ const messages = defineMessages({
26}); 26});
27 27
28interface IProps { 28interface IProps {
29 intl: any; 29 intl: IntlShape;
30} 30}
31 31
32class ReleaseNotesDashboard extends Component<IProps> { 32interface IState {
33 state = { 33 data: string;
34 data: '', 34}
35 };
36 35
36class ReleaseNotesDashboard extends Component<IProps, IState> {
37 constructor(props) { 37 constructor(props) {
38 super(props); 38 super(props);
39 39
diff --git a/src/components/settings/releaseNotes/ReleaseNotesLayout.tsx b/src/components/settings/releaseNotes/ReleaseNotesLayout.tsx
index bc38aa603..4a6fe54f4 100644
--- a/src/components/settings/releaseNotes/ReleaseNotesLayout.tsx
+++ b/src/components/settings/releaseNotes/ReleaseNotesLayout.tsx
@@ -19,6 +19,7 @@ const messages = defineMessages({
19 19
20interface IProps extends WrappedComponentProps { 20interface IProps extends WrappedComponentProps {
21 actions?: Actions; 21 actions?: Actions;
22 // eslint-disable-next-line react/no-unused-prop-types
22 children?: React.ReactNode; 23 children?: React.ReactNode;
23} 24}
24 25
diff --git a/src/components/settings/services/ServiceItem.tsx b/src/components/settings/services/ServiceItem.tsx
index bf2dfa9da..babe06b5a 100644
--- a/src/components/settings/services/ServiceItem.tsx
+++ b/src/components/settings/services/ServiceItem.tsx
@@ -1,6 +1,6 @@
1import { Component, ReactElement } from 'react'; 1import { Component, ReactElement } from 'react';
2import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 2import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
3import ReactTooltip from 'react-tooltip'; 3import { Tooltip as ReactTooltip } from 'react-tooltip';
4import { observer } from 'mobx-react'; 4import { observer } from 'mobx-react';
5import classnames from 'classnames'; 5import classnames from 'classnames';
6import { mdiBellOff, mdiMessageBulletedOff, mdiPower } from '@mdi/js'; 6import { mdiBellOff, mdiMessageBulletedOff, mdiPower } from '@mdi/js';
@@ -73,7 +73,8 @@ class ServiceItem extends Component<IProps> {
73 {service.isMuted && ( 73 {service.isMuted && (
74 <Icon 74 <Icon
75 icon={mdiBellOff} 75 icon={mdiBellOff}
76 data-tip={intl.formatMessage(messages.tooltipIsMuted)} 76 data-tooltip-id="tooltip-service-item"
77 data-tooltip-content={intl.formatMessage(messages.tooltipIsMuted)}
77 /> 78 />
78 )} 79 )}
79 </td> 80 </td>
@@ -85,7 +86,10 @@ class ServiceItem extends Component<IProps> {
85 {!service.isEnabled && ( 86 {!service.isEnabled && (
86 <Icon 87 <Icon
87 icon={mdiPower} 88 icon={mdiPower}
88 data-tip={intl.formatMessage(messages.tooltipIsDisabled)} 89 data-tooltip-id="tooltip-service-item"
90 data-tooltip-content={intl.formatMessage(
91 messages.tooltipIsDisabled,
92 )}
89 /> 93 />
90 )} 94 )}
91 </td> 95 </td>
@@ -97,12 +101,18 @@ class ServiceItem extends Component<IProps> {
97 {!service.isNotificationEnabled && ( 101 {!service.isNotificationEnabled && (
98 <Icon 102 <Icon
99 icon={mdiMessageBulletedOff} 103 icon={mdiMessageBulletedOff}
100 data-tip={intl.formatMessage( 104 data-tooltip-id="tooltip-service-item"
105 data-tooltip-content={intl.formatMessage(
101 messages.tooltipNotificationsDisabled, 106 messages.tooltipNotificationsDisabled,
102 )} 107 )}
103 /> 108 />
104 )} 109 )}
105 <ReactTooltip place="top" type="dark" effect="solid" /> 110 <ReactTooltip
111 id="tooltip-service-item"
112 place="right"
113 variant="dark"
114 style={{ height: 'auto' }}
115 />
106 </td> 116 </td>
107 </tr> 117 </tr>
108 ); 118 );
diff --git a/src/components/settings/settings/EditSettingsForm.tsx b/src/components/settings/settings/EditSettingsForm.tsx
index 11ae63737..0b5d4374d 100644
--- a/src/components/settings/settings/EditSettingsForm.tsx
+++ b/src/components/settings/settings/EditSettingsForm.tsx
@@ -333,7 +333,7 @@ class EditSettingsForm extends Component<IProps, IState> {
333 } 333 }
334 334
335 this.props.form.submit({ 335 this.props.form.submit({
336 onSuccess: form => { 336 onSuccess: (form: Form) => {
337 const values = form.values(); 337 const values = form.values();
338 const { accentColor } = values; 338 const { accentColor } = values;
339 if (accentColor.trim().length === 0) { 339 if (accentColor.trim().length === 0) {
@@ -388,6 +388,7 @@ class EditSettingsForm extends Component<IProps, IState> {
388 388
389 let cacheSize; 389 let cacheSize;
390 let notCleared; 390 let notCleared;
391
391 if (this.state.activeSetttingsTab === 'advanced') { 392 if (this.state.activeSetttingsTab === 'advanced') {
392 const cacheSizeBytes = getCacheSize(); 393 const cacheSizeBytes = getCacheSize();
393 debug('cacheSizeBytes:', cacheSizeBytes); 394 debug('cacheSizeBytes:', cacheSizeBytes);
@@ -740,38 +741,35 @@ class EditSettingsForm extends Component<IProps, IState> {
740 defaultAccentColor: DEFAULT_APP_SETTINGS.accentColor, 741 defaultAccentColor: DEFAULT_APP_SETTINGS.accentColor,
741 })} 742 })}
742 </p> 743 </p>
743 <p> 744 <p>{intl.formatMessage(messages.overallTheme)}</p>
744 {intl.formatMessage(messages.overallTheme)} 745 <div className="settings__settings-group__apply-color">
745 <div className="settings__settings-group__apply-color"> 746 <ColorPickerInput
746 <ColorPickerInput 747 {...form.$('accentColor').bind()}
747 {...form.$('accentColor').bind()} 748 name="accentColor"
748 onColorChange={this.submit.bind(this)} 749 onColorChange={e => this.submit(e)}
749 className="color-picker-input" 750 className="color-picker-input"
750 /> 751 />
751 </div> 752 </div>
752 </p> 753 <p>{intl.formatMessage(messages.progressbarTheme)}</p>
753 <p> 754 <div className="settings__settings-group__apply-color">
754 {intl.formatMessage(messages.progressbarTheme)} 755 <ColorPickerInput
755 <div className="settings__settings-group__apply-color"> 756 {...form.$('progressbarAccentColor').bind()}
756 <ColorPickerInput 757 name="progressbarAccentColor"
757 {...form.$('progressbarAccentColor').bind()} 758 onColorChange={e => this.submit(e)}
758 onColorChange={this.submit.bind(this)} 759 className="color-picker-input"
759 className="color-picker-input" 760 />
760 /> 761 </div>
761 </div> 762
762 </p> 763 <div className="settings__settings-group__apply-color">
763 <p> 764 <Button
764 <div className="settings__settings-group__apply-color"> 765 buttonType="secondary"
765 <Button 766 className="settings__settings-group__apply-color__button"
766 buttonType="secondary" 767 label="Apply color"
767 className="settings__settings-group__apply-color__button" 768 onClick={e => {
768 label="Apply color" 769 this.submit(e);
769 onClick={e => { 770 }}
770 this.submit(e); 771 />
771 }} 772 </div>
772 />
773 </div>
774 </p>
775 <HrSections /> 773 <HrSections />
776 774
777 <H2 className="settings__section_header"> 775 <H2 className="settings__section_header">
diff --git a/src/components/settings/supportFerdium/SupportFerdiumDashboard.tsx b/src/components/settings/supportFerdium/SupportFerdiumDashboard.tsx
index f3b7c718c..065690fb5 100644
--- a/src/components/settings/supportFerdium/SupportFerdiumDashboard.tsx
+++ b/src/components/settings/supportFerdium/SupportFerdiumDashboard.tsx
@@ -50,7 +50,7 @@ const SupportFerdiumDashboard = () => {
50 src="https://img.shields.io/github/stars/ferdium/ferdium-app?style=social" 50 src="https://img.shields.io/github/stars/ferdium/ferdium-app?style=social"
51 /> 51 />
52 </a> 52 </a>
53 <a target="_blank" href={FERDIUM_TRANSLATION}> 53 <a target="_blank" href={FERDIUM_TRANSLATION} rel="noreferrer">
54 <img 54 <img
55 src="https://badges.crowdin.net/ferdium-app/localized.svg" 55 src="https://badges.crowdin.net/ferdium-app/localized.svg"
56 alt="Crowdin" 56 alt="Crowdin"
diff --git a/src/components/settings/team/TeamDashboard.tsx b/src/components/settings/team/TeamDashboard.tsx
index 6fd2d4426..77bccb8c3 100644
--- a/src/components/settings/team/TeamDashboard.tsx
+++ b/src/components/settings/team/TeamDashboard.tsx
@@ -3,7 +3,7 @@
3import { Component, ReactElement } from 'react'; 3import { Component, ReactElement } from 'react';
4import { observer } from 'mobx-react'; 4import { observer } from 'mobx-react';
5import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 5import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
6import ReactTooltip from 'react-tooltip'; 6import { Tooltip as ReactTooltip } from 'react-tooltip';
7import withStyles, { WithStylesProps } from 'react-jss'; 7import withStyles, { WithStylesProps } from 'react-jss';
8import classnames from 'classnames'; 8import classnames from 'classnames';
9import Loader from '../../ui/Loader'; 9import Loader from '../../ui/Loader';
@@ -173,7 +173,12 @@ class TeamDashboard extends Component<IProps> {
173 </> 173 </>
174 )} 174 )}
175 </div> 175 </div>
176 <ReactTooltip place="right" type="dark" effect="solid" /> 176 <ReactTooltip
177 place="right"
178 variant="dark"
179 float
180 style={{ height: 'auto' }}
181 />
177 </div> 182 </div>
178 ) : ( 183 ) : (
179 <div className="settings__main"> 184 <div className="settings__main">
diff --git a/src/components/ui/AppLoader/index.tsx b/src/components/ui/AppLoader/index.tsx
index f4d9b8e73..64c840aaa 100644
--- a/src/components/ui/AppLoader/index.tsx
+++ b/src/components/ui/AppLoader/index.tsx
@@ -61,18 +61,17 @@ class AppLoader extends Component<IProps, IState> {
61 className={classes.component} 61 className={classes.component}
62 spinnerColor={theme.colorAppLoaderSpinner} 62 spinnerColor={theme.colorAppLoaderSpinner}
63 > 63 >
64 {texts && 64 {texts?.map((text, i) => (
65 texts.map((text, i) => ( 65 <span
66 <span 66 key={text}
67 key={text} 67 className={classnames({
68 className={classnames({ 68 [`${classes.slogan}`]: true,
69 [`${classes.slogan}`]: true, 69 [`${classes.visible}`]: step === i,
70 [`${classes.visible}`]: step === i, 70 })}
71 })} 71 >
72 > 72 {text}
73 {text} 73 </span>
74 </span> 74 ))}
75 ))}
76 </FullscreenLoader> 75 </FullscreenLoader>
77 ); 76 );
78 } 77 }
diff --git a/src/components/ui/InfoBar.tsx b/src/components/ui/InfoBar.tsx
index ef8f6ad6f..b7bfe0fa6 100644
--- a/src/components/ui/InfoBar.tsx
+++ b/src/components/ui/InfoBar.tsx
@@ -56,7 +56,14 @@ class InfoBar extends Component<IProps> {
56 [`${className}`]: true, 56 [`${className}`]: true,
57 })} 57 })}
58 > 58 >
59 <div className="info-bar__content"> 59 <div
60 className={classnames({
61 'info-bar': true,
62 [`info-bar--${type}`]: true,
63 [`info-bar--${position}`]: true,
64 [`${className}`]: true,
65 })}
66 >
60 {children} 67 {children}
61 {ctaLabel && ( 68 {ctaLabel && (
62 <button type="button" className="info-bar__cta" onClick={onClick}> 69 <button type="button" className="info-bar__cta" onClick={onClick}>
@@ -65,22 +72,23 @@ class InfoBar extends Component<IProps> {
65 lines={10} 72 lines={10}
66 scale={0.3} 73 scale={0.3}
67 color="#FFF" 74 color="#FFF"
75 // @ts-expect-error Property 'component' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<ReactLoader> & Readonly<LoaderProps>
68 component="span" 76 component="span"
69 /> 77 />
70 {ctaLabel} 78 {ctaLabel}
71 </button> 79 </button>
72 )} 80 )}
81 {!sticky && (
82 <button
83 type="button"
84 className="info-bar__close"
85 onClick={onHide}
86 aria-label={intl.formatMessage(messages.hide)}
87 >
88 <Icon icon={mdiClose} />
89 </button>
90 )}
73 </div> 91 </div>
74 {!sticky && (
75 <button
76 type="button"
77 className="info-bar__close"
78 onClick={onHide}
79 aria-label={intl.formatMessage(messages.hide)}
80 >
81 <Icon icon={mdiClose} />
82 </button>
83 )}
84 </Appear> 92 </Appear>
85 ); 93 );
86 } 94 }
diff --git a/src/components/ui/Infobox.tsx b/src/components/ui/Infobox.tsx
index 9782db151..a794a5e9b 100644
--- a/src/components/ui/Infobox.tsx
+++ b/src/components/ui/Infobox.tsx
@@ -85,6 +85,7 @@ class Infobox extends Component<IProps, IState> {
85 lines={10} 85 lines={10}
86 scale={0.3} 86 scale={0.3}
87 color="#FFF" 87 color="#FFF"
88 // @ts-expect-error Property 'component' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<ReactLoader> & Readonly<LoaderProps>
88 component="span" 89 component="span"
89 /> 90 />
90 {ctaLabel} 91 {ctaLabel}
diff --git a/src/components/ui/Link.tsx b/src/components/ui/Link.tsx
index b5890ebd1..a9a429d3a 100644
--- a/src/components/ui/Link.tsx
+++ b/src/components/ui/Link.tsx
@@ -20,10 +20,6 @@ interface IProps extends Partial<StoresProps> {
20@inject('stores') 20@inject('stores')
21@observer 21@observer
22class Link extends Component<IProps> { 22class Link extends Component<IProps> {
23 constructor(props: IProps) {
24 super(props);
25 }
26
27 onClick(e: MouseEvent<HTMLAnchorElement>): void { 23 onClick(e: MouseEvent<HTMLAnchorElement>): void {
28 const { disabled = false, target = '', to } = this.props; 24 const { disabled = false, target = '', to } = this.props;
29 if (disabled) { 25 if (disabled) {
diff --git a/src/components/ui/Loader.tsx b/src/components/ui/Loader.tsx
index 37555df16..d4457ae5f 100644
--- a/src/components/ui/Loader.tsx
+++ b/src/components/ui/Loader.tsx
@@ -28,6 +28,7 @@ class LoaderComponent extends Component<IProps> {
28 color === 'ACCENT' ? this.props.stores!.settings.app.accentColor : color; 28 color === 'ACCENT' ? this.props.stores!.settings.app.accentColor : color;
29 29
30 return ( 30 return (
31 // @ts-expect-error Property 'children' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<ReactLoader> & Readonly<LoaderProps>'
31 <Loader 32 <Loader
32 loaded={loaded} 33 loaded={loaded}
33 width={4} 34 width={4}
diff --git a/src/components/ui/Radio.tsx b/src/components/ui/Radio.tsx
index b5be64c5d..1f41deedc 100644
--- a/src/components/ui/Radio.tsx
+++ b/src/components/ui/Radio.tsx
@@ -1,10 +1,11 @@
1import { Component } from 'react'; 1import { Component } from 'react';
2import { observer } from 'mobx-react'; 2import { observer } from 'mobx-react';
3import { Field } from 'mobx-react-form';
4import classnames from 'classnames'; 3import classnames from 'classnames';
4import FieldInterface from 'mobx-react-form/lib/models/FieldInterface';
5import Error from './error';
5 6
6type Props = { 7type Props = {
7 field: typeof Field; 8 field: FieldInterface;
8 className: string; 9 className: string;
9 focus: boolean; 10 focus: boolean;
10 showLabel: boolean; 11 showLabel: boolean;
@@ -47,7 +48,8 @@ class Radio extends Component<Props> {
47 </label> 48 </label>
48 )} 49 )}
49 <div className="franz-form__radio-wrapper"> 50 <div className="franz-form__radio-wrapper">
50 {field.options.map(type => ( 51 {/* @ts-expect-error Property 'map' does not exist on type 'OptionsModel'. */}
52 {field.options?.map(type => (
51 <label 53 <label
52 key={type.value} 54 key={type.value}
53 htmlFor={`${field.id}-${type.value}`} 55 htmlFor={`${field.id}-${type.value}`}
@@ -68,7 +70,8 @@ class Radio extends Component<Props> {
68 </label> 70 </label>
69 ))} 71 ))}
70 </div> 72 </div>
71 {field.error && <div className="franz-form__error">{field.error}</div>} 73
74 {field.error && <Error message={field.error} />}
72 </div> 75 </div>
73 ); 76 );
74 } 77 }
diff --git a/src/components/ui/Select.tsx b/src/components/ui/Select.tsx
index 8ae2945ce..a2ed4216f 100644
--- a/src/components/ui/Select.tsx
+++ b/src/components/ui/Select.tsx
@@ -24,10 +24,6 @@ class Select extends Component<IProps> {
24 private element: RefObject<HTMLSelectElement> = 24 private element: RefObject<HTMLSelectElement> =
25 createRef<HTMLSelectElement>(); 25 createRef<HTMLSelectElement>();
26 26
27 constructor(props: IProps) {
28 super(props);
29 }
30
31 multipleChange(e: ChangeEvent<HTMLSelectElement>): void { 27 multipleChange(e: ChangeEvent<HTMLSelectElement>): void {
32 e.preventDefault(); 28 e.preventDefault();
33 if (!this.element.current) { 29 if (!this.element.current) {
diff --git a/src/components/ui/Tabs/TabItem.tsx b/src/components/ui/Tabs/TabItem.tsx
index 815dced8c..55dee42c6 100644
--- a/src/components/ui/Tabs/TabItem.tsx
+++ b/src/components/ui/Tabs/TabItem.tsx
@@ -12,8 +12,8 @@ export interface IProps {
12 title?: string; // it is used on Tabs.tsx 12 title?: string; // it is used on Tabs.tsx
13} 13}
14 14
15function TabItem({ children, title = '' }: IProps): ReactElement { 15const TabItem = ({ children, title = '' }: IProps): ReactElement => {
16 return <Fragment key={title}>{children}</Fragment>; 16 return <Fragment key={title}>{children}</Fragment>;
17} 17};
18 18
19export default TabItem; 19export default TabItem;
diff --git a/src/components/ui/Tabs/Tabs.tsx b/src/components/ui/Tabs/Tabs.tsx
index 2c34d7e24..d7f75c8b8 100644
--- a/src/components/ui/Tabs/Tabs.tsx
+++ b/src/components/ui/Tabs/Tabs.tsx
@@ -41,6 +41,7 @@ class Tab extends Component<IProps, IState> {
41 <div className="content-tabs__tabs"> 41 <div className="content-tabs__tabs">
42 {Children.map(children, (child, i) => ( 42 {Children.map(children, (child, i) => (
43 <button 43 <button
44 // eslint-disable-next-line react/no-array-index-key
44 key={i} 45 key={i}
45 className={classnames({ 46 className={classnames({
46 'content-tabs__item': true, 47 'content-tabs__item': true,
@@ -56,6 +57,7 @@ class Tab extends Component<IProps, IState> {
56 <div className="content-tabs__content"> 57 <div className="content-tabs__content">
57 {Children.map(children, (child, i) => ( 58 {Children.map(children, (child, i) => (
58 <div 59 <div
60 // eslint-disable-next-line react/no-array-index-key
59 key={i} 61 key={i}
60 className={classnames({ 62 className={classnames({
61 'content-tabs__item': true, 63 'content-tabs__item': true,
diff --git a/src/components/ui/WebviewLoader/index.tsx b/src/components/ui/WebviewLoader/index.tsx
index 81923b6ca..c4e9c724c 100644
--- a/src/components/ui/WebviewLoader/index.tsx
+++ b/src/components/ui/WebviewLoader/index.tsx
@@ -32,7 +32,7 @@ class WebviewLoader extends Component<IProps> {
32 return ( 32 return (
33 <FullscreenLoader 33 <FullscreenLoader
34 className={classes.component} 34 className={classes.component}
35 title={`${intl.formatMessage(messages.loading, { service: name })}`} 35 title={intl.formatMessage(messages.loading, { service: name })}
36 loaded={loaded} 36 loaded={loaded}
37 /> 37 />
38 ); 38 );
diff --git a/src/components/ui/badge/ProBadge.tsx b/src/components/ui/badge/ProBadge.tsx
index 62c45b77c..a5947d3a8 100644
--- a/src/components/ui/badge/ProBadge.tsx
+++ b/src/components/ui/badge/ProBadge.tsx
@@ -7,13 +7,6 @@ import { Theme } from '../../../themes';
7import Icon from '../icon'; 7import Icon from '../icon';
8import Badge from './index'; 8import Badge from './index';
9 9
10interface IProps extends WithStylesProps<typeof styles> {
11 badgeClasses?: string;
12 iconClasses?: string;
13 inverted?: boolean;
14 className?: string;
15}
16
17const styles = (theme: Theme) => ({ 10const styles = (theme: Theme) => ({
18 badge: { 11 badge: {
19 height: 'auto', 12 height: 'auto',
@@ -32,6 +25,13 @@ const styles = (theme: Theme) => ({
32 }, 25 },
33}); 26});
34 27
28interface IProps extends WithStylesProps<typeof styles> {
29 badgeClasses?: string;
30 iconClasses?: string;
31 inverted?: boolean;
32 className?: string;
33}
34
35class ProBadgeComponent extends Component<IProps> { 35class ProBadgeComponent extends Component<IProps> {
36 render() { 36 render() {
37 const { classes, badgeClasses, iconClasses, inverted, className } = 37 const { classes, badgeClasses, iconClasses, inverted, className } =
diff --git a/src/components/ui/badge/index.tsx b/src/components/ui/badge/index.tsx
index 33e2f5d53..44fbf2d4a 100644
--- a/src/components/ui/badge/index.tsx
+++ b/src/components/ui/badge/index.tsx
@@ -4,23 +4,17 @@ import injectStyle, { WithStylesProps } from 'react-jss';
4 4
5import { Theme } from '../../../themes'; 5import { Theme } from '../../../themes';
6 6
7interface IProps extends WithStylesProps<typeof styles> {
8 type: string;
9 className?: string;
10 children: ReactNode;
11}
12
13const badgeStyles = (theme: Theme) => { 7const badgeStyles = (theme: Theme) => {
14 const styles = {}; 8 const styles = {};
15 Object.keys(theme.styleTypes).map(style => { 9 Object.keys(theme.styleTypes).map(style =>
16 Object.assign(styles, { 10 Object.assign(styles, {
17 [style]: { 11 [style]: {
18 background: theme.styleTypes[style].accent, 12 background: theme.styleTypes[style].accent,
19 color: theme.styleTypes[style].contrast, 13 color: theme.styleTypes[style].contrast,
20 border: theme.styleTypes[style].border, 14 border: theme.styleTypes[style].border,
21 }, 15 },
22 }); 16 }),
23 }); 17 );
24 18
25 return styles; 19 return styles;
26}; 20};
@@ -44,6 +38,12 @@ const styles = (theme: Theme) => ({
44 ...badgeStyles(theme), 38 ...badgeStyles(theme),
45}); 39});
46 40
41interface IProps extends WithStylesProps<typeof styles> {
42 type: string;
43 className?: string;
44 children: ReactNode;
45}
46
47class BadgeComponent extends Component<IProps> { 47class BadgeComponent extends Component<IProps> {
48 public static defaultProps = { 48 public static defaultProps = {
49 type: 'primary', 49 type: 'primary',
diff --git a/src/components/ui/button/index.tsx b/src/components/ui/button/index.tsx
index 9444efde2..c37a88afa 100644
--- a/src/components/ui/button/index.tsx
+++ b/src/components/ui/button/index.tsx
@@ -1,3 +1,4 @@
1/* eslint-disable no-use-before-define */
1import Icon from '@mdi/react'; 2import Icon from '@mdi/react';
2import classnames from 'classnames'; 3import classnames from 'classnames';
3import { Property } from 'csstype'; 4import { Property } from 'csstype';
@@ -135,7 +136,7 @@ interface IProps extends IFormField, WithStylesProps<typeof styles> {
135 label?: string; 136 label?: string;
136 disabled?: boolean; 137 disabled?: boolean;
137 id?: string; 138 id?: string;
138 type?: 'button' | 'reset' | 'submit' | undefined; 139 type?: 'button' | 'reset' | 'submit';
139 onClick?: MouseEventHandler<HTMLInputElement>; 140 onClick?: MouseEventHandler<HTMLInputElement>;
140 buttonType?: ButtonType; 141 buttonType?: ButtonType;
141 loaded?: boolean; 142 loaded?: boolean;
@@ -206,6 +207,7 @@ class ButtonComponent extends Component<IProps, IState> {
206 width={4} 207 width={4}
207 scale={0.45} 208 scale={0.45}
208 // color={theme.buttonLoaderColor[buttonType!]} 209 // color={theme.buttonLoaderColor[buttonType!]}
210 // @ts-expect-error Property 'parentClassName' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<ReactLoader> & Readonly<LoaderProps>
209 parentClassName={classes.loader} 211 parentClassName={classes.loader}
210 /> 212 />
211 )} 213 )}
@@ -235,6 +237,7 @@ class ButtonComponent extends Component<IProps, IState> {
235 ) : ( 237 ) : (
236 <button 238 <button
237 id={id} 239 id={id}
240 // eslint-disable-next-line react/button-has-type
238 type={type} 241 type={type}
239 onClick={onClick} 242 onClick={onClick}
240 className={classnames({ 243 className={classnames({
diff --git a/src/components/ui/colorPickerInput/index.tsx b/src/components/ui/colorPickerInput/index.tsx
index 9bab6efec..39fd0220a 100644
--- a/src/components/ui/colorPickerInput/index.tsx
+++ b/src/components/ui/colorPickerInput/index.tsx
@@ -1,21 +1,18 @@
1import { 1import {
2 ChangeEvent,
2 Component, 3 Component,
3 createRef, 4 createRef,
4 InputHTMLAttributes, 5 InputHTMLAttributes,
5 ReactElement,
6 RefObject, 6 RefObject,
7} from 'react'; 7} from 'react';
8import { observer } from 'mobx-react'; 8import { observer } from 'mobx-react';
9import classnames from 'classnames'; 9import classnames from 'classnames';
10import { SliderPicker } from 'react-color'; 10import { Color, ColorResult, SliderPicker } from 'react-color';
11import { noop } from 'lodash'; 11import { noop } from 'lodash';
12import { FormFields } from '../../../@types/mobx-form.types'; 12import { FormFields } from '../../../@types/mobx-form.types';
13 13
14interface IProps extends InputHTMLAttributes<HTMLInputElement>, FormFields { 14interface IProps extends InputHTMLAttributes<HTMLInputElement>, FormFields {
15 className?: string; 15 onColorChange: (event: ChangeEvent<HTMLInputElement>) => void;
16 focus?: boolean;
17 onColorChange?: () => void;
18 error: string;
19} 16}
20 17
21@observer 18@observer
@@ -23,20 +20,13 @@ class ColorPickerInput extends Component<IProps> {
23 private inputElement: RefObject<HTMLInputElement> = 20 private inputElement: RefObject<HTMLInputElement> =
24 createRef<HTMLInputElement>(); 21 createRef<HTMLInputElement>();
25 22
26 componentDidMount(): void { 23 onChange(color: ColorResult, event: ChangeEvent<HTMLInputElement>): void {
27 const { focus = false } = this.props; 24 const { onColorChange, onChange = noop } = this.props;
28 if (focus && this.inputElement && this.inputElement.current) { 25 onColorChange(event);
29 this.inputElement.current.focus(); 26 onChange(color.hex);
30 }
31 } 27 }
32 28
33 onChange({ hex }: { hex: string }): void { 29 render() {
34 const { onColorChange = noop, onChange = noop } = this.props;
35 onColorChange();
36 onChange(hex);
37 }
38
39 render(): ReactElement {
40 const { 30 const {
41 id, 31 id,
42 name, 32 name,
@@ -45,7 +35,6 @@ class ColorPickerInput extends Component<IProps> {
45 disabled = false, 35 disabled = false,
46 className = null, 36 className = null,
47 type = 'text', 37 type = 'text',
48 error = '',
49 onChange = noop, 38 onChange = noop,
50 } = this.props; 39 } = this.props;
51 40
@@ -53,20 +42,14 @@ class ColorPickerInput extends Component<IProps> {
53 <div 42 <div
54 className={classnames({ 43 className={classnames({
55 'franz-form__field': true, 44 'franz-form__field': true,
56 'has-error': error,
57 [`${className}`]: className, 45 [`${className}`]: className,
58 })} 46 })}
59 ref={this.inputElement} 47 ref={this.inputElement}
60 > 48 >
61 <SliderPicker 49 <SliderPicker
62 color={value} 50 color={value as Color}
63 onChange={this.onChange.bind(this)} 51 onChange={(color, event) => this.onChange(color, event)}
64 id={`${id}-SliderPicker`}
65 type={type}
66 className="franz-form__input" 52 className="franz-form__input"
67 name={name}
68 placeholder={placeholder}
69 disabled={disabled}
70 /> 53 />
71 <div className="franz-form__input-wrapper franz-form__input-wrapper__color-picker"> 54 <div className="franz-form__input-wrapper franz-form__input-wrapper__color-picker">
72 <input 55 <input
diff --git a/src/components/ui/effects/Appear.tsx b/src/components/ui/effects/Appear.tsx
index 2076f6ba6..06f63a029 100644
--- a/src/components/ui/effects/Appear.tsx
+++ b/src/components/ui/effects/Appear.tsx
@@ -1,5 +1,5 @@
1import { ReactElement, ReactNode, useEffect, useState } from 'react'; 1import { ReactElement, ReactNode, useEffect, useState } from 'react';
2import { CSSTransitionGroup } from 'react-transition-group'; 2import { CSSTransition, TransitionGroup } from 'react-transition-group';
3 3
4interface IProps { 4interface IProps {
5 children: ReactNode; 5 children: ReactNode;
@@ -33,17 +33,20 @@ const Appear = ({
33 } 33 }
34 34
35 return ( 35 return (
36 <CSSTransitionGroup 36 <TransitionGroup component={null}>
37 transitionName={transitionName} 37 <CSSTransition
38 transitionAppear={transitionAppear} 38 classNames={transitionName || className}
39 transitionLeave={transitionLeave} 39 appear={transitionAppear}
40 transitionAppearTimeout={transitionAppearTimeout} 40 exit={transitionLeave}
41 transitionEnterTimeout={transitionEnterTimeout} 41 timeout={{
42 transitionLeaveTimeout={transitionLeaveTimeout} 42 enter: transitionEnterTimeout,
43 className={className} 43 appear: transitionAppearTimeout,
44 > 44 exit: transitionLeaveTimeout,
45 {children} 45 }}
46 </CSSTransitionGroup> 46 >
47 {children}
48 </CSSTransition>
49 </TransitionGroup>
47 ); 50 );
48}; 51};
49 52
diff --git a/src/components/ui/headline/index.tsx b/src/components/ui/headline/index.tsx
index bebd8adcf..8e40fa896 100644
--- a/src/components/ui/headline/index.tsx
+++ b/src/components/ui/headline/index.tsx
@@ -11,14 +11,6 @@ import injectStyle, { WithStylesProps } from 'react-jss';
11import { Theme } from '../../../themes'; 11import { Theme } from '../../../themes';
12import { Omit } from '../typings/generic'; 12import { Omit } from '../typings/generic';
13 13
14interface IProps extends WithStylesProps<typeof styles> {
15 children: ReactNode;
16 level?: number;
17 className?: string;
18 id?: string;
19 onClick?: MouseEventHandler<HTMLButtonElement>;
20}
21
22const styles = (theme: Theme) => ({ 14const styles = (theme: Theme) => ({
23 headline: { 15 headline: {
24 fontWeight: 'lighter', 16 fontWeight: 'lighter',
@@ -45,6 +37,14 @@ const styles = (theme: Theme) => ({
45 }, 37 },
46}); 38});
47 39
40interface IProps extends WithStylesProps<typeof styles> {
41 children: ReactNode;
42 level?: number;
43 className?: string;
44 id?: string;
45 onClick?: MouseEventHandler<HTMLButtonElement>;
46}
47
48class HeadlineComponent extends Component<IProps> { 48class HeadlineComponent extends Component<IProps> {
49 render(): ReactElement { 49 render(): ReactElement {
50 const { classes, level, className, children, id, onClick } = this.props; 50 const { classes, level, className, children, id, onClick } = this.props;
@@ -67,12 +67,11 @@ class HeadlineComponent extends Component<IProps> {
67} 67}
68 68
69const Headline = injectStyle(styles, { injectTheme: true })(HeadlineComponent); 69const Headline = injectStyle(styles, { injectTheme: true })(HeadlineComponent);
70const createH = (level: number) => (props: Omit<IProps, 'classes'>) => 70const createH = (level: number) => (props: Omit<IProps, 'classes'>) => (
71 ( 71 <Headline level={level} {...props}>
72 <Headline level={level} {...props}> 72 {props.children}
73 {props.children} 73 </Headline>
74 </Headline> 74);
75 );
76 75
77export const H1 = createH(1); 76export const H1 = createH(1);
78export const H2 = createH(2); 77export const H2 = createH(2);
diff --git a/src/components/ui/icon/index.tsx b/src/components/ui/icon/index.tsx
index 5b432a194..04a00d0e0 100644
--- a/src/components/ui/icon/index.tsx
+++ b/src/components/ui/icon/index.tsx
@@ -5,18 +5,18 @@ import injectStyle, { WithStylesProps } from 'react-jss';
5 5
6import { Theme } from '../../../themes'; 6import { Theme } from '../../../themes';
7 7
8interface IProps extends WithStylesProps<typeof styles> {
9 icon: string;
10 size?: number;
11 className?: string;
12}
13
14const styles = (theme: Theme) => ({ 8const styles = (theme: Theme) => ({
15 icon: { 9 icon: {
16 fill: theme.colorText, 10 fill: theme.colorText,
17 }, 11 },
18}); 12});
19 13
14interface IProps extends WithStylesProps<typeof styles> {
15 icon: string;
16 size?: number;
17 className?: string;
18}
19
20class IconComponent extends Component<IProps> { 20class IconComponent extends Component<IProps> {
21 render(): ReactElement { 21 render(): ReactElement {
22 const { classes, icon, size = 1, className } = this.props; 22 const { classes, icon, size = 1, className } = this.props;
diff --git a/src/components/ui/infobox/index.tsx b/src/components/ui/infobox/index.tsx
index 28ec2ff90..a1c4f9d21 100644
--- a/src/components/ui/infobox/index.tsx
+++ b/src/components/ui/infobox/index.tsx
@@ -1,3 +1,4 @@
1/* eslint-disable no-use-before-define */
1import { mdiClose } from '@mdi/js'; 2import { mdiClose } from '@mdi/js';
2import classnames from 'classnames'; 3import classnames from 'classnames';
3import { noop } from 'lodash'; 4import { noop } from 'lodash';
diff --git a/src/components/ui/loader/index.tsx b/src/components/ui/loader/index.tsx
index 45f81ff3b..957899bdc 100644
--- a/src/components/ui/loader/index.tsx
+++ b/src/components/ui/loader/index.tsx
@@ -2,13 +2,9 @@ import classnames from 'classnames';
2import { Component } from 'react'; 2import { Component } from 'react';
3import injectStyle, { WithStylesProps } from 'react-jss'; 3import injectStyle, { WithStylesProps } from 'react-jss';
4import ReactLoader from 'react-loader'; 4import ReactLoader from 'react-loader';
5import { Theme } from '../../../themes';
5 6
6interface IProps extends WithStylesProps<typeof styles> { 7const styles = (theme: Theme) => ({
7 className?: string;
8 color?: string;
9}
10
11const styles = theme => ({
12 container: { 8 container: {
13 position: 'relative', 9 position: 'relative',
14 height: 60, 10 height: 60,
@@ -17,6 +13,11 @@ const styles = theme => ({
17 color: theme.colorText, 13 color: theme.colorText,
18}); 14});
19 15
16interface IProps extends WithStylesProps<typeof styles> {
17 className?: string;
18 color?: string;
19}
20
20class LoaderComponent extends Component<IProps> { 21class LoaderComponent extends Component<IProps> {
21 render() { 22 render() {
22 const { classes, className, color } = this.props; 23 const { classes, className, color } = this.props;
@@ -34,6 +35,7 @@ class LoaderComponent extends Component<IProps> {
34 width={4} 35 width={4}
35 scale={0.75} 36 scale={0.75}
36 color={color || classes.color} 37 color={color || classes.color}
38 // @ts-expect-error Property 'parentClassName' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<ReactLoader> & Readonly<LoaderProps></LoaderProps>
37 parentClassName={classes.loader} 39 parentClassName={classes.loader}
38 /> 40 />
39 </div> 41 </div>
diff --git a/src/components/ui/select/index.tsx b/src/components/ui/select/index.tsx
index 017de5423..650600fb3 100644
--- a/src/components/ui/select/index.tsx
+++ b/src/components/ui/select/index.tsx
@@ -191,12 +191,23 @@ class SelectComponent extends Component<IProps, IState> {
191 this.arrowKeysHandler = this.arrowKeysHandler.bind(this); 191 this.arrowKeysHandler = this.arrowKeysHandler.bind(this);
192 } 192 }
193 193
194 componentDidUpdate(): void { 194 UNSAFE_componentWillMount(): void {
195 const { open } = this.state; 195 const { value } = this.props;
196 196
197 if (this.searchInputRef?.current && open) { 197 if (this.componentRef?.current) {
198 this.searchInputRef.current.focus(); 198 this.componentRef.current.removeEventListener(
199 'keydown',
200 this.keyListener,
201 );
202 }
203
204 if (value) {
205 this.setState({
206 value,
207 });
199 } 208 }
209
210 this.setFilter();
200 } 211 }
201 212
202 componentDidMount(): void { 213 componentDidMount(): void {
@@ -212,23 +223,12 @@ class SelectComponent extends Component<IProps, IState> {
212 window.addEventListener('keydown', this.arrowKeysHandler, false); 223 window.addEventListener('keydown', this.arrowKeysHandler, false);
213 } 224 }
214 225
215 UNSAFE_componentWillMount(): void { 226 componentDidUpdate(): void {
216 const { value } = this.props; 227 const { open } = this.state;
217
218 if (this.componentRef?.current) {
219 this.componentRef.current.removeEventListener(
220 'keydown',
221 this.keyListener,
222 );
223 }
224 228
225 if (value) { 229 if (this.searchInputRef?.current && open) {
226 this.setState({ 230 this.searchInputRef.current.focus();
227 value,
228 });
229 } 231 }
230
231 this.setFilter();
232 } 232 }
233 233
234 componentWillUnmount(): void { 234 componentWillUnmount(): void {
@@ -301,11 +301,7 @@ class SelectComponent extends Component<IProps, IState> {
301 this.select(Object.keys(options!)[selected]); 301 this.select(Object.keys(options!)[selected]);
302 } 302 }
303 303
304 if ( 304 if (this.activeOptionRef?.current && this.scrollContainerRef?.current) {
305 this.activeOptionRef?.current &&
306 this.scrollContainerRef &&
307 this.scrollContainerRef.current
308 ) {
309 const containerTopOffset = this.scrollContainerRef.current.offsetTop; 305 const containerTopOffset = this.scrollContainerRef.current.offsetTop;
310 const optionTopOffset = this.activeOptionRef.current.offsetTop; 306 const optionTopOffset = this.activeOptionRef.current.offsetTop;
311 307
diff --git a/src/components/ui/toggle/index.tsx b/src/components/ui/toggle/index.tsx
index 48f68943b..275d28bf6 100644
--- a/src/components/ui/toggle/index.tsx
+++ b/src/components/ui/toggle/index.tsx
@@ -9,13 +9,6 @@ import Label from '../label';
9import { IFormField } from '../typings/generic'; 9import { IFormField } from '../typings/generic';
10import Wrapper from '../wrapper'; 10import Wrapper from '../wrapper';
11 11
12interface IProps
13 extends InputHTMLAttributes<HTMLInputElement>,
14 IFormField,
15 WithStylesProps<typeof styles> {
16 className?: string;
17}
18
19const buttonTransition: string = window?.matchMedia( 12const buttonTransition: string = window?.matchMedia(
20 '(prefers-reduced-motion: no-preference)', 13 '(prefers-reduced-motion: no-preference)',
21) 14)
@@ -62,6 +55,13 @@ const styles = (theme: Theme) => ({
62 }, 55 },
63}); 56});
64 57
58interface IProps
59 extends InputHTMLAttributes<HTMLInputElement>,
60 IFormField,
61 WithStylesProps<typeof styles> {
62 className?: string;
63}
64
65class Toggle extends Component<IProps> { 65class Toggle extends Component<IProps> {
66 render(): ReactElement { 66 render(): ReactElement {
67 const { 67 const {
diff --git a/src/components/ui/typings/generic.ts b/src/components/ui/typings/generic.ts
index 3aec0bc40..bf45e4ce0 100644
--- a/src/components/ui/typings/generic.ts
+++ b/src/components/ui/typings/generic.ts
@@ -6,5 +6,5 @@ export interface IFormField {
6 noMargin?: boolean; 6 noMargin?: boolean;
7} 7}
8 8
9export type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
10export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; 9export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
10export type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
diff --git a/src/components/ui/wrapper/index.tsx b/src/components/ui/wrapper/index.tsx
index d733d050e..450d09fd1 100644
--- a/src/components/ui/wrapper/index.tsx
+++ b/src/components/ui/wrapper/index.tsx
@@ -2,10 +2,12 @@ import classnames from 'classnames';
2import { Component, ReactNode } from 'react'; 2import { Component, ReactNode } from 'react';
3import injectStyle, { WithStylesProps } from 'react-jss'; 3import injectStyle, { WithStylesProps } from 'react-jss';
4 4
5// eslint-disable-next-line no-use-before-define
5interface IProps extends WithStylesProps<typeof styles> { 6interface IProps extends WithStylesProps<typeof styles> {
6 children: ReactNode; 7 children: ReactNode;
7 className?: string; 8 className?: string;
8 identifier: string; 9 identifier: string;
10 // eslint-disable-next-line react/no-unused-prop-types
9 noMargin?: boolean; 11 noMargin?: boolean;
10} 12}
11 13
diff --git a/src/components/util/ErrorBoundary/index.tsx b/src/components/util/ErrorBoundary/index.tsx
index bef211ef9..66f860835 100644
--- a/src/components/util/ErrorBoundary/index.tsx
+++ b/src/components/util/ErrorBoundary/index.tsx
@@ -23,10 +23,18 @@ interface ErrorBoundaryProps extends WithStylesProps<typeof styles> {
23 children?: React.ReactNode; 23 children?: React.ReactNode;
24} 24}
25 25
26class ErrorBoundary extends Component<ErrorBoundaryProps> { 26interface ErrorBoundaryState {
27 state = { 27 hasError: boolean;
28 hasError: false, 28}
29 }; 29
30class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
31 constructor(props) {
32 super(props);
33
34 this.state = {
35 hasError: false,
36 };
37 }
30 38
31 componentDidCatch(): void { 39 componentDidCatch(): void {
32 this.setState({ hasError: true }); 40 this.setState({ hasError: true });
diff --git a/src/config.ts b/src/config.ts
index 336085685..21a7462b9 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -92,9 +92,9 @@ export const NAVIGATION_BAR_BEHAVIOURS = {
92 never: 'Never show navigation bar', 92 never: 'Never show navigation bar',
93}; 93};
94 94
95export const SEARCH_ENGINE_STARTPAGE = 'startPage'; 95const SEARCH_ENGINE_STARTPAGE = 'startPage';
96export const SEARCH_ENGINE_GOOGLE = 'google'; 96const SEARCH_ENGINE_GOOGLE = 'google';
97export const SEARCH_ENGINE_DDG = 'duckDuckGo'; 97const SEARCH_ENGINE_DDG = 'duckDuckGo';
98export const SEARCH_ENGINE_NAMES = { 98export const SEARCH_ENGINE_NAMES = {
99 [SEARCH_ENGINE_STARTPAGE]: 'Startpage', 99 [SEARCH_ENGINE_STARTPAGE]: 'Startpage',
100 [SEARCH_ENGINE_GOOGLE]: 'Google', 100 [SEARCH_ENGINE_GOOGLE]: 'Google',
diff --git a/src/containers/auth/AuthReleaseNotesScreen.tsx b/src/containers/auth/AuthReleaseNotesScreen.tsx
index c717529fa..c9d2286e1 100644
--- a/src/containers/auth/AuthReleaseNotesScreen.tsx
+++ b/src/containers/auth/AuthReleaseNotesScreen.tsx
@@ -1,7 +1,7 @@
1import { Component } from 'react'; 1import { Component } from 'react';
2import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
3 3
4import { defineMessages, injectIntl } from 'react-intl'; 4import { IntlShape, defineMessages, injectIntl } from 'react-intl';
5import Markdown from 'markdown-to-jsx'; 5import Markdown from 'markdown-to-jsx';
6import { mdiArrowLeftCircle } from '@mdi/js'; 6import { mdiArrowLeftCircle } from '@mdi/js';
7import { openExternalUrl } from '../../helpers/url-helpers'; 7import { openExternalUrl } from '../../helpers/url-helpers';
@@ -20,14 +20,14 @@ const messages = defineMessages({
20}); 20});
21 21
22interface IProps { 22interface IProps {
23 intl: any; 23 intl: IntlShape;
24} 24}
25 25
26class AuthReleaseNotesScreen extends Component<IProps> { 26interface IState {
27 state = { 27 data: string;
28 data: '', 28}
29 };
30 29
30class AuthReleaseNotesScreen extends Component<IProps, IState> {
31 constructor(props) { 31 constructor(props) {
32 super(props); 32 super(props);
33 33
diff --git a/src/containers/auth/WelcomeScreen.tsx b/src/containers/auth/WelcomeScreen.tsx
index 561eef236..1f3f50e4a 100644
--- a/src/containers/auth/WelcomeScreen.tsx
+++ b/src/containers/auth/WelcomeScreen.tsx
@@ -8,10 +8,6 @@ interface IProps extends Partial<StoresProps> {}
8@inject('stores', 'actions') 8@inject('stores', 'actions')
9@observer 9@observer
10class WelcomeScreen extends Component<IProps> { 10class WelcomeScreen extends Component<IProps> {
11 constructor(props: IProps) {
12 super(props);
13 }
14
15 render(): ReactElement { 11 render(): ReactElement {
16 const { user, recipePreviews } = this.props.stores!; 12 const { user, recipePreviews } = this.props.stores!;
17 13
diff --git a/src/containers/layout/AppLayoutContainer.tsx b/src/containers/layout/AppLayoutContainer.tsx
index 1929492ff..e30c0e067 100644
--- a/src/containers/layout/AppLayoutContainer.tsx
+++ b/src/containers/layout/AppLayoutContainer.tsx
@@ -74,7 +74,6 @@ class AppLayoutContainer extends Component<IProps> {
74 74
75 const workspacesDrawer = ( 75 const workspacesDrawer = (
76 <WorkspaceDrawer 76 <WorkspaceDrawer
77 // eslint-disable-next-line no-confusing-arrow
78 getServicesForWorkspace={workspace => 77 getServicesForWorkspace={workspace =>
79 workspace 78 workspace
80 ? workspaceStore.getWorkspaceServices(workspace).map(s => s.name) 79 ? workspaceStore.getWorkspaceServices(workspace).map(s => s.name)
diff --git a/src/containers/settings/EditSettingsScreen.tsx b/src/containers/settings/EditSettingsScreen.tsx
index 0f3359bfc..b9732ead0 100644
--- a/src/containers/settings/EditSettingsScreen.tsx
+++ b/src/containers/settings/EditSettingsScreen.tsx
@@ -319,12 +319,23 @@ const messages = defineMessages({
319 319
320interface EditSettingsScreenProps extends StoresProps, WrappedComponentProps {} 320interface EditSettingsScreenProps extends StoresProps, WrappedComponentProps {}
321 321
322interface EditSettingsScreenState {
323 lockedPassword: string;
324}
325
322@inject('stores', 'actions') 326@inject('stores', 'actions')
323@observer 327@observer
324class EditSettingsScreen extends Component<EditSettingsScreenProps> { 328class EditSettingsScreen extends Component<
325 state = { 329 EditSettingsScreenProps,
326 lockedPassword: '', 330 EditSettingsScreenState
327 }; 331> {
332 constructor(props) {
333 super(props);
334
335 this.state = {
336 lockedPassword: '',
337 };
338 }
328 339
329 onSubmit(settingsData) { 340 onSubmit(settingsData) {
330 const { todos, workspaces } = this.props.stores; 341 const { todos, workspaces } = this.props.stores;
@@ -1172,8 +1183,6 @@ class EditSettingsScreen extends Component<EditSettingsScreenProps> {
1172 }; 1183 };
1173 } 1184 }
1174 1185
1175 // @ts-ignore: Remove this ignore once mobx-react-form v4 with typescript
1176 // support has been released.
1177 return new Form(config); 1186 return new Form(config);
1178 } 1187 }
1179 1188
diff --git a/src/containers/settings/EditUserScreen.tsx b/src/containers/settings/EditUserScreen.tsx
index 0d6c47da5..62df170fc 100644
--- a/src/containers/settings/EditUserScreen.tsx
+++ b/src/containers/settings/EditUserScreen.tsx
@@ -1,6 +1,6 @@
1import { Component, ReactElement } from 'react'; 1import { Component, ReactElement } from 'react';
2import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
3import { defineMessages, injectIntl } from 'react-intl'; 3import { IntlShape, defineMessages, injectIntl } from 'react-intl';
4 4
5import { StoresProps } from '../../@types/ferdium-components.types'; 5import { StoresProps } from '../../@types/ferdium-components.types';
6import { FormFields } from '../../@types/mobx-form.types'; 6import { FormFields } from '../../@types/mobx-form.types';
@@ -50,7 +50,7 @@ const messages = defineMessages({
50}); 50});
51 51
52interface EditUserScreenProps extends StoresProps { 52interface EditUserScreenProps extends StoresProps {
53 intl: any; 53 intl: IntlShape;
54} 54}
55 55
56class EditUserScreen extends Component<EditUserScreenProps> { 56class EditUserScreen extends Component<EditUserScreenProps> {
@@ -126,8 +126,6 @@ class EditUserScreen extends Component<EditUserScreenProps> {
126 }, 126 },
127 }; 127 };
128 128
129 // @ts-ignore: Remove this ignore once mobx-react-form v4 with typescript
130 // support has been released.
131 return new Form(config); 129 return new Form(config);
132 } 130 }
133 131
diff --git a/src/electron/exception.ts b/src/electron/exception.ts
index ada98d17b..a445a6475 100644
--- a/src/electron/exception.ts
+++ b/src/electron/exception.ts
@@ -1,3 +1,4 @@
1// eslint-disable-next-line unicorn/no-empty-file
1process.on('uncaughtException', err => { 2process.on('uncaughtException', err => {
2 // handle the error safely 3 // handle the error safely
3 console.error(err); 4 console.error(err);
diff --git a/src/electron/ipc-api/appIndicator.ts b/src/electron/ipc-api/appIndicator.ts
index 766e6937a..c3232d89f 100644
--- a/src/electron/ipc-api/appIndicator.ts
+++ b/src/electron/ipc-api/appIndicator.ts
@@ -1,5 +1,5 @@
1import { app, ipcMain, BrowserWindow } from 'electron'; 1import { app, ipcMain, BrowserWindow } from 'electron';
2import { join } from 'path'; 2import { join } from 'node:path';
3import { autorun } from 'mobx'; 3import { autorun } from 'mobx';
4import { isMac, isWindows, isLinux } from '../../environment'; 4import { isMac, isWindows, isLinux } from '../../environment';
5import TrayIcon from '../../lib/Tray'; 5import TrayIcon from '../../lib/Tray';
diff --git a/src/electron/ipc-api/dnd.ts b/src/electron/ipc-api/dnd.ts
index 9bef0fe3c..6e6e0920f 100644
--- a/src/electron/ipc-api/dnd.ts
+++ b/src/electron/ipc-api/dnd.ts
@@ -9,8 +9,7 @@ export default async () => {
9 return false; 9 return false;
10 } 10 }
11 11
12 // eslint-disable-next-line global-require 12 const { getDoNotDisturb } = await import('macos-notification-state');
13 const { getDoNotDisturb } = require('macos-notification-state');
14 13
15 if (!getDoNotDisturb) { 14 if (!getDoNotDisturb) {
16 debug("Could not load 'macos-notification-state' module"); 15 debug("Could not load 'macos-notification-state' module");
diff --git a/src/electron/ipc-api/download.ts b/src/electron/ipc-api/download.ts
index 851bff4c3..0c7e022d4 100644
--- a/src/electron/ipc-api/download.ts
+++ b/src/electron/ipc-api/download.ts
@@ -1,7 +1,7 @@
1import { ipcMain, dialog, BrowserWindow } from 'electron'; 1import { ipcMain, dialog, BrowserWindow } from 'electron';
2import { download } from 'electron-dl'; 2import { download } from 'electron-dl';
3import { writeFileSync } from 'fs-extra'; 3import { writeFileSync } from 'fs-extra';
4import { PathLike } from 'fs'; 4import { PathLike } from 'node:fs';
5 5
6const debug = require('../../preload-safe-debug')('Ferdium:ipcApi:download'); 6const debug = require('../../preload-safe-debug')('Ferdium:ipcApi:download');
7 7
diff --git a/src/electron/ipc-api/localServer.ts b/src/electron/ipc-api/localServer.ts
index 6264e719d..5fdfad32c 100644
--- a/src/electron/ipc-api/localServer.ts
+++ b/src/electron/ipc-api/localServer.ts
@@ -1,6 +1,6 @@
1import { randomBytes } from 'crypto'; 1import { randomBytes } from 'node:crypto';
2import { ipcMain, BrowserWindow } from 'electron'; 2import { ipcMain, BrowserWindow } from 'electron';
3import { createServer } from 'net'; 3import { createServer } from 'node:net';
4import { LOCAL_HOSTNAME, LOCAL_PORT } from '../../config'; 4import { LOCAL_HOSTNAME, LOCAL_PORT } from '../../config';
5import { userDataPath } from '../../environment-remote'; 5import { userDataPath } from '../../environment-remote';
6import { server } from '../../internal-server/start'; 6import { server } from '../../internal-server/start';
diff --git a/src/electron/macOSPermissions.ts b/src/electron/macOSPermissions.ts
index c9f22aecb..90056f59c 100644
--- a/src/electron/macOSPermissions.ts
+++ b/src/electron/macOSPermissions.ts
@@ -1,7 +1,8 @@
1import { systemPreferences, BrowserWindow, dialog } from 'electron'; 1import { systemPreferences, BrowserWindow, dialog } from 'electron';
2import { pathExistsSync, mkdirSync, writeFileSync } from 'fs-extra'; 2import { pathExistsSync, mkdirSync, writeFileSync } from 'fs-extra';
3import macosVersion from 'macos-version'; 3import macosVersion from 'macos-version';
4import { dirname } from 'path'; 4import { dirname } from 'node:path';
5// eslint-disable-next-line @typescript-eslint/ban-ts-comment, @typescript-eslint/prefer-ts-expect-error
5// @ts-ignore 6// @ts-ignore
6import { askForScreenCaptureAccess } from 'node-mac-permissions'; 7import { askForScreenCaptureAccess } from 'node-mac-permissions';
7import { userDataPath } from '../environment-remote'; 8import { userDataPath } from '../environment-remote';
diff --git a/src/environment-remote.ts b/src/environment-remote.ts
index 5f2b68dab..691e19ef4 100644
--- a/src/environment-remote.ts
+++ b/src/environment-remote.ts
@@ -1,4 +1,4 @@
1import { join } from 'path'; 1import { join } from 'node:path';
2import { api as electronApi } from './electron-util'; 2import { api as electronApi } from './electron-util';
3import { 3import {
4 LIVE_FERDIUM_API, 4 LIVE_FERDIUM_API,
diff --git a/src/environment.ts b/src/environment.ts
index 0ba7774cd..c3b9e7e58 100644
--- a/src/environment.ts
+++ b/src/environment.ts
@@ -1,6 +1,6 @@
1// Note: This file has now become devoid of all references to values deduced from the remote process - all those now live in the `environment-remote.js` file 1// Note: This file has now become devoid of all references to values deduced from the remote process - all those now live in the `environment-remote.js` file
2 2
3import { arch, release } from 'os'; 3import { arch, release } from 'node:os';
4 4
5export const isMac = process.platform === 'darwin'; 5export const isMac = process.platform === 'darwin';
6export const isWindows = process.platform === 'win32'; 6export const isWindows = process.platform === 'win32';
@@ -43,4 +43,4 @@ export const splitModeToggleShortcutKey = (isAccelerator = true) =>
43export const settingsShortcutKey = (isAccelerator = true) => 43export const settingsShortcutKey = (isAccelerator = true) =>
44 `${cmdOrCtrlShortcutKey(isAccelerator)}+${isMac ? ',' : 'P'}`; 44 `${cmdOrCtrlShortcutKey(isAccelerator)}+${isMac ? ',' : 'P'}`;
45export const toggleFullScreenKey = () => 45export const toggleFullScreenKey = () =>
46 isMac ? `CTRL + ${cmdKey} + F` : `F11`; 46 isMac ? `CTRL + ${cmdKey} + F` : 'F11';
diff --git a/src/features/appearance/index.ts b/src/features/appearance/index.ts
index da75bf57b..46403275e 100644
--- a/src/features/appearance/index.ts
+++ b/src/features/appearance/index.ts
@@ -146,12 +146,13 @@ function generateServiceRibbonWidthStyle(
146) { 146) {
147 const width = Number(widthStr); 147 const width = Number(widthStr);
148 const iconSize = Number(iconSizeStr) - iconSizeBias; 148 const iconSize = Number(iconSizeStr) - iconSizeBias;
149 let fontSize = 11;
150 let tabItemHeightBias = -5;
151 let sidebarSizeBias = 22;
152 const tabItemWidthBias = 3; 149 const tabItemWidthBias = 3;
153 const verticalStyleOffset = 29; 150 const verticalStyleOffset = 29;
154 151
152 let fontSize: number;
153 let tabItemHeightBias: number;
154 let sidebarSizeBias: number;
155
155 switch (width) { 156 switch (width) {
156 case 35: { 157 case 35: {
157 fontSize = 9; 158 fontSize = 9;
diff --git a/src/features/communityRecipes/store.ts b/src/features/communityRecipes/store.ts
index d3b3318fa..1c21908e2 100644
--- a/src/features/communityRecipes/store.ts
+++ b/src/features/communityRecipes/store.ts
@@ -37,5 +37,3 @@ export class CommunityRecipesStore extends FeatureStore {
37 ); 37 );
38 } 38 }
39} 39}
40
41export default CommunityRecipesStore;
diff --git a/src/features/serviceProxy/index.ts b/src/features/serviceProxy/index.ts
index eb3b89ece..c98ae00a7 100644
--- a/src/features/serviceProxy/index.ts
+++ b/src/features/serviceProxy/index.ts
@@ -33,11 +33,7 @@ export default function init(stores: {
33 if (config.isEnabled) { 33 if (config.isEnabled) {
34 const serviceProxyConfig = proxySettings[service.id]; 34 const serviceProxyConfig = proxySettings[service.id];
35 35
36 if ( 36 if (serviceProxyConfig?.isEnabled && serviceProxyConfig.host) {
37 serviceProxyConfig &&
38 serviceProxyConfig.isEnabled &&
39 serviceProxyConfig.host
40 ) {
41 const proxyHost = `${serviceProxyConfig.host}${ 37 const proxyHost = `${serviceProxyConfig.host}${
42 serviceProxyConfig.port ? `:${serviceProxyConfig.port}` : '' 38 serviceProxyConfig.port ? `:${serviceProxyConfig.port}` : ''
43 }`; 39 }`;
diff --git a/src/features/todos/actions.ts b/src/features/todos/actions.ts
index 31b14d40b..5273cc858 100644
--- a/src/features/todos/actions.ts
+++ b/src/features/todos/actions.ts
@@ -44,5 +44,3 @@ export const todoActions = createActionsFromDefinitions<TodoActionsType>(
44 }, 44 },
45 PropTypes.checkPropTypes, 45 PropTypes.checkPropTypes,
46); 46);
47
48export default todoActions;
diff --git a/src/features/webControls/components/WebControls.tsx b/src/features/webControls/components/WebControls.tsx
index e76fca6a2..54f45c843 100644
--- a/src/features/webControls/components/WebControls.tsx
+++ b/src/features/webControls/components/WebControls.tsx
@@ -9,6 +9,7 @@ import {
9 mdiHomeOutline, 9 mdiHomeOutline,
10 mdiEarth, 10 mdiEarth,
11} from '@mdi/js'; 11} from '@mdi/js';
12import { Tooltip as ReactTooltip } from 'react-tooltip';
12import Icon from '../../../components/ui/icon'; 13import Icon from '../../../components/ui/icon';
13 14
14const messages = defineMessages({ 15const messages = defineMessages({
@@ -151,7 +152,8 @@ class WebControls extends Component<IProps, IState> {
151 onClick={goHome} 152 onClick={goHome}
152 type="button" 153 type="button"
153 className={classes.button} 154 className={classes.button}
154 data-tip={intl.formatMessage(messages.goHome)} 155 data-tooltip-id="tooltip-web-controls"
156 data-tooltip-content={intl.formatMessage(messages.goHome)}
155 data-place="bottom" 157 data-place="bottom"
156 > 158 >
157 <Icon icon={mdiHomeOutline} className={classes.icon} /> 159 <Icon icon={mdiHomeOutline} className={classes.icon} />
@@ -161,7 +163,8 @@ class WebControls extends Component<IProps, IState> {
161 type="button" 163 type="button"
162 className={classes.button} 164 className={classes.button}
163 disabled={!canGoBack} 165 disabled={!canGoBack}
164 data-tip={intl.formatMessage(messages.back)} 166 data-tooltip-id="tooltip-web-controls"
167 data-tooltip-content={intl.formatMessage(messages.back)}
165 data-place="bottom" 168 data-place="bottom"
166 > 169 >
167 <Icon icon={mdiArrowLeft} className={classes.icon} /> 170 <Icon icon={mdiArrowLeft} className={classes.icon} />
@@ -171,7 +174,8 @@ class WebControls extends Component<IProps, IState> {
171 type="button" 174 type="button"
172 className={classes.button} 175 className={classes.button}
173 disabled={!canGoForward} 176 disabled={!canGoForward}
174 data-tip={intl.formatMessage(messages.forward)} 177 data-tooltip-id="tooltip-web-controls"
178 data-tooltip-content={intl.formatMessage(messages.forward)}
175 data-place="bottom" 179 data-place="bottom"
176 > 180 >
177 <Icon icon={mdiArrowRight} className={classes.icon} /> 181 <Icon icon={mdiArrowRight} className={classes.icon} />
@@ -180,7 +184,8 @@ class WebControls extends Component<IProps, IState> {
180 onClick={reload} 184 onClick={reload}
181 type="button" 185 type="button"
182 className={classes.button} 186 className={classes.button}
183 data-tip={intl.formatMessage(messages.reload)} 187 data-tooltip-id="tooltip-web-controls"
188 data-tooltip-content={intl.formatMessage(messages.reload)}
184 data-place="bottom" 189 data-place="bottom"
185 > 190 >
186 <Icon icon={mdiReload} className={classes.icon} /> 191 <Icon icon={mdiReload} className={classes.icon} />
@@ -232,11 +237,18 @@ class WebControls extends Component<IProps, IState> {
232 onClick={openInBrowser} 237 onClick={openInBrowser}
233 type="button" 238 type="button"
234 className={classes.button} 239 className={classes.button}
235 data-tip={intl.formatMessage(messages.openInBrowser)} 240 data-tooltip-id="tooltip-web-controls"
241 data-tooltip-content={intl.formatMessage(messages.openInBrowser)}
236 data-place="bottom" 242 data-place="bottom"
237 > 243 >
238 <Icon icon={mdiEarth} className={classes.icon} /> 244 <Icon icon={mdiEarth} className={classes.icon} />
239 </button> 245 </button>
246 <ReactTooltip
247 id="tooltip-web-controls"
248 place="bottom"
249 variant="dark"
250 style={{ height: 'auto' }}
251 />
240 </div> 252 </div>
241 ); 253 );
242 } 254 }
diff --git a/src/features/workspaces/actions.ts b/src/features/workspaces/actions.ts
index 5f3fefec4..cfe4f9e8e 100644
--- a/src/features/workspaces/actions.ts
+++ b/src/features/workspaces/actions.ts
@@ -3,7 +3,8 @@ import Workspace from './models/Workspace';
3import { createActionsFromDefinitions } from '../../actions/lib/actions'; 3import { createActionsFromDefinitions } from '../../actions/lib/actions';
4 4
5type WorkspaceArg = { workspace: Workspace }; 5type WorkspaceArg = { workspace: Workspace };
6export interface WorkspaceActions { 6
7interface WorkspaceActions {
7 openWorkspaceSettings: () => void; 8 openWorkspaceSettings: () => void;
8 toggleWorkspaceDrawer: () => void; 9 toggleWorkspaceDrawer: () => void;
9 deactivate: () => void; 10 deactivate: () => void;
diff --git a/src/features/workspaces/components/WorkspaceDrawer.tsx b/src/features/workspaces/components/WorkspaceDrawer.tsx
index 61284d81a..3e05cb7de 100644
--- a/src/features/workspaces/components/WorkspaceDrawer.tsx
+++ b/src/features/workspaces/components/WorkspaceDrawer.tsx
@@ -2,7 +2,7 @@ import { Component, ReactElement } from 'react';
2import { observer } from 'mobx-react'; 2import { observer } from 'mobx-react';
3import withStyles, { WithStylesProps } from 'react-jss'; 3import withStyles, { WithStylesProps } from 'react-jss';
4import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 4import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
5import ReactTooltip from 'react-tooltip'; 5import { Tooltip as ReactTooltip } from 'react-tooltip';
6import { mdiPlusBox, mdiCog } from '@mdi/js'; 6import { mdiPlusBox, mdiCog } from '@mdi/js';
7import { noop } from 'lodash'; 7import { noop } from 'lodash';
8import { H1 } from '../../../components/ui/headline'; 8import { H1 } from '../../../components/ui/headline';
@@ -96,9 +96,9 @@ interface IProps extends WithStylesProps<typeof styles>, WrappedComponentProps {
96class WorkspaceDrawer extends Component<IProps> { 96class WorkspaceDrawer extends Component<IProps> {
97 componentDidMount(): void { 97 componentDidMount(): void {
98 try { 98 try {
99 ReactTooltip.rebuild();
100 getUserWorkspacesRequest.execute(); 99 getUserWorkspacesRequest.execute();
101 } catch (error) { 100 } catch (error) {
101 // eslint-disable-next-line no-console
102 console.log(error); 102 console.log(error);
103 } 103 }
104 } 104 }
@@ -121,9 +121,10 @@ class WorkspaceDrawer extends Component<IProps> {
121 onClick={() => { 121 onClick={() => {
122 workspaceActions.openWorkspaceSettings(); 122 workspaceActions.openWorkspaceSettings();
123 }} 123 }}
124 data-tip={`${intl.formatMessage( 124 data-tooltip-id="tooltip-workspaces-drawer"
125 data-tooltip-content={intl.formatMessage(
125 messages.workspacesSettingsTooltip, 126 messages.workspacesSettingsTooltip,
126 )}`} 127 )}
127 > 128 >
128 <Icon 129 <Icon
129 icon={mdiCog} 130 icon={mdiCog}
@@ -176,7 +177,12 @@ class WorkspaceDrawer extends Component<IProps> {
176 <span>{intl.formatMessage(messages.addNewWorkspaceLabel)}</span> 177 <span>{intl.formatMessage(messages.addNewWorkspaceLabel)}</span>
177 </div> 178 </div>
178 </div> 179 </div>
179 <ReactTooltip place="right" type="dark" effect="solid" /> 180 <ReactTooltip
181 id="tooltip-workspaces-drawer"
182 place="right"
183 variant="dark"
184 style={{ height: 'auto', zIndex: 210 }}
185 />
180 </div> 186 </div>
181 ); 187 );
182 } 188 }
diff --git a/src/features/workspaces/components/WorkspaceDrawerItem.tsx b/src/features/workspaces/components/WorkspaceDrawerItem.tsx
index cf8c3b2ba..4fd7662f5 100644
--- a/src/features/workspaces/components/WorkspaceDrawerItem.tsx
+++ b/src/features/workspaces/components/WorkspaceDrawerItem.tsx
@@ -72,6 +72,7 @@ interface IProps extends WithStylesProps<typeof styles>, WrappedComponentProps {
72 name: string; 72 name: string;
73 onClick: MouseEventHandler<HTMLInputElement>; 73 onClick: MouseEventHandler<HTMLInputElement>;
74 services: string[]; 74 services: string[];
75 // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
75 onContextMenuEditClick?: () => void | null; 76 onContextMenuEditClick?: () => void | null;
76 shortcutIndex: number; 77 shortcutIndex: number;
77} 78}
@@ -119,7 +120,8 @@ class WorkspaceDrawerItem extends Component<IProps> {
119 } 120 }
120 }} 121 }}
121 onKeyDown={noop} 122 onKeyDown={noop}
122 data-tip={acceleratorString( 123 data-tooltip-id="tooltip-workspaces-drawer"
124 data-tooltip-content={acceleratorString(
123 shortcutIndex, 125 shortcutIndex,
124 `${cmdOrCtrlShortcutKey(false)}+${altKey(false)}`, 126 `${cmdOrCtrlShortcutKey(false)}+${altKey(false)}`,
125 )} 127 )}
diff --git a/src/features/workspaces/components/WorkspacesDashboard.tsx b/src/features/workspaces/components/WorkspacesDashboard.tsx
index c5f8909c1..ba06730a0 100644
--- a/src/features/workspaces/components/WorkspacesDashboard.tsx
+++ b/src/features/workspaces/components/WorkspacesDashboard.tsx
@@ -1,4 +1,3 @@
1/* eslint-disable react/jsx-no-useless-fragment */
2import { Component, ReactElement } from 'react'; 1import { Component, ReactElement } from 'react';
3import { observer } from 'mobx-react'; 2import { observer } from 'mobx-react';
4import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 3import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
@@ -153,6 +152,7 @@ class WorkspacesDashboard extends Component<IProps> {
153 {intl.formatMessage(messages.workspacesRequestFailed)} 152 {intl.formatMessage(messages.workspacesRequestFailed)}
154 </Infobox> 153 </Infobox>
155 ) : ( 154 ) : (
155 // eslint-disable-next-line react/jsx-no-useless-fragment
156 <> 156 <>
157 {workspaces.length === 0 ? ( 157 {workspaces.length === 0 ? (
158 <div className="align-middle settings__empty-state"> 158 <div className="align-middle settings__empty-state">
diff --git a/src/features/workspaces/containers/EditWorkspaceScreen.tsx b/src/features/workspaces/containers/EditWorkspaceScreen.tsx
index 0b66db0d0..abc747c33 100644
--- a/src/features/workspaces/containers/EditWorkspaceScreen.tsx
+++ b/src/features/workspaces/containers/EditWorkspaceScreen.tsx
@@ -9,11 +9,10 @@ import { workspaceStore } from '../index';
9import { deleteWorkspaceRequest, updateWorkspaceRequest } from '../api'; 9import { deleteWorkspaceRequest, updateWorkspaceRequest } from '../api';
10 10
11class EditWorkspaceScreen extends Component<StoresProps> { 11class EditWorkspaceScreen extends Component<StoresProps> {
12 // @ts-expect-error Not all code paths return a value.
13 onDelete = () => { 12 onDelete = () => {
14 const { workspaceBeingEdited } = workspaceStore; 13 const { workspaceBeingEdited } = workspaceStore;
15 const { actions } = this.props; 14 const { actions } = this.props;
16 if (!workspaceBeingEdited) return null; 15 if (!workspaceBeingEdited) return;
17 actions.workspaces.delete({ workspace: workspaceBeingEdited }); 16 actions.workspaces.delete({ workspace: workspaceBeingEdited });
18 }; 17 };
19 18
diff --git a/src/features/workspaces/store.ts b/src/features/workspaces/store.ts
index 53e3b62ed..34a4126c8 100644
--- a/src/features/workspaces/store.ts
+++ b/src/features/workspaces/store.ts
@@ -64,6 +64,7 @@ export default class WorkspacesStore extends FeatureStore {
64 return getUserWorkspacesRequest.wasExecuted && this.workspaces.length > 0; 64 return getUserWorkspacesRequest.wasExecuted && this.workspaces.length > 0;
65 } 65 }
66 66
67 // eslint-disable-next-line @typescript-eslint/class-literal-property-style
67 @computed get isUserAllowedToUseFeature() { 68 @computed get isUserAllowedToUseFeature() {
68 return true; 69 return true;
69 } 70 }
diff --git a/src/helpers/asar-helpers.ts b/src/helpers/asar-helpers.ts
index 9d975c193..77dd50bb1 100644
--- a/src/helpers/asar-helpers.ts
+++ b/src/helpers/asar-helpers.ts
@@ -1,4 +1,4 @@
1import { join } from 'path'; 1import { join } from 'node:path';
2 2
3export function asarPath(dir: string = '') { 3export function asarPath(dir: string = '') {
4 return dir.replace('app.asar', 'app.asar.unpacked'); 4 return dir.replace('app.asar', 'app.asar.unpacked');
diff --git a/src/helpers/password-helpers.ts b/src/helpers/password-helpers.ts
index d5f2d0c49..75ef5606a 100644
--- a/src/helpers/password-helpers.ts
+++ b/src/helpers/password-helpers.ts
@@ -1,4 +1,4 @@
1import { createHash, BinaryLike } from 'crypto'; 1import { createHash, BinaryLike } from 'node:crypto';
2 2
3export function hash(password: BinaryLike): string { 3export function hash(password: BinaryLike): string {
4 return createHash('sha256').update(password).digest('base64'); 4 return createHash('sha256').update(password).digest('base64');
diff --git a/src/helpers/recipe-helpers.ts b/src/helpers/recipe-helpers.ts
index 93c107cc5..500be0cfc 100644
--- a/src/helpers/recipe-helpers.ts
+++ b/src/helpers/recipe-helpers.ts
@@ -1,6 +1,6 @@
1/* eslint-disable import/no-import-module-exports */ 1/* eslint-disable import/no-import-module-exports */
2/* eslint-disable global-require */ 2/* eslint-disable global-require */
3import { parse } from 'path'; 3import { parse } from 'node:path';
4import { userDataRecipesPath } from '../environment-remote'; 4import { userDataRecipesPath } from '../environment-remote';
5 5
6export function getRecipeDirectory(id: string = ''): string { 6export function getRecipeDirectory(id: string = ''): string {
@@ -15,6 +15,7 @@ export function loadRecipeConfig(recipeId: string) {
15 try { 15 try {
16 const configPath = `${recipeId}/package.json`; 16 const configPath = `${recipeId}/package.json`;
17 // Delete module from cache 17 // Delete module from cache
18 // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
18 delete require.cache[require.resolve(configPath)]; 19 delete require.cache[require.resolve(configPath)];
19 20
20 // eslint-disable-next-line import/no-dynamic-require 21 // eslint-disable-next-line import/no-dynamic-require
diff --git a/src/helpers/url-helpers.ts b/src/helpers/url-helpers.ts
index 795d3f2cb..fe637bb08 100644
--- a/src/helpers/url-helpers.ts
+++ b/src/helpers/url-helpers.ts
@@ -1,5 +1,5 @@
1// This is taken from: https://benjamin-altpeter.de/shell-openexternal-dangers/ 1// This is taken from: https://benjamin-altpeter.de/shell-openexternal-dangers/
2import { URL } from 'url'; 2import { URL } from 'node:url';
3import { ensureDirSync, existsSync } from 'fs-extra'; 3import { ensureDirSync, existsSync } from 'fs-extra';
4import { shell } from 'electron'; 4import { shell } from 'electron';
5import normalizeUrl from 'normalize-url'; 5import normalizeUrl from 'normalize-url';
diff --git a/src/helpers/userAgent-helpers.ts b/src/helpers/userAgent-helpers.ts
index a89207326..bc99fbc52 100644
--- a/src/helpers/userAgent-helpers.ts
+++ b/src/helpers/userAgent-helpers.ts
@@ -1,4 +1,4 @@
1import { cpus } from 'os'; 1import { cpus } from 'node:os';
2import macosVersion from 'macos-version'; 2import macosVersion from 'macos-version';
3import { chrome } from 'useragent-generator'; 3import { chrome } from 'useragent-generator';
4import { 4import {
@@ -14,6 +14,7 @@ function macOS() {
14 const version = macosVersion() ?? ''; 14 const version = macosVersion() ?? '';
15 let cpuName = cpus()[0].model.split(' ')[0]; 15 let cpuName = cpus()[0].model.split(' ')[0];
16 if (cpuName && /\(/.test(cpuName)) { 16 if (cpuName && /\(/.test(cpuName)) {
17 // eslint-disable-next-line prefer-destructuring
17 cpuName = cpuName.split('(')[0]; 18 cpuName = cpuName.split('(')[0];
18 } 19 }
19 return `Macintosh; ${cpuName} Mac OS X ${version.replaceAll('.', '_')}`; 20 return `Macintosh; ${cpuName} Mac OS X ${version.replaceAll('.', '_')}`;
diff --git a/src/i18n/languages.ts b/src/i18n/languages.ts
index 6a4101bc0..209848b37 100644
--- a/src/i18n/languages.ts
+++ b/src/i18n/languages.ts
@@ -145,5 +145,3 @@ export const SPELLCHECKER_LOCALES = {
145 uk: 'УкраїнÑька (Ukrainian)', 145 uk: 'УкраїнÑька (Ukrainian)',
146 vi: 'Tiếng Việt', 146 vi: 'Tiếng Việt',
147}; 147};
148
149export default APP_LOCALES;
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index 433ac09b3..ea7df29e2 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -22,6 +22,7 @@
22 "feature.quickSwitch.title": "Schnellauswahl", 22 "feature.quickSwitch.title": "Schnellauswahl",
23 "global.api.unhealthy": "Verbindung zu {serverNameParse} Online-Diensten kann nicht hergestellt werden", 23 "global.api.unhealthy": "Verbindung zu {serverNameParse} Online-Diensten kann nicht hergestellt werden",
24 "global.cancel": "Abbrechen", 24 "global.cancel": "Abbrechen",
25 "global.clearCache": "Cache leeren",
25 "global.edit": "Bearbeiten", 26 "global.edit": "Bearbeiten",
26 "global.no": "Nein", 27 "global.no": "Nein",
27 "global.notConnectedToTheInternet": "Du bist nicht mit dem Internet verbunden.", 28 "global.notConnectedToTheInternet": "Du bist nicht mit dem Internet verbunden.",
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json
index 40de18bc1..9dfadd391 100644
--- a/src/i18n/locales/fr.json
+++ b/src/i18n/locales/fr.json
@@ -22,6 +22,7 @@
22 "feature.quickSwitch.title": "Changement rapide", 22 "feature.quickSwitch.title": "Changement rapide",
23 "global.api.unhealthy": "Impossible de se connecter aux services en ligne de {serverNameParse}", 23 "global.api.unhealthy": "Impossible de se connecter aux services en ligne de {serverNameParse}",
24 "global.cancel": "Annuler", 24 "global.cancel": "Annuler",
25 "global.clearCache": "Vider le cache",
25 "global.edit": "Éditer", 26 "global.edit": "Éditer",
26 "global.no": "Non", 27 "global.no": "Non",
27 "global.notConnectedToTheInternet": "Vous n'êtes pas connecté à Internet.", 28 "global.notConnectedToTheInternet": "Vous n'êtes pas connecté à Internet.",
diff --git a/src/i18n/locales/lv.json b/src/i18n/locales/lv.json
index 630a3d4f0..3ad44e497 100644
--- a/src/i18n/locales/lv.json
+++ b/src/i18n/locales/lv.json
@@ -22,6 +22,7 @@
22 "feature.quickSwitch.title": "Ä€trÄPÄrslÄ“gÅ¡anÄs", 22 "feature.quickSwitch.title": "Ä€trÄPÄrslÄ“gÅ¡anÄs",
23 "global.api.unhealthy": "Nevarēja savienoties ar {serverNameParse} online pakalpojumiem", 23 "global.api.unhealthy": "Nevarēja savienoties ar {serverNameParse} online pakalpojumiem",
24 "global.cancel": "Atcelt", 24 "global.cancel": "Atcelt",
25 "global.clearCache": "Iztīrīt kešatmiņu",
25 "global.edit": "Labot", 26 "global.edit": "Labot",
26 "global.no": "NÄ“", 27 "global.no": "NÄ“",
27 "global.notConnectedToTheInternet": "JÅ«s neesat savienojies ar internetu.", 28 "global.notConnectedToTheInternet": "JÅ«s neesat savienojies ar internetu.",
@@ -38,16 +39,16 @@
38 "global.userAgentHelp": "Izmanto 'https://whatmyuseragent.com/' (lai uzzinÄtu) vai 'https://developers.whatismybrowser.com/useragents/explore/' (lai izvÄ“lÄ“tos) savu vÄ“lamo user-agent un iekopÄ“ to Å¡eit.", 39 "global.userAgentHelp": "Izmanto 'https://whatmyuseragent.com/' (lai uzzinÄtu) vai 'https://developers.whatismybrowser.com/useragents/explore/' (lai izvÄ“lÄ“tos) savu vÄ“lamo user-agent un iekopÄ“ to Å¡eit.",
39 "global.userAgentPref": "User Agent", 40 "global.userAgentPref": "User Agent",
40 "global.yes": "JÄ", 41 "global.yes": "JÄ",
41 "infobar.authRequestFailed": "Notika kļūme mÄ“Ä£inot veikt autentifikÄcijas pieprasÄ«jumu. LÅ«dzu, mÄ“Ä£ini atslÄ“gties un pieslÄ“gties atpakaļ, ja kļūme nepazÅ«d.", 42 "infobar.authRequestFailed": "AtgadÄ«jÄs kļūdas apliecinÄta pieprasÄ«juma veikÅ¡anas mÄ“Ä£inÄjumÄ. LÅ«gums mÄ“Ä£inÄt atteikties un atkÄrtoti pieteikties, ja kļūme ir paliekoÅ¡a.",
42 "infobar.buttonChangelog": "Kas jauns?", 43 "infobar.buttonChangelog": "Kas jauns?",
43 "infobar.buttonInstallUpdate": "PÄrsÄknÄ“t un uzstÄdÄ«t atjauninÄjumu", 44 "infobar.buttonInstallUpdate": "PÄrsÄknÄ“t un uzstÄdÄ«t atjauninÄjumu",
44 "infobar.buttonReloadServices": "PÄrlÄdÄ“t pakalpojumus", 45 "infobar.buttonReloadServices": "PÄrlÄdÄ“t pakalpojumus",
45 "infobar.hide": "Slēpt", 46 "infobar.hide": "Slēpt",
46 "infobar.requiredRequestsFailed": "NeizdevÄs ielÄdÄ“t pakalpojumus un lietotÄja informÄciju", 47 "infobar.requiredRequestsFailed": "NeizdevÄs ielÄdÄ“t pakalpojumus un lietotÄja informÄciju",
47 "infobar.servicesUpdated": "JÅ«su pakalpojumi tika atjaunoti.", 48 "infobar.servicesUpdated": "JÅ«su pakalpojumi tika atjaunoti.",
48 "infobar.updateAvailable": "Jauns Ferdium atjauninÄjums ir pieejams.", 49 "infobar.updateAvailable": "Ir pieejams jauns Ferdium atjauninÄjums.",
49 "infobox.dismiss": "Atmest", 50 "infobox.dismiss": "Atmest",
50 "invite.email.label": "E-Pasta adrese", 51 "invite.email.label": "E-pasta adrese",
51 "invite.headline.friends": "Uzaicini 3 savus draugus vai kolēģus", 52 "invite.headline.friends": "Uzaicini 3 savus draugus vai kolēģus",
52 "invite.name.label": "VÄrds", 53 "invite.name.label": "VÄrds",
53 "invite.skip.label": "VÄ“los to darÄ«t vÄ“lÄk", 54 "invite.skip.label": "VÄ“los to darÄ«t vÄ“lÄk",
@@ -60,20 +61,20 @@
60 "locked.touchId": "AtbloÄ·Ä“t ar Touch ID", 61 "locked.touchId": "AtbloÄ·Ä“t ar Touch ID",
61 "locked.unlockWithPassword": "AtbloÄ·Ä“t ar Paroli", 62 "locked.unlockWithPassword": "AtbloÄ·Ä“t ar Paroli",
62 "login.changeServer": "Maini Å¡eit!", 63 "login.changeServer": "Maini Å¡eit!",
63 "login.changeServerMessage": "Tu izmanto {serverNameParse} Serveri. Vai vēlies to mainīt?", 64 "login.changeServerMessage": "Tu izmanto {serverNameParse} serveri. Vai vēlies to mainīt?",
64 "login.customServerQuestion": "Izmanto savu Ferdium serveri?", 65 "login.customServerQuestion": "Izmanto pielÄgotu Ferdium serveri?",
65 "login.customServerSuggestion": "Mēģini importēt savu Franz kontu", 66 "login.customServerSuggestion": "Mēģini importēt savu Franz kontu",
66 "login.email.label": "E-Pasta adrese", 67 "login.email.label": "E-pasta adrese",
67 "login.headline": "Iekt", 68 "login.headline": "Pieteikties",
68 "login.invalidCredentials": "E-Pasts vai Parole nepareiza", 69 "login.invalidCredentials": "E-pasta adrese vai parole ir nederīga",
69 "login.link.password": "Atiestatīt paroli", 70 "login.link.password": "Atiestatīt paroli",
70 "login.link.signup": "Izveidot bezmaksas kontu", 71 "login.link.signup": "Izveidot bezmaksas kontu",
71 "login.password.label": "Parole", 72 "login.password.label": "Parole",
72 "login.serverLogout": "Tava sesija ir beigusies. LÅ«dzu, pieslÄ“dzies vÄ“lreiz.", 73 "login.serverLogout": "Sesija ir beigusies, lÅ«gums pieteikties atkÄrtoti.",
73 "login.submit.label": "Iekt", 74 "login.submit.label": "Pieteikties",
74 "login.tokenExpired": "Tava sesija ir beigusies. LÅ«dzu, pieslÄ“dzies vÄ“lreiz.", 75 "login.tokenExpired": "Sesija ir beigusies, lÅ«gums pieteikties atkÄrtoti.",
75 "menu.Todoss.closeTodosDrawer": "AizvÄ“rt Todos atvilktni", 76 "menu.Todoss.closeTodosDrawer": "AizvÄ“rt darÄmÄ atvilktni",
76 "menu.Todoss.openTodosDrawer": "AtvÄ“rt Todos atvilktni", 77 "menu.Todoss.openTodosDrawer": "AtvÄ“rt darÄmÄ atvilktni",
77 "menu.app.about": "Par Ferdium", 78 "menu.app.about": "Par Ferdium",
78 "menu.app.autohideMenuBar": "AutomÄtiski paslÄ“pt izvÄ“lnes joslu", 79 "menu.app.autohideMenuBar": "AutomÄtiski paslÄ“pt izvÄ“lnes joslu",
79 "menu.app.checkForUpdates": "MeklÄ“t atjauninÄjumus", 80 "menu.app.checkForUpdates": "MeklÄ“t atjauninÄjumus",
@@ -95,7 +96,7 @@
95 "menu.edit.startSpeaking": "SÄkt RunÄÅ¡anu", 96 "menu.edit.startSpeaking": "SÄkt RunÄÅ¡anu",
96 "menu.edit.stopSpeaking": "Beigt RunÄÅ¡anu", 97 "menu.edit.stopSpeaking": "Beigt RunÄÅ¡anu",
97 "menu.edit.undo": "Atsaukt", 98 "menu.edit.undo": "Atsaukt",
98 "menu.file": "Fails", 99 "menu.file": "Datne",
99 "menu.help": "Palīdzība", 100 "menu.help": "Palīdzība",
100 "menu.help.changelog": "Izmaiņu žurnÄls", 101 "menu.help.changelog": "Izmaiņu žurnÄls",
101 "menu.help.debugInfo": "KopÄ“t AtkļūdoÅ¡anas informÄciju", 102 "menu.help.debugInfo": "KopÄ“t AtkļūdoÅ¡anas informÄciju",
@@ -113,9 +114,9 @@
113 "menu.services.copyToClipboard": "Kopēt starpliktuvē", 114 "menu.services.copyToClipboard": "Kopēt starpliktuvē",
114 "menu.services.goHome": "SÄkums", 115 "menu.services.goHome": "SÄkums",
115 "menu.services.setNextServiceActive": "AktivizÄ“t nÄkamo pakalpojumu", 116 "menu.services.setNextServiceActive": "AktivizÄ“t nÄkamo pakalpojumu",
116 "menu.todos": "Todos", 117 "menu.todos": "DarÄmais",
117 "menu.todos.disableTodos": "AtslÄ“gt Todos", 118 "menu.todos.disableTodos": "AtspÄ“jot darÄmo",
118 "menu.todos.enableTodos": "IeslÄ“gt Todos", 119 "menu.todos.enableTodos": "IespÄ“jot darÄmo",
119 "menu.view": "Skatīt", 120 "menu.view": "Skatīt",
120 "menu.view.back": "Atpakaļ", 121 "menu.view.back": "Atpakaļ",
121 "menu.view.forward": "Uz priekšu", 122 "menu.view.forward": "Uz priekšu",
@@ -123,7 +124,7 @@
123 "menu.view.openQuickSwitch": "AtvÄ“rt Ä€tro PÄrslÄ“gÅ¡anos", 124 "menu.view.openQuickSwitch": "AtvÄ“rt Ä€tro PÄrslÄ“gÅ¡anos",
124 "menu.view.reloadFerdium": "PÄrlÄdÄ“t Ferdium", 125 "menu.view.reloadFerdium": "PÄrlÄdÄ“t Ferdium",
125 "menu.view.reloadService": "PÄrlÄdÄ“t Pakalpojumu", 126 "menu.view.reloadService": "PÄrlÄdÄ“t Pakalpojumu",
126 "menu.view.reloadTodos": "PÄrlÄdÄ“t Todos", 127 "menu.view.reloadTodos": "PÄrlÄdÄ“t darÄmo",
127 "menu.view.resetZoom": "Īstais Lielums", 128 "menu.view.resetZoom": "Īstais Lielums",
128 "menu.view.splitModeToggle": "PÄrslÄ“gt SadalÄ«to režīmu", 129 "menu.view.splitModeToggle": "PÄrslÄ“gt SadalÄ«to režīmu",
129 "menu.view.toggleDarkMode": "PÄrslÄ“gt TumÅ¡o Režīmu", 130 "menu.view.toggleDarkMode": "PÄrslÄ“gt TumÅ¡o Režīmu",
@@ -131,23 +132,23 @@
131 "menu.view.toggleFullScreen": "PÄrslÄ“gt PilnekrÄna Režīmu", 132 "menu.view.toggleFullScreen": "PÄrslÄ“gt PilnekrÄna Režīmu",
132 "menu.view.toggleNavigationBar": "PÄrslÄ“gt NavigÄcijas joslu", 133 "menu.view.toggleNavigationBar": "PÄrslÄ“gt NavigÄcijas joslu",
133 "menu.view.toggleServiceDevTools": "PÄrslÄ“gt Pakalpojuma IzstrÄdÄtÄja RÄ«kus", 134 "menu.view.toggleServiceDevTools": "PÄrslÄ“gt Pakalpojuma IzstrÄdÄtÄja RÄ«kus",
134 "menu.view.toggleTodosDevTools": "PÄrslÄ“gt Todos IzstrÄdÄtÄja RÄ«kus", 135 "menu.view.toggleTodosDevTools": "PÄrslÄ“gt darÄmÄ izstrÄdÄtÄja rÄ«kus",
135 "menu.view.zoomIn": "PietuvinÄt", 136 "menu.view.zoomIn": "PietuvinÄt",
136 "menu.view.zoomOut": "AttÄlinÄt", 137 "menu.view.zoomOut": "AttÄlinÄt",
137 "menu.window": "Logs", 138 "menu.window": "Logs",
138 "menu.window.close": "Aizvērt", 139 "menu.window.close": "Aizvērt",
139 "menu.window.minimize": "Minimizēt", 140 "menu.window.minimize": "Minimizēt",
140 "menu.workspaces": "Darbvirsmas", 141 "menu.workspaces": "Darbvietas",
141 "menu.workspaces.addNewWorkspace": "Pievienot Jaunu Darbvirsmu...", 142 "menu.workspaces.addNewWorkspace": "Pievienot Jaunu Darbvirsmu...",
142 "menu.workspaces.closeWorkspaceDrawer": "Aizvērt Darbvirsmu sarakstu", 143 "menu.workspaces.closeWorkspaceDrawer": "Aizvērt Darbvirsmu sarakstu",
143 "menu.workspaces.defaultWorkspace": "Visi pakalpojumi", 144 "menu.workspaces.defaultWorkspace": "Visi pakalpojumi",
144 "menu.workspaces.openWorkspaceDrawer": "Atvērt darbvirsmu sarakstu", 145 "menu.workspaces.openWorkspaceDrawer": "Atvērt darbvirsmu sarakstu",
145 "password.email.label": "E-Pasta adrese", 146 "password.email.label": "E-pasta adrese",
146 "password.headline": "Atiestatīt paroli", 147 "password.headline": "Atiestatīt paroli",
147 "password.link.login": "Pierakstieties kontÄ", 148 "password.link.login": "Pieteikties savÄ kontÄ",
148 "password.link.signup": "Izveidot bezmaksas kontu", 149 "password.link.signup": "Izveidot bezmaksas kontu",
149 "password.noUser": "Netika atrasts neviens lietotÄjs ar Å¡Ädu E-Pasta adresi", 150 "password.noUser": "Ar Å¡Ädu e-pasta adresi netika atrasts neviens lietotÄjs",
150 "password.successInfo": "Tava jaunÄ parole tika nosÅ«tÄ«ta uz tavu E-Pasta adresi", 151 "password.successInfo": "JaunÄ parole tika nosÅ«tÄ«ta uz norÄdÄ«to e-pasta adresi",
151 "service.crashHandler.action": "PÄrlÄdÄ“t {name}", 152 "service.crashHandler.action": "PÄrlÄdÄ“t {name}",
152 "service.crashHandler.autoReload": "MÄ“Ä£ina automÄtiski atjaunot {name} pÄ“c {seconds} sekundÄ“m", 153 "service.crashHandler.autoReload": "MÄ“Ä£ina automÄtiski atjaunot {name} pÄ“c {seconds} sekundÄ“m",
153 "service.crashHandler.headline": "Ak, nē!", 154 "service.crashHandler.headline": "Ak, nē!",
@@ -160,16 +161,16 @@
160 "service.errorHandler.message": "Kļūda", 161 "service.errorHandler.message": "Kļūda",
161 "service.errorHandler.text": "{name} neizdevÄs ielÄdÄ“t.", 162 "service.errorHandler.text": "{name} neizdevÄs ielÄdÄ“t.",
162 "service.webviewLoader.loading": "IelÄdÄ“ {service}", 163 "service.webviewLoader.loading": "IelÄdÄ“ {service}",
163 "services.getStarted": "SÄc Å¡eit", 164 "services.getStarted": "SÄksim",
164 "services.login": "Lūdzu, autorizējies, lai izmantotu Ferdium.", 165 "services.login": "Lūgums pieteikties, lai izmantotu Ferdium.",
165 "services.serverInfo": "PÄ“c izvÄ“les varat mainÄ«t savu Ferdium serveri, noklikÅ¡Ä·inot uz zobrata apakÅ¡Ä“jÄ kreisajÄ stÅ«rÄ«. Ja pÄrslÄ“dzaties (no viena no hosted serveriem) uz Ferdium bez konta, lÅ«dzu, ņemiet vÄ“rÄ, ka varat eksportÄ“t savus datus no Å¡Ä« servera un pÄ“c tam importÄ“t, izmantojot izvÄ“lni PalÄ«dzÄ«ba, lai atjaunotu visas savas darbvietas un konfigurÄ“tos pakalpojumus!", 166 "services.serverInfo": "PÄ“c izvÄ“les varat mainÄ«t savu Ferdium serveri, noklikÅ¡Ä·inot uz zobrata apakÅ¡Ä“jÄ kreisajÄ stÅ«rÄ«. Ja pÄrslÄ“dzaties (no viena no hosted serveriem) uz Ferdium bez konta, lÅ«dzu, ņemiet vÄ“rÄ, ka varat eksportÄ“t savus datus no Å¡Ä« servera un pÄ“c tam importÄ“t, izmantojot izvÄ“lni PalÄ«dzÄ«ba, lai atjaunotu visas savas darbvietas un konfigurÄ“tos pakalpojumus!",
166 "services.serverless": "Izmantot Ferdium bez Konta", 167 "services.serverless": "Izmantot Ferdium bez Konta",
167 "settings.account.account.editButton": "Labot kontu", 168 "settings.account.account.editButton": "Labot kontu",
168 "settings.account.accountUnavailable": "Konts nav pieejams", 169 "settings.account.accountUnavailable": "Konts nav pieejams",
169 "settings.account.accountUnavailableInfo": "Tu izmanto Ferdium bez konta. Ja tu vÄ“lies izmanto Ferdium ar kontu un sinhronizÄ“t savus pakalpojumus starp instalÄcijÄm, lÅ«dzu izvÄ“lies serveri IestatÄ«jumu sadaÄ¼Ä un autorizÄ“jies.", 170 "settings.account.accountUnavailableInfo": "Ferdium tiek izmantots bez konta. Ja ir vÄ“lÄ“Å¡anÄs izmantot Ferdium ar kontu un sinhronizÄ“t savus pakalpojumus dažÄdÄs iekÄrtÄs, lÅ«gums atlasÄ«t serveri iestatÄ«jumu cilnÄ“ un tad pieteikties.",
170 "settings.account.buttonSave": "Atjaunot profilu", 171 "settings.account.buttonSave": "Atjaunot profilu",
171 "settings.account.deleteAccount": "Dzēst kontu", 172 "settings.account.deleteAccount": "Dzēst kontu",
172 "settings.account.deleteEmailSent": "Tu saņēmi E-Pastu ar saiti, lai apstiprinÄtu tava konta dzÄ“Å¡anu. Tavu kontu un datus nevarÄ“s atjaunot!", 173 "settings.account.deleteEmailSent": "E-pastÄ ir nosÅ«tÄ«ta saite konta dzÄ“Å¡anas apstiprinÄÅ¡anai. Kontu un tÄ datus nevar atjaunot.",
173 "settings.account.deleteInfo": "Ja tev vairs nevajag tavu Ferdium kontu, tu vari dzēst savu kontu un visus saistītos datus šeit.", 174 "settings.account.deleteInfo": "Ja tev vairs nevajag tavu Ferdium kontu, tu vari dzēst savu kontu un visus saistītos datus šeit.",
174 "settings.account.headline": "Konts", 175 "settings.account.headline": "Konts",
175 "settings.account.headlineAccount": "Konta informÄcija", 176 "settings.account.headlineAccount": "Konta informÄcija",
@@ -203,7 +204,7 @@
203 "settings.app.form.clipboardNotifications": "NerÄdÄ«t paziņojumus par starpliktuves notikumiem", 204 "settings.app.form.clipboardNotifications": "NerÄdÄ«t paziņojumus par starpliktuves notikumiem",
204 "settings.app.form.closeToSystemTray": "AizvÄ“rt Ferdium sistÄ“mas ikonjoslÄ", 205 "settings.app.form.closeToSystemTray": "AizvÄ“rt Ferdium sistÄ“mas ikonjoslÄ",
205 "settings.app.form.confirmOnQuit": "ApstiprinÄt, kad aizverat Ferdium", 206 "settings.app.form.confirmOnQuit": "ApstiprinÄt, kad aizverat Ferdium",
206 "settings.app.form.customTodoServer": "PielÄgots Todo Serveris", 207 "settings.app.form.customTodoServer": "PielÄgots darÄmÄ serveris",
207 "settings.app.form.darkMode": "Ieslēgt Tumšo Režīmu", 208 "settings.app.form.darkMode": "Ieslēgt Tumšo Režīmu",
208 "settings.app.form.enableGPUAcceleration": "IeslÄ“gt GPU PaÄtrinÄÅ¡anu", 209 "settings.app.form.enableGPUAcceleration": "IeslÄ“gt GPU PaÄtrinÄÅ¡anu",
209 "settings.app.form.enableGlobalHideShortcut": "IeslÄ“gt GlobÄlu saÄ«sni, lai paslÄ“ptu Ferdium", 210 "settings.app.form.enableGlobalHideShortcut": "IeslÄ“gt GlobÄlu saÄ«sni, lai paslÄ“ptu Ferdium",
@@ -212,7 +213,7 @@
212 "settings.app.form.enableMenuBar": "VienmÄ“ rÄdÄ«t Ferdium IzvÄ“lnes JoslÄ", 213 "settings.app.form.enableMenuBar": "VienmÄ“ rÄdÄ«t Ferdium IzvÄ“lnes JoslÄ",
213 "settings.app.form.enableSpellchecking": "IeslÄ“gt pareizrakstÄ«bas pÄrbaudi", 214 "settings.app.form.enableSpellchecking": "IeslÄ“gt pareizrakstÄ«bas pÄrbaudi",
214 "settings.app.form.enableSystemTray": "VienmÄ“r rÄdÄ«t Ferdium sistÄ“mas ikonjoslÄ", 215 "settings.app.form.enableSystemTray": "VienmÄ“r rÄdÄ«t Ferdium sistÄ“mas ikonjoslÄ",
215 "settings.app.form.enableTodos": "IeslÄ“gt Ferdium Todos", 216 "settings.app.form.enableTodos": "IespÄ“jot Ferdium darÄmo",
216 "settings.app.form.enableTranslator": "IespÄ“jot tulkotÄju", 217 "settings.app.form.enableTranslator": "IespÄ“jot tulkotÄju",
217 "settings.app.form.grayscaleServicesDim": "Pelēktoņu aptumšošanas līmenis", 218 "settings.app.form.grayscaleServicesDim": "Pelēktoņu aptumšošanas līmenis",
218 "settings.app.form.hibernateOnStartup": "PaturÄ“t pakalpojumus hibernÄcijas režīmÄ, startÄ“jot", 219 "settings.app.form.hibernateOnStartup": "PaturÄ“t pakalpojumus hibernÄcijas režīmÄ, startÄ“jot",
@@ -225,14 +226,14 @@
225 "settings.app.form.hideWorkspacesButton": "Paslēpt Darbvirsmu Saraksta pogu", 226 "settings.app.form.hideWorkspacesButton": "Paslēpt Darbvirsmu Saraksta pogu",
226 "settings.app.form.iconSize": "Pakalpojuma ikonas izmērs", 227 "settings.app.form.iconSize": "Pakalpojuma ikonas izmērs",
227 "settings.app.form.inactivityLock": "Aizslēgt pēc ilgstošas prombūtnes", 228 "settings.app.form.inactivityLock": "Aizslēgt pēc ilgstošas prombūtnes",
228 "settings.app.form.keepAllWorkspacesLoaded": "PaturÄ“t visas darbvirsmas ielÄdÄ“tas", 229 "settings.app.form.keepAllWorkspacesLoaded": "PaturÄ“t visas darbvietas ielÄdÄ“tas",
229 "settings.app.form.language": "Valoda", 230 "settings.app.form.language": "Valoda",
230 "settings.app.form.lockPassword": "Parole", 231 "settings.app.form.lockPassword": "Parole",
231 "settings.app.form.minimizeToSystemTray": "SamazinÄt Ferdium sistÄ“mas ikonjoslÄ", 232 "settings.app.form.minimizeToSystemTray": "SamazinÄt Ferdium sistÄ“mas ikonjoslÄ",
232 "settings.app.form.navigationBarBehaviour": "NavigÄcijas joslas uzvedÄ«ba", 233 "settings.app.form.navigationBarBehaviour": "NavigÄcijas joslas uzvedÄ«ba",
233 "settings.app.form.notifyTaskBarOnMessage": "Paziņot TaskBar/Dock par jaunu ziņu", 234 "settings.app.form.notifyTaskBarOnMessage": "Paziņot TaskBar/Dock par jaunu ziņu",
234 "settings.app.form.passwordToggle": "Paroles pÄrslÄ“gÅ¡ana", 235 "settings.app.form.passwordToggle": "Paroles pÄrslÄ“gÅ¡ana",
235 "settings.app.form.predefinedTodoServer": "Todo Serveris", 236 "settings.app.form.predefinedTodoServer": "DarÄmÄ serveris",
236 "settings.app.form.privateNotifications": "NerÄdÄ«t ziņas saturu paziņojumos", 237 "settings.app.form.privateNotifications": "NerÄdÄ«t ziņas saturu paziņojumos",
237 "settings.app.form.progressbarAccentColor": "Progresa joslas Akcenta krÄsa", 238 "settings.app.form.progressbarAccentColor": "Progresa joslas Akcenta krÄsa",
238 "settings.app.form.reloadAfterResume": "PÄrlÄdÄ“t Ferdium pÄ“c sistÄ“mas atsÄkÅ¡anas", 239 "settings.app.form.reloadAfterResume": "PÄrlÄdÄ“t Ferdium pÄ“c sistÄ“mas atsÄkÅ¡anas",
@@ -294,7 +295,7 @@
294 "settings.app.spellCheckerLanguageInfo": "Ferdium izmanto Mac iebÅ«vÄ“to pareizrakstÄ«bas pÄrbaudÄ«tÄju, lai meklÄ“tu drukas kļūmes. Ja ir vÄ“lme mainÄ«t pareizrakstÄ«bas pÄrbaudÄ«tÄja izmantoto valodu, to var izdarÄ«t Mac sistÄ“mas uzstÄdÄ«jumos.", 295 "settings.app.spellCheckerLanguageInfo": "Ferdium izmanto Mac iebÅ«vÄ“to pareizrakstÄ«bas pÄrbaudÄ«tÄju, lai meklÄ“tu drukas kļūmes. Ja ir vÄ“lme mainÄ«t pareizrakstÄ«bas pÄrbaudÄ«tÄja izmantoto valodu, to var izdarÄ«t Mac sistÄ“mas uzstÄdÄ«jumos.",
295 "settings.app.subheadlineCache": "Kešatmiņa", 296 "settings.app.subheadlineCache": "Kešatmiņa",
296 "settings.app.subheadlineFerdiumProfile": "Ferdium Profils", 297 "settings.app.subheadlineFerdiumProfile": "Ferdium Profils",
297 "settings.app.todoServerInfo": "Å is serveris tiks izmantots priekÅ¡ \"Ferdium Todo\" funkcijas.", 298 "settings.app.todoServerInfo": "Å is serveris tiks izmantots \"Ferdium darÄmais\" iespÄ“jai.",
298 "settings.app.translationHelp": "PalÄ«dzi mums pÄrtulkot Ferdium savÄ valodÄ.", 299 "settings.app.translationHelp": "PalÄ«dzi mums pÄrtulkot Ferdium savÄ valodÄ.",
299 "settings.app.universalDarkModeInfo": "UniversÄlais TumÅ¡ais Režīms mÄ“Ä£ina dinamiski Ä£enerÄ“t tumÅ¡Ä režīma stilus priekÅ¡ pakalpojumiem, kas tos savÄdÄk neatbalsta.", 300 "settings.app.universalDarkModeInfo": "UniversÄlais TumÅ¡ais Režīms mÄ“Ä£ina dinamiski Ä£enerÄ“t tumÅ¡Ä režīma stilus priekÅ¡ pakalpojumiem, kas tos savÄdÄk neatbalsta.",
300 "settings.app.updateStatusAvailable": "AtjauninÄjums pieejams, lejupielÄdÄ“...", 301 "settings.app.updateStatusAvailable": "AtjauninÄjums pieejams, lejupielÄdÄ“...",
@@ -303,12 +304,12 @@
303 "settings.invite.headline": "Uzaicini Draugus", 304 "settings.invite.headline": "Uzaicini Draugus",
304 "settings.navigation.account": "Konts", 305 "settings.navigation.account": "Konts",
305 "settings.navigation.availableServices": "Pieejamie pakalpojumi", 306 "settings.navigation.availableServices": "Pieejamie pakalpojumi",
306 "settings.navigation.logout": "Atslēgties", 307 "settings.navigation.logout": "Atteikties",
307 "settings.navigation.releaseNotes": "InformÄcija par laidienu", 308 "settings.navigation.releaseNotes": "InformÄcija par laidienu",
308 "settings.navigation.supportFerdium": "Par Ferdium", 309 "settings.navigation.supportFerdium": "Par Ferdium",
309 "settings.navigation.team": "PÄrvaldÄ«t Komandu", 310 "settings.navigation.team": "PÄrvaldÄ«t Komandu",
310 "settings.navigation.yourServices": "Tavi pakalpojumi", 311 "settings.navigation.yourServices": "Tavi pakalpojumi",
311 "settings.navigation.yourWorkspaces": "Tavas darbvirsmas", 312 "settings.navigation.yourWorkspaces": "Tavas darbvietas",
312 "settings.recipes.all": "Visi pakalpojumi", 313 "settings.recipes.all": "Visi pakalpojumi",
313 "settings.recipes.custom": "PielÄgotie Pakalpojumi", 314 "settings.recipes.custom": "PielÄgotie Pakalpojumi",
314 "settings.recipes.customService.headline.communityRecipes": "Kopienas Trešo Pušu Receptes", 315 "settings.recipes.customService.headline.communityRecipes": "Kopienas Trešo Pušu Receptes",
@@ -410,7 +411,7 @@
410 "settings.user.form.accountType.label": "Konta tips", 411 "settings.user.form.accountType.label": "Konta tips",
411 "settings.user.form.accountType.non-profit": "Bezpeļņas OrganizÄcija", 412 "settings.user.form.accountType.non-profit": "Bezpeļņas OrganizÄcija",
412 "settings.user.form.currentPassword": "PaÅ¡reizÄ“jÄ parole", 413 "settings.user.form.currentPassword": "PaÅ¡reizÄ“jÄ parole",
413 "settings.user.form.email": "E-Pasts", 414 "settings.user.form.email": "E-pasta adrese",
414 "settings.user.form.firstname": "VÄrds", 415 "settings.user.form.firstname": "VÄrds",
415 "settings.user.form.lastname": "UzvÄrds", 416 "settings.user.form.lastname": "UzvÄrds",
416 "settings.user.form.newPassword": "Jauna parole", 417 "settings.user.form.newPassword": "Jauna parole",
@@ -419,41 +420,41 @@
419 "settings.workspace.form.buttonDelete": "Dzēst darbvirsmu", 420 "settings.workspace.form.buttonDelete": "Dzēst darbvirsmu",
420 "settings.workspace.form.buttonSave": "SaglabÄt darbvirsmu", 421 "settings.workspace.form.buttonSave": "SaglabÄt darbvirsmu",
421 "settings.workspace.form.keepLoaded": "PaturÄ“t Å¡o darbvirsmu ielÄdÄ“tu*", 422 "settings.workspace.form.keepLoaded": "PaturÄ“t Å¡o darbvirsmu ielÄdÄ“tu*",
422 "settings.workspace.form.keepLoadedInfo": "*Å Ä« opcija tiks pÄrrakstÄ«ta no globÄlÄs \"PaturÄ“t visas darbvirsmas ielÄdÄ“tas\" opcijas.", 423 "settings.workspace.form.keepLoadedInfo": "*Å o iespÄ“ju pÄrrakstÄ«s vispÄrÄ“jais iestatÄ«jums \"PaturÄ“t visas darbietas ielÄdÄ“tas\".",
423 "settings.workspace.form.name": "VÄrds", 424 "settings.workspace.form.name": "VÄrds",
424 "settings.workspace.form.servicesInWorkspaceHeadline": "Pakalpojumi Å¡ajÄ DarbvirsmÄ", 425 "settings.workspace.form.servicesInWorkspaceHeadline": "Pakalpojumi Å¡ajÄ DarbvirsmÄ",
425 "settings.workspace.form.yourWorkspaces": "Tavas darbvirsmas", 426 "settings.workspace.form.yourWorkspaces": "Tavas darbvietas",
426 "settings.workspaces.deletedInfo": "Darbvirsma tika dzēsta", 427 "settings.workspaces.deletedInfo": "Darbvirsma tika dzēsta",
427 "settings.workspaces.headline": "Tavas darbvirsmas", 428 "settings.workspaces.headline": "Tavas darbvietas",
428 "settings.workspaces.noWorkspacesAdded": "Tu vēl neesi izveidojis nevienu darbvirsmu.", 429 "settings.workspaces.noWorkspacesAdded": "Tu vēl neesi izveidojis nevienu darbvirsmu.",
429 "settings.workspaces.tryReloadWorkspaces": "Mēģini vēlreiz", 430 "settings.workspaces.tryReloadWorkspaces": "Mēģini vēlreiz",
430 "settings.workspaces.updatedInfo": "Tavas Izmaiņas tika saglabÄtas", 431 "settings.workspaces.updatedInfo": "Tavas Izmaiņas tika saglabÄtas",
431 "settings.workspaces.workspaceFeatureHeadline": "Mazak ir VairÄk: IepazÄ«stinam ar Ferdium DarbvirsmÄm", 432 "settings.workspaces.workspaceFeatureHeadline": "Mazak ir VairÄk: IepazÄ«stinam ar Ferdium DarbvirsmÄm",
432 "settings.workspaces.workspaceFeatureInfo": "Ferdium Darbvirsmas ļauj tev fokusÄ“ties uz to, kas ir svarÄ«gs paÅ¡reiz. Iestati vairÄkus pakalpojumu kopumus un viegli pÄrslÄ“dzies starp tiem. Tu vari izvÄ“lÄ“ties kÄdus pakalpojumus tev vajag kad un kur, lai varam tev palÄ«dzÄ“t pilnvÄ“rtÄ«gi visam sekot lÄ«dzi - vai arÄ« vienkÄrÅ¡i atslÄ“gties no darba, kad vien vÄ“lies.", 433 "settings.workspaces.workspaceFeatureInfo": "Ferdium darbvietas ļauj pievÄ“rst uzmanÄ«bu tam, kas ir svarÄ«gs tieÅ¡i Å¡obrÄ«d. Iestati vairÄkas pakalpojumu kopas un viegli pÄrslÄ“dzies starp tÄm jebkurÄ brÄ«dÄ«! Tu izlem, kuri pakalpojumi ir nepiecieÅ¡ami kad un kur, lai mÄ“s varam palÄ«dzÄ“t Tev bÅ«t virsotnÄ“, vai arÄ« vari vienkÄrÅ¡i atslÄ“gties no darba, kad vien vÄ“lies.",
433 "settings.workspaces.workspacesRequestFailed": "NeizdevÄs ielÄdÄ“t tavas darbvirsmas", 434 "settings.workspaces.workspacesRequestFailed": "NeizdevÄs ielÄdÄ“t Tavas darbvietas",
434 "setupAssistant.headline": "SÄkam", 435 "setupAssistant.headline": "SÄkam",
435 "setupAssistant.skip.label": "Izlaist", 436 "setupAssistant.skip.label": "Izlaist",
436 "setupAssistant.subheadline": "IzvÄ“lies kÄdu no mÅ«su visbiežÄk izmantotÄkajiem pakalpojumiem un esi komunikÄcijas augÅ¡galÄ tagad.", 437 "setupAssistant.subheadline": "IzvÄ“lies kÄdu no mÅ«su visbiežÄk izmantotÄkajiem pakalpojumiem un esi komunikÄcijas augÅ¡galÄ tagad.",
437 "setupAssistant.submit.label": "Aiziet", 438 "setupAssistant.submit.label": "Aiziet",
438 "sidebar.addNewService": "Pievienot jaunu pakalpojumu", 439 "sidebar.addNewService": "Pievienot jaunu pakalpojumu",
439 "sidebar.closeTodosDrawer": "AizvÄ“rt Ferdium Todos", 440 "sidebar.closeTodosDrawer": "AizvÄ“rt Ferdium darÄmo",
440 "sidebar.closeWorkspaceDrawer": "Aizvērt Darbvirsmu sarakstu", 441 "sidebar.closeWorkspaceDrawer": "Aizvērt Darbvirsmu sarakstu",
441 "sidebar.lockFerdium": "Aizslēgt Ferdium", 442 "sidebar.lockFerdium": "Aizslēgt Ferdium",
442 "sidebar.muteApp": "Izslēgt paziņojumus & audio", 443 "sidebar.muteApp": "Izslēgt paziņojumus & audio",
443 "sidebar.openTodosDrawer": "AtvÄ“rt Ferdium Todos", 444 "sidebar.openTodosDrawer": "AtvÄ“rt Ferdium darÄmo",
444 "sidebar.openWorkspaceDrawer": "Atvērt darbvirsmu sarakstu", 445 "sidebar.openWorkspaceDrawer": "Atvērt darbvirsmu sarakstu",
445 "sidebar.splitModeToggle": "SadalÄ«tÄ Režīma PÄrslÄ“gÅ¡ana", 446 "sidebar.splitModeToggle": "SadalÄ«tÄ Režīma PÄrslÄ“gÅ¡ana",
446 "sidebar.unmuteApp": "Ieslēgt paziņojumus & audio", 447 "sidebar.unmuteApp": "Ieslēgt paziņojumus & audio",
447 "signup.company.label": "Uzņēmums", 448 "signup.company.label": "Uzņēmums",
448 "signup.email.label": "E-Pasta adrese", 449 "signup.email.label": "E-pasta adrese",
449 "signup.emailDuplicate": "LietotÄjs ar tÄdu E-Pasta adresi jau eksistÄ“", 450 "signup.emailDuplicate": "Jau pastÄv lietotÄjs ar tÄdu e-pasta adresi",
450 "signup.firstname.label": "VÄrds", 451 "signup.firstname.label": "VÄrds",
451 "signup.headline": "Reģistrēties", 452 "signup.headline": "Reģistrēties",
452 "signup.lastname.label": "UzvÄrds", 453 "signup.lastname.label": "UzvÄrds",
453 "signup.legal.info": "Izveidojot Ferdium kontu, jūs piekrītat", 454 "signup.legal.info": "Ferdium konta izveidošana tiek piekrists",
454 "signup.legal.privacy": "KonfidencialitÄtes Paziņojums", 455 "signup.legal.privacy": "KonfidencialitÄtes Paziņojums",
455 "signup.legal.terms": "Lietošanas noteikumi", 456 "signup.legal.terms": "Lietošanas noteikumi",
456 "signup.link.login": "Jau ir konts? Pieraksties tagad!", 457 "signup.link.login": "Jau ir konts, pieteikties?",
457 "signup.password.label": "Parole", 458 "signup.password.label": "Parole",
458 "signup.submit.label": "Izveidot kontu", 459 "signup.submit.label": "Izveidot kontu",
459 "tabs.item.confirmDeleteService": "Vai tieÅ¡Äm vÄ“lies dzÄ“st {serviceName} pakalpojumu?", 460 "tabs.item.confirmDeleteService": "Vai tieÅ¡Äm vÄ“lies dzÄ“st {serviceName} pakalpojumu?",
@@ -469,7 +470,7 @@
469 "tabs.item.hibernateService": "Hibernēt pakalpojumu", 470 "tabs.item.hibernateService": "Hibernēt pakalpojumu",
470 "tabs.item.reload": "PÄrlÄdÄ“t", 471 "tabs.item.reload": "PÄrlÄdÄ“t",
471 "tabs.item.wakeUpService": "PamodinÄt pakalpojumu", 472 "tabs.item.wakeUpService": "PamodinÄt pakalpojumu",
472 "validation.email": "{field} nav pareizs", 473 "validation.email": "{field} nav derīgs",
473 "validation.minLength": "{field} ir jÄbÅ«t vismaz {length} simboliem garam", 474 "validation.minLength": "{field} ir jÄbÅ«t vismaz {length} simboliem garam",
474 "validation.oneRequired": "Vismaz viens ir obligÄts", 475 "validation.oneRequired": "Vismaz viens ir obligÄts",
475 "validation.required": "{field} ir obligÄts", 476 "validation.required": "{field} ir obligÄts",
@@ -479,14 +480,14 @@
479 "webControls.goHome": "SÄkums", 480 "webControls.goHome": "SÄkums",
480 "webControls.openInBrowser": "AtvÄ“rt PÄrlÅ«kprogrammÄ", 481 "webControls.openInBrowser": "AtvÄ“rt PÄrlÅ«kprogrammÄ",
481 "webControls.reload": "PÄrlÄdÄ“t", 482 "webControls.reload": "PÄrlÄdÄ“t",
482 "welcome.loginButton": "Pierakstieties kontÄ", 483 "welcome.loginButton": "Pieteikties savÄ kontÄ",
483 "welcome.signupButton": "Izveidot bezmaksas kontu", 484 "welcome.signupButton": "Izveidot bezmaksas kontu",
484 "workspaceDrawer.addNewWorkspaceLabel": "Pievienot jaunu darbvirsmu", 485 "workspaceDrawer.addNewWorkspaceLabel": "Pievienot jaunu darbvirsmu",
485 "workspaceDrawer.allServices": "Visi pakalpojumi", 486 "workspaceDrawer.allServices": "Visi pakalpojumi",
486 "workspaceDrawer.headline": "Darbvirsmas", 487 "workspaceDrawer.headline": "Darbvietas",
487 "workspaceDrawer.item.contextMenuEdit": "labot", 488 "workspaceDrawer.item.contextMenuEdit": "labot",
488 "workspaceDrawer.item.noServicesAddedYet": "Neviens pakalpojums vēl nav pievienots", 489 "workspaceDrawer.item.noServicesAddedYet": "Neviens pakalpojums vēl nav pievienots",
489 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdium Darbvirsmas ļauj tev fokusÄ“ties uz to, kas ir svarÄ«gs paÅ¡reiz. Iestati vairÄkus pakalpojumu kopumus un viegli pÄrslÄ“dzies starp tiem.</p><p>Tu vari izvÄ“lÄ“ties kÄdus pakalpojumus tev vajag kad un kur, lai varam tev palÄ«dzÄ“t pilnvÄ“rtÄ«gi visam sekot lÄ«dzi - vai arÄ« vienkÄrÅ¡i atslÄ“gties no darba, kad vien vÄ“lies.</p>", 490 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdium darbvietas ļauj pievÄ“rst uzmanÄ«bu tam, kas ir svarÄ«gs tieÅ¡i Å¡obrÄ«d. Iestati vairÄkas pakalpojumu kopas un viegli pÄrslÄ“dzies starp tÄm jebkurÄ brÄ«dÄ«!</p><p>Tu izlem, kuri pakalpojumi ir nepiecieÅ¡ami kad un kur, lai mÄ“s varam palÄ«dzÄ“t Tev bÅ«t virsotnÄ“, vai arÄ« vari vienkÄrÅ¡i atslÄ“gties no darba, kad vien vÄ“lies</p>",
490 "workspaceDrawer.workspacesSettingsTooltip": "Mainīt darbvirsmu iestatījumus", 491 "workspaceDrawer.workspacesSettingsTooltip": "Mainīt darbvirsmu iestatījumus",
491 "workspaces.switchingIndicator.switchingTo": "PÄrslÄ“gties uz" 492 "workspaces.switchingIndicator.switchingTo": "PÄrslÄ“gties uz"
492} \ No newline at end of file 493} \ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
index 7ef23415b..e76298dec 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -11,11 +11,12 @@ import {
11} from 'electron'; 11} from 'electron';
12 12
13import { emptyDirSync, ensureFileSync } from 'fs-extra'; 13import { emptyDirSync, ensureFileSync } from 'fs-extra';
14import { join } from 'path'; 14import { join } from 'node:path';
15import windowStateKeeper from 'electron-window-state'; 15import windowStateKeeper from 'electron-window-state';
16import minimist from 'minimist'; 16import minimist from 'minimist';
17import ms from 'ms'; 17import ms from 'ms';
18import { EventEmitter } from 'events'; 18import { EventEmitter } from 'node:events';
19import { initialize } from 'electron-react-titlebar/main';
19import { enableWebContents, initializeRemote } from './electron-util'; 20import { enableWebContents, initializeRemote } from './electron-util';
20import enforceMacOSAppLocation from './enforce-macos-app-location'; 21import enforceMacOSAppLocation from './enforce-macos-app-location';
21 22
@@ -47,6 +48,7 @@ import { asarPath } from './helpers/asar-helpers';
47import { openExternalUrl } from './helpers/url-helpers'; 48import { openExternalUrl } from './helpers/url-helpers';
48import userAgent from './helpers/userAgent-helpers'; 49import userAgent from './helpers/userAgent-helpers';
49import { translateTo } from './helpers/translation-helpers'; 50import { translateTo } from './helpers/translation-helpers';
51import { darkThemeGrayDarkest } from './themes/legacy';
50 52
51const debug = require('./preload-safe-debug')('Ferdium:App'); 53const debug = require('./preload-safe-debug')('Ferdium:App');
52 54
@@ -60,6 +62,7 @@ let mainWindow: BrowserWindow | undefined;
60let willQuitApp = false; 62let willQuitApp = false;
61let overrideAppQuitForUpdate = false; 63let overrideAppQuitForUpdate = false;
62 64
65// eslint-disable-next-line unicorn/prefer-event-target
63export const appEvents = new EventEmitter(); 66export const appEvents = new EventEmitter();
64 67
65// Register methods to be called once the window has been loaded. 68// Register methods to be called once the window has been loaded.
@@ -155,16 +158,6 @@ if (gotTheLock) {
155 app.quit(); 158 app.quit();
156} 159}
157 160
158// Fix Unity indicator issue
159// https://github.com/electron/electron/issues/9046
160if (
161 isLinux &&
162 process.env.XDG_CURRENT_DESKTOP &&
163 ['Pantheon', 'Unity:Unity7'].includes(process.env.XDG_CURRENT_DESKTOP)
164) {
165 process.env.XDG_CURRENT_DESKTOP = 'Unity';
166}
167
168// Disable GPU acceleration 161// Disable GPU acceleration
169if ( 162if (
170 !retrieveSettingValue( 163 !retrieveSettingValue(
@@ -208,7 +201,7 @@ const createWindow = () => {
208 'darkMode', 201 'darkMode',
209 DEFAULT_APP_SETTINGS.darkMode, 202 DEFAULT_APP_SETTINGS.darkMode,
210 ) 203 )
211 ? '#1E1E1E' 204 ? darkThemeGrayDarkest
212 : (retrieveSettingValue( 205 : (retrieveSettingValue(
213 'accentColor', 206 'accentColor',
214 DEFAULT_APP_SETTINGS.accentColor, 207 DEFAULT_APP_SETTINGS.accentColor,
@@ -398,9 +391,11 @@ const createWindow = () => {
398 }); 391 });
399 392
400 if (isMac) { 393 if (isMac) {
401 // eslint-disable-next-line global-require 394 import('./electron/macOSPermissions').then(macOSPermissions => {
402 const { askFormacOSPermissions } = require('./electron/macOSPermissions'); 395 const { askFormacOSPermissions } = macOSPermissions;
403 setTimeout(() => askFormacOSPermissions(mainWindow), ms('30s')); 396
397 setTimeout(() => askFormacOSPermissions(mainWindow!), ms('30s'));
398 });
404 } 399 }
405 400
406 mainWindow.on('show', () => { 401 mainWindow.on('show', () => {
@@ -507,8 +502,7 @@ app.on('ready', () => {
507 ]); 502 ]);
508 } 503 }
509 504
510 // eslint-disable-next-line global-require 505 initialize();
511 require('electron-react-titlebar/main').initialize();
512 506
513 createWindow(); 507 createWindow();
514}); 508});
@@ -673,7 +667,11 @@ ipcMain.handle('get-desktop-capturer-sources', () =>
673); 667);
674 668
675ipcMain.on('window.toolbar-double-clicked', () => { 669ipcMain.on('window.toolbar-double-clicked', () => {
676 mainWindow?.isMaximized() ? mainWindow.unmaximize() : mainWindow?.maximize(); 670 if (mainWindow?.isMaximized()) {
671 mainWindow.unmaximize();
672 } else {
673 mainWindow?.maximize();
674 }
677}); 675});
678 676
679// Quit when all windows are closed. 677// Quit when all windows are closed.
diff --git a/src/internal-server/app/Controllers/Http/ImageController.js b/src/internal-server/app/Controllers/Http/ImageController.js
index 5b8337c49..3ce6fb22d 100644
--- a/src/internal-server/app/Controllers/Http/ImageController.js
+++ b/src/internal-server/app/Controllers/Http/ImageController.js
@@ -1,6 +1,6 @@
1const Env = use('Env'); 1const Env = use('Env');
2 2
3const path = require('path'); 3const path = require('node:path');
4const fs = require('fs-extra'); 4const fs = require('fs-extra');
5const sanitize = require('sanitize-filename'); 5const sanitize = require('sanitize-filename');
6 6
diff --git a/src/internal-server/app/Controllers/Http/UserController.js b/src/internal-server/app/Controllers/Http/UserController.js
index 9a9d76636..89ccd1549 100644
--- a/src/internal-server/app/Controllers/Http/UserController.js
+++ b/src/internal-server/app/Controllers/Http/UserController.js
@@ -4,10 +4,9 @@ const Service = use('App/Models/Service');
4const Workspace = use('App/Models/Workspace'); 4const Workspace = use('App/Models/Workspace');
5const { validateAll } = use('Validator'); 5const { validateAll } = use('Validator');
6 6
7const btoa = require('btoa');
8const fetch = require('node-fetch'); 7const fetch = require('node-fetch');
9const { v4: uuid } = require('uuid'); 8const { v4: uuid } = require('uuid');
10const crypto = require('crypto'); 9const crypto = require('node:crypto');
11const { DEFAULT_APP_SETTINGS } = require('../../../../config'); 10const { DEFAULT_APP_SETTINGS } = require('../../../../config');
12const { convertToJSON } = require('../../../../jsUtils'); 11const { convertToJSON } = require('../../../../jsUtils');
13const { API_VERSION } = require('../../../../environment-remote'); 12const { API_VERSION } = require('../../../../environment-remote');
@@ -26,6 +25,7 @@ const apiRequest = (url, route, method, auth) =>
26 .then(data => data.json()) 25 .then(data => data.json())
27 .then(json => resolve(json)); 26 .then(json => resolve(json));
28 } catch (error) { 27 } catch (error) {
28 // eslint-disable-next-line no-console
29 console.log(error); 29 console.log(error);
30 reject(); 30 reject();
31 } 31 }
@@ -151,7 +151,9 @@ class UserController {
151 // Try to get an authentication token 151 // Try to get an authentication token
152 let token; 152 let token;
153 try { 153 try {
154 const basicToken = btoa(`${email}:${hashedPassword}`); 154 const basicToken = Buffer.from(`${email}:${hashedPassword}`).toString(
155 'base64',
156 );
155 157
156 const rawResponse = await fetch(`${server}/${API_VERSION}/auth/login`, { 158 const rawResponse = await fetch(`${server}/${API_VERSION}/auth/login`, {
157 method: 'POST', 159 method: 'POST',
@@ -197,7 +199,7 @@ class UserController {
197 const services = await apiRequest(server, 'me/services', 'GET', token); 199 const services = await apiRequest(server, 'me/services', 'GET', token);
198 200
199 for (const service of services) { 201 for (const service of services) {
200 await this._createAndCacheService(service, serviceIdTranslation); // eslint-disable-line no-await-in-loop 202 await this._createAndCacheService(service, serviceIdTranslation);
201 } 203 }
202 } catch (error) { 204 } catch (error) {
203 const errorMessage = `Could not import your services into our system.\nError: ${error}`; 205 const errorMessage = `Could not import your services into our system.\nError: ${error}`;
@@ -209,7 +211,7 @@ class UserController {
209 const workspaces = await apiRequest(server, 'workspace', 'GET', token); 211 const workspaces = await apiRequest(server, 'workspace', 'GET', token);
210 212
211 for (const workspace of workspaces) { 213 for (const workspace of workspaces) {
212 await this._createWorkspace(workspace, serviceIdTranslation); // eslint-disable-line no-await-in-loop 214 await this._createWorkspace(workspace, serviceIdTranslation);
213 } 215 }
214 } catch (error) { 216 } catch (error) {
215 const errorMessage = `Could not import your workspaces into our system.\nError: ${error}`; 217 const errorMessage = `Could not import your workspaces into our system.\nError: ${error}`;
@@ -222,11 +224,7 @@ class UserController {
222 } 224 }
223 225
224 // Account import/export 226 // Account import/export
225 async export({ 227 async export({ response }) {
226 // eslint-disable-next-line no-unused-vars
227 auth,
228 response,
229 }) {
230 const allServices = await Service.all(); 228 const allServices = await Service.all();
231 const services = allServices.toJSON(); 229 const services = allServices.toJSON();
232 const allWorkspaces = await Workspace.all(); 230 const allWorkspaces = await Workspace.all();
@@ -257,6 +255,7 @@ class UserController {
257 try { 255 try {
258 file = JSON.parse(request.input('file')); 256 file = JSON.parse(request.input('file'));
259 } catch (error) { 257 } catch (error) {
258 // eslint-disable-next-line no-console
260 console.log(error); 259 console.log(error);
261 return response.send( 260 return response.send(
262 'Could not import: Invalid file, could not read file', 261 'Could not import: Invalid file, could not read file',
@@ -272,7 +271,7 @@ class UserController {
272 // Import services 271 // Import services
273 try { 272 try {
274 for (const service of file.services) { 273 for (const service of file.services) {
275 await this._createAndCacheService(service, serviceIdTranslation); // eslint-disable-line no-await-in-loop 274 await this._createAndCacheService(service, serviceIdTranslation);
276 } 275 }
277 } catch (error) { 276 } catch (error) {
278 const errorMessage = `Could not import your services into our system.\nError: ${error}`; 277 const errorMessage = `Could not import your services into our system.\nError: ${error}`;
@@ -282,7 +281,7 @@ class UserController {
282 // Import workspaces 281 // Import workspaces
283 try { 282 try {
284 for (const workspace of file.workspaces) { 283 for (const workspace of file.workspaces) {
285 await this._createWorkspace(workspace, serviceIdTranslation); // eslint-disable-line no-await-in-loop 284 await this._createWorkspace(workspace, serviceIdTranslation);
286 } 285 }
287 } catch (error) { 286 } catch (error) {
288 const errorMessage = `Could not import your workspaces into our system.\nError: ${error}`; 287 const errorMessage = `Could not import your workspaces into our system.\nError: ${error}`;
@@ -302,6 +301,7 @@ class UserController {
302 ); 301 );
303 302
304 if (workspace.services) { 303 if (workspace.services) {
304 // eslint-disable-next-line no-param-reassign
305 workspace.services = convertToJSON(workspace.services); 305 workspace.services = convertToJSON(workspace.services);
306 } 306 }
307 const services = 307 const services =
@@ -311,6 +311,7 @@ class UserController {
311 ) 311 )
312 : []; 312 : [];
313 if (workspace.data) { 313 if (workspace.data) {
314 // eslint-disable-next-line no-param-reassign
314 workspace.data = convertToJSON(workspace.data); 315 workspace.data = convertToJSON(workspace.data);
315 } 316 }
316 317
@@ -334,9 +335,11 @@ class UserController {
334 ); 335 );
335 336
336 // store the old serviceId as the key for future lookup 337 // store the old serviceId as the key for future lookup
338 // eslint-disable-next-line no-param-reassign
337 serviceIdTranslation[service.serviceId] = newServiceId; 339 serviceIdTranslation[service.serviceId] = newServiceId;
338 340
339 if (service.settings) { 341 if (service.settings) {
342 // eslint-disable-next-line no-param-reassign
340 service.settings = convertToJSON(service.settings); 343 service.settings = convertToJSON(service.settings);
341 } 344 }
342 345
diff --git a/src/internal-server/app/Controllers/Http/WorkspaceController.js b/src/internal-server/app/Controllers/Http/WorkspaceController.js
index 352589567..d271dac12 100644
--- a/src/internal-server/app/Controllers/Http/WorkspaceController.js
+++ b/src/internal-server/app/Controllers/Http/WorkspaceController.js
@@ -92,12 +92,7 @@ class WorkspaceController {
92 }); 92 });
93 } 93 }
94 94
95 async delete({ 95 async delete({ response, params }) {
96 // eslint-disable-next-line no-unused-vars
97 request,
98 response,
99 params,
100 }) {
101 // Validate user input 96 // Validate user input
102 const validation = await validateAll(params, { 97 const validation = await validateAll(params, {
103 id: 'required', 98 id: 'required',
diff --git a/src/internal-server/app/ImageHelper.js b/src/internal-server/app/ImageHelper.js
index fba610069..b24a97836 100644
--- a/src/internal-server/app/ImageHelper.js
+++ b/src/internal-server/app/ImageHelper.js
@@ -2,7 +2,7 @@ const Env = use('Env');
2 2
3const { v4: uuid } = require('uuid'); 3const { v4: uuid } = require('uuid');
4 4
5const path = require('path'); 5const path = require('node:path');
6const fs = require('fs-extra'); 6const fs = require('fs-extra');
7const { API_VERSION } = require('../../environment-remote'); 7const { API_VERSION } = require('../../environment-remote');
8 8
diff --git a/src/internal-server/database/factory.js b/src/internal-server/database/factory.js
index 8534fc20a..8cd45a80d 100644
--- a/src/internal-server/database/factory.js
+++ b/src/internal-server/database/factory.js
@@ -1,3 +1,4 @@
1/* eslint-disable unicorn/no-empty-file */
1/* 2/*
2|-------------------------------------------------------------------------- 3|--------------------------------------------------------------------------
3| Factory 4| Factory
diff --git a/src/internal-server/public/js/transfer.js b/src/internal-server/public/js/transfer.js
index e3b3f92a2..76aa4b938 100644
--- a/src/internal-server/public/js/transfer.js
+++ b/src/internal-server/public/js/transfer.js
@@ -13,5 +13,6 @@ fileInput.addEventListener('change', () => {
13 submitBtn.disabled = false; 13 submitBtn.disabled = false;
14 } 14 }
15 }); 15 });
16 // eslint-disable-next-line unicorn/prefer-blob-reading-methods
16 reader.readAsText(fileInput.files[0]); 17 reader.readAsText(fileInput.files[0]);
17}); 18});
diff --git a/src/internal-server/start.ts b/src/internal-server/start.ts
index f5e1953e7..b6ee65986 100644
--- a/src/internal-server/start.ts
+++ b/src/internal-server/start.ts
@@ -18,7 +18,7 @@
18import fold from '@adonisjs/fold'; 18import fold from '@adonisjs/fold';
19import { Ignitor, hooks } from '@adonisjs/ignitor'; 19import { Ignitor, hooks } from '@adonisjs/ignitor';
20import { readFile, stat, chmod, writeFile } from 'fs-extra'; 20import { readFile, stat, chmod, writeFile } from 'fs-extra';
21import { join } from 'path'; 21import { join } from 'node:path';
22import { LOCAL_HOSTNAME } from '../config'; 22import { LOCAL_HOSTNAME } from '../config';
23import { isWindows } from '../environment'; 23import { isWindows } from '../environment';
24 24
diff --git a/src/internal-server/start/routes.js b/src/internal-server/start/routes.js
index 8aca39347..2dbd0713e 100644
--- a/src/internal-server/start/routes.js
+++ b/src/internal-server/start/routes.js
@@ -5,7 +5,7 @@
5| 5|
6*/ 6*/
7 7
8const { timingSafeEqual } = require('crypto'); 8const { timingSafeEqual } = require('node:crypto');
9 9
10/** @type {typeof import('@adonisjs/framework/src/Route/Manager')} */ 10/** @type {typeof import('@adonisjs/framework/src/Route/Manager')} */
11const Route = use('Route'); 11const Route = use('Route');
diff --git a/src/internal-server/test.ts b/src/internal-server/test.ts
index 6949df79e..c163656fb 100644
--- a/src/internal-server/test.ts
+++ b/src/internal-server/test.ts
@@ -1,4 +1,4 @@
1import { join } from 'path'; 1import { join } from 'node:path';
2import { ensureDirSync } from 'fs-extra'; 2import { ensureDirSync } from 'fs-extra';
3import { server } from './start'; 3import { server } from './start';
4 4
diff --git a/src/jsUtils.ts b/src/jsUtils.ts
index f6a1df2fe..0095028ef 100644
--- a/src/jsUtils.ts
+++ b/src/jsUtils.ts
@@ -3,15 +3,15 @@ export const ifUndefined = <T>(
3 defaultValue: T, 3 defaultValue: T,
4): T => source ?? defaultValue; 4): T => source ?? defaultValue;
5 5
6export const convertToJSON = (data: string | any | undefined | null) => 6export const convertToJSON = (data?: string | any | null) =>
7 data && typeof data === 'string' && data.length > 0 ? JSON.parse(data) : data; 7 data && typeof data === 'string' && data.length > 0 ? JSON.parse(data) : data;
8 8
9export const cleanseJSObject = (data: any | undefined | null) => 9export const cleanseJSObject = (data?: any | null) =>
10 JSON.parse(JSON.stringify(data)); 10 JSON.parse(JSON.stringify(data));
11 11
12export const isEscKeyPress = (keyCode: number) => keyCode === 27; 12export const isEscKeyPress = (keyCode: number) => keyCode === 27;
13 13
14export const safeParseInt = (text: string | number | undefined | null) => { 14export const safeParseInt = (text?: string | number | null) => {
15 if (text === undefined || text === null) { 15 if (text === undefined || text === null) {
16 return 0; 16 return 0;
17 } 17 }
diff --git a/src/lib/Form.ts b/src/lib/Form.ts
index ca96406e7..2b25eb193 100644
--- a/src/lib/Form.ts
+++ b/src/lib/Form.ts
@@ -3,6 +3,7 @@ import vjf from 'mobx-react-form/lib/validators/VJF';
3import { FormFields } from '../@types/mobx-form.types'; 3import { FormFields } from '../@types/mobx-form.types';
4 4
5export default class DefaultForm extends Form { 5export default class DefaultForm extends Form {
6 // eslint-disable-next-line @typescript-eslint/no-useless-constructor
6 constructor(fields: FormFields) { 7 constructor(fields: FormFields) {
7 super(fields); 8 super(fields);
8 } 9 }
diff --git a/src/lib/Menu.ts b/src/lib/Menu.ts
index d611d5f3e..08ad9dabe 100644
--- a/src/lib/Menu.ts
+++ b/src/lib/Menu.ts
@@ -12,7 +12,7 @@ import { defineMessages, IntlShape } from 'react-intl';
12import osName from 'os-name'; 12import osName from 'os-name';
13import { fromJS } from 'immutable'; 13import { fromJS } from 'immutable';
14import semver from 'semver'; 14import semver from 'semver';
15import os from 'os'; 15import os from 'node:os';
16import { 16import {
17 isWindows, 17 isWindows,
18 cmdOrCtrlShortcutKey, 18 cmdOrCtrlShortcutKey,
@@ -700,6 +700,7 @@ class FranzMenu implements StoresProps {
700 700
701 // Don't initialize when window['ferdium'] is undefined 701 // Don't initialize when window['ferdium'] is undefined
702 if (window['ferdium'] === undefined) { 702 if (window['ferdium'] === undefined) {
703 // eslint-disable-next-line no-console
703 console.log('skipping menu init'); 704 console.log('skipping menu init');
704 return; 705 return;
705 } 706 }
@@ -1010,6 +1011,7 @@ class FranzMenu implements StoresProps {
1010 }, 1011 },
1011 ]; 1012 ];
1012 1013
1014 // eslint-disable-next-line unicorn/prefer-at
1013 (tpl[tpl.length - 1].submenu as MenuItemConstructorOptions[]).push( 1015 (tpl[tpl.length - 1].submenu as MenuItemConstructorOptions[]).push(
1014 { 1016 {
1015 type: 'separator', 1017 type: 'separator',
@@ -1027,6 +1029,7 @@ class FranzMenu implements StoresProps {
1027 1029
1028 tpl[5].submenu = this.todosMenu(); 1030 tpl[5].submenu = this.todosMenu();
1029 1031
1032 // eslint-disable-next-line unicorn/prefer-at
1030 (tpl[tpl.length - 1].submenu as MenuItemConstructorOptions[]).push( 1033 (tpl[tpl.length - 1].submenu as MenuItemConstructorOptions[]).push(
1031 { 1034 {
1032 type: 'separator', 1035 type: 'separator',
diff --git a/src/lib/Tray.ts b/src/lib/Tray.ts
index dafbb68aa..0d567fc13 100644
--- a/src/lib/Tray.ts
+++ b/src/lib/Tray.ts
@@ -9,7 +9,7 @@ import {
9 BrowserWindow, 9 BrowserWindow,
10 NativeImage, 10 NativeImage,
11} from 'electron'; 11} from 'electron';
12import { join } from 'path'; 12import { join } from 'node:path';
13import macosVersion from 'macos-version'; 13import macosVersion from 'macos-version';
14import { isMac, isWindows, isLinux } from '../environment'; 14import { isMac, isWindows, isLinux } from '../environment';
15 15
diff --git a/src/models/Recipe.ts b/src/models/Recipe.ts
index a03d3447f..a6d2fd86d 100644
--- a/src/models/Recipe.ts
+++ b/src/models/Recipe.ts
@@ -1,6 +1,6 @@
1import semver from 'semver'; 1import semver from 'semver';
2import { pathExistsSync } from 'fs-extra'; 2import { pathExistsSync } from 'fs-extra';
3import { join } from 'path'; 3import { join } from 'node:path';
4import { DEFAULT_SERVICE_SETTINGS } from '../config'; 4import { DEFAULT_SERVICE_SETTINGS } from '../config';
5import { ifUndefined } from '../jsUtils'; 5import { ifUndefined } from '../jsUtils';
6 6
@@ -50,11 +50,15 @@ export interface IRecipe {
50 partition: string; 50 partition: string;
51 local: boolean; 51 local: boolean;
52 52
53 // eslint-disable-next-line @typescript-eslint/ban-types
53 readonly overrideUserAgent?: null | Function; 54 readonly overrideUserAgent?: null | Function;
55 // eslint-disable-next-line @typescript-eslint/ban-types
54 readonly buildUrl?: null | Function; 56 readonly buildUrl?: null | Function;
57 // eslint-disable-next-line @typescript-eslint/ban-types
55 readonly modifyRequestHeaders?: null | Function; 58 readonly modifyRequestHeaders?: null | Function;
59 // eslint-disable-next-line @typescript-eslint/ban-types
56 readonly knownCertificateHosts?: null | Function; 60 readonly knownCertificateHosts?: null | Function;
57 readonly events?: null | { (key: string): string }; 61 readonly events?: null | ((key: string) => string);
58 62
59 // TODO: [TS DEBT] Need to check if below properties are needed and where is inherited / implemented from 63 // TODO: [TS DEBT] Need to check if below properties are needed and where is inherited / implemented from
60 author?: string[]; 64 author?: string[];
@@ -132,7 +136,7 @@ export default class Recipe implements IRecipe {
132 this.id = ifUndefined<string>(data.id, this.id); 136 this.id = ifUndefined<string>(data.id, this.id);
133 this.name = ifUndefined<string>(data.name, this.name); 137 this.name = ifUndefined<string>(data.name, this.name);
134 this.version = ifUndefined<string>(data.version, this.version); 138 this.version = ifUndefined<string>(data.version, this.version);
135 this.aliases = ifUndefined<Array<string>>(data.aliases, this.aliases); 139 this.aliases = ifUndefined<string[]>(data.aliases, this.aliases);
136 this.serviceURL = ifUndefined<string>( 140 this.serviceURL = ifUndefined<string>(
137 data.config.serviceURL, 141 data.config.serviceURL,
138 this.serviceURL, 142 this.serviceURL,
diff --git a/src/models/RecipePreview.ts b/src/models/RecipePreview.ts
index 33b5e1432..8ace01a33 100644
--- a/src/models/RecipePreview.ts
+++ b/src/models/RecipePreview.ts
@@ -1,4 +1,4 @@
1interface IRecipePreview { 1export interface IRecipePreview {
2 id: string; 2 id: string;
3 name: string; 3 name: string;
4 icon: string; 4 icon: string;
diff --git a/src/models/Service.ts b/src/models/Service.ts
index af0085185..4a9fcf4fb 100644
--- a/src/models/Service.ts
+++ b/src/models/Service.ts
@@ -1,7 +1,7 @@
1import { autorun, action, computed, makeObservable, observable } from 'mobx'; 1import { autorun, action, computed, makeObservable, observable } from 'mobx';
2import { ipcRenderer } from 'electron'; 2import { ipcRenderer } from 'electron';
3import { webContents } from '@electron/remote'; 3import { webContents } from '@electron/remote';
4import { join } from 'path'; 4import { join } from 'node:path';
5import ElectronWebView from 'react-electron-web-view'; 5import ElectronWebView from 'react-electron-web-view';
6 6
7import { todosStore } from '../features/todos'; 7import { todosStore } from '../features/todos';
diff --git a/src/preload-safe-debug.ts b/src/preload-safe-debug.ts
index d18dd8639..471ae1a1f 100644
--- a/src/preload-safe-debug.ts
+++ b/src/preload-safe-debug.ts
@@ -8,6 +8,7 @@
8 * We disable the `debug` package in context isolated renderers, 8 * We disable the `debug` package in context isolated renderers,
9 * because they correspond to preload scripts. 9 * because they correspond to preload scripts.
10 */ 10 */
11// eslint-disable-next-line unicorn/no-empty-file
11module.exports = function debug(namespace: string): (...params: any[]) => void { 12module.exports = function debug(namespace: string): (...params: any[]) => void {
12 if ( 13 if (
13 typeof process === 'object' && 14 typeof process === 'object' &&
@@ -18,13 +19,14 @@ module.exports = function debug(namespace: string): (...params: any[]) => void {
18 // We don't reimplement the matching algorithm from `debug` and just dump all 19 // We don't reimplement the matching algorithm from `debug` and just dump all
19 // messages to the console if some form of `Ferdium` debugging is enabled. 20 // messages to the console if some form of `Ferdium` debugging is enabled.
20 if (process.env.DEBUG?.startsWith('Ferdium:')) { 21 if (process.env.DEBUG?.startsWith('Ferdium:')) {
22 // eslint-disable-next-line no-console
21 return (...params) => console.debug(`[${namespace}]`, ...params); 23 return (...params) => console.debug(`[${namespace}]`, ...params);
22 } 24 }
23 return () => {}; 25 return () => {};
24 } 26 }
25 /* 27 /*
26 eslint-disable-next-line global-require --
27 This file contains a workaround for situations were global require is problematic. 28 This file contains a workaround for situations were global require is problematic.
28 */ 29 */
30 // eslint-disable-next-line global-require
29 return require('debug')(namespace); 31 return require('debug')(namespace);
30}; 32};
diff --git a/src/routes.tsx b/src/routes.tsx
index 04b6fa96f..9f81e46d9 100644
--- a/src/routes.tsx
+++ b/src/routes.tsx
@@ -51,6 +51,7 @@ class FerdiumRoutes extends Component<IProps> {
51 const errorProps = { error: routeProps.stores.globalError.error || {} }; 51 const errorProps = { error: routeProps.stores.globalError.error || {} };
52 52
53 return ( 53 return (
54 // @ts-expect-error Fix me
54 <HistoryRouter history={history}> 55 <HistoryRouter history={history}>
55 <Routes> 56 <Routes>
56 <Route path="/auth" element={<AuthLayoutContainer {...routeProps} />}> 57 <Route path="/auth" element={<AuthLayoutContainer {...routeProps} />}>
@@ -128,7 +129,7 @@ class FerdiumRoutes extends Component<IProps> {
128 /> 129 />
129 <Route 130 <Route
130 path="/settings/services" 131 path="/settings/services"
131 /* @ts-ignore */ 132 // @ts-expect-error Fix me
132 element={<ServicesScreen {...this.props} />} 133 element={<ServicesScreen {...this.props} />}
133 /> 134 />
134 <Route 135 <Route
@@ -137,37 +138,37 @@ class FerdiumRoutes extends Component<IProps> {
137 /> 138 />
138 <Route 139 <Route
139 path={WORKSPACES_ROUTES.ROOT} 140 path={WORKSPACES_ROUTES.ROOT}
140 /* @ts-ignore */ 141 // @ts-expect-error Fix me
141 element={<WorkspacesScreen {...this.props} />} 142 element={<WorkspacesScreen {...this.props} />}
142 /> 143 />
143 <Route 144 <Route
144 path={WORKSPACES_ROUTES.EDIT} 145 path={WORKSPACES_ROUTES.EDIT}
145 /* @ts-ignore */ 146 // @ts-expect-error Fix me
146 element={<EditWorkspaceScreen {...this.props} />} 147 element={<EditWorkspaceScreen {...this.props} />}
147 /> 148 />
148 <Route 149 <Route
149 path="/settings/user" 150 path="/settings/user"
150 /* @ts-ignore */ 151 // @ts-expect-error Fix me
151 element={<AccountScreen {...this.props} />} 152 element={<AccountScreen {...this.props} />}
152 /> 153 />
153 <Route 154 <Route
154 path="/settings/user/edit" 155 path="/settings/user/edit"
155 /* @ts-ignore */ 156 // @ts-expect-error Fix me
156 element={<EditUserScreen {...this.props} />} 157 element={<EditUserScreen {...this.props} />}
157 /> 158 />
158 <Route 159 <Route
159 path="/settings/team" 160 path="/settings/team"
160 /* @ts-ignore */ 161 // @ts-expect-error Fix me
161 element={<TeamScreen {...this.props} />} 162 element={<TeamScreen {...this.props} />}
162 /> 163 />
163 <Route 164 <Route
164 path="/settings/app" 165 path="/settings/app"
165 /* @ts-ignore */ 166 // @ts-expect-error Fix me
166 element={<EditSettingsScreen {...this.props} />} 167 element={<EditSettingsScreen {...this.props} />}
167 /> 168 />
168 <Route 169 <Route
169 path="/settings/invite" 170 path="/settings/invite"
170 /* @ts-ignore */ 171 // @ts-expect-error Fix me
171 element={<InviteSettingsScreen {...this.props} />} 172 element={<InviteSettingsScreen {...this.props} />}
172 /> 173 />
173 <Route 174 <Route
diff --git a/src/stores/AppStore.ts b/src/stores/AppStore.ts
index 82591a2a4..0bf845e4d 100644
--- a/src/stores/AppStore.ts
+++ b/src/stores/AppStore.ts
@@ -11,7 +11,7 @@ import { action, computed, makeObservable, observable } from 'mobx';
11import moment from 'moment'; 11import moment from 'moment';
12import AutoLaunch from 'auto-launch'; 12import AutoLaunch from 'auto-launch';
13import ms from 'ms'; 13import ms from 'ms';
14import { URL } from 'url'; 14import { URL } from 'node:url';
15import { readJsonSync } from 'fs-extra'; 15import { readJsonSync } from 'fs-extra';
16 16
17import { Stores } from '../@types/stores.types'; 17import { Stores } from '../@types/stores.types';
@@ -351,6 +351,7 @@ export default class AppStore extends TypedStore {
351 351
352 // TODO: is there a simple way to use blobs for notifications without storing them on disk? 352 // TODO: is there a simple way to use blobs for notifications without storing them on disk?
353 if (options.icon?.startsWith('blob:')) { 353 if (options.icon?.startsWith('blob:')) {
354 // eslint-disable-next-line no-param-reassign
354 delete options.icon; 355 delete options.icon;
355 } 356 }
356 357
@@ -493,6 +494,7 @@ export default class AppStore extends TypedStore {
493 allOrphanedServiceIds.map(id => removeServicePartitionDirectory(id)), 494 allOrphanedServiceIds.map(id => removeServicePartitionDirectory(id)),
494 ); 495 );
495 } catch (error) { 496 } catch (error) {
497 // eslint-disable-next-line no-console
496 console.log('Error while deleting service partition directory -', error); 498 console.log('Error while deleting service partition directory -', error);
497 } 499 }
498 await Promise.all( 500 await Promise.all(
diff --git a/src/stores/GlobalErrorStore.ts b/src/stores/GlobalErrorStore.ts
index 8547fec72..74a43100b 100644
--- a/src/stores/GlobalErrorStore.ts
+++ b/src/stores/GlobalErrorStore.ts
@@ -27,34 +27,36 @@ export default class GlobalErrorStore extends TypedStore {
27 27
28 @observable response: Response = {} as Response; 28 @observable response: Response = {} as Response;
29 29
30 // TODO: Get rid of the @ts-ignores in this function. 30 // TODO: Get rid of the @ts-expect-errors in this function.
31 constructor(stores: Stores, api: ApiInterface, actions: Actions) { 31 constructor(stores: Stores, api: ApiInterface, actions: Actions) {
32 super(stores, api, actions); 32 super(stores, api, actions);
33 33
34 makeObservable(this); 34 makeObservable(this);
35 35
36 window.addEventListener('error', (...errorArgs: any[]): void => { 36 window.addEventListener('error', (...errorArgs: any[]): void => {
37 // @ts-ignore ts-message: Expected 5 arguments, but got 2. 37 // @ts-expect-error ts-message: Expected 5 arguments, but got 2.
38 this._handleConsoleError.call(this, ['error', ...errorArgs]); 38 this._handleConsoleError.call(this, ['error', ...errorArgs]);
39 }); 39 });
40 40
41 const origConsoleError = console.error; 41 const origConsoleError = console.error;
42 window.console.error = (...errorArgs: any[]) => { 42 window.console.error = (...errorArgs: any[]) => {
43 // @ts-ignore ts-message: Expected 5 arguments, but got 2. 43 // @ts-expect-error ts-message: Expected 5 arguments, but got 2.
44 this._handleConsoleError.call(this, ['error', ...errorArgs]); 44 this._handleConsoleError.call(this, ['error', ...errorArgs]);
45 origConsoleError.apply(this, errorArgs); 45 origConsoleError.apply(this, errorArgs);
46 }; 46 };
47 47
48 // eslint-disable-next-line no-console
48 const origConsoleLog = console.log; 49 const origConsoleLog = console.log;
49 window.console.log = (...logArgs: any[]) => { 50 window.console.log = (...logArgs: any[]) => {
50 // @ts-ignore ts-message: Expected 5 arguments, but got 2. 51 // @ts-expect-error ts-message: Expected 5 arguments, but got 2.
51 this._handleConsoleError.call(this, ['log', ...logArgs]); 52 this._handleConsoleError.call(this, ['log', ...logArgs]);
52 origConsoleLog.apply(this, logArgs); 53 origConsoleLog.apply(this, logArgs);
53 }; 54 };
54 55
56 // eslint-disable-next-line no-console
55 const origConsoleInfo = console.info; 57 const origConsoleInfo = console.info;
56 window.console.info = (...infoArgs: any[]) => { 58 window.console.info = (...infoArgs: any[]) => {
57 // @ts-ignore ts-message: Expected 5 arguments, but got 2. 59 // @ts-expect-error ts-message: Expected 5 arguments, but got 2.
58 this._handleConsoleError.call(this, ['info', ...infoArgs]); 60 this._handleConsoleError.call(this, ['info', ...infoArgs]);
59 origConsoleInfo.apply(this, infoArgs); 61 origConsoleInfo.apply(this, infoArgs);
60 }; 62 };
diff --git a/src/stores/RecipesStore.ts b/src/stores/RecipesStore.ts
index 07f1343f8..b645a5989 100644
--- a/src/stores/RecipesStore.ts
+++ b/src/stores/RecipesStore.ts
@@ -36,6 +36,7 @@ export default class RecipesStore extends TypedStore {
36 36
37 async setup(): Promise<void> { 37 async setup(): Promise<void> {
38 // Initially load all recipes 38 // Initially load all recipes
39 // eslint-disable-next-line @typescript-eslint/no-unused-expressions
39 this.all; 40 this.all;
40 } 41 }
41 42
diff --git a/src/stores/ServicesStore.ts b/src/stores/ServicesStore.ts
index 44f8b277c..1cee0c57f 100644
--- a/src/stores/ServicesStore.ts
+++ b/src/stores/ServicesStore.ts
@@ -3,7 +3,7 @@ import { action, reaction, computed, observable, makeObservable } from 'mobx';
3import { debounce, remove } from 'lodash'; 3import { debounce, remove } from 'lodash';
4import ms from 'ms'; 4import ms from 'ms';
5import { ensureFileSync, pathExistsSync, writeFileSync } from 'fs-extra'; 5import { ensureFileSync, pathExistsSync, writeFileSync } from 'fs-extra';
6import { join } from 'path'; 6import { join } from 'node:path';
7 7
8import { Stores } from '../@types/stores.types'; 8import { Stores } from '../@types/stores.types';
9import { ApiInterface } from '../api'; 9import { ApiInterface } from '../api';
@@ -435,7 +435,7 @@ export default class ServicesStore extends TypedStore {
435 435
436 // TODO: This can actually return undefined as well 436 // TODO: This can actually return undefined as well
437 one(id: string): Service { 437 one(id: string): Service {
438 return this.all.find(service => service.id === id) as Service; 438 return this.all.find(service => service.id === id)!;
439 } 439 }
440 440
441 async _showAddServiceInterface({ recipeId }) { 441 async _showAddServiceInterface({ recipeId }) {
@@ -594,7 +594,7 @@ export default class ServicesStore extends TypedStore {
594 this.stores.router.push(redirect); 594 this.stores.router.push(redirect);
595 } 595 }
596 596
597 this.allServicesRequest.patch(result => { 597 this.allServicesRequest.patch((result: Service[]) => {
598 remove(result, (c: Service) => c.id === serviceId); 598 remove(result, (c: Service) => c.id === serviceId);
599 }); 599 });
600 600
@@ -606,7 +606,7 @@ export default class ServicesStore extends TypedStore {
606 // Get directory for recipe 606 // Get directory for recipe
607 const normalDirectory = getRecipeDirectory(recipe); 607 const normalDirectory = getRecipeDirectory(recipe);
608 const devDirectory = getDevRecipeDirectory(recipe); 608 const devDirectory = getDevRecipeDirectory(recipe);
609 let directory; 609 let directory: string;
610 610
611 if (pathExistsSync(normalDirectory)) { 611 if (pathExistsSync(normalDirectory)) {
612 directory = normalDirectory; 612 directory = normalDirectory;
@@ -1028,7 +1028,7 @@ export default class ServicesStore extends TypedStore {
1028 } 1028 }
1029 1029
1030 this.reorderServicesRequest.execute(services); 1030 this.reorderServicesRequest.execute(services);
1031 this.allServicesRequest.patch(data => { 1031 this.allServicesRequest.patch((data: Service[]) => {
1032 for (const s of data) { 1032 for (const s of data) {
1033 s.order = services[s.id]; 1033 s.order = services[s.id];
1034 } 1034 }
@@ -1172,7 +1172,7 @@ export default class ServicesStore extends TypedStore {
1172 ); 1172 );
1173 1173
1174 // eslint-disable-next-line unicorn/consistent-function-scoping 1174 // eslint-disable-next-line unicorn/consistent-function-scoping
1175 const resetTimer = service => { 1175 const resetTimer = (service: Service) => {
1176 service.lastPollAnswer = Date.now(); 1176 service.lastPollAnswer = Date.now();
1177 service.lastPoll = Date.now(); 1177 service.lastPoll = Date.now();
1178 }; 1178 };
@@ -1306,7 +1306,7 @@ export default class ServicesStore extends TypedStore {
1306 }); 1306 });
1307 } 1307 }
1308 1308
1309 _cleanUpTeamIdAndCustomUrl(recipeId, data): any { 1309 _cleanUpTeamIdAndCustomUrl(recipeId: string, data: Service): any {
1310 const serviceData = data; 1310 const serviceData = data;
1311 const recipe = this.stores.recipes.one(recipeId); 1311 const recipe = this.stores.recipes.one(recipeId);
1312 1312
@@ -1318,6 +1318,7 @@ export default class ServicesStore extends TypedStore {
1318 data.team && 1318 data.team &&
1319 data.customUrl 1319 data.customUrl
1320 ) { 1320 ) {
1321 // @ts-expect-error The operand of a 'delete' operator must be optional.
1321 delete serviceData.team; 1322 delete serviceData.team;
1322 } 1323 }
1323 1324
@@ -1343,7 +1344,7 @@ export default class ServicesStore extends TypedStore {
1343 } 1344 }
1344 1345
1345 // Helper 1346 // Helper
1346 _initializeServiceRecipeInWebview(serviceId) { 1347 _initializeServiceRecipeInWebview(serviceId: string) {
1347 const service = this.one(serviceId); 1348 const service = this.one(serviceId);
1348 1349
1349 if (service.webview) { 1350 if (service.webview) {
@@ -1362,7 +1363,7 @@ export default class ServicesStore extends TypedStore {
1362 } 1363 }
1363 } 1364 }
1364 1365
1365 _initRecipePolling(serviceId) { 1366 _initRecipePolling(serviceId: string) {
1366 const service = this.one(serviceId); 1367 const service = this.one(serviceId);
1367 1368
1368 const delay = ms('2s'); 1369 const delay = ms('2s');
@@ -1385,7 +1386,7 @@ export default class ServicesStore extends TypedStore {
1385 } 1386 }
1386 } 1387 }
1387 1388
1388 _wrapIndex(index, delta, size) { 1389 _wrapIndex(index: number, delta: number, size: number) {
1389 return (((index + delta) % size) + size) % size; 1390 return (((index + delta) % size) + size) % size;
1390 } 1391 }
1391} 1392}
diff --git a/src/stores/SettingsStore.ts b/src/stores/SettingsStore.ts
index 5ca499160..90cd82690 100644
--- a/src/stores/SettingsStore.ts
+++ b/src/stores/SettingsStore.ts
@@ -70,14 +70,17 @@ export default class SettingsStore extends TypedStore {
70 this.all.app.lockingFeatureEnabled && 70 this.all.app.lockingFeatureEnabled &&
71 this.all.app.inactivityLock !== 0 71 this.all.app.inactivityLock !== 0
72 ) { 72 ) {
73 inactivityTimer = setTimeout(() => { 73 inactivityTimer = setTimeout(
74 this.actions.settings.update({ 74 () => {
75 type: 'app', 75 this.actions.settings.update({
76 data: { 76 type: 'app',
77 locked: true, 77 data: {
78 }, 78 locked: true,
79 }); 79 },
80 }, this.all.app.inactivityLock * 1000 * 60); 80 });
81 },
82 this.all.app.inactivityLock * 1000 * 60,
83 );
81 } 84 }
82 }); 85 });
83 getCurrentWindow().on('focus', () => { 86 getCurrentWindow().on('focus', () => {
@@ -176,6 +179,7 @@ export default class SettingsStore extends TypedStore {
176 179
177 const appSettings = this.all[type]; 180 const appSettings = this.all[type];
178 if (Object.hasOwnProperty.call(appSettings, key)) { 181 if (Object.hasOwnProperty.call(appSettings, key)) {
182 // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
179 delete appSettings[key]; 183 delete appSettings[key];
180 184
181 this.actions.settings.update({ 185 this.actions.settings.update({
@@ -185,6 +189,7 @@ export default class SettingsStore extends TypedStore {
185 } 189 }
186 } 190 }
187 191
192 // eslint-disable-next-line @typescript-eslint/ban-types
188 _ensureMigrationAndMarkDone(migrationName: string, callback: Function): void { 193 _ensureMigrationAndMarkDone(migrationName: string, callback: Function): void {
189 if (!this.all.migration[migrationName]) { 194 if (!this.all.migration[migrationName]) {
190 callback(); 195 callback();
diff --git a/src/stores/UserStore.ts b/src/stores/UserStore.ts
index 7ba8f4222..0616acdad 100644
--- a/src/stores/UserStore.ts
+++ b/src/stores/UserStore.ts
@@ -210,7 +210,7 @@ export default class UserStore extends TypedStore {
210 currency, 210 currency,
211 }): Promise<void> { 211 }): Promise<void> {
212 // TODO: [TS DEBT] Need to find a way proper to implement promise's then and catch in request class 212 // TODO: [TS DEBT] Need to find a way proper to implement promise's then and catch in request class
213 // @ts-ignore 213 // @ts-expect-error Fix me
214 const authToken = await this.signupRequest.execute({ 214 const authToken = await this.signupRequest.execute({
215 firstname, 215 firstname,
216 lastname, 216 lastname,
@@ -400,7 +400,7 @@ export default class UserStore extends TypedStore {
400 const params = new URLSearchParams(parsedUrl.search.slice(1)); 400 const params = new URLSearchParams(parsedUrl.search.slice(1));
401 401
402 // TODO: Remove the neccesity for `as string` 402 // TODO: Remove the neccesity for `as string`
403 params.append('authToken', this.authToken as string); 403 params.append('authToken', this.authToken!);
404 404
405 return `${parsedUrl.origin}${parsedUrl.pathname}?${params.toString()}`; 405 return `${parsedUrl.origin}${parsedUrl.pathname}?${params.toString()}`;
406 } 406 }
diff --git a/src/stores/lib/CachedRequest.ts b/src/stores/lib/CachedRequest.ts
index 25cc365e2..b24336fe6 100644
--- a/src/stores/lib/CachedRequest.ts
+++ b/src/stores/lib/CachedRequest.ts
@@ -1,5 +1,5 @@
1import { action } from 'mobx'; 1import { action } from 'mobx';
2import { isEqual, remove } from 'lodash'; 2import { isEqual } from 'lodash';
3import Request from './Request'; 3import Request from './Request';
4 4
5export default class CachedRequest extends Request { 5export default class CachedRequest extends Request {
@@ -110,10 +110,6 @@ export default class CachedRequest extends Request {
110 }); 110 });
111 } 111 }
112 112
113 removeCacheForCallWith(...args: any): void {
114 remove(this._apiCalls, c => isEqual(c.args, args));
115 }
116
117 _addApiCall(args: any) { 113 _addApiCall(args: any) {
118 const newCall = { args, result: null }; 114 const newCall = { args, result: null };
119 this._apiCalls.push(newCall); 115 this._apiCalls.push(newCall);
diff --git a/src/stores/lib/Request.ts b/src/stores/lib/Request.ts
index f9424ac99..911c5ccfb 100644
--- a/src/stores/lib/Request.ts
+++ b/src/stores/lib/Request.ts
@@ -1,6 +1,7 @@
1import { observable, action, computed, makeObservable } from 'mobx'; 1import { observable, action, computed, makeObservable } from 'mobx';
2import { isEqual } from 'lodash/fp'; 2import { isEqual } from 'lodash/fp';
3 3
4// eslint-disable-next-line no-use-before-define
4type Hook = (request: Request) => void; 5type Hook = (request: Request) => void;
5 6
6export default class Request { 7export default class Request {
diff --git a/src/stores/lib/TypedStore.ts b/src/stores/lib/TypedStore.ts
index 0a669e669..8bae529ba 100644
--- a/src/stores/lib/TypedStore.ts
+++ b/src/stores/lib/TypedStore.ts
@@ -41,7 +41,7 @@ export default abstract class TypedStore {
41 this.actions = actions; 41 this.actions = actions;
42 } 42 }
43 43
44 registerReactions(reactions: { (r: IReactionPublic): void }[]): void { 44 registerReactions(reactions: ((r: IReactionPublic) => void)[]): void {
45 for (const reaction of reactions) { 45 for (const reaction of reactions) {
46 this._reactions.push(new Reaction(reaction)); 46 this._reactions.push(new Reaction(reaction));
47 } 47 }
diff --git a/src/styles/animations.scss b/src/styles/animations.scss
index 35125dec5..dcc9690fb 100644
--- a/src/styles/animations.scss
+++ b/src/styles/animations.scss
@@ -1,43 +1,51 @@
1@import "./globals.scss"; 1@import './globals.scss';
2 2
3// FadeIn 3// FadeIn
4.fadeIn-appear { opacity: .01; } 4.fadeIn-appear {
5 opacity: 0.01;
6}
5 7
6.fadeIn-appear.fadeIn-appear-active { 8.fadeIn-appear.fadeIn-appear-active {
7 opacity: 1; 9 opacity: 1;
8 transition: opacity .5s ease-out; 10 transition: opacity 0.5s ease-out;
9} 11}
10 12
11.fadeIn-enter { 13.fadeIn-enter {
12 opacity: .01; 14 opacity: 0.01;
13 transition: opacity .5s ease-out; 15 transition: opacity 0.5s ease-out;
14} 16}
15 17
16.fadeIn-leave { opacity: 1; } 18.fadeIn-leave {
19 opacity: 1;
20}
17 21
18.fadeIn-leave.fadeIn-leave-active { 22.fadeIn-leave.fadeIn-leave-active {
19 opacity: .01; 23 opacity: 0.01;
20 transition: opacity 300ms ease-in; 24 transition: opacity 300ms ease-in;
21} 25}
22 26
23// FadeIn Fast 27// FadeIn Fast
24.fadeIn-fast-appear { opacity: .01; } 28.fadeIn-fast-appear {
29 opacity: 0.01;
30}
25 31
26.fadeIn-fast-appear.fadeIn-fast-appear-active { 32.fadeIn-fast-appear.fadeIn-fast-appear-active {
27 opacity: 1; 33 opacity: 1;
28 transition: opacity .25s ease-out; 34 transition: opacity 0.25s ease-out;
29} 35}
30 36
31.fadeIn-fast-enter { 37.fadeIn-fast-enter {
32 opacity: .01; 38 opacity: 0.01;
33 transition: opacity .25s ease-out; 39 transition: opacity 0.25s ease-out;
34} 40}
35 41
36.fadeIn-fast-leave { opacity: 1; } 42.fadeIn-fast-leave {
43 opacity: 1;
44}
37 45
38.fadeIn-fast-leave.fadeIn-fast-leave-active { 46.fadeIn-fast-leave.fadeIn-fast-leave-active {
39 opacity: .01; 47 opacity: 0.01;
40 transition: opacity .25s ease-in; 48 transition: opacity 0.25s ease-in;
41} 49}
42 50
43// Slide down 51// Slide down
@@ -48,12 +56,12 @@
48 56
49.slideDown-appear.slideDown-appear-active { 57.slideDown-appear.slideDown-appear-active {
50 max-height: 500px; 58 max-height: 500px;
51 transition: max-height .5s ease-out; 59 transition: max-height 0.5s ease-out;
52} 60}
53 61
54.slideDown-enter { 62.slideDown-enter {
55 max-height: 0; 63 max-height: 0;
56 transition: max-height .5s ease-out; 64 transition: max-height 0.5s ease-out;
57} 65}
58 66
59// Slide up 67// Slide up
@@ -65,18 +73,20 @@
65.slideUp-appear.slideUp-appear-active { 73.slideUp-appear.slideUp-appear-active {
66 opacity: 1; 74 opacity: 1;
67 transform: translateY(0px); 75 transform: translateY(0px);
68 transition: all .3s ease-out; 76 transition: all 0.3s ease-out;
69} 77}
70 78
71.slideUp-enter { 79.slideUp-enter {
72 opacity: 0; 80 opacity: 0;
73 transform: translateY(20px); 81 transform: translateY(20px);
74 transition: all .3s ease-out; 82 transition: all 0.3s ease-out;
75} 83}
76 84
77.slideUp-leave { opacity: 1; } 85.slideUp-leave {
86 opacity: 1;
87}
78 88
79.slideUp-leave.slideUp-leave-active { 89.slideUp-leave.slideUp-leave-active {
80 opacity: .01; 90 opacity: 0.01;
81 transition: opacity 300ms ease-in; 91 transition: opacity 300ms ease-in;
82} 92}
diff --git a/src/styles/auth.scss b/src/styles/auth.scss
index 53c03a40a..448b8c2b3 100644
--- a/src/styles/auth.scss
+++ b/src/styles/auth.scss
@@ -5,18 +5,20 @@
5 5
6 .auth__container { 6 .auth__container {
7 background: $dark-theme-gray-darker; 7 background: $dark-theme-gray-darker;
8 box-shadow: 0 0 50px rgba($dark-theme-black, .2); 8 box-shadow: 0 0 50px rgba($dark-theme-black, 0.2);
9 } 9 }
10 10
11 .auth__logo.auth__logo--sm { 11 .auth__logo.auth__logo--sm {
12 border: none; 12 border: none;
13 box-shadow: 0 0 6px rgba($dark-theme-black, .5); 13 box-shadow: 0 0 6px rgba($dark-theme-black, 0.5);
14 } 14 }
15 15
16 .auth__links { 16 .auth__links {
17 background: $dark-theme-gray-dark; 17 background: $dark-theme-gray-dark;
18 18
19 a { color: $dark-theme-text-color; } 19 a {
20 color: $dark-theme-text-color;
21 }
20 } 22 }
21 23
22 .welcome__featured-services { 24 .welcome__featured-services {
@@ -26,7 +28,9 @@
26 .legal { 28 .legal {
27 color: $dark-theme-text-color; 29 color: $dark-theme-text-color;
28 30
29 a { color: $dark-theme-gray-lightest; } 31 a {
32 color: $dark-theme-gray-lightest;
33 }
30 } 34 }
31 35
32 .locked__or_line { 36 .locked__or_line {
@@ -53,14 +57,16 @@
53 } 57 }
54 58
55 .auth__container { 59 .auth__container {
56 background: #FFF; 60 background: #fff;
57 border-radius: $theme-border-radius; 61 border-radius: $theme-border-radius;
58 height: auto; 62 height: auto;
59 margin: 40px auto 0; 63 margin: 40px auto 0;
60 position: relative; 64 position: relative;
61 width: 350px; 65 width: 350px;
62 66
63 &.auth__container--signup { width: 450px; } 67 &.auth__container--signup {
68 width: 450px;
69 }
64 70
65 &.auth__container--releasenotes { 71 &.auth__container--releasenotes {
66 width: 90%; 72 width: 90%;
@@ -77,16 +83,18 @@
77 width: 150px; 83 width: 150px;
78 84
79 &.auth__logo--sm { 85 &.auth__logo--sm {
80 border: 4px solid #FFF; 86 border: 4px solid #fff;
81 border-radius: 100%; 87 border-radius: 100%;
82 box-shadow: 0 0 6px rgba(black, .5); 88 box-shadow: 0 0 6px rgba(black, 0.5);
83 } 89 }
84 } 90 }
85 91
86 .auth__form { 92 .auth__form {
87 padding: 20px; 93 padding: 20px;
88 94
89 h1 { text-align: center; } 95 h1 {
96 text-align: center;
97 }
90 } 98 }
91 99
92 .auth__button { 100 .auth__button {
@@ -138,11 +146,11 @@
138 margin-bottom: 20px; 146 margin-bottom: 20px;
139 147
140 &:after { 148 &:after {
141 background: #FFF; 149 background: #fff;
142 content: 'or'; 150 content: 'or';
143 padding: 0 10px; 151 padding: 0 10px;
144 position: relative; 152 position: relative;
145 top: -9px; 153 top: -9px;
146 } 154 }
147 } 155 }
148 156
@@ -158,7 +166,9 @@
158 margin-bottom: 8px; 166 margin-bottom: 8px;
159 text-align: center; 167 text-align: center;
160 168
161 &:last-of-type { margin-bottom: 0; } 169 &:last-of-type {
170 margin-bottom: 0;
171 }
162 } 172 }
163 } 173 }
164 174
@@ -175,24 +185,37 @@
175 position: absolute; 185 position: absolute;
176 right: 25px; 186 right: 25px;
177 187
178 img { width: 65px; } 188 img {
189 width: 65px;
190 }
179 } 191 }
180 192
181 .auth__letter { margin-bottom: 30px; text-align: left; } 193 .auth__letter {
182 .scroll-container { z-index: 10; } 194 margin-bottom: 30px;
183 .info-bar { position: absolute; } 195 text-align: left;
196 }
197 .scroll-container {
198 z-index: 10;
199 }
200 .info-bar {
201 position: absolute;
202 }
184 203
185 &__scroll-container { 204 &__scroll-container {
186 width: 100%; 205 width: 100%;
187 height: fit-content; 206 height: fit-content;
188 } 207 }
189 208
190 .available-services { margin-bottom: 15px; } 209 .available-services {
210 margin-bottom: 15px;
211 }
191 212
192 .unavailable-services { 213 .unavailable-services {
193 margin: 15px 0; 214 margin: 15px 0;
194 215
195 p { text-transform: capitalize; } 216 p {
217 text-transform: capitalize;
218 }
196 } 219 }
197 220
198 .legal { 221 .legal {
@@ -220,7 +243,7 @@
220 height: fit-content; 243 height: fit-content;
221 244
222 &-item__secondary { 245 &-item__secondary {
223 padding-left: 5px 246 padding-left: 5px;
224 } 247 }
225} 248}
226 249
diff --git a/src/styles/badge.scss b/src/styles/badge.scss
index 78309ea18..0ac17c6ed 100644
--- a/src/styles/badge.scss
+++ b/src/styles/badge.scss
@@ -10,7 +10,6 @@
10 } 10 }
11} 11}
12 12
13
14.badge { 13.badge {
15 background: $theme-gray-lighter; 14 background: $theme-gray-lighter;
16 border-radius: $theme-border-radius; 15 border-radius: $theme-border-radius;
@@ -21,12 +20,11 @@
21 20
22 &.badge--primary { 21 &.badge--primary {
23 background: $theme-brand-primary; 22 background: $theme-brand-primary;
24 color: #FFF; 23 color: #fff;
25 } 24 }
26 25
27 &.badge--success { 26 &.badge--success {
28 background: $theme-brand-success; 27 background: $theme-brand-success;
29 color: #FFF; 28 color: #fff;
30 } 29 }
31
32} 30}
diff --git a/src/styles/button.scss b/src/styles/button.scss
index 106caa6bc..98e8f515c 100644
--- a/src/styles/button.scss
+++ b/src/styles/button.scss
@@ -130,7 +130,9 @@
130 color: $theme-brand-primary; 130 color: $theme-brand-primary;
131 padding: 10px 20px; 131 padding: 10px 20px;
132 @media (prefers-reduced-motion: no-preference) { 132 @media (prefers-reduced-motion: no-preference) {
133 transition: background 0.5s, color 0.5s; 133 transition:
134 background 0.5s,
135 color 0.5s;
134 } 136 }
135 &:hover { 137 &:hover {
136 background: darken($theme-brand-primary, 5%); 138 background: darken($theme-brand-primary, 5%);
diff --git a/src/styles/colors.scss b/src/styles/colors.scss
index a33d26cf1..eada2bb1d 100644
--- a/src/styles/colors.scss
+++ b/src/styles/colors.scss
@@ -1,41 +1,49 @@
1@import "./type-helper"; 1@import './type-helper';
2 2
3$theme-brand-primary: convert-rgb-string-to-color($raw-theme-brand-primary); 3$theme-brand-primary: convert-rgb-string-to-color($raw-theme-brand-primary);
4$theme-brand-gradient: $theme-brand-primary; 4$theme-brand-gradient: $theme-brand-primary;
5$theme-brand-success: convert-rgb-string-to-color($raw-theme-brand-success); 5$theme-brand-success: convert-rgb-string-to-color($raw-theme-brand-success);
6$theme-brand-info: convert-rgb-string-to-color($raw-theme-brand-info); 6$theme-brand-info: convert-rgb-string-to-color($raw-theme-brand-info);
7$theme-brand-warning: convert-rgb-string-to-color($raw-theme-brand-warning); 7$theme-brand-warning: convert-rgb-string-to-color($raw-theme-brand-warning);
8$theme-brand-danger: convert-rgb-string-to-color($raw-theme-brand-danger); 8$theme-brand-danger: convert-rgb-string-to-color($raw-theme-brand-danger);
9 9
10$theme-gray-dark: convert-rgb-string-to-color($raw-theme-gray-dark); 10$theme-gray-dark: convert-rgb-string-to-color($raw-theme-gray-dark);
11$theme-gray: convert-rgb-string-to-color($raw-theme-gray); 11$theme-gray: convert-rgb-string-to-color($raw-theme-gray);
12$theme-gray-light: convert-rgb-string-to-color($raw-theme-gray-light); 12$theme-gray-light: convert-rgb-string-to-color($raw-theme-gray-light);
13$theme-gray-lighter: convert-rgb-string-to-color($raw-theme-gray-lighter); 13$theme-gray-lighter: convert-rgb-string-to-color($raw-theme-gray-lighter);
14$theme-gray-lightest: convert-rgb-string-to-color($raw-theme-gray-lightest); 14$theme-gray-lightest: convert-rgb-string-to-color($raw-theme-gray-lightest);
15 15
16$theme-border-radius: to-number($raw-theme-border-radius); 16$theme-border-radius: to-number($raw-theme-border-radius);
17$theme-border-radius-small: to-number($raw-theme-border-radius-small); 17$theme-border-radius-small: to-number($raw-theme-border-radius-small);
18 18
19$theme-sidebar-width: to-number($raw-theme-sidebar-width); 19$theme-sidebar-width: to-number($raw-theme-sidebar-width);
20 20
21$theme-text-color: convert-rgb-string-to-color($raw-theme-gray-dark); 21$theme-text-color: convert-rgb-string-to-color($raw-theme-gray-dark);
22 22
23$theme-transition-time: .5s; 23$theme-transition-time: 0.5s;
24 24
25$theme-inset-shadow: inset 0 2px 5px rgba(0, 0, 0, .03); 25$theme-inset-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.03);
26 26
27// Dark Theme 27// Dark Theme
28$dark-theme-black: convert-rgb-string-to-color($raw-dark-theme-black); 28$dark-theme-black: convert-rgb-string-to-color($raw-dark-theme-black);
29 29
30$dark-theme-gray-darkest: convert-rgb-string-to-color($raw-dark-theme-gray-darkest); 30$dark-theme-gray-darkest: convert-rgb-string-to-color(
31$dark-theme-gray-darker: convert-rgb-string-to-color($raw-dark-theme-gray-darker); 31 $raw-dark-theme-gray-darkest
32$dark-theme-gray-dark: convert-rgb-string-to-color($raw-dark-theme-gray-dark); 32);
33 33$dark-theme-gray-darker: convert-rgb-string-to-color(
34$dark-theme-gray: convert-rgb-string-to-color($raw-dark-theme-gray); 34 $raw-dark-theme-gray-darker
35 35);
36$dark-theme-gray-light: convert-rgb-string-to-color($raw-dark-theme-gray-light); 36$dark-theme-gray-dark: convert-rgb-string-to-color($raw-dark-theme-gray-dark);
37$dark-theme-gray-lighter: convert-rgb-string-to-color($raw-dark-theme-gray-lighter); 37
38$dark-theme-gray-lightest: convert-rgb-string-to-color($raw-dark-theme-gray-lightest); 38$dark-theme-gray: convert-rgb-string-to-color($raw-dark-theme-gray);
39 39
40$dark-theme-gray-smoke: convert-rgb-string-to-color($raw-dark-theme-gray-smoke); 40$dark-theme-gray-light: convert-rgb-string-to-color($raw-dark-theme-gray-light);
41$dark-theme-text-color: convert-rgb-string-to-color($raw-dark-theme-text-color); 41$dark-theme-gray-lighter: convert-rgb-string-to-color(
42 $raw-dark-theme-gray-lighter
43);
44$dark-theme-gray-lightest: convert-rgb-string-to-color(
45 $raw-dark-theme-gray-lightest
46);
47
48$dark-theme-gray-smoke: convert-rgb-string-to-color($raw-dark-theme-gray-smoke);
49$dark-theme-text-color: convert-rgb-string-to-color($raw-dark-theme-text-color);
diff --git a/src/styles/globals.scss b/src/styles/globals.scss
index b6a7949c2..fe4123242 100644
--- a/src/styles/globals.scss
+++ b/src/styles/globals.scss
@@ -1,26 +1,26 @@
1$raw-theme-brand-primary: "114,102,240"; 1$raw-theme-brand-primary: '114,102,240';
2$raw-theme-brand-success: "92,184,92"; 2$raw-theme-brand-success: '92,184,92';
3$raw-theme-brand-info: "91,192,222"; 3$raw-theme-brand-info: '91,192,222';
4$raw-theme-brand-warning: "255,159,0"; 4$raw-theme-brand-warning: '255,159,0';
5$raw-theme-brand-danger: "217,83,79"; 5$raw-theme-brand-danger: '217,83,79';
6$raw-theme-gray-dark: "55,58,60"; 6$raw-theme-gray-dark: '55,58,60';
7$raw-theme-gray: "85,89,92"; 7$raw-theme-gray: '85,89,92';
8$raw-theme-gray-light: "129,138,145"; 8$raw-theme-gray-light: '129,138,145';
9$raw-theme-gray-lighter: "236,238,239"; 9$raw-theme-gray-lighter: '236,238,239';
10$raw-theme-gray-lightest: "247,247,249"; 10$raw-theme-gray-lightest: '247,247,249';
11$raw-theme-border-radius: 6px; 11$raw-theme-border-radius: 6px;
12$raw-theme-border-radius-small: 3px; 12$raw-theme-border-radius-small: 3px;
13$raw-theme-sidebar-width: 68px; 13$raw-theme-sidebar-width: 68px;
14$raw-theme-text-color: "55,58,60"; 14$raw-theme-text-color: '55,58,60';
15$raw-theme-transition-time: .5s; 15$raw-theme-transition-time: 0.5s;
16$raw-theme-inset-shadow: inset 0 2px 5px rgba(0, 0, 0, .03); 16$raw-theme-inset-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.03);
17$raw-dark-theme-black: "26,26,26"; 17$raw-dark-theme-black: '26,26,26';
18$raw-dark-theme-gray-darkest: "30,30,30"; 18$raw-dark-theme-gray-darkest: '30,30,30';
19$raw-dark-theme-gray-darker: "45,47,49"; 19$raw-dark-theme-gray-darker: '45,47,49';
20$raw-dark-theme-gray-dark: "56,58,59"; 20$raw-dark-theme-gray-dark: '56,58,59';
21$raw-dark-theme-gray: "71,73,75"; 21$raw-dark-theme-gray: '71,73,75';
22$raw-dark-theme-gray-light: "81,83,85"; 22$raw-dark-theme-gray-light: '81,83,85';
23$raw-dark-theme-gray-lighter: "138,139,139"; 23$raw-dark-theme-gray-lighter: '138,139,139';
24$raw-dark-theme-gray-lightest: "255,255,255"; 24$raw-dark-theme-gray-lightest: '255,255,255';
25$raw-dark-theme-gray-smoke: "206,208,209"; 25$raw-dark-theme-gray-smoke: '206,208,209';
26$raw-dark-theme-text-color: "255,255,255"; 26$raw-dark-theme-text-color: '255,255,255';
diff --git a/src/styles/info-bar.scss b/src/styles/info-bar.scss
index d3010942f..514da8839 100644
--- a/src/styles/info-bar.scss
+++ b/src/styles/info-bar.scss
@@ -3,7 +3,7 @@
3.info-bar { 3.info-bar {
4 align-items: center; 4 align-items: center;
5 background: $theme-brand-primary; 5 background: $theme-brand-primary;
6 box-shadow: 0 0 8px rgba(black, .2); 6 box-shadow: 0 0 8px rgba(black, 0.2);
7 display: flex; 7 display: flex;
8 height: 50px; 8 height: 50px;
9 justify-content: center; 9 justify-content: center;
@@ -15,21 +15,23 @@
15 .info-bar__content { 15 .info-bar__content {
16 height: auto; 16 height: auto;
17 17
18 .mdi { margin-right: 5px; } 18 .mdi {
19 margin-right: 5px;
20 }
19 } 21 }
20 22
21 .info-bar__close { 23 .info-bar__close {
22 color: #FFF; 24 color: #fff;
23 position: absolute; 25 position: absolute;
24 right: 10px; 26 right: 10px;
25 } 27 }
26 28
27 .info-bar__cta { 29 .info-bar__cta {
28 border-color: #FFF; 30 border-color: #fff;
29 border-radius: $theme-border-radius-small; 31 border-radius: $theme-border-radius-small;
30 border-style: solid; 32 border-style: solid;
31 border-width: 2px; 33 border-width: 2px;
32 color: #FFF; 34 color: #fff;
33 margin-left: 15px; 35 margin-left: 15px;
34 padding: 3px 8px; 36 padding: 3px 8px;
35 37
@@ -47,26 +49,34 @@
47 color: white; 49 color: white;
48 } 50 }
49 51
50 &.info-bar--bottom { order: 10; } 52 &.info-bar--bottom {
53 order: 10;
54 }
51 55
52 &.info-bar--primary { 56 &.info-bar--primary {
53 background: $theme-brand-primary; 57 background: $theme-brand-primary;
54 color: #FFF; 58 color: #fff;
55 59
56 a { color: #FFF; } 60 a {
61 color: #fff;
62 }
57 } 63 }
58 64
59 &.info-bar--warning { 65 &.info-bar--warning {
60 background: $theme-brand-warning; 66 background: $theme-brand-warning;
61 color: #FFF; 67 color: #fff;
62 68
63 a { color: #FFF; } 69 a {
70 color: #fff;
71 }
64 } 72 }
65 73
66 &.info-bar--danger { 74 &.info-bar--danger {
67 background: $theme-brand-danger; 75 background: $theme-brand-danger;
68 color: #FFF; 76 color: #fff;
69 77
70 a { color: #FFF; } 78 a {
79 color: #fff;
80 }
71 } 81 }
72} 82}
diff --git a/src/styles/infobox.scss b/src/styles/infobox.scss
index e287e5be7..cf43de3c4 100644
--- a/src/styles/infobox.scss
+++ b/src/styles/infobox.scss
@@ -8,38 +8,44 @@
8 margin-bottom: 30px; 8 margin-bottom: 30px;
9 padding: 15px 20px; 9 padding: 15px 20px;
10 10
11 a { color: #FFF; } 11 a {
12 color: #fff;
13 }
12 14
13 .infobox__content { flex: 1; } 15 .infobox__content {
16 flex: 1;
17 }
14 18
15 &.infobox--success { 19 &.infobox--success {
16 background: $theme-brand-success; 20 background: $theme-brand-success;
17 color: #FFF; 21 color: #fff;
18 } 22 }
19 23
20 &.infobox--primary { 24 &.infobox--primary {
21 background: $theme-brand-primary; 25 background: $theme-brand-primary;
22 color: #FFF; 26 color: #fff;
23 } 27 }
24 28
25 &.infobox--danger { 29 &.infobox--danger {
26 background: $theme-brand-danger; 30 background: $theme-brand-danger;
27 color: #FFF; 31 color: #fff;
28 } 32 }
29 33
30 &.infobox--warning { 34 &.infobox--warning {
31 background: $theme-brand-warning; 35 background: $theme-brand-warning;
32 color: #FFF; 36 color: #fff;
33 } 37 }
34 38
35 .mdi { margin-right: 10px; } 39 .mdi {
40 margin-right: 10px;
41 }
36 42
37 .infobox__cta { 43 .infobox__cta {
38 border-color: #FFF; 44 border-color: #fff;
39 border-radius: $theme-border-radius-small; 45 border-radius: $theme-border-radius-small;
40 border-style: solid; 46 border-style: solid;
41 border-width: 2px; 47 border-width: 2px;
42 color: #FFF; 48 color: #fff;
43 margin-left: 15px; 49 margin-left: 15px;
44 padding: 3px 8px; 50 padding: 3px 8px;
45 51
@@ -54,7 +60,7 @@
54 } 60 }
55 61
56 .infobox__delete { 62 .infobox__delete {
57 color: #FFF; 63 color: #fff;
58 margin-right: 0; 64 margin-right: 0;
59 } 65 }
60} 66}
diff --git a/src/styles/input.scss b/src/styles/input.scss
index 687bcac64..a78bc185e 100644
--- a/src/styles/input.scss
+++ b/src/styles/input.scss
@@ -2,7 +2,9 @@
2@import './mixins.scss'; 2@import './mixins.scss';
3 3
4.theme__dark .franz-form { 4.theme__dark .franz-form {
5 .franz-form__label { color: $dark-theme-text-color; } 5 .franz-form__label {
6 color: $dark-theme-text-color;
7 }
6 8
7 .franz-form__input-wrapper { 9 .franz-form__input-wrapper {
8 background: $dark-theme-gray-dark; 10 background: $dark-theme-gray-dark;
@@ -12,7 +14,9 @@
12 .franz-form__input { 14 .franz-form__input {
13 color: $dark-theme-gray-lightest; 15 color: $dark-theme-gray-lightest;
14 16
15 &::placeholder { color: $dark-theme-gray-lighter; } 17 &::placeholder {
18 color: $dark-theme-gray-lighter;
19 }
16 } 20 }
17 21
18 .franz-form__input-prefix, 22 .franz-form__input-prefix,
@@ -26,7 +30,9 @@
26 color: $dark-theme-gray-lighter; 30 color: $dark-theme-gray-lighter;
27 } 31 }
28 32
29 .franz-form__password-score { background: $dark-theme-gray-dark; } 33 .franz-form__password-score {
34 background: $dark-theme-gray-dark;
35 }
30} 36}
31 37
32.franz-form { 38.franz-form {
@@ -38,11 +44,15 @@
38 44
39 &.has-error { 45 &.has-error {
40 .franz-form__input-wrapper, 46 .franz-form__input-wrapper,
41 .franz-form__input-modifier { border-color: $theme-brand-danger; } 47 .franz-form__input-modifier {
48 border-color: $theme-brand-danger;
49 }
42 } 50 }
43 } 51 }
44 52
45 .franz-form__label { @include formLabel(); } 53 .franz-form__label {
54 @include formLabel();
55 }
46 56
47 .franz-form__error { 57 .franz-form__error {
48 color: $theme-brand-danger; 58 color: $theme-brand-danger;
@@ -68,7 +78,9 @@
68 padding: 8px; 78 padding: 8px;
69 width: 100%; 79 width: 100%;
70 80
71 &::placeholder { color: lighten($theme-gray-light, 10%); } 81 &::placeholder {
82 color: lighten($theme-gray-light, 10%);
83 }
72 } 84 }
73 85
74 .franz-form__input-prefix, 86 .franz-form__input-prefix,
@@ -101,10 +113,18 @@
101 overflow: hidden; 113 overflow: hidden;
102 width: 100%; 114 width: 100%;
103 115
104 &::-webkit-meter-bar { background: none; } 116 &::-webkit-meter-bar {
105 &::-webkit-meter-even-less-good-value { background: $theme-brand-danger; } 117 background: none;
106 &::-webkit-meter-suboptimum-value { background: $theme-brand-warning; } 118 }
107 &::-webkit-meter-optimum-value { background: $theme-brand-success; } 119 &::-webkit-meter-even-less-good-value {
120 background: $theme-brand-danger;
121 }
122 &::-webkit-meter-suboptimum-value {
123 background: $theme-brand-warning;
124 }
125 &::-webkit-meter-optimum-value {
126 background: $theme-brand-success;
127 }
108 } 128 }
109 } 129 }
110} 130}
diff --git a/src/styles/invite.scss b/src/styles/invite.scss
index 594224f62..b68112478 100644
--- a/src/styles/invite.scss
+++ b/src/styles/invite.scss
@@ -4,5 +4,9 @@
4 justify-content: center; 4 justify-content: center;
5} 5}
6 6
7.invite__embed { text-align: center; } 7.invite__embed {
8.invite__embed--button { width: 100%; } 8 text-align: center;
9}
10.invite__embed--button {
11 width: 100%;
12}
diff --git a/src/styles/layout.scss b/src/styles/layout.scss
index 664108ed4..173ca3184 100644
--- a/src/styles/layout.scss
+++ b/src/styles/layout.scss
@@ -24,7 +24,8 @@ html {
24 color: $theme-text-color; 24 color: $theme-text-color;
25 25
26 &::after { 26 &::after {
27 box-shadow: inset 0 0 5px 0 $dark-theme-black, 27 box-shadow:
28 inset 0 0 5px 0 $dark-theme-black,
28 inset 0 0 2px 0 rgba(0, 0, 0, 0.4); 29 inset 0 0 2px 0 rgba(0, 0, 0, 0.4);
29 } 30 }
30 31
@@ -159,7 +160,8 @@ body.win32:not(.isFullScreen) .app .app__content {
159 z-index: 1000; 160 z-index: 1000;
160 pointer-events: none; 161 pointer-events: none;
161 clip-path: inset(10px 0 10px 10px); 162 clip-path: inset(10px 0 10px 10px);
162 box-shadow: inset 0 0 10px 0 rgba(0, 0, 0, 0.12), 163 box-shadow:
164 inset 0 0 10px 0 rgba(0, 0, 0, 0.12),
163 inset 0 0 2px 0 rgba(0, 0, 0, 0.24); 165 inset 0 0 2px 0 rgba(0, 0, 0, 0.24);
164 } 166 }
165 167
diff --git a/src/styles/reset.scss b/src/styles/reset.scss
index d87ce652a..929494514 100644
--- a/src/styles/reset.scss
+++ b/src/styles/reset.scss
@@ -3,19 +3,87 @@
3/* ============ RESET =========== */ 3/* ============ RESET =========== */
4/* http://meyerweb.com/eric/tools/css/reset */ 4/* http://meyerweb.com/eric/tools/css/reset */
5 5
6html, body, div, span, applet, object, iframe, 6html,
7h1, h2, h3, h4, h5, h6, p, blockquote, pre, 7body,
8a, abbr, acronym, address, big, cite, code, 8div,
9del, dfn, em, img, ins, kbd, q, s, samp, 9span,
10small, strike, strong, sub, sup, tt, var, 10applet,
11b, u, i, center, 11object,
12dl, dt, dd, ol, ul, li, 12iframe,
13fieldset, form, label, legend, 13h1,
14table, caption, tbody, tfoot, thead, tr, th, td, 14h2,
15article, aside, canvas, details, embed, 15h3,
16figure, figcaption, footer, header, hgroup, 16h4,
17menu, nav, output, ruby, section, summary, 17h5,
18time, mark, audio, video { 18h6,
19p,
20blockquote,
21pre,
22a,
23abbr,
24acronym,
25address,
26big,
27cite,
28code,
29del,
30dfn,
31em,
32img,
33ins,
34kbd,
35q,
36s,
37samp,
38small,
39strike,
40strong,
41sub,
42sup,
43tt,
44var,
45b,
46u,
47i,
48center,
49dl,
50dt,
51dd,
52ol,
53ul,
54li,
55fieldset,
56form,
57label,
58legend,
59table,
60caption,
61tbody,
62tfoot,
63thead,
64tr,
65th,
66td,
67article,
68aside,
69canvas,
70details,
71embed,
72figure,
73figcaption,
74footer,
75header,
76hgroup,
77menu,
78nav,
79output,
80ruby,
81section,
82summary,
83time,
84mark,
85audio,
86video {
19 border: 0; 87 border: 0;
20 font: inherit; 88 font: inherit;
21 font-size: 100%; 89 font-size: 100%;
@@ -23,11 +91,24 @@ time, mark, audio, video {
23 padding: 0; 91 padding: 0;
24} 92}
25 93
26article, aside, details, figcaption, figure, 94article,
27footer, header, hgroup, menu, nav, section { display: block; } 95aside,
96details,
97figcaption,
98figure,
99footer,
100header,
101hgroup,
102menu,
103nav,
104section {
105 display: block;
106}
28 107
29ol, 108ol,
30ul { list-style: none; } 109ul {
110 list-style: none;
111}
31 112
32blockquote, 113blockquote,
33q { 114q {
@@ -50,11 +131,13 @@ button {
50 border: none; 131 border: none;
51 padding: 0; 132 padding: 0;
52 133
53 &:focus { outline: 0; } 134 &:focus {
135 outline: 0;
136 }
54} 137}
55 138
56html { 139html {
57 font-size: 62.5%; 140 font-size: 62.5%;
58 font-family: 'Open Sans'; 141 font-family: 'Open Sans';
59} 142}
60 143
@@ -63,7 +146,9 @@ body {
63 font-size: 1.4rem; 146 font-size: 1.4rem;
64 line-height: 1; 147 line-height: 1;
65 148
66 &.theme__dark { color: $dark-theme-gray-smoke; } 149 &.theme__dark {
150 color: $dark-theme-gray-smoke;
151 }
67} 152}
68 153
69* { 154* {
@@ -74,12 +159,20 @@ body {
74 -webkit-user-select: none; 159 -webkit-user-select: none;
75} 160}
76 161
77html, body, div { 162html,
163body,
164div {
78 height: 100%; 165 height: 100%;
79 background: none; 166 background: none;
80 box-sizing: border-box; 167 box-sizing: border-box;
81} 168}
82 169
83*:focus { outline: none; } 170*:focus {
84img { pointer-events: none; } 171 outline: none;
85a { cursor: default; } 172}
173img {
174 pointer-events: none;
175}
176a {
177 cursor: default;
178}
diff --git a/src/styles/searchInput.scss b/src/styles/searchInput.scss
index 91453c600..4890454ff 100644
--- a/src/styles/searchInput.scss
+++ b/src/styles/searchInput.scss
@@ -8,7 +8,9 @@
8 border-radius: $theme-border-radius; 8 border-radius: $theme-border-radius;
9 color: $dark-theme-gray-lightest; 9 color: $dark-theme-gray-lightest;
10 10
11 input { color: $dark-theme-gray-lightest; } 11 input {
12 color: $dark-theme-gray-lightest;
13 }
12} 14}
13 15
14.search-input { 16.search-input {
diff --git a/src/styles/select.scss b/src/styles/select.scss
index 513975f9c..c2f7a8db9 100644
--- a/src/styles/select.scss
+++ b/src/styles/select.scss
@@ -1,7 +1,7 @@
1@import './config.scss'; 1@import './config.scss';
2@import './mixins.scss'; 2@import './mixins.scss';
3 3
4$toggle: "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMiIKICAgdmlld0JveD0iMCAwIDM1Ljk3MDk4MyAyMy4wOTE1MTgiCiAgIGhlaWdodD0iNi41MTY5Mzk2bW0iCiAgIHdpZHRoPSIxMC4xNTE4MTFtbSI+CiAgPGRlZnMKICAgICBpZD0iZGVmczQiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNyI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAyLjAxNDUxLC00MDcuMTIyMjUpIgogICAgIGlkPSJsYXllcjEiPgogICAgPHRleHQKICAgICAgIGlkPSJ0ZXh0MzMzNiIKICAgICAgIHk9IjYyOS41MDUwNyIKICAgICAgIHg9IjI5MS40Mjg1NiIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjQwcHg7bGluZS1oZWlnaHQ6MTI1JTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIj48dHNwYW4KICAgICAgICAgeT0iNjI5LjUwNTA3IgogICAgICAgICB4PSIyOTEuNDI4NTYiCiAgICAgICAgIGlkPSJ0c3BhbjMzMzgiPjwvdHNwYW4+PC90ZXh0PgogICAgPGcKICAgICAgIGlkPSJ0ZXh0MzM0MCIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZTo0MHB4O2xpbmUtaGVpZ2h0OjEyNSU7Zm9udC1mYW1pbHk6Rm9udEF3ZXNvbWU7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpGb250QXdlc29tZTtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgzMzQ1IgogICAgICAgICBzdHlsZT0iZmlsbDojMzMzMzMzO2ZpbGwtb3BhY2l0eToxIgogICAgICAgICBkPSJtIDIzNy41NjY5Niw0MTMuMjU1MDcgYyAwLjU1ODA0LC0wLjU1ODA0IDAuNTU4MDQsLTEuNDczMjIgMCwtMi4wMzEyNSBsIC0zLjcwNTM1LC0zLjY4MzA0IGMgLTAuNTU4MDQsLTAuNTU4MDQgLTEuNDUwOSwtMC41NTgwNCAtMi4wMDg5MywwIEwgMjIwLDQxOS4zOTM0NiAyMDguMTQ3MzIsNDA3LjU0MDc4IGMgLTAuNTU4MDMsLTAuNTU4MDQgLTEuNDUwODksLTAuNTU4MDQgLTIuMDA4OTMsMCBsIC0zLjcwNTM1LDMuNjgzMDQgYyAtMC41NTgwNCwwLjU1ODAzIC0wLjU1ODA0LDEuNDczMjEgMCwyLjAzMTI1IGwgMTYuNTYyNSwxNi41NDAxNyBjIDAuNTU4MDMsMC41NTgwNCAxLjQ1MDg5LDAuNTU4MDQgMi4wMDg5MiwwIGwgMTYuNTYyNSwtMTYuNTQwMTcgeiIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo="; 4$toggle: 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMiIKICAgdmlld0JveD0iMCAwIDM1Ljk3MDk4MyAyMy4wOTE1MTgiCiAgIGhlaWdodD0iNi41MTY5Mzk2bW0iCiAgIHdpZHRoPSIxMC4xNTE4MTFtbSI+CiAgPGRlZnMKICAgICBpZD0iZGVmczQiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNyI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAyLjAxNDUxLC00MDcuMTIyMjUpIgogICAgIGlkPSJsYXllcjEiPgogICAgPHRleHQKICAgICAgIGlkPSJ0ZXh0MzMzNiIKICAgICAgIHk9IjYyOS41MDUwNyIKICAgICAgIHg9IjI5MS40Mjg1NiIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjQwcHg7bGluZS1oZWlnaHQ6MTI1JTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIj48dHNwYW4KICAgICAgICAgeT0iNjI5LjUwNTA3IgogICAgICAgICB4PSIyOTEuNDI4NTYiCiAgICAgICAgIGlkPSJ0c3BhbjMzMzgiPjwvdHNwYW4+PC90ZXh0PgogICAgPGcKICAgICAgIGlkPSJ0ZXh0MzM0MCIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZTo0MHB4O2xpbmUtaGVpZ2h0OjEyNSU7Zm9udC1mYW1pbHk6Rm9udEF3ZXNvbWU7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpGb250QXdlc29tZTtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgzMzQ1IgogICAgICAgICBzdHlsZT0iZmlsbDojMzMzMzMzO2ZpbGwtb3BhY2l0eToxIgogICAgICAgICBkPSJtIDIzNy41NjY5Niw0MTMuMjU1MDcgYyAwLjU1ODA0LC0wLjU1ODA0IDAuNTU4MDQsLTEuNDczMjIgMCwtMi4wMzEyNSBsIC0zLjcwNTM1LC0zLjY4MzA0IGMgLTAuNTU4MDQsLTAuNTU4MDQgLTEuNDUwOSwtMC41NTgwNCAtMi4wMDg5MywwIEwgMjIwLDQxOS4zOTM0NiAyMDguMTQ3MzIsNDA3LjU0MDc4IGMgLTAuNTU4MDMsLTAuNTU4MDQgLTEuNDUwODksLTAuNTU4MDQgLTIuMDA4OTMsMCBsIC0zLjcwNTM1LDMuNjgzMDQgYyAtMC41NTgwNCwwLjU1ODAzIC0wLjU1ODA0LDEuNDczMjEgMCwyLjAzMTI1IGwgMTYuNTYyNSwxNi41NDAxNyBjIDAuNTU4MDMsMC41NTgwNCAxLjQ1MDg5LDAuNTU4MDQgMi4wMDg5MiwwIGwgMTYuNTYyNSwtMTYuNTQwMTcgeiIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=';
5 5
6.theme__dark .franz-form .franz-form__select { 6.theme__dark .franz-form .franz-form__select {
7 background-color: $dark-theme-gray-dark; 7 background-color: $dark-theme-gray-dark;
diff --git a/src/styles/service-table.scss b/src/styles/service-table.scss
index f2090685b..70a41e435 100644
--- a/src/styles/service-table.scss
+++ b/src/styles/service-table.scss
@@ -1,14 +1,22 @@
1@import './config.scss'; 1@import './config.scss';
2 2
3.theme__dark .service-table { 3.theme__dark .service-table {
4 .service-table__icon.has-custom-icon { border: 1px solid $dark-theme-gray-dark; } 4 .service-table__icon.has-custom-icon {
5 .service-table__column-info .mdi { color: $dark-theme-gray-lightest; } 5 border: 1px solid $dark-theme-gray-dark;
6 }
7 .service-table__column-info .mdi {
8 color: $dark-theme-gray-lightest;
9 }
6 10
7 .service-table__row { 11 .service-table__row {
8 border-bottom: 1px solid $dark-theme-gray-darker; 12 border-bottom: 1px solid $dark-theme-gray-darker;
9 13
10 &:hover { background: $dark-theme-gray-darker; } 14 &:hover {
11 &.service-table__row--disabled { color: $dark-theme-gray; } 15 background: $dark-theme-gray-darker;
16 }
17 &.service-table__row--disabled {
18 color: $dark-theme-gray;
19 }
12 } 20 }
13} 21}
14 22
@@ -18,7 +26,9 @@
18 .service-table__toggle { 26 .service-table__toggle {
19 width: 60px; 27 width: 60px;
20 28
21 .franz-form__field { margin-bottom: 0; } 29 .franz-form__field {
30 margin-bottom: 0;
31 }
22 } 32 }
23 33
24 .service-table__icon { 34 .service-table__icon {
@@ -32,7 +42,9 @@
32 } 42 }
33 43
34 .service-table__column-icon, 44 .service-table__column-icon,
35 .service-table__column-action { width: 40px } 45 .service-table__column-action {
46 width: 40px;
47 }
36 48
37 .service-table__column-info { 49 .service-table__column-info {
38 width: 40px; 50 width: 40px;
@@ -47,17 +59,21 @@
47 .service-table__row { 59 .service-table__row {
48 border-bottom: 1px solid $theme-gray-lightest; 60 border-bottom: 1px solid $theme-gray-lightest;
49 61
50 &:hover { background: $theme-gray-lightest; } 62 &:hover {
63 background: $theme-gray-lightest;
64 }
51 65
52 &.service-table__row--disabled { 66 &.service-table__row--disabled {
53 color: $theme-gray-light; 67 color: $theme-gray-light;
54 68
55 .service-table__column-icon { 69 .service-table__column-icon {
56 filter: grayscale(100%); 70 filter: grayscale(100%);
57 opacity: .5; 71 opacity: 0.5;
58 } 72 }
59 } 73 }
60 } 74 }
61 75
62 td { padding: 10px; } 76 td {
77 padding: 10px;
78 }
63} 79}
diff --git a/src/styles/services.scss b/src/styles/services.scss
index 359a41ab0..7ce6f8c87 100644
--- a/src/styles/services.scss
+++ b/src/styles/services.scss
@@ -3,7 +3,9 @@
3.theme__dark .services { 3.theme__dark .services {
4 background: $dark-theme-gray-darkest; 4 background: $dark-theme-gray-darkest;
5 5
6 .services__webview-wrapper { background: $dark-theme-gray-darkest; } 6 .services__webview-wrapper {
7 background: $dark-theme-gray-darkest;
8 }
7 9
8 .services__webview, 10 .services__webview,
9 .services__info-layer { 11 .services__info-layer {
@@ -14,7 +16,9 @@
14 .services__info-layer { 16 .services__info-layer {
15 background: $dark-theme-gray-darkest; 17 background: $dark-theme-gray-darkest;
16 18
17 h1 { color: $dark-theme-gray-lightest; } 19 h1 {
20 color: $dark-theme-gray-lightest;
21 }
18 } 22 }
19} 23}
20 24
@@ -31,21 +35,23 @@
31 } 35 }
32 36
33 @for $i from $split-columns-min through $split-columns-max { 37 @for $i from $split-columns-min through $split-columns-max {
34 &[data-columns="#{$i}"] .services .services__webview { 38 &[data-columns='#{$i}'] .services .services__webview {
35 flex-basis: calc(100% / $i); 39 flex-basis: calc(100% / $i);
36 } 40 }
37 } 41 }
38} 42}
39 43
40.services { 44.services {
41 background: #FFF; 45 background: #fff;
42 flex: 1; 46 flex: 1;
43 height: 100%; 47 height: 100%;
44 order: 5; 48 order: 5;
45 overflow: hidden; 49 overflow: hidden;
46 position: relative; 50 position: relative;
47 51
48 .services__webview-wrapper { background: $theme-gray-lighter; } 52 .services__webview-wrapper {
53 background: $theme-gray-lighter;
54 }
49 55
50 .services__webview, 56 .services__webview,
51 .services__info-layer { 57 .services__info-layer {
@@ -66,9 +72,13 @@
66 z-index: 100; 72 z-index: 100;
67 } 73 }
68 74
69 &--force-repaint webview { z-index: 5; } 75 &--force-repaint webview {
76 z-index: 5;
77 }
70 78
71 &.is-loading webview { background: #FFF } 79 &.is-loading webview {
80 background: #fff;
81 }
72 } 82 }
73 83
74 .services__no-service, 84 .services__no-service,
@@ -86,12 +96,13 @@
86 } 96 }
87 97
88 .button, 98 .button,
89 button { margin: 40px 0 20px; } 99 button {
100 margin: 40px 0 20px;
101 }
90 } 102 }
91 103
92 .services__info-layer { 104 .services__info-layer {
93 position: absolute; 105 position: absolute;
94 z-index: 110; 106 z-index: 110;
95 } 107 }
96
97} 108}
diff --git a/src/styles/settings.scss b/src/styles/settings.scss
index f16fc91fd..50accd8d7 100644
--- a/src/styles/settings.scss
+++ b/src/styles/settings.scss
@@ -23,7 +23,6 @@
23} 23}
24 24
25.theme__dark { 25.theme__dark {
26
27 .settings__hr { 26 .settings__hr {
28 color: rgba($dark-theme-gray, 0.8); 27 color: rgba($dark-theme-gray, 0.8);
29 } 28 }
@@ -236,7 +235,7 @@
236 @extend %headline; 235 @extend %headline;
237 236
238 &__secondary { 237 &__secondary {
239 padding-left: 5px 238 padding-left: 5px;
240 } 239 }
241 } 240 }
242 241
@@ -416,17 +415,20 @@
416 } 415 }
417 } 416 }
418 417
419 .settings__open-recipe-file-button, .settings__open-settings-file-button { 418 .settings__open-recipe-file-button,
419 .settings__open-settings-file-button {
420 cursor: pointer; 420 cursor: pointer;
421 margin-right: 10px; 421 margin-right: 10px;
422 } 422 }
423 .settings__open-recipe-file-container, .settings__open-settings-file-container { 423 .settings__open-recipe-file-container,
424 .settings__open-settings-file-container {
424 margin-top: 20px; 425 margin-top: 20px;
425 display: flex; 426 display: flex;
426 height: auto !important; 427 height: auto !important;
427 } 428 }
428 429
429 .settings__open-settings-cache-button, .settings__open-settings-cache-container { 430 .settings__open-settings-cache-button,
431 .settings__open-settings-cache-container {
430 cursor: pointer; 432 cursor: pointer;
431 margin-right: 10px; 433 margin-right: 10px;
432 } 434 }
@@ -586,7 +588,8 @@
586 padding: 0 20px; 588 padding: 0 20px;
587 text-decoration: none; 589 text-decoration: none;
588 @media (prefers-reduced-motion: no-preference) { 590 @media (prefers-reduced-motion: no-preference) {
589 transition: background $theme-transition-time, 591 transition:
592 background $theme-transition-time,
590 color $theme-transition-time; 593 color $theme-transition-time;
591 } 594 }
592 border-bottom: 1px solid darken($theme-gray-lightest, 3%); 595 border-bottom: 1px solid darken($theme-gray-lightest, 3%);
@@ -613,7 +616,8 @@
613 .badge { 616 .badge {
614 display: initial; 617 display: initial;
615 @media (prefers-reduced-motion: no-preference) { 618 @media (prefers-reduced-motion: no-preference) {
616 transition: background $theme-transition-time, 619 transition:
620 background $theme-transition-time,
617 color $theme-transition-time; 621 color $theme-transition-time;
618 } 622 }
619 } 623 }
@@ -642,86 +646,86 @@
642.releasenotes__body { 646.releasenotes__body {
643 line-height: 150%; 647 line-height: 150%;
644 648
645 h1 { 649 h1 {
646 margin-top: 0; 650 margin-top: 0;
647 font-weight: 400; 651 font-weight: 400;
648 font-size: xx-large; 652 font-size: xx-large;
649 text-align: center; 653 text-align: center;
650 } 654 }
651 655
652 h2 { 656 h2 {
653 margin-top: 10%; 657 margin-top: 10%;
654 font-weight: 400; 658 font-weight: 400;
655 font-size: x-large; 659 font-size: x-large;
656 text-align: center; 660 text-align: center;
657 margin-bottom: 2%; 661 margin-bottom: 2%;
658 } 662 }
659 663
660 h3 { 664 h3 {
661 margin-top: 5%; 665 margin-top: 5%;
662 font-weight: 400; 666 font-weight: 400;
663 font-size: large; 667 font-size: large;
664 text-align: center; 668 text-align: center;
665 margin-bottom: 2%; 669 margin-bottom: 2%;
666 } 670 }
667 671
668 h4 { 672 h4 {
669 margin-top: 5%; 673 margin-top: 5%;
670 font-weight: 400; 674 font-weight: 400;
671 font-size: medium; 675 font-size: medium;
672 text-align: center; 676 text-align: center;
673 margin-bottom: 2%; 677 margin-bottom: 2%;
674 } 678 }
675 679
676 h5 { 680 h5 {
677 margin-top: 5%; 681 margin-top: 5%;
678 font-weight: 400; 682 font-weight: 400;
679 text-align: center; 683 text-align: center;
680 margin-bottom: 2%; 684 margin-bottom: 2%;
681 } 685 }
682 686
683 p { 687 p {
684 margin-top: 4%; 688 margin-top: 4%;
685 margin-bottom: 4%; 689 margin-bottom: 4%;
686 user-select: text; 690 user-select: text;
687 } 691 }
688 692
689 a { 693 a {
690 color: rgb(0, 102, 255) !important; 694 color: rgb(0, 102, 255) !important;
691 user-select: text; 695 user-select: text;
692 } 696 }
693 697
694 code { 698 code {
695 background: #f4f4f4; 699 background: #f4f4f4;
696 border: 1px solid #ddd; 700 border: 1px solid #ddd;
697 border-radius: 5px; 701 border-radius: 5px;
698 padding: 0.2em 0.4em; 702 padding: 0.2em 0.4em;
699 font-size: 85%; 703 font-size: 85%;
700 color: #666; 704 color: #666;
701 font-family: monospace; 705 font-family: monospace;
702 margin-bottom: 1.6em; 706 margin-bottom: 1.6em;
703 max-width: 100%; 707 max-width: 100%;
704 overflow: auto; 708 overflow: auto;
705 user-select: text; 709 user-select: text;
706 } 710 }
707 711
708 ul { 712 ul {
709 padding-left: 2rem; 713 padding-left: 2rem;
710 } 714 }
711 715
712 li { 716 li {
713 margin-top: 2%; 717 margin-top: 2%;
714 list-style-type: disc; 718 list-style-type: disc;
715 user-select: text; 719 user-select: text;
716 } 720 }
717 721
718 img { 722 img {
719 max-width: 100%; 723 max-width: 100%;
720 margin-top: 2%; 724 margin-top: 2%;
721 margin-bottom: 2%; 725 margin-bottom: 2%;
722 align-items: center; 726 align-items: center;
723 display: block; 727 display: block;
724 margin-left: auto; 728 margin-left: auto;
725 margin-right: auto; 729 margin-right: auto;
726 } 730 }
727} 731}
diff --git a/src/styles/status-bar-target-url.scss b/src/styles/status-bar-target-url.scss
index 36f69df28..a324902ae 100644
--- a/src/styles/status-bar-target-url.scss
+++ b/src/styles/status-bar-target-url.scss
@@ -4,7 +4,7 @@
4 background: $theme-gray-lighter; 4 background: $theme-gray-lighter;
5 border-top-left-radius: 5px; 5 border-top-left-radius: 5px;
6 bottom: 0; 6 bottom: 0;
7 box-shadow: 0 0 8px rgba(black, .2); 7 box-shadow: 0 0 8px rgba(black, 0.2);
8 color: $theme-gray-dark; 8 color: $theme-gray-dark;
9 font-size: 12px; 9 font-size: 12px;
10 height: auto; 10 height: auto;
diff --git a/src/styles/tabs.scss b/src/styles/tabs.scss
index 21a5e76ce..f5e60d158 100644
--- a/src/styles/tabs.scss
+++ b/src/styles/tabs.scss
@@ -49,12 +49,13 @@
49 border-left-width: 4px; 49 border-left-width: 4px;
50 border-left-style: solid; 50 border-left-style: solid;
51 51
52 .tab-item__icon, .tab-item__label { 52 .tab-item__icon,
53 .tab-item__label {
53 margin-left: -4px; 54 margin-left: -4px;
54 } 55 }
55 } 56 }
56 57
57 &.is-label-enabled{ 58 &.is-label-enabled {
58 height: min-content; 59 height: min-content;
59 overflow: hidden; 60 overflow: hidden;
60 padding-top: 8px; 61 padding-top: 8px;
@@ -149,7 +150,7 @@
149 z-index: 99999; 150 z-index: 99999;
150 } 151 }
151 152
152 .tab-item__error-icon{ 153 .tab-item__error-icon {
153 font-size: 1.9em; 154 font-size: 1.9em;
154 color: red; 155 color: red;
155 position: absolute; 156 position: absolute;
diff --git a/src/styles/title-bar.scss b/src/styles/title-bar.scss
index b6d28ac60..99c844c1c 100644
--- a/src/styles/title-bar.scss
+++ b/src/styles/title-bar.scss
@@ -10,7 +10,9 @@
10 } 10 }
11 11
12 &:not(.open) { 12 &:not(.open) {
13 .menu-item .menu-label { opacity: 1; } 13 .menu-item .menu-label {
14 opacity: 1;
15 }
14 > .toolbar-button > button:hover { 16 > .toolbar-button > button:hover {
15 background: $dark-theme-gray-darkest; 17 background: $dark-theme-gray-darkest;
16 } 18 }
@@ -43,18 +45,28 @@
43#electron-app-title-bar { 45#electron-app-title-bar {
44 background: $theme-gray-lightest; 46 background: $theme-gray-lightest;
45 border-bottom: 0; 47 border-bottom: 0;
46 box-shadow: 0 0 8px rgba(black, .1); 48 box-shadow: 0 0 8px rgba(black, 0.1);
47 49
48 span { line-height: normal; } 50 span {
51 line-height: normal;
52 }
49 53
50 div { height: auto; } 54 div {
55 height: auto;
56 }
51 57
52 .toolbar-dropdown { 58 .toolbar-dropdown {
53 &.open { box-shadow: 0 0 8px rgba(black, 0.1); } 59 &.open {
60 box-shadow: 0 0 8px rgba(black, 0.1);
61 }
54 62
55 &:not(.open) { 63 &:not(.open) {
56 .menu-item .menu-label { opacity: 1; } 64 .menu-item .menu-label {
57 > .toolbar-button > button:hover { background: $theme-brand-primary; } 65 opacity: 1;
66 }
67 > .toolbar-button > button:hover {
68 background: $theme-brand-primary;
69 }
58 } 70 }
59 } 71 }
60 72
@@ -63,14 +75,18 @@
63 border-radius: $theme-border-radius-small; 75 border-radius: $theme-border-radius-small;
64 margin: 4px; 76 margin: 4px;
65 77
66 .status-icon { min-width: 12px; } 78 .status-icon {
79 min-width: 12px;
80 }
67 } 81 }
68 82
69 &.selected, 83 &.selected,
70 &.selected:focus { 84 &.selected:focus {
71 background: none; 85 background: none;
72 86
73 .menu-item { background: $theme-brand-primary; } 87 .menu-item {
88 background: $theme-brand-primary;
89 }
74 } 90 }
75 } 91 }
76 92
@@ -78,7 +94,7 @@
78 &.menu-endblock { 94 &.menu-endblock {
79 border-bottom-left-radius: $theme-border-radius-small; 95 border-bottom-left-radius: $theme-border-radius-small;
80 border-bottom-right-radius: $theme-border-radius-small; 96 border-bottom-right-radius: $theme-border-radius-small;
81 box-shadow: 0px 15px 10px -15px rgba(black, .5); 97 box-shadow: 0px 15px 10px -15px rgba(black, 0.5);
82 border-left-width: 0px; 98 border-left-width: 0px;
83 } 99 }
84 } 100 }
diff --git a/src/styles/toggle.scss b/src/styles/toggle.scss
index ed4c0d11b..d7a65def6 100644
--- a/src/styles/toggle.scss
+++ b/src/styles/toggle.scss
@@ -1,4 +1,4 @@
1@use "sass:math"; 1@use 'sass:math';
2 2
3@import './config.scss'; 3@import './config.scss';
4 4
diff --git a/src/styles/type-helper.scss b/src/styles/type-helper.scss
index b1da394b5..b618d24cf 100644
--- a/src/styles/type-helper.scss
+++ b/src/styles/type-helper.scss
@@ -1,23 +1,23 @@
1@function str-split($string, $separator) { 1@function str-split($string, $separator) {
2 // empty array/list 2 // empty array/list
3 $split-arr: (); 3 $split-arr: ();
4 // first index of separator in string 4 // first index of separator in string
5 $index : str-index($string, $separator); 5 $index: str-index($string, $separator);
6 // loop through string 6 // loop through string
7 @while $index != null { 7 @while $index != null {
8 // get the substring from the first character to the separator 8 // get the substring from the first character to the separator
9 $item: str-slice($string, 1, $index - 1); 9 $item: str-slice($string, 1, $index - 1);
10 // push item to array 10 // push item to array
11 $split-arr: append($split-arr, $item); 11 $split-arr: append($split-arr, $item);
12 // remove item and separator from string 12 // remove item and separator from string
13 $string: str-slice($string, $index + 1); 13 $string: str-slice($string, $index + 1);
14 // find new index of separator 14 // find new index of separator
15 $index : str-index($string, $separator); 15 $index: str-index($string, $separator);
16 } 16 }
17 // add the remaining string to list (the last item) 17 // add the remaining string to list (the last item)
18 $split-arr: append($split-arr, $string); 18 $split-arr: append($split-arr, $string);
19 19
20 @return $split-arr; 20 @return $split-arr;
21} 21}
22 22
23// ---- 23// ----
@@ -29,7 +29,6 @@
29/// @author Hugo Giraudel 29/// @author Hugo Giraudel
30/// @access private 30/// @access private
31 31
32
33/// Casts a string into a number 32/// Casts a string into a number
34/// 33///
35/// @param {String | Number} $value - Value to be parsed 34/// @param {String | Number} $value - Value to be parsed
@@ -42,32 +41,42 @@
42 } @else if type-of($value) != 'string' { 41 } @else if type-of($value) != 'string' {
43 $_: log('Value for `to-number` should be a number or a string.'); 42 $_: log('Value for `to-number` should be a number or a string.');
44 } 43 }
45 44
46 $result: 0; 45 $result: 0;
47 $digits: 0; 46 $digits: 0;
48 $minus: str-slice($value, 1, 1) == '-'; 47 $minus: str-slice($value, 1, 1) == '-';
49 $numbers: ('0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9); 48 $numbers: (
50 49 '0': 0,
50 '1': 1,
51 '2': 2,
52 '3': 3,
53 '4': 4,
54 '5': 5,
55 '6': 6,
56 '7': 7,
57 '8': 8,
58 '9': 9,
59 );
60
51 @for $i from if($minus, 2, 1) through str-length($value) { 61 @for $i from if($minus, 2, 1) through str-length($value) {
52 $character: str-slice($value, $i, $i); 62 $character: str-slice($value, $i, $i);
53 63
54 @if not (index(map-keys($numbers), $character) or $character == '.') { 64 @if not(index(map-keys($numbers), $character) or $character == '.') {
55 @return to-length(if($minus, -$result, $result), str-slice($value, $i)) 65 @return to-length(if($minus, -$result, $result), str-slice($value, $i));
56 } 66 }
57 67
58 @if $character == '.' { 68 @if $character == '.' {
59 $digits: 1; 69 $digits: 1;
60 } @else if $digits == 0 { 70 } @else if $digits == 0 {
61 $result: $result * 10 + map-get($numbers, $character); 71 $result: $result * 10 + map-get($numbers, $character);
62 } @else { 72 } @else {
63 $digits: $digits * 10; 73 $digits: $digits * 10;
64 $result: $result + map-get($numbers, $character) / $digits; 74 $result: $result + map-get($numbers, $character) / $digits;
65 } 75 }
66 } 76 }
67
68 @return if($minus, -$result, $result);;
69}
70 77
78 @return if($minus, -$result, $result);
79}
71 80
72/// Add `$unit` to `$value` 81/// Add `$unit` to `$value`
73/// 82///
@@ -76,18 +85,32 @@
76/// 85///
77/// @return {Number} - `$value` expressed in `$unit` 86/// @return {Number} - `$value` expressed in `$unit`
78@function to-length($value, $unit) { 87@function to-length($value, $unit) {
79 $units: ('px': 1px, 'cm': 1cm, 'mm': 1mm, '%': 1%, 'ch': 1ch, 'pc': 1pc, 'in': 1in, 'em': 1em, 'rem': 1rem, 'pt': 1pt, 'ex': 1ex, 'vw': 1vw, 'vh': 1vh, 'vmin': 1vmin, 'vmax': 1vmax); 88 $units: (
80 89 'px': 1px,
90 'cm': 1cm,
91 'mm': 1mm,
92 '%': 1%,
93 'ch': 1ch,
94 'pc': 1pc,
95 'in': 1in,
96 'em': 1em,
97 'rem': 1rem,
98 'pt': 1pt,
99 'ex': 1ex,
100 'vw': 1vw,
101 'vh': 1vh,
102 'vmin': 1vmin,
103 'vmax': 1vmax,
104 );
105
81 @if not index(map-keys($units), $unit) { 106 @if not index(map-keys($units), $unit) {
82 $_: log('Invalid unit `#{$unit}`.'); 107 $_: log('Invalid unit `#{$unit}`.');
83 } 108 }
84 109
85 @return $value * map-get($units, $unit); 110 @return $value * map-get($units, $unit);
86} 111}
87 112
88 113/// converts injectes rgb strings to sass colors
89
90/// converts injectes rgb strings to sass colors
91@function convert-rgb-string-to-color($string) { 114@function convert-rgb-string-to-color($string) {
92 $values: str-split($string, ','); 115 $values: str-split($string, ',');
93 $colorList: (); 116 $colorList: ();
@@ -97,4 +120,4 @@
97 120
98 $rgbaColor: rgb(nth($colorList, 1), nth($colorList, 2), nth($colorList, 3)); 121 $rgbaColor: rgb(nth($colorList, 1), nth($colorList, 2), nth($colorList, 3));
99 @return $rgbaColor; 122 @return $rgbaColor;
100} \ No newline at end of file 123}
diff --git a/src/styles/type.scss b/src/styles/type.scss
index 234c4d5c4..3b7a953af 100644
--- a/src/styles/type.scss
+++ b/src/styles/type.scss
@@ -59,7 +59,9 @@ button {
59 position: relative; 59 position: relative;
60 text-align: center; 60 text-align: center;
61 @media (prefers-reduced-motion: no-preference) { 61 @media (prefers-reduced-motion: no-preference) {
62 transition: background 0.5s, color 0.5s; 62 transition:
63 background 0.5s,
64 color 0.5s;
63 } 65 }
64 cursor: pointer; 66 cursor: pointer;
65 67
diff --git a/src/styles/vertical.scss b/src/styles/vertical.scss
index dd2ae4ed1..604f5aad6 100644
--- a/src/styles/vertical.scss
+++ b/src/styles/vertical.scss
@@ -23,8 +23,8 @@ $tabitem-bias: 30px;
23 clip-path: inset(10px 10px 0 10px); 23 clip-path: inset(10px 10px 0 10px);
24 } 24 }
25 25
26 >div:first-of-type { 26 > div:first-of-type {
27 overflow-x: scroll!important; 27 overflow-x: scroll !important;
28 width: 100%; 28 width: 100%;
29 } 29 }
30 30
@@ -32,7 +32,6 @@ $tabitem-bias: 30px;
32 flex-direction: row; 32 flex-direction: row;
33 33
34 .tab-item { 34 .tab-item {
35
36 &.is-active { 35 &.is-active {
37 border-left-width: 0px !important; 36 border-left-width: 0px !important;
38 border-top-width: 4px; 37 border-top-width: 4px;
@@ -45,7 +44,7 @@ $tabitem-bias: 30px;
45 padding-top: 4px; 44 padding-top: 4px;
46 } 45 }
47 46
48 &.is-label-enabled{ 47 &.is-label-enabled {
49 min-width: 70px; 48 min-width: 70px;
50 max-width: 140px; 49 max-width: 140px;
51 height: $sidebar-width + 10; 50 height: $sidebar-width + 10;
@@ -61,7 +60,7 @@ $tabitem-bias: 30px;
61 } 60 }
62 } 61 }
63 } 62 }
64 div{ 63 div {
65 overflow: hidden !important; 64 overflow: hidden !important;
66 } 65 }
67 66
@@ -92,8 +91,9 @@ $tabitem-bias: 30px;
92 z-index: 1000; 91 z-index: 1000;
93 pointer-events: none; 92 pointer-events: none;
94 clip-path: inset(10px 0 10px 10px); 93 clip-path: inset(10px 0 10px 10px);
95 box-shadow: inset 0 0 15px 0 rgba(0, 0, 0, .12), 94 box-shadow:
96 inset 0 0 2px 0 rgba(0, 0, 0, 0.36); 95 inset 0 0 15px 0 rgba(0, 0, 0, 0.12),
96 inset 0 0 2px 0 rgba(0, 0, 0, 0.36);
97 } 97 }
98} 98}
99 99
@@ -103,8 +103,9 @@ $tabitem-bias: 30px;
103 } 103 }
104 104
105 .workspaces-drawer::after { 105 .workspaces-drawer::after {
106 box-shadow: inset 0 0 10px 0 $dark-theme-black, 106 box-shadow:
107 inset 0 0 2px 0 rgba(0, 0, 0, 0.4); 107 inset 0 0 10px 0 $dark-theme-black,
108 inset 0 0 2px 0 rgba(0, 0, 0, 0.4);
108 } 109 }
109} 110}
110 111
@@ -114,7 +115,7 @@ $tabitem-bias: 30px;
114 .sidebar__button--workspaces.is-active { 115 .sidebar__button--workspaces.is-active {
115 height: $sidebar-width - $sidebar-bias; 116 height: $sidebar-width - $sidebar-bias;
116 } 117 }
117 .tab-item .is-label-enabled{ 118 .tab-item .is-label-enabled {
118 height: $sidebar-width + $tabitem-bias; 119 height: $sidebar-width + $tabitem-bias;
119 } 120 }
120} 121}
diff --git a/src/styles/welcome.scss b/src/styles/welcome.scss
index 3f90964a6..4e0080efa 100644
--- a/src/styles/welcome.scss
+++ b/src/styles/welcome.scss
@@ -122,7 +122,9 @@
122 margin: 0 10px 15px; 122 margin: 0 10px 15px;
123 height: 35px; 123 height: 35px;
124 @media (prefers-reduced-motion: no-preference) { 124 @media (prefers-reduced-motion: no-preference) {
125 transition: 0.5s filter, 0.5s opacity; 125 transition:
126 0.5s filter,
127 0.5s opacity;
126 } 128 }
127 width: 35px; 129 width: 35px;
128 130
diff --git a/src/themes/default/index.ts b/src/themes/default/index.ts
index 2e18e1307..31c6cbd63 100644
--- a/src/themes/default/index.ts
+++ b/src/themes/default/index.ts
@@ -15,7 +15,7 @@ export default (brandPrimary: string) => {
15 const uiFontSize = 14; 15 const uiFontSize = 14;
16 const colorBackground = legacyStyles.themeGrayLighter; 16 const colorBackground = legacyStyles.themeGrayLighter;
17 const colorContentBackground = '#FFFFFF'; 17 const colorContentBackground = '#FFFFFF';
18 const colorText = legacyStyles.themeTextColor; 18 const colorText = legacyStyles.themeGrayDark;
19 const inputColor = legacyStyles.themeGray; 19 const inputColor = legacyStyles.themeGray;
20 const inputBackground = legacyStyles.themeGrayLightest; 20 const inputBackground = legacyStyles.themeGrayLightest;
21 const inputHeight = 40; 21 const inputHeight = 40;
diff --git a/src/themes/legacy/index.ts b/src/themes/legacy/index.ts
index ca3216e7f..9caefc698 100644
--- a/src/themes/legacy/index.ts
+++ b/src/themes/legacy/index.ts
@@ -1,10 +1,7 @@
1/* legacy config, injected into sass */ 1/* legacy config, injected into sass */
2export { DEFAULT_ACCENT_COLOR as themeBrandPrimary } from '../../config'; 2export { DEFAULT_ACCENT_COLOR as themeBrandPrimary } from '../../config';
3 3
4export const themeBrandSuccess = '#5cb85c';
5export const themeBrandInfo = '#5bc0de'; 4export const themeBrandInfo = '#5bc0de';
6export const themeBrandWarning = '#FF9F00';
7export const themeBrandDanger = '#d9534f';
8 5
9export const themeGrayDark = '#373a3c'; 6export const themeGrayDark = '#373a3c';
10export const themeGray = '#55595c'; 7export const themeGray = '#55595c';
@@ -15,14 +12,6 @@ export const themeGrayLightest = '#f7f7f9';
15export const themeBorderRadius = '6px'; 12export const themeBorderRadius = '6px';
16export const themeBorderRadiusSmall = '3px'; 13export const themeBorderRadiusSmall = '3px';
17 14
18export const themeSidebarWidth = '68px';
19
20export const themeTextColor = themeGrayDark;
21
22export const themeTransitionTime = '.5s';
23
24export const themeInsetShadow = 'inset 0 2px 5px rgba(0, 0, 0, .03)';
25
26export const darkThemeBlack = '#1A1A1A'; 15export const darkThemeBlack = '#1A1A1A';
27 16
28export const darkThemeGrayDarkest = '#1E1E1E'; 17export const darkThemeGrayDarkest = '#1E1E1E';
diff --git a/src/webview/contextMenuBuilder.ts b/src/webview/contextMenuBuilder.ts
index 6d904eee3..93dfbebb6 100644
--- a/src/webview/contextMenuBuilder.ts
+++ b/src/webview/contextMenuBuilder.ts
@@ -52,8 +52,8 @@ function translatePopup(res, isError: boolean = false) {
52 z-index: 999999; 52 z-index: 999999;
53 ${ 53 ${
54 isError 54 isError
55 ? `background: rgb(255 37 37);` 55 ? 'background: rgb(255 37 37);'
56 : `background: rgb(131 131 131);` 56 : 'background: rgb(131 131 131);'
57 } 57 }
58 border-radius: 8px; 58 border-radius: 8px;
59 top: 5%; 59 top: 5%;
@@ -148,7 +148,7 @@ const contextMenuStringTable: ContextMenuStringTable = {
148 paste: () => 'Paste', 148 paste: () => 'Paste',
149 pasteAndMatchStyle: () => 'Paste and match style', 149 pasteAndMatchStyle: () => 'Paste and match style',
150 searchWith: ({ searchEngine }) => `Search with ${searchEngine}`, 150 searchWith: ({ searchEngine }) => `Search with ${searchEngine}`,
151 translate: () => `Translate to ...`, 151 translate: () => 'Translate to ...',
152 quickTranslate: ({ translatorLanguage }) => 152 quickTranslate: ({ translatorLanguage }) =>
153 `Translate to ${translatorLanguage}`, 153 `Translate to ${translatorLanguage}`,
154 translateLanguage: ({ translatorLanguage }) => `${translatorLanguage}`, 154 translateLanguage: ({ translatorLanguage }) => `${translatorLanguage}`,
@@ -249,6 +249,10 @@ export class ContextMenuBuilder {
249 return this.buildMenuForImage(info); 249 return this.buildMenuForImage(info);
250 } 250 }
251 251
252 if (info.mediaType === 'video') {
253 return this.buildMenuForVideo(info);
254 }
255
252 if ( 256 if (
253 info.isEditable || 257 info.isEditable ||
254 (info.inputFieldType && info.inputFieldType !== 'none') 258 (info.inputFieldType && info.inputFieldType !== 'none')
@@ -407,6 +411,40 @@ export class ContextMenuBuilder {
407 } 411 }
408 412
409 /** 413 /**
414 * Builds a menu applicable to a video.
415 *
416 * @return {Menu} The `Menu`
417 */
418 buildMenuForVideo(
419 menuInfo: IContextMenuParams,
420 ): Electron.CrossProcessExports.Menu {
421 const menu = new Menu();
422 const video = document.querySelectorAll('video')[0];
423
424 if (
425 document.pictureInPictureEnabled &&
426 !video.disablePictureInPicture &&
427 this.isSrcUrlValid(menuInfo)
428 ) {
429 menu.append(
430 new MenuItem({
431 type: 'checkbox',
432 label: 'Picture in picture',
433 enabled: true,
434 checked: !!document.pictureInPictureElement,
435 click: async () => {
436 await (document.pictureInPictureElement
437 ? document.exitPictureInPicture()
438 : video.requestPictureInPicture());
439 },
440 }),
441 );
442 }
443
444 return menu;
445 }
446
447 /**
410 * Checks if the current text selection contains a single misspelled word and 448 * Checks if the current text selection contains a single misspelled word and
411 * if so, adds suggested spellings as individual menu items. 449 * if so, adds suggested spellings as individual menu items.
412 */ 450 */
@@ -637,7 +675,7 @@ export class ContextMenuBuilder {
637 const clickHandler = menuInfo.srcURL.startsWith('blob:') 675 const clickHandler = menuInfo.srcURL.startsWith('blob:')
638 ? () => { 676 ? () => {
639 const urlWithoutBlob = menuInfo.srcURL.slice(5); 677 const urlWithoutBlob = menuInfo.srcURL.slice(5);
640 this.convertImageToBase64(menuInfo.srcURL, (dataURL: any) => { 678 this.convertImageToBase64(menuInfo.srcURL, (dataURL: string) => {
641 const url = new window.URL(urlWithoutBlob); 679 const url = new window.URL(urlWithoutBlob);
642 const fileName = url.pathname.slice(1); 680 const fileName = url.pathname.slice(1);
643 ipcRenderer.send('download-file', { 681 ipcRenderer.send('download-file', {
@@ -796,8 +834,8 @@ export class ContextMenuBuilder {
796 convertImageToBase64( 834 convertImageToBase64(
797 url: string, 835 url: string,
798 callback: { 836 callback: {
799 (dataURL: any): void; 837 (dataURL: string): void;
800 (dataURL: any): void; 838 (dataURL: string): void;
801 (arg0: string): void; 839 (arg0: string): void;
802 }, 840 },
803 outputFormat: string = 'image/png', 841 outputFormat: string = 'image/png',
diff --git a/src/webview/darkmode.ts b/src/webview/darkmode.ts
index f5e8700e0..88d39f19f 100644
--- a/src/webview/darkmode.ts
+++ b/src/webview/darkmode.ts
@@ -1,4 +1,4 @@
1import { join } from 'path'; 1import { join } from 'node:path';
2import { pathExistsSync, readFileSync } from 'fs-extra'; 2import { pathExistsSync, readFileSync } from 'fs-extra';
3 3
4const debug = require('../preload-safe-debug')('Ferdium:DarkMode'); 4const debug = require('../preload-safe-debug')('Ferdium:DarkMode');
diff --git a/src/webview/lib/Userscript.ts b/src/webview/lib/Userscript.ts
index b0e4fb805..5adc1ac3a 100644
--- a/src/webview/lib/Userscript.ts
+++ b/src/webview/lib/Userscript.ts
@@ -32,7 +32,7 @@ export default class Userscript {
32 * 32 *
33 * @param {*} settings 33 * @param {*} settings
34 */ 34 */
35 // eslint-disable-next-line camelcase 35
36 internal_setSettings(settings: any) { 36 internal_setSettings(settings: any) {
37 // This is needed to get a clean JS object from the settings itself to provide better accessibility 37 // This is needed to get a clean JS object from the settings itself to provide better accessibility
38 // Otherwise this will be a mobX instance 38 // Otherwise this will be a mobX instance
@@ -45,7 +45,7 @@ export default class Userscript {
45 * @param {number} indirect Indirect messages 45 * @param {number} indirect Indirect messages
46 */ 46 */
47 setBadge(direct: number = 0, indirect: number = 0) { 47 setBadge(direct: number = 0, indirect: number = 0) {
48 if (this.recipe && this.recipe.setBadge) { 48 if (this.recipe?.setBadge) {
49 this.recipe.setBadge(direct, indirect); 49 this.recipe.setBadge(direct, indirect);
50 } 50 }
51 } 51 }
@@ -55,7 +55,7 @@ export default class Userscript {
55 * @param {*} title Dialog title 55 * @param {*} title Dialog title
56 */ 56 */
57 setDialogTitle(title: string) { 57 setDialogTitle(title: string) {
58 if (this.recipe && this.recipe.setDialogTitle) { 58 if (this.recipe?.setDialogTitle) {
59 this.recipe.setDialogTitle(title); 59 this.recipe.setDialogTitle(title);
60 } 60 }
61 } 61 }
@@ -66,7 +66,7 @@ export default class Userscript {
66 * @param {...string} files 66 * @param {...string} files
67 */ 67 */
68 injectCSSFiles(...files: string[]) { 68 injectCSSFiles(...files: string[]) {
69 if (this.recipe && this.recipe.injectCSS) { 69 if (this.recipe?.injectCSS) {
70 // @ts-expect-error A spread argument must either have a tuple type or be passed to a rest parameter. 70 // @ts-expect-error A spread argument must either have a tuple type or be passed to a rest parameter.
71 this.recipe.injectCSS(...files); 71 this.recipe.injectCSS(...files);
72 } 72 }
@@ -99,6 +99,7 @@ export default class Userscript {
99 * @param {string} key 99 * @param {string} key
100 * @return Value of the key 100 * @return Value of the key
101 */ 101 */
102 // eslint-disable-next-line consistent-return
102 get(key: string) { 103 get(key: string) {
103 const ferdiumUserKey = window.localStorage.getItem(`ferdium-user-${key}`); 104 const ferdiumUserKey = window.localStorage.getItem(`ferdium-user-${key}`);
104 105
diff --git a/src/webview/recipe.ts b/src/webview/recipe.ts
index 0d18e4347..ee7fa26d2 100644
--- a/src/webview/recipe.ts
+++ b/src/webview/recipe.ts
@@ -1,9 +1,9 @@
1/* eslint-disable global-require */ 1/* eslint-disable global-require */
2/* eslint-disable import/no-dynamic-require */ 2/* eslint-disable import/no-dynamic-require */
3/* eslint-disable import/first */ 3
4import { noop, debounce } from 'lodash'; 4import { noop, debounce } from 'lodash';
5import { contextBridge, ipcRenderer } from 'electron'; 5import { contextBridge, ipcRenderer } from 'electron';
6import { join } from 'path'; 6import { join } from 'node:path';
7import { autorun, computed, makeObservable, observable } from 'mobx'; 7import { autorun, computed, makeObservable, observable } from 'mobx';
8import { pathExistsSync, readFileSync } from 'fs-extra'; 8import { pathExistsSync, readFileSync } from 'fs-extra';
9import { 9import {
@@ -11,7 +11,7 @@ import {
11 enable as enableDarkMode, 11 enable as enableDarkMode,
12} from 'darkreader'; 12} from 'darkreader';
13 13
14import { existsSync } from 'fs'; 14import { existsSync } from 'node:fs';
15import ignoreList from './darkmode/ignore'; 15import ignoreList from './darkmode/ignore';
16import customDarkModeCss from './darkmode/custom'; 16import customDarkModeCss from './darkmode/custom';
17 17
@@ -52,7 +52,7 @@ import Service from '../models/Service';
52// This will cause the service to fail loading 52// This will cause the service to fail loading
53// As the message API is not actually needed, we'll add this shim sendMessage 53// As the message API is not actually needed, we'll add this shim sendMessage
54// function in order for darkreader to continue working 54// function in order for darkreader to continue working
55// @ts-ignore 55// @ts-expect-error Fix this
56window.chrome.runtime.sendMessage = noop; 56window.chrome.runtime.sendMessage = noop;
57 57
58const debug = require('../preload-safe-debug')('Ferdium:Plugin'); 58const debug = require('../preload-safe-debug')('Ferdium:Plugin');
@@ -143,9 +143,9 @@ class RecipeController {
143 service: Service; 143 service: Service;
144 } = { 144 } = {
145 overrideSpellcheckerLanguage: false, 145 overrideSpellcheckerLanguage: false,
146 // @ts-ignore 146 // @ts-expect-error Fix this
147 app: DEFAULT_APP_SETTINGS, 147 app: DEFAULT_APP_SETTINGS,
148 // @ts-ignore 148 // @ts-expect-error Fix this
149 service: { 149 service: {
150 isDarkModeEnabled: false, 150 isDarkModeEnabled: false,
151 spellcheckerLanguage: '', 151 spellcheckerLanguage: '',
@@ -233,6 +233,7 @@ class RecipeController {
233 const modulePath = join(recipe.path, 'webview.js'); 233 const modulePath = join(recipe.path, 'webview.js');
234 debug('module path', modulePath); 234 debug('module path', modulePath);
235 // Delete module from cache 235 // Delete module from cache
236 // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
236 delete require.cache[require.resolve(modulePath)]; 237 delete require.cache[require.resolve(modulePath)];
237 try { 238 try {
238 this.recipe = new RecipeWebview( 239 this.recipe = new RecipeWebview(
@@ -311,7 +312,7 @@ class RecipeController {
311 debug('translatorEngine', this.settings.app.translatorEngine); 312 debug('translatorEngine', this.settings.app.translatorEngine);
312 debug('translatorLanguage', this.settings.app.translatorLanguage); 313 debug('translatorLanguage', this.settings.app.translatorLanguage);
313 314
314 if (this.userscript && this.userscript.internal_setSettings) { 315 if (this.userscript?.internal_setSettings) {
315 this.userscript.internal_setSettings(this.settings); 316 this.userscript.internal_setSettings(this.settings);
316 } 317 }
317 318
@@ -339,7 +340,7 @@ class RecipeController {
339 'Darkmode enabled?', 340 'Darkmode enabled?',
340 this.settings.service.isDarkModeEnabled, 341 this.settings.service.isDarkModeEnabled,
341 'Dark theme active?', 342 'Dark theme active?',
342 // @ts-ignore 343 // @ts-expect-error Fix this
343 this.settings.app.isDarkThemeActive, 344 this.settings.app.isDarkThemeActive,
344 ); 345 );
345 346
@@ -356,7 +357,7 @@ class RecipeController {
356 debug('Enable dark mode'); 357 debug('Enable dark mode');
357 358
358 // Check if recipe has a custom dark mode handler 359 // Check if recipe has a custom dark mode handler
359 if (this.recipe && this.recipe.darkModeHandler) { 360 if (this.recipe?.darkModeHandler) {
360 debug('Using custom dark mode handler'); 361 debug('Using custom dark mode handler');
361 362
362 // Remove other dark mode styles if they were already loaded 363 // Remove other dark mode styles if they were already loaded
@@ -399,7 +400,7 @@ class RecipeController {
399 debug('Remove dark mode'); 400 debug('Remove dark mode');
400 debug('DarkMode disabled - removing remaining styles'); 401 debug('DarkMode disabled - removing remaining styles');
401 402
402 if (this.recipe && this.recipe.darkModeHandler) { 403 if (this.recipe?.darkModeHandler) {
403 // Remove other dark mode styles if they were already loaded 404 // Remove other dark mode styles if they were already loaded
404 if (this.hasUpdatedBeforeRecipeLoaded) { 405 if (this.hasUpdatedBeforeRecipeLoaded) {
405 this.hasUpdatedBeforeRecipeLoaded = false; 406 this.hasUpdatedBeforeRecipeLoaded = false;
diff --git a/test/helpers/update-helpers.test.ts b/test/helpers/update-helpers.test.ts
index 2b6bf3113..d42c7d27a 100644
--- a/test/helpers/update-helpers.test.ts
+++ b/test/helpers/update-helpers.test.ts
@@ -12,20 +12,20 @@ describe('getFerdiumVersion', () => {
12 expect(result).toEqual(`v${baseVersion}`); 12 expect(result).toEqual(`v${baseVersion}`);
13 }); 13 });
14 14
15 it(`returns v6.0.0-beta.3`, () => { 15 it('returns v6.0.0-beta.3', () => {
16 const result = update_helpers.getFerdiumVersion( 16 const result = update_helpers.getFerdiumVersion(
17 '?version=6.0.0-beta.3', 17 '?version=6.0.0-beta.3',
18 baseVersion, 18 baseVersion,
19 ); 19 );
20 expect(result).toEqual(`v6.0.0-beta.3`); 20 expect(result).toEqual('v6.0.0-beta.3');
21 }); 21 });
22 22
23 it(`returns v6.0.0`, () => { 23 it('returns v6.0.0', () => {
24 const result = update_helpers.getFerdiumVersion( 24 const result = update_helpers.getFerdiumVersion(
25 '?version=6.0.0', 25 '?version=6.0.0',
26 baseVersion, 26 baseVersion,
27 ); 27 );
28 expect(result).toEqual(`v6.0.0`); 28 expect(result).toEqual('v6.0.0');
29 }); 29 });
30 30
31 it(`returns ${baseVersion}`, () => { 31 it(`returns ${baseVersion}`, () => {
@@ -46,38 +46,42 @@ describe('getFerdiumVersion', () => {
46}); 46});
47 47
48describe('updateVersionParse', () => { 48describe('updateVersionParse', () => {
49 it(`returns empty string for empty string`, () => { 49 it('returns empty string for empty string', () => {
50 const result = update_helpers.updateVersionParse(''); 50 const result = update_helpers.updateVersionParse('');
51 expect(result).toEqual(''); 51 expect(result).toEqual('');
52 }); 52 });
53 it(`returns '?version=x.x for x.x`, () => { 53 it("returns '?version=x.x for x.x", () => {
54 const result = update_helpers.updateVersionParse('6.0.0'); 54 const result = update_helpers.updateVersionParse('6.0.0');
55 expect(result).toEqual('?version=6.0.0'); 55 expect(result).toEqual('?version=6.0.0');
56 }); 56 });
57}); 57});
58 58
59describe('onAuthGoToReleaseNotes', () => { 59describe('onAuthGoToReleaseNotes', () => {
60 it(`returns '#/releasenotes' string for empty string`, () => { 60 it("returns '#/releasenotes' string for empty string", () => {
61 const result = update_helpers.onAuthGoToReleaseNotes('', ''); 61 const result = update_helpers.onAuthGoToReleaseNotes('', '');
62 expect(result).toEqual('#/releasenotes'); 62 expect(result).toEqual('#/releasenotes');
63 }); 63 });
64 64
65 it(`returns '#/releasenotes' string for empty string`, () => { 65 // eslint-disable-next-line jest/no-identical-title
66 it("returns '#/releasenotes' string for empty string", () => {
66 const result = update_helpers.onAuthGoToReleaseNotes('', '?version=6.0.0'); 67 const result = update_helpers.onAuthGoToReleaseNotes('', '?version=6.0.0');
67 expect(result).toEqual('#/releasenotes?version=6.0.0'); 68 expect(result).toEqual('#/releasenotes?version=6.0.0');
68 }); 69 });
69 70
70 it(`returns '#/releasenotes' string for empty string`, () => { 71 // eslint-disable-next-line jest/no-identical-title
72 it("returns '#/releasenotes' string for empty string", () => {
71 const result = update_helpers.onAuthGoToReleaseNotes(''); 73 const result = update_helpers.onAuthGoToReleaseNotes('');
72 expect(result).toEqual('#/releasenotes'); 74 expect(result).toEqual('#/releasenotes');
73 }); 75 });
74 76
75 it(`returns '#/releasenotes' string for empty string`, () => { 77 // eslint-disable-next-line jest/no-identical-title
78 it("returns '#/releasenotes' string for empty string", () => {
76 const result = update_helpers.onAuthGoToReleaseNotes('#/auth', ''); 79 const result = update_helpers.onAuthGoToReleaseNotes('#/auth', '');
77 expect(result).toEqual('#/auth/releasenotes'); 80 expect(result).toEqual('#/auth/releasenotes');
78 }); 81 });
79 82
80 it(`returns '#/releasenotes' string for empty string`, () => { 83 // eslint-disable-next-line jest/no-identical-title
84 it("returns '#/releasenotes' string for empty string", () => {
81 const result = update_helpers.onAuthGoToReleaseNotes( 85 const result = update_helpers.onAuthGoToReleaseNotes(
82 '#/auth', 86 '#/auth',
83 '?version=6.0.0', 87 '?version=6.0.0',
@@ -85,7 +89,8 @@ describe('onAuthGoToReleaseNotes', () => {
85 expect(result).toEqual('#/auth/releasenotes?version=6.0.0'); 89 expect(result).toEqual('#/auth/releasenotes?version=6.0.0');
86 }); 90 });
87 91
88 it(`returns '#/releasenotes' string for empty string`, () => { 92 // eslint-disable-next-line jest/no-identical-title
93 it("returns '#/releasenotes' string for empty string", () => {
89 const result = update_helpers.onAuthGoToReleaseNotes('#/auth'); 94 const result = update_helpers.onAuthGoToReleaseNotes('#/auth');
90 expect(result).toEqual('#/auth/releasenotes'); 95 expect(result).toEqual('#/auth/releasenotes');
91 }); 96 });
diff --git a/test/jsUtils.test.ts b/test/jsUtils.test.ts
index ff7d29d77..138158611 100644
--- a/test/jsUtils.test.ts
+++ b/test/jsUtils.test.ts
@@ -54,7 +54,7 @@ describe('jsUtils', () => {
54 54
55 describe('convertToJSON', () => { 55 describe('convertToJSON', () => {
56 it('returns undefined for undefined input', () => { 56 it('returns undefined for undefined input', () => {
57 const result = jsUtils.convertToJSON(undefined); 57 const result = jsUtils.convertToJSON();
58 expect(result).toEqual(undefined); 58 expect(result).toEqual(undefined);
59 }); 59 });
60 60
@@ -78,12 +78,14 @@ describe('jsUtils', () => {
78 }); 78 });
79 79
80 describe('cleanseJSObject', () => { 80 describe('cleanseJSObject', () => {
81 xit('throws error for undefined input', () => { 81 // eslint-disable-next-line jest/no-disabled-tests
82 const result = jsUtils.cleanseJSObject(undefined); 82 it.skip('throws error for undefined input', () => {
83 const result = jsUtils.cleanseJSObject();
83 expect(result).toThrow(); 84 expect(result).toThrow();
84 }); 85 });
85 86
86 xit('throws error for null input', () => { 87 // eslint-disable-next-line jest/no-disabled-tests
88 it.skip('throws error for null input', () => {
87 const result = jsUtils.cleanseJSObject(null); 89 const result = jsUtils.cleanseJSObject(null);
88 expect(result).toThrow(); 90 expect(result).toThrow();
89 }); 91 });
@@ -108,7 +110,7 @@ describe('jsUtils', () => {
108 110
109 describe('safeParseInt', () => { 111 describe('safeParseInt', () => {
110 it('returns zero for undefined', () => { 112 it('returns zero for undefined', () => {
111 expect(jsUtils.safeParseInt(undefined)).toEqual(0); 113 expect(jsUtils.safeParseInt()).toEqual(0);
112 }); 114 });
113 115
114 it('returns zero for null', () => { 116 it('returns zero for null', () => {