From 58463581ec17d40d4ebd39980497f93cb9fc4f0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Tue, 18 Apr 2023 18:12:09 +0200 Subject: [PATCH 01/95] feat: add route for e2eIdentity Landingpage, add server redirect --- package.json | 2 ++ server/ServerConfig.ts | 1 + server/config.ts | 3 +- server/routes/RedirectRoutes.ts | 7 ++++ src/script/Config.ts | 1 + .../auth/page/E2EIdentityOidcRedirect.tsx | 28 +++++++++++++++ src/script/auth/page/Root.tsx | 31 +++++++++++++--- src/script/auth/route.ts | 1 + src/script/service/CoreSingleton.ts | 1 + src/types/Wire.types.ts | 1 + yarn.lock | 35 ++++++++++++++++++- 11 files changed, 104 insertions(+), 7 deletions(-) create mode 100644 src/script/auth/page/E2EIdentityOidcRedirect.tsx diff --git a/package.json b/package.json index a6e1d31eadd..922695d2dfb 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "@datadog/browser-logs": "^4.39.0", "@datadog/browser-rum": "^4.39.0", "@emotion/react": "11.10.6", + "@loadable/component": "^5.15.3", "@types/eslint": "8.4.10", "@wireapp/avs": "9.1.13", "@wireapp/core": "40.1.8", @@ -79,6 +80,7 @@ "@types/keyboardjs": "2.5.1", "@types/libsodium-wrappers": "^0", "@types/linkify-it": "3.0.2", + "@types/loadable__component": "^5", "@types/markdown-it": "12.2.3", "@types/node": "^18.15.11", "@types/open-graph": "0.2.2", diff --git a/server/ServerConfig.ts b/server/ServerConfig.ts index bd7a8b6d650..cdfb718eb34 100644 --- a/server/ServerConfig.ts +++ b/server/ServerConfig.ts @@ -41,6 +41,7 @@ export interface ServerConfig { ENABLE_ACCOUNT_REGISTRATION_ACCEPT_TERMS_AND_PRIVACY_POLICY: boolean; ENABLE_DEBUG: boolean; ENABLE_MLS: boolean; + ENABLE_E2EI: boolean; ENABLE_DOMAIN_DISCOVERY: boolean; ENABLE_ENFORCE_DESKTOP_APPLICATION_ONLY: boolean; ENABLE_EXTRA_CLIENT_ENTROPY: boolean; diff --git a/server/config.ts b/server/config.ts index ebc28e02b15..b10a93a3d83 100644 --- a/server/config.ts +++ b/server/config.ts @@ -48,7 +48,7 @@ if (federation) { } const defaultCSP = { - connectSrc: ["'self'", 'blob:', 'data:', 'https://*.giphy.com'], + connectSrc: ["'self'", 'blob:', 'data:', 'https://*.giphy.com', 'https://accounts.google.com'], defaultSrc: ["'self'"], fontSrc: ["'self'", 'data:'], frameSrc: [ @@ -146,6 +146,7 @@ const config: ServerConfig = { ENABLE_EXTRA_CLIENT_ENTROPY: process.env.FEATURE_ENABLE_EXTRA_CLIENT_ENTROPY == 'true', ENABLE_MEDIA_EMBEDS: process.env.FEATURE_ENABLE_MEDIA_EMBEDS != 'false', ENABLE_MLS: process.env.FEATURE_ENABLE_MLS == 'true', + ENABLE_E2EI: process.env.FEATURE_ENABLE_MLS == 'true' && process.env.FEATURE_ENABLE_E2EI == 'true', ENABLE_PHONE_LOGIN: process.env.FEATURE_ENABLE_PHONE_LOGIN != 'false', ENABLE_PROTEUS_CORE_CRYPTO: process.env.FEATURE_ENABLE_PROTEUS_CORE_CRYPTO == 'true', ENABLE_SSO: process.env.FEATURE_ENABLE_SSO == 'true', diff --git a/server/routes/RedirectRoutes.ts b/server/routes/RedirectRoutes.ts index 9e4076e9790..6ef78825f11 100644 --- a/server/routes/RedirectRoutes.ts +++ b/server/routes/RedirectRoutes.ts @@ -60,4 +60,11 @@ export const RedirectRoutes = (config: ServerConfig) => [ router.get('/version/?', (_req, res) => { return res.json({version: config.CLIENT.VERSION}); }), + router.get('/oidc/?', (_req, res) => { + const {query} = _req; + const queryString = Object.keys(query) + .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(query[key] as string)}`) + .join('&'); + return res.redirect(HTTP_STATUS.MOVED_PERMANENTLY, `/auth/#/oidc${queryString ? '?' : ''}${queryString}`); + }), ]; diff --git a/src/script/Config.ts b/src/script/Config.ts index 0a3bd84d6ff..5e09af03992 100644 --- a/src/script/Config.ts +++ b/src/script/Config.ts @@ -46,6 +46,7 @@ export class Configuration { ...env.FEATURE, ENABLE_EXTRA_CLIENT_ENTROPY: env.FEATURE.ENABLE_EXTRA_CLIENT_ENTROPY && (Runtime.isWindows() || env.FEATURE.FORCE_EXTRA_CLIENT_ENTROPY), + ENABLE_E2EI: env.FEATURE.ENABLE_E2EI && env.FEATURE.ENABLE_MLS, }; readonly MAX_GROUP_PARTICIPANTS = env.MAX_GROUP_PARTICIPANTS || 500; readonly MAX_VIDEO_PARTICIPANTS = env.MAX_VIDEO_PARTICIPANTS || 4; diff --git a/src/script/auth/page/E2EIdentityOidcRedirect.tsx b/src/script/auth/page/E2EIdentityOidcRedirect.tsx new file mode 100644 index 00000000000..69fbdd9ec4d --- /dev/null +++ b/src/script/auth/page/E2EIdentityOidcRedirect.tsx @@ -0,0 +1,28 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +const E2EIdentityOidcRedirect = () => { + return ( + <> +

E2EIdentityOidcRedirectComponent

+ + ); +}; + +export {E2EIdentityOidcRedirect}; diff --git a/src/script/auth/page/Root.tsx b/src/script/auth/page/Root.tsx index 54082626c19..65bb8c921ab 100644 --- a/src/script/auth/page/Root.tsx +++ b/src/script/auth/page/Root.tsx @@ -19,6 +19,7 @@ import {FC, useEffect} from 'react'; +import loadable from '@loadable/component'; import {pathWithParams} from '@wireapp/commons/lib/util/UrlUtil'; import {IntlProvider} from 'react-intl'; import {connect} from 'react-redux'; @@ -33,8 +34,6 @@ import {CheckPassword} from './CheckPassword'; import {ClientManager} from './ClientManager'; import {ConversationJoin} from './ConversationJoin'; import {ConversationJoinInvalid} from './ConversationJoinInvalid'; -import {CreateAccount} from './CreateAccount'; -import {CreatePersonalAccount} from './CreatePersonalAccount'; import {CustomEnvironmentRedirect} from './CustomEnvironmentRedirect'; import {HistoryInfo} from './HistoryInfo'; import {Index} from './Index'; @@ -44,12 +43,9 @@ import {OAuthPermissions} from './OAuthPermissions'; import {PhoneLogin} from './PhoneLogin'; import {SetAccountType} from './SetAccountType'; import {SetEmail} from './SetEmail'; -import {SetEntropyPage} from './SetEntropyPage'; import {SetHandle} from './SetHandle'; import {SetPassword} from './SetPassword'; import {SingleSignOn} from './SingleSignOn'; -import {TeamName} from './TeamName'; -import {VerifyEmailCode} from './VerifyEmailCode'; import {VerifyEmailLink} from './VerifyEmailLink'; import {VerifyPhoneCode} from './VerifyPhoneCode'; @@ -61,6 +57,28 @@ import * as AuthSelector from '../module/selector/AuthSelector'; import * as LanguageSelector from '../module/selector/LanguageSelector'; import {ROUTE} from '../route'; +/** + * Lazy loading components for routes, which can only be accessed by activated feature flags + */ +const E2EIdentityOidcRedirect = loadable(() => import('./E2EIdentityOidcRedirect'), { + resolveComponent: component => component.E2EIdentityOidcRedirect, +}); +const CreateAccount = loadable(() => import('./CreateAccount'), { + resolveComponent: component => component.CreateAccount, +}); +const CreatePersonalAccount = loadable(() => import('./CreatePersonalAccount'), { + resolveComponent: component => component.CreatePersonalAccount, +}); +const VerifyEmailCode = loadable(() => import('./VerifyEmailCode'), { + resolveComponent: component => component.VerifyEmailCode, +}); +const SetEntropyPage = loadable(() => import('./SetEntropyPage'), { + resolveComponent: component => component.SetEntropyPage, +}); +const TeamName = loadable(() => import('./TeamName'), { + resolveComponent: component => component.TeamName, +}); + interface RootProps {} const Title: FC<{title: string; children: React.ReactNode}> = ({title, children}) => { @@ -207,6 +225,9 @@ const RootComponent: FC = ({ {Config.getConfig().FEATURE.ENABLE_ACCOUNT_REGISTRATION && ( } /> )} + {Config.getConfig().FEATURE.ENABLE_E2EI && ( + } /> + )} } /> diff --git a/src/script/auth/route.ts b/src/script/auth/route.ts index dbcc41b724c..bd4f5c01e9d 100644 --- a/src/script/auth/route.ts +++ b/src/script/auth/route.ts @@ -74,6 +74,7 @@ export const ROUTE = { SET_HANDLE: '/sethandle', SET_PASSWORD: '/setpassword', SSO: '/sso', + E2E_IDENTITY_OIDC: '/oidc', VERIFY_EMAIL_CODE: '/verifyemailcode', VERIFY_EMAIL_LINK: '/verifyemaillink', VERIFY_PHONE_CODE: '/verifyphonecode', diff --git a/src/script/service/CoreSingleton.ts b/src/script/service/CoreSingleton.ts index 90bf3e40df7..fdc766cabbd 100644 --- a/src/script/service/CoreSingleton.ts +++ b/src/script/service/CoreSingleton.ts @@ -61,6 +61,7 @@ export class Core extends Account { mls: supportsMLS() ? { keyingMaterialUpdateThreshold: Config.getConfig().FEATURE.MLS_CONFIG_KEYING_MATERIAL_UPDATE_THRESHOLD, + useE2EI: Config.getConfig().FEATURE.ENABLE_E2EI, } : undefined, diff --git a/src/types/Wire.types.ts b/src/types/Wire.types.ts index a09a245cc0b..4c5b16f5cf0 100644 --- a/src/types/Wire.types.ts +++ b/src/types/Wire.types.ts @@ -34,6 +34,7 @@ type FeatureVariables = { FORCE_EXTRA_CLIENT_ENTROPY: boolean; ENABLE_MEDIA_EMBEDS: boolean; ENABLE_MLS: boolean; + ENABLE_E2EI: boolean; ENABLE_PHONE_LOGIN: boolean; ENABLE_PROTEUS_CORE_CRYPTO: boolean; ENABLE_SSO: boolean; diff --git a/yarn.lock b/yarn.lock index 6057ba14fac..4f093222110 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1864,6 +1864,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.7.7": + version: 7.21.0 + resolution: "@babel/runtime@npm:7.21.0" + dependencies: + regenerator-runtime: ^0.13.11 + checksum: 7b33e25bfa9e0e1b9e8828bb61b2d32bdd46b41b07ba7cb43319ad08efc6fda8eb89445193e67d6541814627df0ca59122c0ea795e412b99c5183a0540d338ab + languageName: node + linkType: hard + "@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.3.3, @babel/template@npm:^7.4.4": version: 7.20.7 resolution: "@babel/template@npm:7.20.7" @@ -3844,6 +3853,19 @@ __metadata: languageName: node linkType: hard +"@loadable/component@npm:^5.15.3": + version: 5.15.3 + resolution: "@loadable/component@npm:5.15.3" + dependencies: + "@babel/runtime": ^7.7.7 + hoist-non-react-statics: ^3.3.1 + react-is: ^16.12.0 + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + checksum: 78ac341465f2310db30381bc75e8bf73a33f99af849a6a2d87eb3842da0ba1df265e08045dc4f3fee1d194522a43a030baa91740045b64aad002f159ccce64bf + languageName: node + linkType: hard + "@mapbox/node-pre-gyp@npm:^1.0.8": version: 1.0.9 resolution: "@mapbox/node-pre-gyp@npm:1.0.9" @@ -4565,6 +4587,15 @@ __metadata: languageName: node linkType: hard +"@types/loadable__component@npm:^5": + version: 5.13.4 + resolution: "@types/loadable__component@npm:5.13.4" + dependencies: + "@types/react": "*" + checksum: a2d1c77b952eb15c45dfad841a7a0a3e4045f828e1f0ecbab997a306a56a48cd48ee12ee75bf79f59bbcff0347bbeb120106e8e66c91a38a530a028e1598b130 + languageName: node + linkType: hard + "@types/markdown-it@npm:12.2.3, @types/markdown-it@npm:^12.2.3": version: 12.2.3 resolution: "@types/markdown-it@npm:12.2.3" @@ -15122,7 +15153,7 @@ dexie@latest: languageName: node linkType: hard -"react-is@npm:^16.13.1, react-is@npm:^16.7.0": +"react-is@npm:^16.12.0, react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f @@ -18215,6 +18246,7 @@ dexie@latest: "@faker-js/faker": 7.6.0 "@formatjs/cli": 6.0.4 "@koush/wrtc": 0.5.3 + "@loadable/component": ^5.15.3 "@testing-library/react": 13.4.0 "@types/adm-zip": 0.5.0 "@types/caniuse-lite": ^1.0.1 @@ -18231,6 +18263,7 @@ dexie@latest: "@types/keyboardjs": 2.5.1 "@types/libsodium-wrappers": ^0 "@types/linkify-it": 3.0.2 + "@types/loadable__component": ^5 "@types/markdown-it": 12.2.3 "@types/node": ^18.15.11 "@types/open-graph": 0.2.2 From e6741e4e483f58245f6af3f897a0956987bfbc04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Wed, 3 May 2023 10:26:11 +0200 Subject: [PATCH 02/95] feat: add E2EI Feature flag --- server/config/client.config.ts | 1 + server/config/env.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/server/config/client.config.ts b/server/config/client.config.ts index fa9b7c27538..ec8b0a036be 100644 --- a/server/config/client.config.ts +++ b/server/config/client.config.ts @@ -54,6 +54,7 @@ export function generateConfig(params: ConfigGeneratorParams, env: Env) { ENABLE_EXTRA_CLIENT_ENTROPY: env.FEATURE_ENABLE_EXTRA_CLIENT_ENTROPY == 'true', ENABLE_MEDIA_EMBEDS: env.FEATURE_ENABLE_MEDIA_EMBEDS != 'false', ENABLE_MLS: env.FEATURE_ENABLE_MLS == 'true', + ENABLE_E2EI: env.FEATURE_ENABLE_MLS == 'true' && env.FEATURE_ENABLE_E2EI == 'true', ENABLE_PHONE_LOGIN: env.FEATURE_ENABLE_PHONE_LOGIN != 'false', ENABLE_PROTEUS_CORE_CRYPTO: env.FEATURE_ENABLE_PROTEUS_CORE_CRYPTO == 'true', ENABLE_SSO: env.FEATURE_ENABLE_SSO == 'true', diff --git a/server/config/env.ts b/server/config/env.ts index c7dad1babb3..5269c952904 100644 --- a/server/config/env.ts +++ b/server/config/env.ts @@ -77,6 +77,9 @@ export type Env = { /** will enable the MLS protocol */ FEATURE_ENABLE_MLS?: string; + /** will enable the E2E-Identification protocol, needs active FEATURE_ENABLE_MLS to work */ + FEATURE_ENABLE_E2EI?: string; + FEATURE_USE_CORE_CRYPTO?: string; FEATURE_MLS_CONFIG_KEYING_MATERIAL_UPDATE_THRESHOLD?: string; From b20426605e88cba9fc2a6009cb859efffac7c6ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Mon, 8 May 2023 13:55:35 +0200 Subject: [PATCH 03/95] feat: add info --- package.json | 3 +- .../auth/page/E2EIdentityOidcRedirect.tsx | 36 +++++- yarn.lock | 121 ++++++++++++------ 3 files changed, 117 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index b0f9ae3d8c4..6ded802821d 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,10 @@ "@datadog/browser-logs": "^4.41.0", "@datadog/browser-rum": "^4.41.0", "@emotion/react": "11.10.8", + "@loadable/component": "^5.15.3", "@types/eslint": "8.37.0", "@wireapp/avs": "9.1.13", - "@wireapp/core": "40.1.12", + "@wireapp/core": "^40.2.1", "@wireapp/lru-cache": "3.8.1", "@wireapp/react-ui-kit": "9.6.0", "@wireapp/store-engine-dexie": "2.0.5", diff --git a/src/script/auth/page/E2EIdentityOidcRedirect.tsx b/src/script/auth/page/E2EIdentityOidcRedirect.tsx index 69fbdd9ec4d..491172a30f9 100644 --- a/src/script/auth/page/E2EIdentityOidcRedirect.tsx +++ b/src/script/auth/page/E2EIdentityOidcRedirect.tsx @@ -17,11 +17,41 @@ * */ +import {container} from 'tsyringe'; + +import {Core} from 'src/script/service/CoreSingleton'; + const E2EIdentityOidcRedirect = () => { + const search = window.location.href.split('/#/oidc')[1]; + const urlParams = new URLSearchParams(search); + + const oidcRedirectParams: Record = { + code: urlParams.get('code'), + state: urlParams.get('state'), + scope: urlParams.get('scope'), + error: urlParams.get('error'), + errorDescription: urlParams.get('error_description'), + }; + + const core = container.resolve(Core); + void core.continueOAuthFlow(); + return ( - <> -

E2EIdentityOidcRedirectComponent

- +
+
+

E2EIdentityOidcRedirectComponent

+
+ <> +
+ {oidcRedirectParams && + Object.keys(oidcRedirectParams).map(key => ( +

+ {key}: {oidcRedirectParams[key]} +

+ ))} +
+ +
); }; diff --git a/yarn.lock b/yarn.lock index 6fc18f32f50..edc864fe0d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1702,7 +1702,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.21.0": +"@babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.7.7": version: 7.21.5 resolution: "@babel/runtime@npm:7.21.5" dependencies: @@ -3740,6 +3740,19 @@ __metadata: languageName: node linkType: hard +"@loadable/component@npm:^5.15.3": + version: 5.15.3 + resolution: "@loadable/component@npm:5.15.3" + dependencies: + "@babel/runtime": ^7.7.7 + hoist-non-react-statics: ^3.3.1 + react-is: ^16.12.0 + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + checksum: 78ac341465f2310db30381bc75e8bf73a33f99af849a6a2d87eb3842da0ba1df265e08045dc4f3fee1d194522a43a030baa91740045b64aad002f159ccce64bf + languageName: node + linkType: hard + "@mapbox/node-pre-gyp@npm:^1.0.8": version: 1.0.9 resolution: "@mapbox/node-pre-gyp@npm:1.0.9" @@ -5190,14 +5203,14 @@ __metadata: languageName: node linkType: hard -"@wireapp/api-client@npm:^24.6.0": - version: 24.6.0 - resolution: "@wireapp/api-client@npm:24.6.0" +"@wireapp/api-client@npm:^24.9.0": + version: 24.9.0 + resolution: "@wireapp/api-client@npm:24.9.0" dependencies: - "@wireapp/commons": ^5.0.4 - "@wireapp/priority-queue": ^2.0.3 + "@wireapp/commons": ^5.1.0 + "@wireapp/priority-queue": ^2.1.0 "@wireapp/protocol-messaging": 1.44.0 - axios: 1.3.6 + axios: 1.4.0 axios-retry: 3.4.0 http-status-codes: 2.2.0 logdown: 3.3.1 @@ -5205,7 +5218,7 @@ __metadata: spark-md5: 3.0.2 tough-cookie: 4.1.2 ws: 8.11.0 - checksum: 0d04aa81ef4158b8de444a478e179e45537660d81bd9c81e0e89451b600f31787169baaf846883352be0c295eaf4e0b8da92166c283666a88ce48368bffaa8dc + checksum: 083157f79eaeada11a989d1f91b09ce89f0fcfe4e27f80c4210b8a81a8877252a0d6f18d47462ea830dd70772fdef02e1dce2b58edfa860946c07fbcc094bb13 languageName: node linkType: hard @@ -5223,15 +5236,15 @@ __metadata: languageName: node linkType: hard -"@wireapp/commons@npm:^5.0.4": - version: 5.0.4 - resolution: "@wireapp/commons@npm:5.0.4" +"@wireapp/commons@npm:^5.1.0": + version: 5.1.0 + resolution: "@wireapp/commons@npm:5.1.0" dependencies: ansi-regex: 5.0.1 fs-extra: 11.1.0 logdown: 3.3.1 platform: 1.3.6 - checksum: 714285b048d4c8b708d662b55e78c0fec1a6fa8c976c78fef420b4325c91087af8f32551850c78cea947710bad8b1ac288e21006f62cd982fe01a6f4983b1b24 + checksum: 1abb97ff5ab0f0cf0b9882997f71929170abb7e0d4b5d1cd0bff3821b94e38aaddcebf9fb410493601d3595a843b86582c81e5036e567997be011741c6e0ec28 languageName: node linkType: hard @@ -5258,20 +5271,20 @@ __metadata: languageName: node linkType: hard -"@wireapp/core@npm:40.1.12": - version: 40.1.12 - resolution: "@wireapp/core@npm:40.1.12" +"@wireapp/core@npm:^40.2.1": + version: 40.2.1 + resolution: "@wireapp/core@npm:40.2.1" dependencies: - "@wireapp/api-client": ^24.6.0 - "@wireapp/commons": ^5.0.4 + "@wireapp/api-client": ^24.9.0 + "@wireapp/commons": ^5.1.0 "@wireapp/core-crypto": 0.7.0-rc.4 "@wireapp/cryptobox": 12.8.0 - "@wireapp/promise-queue": ^2.1.2 + "@wireapp/promise-queue": ^2.2.0 "@wireapp/protocol-messaging": 1.44.0 - "@wireapp/store-engine": 5.0.3 - "@wireapp/store-engine-dexie": ^2.0.5 - axios: 1.3.6 - bazinga64: 6.0.4 + "@wireapp/store-engine": 5.1.0 + "@wireapp/store-engine-dexie": ^2.1.0 + axios: 1.4.0 + bazinga64: 6.1.0 deepmerge-ts: 4.3.0 hash.js: 1.1.7 http-status-codes: 2.2.0 @@ -5279,7 +5292,7 @@ __metadata: logdown: 3.3.1 long: ^5.2.0 uuidjs: 4.2.13 - checksum: 445cba42fff2e76e2e11a1e25b10586a541c703e7c1df32e75fe20c281490e551fa3c915db6b48cc96b04f42d1fc5aaa302fad8517014b398f1514defd543e29 + checksum: fcc72689bc40684dbf3905f26b80ad7fde7b146f05e901a5e670b5bb687c7fb8be5ea44c74f67ab0fcc02463f23062fe96a796f3f01b0f086679d2087b7f739a languageName: node linkType: hard @@ -5352,17 +5365,17 @@ __metadata: languageName: node linkType: hard -"@wireapp/priority-queue@npm:^2.0.3": - version: 2.0.3 - resolution: "@wireapp/priority-queue@npm:2.0.3" - checksum: 276588220de8364def699dfe6f27d8142566266f975d342e4e25dca162a6d8a3a93bf69d890704f16a9db49fdb953ddf71a3a331641a630cbd7a2782abd2dcd0 +"@wireapp/priority-queue@npm:^2.1.0": + version: 2.1.0 + resolution: "@wireapp/priority-queue@npm:2.1.0" + checksum: 26f18bd955be591b034bacc247bfbf1908b22ffd15a4ebeeb810dbcb4d010c498dcd8dc077891fd40ae387cd367d2e72eb6cd769ba80123d827b38b9c91e6931 languageName: node linkType: hard -"@wireapp/promise-queue@npm:^2.1.2": - version: 2.1.2 - resolution: "@wireapp/promise-queue@npm:2.1.2" - checksum: eb2014b6e1b321f007be6810069589b43e12fdda708ecba876068309aadb2688b63edb4f6bacc921790ca30b97e90fe3dfccba7b3c3799249377343a8a42568c +"@wireapp/promise-queue@npm:^2.2.0": + version: 2.2.0 + resolution: "@wireapp/promise-queue@npm:2.2.0" + checksum: c0c6c66be8316844cdeadb77d176846103f98087027dd8c88f99ab664b62982918a49cab6aeb16a35c7d07347f80a3f6bc200edc20877ed382b635cab6d61ff9 languageName: node linkType: hard @@ -5411,7 +5424,7 @@ __metadata: languageName: node linkType: hard -"@wireapp/store-engine-dexie@npm:2.0.5, @wireapp/store-engine-dexie@npm:^2.0.5": +"@wireapp/store-engine-dexie@npm:2.0.5": version: 2.0.5 resolution: "@wireapp/store-engine-dexie@npm:2.0.5" dependencies: @@ -5422,6 +5435,17 @@ __metadata: languageName: node linkType: hard +"@wireapp/store-engine-dexie@npm:^2.1.0": + version: 2.1.0 + resolution: "@wireapp/store-engine-dexie@npm:2.1.0" + dependencies: + dexie: 3.2.3 + peerDependencies: + "@wireapp/store-engine": 5.x.x + checksum: 565b82ca7a506678c89af52ff6001103b58882496f26a38f24dcd65609699cbf4f42fce993a709af893ae709ca80302b334d389dbd8e7d5cc90d6d5f64693234 + languageName: node + linkType: hard + "@wireapp/store-engine-sqleet@npm:1.8.9": version: 1.8.9 resolution: "@wireapp/store-engine-sqleet@npm:1.8.9" @@ -5444,7 +5468,14 @@ __metadata: languageName: node linkType: hard -"@wireapp/store-engine@npm:5.0.3, @wireapp/store-engine@npm:^5.0.3": +"@wireapp/store-engine@npm:5.1.0": + version: 5.1.0 + resolution: "@wireapp/store-engine@npm:5.1.0" + checksum: 31d333b18b0316a8be6e13f20ab6f8faf88e00ad83828ee5f93aec59a8b6cc8372d4172125fd309698c66520982ef2420b20b853912df0042c57baf8ea3b3f79 + languageName: node + linkType: hard + +"@wireapp/store-engine@npm:^5.0.3": version: 5.0.3 resolution: "@wireapp/store-engine@npm:5.0.3" checksum: 3e2bff6c318911f3f75298a4a60b1ca4b83bc90d71bdc3bd1f41ffa75ece47ed70316612f7847e9c2436981fb8d8cf6f31cb31540f4319b481b537a69f42dce8 @@ -6111,6 +6142,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:1.4.0": + version: 1.4.0 + resolution: "axios@npm:1.4.0" + dependencies: + follow-redirects: ^1.15.0 + form-data: ^4.0.0 + proxy-from-env: ^1.1.0 + checksum: 7fb6a4313bae7f45e89d62c70a800913c303df653f19eafec88e56cea2e3821066b8409bc68be1930ecca80e861c52aa787659df0ffec6ad4d451c7816b9386b + languageName: node + linkType: hard + "axobject-query@npm:^3.1.1": version: 3.1.1 resolution: "axobject-query@npm:3.1.1" @@ -6312,10 +6354,10 @@ __metadata: languageName: node linkType: hard -"bazinga64@npm:6.0.4": - version: 6.0.4 - resolution: "bazinga64@npm:6.0.4" - checksum: fa78327b1cd5d3f6bf046374213558717b50c293db994b42b5888577710ef4ba20c65e3b31ee5664594532385b9ea9ba608e83cd911d5bf53b4739c780130755 +"bazinga64@npm:6.1.0": + version: 6.1.0 + resolution: "bazinga64@npm:6.1.0" + checksum: 6e7659d7064cbb9c7ea9880c4aad85b9bdd1eed7da3e9f3ae7a9a0cb24d72e61fc4783839ec0a0b9aaac4f81bae1dcb046aae85c5befc7492f35fdae5000a4ef languageName: node linkType: hard @@ -14896,7 +14938,7 @@ dexie@latest: languageName: node linkType: hard -"react-is@npm:^16.13.1, react-is@npm:^16.7.0": +"react-is@npm:^16.12.0, react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f @@ -17891,6 +17933,7 @@ dexie@latest: "@faker-js/faker": 7.6.0 "@formatjs/cli": 6.1.0 "@koush/wrtc": 0.5.3 + "@loadable/component": ^5.15.3 "@testing-library/react": 13.4.0 "@types/adm-zip": 0.5.0 "@types/caniuse-lite": ^1.0.1 @@ -17928,7 +17971,7 @@ dexie@latest: "@typescript-eslint/parser": ^5.59.1 "@wireapp/avs": 9.1.13 "@wireapp/copy-config": 2.0.12 - "@wireapp/core": 40.1.12 + "@wireapp/core": ^40.2.1 "@wireapp/eslint-config": 2.1.2 "@wireapp/lru-cache": 3.8.1 "@wireapp/prettier-config": 0.5.2 From faeccaaf14b4c69586e843c7829e36dd511b6d18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Tue, 16 May 2023 15:48:17 +0200 Subject: [PATCH 04/95] wip --- package.json | 5 +- src/i18n/en-US.json | 19 + .../auth/page/E2EIdentityOidcRedirect.tsx | 2 +- src/script/team/TeamRepository.ts | 38 + .../util/E2EIdentity/E2EIdentity.test.ts | 0 src/script/util/E2EIdentity/E2EIdentity.ts | 84 + src/script/util/E2EIdentity/index.ts | 20 + yarn.lock | 3213 ++++++++--------- 8 files changed, 1577 insertions(+), 1804 deletions(-) create mode 100644 src/script/util/E2EIdentity/E2EIdentity.test.ts create mode 100644 src/script/util/E2EIdentity/E2EIdentity.ts create mode 100644 src/script/util/E2EIdentity/index.ts diff --git a/package.json b/package.json index 5ec920a4c66..a8a606909ad 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,11 @@ "@datadog/browser-logs": "^4.42.0", "@datadog/browser-rum": "^4.42.0", "@emotion/react": "11.11.0", + "@loadable/component": "^5.15.3", "@types/eslint": "8.37.0", + "@types/react": "^18.2.6", "@wireapp/avs": "9.1.13", - "@wireapp/core": "40.2.1", + "@wireapp/core": "file:.yalc/@wireapp/core", "@wireapp/lru-cache": "3.8.1", "@wireapp/react-ui-kit": "9.7.0", "@wireapp/store-engine-dexie": "2.1.0", @@ -85,7 +87,6 @@ "@types/open-graph": "0.2.2", "@types/platform": "1.3.4", "@types/prettier": "^2.7.2", - "@types/react": "18.0.28", "@types/react-dom": "18.2.4", "@types/react-redux": "7.1.25", "@types/react-transition-group": "4.4.6", diff --git a/src/i18n/en-US.json b/src/i18n/en-US.json index c31c32d677e..214227e0c18 100644 --- a/src/i18n/en-US.json +++ b/src/i18n/en-US.json @@ -129,6 +129,25 @@ "accountForm.submitButton": "Next", "accountForm.terms": "I accept the terms and conditions", "accountForm.termsAndPrivacyPolicy": "I accept the privacy policy and terms and conditions", + "acme.settingsChanged.headline.main": "Team settings changed", + "acme.settingsChanged.headline.alt": "End-to-end identify certificate", + "acme.settingsChanged.paragraph": "End-to-end identity is enabled for you to make Wire's usage more secure. The device verification takes as of now place automatically using a certificate.

Enter your Wire credentials on the external webpage we will redirect you to. With this login, you automatically get the verification certificate for this device. You will keep your conversation history.

Learn more about end-to-end identity ", + "acme.settingsChanged.button.primary": "Get Certificate", + "acme.settingsChanged.button.secondary": "Remind Me Later", + "acme.settingsChanged.button.close": "Close window 'End-to-end identify certificate'", + "acme.inProgress.headline": "Getting Certificate", + "acme.inProgress.paragraph.main": "Please navigate to your web browser and log in to the certiticate service.

In case the website does not open. you can also navigate there manually by following this URL:

{{url}}", + "acme.inProgress.paragraph.alt": "Downloading...", + "acme.inProgress.button.close": "Close window 'Getting Certificate'", + "acme.done.headline": "Certificate Downloaded", + "acme.done.paragraph": "The certificate is active now and your device is verified. You can find more details about this certificate in your Wire Settings under Devices.", + "acme.done.button": "Ok", + "acme.done.button.close": "Close window 'Certificate Downloaded'", + "acme.error.headline": "Something went wrong", + "acme.error.paragraph": "Certiticate could not no downloaded

You can retry to get the certificate now. Or the system will try it automatically in the background during the next 24 hours.", + "acme.error.button.primary": "Retry", + "acme.error.button.secondary": "Cancel", + "acme.error.button.close": "Close window 'Something went wrong'", "addParticipantsConfirmLabel": "Add", "addParticipantsHeader": "Add participants", "addParticipantsHeaderWithCounter": "Add participants ({{number}})", diff --git a/src/script/auth/page/E2EIdentityOidcRedirect.tsx b/src/script/auth/page/E2EIdentityOidcRedirect.tsx index 491172a30f9..cc799ddfbba 100644 --- a/src/script/auth/page/E2EIdentityOidcRedirect.tsx +++ b/src/script/auth/page/E2EIdentityOidcRedirect.tsx @@ -34,7 +34,7 @@ const E2EIdentityOidcRedirect = () => { }; const core = container.resolve(Core); - void core.continueOAuthFlow(); + void core.continueE2EIEnrollment(); return (
diff --git a/src/script/team/TeamRepository.ts b/src/script/team/TeamRepository.ts index 5460b776fb4..8537df30a92 100644 --- a/src/script/team/TeamRepository.ts +++ b/src/script/team/TeamRepository.ts @@ -39,6 +39,7 @@ import {Runtime} from '@wireapp/commons'; import {Availability} from '@wireapp/protocol-messaging'; import {WebAppEvents} from '@wireapp/webapp-events'; +import {initE2EI} from 'Util/E2EIdentity'; import {Environment} from 'Util/Environment'; import {replaceLink, t} from 'Util/LocalizerUtil'; import {getLogger, Logger} from 'Util/Logger'; @@ -426,10 +427,47 @@ export class TeamRepository { this.handleSelfDeletingMessagesFeatureChange(previousConfig, featureConfigList); this.handleConferenceCallingFeatureChange(previousConfig, featureConfigList); this.handleGuestLinkFeatureChange(previousConfig, featureConfigList); + this.handleE2EIdentityFeatureChange(previousConfig, featureConfigList); } this.saveFeatureConfig(featureConfigList); }; + private readonly handleE2EIdentityFeatureChange = (previousConfig: FeatureList, newConfig: FeatureList) => { + const hasE2EIdentityChanged = previousConfig?.mlsE2EId?.status !== newConfig?.mlsE2EId?.status; + const hasChangedToEnabled = newConfig?.mlsE2EId?.status === FeatureStatus.ENABLED; + const isMLSActive = newConfig?.mls?.status === FeatureStatus.ENABLED; + const hasConfig = + newConfig?.mlsE2EId?.config && + newConfig?.mlsE2EId?.config.acmeDiscoveryUrl && + newConfig?.mlsE2EId?.config.acmeDiscoveryUrl.length > 0; + + // remove when development is done + + initE2EI({ + discoveryUrl: 'https://balderdash.hogwash.work:9000/acme/wire/', + gracePeriodInMS: 0, + }); + + if (hasE2EIdentityChanged) { + if (hasChangedToEnabled) { + if (!isMLSActive) { + this.logger.info('Warning: E2E identity feature enabled but MLS feature is not active'); + return; + } + if (!hasConfig) { + this.logger.info('Warning: E2E identity feature enabled but no config provided'); + return; + } + initE2EI({ + discoveryUrl: newConfig.mlsE2EId!.config.acmeDiscoveryUrl!, + gracePeriodInMS: newConfig.mlsE2EId!.config.verificationExpiration, + }); + } else { + this.logger.info('Warning: E2E identity feature disabled'); + } + } + }; + private readonly handleFileSharingFeatureChange = (previousConfig: FeatureList, newConfig: FeatureList) => { const hasFileSharingChanged = previousConfig?.fileSharing?.status !== newConfig?.fileSharing?.status; const hasChangedToEnabled = newConfig?.fileSharing?.status === FeatureStatus.ENABLED; diff --git a/src/script/util/E2EIdentity/E2EIdentity.test.ts b/src/script/util/E2EIdentity/E2EIdentity.test.ts new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/util/E2EIdentity/E2EIdentity.ts new file mode 100644 index 00000000000..a95f6c35293 --- /dev/null +++ b/src/script/util/E2EIdentity/E2EIdentity.ts @@ -0,0 +1,84 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {container} from 'tsyringe'; + +import {PrimaryModal} from 'Components/Modals/PrimaryModal'; +import {ModalOptions, PrimaryModalType} from 'Components/Modals/PrimaryModal/PrimaryModalTypes'; +import {Config} from 'src/script/Config'; +import {Core} from 'src/script/service/CoreSingleton'; +import {t} from 'Util/LocalizerUtil'; +import {supportsMLS} from 'Util/util'; + +const shouldUseE2EI = () => supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; + +const delayE2EI = (gracePeriodInMS: number) => { + console.log('delay init in grace period'); +}; +const enrollE2EI = (discoveryUrl: string) => { + const core = container.resolve(Core); + void core.startE2EIEnrollment(discoveryUrl); +}; + +type NotifyUserAboutE2EIParams = { + primaryCallback: () => void; + secondaryCallback: () => void; + showSecondary: boolean; +}; +const notifyUserAboutE2EI = ({primaryCallback, secondaryCallback, showSecondary}: NotifyUserAboutE2EIParams) => { + const modalOptions: ModalOptions = { + primaryAction: { + action: primaryCallback, + text: t('acme.settingsChanged.button.primary'), + }, + text: { + closeBtnLabel: t('acme.settingsChanged.button.close'), + htmlMessage: t('acme.settingsChanged.paragraph'), + title: t('acme.settingsChanged.headline.alt'), + }, + preventClose: true, + showClose: false, + }; + if (showSecondary) { + modalOptions.secondaryAction = { + action: secondaryCallback, + text: t('acme.settingsChanged.button.secondary'), + }; + } + const modalType: PrimaryModalType = showSecondary ? PrimaryModal.type.CONFIRM : PrimaryModal.type.ACKNOWLEDGE; + + console.log(showSecondary, modalOptions); + + PrimaryModal.show(modalType, modalOptions); +}; + +interface InitE2EIParams { + gracePeriodInMS: number; + discoveryUrl: string; +} + +export const initE2EI = ({discoveryUrl, gracePeriodInMS}: InitE2EIParams) => { + if (shouldUseE2EI() || true) { + notifyUserAboutE2EI({ + showSecondary: gracePeriodInMS > 0, + primaryCallback: () => enrollE2EI(discoveryUrl), + secondaryCallback: () => delayE2EI(gracePeriodInMS), + }); + } +}; diff --git a/src/script/util/E2EIdentity/index.ts b/src/script/util/E2EIdentity/index.ts new file mode 100644 index 00000000000..6092e227756 --- /dev/null +++ b/src/script/util/E2EIdentity/index.ts @@ -0,0 +1,20 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export * from './E2EIdentity'; diff --git a/yarn.lock b/yarn.lock index 88abf96ec18..e4c808291aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6,25 +6,40 @@ __metadata: cacheKey: 8 "@ampproject/remapping@npm:^2.2.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" + version: 2.2.1 + resolution: "@ampproject/remapping@npm:2.2.1" dependencies: - "@jridgewell/gen-mapping": ^0.1.0 + "@jridgewell/gen-mapping": ^0.3.0 "@jridgewell/trace-mapping": ^0.3.9 - checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292 + checksum: 03c04fd526acc64a1f4df22651186f3e5ef0a9d6d6530ce4482ec9841269cf7a11dbb8af79237c282d721c5312024ff17529cd72cc4768c11e999b58e2302079 languageName: node linkType: hard "@apideck/better-ajv-errors@npm:^0.3.1": - version: 0.3.1 - resolution: "@apideck/better-ajv-errors@npm:0.3.1" + version: 0.3.6 + resolution: "@apideck/better-ajv-errors@npm:0.3.6" dependencies: json-schema: ^0.4.0 jsonpointer: ^5.0.0 leven: ^3.1.0 peerDependencies: ajv: ">=8" - checksum: e3debe385495a1212ad00a95a6b83ac5013c4f80786e2cad2096b15dd61ee977500f3dea5f16a8d98b00dc9d708a68664f7b3b5e7a348d233fa399cf3a96e311 + checksum: b70ec9aae3b30ba1ac06948e585cd96aabbfe7ef6a1c27dc51e56c425f01290a58e9beb19ed95ee64da9f32df3e9276cd1ea58e78792741d74a519cb56955491 + languageName: node + linkType: hard + +"@auth0/auth0-spa-js@npm:^1.6.2": + version: 1.22.6 + resolution: "@auth0/auth0-spa-js@npm:1.22.6" + dependencies: + abortcontroller-polyfill: ^1.7.3 + browser-tabs-lock: ^1.2.15 + core-js: ^3.25.4 + es-cookie: ~1.3.2 + fast-text-encoding: ^1.0.6 + promise-polyfill: ^8.2.3 + unfetch: ^4.2.0 + checksum: 0155025b82898bd0533db373d7c8b85938fbae097c6fdf732a315ddee67d84a32c32a3b944465aec0600adb11d6d32e53eabbfc2ea04e6b5c90f92f72607bc30 languageName: node linkType: hard @@ -37,21 +52,14 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/compat-data@npm:7.21.4" - checksum: 5f8b98c66f2ffba9f3c3a82c0cf354c52a0ec5ad4797b370dc32bdcd6e136ac4febe5e93d76ce76e175632e2dbf6ce9f46319aa689fcfafa41b6e49834fa4b66 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.21.5": +"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.21.5": version: 7.21.7 resolution: "@babel/compat-data@npm:7.21.7" checksum: 28747eb3fc084d088ba2db0336f52118cfa730a57bdbac81630cae1f38ad0336605b95b3390325937802f344e0b7fa25e2f1b67e3ee2d7383b877f88dee0e51c languageName: node linkType: hard -"@babel/core@npm:7.21.8": +"@babel/core@npm:7.21.8, @babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": version: 7.21.8 resolution: "@babel/core@npm:7.21.8" dependencies: @@ -74,29 +82,6 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": - version: 7.21.4 - resolution: "@babel/core@npm:7.21.4" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.4 - "@babel/helper-compilation-targets": ^7.21.4 - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helpers": ^7.21.0 - "@babel/parser": ^7.21.4 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.4 - "@babel/types": ^7.21.4 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.2 - semver: ^6.3.0 - checksum: a3beebb2cc79908a02f27a07dc381bcb34e8ecc58fa99f568ad0934c49e12111fc977ee9c5b51eb7ea2da66f63155d37c4dd96b6472eaeecfc35843ccb56bf3d - languageName: node - linkType: hard - "@babel/eslint-parser@npm:7.21.8": version: 7.21.8 resolution: "@babel/eslint-parser@npm:7.21.8" @@ -111,19 +96,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.21.4, @babel/generator@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/generator@npm:7.21.4" - dependencies: - "@babel/types": ^7.21.4 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 9ffbb526a53bb8469b5402f7b5feac93809b09b2a9f82fcbfcdc5916268a65dae746a1f2479e03ba4fb0776facd7c892191f63baa61ab69b2cfdb24f7b92424d - languageName: node - linkType: hard - -"@babel/generator@npm:^7.21.5": +"@babel/generator@npm:^7.21.5, @babel/generator@npm:^7.7.2": version: 7.21.5 resolution: "@babel/generator@npm:7.21.5" dependencies: @@ -145,31 +118,15 @@ __metadata: linkType: hard "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.6" - dependencies: - "@babel/helper-explode-assignable-expression": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: c4d71356e0adbc20ce9fe7c1e1181ff65a78603f8bba7615745f0417fed86bad7dc0a54a840bc83667c66709b3cb3721edcb9be0d393a298ce4e9eb6d085f3c1 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/helper-compilation-targets@npm:7.21.4" + version: 7.21.5 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.21.5" dependencies: - "@babel/compat-data": ^7.21.4 - "@babel/helper-validator-option": ^7.21.0 - browserslist: ^4.21.3 - lru-cache: ^5.1.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: bf9c7d3e7e6adff9222c05d898724cd4ee91d7eb9d52222c7ad2a22955620c2872cc2d9bdf0e047df8efdb79f4e3af2a06b53f509286145feccc4d10ddc318be + "@babel/types": ^7.21.5 + checksum: 9a033d3d7a6409256272ea6fc03731511af9f936ee0b161ace05d171d7bd5adf455dc85f80437d92277462f6bd2af9af1f2d1967edc21ca4d5966ac0a09cf61d languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.21.5": +"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-compilation-targets@npm:7.21.5" dependencies: @@ -185,32 +142,34 @@ __metadata: linkType: hard "@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-create-class-features-plugin@npm:7.21.0" + version: 7.21.8 + resolution: "@babel/helper-create-class-features-plugin@npm:7.21.8" dependencies: "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-environment-visitor": ^7.21.5 "@babel/helper-function-name": ^7.21.0 - "@babel/helper-member-expression-to-functions": ^7.21.0 + "@babel/helper-member-expression-to-functions": ^7.21.5 "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.20.7 + "@babel/helper-replace-supers": ^7.21.5 "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 "@babel/helper-split-export-declaration": ^7.18.6 + semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 3e781d91d1056ea9b3a0395f3017492594a8b86899119b4a1645227c31727b8bec9bc8f6b72e86b1c5cf2dd6690893d2e8c5baff4974c429e616ead089552a21 + checksum: 26b978bd2e741259c0f4a1cc37521ad58728c50d28fe2fc8041d4381497e13a0b686a10e170246855eaf3af08886862e9d93fc27994ef914e13fca0d73efdcb8 languageName: node linkType: hard "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.20.5": - version: 7.21.4 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.21.4" + version: 7.21.8 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.21.8" dependencies: "@babel/helper-annotate-as-pure": ^7.18.6 regexpu-core: ^5.3.1 + semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 78334865db2cd1d64d103bd0d96dee2818b0387d10aa973c084e245e829df32652bca530803e397b7158af4c02b9b21d5a9601c29bdfbb8d54a3d4ad894e067b + checksum: 04a686b5897c86339395894c0a9a1ffdce2facaba5173ce7b0a894f775f984ba70d2fa227d309f2be54f7f1286ebd1a0a7051a8b1829521595e4064ee062af65 languageName: node linkType: hard @@ -230,30 +189,14 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.21.5": +"@babel/helper-environment-visitor@npm:^7.18.9, @babel/helper-environment-visitor@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-environment-visitor@npm:7.21.5" checksum: e436af7b62956e919066448013a3f7e2cd0b51010c26c50f790124dcd350be81d5597b4e6ed0a4a42d098a27de1e38561cd7998a116a42e7899161192deac9a6 languageName: node linkType: hard -"@babel/helper-explode-assignable-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 225cfcc3376a8799023d15dc95000609e9d4e7547b29528c7f7111a0e05493ffb12c15d70d379a0bb32d42752f340233c4115bded6d299bc0c3ab7a12be3d30f - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.21.0": +"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0, @babel/helper-function-name@npm:^7.21.0": version: 7.21.0 resolution: "@babel/helper-function-name@npm:7.21.0" dependencies: @@ -272,25 +215,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.20.7, @babel/helper-member-expression-to-functions@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.21.0" - dependencies: - "@babel/types": ^7.21.0 - checksum: 49cbb865098195fe82ba22da3a8fe630cde30dcd8ebf8ad5f9a24a2b685150c6711419879cf9d99b94dad24cff9244d8c2a890d3d7ec75502cd01fe58cff5b5d - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-imports@npm:7.18.6" +"@babel/helper-member-expression-to-functions@npm:^7.21.5": + version: 7.21.5 + resolution: "@babel/helper-member-expression-to-functions@npm:7.21.5" dependencies: - "@babel/types": ^7.18.6 - checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def + "@babel/types": ^7.21.5 + checksum: c404b4a0271c640b7dc8c34af7b683c70a43200259e02330cfc02e79e6b271e9227f35554cd6ad015eabcfa1fea75b9d0b87b69f3d1e6c2af6edd224060b1732 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.21.4": +"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.21.4": version: 7.21.4 resolution: "@babel/helper-module-imports@npm:7.21.4" dependencies: @@ -299,23 +233,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/helper-module-transforms@npm:7.21.2" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.20.2 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.2 - "@babel/types": ^7.21.2 - checksum: 8a1c129a4f90bdf97d8b6e7861732c9580f48f877aaaafbc376ce2482febebcb8daaa1de8bc91676d12886487603f8c62a44f9e90ee76d6cac7f9225b26a49e1 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.21.5": +"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-module-transforms@npm:7.21.5" dependencies: @@ -340,14 +258,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.20.2 - resolution: "@babel/helper-plugin-utils@npm:7.20.2" - checksum: f6cae53b7fdb1bf3abd50fa61b10b4470985b400cc794d92635da1e7077bb19729f626adc0741b69403d9b6e411cddddb9c0157a709cc7c4eeb41e663be5d74b - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.21.5": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.21.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.21.5 resolution: "@babel/helper-plugin-utils@npm:7.21.5" checksum: 6f086e9a84a50ea7df0d5639c8f9f68505af510ea3258b3c8ac8b175efdfb7f664436cb48996f71791a1350ba68f47ad3424131e8e718c5e2ad45564484cbb36 @@ -368,26 +279,17 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-replace-supers@npm:7.20.7" +"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7, @babel/helper-replace-supers@npm:^7.21.5": + version: 7.21.5 + resolution: "@babel/helper-replace-supers@npm:7.21.5" dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.20.7 + "@babel/helper-environment-visitor": ^7.21.5 + "@babel/helper-member-expression-to-functions": ^7.21.5 "@babel/helper-optimise-call-expression": ^7.18.6 "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: b8e0087c9b0c1446e3c6f3f72b73b7e03559c6b570e2cfbe62c738676d9ebd8c369a708cf1a564ef88113b4330750a50232ee1131d303d478b7a5e65e46fbc7c - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-simple-access@npm:7.20.2" - dependencies: - "@babel/types": ^7.20.2 - checksum: ad1e96ee2e5f654ffee2369a586e5e8d2722bf2d8b028a121b4c33ebae47253f64d420157b9f0a8927aea3a9e0f18c0103e74fdd531815cf3650a0a4adca11a1 + "@babel/traverse": ^7.21.5 + "@babel/types": ^7.21.5 + checksum: 4fd343e6f90533743d8e8a1f42e50377b3d6b27f524a27eb97ff28f075e4e55cca2383adb1b0973de358b08022aef0fec4c8d69711e1da43bf9b887b5a893677 languageName: node linkType: hard @@ -418,13 +320,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 - languageName: node - linkType: hard - "@babel/helper-string-parser@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-string-parser@npm:7.21.5" @@ -447,25 +342,14 @@ __metadata: linkType: hard "@babel/helper-wrap-function@npm:^7.18.9": - version: 7.18.11 - resolution: "@babel/helper-wrap-function@npm:7.18.11" + version: 7.20.5 + resolution: "@babel/helper-wrap-function@npm:7.20.5" dependencies: - "@babel/helper-function-name": ^7.18.9 + "@babel/helper-function-name": ^7.19.0 "@babel/template": ^7.18.10 - "@babel/traverse": ^7.18.11 - "@babel/types": ^7.18.10 - checksum: e2fb909cdeb5c8688513261202cdeab7c6a8ac1f30daa5a1e0111631f270c26118c2e6b27014fc9f5d2c0ee1182fc40a3db2d30e45425587067f49dcae737dc9 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helpers@npm:7.21.0" - dependencies: - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.0 - "@babel/types": ^7.21.0 - checksum: 9370dad2bb665c551869a08ac87c8bdafad53dbcdce1f5c5d498f51811456a3c005d9857562715151a0f00b2e912ac8d89f56574f837b5689f5f5072221cdf54 + "@babel/traverse": ^7.20.5 + "@babel/types": ^7.20.5 + checksum: 11a6fc28334368a193a9cb3ad16f29cd7603bab958433efc82ebe59fa6556c227faa24f07ce43983f7a85df826f71d441638442c4315e90a554fe0a70ca5005b languageName: node linkType: hard @@ -491,25 +375,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.9.4": - version: 7.21.4 - resolution: "@babel/parser@npm:7.21.4" - bin: - parser: ./bin/babel-parser.js - checksum: de610ecd1bff331766d0c058023ca11a4f242bfafefc42caf926becccfb6756637d167c001987ca830dd4b34b93c629a4cef63f8c8c864a8564cdfde1989ac77 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/parser@npm:7.21.5" - bin: - parser: ./bin/babel-parser.js - checksum: c7ec0dae795f2a43885fdd5c1c53c7f11b3428628ae82ebe1e1537cb3d13e25e7993549e026662a3e05dcc743b595f82b25f0a49ef9155459a9a424eedb7e2b0 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.21.8": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.5, @babel/parser@npm:^7.21.8, @babel/parser@npm:^7.9.4": version: 7.21.8 resolution: "@babel/parser@npm:7.21.8" bin: @@ -856,7 +722,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.18.6, @babel/plugin-syntax-jsx@npm:^7.21.4, @babel/plugin-syntax-jsx@npm:^7.7.2": +"@babel/plugin-syntax-jsx@npm:^7.21.4, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.21.4 resolution: "@babel/plugin-syntax-jsx@npm:7.21.4" dependencies: @@ -956,24 +822,13 @@ __metadata: linkType: hard "@babel/plugin-syntax-typescript@npm:^7.20.0, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.20.0 - resolution: "@babel/plugin-syntax-typescript@npm:7.20.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6189c0b5c32ba3c9a80a42338bd50719d783b20ef29b853d4f03929e971913d3cefd80184e924ae98ad6db09080be8fe6f1ffde9a6db8972523234f0274d36f7 - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.20.7" + version: 7.21.4 + resolution: "@babel/plugin-syntax-typescript@npm:7.21.4" dependencies: "@babel/helper-plugin-utils": ^7.20.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b43cabe3790c2de7710abe32df9a30005eddb2050dadd5d122c6872f679e5710e410f1b90c8f99a2aff7b614cccfecf30e7fd310236686f60d3ed43fd80b9847 + checksum: a59ce2477b7ae8c8945dc37dda292fef9ce46a6507b3d76b03ce7f3a6c9451a6567438b20a78ebcb3955d04095fd1ccd767075a863f79fcc30aa34dcfa441fe0 languageName: node linkType: hard @@ -1042,18 +897,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/template": ^7.20.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: be70e54bda8b469146459f429e5f2bd415023b87b2d5af8b10e48f465ffb02847a3ed162ca60378c004b82db848e4d62e90010d41ded7e7176b6d8d1c2911139 - languageName: node - linkType: hard - "@babel/plugin-transform-computed-properties@npm:^7.21.5": version: 7.21.5 resolution: "@babel/plugin-transform-computed-properties@npm:7.21.5" @@ -1112,17 +955,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-for-of@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2f3f86ca1fab2929fcda6a87e4303d5c635b5f96dc9a45fd4ca083308a3020c79ac33b9543eb4640ef2b79f3586a00ab2d002a7081adb9e9d7440dce30781034 - languageName: node - linkType: hard - "@babel/plugin-transform-for-of@npm:^7.21.5": version: 7.21.5 resolution: "@babel/plugin-transform-for-of@npm:7.21.5" @@ -1181,19 +1013,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.2" - dependencies: - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-simple-access": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 65aa06e3e3792f39b99eb5f807034693ff0ecf80438580f7ae504f4c4448ef04147b1889ea5e6f60f3ad4a12ebbb57c6f1f979a249dadbd8d11fe22f4441918b - languageName: node - linkType: hard - "@babel/plugin-transform-modules-commonjs@npm:^7.21.5": version: 7.21.5 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.5" @@ -1313,17 +1132,17 @@ __metadata: linkType: hard "@babel/plugin-transform-react-jsx@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-jsx@npm:7.18.6" + version: 7.21.5 + resolution: "@babel/plugin-transform-react-jsx@npm:7.21.5" dependencies: "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-jsx": ^7.18.6 - "@babel/types": ^7.18.6 + "@babel/helper-module-imports": ^7.21.4 + "@babel/helper-plugin-utils": ^7.21.5 + "@babel/plugin-syntax-jsx": ^7.21.4 + "@babel/types": ^7.21.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 46129eaf1ab7a7a73e3e8c9d9859b630f5b381c5e19fb1559e2db7b943a7825b6715ad950623fb03fe7bd31ed618ce1d0bd539b13fa030a50c39d5a873a5ba00 + checksum: fe25e612d02a14ede13fa9c03a0c448ce06bc527fe9f71a82953ad4bb7f4c05c1978b2928cb1405c282dfc6d8ef85d9a658b7b970893921c1f99fd0d7e438c5f languageName: node linkType: hard @@ -1339,18 +1158,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.20.5" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - regenerator-transform: ^0.15.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 13164861e71fb23d84c6270ef5330b03c54d5d661c2c7468f28e21c4f8598558ca0c8c3cb1d996219352946e849d270a61372bc93c8fbe9676e78e3ffd0dea07 - languageName: node - linkType: hard - "@babel/plugin-transform-regenerator@npm:^7.21.5": version: 7.21.5 resolution: "@babel/plugin-transform-regenerator@npm:7.21.5" @@ -1444,17 +1251,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f5baca55cb3c11bc08ec589f5f522d85c1ab509b4d11492437e45027d64ae0b22f0907bd1381e8d7f2a436384bb1f9ad89d19277314242c5c2671a0f91d0f9cd - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-escapes@npm:^7.21.5": version: 7.21.5 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.21.5" @@ -1478,7 +1274,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:7.21.5": +"@babel/preset-env@npm:7.21.5, @babel/preset-env@npm:^7.11.0": version: 7.21.5 resolution: "@babel/preset-env@npm:7.21.5" dependencies: @@ -1564,91 +1360,6 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.11.0": - version: 7.21.4 - resolution: "@babel/preset-env@npm:7.21.4" - dependencies: - "@babel/compat-data": ^7.21.4 - "@babel/helper-compilation-targets": ^7.21.4 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.20.7 - "@babel/plugin-proposal-async-generator-functions": ^7.20.7 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-class-static-block": ^7.21.0 - "@babel/plugin-proposal-dynamic-import": ^7.18.6 - "@babel/plugin-proposal-export-namespace-from": ^7.18.9 - "@babel/plugin-proposal-json-strings": ^7.18.6 - "@babel/plugin-proposal-logical-assignment-operators": ^7.20.7 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 - "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.20.7 - "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.21.0 - "@babel/plugin-proposal-private-methods": ^7.18.6 - "@babel/plugin-proposal-private-property-in-object": ^7.21.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - "@babel/plugin-syntax-import-assertions": ^7.20.0 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.20.7 - "@babel/plugin-transform-async-to-generator": ^7.20.7 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.21.0 - "@babel/plugin-transform-classes": ^7.21.0 - "@babel/plugin-transform-computed-properties": ^7.20.7 - "@babel/plugin-transform-destructuring": ^7.21.3 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.9 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-for-of": ^7.21.0 - "@babel/plugin-transform-function-name": ^7.18.9 - "@babel/plugin-transform-literals": ^7.18.9 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.20.11 - "@babel/plugin-transform-modules-commonjs": ^7.21.2 - "@babel/plugin-transform-modules-systemjs": ^7.20.11 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.20.5 - "@babel/plugin-transform-new-target": ^7.18.6 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-parameters": ^7.21.3 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.20.5 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.20.7 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.9 - "@babel/plugin-transform-typeof-symbol": ^7.18.9 - "@babel/plugin-transform-unicode-escapes": ^7.18.10 - "@babel/plugin-transform-unicode-regex": ^7.18.6 - "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.21.4 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - core-js-compat: ^3.25.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1e328674c4b39e985fa81e5a8eee9aaab353dea4ff1f28f454c5e27a6498c762e25d42e827f5bfc9d7acf6c9b8bc317b5283aa7c83d9fd03c1a89e5c08f334f9 - languageName: node - linkType: hard - "@babel/preset-modules@npm:^0.1.5": version: 0.1.5 resolution: "@babel/preset-modules@npm:0.1.5" @@ -1702,54 +1413,27 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.20.7 - resolution: "@babel/runtime@npm:7.20.7" - dependencies: - regenerator-runtime: ^0.13.11 - checksum: 4629ce5c46f06cca9cfb9b7fc00d48003335a809888e2b91ec2069a2dcfbfef738480cff32ba81e0b7c290f8918e5c22ddcf2b710001464ee84ba62c7e32a3a3 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.21.0": +"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.21.5 resolution: "@babel/runtime@npm:7.21.5" dependencies: regenerator-runtime: ^0.13.11 checksum: 358f2779d3187f5c67ad302e8f8d435412925d0b991d133c7d4a7b1ddd5a3fda1b6f34537cb64628dfd96a27ae46df105bed3895b8d754b88cacdded8d1129dd languageName: node - linkType: hard - -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.3.3, @babel/template@npm:^7.4.4": - version: 7.20.7 - resolution: "@babel/template@npm:7.20.7" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.18.11, @babel/traverse@npm:^7.20.7, @babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2, @babel/traverse@npm:^7.21.4, @babel/traverse@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/traverse@npm:7.21.4" - dependencies: - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.4 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.21.4 - "@babel/types": ^7.21.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: f22f067c2d9b6497abf3d4e53ea71f3aa82a21f2ed434dd69b8c5767f11f2a4c24c8d2f517d2312c9e5248e5c69395fdca1c95a2b3286122c75f5783ddb6f53c + linkType: hard + +"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.3.3, @babel/template@npm:^7.4.4": + version: 7.20.7 + resolution: "@babel/template@npm:7.20.7" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e languageName: node linkType: hard -"@babel/traverse@npm:^7.21.5": +"@babel/traverse@npm:^7.20.5, @babel/traverse@npm:^7.21.5, @babel/traverse@npm:^7.7.2": version: 7.21.5 resolution: "@babel/traverse@npm:7.21.5" dependencies: @@ -1767,18 +1451,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.21.4, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.21.4 - resolution: "@babel/types@npm:7.21.4" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: 587bc55a91ce003b0f8aa10d70070f8006560d7dc0360dc0406d306a2cb2a10154e2f9080b9c37abec76907a90b330a536406cb75e6bdc905484f37b75c73219 - languageName: node - linkType: hard - -"@babel/types@npm:^7.21.5": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.5, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.4, @babel/types@npm:^7.21.5, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.21.5 resolution: "@babel/types@npm:7.21.5" dependencies: @@ -1893,16 +1566,16 @@ __metadata: linkType: hard "@cspell/dict-companies@npm:^3.0.9": - version: 3.0.9 - resolution: "@cspell/dict-companies@npm:3.0.9" - checksum: 9f6446707072002ec653b42d2a1c06f82a8d21445ed7e2953a6f9cded1d02f5f58735c387b1bcadead88825c4edce3daccdbf7136f5d6e2d79f02580ef5f55a4 + version: 3.0.10 + resolution: "@cspell/dict-companies@npm:3.0.10" + checksum: 7ed4f82a0495698e8307929dbd5218d63c59ba4a1199a9aecb019e0ecca920b14516309efb0c220c774cebbcbdb44aafe94cd37438ee03756d9d6807c91cc788 languageName: node linkType: hard "@cspell/dict-cpp@npm:^5.0.2": - version: 5.0.2 - resolution: "@cspell/dict-cpp@npm:5.0.2" - checksum: 6483cea117b1a8313c67d6be5211c490347f36a926d9b2c402740ddd2c15a395e9ba5bd09d038fe9355dd58eafb2f48d0d74658a86accb2ad1d177e0ccc326ab + version: 5.0.3 + resolution: "@cspell/dict-cpp@npm:5.0.3" + checksum: 2b5fc8b4c608386dd3a3507912dc1911b81f1ec96ee58b5365714b774cce560f861790419a600acd1d27efc6b69064c3fd656d74b20b5f2df6a13749fbfbb7d0 languageName: node linkType: hard @@ -1921,9 +1594,9 @@ __metadata: linkType: hard "@cspell/dict-css@npm:^4.0.5": - version: 4.0.5 - resolution: "@cspell/dict-css@npm:4.0.5" - checksum: f5fbe4e71ae7739ee7999c601befafb6e9b9313efa6d2b129fd8ba5ebfd2bf6137163439dd12fb5d540ac5ca5ae78af3ece43d51fb49027ace9a63d425771deb + version: 4.0.6 + resolution: "@cspell/dict-css@npm:4.0.6" + checksum: fc816014e4dfd78d4a00cd311c8f96657d899e10767766cdcdfbaf61beac8dd4d23e903dc40b679f31da7df03e7d4eb593a81810c50eeddbbb190b0d605160f0 languageName: node linkType: hard @@ -1956,9 +1629,9 @@ __metadata: linkType: hard "@cspell/dict-elixir@npm:^4.0.2": - version: 4.0.2 - resolution: "@cspell/dict-elixir@npm:4.0.2" - checksum: 0d80b2c9f7a05f38df6de7a574641149fa782e9f2c61a91a715293b1a04c81fdaf378c1d5643f14ecacaa3f3d927589a3c3e6b282b3cf3c860d56a907e0c1a8b + version: 4.0.3 + resolution: "@cspell/dict-elixir@npm:4.0.3" + checksum: f084449b2de5a2fa08076ac699c6073beaa4bb43796a662d681ea8fe5cba31f9efe718f3f98ef432ba75d4ea574316de34ab8422f79f4f2022cfddee7a7b8653 languageName: node linkType: hard @@ -1991,9 +1664,9 @@ __metadata: linkType: hard "@cspell/dict-fonts@npm:^3.0.1": - version: 3.0.1 - resolution: "@cspell/dict-fonts@npm:3.0.1" - checksum: 15110749c6e245df707efab30e16ecdcc1f0676a9fc720f9070b88df056a01114ce2350d862a4421ce06d1a739652aee4e687b8c798a7170f0f9cfdca49bfb0f + version: 3.0.2 + resolution: "@cspell/dict-fonts@npm:3.0.2" + checksum: 1a427df01a4eeb95ffea8e0809cbcfcf76bae2dc857d574f3810e704d41c8614afb547d4264123102ad09b56129dd63c57a7cc9e7a9dc8b6b52e40841b5a9c15 languageName: node linkType: hard @@ -2117,9 +1790,9 @@ __metadata: linkType: hard "@cspell/dict-python@npm:^4.0.2": - version: 4.0.2 - resolution: "@cspell/dict-python@npm:4.0.2" - checksum: 23825b92af39a9b43a6af3862babbeaf01a5718ffe621e9f487400dc62582e5bd840213af22f1b2f4a78ba8e8b24dbb4cd7de9c190aa2cfea2bff7c15338ae7a + version: 4.0.4 + resolution: "@cspell/dict-python@npm:4.0.4" + checksum: 7b1185e1be8e2ef791af7ae03573763ecb5ed50a33fd9fbffdb034ef6889f68fdf4281100b04c19bef9f6e0b9a56a23978dffb94766a5cc842bd6bdebae927ed languageName: node linkType: hard @@ -2152,9 +1825,9 @@ __metadata: linkType: hard "@cspell/dict-software-terms@npm:^3.1.6": - version: 3.1.6 - resolution: "@cspell/dict-software-terms@npm:3.1.6" - checksum: 76b5d33dc830effa229096050964ccbf652cf83a2b648fa313b77a0ee80a8a1979382a07e72e5bed9c8aaadecbb59103a6b578fe10e8892dc53081cffbab3d85 + version: 3.1.8 + resolution: "@cspell/dict-software-terms@npm:3.1.8" + checksum: b03cb0d6097123e39951ec625aaef75c548317bb8c9aa95b8bab05df8aa9c699a904e19d507baee0c6c6d6d031987a65f9d93c3b00e1c9eb0f82ac7db063b560 languageName: node linkType: hard @@ -2550,12 +2223,11 @@ __metadata: linkType: hard "@csstools/selector-specificity@npm:^2.0.0, @csstools/selector-specificity@npm:^2.0.1, @csstools/selector-specificity@npm:^2.0.2": - version: 2.1.1 - resolution: "@csstools/selector-specificity@npm:2.1.1" + version: 2.2.0 + resolution: "@csstools/selector-specificity@npm:2.2.0" peerDependencies: - postcss: ^8.4 postcss-selector-parser: ^6.0.10 - checksum: 392ab62732e93aa8cbea445bf3485c1acbbecc8ec087b200e06c9ddd2acf740fd1fe46abdacf813e7a50a95a60346377ee3eecb4e1fe3709582e2851430b376a + checksum: 97c89f23b3b527d7bd51ed299969ed2b9fbb219a367948b44aefec228b8eda6ae0ad74fe8a82f9aac8ff32cfd00bb6d0c98d1daeab2e8fc6d5c4af25e5be5673 languageName: node linkType: hard @@ -2605,28 +2277,9 @@ __metadata: linkType: hard "@discoveryjs/json-ext@npm:^0.5.0": - version: 0.5.2 - resolution: "@discoveryjs/json-ext@npm:0.5.2" - checksum: cf7ce79a6e25944b6618f3336a4f69191ce9019ee08e47129c4933f03f66aa625c0e7d55075f890cdfc9a7f9b3f6c5465a1e51bd3e7a73aec803753d7d0cec91 - languageName: node - linkType: hard - -"@emotion/babel-plugin@npm:^11.10.6": - version: 11.10.6 - resolution: "@emotion/babel-plugin@npm:11.10.6" - dependencies: - "@babel/helper-module-imports": ^7.16.7 - "@babel/runtime": ^7.18.3 - "@emotion/hash": ^0.9.0 - "@emotion/memoize": ^0.8.0 - "@emotion/serialize": ^1.1.1 - babel-plugin-macros: ^3.1.0 - convert-source-map: ^1.5.0 - escape-string-regexp: ^4.0.0 - find-root: ^1.1.0 - source-map: ^0.5.7 - stylis: 4.1.3 - checksum: 3eed138932e8edf2598352e69ad949b9db3051a4d6fcff190dacbac9aa838d7ef708b9f3e6c48660625d9311dae82d73477ae4e7a31139feef5eb001a5528421 + version: 0.5.7 + resolution: "@discoveryjs/json-ext@npm:0.5.7" + checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 languageName: node linkType: hard @@ -2649,20 +2302,7 @@ __metadata: languageName: node linkType: hard -"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.4.0": - version: 11.10.5 - resolution: "@emotion/cache@npm:11.10.5" - dependencies: - "@emotion/memoize": ^0.8.0 - "@emotion/sheet": ^1.2.1 - "@emotion/utils": ^1.2.0 - "@emotion/weak-memoize": ^0.3.0 - stylis: 4.1.3 - checksum: 1dd2d9af2d3ecbd3d4469ecdf91a335eef6034c851b57a474471b2d2280613eb35bbed98c0368cc4625f188619fbdaf04cf07e8107aaffce94b2178444c0fe7b - languageName: node - linkType: hard - -"@emotion/cache@npm:^11.11.0": +"@emotion/cache@npm:^11.11.0, @emotion/cache@npm:^11.4.0": version: 11.11.0 resolution: "@emotion/cache@npm:11.11.0" dependencies: @@ -2684,13 +2324,6 @@ __metadata: languageName: node linkType: hard -"@emotion/hash@npm:^0.9.0": - version: 0.9.0 - resolution: "@emotion/hash@npm:0.9.0" - checksum: b63428f7c8186607acdca5d003700cecf0ded519d0b5c5cc3b3154eafcad6ff433f8361bd2bac8882715b557e6f06945694aeb6ba8b25c6095d7a88570e2e0bb - languageName: node - linkType: hard - "@emotion/hash@npm:^0.9.1": version: 0.9.1 resolution: "@emotion/hash@npm:0.9.1" @@ -2698,13 +2331,6 @@ __metadata: languageName: node linkType: hard -"@emotion/memoize@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/memoize@npm:0.8.0" - checksum: c87bb110b829edd8e1c13b90a6bc37cebc39af29c7599a1e66a48e06f9bec43e8e53495ba86278cc52e7589549492c8dfdc81d19f4fdec0cee6ba13d2ad2c928 - languageName: node - linkType: hard - "@emotion/memoize@npm:^0.8.1": version: 0.8.1 resolution: "@emotion/memoize@npm:0.8.1" @@ -2712,7 +2338,7 @@ __metadata: languageName: node linkType: hard -"@emotion/react@npm:11.11.0": +"@emotion/react@npm:11.11.0, @emotion/react@npm:^11.8.1": version: 11.11.0 resolution: "@emotion/react@npm:11.11.0" dependencies: @@ -2733,40 +2359,6 @@ __metadata: languageName: node linkType: hard -"@emotion/react@npm:^11.8.1": - version: 11.10.6 - resolution: "@emotion/react@npm:11.10.6" - dependencies: - "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.10.6 - "@emotion/cache": ^11.10.5 - "@emotion/serialize": ^1.1.1 - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@emotion/utils": ^1.2.0 - "@emotion/weak-memoize": ^0.3.0 - hoist-non-react-statics: ^3.3.1 - peerDependencies: - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 4762042e39126ffaffe76052dc65c9bb0ba6b8893013687ba3cc13ed4dd834c31597f1230684c3c078e90aecc13ab6cd0e3cde0dec8b7761affd2571f4d80019 - languageName: node - linkType: hard - -"@emotion/serialize@npm:^1.1.1": - version: 1.1.1 - resolution: "@emotion/serialize@npm:1.1.1" - dependencies: - "@emotion/hash": ^0.9.0 - "@emotion/memoize": ^0.8.0 - "@emotion/unitless": ^0.8.0 - "@emotion/utils": ^1.2.0 - csstype: ^3.0.2 - checksum: 24cfd5b16e6f2335c032ca33804a876e0442aaf8f9c94d269d23735ebd194fb1ed142542dd92191a3e6ef8bad5bd560dfc5aaf363a1b70954726dbd4dd93085c - languageName: node - linkType: hard - "@emotion/serialize@npm:^1.1.2": version: 1.1.2 resolution: "@emotion/serialize@npm:1.1.2" @@ -2780,13 +2372,6 @@ __metadata: languageName: node linkType: hard -"@emotion/sheet@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/sheet@npm:1.2.1" - checksum: ce78763588ea522438156344d9f592203e2da582d8d67b32e1b0b98eaba26994c6c270f8c7ad46442fc9c0a9f048685d819cd73ca87e544520fd06f0e24a1562 - languageName: node - linkType: hard - "@emotion/sheet@npm:^1.2.2": version: 1.2.2 resolution: "@emotion/sheet@npm:1.2.2" @@ -2794,13 +2379,6 @@ __metadata: languageName: node linkType: hard -"@emotion/unitless@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/unitless@npm:0.8.0" - checksum: 176141117ed23c0eb6e53a054a69c63e17ae532ec4210907a20b2208f91771821835f1c63dd2ec63e30e22fcc984026d7f933773ee6526dd038e0850919fae7a - languageName: node - linkType: hard - "@emotion/unitless@npm:^0.8.1": version: 0.8.1 resolution: "@emotion/unitless@npm:0.8.1" @@ -2808,15 +2386,6 @@ __metadata: languageName: node linkType: hard -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": - version: 1.0.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0" - peerDependencies: - react: ">=16.8.0" - checksum: 4f06a3b48258c832aa8022a262572061a31ff078d377e9164cccc99951309d70f4466e774fe704461b2f8715007a82ed625a54a5c7a127c89017d3ce3187d4f1 - languageName: node - linkType: hard - "@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1": version: 1.0.1 resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" @@ -2826,13 +2395,6 @@ __metadata: languageName: node linkType: hard -"@emotion/utils@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/utils@npm:1.2.0" - checksum: 55457a49ddd4db6a014ea0454dc09eaa23eedfb837095c8ff90470cb26a303f7ceb5fcc1e2190ef64683e64cfd33d3ba3ca3109cd87d12bc9e379e4195c9a4dd - languageName: node - linkType: hard - "@emotion/utils@npm:^1.2.1": version: 1.2.1 resolution: "@emotion/utils@npm:1.2.1" @@ -2840,13 +2402,6 @@ __metadata: languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.3.0": - version: 0.3.0 - resolution: "@emotion/weak-memoize@npm:0.3.0" - checksum: f43ef4c8b7de70d9fa5eb3105921724651e4188e895beb71f0c5919dc899a7b8743e1fdd99d38b9092dd5722c7be2312ebb47fbdad0c4e38bea58f6df5885cc0 - languageName: node - linkType: hard - "@emotion/weak-memoize@npm:^0.3.1": version: 0.3.1 resolution: "@emotion/weak-memoize@npm:0.3.1" @@ -2866,20 +2421,20 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0": - version: 4.3.0 - resolution: "@eslint-community/eslint-utils@npm:4.3.0" + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" dependencies: eslint-visitor-keys: ^3.3.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: f487760a692f0f1fef76e248ad72976919576ba57edc2b1b1dc1d182553bae6b5bf7b078e654da85d04f0af8a485d20bd26280002768f4fbcd2e330078340cb0 + checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/regexpp@npm:4.4.0" - checksum: 2d127af0c752b80e8a782eacfe996a86925d21de92da3ffc6f9e615e701145e44a62e26bdd88bfac2cd76779c39ba8d9875a91046ec5e7e5f23cb647c247ea6a + version: 4.5.1 + resolution: "@eslint-community/regexpp@npm:4.5.1" + checksum: 6d901166d64998d591fab4db1c2f872981ccd5f6fe066a1ad0a93d4e11855ecae6bfb76660869a469563e8882d4307228cebd41142adb409d182f2966771e57e languageName: node linkType: hard @@ -2914,19 +2469,19 @@ __metadata: languageName: node linkType: hard -"@floating-ui/core@npm:^1.0.1": - version: 1.0.1 - resolution: "@floating-ui/core@npm:1.0.1" - checksum: c8a5f1a491788e5bebfe747e9372df2c7cbee0d8790ddf95e25149ac91ccf1a2cca8f768029826cfd3d687617c1d0f3241b97f1648bdf2a28d421f39e79c2eee +"@floating-ui/core@npm:^1.2.6": + version: 1.2.6 + resolution: "@floating-ui/core@npm:1.2.6" + checksum: e4aa96c435277f1720d4bc939e17a79b1e1eebd589c20b622d3c646a5273590ff889b8c6e126f7be61873cf8c4d7db7d418895986ea19b8b0d0530de32504c3a languageName: node linkType: hard "@floating-ui/dom@npm:^1.0.1": - version: 1.0.3 - resolution: "@floating-ui/dom@npm:1.0.3" + version: 1.2.7 + resolution: "@floating-ui/dom@npm:1.2.7" dependencies: - "@floating-ui/core": ^1.0.1 - checksum: b5e275a8423b1c704b34db3cb12882d9d6e51ca4a789a0adad06b80c86003e1608cefd4e254836a31a985ea6f9458f9633967c7d54416c3dbdc8c75ce8d5b427 + "@floating-ui/core": ^1.2.6 + checksum: f330228b909ecf241fea1db780a97c842acaea74d2a5ce99456040f9932a80d12c6a77e1c7d56a2700fe6bc85f961f76a7f3bd2640c3a5b2bc497ccc65074519 languageName: node linkType: hard @@ -3081,9 +2636,9 @@ __metadata: linkType: hard "@istanbuljs/schema@npm:^0.1.2": - version: 0.1.2 - resolution: "@istanbuljs/schema@npm:0.1.2" - checksum: 5ce9facf2f0e3f4a93e56853cdfd78456e22d2c210c677530046e9c634ddc323dd62423ac711cd3554b5be06052c87fb8e0c266aa9010726940654c357290e78 + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 languageName: node linkType: hard @@ -3709,35 +3264,32 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" - dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc - languageName: node - linkType: hard - "@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" + version: 0.3.3 + resolution: "@jridgewell/gen-mapping@npm:0.3.3" dependencies: "@jridgewell/set-array": ^1.0.1 "@jridgewell/sourcemap-codec": ^1.4.10 "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 + checksum: 4a74944bd31f22354fc01c3da32e83c19e519e3bbadafa114f6da4522ea77dd0c2842607e923a591d60a76699d819a2fbb6f3552e277efdb9b58b081390b60ab languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": +"@jridgewell/resolve-uri@npm:3.1.0": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": +"@jridgewell/resolve-uri@npm:^3.0.3": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e @@ -3745,22 +3297,29 @@ __metadata: linkType: hard "@jridgewell/source-map@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/source-map@npm:0.3.2" + version: 0.3.3 + resolution: "@jridgewell/source-map@npm:0.3.3" dependencies: "@jridgewell/gen-mapping": ^0.3.0 "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482 + checksum: ae1302146339667da5cd6541260ecbef46ae06819a60f88da8f58b3e64682f787c09359933d050dea5d2173ea7fa40f40dd4d4e7a8d325c5892cccd99aaf8959 languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": +"@jridgewell/sourcemap-codec@npm:1.4.14": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.4.10": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -3772,12 +3331,12 @@ __metadata: linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" + version: 0.3.18 + resolution: "@jridgewell/trace-mapping@npm:0.3.18" dependencies: "@jridgewell/resolve-uri": 3.1.0 "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 + checksum: 0572669f855260808c16fe8f78f5f1b4356463b11d3f2c7c0b5580c8ba1cbf4ae53efe9f627595830856e57dbac2325ac17eb0c3dd0ec42102e6f227cc289c02 languageName: node linkType: hard @@ -3813,9 +3372,22 @@ __metadata: languageName: node linkType: hard +"@loadable/component@npm:^5.15.3": + version: 5.15.3 + resolution: "@loadable/component@npm:5.15.3" + dependencies: + "@babel/runtime": ^7.7.7 + hoist-non-react-statics: ^3.3.1 + react-is: ^16.12.0 + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + checksum: 78ac341465f2310db30381bc75e8bf73a33f99af849a6a2d87eb3842da0ba1df265e08045dc4f3fee1d194522a43a030baa91740045b64aad002f159ccce64bf + languageName: node + linkType: hard + "@mapbox/node-pre-gyp@npm:^1.0.8": - version: 1.0.9 - resolution: "@mapbox/node-pre-gyp@npm:1.0.9" + version: 1.0.10 + resolution: "@mapbox/node-pre-gyp@npm:1.0.10" dependencies: detect-libc: ^2.0.0 https-proxy-agent: ^5.0.0 @@ -3828,7 +3400,7 @@ __metadata: tar: ^6.1.11 bin: node-pre-gyp: bin/node-pre-gyp - checksum: 1b9c4c87a68d200daa13151d0fe033aa7aa8f7b26f3585255424dd8dfee2ec672c3e9bea4071c624469bc0aebbbcde08f8a300c8a958db52c50abadd5fb56920 + checksum: 1a98db05d955b74dad3814679593df293b9194853698f3f5f1ed00ecd93128cdd4b14fb8767fe44ac6981ef05c23effcfdc88710e7c1de99ccb6f647890597c8 languageName: node linkType: hard @@ -3889,16 +3461,16 @@ __metadata: linkType: hard "@pkgr/utils@npm:^2.3.1": - version: 2.3.1 - resolution: "@pkgr/utils@npm:2.3.1" + version: 2.4.0 + resolution: "@pkgr/utils@npm:2.4.0" dependencies: cross-spawn: ^7.0.3 + fast-glob: ^3.2.12 is-glob: ^4.0.3 - open: ^8.4.0 + open: ^9.1.0 picocolors: ^1.0.0 - tiny-glob: ^0.2.9 - tslib: ^2.4.0 - checksum: 118a1971120253740121a1db0a6658c21195b7da962acf9c124b507a3df707cfc97b0b84a16edcbd4352853b182e8337da9fc6e8e3d06c60d75ae4fb42321c75 + tslib: ^2.5.0 + checksum: 2ed93a92fd58d612c7a7d04f91ce50c967d2e2d5c4f63802f62a882fcb7d91208cf89640bb3baad10ef7d42bea1e196fba956e7e36a68e9f94d2738e8974a24a languageName: node linkType: hard @@ -3983,8 +3555,8 @@ __metadata: linkType: hard "@rollup/plugin-babel@npm:^5.2.0": - version: 5.2.2 - resolution: "@rollup/plugin-babel@npm:5.2.2" + version: 5.3.1 + resolution: "@rollup/plugin-babel@npm:5.3.1" dependencies: "@babel/helper-module-imports": ^7.10.4 "@rollup/pluginutils": ^3.1.0 @@ -3995,7 +3567,7 @@ __metadata: peerDependenciesMeta: "@types/babel__core": optional: true - checksum: 17eeed0c9b77329fc0e5484c01d265e2a58535b2e84b39504f7c228a958cd14edc724e4a7a36ed484c1db2e2c020115adc4c3d048e5c93f42b96f002aad3be9e + checksum: 220d71e4647330f252ef33d5f29700aef2e8284a0b61acfcceb47617a7f96208aa1ed16eae75619424bf08811ede5241e271a6d031f07026dee6b3a2bdcdc638 languageName: node linkType: hard @@ -4016,14 +3588,14 @@ __metadata: linkType: hard "@rollup/plugin-replace@npm:^2.4.1": - version: 2.4.1 - resolution: "@rollup/plugin-replace@npm:2.4.1" + version: 2.4.2 + resolution: "@rollup/plugin-replace@npm:2.4.2" dependencies: "@rollup/pluginutils": ^3.1.0 magic-string: ^0.25.7 peerDependencies: rollup: ^1.20.0 || ^2.0.0 - checksum: 5851c10e4bacc25c98b82a63d788b7cdaedb93b0fa58ee42fbf1c5625401b76662aa02d9ad5137f830a31ee68c337e512d68267ca426ef0333bb1d1625a8cf42 + checksum: b2f1618ee5526d288e2f8ae328dcb326e20e8dc8bd1f60d3e14d6708a5832e4aa44811f7d493f4aed2deeadca86e3b6b0503cd39bf50cfb4b595bb9da027fad0 languageName: node linkType: hard @@ -4041,9 +3613,9 @@ __metadata: linkType: hard "@sinclair/typebox@npm:^0.25.16": - version: 0.25.21 - resolution: "@sinclair/typebox@npm:0.25.21" - checksum: 763af1163fe4eabee9b914d4e4548a39fbba3287d2b3b1ff043c1da3c5a321e99d50a3ca94eb182988131e00b006a6f019799cde8da2f61e2f118b30b0276a00 + version: 0.25.24 + resolution: "@sinclair/typebox@npm:0.25.24" + checksum: 10219c58f40b8414c50b483b0550445e9710d4fe7b2c4dccb9b66533dd90ba8e024acc776026cebe81e87f06fa24b07fdd7bc30dd277eb9cc386ec50151a3026 languageName: node linkType: hard @@ -4086,9 +3658,9 @@ __metadata: linkType: hard "@sinonjs/text-encoding@npm:^0.7.1": - version: 0.7.1 - resolution: "@sinonjs/text-encoding@npm:0.7.1" - checksum: 130de0bb568c5f8a611ec21d1a4e3f80ab0c5ec333010f49cfc1adc5cba6d8808699c8a587a46b0f0b016a1f4c1389bc96141e773e8460fcbb441875b2e91ba7 + version: 0.7.2 + resolution: "@sinonjs/text-encoding@npm:0.7.2" + checksum: fe690002a32ba06906cf87e2e8fe84d1590294586f2a7fd180a65355b53660c155c3273d8011a5f2b77209b819aa7306678ae6e4aea0df014bd7ffd4bbbcf1ab languageName: node linkType: hard @@ -4156,30 +3728,30 @@ __metadata: linkType: hard "@tsconfig/node10@npm:^1.0.7": - version: 1.0.8 - resolution: "@tsconfig/node10@npm:1.0.8" - checksum: b8d5fffbc6b17ef64ef74f7fdbccee02a809a063ade785c3648dae59406bc207f70ea2c4296f92749b33019fa36a5ae716e42e49cc7f1bbf0fd147be0d6b970a + version: 1.0.9 + resolution: "@tsconfig/node10@npm:1.0.9" + checksum: a33ae4dc2a621c0678ac8ac4bceb8e512ae75dac65417a2ad9b022d9b5411e863c4c198b6ba9ef659e14b9fb609bbec680841a2e84c1172df7a5ffcf076539df languageName: node linkType: hard "@tsconfig/node12@npm:^1.0.7": - version: 1.0.9 - resolution: "@tsconfig/node12@npm:1.0.9" - checksum: a01b2400ab3582b86b589c6d31dcd0c0656f333adecde85d6d7d4086adb059808b82692380bb169546d189bf771ae21d02544a75b57bd6da4a5dd95f8567bec9 + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a languageName: node linkType: hard "@tsconfig/node14@npm:^1.0.0": - version: 1.0.1 - resolution: "@tsconfig/node14@npm:1.0.1" - checksum: 976345e896c0f059867f94f8d0f6ddb8b1844fb62bf36b727de8a9a68f024857e5db97ed51d3325e23e0616a5e48c034ff51a8d595b3fe7e955f3587540489be + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d languageName: node linkType: hard "@tsconfig/node16@npm:^1.0.2": - version: 1.0.2 - resolution: "@tsconfig/node16@npm:1.0.2" - checksum: ca94d3639714672bbfd55f03521d3f56bb6a25479bd425da81faf21f13e1e9d15f40f97377dedbbf477a5841c5b0c8f4cd1b391f33553d750b9202c54c2c07aa + version: 1.0.3 + resolution: "@tsconfig/node16@npm:1.0.3" + checksum: 3a8b657dd047495b7ad23437d6afd20297ce90380ff0bdee93fc7d39a900dbd8d9e26e53ff6b465e7967ce2adf0b218782590ce9013285121e6a5928fbd6819f languageName: node linkType: hard @@ -4200,43 +3772,43 @@ __metadata: linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.1.18 - resolution: "@types/babel__core@npm:7.1.18" + version: 7.20.0 + resolution: "@types/babel__core@npm:7.20.0" dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 2e5b5d7c84f347d3789575486e58b0df5c91613abc3d27e716274aba3048518e07e1f068250ba829e2ed58532ccc88da595ce95ba2688e7bbcd7c25a3c6627ed + checksum: 49b601a0a7637f1f387442c8156bd086cfd10ff4b82b0e1994e73a6396643b5435366fb33d6b604eade8467cca594ef97adcbc412aede90bb112ebe88d0ad6df languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.2 - resolution: "@types/babel__generator@npm:7.6.2" + version: 7.6.4 + resolution: "@types/babel__generator@npm:7.6.4" dependencies: "@babel/types": ^7.0.0 - checksum: b7764309e5f292c4a15fb587ba610e7fa290e1a2824efe16c0608abdb835de310147b4410f067bb25d817ba72bfc65c6aa0018933b02a774e744dbe51befeab6 + checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.0 - resolution: "@types/babel__template@npm:7.4.0" + version: 7.4.1 + resolution: "@types/babel__template@npm:7.4.1" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: 5262dc75e66fe0531b046d19f5c39d1b7e3419e340624229b52757cdedb295cb5658494b64eb234bd18cab7740c45c1d72ed2f16d1d189a765df2dc4efeed1af + checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.11.0 - resolution: "@types/babel__traverse@npm:7.11.0" + version: 7.18.5 + resolution: "@types/babel__traverse@npm:7.18.5" dependencies: "@babel/types": ^7.3.0 - checksum: 4e86b3d0ee9fe19bd7e1b523b71ed7cbef0f0fe37158970ef1e6c22da218fef05f79e79b07f2c10dc9bbe3ea9fb7e69dfce9761aff16fb10e891d14cac6d66d4 + checksum: b9e7f39eb84626cc8f83ebf75a621d47f04b53cb085a3ea738a9633d57cf65208e503b1830db91aa5e297bc2ba761681ac0b0cbfb7a3d56afcfb2296212668ef languageName: node linkType: hard @@ -4248,11 +3820,11 @@ __metadata: linkType: hard "@types/cheerio@npm:*": - version: 0.22.23 - resolution: "@types/cheerio@npm:0.22.23" + version: 0.22.31 + resolution: "@types/cheerio@npm:0.22.31" dependencies: "@types/node": "*" - checksum: 29a1d208608df454ee8b0de18222182dbe0a72004aa8d5c1e1f9edab6a41779bc1e2db128c51bfcb80705db3cf89a62ee82880d2d66a33cfffd784e08a129df6 + checksum: 8d73d22fdd384c290514dad6f9f4a436f5a90bc836bbe9b46fe4f557041a03484f0547291d0347185a806149f465355fc225dc87477b8cf5af5be307bb75e6a4 languageName: node linkType: hard @@ -4327,9 +3899,9 @@ __metadata: linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree@npm:1.0.0" - checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443 + version: 1.0.1 + resolution: "@types/estree@npm:1.0.1" + checksum: e9aa175eacb797216fafce4d41e8202c7a75555bc55232dee0f9903d7171f8f19f0ae7d5191bb1a88cb90e65468be508c0df850a9fb81b4433b293a5a749899d languageName: node linkType: hard @@ -4358,11 +3930,11 @@ __metadata: linkType: hard "@types/graceful-fs@npm:^4.1.3": - version: 4.1.5 - resolution: "@types/graceful-fs@npm:4.1.5" + version: 4.1.6 + resolution: "@types/graceful-fs@npm:4.1.6" dependencies: "@types/node": "*" - checksum: d076bb61f45d0fc42dee496ef8b1c2f8742e15d5e47e90e20d0243386e426c04d4efd408a48875ab432f7960b4ce3414db20ed0fbbfc7bcc89d84e574f6e045a + checksum: c3070ccdc9ca0f40df747bced1c96c71a61992d6f7c767e8fd24bb6a3c2de26e8b84135ede000b7e79db530a23e7e88dcd9db60eee6395d0f4ce1dae91369dd4 languageName: node linkType: hard @@ -4393,9 +3965,9 @@ __metadata: linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.3 - resolution: "@types/istanbul-lib-coverage@npm:2.0.3" - checksum: 0650cba4be8f464bee89b9de0b71a5ea3b5cc676ce24e1196b5d6a51542ce9e613ae4549bf19756bb33dbbbb32b47931040266100062bfb197c597d73e341eb0 + version: 2.0.4 + resolution: "@types/istanbul-lib-coverage@npm:2.0.4" + checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 languageName: node linkType: hard @@ -4409,11 +3981,11 @@ __metadata: linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.0 - resolution: "@types/istanbul-reports@npm:3.0.0" + version: 3.0.1 + resolution: "@types/istanbul-reports@npm:3.0.1" dependencies: "@types/istanbul-lib-report": "*" - checksum: 286a18cff19c4dac4321b9ea406a3560faf577fb2a4df5abf9d577fa81ba831c9baa7d40d03f1daf7fe613d468546b731c00b844b72fad9834c583311a35bb7b + checksum: f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 languageName: node linkType: hard @@ -4475,9 +4047,9 @@ __metadata: linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.9 - resolution: "@types/json-schema@npm:7.0.9" - checksum: 259d0e25f11a21ba5c708f7ea47196bd396e379fddb79c76f9f4f62c945879dc21657904914313ec2754e443c5018ea8372362f323f30e0792897fdb2098a705 + version: 7.0.11 + resolution: "@types/json-schema@npm:7.0.11" + checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d languageName: node linkType: hard @@ -4554,16 +4126,16 @@ __metadata: linkType: hard "@types/minimist@npm:^1.2.0": - version: 1.2.1 - resolution: "@types/minimist@npm:1.2.1" - checksum: 02631cdd79d346ed6838f5443767b5218a0d915fd0529d4a8840c4eba942d7f6906f0056686dd5a119d42528bed0bee5767ebef7667fdca6fcb95411bb56084e + version: 1.2.2 + resolution: "@types/minimist@npm:1.2.2" + checksum: b8da83c66eb4aac0440e64674b19564d9d86c80ae273144db9681e5eeff66f238ade9515f5006ffbfa955ceff8b89ad2bd8ec577d7caee74ba101431fb07045d languageName: node linkType: hard "@types/node@npm:*, @types/node@npm:>=13.7.0": - version: 18.16.0 - resolution: "@types/node@npm:18.16.0" - checksum: 63e0042136663b9e85ce503a4c65406cc6621fdba63ea66c74b4b1364a9aa9bdb57cadcb76696abab177f38a819b0fa6ace9e7f1647dcb990aedb1b4bd01012f + version: 20.1.1 + resolution: "@types/node@npm:20.1.1" + checksum: 47961ee23f873c14c3f6045422ff3059f3bfb10231ef3080a7a72d7215cc8c2623fa8cedb7b246305962fa9c1e0c9e381e04b12eb3e9ec5d076025c6231ac8da languageName: node linkType: hard @@ -4582,23 +4154,23 @@ __metadata: linkType: hard "@types/node@npm:^18.16.3": - version: 18.16.3 - resolution: "@types/node@npm:18.16.3" - checksum: 816b39d45b05ebdc6f362b630970df3f6d82f71d418a2555353522f4eeeb078fa201de5299f02c09a09faa975e43b2745fe19c263d44069f87ddf37d6c37b717 + version: 18.16.6 + resolution: "@types/node@npm:18.16.6" + checksum: 99417418952c0b1a6ff5dd40ccf01c2cd18db6a1c54bfaaff29c700c877e2e541aa31ea33090592f3817adb2b8c0946b86c7fb57049131e7c08252d70075f09b languageName: node linkType: hard "@types/node@npm:~14": - version: 14.18.36 - resolution: "@types/node@npm:14.18.36" - checksum: da7f479b3fc996d585e60b8329987c6e310ddbf051e14f2d900ce04f7768f42fa7b760f0eb376008d3eca130ce9431018fb5c9e44027dcb7bb139c547e44b9c5 + version: 14.18.46 + resolution: "@types/node@npm:14.18.46" + checksum: 69f2288111b96a8af25ef72a95abbd729262a4a5ac4249e22d2a515ca1e172797a57890ad6103eb310645600cbcf61d81639ff672a51c6bb11e56f91e3820149 languageName: node linkType: hard "@types/normalize-package-data@npm:^2.4.0": - version: 2.4.0 - resolution: "@types/normalize-package-data@npm:2.4.0" - checksum: fd22ba86a186a033dbe173840fd2ad091032be6d48163198869d058821acca7373d9f39cfd0caf42f3b92bc737723814fe1b4e9e90eacaa913836610aa197d3b + version: 2.4.1 + resolution: "@types/normalize-package-data@npm:2.4.1" + checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 languageName: node linkType: hard @@ -4633,13 +4205,13 @@ __metadata: linkType: hard "@types/prop-types@npm:*": - version: 15.7.3 - resolution: "@types/prop-types@npm:15.7.3" - checksum: 41831d53c44c9eeafdaf9762bcb4553c13a3bbf990745ed9065a1cc3581b80633113b53fd49b202bf51731b258da5d0a9aa09c9035d5af7f78b0f6bc273f1325 + version: 15.7.5 + resolution: "@types/prop-types@npm:15.7.5" + checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 languageName: node linkType: hard -"@types/react-dom@npm:18.2.4": +"@types/react-dom@npm:18.2.4, @types/react-dom@npm:^18.0.0": version: 18.2.4 resolution: "@types/react-dom@npm:18.2.4" dependencies: @@ -4648,15 +4220,6 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^18.0.0": - version: 18.0.11 - resolution: "@types/react-dom@npm:18.0.11" - dependencies: - "@types/react": "*" - checksum: 579691e4d5ec09688087568037c35edf8cfb1ab3e07f6c60029280733ee7b5c06d66df6fcc90786702c93ac8cb13bc7ff16c79ddfc75d082938fbaa36e1cdbf4 - languageName: node - linkType: hard - "@types/react-redux@npm:7.1.25": version: 7.1.25 resolution: "@types/react-redux@npm:7.1.25" @@ -4669,7 +4232,7 @@ __metadata: languageName: node linkType: hard -"@types/react-transition-group@npm:4.4.6": +"@types/react-transition-group@npm:4.4.6, @types/react-transition-group@npm:^4.4.0": version: 4.4.6 resolution: "@types/react-transition-group@npm:4.4.6" dependencies: @@ -4678,23 +4241,14 @@ __metadata: languageName: node linkType: hard -"@types/react-transition-group@npm:^4.4.0": - version: 4.4.5 - resolution: "@types/react-transition-group@npm:4.4.5" - dependencies: - "@types/react": "*" - checksum: 265f1c74061556708ffe8d15559e35c60d6c11478c9950d3735575d2c116ca69f461d85effa06d73a613eb8b73c84fd32682feb57cf7c5f9e4284021dbca25b0 - languageName: node - linkType: hard - -"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:18.0.28": - version: 18.0.28 - resolution: "@types/react@npm:18.0.28" +"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:^18.2.6": + version: 18.2.6 + resolution: "@types/react@npm:18.2.6" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: e752df961105e5127652460504785897ca6e77259e0da8f233f694f9e8f451cde7fa0709d4456ade0ff600c8ce909cfe29f9b08b9c247fa9b734e126ec53edd7 + checksum: dea9d232d8df7ac357367a69dcb557711ab3d5501807ffa77cebeee73d49ee94d095f298e36853c63ed47cce097eee4c7eae2aaa8c02fac3f0171ec1b523a819 languageName: node linkType: hard @@ -4717,9 +4271,9 @@ __metadata: linkType: hard "@types/scheduler@npm:*": - version: 0.16.1 - resolution: "@types/scheduler@npm:0.16.1" - checksum: 2ff8034df029a6cbb3623b05fa895cac4fc504806a8e948ebe29675a1edfa5ac04faac7611016076b3ffefc2037bbe344ad1978304059b2d4c78e513ec43c7bf + version: 0.16.3 + resolution: "@types/scheduler@npm:0.16.3" + checksum: 2b0aec39c24268e3ce938c5db2f2e77f5c3dd280e05c262d9c2fe7d890929e4632a6b8e94334017b66b45e4f92a5aa42ba3356640c2a1175fa37bef2f5200767 languageName: node linkType: hard @@ -4731,9 +4285,9 @@ __metadata: linkType: hard "@types/semver@npm:^7.3.12": - version: 7.3.12 - resolution: "@types/semver@npm:7.3.12" - checksum: 35536b2fc5602904f21cae681f6c9498e177dab3f54ae37c92f9a1b7e43c35f18bcd81e1c98c1cf0d33ee046bb06c771e9928c1c00a401d56a03f56549252a15 + version: 7.5.0 + resolution: "@types/semver@npm:7.5.0" + checksum: 0a64b9b9c7424d9a467658b18dd70d1d781c2d6f033096a6e05762d20ebbad23c1b69b0083b0484722aabf35640b78ccc3de26368bcae1129c87e9df028a22e2 languageName: node linkType: hard @@ -4747,9 +4301,9 @@ __metadata: linkType: hard "@types/sinonjs__fake-timers@npm:*": - version: 8.1.1 - resolution: "@types/sinonjs__fake-timers@npm:8.1.1" - checksum: ca09d54d47091d87020824a73f026300fa06b17cd9f2f9b9387f28b549364b141ef194ee28db762f6588de71d8febcd17f753163cb7ea116b8387c18e80ebd5c + version: 8.1.2 + resolution: "@types/sinonjs__fake-timers@npm:8.1.2" + checksum: bbc73a5ab6c0ec974929392f3d6e1e8db4ebad97ec506d785301e1c3d8a4f98a35b1aa95b97035daef02886fd8efd7788a2fa3ced2ec7105988bfd8dce61eedd languageName: node linkType: hard @@ -4768,23 +4322,23 @@ __metadata: linkType: hard "@types/stack-utils@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/stack-utils@npm:2.0.0" - checksum: b3fbae25b073116977ecb5c67d22f14567b51a7792403b0bf46e5de8f29bde3bd4ec1626afb22065495ca7f1c699c8bd66720050c94b8f8f9bcefbee79d161fd + version: 2.0.1 + resolution: "@types/stack-utils@npm:2.0.1" + checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 languageName: node linkType: hard "@types/tough-cookie@npm:*": - version: 4.0.1 - resolution: "@types/tough-cookie@npm:4.0.1" - checksum: 7570c1c2d74201f4ead3512cf8e4c99e97d92ab8a02ae2fb987fd720ced0ca1a2baf250c98a861a170b86762606c9bf6d32207675f13dffc5ab75c08c96578d2 + version: 4.0.2 + resolution: "@types/tough-cookie@npm:4.0.2" + checksum: e055556ffdaa39ad85ede0af192c93f93f986f4bd9e9426efdc2948e3e2632db3a4a584d4937dbf6d7620527419bc99e6182d3daf2b08685e710f2eda5291905 languageName: node linkType: hard "@types/trusted-types@npm:^2.0.2": - version: 2.0.2 - resolution: "@types/trusted-types@npm:2.0.2" - checksum: 3371eef5f1c50e1c3c07a127c1207b262ba65b83dd167a1c460fc1b135a3fb0c97b9f508efebd383f239cc5dd5b7169093686a692a501fde9c3f7208657d9b0d + version: 2.0.3 + resolution: "@types/trusted-types@npm:2.0.3" + checksum: 4794804bc4a4a173d589841b6d26cf455ff5dc4f3e704e847de7d65d215f2e7043d8757e4741ce3a823af3f08260a8d04a1a6e9c5ec9b20b7b04586956a6b005 languageName: node linkType: hard @@ -4817,29 +4371,29 @@ __metadata: linkType: hard "@types/yargs-parser@npm:*": - version: 20.2.0 - resolution: "@types/yargs-parser@npm:20.2.0" - checksum: 54cf3f8d2c7db47e200e8c96e05b3b33ee554e78d29f3db55f04ca4b86dc6b8ff6b1349f5772268ce2d365cde0a0f4fdd92bf5933c2be2c1ea3f19f0b4599e1f + version: 21.0.0 + resolution: "@types/yargs-parser@npm:21.0.0" + checksum: b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 languageName: node linkType: hard "@types/yargs@npm:^17.0.23, @types/yargs@npm:^17.0.8": - version: 17.0.23 - resolution: "@types/yargs@npm:17.0.23" + version: 17.0.24 + resolution: "@types/yargs@npm:17.0.24" dependencies: "@types/yargs-parser": "*" - checksum: c5f787d7a9a36ea94ba5d3f340fc5d93d2860eff8fa9731cd614ed23212e4fca75637e2386e37e376a720e4bf088ceed6f39050f1c3638fc1b75bce5c70b1ad4 + checksum: 5f3ac4dc4f6e211c1627340160fbe2fd247ceba002190da6cf9155af1798450501d628c9165a183f30a224fc68fa5e700490d740ff4c73e2cdef95bc4e8ba7bf languageName: node linkType: hard "@typescript-eslint/eslint-plugin@npm:^5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/eslint-plugin@npm:5.59.2" + version: 5.59.5 + resolution: "@typescript-eslint/eslint-plugin@npm:5.59.5" dependencies: "@eslint-community/regexpp": ^4.4.0 - "@typescript-eslint/scope-manager": 5.59.2 - "@typescript-eslint/type-utils": 5.59.2 - "@typescript-eslint/utils": 5.59.2 + "@typescript-eslint/scope-manager": 5.59.5 + "@typescript-eslint/type-utils": 5.59.5 + "@typescript-eslint/utils": 5.59.5 debug: ^4.3.4 grapheme-splitter: ^1.0.4 ignore: ^5.2.0 @@ -4852,74 +4406,54 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 1045883173a36a069b56e906ed7e5b4106e1efc2ed0969a1718683aef58fd39e5dfa17774b8782c3ced0529a4edd6dedfcb54348a14525f191a6816e6f3b90dc + checksum: cc0e5ad8d70e140f0dada2fd1ad69d7c31d3f3dfe75939286fdc3950ff2e37033889acc7c9d92c074b67de3bbb6e46916d688e848fb98dde63b23c08a8b07884 languageName: node linkType: hard "@typescript-eslint/experimental-utils@npm:^5.0.0": - version: 5.10.1 - resolution: "@typescript-eslint/experimental-utils@npm:5.10.1" + version: 5.59.5 + resolution: "@typescript-eslint/experimental-utils@npm:5.59.5" dependencies: - "@typescript-eslint/utils": 5.10.1 + "@typescript-eslint/utils": 5.59.5 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 652209b59f19de9f6229ff9f688f7ef1c9f19a87484ca53503d4aaf150430cd1c623031c5643e3129344b239c1020c40c24992e416db9d0107cbed4a76c84408 + checksum: 38257173191d0a1fc13339229c6c727202420abc3e05522b93bed105c7f42e7470eadc38945385b4e06a5024f66e6021fa5117e1b3a34858ef736c4f9f57116f languageName: node linkType: hard "@typescript-eslint/parser@npm:^5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/parser@npm:5.59.2" + version: 5.59.5 + resolution: "@typescript-eslint/parser@npm:5.59.5" dependencies: - "@typescript-eslint/scope-manager": 5.59.2 - "@typescript-eslint/types": 5.59.2 - "@typescript-eslint/typescript-estree": 5.59.2 + "@typescript-eslint/scope-manager": 5.59.5 + "@typescript-eslint/types": 5.59.5 + "@typescript-eslint/typescript-estree": 5.59.5 debug: ^4.3.4 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 0d3f992c49e062ff509606fb72846abaa66602d93ca15bc6498c345c55effa28c8d523b829cd180d901eaf04bca3d93a165d56a387ce109333d60d67b09b5638 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.10.1": - version: 5.10.1 - resolution: "@typescript-eslint/scope-manager@npm:5.10.1" - dependencies: - "@typescript-eslint/types": 5.10.1 - "@typescript-eslint/visitor-keys": 5.10.1 - checksum: a4f802ca683bcb3db0e14739d02e680f0f51b6562c23380ea9e0878a70f638572650bd2dbc62f8d74bc39657c053c3e6469a0d4179d3d99bb94fd47bd14d6ecf - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.59.0": - version: 5.59.0 - resolution: "@typescript-eslint/scope-manager@npm:5.59.0" - dependencies: - "@typescript-eslint/types": 5.59.0 - "@typescript-eslint/visitor-keys": 5.59.0 - checksum: dd89cd34291f7674edcbe9628748faa61dbf7199f9776586167e81fd91b93ba3a7f0ddd493c559c0dbb805b58629858fae648d56550e8ac5330b2ed1802b0178 + checksum: ef4122074f2c00be1dabbb3fb5534280f81b45f8de6c1a696092af5175684fea65bc002814546d06f880ea5beff2006589e2633662e92d65035437c8e2d9134c languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/scope-manager@npm:5.59.2" +"@typescript-eslint/scope-manager@npm:5.59.5": + version: 5.59.5 + resolution: "@typescript-eslint/scope-manager@npm:5.59.5" dependencies: - "@typescript-eslint/types": 5.59.2 - "@typescript-eslint/visitor-keys": 5.59.2 - checksum: e7adce27890ebaadd0fb36a35639c9a97d2965973643aef4b4b0dcfabb03181c82235d7171e718b002dd398e52fefd67816eb34912ddbc2bb738b47755bd502a + "@typescript-eslint/types": 5.59.5 + "@typescript-eslint/visitor-keys": 5.59.5 + checksum: b3d8a5b70e741b9bef60d0a297da77e844cb744895f31fb6880fdac4c53f7c58f3e04065a7d644afb6e1dc51591285ec866eca2fbd2ad50de6b376031aaccfbd languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/type-utils@npm:5.59.2" +"@typescript-eslint/type-utils@npm:5.59.5": + version: 5.59.5 + resolution: "@typescript-eslint/type-utils@npm:5.59.5" dependencies: - "@typescript-eslint/typescript-estree": 5.59.2 - "@typescript-eslint/utils": 5.59.2 + "@typescript-eslint/typescript-estree": 5.59.5 + "@typescript-eslint/utils": 5.59.5 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: @@ -4927,73 +4461,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: d9dc037509a97b11a3c7f758f0f6e985cf5b4909fab860018a75b1550711ce9ff07bf5b67d4197ba7a0a831fec7255851b1e6a773a69030fc8ea7ec649859f52 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.10.1": - version: 5.10.1 - resolution: "@typescript-eslint/types@npm:5.10.1" - checksum: e8bbedae74637c35677aab92eceb154e8f1b100b6015d4aa20b5d52bb2e486e50733feca07610406763e1cc36c448a97ca77f058f4e07e7c61bd8d830c092030 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.59.0": - version: 5.59.0 - resolution: "@typescript-eslint/types@npm:5.59.0" - checksum: 5dc608a867b07b4262a236a264a65e894f841388b3aba461c4c1a30d76a2c3aed0c6a1e3d1ea2f64cce55e783091bafb826bf01a0ef83258820af63da860addf - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/types@npm:5.59.2" - checksum: 5a91cfbcaa8c7e92ad91f67abd0ce43ae562fdbdd8c32aa968731bf7c200d13a0415e87fc032bd48f7e5b7d3ed1447cb14449ef2592c269ca311974b15ce0af2 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.10.1": - version: 5.10.1 - resolution: "@typescript-eslint/typescript-estree@npm:5.10.1" - dependencies: - "@typescript-eslint/types": 5.10.1 - "@typescript-eslint/visitor-keys": 5.10.1 - debug: ^4.3.2 - globby: ^11.0.4 - is-glob: ^4.0.3 - semver: ^7.3.5 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 5721e99baa9b286a474a22c4b08e6ac5a0d79435e7f2a91e876e6a2135a44244f0a83ff42cc1cd2ac23cc6ee014965baaa84481e9017f703c45f22e474620c7f + checksum: 9ef2b219c71abe3d2ffa4c791ec3da8d120b6a202e7f9c7722d1e8193f8709d6ebec2abc2862b9fa78dffe6214d033898d21c925fc961feb4488070b66aab9f5 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.59.0": - version: 5.59.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.59.0" - dependencies: - "@typescript-eslint/types": 5.59.0 - "@typescript-eslint/visitor-keys": 5.59.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: d80f2766e2830dc830b9f4f1b9e744e1e7a285ebe72babdf0970f75bfe26cb832c6623bb836a53c48f1e707069d1e407ac1ea095bd583807007f713ba6e2e0e1 +"@typescript-eslint/types@npm:5.59.5": + version: 5.59.5 + resolution: "@typescript-eslint/types@npm:5.59.5" + checksum: 98c93d354d6410934f468ba8bd468d2746f20b2910c0ef5b08fc788c0742aa7cb82eb2edc4194c85d3fabac5563c1a91d377e84bf5c25caeb4ac9e871aabd4bb languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/typescript-estree@npm:5.59.2" +"@typescript-eslint/typescript-estree@npm:5.59.5": + version: 5.59.5 + resolution: "@typescript-eslint/typescript-estree@npm:5.59.5" dependencies: - "@typescript-eslint/types": 5.59.2 - "@typescript-eslint/visitor-keys": 5.59.2 + "@typescript-eslint/types": 5.59.5 + "@typescript-eslint/visitor-keys": 5.59.5 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -5002,240 +4486,186 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: e8bb8817fe53f826f54e4ca584e48a6700dae25e0cc20ab7db38e7e5308987c5759408b39a4e494d4d6dcd7b4bca9f9c507fae987213380dc1c98607cb0a60b1 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.10.1": - version: 5.10.1 - resolution: "@typescript-eslint/utils@npm:5.10.1" - dependencies: - "@types/json-schema": ^7.0.9 - "@typescript-eslint/scope-manager": 5.10.1 - "@typescript-eslint/types": 5.10.1 - "@typescript-eslint/typescript-estree": 5.10.1 - eslint-scope: ^5.1.1 - eslint-utils: ^3.0.0 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: beca5b5eb56b6236215baa409619fc8eea700e733094683c3ac39236bf442793b61fcf3ad6fe57ccec265649962d84c1951900e47bd55208ed50c4c2c7d8cf6b - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/utils@npm:5.59.2" - dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.59.2 - "@typescript-eslint/types": 5.59.2 - "@typescript-eslint/typescript-estree": 5.59.2 - eslint-scope: ^5.1.1 - semver: ^7.3.7 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 483c35a592a36a5973204ce4cd11d52935c097b414d7edac2ecd15dba460b8c540b793ffc232c0f8580fef0624eb7704156ce33c66bd09a76769ed019bddd1d1 + checksum: 10a8c01ad53da115ca698668941dcb18c497035ba07faf08237bfa3ab92185bdfaf1df93562915a936b49e9f72a4cc6b10b1d9296b7cdc8c34ba0ca323c37677 languageName: node linkType: hard -"@typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.58.0": - version: 5.59.0 - resolution: "@typescript-eslint/utils@npm:5.59.0" +"@typescript-eslint/utils@npm:5.59.5, @typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.58.0": + version: 5.59.5 + resolution: "@typescript-eslint/utils@npm:5.59.5" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@types/json-schema": ^7.0.9 "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.59.0 - "@typescript-eslint/types": 5.59.0 - "@typescript-eslint/typescript-estree": 5.59.0 + "@typescript-eslint/scope-manager": 5.59.5 + "@typescript-eslint/types": 5.59.5 + "@typescript-eslint/typescript-estree": 5.59.5 eslint-scope: ^5.1.1 semver: ^7.3.7 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 228318df02f2381f859af184cafa5de4146a2e1518a5062444bf9bd7d468e058f9bd93a3e46cc4683d9bd02159648f416e5c7c539901ca16142456cae3c1af5f - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.10.1": - version: 5.10.1 - resolution: "@typescript-eslint/visitor-keys@npm:5.10.1" - dependencies: - "@typescript-eslint/types": 5.10.1 - eslint-visitor-keys: ^3.0.0 - checksum: 7e1e1a41b2df797534ee56c0d9ae2a056e0ca0ca019b31125fd52d7deb0e802d899920031f2dbf88a951e6752d8fcbd9fa904eaeccb50cf30d2b92b54fd7879d - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.59.0": - version: 5.59.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.59.0" - dependencies: - "@typescript-eslint/types": 5.59.0 - eslint-visitor-keys: ^3.3.0 - checksum: e21656de02e221a27a5fe9f7fd34a1ca28530e47675134425f84fd0d1f276695fe39e35120837a491b02255d49aa2fd871e2c858ecccc66c687db972d057bd1c + checksum: 2703972653d3c6eab2423d9a2586908086afa3b89580969ed38e454bc372265d5ca9fadf7967e4ea639d482ad069f763981ef4a03a42d79df28f43f00ee9d43a languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.59.2": - version: 5.59.2 - resolution: "@typescript-eslint/visitor-keys@npm:5.59.2" +"@typescript-eslint/visitor-keys@npm:5.59.5": + version: 5.59.5 + resolution: "@typescript-eslint/visitor-keys@npm:5.59.5" dependencies: - "@typescript-eslint/types": 5.59.2 + "@typescript-eslint/types": 5.59.5 eslint-visitor-keys: ^3.3.0 - checksum: 3057a017bca03b4ec3bee442044f2bc2f77a4af0d83ea9bf7c6cb2a12811126d93d9d300d89ef8078d981e478c6cc38693c51a2ae4b10a717796bba880eff924 + checksum: 94db281ec8ea3a7ede46763aaa0d3349e035b19334fd03e2e560f89c70faebcfa937d51b53d2eaad2506b60a5d901428cc8b5a65ad8e90ca1c12a133dbe977fc languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.11.5, @webassemblyjs/ast@npm:^1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/ast@npm:1.11.5" +"@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/ast@npm:1.11.6" dependencies: - "@webassemblyjs/helper-numbers": 1.11.5 - "@webassemblyjs/helper-wasm-bytecode": 1.11.5 - checksum: 7df16d8d4364d40e2506776330f8114fddc6494e6e18e8d5ec386312a0881a564cef136b0a74cc4a6ba284e2ff6bad890ddc029a0ba6cf45cc15186e638db118 + "@webassemblyjs/helper-numbers": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + checksum: 38ef1b526ca47c210f30975b06df2faf1a8170b1636ce239fc5738fc231ce28389dd61ecedd1bacfc03cbe95b16d1af848c805652080cb60982836eb4ed2c6cf languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.5" - checksum: a6f35e3035a1ec4e446fa43da01539f3ed7e0f4b53d152f36ff34be1b63b08d86c4b09b6af375c95472a75f0c37b3b98b07199d157e767b8b3274e7a3962890c +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.5" - checksum: 717a6ffb3283bd24a7b74710c9bd3d71ec331a26c15446441af19fae9f087e36acb8dcf25b900b6897a1d1eff838e463fe678d66281e7eccee9a3ac0e3447372 +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.5" - checksum: 2c0925b1c3c9b115c183b88d9cf1a12e87fa4fc83ef985aa2a65d72cda543eba6b73b378d231b4feb810b17d3aa6cd297bd603199854346f8a50e3458d7ebbc0 +"@webassemblyjs/helper-buffer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" + checksum: b14d0573bf680d22b2522e8a341ec451fddd645d1f9c6bd9012ccb7e587a2973b86ab7b89fe91e1c79939ba96095f503af04369a3b356c8023c13a5893221644 languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.5" +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.5 - "@webassemblyjs/helper-api-error": 1.11.5 + "@webassemblyjs/floating-point-hex-parser": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 "@xtuc/long": 4.2.2 - checksum: 49c8bbf561d4df38009e38e6357c396f4454773fd31a03579a8e050a2b28053f5c47f675f00a37f79a65082c938c2159fa603049688ac01b1bafdb472c21110c + checksum: f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.5" - checksum: 4e868de92587e131a7f22bc4eb44eee60c178d4c2c3eeabcb973b4eac73ec477f25d5f838394797265dbe4b600e781c6e150c762a45f249b94bf0711e73409a7 +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.5" +"@webassemblyjs/helper-wasm-section@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 - "@webassemblyjs/helper-buffer": 1.11.5 - "@webassemblyjs/helper-wasm-bytecode": 1.11.5 - "@webassemblyjs/wasm-gen": 1.11.5 - checksum: 1752d7e0dbbf236a5cdc2257e1626a3562bfb0a7d2e967dc5e798c73088f18f20a991491565e2ffee61615f08035b4760e7aa080380bb60b86b393b6eb7486ae + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + checksum: b2cf751bf4552b5b9999d27bbb7692d0aca75260140195cb58ea6374d7b9c2dc69b61e10b211a0e773f66209c3ddd612137ed66097e3684d7816f854997682e9 languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/ieee754@npm:1.11.5" +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" dependencies: "@xtuc/ieee754": ^1.2.0 - checksum: 68a855a3e3dd488fff4d2d100e491cb6ac07f728c9432f3216b8e1bb0a374b397b0a5f58fd3b71195e525d49c0c827db15c18897e1c220c629e759b19978e64c + checksum: 13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/leb128@npm:1.11.5" +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" dependencies: "@xtuc/long": 4.2.2 - checksum: 555314708b6615c203c31a9dd810141c6de728e0043c2169ca69905ccf4d8603102994cb74ac5d057ac229bfc2be40f69cad2edd134ef2b909ef694eefe7bba6 + checksum: 7ea942dc9777d4b18a5ebfa3a937b30ae9e1d2ce1fee637583ed7f376334dd1d4274f813d2e250056cca803e0952def4b954913f1a3c9068bcd4ab4ee5143bf0 languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/utf8@npm:1.11.5" - checksum: d8f67a5650d9bf26810da76e72d0547211a44f30f35657953f547e08185facb39ff326920bddec96d35b5cc65e4e66b1f23c6461847e2f93fad2a60b0bb20211 +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 807fe5b5ce10c390cfdd93e0fb92abda8aebabb5199980681e7c3743ee3306a75729bcd1e56a3903980e96c885ee53ef901fcbaac8efdfa480f9c0dae1d08713 languageName: node linkType: hard "@webassemblyjs/wasm-edit@npm:^1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.5" + version: 1.11.6 + resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 - "@webassemblyjs/helper-buffer": 1.11.5 - "@webassemblyjs/helper-wasm-bytecode": 1.11.5 - "@webassemblyjs/helper-wasm-section": 1.11.5 - "@webassemblyjs/wasm-gen": 1.11.5 - "@webassemblyjs/wasm-opt": 1.11.5 - "@webassemblyjs/wasm-parser": 1.11.5 - "@webassemblyjs/wast-printer": 1.11.5 - checksum: 790142a1e282848201c7b68860aabc0141ee44a98a62c3f0af05f8de3cc69b439c3af54ae9a06acbbfbf7fd192b30ee97fb31eda3e08973cae373534ad2135c7 + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/helper-wasm-section": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + "@webassemblyjs/wasm-opt": 1.11.6 + "@webassemblyjs/wasm-parser": 1.11.6 + "@webassemblyjs/wast-printer": 1.11.6 + checksum: 29ce75870496d6fad864d815ebb072395a8a3a04dc9c3f4e1ffdc63fc5fa58b1f34304a1117296d8240054cfdbc38aca88e71fb51483cf29ffab0a61ef27b481 languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.5" +"@webassemblyjs/wasm-gen@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 - "@webassemblyjs/helper-wasm-bytecode": 1.11.5 - "@webassemblyjs/ieee754": 1.11.5 - "@webassemblyjs/leb128": 1.11.5 - "@webassemblyjs/utf8": 1.11.5 - checksum: 0122df4e5ce52d873f19f34b3ebe8237072e9e6a69667cbec42a2d98ba49f85ea2ed3d935195e6a7ad4f64b9dd7da42883f057fe1103d2062bc90f3428b063fe + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: a645a2eecbea24833c3260a249704a7f554ef4a94c6000984728e94bb2bc9140a68dfd6fd21d5e0bbb09f6dfc98e083a45760a83ae0417b41a0196ff6d45a23a languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.5" +"@webassemblyjs/wasm-opt@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 - "@webassemblyjs/helper-buffer": 1.11.5 - "@webassemblyjs/wasm-gen": 1.11.5 - "@webassemblyjs/wasm-parser": 1.11.5 - checksum: f9416b0dece071e308616fb30e560f0c3c53b5bb23cc4409781b8c47d31e935b27e9a248c65aee9dd9136271e37a4c5cb0971b27e5adf623020fbb298423fe55 + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + "@webassemblyjs/wasm-parser": 1.11.6 + checksum: b4557f195487f8e97336ddf79f7bef40d788239169aac707f6eaa2fa5fe243557c2d74e550a8e57f2788e70c7ae4e7d32f7be16101afe183d597b747a3bdd528 languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.11.5, @webassemblyjs/wasm-parser@npm:^1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.5" +"@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 - "@webassemblyjs/helper-api-error": 1.11.5 - "@webassemblyjs/helper-wasm-bytecode": 1.11.5 - "@webassemblyjs/ieee754": 1.11.5 - "@webassemblyjs/leb128": 1.11.5 - "@webassemblyjs/utf8": 1.11.5 - checksum: 094b3df07532cd2a1db91710622cbaf3d7467a361f9f73dc564999385a472fcc08497d8ccf9294bd7c8813d5e2056c06a81e032abb60520168899605fde9b12c + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: 8200a8d77c15621724a23fdabe58d5571415cda98a7058f542e670ea965dd75499f5e34a48675184947c66f3df23adf55df060312e6d72d57908e3f049620d8a languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wast-printer@npm:1.11.5" +"@webassemblyjs/wast-printer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wast-printer@npm:1.11.6" dependencies: - "@webassemblyjs/ast": 1.11.5 + "@webassemblyjs/ast": 1.11.6 "@xtuc/long": 4.2.2 - checksum: c2995224c56b403be7fce7afbb3ad6b2ceadce07a47b28bce745eabb0435fa363c0180bca907d28703ece02422d0de219e689253b55de288c79b8f92416c1d71 + checksum: d2fa6a4c427325ec81463e9c809aa6572af6d47f619f3091bf4c4a6fc34f1da3df7caddaac50b8e7a457f8784c62cd58c6311b6cb69b0162ccd8d4c072f79cf8 languageName: node linkType: hard @@ -5260,24 +4690,24 @@ __metadata: linkType: hard "@webpack-cli/serve@npm:^2.0.3": - version: 2.0.3 - resolution: "@webpack-cli/serve@npm:2.0.3" + version: 2.0.4 + resolution: "@webpack-cli/serve@npm:2.0.4" peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x peerDependenciesMeta: webpack-dev-server: optional: true - checksum: 1a133d8222d9a3b286cbc670a920af1a2ee66f136b61cb1448767bc481cdc3db65f06eae132a7093b4059ad7aa9a1a5b4810099f8698402843e7c39796804dd0 + checksum: 561ea2e6eb551415f0b1675393a8480e1201293fe37eae334cbb1fdc466986668cca76ca1ca327ada9b498eae27cbecef0793e3bb5677288f1a5216cad414efe languageName: node linkType: hard -"@wireapp/api-client@npm:^24.9.0": - version: 24.9.0 - resolution: "@wireapp/api-client@npm:24.9.0" +"@wireapp/api-client@npm:^24.7.0": + version: 24.9.1 + resolution: "@wireapp/api-client@npm:24.9.1" dependencies: "@wireapp/commons": ^5.1.0 - "@wireapp/priority-queue": ^2.1.0 + "@wireapp/priority-queue": ^2.1.1 "@wireapp/protocol-messaging": 1.44.0 axios: 1.4.0 axios-retry: 3.4.0 @@ -5287,7 +4717,7 @@ __metadata: spark-md5: 3.0.2 tough-cookie: 4.1.2 ws: 8.11.0 - checksum: 083157f79eaeada11a989d1f91b09ce89f0fcfe4e27f80c4210b8a81a8877252a0d6f18d47462ea830dd70772fdef02e1dce2b58edfa860946c07fbcc094bb13 + checksum: 7d3f7c94cec43ae42e7729eedbc30e0969042aba850b0cbf754c6158f4ed24d8afc449cc5d3663caa867829d67258deb60f3b5b8e26363cd8cfa6ed8ffaa5a57 languageName: node linkType: hard @@ -5305,7 +4735,7 @@ __metadata: languageName: node linkType: hard -"@wireapp/commons@npm:^5.1.0": +"@wireapp/commons@npm:^5.0.4, @wireapp/commons@npm:^5.1.0": version: 5.1.0 resolution: "@wireapp/commons@npm:5.1.0" dependencies: @@ -5333,35 +4763,38 @@ __metadata: languageName: node linkType: hard -"@wireapp/core-crypto@npm:0.7.0-rc.4": - version: 0.7.0-rc.4 - resolution: "@wireapp/core-crypto@npm:0.7.0-rc.4" - checksum: 20beaa17648a069042445506aaf63e61164972b5ddbb1891c21ef919bda1c6dd5e36a9186945e0ac5b176cc59e3e5fbba4efedc96cefa66e123a86d4cc1e598b +"@wireapp/core-crypto@npm:0.8.2": + version: 0.8.2 + resolution: "@wireapp/core-crypto@npm:0.8.2" + checksum: f28a44ed5c4adba56453cd6a62813d6ba433b9ee2143522a741c52f5581aca86de3296b0afe4011fc1d5d5cf76d7afda747bb2171c7c129ba73d3b15087a4e99 languageName: node linkType: hard -"@wireapp/core@npm:40.2.1": - version: 40.2.1 - resolution: "@wireapp/core@npm:40.2.1" +"@wireapp/core@file:.yalc/@wireapp/core::locator=wire-webapp%40workspace%3A.": + version: 40.1.13 + resolution: "@wireapp/core@file:.yalc/@wireapp/core#.yalc/@wireapp/core::hash=0eca8a&locator=wire-webapp%40workspace%3A." dependencies: - "@wireapp/api-client": ^24.9.0 - "@wireapp/commons": ^5.1.0 - "@wireapp/core-crypto": 0.7.0-rc.4 + "@wireapp/api-client": ^24.7.0 + "@wireapp/commons": ^5.0.4 + "@wireapp/core-crypto": 0.8.2 "@wireapp/cryptobox": 12.8.0 - "@wireapp/promise-queue": ^2.2.0 + "@wireapp/promise-queue": ^2.1.2 "@wireapp/protocol-messaging": 1.44.0 - "@wireapp/store-engine": 5.1.0 - "@wireapp/store-engine-dexie": ^2.1.0 + "@wireapp/store-engine": 5.0.3 + "@wireapp/store-engine-dexie": ^2.0.5 + auth0-spa-js: ^1.6.5 axios: 1.4.0 - bazinga64: 6.1.0 + bazinga64: 6.0.4 deepmerge-ts: 4.3.0 hash.js: 1.1.7 http-status-codes: 2.2.0 idb: 7.1.1 logdown: 3.3.1 long: ^5.2.0 + oidc-client-ts: ^2.2.2 uuidjs: 4.2.13 - checksum: fcc72689bc40684dbf3905f26b80ad7fde7b146f05e901a5e670b5bb687c7fb8be5ea44c74f67ab0fcc02463f23062fe96a796f3f01b0f086679d2087b7f739a + zod: ^3.21.4 + checksum: c4380f657f0e4d7c7d270c93253b0e4b1ce8a236efe235f56a022ce9346031e4e7122d2bca3a067d4fee33ba9c2a361ac4c84c0b640b79f0fb545b7e6b9b8d3b languageName: node linkType: hard @@ -5434,14 +4867,14 @@ __metadata: languageName: node linkType: hard -"@wireapp/priority-queue@npm:^2.1.0": - version: 2.1.0 - resolution: "@wireapp/priority-queue@npm:2.1.0" - checksum: 26f18bd955be591b034bacc247bfbf1908b22ffd15a4ebeeb810dbcb4d010c498dcd8dc077891fd40ae387cd367d2e72eb6cd769ba80123d827b38b9c91e6931 +"@wireapp/priority-queue@npm:^2.1.1": + version: 2.1.1 + resolution: "@wireapp/priority-queue@npm:2.1.1" + checksum: e25286e228732a43edc8d7f8cc596f1e6fb414fed472db99d269d81289a5c59bfe5cce09f9e793aa0100d5ea7abe36c8931af9be50c275cb3e18894e1c5077dc languageName: node linkType: hard -"@wireapp/promise-queue@npm:^2.2.0": +"@wireapp/promise-queue@npm:^2.1.2": version: 2.2.0 resolution: "@wireapp/promise-queue@npm:2.2.0" checksum: c0c6c66be8316844cdeadb77d176846103f98087027dd8c88f99ab664b62982918a49cab6aeb16a35c7d07347f80a3f6bc200edc20877ed382b635cab6d61ff9 @@ -5493,14 +4926,25 @@ __metadata: languageName: node linkType: hard -"@wireapp/store-engine-dexie@npm:2.1.0, @wireapp/store-engine-dexie@npm:^2.1.0": +"@wireapp/store-engine-dexie@npm:2.1.0": version: 2.1.0 resolution: "@wireapp/store-engine-dexie@npm:2.1.0" dependencies: dexie: 3.2.3 peerDependencies: "@wireapp/store-engine": 5.x.x - checksum: 565b82ca7a506678c89af52ff6001103b58882496f26a38f24dcd65609699cbf4f42fce993a709af893ae709ca80302b334d389dbd8e7d5cc90d6d5f64693234 + checksum: 565b82ca7a506678c89af52ff6001103b58882496f26a38f24dcd65609699cbf4f42fce993a709af893ae709ca80302b334d389dbd8e7d5cc90d6d5f64693234 + languageName: node + linkType: hard + +"@wireapp/store-engine-dexie@npm:^2.0.5": + version: 2.1.1 + resolution: "@wireapp/store-engine-dexie@npm:2.1.1" + dependencies: + dexie: 3.2.3 + peerDependencies: + "@wireapp/store-engine": 5.x.x + checksum: 0b1bf146d7cdb08b0ddb826c823d94d85c75e92b821cb0430b3b79c075aaec06a63dd3e60cbf2ac31ce4aa7c78e64e44d86c5ec2d459ddefcac301cc2b709be4 languageName: node linkType: hard @@ -5526,10 +4970,17 @@ __metadata: languageName: node linkType: hard -"@wireapp/store-engine@npm:5.1.0, @wireapp/store-engine@npm:^5.1.0": - version: 5.1.0 - resolution: "@wireapp/store-engine@npm:5.1.0" - checksum: 31d333b18b0316a8be6e13f20ab6f8faf88e00ad83828ee5f93aec59a8b6cc8372d4172125fd309698c66520982ef2420b20b853912df0042c57baf8ea3b3f79 +"@wireapp/store-engine@npm:5.0.3": + version: 5.0.3 + resolution: "@wireapp/store-engine@npm:5.0.3" + checksum: 3e2bff6c318911f3f75298a4a60b1ca4b83bc90d71bdc3bd1f41ffa75ece47ed70316612f7847e9c2436981fb8d8cf6f31cb31540f4319b481b537a69f42dce8 + languageName: node + linkType: hard + +"@wireapp/store-engine@npm:^5.1.0": + version: 5.1.1 + resolution: "@wireapp/store-engine@npm:5.1.1" + checksum: 90177b191677645facf9d6b4059f1f83598368d708f85e3ad98fbc1c56d305139f15ad2db29e4b35b75224af177c0d878036ab42bdf338a50f57c98893ef3cfa languageName: node linkType: hard @@ -5580,6 +5031,13 @@ __metadata: languageName: node linkType: hard +"abortcontroller-polyfill@npm:^1.7.3": + version: 1.7.5 + resolution: "abortcontroller-polyfill@npm:1.7.5" + checksum: daf4169f4228ae0e4f4dbcfa782e501b923667f2666b7c55bd3b7664e5d6b100e333a93371173985fdf21f65d7dfba15bdb2e6031bdc9e57e4ce0297147da3aa + languageName: node + linkType: hard + "acorn-class-fields@npm:^0.3.7": version: 0.3.7 resolution: "acorn-class-fields@npm:0.3.7" @@ -5600,22 +5058,22 @@ __metadata: languageName: node linkType: hard -"acorn-globals@npm:^6.0.0": - version: 6.0.0 - resolution: "acorn-globals@npm:6.0.0" +"acorn-globals@npm:^7.0.0": + version: 7.0.1 + resolution: "acorn-globals@npm:7.0.1" dependencies: - acorn: ^7.1.1 - acorn-walk: ^7.1.1 - checksum: 72d95e5b5e585f9acd019b993ab8bbba68bb3cbc9d9b5c1ebb3c2f1fe5981f11deababfb4949f48e6262f9c57878837f5958c0cca396f81023814680ca878042 + acorn: ^8.1.0 + acorn-walk: ^8.0.2 + checksum: 2a2998a547af6d0db5f0cdb90acaa7c3cbca6709010e02121fb8b8617c0fbd8bab0b869579903fde358ac78454356a14fadcc1a672ecb97b04b1c2ccba955ce8 languageName: node linkType: hard "acorn-import-assertions@npm:^1.7.6": - version: 1.7.6 - resolution: "acorn-import-assertions@npm:1.7.6" + version: 1.8.0 + resolution: "acorn-import-assertions@npm:1.8.0" peerDependencies: acorn: ^8 - checksum: bc8a1585abd70ebfb3a6b3112f5e3974fee3ac598230f916a3857f0ad4fa7e72197be532c49d1feeb83678ef264f34bee9bf1934dfb2f276d88468134a51fa9f + checksum: 5c4cf7c850102ba7ae0eeae0deb40fb3158c8ca5ff15c0bca43b5c47e307a1de3d8ef761788f881343680ea374631ae9e9615ba8876fee5268dbe068c98bcba6 languageName: node linkType: hard @@ -5672,14 +5130,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^7.1.1": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f - languageName: node - linkType: hard - -"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.1.1": +"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": version: 8.2.0 resolution: "acorn-walk@npm:8.2.0" checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 @@ -5695,12 +5146,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0": - version: 8.8.0 - resolution: "acorn@npm:8.8.0" +"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0, acorn@npm:^8.8.1": + version: 8.8.2 + resolution: "acorn@npm:8.8.2" bin: acorn: bin/acorn - checksum: 7270ca82b242eafe5687a11fea6e088c960af712683756abf0791b68855ea9cace3057bd5e998ffcef50c944810c1e0ca1da526d02b32110e13c722aa959afdc + checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 languageName: node linkType: hard @@ -5721,13 +5172,13 @@ __metadata: linkType: hard "agentkeepalive@npm:^4.2.1": - version: 4.2.1 - resolution: "agentkeepalive@npm:4.2.1" + version: 4.3.0 + resolution: "agentkeepalive@npm:4.3.0" dependencies: debug: ^4.1.0 - depd: ^1.1.2 + depd: ^2.0.0 humanize-ms: ^1.2.1 - checksum: 39cb49ed8cf217fd6da058a92828a0a84e0b74c35550f82ee0a10e1ee403c4b78ade7948be2279b188b7a7303f5d396ea2738b134731e464bf28de00a4f72a18 + checksum: 982453aa44c11a06826c836025e5162c846e1200adb56f2d075400da7d32d87021b3b0a58768d949d824811f5654223d5a8a3dad120921a2439625eb847c6260 languageName: node linkType: hard @@ -5764,14 +5215,14 @@ __metadata: languageName: node linkType: hard -"ajv-keywords@npm:^5.0.0": - version: 5.0.0 - resolution: "ajv-keywords@npm:5.0.0" +"ajv-keywords@npm:^5.1.0": + version: 5.1.0 + resolution: "ajv-keywords@npm:5.1.0" dependencies: fast-deep-equal: ^3.1.3 peerDependencies: - ajv: ^8.0.0 - checksum: 239dd46383a861f9e1dda1f463542ddfa07b4aed886eccb2a4328672c886030b5fdbb7869e0e293ba5549c9b86b23b40fa0e3c0785047e081302f00e41b1e4c1 + ajv: ^8.8.2 + checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421 languageName: node linkType: hard @@ -5787,15 +5238,15 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.0.1, ajv@npm:^8.6.0, ajv@npm:^8.8.0": - version: 8.8.1 - resolution: "ajv@npm:8.8.1" +"ajv@npm:^8.0.0, ajv@npm:^8.0.1, ajv@npm:^8.6.0, ajv@npm:^8.9.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" dependencies: fast-deep-equal: ^3.1.1 json-schema-traverse: ^1.0.0 require-from-string: ^2.0.2 uri-js: ^4.2.2 - checksum: 1d586cea81b266f5f984c3a9f392a70f59181eb895ecb3463c4fc5c6acd5a4aefbe28f6d361dec4b04078fa6ec8343113cc8abdf577c8b99790d30ef71eea6b2 + checksum: 4dc13714e316e67537c8b31bc063f99a1d9d9a497eb4bbd55191ac0dcd5e4985bbb71570352ad6f1e76684fb6d790928f96ba3b2d4fd6e10024be9612fe3f001 languageName: node linkType: hard @@ -5809,11 +5260,11 @@ __metadata: linkType: hard "ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": - version: 4.3.1 - resolution: "ansi-escapes@npm:4.3.1" + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" dependencies: - type-fest: ^0.11.0 - checksum: c4962c1791cc4e29efb9976680bad7b23f322ca039e588406680fffc8b6bc6e223721193eb481dab076309d9a7371bbfc4e835efe5fe267e3395ffa047da239d + type-fest: ^0.21.3 + checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 languageName: node linkType: hard @@ -5882,9 +5333,9 @@ __metadata: linkType: hard "ansi-styles@npm:^6.0.0": - version: 6.1.0 - resolution: "ansi-styles@npm:6.1.0" - checksum: 7a7f8528c07a9d20c3a92bccd2b6bc3bb4d26e5cb775c02826921477377bd495d615d61f710d56216344b6238d1d11ef2b0348e146c5b128715578bfb3217229 + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 languageName: node linkType: hard @@ -5903,12 +5354,12 @@ __metadata: linkType: hard "anymatch@npm:^3.0.3": - version: 3.1.1 - resolution: "anymatch@npm:3.1.1" + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" dependencies: normalize-path: ^3.0.0 picomatch: ^2.0.4 - checksum: c951385862bf114807d594bdffccb769bd7219ddc14f24fc135cde075ad2477a97991567b8bb5032d4f279f96897f0c2af6468a350a6c674ac0a5ee3b62a26d6 + checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 languageName: node linkType: hard @@ -6020,6 +5471,16 @@ __metadata: languageName: node linkType: hard +"array-buffer-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "array-buffer-byte-length@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + is-array-buffer: ^3.0.1 + checksum: 044e101ce150f4804ad19c51d6c4d4cfa505c5b2577bd179256e4aa3f3f6a0a5e9874c78cd428ee566ac574c8a04d7ce21af9fe52e844abfdccb82b33035a7c3 + languageName: node + linkType: hard + "array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": version: 3.1.6 resolution: "array-includes@npm:3.1.6" @@ -6113,16 +5574,16 @@ __metadata: linkType: hard "async-each@npm:^1.0.0": - version: 1.0.3 - resolution: "async-each@npm:1.0.3" - checksum: 868651cfeb209970b367fbb96df1e1c8dc0b22c681cda7238417005ab2a5fbd944ee524b43f2692977259a57b7cc2547e03ff68f2b5113dbdf953d48cc078dc3 + version: 1.0.6 + resolution: "async-each@npm:1.0.6" + checksum: d237e8c39348d5f1441edbd3893692912afbacaf83a2ccce8978ebeea804529a8838654b12208fbbc08c8b0411a1248948ee9bf9291ebe1921aabd5b613bc5db languageName: node linkType: hard "async@npm:^3.2.3": - version: 3.2.3 - resolution: "async@npm:3.2.3" - checksum: c4bee57ab2249af3dc83ca3ef9acfa8e822c0d5e5aa41bae3eaf7f673648343cd64ecd7d26091ffd357f3f044428b17b5f00098494b6cf8b6b3e9681f0636ca1 + version: 3.2.4 + resolution: "async@npm:3.2.4" + checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 languageName: node linkType: hard @@ -6140,6 +5601,15 @@ __metadata: languageName: node linkType: hard +"auth0-spa-js@npm:^1.6.5": + version: 1.6.5 + resolution: "auth0-spa-js@npm:1.6.5" + dependencies: + "@auth0/auth0-spa-js": ^1.6.2 + checksum: daec7a9f2afc1eb24adc0f1173805087e5526508a89e751d37cd8b395374cf7b2806e833a6bce8748a6cb169676692a70d0861e33fe105f0f7511fe77e5b8a21 + languageName: node + linkType: hard + "autoprefixer@npm:^10.4.13, autoprefixer@npm:^10.4.14": version: 10.4.14 resolution: "autoprefixer@npm:10.4.14" @@ -6166,9 +5636,9 @@ __metadata: linkType: hard "axe-core@npm:^4.6.2": - version: 4.6.2 - resolution: "axe-core@npm:4.6.2" - checksum: 81523eeaf101a3a129545a936d448d235ecf1f8c0daccdee224d29f63bec716fa38cf1a65c8462548b1f995624277eed790d9d9977ae40ba692c4cadf1196403 + version: 4.7.0 + resolution: "axe-core@npm:4.7.0" + checksum: f086bcab42be1761ba2b0b127dec350087f4c3a853bba8dd58f69d898cefaac31a1561da23146f6f3c07954c76171d1f2ce460e555e052d2b02cd79af628fa4a languageName: node linkType: hard @@ -6364,12 +5834,10 @@ __metadata: languageName: node linkType: hard -"base64-arraybuffer-es6@npm:^0.6.0": - version: 0.6.0 - resolution: "base64-arraybuffer-es6@npm:0.6.0" - peerDependencies: - core-js-bundle: ^3.6.5 - checksum: 007c51d4445c6dda58db70c99a3465aef1a6812a2382ef47a7d65a3f514d4029afb43462a364e5c622fd7fe641bd7753acb5b1f77e92945e3f73143b67ad5a8c +"base64-arraybuffer-es6@npm:^0.7.0": + version: 0.7.0 + resolution: "base64-arraybuffer-es6@npm:0.7.0" + checksum: 6d2fd114df49201b476cea5d470504e5d4e8c4cd42544152b312c9bdcb824313086fe83f1ffc34262e9e276b82d46aefc6e63bb85553f016932061137b355cdf languageName: node linkType: hard @@ -6394,10 +5862,10 @@ __metadata: languageName: node linkType: hard -"bazinga64@npm:6.1.0": - version: 6.1.0 - resolution: "bazinga64@npm:6.1.0" - checksum: 6e7659d7064cbb9c7ea9880c4aad85b9bdd1eed7da3e9f3ae7a9a0cb24d72e61fc4783839ec0a0b9aaac4f81bae1dcb046aae85c5befc7492f35fdae5000a4ef +"bazinga64@npm:6.0.4": + version: 6.0.4 + resolution: "bazinga64@npm:6.0.4" + checksum: fa78327b1cd5d3f6bf046374213558717b50c293db994b42b5888577710ef4ba20c65e3b31ee5664594532385b9ea9ba608e83cd911d5bf53b4739c780130755 languageName: node linkType: hard @@ -6416,6 +5884,13 @@ __metadata: languageName: node linkType: hard +"big-integer@npm:^1.6.44": + version: 1.6.51 + resolution: "big-integer@npm:1.6.51" + checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 + languageName: node + linkType: hard + "big.js@npm:^5.2.2": version: 5.2.2 resolution: "big.js@npm:5.2.2" @@ -6455,6 +5930,15 @@ __metadata: languageName: node linkType: hard +"bplist-parser@npm:^0.2.0": + version: 0.2.0 + resolution: "bplist-parser@npm:0.2.0" + dependencies: + big-integer: ^1.6.44 + checksum: d5339dd16afc51de6c88f88f58a45b72ed6a06aa31f5557d09877575f220b7c1d3fbe375da0b62e6a10d4b8ed80523567e351f24014f5bc886ad523758142cdd + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -6483,14 +5967,16 @@ __metadata: languageName: node linkType: hard -"browser-process-hrtime@npm:^1.0.0": - version: 1.0.0 - resolution: "browser-process-hrtime@npm:1.0.0" - checksum: e30f868cdb770b1201afb714ad1575dd86366b6e861900884665fb627109b3cc757c40067d3bfee1ff2a29c835257ea30725a8018a9afd02ac1c24b408b1e45f +"browser-tabs-lock@npm:^1.2.15": + version: 1.3.0 + resolution: "browser-tabs-lock@npm:1.3.0" + dependencies: + lodash: ">=4.17.21" + checksum: 4fcfb6d5fc4bc5e4f53c298d555d8421ca4f815e32c2650b73008868eb70d7ee41aca8f92ad84d9beb77a8ffe0cb99f1efc8d9b3135cc434d48f7bd569f2bb72 languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.6, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4, browserslist@npm:^4.21.5": +"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4, browserslist@npm:^4.21.5": version: 4.21.5 resolution: "browserslist@npm:4.21.5" dependencies: @@ -6528,9 +6014,9 @@ __metadata: linkType: hard "buffer-equal@npm:^1.0.0": - version: 1.0.0 - resolution: "buffer-equal@npm:1.0.0" - checksum: c63a62d25ffc6f3a7064a86dd0d92d93a32d03b14f22d17374790bc10e94bca2312302895fdd28a2b0060999d4385cf90cbf6ad1a6678065156c664016d3be45 + version: 1.0.1 + resolution: "buffer-equal@npm:1.0.1" + checksum: 6ead0f976726c4e2fb6f2e82419983f4a99cbf2cca1f1e107e16c23c4d91d9046c732dd29b63fc6ac194354f74fa107e8e94946ef2527812d83cde1d5a006309 languageName: node linkType: hard @@ -6562,9 +6048,18 @@ __metadata: linkType: hard "builtin-modules@npm:^3.1.0": - version: 3.2.0 - resolution: "builtin-modules@npm:3.2.0" - checksum: 0265aa1ba78e1a16f4e18668d815cb43fb364e6a6b8aa9189c6f44c7b894a551a43b323c40206959d2d4b2568c1f2805607ad6c88adc306a776ce6904cca6715 + version: 3.3.0 + resolution: "builtin-modules@npm:3.3.0" + checksum: db021755d7ed8be048f25668fe2117620861ef6703ea2c65ed2779c9e3636d5c3b82325bd912244293959ff3ae303afa3471f6a15bf5060c103e4cc3a839749d + languageName: node + linkType: hard + +"bundle-name@npm:^3.0.0": + version: 3.0.0 + resolution: "bundle-name@npm:3.0.0" + dependencies: + run-applescript: ^5.0.0 + checksum: edf2b1fbe6096ed32e7566947ace2ea937ee427391744d7510a2880c4b9a5b3543d3f6c551236a29e5c87d3195f8e2912516290e638c15bcbede7b37cc375615 languageName: node linkType: hard @@ -6665,14 +6160,7 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001449, caniuse-lite@npm:^1.0.30001464": - version: 1.0.30001481 - resolution: "caniuse-lite@npm:1.0.30001481" - checksum: 8200a043c191b4fd4fe0beda37a58fd61869c895ab93f87bdd0420e5927453f48434d716ce9da8552ff6c3ecc4dcd1366354cda3a134f3cc844af741574a7cab - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001486": +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001449, caniuse-lite@npm:^1.0.30001464, caniuse-lite@npm:^1.0.30001486": version: 1.0.30001486 resolution: "caniuse-lite@npm:1.0.30001486" checksum: 5e8c2ba2679e4ad17dea6d2761a6449b814441bfeac81af6cc9d58af187df6af4b79b27befcbfc4a557e720b21c0399a7d1911c8705922e38938dcc0f40b5d4b @@ -6731,18 +6219,16 @@ __metadata: linkType: hard "chrome-trace-event@npm:^1.0.2": - version: 1.0.2 - resolution: "chrome-trace-event@npm:1.0.2" - dependencies: - tslib: ^1.9.0 - checksum: a104606fd07e6191848fa15d4031ac41c1715d025074574bdbb27d998a20d75d860a2060a5aca840bfbf97ec2ef6b72df9b387ed4109a8fc6eb5c362477c9294 + version: 1.0.3 + resolution: "chrome-trace-event@npm:1.0.3" + checksum: cb8b1fc7e881aaef973bd0c4a43cd353c2ad8323fb471a041e64f7c2dd849cde4aad15f8b753331a32dda45c973f032c8a03b8177fc85d60eaa75e91e08bfb97 languageName: node linkType: hard "ci-info@npm:^3.2.0": - version: 3.3.0 - resolution: "ci-info@npm:3.3.0" - checksum: c3d86fe374938ecda5093b1ba39acb535d8309185ba3f23587747c6a057e63f45419b406d880304dbc0e1d72392c9a33e42fe9a1e299209bc0ded5efaa232b66 + version: 3.8.0 + resolution: "ci-info@npm:3.8.0" + checksum: d0a4d3160497cae54294974a7246202244fff031b0a6ea20dd57b10ec510aa17399c41a1b0982142c105f3255aff2173e5c0dd7302ee1b2f28ba3debda375098 languageName: node linkType: hard @@ -6761,11 +6247,11 @@ __metadata: linkType: hard "clean-css@npm:^5.2.2": - version: 5.3.1 - resolution: "clean-css@npm:5.3.1" + version: 5.3.2 + resolution: "clean-css@npm:5.3.2" dependencies: source-map: ~0.6.0 - checksum: 860696c60503cbfec480b5f92f62729246304b55950571af7292f2687b57f86b277f2b9fefe6f64643d409008018b78383972b55c2cc859792dcc8658988fb16 + checksum: 8787b281acc9878f309b5f835d410085deedfd4e126472666773040a6a8a72f472a1d24185947d23b87b1c419bf2c5ed429395d5c5ff8279c98b05d8011e9758 languageName: node linkType: hard @@ -6796,9 +6282,9 @@ __metadata: linkType: hard "cli-spinners@npm:^2.5.0": - version: 2.7.0 - resolution: "cli-spinners@npm:2.7.0" - checksum: a9afaf73f58d1f951fb23742f503631b3cf513f43f4c7acb1b640100eb76bfa16efbcd1994d149ffc6603a6d75dd3d4a516a76f125f90dce437de9b16fd0ee6f + version: 2.9.0 + resolution: "cli-spinners@npm:2.9.0" + checksum: a9c56e1f44457d4a9f4f535364e729cb8726198efa9e98990cfd9eda9e220dfa4ba12f92808d1be5e29029cdfead781db82dc8549b97b31c907d55f96aa9b0e2 languageName: node linkType: hard @@ -6991,9 +6477,9 @@ __metadata: linkType: hard "colorette@npm:^2.0.10, colorette@npm:^2.0.14, colorette@npm:^2.0.19": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d languageName: node linkType: hard @@ -7035,9 +6521,9 @@ __metadata: linkType: hard "commander@npm:^9.0.0": - version: 9.4.1 - resolution: "commander@npm:9.4.1" - checksum: bfb18e325a5bdf772763c2213d5c7d9e77144d944124e988bcd8e5e65fb6d45d5d4e86b09155d0f2556c9a59c31e428720e57968bcd050b2306e910a0bf3cf13 + version: 9.5.0 + resolution: "commander@npm:9.5.0" + checksum: c7a3e27aa59e913b54a1bafd366b88650bc41d6651f0cbe258d4ff09d43d6a7394232a4dadd0bf518b3e696fdf595db1028a0d82c785b88bd61f8a440cecfade languageName: node linkType: hard @@ -7062,9 +6548,9 @@ __metadata: linkType: hard "common-tags@npm:^1.8.0": - version: 1.8.0 - resolution: "common-tags@npm:1.8.0" - checksum: fb0cc9420d149176f2bd2b1fc9e6df622cd34eccaca60b276aa3253a7c9241e8a8ed1ec0702b2679eba7e47aeef721869c686bbd7257b75b5c44993c8462cd7f + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff languageName: node linkType: hard @@ -7116,11 +6602,9 @@ __metadata: linkType: hard "convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": - version: 1.7.0 - resolution: "convert-source-map@npm:1.7.0" - dependencies: - safe-buffer: ~5.1.1 - checksum: bcd2e3ea7d37f96b85a6e362c8a89402ccc73757256e3ee53aa2c22fe915adb854c66b1f81111be815a3a6a6ce3c58e8001858e883c9d5b4fe08a853fa865967 + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 languageName: node linkType: hard @@ -7132,11 +6616,11 @@ __metadata: linkType: hard "copy-anything@npm:^2.0.1": - version: 2.0.1 - resolution: "copy-anything@npm:2.0.1" + version: 2.0.6 + resolution: "copy-anything@npm:2.0.6" dependencies: - is-what: ^3.7.1 - checksum: a5524a2378579133b7cb6393aea8a750b30e5b94bfb69d8987b53548221e595011e822c40a4c4c348b2ae6bda3d22128d472a31dc1f959fd3fd716f01b66846f + is-what: ^3.14.1 + checksum: 7318dc00ca14f846d14fc886845cff63bf20a3c5f4fcdd31f68c40a213648c78a1093426947ac0f8f8577845e9a7a11eeaaeefb05d9a6f1b78ca5ec60c2aaf6e languageName: node linkType: hard @@ -7182,11 +6666,11 @@ __metadata: linkType: hard "core-js-compat@npm:^3.25.1": - version: 3.25.1 - resolution: "core-js-compat@npm:3.25.1" + version: 3.30.2 + resolution: "core-js-compat@npm:3.30.2" dependencies: - browserslist: ^4.21.3 - checksum: 34dbec657adc2f660f4cd701709c9c5e27cbd608211c65df09458f80f3e357b9492ba1c5173e17cca72d889dcc6da01268cadf88fb407cf1726e76d301c6143e + browserslist: ^4.21.5 + checksum: 4c81d635559eebc2f81db60f5095a235f580a2f90698113c4124c72761393592b139e30974cce6095a9a6aad6bb3cd467b24b20c32e77ed24ca74eb5944d0638 languageName: node linkType: hard @@ -7197,6 +6681,13 @@ __metadata: languageName: node linkType: hard +"core-js@npm:^3.25.4": + version: 3.30.2 + resolution: "core-js@npm:3.30.2" + checksum: 73d47e2b9d9f502800973982d08e995bbf04832e20b04e04be31dd7607247158271315e9328788a2408190e291c7ffbefad141167b1e57dea9f983e1e723541e + languageName: node + linkType: hard + "core-util-is@npm:^1.0.3, core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" @@ -7311,6 +6802,13 @@ __metadata: languageName: node linkType: hard +"crypto-js@npm:^4.1.1": + version: 4.1.1 + resolution: "crypto-js@npm:4.1.1" + checksum: b3747c12ee3a7632fab3b3e171ea50f78b182545f0714f6d3e7e2858385f0f4101a15f2517e033802ce9d12ba50a391575ff4638c9de3dd9b2c4bc47768d5425 + languageName: node + linkType: hard + "crypto-random-string@npm:^2.0.0": version: 2.0.0 resolution: "crypto-random-string@npm:2.0.0" @@ -7453,11 +6951,11 @@ __metadata: linkType: hard "css-declaration-sorter@npm:^6.3.1": - version: 6.3.1 - resolution: "css-declaration-sorter@npm:6.3.1" + version: 6.4.0 + resolution: "css-declaration-sorter@npm:6.4.0" peerDependencies: postcss: ^8.0.9 - checksum: ff0d9989ee21ec4c42430b9bb86c43f973ed5024d68f30edc1e3fb07a22828ce3c3e5b922019f2ccbff606722e43c407c5c76e3cddac523ac4afcb31e4b2601c + checksum: b716bc3d79154d3d618a90bd192533adf6604307c176e25e715a3b7cde587ef16971769fbf496118a376794280edf97016653477936c38c5a74cc852d6e38873 languageName: node linkType: hard @@ -7539,9 +7037,9 @@ __metadata: linkType: hard "cssdb@npm:^7.5.3": - version: 7.5.3 - resolution: "cssdb@npm:7.5.3" - checksum: 9376f1a49405dde2e3bb2e6e99d4389a17d95e94e89ead66cf52067493311b2a6222a257438cd14655087ee711c239efbebefa551e2b2ce8744709c71de3e5f6 + version: 7.5.4 + resolution: "cssdb@npm:7.5.4" + checksum: a01f2745af7d052267965717b33505f83eccc05c757e34cfd717f69f01b89a8aad29119d82c461a438e38dab2abf740e07e490ad352020100dfc463cfd4004ee languageName: node linkType: hard @@ -7561,21 +7059,21 @@ __metadata: languageName: node linkType: hard -"cssnano-preset-default@npm:^5.2.13": - version: 5.2.13 - resolution: "cssnano-preset-default@npm:5.2.13" +"cssnano-preset-default@npm:^5.2.14": + version: 5.2.14 + resolution: "cssnano-preset-default@npm:5.2.14" dependencies: css-declaration-sorter: ^6.3.1 cssnano-utils: ^3.1.0 postcss-calc: ^8.2.3 - postcss-colormin: ^5.3.0 + postcss-colormin: ^5.3.1 postcss-convert-values: ^5.1.3 postcss-discard-comments: ^5.1.2 postcss-discard-duplicates: ^5.1.0 postcss-discard-empty: ^5.1.1 postcss-discard-overridden: ^5.1.0 postcss-merge-longhand: ^5.1.7 - postcss-merge-rules: ^5.1.3 + postcss-merge-rules: ^5.1.4 postcss-minify-font-values: ^5.1.0 postcss-minify-gradients: ^5.1.1 postcss-minify-params: ^5.1.4 @@ -7590,13 +7088,13 @@ __metadata: postcss-normalize-url: ^5.1.0 postcss-normalize-whitespace: ^5.1.1 postcss-ordered-values: ^5.1.3 - postcss-reduce-initial: ^5.1.1 + postcss-reduce-initial: ^5.1.2 postcss-reduce-transforms: ^5.1.0 postcss-svgo: ^5.1.0 postcss-unique-selectors: ^5.1.1 peerDependencies: postcss: ^8.2.15 - checksum: f773de44f67f71e7301e1f4b4664b894c3a48bba4dadc16c559acd0b14ceafed228bdc76fe19d500b0ded9394732377069daadff2184465fa369f8dfd72d47e2 + checksum: d3bbbe3d50c6174afb28d0bdb65b511fdab33952ec84810aef58b87189f3891c34aaa8b6a6101acd5314f8acded839b43513e39a75f91a698ddc985a1b1d9e95 languageName: node linkType: hard @@ -7610,15 +7108,15 @@ __metadata: linkType: hard "cssnano@npm:^5.1.14": - version: 5.1.14 - resolution: "cssnano@npm:5.1.14" + version: 5.1.15 + resolution: "cssnano@npm:5.1.15" dependencies: - cssnano-preset-default: ^5.2.13 + cssnano-preset-default: ^5.2.14 lilconfig: ^2.0.3 yaml: ^1.10.2 peerDependencies: postcss: ^8.2.15 - checksum: 73463c723c5e598b37b8b4d2f014145bd72133e6581349a1b154904e0830e58de17afb1e801ed3ea3b18e386883964ce4d0299e43d4dc37d339214a956c6697f + checksum: ca9e1922178617c66c2f1548824b2c7af2ecf69cc3a187fc96bf8d29251c2e84d9e4966c69cf64a2a6a057a37dff7d6d057bc8a2a0957e6ea382e452ae9d0bbb languageName: node linkType: hard @@ -7655,9 +7153,9 @@ __metadata: linkType: hard "csstype@npm:^3.0.2": - version: 3.0.6 - resolution: "csstype@npm:3.0.6" - checksum: de13bc52ba307b1408dcd29ae4a177ed5fca08226c67b17777e93c7deb1e71accccd251755fa73485ee3cde69df041c8edcd738dc44f904c0c9d246b161286e9 + version: 3.1.2 + resolution: "csstype@npm:3.1.2" + checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 languageName: node linkType: hard @@ -7710,12 +7208,12 @@ __metadata: linkType: hard "decamelize-keys@npm:^1.1.0": - version: 1.1.0 - resolution: "decamelize-keys@npm:1.1.0" + version: 1.1.1 + resolution: "decamelize-keys@npm:1.1.1" dependencies: decamelize: ^1.1.0 map-obj: ^1.0.0 - checksum: 8bc5d32e035a072f5dffc1f1f3d26ca7ab1fb44a9cade34c97ab6cd1e62c81a87e718101e96de07d78cecda20a3fdb955df958e46671ccad01bb8dcf0de2e298 + checksum: fc645fe20b7bda2680bbf9481a3477257a7f9304b1691036092b97ab04c0ab53e3bf9fcc2d2ae382536568e402ec41fb11e1d4c3836a9abe2d813dd9ef4311e0 languageName: node linkType: hard @@ -7726,10 +7224,10 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.3.1": - version: 10.4.1 - resolution: "decimal.js@npm:10.4.1" - checksum: 5da6dc74af5b73d954741b24d404ef6da07841794d9e51412a2708ec384dd7b4bced3365fb178f4cd119b7ef45f0b34344014a4dc0494c8374c5e746df3cb410 +"decimal.js@npm:^10.4.2": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae languageName: node linkType: hard @@ -7741,14 +7239,15 @@ __metadata: linkType: hard "deep-equal@npm:^2.0.5": - version: 2.2.0 - resolution: "deep-equal@npm:2.2.0" + version: 2.2.1 + resolution: "deep-equal@npm:2.2.1" dependencies: + array-buffer-byte-length: ^1.0.0 call-bind: ^1.0.2 - es-get-iterator: ^1.1.2 - get-intrinsic: ^1.1.3 + es-get-iterator: ^1.1.3 + get-intrinsic: ^1.2.0 is-arguments: ^1.1.1 - is-array-buffer: ^3.0.1 + is-array-buffer: ^3.0.2 is-date-object: ^1.0.5 is-regex: ^1.1.4 is-shared-array-buffer: ^1.0.2 @@ -7756,12 +7255,12 @@ __metadata: object-is: ^1.1.5 object-keys: ^1.1.1 object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 + regexp.prototype.flags: ^1.5.0 side-channel: ^1.0.4 which-boxed-primitive: ^1.0.2 which-collection: ^1.0.1 which-typed-array: ^1.1.9 - checksum: 46a34509d2766d6c6dc5aec4756089cf0cc137e46787e91f08f1ee0bb570d874f19f0493146907df0cf18aed4a7b4b50f6f62c899240a76c323f057528b122e3 + checksum: 561f0e001a07b2f1b80ff914d0b3d76964bbfc102f34c2128bc8039c0050e63b1a504a8911910e011d8cd1cd4b600a9686c049e327f4ef94420008efc42d25f4 languageName: node linkType: hard @@ -7780,9 +7279,31 @@ __metadata: linkType: hard "deepmerge@npm:^4.0.0, deepmerge@npm:^4.2.2": - version: 4.2.2 - resolution: "deepmerge@npm:4.2.2" - checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 + languageName: node + linkType: hard + +"default-browser-id@npm:^3.0.0": + version: 3.0.0 + resolution: "default-browser-id@npm:3.0.0" + dependencies: + bplist-parser: ^0.2.0 + untildify: ^4.0.0 + checksum: 279c7ad492542e5556336b6c254a4eaf31b2c63a5433265655ae6e47301197b6cfb15c595a6fdc6463b2ff8e1a1a1ed3cba56038a60e1527ba4ab1628c6b9941 + languageName: node + linkType: hard + +"default-browser@npm:^4.0.0": + version: 4.0.0 + resolution: "default-browser@npm:4.0.0" + dependencies: + bundle-name: ^3.0.0 + default-browser-id: ^3.0.0 + execa: ^7.1.1 + titleize: ^3.0.0 + checksum: 40c5af984799042b140300be5639c9742599bda76dc9eba5ac9ad5943c83dd36cebc4471eafcfddf8e0ec817166d5ba89d56f08e66a126c7c7908a179cead1a7 languageName: node linkType: hard @@ -7795,20 +7316,20 @@ __metadata: languageName: node linkType: hard -"define-lazy-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "define-lazy-prop@npm:2.0.0" - checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 +"define-lazy-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "define-lazy-prop@npm:3.0.0" + checksum: 54884f94caac0791bf6395a3ec530ce901cf71c47b0196b8754f3fd17edb6c0e80149c1214429d851873bb0d689dbe08dcedbb2306dc45c8534a5934723851b6 languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" +"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": + version: 1.2.0 + resolution: "define-properties@npm:1.2.0" dependencies: has-property-descriptors: ^1.0.0 object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b + checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 languageName: node linkType: hard @@ -7835,10 +7356,10 @@ __metadata: languageName: node linkType: hard -"depd@npm:^1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 +"depd@npm:^2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a languageName: node linkType: hard @@ -7865,14 +7386,7 @@ __metadata: languageName: node linkType: hard -dexie@latest: - version: 3.2.2 - resolution: "dexie@npm:3.2.2" - checksum: 7a21079f7ab139ebd724a009917f9293f2b01c341e2a3cd51d2455dda4d4e78b9ca7de0373e963108395cf1921ce7f6556cac967c1e957005a3c7c11794ceccf - languageName: node - linkType: hard - -"dexie@npm:3.2.3": +"dexie@npm:3.2.3, dexie@npm:latest": version: 3.2.3 resolution: "dexie@npm:3.2.3" checksum: 54fd7bc94364ed601dc2d53f8b488e49ac61d4ec532f001a68fde9ffccb4bf3c6a8af310b41d8f52c94c1a99c0e165437d7b223b655df582ceda90b9bfcd60e7 @@ -7928,9 +7442,9 @@ dexie@latest: linkType: hard "dom-accessibility-api@npm:^0.5.9": - version: 0.5.13 - resolution: "dom-accessibility-api@npm:0.5.13" - checksum: a5a5f14c01e466d424750aaac9225f1dc43cf16d101a1c40e01a554abce63c48084707002c39b805f2ce212273c179dd6d2258175997cd06d5f79851bf52dd40 + version: 0.5.16 + resolution: "dom-accessibility-api@npm:0.5.16" + checksum: 005eb283caef57fc1adec4d5df4dd49189b628f2f575af45decb210e04d634459e3f1ee64f18b41e2dcf200c844bc1d9279d80807e686a30d69a4756151ad248 languageName: node linkType: hard @@ -7944,12 +7458,12 @@ dexie@latest: linkType: hard "dom-helpers@npm:^5.0.1": - version: 5.2.0 - resolution: "dom-helpers@npm:5.2.0" + version: 5.2.1 + resolution: "dom-helpers@npm:5.2.1" dependencies: "@babel/runtime": ^7.8.7 csstype: ^3.0.2 - checksum: bea3e7217c2adac5f89285b7786dbcc3a356226f6ff12934c9626689829b00e7fa7630a8f77973028d039db1aba6b882b1494854aa910422d1644486136b1e55 + checksum: 863ba9e086f7093df3376b43e74ce4422571d404fc9828bf2c56140963d5edf0e56160f9b2f3bb61b282c07f8fc8134f023c98fd684bddcb12daf7b0f14d951c languageName: node linkType: hard @@ -8088,20 +7602,20 @@ dexie@latest: linkType: hard "ejs@npm:^3.1.6": - version: 3.1.7 - resolution: "ejs@npm:3.1.7" + version: 3.1.9 + resolution: "ejs@npm:3.1.9" dependencies: jake: ^10.8.5 bin: ejs: bin/cli.js - checksum: fe40764af39955ce8f8b116716fc8b911959946698edb49ecab85df597746c07aa65d5b74ead28a1e2ffa75b0f92d9bedd752f1c29437da6137b3518271e988c + checksum: af6f10eb815885ff8a8cfacc42c6b6cf87daf97a4884f87a30e0c3271fedd85d76a3a297d9c33a70e735b97ee632887f85e32854b9cdd3a2d97edf931519a35f languageName: node linkType: hard "electron-to-chromium@npm:^1.4.284": - version: 1.4.340 - resolution: "electron-to-chromium@npm:1.4.340" - checksum: b7ffa64814efa49891c23ca0560f6831a992fa904c463bbf635ceccd57821dd0f4ecc22fa066860d34d9614b0ef4b27b385a5f59aed5dcf73ed832d58f746780 + version: 1.4.388 + resolution: "electron-to-chromium@npm:1.4.388" + checksum: 4a0117b3bdde350b5281de5bd3c33deff19979bb26350d70372b5b35aaed920421465ce93f56c48499add95d44cfb148bbedeb0be20bca2e770bc4539c38e67c languageName: node linkType: hard @@ -8162,12 +7676,12 @@ dexie@latest: linkType: hard "enhanced-resolve@npm:^5.12.0, enhanced-resolve@npm:^5.13.0": - version: 5.13.0 - resolution: "enhanced-resolve@npm:5.13.0" + version: 5.14.0 + resolution: "enhanced-resolve@npm:5.14.0" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 - checksum: 76d6844c4393d76beed5b3ce6cf5a98dee3ad5c84a9887f49ccde1224e3b7af201dfbd5a57ebf2b49f623b74883df262d50ff480d3cc02fc2881fc58b84e1bbe + checksum: fff1aaebbf376371e5df4502e111967f6247c37611ad3550e4e7fca657f6dcb29ef7ffe88bf14e5010b78997f1ddd984a8db97af87ee0a5477771398fd326f5b languageName: node linkType: hard @@ -8178,17 +7692,24 @@ dexie@latest: languageName: node linkType: hard -"entities@npm:^2.0.0, entities@npm:~2.1.0": - version: 2.1.0 - resolution: "entities@npm:2.1.0" - checksum: a10a877e489586a3f6a691fe49bf3fc4e58f06c8e80522f08214a5150ba457e7017b447d4913a3fa041bda06ee4c92517baa4d8d75373eaa79369e9639225ffd +"entities@npm:^2.0.0": + version: 2.2.0 + resolution: "entities@npm:2.2.0" + checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 languageName: node linkType: hard "entities@npm:^4.4.0": - version: 4.4.0 - resolution: "entities@npm:4.4.0" - checksum: 84d250329f4b56b40fa93ed067b194db21e8815e4eb9b59f43a086f0ecd342814f6bc483de8a77da5d64e0f626033192b1b4f1792232a7ea6b970ebe0f3187c2 + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 + languageName: node + linkType: hard + +"entities@npm:~2.1.0": + version: 2.1.0 + resolution: "entities@npm:2.1.0" + checksum: a10a877e489586a3f6a691fe49bf3fc4e58f06c8e80522f08214a5150ba457e7017b447d4913a3fa041bda06ee4c92517baa4d8d75373eaa79369e9639225ffd languageName: node linkType: hard @@ -8207,11 +7728,11 @@ dexie@latest: linkType: hard "envinfo@npm:^7.7.3": - version: 7.7.3 - resolution: "envinfo@npm:7.7.3" + version: 7.8.1 + resolution: "envinfo@npm:7.8.1" bin: envinfo: dist/cli.js - checksum: d8fb5c308fafaa18bff0e415d1a538df58de09ce168259b4b3fa6d10b3391df300ae6c64679e382c9949e26102fc703e7f675abc8a56958546baa8f509dc3df4 + checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 languageName: node linkType: hard @@ -8249,39 +7770,56 @@ dexie@latest: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.4": - version: 1.20.4 - resolution: "es-abstract@npm:1.20.4" +"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": + version: 1.21.2 + resolution: "es-abstract@npm:1.21.2" dependencies: + array-buffer-byte-length: ^1.0.0 + available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 + es-set-tostringtag: ^2.0.1 es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.3 + get-intrinsic: ^1.2.0 get-symbol-description: ^1.0.0 + globalthis: ^1.0.3 + gopd: ^1.0.1 has: ^1.0.3 has-property-descriptors: ^1.0.0 + has-proto: ^1.0.1 has-symbols: ^1.0.3 - internal-slot: ^1.0.3 + internal-slot: ^1.0.5 + is-array-buffer: ^3.0.2 is-callable: ^1.2.7 is-negative-zero: ^2.0.2 is-regex: ^1.1.4 is-shared-array-buffer: ^1.0.2 is-string: ^1.0.7 + is-typed-array: ^1.1.10 is-weakref: ^1.0.2 - object-inspect: ^1.12.2 + object-inspect: ^1.12.3 object-keys: ^1.1.1 object.assign: ^4.1.4 regexp.prototype.flags: ^1.4.3 safe-regex-test: ^1.0.0 - string.prototype.trimend: ^1.0.5 - string.prototype.trimstart: ^1.0.5 + string.prototype.trim: ^1.2.7 + string.prototype.trimend: ^1.0.6 + string.prototype.trimstart: ^1.0.6 + typed-array-length: ^1.0.4 unbox-primitive: ^1.0.2 - checksum: 89297cc785c31aedf961a603d5a07ed16471e435d3a1b6d070b54f157cf48454b95cda2ac55e4b86ff4fe3276e835fcffd2771578e6fa634337da49b26826141 + which-typed-array: ^1.1.9 + checksum: 037f55ee5e1cdf2e5edbab5524095a4f97144d95b94ea29e3611b77d852fd8c8a40e7ae7101fa6a759a9b9b1405f188c3c70928f2d3cd88d543a07fc0d5ad41a languageName: node linkType: hard -"es-get-iterator@npm:^1.1.2": +"es-cookie@npm:~1.3.2": + version: 1.3.2 + resolution: "es-cookie@npm:1.3.2" + checksum: 8509355a7d00bd2e3fcab4a76a90e0da35b40c1e76f114f8ffe805ab3fdfff51e8fc0e7cdccd9bf1536066150b6b9861e37d78ae14f80680513901902ac4f0df + languageName: node + linkType: hard + +"es-get-iterator@npm:^1.1.3": version: 1.1.3 resolution: "es-get-iterator@npm:1.1.3" dependencies: @@ -8305,6 +7843,17 @@ dexie@latest: languageName: node linkType: hard +"es-set-tostringtag@npm:^2.0.1": + version: 2.0.1 + resolution: "es-set-tostringtag@npm:2.0.1" + dependencies: + get-intrinsic: ^1.1.3 + has: ^1.0.3 + has-tostringtag: ^1.0.0 + checksum: ec416a12948cefb4b2a5932e62093a7cf36ddc3efd58d6c58ca7ae7064475ace556434b869b0bbeb0c365f1032a8ccd577211101234b69837ad83ad204fff884 + languageName: node + linkType: hard + "es-shim-unscopables@npm:^1.0.0": version: 1.0.0 resolution: "es-shim-unscopables@npm:1.0.0" @@ -8442,14 +7991,14 @@ dexie@latest: linkType: hard "eslint-module-utils@npm:^2.7.4": - version: 2.7.4 - resolution: "eslint-module-utils@npm:2.7.4" + version: 2.8.0 + resolution: "eslint-module-utils@npm:2.8.0" dependencies: debug: ^3.2.7 peerDependenciesMeta: eslint: optional: true - checksum: 5da13645daff145a5c922896b258f8bba560722c3767254e458d894ff5fbb505d6dfd945bffa932a5b0ae06714da2379bd41011c4c20d2d59cc83e23895360f7 + checksum: 74c6dfea7641ebcfe174be61168541a11a14aa8d72e515f5f09af55cd0d0862686104b0524aa4b8e0ce66418a44aa38a94d2588743db5fd07a6b49ffd16921d2 languageName: node linkType: hard @@ -8539,8 +8088,8 @@ dexie@latest: linkType: hard "eslint-plugin-jsdoc@npm:^39.8.0": - version: 39.8.0 - resolution: "eslint-plugin-jsdoc@npm:39.8.0" + version: 39.9.1 + resolution: "eslint-plugin-jsdoc@npm:39.9.1" dependencies: "@es-joy/jsdoccomment": ~0.36.1 comment-parser: 1.3.1 @@ -8551,7 +8100,7 @@ dexie@latest: spdx-expression-parse: ^3.0.1 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: fe2fec06605c9effe30c3c136f91ba5720d0dec519f5d54dc336f86dc3375793053399e9ca37a33e8eb04cc10571ded800c5babe8b09822922209a0b63751855 + checksum: 757444505eabff5bd24ded18fd1a2920031520ba251c84944dd5c12dd2b21460fde6aa6253e454518386c3d7a0fa64f2496e3ba27bd338ec7768cb090ae86cca languageName: node linkType: hard @@ -8728,17 +8277,6 @@ dexie@latest: languageName: node linkType: hard -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" - dependencies: - eslint-visitor-keys: ^2.0.0 - peerDependencies: - eslint: ">=5" - checksum: 0668fe02f5adab2e5a367eee5089f4c39033af20499df88fe4e6aba2015c20720404d8c3d6349b6f716b08fdf91b9da4e5d5481f265049278099c4c836ccb619 - languageName: node - linkType: hard - "eslint-visitor-keys@npm:^1.1.0": version: 1.3.0 resolution: "eslint-visitor-keys@npm:1.3.0" @@ -8746,21 +8284,14 @@ dexie@latest: languageName: node linkType: hard -"eslint-visitor-keys@npm:^2.0.0, eslint-visitor-keys@npm:^2.1.0": +"eslint-visitor-keys@npm:^2.1.0": version: 2.1.0 resolution: "eslint-visitor-keys@npm:2.1.0" checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.0": - version: 3.4.0 - resolution: "eslint-visitor-keys@npm:3.4.0" - checksum: 33159169462d3989321a1ec1e9aaaf6a24cc403d5d347e9886d1b5bfe18ffa1be73bdc6203143a28a606b142b1af49787f33cff0d6d0813eb5f2e8d2e1a6043c - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.4.1": +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1": version: 3.4.1 resolution: "eslint-visitor-keys@npm:3.4.1" checksum: f05121d868202736b97de7d750847a328fcfa8593b031c95ea89425333db59676ac087fa905eba438d0a3c5769632f828187e0c1a0d271832a2153c1d3661c2c @@ -8828,18 +8359,7 @@ dexie@latest: languageName: node linkType: hard -"espree@npm:^9.0.0": - version: 9.5.1 - resolution: "espree@npm:9.5.1" - dependencies: - acorn: ^8.8.0 - acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.4.0 - checksum: cdf6e43540433d917c4f2ee087c6e987b2063baa85a1d9cdaf51533d78275ebd5910c42154e7baf8e3e89804b386da0a2f7fad2264d8f04420e7506bf87b3b88 - languageName: node - linkType: hard - -"espree@npm:^9.5.2": +"espree@npm:^9.0.0, espree@npm:^9.5.2": version: 9.5.2 resolution: "espree@npm:9.5.2" dependencies: @@ -8851,12 +8371,12 @@ dexie@latest: linkType: hard "esprima-next@npm:^5.7.0": - version: 5.7.0 - resolution: "esprima-next@npm:5.7.0" + version: 5.8.4 + resolution: "esprima-next@npm:5.8.4" bin: esparse: bin/esparse.js esvalidate: bin/esvalidate.js - checksum: 39b47ec6e883cbb5913384014bc2901172d96122033f58382572ba9e5ab86b8c4b856baebf9c8bcb96b74fa33f11c9388b623f8112d219a80001c04eef70c9c4 + checksum: 3c2e7ddd91faac777e506360eb989a1a4d3c02c8a5abe5ca1e4aa2249e300f7a8cd05b3bc0aa3901e63082090abd4a3ba00d5357a630d03d0e0a3830dd078bc5 languageName: node linkType: hard @@ -8932,9 +8452,9 @@ dexie@latest: linkType: hard "events@npm:^3.2.0": - version: 3.2.0 - resolution: "events@npm:3.2.0" - checksum: 974178db37de546d2d8eff37ac662c2a9e046fc4f509ae0894cfaaf437381bc030081057d19b45a1bc32f1445d5a85221053fc1fb6858d08deeb01b1a6e259c3 + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 languageName: node linkType: hard @@ -8955,9 +8475,9 @@ dexie@latest: languageName: node linkType: hard -"execa@npm:^7.0.0": - version: 7.1.0 - resolution: "execa@npm:7.1.0" +"execa@npm:^7.0.0, execa@npm:^7.1.1": + version: 7.1.1 + resolution: "execa@npm:7.1.1" dependencies: cross-spawn: ^7.0.3 get-stream: ^6.0.1 @@ -8968,7 +8488,7 @@ dexie@latest: onetime: ^6.0.0 signal-exit: ^3.0.7 strip-final-newline: ^3.0.0 - checksum: feb446802885a0bace8400efdd7320f811203a53af29e8a65a6ff18e58582909eefeec31e163fbee9debcfeb7d464be2887beeb85c817ca873ac720064404247 + checksum: 21fa46fc69314ace4068cf820142bdde5b643a5d89831c2c9349479c1555bff137a291b8e749e7efca36535e4e0a8c772c11008ca2e84d2cbd6ca141a3c8f937 languageName: node linkType: hard @@ -9081,6 +8601,13 @@ dexie@latest: languageName: node linkType: hard +"fast-text-encoding@npm:^1.0.6": + version: 1.0.6 + resolution: "fast-text-encoding@npm:1.0.6" + checksum: 9d58f694314b3283e785bf61954902536da228607ad246905e30256f9ab8331f780ac987e7222c9f5eafd04168d07e12b8054c85cedb76a2c05af0e82387a903 + languageName: node + linkType: hard + "fastest-levenshtein@npm:^1.0.12, fastest-levenshtein@npm:^1.0.16": version: 1.0.16 resolution: "fastest-levenshtein@npm:1.0.16" @@ -9089,20 +8616,20 @@ dexie@latest: linkType: hard "fastq@npm:^1.6.0": - version: 1.10.0 - resolution: "fastq@npm:1.10.0" + version: 1.15.0 + resolution: "fastq@npm:1.15.0" dependencies: reusify: ^1.0.4 - checksum: 67fe7c7c96c5a714d39664c318bca84862b0e5658b5fcd67c3eaeda0bb2eb6895ce39d16944e2f523ce2737fa918113969ad7e1f204200d61cc29f2950f441c4 + checksum: 0170e6bfcd5d57a70412440b8ef600da6de3b2a6c5966aeaf0a852d542daff506a0ee92d6de7679d1de82e644bce69d7a574a6c93f0b03964b5337eed75ada1a languageName: node linkType: hard "fb-watchman@npm:^2.0.0": - version: 2.0.1 - resolution: "fb-watchman@npm:2.0.1" + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" dependencies: bser: 2.1.1 - checksum: 8510230778ab3a51c27dffb1b76ef2c24fab672a42742d3c0a45c2e9d1e5f20210b1fbca33486088da4a9a3958bde96b5aec0a63aac9894b4e9df65c88b2cbd6 + checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 languageName: node linkType: hard @@ -9185,11 +8712,11 @@ dexie@latest: linkType: hard "filelist@npm:^1.0.1": - version: 1.0.3 - resolution: "filelist@npm:1.0.3" + version: 1.0.4 + resolution: "filelist@npm:1.0.4" dependencies: minimatch: ^5.0.1 - checksum: c78048691a31b91d54908ce2eac4731bf108613c7b2e4d1a05a6cbe6739bd067e4c1a3baa4f7d07b7143b8c374c0c0d59864b5c8d9168ec8e2a85f84fb7170ad + checksum: a303573b0821e17f2d5e9783688ab6fbfce5d52aaac842790ae85e704a6f5e4e3538660a63183d6453834dedf1e0f19a9dadcebfa3e926c72397694ea11f5160 languageName: node linkType: hard @@ -9261,9 +8788,9 @@ dexie@latest: linkType: hard "flatted@npm:^3.1.0": - version: 3.1.0 - resolution: "flatted@npm:3.1.0" - checksum: 3e4699377ef18194e39777fc39e472e8939e65c38fe1445a26072242498ea4a7f701bbd6515aa332e5ea11dd9d3488f775f6dfe8b605756fbc0807dc329fe118 + version: 3.2.7 + resolution: "flatted@npm:3.2.7" + checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 languageName: node linkType: hard @@ -9402,7 +8929,7 @@ dexie@latest: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.1": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": version: 2.3.2 resolution: "fsevents@npm:2.3.2" dependencies: @@ -9412,7 +8939,7 @@ dexie@latest: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.1#~builtin": +"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": version: 2.3.2 resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" dependencies: @@ -9440,10 +8967,10 @@ dexie@latest: languageName: node linkType: hard -"functions-have-names@npm:^1.2.2": - version: 1.2.2 - resolution: "functions-have-names@npm:1.2.2" - checksum: 25f44b6d1c41ac86ffdf41f25d1de81c0a5b4a3fcf4307a33cdfb23b9d4bd5d0d8bf312eaef5ad368c6500c8a9e19f692b8ce9f96aaab99db9dd936554165558 +"functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 languageName: node linkType: hard @@ -9522,14 +9049,14 @@ dexie@latest: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": - version: 1.1.3 - resolution: "get-intrinsic@npm:1.1.3" +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": + version: 1.2.0 + resolution: "get-intrinsic@npm:1.2.0" dependencies: function-bind: ^1.1.1 has: ^1.0.3 has-symbols: ^1.0.3 - checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a + checksum: 78fc0487b783f5c58cf2dccafc3ae656ee8d2d8062a8831ce4a95e7057af4587a1d4882246c033aca0a7b4965276f4802b45cc300338d1b77a73d3e3e3f4877d languageName: node linkType: hard @@ -9658,16 +9185,16 @@ dexie@latest: linkType: hard "glob@npm:^7.0.5, glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": - version: 7.2.0 - resolution: "glob@npm:7.2.0" + version: 7.2.3 + resolution: "glob@npm:7.2.3" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 inherits: 2 - minimatch: ^3.0.4 + minimatch: ^3.1.1 once: ^1.3.0 path-is-absolute: ^1.0.0 - checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134 + checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 languageName: node linkType: hard @@ -9685,14 +9212,14 @@ dexie@latest: linkType: hard "glob@npm:^9.3.1": - version: 9.3.2 - resolution: "glob@npm:9.3.2" + version: 9.3.5 + resolution: "glob@npm:9.3.5" dependencies: fs.realpath: ^1.0.0 - minimatch: ^7.4.1 + minimatch: ^8.0.2 minipass: ^4.2.4 path-scurry: ^1.6.1 - checksum: f3d188e9f70e24fa729a63ca197bcdb36d838677abec1fb9bbfe4b7620063bf90dc0f8d195203d632abfdfa049fad0edf22f93c60076de67cef20c23bcbfaee8 + checksum: 94b093adbc591bc36b582f77927d1fb0dbf3ccc231828512b017601408be98d1fe798fc8c0b19c6f2d1a7660339c3502ce698de475e9d938ccbb69b47b647c84 languageName: node linkType: hard @@ -9765,22 +9292,24 @@ dexie@latest: linkType: hard "globals@npm:^13.19.0": - version: 13.19.0 - resolution: "globals@npm:13.19.0" + version: 13.20.0 + resolution: "globals@npm:13.20.0" dependencies: type-fest: ^0.20.2 - checksum: a000dbd00bcf28f0941d8a29c3522b1c3b8e4bfe4e60e262c477a550c3cbbe8dbe2925a6905f037acd40f9a93c039242e1f7079c76b0fd184bc41dcc3b5c8e2e + checksum: ad1ecf914bd051325faad281d02ea2c0b1df5d01bd94d368dcc5513340eac41d14b3c61af325768e3c7f8d44576e72780ec0b6f2d366121f8eec6e03c3a3b97a languageName: node linkType: hard -"globalyzer@npm:0.1.0": - version: 0.1.0 - resolution: "globalyzer@npm:0.1.0" - checksum: 419a0f95ba542534fac0842964d31b3dc2936a479b2b1a8a62bad7e8b61054faa9b0a06ad9f2e12593396b9b2621cac93358d9b3071d33723fb1778608d358a1 +"globalthis@npm:^1.0.3": + version: 1.0.3 + resolution: "globalthis@npm:1.0.3" + dependencies: + define-properties: ^1.1.3 + checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 languageName: node linkType: hard -"globby@npm:^11.0.4, globby@npm:^11.1.0": +"globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -9795,15 +9324,15 @@ dexie@latest: linkType: hard "globby@npm:^13.1.1, globby@npm:^13.1.3": - version: 13.1.3 - resolution: "globby@npm:13.1.3" + version: 13.1.4 + resolution: "globby@npm:13.1.4" dependencies: dir-glob: ^3.0.1 fast-glob: ^3.2.11 ignore: ^5.2.0 merge2: ^1.4.1 slash: ^4.0.0 - checksum: 93f06e02002cdf368f7e3d55bd59e7b00784c7cc8fe92c7ee5082cc7171ff6109fda45e1c97a80bb48bc811dedaf7843c7c9186f5f84bde4883ab630e13c43df + checksum: e8bc13879972082d590cd1b0e27080d90d2e12fff7eeb2cee9329c29115ace14cc5b9f899e3d6beb136ba826307a727016658919a6f383e1511d698acee81741 languageName: node linkType: hard @@ -9814,13 +9343,6 @@ dexie@latest: languageName: node linkType: hard -"globrex@npm:^0.1.2": - version: 0.1.2 - resolution: "globrex@npm:0.1.2" - checksum: adca162494a176ce9ecf4dd232f7b802956bb1966b37f60c15e49d2e7d961b66c60826366dc2649093cad5a0d69970cfa8875bd1695b5a1a2f33dcd2aa88da3c - languageName: node - linkType: hard - "gopd@npm:^1.0.1": version: 1.0.1 resolution: "gopd@npm:1.0.1" @@ -9831,9 +9353,9 @@ dexie@latest: linkType: hard "graceful-fs@npm:^4.0.0, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.4, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 languageName: node linkType: hard @@ -9860,7 +9382,7 @@ dexie@latest: languageName: node linkType: hard -"has-bigints@npm:^1.0.2": +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b @@ -9906,7 +9428,14 @@ dexie@latest: languageName: node linkType: hard -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": +"has-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "has-proto@npm:1.0.1" + checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 @@ -9957,14 +9486,7 @@ dexie@latest: languageName: node linkType: hard -"highlight.js@npm:*": - version: 11.7.0 - resolution: "highlight.js@npm:11.7.0" - checksum: 19e3fb8b56f4b361b057a8523b989dfeb6479bbd1e29cec3fac6fa5c78d09927d5fa61b7dba6631fdb57cfdca9b3084aa4da49405ceaf4a67f67beae2ed5b77d - languageName: node - linkType: hard - -"highlight.js@npm:11.8.0": +"highlight.js@npm:*, highlight.js@npm:11.8.0": version: 11.8.0 resolution: "highlight.js@npm:11.8.0" checksum: d2578a57aee7315946ff19379053fd0a28b127baabf7617ab1d28d62cdc4eaf3d75053569cb8479a5afdc7a68f1ba9a6c1d612d8ae399b4b9aa43093b4fb6831 @@ -9996,12 +9518,12 @@ dexie@latest: languageName: node linkType: hard -"hosted-git-info@npm:^3.0.6": - version: 3.0.8 - resolution: "hosted-git-info@npm:3.0.8" +"hosted-git-info@npm:^4.0.1": + version: 4.1.0 + resolution: "hosted-git-info@npm:4.1.0" dependencies: lru-cache: ^6.0.0 - checksum: 5af7a69581acb84206a7b8e009f4680c36396814e92c8a83973dfb3b87e44e44d1f7b8eaf3e4a953686482770ecb78406a4ce4666bfdfe447762434127871d8d + checksum: c3f87b3c2f7eb8c2748c8f49c0c2517c9a95f35d26f4bf54b2a8cba05d2e668f3753548b6ea366b18ec8dadb4e12066e19fa382a01496b0ffa0497eb23cbe461 languageName: node linkType: hard @@ -10015,9 +9537,9 @@ dexie@latest: linkType: hard "html-entities@npm:^2.1.0": - version: 2.3.2 - resolution: "html-entities@npm:2.3.2" - checksum: 522d8d202df301ff51b517a379e642023ed5c81ea9fb5674ffad88cff386165733d00b6089d5c2fcc644e44777d6072017b6216d8fa40f271d3610420d00a886 + version: 2.3.3 + resolution: "html-entities@npm:2.3.3" + checksum: 92521501da8aa5f66fee27f0f022d6e9ceae62667dae93aa6a2f636afa71ad530b7fb24a18d4d6c124c9885970cac5f8a52dbf1731741161002816ae43f98196 languageName: node linkType: hard @@ -10046,9 +9568,9 @@ dexie@latest: linkType: hard "html-tags@npm:^3.2.0": - version: 3.2.0 - resolution: "html-tags@npm:3.2.0" - checksum: a0c9e96ac26c84adad9cc66d15d6711a17f60acda8d987218f1d4cbaacd52864939b230e635cce5a1179f3ddab2a12b9231355617dfbae7945fcfec5e96d2041 + version: 3.3.1 + resolution: "html-tags@npm:3.3.1" + checksum: b4ef1d5a76b678e43cce46e3783d563607b1d550cab30b4f511211564574770aa8c658a400b100e588bc60b8234e59b35ff72c7851cc28f3b5403b13a2c6cbce languageName: node linkType: hard @@ -10122,9 +9644,9 @@ dexie@latest: linkType: hard "human-signals@npm:^4.3.0": - version: 4.3.0 - resolution: "human-signals@npm:4.3.0" - checksum: 662b976b1063a8afb8fd7fa50bde6975997e17ea6ceba2aad54aacf1dc239a2cd7d14d27b3ceca0c6288627f4b45c56c2c89618455ff52cd9377c02d6328cd7c + version: 4.3.1 + resolution: "human-signals@npm:4.3.1" + checksum: 6f12958df3f21b6fdaf02d90896c271df00636a31e2bbea05bddf817a35c66b38a6fdac5863e2df85bd52f34958997f1f50350ff97249e1dff8452865d5235d1 languageName: node linkType: hard @@ -10177,11 +9699,11 @@ dexie@latest: linkType: hard "i18next@npm:*": - version: 19.8.4 - resolution: "i18next@npm:19.8.4" + version: 22.4.15 + resolution: "i18next@npm:22.4.15" dependencies: - "@babel/runtime": ^7.12.0 - checksum: 49707e82681984ccc96eb29e0b85e29609a434f04d51e730f649448036b613994b3f4a14b113a20e128a4441bce2b4be683529a400bce8124f8c50b5557a49e6 + "@babel/runtime": ^7.20.6 + checksum: fced898227983e439c59e7aa6e7b87e53ad1b8a1c85f0613a968881418266e5336e9443831125590559796075d516fe3dbf8118679c894094a0a404be78b02a2 languageName: node linkType: hard @@ -10218,9 +9740,9 @@ dexie@latest: linkType: hard "ignore@npm:^5.2.0, ignore@npm:^5.2.1": - version: 5.2.1 - resolution: "ignore@npm:5.2.1" - checksum: 7251d00cba49fe88c4f3565fadeb4aa726ba38294a9a79ffed542edc47bafd989d4b2ccf65700c5b1b26a1e91dfc7218fb23017937c79216025d5caeec0ee9d5 + version: 5.2.4 + resolution: "ignore@npm:5.2.4" + checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef languageName: node linkType: hard @@ -10267,14 +9789,14 @@ dexie@latest: linkType: hard "import-local@npm:^3.0.2": - version: 3.0.2 - resolution: "import-local@npm:3.0.2" + version: 3.1.0 + resolution: "import-local@npm:3.1.0" dependencies: pkg-dir: ^4.2.0 resolve-cwd: ^3.0.0 bin: import-local-fixture: fixtures/cli.js - checksum: c74d9f9484c878cda1de3434613c7ff72d5dadcf20e5482542232d7c2575b713ff88701d6675fcf09a3684cb23fb407c8b333b9cbc59438712723d058d8e976c + checksum: bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd languageName: node linkType: hard @@ -10330,14 +9852,14 @@ dexie@latest: languageName: node linkType: hard -"internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.4": - version: 1.0.4 - resolution: "internal-slot@npm:1.0.4" +"internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5": + version: 1.0.5 + resolution: "internal-slot@npm:1.0.5" dependencies: - get-intrinsic: ^1.1.3 + get-intrinsic: ^1.2.0 has: ^1.0.3 side-channel: ^1.0.4 - checksum: 8974588d06bab4f675573a3b52975370facf6486df51bc0567a982c7024fa29495f10b76c0d4dc742dd951d1b72024fdc1e31bb0bedf1678dc7aacacaf5a4f73 + checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a languageName: node linkType: hard @@ -10420,14 +9942,14 @@ dexie@latest: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.1": - version: 3.0.1 - resolution: "is-array-buffer@npm:3.0.1" +"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": + version: 3.0.2 + resolution: "is-array-buffer@npm:3.0.2" dependencies: call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 + get-intrinsic: ^1.2.0 is-typed-array: ^1.1.10 - checksum: f26ab87448e698285daf707e52a533920449f7abf63714140ffab9d5571aa5a71ac2fa2677e8b793ad0d5d3e40078d4d2c8a0ab39c957e3cfc6513bb6c9dfdc9 + checksum: dcac9dda66ff17df9cabdc58214172bf41082f956eab30bb0d86bc0fab1e44b690fc8e1f855cf2481245caf4e8a5a006a982a71ddccec84032ed41f9d8da8c14 languageName: node linkType: hard @@ -10446,18 +9968,21 @@ dexie@latest: linkType: hard "is-bigint@npm:^1.0.1": - version: 1.0.1 - resolution: "is-bigint@npm:1.0.1" - checksum: 04aa6fde59d2b7929df865acb89c8d7f89f919cc149b8be11e3560b1aab8667e5d939cc8954097c496f7dda80fd5bb67f829ca80ab66cc68918e41e2c1b9c5d7 + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: ^1.0.1 + checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 languageName: node linkType: hard "is-boolean-object@npm:^1.1.0": - version: 1.1.0 - resolution: "is-boolean-object@npm:1.1.0" + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" dependencies: - call-bind: ^1.0.0 - checksum: 3ead0446176ee42a69f87658bf12d53c135095336d34765fa65f137f378ea125429bf777f91f6dd3407db80829d742bc4fb2fdaf8d2cf6ba82a2de2a07fbbac7 + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 languageName: node linkType: hard @@ -10475,12 +10000,12 @@ dexie@latest: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.9.0": - version: 2.11.0 - resolution: "is-core-module@npm:2.11.0" +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.12.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0": + version: 2.12.0 + resolution: "is-core-module@npm:2.12.0" dependencies: has: ^1.0.3 - checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab + checksum: f7f7eb2ab71fd769ee9fb2385c095d503aa4b5ce0028c04557de03f1e67a87c85e5bac1f215945fc3c955867a139a415a3ec4c4234a0bffdf715232660f440a6 languageName: node linkType: hard @@ -10513,7 +10038,7 @@ dexie@latest: languageName: node linkType: hard -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": +"is-docker@npm:^2.0.0": version: 2.2.1 resolution: "is-docker@npm:2.2.1" bin: @@ -10522,6 +10047,15 @@ dexie@latest: languageName: node linkType: hard +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90 + languageName: node + linkType: hard + "is-extendable@npm:^0.1.0": version: 0.1.1 resolution: "is-extendable@npm:0.1.1" @@ -10607,6 +10141,17 @@ dexie@latest: languageName: node linkType: hard +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: ^3.0.0 + bin: + is-inside-container: cli.js + checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03 + languageName: node + linkType: hard + "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" @@ -10650,9 +10195,11 @@ dexie@latest: linkType: hard "is-number-object@npm:^1.0.4": - version: 1.0.4 - resolution: "is-number-object@npm:1.0.4" - checksum: d8e4525b5c151f1830872bf217901b58b3a9f66d93fe2f71c2087418e03d7f5c19a3ad64afa0feb70dafd93f7b97e205e3520a8ff007be665e54b377f5b736a8 + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: ^1.0.0 + checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 languageName: node linkType: hard @@ -10773,9 +10320,9 @@ dexie@latest: linkType: hard "is-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "is-stream@npm:2.0.0" - checksum: 4dc47738e26bc4f1b3be9070b6b9e39631144f204fc6f87db56961220add87c10a999ba26cf81699f9ef9610426f69cb08a4713feff8deb7d8cadac907826935 + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 languageName: node linkType: hard @@ -10796,15 +10343,15 @@ dexie@latest: linkType: hard "is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.3 - resolution: "is-symbol@npm:1.0.3" + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" dependencies: - has-symbols: ^1.0.1 - checksum: c6d54bd01218fa202da8ce91525ca41a907819be5f000df9ab9621467e087eb36f34b2dbfa51a2a699a282e860681ffa6a787d69e944ba99a46d3df553ff2798 + has-symbols: ^1.0.2 + checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 languageName: node linkType: hard -"is-typed-array@npm:^1.1.10": +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": version: 1.1.10 resolution: "is-typed-array@npm:1.1.10" dependencies: @@ -10896,10 +10443,10 @@ dexie@latest: languageName: node linkType: hard -"is-what@npm:^3.7.1": - version: 3.12.0 - resolution: "is-what@npm:3.12.0" - checksum: 912444cd0806f6c0bc215a2c1ecbff34b4b59fd582ed553f1000da587689a29d20644361053d4dd608a9a149b34a04238274e1b60d81f6e5106d7d42b7f54908 +"is-what@npm:^3.14.1": + version: 3.14.1 + resolution: "is-what@npm:3.14.1" + checksum: a9a6ce92d33799f1ae0916c7afb6f8128a23ce9d28bd69d9ec3ec88910e7a1f68432e6236c3c8a4d544cf0b864675e5d828437efde60ee0cf8102061d395c1df languageName: node linkType: hard @@ -10988,15 +10535,15 @@ dexie@latest: linkType: hard "istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": - version: 5.1.0 - resolution: "istanbul-lib-instrument@npm:5.1.0" + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" dependencies: "@babel/core": ^7.12.3 "@babel/parser": ^7.14.7 "@istanbuljs/schema": ^0.1.2 istanbul-lib-coverage: ^3.2.0 semver: ^6.3.0 - checksum: 8b82e733c69fe9f94d2e21f3e5760c9bedb110329aa75df4bd40df95f1cac3bf38767e43f35b125cc547ceca7376b72ce7d95cc5238b7e9088345c7b589233d3 + checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 languageName: node linkType: hard @@ -11012,23 +10559,23 @@ dexie@latest: linkType: hard "istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.0 - resolution: "istanbul-lib-source-maps@npm:4.0.0" + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" dependencies: debug: ^4.1.1 istanbul-lib-coverage: ^3.0.0 source-map: ^0.6.1 - checksum: 292bfb4083e5f8783cdf829a7686b1a377d0c6c2119d4343c8478e948b38146c4827cddc7eee9f57605acd63c291376d67e4a84163d37c5fc78ad0f27f7e2621 + checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 languageName: node linkType: hard "istanbul-reports@npm:^3.1.3": - version: 3.1.3 - resolution: "istanbul-reports@npm:3.1.3" + version: 3.1.5 + resolution: "istanbul-reports@npm:3.1.5" dependencies: html-escaper: ^2.0.0 istanbul-lib-report: ^3.0.0 - checksum: ef6e0d9ed05ecab1974c6eb46cc2a12d8570911934192db4ed40cf1978449240ea80aae32c4dd5555b67407cdf860212d1a9e415443af69641aa57ed1da5ebbb + checksum: 7867228f83ed39477b188ea07e7ccb9b4f5320b6f73d1db93a0981b7414fa4ef72d3f80c4692c442f90fc250d9406e71d8d7ab65bb615cb334e6292b73192b89 languageName: node linkType: hard @@ -11334,14 +10881,14 @@ dexie@latest: linkType: hard "jest-pnp-resolver@npm:^1.2.2": - version: 1.2.2 - resolution: "jest-pnp-resolver@npm:1.2.2" + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" peerDependencies: jest-resolve: "*" peerDependenciesMeta: jest-resolve: optional: true - checksum: bd85dcc0e76e0eb0c3d56382ec140f08d25ff4068cda9d0e360bb78fb176cb726d0beab82dc0e8694cafd09f55fee7622b8bcb240afa5fad301f4ed3eebb4f47 + checksum: db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 languageName: node linkType: hard @@ -11609,9 +11156,9 @@ dexie@latest: linkType: hard "js-sdsl@npm:^4.1.4": - version: 4.1.4 - resolution: "js-sdsl@npm:4.1.4" - checksum: 1977cea4ab18e0e03e28bdf0371d8b443fad65ca0988e0faa216406faf6bb943714fe8f7cc7a5bfe5f35ba3d94ddae399f4d10200f547f2c3320688b0670d726 + version: 4.4.0 + resolution: "js-sdsl@npm:4.4.0" + checksum: 7bb08a2d746ab7ff742720339aa006c631afe05e77d11eda988c1c35fae8e03e492e4e347e883e786e3ce6170685d4780c125619111f0730c11fdb41b04059c7 languageName: node linkType: hard @@ -11699,16 +11246,16 @@ dexie@latest: linkType: hard "jsdom@npm:^20.0.0": - version: 20.0.0 - resolution: "jsdom@npm:20.0.0" + version: 20.0.3 + resolution: "jsdom@npm:20.0.3" dependencies: abab: ^2.0.6 - acorn: ^8.7.1 - acorn-globals: ^6.0.0 + acorn: ^8.8.1 + acorn-globals: ^7.0.0 cssom: ^0.5.0 cssstyle: ^2.3.0 data-urls: ^3.0.2 - decimal.js: ^10.3.1 + decimal.js: ^10.4.2 domexception: ^4.0.0 escodegen: ^2.0.0 form-data: ^4.0.0 @@ -11716,25 +11263,24 @@ dexie@latest: http-proxy-agent: ^5.0.0 https-proxy-agent: ^5.0.1 is-potential-custom-element-name: ^1.0.1 - nwsapi: ^2.2.0 - parse5: ^7.0.0 + nwsapi: ^2.2.2 + parse5: ^7.1.1 saxes: ^6.0.0 symbol-tree: ^3.2.4 - tough-cookie: ^4.0.0 - w3c-hr-time: ^1.0.2 - w3c-xmlserializer: ^3.0.0 + tough-cookie: ^4.1.2 + w3c-xmlserializer: ^4.0.0 webidl-conversions: ^7.0.0 whatwg-encoding: ^2.0.0 whatwg-mimetype: ^3.0.0 whatwg-url: ^11.0.0 - ws: ^8.8.0 + ws: ^8.11.0 xml-name-validator: ^4.0.0 peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: f69b40679d8cfaee2353615445aaff08b823c53dc7778ede6592d02ed12b3e9fb4e8db2b6d033551b67e08424a3adb2b79d231caa7dcda2d16019c20c705c11f + checksum: 6e2ae21db397133a061b270c26d2dbc0b9051733ea3b896a7ece78d79f475ff0974f766a413c1198a79c793159119169f2335ddb23150348fbfdcfa6f3105536 languageName: node linkType: hard @@ -11791,7 +11337,7 @@ dexie@latest: languageName: node linkType: hard -"json5@npm:^1.0.1": +"json5@npm:^1.0.1, json5@npm:^1.0.2": version: 1.0.2 resolution: "json5@npm:1.0.2" dependencies: @@ -11825,9 +11371,9 @@ dexie@latest: linkType: hard "jsonpointer@npm:^5.0.0": - version: 5.0.0 - resolution: "jsonpointer@npm:5.0.0" - checksum: c7ec0b6bb596b81de687bc12945586bbcdc80dfb54919656d2690d76334f796a936270067ee9f1b5bbc2d9ecc551afb366ac35e6685aa61f07b5b68d1e5e857d + version: 5.0.1 + resolution: "jsonpointer@npm:5.0.1" + checksum: 0b40f712900ad0c846681ea2db23b6684b9d5eedf55807b4708c656f5894b63507d0e28ae10aa1bddbea551241035afe62b6df0800fc94c2e2806a7f3adecd7c languageName: node linkType: hard @@ -11854,9 +11400,16 @@ dexie@latest: linkType: hard "just-extend@npm:^4.0.2": - version: 4.1.1 - resolution: "just-extend@npm:4.1.1" - checksum: 066808f9a4b8b87d4966d42eca4ed7ee3602791ac70bf4d55bc2f44b0a2214a9dd05976d9581877731f8536f6eae11fee28968a5fabea5e43df7c965966126f4 + version: 4.2.1 + resolution: "just-extend@npm:4.2.1" + checksum: ff9fdede240fad313efeeeb68a660b942e5586d99c0058064c78884894a2690dc09bba44c994ad4e077e45d913fef01a9240c14a72c657b53687ac58de53b39c + languageName: node + linkType: hard + +"jwt-decode@npm:^3.1.2": + version: 3.1.2 + resolution: "jwt-decode@npm:3.1.2" + checksum: 20a4b072d44ce3479f42d0d2c8d3dabeb353081ba4982e40b83a779f2459a70be26441be6c160bfc8c3c6eadf9f6380a036fbb06ac5406b5674e35d8c4205eeb languageName: node linkType: hard @@ -11928,9 +11481,9 @@ dexie@latest: linkType: hard "language-subtag-registry@npm:~0.3.2": - version: 0.3.21 - resolution: "language-subtag-registry@npm:0.3.21" - checksum: 5f794525a5bfcefeea155a681af1c03365b60e115b688952a53c6e0b9532b09163f57f1fcb69d6150e0e805ec0350644a4cb35da98f4902562915be9f89572a1 + version: 0.3.22 + resolution: "language-subtag-registry@npm:0.3.22" + checksum: 8ab70a7e0e055fe977ac16ea4c261faec7205ac43db5e806f72e5b59606939a3b972c4bd1e10e323b35d6ffa97c3e1c4c99f6553069dad2dfdd22020fa3eb56a languageName: node linkType: hard @@ -11960,11 +11513,11 @@ dexie@latest: linkType: hard "lazystream@npm:^1.0.0": - version: 1.0.0 - resolution: "lazystream@npm:1.0.0" + version: 1.0.1 + resolution: "lazystream@npm:1.0.1" dependencies: readable-stream: ^2.0.5 - checksum: 6cb9352a697bad74471671b299997edc736b400bb405dc409acfc9ffe584bb6f86898c4ace86b2f145ae32fe42ef60bd68749acb62c2ff3fa6bded721193f79c + checksum: 822c54c6b87701a6491c70d4fabc4cafcf0f87d6b656af168ee7bb3c45de9128a801cb612e6eeeefc64d298a7524a698dd49b13b0121ae50c2ae305f0dcc5310 languageName: node linkType: hard @@ -12060,9 +11613,9 @@ dexie@latest: linkType: hard "libsodium-sumo@npm:^0.7.0": - version: 0.7.10 - resolution: "libsodium-sumo@npm:0.7.10" - checksum: 67ed75fa15559bad7cca5cdc2d5eb20725281be38a08814f7e39af8ea0c0d83ed2211e534f7b47460b6a48a1f7bb5c31759e4bc5cc79fb74292ffea8f90ee741 + version: 0.7.11 + resolution: "libsodium-sumo@npm:0.7.11" + checksum: 9efac902a05002e1caca1c1df3a7cd838ac370588cfa31107d6e787cb5a181f4ca46c7961e3136943c8b07b1d543c0283b91e08a141f9b55a74f10808c3017ef languageName: node linkType: hard @@ -12108,9 +11661,9 @@ dexie@latest: linkType: hard "lines-and-columns@npm:^1.1.6": - version: 1.1.6 - resolution: "lines-and-columns@npm:1.1.6" - checksum: 198a5436b1fa5cf703bae719c01c686b076f0ad7e1aafd95a58d626cabff302dc0414822126f2f80b58a8c3d66cda8a7b6da064f27130f87e1d3506d6dfd0d68 + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 languageName: node linkType: hard @@ -12206,9 +11759,9 @@ dexie@latest: linkType: hard "loader-runner@npm:^4.2.0": - version: 4.2.0 - resolution: "loader-runner@npm:4.2.0" - checksum: e61aea8b6904b8af53d9de6f0484da86c462c0001f4511bedc837cec63deb9475cea813db62f702cd7930420ccb0e75c78112270ca5c8b61b374294f53c0cb3a + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 languageName: node linkType: hard @@ -12332,7 +11885,7 @@ dexie@latest: languageName: node linkType: hard -"lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:>=4.17.21, lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -12441,28 +11994,35 @@ dexie@latest: languageName: node linkType: hard -"lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": +"lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 languageName: node linkType: hard +"lru-cache@npm:^9.0.0": + version: 9.1.1 + resolution: "lru-cache@npm:9.1.1" + checksum: 4d703bb9b66216bbee55ead82a9682820a2b6acbdfca491b235390b1ef1056000a032d56dfb373fdf9ad4492f1fa9d04cc9a05a77f25bd7ce6901d21ad9b68b7 + languageName: node + linkType: hard + "lz-string@npm:^1.4.4": - version: 1.4.4 - resolution: "lz-string@npm:1.4.4" + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" bin: lz-string: bin/bin.js - checksum: 54e31238a61a84d8f664d9860a9fba7310c5b97a52c444f80543069bc084815eff40b8d4474ae1d93992fdf6c252dca37cf27f6adbeb4dbc3df2f3ac773d0e61 + checksum: 1ee98b4580246fd90dd54da6e346fb1caefcf05f677c686d9af237a157fdea3fd7c83a4bc58f858cd5b10a34d27afe0fdcbd0505a47e0590726a873dc8b8f65d languageName: node linkType: hard "magic-string@npm:^0.25.0, magic-string@npm:^0.25.7": - version: 0.25.7 - resolution: "magic-string@npm:0.25.7" + version: 0.25.9 + resolution: "magic-string@npm:0.25.9" dependencies: - sourcemap-codec: ^1.4.4 - checksum: 727a1fb70f9610304fe384f1df0251eb7d1d9dd779c07ef1225690361b71b216f26f5d934bfb11c919b5b0e7ba50f6240c823a6f2e44cfd33d4a07d7747ca829 + sourcemap-codec: ^1.4.8 + checksum: 9a0e55a15c7303fc360f9572a71cffba1f61451bc92c5602b1206c9d17f492403bf96f946dfce7483e66822d6b74607262e24392e87b0ac27b786e69a40e9b1a languageName: node linkType: hard @@ -12533,9 +12093,9 @@ dexie@latest: linkType: hard "map-obj@npm:^4.0.0": - version: 4.1.0 - resolution: "map-obj@npm:4.1.0" - checksum: c62b22f23e58d742a093a0935fa904c92cc788d56132b75666160ac0c5704d3c677d28794594c7adf7ed0c177a96579e781dbf06e0a1b5d574c992a5c13877a3 + version: 4.3.0 + resolution: "map-obj@npm:4.3.0" + checksum: fbc554934d1a27a1910e842bc87b177b1a556609dd803747c85ece420692380827c6ae94a95cce4407c054fa0964be3bf8226f7f2cb2e9eeee432c7c1985684e languageName: node linkType: hard @@ -12547,12 +12107,12 @@ dexie@latest: linkType: hard "markdown-it-anchor@npm:^8.4.1": - version: 8.6.6 - resolution: "markdown-it-anchor@npm:8.6.6" + version: 8.6.7 + resolution: "markdown-it-anchor@npm:8.6.7" peerDependencies: "@types/markdown-it": "*" markdown-it: "*" - checksum: d67044f132cd94728227e065b2a82063a05ac5fb82a991c190fe48ac5ab308ed85f49a28e859bcf203e882af814902e67dd69724f6761c61709834b075cc6f95 + checksum: 828236768ac7f61ed5591393c1b1bfc5dbf2b6d0c58a3deec606c61dddaa12658a34450cbef37ab50a04453e618ce1efd47d86e4e52595024334898fd306225b languageName: node linkType: hard @@ -12587,11 +12147,11 @@ dexie@latest: linkType: hard "marked@npm:^4.0.10": - version: 4.2.5 - resolution: "marked@npm:4.2.5" + version: 4.3.0 + resolution: "marked@npm:4.3.0" bin: marked: bin/marked.js - checksum: dd7da20a3983c66b516463fad5dc8d15dc70e137d20b6dc491e134f671e84bd2ed5f859e2c35f21e56830a122e4356b9e574bcde49b72b7ad6bc121a215a1a98 + checksum: 0db6817893952c3ec710eb9ceafb8468bf5ae38cb0f92b7b083baa13d70b19774674be04db5b817681fa7c5c6a088f61300815e4dd75a59696f4716ad69f6260 languageName: node linkType: hard @@ -12634,11 +12194,11 @@ dexie@latest: linkType: hard "memfs@npm:^3.4.12": - version: 3.4.12 - resolution: "memfs@npm:3.4.12" + version: 3.5.1 + resolution: "memfs@npm:3.5.1" dependencies: fs-monkey: ^1.0.3 - checksum: dab8dec1ae0b2a92e4d563ac86846047cd7aeb17cde4ad51da85cff6e580c32d12b886354527788e36eb75f733dd8edbaf174476b7cea73fed9c5a0e45a6b428 + checksum: fcd037566a4bbb00d61dc991858395ccc06267ab5fe9471aeff28433f2a210bf5dd999e64e8b5473f8244f00dfb7ff3221b5c2fe41ff98af1439e5e2168fc410 languageName: node linkType: hard @@ -12755,7 +12315,7 @@ dexie@latest: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -12765,20 +12325,20 @@ dexie@latest: linkType: hard "minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": - version: 5.1.0 - resolution: "minimatch@npm:5.1.0" + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" dependencies: brace-expansion: ^2.0.1 - checksum: 15ce53d31a06361e8b7a629501b5c75491bc2b59712d53e802b1987121d91b433d73fcc5be92974fde66b2b51d8fb28d75a9ae900d249feb792bb1ba2a4f0a90 + checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 languageName: node linkType: hard -"minimatch@npm:^7.4.1": - version: 7.4.3 - resolution: "minimatch@npm:7.4.3" +"minimatch@npm:^8.0.2": + version: 8.0.4 + resolution: "minimatch@npm:8.0.4" dependencies: brace-expansion: ^2.0.1 - checksum: daa954231b6859e3ba0e5fbd2486986d3cae283bb69acb7ed3833c84a293f8d7edb8514360ea62c01426ba791446b2a1e1cc0d718bed15c0212cef35c59a6b95 + checksum: 2e46cffb86bacbc524ad45a6426f338920c529dd13f3a732cc2cf7618988ee1aae88df4ca28983285aca9e0f45222019ac2d14ebd17c1edadd2ee12221ab801a languageName: node linkType: hard @@ -12793,10 +12353,10 @@ dexie@latest: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": - version: 1.2.6 - resolution: "minimist@npm:1.2.6" - checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb +"minimist@npm:^1.2.0, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 languageName: node linkType: hard @@ -12852,18 +12412,25 @@ dexie@latest: linkType: hard "minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": - version: 3.3.5 - resolution: "minipass@npm:3.3.5" + version: 3.3.6 + resolution: "minipass@npm:3.3.6" dependencies: yallist: ^4.0.0 - checksum: f89f02bcaa0e0e4bb4c44ec796008e69fbca62db0aba6ead1bc57d25bdaefdf42102130f4f9ecb7d9c6b6cd35ff7b0c7b97d001d3435da8e629fb68af3aea57e + checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 + languageName: node + linkType: hard + +"minipass@npm:^4.2.4": + version: 4.2.8 + resolution: "minipass@npm:4.2.8" + checksum: 7f4914d5295a9a30807cae5227a37a926e6d910c03f315930fde52332cf0575dfbc20295318f91f0baf0e6bb11a6f668e30cde8027dea7a11b9d159867a3c830 languageName: node linkType: hard -"minipass@npm:^4.0.2, minipass@npm:^4.2.4": - version: 4.2.5 - resolution: "minipass@npm:4.2.5" - checksum: 4f9c19af23a5d4a9e7156feefc9110634b178a8cff8f8271af16ec5ebf7e221725a97429952c856f5b17b30c2065ebd24c81722d90c93d2122611d75b952b48f +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea languageName: node linkType: hard @@ -12885,13 +12452,13 @@ dexie@latest: linkType: hard "mkdirp@npm:^0.5.1, mkdirp@npm:~0.5.1": - version: 0.5.5 - resolution: "mkdirp@npm:0.5.5" + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" dependencies: - minimist: ^1.2.5 + minimist: ^1.2.6 bin: mkdirp: bin/cmd.js - checksum: 3bce20ea525f9477befe458ab85284b0b66c8dc3812f94155af07c827175948cdd8114852ac6c6d82009b13c1048c37f6d98743eb019651ee25c39acc8aabe7d + checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 languageName: node linkType: hard @@ -12914,11 +12481,11 @@ dexie@latest: linkType: hard "moo-color@npm:^1.0.2": - version: 1.0.2 - resolution: "moo-color@npm:1.0.2" + version: 1.0.3 + resolution: "moo-color@npm:1.0.3" dependencies: color-name: ^1.1.4 - checksum: 9425438cf14314ff8847fa911b3c6936cbe8550644c380733c4803719c3980a0de9324c70c3bc21c36b4aab3c181745774cc0efc4d3f5bfce009382eeeb89572 + checksum: 02bf59b6bbd5e86641bc062e2dc0843e6e579e18ef67e1c8e93bfc01945df578f20e66ce16aa9632db2aa0e16806e0914a26eb345a804f45fff1ae12a8906a29 languageName: node linkType: hard @@ -12944,11 +12511,11 @@ dexie@latest: linkType: hard "nan@npm:*, nan@npm:^2.3.2": - version: 2.15.0 - resolution: "nan@npm:2.15.0" + version: 2.17.0 + resolution: "nan@npm:2.17.0" dependencies: node-gyp: latest - checksum: 33e1bb4dfca447fe37d4bb5889be55de154828632c8d38646db67293a21afd61ed9909cdf1b886214a64707d935926c4e60e2b09de9edfc2ad58de31d6ce8f39 + checksum: ec609aeaf7e68b76592a3ba96b372aa7f5df5b056c1e37410b0f1deefbab5a57a922061e2c5b369bae9c7c6b5e6eecf4ad2dac8833a1a7d3a751e0a7c7f849ed languageName: node linkType: hard @@ -12962,9 +12529,9 @@ dexie@latest: linkType: hard "native-request@npm:^1.0.5": - version: 1.0.8 - resolution: "native-request@npm:1.0.8" - checksum: 7187fbe54d9874afcf19c14dbcbbf8aa04c1d5d6c3ae5c323f157373be80bf8aa84c4c69c58fa6d5005fd344eac9bf27fbda578e044da5e7059d27c0a36f1ddf + version: 1.1.0 + resolution: "native-request@npm:1.1.0" + checksum: ab96f79c7a5e726a88eaa90c700d4d844af884e68d9784d90d42134c12224105453e4db82b5985624b458e4a304d5f664c1be760e88b63f7f247001f4e755603 languageName: node linkType: hard @@ -13048,7 +12615,7 @@ dexie@latest: languageName: node linkType: hard -"node-fetch@npm:2.6.9, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9": +"node-fetch@npm:2.6.9": version: 2.6.9 resolution: "node-fetch@npm:2.6.9" dependencies: @@ -13062,9 +12629,23 @@ dexie@latest: languageName: node linkType: hard +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9": + version: 2.6.11 + resolution: "node-fetch@npm:2.6.11" + dependencies: + whatwg-url: ^5.0.0 + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 249d0666a9497553384d46b5ab296ba223521ac88fed4d8a17d6ee6c2efb0fc890f3e8091cafe7f9fba8151a5b8d925db2671543b3409a56c3cd522b468b47b3 + languageName: node + linkType: hard + "node-gyp@npm:latest": - version: 9.2.0 - resolution: "node-gyp@npm:9.2.0" + version: 9.3.1 + resolution: "node-gyp@npm:9.3.1" dependencies: env-paths: ^2.2.0 glob: ^7.1.4 @@ -13078,7 +12659,7 @@ dexie@latest: which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: 91f0589eabbd37f0d4e3fe9918f1f9e25afc707f6e107f0133be19c5aac62e731d92abdc2b106258665a4487b18cc2878d3fcd3dc2c6cffd68da1cb2a5ccf450 + checksum: b860e9976fa645ca0789c69e25387401b4396b93c8375489b5151a6c55cf2640a3b6183c212b38625ef7c508994930b72198338e3d09b9d7ade5acc4aaf51ea7 languageName: node linkType: hard @@ -13131,14 +12712,14 @@ dexie@latest: linkType: hard "normalize-package-data@npm:^3.0.0": - version: 3.0.0 - resolution: "normalize-package-data@npm:3.0.0" + version: 3.0.3 + resolution: "normalize-package-data@npm:3.0.3" dependencies: - hosted-git-info: ^3.0.6 - resolve: ^1.17.0 - semver: ^7.3.2 + hosted-git-info: ^4.0.1 + is-core-module: ^2.5.0 + semver: ^7.3.4 validate-npm-package-license: ^3.0.1 - checksum: 665ad6e3d0463f56ee8acc1f8f71c5f62535e4c689ed389521c36e8fd34273306f978c934154de3a43f5b128ed7010872ce3381948f8d4a63d70f50ed01ac2e0 + checksum: bbcee00339e7c26fdbc760f9b66d429258e2ceca41a5df41f5df06cc7652de8d82e8679ff188ca095cad8eff2b6118d7d866af2b68400f74602fbcbce39c160a languageName: node linkType: hard @@ -13239,10 +12820,10 @@ dexie@latest: languageName: node linkType: hard -"nwsapi@npm:^2.2.0": - version: 2.2.2 - resolution: "nwsapi@npm:2.2.2" - checksum: 43769106292bc95f776756ca2f3513dab7b4d506a97c67baec32406447841a35f65f29c1f95ab5d42785210fd41668beed33ca16fa058780be43b101ad73e205 +"nwsapi@npm:^2.2.2": + version: 2.2.4 + resolution: "nwsapi@npm:2.2.4" + checksum: a5eb9467158bdf255d27e9c4555e9ca02e4ba84ddce9b683856ed49de23eb1bb28ae3b8e791b7a93d156ad62b324a56f4d44cad827c2ca288c107ed6bdaff8a8 languageName: node linkType: hard @@ -13253,7 +12834,7 @@ dexie@latest: languageName: node linkType: hard -"object-inspect@npm:^1.12.2, object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": +"object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": version: 1.12.3 resolution: "object-inspect@npm:1.12.3" checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db @@ -13332,6 +12913,16 @@ dexie@latest: languageName: node linkType: hard +"oidc-client-ts@npm:^2.2.2": + version: 2.2.3 + resolution: "oidc-client-ts@npm:2.2.3" + dependencies: + crypto-js: ^4.1.1 + jwt-decode: ^3.1.2 + checksum: 78154b83384ca251d80f165c0886a518fcf2b66032401c6dbb515bec749d310270ae90dfea51cc041f9d04dee4f369978bc4bd5a4dc3abf0dc00d1a8f7ba72bd + languageName: node + linkType: hard + "omggif@npm:^1.0.10, omggif@npm:^1.0.9": version: 1.0.10 resolution: "omggif@npm:1.0.10" @@ -13366,14 +12957,15 @@ dexie@latest: languageName: node linkType: hard -"open@npm:^8.4.0": - version: 8.4.0 - resolution: "open@npm:8.4.0" +"open@npm:^9.1.0": + version: 9.1.0 + resolution: "open@npm:9.1.0" dependencies: - define-lazy-prop: ^2.0.0 - is-docker: ^2.1.1 + default-browser: ^4.0.0 + define-lazy-prop: ^3.0.0 + is-inside-container: ^1.0.0 is-wsl: ^2.2.0 - checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c + checksum: 3993c0f61d51fed8ac290e99c9c3cf45d3b6cfb3e2aa2b74cafd312c3486c22fd81df16ac8f3ab91dd8a4e3e729a16fc2480cfc406c4833416cf908acf1ae7c9 languageName: node linkType: hard @@ -13607,12 +13199,12 @@ dexie@latest: languageName: node linkType: hard -"parse5@npm:^7.0.0": - version: 7.1.1 - resolution: "parse5@npm:7.1.1" +"parse5@npm:^7.0.0, parse5@npm:^7.1.1": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" dependencies: entities: ^4.4.0 - checksum: 8f72fbfa6df83a3f29f58e1818f7bd46b47ff3e26d79c74e10b8fc7ef7ee76163f205113f1b2f6a5b8dc4e31e726f490444f04890cead6e974dbcbe8172b1321 + checksum: 59465dd05eb4c5ec87b76173d1c596e152a10e290b7abcda1aecf0f33be49646ea74840c69af975d7887543ea45564801736356c568d6b5e71792fd0f4055713 languageName: node linkType: hard @@ -13685,12 +13277,12 @@ dexie@latest: linkType: hard "path-scurry@npm:^1.6.1": - version: 1.6.3 - resolution: "path-scurry@npm:1.6.3" + version: 1.7.0 + resolution: "path-scurry@npm:1.7.0" dependencies: - lru-cache: ^7.14.1 - minipass: ^4.0.2 - checksum: 814ebd7f8df717e2381dc707ba3a3ddf84d0a4f9d653036c7554cb1fea632d4d78eb17dd5f4c85111b78ba8b8c0a5b59c756645c9d343bdacacda4ba8d1626c2 + lru-cache: ^9.0.0 + minipass: ^5.0.0 + checksum: 4e86df0fa6848cef1ba672d4a332b8dbd0297c42d5123bcc419d714c34b25ee6775b0d2e66dd5e698a38e9bcd808f8fc47333e3a3357307cada98e16bfae8b98 languageName: node linkType: hard @@ -13926,17 +13518,17 @@ dexie@latest: languageName: node linkType: hard -"postcss-colormin@npm:^5.3.0": - version: 5.3.0 - resolution: "postcss-colormin@npm:5.3.0" +"postcss-colormin@npm:^5.3.1": + version: 5.3.1 + resolution: "postcss-colormin@npm:5.3.1" dependencies: - browserslist: ^4.16.6 + browserslist: ^4.21.4 caniuse-api: ^3.0.0 colord: ^2.9.1 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.2.15 - checksum: 3d3e3cc25071407fb73d68541ca1039ebd154fceb649041461a8a3cab0400cc89b42dbb34a4eeaf573be4ba2370ce23af5e01aff5e03a8d72275f40605577212 + checksum: e5778baab30877cd1f51e7dc9d2242a162aeca6360a52956acd7f668c5bc235c2ccb7e4df0370a804d65ebe00c5642366f061db53aa823f9ed99972cebd16024 languageName: node linkType: hard @@ -14194,9 +13786,9 @@ dexie@latest: languageName: node linkType: hard -"postcss-merge-rules@npm:^5.1.3": - version: 5.1.3 - resolution: "postcss-merge-rules@npm:5.1.3" +"postcss-merge-rules@npm:^5.1.4": + version: 5.1.4 + resolution: "postcss-merge-rules@npm:5.1.4" dependencies: browserslist: ^4.21.4 caniuse-api: ^3.0.0 @@ -14204,7 +13796,7 @@ dexie@latest: postcss-selector-parser: ^6.0.5 peerDependencies: postcss: ^8.2.15 - checksum: 0ddaddff98cd7f3fac2b0e716c641f529a61a8668be6d5b48d60770d0a1246126088e1d606f309b9748ff598a3794f3fd6dd5b8c3d79112f84744cab5375d4d9 + checksum: 8ab6a569babe6cb412d6612adee74f053cea7edb91fa013398515ab36754b1fec830d68782ed8cdfb44cffdc6b78c79eab157bff650f428aa4460d3f3857447e languageName: node linkType: hard @@ -14539,15 +14131,15 @@ dexie@latest: languageName: node linkType: hard -"postcss-reduce-initial@npm:^5.1.1": - version: 5.1.1 - resolution: "postcss-reduce-initial@npm:5.1.1" +"postcss-reduce-initial@npm:^5.1.2": + version: 5.1.2 + resolution: "postcss-reduce-initial@npm:5.1.2" dependencies: browserslist: ^4.21.4 caniuse-api: ^3.0.0 peerDependencies: postcss: ^8.2.15 - checksum: 1b704aba8c38103cbb5a75c6201dbf58ec2f3a978013c7f7e8957fd3bf3282f992050dec5a01bc050d031bad836e187dd6622b922ca78ab92bcd0afd21fb0b98 + checksum: 55db697f85231a81f1969d54c894e4773912d9ddb914f9b03d2e73abc4030f2e3bef4d7465756d0c1acfcc2c2d69974bfb50a972ab27546a7d68b5a4fc90282b languageName: node linkType: hard @@ -14608,12 +14200,12 @@ dexie@latest: linkType: hard "postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": - version: 6.0.11 - resolution: "postcss-selector-parser@npm:6.0.11" + version: 6.0.12 + resolution: "postcss-selector-parser@npm:6.0.12" dependencies: cssesc: ^3.0.0 util-deprecate: ^1.0.2 - checksum: 0b01aa9c2d2c8dbeb51e9b204796b678284be9823abc8d6d40a8b16d4149514e922c264a8ed4deb4d6dbced564b9be390f5942c058582d8656351516d6c49cde + checksum: f166ed4350511f6fb4a7e82aaaa6dfd81a1e648d4567ca15a3ca87b7ea2e55a8c136fb0ae9456b7b88a390c160f05d06bd1c69f47d7e331b53b70941e06e90fe languageName: node linkType: hard @@ -14710,9 +14302,9 @@ dexie@latest: linkType: hard "pretty-bytes@npm:^5.3.0, pretty-bytes@npm:^5.4.1": - version: 5.5.0 - resolution: "pretty-bytes@npm:5.5.0" - checksum: 69025b26241e4d3c47609250d5786180511001d81f2d34f3a816b501947923e9a3249848dfcac41493f276cbdf7d84d1f4a4f8d69c5714f876b149f975b5f235 + version: 5.6.0 + resolution: "pretty-bytes@npm:5.6.0" + checksum: 9c082500d1e93434b5b291bd651662936b8bd6204ec9fa17d563116a192d6d86b98f6d328526b4e8d783c07d5499e2614a807520249692da9ec81564b2f439cd languageName: node linkType: hard @@ -14769,6 +14361,13 @@ dexie@latest: languageName: node linkType: hard +"promise-polyfill@npm:^8.2.3": + version: 8.3.0 + resolution: "promise-polyfill@npm:8.3.0" + checksum: 206373802076c77def0805758d0a8ece64120dfa6603f092404a1004211f8f2f67f33cadbc35953fc2a8ed0b0d38c774e88bdf01e20ce7a920723a60df84b7a5 + languageName: node + linkType: hard + "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -14780,12 +14379,12 @@ dexie@latest: linkType: hard "prompts@npm:^2.0.1": - version: 2.4.0 - resolution: "prompts@npm:2.4.0" + version: 2.4.2 + resolution: "prompts@npm:2.4.2" dependencies: kleur: ^3.0.3 sisteransi: ^1.0.5 - checksum: 96c7bef8eb3c0bb2076d2bc5ee473f06e6d8ac01ac4d0f378dfeb0ddaf2f31c339360ec8f0f8486f78601d16ebef7c6bd9886d44b937ba01bab568b937190265 + checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d languageName: node linkType: hard @@ -14876,9 +14475,9 @@ dexie@latest: linkType: hard "psl@npm:^1.1.33": - version: 1.8.0 - resolution: "psl@npm:1.8.0" - checksum: 6150048ed2da3f919478bee8a82f3828303bc0fc730fb015a48f83c9977682c7b28c60ab01425a72d82a2891a1681627aa530a991d50c086b48a3be27744bde7 + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d languageName: node linkType: hard @@ -14904,16 +14503,16 @@ dexie@latest: linkType: hard "punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 + version: 2.3.0 + resolution: "punycode@npm:2.3.0" + checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 languageName: node linkType: hard "pure-rand@npm:^6.0.0": - version: 6.0.0 - resolution: "pure-rand@npm:6.0.0" - checksum: ad1378d0a4859482d053a5264b2b485b445ece4bbc56f8959c233ea678b81ac2d613737925d496ded134eff5f29cc5546bf7492b6bce319ee27bebbad8a0c612 + version: 6.0.2 + resolution: "pure-rand@npm:6.0.2" + checksum: 79de33876a4f515d759c48e98d00756bbd916b4ea260cc572d7adfa4b62cace9952e89f0241d0410214554503d25061140fe325c66f845213d2b1728ba8d413e languageName: node linkType: hard @@ -14924,6 +14523,13 @@ dexie@latest: languageName: node linkType: hard +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 + languageName: node + linkType: hard + "quick-lru@npm:^4.0.1": version: 4.0.1 resolution: "quick-lru@npm:4.0.1" @@ -15003,7 +14609,7 @@ dexie@latest: languageName: node linkType: hard -"react-is@npm:^16.13.1, react-is@npm:^16.7.0": +"react-is@npm:^16.12.0, react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f @@ -15018,9 +14624,9 @@ dexie@latest: linkType: hard "react-is@npm:^18.0.0": - version: 18.0.0 - resolution: "react-is@npm:18.0.0" - checksum: d38f6afee4d8d791cdd69c715841c01a503c9b06da6158e0893447cea6ba50cd262dca9bde84127720cf44fd05c58185eafc32accace4bb2deb03b3cdbeb6b6b + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e languageName: node linkType: hard @@ -15178,19 +14784,19 @@ dexie@latest: linkType: hard "readable-stream@npm:3, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" dependencies: inherits: ^2.0.3 string_decoder: ^1.1.1 util-deprecate: ^1.0.1 - checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 + checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d languageName: node linkType: hard "readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.5, readable-stream@npm:^2.1.5, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.5, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" dependencies: core-util-is: ~1.0.0 inherits: ~2.0.3 @@ -15199,7 +14805,7 @@ dexie@latest: safe-buffer: ~5.1.1 string_decoder: ~1.1.1 util-deprecate: ~1.0.1 - checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 + checksum: 65645467038704f0c8aaf026a72fbb588a9e2ef7a75cd57a01702ee9db1c4a1e4b03aaad36861a6a0926546a74d174149c8c207527963e0c2d3eee2f37678a42 languageName: node linkType: hard @@ -15213,11 +14819,11 @@ dexie@latest: linkType: hard "readdir-glob@npm:^1.0.0": - version: 1.1.2 - resolution: "readdir-glob@npm:1.1.2" + version: 1.1.3 + resolution: "readdir-glob@npm:1.1.3" dependencies: minimatch: ^5.1.0 - checksum: 1e5f701d3c94af5653e1736dfef99e991869c6e1c87bf08835d8c641f767e73ae25b829d3d1f8504fab8cad49b70b718ef960d3afee5be45cd779ccaeb264ed4 + checksum: 1dc0f7440ff5d9378b593abe9d42f34ebaf387516615e98ab410cf3a68f840abbf9ff1032d15e0a0dbffa78f9e2c46d4fafdbaac1ca435af2efe3264e3f21874 languageName: node linkType: hard @@ -15335,14 +14941,14 @@ dexie@latest: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" +"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0": + version: 1.5.0 + resolution: "regexp.prototype.flags@npm:1.5.0" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 + define-properties: ^1.2.0 + functions-have-names: ^1.2.3 + checksum: c541687cdbdfff1b9a07f6e44879f82c66bbf07665f9a7544c5fd16acdb3ec8d1436caab01662d2fbcad403f3499d49ab0b77fbc7ef29ef961d98cc4bc9755b4 languageName: node linkType: hard @@ -15543,22 +15149,22 @@ dexie@latest: linkType: hard "resolve.exports@npm:^2.0.0": - version: 2.0.0 - resolution: "resolve.exports@npm:2.0.0" - checksum: d8bee3b0cc0a0ae6c8323710983505bc6a3a2574f718e96f01e048a0f0af035941434b386cc9efc7eededc5e1199726185c306ec6f6a1aa55d5fbad926fd0634 + version: 2.0.2 + resolution: "resolve.exports@npm:2.0.2" + checksum: 1c7778ca1b86a94f8ab4055d196c7d87d1874b96df4d7c3e67bbf793140f0717fd506dcafd62785b079cd6086b9264424ad634fb904409764c3509c3df1653f2 languageName: node linkType: hard -"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" +"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1": + version: 1.22.3 + resolution: "resolve@npm:1.22.3" dependencies: - is-core-module: ^2.9.0 + is-core-module: ^2.12.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e + checksum: fb834b81348428cb545ff1b828a72ea28feb5a97c026a1cf40aa1008352c72811ff4d4e71f2035273dc536dcfcae20c13604ba6283c612d70fa0b6e44519c374 languageName: node linkType: hard @@ -15575,16 +15181,16 @@ dexie@latest: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b" +"resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": + version: 1.22.3 + resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=07638b" dependencies: - is-core-module: ^2.9.0 + is-core-module: ^2.12.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b + checksum: ad59734723b596d0891321c951592ed9015a77ce84907f89c9d9307dd0c06e11a67906a3e628c4cae143d3e44898603478af0ddeb2bba3f229a9373efe342665 languageName: node linkType: hard @@ -15669,16 +15275,16 @@ dexie@latest: linkType: hard "rollup@npm:^2.43.1": - version: 2.45.2 - resolution: "rollup@npm:2.45.2" + version: 2.79.1 + resolution: "rollup@npm:2.79.1" dependencies: - fsevents: ~2.3.1 + fsevents: ~2.3.2 dependenciesMeta: fsevents: optional: true bin: rollup: dist/bin/rollup - checksum: c049bedc191199842fab13248fdd74dbb33262b5a42ce35abe268037aa8be0f9a32739f2e28c74e7aaacae514fbb637ef79a20ef784f7a33b33587da479065bb + checksum: 6a2bf167b3587d4df709b37d149ad0300692cc5deb510f89ac7bdc77c8738c9546ae3de9322b0968e1ed2b0e984571f5f55aae28fa7de4cfcb1bc5402a4e2be6 languageName: node linkType: hard @@ -15691,19 +15297,30 @@ dexie@latest: languageName: node linkType: hard +"run-applescript@npm:^5.0.0": + version: 5.0.0 + resolution: "run-applescript@npm:5.0.0" + dependencies: + execa: ^5.0.0 + checksum: d00c2dbfa5b2d774de7451194b8b125f40f65fc183de7d9dcae97f57f59433586d3c39b9001e111c38bfa24c3436c99df1bb4066a2a0c90d39a8c4cd6889af77 + languageName: node + linkType: hard + "run-parallel@npm:^1.1.9": - version: 1.1.10 - resolution: "run-parallel@npm:1.1.10" - checksum: 360996d8b7abe586320a01a42093df2edf41699bbb0d493a4191ec52dda4354d0b25954e0608162d3bb304faa5f73a194f85d6d0d4c016154b2a8132f757fa98 + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: ^1.2.2 + checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d languageName: node linkType: hard "rxjs@npm:^7.8.0": - version: 7.8.0 - resolution: "rxjs@npm:7.8.0" + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" dependencies: tslib: ^2.1.0 - checksum: 61b4d4fd323c1043d8d6ceb91f24183b28bcf5def4f01ca111511d5c6b66755bc5578587fe714ef5d67cf4c9f2e26f4490d4e1d8cabf9bd5967687835e9866a2 + checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f119 languageName: node linkType: hard @@ -15776,14 +15393,14 @@ dexie@latest: linkType: hard "schema-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "schema-utils@npm:4.0.0" + version: 4.0.1 + resolution: "schema-utils@npm:4.0.1" dependencies: "@types/json-schema": ^7.0.9 - ajv: ^8.8.0 + ajv: ^8.9.0 ajv-formats: ^2.1.1 - ajv-keywords: ^5.0.0 - checksum: c843e92fdd1a5c145dbb6ffdae33e501867f9703afac67bdf35a685e49f85b1dcc10ea250033175a64bd9d31f0555bc6785b8359da0c90bcea30cf6dfbb55a8f + ajv-keywords: ^5.1.0 + checksum: 745e7293c6b6c84940de16753c207311da821aa9911b9e2d158cfd9ffc5bf1f880147abbbe775b96cb8cd3c7f48890950fe0164f54eed9a8aabb948ebf8a3fdd languageName: node linkType: hard @@ -15819,14 +15436,14 @@ dexie@latest: languageName: node linkType: hard -"semver@npm:^7.1.2, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": - version: 7.3.8 - resolution: "semver@npm:7.3.8" +"semver@npm:^7.1.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": + version: 7.5.0 + resolution: "semver@npm:7.5.0" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 + checksum: 2d266937756689a76f124ffb4c1ea3e1bbb2b263219f90ada8a11aebebe1280b13bb76cca2ca96bdee3dbc554cbc0b24752eb895b2a51577aa644427e9229f2b languageName: node linkType: hard @@ -16044,9 +15661,9 @@ dexie@latest: linkType: hard "sortobject@npm:^4.0.0": - version: 4.14.0 - resolution: "sortobject@npm:4.14.0" - checksum: f37e0b765b280889d76bc06b40ab3d53957551549c084103c979ccc6e3757cdc041566ce8343e6455134e3dcaad3e97bb708b07775b6c444458e502766d4b65f + version: 4.16.0 + resolution: "sortobject@npm:4.16.0" + checksum: 4212571c41cd5e265e3aa6531153c2ad6862f4b5dd8059647b4b89fdeee23ad8762dc8f3c0fc3c1756c9f87d1b46ba0e49b753c8ab7bd18c1a5bb75be2102c9a languageName: node linkType: hard @@ -16107,7 +15724,7 @@ dexie@latest: languageName: node linkType: hard -"sourcemap-codec@npm:^1.4.4": +"sourcemap-codec@npm:^1.4.8": version: 1.4.8 resolution: "sourcemap-codec@npm:1.4.8" checksum: b57981c05611afef31605732b598ccf65124a9fcb03b833532659ac4d29ac0f7bfacbc0d6c5a28a03e84c7510e7e556d758d0bb57786e214660016fb94279316 @@ -16122,12 +15739,12 @@ dexie@latest: linkType: hard "spdx-correct@npm:^3.0.0": - version: 3.1.1 - resolution: "spdx-correct@npm:3.1.1" + version: 3.2.0 + resolution: "spdx-correct@npm:3.2.0" dependencies: spdx-expression-parse: ^3.0.0 spdx-license-ids: ^3.0.0 - checksum: 77ce438344a34f9930feffa61be0eddcda5b55fc592906ef75621d4b52c07400a97084d8701557b13f7d2aae0cb64f808431f469e566ef3fe0a3a131dcb775a6 + checksum: e9ae98d22f69c88e7aff5b8778dc01c361ef635580e82d29e5c60a6533cc8f4d820803e67d7432581af0cc4fb49973125076ee3b90df191d153e223c004193b2 languageName: node linkType: hard @@ -16149,9 +15766,9 @@ dexie@latest: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.7 - resolution: "spdx-license-ids@npm:3.0.7" - checksum: b52a88aebc19b4c69049349939e1948014c4d10f52a11870431fc1cc6551de411d19e4570f5f1df2d8b7089bec921df9017a3d5199ae2468b2b432171945278e + version: 3.0.13 + resolution: "spdx-license-ids@npm:3.0.13" + checksum: 3469d85c65f3245a279fa11afc250c3dca96e9e847f2f79d57f466940c5bb8495da08a542646086d499b7f24a74b8d0b42f3fc0f95d50ff99af1f599f6360ad7 languageName: node linkType: hard @@ -16195,11 +15812,11 @@ dexie@latest: linkType: hard "stack-utils@npm:^2.0.3": - version: 2.0.5 - resolution: "stack-utils@npm:2.0.5" + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" dependencies: escape-string-regexp: ^2.0.0 - checksum: 76b69da0f5b48a34a0f93c98ee2a96544d2c4ca2557f7eef5ddb961d3bdc33870b46f498a84a7c4f4ffb781df639840e7ebf6639164ed4da5e1aeb659615b9c7 + checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7 languageName: node linkType: hard @@ -16229,19 +15846,19 @@ dexie@latest: linkType: hard "string-argv@npm:^0.3.1": - version: 0.3.1 - resolution: "string-argv@npm:0.3.1" - checksum: efbd0289b599bee808ce80820dfe49c9635610715429c6b7cc50750f0437e3c2f697c81e5c390208c13b5d5d12d904a1546172a88579f6ee5cbaaaa4dc9ec5cf + version: 0.3.2 + resolution: "string-argv@npm:0.3.2" + checksum: 8703ad3f3db0b2641ed2adbb15cf24d3945070d9a751f9e74a924966db9f325ac755169007233e8985a39a6a292f14d4fee20482989b89b96e473c4221508a0f languageName: node linkType: hard "string-length@npm:^4.0.1": - version: 4.0.1 - resolution: "string-length@npm:4.0.1" + version: 4.0.2 + resolution: "string-length@npm:4.0.2" dependencies: char-regex: ^1.0.2 strip-ansi: ^6.0.0 - checksum: 7bd3191668ddafa6f574a8b17a1bd1b085737d64ceefa51f72cdd19c45a730422cd70d984eee7584d6e5b5c84b6318633c6d6a720a4bfd7c58769985fa77573e + checksum: ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 languageName: node linkType: hard @@ -16268,13 +15885,13 @@ dexie@latest: linkType: hard "string-width@npm:^5.0.0": - version: 5.1.0 - resolution: "string-width@npm:5.1.0" + version: 5.1.2 + resolution: "string-width@npm:5.1.2" dependencies: eastasianwidth: ^0.2.0 emoji-regex: ^9.2.2 strip-ansi: ^7.0.1 - checksum: f9f84226bade99b044ece0f143ba0979bbd0b4bbb867ce2e785debf8abe99e9491382d584e51c32272ec2dc82f2fa93b212ef4fdd21c739dac8e78f7815b7dfb + checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 languageName: node linkType: hard @@ -16294,25 +15911,36 @@ dexie@latest: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimend@npm:1.0.5" +"string.prototype.trim@npm:^1.2.7": + version: 1.2.7 + resolution: "string.prototype.trim@npm:1.2.7" dependencies: call-bind: ^1.0.2 define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: d44f543833112f57224e79182debadc9f4f3bf9d48a0414d6f0cbd2a86f2b3e8c0ca1f95c3f8e5b32ae83e91554d79d932fc746b411895f03f93d89ed3dfb6bc + es-abstract: ^1.20.4 + checksum: 05b7b2d6af63648e70e44c4a8d10d8cc457536df78b55b9d6230918bde75c5987f6b8604438c4c8652eb55e4fc9725d2912789eb4ec457d6995f3495af190c09 languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimstart@npm:1.0.5" +"string.prototype.trimend@npm:^1.0.6": + version: 1.0.6 + resolution: "string.prototype.trimend@npm:1.0.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.6": + version: 1.0.6 + resolution: "string.prototype.trimstart@npm:1.0.6" dependencies: call-bind: ^1.0.2 define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: a4857c5399ad709d159a77371eeaa8f9cc284469a0b5e1bfe405de16f1fd4166a8ea6f4180e55032f348d1b679b1599fd4301fbc7a8b72bdb3e795e43f7b1048 + es-abstract: ^1.20.4 + checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 languageName: node linkType: hard @@ -16570,13 +16198,6 @@ dexie@latest: languageName: node linkType: hard -"stylis@npm:4.1.3": - version: 4.1.3 - resolution: "stylis@npm:4.1.3" - checksum: d04dbffcb9bf2c5ca8d8dc09534203c75df3bf711d33973ea22038a99cc475412a350b661ebd99cbc01daa50d7eedcf0d130d121800eb7318759a197023442a6 - languageName: node - linkType: hard - "stylis@npm:4.2.0": version: 4.2.0 resolution: "stylis@npm:4.2.0" @@ -16735,16 +16356,16 @@ dexie@latest: linkType: hard "tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.11 - resolution: "tar@npm:6.1.11" + version: 6.1.14 + resolution: "tar@npm:6.1.14" dependencies: chownr: ^2.0.0 fs-minipass: ^2.0.0 - minipass: ^3.0.0 + minipass: ^5.0.0 minizlib: ^2.1.1 mkdirp: ^1.0.3 yallist: ^4.0.0 - checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f + checksum: a1be0815a9bdc97dfca7c6c2d71d1b836f8ba9314684e2c412832f0f59cc226d4c13da303d6bc30925e82f634cc793f40da79ae72f3e96fb87c23d0f4efd5207 languageName: node linkType: hard @@ -16767,7 +16388,7 @@ dexie@latest: languageName: node linkType: hard -"terser-webpack-plugin@npm:5.3.8": +"terser-webpack-plugin@npm:5.3.8, terser-webpack-plugin@npm:^5.3.7": version: 5.3.8 resolution: "terser-webpack-plugin@npm:5.3.8" dependencies: @@ -16789,31 +16410,9 @@ dexie@latest: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.3.7": - version: 5.3.7 - resolution: "terser-webpack-plugin@npm:5.3.7" - dependencies: - "@jridgewell/trace-mapping": ^0.3.17 - jest-worker: ^27.4.5 - schema-utils: ^3.1.1 - serialize-javascript: ^6.0.1 - terser: ^5.16.5 - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 095e699fdeeb553cdf2c6f75f983949271b396d9c201d7ae9fc633c45c1c1ad14c7257ef9d51ccc62213dd3e97f875870ba31550f6d4f1b6674f2615562da7f7 - languageName: node - linkType: hard - -"terser@npm:^5.0.0, terser@npm:^5.10.0, terser@npm:^5.16.5": - version: 5.16.6 - resolution: "terser@npm:5.16.6" +"terser@npm:^5.0.0, terser@npm:^5.10.0, terser@npm:^5.16.8": + version: 5.17.3 + resolution: "terser@npm:5.17.3" dependencies: "@jridgewell/source-map": ^0.3.2 acorn: ^8.5.0 @@ -16821,21 +16420,7 @@ dexie@latest: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: f763a7bcc7b98cb2bfc41434f7b92bfe8a701a12c92ea6049377736c8e6de328240d654a20dfe15ce170fd783491b9873fad9f4cd8fee4f6c6fb8ca407859dee - languageName: node - linkType: hard - -"terser@npm:^5.16.8": - version: 5.17.1 - resolution: "terser@npm:5.17.1" - dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 - commander: ^2.20.0 - source-map-support: ~0.5.20 - bin: - terser: bin/terser - checksum: 69b0e80e3c4084db2819de4d6ae8a2ba79f2fcd7ed6df40fe4b602ec7bfd8e889cc63c7d5268f30990ffecbf6eeda18f857adad9386fe2c2331b398d58ed855c + checksum: 6b5a859bf9707f34be6e4c567437bc4e47e9364eec37a48b0ae3bff46bb510ef43caf543a23a89b8f43eca47c90a6759105add171fdb0d768dd639deb4545ac9 languageName: node linkType: hard @@ -16907,16 +16492,6 @@ dexie@latest: languageName: node linkType: hard -"tiny-glob@npm:^0.2.9": - version: 0.2.9 - resolution: "tiny-glob@npm:0.2.9" - dependencies: - globalyzer: 0.1.0 - globrex: ^0.1.2 - checksum: aea5801eb6663ddf77ebb74900b8f8bd9dfcfc9b6a1cc8018cb7421590c00bf446109ff45e4b64a98e6c95ddb1255a337a5d488fb6311930e2a95334151ec9c6 - languageName: node - linkType: hard - "tinycolor2@npm:^1.6.0": version: 1.6.0 resolution: "tinycolor2@npm:1.6.0" @@ -16924,6 +16499,13 @@ dexie@latest: languageName: node linkType: hard +"titleize@npm:^3.0.0": + version: 3.0.0 + resolution: "titleize@npm:3.0.0" + checksum: 71fbbeabbfb36ccd840559f67f21e356e1d03da2915b32d2ae1a60ddcc13a124be2739f696d2feb884983441d159a18649e8d956648d591bdad35c430a6b6d28 + languageName: node + linkType: hard + "tmp@npm:^0.2.1": version: 0.2.1 resolution: "tmp@npm:0.2.1" @@ -17010,7 +16592,7 @@ dexie@latest: languageName: node linkType: hard -"tough-cookie@npm:4.1.2, tough-cookie@npm:^4.0.0": +"tough-cookie@npm:4.1.2, tough-cookie@npm:^4.1.2": version: 4.1.2 resolution: "tough-cookie@npm:4.1.2" dependencies: @@ -17118,18 +16700,18 @@ dexie@latest: linkType: hard "tsconfig-paths@npm:^3.14.1": - version: 3.14.1 - resolution: "tsconfig-paths@npm:3.14.1" + version: 3.14.2 + resolution: "tsconfig-paths@npm:3.14.2" dependencies: "@types/json5": ^0.0.29 - json5: ^1.0.1 + json5: ^1.0.2 minimist: ^1.2.6 strip-bom: ^3.0.0 - checksum: 8afa01c673ebb4782ba53d3a12df97fa837ce524f8ad38ee4e2b2fd57f5ac79abc21c574e9e9eb014d93efe7fe8214001b96233b5c6ea75bd1ea82afe17a4c6d + checksum: a6162eaa1aed680537f93621b82399c7856afd10ec299867b13a0675e981acac4e0ec00896860480efc59fc10fd0b16fdc928c0b885865b52be62cadac692447 languageName: node linkType: hard -"tslib@npm:^1.10.0, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": +"tslib@npm:^1.10.0, tslib@npm:^1.8.1, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd @@ -17188,13 +16770,6 @@ dexie@latest: languageName: node linkType: hard -"type-fest@npm:^0.11.0": - version: 0.11.0 - resolution: "type-fest@npm:0.11.0" - checksum: 8e7589e1eb5ced6c8e1d3051553b59b9f525c41e58baa898229915781c7bf55db8cb2f74e56d8031f6af5af2eecc7cb8da9ca3af7e5b80b49d8ca5a81891f3f9 - languageName: node - linkType: hard - "type-fest@npm:^0.16.0": version: 0.16.0 resolution: "type-fest@npm:0.16.0" @@ -17216,6 +16791,13 @@ dexie@latest: languageName: node linkType: hard +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 + languageName: node + linkType: hard + "type-fest@npm:^0.6.0": version: 0.6.0 resolution: "type-fest@npm:0.6.0" @@ -17230,6 +16812,17 @@ dexie@latest: languageName: node linkType: hard +"typed-array-length@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-length@npm:1.0.4" + dependencies: + call-bind: ^1.0.2 + for-each: ^0.3.3 + is-typed-array: ^1.1.9 + checksum: 2228febc93c7feff142b8c96a58d4a0d7623ecde6c7a24b2b98eb3170e99f7c7eff8c114f9b283085cd59dcd2bd43aadf20e25bba4b034a53c5bb292f71f8956 + languageName: node + linkType: hard + "typedarray-to-buffer@npm:^3.1.5": version: 3.1.5 resolution: "typedarray-to-buffer@npm:3.1.5" @@ -17280,27 +16873,17 @@ dexie@latest: linkType: hard "typeson-registry@npm:^1.0.0-alpha.20": - version: 1.0.0-alpha.38 - resolution: "typeson-registry@npm:1.0.0-alpha.38" + version: 1.0.0-alpha.39 + resolution: "typeson-registry@npm:1.0.0-alpha.39" dependencies: - base64-arraybuffer-es6: ^0.6.0 - typeson: ^5.18.2 - whatwg-url: ^8.1.0 - checksum: 3aff6cf8444fad6a1be382a3204188a9c16c96a3ee71faabab0b60fc1450db3a2c4b8c29d2a85c12da4a0a1e47fd5c07ab2adacc2bb60450e3bac84c35215487 - languageName: node - linkType: hard - -"typeson@npm:^5.18.2": - version: 5.18.2 - resolution: "typeson@npm:5.18.2" - peerDependencies: - core-js-bundle: ^3.6.4 - regenerator-runtime: ^0.13.3 - checksum: ce2cb4899a925d7a960de0c83ec0665859faa5bc0de246cb0f52b7ae05b6b6e2bff4fb7d191e7f51605b71ed394894164cdef3f2fafb1e9ba6ff647962fa0517 + base64-arraybuffer-es6: ^0.7.0 + typeson: ^6.0.0 + whatwg-url: ^8.4.0 + checksum: c6b629697acf4652aecfff7be760356d764600afc9beca253278bbfc44fae0fe635b7619201b83e497cdc30645cbce7614d12a04b5726d9b8b505f73e6a3fc2a languageName: node linkType: hard -"typeson@npm:^6.1.0": +"typeson@npm:^6.0.0, typeson@npm:^6.1.0": version: 6.1.0 resolution: "typeson@npm:6.1.0" checksum: 00a77b03ac8f704acb103307bad9295fe47d6b304c386297f078ec3be63875c0b81e022a4815edb9dc2c7da0a72a431345411d35c755a8510af4a420e9e46cdc @@ -17356,6 +16939,13 @@ dexie@latest: languageName: node linkType: hard +"unfetch@npm:^4.2.0": + version: 4.2.0 + resolution: "unfetch@npm:4.2.0" + checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -17381,9 +16971,9 @@ dexie@latest: linkType: hard "unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.0.0" - checksum: dda4d39128cbbede2ac60fbb85493d979ec65913b8a486bf7cb7a375a2346fa48cbf9dc6f1ae23376e7e8e684c2b411434891e151e865a661b40a85407db51d0 + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b languageName: node linkType: hard @@ -17438,6 +17028,13 @@ dexie@latest: languageName: node linkType: hard +"untildify@npm:^4.0.0": + version: 4.0.0 + resolution: "untildify@npm:4.0.0" + checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 + languageName: node + linkType: hard + "upath@npm:^1.2.0": version: 1.2.0 resolution: "upath@npm:1.2.0" @@ -17446,16 +17043,16 @@ dexie@latest: linkType: hard "update-browserslist-db@npm:^1.0.10": - version: 1.0.10 - resolution: "update-browserslist-db@npm:1.0.10" + version: 1.0.11 + resolution: "update-browserslist-db@npm:1.0.11" dependencies: escalade: ^3.1.1 picocolors: ^1.0.0 peerDependencies: browserslist: ">= 4.21.0" bin: - browserslist-lint: cli.js - checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 + update-browserslist-db: cli.js + checksum: b98327518f9a345c7cad5437afae4d2ae7d865f9779554baf2a200fdf4bac4969076b679b1115434bd6557376bdd37ca7583d0f9b8f8e302d7d4cc1e91b5f231 languageName: node linkType: hard @@ -17500,11 +17097,11 @@ dexie@latest: linkType: hard "utif2@npm:^4.0.1": - version: 4.0.1 - resolution: "utif2@npm:4.0.1" + version: 4.1.0 + resolution: "utif2@npm:4.1.0" dependencies: pako: ^1.0.11 - checksum: 96f7bd28696e041b1e518890265dc7896567d8c7bf1acf9a3c8ea8d3eb677560fed098a57767b15990c3c76918853dca51cdaddf456a5ad6091ce45fd21064dd + checksum: b8a7ba68c503c95dd3137eb20c677553dab7641f4539a75dacc2a94ad7e3d1b5b62b547daa559b07cbeb4b9e2f54c15130ced97667775e320bfdccfba9843edd languageName: node linkType: hard @@ -17553,13 +17150,13 @@ dexie@latest: linkType: hard "v8-to-istanbul@npm:^9.0.1": - version: 9.0.1 - resolution: "v8-to-istanbul@npm:9.0.1" + version: 9.1.0 + resolution: "v8-to-istanbul@npm:9.1.0" dependencies: "@jridgewell/trace-mapping": ^0.3.12 "@types/istanbul-lib-coverage": ^2.0.1 convert-source-map: ^1.6.0 - checksum: a49c34bf0a3af0c11041a3952a2600913904a983bd1bc87148b5c033bc5c1d02d5a13620fcdbfa2c60bc582a2e2970185780f0c844b4c3a220abf405f8af6311 + checksum: 2069d59ee46cf8d83b4adfd8a5c1a90834caffa9f675e4360f1157ffc8578ef0f763c8f32d128334424159bb6b01f3876acd39cd13297b2769405a9da241f8d1 languageName: node linkType: hard @@ -17646,9 +17243,9 @@ dexie@latest: linkType: hard "vscode-languageserver-textdocument@npm:^1.0.8": - version: 1.0.8 - resolution: "vscode-languageserver-textdocument@npm:1.0.8" - checksum: d6b685456ceca2736793d7fc1924d78a8483997c96c6ec4900d90e64115730da6c0c03e3fbc2c5d031a4592f2acd9cca2ca58a651b696c4f40b8690a48538c06 + version: 1.0.10 + resolution: "vscode-languageserver-textdocument@npm:1.0.10" + checksum: 605ff0662535088567a145b48d28f0c41844d28269fa0b3fca3a1e179dd14baf7181150b274bf3840ef2a043ed8474a9227aaf169a6fae574516349a1b371a18 languageName: node linkType: hard @@ -17659,21 +17256,12 @@ dexie@latest: languageName: node linkType: hard -"w3c-hr-time@npm:^1.0.2": - version: 1.0.2 - resolution: "w3c-hr-time@npm:1.0.2" - dependencies: - browser-process-hrtime: ^1.0.0 - checksum: ec3c2dacbf8050d917bbf89537a101a08c2e333b4c19155f7d3bedde43529d4339db6b3d049d9610789cb915f9515f8be037e0c54c079e9d4735c50b37ed52b9 - languageName: node - linkType: hard - -"w3c-xmlserializer@npm:^3.0.0": - version: 3.0.0 - resolution: "w3c-xmlserializer@npm:3.0.0" +"w3c-xmlserializer@npm:^4.0.0": + version: 4.0.0 + resolution: "w3c-xmlserializer@npm:4.0.0" dependencies: xml-name-validator: ^4.0.0 - checksum: 0af8589942eeb11c9fe29eb31a1a09f3d5dd136aea53a9848dfbabff79ac0dd26fe13eb54d330d5555fe27bb50b28dca0715e09f9cc2bfa7670ccc8b7f919ca2 + checksum: eba070e78deb408ae8defa4d36b429f084b2b47a4741c4a9be3f27a0a3d1845e277e3072b04391a138f7e43776842627d1334e448ff13ff90ad9fb1214ee7091 languageName: node linkType: hard @@ -17795,12 +17383,12 @@ dexie@latest: linkType: hard "webpack-merge@npm:^5.7.3": - version: 5.7.3 - resolution: "webpack-merge@npm:5.7.3" + version: 5.8.0 + resolution: "webpack-merge@npm:5.8.0" dependencies: clone-deep: ^4.0.1 wildcard: ^2.0.0 - checksum: 09608c3a4928246e9c1c09c22b5f867c38d0ab0fb027ebcc3b15d42659f06a10cfa7f7e2cf2a0ace6f2d571c1cd744ec23e7b2069d34a70378e163e8e035c290 + checksum: 88786ab91013f1bd2a683834ff381be81c245a4b0f63304a5103e90f6653f44dab496a0768287f8531761f8ad957d1f9f3ccb2cb55df0de1bd9ee343e079da26 languageName: node linkType: hard @@ -17922,7 +17510,7 @@ dexie@latest: languageName: node linkType: hard -"whatwg-url@npm:^8.1.0": +"whatwg-url@npm:^8.4.0": version: 8.7.0 resolution: "whatwg-url@npm:8.7.0" dependencies: @@ -18011,9 +17599,9 @@ dexie@latest: linkType: hard "wildcard@npm:^2.0.0": - version: 2.0.0 - resolution: "wildcard@npm:2.0.0" - checksum: 1f4fe4c03dfc492777c60f795bbba597ac78794f1b650d68f398fbee9adb765367c516ebd4220889b6a81e9626e7228bbe0d66237abb311573c2ee1f4902a5ad + version: 2.0.1 + resolution: "wildcard@npm:2.0.1" + checksum: e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c languageName: node linkType: hard @@ -18034,6 +17622,7 @@ dexie@latest: "@faker-js/faker": 7.6.0 "@formatjs/cli": 6.1.1 "@koush/wrtc": 0.5.3 + "@loadable/component": ^5.15.3 "@testing-library/react": 13.4.0 "@types/adm-zip": 0.5.0 "@types/caniuse-lite": ^1.0.1 @@ -18056,7 +17645,7 @@ dexie@latest: "@types/open-graph": 0.2.2 "@types/platform": 1.3.4 "@types/prettier": ^2.7.2 - "@types/react": 18.0.28 + "@types/react": ^18.2.6 "@types/react-dom": 18.2.4 "@types/react-redux": 7.1.25 "@types/react-transition-group": 4.4.6 @@ -18071,7 +17660,7 @@ dexie@latest: "@typescript-eslint/parser": ^5.59.2 "@wireapp/avs": 9.1.13 "@wireapp/copy-config": 2.1.0 - "@wireapp/core": 40.2.1 + "@wireapp/core": "file:.yalc/@wireapp/core" "@wireapp/eslint-config": 2.2.0 "@wireapp/lru-cache": 3.8.1 "@wireapp/prettier-config": 0.6.0 @@ -18477,7 +18066,7 @@ dexie@latest: languageName: node linkType: hard -"ws@npm:8.11.0, ws@npm:^8.8.0": +"ws@npm:8.11.0": version: 8.11.0 resolution: "ws@npm:8.11.0" peerDependencies: @@ -18492,6 +18081,21 @@ dexie@latest: languageName: node linkType: hard +"ws@npm:^8.11.0": + version: 8.13.0 + resolution: "ws@npm:8.13.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c + languageName: node + linkType: hard + "xdg-basedir@npm:^4.0.0": version: 4.0.0 resolution: "xdg-basedir@npm:4.0.0" @@ -18571,9 +18175,9 @@ dexie@latest: linkType: hard "y18n@npm:^5.0.5": - version: 5.0.5 - resolution: "y18n@npm:5.0.5" - checksum: f97d3cc7e5a0f68114721e39036cd64f4b993b06d08cea6e0cc8a684a7f34a2fee05be55e2e7dde7329ba77788376bd43b4eb19c6c9dbc3e2c3cdea68b3ba38e + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 languageName: node linkType: hard @@ -18606,9 +18210,9 @@ dexie@latest: linkType: hard "yargs-parser@npm:^20.2.3": - version: 20.2.6 - resolution: "yargs-parser@npm:20.2.6" - checksum: 4209eed182dfaa83f6f35610e50c1deab5156b35fc79738aadce083895265261d65431404a3b70b7b16a1e3f8751c1aeb1877683326827eea512b3242e338699 + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 languageName: node linkType: hard @@ -18630,8 +18234,8 @@ dexie@latest: linkType: hard "yargs@npm:^17.3.1, yargs@npm:^17.7.1": - version: 17.7.1 - resolution: "yargs@npm:17.7.1" + version: 17.7.2 + resolution: "yargs@npm:17.7.2" dependencies: cliui: ^8.0.1 escalade: ^3.1.1 @@ -18640,7 +18244,7 @@ dexie@latest: string-width: ^4.2.3 y18n: ^5.0.5 yargs-parser: ^21.1.1 - checksum: 3d8a43c336a4942bc68080768664aca85c7bd406f018bad362fd255c41c8f4e650277f42fd65d543fce99e084124ddafee7bbfc1a5c6a8fda4cec78609dcf8d4 + checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a languageName: node linkType: hard @@ -18690,6 +18294,13 @@ dexie@latest: languageName: node linkType: hard +"zod@npm:^3.21.4": + version: 3.21.4 + resolution: "zod@npm:3.21.4" + checksum: f185ba87342ff16f7a06686767c2b2a7af41110c7edf7c1974095d8db7a73792696bcb4a00853de0d2edeb34a5b2ea6a55871bc864227dace682a0a28de33e1f + languageName: node + linkType: hard + "zustand@npm:4.3.8": version: 4.3.8 resolution: "zustand@npm:4.3.8" From 9e5ad64ad4acdd78e767331b7edc8c3e5106d00d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Tue, 6 Jun 2023 09:28:19 +0200 Subject: [PATCH 05/95] feat: add loading, error and done modals to the flow --- .env.defaults | 225 ++++++++++++++ .env.localhost | 2 +- .gitignore | 6 +- package.json | 4 +- .../auth/page/E2EIdentityOidcRedirect.tsx | 7 - .../Modals/PrimaryModal/PrimaryModal.tsx | 55 ++-- .../Modals/PrimaryModal/PrimaryModalTypes.ts | 1 + src/script/team/TeamRepository.ts | 84 +++--- .../util/E2EIdentity/DelayTimer.test.ts | 200 +++++++++++++ src/script/util/E2EIdentity/DelayTimer.ts | 279 ++++++++++++++++++ .../util/E2EIdentity/E2EIdentity.test.ts | 0 src/script/util/E2EIdentity/E2EIdentity.ts | 208 +++++++++---- src/script/util/E2EIdentity/Modals.test.ts | 60 ++++ src/script/util/E2EIdentity/Modals.ts | 144 +++++++++ src/script/util/E2EIdentity/helper/delay.ts | 20 +- src/script/util/E2EIdentity/helper/storage.ts | 26 +- yarn.lock | 163 ++++++++-- 17 files changed, 1302 insertions(+), 182 deletions(-) create mode 100644 .env.defaults create mode 100644 src/script/util/E2EIdentity/DelayTimer.test.ts create mode 100644 src/script/util/E2EIdentity/DelayTimer.ts delete mode 100644 src/script/util/E2EIdentity/E2EIdentity.test.ts create mode 100644 src/script/util/E2EIdentity/Modals.test.ts create mode 100644 src/script/util/E2EIdentity/Modals.ts diff --git a/.env.defaults b/.env.defaults new file mode 100644 index 00000000000..8c5bfe58922 --- /dev/null +++ b/.env.defaults @@ -0,0 +1,225 @@ +# Sets the environment operation mode. Possible values are production & development. +# This setting affects the server behaviour and the web client bundling. If set to development, +# all custom environment variables will be deactivated. +# http://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production +# NODE_ENV="production" + +# Sets the port the server is running on. +# PORT="21080" + +# Used to decide which module will print debug information, e.g. @wireapp/*. +# https://nodejs.org/docs/latest/api/util.html#util_util_debuglog_section +NODE_DEBUG="" + +# Sets the tracking API key. +ANALYTICS_API_KEY="" + +# Specifies the user facing domain of the app, e.g. https://app.wire.com +APP_BASE="https://app.wire.com" + +# Specifies the name of the application, e.g. Webapp +APP_NAME="Webapp" + +# Specifies the name of the backend, e.g. Wire +BACKEND_NAME="Wire" + +# Specifies the label of website links, e.g. wire.com +WEBSITE_LABEL="wire.com" + +# Sets the endpoint for backend REST calls, e.g. https://staging-nginz-https.zinfra.io +BACKEND_REST="https://prod-nginz-https.wire.com" + +# Sets the endpoint for the WebSocket connection, e.g. wss://staging-nginz-ssl.zinfra.io +BACKEND_WS="wss://prod-nginz-ssl.wire.com" + +# Specifies the name of the brand, e.g. Wire +BRAND_NAME="Wire" + +# Allows a client to use a development version of the api (if present) +ENABLE_DEV_BACKEND_API="false" + +# Wether the server should enforce HTTPS. +ENFORCE_HTTPS="true" + +# Accepted file extensions for asset upload (e.g. ".txt,.jpg" or "*") +FEATURE_ALLOWED_FILE_UPLOAD_EXTENSIONS="*" + +# Feature toggle for the user consent check. Can be set to true or false. +FEATURE_CHECK_CONSENT="true" + +# Wether the pre-select a temporary client on login page. +FEATURE_DEFAULT_LOGIN_TEMPORARY_CLIENT="false" + +# Feature toggle for account registration. Can be set to true or false. +FEATURE_ENABLE_ACCOUNT_REGISTRATION="true" + +# Feature toggle for account registration whether the user is promped to accept terms of use only +# or terms of use *and* privacy policy at once. Can be set to true or false. Defaults to false. +FEATURE_ENABLE_ACCOUNT_REGISTRATION_ACCEPT_TERMS_AND_PRIVACY_POLICY="false" + +# Feature toggle for debug utils. Can be set to true or false. +FEATURE_ENABLE_DEBUG="false" + +# Feature toggle for domain discovery. Can be set to true or false. +FEATURE_ENABLE_DOMAIN_DISCOVERY="true" + +# Feature toggle for disabling browser access for the application. +# When set to true the webapp can only be used with the desktop application. Can be set to true or false. +FEATURE_ENABLE_ENFORCE_DESKTOP_APPLICATION_ONLY="false" + +# Feature toggle for adding additional entropy during client creation. Can be set to true or false. +FEATURE_ENABLE_EXTRA_CLIENT_ENTROPY="false" + +# Feature toggle to make the webapp aware of federated backends. +FEATURE_ENABLE_FEDERATION="false" + +# Feature toggle for rendering youtube, vimeo, soundcloud and spotify embeds in the client +FEATURE_ENABLE_MEDIA_EMBEDS="true" + +# Feature toggle for the log in with phone number. Can be set to true or false. +FEATURE_ENABLE_PHONE_LOGIN="true" + +# Feature toggle for the log in via Single Sign On. Can be set to true or false. +FEATURE_ENABLE_SSO="true" + +# Feature toggle to enforce constant bitrate encoding for calls. Can be set to true or false. +FEATURE_ENFORCE_CONSTANT_BITRATE="false" + +# Set a default federation domain in case no domain can be found. +FEATURE_FEDERATION_DOMAIN="" + +# Wether the temporary clients should use IndexedDB. If set to false, they will use an in-memory database. +FEATURE_PERSIST_TEMPORARY_CLIENTS="true" + +# Feature toggle for the log in with a username. Can be set to true or false. +FEATURE_ENABLE_USERNAME_LOGIN="true" + +# Feature toggle for additional application loading information. Can be set to true or false. +FEATURE_SHOW_LOADING_INFORMATION="false" + +# Time in seconds after which the unfocused app locks and asks for the passphrase. Setting this also enables this feature for the app. +FEATURE_APPLOCK_UNFOCUS_TIMEOUT="false" + +# Time in seconds after the last unlock which forces the app to lock. +FEATURE_APPLOCK_SCHEDULED_TIMEOUT="false" + +# Feature toggle to automatically mute when accepting incoming conference calls. +FEATURE_CONFERENCE_AUTO_MUTE="false" + +# Sets the verification ID for Google webmasters. +GOOGLE_WEBMASTER_ID="" + +# Limits the number of participants in a group conversation +MAX_GROUP_PARTICIPANTS="500" + +# Limits the number of participants in a legacy video call +MAX_VIDEO_PARTICIPANTS="4" + +# Minimum number of characters when setting a password +NEW_PASSWORD_MINIMUM_LENGTH="8" + +# Sets the Countly product reporting API key. +COUNTLY_API_KEY="" + +# Open graph header description +OPEN_GRAPH_DESCRIPTION="Business chats, one-click conference calls and shared documents – all protected with end-to-end encryption. Also available for personal use." + +# Open graph header image URL +OPEN_GRAPH_IMAGE_URL="https://wire-docs.wire.com/kalina/wire-icon.png" + +# Open graph header title +OPEN_GRAPH_TITLE="Wire · The most secure collaboration platform" + +# Sets the host URL for the account service (password reset, account deletion, etc.), e.g. https://account.wire.com +URL_ACCOUNT_BASE="https://account.wire.com" + +# Sets the host URL for the mobile client +URL_MOBILE_BASE="" + +# Sets the URL for the privacy policy +URL_PRIVACY_POLICY="https://wire.com/legal/#privacy" + +# Sets the host URL for the team settings service, e.g. https://teams.wire.com +URL_TEAMS_BASE="https://teams.wire.com" + +# Sets the billing URL for the team settings service +URL_TEAMS_BILLING="https://teams.wire.com/billing" + +# Sets the URL for pricing information, e.g. https://wire.com/pricing +URL_PRICING="https://wire.com/pricing" + +# Sets the URL for the team creation +URL_TEAMS_CREATE="https://wire.com/create-team/?pk_campaign=client&pk_kwd=desktop" + +# Sets the URL for the personal terms of use +URL_TERMS_OF_USE_PERSONAL="https://wire.com/legal/#terms" + +# Sets the URL for the teams terms of use +URL_TERMS_OF_USE_TEAMS="https://wire.com/legal/#teams" + +# Sets the host URL for the website, e.g. https://wire.com +URL_WEBSITE_BASE="https://wire.com" + +URL_SUPPORT_INDEX="https://support.wire.com/" + +URL_SUPPORT_BUG_REPORT="https://support.wire.com/hc/requests/new" + +URL_SUPPORT_CALLING="https://support.wire.com/hc/articles/202969412" + +URL_SUPPORT_CAMERA_ACCESS_DENIED="https://support.wire.com/hc/articles/202935412" + +URL_SUPPORT_CONTACT="https://support.wire.com/hc/requests/new" + +URL_SUPPORT_DEVICE_ACCESS_DENIED="https://support.wire.com/hc/articles/202935412" + +URL_SUPPORT_DEVICE_NOT_FOUND="https://support.wire.com/hc/articles/202970662" + +URL_SUPPORT_EMAIL_EXISTS="https://support.wire.com/hc/articles/115004082129" + +URL_SUPPORT_HISTORY="https://support.wire.com/hc/articles/207834645" + +URL_SUPPORT_LEGAL_HOLD_BLOCK="https://support.wire.com/hc/articles/360002018278-What-is-legal-hold-" + +URL_SUPPORT_MICROPHONE_ACCESS_DENIED="https://support.wire.com/hc/articles/202590081" + +URL_SUPPORT_PRIVACY_VERIFY_FINGERPRINT="https://support.wire.com/hc/en-us/articles/207692235" + +URL_SUPPORT_SCREEN_ACCESS_DENIED="https://support.wire.com/hc/articles/202935412" + +URL_WHATS_NEW="https://github.com/wireapp/wire-webapp/releases/latest" + +# Content Security Policy +# Multiple entries separated by comma, e.g. "https://*.wire.com, https://*.zinfra.io, 'self'" + +# Adds additional CSP connect-src entries. The default already includes BACKEND_REST & BACKEND_WS. +CSP_EXTRA_CONNECT_SRC="https://*.wire.com, wss://prod-nginz-ssl.wire.com" + +# Adds additional CSP default-src entries. +CSP_EXTRA_DEFAULT_SRC="" + +# Adds additional CSP font-src entries. +CSP_EXTRA_FONT_SRC="" + +# Adds additional CSP frame-src entries. +CSP_EXTRA_FRAME_SRC="" + +# Adds additional CSP img-src entries. +CSP_EXTRA_IMG_SRC="https://*.wire.com" + +# Adds additional CSP manifest-src entries. +CSP_EXTRA_MANIFEST_SRC="" + +# Adds additional CSP media-src entries. +CSP_EXTRA_MEDIA_SRC="" + +# Adds additional CSP object-src entries. +CSP_EXTRA_OBJECT_SRC="" + +# Adds additional CSP script-src entries. +CSP_EXTRA_SCRIPT_SRC="https://*.wire.com" + +# Adds additional CSP style-src entries. +CSP_EXTRA_STYLE_SRC="" + +# Adds additional CSP worker-src entries. +CSP_EXTRA_WORKER_SRC="" diff --git a/.env.localhost b/.env.localhost index c70595c1c42..5a6da11d7f0 100644 --- a/.env.localhost +++ b/.env.localhost @@ -5,7 +5,7 @@ APP_BASE="https://local.zinfra.io:8081" FORCED_CONFIG_URL="https://github.com/wireapp/wire-web-config-wire" -CSP_EXTRA_CONNECT_SRC="http://localhost:32123, ws://localhost:32123, https://*.zinfra.io, https://*.wire.link, https://*.wire.com, https://api.raygun.io, wss://*.zinfra.io, wss://*.wire.link, wss://prod-nginz-ssl.wire.com, https://wire.count.ly" +CSP_EXTRA_CONNECT_SRC="http://localhost:32123, ws://localhost:32123, https://*.zinfra.io, https://*.wire.link, https://*.wire.com, https://api.raygun.io, wss://*.zinfra.io, wss://*.wire.link, wss://prod-nginz-ssl.wire.com, https://wire.count.ly, https://balderdash.hogwash.work:9000, https://balderdash.hogwash.work:5556, https://accounts.google.com, https://oauth2.googleapis.com/token" CSP_EXTRA_IMG_SRC="https://*.zinfra.io, https://*.wire.com, https://*.wire.link" CSP_EXTRA_SCRIPT_SRC="http://localhost:32123, https://*.zinfra.io, https://*.wire.com, https://*.wire.link, https://api.raygun.io" ENFORCE_HTTPS="false" diff --git a/.gitignore b/.gitignore index 6ebf8ad6394..c3f62535bff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,8 @@ !/.idea/codeStyleSettings.xml !/.idea/modules.xml .env -.env.defaults +.env.* +!.env.defaults .DS_Store .idea .vscode @@ -23,4 +24,5 @@ yarn-error.log !.yarn/plugins !.yarn/releases !.yarn/sdks -!.yarn/versions \ No newline at end of file +!.yarn/versions + diff --git a/package.json b/package.json index 05b4179b22e..5fc9c5b7b24 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,9 @@ "@datadog/browser-rum": "^4.42.2", "@emotion/react": "11.11.0", "@loadable/component": "^5.15.3", - "@types/eslint": "8.37.0", + "@wireapp/api-client": "file:.yalc/@wireapp/api-client", "@wireapp/avs": "9.2.13", - "@wireapp/core": "40.3.0", + "@wireapp/core": "file:.yalc/@wireapp/core", "@wireapp/lru-cache": "3.8.1", "@wireapp/react-ui-kit": "9.7.2", "@wireapp/store-engine-dexie": "2.1.1", diff --git a/src/script/auth/page/E2EIdentityOidcRedirect.tsx b/src/script/auth/page/E2EIdentityOidcRedirect.tsx index cc799ddfbba..99523444d9e 100644 --- a/src/script/auth/page/E2EIdentityOidcRedirect.tsx +++ b/src/script/auth/page/E2EIdentityOidcRedirect.tsx @@ -17,10 +17,6 @@ * */ -import {container} from 'tsyringe'; - -import {Core} from 'src/script/service/CoreSingleton'; - const E2EIdentityOidcRedirect = () => { const search = window.location.href.split('/#/oidc')[1]; const urlParams = new URLSearchParams(search); @@ -33,9 +29,6 @@ const E2EIdentityOidcRedirect = () => { errorDescription: urlParams.get('error_description'), }; - const core = container.resolve(Core); - void core.continueE2EIEnrollment(); - return (
diff --git a/src/script/components/Modals/PrimaryModal/PrimaryModal.tsx b/src/script/components/Modals/PrimaryModal/PrimaryModal.tsx index 0a774b24406..6b9b344a35b 100644 --- a/src/script/components/Modals/PrimaryModal/PrimaryModal.tsx +++ b/src/script/components/Modals/PrimaryModal/PrimaryModal.tsx @@ -57,6 +57,7 @@ export const PrimaryModalComponent: FC = () => { closeBtnTitle, hideCloseBtn = false, } = content; + const showLoadingIndicator = currentType === PrimaryModalType.LOADING; const hasPassword = currentType === PrimaryModalType.PASSWORD; const hasInput = currentType === PrimaryModalType.INPUT; const hasOption = currentType === PrimaryModalType.OPTION; @@ -220,37 +221,41 @@ export const PrimaryModalComponent: FC = () => {
)} -
- {secondaryActions - .filter((action): action is Action => action !== null && !!action.text) - .map(action => ( + {showLoadingIndicator ? ( + <>Loading.... + ) : ( +
+ {secondaryActions + .filter((action): action is Action => action !== null && !!action.text) + .map(action => ( + + ))} + {primaryAction?.text && ( - ))} - {primaryAction?.text && ( - - )} -
+ )} +
+ )} )} diff --git a/src/script/components/Modals/PrimaryModal/PrimaryModalTypes.ts b/src/script/components/Modals/PrimaryModal/PrimaryModalTypes.ts index 164ab47cd49..aed49637e96 100644 --- a/src/script/components/Modals/PrimaryModal/PrimaryModalTypes.ts +++ b/src/script/components/Modals/PrimaryModal/PrimaryModalTypes.ts @@ -61,6 +61,7 @@ export enum PrimaryModalType { PASSWORD = 'modal-template-password', SESSION_RESET = 'modal-session-reset', WITHOUT_TITLE = 'modal-without-title', + LOADING = 'modal-loading', } export interface ModalContent { diff --git a/src/script/team/TeamRepository.ts b/src/script/team/TeamRepository.ts index 9bc69358420..4f9ff1caf5d 100644 --- a/src/script/team/TeamRepository.ts +++ b/src/script/team/TeamRepository.ts @@ -28,7 +28,7 @@ import type { TeamUpdateEvent, } from '@wireapp/api-client/lib/event'; import {TEAM_EVENT} from '@wireapp/api-client/lib/event/TeamEvent'; -import type {FeatureList} from '@wireapp/api-client/lib/team/feature/'; +import type {FeatureList, FeatureMLS, FeatureMLSE2EId} from '@wireapp/api-client/lib/team/feature/'; import {FeatureStatus, FEATURE_KEY, SelfDeletingTimeout} from '@wireapp/api-client/lib/team/feature/'; import type {TeamData} from '@wireapp/api-client/lib/team/team/TeamData'; import {QualifiedId} from '@wireapp/api-client/lib/user'; @@ -39,7 +39,7 @@ import {Runtime} from '@wireapp/commons'; import {Availability} from '@wireapp/protocol-messaging'; import {WebAppEvents} from '@wireapp/webapp-events'; -import {initE2EI} from 'Util/E2EIdentity'; +import {E2EIHandler} from 'Util/E2EIdentity'; import {Environment} from 'Util/Environment'; import {replaceLink, t} from 'Util/LocalizerUtil'; import {getLogger, Logger} from 'Util/Logger'; @@ -127,7 +127,11 @@ export class TeamRepository { teamId?: string, ): Promise<{team: TeamEntity; members: QualifiedId[]} | {team: undefined; members: never[]}> => { const team = await this.getTeam(); - await this.updateFeatureConfig(); + const {mlsE2EId, mls} = await this.updateFeatureConfig(); + + // Trigger E2E identity handler + this.handleE2EIdentityFeatureChange(mlsE2EId, mls); + if (!teamId) { return {team: undefined, members: []}; } @@ -427,51 +431,47 @@ export class TeamRepository { this.handleSelfDeletingMessagesFeatureChange(previousConfig, featureConfigList); this.handleConferenceCallingFeatureChange(previousConfig, featureConfigList); this.handleGuestLinkFeatureChange(previousConfig, featureConfigList); - this.handleE2EIdentityFeatureChange(previousConfig, featureConfigList); } + + // Trigger E2E identity handler + this.handleE2EIdentityFeatureChange(featureConfigList.mlsE2EId, featureConfigList.mls); + this.saveFeatureConfig(featureConfigList); }; - private readonly handleE2EIdentityFeatureChange = (previousConfig: FeatureList, newConfig: FeatureList) => { - const hasE2EIdentityChanged = previousConfig?.mlsE2EId?.status !== newConfig?.mlsE2EId?.status; - const hasChangedToEnabled = newConfig?.mlsE2EId?.status === FeatureStatus.ENABLED; - const isMLSActive = newConfig?.mls?.status === FeatureStatus.ENABLED; - const hasConfig = - newConfig?.mlsE2EId?.config && - newConfig?.mlsE2EId?.config.acmeDiscoveryUrl && - newConfig?.mlsE2EId?.config.acmeDiscoveryUrl.length > 0; - - // remove when development is done + private readonly handleE2EIdentityFeatureChange = (mlsE2EId?: FeatureMLSE2EId, mls?: FeatureMLS) => { + if (!mlsE2EId || !mls) { + return; + } - initE2EI({ - discoveryUrl: 'https://balderdash.hogwash.work:9000/acme/wire/', - gracePeriodInMS: 0, - }); + const isE2EIActive = mlsE2EId?.status === FeatureStatus.ENABLED; + const isMLSActive = mls?.status === FeatureStatus.ENABLED; + const hasConfig = + mlsE2EId?.config && mlsE2EId?.config.acmeDiscoveryUrl && mlsE2EId?.config.acmeDiscoveryUrl.length > 0; - if (hasE2EIdentityChanged) { - if (hasChangedToEnabled) { - if (!isMLSActive) { - this.logger.info('Warning: E2E identity feature enabled but MLS feature is not active'); - return; - } - if (!hasConfig) { - this.logger.info('Warning: E2E identity feature enabled but no config provided'); - return; - } - initE2EI({ - discoveryUrl: newConfig.mlsE2EId!.config.acmeDiscoveryUrl!, - gracePeriodInMS: newConfig.mlsE2EId!.config.verificationExpiration, - }); - } else { - this.logger.info('Warning: E2E identity feature disabled'); + if (isE2EIActive) { + if (!isMLSActive) { + this.logger.info('Warning: E2E identity feature enabled but MLS feature is not active'); + return; + } + if (!hasConfig) { + this.logger.info('Warning: E2E identity feature enabled but no config provided'); + return; } + const e2eHandler = E2EIHandler.getInstance({ + discoveryUrl: mlsE2EId!.config.acmeDiscoveryUrl!, + gracePeriodInMS: mlsE2EId!.config.verificationExpiration, + }); + e2eHandler.initialize(); + } else { + this.logger.info('Warning: E2E identity feature disabled'); } }; private readonly handleFileSharingFeatureChange = (previousConfig: FeatureList, newConfig: FeatureList) => { const hasFileSharingChanged = - previousConfig?.fileSharing?.status && previousConfig.fileSharing.status !== newConfig?.fileSharing?.status; - const hasChangedToEnabled = newConfig?.fileSharing?.status === FeatureStatus.ENABLED; + previousConfig?.fileSharing?.status && previousConfig.fileSharing.status !== fileSharing?.status; + const hasChangedToEnabled = fileSharing?.status === FeatureStatus.ENABLED; if (hasFileSharingChanged) { PrimaryModal.show(PrimaryModal.type.ACKNOWLEDGE, { @@ -488,8 +488,8 @@ export class TeamRepository { private readonly handleGuestLinkFeatureChange = (previousConfig: FeatureList, newConfig: FeatureList) => { const hasGuestLinkChanged = previousConfig?.conversationGuestLinks?.status && - previousConfig.conversationGuestLinks.status !== newConfig?.conversationGuestLinks?.status; - const hasGuestLinkChangedToEnabled = newConfig?.conversationGuestLinks?.status === FeatureStatus.ENABLED; + previousConfig.conversationGuestLinks.status !== conversationGuestLinks?.status; + const hasGuestLinkChangedToEnabled = conversationGuestLinks?.status === FeatureStatus.ENABLED; if (hasGuestLinkChanged) { PrimaryModal.show(PrimaryModal.type.ACKNOWLEDGE, { @@ -541,8 +541,8 @@ export class TeamRepository { private readonly handleAudioVideoFeatureChange = (previousConfig: FeatureList, newConfig: FeatureList) => { const hasVideoCallingChanged = - previousConfig?.videoCalling?.status && previousConfig.videoCalling.status !== newConfig?.videoCalling?.status; - const hasChangedToEnabled = newConfig?.videoCalling?.status === FeatureStatus.ENABLED; + previousConfig?.videoCalling?.status && previousConfig.videoCalling.status !== videoCalling?.status; + const hasChangedToEnabled = videoCalling?.status === FeatureStatus.ENABLED; if (hasVideoCallingChanged) { PrimaryModal.show(PrimaryModal.type.ACKNOWLEDGE, { @@ -559,9 +559,9 @@ export class TeamRepository { private readonly handleConferenceCallingFeatureChange = (previousConfig: FeatureList, newConfig: FeatureList) => { if ( previousConfig?.conferenceCalling?.status && - previousConfig.conferenceCalling.status !== newConfig?.conferenceCalling?.status + previousConfig.conferenceCalling.status !== conferenceCalling?.status ) { - const hasChangedToEnabled = newConfig?.conferenceCalling?.status === FeatureStatus.ENABLED; + const hasChangedToEnabled = conferenceCalling?.status === FeatureStatus.ENABLED; if (hasChangedToEnabled) { const replaceEnterprise = replaceLink( Config.getConfig().URL.PRICING, diff --git a/src/script/util/E2EIdentity/DelayTimer.test.ts b/src/script/util/E2EIdentity/DelayTimer.test.ts new file mode 100644 index 00000000000..d31be3dd53c --- /dev/null +++ b/src/script/util/E2EIdentity/DelayTimer.test.ts @@ -0,0 +1,200 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {GracePeriodTimer} from './DelayTimer'; // Update this with your module's actual path +import {ONE_HOUR, FIFTEEN_MINUTES, FOUR_HOURS, ONE_MINUTE} from './helper/delay'; + +jest.mock('Util/Logger', () => ({ + getLogger: () => ({ + info: jest.fn(), + // eslint-disable-next-line no-console + log: console.log, + }), +})); + +describe('createGracePeriodTimer', () => { + let timer: GracePeriodTimer | undefined; + beforeEach(() => { + // Mock the localStorage + const localStorageMock = (function () { + let store: {[key: string]: string} = {}; + return { + getItem: function (key: string) { + return store[key]; + }, + setItem: function (key: string, value: string) { + store[key] = value.toString(); + }, + clear: function () { + store = {}; + }, + removeItem: function (key: string) { + delete store[key]; + }, + }; + })(); + Object.defineProperty(window, 'localStorage', {value: localStorageMock}); + }); + + beforeEach(() => { + jest.useFakeTimers(); + window.localStorage.clear(); + timer = GracePeriodTimer?.getInstance({ + gracePeriodInMS: 0, + gpCallback: jest.fn(), + delayCallback: jest.fn(), + }); + }); + + afterEach(() => { + timer?.resetInstance(); + timer = undefined; + jest.useRealTimers(); + }); + + it('should call the gpCallback when the grace period is over', () => { + const gpCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: 1000, + gpCallback, + delayCallback: jest.fn(), + }); + + jest.advanceTimersByTime(1000); + expect(gpCallback).toHaveBeenCalled(); + }); + + it('should call the gpCallback only after the delay time is over', () => { + const gpCallback = jest.fn(); + + timer?.updateParams({ + gracePeriodInMS: ONE_HOUR, + gpCallback, + delayCallback: jest.fn(), + }); + + timer?.delayPrompt(); + + jest.advanceTimersByTime(FIFTEEN_MINUTES); + expect(gpCallback).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(ONE_HOUR); + expect(gpCallback).toHaveBeenCalled(); + }); + + it('should not allow delaying the prompt if the grace period is already over', () => { + const gpCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: 0, + gpCallback, + delayCallback: jest.fn(), + }); + timer?.delayPrompt(); + + jest.advanceTimersByTime(500); + expect(gpCallback).toHaveBeenCalled(); + }); + + it('should allow delaying the prompt multiple times within the grace period', () => { + const gpCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: 7200000, + gpCallback, + delayCallback: jest.fn(), + }); + timer?.delayPrompt(); + jest.advanceTimersByTime(3600000); + timer?.delayPrompt(); + jest.advanceTimersByTime(3600000); + + expect(gpCallback).toHaveBeenCalled(); + }); + + it('should call the delayCallback after a delay based on the grace period', () => { + const delayCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: ONE_HOUR, + gpCallback: jest.fn(), + delayCallback, + }); + + timer?.delayPrompt(); + + // getDelayTime(ONE_HOUR) will return FIFTEEN_MINUTES according to the function provided. + jest.advanceTimersByTime(FIFTEEN_MINUTES); + expect(delayCallback).toHaveBeenCalled(); + }); + + it('should not call delayCallback if grace period is over', () => { + const delayCallback = jest.fn(); + const gpCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: ONE_HOUR, + delayCallback, + gpCallback, + }); + + timer?.delayPrompt(); + + // Here, instead of advancing time by "ONE_HOUR + FIFTEEN_MINUTES", we advance by "ONE_HOUR", which is the end of the grace period. + jest.advanceTimersByTime(ONE_HOUR + FIFTEEN_MINUTES); + expect(delayCallback).toHaveBeenCalled(); // The delayCallback should be called after ONE_HOUR. + expect(gpCallback).toHaveBeenCalled(); // The gpCallback should be called when the grace period ends, which is after ONE_HOUR. + + timer?.delayPrompt(); // We try to delay after the grace period has ended. + jest.advanceTimersByTime(FIFTEEN_MINUTES); + expect(delayCallback).toHaveBeenCalledTimes(1); // The delayCallback should not be called again since we're now past the grace period. + }); + + it('should call delayCallback multiple times if delayPrompt is called multiple times within the grace period', () => { + const delayCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: FOUR_HOURS, + gpCallback: jest.fn(), + delayCallback, + }); + + timer?.delayPrompt(); + jest.advanceTimersByTime(ONE_HOUR); // gracePeriod > delay, so delay = ONE_HOUR + + timer?.delayPrompt(); + jest.advanceTimersByTime(ONE_HOUR); + + timer?.delayPrompt(); + jest.advanceTimersByTime(ONE_HOUR); + + expect(delayCallback).toHaveBeenCalledTimes(3); + }); + + it('should not execute the delayPrompt() if the grace period is over', () => { + const delayCallback = jest.fn(); + const gpCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: ONE_MINUTE, + gpCallback, + delayCallback, + }); + + timer?.delayPrompt(); + jest.advanceTimersByTime(ONE_MINUTE); + + expect(delayCallback).not.toHaveBeenCalled(); + expect(gpCallback).toHaveBeenCalled(); + }); +}); diff --git a/src/script/util/E2EIdentity/DelayTimer.ts b/src/script/util/E2EIdentity/DelayTimer.ts new file mode 100644 index 00000000000..02180acccbb --- /dev/null +++ b/src/script/util/E2EIdentity/DelayTimer.ts @@ -0,0 +1,279 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {TaskScheduler} from '@wireapp/core/lib/util/TaskScheduler'; + +import {getLogger} from 'Util/Logger'; + +import {getDelayTime} from './helper/delay'; +import {DelayTimerStore} from './helper/storage'; + +const logger = getLogger('E2EIdentity.DelayTimer'); + +interface CreateGracePeriodTimerParams { + gracePeriodInMS: number; + gpCallback: () => void; + delayCallback: () => void; +} + +class GracePeriodTimer { + private static instance: GracePeriodTimer | null = null; + private gracePeriodInMS: number; + private gpCallback: () => void; + private delayCallback: () => void; + private delayPeriodTimerKey: string = 'E2EIdentity_DelayTimer'; + private gracePeriodTimerKey: string = 'E2EIdentity_GracePeriodTimer'; + + private constructor({gracePeriodInMS, gpCallback, delayCallback}: CreateGracePeriodTimerParams) { + this.gracePeriodInMS = gracePeriodInMS; + this.gpCallback = gpCallback; + this.delayCallback = delayCallback; + this.initialize(); + } + + /** + * Get the singleton instance of GracePeriodTimer or create a new one + * For the first time, params are required to create the instance + * After that, params are optional and can be used to update the grace period timer + * @param params The params to create the grace period timer + * @returns The singleton instance of GracePeriodTimer + */ + public static getInstance(params?: CreateGracePeriodTimerParams) { + if (!GracePeriodTimer.instance) { + if (!params) { + throw new Error('GracePeriodTimer is not initialized. Please call getInstance with params.'); + } + GracePeriodTimer.instance = new GracePeriodTimer(params); + } + return GracePeriodTimer.instance; + } + + /** + * @param CreateGracePeriodTimerParams The params to create the grace period timer + */ + public updateParams({gracePeriodInMS, gpCallback, delayCallback}: CreateGracePeriodTimerParams) { + DelayTimerStore.clear.all(); + this.clearGracePeriodTimer(); + this.clearDelayPeriodTimer(); + this.gracePeriodInMS = gracePeriodInMS; + this.gpCallback = gpCallback; + this.delayCallback = delayCallback; + this.initialize(); + } + + /** + * Initialize the grace period timer and load saved data from local storage if available + */ + public initialize() { + if (this.gracePeriodInMS <= 0) { + return this.exit('Grace period is 0. No delays are allowed.'); + } + + // Check if grace period has changed + if (DelayTimerStore.get.gracePeriod() !== this.gracePeriodInMS) { + // Check if grace period is less than the time elapsed since the last prompt + if (this.gracePeriodInMS < this.getElapsedGracePeriod()) { + return this.exit( + 'Grace period has changed and is less than the time elapsed since the last prompt. No more delays are allowed.', + ); + } + this.updateGracePeriod(); + } + + // Load saved data from local storage + if (DelayTimerStore.get.firingDate()) { + const currentTime = Date.now(); + if (DelayTimerStore.get.firingDate() <= currentTime) { + return this.exit('Grace period is already over. No more delays are allowed.'); + } + } else { + const firingDate = Date.now() + this.gracePeriodInMS; + DelayTimerStore.set.firingDate(firingDate); + DelayTimerStore.set.gracePeriod(this.gracePeriodInMS); + } + + // Start / restart the grace period timer + this.startGracePeriod(DelayTimerStore.get.firingDate()); + + // this will start the delay period timer if it was active before + this.continueDelayPeriodTimer(); + } + + /** + * Prompt the user to delay the enrollment + */ + public delayPrompt() { + if (this.isDelayTimerActive()) { + return; + } + if (!this.isSnoozeTimeAvailable()) { + return this.exit('No more delays are allowed.'); + } + const delayTimeInMS = getDelayTime(this.gracePeriodInMS); + if (delayTimeInMS <= 0) { + return this.exit('Delay period is 0. No more delays are allowed.'); + } + + if (DelayTimerStore.get.firingDate() <= Date.now()) { + return this.exit('Grace period is already over. No more delays are allowed.'); + } + + this.startDelayPeriod(Date.now() + delayTimeInMS); + } + + /** + * Update the grace period + */ + private updateGracePeriod() { + // Store the new grace period + DelayTimerStore.set.gracePeriod(this.gracePeriodInMS); + const elapsedGracePeriod = this.getElapsedGracePeriod(); + + // Check if grace period is already over + if (elapsedGracePeriod > this.gracePeriodInMS) { + return this.exit('Grace period is already over. No more delays are allowed.'); + } + + // Update the remaining grace period + this.gracePeriodInMS -= elapsedGracePeriod; + const startTime = Date.now(); + // Calculate the new end time + const firingDate = startTime + this.gracePeriodInMS; + // Store the new end time + DelayTimerStore.set.firingDate(firingDate); + + this.startGracePeriod(firingDate); + } + + /** + * Exit the function + * @param exitMessage The exit message + * @returns Calls the gpCallback + */ + private exit(exitMessage: string) { + logger.info(exitMessage); + this.clearDelayPeriodTimer(); + this.clearGracePeriodTimer(); + DelayTimerStore.clear.all(); + return this.gpCallback(); + } + + /** + * Start the grace period timer and store the grace period + * @param gracePeriodInMS The grace period in ms + */ + private startGracePeriod(firingDate: number) { + this.clearGracePeriodTimer(); + + const task = () => { + return this.exit('Grace period is over. No more delays are allowed.'); + }; + + if (TaskScheduler.hasActiveTask(this.gracePeriodTimerKey)) { + TaskScheduler.continueTask({ + key: this.gracePeriodTimerKey, + task, + }); + } else { + TaskScheduler.addTask({ + key: this.gracePeriodTimerKey, + task, + firingDate, + persist: true, + }); + } + } + + /** + * Start the delay period timer and store the delay time + * @param delayTimeInMS The delay time in ms + */ + private startDelayPeriod(firingDate?: number) { + this.clearDelayPeriodTimer(); + + const task = () => { + logger.info('Delay time is over.'); + return this.delayCallback(); + }; + + if (TaskScheduler.hasActiveTask(this.delayPeriodTimerKey)) { + TaskScheduler.continueTask({ + key: this.delayPeriodTimerKey, + task, + }); + } else if (firingDate) { + TaskScheduler.addTask({ + key: this.delayPeriodTimerKey, + task, + firingDate, + persist: true, + }); + } + } + + /** + * Clear the current grace period timer + */ + private clearGracePeriodTimer() { + TaskScheduler.cancelTask(this.gracePeriodTimerKey); + } + + /** + * Clear the current delay period timer + */ + private clearDelayPeriodTimer() { + TaskScheduler.cancelTask(this.delayPeriodTimerKey); + } + + private continueDelayPeriodTimer() { + this.startDelayPeriod(); + } + + /** + * Get the time elapsed since the last prompt + * @returns The time elapsed since the last prompt in ms + */ + private getElapsedGracePeriod() { + return DelayTimerStore.get.firingDate() + ? Date.now() - (DelayTimerStore.get.firingDate() - this.gracePeriodInMS) + : 0; + } + + /** + * Reset the instance + */ + public resetInstance() { + DelayTimerStore.clear.all(); + this.clearGracePeriodTimer(); + this.clearDelayPeriodTimer(); + GracePeriodTimer.instance = null; + } + + public isDelayTimerActive() { + return TaskScheduler.hasActiveTask(this.delayPeriodTimerKey); + } + + public isSnoozeTimeAvailable() { + const remainingTime = DelayTimerStore.get.firingDate() - Date.now(); + const delayTime = getDelayTime(remainingTime); + return remainingTime - delayTime > 0; + } +} + +export {GracePeriodTimer}; diff --git a/src/script/util/E2EIdentity/E2EIdentity.test.ts b/src/script/util/E2EIdentity/E2EIdentity.test.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/util/E2EIdentity/E2EIdentity.ts index a95f6c35293..50037c2352d 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.ts @@ -19,66 +19,170 @@ import {container} from 'tsyringe'; -import {PrimaryModal} from 'Components/Modals/PrimaryModal'; -import {ModalOptions, PrimaryModalType} from 'Components/Modals/PrimaryModal/PrimaryModalTypes'; +import {PrimaryModal, removeCurrentModal} from 'Components/Modals/PrimaryModal'; import {Config} from 'src/script/Config'; import {Core} from 'src/script/service/CoreSingleton'; -import {t} from 'Util/LocalizerUtil'; +import {UserState} from 'src/script/user/UserState'; import {supportsMLS} from 'Util/util'; -const shouldUseE2EI = () => supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; - -const delayE2EI = (gracePeriodInMS: number) => { - console.log('delay init in grace period'); -}; -const enrollE2EI = (discoveryUrl: string) => { - const core = container.resolve(Core); - void core.startE2EIEnrollment(discoveryUrl); -}; - -type NotifyUserAboutE2EIParams = { - primaryCallback: () => void; - secondaryCallback: () => void; - showSecondary: boolean; -}; -const notifyUserAboutE2EI = ({primaryCallback, secondaryCallback, showSecondary}: NotifyUserAboutE2EIParams) => { - const modalOptions: ModalOptions = { - primaryAction: { - action: primaryCallback, - text: t('acme.settingsChanged.button.primary'), - }, - text: { - closeBtnLabel: t('acme.settingsChanged.button.close'), - htmlMessage: t('acme.settingsChanged.paragraph'), - title: t('acme.settingsChanged.headline.alt'), - }, - preventClose: true, - showClose: false, - }; - if (showSecondary) { - modalOptions.secondaryAction = { - action: secondaryCallback, - text: t('acme.settingsChanged.button.secondary'), - }; - } - const modalType: PrimaryModalType = showSecondary ? PrimaryModal.type.CONFIRM : PrimaryModal.type.ACKNOWLEDGE; - - console.log(showSecondary, modalOptions); +import {GracePeriodTimer} from './DelayTimer'; +import {getModalOptions, ModalType} from './Modals'; - PrimaryModal.show(modalType, modalOptions); -}; +enum E2EIHandlerStep { + INITIALIZE = 'initialize', + ENROLL = 'enroll', + SUCCESS = 'success', + ERROR = 'error', + SNOOZE = 'snooze', +} -interface InitE2EIParams { - gracePeriodInMS: number; +interface E2EIHandlerParams { discoveryUrl: string; + gracePeriodInMS: number; } -export const initE2EI = ({discoveryUrl, gracePeriodInMS}: InitE2EIParams) => { - if (shouldUseE2EI() || true) { - notifyUserAboutE2EI({ - showSecondary: gracePeriodInMS > 0, - primaryCallback: () => enrollE2EI(discoveryUrl), - secondaryCallback: () => delayE2EI(gracePeriodInMS), +class E2EIHandler { + private static instance: E2EIHandler | null = null; + private timer: GracePeriodTimer; + private discoveryUrl: string; + private gracePeriodInMS: number; + private currentStep: E2EIHandlerStep | null = null; + + private constructor({discoveryUrl, gracePeriodInMS}: E2EIHandlerParams) { + // ToDo: Do these values need to te able to be updated? Should we use a singleton with update fn? + this.discoveryUrl = discoveryUrl; + this.gracePeriodInMS = gracePeriodInMS; + this.timer = GracePeriodTimer.getInstance({delayCallback: () => null, gpCallback: () => null, gracePeriodInMS}); + } + + /** + * Get the singleton instance of GracePeriodTimer or create a new one + * For the first time, params are required to create the instance + * After that, params are optional and can be used to update the grace period timer + * @param params The params to create the grace period timer + * @returns The singleton instance of GracePeriodTimer + */ + public static getInstance(params?: E2EIHandlerParams) { + if (!E2EIHandler.instance) { + if (!params) { + throw new Error('GracePeriodTimer is not initialized. Please call getInstance with params.'); + } + E2EIHandler.instance = new E2EIHandler(params); + } + return E2EIHandler.instance; + } + + /** + * @param E2EIHandlerParams The params to create the grace period timer + */ + public updateParams({gracePeriodInMS, discoveryUrl}: E2EIHandlerParams) { + this.gracePeriodInMS = gracePeriodInMS; + this.discoveryUrl = discoveryUrl; + this.timer = GracePeriodTimer.getInstance({delayCallback: () => null, gpCallback: () => null, gracePeriodInMS}); + this.initialize(); + } + + public initialize(): void { + if (this.isE2EIEnabled) { + this.currentStep = E2EIHandlerStep.INITIALIZE; + this.notifyUserAboutE2EI(); + } + } + + get isE2EIEnabled(): boolean { + return supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; + } + + private async enrollE2EI() { + try { + const userState = container.resolve(UserState); + const core = container.resolve(Core); + // Notify user about E2EI enrollment in progress + this.currentStep = E2EIHandlerStep.ENROLL; + this.showLoadingMessage(); + await core.startE2EIEnrollment(this.discoveryUrl, userState.self().name(), userState.self().username()); + // Notify user about E2EI enrollment success + removeCurrentModal(); + this.currentStep = E2EIHandlerStep.SUCCESS; + this.showSuccessMessage(); + } catch (e) { + removeCurrentModal(); + this.currentStep = E2EIHandlerStep.ERROR; + this.showErrorMessage(); + } + } + + private showLoadingMessage(): void { + if (this.currentStep !== E2EIHandlerStep.ENROLL) { + return; + } + + const {modalOptions, modalType} = getModalOptions({ + type: ModalType.LOADING, + hideClose: true, + }); + PrimaryModal.show(modalType, modalOptions); + } + + private showSuccessMessage(): void { + if (this.currentStep !== E2EIHandlerStep.SUCCESS) { + return; + } + + const {modalOptions, modalType} = getModalOptions({ + type: ModalType.SUCCESS, + hideSecondary: true, + hideClose: false, + primaryActionFn: () => null, + }); + PrimaryModal.show(modalType, modalOptions); + } + + private showErrorMessage(): void { + if (this.currentStep !== E2EIHandlerStep.ERROR) { + return; + } + + const {modalOptions, modalType} = getModalOptions({ + type: ModalType.ERROR, + hideClose: true, + primaryActionFn: async () => { + this.currentStep = E2EIHandlerStep.INITIALIZE; + await this.enrollE2EI(); + }, + secondaryActionFn: () => { + this.notifyUserAboutE2EI(); + }, }); + PrimaryModal.show(modalType, modalOptions); + } + + private notifyUserAboutE2EI(): void { + if (this.currentStep === E2EIHandlerStep.INITIALIZE) { + this.timer.updateParams({ + gracePeriodInMS: this.gracePeriodInMS, + gpCallback: () => { + this.notifyUserAboutE2EI(); + }, + delayCallback: () => { + this.notifyUserAboutE2EI(); + }, + }); + } + + if (!this.timer.isDelayTimerActive()) { + const {modalOptions, modalType} = getModalOptions({ + hideSecondary: !this.timer.isSnoozeTimeAvailable(), + primaryActionFn: () => this.enrollE2EI(), + secondaryActionFn: () => { + this.timer.delayPrompt(); + }, + type: ModalType.ENROLL, + hideClose: true, + }); + PrimaryModal.show(modalType, modalOptions); + } } -}; +} + +export {E2EIHandler}; diff --git a/src/script/util/E2EIdentity/Modals.test.ts b/src/script/util/E2EIdentity/Modals.test.ts new file mode 100644 index 00000000000..f9f26971b61 --- /dev/null +++ b/src/script/util/E2EIdentity/Modals.test.ts @@ -0,0 +1,60 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {PrimaryModal} from 'Components/Modals/PrimaryModal'; + +import {getModalOptions, ModalType} from './Modals'; + +describe('getModalOptions', () => { + it('should return modal options with hidden secondary action when hideSecondary is true', () => { + const options = getModalOptions({type: ModalType.ENROLL, hideSecondary: true}); + + expect(options.modalOptions.secondaryAction).toBeUndefined(); + expect(options.modalType).toEqual(PrimaryModal.type.ACKNOWLEDGE); + }); + + it('should return modal options with hidden secondary action when secondaryActionFn is not provided', () => { + const options = getModalOptions({type: ModalType.ENROLL, secondaryActionFn: undefined}); + + expect(options.modalOptions.secondaryAction).toBeUndefined(); + expect(options.modalType).toEqual(PrimaryModal.type.ACKNOWLEDGE); + }); + + it('should return modal options with hidden primary action when hidePrimary is true', () => { + const options = getModalOptions({type: ModalType.ENROLL, hidePrimary: true}); + + expect(options.modalOptions.primaryAction).toBeUndefined(); + }); + + it('should return modal options with hidden close button when hideClose is true', () => { + const options = getModalOptions({type: ModalType.ENROLL, hideClose: true}); + + expect(options.modalOptions.hideCloseBtn).toBeTruthy(); + expect(options.modalOptions.preventClose).toBeTruthy(); + }); + + it('should return modal options with hidden secondary and primary actions when both hideSecondary and hidePrimary are true', () => { + const options = getModalOptions({type: ModalType.ENROLL, hideSecondary: true, hidePrimary: true}); + + expect(options.modalOptions.secondaryAction).toBeUndefined(); + expect(options.modalOptions.primaryAction).toBeUndefined(); + }); + + // Add more test cases as needed to cover different combinations of hide functionality +}); diff --git a/src/script/util/E2EIdentity/Modals.ts b/src/script/util/E2EIdentity/Modals.ts new file mode 100644 index 00000000000..d422b592466 --- /dev/null +++ b/src/script/util/E2EIdentity/Modals.ts @@ -0,0 +1,144 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {PrimaryModal} from 'Components/Modals/PrimaryModal'; +import {ModalOptions, PrimaryModalType} from 'Components/Modals/PrimaryModal/PrimaryModalTypes'; +import {t} from 'Util/LocalizerUtil'; + +const hideSecondaryBtn = {hideSecondary: true}; +const hideCloseBtn = {hideCloseBtn: true, preventClose: true}; + +export enum ModalType { + ENROLL = 'enroll', + ERROR = 'error', + SUCCESS = 'success', + LOADING = 'loading', +} + +interface GetModalOptions { + type: ModalType; + primaryActionFn?: () => void; + secondaryActionFn?: () => void; + hideSecondary?: boolean; + hidePrimary?: boolean; + hideClose?: boolean; +} +export const getModalOptions = ({ + type, + primaryActionFn, + secondaryActionFn, + hidePrimary = false, + hideSecondary = false, + hideClose = true, +}: GetModalOptions) => { + if (!secondaryActionFn) { + hideSecondary = true; + } + let options: ModalOptions = {}; + let modalType: PrimaryModalType = PrimaryModal.type.CONFIRM; + switch (type) { + case ModalType.ENROLL: + options = { + text: { + closeBtnLabel: t('acme.settingsChanged.button.close'), + htmlMessage: t('acme.settingsChanged.paragraph'), + title: t('acme.settingsChanged.headline.alt'), + }, + primaryAction: { + action: primaryActionFn, + text: t('acme.settingsChanged.button.primary'), + }, + secondaryAction: { + action: secondaryActionFn, + text: t('acme.settingsChanged.button.secondary'), + }, + ...hideCloseBtn, + }; + modalType = + hideSecondary || secondaryActionFn === undefined ? PrimaryModal.type.ACKNOWLEDGE : PrimaryModal.type.CONFIRM; + break; + + case ModalType.ERROR: + options = { + text: { + closeBtnLabel: t('acme.error.button.close'), + htmlMessage: t('acme.error.paragraph'), + title: t('acme.error.headline'), + }, + primaryAction: { + action: primaryActionFn, + text: t('acme.error.button.primary'), + }, + secondaryAction: { + action: secondaryActionFn, + text: t('acme.error.button.secondary'), + }, + }; + modalType = + hideSecondary || secondaryActionFn === undefined ? PrimaryModal.type.CONFIRM : PrimaryModal.type.ACKNOWLEDGE; + break; + + case ModalType.LOADING: + options = { + text: { + title: t('acme.inProgress.headline'), + }, + ...hideCloseBtn, + }; + // Needs to be changed to Loading spinner Modal + modalType = PrimaryModalType.LOADING; + break; + + case ModalType.SUCCESS: + options = { + text: { + closeBtnLabel: t('acme.done.button.close'), + htmlMessage: t('acme.done.paragraph'), + title: t('acme.done.headline'), + }, + primaryAction: { + action: primaryActionFn, + text: t('acme.done.button'), + }, + }; + modalType = PrimaryModal.type.ACKNOWLEDGE; + break; + } + + if (hideClose) { + options = { + ...options, + ...hideCloseBtn, + }; + } + + if (hideSecondary || secondaryActionFn === undefined) { + delete options.secondaryAction; + options = { + ...options, + ...hideSecondaryBtn, + }; + } + + if (hidePrimary) { + delete options.primaryAction; + } + + return {modalOptions: options, modalType}; +}; diff --git a/src/script/util/E2EIdentity/helper/delay.ts b/src/script/util/E2EIdentity/helper/delay.ts index 316ed7acede..7afc9ab2536 100644 --- a/src/script/util/E2EIdentity/helper/delay.ts +++ b/src/script/util/E2EIdentity/helper/delay.ts @@ -17,23 +17,27 @@ * */ -export const ONE_MINUTE = 60000; -export const FIFTEEN_MINUTES = 900000; -export const ONE_HOUR = 3600000; -export const TWO_HOURS = 7200000; -export const FOUR_HOURS = 14400000; -export const ONE_DAY = 86400000; +/* eslint-disable no-magic-numbers */ + +import {TIME_IN_MILLIS} from 'Util/TimeUtil'; + +export const ONE_MINUTE = TIME_IN_MILLIS.MINUTE; +export const FIVE_MINUTES = TIME_IN_MILLIS.MINUTE * 5; +export const FIFTEEN_MINUTES = TIME_IN_MILLIS.MINUTE * 15; +export const ONE_HOUR = TIME_IN_MILLIS.HOUR; +export const FOUR_HOURS = TIME_IN_MILLIS.HOUR * 4; +export const ONE_DAY = TIME_IN_MILLIS.DAY; export function getDelayTime(gracePeriodInMs: number): number { if (gracePeriodInMs > 0) { if (gracePeriodInMs <= FIFTEEN_MINUTES) { - return Math.min(ONE_MINUTE / 2, gracePeriodInMs); + return Math.min(FIVE_MINUTES, gracePeriodInMs); } else if (gracePeriodInMs <= ONE_HOUR) { return Math.min(FIFTEEN_MINUTES, gracePeriodInMs); } else if (gracePeriodInMs <= FOUR_HOURS) { return Math.min(ONE_HOUR, gracePeriodInMs); } else if (gracePeriodInMs <= ONE_DAY) { - return Math.min(TWO_HOURS, gracePeriodInMs); + return Math.min(FOUR_HOURS, gracePeriodInMs); } return Math.min(ONE_DAY, gracePeriodInMs); } diff --git a/src/script/util/E2EIdentity/helper/storage.ts b/src/script/util/E2EIdentity/helper/storage.ts index 5840c07d008..46183fb97bc 100644 --- a/src/script/util/E2EIdentity/helper/storage.ts +++ b/src/script/util/E2EIdentity/helper/storage.ts @@ -17,40 +17,24 @@ * */ -const EndTimeKey = 'E2EIdentity_DelayTimer_EndTime'; -const LastDelayTimeKey = 'E2EIdentity_DelayTimer_LastDelayTime'; +const FiringDateKey = 'E2EIdentity_DelayTimer_FiringDate'; const GracePeriodKey = 'E2EIdentity_DelayTimer_GracePeriod'; -const TotalDelayTimeKey = 'E2EIdentity_DelayTimer_TotalDelayTime'; const DelayTimerStore = { set: { - endTime: (endTime: number) => localStorage.setItem(EndTimeKey, String(endTime)), + firingDate: (firingDate: number) => localStorage.setItem(FiringDateKey, String(firingDate)), gracePeriod: (gracePeriod: number) => localStorage.setItem(GracePeriodKey, String(gracePeriod)), - lastDelayTime: (lastDelayTime: number) => localStorage.setItem(LastDelayTimeKey, String(lastDelayTime)), - totalDelayTime: (totalDelayTime: number) => localStorage.setItem(TotalDelayTimeKey, String(totalDelayTime)), }, get: { - endTime: () => Number(localStorage.getItem(EndTimeKey)), + firingDate: () => Number(localStorage.getItem(FiringDateKey)), gracePeriod: () => Number(localStorage.getItem(GracePeriodKey)), - lastDelayTime: () => Number(localStorage.getItem(LastDelayTimeKey)), - totalDelayTime: () => Number(localStorage.getItem(TotalDelayTimeKey)), - }, - has: { - endTime: () => localStorage.getItem(EndTimeKey) !== null, - gracePeriod: () => localStorage.getItem(GracePeriodKey) !== null, - lastDelayTime: () => localStorage.getItem(LastDelayTimeKey) !== null, - totalDelayTime: () => localStorage.getItem(TotalDelayTimeKey) !== null, }, clear: { - endTime: () => localStorage.removeItem(EndTimeKey), + firingDate: () => localStorage.removeItem(FiringDateKey), gracePeriod: () => localStorage.removeItem(GracePeriodKey), - lastDelayTime: () => localStorage.removeItem(LastDelayTimeKey), - totalDelayTime: () => localStorage.removeItem(TotalDelayTimeKey), all: () => { - DelayTimerStore.clear.endTime(); + DelayTimerStore.clear.firingDate(); DelayTimerStore.clear.gracePeriod(); - DelayTimerStore.clear.lastDelayTime(); - DelayTimerStore.clear.totalDelayTime(); }, }, }; diff --git a/yarn.lock b/yarn.lock index 8735a6b8ccd..652558b3ea0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,6 +28,21 @@ __metadata: languageName: node linkType: hard +"@auth0/auth0-spa-js@npm:^1.6.2": + version: 1.22.6 + resolution: "@auth0/auth0-spa-js@npm:1.22.6" + dependencies: + abortcontroller-polyfill: ^1.7.3 + browser-tabs-lock: ^1.2.15 + core-js: ^3.25.4 + es-cookie: ~1.3.2 + fast-text-encoding: ^1.0.6 + promise-polyfill: ^8.2.3 + unfetch: ^4.2.0 + checksum: 0155025b82898bd0533db373d7c8b85938fbae097c6fdf732a315ddee67d84a32c32a3b944465aec0600adb11d6d32e53eabbfc2ea04e6b5c90f92f72607bc30 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.21.4": version: 7.21.4 resolution: "@babel/code-frame@npm:7.21.4" @@ -3962,16 +3977,6 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:8.37.0": - version: 8.37.0 - resolution: "@types/eslint@npm:8.37.0" - dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: 06d3b3fba12004294591b5c7a52e3cec439472195da54e096076b1f2ddfbb8a445973b9681046dd530a6ac31eca502f635abc1e3ce37d03513089358e6f822ee - languageName: node - linkType: hard - "@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.1 resolution: "@types/estree@npm:1.0.1" @@ -4776,9 +4781,9 @@ __metadata: languageName: node linkType: hard -"@wireapp/api-client@npm:^24.15.0": - version: 24.15.0 - resolution: "@wireapp/api-client@npm:24.15.0" +"@wireapp/api-client@file:.yalc/@wireapp/api-client::locator=wire-webapp%40workspace%3A.": + version: 24.15.1 + resolution: "@wireapp/api-client@file:.yalc/@wireapp/api-client#.yalc/@wireapp/api-client::hash=8758d6&locator=wire-webapp%40workspace%3A." dependencies: "@wireapp/commons": ^5.1.0 "@wireapp/priority-queue": ^2.1.1 @@ -4791,7 +4796,27 @@ __metadata: spark-md5: 3.0.2 tough-cookie: 4.1.2 ws: 8.11.0 - checksum: 5a2a6dad73b56110690f6e62bd7f45bb7ed1ccdaaa748f8207fb7da987150dd7e2c8cf8cfd68a7c3c951e9ac69afd49dd2335157156dff277c3f72efc3695273 + zod: ^3.21.4 + checksum: ab57aeaaf75c39b72029fbe16d29995671095cacf6981bf2919479d42fffb210a42517b2440a352df5d4255124b5fbfb9a45cc5774354628d18da0476341a582 + languageName: node + linkType: hard + +"@wireapp/api-client@npm:^24.15.1": + version: 24.15.1 + resolution: "@wireapp/api-client@npm:24.15.1" + dependencies: + "@wireapp/commons": ^5.1.0 + "@wireapp/priority-queue": ^2.1.1 + "@wireapp/protocol-messaging": 1.44.0 + axios: 1.4.0 + axios-retry: 3.5.0 + http-status-codes: 2.2.0 + logdown: 3.3.1 + reconnecting-websocket: 4.4.0 + spark-md5: 3.0.2 + tough-cookie: 4.1.2 + ws: 8.11.0 + checksum: a0b0d3bc398ddb5dec12642c61efb46306228ff2f2875abb4d62406612ce2e7e31b6f21433b8597b90adcc9e83bc744f070b2664a54d872401b216c72b7d3162 languageName: node linkType: hard @@ -4844,11 +4869,11 @@ __metadata: languageName: node linkType: hard -"@wireapp/core@npm:40.3.0": - version: 40.3.0 - resolution: "@wireapp/core@npm:40.3.0" +"@wireapp/core@file:.yalc/@wireapp/core::locator=wire-webapp%40workspace%3A.": + version: 40.3.1 + resolution: "@wireapp/core@file:.yalc/@wireapp/core#.yalc/@wireapp/core::hash=98736c&locator=wire-webapp%40workspace%3A." dependencies: - "@wireapp/api-client": ^24.15.0 + "@wireapp/api-client": ^24.15.1 "@wireapp/commons": ^5.1.0 "@wireapp/core-crypto": 0.8.2 "@wireapp/cryptobox": 12.8.0 @@ -4856,6 +4881,7 @@ __metadata: "@wireapp/protocol-messaging": 1.44.0 "@wireapp/store-engine": 5.1.1 "@wireapp/store-engine-dexie": ^2.1.1 + auth0-spa-js: ^1.6.5 axios: 1.4.0 bazinga64: 6.1.1 deepmerge-ts: 4.3.0 @@ -4864,8 +4890,10 @@ __metadata: idb: 7.1.1 logdown: 3.3.1 long: ^5.2.0 + oidc-client-ts: ^2.2.2 uuidjs: 4.2.13 - checksum: 975932a904843790651cf7f28b0a0df5e83cdd3d3a631caef5ded9e08b91e316e128310427e75fd91650083dcaace8cecd2df46b321b52ac9b4cfbd4313803f4 + zod: ^3.21.4 + checksum: 7f1aa240b979e8b74ad071c610c4f791f23d5cd8fcc0ded497d34795a7ff2b20fd915edc4bb639fe483d87a63a5136add2ac9f98e6af7cbb4bb58a478ef3aa2e languageName: node linkType: hard @@ -5084,6 +5112,13 @@ __metadata: languageName: node linkType: hard +"abortcontroller-polyfill@npm:^1.7.3": + version: 1.7.5 + resolution: "abortcontroller-polyfill@npm:1.7.5" + checksum: daf4169f4228ae0e4f4dbcfa782e501b923667f2666b7c55bd3b7664e5d6b100e333a93371173985fdf21f65d7dfba15bdb2e6031bdc9e57e4ce0297147da3aa + languageName: node + linkType: hard + "acorn-class-fields@npm:^0.3.7": version: 0.3.7 resolution: "acorn-class-fields@npm:0.3.7" @@ -5654,6 +5689,15 @@ __metadata: languageName: node linkType: hard +"auth0-spa-js@npm:^1.6.5": + version: 1.6.5 + resolution: "auth0-spa-js@npm:1.6.5" + dependencies: + "@auth0/auth0-spa-js": ^1.6.2 + checksum: daec7a9f2afc1eb24adc0f1173805087e5526508a89e751d37cd8b395374cf7b2806e833a6bce8748a6cb169676692a70d0861e33fe105f0f7511fe77e5b8a21 + languageName: node + linkType: hard + "autoprefixer@npm:^10.4.13, autoprefixer@npm:^10.4.14": version: 10.4.14 resolution: "autoprefixer@npm:10.4.14" @@ -6020,6 +6064,15 @@ __metadata: languageName: node linkType: hard +"browser-tabs-lock@npm:^1.2.15": + version: 1.3.0 + resolution: "browser-tabs-lock@npm:1.3.0" + dependencies: + lodash: ">=4.17.21" + checksum: 4fcfb6d5fc4bc5e4f53c298d555d8421ca4f815e32c2650b73008868eb70d7ee41aca8f92ad84d9beb77a8ffe0cb99f1efc8d9b3135cc434d48f7bd569f2bb72 + languageName: node + linkType: hard + "browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4, browserslist@npm:^4.21.5": version: 4.21.7 resolution: "browserslist@npm:4.21.7" @@ -6725,6 +6778,13 @@ __metadata: languageName: node linkType: hard +"core-js@npm:^3.25.4": + version: 3.30.2 + resolution: "core-js@npm:3.30.2" + checksum: 73d47e2b9d9f502800973982d08e995bbf04832e20b04e04be31dd7607247158271315e9328788a2408190e291c7ffbefad141167b1e57dea9f983e1e723541e + languageName: node + linkType: hard + "core-util-is@npm:^1.0.3, core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" @@ -6839,6 +6899,13 @@ __metadata: languageName: node linkType: hard +"crypto-js@npm:^4.1.1": + version: 4.1.1 + resolution: "crypto-js@npm:4.1.1" + checksum: b3747c12ee3a7632fab3b3e171ea50f78b182545f0714f6d3e7e2858385f0f4101a15f2517e033802ce9d12ba50a391575ff4638c9de3dd9b2c4bc47768d5425 + languageName: node + linkType: hard + "crypto-random-string@npm:^2.0.0": version: 2.0.0 resolution: "crypto-random-string@npm:2.0.0" @@ -7861,6 +7928,13 @@ __metadata: languageName: node linkType: hard +"es-cookie@npm:~1.3.2": + version: 1.3.2 + resolution: "es-cookie@npm:1.3.2" + checksum: 8509355a7d00bd2e3fcab4a76a90e0da35b40c1e76f114f8ffe805ab3fdfff51e8fc0e7cdccd9bf1536066150b6b9861e37d78ae14f80680513901902ac4f0df + languageName: node + linkType: hard + "es-get-iterator@npm:^1.1.3": version: 1.1.3 resolution: "es-get-iterator@npm:1.1.3" @@ -8642,6 +8716,13 @@ __metadata: languageName: node linkType: hard +"fast-text-encoding@npm:^1.0.6": + version: 1.0.6 + resolution: "fast-text-encoding@npm:1.0.6" + checksum: 9d58f694314b3283e785bf61954902536da228607ad246905e30256f9ab8331f780ac987e7222c9f5eafd04168d07e12b8054c85cedb76a2c05af0e82387a903 + languageName: node + linkType: hard + "fastest-levenshtein@npm:^1.0.12, fastest-levenshtein@npm:^1.0.16": version: 1.0.16 resolution: "fastest-levenshtein@npm:1.0.16" @@ -11450,6 +11531,13 @@ __metadata: languageName: node linkType: hard +"jwt-decode@npm:^3.1.2": + version: 3.1.2 + resolution: "jwt-decode@npm:3.1.2" + checksum: 20a4b072d44ce3479f42d0d2c8d3dabeb353081ba4982e40b83a779f2459a70be26441be6c160bfc8c3c6eadf9f6380a036fbb06ac5406b5674e35d8c4205eeb + languageName: node + linkType: hard + "keyboardjs@npm:2.7.0": version: 2.7.0 resolution: "keyboardjs@npm:2.7.0" @@ -11923,7 +12011,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:>=4.17.21, lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -12951,6 +13039,16 @@ __metadata: languageName: node linkType: hard +"oidc-client-ts@npm:^2.2.2": + version: 2.2.4 + resolution: "oidc-client-ts@npm:2.2.4" + dependencies: + crypto-js: ^4.1.1 + jwt-decode: ^3.1.2 + checksum: fe50944a4141c29f6439581d9850d4d3200a0083ee4e22b15dca8e164a08f53e975d522b1e3aa129b85862e1677c22f789fe90c8668b94482d97c569190657a2 + languageName: node + linkType: hard + "omggif@npm:^1.0.10, omggif@npm:^1.0.9": version: 1.0.10 resolution: "omggif@npm:1.0.10" @@ -14390,6 +14488,13 @@ __metadata: languageName: node linkType: hard +"promise-polyfill@npm:^8.2.3": + version: 8.3.0 + resolution: "promise-polyfill@npm:8.3.0" + checksum: 206373802076c77def0805758d0a8ece64120dfa6603f092404a1004211f8f2f67f33cadbc35953fc2a8ed0b0d38c774e88bdf01e20ce7a920723a60df84b7a5 + languageName: node + linkType: hard + "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -16989,6 +17094,13 @@ __metadata: languageName: node linkType: hard +"unfetch@npm:^4.2.0": + version: 4.2.0 + resolution: "unfetch@npm:4.2.0" + checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -17685,7 +17797,6 @@ __metadata: "@types/caniuse-lite": ^1.0.1 "@types/classnames": 2.3.1 "@types/dexie-batch": 0.4.3 - "@types/eslint": 8.37.0 "@types/fs-extra": 11.0.1 "@types/generate-changelog": 1.8.1 "@types/highlight.js": 10.1.0 @@ -17714,9 +17825,10 @@ __metadata: "@types/webpack-env": 1.18.1 "@typescript-eslint/eslint-plugin": ^5.59.7 "@typescript-eslint/parser": ^5.59.7 + "@wireapp/api-client": "file:.yalc/@wireapp/api-client" "@wireapp/avs": 9.2.13 "@wireapp/copy-config": 2.1.0 - "@wireapp/core": 40.3.0 + "@wireapp/core": "file:.yalc/@wireapp/core" "@wireapp/eslint-config": 2.2.1 "@wireapp/lru-cache": 3.8.1 "@wireapp/prettier-config": 0.6.0 @@ -18361,6 +18473,13 @@ __metadata: languageName: node linkType: hard +"zod@npm:^3.21.4": + version: 3.21.4 + resolution: "zod@npm:3.21.4" + checksum: f185ba87342ff16f7a06686767c2b2a7af41110c7edf7c1974095d8db7a73792696bcb4a00853de0d2edeb34a5b2ea6a55871bc864227dace682a0a28de33e1f + languageName: node + linkType: hard + "zustand@npm:4.3.8": version: 4.3.8 resolution: "zustand@npm:4.3.8" From c926073077edc3e65d6459b12195bd8bf411dcc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Tue, 6 Jun 2023 09:54:01 +0200 Subject: [PATCH 06/95] fix: update ignore --- .env.defaults | 225 -------------------------------------------------- .gitignore | 2 +- 2 files changed, 1 insertion(+), 226 deletions(-) delete mode 100644 .env.defaults diff --git a/.env.defaults b/.env.defaults deleted file mode 100644 index 8c5bfe58922..00000000000 --- a/.env.defaults +++ /dev/null @@ -1,225 +0,0 @@ -# Sets the environment operation mode. Possible values are production & development. -# This setting affects the server behaviour and the web client bundling. If set to development, -# all custom environment variables will be deactivated. -# http://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production -# NODE_ENV="production" - -# Sets the port the server is running on. -# PORT="21080" - -# Used to decide which module will print debug information, e.g. @wireapp/*. -# https://nodejs.org/docs/latest/api/util.html#util_util_debuglog_section -NODE_DEBUG="" - -# Sets the tracking API key. -ANALYTICS_API_KEY="" - -# Specifies the user facing domain of the app, e.g. https://app.wire.com -APP_BASE="https://app.wire.com" - -# Specifies the name of the application, e.g. Webapp -APP_NAME="Webapp" - -# Specifies the name of the backend, e.g. Wire -BACKEND_NAME="Wire" - -# Specifies the label of website links, e.g. wire.com -WEBSITE_LABEL="wire.com" - -# Sets the endpoint for backend REST calls, e.g. https://staging-nginz-https.zinfra.io -BACKEND_REST="https://prod-nginz-https.wire.com" - -# Sets the endpoint for the WebSocket connection, e.g. wss://staging-nginz-ssl.zinfra.io -BACKEND_WS="wss://prod-nginz-ssl.wire.com" - -# Specifies the name of the brand, e.g. Wire -BRAND_NAME="Wire" - -# Allows a client to use a development version of the api (if present) -ENABLE_DEV_BACKEND_API="false" - -# Wether the server should enforce HTTPS. -ENFORCE_HTTPS="true" - -# Accepted file extensions for asset upload (e.g. ".txt,.jpg" or "*") -FEATURE_ALLOWED_FILE_UPLOAD_EXTENSIONS="*" - -# Feature toggle for the user consent check. Can be set to true or false. -FEATURE_CHECK_CONSENT="true" - -# Wether the pre-select a temporary client on login page. -FEATURE_DEFAULT_LOGIN_TEMPORARY_CLIENT="false" - -# Feature toggle for account registration. Can be set to true or false. -FEATURE_ENABLE_ACCOUNT_REGISTRATION="true" - -# Feature toggle for account registration whether the user is promped to accept terms of use only -# or terms of use *and* privacy policy at once. Can be set to true or false. Defaults to false. -FEATURE_ENABLE_ACCOUNT_REGISTRATION_ACCEPT_TERMS_AND_PRIVACY_POLICY="false" - -# Feature toggle for debug utils. Can be set to true or false. -FEATURE_ENABLE_DEBUG="false" - -# Feature toggle for domain discovery. Can be set to true or false. -FEATURE_ENABLE_DOMAIN_DISCOVERY="true" - -# Feature toggle for disabling browser access for the application. -# When set to true the webapp can only be used with the desktop application. Can be set to true or false. -FEATURE_ENABLE_ENFORCE_DESKTOP_APPLICATION_ONLY="false" - -# Feature toggle for adding additional entropy during client creation. Can be set to true or false. -FEATURE_ENABLE_EXTRA_CLIENT_ENTROPY="false" - -# Feature toggle to make the webapp aware of federated backends. -FEATURE_ENABLE_FEDERATION="false" - -# Feature toggle for rendering youtube, vimeo, soundcloud and spotify embeds in the client -FEATURE_ENABLE_MEDIA_EMBEDS="true" - -# Feature toggle for the log in with phone number. Can be set to true or false. -FEATURE_ENABLE_PHONE_LOGIN="true" - -# Feature toggle for the log in via Single Sign On. Can be set to true or false. -FEATURE_ENABLE_SSO="true" - -# Feature toggle to enforce constant bitrate encoding for calls. Can be set to true or false. -FEATURE_ENFORCE_CONSTANT_BITRATE="false" - -# Set a default federation domain in case no domain can be found. -FEATURE_FEDERATION_DOMAIN="" - -# Wether the temporary clients should use IndexedDB. If set to false, they will use an in-memory database. -FEATURE_PERSIST_TEMPORARY_CLIENTS="true" - -# Feature toggle for the log in with a username. Can be set to true or false. -FEATURE_ENABLE_USERNAME_LOGIN="true" - -# Feature toggle for additional application loading information. Can be set to true or false. -FEATURE_SHOW_LOADING_INFORMATION="false" - -# Time in seconds after which the unfocused app locks and asks for the passphrase. Setting this also enables this feature for the app. -FEATURE_APPLOCK_UNFOCUS_TIMEOUT="false" - -# Time in seconds after the last unlock which forces the app to lock. -FEATURE_APPLOCK_SCHEDULED_TIMEOUT="false" - -# Feature toggle to automatically mute when accepting incoming conference calls. -FEATURE_CONFERENCE_AUTO_MUTE="false" - -# Sets the verification ID for Google webmasters. -GOOGLE_WEBMASTER_ID="" - -# Limits the number of participants in a group conversation -MAX_GROUP_PARTICIPANTS="500" - -# Limits the number of participants in a legacy video call -MAX_VIDEO_PARTICIPANTS="4" - -# Minimum number of characters when setting a password -NEW_PASSWORD_MINIMUM_LENGTH="8" - -# Sets the Countly product reporting API key. -COUNTLY_API_KEY="" - -# Open graph header description -OPEN_GRAPH_DESCRIPTION="Business chats, one-click conference calls and shared documents – all protected with end-to-end encryption. Also available for personal use." - -# Open graph header image URL -OPEN_GRAPH_IMAGE_URL="https://wire-docs.wire.com/kalina/wire-icon.png" - -# Open graph header title -OPEN_GRAPH_TITLE="Wire · The most secure collaboration platform" - -# Sets the host URL for the account service (password reset, account deletion, etc.), e.g. https://account.wire.com -URL_ACCOUNT_BASE="https://account.wire.com" - -# Sets the host URL for the mobile client -URL_MOBILE_BASE="" - -# Sets the URL for the privacy policy -URL_PRIVACY_POLICY="https://wire.com/legal/#privacy" - -# Sets the host URL for the team settings service, e.g. https://teams.wire.com -URL_TEAMS_BASE="https://teams.wire.com" - -# Sets the billing URL for the team settings service -URL_TEAMS_BILLING="https://teams.wire.com/billing" - -# Sets the URL for pricing information, e.g. https://wire.com/pricing -URL_PRICING="https://wire.com/pricing" - -# Sets the URL for the team creation -URL_TEAMS_CREATE="https://wire.com/create-team/?pk_campaign=client&pk_kwd=desktop" - -# Sets the URL for the personal terms of use -URL_TERMS_OF_USE_PERSONAL="https://wire.com/legal/#terms" - -# Sets the URL for the teams terms of use -URL_TERMS_OF_USE_TEAMS="https://wire.com/legal/#teams" - -# Sets the host URL for the website, e.g. https://wire.com -URL_WEBSITE_BASE="https://wire.com" - -URL_SUPPORT_INDEX="https://support.wire.com/" - -URL_SUPPORT_BUG_REPORT="https://support.wire.com/hc/requests/new" - -URL_SUPPORT_CALLING="https://support.wire.com/hc/articles/202969412" - -URL_SUPPORT_CAMERA_ACCESS_DENIED="https://support.wire.com/hc/articles/202935412" - -URL_SUPPORT_CONTACT="https://support.wire.com/hc/requests/new" - -URL_SUPPORT_DEVICE_ACCESS_DENIED="https://support.wire.com/hc/articles/202935412" - -URL_SUPPORT_DEVICE_NOT_FOUND="https://support.wire.com/hc/articles/202970662" - -URL_SUPPORT_EMAIL_EXISTS="https://support.wire.com/hc/articles/115004082129" - -URL_SUPPORT_HISTORY="https://support.wire.com/hc/articles/207834645" - -URL_SUPPORT_LEGAL_HOLD_BLOCK="https://support.wire.com/hc/articles/360002018278-What-is-legal-hold-" - -URL_SUPPORT_MICROPHONE_ACCESS_DENIED="https://support.wire.com/hc/articles/202590081" - -URL_SUPPORT_PRIVACY_VERIFY_FINGERPRINT="https://support.wire.com/hc/en-us/articles/207692235" - -URL_SUPPORT_SCREEN_ACCESS_DENIED="https://support.wire.com/hc/articles/202935412" - -URL_WHATS_NEW="https://github.com/wireapp/wire-webapp/releases/latest" - -# Content Security Policy -# Multiple entries separated by comma, e.g. "https://*.wire.com, https://*.zinfra.io, 'self'" - -# Adds additional CSP connect-src entries. The default already includes BACKEND_REST & BACKEND_WS. -CSP_EXTRA_CONNECT_SRC="https://*.wire.com, wss://prod-nginz-ssl.wire.com" - -# Adds additional CSP default-src entries. -CSP_EXTRA_DEFAULT_SRC="" - -# Adds additional CSP font-src entries. -CSP_EXTRA_FONT_SRC="" - -# Adds additional CSP frame-src entries. -CSP_EXTRA_FRAME_SRC="" - -# Adds additional CSP img-src entries. -CSP_EXTRA_IMG_SRC="https://*.wire.com" - -# Adds additional CSP manifest-src entries. -CSP_EXTRA_MANIFEST_SRC="" - -# Adds additional CSP media-src entries. -CSP_EXTRA_MEDIA_SRC="" - -# Adds additional CSP object-src entries. -CSP_EXTRA_OBJECT_SRC="" - -# Adds additional CSP script-src entries. -CSP_EXTRA_SCRIPT_SRC="https://*.wire.com" - -# Adds additional CSP style-src entries. -CSP_EXTRA_STYLE_SRC="" - -# Adds additional CSP worker-src entries. -CSP_EXTRA_WORKER_SRC="" diff --git a/.gitignore b/.gitignore index c3f62535bff..399fd5b98e7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ !/.idea/modules.xml .env .env.* -!.env.defaults +!.env.localhost .DS_Store .idea .vscode From 44b257bac285c37e56dc02760fea6c772594177e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Fri, 9 Jun 2023 09:49:30 +0200 Subject: [PATCH 07/95] featr: finish modal implementation and setup tests --- package.json | 5 +- .../Modals/PrimaryModal/PrimaryModal.tsx | 13 +- src/script/team/TeamRepository.ts | 16 +- .../util/E2EIdentity/E2EIdentity.test.ts | 234 ++++++++++++++++++ src/script/util/E2EIdentity/E2EIdentity.ts | 29 ++- yarn.lock | 214 ++++++++++++---- 6 files changed, 438 insertions(+), 73 deletions(-) create mode 100644 src/script/util/E2EIdentity/E2EIdentity.test.ts diff --git a/package.json b/package.json index d6f36d15c47..6db7f933e8e 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,8 @@ "@datadog/browser-rum": "^4.42.2", "@emotion/react": "11.11.0", "@loadable/component": "^5.15.3", - "@types/eslint": "8.37.0", "@wireapp/avs": "9.2.15", - "@wireapp/core": "40.5.1", + "@wireapp/core": "file:.yalc/@wireapp/core", "@wireapp/lru-cache": "3.8.1", "@wireapp/react-ui-kit": "9.7.3", "@wireapp/store-engine-dexie": "2.1.1", @@ -86,7 +85,7 @@ "@types/open-graph": "0.2.2", "@types/platform": "1.3.4", "@types/prettier": "^2.7.3", - "@types/react": "18.0.28", + "@types/react": "^18.2.9", "@types/react-dom": "18.2.4", "@types/react-redux": "7.1.25", "@types/react-transition-group": "4.4.6", diff --git a/src/script/components/Modals/PrimaryModal/PrimaryModal.tsx b/src/script/components/Modals/PrimaryModal/PrimaryModal.tsx index 6b9b344a35b..ef0c6b66f6f 100644 --- a/src/script/components/Modals/PrimaryModal/PrimaryModal.tsx +++ b/src/script/components/Modals/PrimaryModal/PrimaryModal.tsx @@ -21,7 +21,7 @@ import {FC, FormEvent, MouseEvent, useState, useRef, ChangeEvent, useEffect} fro import cx from 'classnames'; -import {Checkbox, CheckboxLabel} from '@wireapp/react-ui-kit'; +import {Checkbox, CheckboxLabel, Loading} from '@wireapp/react-ui-kit'; import {FadingScrollbar} from 'Components/FadingScrollbar'; import {Icon} from 'Components/Icon'; @@ -222,7 +222,16 @@ export const PrimaryModalComponent: FC = () => { )} {showLoadingIndicator ? ( - <>Loading.... +
+ +
) : (
{secondaryActions diff --git a/src/script/team/TeamRepository.ts b/src/script/team/TeamRepository.ts index 4f9ff1caf5d..a8a852bbdf3 100644 --- a/src/script/team/TeamRepository.ts +++ b/src/script/team/TeamRepository.ts @@ -470,8 +470,8 @@ export class TeamRepository { private readonly handleFileSharingFeatureChange = (previousConfig: FeatureList, newConfig: FeatureList) => { const hasFileSharingChanged = - previousConfig?.fileSharing?.status && previousConfig.fileSharing.status !== fileSharing?.status; - const hasChangedToEnabled = fileSharing?.status === FeatureStatus.ENABLED; + previousConfig?.fileSharing?.status && previousConfig.fileSharing.status !== newConfig.fileSharing?.status; + const hasChangedToEnabled = newConfig.fileSharing?.status === FeatureStatus.ENABLED; if (hasFileSharingChanged) { PrimaryModal.show(PrimaryModal.type.ACKNOWLEDGE, { @@ -488,8 +488,8 @@ export class TeamRepository { private readonly handleGuestLinkFeatureChange = (previousConfig: FeatureList, newConfig: FeatureList) => { const hasGuestLinkChanged = previousConfig?.conversationGuestLinks?.status && - previousConfig.conversationGuestLinks.status !== conversationGuestLinks?.status; - const hasGuestLinkChangedToEnabled = conversationGuestLinks?.status === FeatureStatus.ENABLED; + previousConfig.conversationGuestLinks.status !== newConfig.conversationGuestLinks?.status; + const hasGuestLinkChangedToEnabled = newConfig.conversationGuestLinks?.status === FeatureStatus.ENABLED; if (hasGuestLinkChanged) { PrimaryModal.show(PrimaryModal.type.ACKNOWLEDGE, { @@ -541,8 +541,8 @@ export class TeamRepository { private readonly handleAudioVideoFeatureChange = (previousConfig: FeatureList, newConfig: FeatureList) => { const hasVideoCallingChanged = - previousConfig?.videoCalling?.status && previousConfig.videoCalling.status !== videoCalling?.status; - const hasChangedToEnabled = videoCalling?.status === FeatureStatus.ENABLED; + previousConfig?.videoCalling?.status && previousConfig.videoCalling.status !== newConfig.videoCalling?.status; + const hasChangedToEnabled = newConfig.videoCalling?.status === FeatureStatus.ENABLED; if (hasVideoCallingChanged) { PrimaryModal.show(PrimaryModal.type.ACKNOWLEDGE, { @@ -559,9 +559,9 @@ export class TeamRepository { private readonly handleConferenceCallingFeatureChange = (previousConfig: FeatureList, newConfig: FeatureList) => { if ( previousConfig?.conferenceCalling?.status && - previousConfig.conferenceCalling.status !== conferenceCalling?.status + previousConfig.conferenceCalling.status !== newConfig.conferenceCalling?.status ) { - const hasChangedToEnabled = conferenceCalling?.status === FeatureStatus.ENABLED; + const hasChangedToEnabled = newConfig.conferenceCalling?.status === FeatureStatus.ENABLED; if (hasChangedToEnabled) { const replaceEnterprise = replaceLink( Config.getConfig().URL.PRICING, diff --git a/src/script/util/E2EIdentity/E2EIdentity.test.ts b/src/script/util/E2EIdentity/E2EIdentity.test.ts new file mode 100644 index 00000000000..3afa9e913a9 --- /dev/null +++ b/src/script/util/E2EIdentity/E2EIdentity.test.ts @@ -0,0 +1,234 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {container} from 'tsyringe'; + +import {PrimaryModal} from 'Components/Modals/PrimaryModal'; +import {Config} from 'src/script/Config'; +import {Core} from 'src/script/service/CoreSingleton'; +import {UserState} from 'src/script/user/UserState'; +import * as util from 'Util/util'; + +import {E2EIHandler, E2EIHandlerStep} from './E2EIdentity'; +import {getModalOptions, ModalType} from './Modals'; + +jest.mock('Util/util'); +jest.mock('src/script/Config'); +jest.mock('tsyringe'); +jest.mock('src/script/service/CoreSingleton', () => { + return { + Core: jest.fn().mockImplementation(() => { + return {startE2EIEnrollment: jest.fn()}; + }), + }; +}); +jest.mock('src/script/user/UserState', () => { + return { + UserState: jest.fn().mockImplementation(() => { + return {self: jest.fn()}; + }), + }; +}); +jest.mock('Components/Modals/PrimaryModal'); +jest.mock('./Modals', () => ({ + getModalOptions: jest.fn().mockReturnValue({ + modalOptions: {}, + modalType: 'someType', + }), + ModalType: { + LOADING: 'loading', + SUCCESS: 'success', + ERROR: 'error', + ENROLL: 'enroll', + }, +})); +jest.mock('src/script/service/CoreSingleton', () => ({ + Core: jest.fn().mockImplementation(() => ({ + startE2EIEnrollment: jest.fn(), + })), +})); +jest.mock('src/script/user/UserState', () => ({ + UserState: jest.fn().mockImplementation(() => ({ + self: jest.fn(), + })), +})); + +describe('E2EIHandler', () => { + const params = {discoveryUrl: 'http://example.com', gracePeriodInMS: 30000}; + const newParams = {discoveryUrl: 'http://new-example.com', gracePeriodInMS: 60000}; + const user = {name: () => 'John Doe', username: () => 'johndoe'}; + let coreMock: Core; + let userStateMock: UserState; + + beforeEach(() => { + (util.supportsMLS as jest.Mock).mockReturnValue(true); + // Reset the singleton instance before each test + E2EIHandler.resetInstance(); + // Clear all mocks before each test + jest.clearAllMocks(); + // Setup the Core and UserState services mocks + coreMock = new Core(); + userStateMock = new UserState(); + (userStateMock.self as unknown as jest.Mock).mockReturnValue({name: () => 'John Doe', username: () => 'johndoe'}); + (coreMock.startE2EIEnrollment as jest.Mock).mockResolvedValue(true); + + (container.resolve as jest.Mock).mockImplementation(service => { + if (service === Core) { + return coreMock; + } + if (service === UserState) { + return userStateMock; + } + return null; + }); + + // Mock the Config service to return true for ENABLE_E2EI + (util.supportsMLS as jest.Mock).mockReturnValue(true); + Config.getConfig = jest.fn().mockReturnValue({FEATURE: {ENABLE_E2EI: true}}); + + // Mock the PrimaryModal service to return a mock modal + (PrimaryModal.show as jest.Mock).mockClear(); + (getModalOptions as jest.Mock).mockClear(); + }); + + it('should create instance with valid params', () => { + const instance = E2EIHandler.getInstance(params); + expect(instance).toBeInstanceOf(E2EIHandler); + }); + + it('should throw error if no params provided', () => { + expect(() => E2EIHandler.getInstance()).toThrow( + 'GracePeriodTimer is not initialized. Please call getInstance with params.', + ); + }); + + it('should always return the same instance', () => { + const instance1 = E2EIHandler.getInstance(params); + const instance2 = E2EIHandler.getInstance(params); + expect(instance1).toBe(instance2); + }); + + it('should update parameters correctly', () => { + const instance = E2EIHandler.getInstance(params); + + // Assuming that the instance exposes getters for discoveryUrl and gracePeriodInMS for testing purposes + expect(instance['discoveryUrl']).toEqual(params.discoveryUrl); + expect(instance['gracePeriodInMS']).toEqual(params.gracePeriodInMS); + + instance.updateParams(newParams); + expect(instance['discoveryUrl']).toEqual(newParams.discoveryUrl); + expect(instance['gracePeriodInMS']).toEqual(newParams.gracePeriodInMS); + }); + + it('should return true when supportsMLS returns true and ENABLE_E2EI is true', () => { + const instance = E2EIHandler.getInstance(params); + expect(instance.isE2EIEnabled).toBe(true); + }); + + it('should return false when supportsMLS returns false', () => { + (util.supportsMLS as jest.Mock).mockReturnValue(false); + + const instance = E2EIHandler.getInstance(params); + expect(instance.isE2EIEnabled).toBe(false); + }); + + it('should return false when ENABLE_E2EI is false', () => { + Config.getConfig = jest.fn().mockReturnValue({FEATURE: {ENABLE_E2EI: false}}); + + const instance = E2EIHandler.getInstance(params); + expect(instance.isE2EIEnabled).toBe(false); + }); + + it('should set currentStep to INITIALIZE after initialize is called', () => { + const instance = E2EIHandler.getInstance(params); + instance.initialize(); + expect(instance['currentStep']).toBe(E2EIHandlerStep.INITIALIZE); + }); + + it('should set currentStep to ENROLL when enrollE2EI is called and enrollment succeeds', async () => { + const instance = E2EIHandler.getInstance(params); + await instance['enrollE2EI'](); + expect(instance['currentStep']).toBe(E2EIHandlerStep.SUCCESS); + }); + + it('should set currentStep to ERROR when enrollE2EI is called and enrollment fails', async () => { + // Mock the Core service to return an error + (container.resolve as any) = jest.fn(service => { + if (service === Core) { + return {startE2EIEnrollment: jest.fn(() => Promise.reject())}; + } + return {self: () => user}; + }); + + const instance = E2EIHandler.getInstance(params); + await instance['enrollE2EI'](); + expect(instance['currentStep']).toBe(E2EIHandlerStep.ERROR); + }); + + it('should display user info message when initialized', async () => { + const handler = E2EIHandler.getInstance(params); + await handler.initialize(); + expect(getModalOptions).toHaveBeenCalledWith( + expect.objectContaining({ + type: ModalType.ENROLL, + }), + ); + }); + + it('should display loading message when enrolled', async () => { + const handler = E2EIHandler.getInstance(params); + await handler['enrollE2EI'](); + expect(getModalOptions).toHaveBeenCalledWith( + expect.objectContaining({ + type: ModalType.LOADING, + }), + ); + }); + + it('should display success message when enrollment is done', async () => { + const handler = E2EIHandler.getInstance(params); + handler['showLoadingMessage'] = jest.fn(); + await handler['enrollE2EI'](); + expect(getModalOptions).toHaveBeenCalledWith( + expect.objectContaining({ + type: ModalType.SUCCESS, + }), + ); + }); + + it('should display error message when enrollment fails', async () => { + (container.resolve as jest.Mock).mockImplementation(service => { + if (service === Core) { + return {startE2EIEnrollment: jest.fn(() => Promise.reject(false))}; + } + if (service === UserState) { + return userStateMock; + } + return null; + }); + const handler = E2EIHandler.getInstance(params); + handler['showLoadingMessage'] = jest.fn(); + await handler['enrollE2EI'](); + expect(getModalOptions).toHaveBeenCalledWith( + expect.objectContaining({ + type: ModalType.ERROR, + }), + ); + }); +}); diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/util/E2EIdentity/E2EIdentity.ts index 50037c2352d..608457a313a 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.ts @@ -28,7 +28,7 @@ import {supportsMLS} from 'Util/util'; import {GracePeriodTimer} from './DelayTimer'; import {getModalOptions, ModalType} from './Modals'; -enum E2EIHandlerStep { +export enum E2EIHandlerStep { INITIALIZE = 'initialize', ENROLL = 'enroll', SUCCESS = 'success', @@ -72,6 +72,13 @@ class E2EIHandler { return E2EIHandler.instance; } + /** + * Reset the instance + */ + public static resetInstance() { + E2EIHandler.instance = null; + } + /** * @param E2EIHandlerParams The params to create the grace period timer */ @@ -85,7 +92,7 @@ class E2EIHandler { public initialize(): void { if (this.isE2EIEnabled) { this.currentStep = E2EIHandlerStep.INITIALIZE; - this.notifyUserAboutE2EI(); + this.showE2EINotificationMessage(); } } @@ -100,7 +107,15 @@ class E2EIHandler { // Notify user about E2EI enrollment in progress this.currentStep = E2EIHandlerStep.ENROLL; this.showLoadingMessage(); - await core.startE2EIEnrollment(this.discoveryUrl, userState.self().name(), userState.self().username()); + const success = await core.startE2EIEnrollment( + this.discoveryUrl, + userState.self().name(), + userState.self().username(), + ); + console.log('success', success); + if (!success) { + throw new Error('E2EI enrollment failed'); + } // Notify user about E2EI enrollment success removeCurrentModal(); this.currentStep = E2EIHandlerStep.SUCCESS; @@ -151,21 +166,21 @@ class E2EIHandler { await this.enrollE2EI(); }, secondaryActionFn: () => { - this.notifyUserAboutE2EI(); + this.showE2EINotificationMessage(); }, }); PrimaryModal.show(modalType, modalOptions); } - private notifyUserAboutE2EI(): void { + private showE2EINotificationMessage(): void { if (this.currentStep === E2EIHandlerStep.INITIALIZE) { this.timer.updateParams({ gracePeriodInMS: this.gracePeriodInMS, gpCallback: () => { - this.notifyUserAboutE2EI(); + this.showE2EINotificationMessage(); }, delayCallback: () => { - this.notifyUserAboutE2EI(); + this.showE2EINotificationMessage(); }, }); } diff --git a/yarn.lock b/yarn.lock index 49798ebdfcf..c3a4ee5dc6f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,6 +28,21 @@ __metadata: languageName: node linkType: hard +"@auth0/auth0-spa-js@npm:^1.6.2": + version: 1.22.6 + resolution: "@auth0/auth0-spa-js@npm:1.22.6" + dependencies: + abortcontroller-polyfill: ^1.7.3 + browser-tabs-lock: ^1.2.15 + core-js: ^3.25.4 + es-cookie: ~1.3.2 + fast-text-encoding: ^1.0.6 + promise-polyfill: ^8.2.3 + unfetch: ^4.2.0 + checksum: 0155025b82898bd0533db373d7c8b85938fbae097c6fdf732a315ddee67d84a32c32a3b944465aec0600adb11d6d32e53eabbfc2ea04e6b5c90f92f72607bc30 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.21.4": version: 7.21.4 resolution: "@babel/code-frame@npm:7.21.4" @@ -2402,7 +2417,7 @@ __metadata: languageName: node linkType: hard -"@emotion/react@npm:11.11.0, @emotion/react@npm:^11.8.1": +"@emotion/react@npm:11.11.0": version: 11.11.0 resolution: "@emotion/react@npm:11.11.0" dependencies: @@ -2423,6 +2438,27 @@ __metadata: languageName: node linkType: hard +"@emotion/react@npm:^11.8.1": + version: 11.11.1 + resolution: "@emotion/react@npm:11.11.1" + dependencies: + "@babel/runtime": ^7.18.3 + "@emotion/babel-plugin": ^11.11.0 + "@emotion/cache": ^11.11.0 + "@emotion/serialize": ^1.1.2 + "@emotion/use-insertion-effect-with-fallbacks": ^1.0.1 + "@emotion/utils": ^1.2.1 + "@emotion/weak-memoize": ^0.3.1 + hoist-non-react-statics: ^3.3.1 + peerDependencies: + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: aec3c36650f5f0d3d4445ff44d73dd88712b1609645b6af3e6d08049cfbc51f1785fe13dea1a1d4ab1b0800d68f2339ab11e459687180362b1ef98863155aae5 + languageName: node + linkType: hard + "@emotion/serialize@npm:^1.1.2": version: 1.1.2 resolution: "@emotion/serialize@npm:1.1.2" @@ -3962,16 +3998,6 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:8.37.0": - version: 8.37.0 - resolution: "@types/eslint@npm:8.37.0" - dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: 06d3b3fba12004294591b5c7a52e3cec439472195da54e096076b1f2ddfbb8a445973b9681046dd530a6ac31eca502f635abc1e3ce37d03513089358e6f822ee - languageName: node - linkType: hard - "@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.1 resolution: "@types/estree@npm:1.0.1" @@ -4315,25 +4341,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:16 || 17 || 18": - version: 18.2.8 - resolution: "@types/react@npm:18.2.8" - dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" - csstype: ^3.0.2 - checksum: 351fe2450d30bff2ceb6aa84788e948317555e5ea22cb44f6778e08c977aab1878a0119bd94bc3d1bec5f5af4a75ffaa2ce111df5cd9d4ce26bfd719e4d971c2 - languageName: node - linkType: hard - -"@types/react@npm:18.0.28": - version: 18.0.28 - resolution: "@types/react@npm:18.0.28" +"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:^18.2.9": + version: 18.2.9 + resolution: "@types/react@npm:18.2.9" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: e752df961105e5127652460504785897ca6e77259e0da8f233f694f9e8f451cde7fa0709d4456ade0ff600c8ce909cfe29f9b08b9c247fa9b734e126ec53edd7 + checksum: f155256171a2d701eb962a1d3aa2a1c9ee36d9dd4a4aecb911d29e50717aab1a76914aef25242665147c455b9e8d081d1a60275d13ca81075c148ebd6607414a languageName: node linkType: hard @@ -4855,9 +4870,9 @@ __metadata: languageName: node linkType: hard -"@wireapp/core@npm:40.5.1": +"@wireapp/core@file:.yalc/@wireapp/core::locator=wire-webapp%40workspace%3A.": version: 40.5.1 - resolution: "@wireapp/core@npm:40.5.1" + resolution: "@wireapp/core@file:.yalc/@wireapp/core#.yalc/@wireapp/core::hash=2d7f7f&locator=wire-webapp%40workspace%3A." dependencies: "@wireapp/api-client": ^24.15.4 "@wireapp/commons": ^5.1.0 @@ -4867,6 +4882,7 @@ __metadata: "@wireapp/protocol-messaging": 1.44.0 "@wireapp/store-engine": 5.1.1 "@wireapp/store-engine-dexie": ^2.1.2 + auth0-spa-js: ^1.6.5 axios: 1.4.0 bazinga64: 6.1.1 deepmerge-ts: 4.3.0 @@ -4875,8 +4891,10 @@ __metadata: idb: 7.1.1 logdown: 3.3.1 long: ^5.2.0 + oidc-client-ts: ^2.2.2 uuidjs: 4.2.13 - checksum: b360d94a6312f4d1ed5d72959da8d699f772f2ec0c87300c246130e42c6234f1724cceee60541bd41f54b6968720774e4a291f0a0089fb5cb95d7cd61937cb1f + zod: ^3.21.4 + checksum: 2ea70801f6926ae862461a57755140ea5a9b3e3bb8629b2fa21719244d3b8d773fc494067a5b1d4c80ea34cb8fdee0f609ec106c5e803ef907766bc0756a7e18 languageName: node linkType: hard @@ -5106,6 +5124,13 @@ __metadata: languageName: node linkType: hard +"abortcontroller-polyfill@npm:^1.7.3": + version: 1.7.5 + resolution: "abortcontroller-polyfill@npm:1.7.5" + checksum: daf4169f4228ae0e4f4dbcfa782e501b923667f2666b7c55bd3b7664e5d6b100e333a93371173985fdf21f65d7dfba15bdb2e6031bdc9e57e4ce0297147da3aa + languageName: node + linkType: hard + "acorn-class-fields@npm:^0.3.7": version: 0.3.7 resolution: "acorn-class-fields@npm:0.3.7" @@ -5669,6 +5694,15 @@ __metadata: languageName: node linkType: hard +"auth0-spa-js@npm:^1.6.5": + version: 1.6.5 + resolution: "auth0-spa-js@npm:1.6.5" + dependencies: + "@auth0/auth0-spa-js": ^1.6.2 + checksum: daec7a9f2afc1eb24adc0f1173805087e5526508a89e751d37cd8b395374cf7b2806e833a6bce8748a6cb169676692a70d0861e33fe105f0f7511fe77e5b8a21 + languageName: node + linkType: hard + "autoprefixer@npm:^10.4.13, autoprefixer@npm:^10.4.14": version: 10.4.14 resolution: "autoprefixer@npm:10.4.14" @@ -6026,6 +6060,15 @@ __metadata: languageName: node linkType: hard +"browser-tabs-lock@npm:^1.2.15": + version: 1.3.0 + resolution: "browser-tabs-lock@npm:1.3.0" + dependencies: + lodash: ">=4.17.21" + checksum: 4fcfb6d5fc4bc5e4f53c298d555d8421ca4f815e32c2650b73008868eb70d7ee41aca8f92ad84d9beb77a8ffe0cb99f1efc8d9b3135cc434d48f7bd569f2bb72 + languageName: node + linkType: hard + "browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4, browserslist@npm:^4.21.5": version: 4.21.7 resolution: "browserslist@npm:4.21.7" @@ -6731,6 +6774,13 @@ __metadata: languageName: node linkType: hard +"core-js@npm:^3.25.4": + version: 3.30.2 + resolution: "core-js@npm:3.30.2" + checksum: 73d47e2b9d9f502800973982d08e995bbf04832e20b04e04be31dd7607247158271315e9328788a2408190e291c7ffbefad141167b1e57dea9f983e1e723541e + languageName: node + linkType: hard + "core-util-is@npm:^1.0.3, core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" @@ -6857,6 +6907,13 @@ __metadata: languageName: node linkType: hard +"crypto-js@npm:^4.1.1": + version: 4.1.1 + resolution: "crypto-js@npm:4.1.1" + checksum: b3747c12ee3a7632fab3b3e171ea50f78b182545f0714f6d3e7e2858385f0f4101a15f2517e033802ce9d12ba50a391575ff4638c9de3dd9b2c4bc47768d5425 + languageName: node + linkType: hard + "crypto-random-string@npm:^2.0.0": version: 2.0.0 resolution: "crypto-random-string@npm:2.0.0" @@ -7666,9 +7723,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.411": - version: 1.4.421 - resolution: "electron-to-chromium@npm:1.4.421" - checksum: 91baf5e7de012bdd61ca85623cd95da8441d1b8e8268f3999a4cd110b9451be1be2975eb1268ee34a99c2703a07e4b0dc7e940b96b39800c65c3840a9a8ec62f + version: 1.4.425 + resolution: "electron-to-chromium@npm:1.4.425" + checksum: 1ec2e80601eb49982c51f562f74dc9fa1a80f3006c7d508f3bc37d2d12c726df99ff60d7f013e38c374ae81414e0b76d5e7a97f406cdea8b5e8e3dfb51c23f72 languageName: node linkType: hard @@ -7865,6 +7922,13 @@ __metadata: languageName: node linkType: hard +"es-cookie@npm:~1.3.2": + version: 1.3.2 + resolution: "es-cookie@npm:1.3.2" + checksum: 8509355a7d00bd2e3fcab4a76a90e0da35b40c1e76f114f8ffe805ab3fdfff51e8fc0e7cdccd9bf1536066150b6b9861e37d78ae14f80680513901902ac4f0df + languageName: node + linkType: hard + "es-get-iterator@npm:^1.1.3": version: 1.1.3 resolution: "es-get-iterator@npm:1.1.3" @@ -8646,6 +8710,13 @@ __metadata: languageName: node linkType: hard +"fast-text-encoding@npm:^1.0.6": + version: 1.0.6 + resolution: "fast-text-encoding@npm:1.0.6" + checksum: 9d58f694314b3283e785bf61954902536da228607ad246905e30256f9ab8331f780ac987e7222c9f5eafd04168d07e12b8054c85cedb76a2c05af0e82387a903 + languageName: node + linkType: hard + "fastest-levenshtein@npm:^1.0.12, fastest-levenshtein@npm:^1.0.16": version: 1.0.16 resolution: "fastest-levenshtein@npm:1.0.16" @@ -8953,7 +9024,7 @@ __metadata: languageName: node linkType: hard -"fs-monkey@npm:^1.0.3": +"fs-monkey@npm:^1.0.4": version: 1.0.4 resolution: "fs-monkey@npm:1.0.4" checksum: 8b254c982905c0b7e028eab22b410dc35a5c0019c1c860456f5f54ae6a61666e1cb8c6b700d6c88cc873694c00953c935847b9959cc4dcf274aacb8673c1e8bf @@ -9585,9 +9656,9 @@ __metadata: linkType: hard "html-entities@npm:^2.1.0": - version: 2.3.4 - resolution: "html-entities@npm:2.3.4" - checksum: f252ab032485cda049a399554aa36c7b0c95e700f0104fa53fda9b90b0c215ea71a1d0852cdfdfe3a9423630de3d7a69255a1ad84ac36b0fee4ceab775d53171 + version: 2.3.5 + resolution: "html-entities@npm:2.3.5" + checksum: 585f8a4d549b126b147c95398849a343df4cec379ad0ab87c6be1539870751cb85d3d4910c2cb4a848cc99de84307cd9a372890175b73852d5225e716e65e62f languageName: node linkType: hard @@ -9747,11 +9818,11 @@ __metadata: linkType: hard "i18next@npm:*": - version: 22.5.0 - resolution: "i18next@npm:22.5.0" + version: 22.5.1 + resolution: "i18next@npm:22.5.1" dependencies: "@babel/runtime": ^7.20.6 - checksum: 291c0e02fda20bd1827b6529dad74c01867892c7ac000befe0f69e10ad97ab074a2ae5b4ce1e0638c28ae1a6f59d1ed8503ea05bd1c324d731a44dd94c43a49a + checksum: 175f8ab7fac2abcee147b00cc2d8e7d4fa9b05cdc227f02cac841fc2fd9545ed4a6d88774f594f8ad12dc944e4d34cc8e88aa00c8b9947baef9e859d93abd305 languageName: node linkType: hard @@ -11447,6 +11518,13 @@ __metadata: languageName: node linkType: hard +"jwt-decode@npm:^3.1.2": + version: 3.1.2 + resolution: "jwt-decode@npm:3.1.2" + checksum: 20a4b072d44ce3479f42d0d2c8d3dabeb353081ba4982e40b83a779f2459a70be26441be6c160bfc8c3c6eadf9f6380a036fbb06ac5406b5674e35d8c4205eeb + languageName: node + linkType: hard + "keyboardjs@npm:2.7.0": version: 2.7.0 resolution: "keyboardjs@npm:2.7.0" @@ -11919,7 +11997,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:>=4.17.21, lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -12228,11 +12306,11 @@ __metadata: linkType: hard "memfs@npm:^3.4.12": - version: 3.5.2 - resolution: "memfs@npm:3.5.2" + version: 3.5.3 + resolution: "memfs@npm:3.5.3" dependencies: - fs-monkey: ^1.0.3 - checksum: 411a8271fc9dafbf1913d0fb99ae8e703ded8e153ed427de5b6a41ed782b958a81c1d636f4370a3da85e26f76cb180a51cf43de2371368d54cbea0eba2643a11 + fs-monkey: ^1.0.4 + checksum: 18dfdeacad7c8047b976a6ccd58bc98ba76e122ad3ca0e50a21837fe2075fc0d9aafc58ab9cf2576c2b6889da1dd2503083f2364191b695273f40969db2ecc44 languageName: node linkType: hard @@ -12940,6 +13018,16 @@ __metadata: languageName: node linkType: hard +"oidc-client-ts@npm:^2.2.2": + version: 2.2.4 + resolution: "oidc-client-ts@npm:2.2.4" + dependencies: + crypto-js: ^4.1.1 + jwt-decode: ^3.1.2 + checksum: fe50944a4141c29f6439581d9850d4d3200a0083ee4e22b15dca8e164a08f53e975d522b1e3aa129b85862e1677c22f789fe90c8668b94482d97c569190657a2 + languageName: node + linkType: hard + "omggif@npm:^1.0.10, omggif@npm:^1.0.9": version: 1.0.10 resolution: "omggif@npm:1.0.10" @@ -14380,6 +14468,13 @@ __metadata: languageName: node linkType: hard +"promise-polyfill@npm:^8.2.3": + version: 8.3.0 + resolution: "promise-polyfill@npm:8.3.0" + checksum: 206373802076c77def0805758d0a8ece64120dfa6603f092404a1004211f8f2f67f33cadbc35953fc2a8ed0b0d38c774e88bdf01e20ce7a920723a60df84b7a5 + languageName: node + linkType: hard + "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -15404,25 +15499,25 @@ __metadata: linkType: hard "schema-utils@npm:^3.1.1, schema-utils@npm:^3.1.2": - version: 3.1.2 - resolution: "schema-utils@npm:3.1.2" + version: 3.2.0 + resolution: "schema-utils@npm:3.2.0" dependencies: "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 - checksum: 39683edfe3beff018cdb1ae4fa296fc55cea13a080aa2b4d9351895cd64b22ba4d87e2e548c2a2ac1bc76e60980670adb0f413a58104479f1a0c12e5663cb8ca + checksum: e8c590c525a58e135658dbe614c60e4821f98eb4c257c962ad61f72ad1e48b23148c7edd9295dbd5f9fc525ff8c6f448af0a932871fe9c9e1f523d1dbef917c8 languageName: node linkType: hard "schema-utils@npm:^4.0.0": - version: 4.0.1 - resolution: "schema-utils@npm:4.0.1" + version: 4.1.0 + resolution: "schema-utils@npm:4.1.0" dependencies: "@types/json-schema": ^7.0.9 ajv: ^8.9.0 ajv-formats: ^2.1.1 ajv-keywords: ^5.1.0 - checksum: 745e7293c6b6c84940de16753c207311da821aa9911b9e2d158cfd9ffc5bf1f880147abbbe775b96cb8cd3c7f48890950fe0164f54eed9a8aabb948ebf8a3fdd + checksum: f88af7cc0739ee29501ac40e135a4ff7e667a6e7a4c3814086d24b17377bfe0c8ea260c36a89ccbeefbb30f4508d67f336fd0df1a16966e1ba00c8d58a6323b1 languageName: node linkType: hard @@ -16993,6 +17088,13 @@ __metadata: languageName: node linkType: hard +"unfetch@npm:^4.2.0": + version: 4.2.0 + resolution: "unfetch@npm:4.2.0" + checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -17675,7 +17777,6 @@ __metadata: "@types/caniuse-lite": ^1.0.1 "@types/classnames": 2.3.1 "@types/dexie-batch": 0.4.3 - "@types/eslint": 8.37.0 "@types/fs-extra": 11.0.1 "@types/generate-changelog": 1.8.1 "@types/highlight.js": 10.1.0 @@ -17692,7 +17793,7 @@ __metadata: "@types/open-graph": 0.2.2 "@types/platform": 1.3.4 "@types/prettier": ^2.7.3 - "@types/react": 18.0.28 + "@types/react": ^18.2.9 "@types/react-dom": 18.2.4 "@types/react-redux": 7.1.25 "@types/react-transition-group": 4.4.6 @@ -17707,7 +17808,7 @@ __metadata: "@typescript-eslint/parser": ^5.59.9 "@wireapp/avs": 9.2.15 "@wireapp/copy-config": 2.1.0 - "@wireapp/core": 40.5.1 + "@wireapp/core": "file:.yalc/@wireapp/core" "@wireapp/eslint-config": 2.2.2 "@wireapp/lru-cache": 3.8.1 "@wireapp/prettier-config": 0.6.0 @@ -18341,6 +18442,13 @@ __metadata: languageName: node linkType: hard +"zod@npm:^3.21.4": + version: 3.21.4 + resolution: "zod@npm:3.21.4" + checksum: f185ba87342ff16f7a06686767c2b2a7af41110c7edf7c1974095d8db7a73792696bcb4a00853de0d2edeb34a5b2ea6a55871bc864227dace682a0a28de33e1f + languageName: node + linkType: hard + "zustand@npm:4.3.8": version: 4.3.8 resolution: "zustand@npm:4.3.8" From d30f36ac07a6ab466df6c702c0d05ad7d87aa239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Fri, 9 Jun 2023 09:50:05 +0200 Subject: [PATCH 08/95] fix: remove yalc --- package.json | 2 +- yarn.lock | 135 +++++---------------------------------------------- 2 files changed, 14 insertions(+), 123 deletions(-) diff --git a/package.json b/package.json index 6db7f933e8e..9c5db2de2db 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "@emotion/react": "11.11.0", "@loadable/component": "^5.15.3", "@wireapp/avs": "9.2.15", - "@wireapp/core": "file:.yalc/@wireapp/core", + "@wireapp/core": "40.4.2", "@wireapp/lru-cache": "3.8.1", "@wireapp/react-ui-kit": "9.7.3", "@wireapp/store-engine-dexie": "2.1.1", diff --git a/yarn.lock b/yarn.lock index c3a4ee5dc6f..702f3131298 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,21 +28,6 @@ __metadata: languageName: node linkType: hard -"@auth0/auth0-spa-js@npm:^1.6.2": - version: 1.22.6 - resolution: "@auth0/auth0-spa-js@npm:1.22.6" - dependencies: - abortcontroller-polyfill: ^1.7.3 - browser-tabs-lock: ^1.2.15 - core-js: ^3.25.4 - es-cookie: ~1.3.2 - fast-text-encoding: ^1.0.6 - promise-polyfill: ^8.2.3 - unfetch: ^4.2.0 - checksum: 0155025b82898bd0533db373d7c8b85938fbae097c6fdf732a315ddee67d84a32c32a3b944465aec0600adb11d6d32e53eabbfc2ea04e6b5c90f92f72607bc30 - languageName: node - linkType: hard - "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.21.4": version: 7.21.4 resolution: "@babel/code-frame@npm:7.21.4" @@ -4802,7 +4787,7 @@ __metadata: languageName: node linkType: hard -"@wireapp/api-client@npm:^24.15.4": +"@wireapp/api-client@npm:^24.15.3": version: 24.15.4 resolution: "@wireapp/api-client@npm:24.15.4" dependencies: @@ -4863,26 +4848,25 @@ __metadata: languageName: node linkType: hard -"@wireapp/core-crypto@npm:0.11.0": - version: 0.11.0 - resolution: "@wireapp/core-crypto@npm:0.11.0" - checksum: 247272085a734b15a1fc82caaaad1c1f935609564a4fa8b5954727bcd16df23c4e85192772d853fcd15baabb6efd7e1777901aa4021e9e34fd46e89d98bab8ca +"@wireapp/core-crypto@npm:0.8.2": + version: 0.8.2 + resolution: "@wireapp/core-crypto@npm:0.8.2" + checksum: f28a44ed5c4adba56453cd6a62813d6ba433b9ee2143522a741c52f5581aca86de3296b0afe4011fc1d5d5cf76d7afda747bb2171c7c129ba73d3b15087a4e99 languageName: node linkType: hard -"@wireapp/core@file:.yalc/@wireapp/core::locator=wire-webapp%40workspace%3A.": - version: 40.5.1 - resolution: "@wireapp/core@file:.yalc/@wireapp/core#.yalc/@wireapp/core::hash=2d7f7f&locator=wire-webapp%40workspace%3A." +"@wireapp/core@npm:40.4.2": + version: 40.4.2 + resolution: "@wireapp/core@npm:40.4.2" dependencies: - "@wireapp/api-client": ^24.15.4 + "@wireapp/api-client": ^24.15.3 "@wireapp/commons": ^5.1.0 - "@wireapp/core-crypto": 0.11.0 + "@wireapp/core-crypto": 0.8.2 "@wireapp/cryptobox": 12.8.0 "@wireapp/promise-queue": ^2.2.0 "@wireapp/protocol-messaging": 1.44.0 "@wireapp/store-engine": 5.1.1 "@wireapp/store-engine-dexie": ^2.1.2 - auth0-spa-js: ^1.6.5 axios: 1.4.0 bazinga64: 6.1.1 deepmerge-ts: 4.3.0 @@ -4891,10 +4875,8 @@ __metadata: idb: 7.1.1 logdown: 3.3.1 long: ^5.2.0 - oidc-client-ts: ^2.2.2 uuidjs: 4.2.13 - zod: ^3.21.4 - checksum: 2ea70801f6926ae862461a57755140ea5a9b3e3bb8629b2fa21719244d3b8d773fc494067a5b1d4c80ea34cb8fdee0f609ec106c5e803ef907766bc0756a7e18 + checksum: f81f0eb00a6e9188530f4f52861846dacba50fe7b5964661cad374c238b1548a03c9a61e287acc98c6e04ef53c6c10fd8ce3350b6dfd5b7bb088ec9308486918 languageName: node linkType: hard @@ -5124,13 +5106,6 @@ __metadata: languageName: node linkType: hard -"abortcontroller-polyfill@npm:^1.7.3": - version: 1.7.5 - resolution: "abortcontroller-polyfill@npm:1.7.5" - checksum: daf4169f4228ae0e4f4dbcfa782e501b923667f2666b7c55bd3b7664e5d6b100e333a93371173985fdf21f65d7dfba15bdb2e6031bdc9e57e4ce0297147da3aa - languageName: node - linkType: hard - "acorn-class-fields@npm:^0.3.7": version: 0.3.7 resolution: "acorn-class-fields@npm:0.3.7" @@ -5694,15 +5669,6 @@ __metadata: languageName: node linkType: hard -"auth0-spa-js@npm:^1.6.5": - version: 1.6.5 - resolution: "auth0-spa-js@npm:1.6.5" - dependencies: - "@auth0/auth0-spa-js": ^1.6.2 - checksum: daec7a9f2afc1eb24adc0f1173805087e5526508a89e751d37cd8b395374cf7b2806e833a6bce8748a6cb169676692a70d0861e33fe105f0f7511fe77e5b8a21 - languageName: node - linkType: hard - "autoprefixer@npm:^10.4.13, autoprefixer@npm:^10.4.14": version: 10.4.14 resolution: "autoprefixer@npm:10.4.14" @@ -6060,15 +6026,6 @@ __metadata: languageName: node linkType: hard -"browser-tabs-lock@npm:^1.2.15": - version: 1.3.0 - resolution: "browser-tabs-lock@npm:1.3.0" - dependencies: - lodash: ">=4.17.21" - checksum: 4fcfb6d5fc4bc5e4f53c298d555d8421ca4f815e32c2650b73008868eb70d7ee41aca8f92ad84d9beb77a8ffe0cb99f1efc8d9b3135cc434d48f7bd569f2bb72 - languageName: node - linkType: hard - "browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4, browserslist@npm:^4.21.5": version: 4.21.7 resolution: "browserslist@npm:4.21.7" @@ -6774,13 +6731,6 @@ __metadata: languageName: node linkType: hard -"core-js@npm:^3.25.4": - version: 3.30.2 - resolution: "core-js@npm:3.30.2" - checksum: 73d47e2b9d9f502800973982d08e995bbf04832e20b04e04be31dd7607247158271315e9328788a2408190e291c7ffbefad141167b1e57dea9f983e1e723541e - languageName: node - linkType: hard - "core-util-is@npm:^1.0.3, core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" @@ -6907,13 +6857,6 @@ __metadata: languageName: node linkType: hard -"crypto-js@npm:^4.1.1": - version: 4.1.1 - resolution: "crypto-js@npm:4.1.1" - checksum: b3747c12ee3a7632fab3b3e171ea50f78b182545f0714f6d3e7e2858385f0f4101a15f2517e033802ce9d12ba50a391575ff4638c9de3dd9b2c4bc47768d5425 - languageName: node - linkType: hard - "crypto-random-string@npm:^2.0.0": version: 2.0.0 resolution: "crypto-random-string@npm:2.0.0" @@ -7922,13 +7865,6 @@ __metadata: languageName: node linkType: hard -"es-cookie@npm:~1.3.2": - version: 1.3.2 - resolution: "es-cookie@npm:1.3.2" - checksum: 8509355a7d00bd2e3fcab4a76a90e0da35b40c1e76f114f8ffe805ab3fdfff51e8fc0e7cdccd9bf1536066150b6b9861e37d78ae14f80680513901902ac4f0df - languageName: node - linkType: hard - "es-get-iterator@npm:^1.1.3": version: 1.1.3 resolution: "es-get-iterator@npm:1.1.3" @@ -8710,13 +8646,6 @@ __metadata: languageName: node linkType: hard -"fast-text-encoding@npm:^1.0.6": - version: 1.0.6 - resolution: "fast-text-encoding@npm:1.0.6" - checksum: 9d58f694314b3283e785bf61954902536da228607ad246905e30256f9ab8331f780ac987e7222c9f5eafd04168d07e12b8054c85cedb76a2c05af0e82387a903 - languageName: node - linkType: hard - "fastest-levenshtein@npm:^1.0.12, fastest-levenshtein@npm:^1.0.16": version: 1.0.16 resolution: "fastest-levenshtein@npm:1.0.16" @@ -11518,13 +11447,6 @@ __metadata: languageName: node linkType: hard -"jwt-decode@npm:^3.1.2": - version: 3.1.2 - resolution: "jwt-decode@npm:3.1.2" - checksum: 20a4b072d44ce3479f42d0d2c8d3dabeb353081ba4982e40b83a779f2459a70be26441be6c160bfc8c3c6eadf9f6380a036fbb06ac5406b5674e35d8c4205eeb - languageName: node - linkType: hard - "keyboardjs@npm:2.7.0": version: 2.7.0 resolution: "keyboardjs@npm:2.7.0" @@ -11997,7 +11919,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:>=4.17.21, lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -13018,16 +12940,6 @@ __metadata: languageName: node linkType: hard -"oidc-client-ts@npm:^2.2.2": - version: 2.2.4 - resolution: "oidc-client-ts@npm:2.2.4" - dependencies: - crypto-js: ^4.1.1 - jwt-decode: ^3.1.2 - checksum: fe50944a4141c29f6439581d9850d4d3200a0083ee4e22b15dca8e164a08f53e975d522b1e3aa129b85862e1677c22f789fe90c8668b94482d97c569190657a2 - languageName: node - linkType: hard - "omggif@npm:^1.0.10, omggif@npm:^1.0.9": version: 1.0.10 resolution: "omggif@npm:1.0.10" @@ -14468,13 +14380,6 @@ __metadata: languageName: node linkType: hard -"promise-polyfill@npm:^8.2.3": - version: 8.3.0 - resolution: "promise-polyfill@npm:8.3.0" - checksum: 206373802076c77def0805758d0a8ece64120dfa6603f092404a1004211f8f2f67f33cadbc35953fc2a8ed0b0d38c774e88bdf01e20ce7a920723a60df84b7a5 - languageName: node - linkType: hard - "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -17088,13 +16993,6 @@ __metadata: languageName: node linkType: hard -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a - languageName: node - linkType: hard - "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -17808,7 +17706,7 @@ __metadata: "@typescript-eslint/parser": ^5.59.9 "@wireapp/avs": 9.2.15 "@wireapp/copy-config": 2.1.0 - "@wireapp/core": "file:.yalc/@wireapp/core" + "@wireapp/core": 40.4.2 "@wireapp/eslint-config": 2.2.2 "@wireapp/lru-cache": 3.8.1 "@wireapp/prettier-config": 0.6.0 @@ -18442,13 +18340,6 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.21.4": - version: 3.21.4 - resolution: "zod@npm:3.21.4" - checksum: f185ba87342ff16f7a06686767c2b2a7af41110c7edf7c1974095d8db7a73792696bcb4a00853de0d2edeb34a5b2ea6a55871bc864227dace682a0a28de33e1f - languageName: node - linkType: hard - "zustand@npm:4.3.8": version: 4.3.8 resolution: "zustand@npm:4.3.8" From c314e58aa83719b63e9823547cfcc3deb0edb4cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Fri, 9 Jun 2023 10:11:51 +0200 Subject: [PATCH 09/95] chore: rename delayTimer callbacks for clarity --- .../util/E2EIdentity/DelayTimer.test.ts | 90 +++++++++---------- src/script/util/E2EIdentity/DelayTimer.ts | 34 ++++--- src/script/util/E2EIdentity/E2EIdentity.ts | 17 ++-- 3 files changed, 78 insertions(+), 63 deletions(-) diff --git a/src/script/util/E2EIdentity/DelayTimer.test.ts b/src/script/util/E2EIdentity/DelayTimer.test.ts index d31be3dd53c..a623e2a072c 100644 --- a/src/script/util/E2EIdentity/DelayTimer.test.ts +++ b/src/script/util/E2EIdentity/DelayTimer.test.ts @@ -57,8 +57,8 @@ describe('createGracePeriodTimer', () => { window.localStorage.clear(); timer = GracePeriodTimer?.getInstance({ gracePeriodInMS: 0, - gpCallback: jest.fn(), - delayCallback: jest.fn(), + gracePeriodExpiredCallback: jest.fn(), + delayPeriodExpiredCallback: jest.fn(), }); }); @@ -68,106 +68,106 @@ describe('createGracePeriodTimer', () => { jest.useRealTimers(); }); - it('should call the gpCallback when the grace period is over', () => { - const gpCallback = jest.fn(); + it('should call the gracePeriodExpiredCallback when the grace period is over', () => { + const gracePeriodExpiredCallback = jest.fn(); timer?.updateParams({ gracePeriodInMS: 1000, - gpCallback, - delayCallback: jest.fn(), + gracePeriodExpiredCallback, + delayPeriodExpiredCallback: jest.fn(), }); jest.advanceTimersByTime(1000); - expect(gpCallback).toHaveBeenCalled(); + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); }); - it('should call the gpCallback only after the delay time is over', () => { - const gpCallback = jest.fn(); + it('should call the gracePeriodExpiredCallback only after the delay time is over', () => { + const gracePeriodExpiredCallback = jest.fn(); timer?.updateParams({ gracePeriodInMS: ONE_HOUR, - gpCallback, - delayCallback: jest.fn(), + gracePeriodExpiredCallback, + delayPeriodExpiredCallback: jest.fn(), }); timer?.delayPrompt(); jest.advanceTimersByTime(FIFTEEN_MINUTES); - expect(gpCallback).not.toHaveBeenCalled(); + expect(gracePeriodExpiredCallback).not.toHaveBeenCalled(); jest.advanceTimersByTime(ONE_HOUR); - expect(gpCallback).toHaveBeenCalled(); + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); }); it('should not allow delaying the prompt if the grace period is already over', () => { - const gpCallback = jest.fn(); + const gracePeriodExpiredCallback = jest.fn(); timer?.updateParams({ gracePeriodInMS: 0, - gpCallback, - delayCallback: jest.fn(), + gracePeriodExpiredCallback, + delayPeriodExpiredCallback: jest.fn(), }); timer?.delayPrompt(); jest.advanceTimersByTime(500); - expect(gpCallback).toHaveBeenCalled(); + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); }); it('should allow delaying the prompt multiple times within the grace period', () => { - const gpCallback = jest.fn(); + const gracePeriodExpiredCallback = jest.fn(); timer?.updateParams({ gracePeriodInMS: 7200000, - gpCallback, - delayCallback: jest.fn(), + gracePeriodExpiredCallback, + delayPeriodExpiredCallback: jest.fn(), }); timer?.delayPrompt(); jest.advanceTimersByTime(3600000); timer?.delayPrompt(); jest.advanceTimersByTime(3600000); - expect(gpCallback).toHaveBeenCalled(); + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); }); - it('should call the delayCallback after a delay based on the grace period', () => { - const delayCallback = jest.fn(); + it('should call the delayPeriodExpiredCallback after a delay based on the grace period', () => { + const delayPeriodExpiredCallback = jest.fn(); timer?.updateParams({ gracePeriodInMS: ONE_HOUR, - gpCallback: jest.fn(), - delayCallback, + gracePeriodExpiredCallback: jest.fn(), + delayPeriodExpiredCallback, }); timer?.delayPrompt(); // getDelayTime(ONE_HOUR) will return FIFTEEN_MINUTES according to the function provided. jest.advanceTimersByTime(FIFTEEN_MINUTES); - expect(delayCallback).toHaveBeenCalled(); + expect(delayPeriodExpiredCallback).toHaveBeenCalled(); }); - it('should not call delayCallback if grace period is over', () => { - const delayCallback = jest.fn(); - const gpCallback = jest.fn(); + it('should not call delayPeriodExpiredCallback if grace period is over', () => { + const delayPeriodExpiredCallback = jest.fn(); + const gracePeriodExpiredCallback = jest.fn(); timer?.updateParams({ gracePeriodInMS: ONE_HOUR, - delayCallback, - gpCallback, + delayPeriodExpiredCallback, + gracePeriodExpiredCallback, }); timer?.delayPrompt(); // Here, instead of advancing time by "ONE_HOUR + FIFTEEN_MINUTES", we advance by "ONE_HOUR", which is the end of the grace period. jest.advanceTimersByTime(ONE_HOUR + FIFTEEN_MINUTES); - expect(delayCallback).toHaveBeenCalled(); // The delayCallback should be called after ONE_HOUR. - expect(gpCallback).toHaveBeenCalled(); // The gpCallback should be called when the grace period ends, which is after ONE_HOUR. + expect(delayPeriodExpiredCallback).toHaveBeenCalled(); // The delayPeriodExpiredCallback should be called after ONE_HOUR. + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); // The gracePeriodExpiredCallback should be called when the grace period ends, which is after ONE_HOUR. timer?.delayPrompt(); // We try to delay after the grace period has ended. jest.advanceTimersByTime(FIFTEEN_MINUTES); - expect(delayCallback).toHaveBeenCalledTimes(1); // The delayCallback should not be called again since we're now past the grace period. + expect(delayPeriodExpiredCallback).toHaveBeenCalledTimes(1); // The delayPeriodExpiredCallback should not be called again since we're now past the grace period. }); - it('should call delayCallback multiple times if delayPrompt is called multiple times within the grace period', () => { - const delayCallback = jest.fn(); + it('should call delayPeriodExpiredCallback multiple times if delayPrompt is called multiple times within the grace period', () => { + const delayPeriodExpiredCallback = jest.fn(); timer?.updateParams({ gracePeriodInMS: FOUR_HOURS, - gpCallback: jest.fn(), - delayCallback, + gracePeriodExpiredCallback: jest.fn(), + delayPeriodExpiredCallback, }); timer?.delayPrompt(); @@ -179,22 +179,22 @@ describe('createGracePeriodTimer', () => { timer?.delayPrompt(); jest.advanceTimersByTime(ONE_HOUR); - expect(delayCallback).toHaveBeenCalledTimes(3); + expect(delayPeriodExpiredCallback).toHaveBeenCalledTimes(3); }); it('should not execute the delayPrompt() if the grace period is over', () => { - const delayCallback = jest.fn(); - const gpCallback = jest.fn(); + const delayPeriodExpiredCallback = jest.fn(); + const gracePeriodExpiredCallback = jest.fn(); timer?.updateParams({ gracePeriodInMS: ONE_MINUTE, - gpCallback, - delayCallback, + gracePeriodExpiredCallback, + delayPeriodExpiredCallback, }); timer?.delayPrompt(); jest.advanceTimersByTime(ONE_MINUTE); - expect(delayCallback).not.toHaveBeenCalled(); - expect(gpCallback).toHaveBeenCalled(); + expect(delayPeriodExpiredCallback).not.toHaveBeenCalled(); + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); }); }); diff --git a/src/script/util/E2EIdentity/DelayTimer.ts b/src/script/util/E2EIdentity/DelayTimer.ts index 02180acccbb..95891f04a5e 100644 --- a/src/script/util/E2EIdentity/DelayTimer.ts +++ b/src/script/util/E2EIdentity/DelayTimer.ts @@ -28,22 +28,26 @@ const logger = getLogger('E2EIdentity.DelayTimer'); interface CreateGracePeriodTimerParams { gracePeriodInMS: number; - gpCallback: () => void; - delayCallback: () => void; + gracePeriodExpiredCallback: () => void; + delayPeriodExpiredCallback: () => void; } class GracePeriodTimer { private static instance: GracePeriodTimer | null = null; private gracePeriodInMS: number; - private gpCallback: () => void; - private delayCallback: () => void; + private gracePeriodExpiredCallback: () => void; + private delayPeriodExpiredCallback: () => void; private delayPeriodTimerKey: string = 'E2EIdentity_DelayTimer'; private gracePeriodTimerKey: string = 'E2EIdentity_GracePeriodTimer'; - private constructor({gracePeriodInMS, gpCallback, delayCallback}: CreateGracePeriodTimerParams) { + private constructor({ + gracePeriodInMS, + gracePeriodExpiredCallback, + delayPeriodExpiredCallback, + }: CreateGracePeriodTimerParams) { this.gracePeriodInMS = gracePeriodInMS; - this.gpCallback = gpCallback; - this.delayCallback = delayCallback; + this.gracePeriodExpiredCallback = gracePeriodExpiredCallback; + this.delayPeriodExpiredCallback = delayPeriodExpiredCallback; this.initialize(); } @@ -67,13 +71,17 @@ class GracePeriodTimer { /** * @param CreateGracePeriodTimerParams The params to create the grace period timer */ - public updateParams({gracePeriodInMS, gpCallback, delayCallback}: CreateGracePeriodTimerParams) { + public updateParams({ + gracePeriodInMS, + gracePeriodExpiredCallback, + delayPeriodExpiredCallback, + }: CreateGracePeriodTimerParams) { DelayTimerStore.clear.all(); this.clearGracePeriodTimer(); this.clearDelayPeriodTimer(); this.gracePeriodInMS = gracePeriodInMS; - this.gpCallback = gpCallback; - this.delayCallback = delayCallback; + this.gracePeriodExpiredCallback = gracePeriodExpiredCallback; + this.delayPeriodExpiredCallback = delayPeriodExpiredCallback; this.initialize(); } @@ -164,14 +172,14 @@ class GracePeriodTimer { /** * Exit the function * @param exitMessage The exit message - * @returns Calls the gpCallback + * @returns Calls the gracePeriodExpiredCallback */ private exit(exitMessage: string) { logger.info(exitMessage); this.clearDelayPeriodTimer(); this.clearGracePeriodTimer(); DelayTimerStore.clear.all(); - return this.gpCallback(); + return this.gracePeriodExpiredCallback(); } /** @@ -209,7 +217,7 @@ class GracePeriodTimer { const task = () => { logger.info('Delay time is over.'); - return this.delayCallback(); + return this.delayPeriodExpiredCallback(); }; if (TaskScheduler.hasActiveTask(this.delayPeriodTimerKey)) { diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/util/E2EIdentity/E2EIdentity.ts index 608457a313a..9ff9e3ed179 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.ts @@ -52,7 +52,11 @@ class E2EIHandler { // ToDo: Do these values need to te able to be updated? Should we use a singleton with update fn? this.discoveryUrl = discoveryUrl; this.gracePeriodInMS = gracePeriodInMS; - this.timer = GracePeriodTimer.getInstance({delayCallback: () => null, gpCallback: () => null, gracePeriodInMS}); + this.timer = GracePeriodTimer.getInstance({ + delayPeriodExpiredCallback: () => null, + gracePeriodExpiredCallback: () => null, + gracePeriodInMS, + }); } /** @@ -85,7 +89,11 @@ class E2EIHandler { public updateParams({gracePeriodInMS, discoveryUrl}: E2EIHandlerParams) { this.gracePeriodInMS = gracePeriodInMS; this.discoveryUrl = discoveryUrl; - this.timer = GracePeriodTimer.getInstance({delayCallback: () => null, gpCallback: () => null, gracePeriodInMS}); + this.timer = GracePeriodTimer.getInstance({ + delayPeriodExpiredCallback: () => null, + gracePeriodExpiredCallback: () => null, + gracePeriodInMS, + }); this.initialize(); } @@ -112,7 +120,6 @@ class E2EIHandler { userState.self().name(), userState.self().username(), ); - console.log('success', success); if (!success) { throw new Error('E2EI enrollment failed'); } @@ -176,10 +183,10 @@ class E2EIHandler { if (this.currentStep === E2EIHandlerStep.INITIALIZE) { this.timer.updateParams({ gracePeriodInMS: this.gracePeriodInMS, - gpCallback: () => { + gracePeriodExpiredCallback: () => { this.showE2EINotificationMessage(); }, - delayCallback: () => { + delayPeriodExpiredCallback: () => { this.showE2EINotificationMessage(); }, }); From 2c29d569b28c153dda8b86883dba0764a52503e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Fri, 9 Jun 2023 12:21:22 +0200 Subject: [PATCH 10/95] Co-authored-by: Amir Ghezelbash --- src/script/team/TeamRepository.ts | 2 +- src/script/util/E2EIdentity/E2EIdentity.test.ts | 2 +- src/script/util/E2EIdentity/E2EIdentity.ts | 16 +++++++++++----- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/script/team/TeamRepository.ts b/src/script/team/TeamRepository.ts index a8a852bbdf3..fe0ac58b8d9 100644 --- a/src/script/team/TeamRepository.ts +++ b/src/script/team/TeamRepository.ts @@ -434,7 +434,7 @@ export class TeamRepository { } // Trigger E2E identity handler - this.handleE2EIdentityFeatureChange(featureConfigList.mlsE2EId, featureConfigList.mls); + // this.handleE2EIdentityFeatureChange(featureConfigList.mlsE2EId, featureConfigList.mls); this.saveFeatureConfig(featureConfigList); }; diff --git a/src/script/util/E2EIdentity/E2EIdentity.test.ts b/src/script/util/E2EIdentity/E2EIdentity.test.ts index 3afa9e913a9..e0fb33bd64b 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.test.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.test.ts @@ -158,7 +158,7 @@ describe('E2EIHandler', () => { it('should set currentStep to INITIALIZE after initialize is called', () => { const instance = E2EIHandler.getInstance(params); instance.initialize(); - expect(instance['currentStep']).toBe(E2EIHandlerStep.INITIALIZE); + expect(instance['currentStep']).toBe(E2EIHandlerStep.INITIALIZED); }); it('should set currentStep to ENROLL when enrollE2EI is called and enrollment succeeds', async () => { diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/util/E2EIdentity/E2EIdentity.ts index 9ff9e3ed179..90876c02150 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.ts @@ -29,7 +29,8 @@ import {GracePeriodTimer} from './DelayTimer'; import {getModalOptions, ModalType} from './Modals'; export enum E2EIHandlerStep { - INITIALIZE = 'initialize', + UNINITIALIZED = 'uninitialized', + INITIALIZED = 'initialized', ENROLL = 'enroll', SUCCESS = 'success', ERROR = 'error', @@ -46,7 +47,7 @@ class E2EIHandler { private timer: GracePeriodTimer; private discoveryUrl: string; private gracePeriodInMS: number; - private currentStep: E2EIHandlerStep | null = null; + private currentStep: E2EIHandlerStep | null = E2EIHandlerStep.UNINITIALIZED; private constructor({discoveryUrl, gracePeriodInMS}: E2EIHandlerParams) { // ToDo: Do these values need to te able to be updated? Should we use a singleton with update fn? @@ -99,7 +100,6 @@ class E2EIHandler { public initialize(): void { if (this.isE2EIEnabled) { - this.currentStep = E2EIHandlerStep.INITIALIZE; this.showE2EINotificationMessage(); } } @@ -169,7 +169,7 @@ class E2EIHandler { type: ModalType.ERROR, hideClose: true, primaryActionFn: async () => { - this.currentStep = E2EIHandlerStep.INITIALIZE; + this.currentStep = E2EIHandlerStep.INITIALIZED; await this.enrollE2EI(); }, secondaryActionFn: () => { @@ -180,7 +180,11 @@ class E2EIHandler { } private showE2EINotificationMessage(): void { - if (this.currentStep === E2EIHandlerStep.INITIALIZE) { + if (this.currentStep !== E2EIHandlerStep.UNINITIALIZED && this.currentStep !== E2EIHandlerStep.SNOOZE) { + return; + } + + if (this.currentStep === E2EIHandlerStep.UNINITIALIZED) { this.timer.updateParams({ gracePeriodInMS: this.gracePeriodInMS, gracePeriodExpiredCallback: () => { @@ -190,6 +194,7 @@ class E2EIHandler { this.showE2EINotificationMessage(); }, }); + this.currentStep = E2EIHandlerStep.INITIALIZED; } if (!this.timer.isDelayTimerActive()) { @@ -197,6 +202,7 @@ class E2EIHandler { hideSecondary: !this.timer.isSnoozeTimeAvailable(), primaryActionFn: () => this.enrollE2EI(), secondaryActionFn: () => { + this.currentStep = E2EIHandlerStep.SNOOZE; this.timer.delayPrompt(); }, type: ModalType.ENROLL, From 32c4789f7eea805c2372b9220a5c323d13ed35cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Wed, 21 Jun 2023 16:05:08 +0200 Subject: [PATCH 11/95] feat: change redirect route from /auth/oidc to /auth to circumvent cookie problem --- server/routes/RedirectRoutes.ts | 2 +- .../auth/page/E2EIdentityOidcRedirect.tsx | 17 ++++++++++++++ src/script/util/E2EIdentity/E2EIdentity.ts | 2 +- yarn.lock | 22 +++++-------------- 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/server/routes/RedirectRoutes.ts b/server/routes/RedirectRoutes.ts index 03f2650ee6e..13640ebd7b0 100644 --- a/server/routes/RedirectRoutes.ts +++ b/server/routes/RedirectRoutes.ts @@ -65,6 +65,6 @@ export const RedirectRoutes = (config: ServerConfig, clientConfig: ClientConfig) const queryString = Object.keys(query) .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(query[key] as string)}`) .join('&'); - return res.redirect(HTTP_STATUS.MOVED_PERMANENTLY, `/auth/#/oidc${queryString ? '?' : ''}${queryString}`); + return res.redirect(HTTP_STATUS.MOVED_TEMPORARILY, `/auth/${queryString ? '?' : ''}${queryString}`); }), ]; diff --git a/src/script/auth/page/E2EIdentityOidcRedirect.tsx b/src/script/auth/page/E2EIdentityOidcRedirect.tsx index 99523444d9e..fece7c713c5 100644 --- a/src/script/auth/page/E2EIdentityOidcRedirect.tsx +++ b/src/script/auth/page/E2EIdentityOidcRedirect.tsx @@ -17,10 +17,27 @@ * */ +import {useEffect} from 'react'; + +import {container} from 'tsyringe'; + +import {Core} from 'src/script/service/CoreSingleton'; + const E2EIdentityOidcRedirect = () => { const search = window.location.href.split('/#/oidc')[1]; const urlParams = new URLSearchParams(search); + useEffect(() => { + async function enroll() { + const core = container.resolve(Core); + await core.init(); + return await core.continueE2EIEnrollment(); + } + enroll() + .then(success => console.log('done', success)) + .catch(error => console.log('error', error)); + }, []); + const oidcRedirectParams: Record = { code: urlParams.get('code'), state: urlParams.get('state'), diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/util/E2EIdentity/E2EIdentity.ts index 90876c02150..c7c334d821e 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.ts @@ -116,9 +116,9 @@ class E2EIHandler { this.currentStep = E2EIHandlerStep.ENROLL; this.showLoadingMessage(); const success = await core.startE2EIEnrollment( - this.discoveryUrl, userState.self().name(), userState.self().username(), + this.discoveryUrl, ); if (!success) { throw new Error('E2EI enrollment failed'); diff --git a/yarn.lock b/yarn.lock index 702f3131298..8513ebb1880 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4788,8 +4788,8 @@ __metadata: linkType: hard "@wireapp/api-client@npm:^24.15.3": - version: 24.15.4 - resolution: "@wireapp/api-client@npm:24.15.4" + version: 24.15.6 + resolution: "@wireapp/api-client@npm:24.15.6" dependencies: "@wireapp/commons": ^5.1.0 "@wireapp/priority-queue": ^2.1.1 @@ -4800,9 +4800,9 @@ __metadata: logdown: 3.3.1 reconnecting-websocket: 4.4.0 spark-md5: 3.0.2 - tough-cookie: 4.1.2 + tough-cookie: 4.1.3 ws: 8.11.0 - checksum: 2689634c012cba0e68f2cc67226a32ac3f5e59e1d99ed8877642fc9fc60b01f9ecacae0e333f7ba4975c70fe2b3925eeedd2f1c2743b209234ad1ac6fc275f58 + checksum: 9f14648dc839aff733c19b236f78f7563552639293ce9bd131d0a34ede2025b8ed51f22123c0efadf98454b6e4f23211dc605536105709fb741c47bbc7590a81 languageName: node linkType: hard @@ -16614,19 +16614,7 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:4.1.2": - version: 4.1.2 - resolution: "tough-cookie@npm:4.1.2" - dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.2.0 - url-parse: ^1.5.3 - checksum: a7359e9a3e875121a84d6ba40cc184dec5784af84f67f3a56d1d2ae39b87c0e004e6ba7c7331f9622a7d2c88609032473488b28fe9f59a1fec115674589de39a - languageName: node - linkType: hard - -"tough-cookie@npm:^4.1.2": +"tough-cookie@npm:4.1.3, tough-cookie@npm:^4.1.2": version: 4.1.3 resolution: "tough-cookie@npm:4.1.3" dependencies: From 53cf52da49a93e5fac7b40b6b2217c51a13db7d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Mon, 26 Jun 2023 11:40:15 +0200 Subject: [PATCH 12/95] fix: lockfile & types --- package.json | 2 +- yarn.lock | 2613 +++++++++----------------------------------------- 2 files changed, 448 insertions(+), 2167 deletions(-) diff --git a/package.json b/package.json index b604e42deda..5aa096b75d3 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "@types/open-graph": "0.2.2", "@types/platform": "1.3.4", "@types/prettier": "^2.7.3", - "@types/react": "18.0.28", + "@types/react": "18.2.14", "@types/react-dom": "18.2.6", "@types/react-redux": "7.1.25", "@types/react-transition-group": "4.4.6", diff --git a/yarn.lock b/yarn.lock index 57540c1befe..e0ea9353afe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,3 +1,6 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + __metadata: version: 6 cacheKey: 8 @@ -25,16 +28,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/code-frame@npm:7.21.4" - dependencies: - "@babel/highlight": ^7.18.6 - checksum: e5390e6ec1ac58dcef01d4f18eaf1fd2f1325528661ff6d4a5de8979588b9f5a8e852a54a91b923846f7a5c681b217f0a45c2524eb9560553160cd963b7d592c - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.22.5": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.5": version: 7.22.5 resolution: "@babel/code-frame@npm:7.22.5" dependencies: @@ -43,51 +37,14 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/compat-data@npm:7.21.4" - checksum: 5f8b98c66f2ffba9f3c3a82c0cf354c52a0ec5ad4797b370dc32bdcd6e136ac4febe5e93d76ce76e175632e2dbf6ce9f46319aa689fcfafa41b6e49834fa4b66 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.22.0, @babel/compat-data@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/compat-data@npm:7.22.3" - checksum: eb001646f41459f42ccb0d39ee8bb3c3c495bc297234817044c0002689c625e3159a6678c53fd31bd98cf21f31472b73506f350fc6906e3bdfa49cb706e2af8d - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.22.5": +"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.22.5": version: 7.22.5 resolution: "@babel/compat-data@npm:7.22.5" checksum: eb1a47ebf79ae268b4a16903e977be52629339806e248455eb9973897c503a04b701f36a9de64e19750d6e081d0561e77a514c8dc470babbeba59ae94298ed18 languageName: node linkType: hard -"@babel/core@npm:7.22.1, @babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": - version: 7.22.1 - resolution: "@babel/core@npm:7.22.1" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.5 - "@babel/helper-module-transforms": ^7.22.5 - "@babel/helpers": ^7.22.5 - "@babel/parser": ^7.22.5 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 - "@babel/types": ^7.22.5 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.2 - semver: ^6.3.0 - checksum: 173ae426958c90c7bbd7de622c6f13fcab8aef0fac3f138e2d47bc466d1cd1f86f71ca82ae0acb9032fd8794abed8efb56fea55c031396337eaec0d673b69d56 - languageName: node - linkType: hard - -"@babel/core@npm:7.22.5": +"@babel/core@npm:7.22.5, @babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": version: 7.22.5 resolution: "@babel/core@npm:7.22.5" dependencies: @@ -110,43 +67,6 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": - version: 7.21.4 - resolution: "@babel/core@npm:7.21.4" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.4 - "@babel/helper-compilation-targets": ^7.21.4 - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helpers": ^7.21.0 - "@babel/parser": ^7.21.4 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.4 - "@babel/types": ^7.21.4 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.2 - semver: ^6.3.0 - checksum: a3beebb2cc79908a02f27a07dc381bcb34e8ecc58fa99f568ad0934c49e12111fc977ee9c5b51eb7ea2da66f63155d37c4dd96b6472eaeecfc35843ccb56bf3d - languageName: node - linkType: hard - -"@babel/eslint-parser@npm:7.21.8": - version: 7.21.8 - resolution: "@babel/eslint-parser@npm:7.21.8" - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 - eslint-visitor-keys: ^2.1.0 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ">=7.11.0" - eslint: ^7.5.0 || ^8.0.0 - checksum: d259a5c6bb11d2b99316a1aafb85be56fd290e2b7076b386a026cd0f8db4b27c0bf0c733bfa2006bb88d38abef323fc2c1352a3521e6e9865f8b205fef6ac845 - languageName: node - linkType: hard - "@babel/eslint-parser@npm:7.22.5": version: 7.22.5 resolution: "@babel/eslint-parser@npm:7.22.5" @@ -161,31 +81,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.21.4, @babel/generator@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/generator@npm:7.21.4" - dependencies: - "@babel/types": ^7.21.4 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 9ffbb526a53bb8469b5402f7b5feac93809b09b2a9f82fcbfcdc5916268a65dae746a1f2479e03ba4fb0776facd7c892191f63baa61ab69b2cfdb24f7b92424d - languageName: node - linkType: hard - -"@babel/generator@npm:^7.22.0, @babel/generator@npm:^7.22.3, @babel/generator@npm:^7.7.2": - version: 7.22.3 - resolution: "@babel/generator@npm:7.22.3" - dependencies: - "@babel/types": ^7.22.3 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: ccb6426ca5b5a38f0d47a3ac9628e223d2aaaa489cbf90ffab41468795c22afe86855f68a58667f0f2673949f1810d4d5a57b826c17984eab3e28fdb34a909e6 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.22.5": +"@babel/generator@npm:^7.22.5, @babel/generator@npm:^7.7.2": version: 7.22.5 resolution: "@babel/generator@npm:7.22.5" dependencies: @@ -197,15 +93,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 88ccd15ced475ef2243fdd3b2916a29ea54c5db3cd0cfabf9d1d29ff6e63b7f7cd1c27264137d7a40ac2e978b9b9a542c332e78f40eb72abe737a7400788fc1b - languageName: node - linkType: hard - "@babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" @@ -215,15 +102,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.22.3 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.3" - dependencies: - "@babel/types": ^7.22.3 - checksum: 3622d942f86e292d37f06cceec39b47919967677eb5553e3d58ee06f533b2688b62287489950957c7c589f7ff304f40778b3d74093566c2376360dc15ba46a30 - languageName: node - linkType: hard - "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.5" @@ -233,37 +111,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/helper-compilation-targets@npm:7.21.4" - dependencies: - "@babel/compat-data": ^7.21.4 - "@babel/helper-validator-option": ^7.21.0 - browserslist: ^4.21.3 - lru-cache: ^5.1.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: bf9c7d3e7e6adff9222c05d898724cd4ee91d7eb9d52222c7ad2a22955620c2872cc2d9bdf0e047df8efdb79f4e3af2a06b53f509286145feccc4d10ddc318be - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-compilation-targets@npm:7.22.1" - dependencies: - "@babel/compat-data": ^7.22.5 - "@babel/helper-validator-option": ^7.22.5 - browserslist: ^4.21.3 - lru-cache: ^5.1.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: a479460615acffa0f4fd0a29b740eafb53a93694265207d23a6038ccd18d183a382cacca515e77b7c9b042c3ba80b0aca0da5f1f62215140e81660d2cf721b68 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.22.5": +"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-compilation-targets@npm:7.22.5" dependencies: @@ -278,43 +126,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-create-class-features-plugin@npm:7.21.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-member-expression-to-functions": ^7.21.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/helper-split-export-declaration": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 3e781d91d1056ea9b3a0395f3017492594a8b86899119b4a1645227c31727b8bec9bc8f6b72e86b1c5cf2dd6690893d2e8c5baff4974c429e616ead089552a21 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.1" - dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-member-expression-to-functions": ^7.22.5 - "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: f1e91deae06dbee6dd956c0346bca600adfbc7955427795d9d8825f0439a3c3290c789ba2b4a02a1cdf6c1a1bd163dfa16d3d5e96b02a8efb639d2a774e88ed9 - languageName: node - linkType: hard - "@babel/helper-create-class-features-plugin@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-create-class-features-plugin@npm:7.22.5" @@ -334,32 +145,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.20.5": - version: 7.21.4 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.21.4" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - regexpu-core: ^5.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 78334865db2cd1d64d103bd0d96dee2818b0387d10aa973c084e245e829df32652bca530803e397b7158af4c02b9b21d5a9601c29bdfbb8d54a3d4ad894e067b - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.1" - dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - regexpu-core: ^5.3.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 94932145beeb1f91856be25fea8de30b4b81b63fbc7c5a207ed97a5ddc34cd1e9b04041ed28bd24ec09cdcfbb62e8d66f820e4fe864672afe0aa2f357c784e11 - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.22.5": +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.5" dependencies: @@ -388,20 +174,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9, @babel/helper-environment-visitor@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-environment-visitor@npm:7.22.1" - checksum: a6b4bb5505453bff95518d361ac1de393f0029aeb8b690c70540f4317934c53c43cc4afcda8c752ffa8c272e63ed6b929a56eca28e4978424177b24238b21bf9 - languageName: node - linkType: hard - "@babel/helper-environment-visitor@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-environment-visitor@npm:7.22.5" @@ -409,16 +181,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0, @babel/helper-function-name@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-function-name@npm:7.21.0" - dependencies: - "@babel/template": ^7.20.7 - "@babel/types": ^7.21.0 - checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e - languageName: node - linkType: hard - "@babel/helper-function-name@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-function-name@npm:7.22.5" @@ -429,15 +191,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f - languageName: node - linkType: hard - "@babel/helper-hoist-variables@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-hoist-variables@npm:7.22.5" @@ -447,24 +200,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.20.7, @babel/helper-member-expression-to-functions@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.21.0" - dependencies: - "@babel/types": ^7.21.0 - checksum: 49cbb865098195fe82ba22da3a8fe630cde30dcd8ebf8ad5f9a24a2b685150c6711419879cf9d99b94dad24cff9244d8c2a890d3d7ec75502cd01fe58cff5b5d - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.22.0": - version: 7.22.3 - resolution: "@babel/helper-member-expression-to-functions@npm:7.22.3" - dependencies: - "@babel/types": ^7.22.5 - checksum: 4bd5791529c280c00743e8bdc669ef0d4cd1620d6e3d35e0d42b862f8262bc2364973e5968007f960780344c539a4b9cf92ab41f5b4f94560a9620f536de2a39 - languageName: node - linkType: hard - "@babel/helper-member-expression-to-functions@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-member-expression-to-functions@npm:7.22.5" @@ -474,25 +209,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-imports@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.21.4": - version: 7.21.4 - resolution: "@babel/helper-module-imports@npm:7.21.4" - dependencies: - "@babel/types": ^7.22.5 - checksum: 9ac2b0404fa38b80bdf2653fbeaf8e8a43ccb41bd505f9741d820ed95d3c4e037c62a1bcdcb6c9527d7798d2e595924c4d025daed73283badc180ada2c9c49ad - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.22.5": +"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-module-imports@npm:7.22.5" dependencies: @@ -501,38 +218,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/helper-module-transforms@npm:7.21.2" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.20.2 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.2 - "@babel/types": ^7.21.2 - checksum: 8a1c129a4f90bdf97d8b6e7861732c9580f48f877aaaafbc376ce2482febebcb8daaa1de8bc91676d12886487603f8c62a44f9e90ee76d6cac7f9225b26a49e1 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.21.5, @babel/helper-module-transforms@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-module-transforms@npm:7.22.1" - dependencies: - "@babel/helper-environment-visitor": ^7.22.1 - "@babel/helper-module-imports": ^7.21.4 - "@babel/helper-simple-access": ^7.21.5 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.21.9 - "@babel/traverse": ^7.22.1 - "@babel/types": ^7.22.0 - checksum: dfa084211a93c9f0174ab07385fdbf7831bbf5c1ff3d4f984effc489f48670825ad8b817b9e9d2ec6492fde37ed6518c15944e9dd7a60b43a3d9874c9250f5f8 - languageName: node - linkType: hard - "@babel/helper-module-transforms@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-module-transforms@npm:7.22.5" @@ -549,15 +234,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd - languageName: node - linkType: hard - "@babel/helper-optimise-call-expression@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" @@ -567,41 +243,13 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.21.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.21.5 - resolution: "@babel/helper-plugin-utils@npm:7.21.5" - checksum: 6f086e9a84a50ea7df0d5639c8f9f68505af510ea3258b3c8ac8b175efdfb7f664436cb48996f71791a1350ba68f47ad3424131e8e718c5e2ad45564484cbb36 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.20.2 - resolution: "@babel/helper-plugin-utils@npm:7.20.2" - checksum: f6cae53b7fdb1bf3abd50fa61b10b4470985b400cc794d92635da1e7077bb19729f626adc0741b69403d9b6e411cddddb9c0157a709cc7c4eeb41e663be5d74b - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.22.5": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.22.5 resolution: "@babel/helper-plugin-utils@npm:7.22.5" checksum: c0fc7227076b6041acd2f0e818145d2e8c41968cc52fb5ca70eed48e21b8fe6dd88a0a91cbddf4951e33647336eb5ae184747ca706817ca3bef5e9e905151ff5 languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-wrap-function": ^7.18.9 - "@babel/types": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 4be6076192308671b046245899b703ba090dbe7ad03e0bea897bb2944ae5b88e5e85853c9d1f83f643474b54c578d8ac0800b80341a86e8538264a725fbbefec - languageName: node - linkType: hard - "@babel/helper-remap-async-to-generator@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-remap-async-to-generator@npm:7.22.5" @@ -616,34 +264,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-replace-supers@npm:7.20.7" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.20.7 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: b8e0087c9b0c1446e3c6f3f72b73b7e03559c6b570e2cfbe62c738676d9ebd8c369a708cf1a564ef88113b4330750a50232ee1131d303d478b7a5e65e46fbc7c - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7, @babel/helper-replace-supers@npm:^7.22.1": - version: 7.22.1 - resolution: "@babel/helper-replace-supers@npm:7.22.1" - dependencies: - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-member-expression-to-functions": ^7.22.5 - "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: af29deff6c6dc3fa2d1a517390716aa3f4d329855e8689f1d5c3cb07c1b898e614a5e175f1826bb58e9ff1480e6552885a71a9a0ba5161787aaafa2c79b216cc - languageName: node - linkType: hard - "@babel/helper-replace-supers@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-replace-supers@npm:7.22.5" @@ -658,464 +278,133 @@ __metadata: languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-simple-access@npm:7.20.2" - dependencies: - "@babel/types": ^7.20.2 - checksum: ad1e96ee2e5f654ffee2369a586e5e8d2722bf2d8b028a121b4c33ebae47253f64d420157b9f0a8927aea3a9e0f18c0103e74fdd531815cf3650a0a4adca11a1 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-simple-access@npm:7.21.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: fe9686714caf7d70aedb46c3cce090f8b915b206e09225f1e4dbc416786c2fdbbee40b38b23c268b7ccef749dd2db35f255338fb4f2444429874d900dede5ad2 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-simple-access@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: fe9686714caf7d70aedb46c3cce090f8b915b206e09225f1e4dbc416786c2fdbbee40b38b23c268b7ccef749dd2db35f255338fb4f2444429874d900dede5ad2 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" - dependencies: - "@babel/types": ^7.20.0 - checksum: 34da8c832d1c8a546e45d5c1d59755459ffe43629436707079989599b91e8c19e50e73af7a4bd09c95402d389266731b0d9c5f69e372d8ebd3a709c05c80d7dd - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: 1012ef2295eb12dc073f2b9edf3425661e9b8432a3387e62a8bc27c42963f1f216ab3124228015c748770b2257b4f1fda882ca8fa34c0bf485e929ae5bc45244 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-split-export-declaration@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: d10e05a02f49c1f7c578cea63d2ac55356501bbf58856d97ac9bfde4957faee21ae97c7f566aa309e38a256eef58b58e5b670a7f568b362c00e93dfffe072650 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-string-parser@npm:7.21.5" - checksum: 36c0ded452f3858e67634b81960d4bde1d1cd2a56b82f4ba2926e97864816021c885f111a7cf81de88a0ed025f49d84a393256700e9acbca2d99462d648705d8 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-string-parser@npm:7.22.5" - checksum: 836851ca5ec813077bbb303acc992d75a360267aa3b5de7134d220411c852a6f17de7c0d0b8c8dcc0f567f67874c00f4528672b2a4f1bc978a3ada64c8c78467 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-identifier@npm:7.22.5" - checksum: 7f0f30113474a28298c12161763b49de5018732290ca4de13cdaefd4fd0d635a6fe3f6686c37a02905fb1e64f21a5ee2b55140cf7b070e729f1bd66866506aea - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-validator-option@npm:7.21.0" - checksum: 8ece4c78ffa5461fd8ab6b6e57cc51afad59df08192ed5d84b475af4a7193fc1cb794b59e3e7be64f3cdc4df7ac78bf3dbb20c129d7757ae078e6279ff8c2f07 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-option@npm:7.22.5" - checksum: bbeca8a85ee86990215c0424997438b388b8d642d69b9f86c375a174d3cdeb270efafd1ff128bc7a1d370923d13b6e45829ba8581c027620e83e3a80c5c414b3 - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.18.9": - version: 7.20.5 - resolution: "@babel/helper-wrap-function@npm:7.20.5" - dependencies: - "@babel/helper-function-name": ^7.19.0 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.18.11 - "@babel/types": ^7.18.10 - checksum: e2fb909cdeb5c8688513261202cdeab7c6a8ac1f30daa5a1e0111631f270c26118c2e6b27014fc9f5d2c0ee1182fc40a3db2d30e45425587067f49dcae737dc9 - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-wrap-function@npm:7.22.5" - dependencies: - "@babel/helper-function-name": ^7.22.5 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: a4ba2d7577ad3ce92fadaa341ffce3b0e4b389808099b07c80847f9be0852f4b42344612bc1b3d1b796ffb75be56d5957c5c56a1734f6aee5ccbb7cd9ab12691 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helpers@npm:7.21.0" - dependencies: - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.0 - "@babel/types": ^7.21.0 - checksum: 9370dad2bb665c551869a08ac87c8bdafad53dbcdce1f5c5d498f51811456a3c005d9857562715151a0f00b2e912ac8d89f56574f837b5689f5f5072221cdf54 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helpers@npm:7.22.5" - dependencies: - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: a96e785029dff72f171190943df895ab0f76e17bf3881efd630bc5fae91215042d1c2e9ed730e8e4adf4da6f28b24bd1f54ed93b90ffbca34c197351872a084e - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" - dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/highlight@npm:7.22.5" - dependencies: - "@babel/helper-validator-identifier": ^7.22.5 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: f61ae6de6ee0ea8d9b5bcf2a532faec5ab0a1dc0f7c640e5047fc61630a0edb88b18d8c92eb06566d30da7a27db841aca11820ecd3ebe9ce514c9350fbed39c4 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.9.4": - version: 7.21.4 - resolution: "@babel/parser@npm:7.21.4" - bin: - parser: ./bin/babel-parser.js - checksum: de610ecd1bff331766d0c058023ca11a4f242bfafefc42caf926becccfb6756637d167c001987ca830dd4b34b93c629a4cef63f8c8c864a8564cdfde1989ac77 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.9, @babel/parser@npm:^7.22.0, @babel/parser@npm:^7.22.4, @babel/parser@npm:^7.9.4": - version: 7.22.4 - resolution: "@babel/parser@npm:7.22.4" - bin: - parser: ./bin/babel-parser.js - checksum: 0ca6d3a2d9aae2504ba1bc494704b64a83140884f7379f609de69bd39b60adb58a4f8ec692fe53fef8657dd82705d01b7e6efb65e18296326bdd66f71d52d9a9 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/parser@npm:7.22.5" - bin: - parser: ./bin/babel-parser.js - checksum: 470ebba516417ce8683b36e2eddd56dcfecb32c54b9bb507e28eb76b30d1c3e618fd0cfeee1f64d8357c2254514e1a19e32885cfb4e73149f4ae875436a6d59c - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 845bd280c55a6a91d232cfa54eaf9708ec71e594676fe705794f494bb8b711d833b752b59d1a5c154695225880c23dbc9cab0e53af16fd57807976cd3ff41b8d - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 1e353a060fb2cd8f1256d28cd768f16fb02513f905b9b6d656fb0242c96c341a196fa188b27c2701506a6e27515359fbcc1a5ca7fa8b9b530cf88fbd137baefc - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/plugin-proposal-optional-chaining": ^7.20.7 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: d610f532210bee5342f5b44a12395ccc6d904e675a297189bc1e401cc185beec09873da523466d7fec34ae1574f7a384235cba1ccc9fe7b89ba094167897c845 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/plugin-transform-optional-chaining": ^7.22.5 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 16e7a5f3bf2f2ac0ca032a70bf0ebd7e886d84dbb712b55c0643c04c495f0f221fbcbca14b5f8f8027fa6c87a3dafae0934022ad2b409384af6c5c356495b7bd - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/plugin-transform-optional-chaining": ^7.22.5 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 16e7a5f3bf2f2ac0ca032a70bf0ebd7e886d84dbb712b55c0643c04c495f0f221fbcbca14b5f8f8027fa6c87a3dafae0934022ad2b409384af6c5c356495b7bd - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.7" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-remap-async-to-generator": ^7.18.9 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 111109ee118c9e69982f08d5e119eab04190b36a0f40e22e873802d941956eee66d2aa5a15f5321e51e3f9aa70a91136451b987fe15185ef8cc547ac88937723 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-static-block@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.21.0" +"@babel/helper-simple-access@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-simple-access@npm:7.22.5" dependencies: - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: 236c0ad089e7a7acab776cc1d355330193314bfcd62e94e78f2df35817c6144d7e0e0368976778afd6b7c13e70b5068fa84d7abbf967d4f182e60d03f9ef802b + "@babel/types": ^7.22.5 + checksum: fe9686714caf7d70aedb46c3cce090f8b915b206e09225f1e4dbc416786c2fdbbee40b38b23c268b7ccef749dd2db35f255338fb4f2444429874d900dede5ad2 languageName: node linkType: hard -"@babel/plugin-proposal-decorators@npm:7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-proposal-decorators@npm:7.22.3" +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 - "@babel/plugin-syntax-decorators": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b3807b92b6ffcaba7519a9b2bb59e4b5530873234cd170ff5727414939334fbcae17bbe523df846a103e2fc8ed2d2890d0d9408f073cfc1e90c28ab565c358e5 + "@babel/types": ^7.22.5 + checksum: 1012ef2295eb12dc073f2b9edf3425661e9b8432a3387e62a8bc27c42963f1f216ab3124228015c748770b2257b4f1fda882ca8fa34c0bf485e929ae5bc45244 languageName: node linkType: hard -"@babel/plugin-proposal-decorators@npm:7.22.5": +"@babel/helper-split-export-declaration@npm:^7.22.5": version: 7.22.5 - resolution: "@babel/plugin-proposal-decorators@npm:7.22.5" + resolution: "@babel/helper-split-export-declaration@npm:7.22.5" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 - "@babel/plugin-syntax-decorators": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b3807b92b6ffcaba7519a9b2bb59e4b5530873234cd170ff5727414939334fbcae17bbe523df846a103e2fc8ed2d2890d0d9408f073cfc1e90c28ab565c358e5 + "@babel/types": ^7.22.5 + checksum: d10e05a02f49c1f7c578cea63d2ac55356501bbf58856d97ac9bfde4957faee21ae97c7f566aa309e38a256eef58b58e5b670a7f568b362c00e93dfffe072650 languageName: node linkType: hard -"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 96b1c8a8ad8171d39e9ab106be33bde37ae09b22fb2c449afee9a5edf3c537933d79d963dcdc2694d10677cb96da739cdf1b53454e6a5deab9801f28a818bb2f +"@babel/helper-string-parser@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-string-parser@npm:7.22.5" + checksum: 836851ca5ec813077bbb303acc992d75a360267aa3b5de7134d220411c852a6f17de7c0d0b8c8dcc0f567f67874c00f4528672b2a4f1bc978a3ada64c8c78467 languageName: node linkType: hard -"@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 84ff22bacc5d30918a849bfb7e0e90ae4c5b8d8b65f2ac881803d1cf9068dffbe53bd657b0e4bc4c20b4db301b1c85f1e74183cf29a0dd31e964bd4e97c363ef +"@babel/helper-validator-identifier@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-validator-identifier@npm:7.22.5" + checksum: 7f0f30113474a28298c12161763b49de5018732290ca4de13cdaefd4fd0d635a6fe3f6686c37a02905fb1e64f21a5ee2b55140cf7b070e729f1bd66866506aea languageName: node linkType: hard -"@babel/plugin-proposal-json-strings@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 25ba0e6b9d6115174f51f7c6787e96214c90dd4026e266976b248a2ed417fe50fddae72843ffb3cbe324014a18632ce5648dfac77f089da858022b49fd608cb3 +"@babel/helper-validator-option@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-validator-option@npm:7.22.5" + checksum: bbeca8a85ee86990215c0424997438b388b8d642d69b9f86c375a174d3cdeb270efafd1ff128bc7a1d370923d13b6e45829ba8581c027620e83e3a80c5c414b3 languageName: node linkType: hard -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.20.7" +"@babel/helper-wrap-function@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-wrap-function@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cdd7b8136cc4db3f47714d5266f9e7b592a2ac5a94a5878787ce08890e97c8ab1ca8e94b27bfeba7b0f2b1549a026d9fc414ca2196de603df36fb32633bbdc19 + "@babel/helper-function-name": ^7.22.5 + "@babel/template": ^7.22.5 + "@babel/traverse": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: a4ba2d7577ad3ce92fadaa341ffce3b0e4b389808099b07c80847f9be0852f4b42344612bc1b3d1b796ffb75be56d5957c5c56a1734f6aee5ccbb7cd9ab12691 languageName: node linkType: hard -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" +"@babel/helpers@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helpers@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d + "@babel/template": ^7.22.5 + "@babel/traverse": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: a96e785029dff72f171190943df895ab0f76e17bf3881efd630bc5fae91215042d1c2e9ed730e8e4adf4da6f28b24bd1f54ed93b90ffbca34c197351872a084e languageName: node linkType: hard -"@babel/plugin-proposal-numeric-separator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" +"@babel/highlight@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/highlight@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f370ea584c55bf4040e1f78c80b4eeb1ce2e6aaa74f87d1a48266493c33931d0b6222d8cee3a082383d6bb648ab8d6b7147a06f974d3296ef3bc39c7851683ec + "@babel/helper-validator-identifier": ^7.22.5 + chalk: ^2.0.0 + js-tokens: ^4.0.0 + checksum: f61ae6de6ee0ea8d9b5bcf2a532faec5ab0a1dc0f7c640e5047fc61630a0edb88b18d8c92eb06566d30da7a27db841aca11820ecd3ebe9ce514c9350fbed39c4 languageName: node linkType: hard -"@babel/plugin-proposal-object-rest-spread@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" - dependencies: - "@babel/compat-data": ^7.20.5 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.20.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1329db17009964bc644484c660eab717cb3ca63ac0ab0f67c651a028d1bc2ead51dc4064caea283e46994f1b7221670a35cbc0b4beb6273f55e915494b5aa0b2 +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.9.4": + version: 7.22.5 + resolution: "@babel/parser@npm:7.22.5" + bin: + parser: ./bin/babel-parser.js + checksum: 470ebba516417ce8683b36e2eddd56dcfecb32c54b9bb507e28eb76b30d1c3e618fd0cfeee1f64d8357c2254514e1a19e32885cfb4e73149f4ae875436a6d59c languageName: node linkType: hard -"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7b5b39fb5d8d6d14faad6cb68ece5eeb2fd550fb66b5af7d7582402f974f5bc3684641f7c192a5a57e0f59acfae4aada6786be1eba030881ddc590666eff4d1e + "@babel/core": ^7.0.0 + checksum: 1e353a060fb2cd8f1256d28cd768f16fb02513f905b9b6d656fb0242c96c341a196fa188b27c2701506a6e27515359fbcc1a5ca7fa8b9b530cf88fbd137baefc languageName: node linkType: hard -"@babel/plugin-proposal-optional-chaining@npm:^7.20.7, @babel/plugin-proposal-optional-chaining@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.5 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 11c5449e01b18bb8881e8e005a577fa7be2fe5688e2382c8822d51f8f7005342a301a46af7b273b1f5645f9a7b894c428eee8526342038a275ef6ba4c8d8d746 + "@babel/core": ^7.13.0 + checksum: 16e7a5f3bf2f2ac0ca032a70bf0ebd7e886d84dbb712b55c0643c04c495f0f221fbcbca14b5f8f8027fa6c87a3dafae0934022ad2b409384af6c5c356495b7bd languageName: node linkType: hard -"@babel/plugin-proposal-private-methods@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" +"@babel/plugin-proposal-decorators@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-proposal-decorators@npm:7.22.5" dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.5 + "@babel/plugin-syntax-decorators": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 22d8502ee96bca99ad2c8393e8493e2b8d4507576dd054490fd8201a36824373440106f5b098b6d821b026c7e72b0424ff4aeca69ed5f42e48f029d3a156d5ad + checksum: b3807b92b6ffcaba7519a9b2bb59e4b5530873234cd170ff5727414939334fbcae17bbe523df846a103e2fc8ed2d2890d0d9408f073cfc1e90c28ab565c358e5 languageName: node linkType: hard @@ -1128,20 +417,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-private-property-in-object@npm:^7.21.0": - version: 7.21.11 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.11" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1b880543bc5f525b360b53d97dd30807302bb82615cd42bf931968f59003cac75629563d6b104868db50abd22235b3271fdf679fea5db59a267181a99cc0c265 - languageName: node - linkType: hard - "@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": version: 7.18.6 resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" @@ -1231,17 +506,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.20.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6a86220e0aae40164cd3ffaf80e7c076a1be02a8f3480455dddbae05fda8140f429290027604df7a11b3f3f124866e8a6d69dbfa1dda61ee7377b920ad144d5b - languageName: node - linkType: hard - "@babel/plugin-syntax-import-assertions@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-syntax-import-assertions@npm:7.22.5" @@ -1286,18 +550,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.21.4, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/plugin-syntax-jsx@npm:7.21.4" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bb7309402a1d4e155f32aa0cf216e1fa8324d6c4cfd248b03280028a015a10e46b6efd6565f515f8913918a3602b39255999c06046f7d4b8a5106be2165d724a - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.22.5": +"@babel/plugin-syntax-jsx@npm:^7.22.5, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.22.5 resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" dependencies: @@ -1308,17 +561,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/plugin-syntax-jsx@npm:7.21.4" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bb7309402a1d4e155f32aa0cf216e1fa8324d6c4cfd248b03280028a015a10e46b6efd6565f515f8913918a3602b39255999c06046f7d4b8a5106be2165d724a - languageName: node - linkType: hard - "@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -1407,18 +649,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.21.4, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.21.4 - resolution: "@babel/plugin-syntax-typescript@npm:7.21.4" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a59ce2477b7ae8c8945dc37dda292fef9ce46a6507b3d76b03ce7f3a6c9451a6567438b20a78ebcb3955d04095fd1ccd767075a863f79fcc30aa34dcfa441fe0 - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.22.5": +"@babel/plugin-syntax-typescript@npm:^7.22.5, @babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.22.5 resolution: "@babel/plugin-syntax-typescript@npm:7.22.5" dependencies: @@ -1429,17 +660,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.20.0 - resolution: "@babel/plugin-syntax-typescript@npm:7.20.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a59ce2477b7ae8c8945dc37dda292fef9ce46a6507b3d76b03ce7f3a6c9451a6567438b20a78ebcb3955d04095fd1ccd767075a863f79fcc30aa34dcfa441fe0 - languageName: node - linkType: hard - "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -1452,28 +672,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b43cabe3790c2de7710abe32df9a30005eddb2050dadd5d122c6872f679e5710e410f1b90c8f99a2aff7b614cccfecf30e7fd310236686f60d3ed43fd80b9847 - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.21.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 35abb6c57062802c7ce8bd96b2ef2883e3124370c688bbd67609f7d2453802fb73944df8808f893b6c67de978eb2bcf87bbfe325e46d6f39b5fcb09ece11d01a - languageName: node - linkType: hard - "@babel/plugin-transform-arrow-functions@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-arrow-functions@npm:7.22.5" @@ -1499,19 +697,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.20.7" - dependencies: - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-remap-async-to-generator": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fe9ee8a5471b4317c1b9ea92410ace8126b52a600d7cfbfe1920dcac6fb0fad647d2e08beb4fd03c630eb54430e6c72db11e283e3eddc49615c68abd39430904 - languageName: node - linkType: hard - "@babel/plugin-transform-async-to-generator@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-async-to-generator@npm:7.22.5" @@ -1525,17 +710,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0a0df61f94601e3666bf39f2cc26f5f7b22a94450fb93081edbed967bd752ce3f81d1227fefd3799f5ee2722171b5e28db61379234d1bb85b6ec689589f99d7e - languageName: node - linkType: hard - "@babel/plugin-transform-block-scoped-functions@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.22.5" @@ -1547,17 +721,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 15aacaadbecf96b53a750db1be4990b0d89c7f5bc3e1794b63b49fb219638c1fd25d452d15566d7e5ddf5b5f4e1a0a0055c35c1c7aee323c7b114bf49f66f4b0 - languageName: node - linkType: hard - "@babel/plugin-transform-block-scoping@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-block-scoping@npm:7.22.5" @@ -1594,25 +757,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-classes@npm:7.21.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-split-export-declaration": ^7.18.6 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 088ae152074bd0e90f64659169255bfe50393e637ec8765cb2a518848b11b0299e66b91003728fd0a41563a6fdc6b8d548ece698a314fd5447f5489c22e466b7 - languageName: node - linkType: hard - "@babel/plugin-transform-classes@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-classes@npm:7.22.5" @@ -1632,30 +776,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/template": ^7.20.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: be70e54bda8b469146459f429e5f2bd415023b87b2d5af8b10e48f465ffb02847a3ed162ca60378c004b82db848e4d62e90010d41ded7e7176b6d8d1c2911139 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-computed-properties@npm:7.21.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/template": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c2a77a0f94ec71efbc569109ec14ea2aa925b333289272ced8b33c6108bdbb02caf01830ffc7e49486b62dec51911924d13f3a76f1149f40daace1898009e131 - languageName: node - linkType: hard - "@babel/plugin-transform-computed-properties@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-computed-properties@npm:7.22.5" @@ -1668,17 +788,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-destructuring@npm:7.21.3" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 43ebbe0bfa20287e34427be7c2200ce096c20913775ea75268fb47fe0e55f9510800587e6052c42fe6dffa0daaad95dd465c3e312fd1ef9785648384c45417ac - languageName: node - linkType: hard - "@babel/plugin-transform-destructuring@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-destructuring@npm:7.22.5" @@ -1690,38 +799,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cbe5d7063eb8f8cca24cd4827bc97f5641166509e58781a5f8aa47fb3d2d786ce4506a30fca2e01f61f18792783a5cb5d96bf5434c3dd1ad0de8c9cc625a53da - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.22.5": +"@babel/plugin-transform-dotall-regex@npm:^7.22.5, @babel/plugin-transform-dotall-regex@npm:^7.4.4": version: 7.22.5 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 409b658d11e3082c8f69e9cdef2d96e4d6d11256f005772425fb230cc48fd05945edbfbcb709dab293a1a2f01f9c8a5bb7b4131e632b23264039d9f95864b453 - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" + resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" dependencies: - "@babel/helper-plugin-utils": ^7.18.9 + "@babel/helper-create-regexp-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 220bf4a9fec5c4d4a7b1de38810350260e8ea08481bf78332a464a21256a95f0df8cd56025f346238f09b04f8e86d4158fafc9f4af57abaef31637e3b58bd4fe + checksum: 409b658d11e3082c8f69e9cdef2d96e4d6d11256f005772425fb230cc48fd05945edbfbcb709dab293a1a2f01f9c8a5bb7b4131e632b23264039d9f95864b453 languageName: node linkType: hard @@ -1748,18 +834,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7f70222f6829c82a36005508d34ddbe6fd0974ae190683a8670dd6ff08669aaf51fef2209d7403f9bd543cb2d12b18458016c99a6ed0332ccedb3ea127b01229 - languageName: node - linkType: hard - "@babel/plugin-transform-exponentiation-operator@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.22.5" @@ -1784,28 +858,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-for-of@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2f3f86ca1fab2929fcda6a87e4303d5c635b5f96dc9a45fd4ca083308a3020c79ac33b9543eb4640ef2b79f3586a00ab2d002a7081adb9e9d7440dce30781034 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-for-of@npm:7.21.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d7b8d4db010bce7273674caa95c4e6abd909362866ce297e86a2ecaa9ae636e05d525415811db9b3c942155df7f3651d19b91dd6c41f142f7308a97c7cb06023 - languageName: node - linkType: hard - "@babel/plugin-transform-for-of@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-for-of@npm:7.22.5" @@ -1817,19 +869,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-function-name@npm:7.18.9" - dependencies: - "@babel/helper-compilation-targets": ^7.18.9 - "@babel/helper-function-name": ^7.18.9 - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 62dd9c6cdc9714704efe15545e782ee52d74dc73916bf954b4d3bee088fb0ec9e3c8f52e751252433656c09f744b27b757fc06ed99bcde28e8a21600a1d8e597 - languageName: node - linkType: hard - "@babel/plugin-transform-function-name@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-function-name@npm:7.22.5" @@ -1855,17 +894,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3458dd2f1a47ac51d9d607aa18f3d321cbfa8560a985199185bed5a906bb0c61ba85575d386460bac9aed43fdd98940041fae5a67dff286f6f967707cff489f8 - languageName: node - linkType: hard - "@babel/plugin-transform-literals@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-literals@npm:7.22.5" @@ -1889,17 +917,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 35a3d04f6693bc6b298c05453d85ee6e41cc806538acb6928427e0e97ae06059f97d2f07d21495fcf5f70d3c13a242e2ecbd09d5c1fcb1b1a73ff528dcb0b695 - languageName: node - linkType: hard - "@babel/plugin-transform-member-expression-literals@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.22.5" @@ -1911,18 +928,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-amd@npm:7.20.11" - dependencies: - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 23665c1c20c8f11c89382b588fb9651c0756d130737a7625baeaadbd3b973bc5bfba1303bedffa8fb99db1e6d848afb01016e1df2b69b18303e946890c790001 - languageName: node - linkType: hard - "@babel/plugin-transform-modules-amd@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-modules-amd@npm:7.22.5" @@ -1935,32 +940,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.2" - dependencies: - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-simple-access": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 65aa06e3e3792f39b99eb5f807034693ff0ecf80438580f7ae504f4c4448ef04147b1889ea5e6f60f3ad4a12ebbb57c6f1f979a249dadbd8d11fe22f4441918b - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.5" - dependencies: - "@babel/helper-module-transforms": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-simple-access": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2067aca8f6454d54ffcce69b02c457cfa61428e11372f6a1d99ff4fcfbb55c396ed2ca6ca886bf06c852e38c1a205b8095921b2364fd0243f3e66bc1dda61caa - languageName: node - linkType: hard - "@babel/plugin-transform-modules-commonjs@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.5" @@ -1974,34 +953,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.20.11" - dependencies: - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-identifier": ^7.19.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4546c47587f88156d66c7eb7808e903cf4bb3f6ba6ac9bc8e3af2e29e92eb9f0b3f44d52043bfd24eb25fa7827fd7b6c8bfeac0cac7584e019b87e1ecbd0e673 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.3" - dependencies: - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-module-transforms": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 04f4178589543396b3c24330a67a59c5e69af5e96119c9adda730c0f20122deaff54671ebbc72ad2df6495a5db8a758bd96942de95fba7ad427de9c80b1b38c8 - languageName: node - linkType: hard - "@babel/plugin-transform-modules-systemjs@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.5" @@ -2016,18 +967,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" - dependencies: - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c3b6796c6f4579f1ba5ab0cdcc73910c1e9c8e1e773c507c8bb4da33072b3ae5df73c6d68f9126dab6e99c24ea8571e1563f8710d7c421fac1cde1e434c20153 - languageName: node - linkType: hard - "@babel/plugin-transform-modules-umd@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-modules-umd@npm:7.22.5" @@ -2040,30 +979,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.20.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.20.5 - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 528c95fb1087e212f17e1c6456df041b28a83c772b9c93d2e407c9d03b72182b0d9d126770c1d6e0b23aab052599ceaf25ed6a2c0627f4249be34a83f6fae853 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.3" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 3ee564ddee620c035b928fdc942c5d17e9c4b98329b76f9cefac65c111135d925eb94ed324064cd7556d4f5123beec79abea1d4b97d1c8a2a5c748887a2eb623 - languageName: node - linkType: hard - "@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" @@ -2076,28 +991,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-new-target@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bd780e14f46af55d0ae8503b3cb81ca86dcc73ed782f177e74f498fff934754f9e9911df1f8f3bd123777eed7c1c1af4d66abab87c8daae5403e7719a6b845d1 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-new-target@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6b72112773487a881a1d6ffa680afde08bad699252020e86122180ee7a88854d5da3f15d9bca3331cf2e025df045604494a8208a2e63b486266b07c14e2ffbf3 - languageName: node - linkType: hard - "@babel/plugin-transform-new-target@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-new-target@npm:7.22.5" @@ -2148,18 +1041,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-super@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0fcb04e15deea96ae047c21cb403607d49f06b23b4589055993365ebd7a7d7541334f06bf9642e90075e66efce6ebaf1eb0ef066fbbab802d21d714f1aac3aef - languageName: node - linkType: hard - "@babel/plugin-transform-object-super@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-object-super@npm:7.22.5" @@ -2197,28 +1078,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/plugin-transform-parameters@npm:7.21.3" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c92128d7b1fcf54e2cab186c196bbbf55a9a6de11a83328dc2602649c9dc6d16ef73712beecd776cd49bfdc624b5f56740f4a53568d3deb9505ec666bc869da3 - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-parameters@npm:7.22.3" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b44f89cf97daf23903776ba27c2ab13b439d80d8c8a95be5c476ab65023b1e0c0e94c28d3745f3b60a58edc4e590fa0cd4287a0293e51401ca7d29a2ddb13b8e - languageName: node - linkType: hard - "@babel/plugin-transform-parameters@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-parameters@npm:7.22.5" @@ -2256,17 +1115,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1c16e64de554703f4b547541de2edda6c01346dd3031d4d29e881aa7733785cd26d53611a4ccf5353f4d3e69097bb0111c0a93ace9e683edd94fea28c4484144 - languageName: node - linkType: hard - "@babel/plugin-transform-property-literals@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-property-literals@npm:7.22.5" @@ -2300,21 +1148,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.18.6, @babel/plugin-transform-react-jsx@npm:^7.22.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-react-jsx@npm:7.22.3" - dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-module-imports": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-jsx": ^7.22.5 - "@babel/types": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c8f93f29f32cf79683ca2b8958fd62f38155674846ef27a7d4b6fbeb8713c37257418391731b58ff8024ec37b888bed5960e615a3f552e28245d2082e7f2a2df - languageName: node - linkType: hard - "@babel/plugin-transform-react-jsx@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-react-jsx@npm:7.22.5" @@ -2342,30 +1175,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.20.5" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - regenerator-transform: ^0.15.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 13164861e71fb23d84c6270ef5330b03c54d5d661c2c7468f28e21c4f8598558ca0c8c3cb1d996219352946e849d270a61372bc93c8fbe9676e78e3ffd0dea07 - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.21.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - regenerator-transform: ^0.15.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f7c5ca5151321963df777cc02725d10d1ccc3b3b8323da0423aecd9ac6144cbdd2274af5281a5580db2fc2f8b234e318517b5d76b85669118906533a559f2b6a - languageName: node - linkType: hard - "@babel/plugin-transform-regenerator@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-regenerator@npm:7.22.5" @@ -2378,17 +1187,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0738cdc30abdae07c8ec4b233b30c31f68b3ff0eaa40eddb45ae607c066127f5fa99ddad3c0177d8e2832e3a7d3ad115775c62b431ebd6189c40a951b867a80c - languageName: node - linkType: hard - "@babel/plugin-transform-reserved-words@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-reserved-words@npm:7.22.5" @@ -2400,17 +1198,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b8e4e8acc2700d1e0d7d5dbfd4fdfb935651913de6be36e6afb7e739d8f9ca539a5150075a0f9b79c88be25ddf45abb912fe7abf525f0b80f5b9d9860de685d7 - languageName: node - linkType: hard - "@babel/plugin-transform-shorthand-properties@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-shorthand-properties@npm:7.22.5" @@ -2422,18 +1209,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-spread@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8ea698a12da15718aac7489d4cde10beb8a3eea1f66167d11ab1e625033641e8b328157fd1a0b55dd6531933a160c01fc2e2e61132a385cece05f26429fd0cc2 - languageName: node - linkType: hard - "@babel/plugin-transform-spread@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-spread@npm:7.22.5" @@ -2446,17 +1221,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 68ea18884ae9723443ffa975eb736c8c0d751265859cd3955691253f7fee37d7a0f7efea96c8a062876af49a257a18ea0ed5fea0d95a7b3611ce40f7ee23aee3 - languageName: node - linkType: hard - "@babel/plugin-transform-sticky-regex@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-sticky-regex@npm:7.22.5" @@ -2468,17 +1232,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3d2fcd79b7c345917f69b92a85bdc3ddd68ce2c87dc70c7d61a8373546ccd1f5cb8adc8540b49dfba08e1b82bb7b3bbe23a19efdb2b9c994db2db42906ca9fb2 - languageName: node - linkType: hard - "@babel/plugin-transform-template-literals@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-template-literals@npm:7.22.5" @@ -2490,17 +1243,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e754e0d8b8a028c52e10c148088606e3f7a9942c57bd648fc0438e5b4868db73c386a5ed47ab6d6f0594aae29ee5ffc2ffc0f7ebee7fae560a066d6dea811cd4 - languageName: node - linkType: hard - "@babel/plugin-transform-typeof-symbol@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-typeof-symbol@npm:7.22.5" @@ -2512,20 +1254,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.21.3": - version: 7.22.3 - resolution: "@babel/plugin-transform-typescript@npm:7.22.3" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.22.1 - "@babel/helper-plugin-utils": ^7.21.5 - "@babel/plugin-syntax-typescript": ^7.21.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b32fdb7ba0902b0c271bec3e0ee678d745a5c33037f0ed62b00db212d94c24b4ca5d523578f2cf557697c959aeb6354d2615a141379fb3bd0a58e4b6a3bd4b3c - languageName: node - linkType: hard - "@babel/plugin-transform-typescript@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-typescript@npm:7.22.5" @@ -2540,17 +1268,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f5baca55cb3c11bc08ec589f5f522d85c1ab509b4d11492437e45027d64ae0b22f0907bd1381e8d7f2a436384bb1f9ad89d19277314242c5c2671a0f91d0f9cd - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-escapes@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.5" @@ -2574,18 +1291,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d9e18d57536a2d317fb0b7c04f8f55347f3cfacb75e636b4c6fa2080ab13a3542771b5120e726b598b815891fc606d1472ac02b749c69fd527b03847f22dc25e - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-regex@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-unicode-regex@npm:7.22.5" @@ -2599,20 +1304,8 @@ __metadata: linkType: hard "@babel/plugin-transform-unicode-sets-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: c042070f980b139547f8b0179efbc049ac5930abec7fc26ed7a41d89a048d8ab17d362200e204b6f71c3c20d6991a0e74415e1a412a49adc8131c2a40c04822e - languageName: node - linkType: hard - -"@babel/preset-env@npm:7.22.4, @babel/preset-env@npm:^7.11.0": - version: 7.22.4 - resolution: "@babel/preset-env@npm:7.22.4" + version: 7.22.5 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.22.5" dependencies: "@babel/helper-create-regexp-features-plugin": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 @@ -2622,7 +1315,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:7.22.5": +"@babel/preset-env@npm:7.22.5, @babel/preset-env@npm:^7.11.0": version: 7.22.5 resolution: "@babel/preset-env@npm:7.22.5" dependencies: @@ -2765,47 +1458,16 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.22.3 - resolution: "@babel/runtime@npm:7.22.3" - dependencies: - regenerator-runtime: ^0.13.11 - checksum: 8fc50785ca4cba749fed90bffca7e6fd52d4709755654e95b8d2a945fc034b56fb8c2e8a0183fea7c4abb86bf5fa77678c0ea35163b6920649833d180c34c234 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.21.0": - version: 7.21.5 - resolution: "@babel/runtime@npm:7.21.5" +"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": + version: 7.22.5 + resolution: "@babel/runtime@npm:7.22.5" dependencies: regenerator-runtime: ^0.13.11 - checksum: 358f2779d3187f5c67ad302e8f8d435412925d0b991d133c7d4a7b1ddd5a3fda1b6f34537cb64628dfd96a27ae46df105bed3895b8d754b88cacdded8d1129dd - languageName: node - linkType: hard - -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.21.9, @babel/template@npm:^7.3.3, @babel/template@npm:^7.4.4": - version: 7.21.9 - resolution: "@babel/template@npm:7.21.9" - dependencies: - "@babel/code-frame": ^7.22.5 - "@babel/parser": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: c5746410164039aca61829cdb42e9a55410f43cace6f51ca443313f3d0bdfa9a5a330d0b0df73dc17ef885c72104234ae05efede37c1cc8a72dc9f93425977a3 + checksum: 12a50b7de2531beef38840d17af50c55a094253697600cee255311222390c68eed704829308d4fd305e1b3dfbce113272e428e9d9d45b1730e0fede997eaceb1 languageName: node linkType: hard -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.3.3, @babel/template@npm:^7.4.4": - version: 7.20.7 - resolution: "@babel/template@npm:7.20.7" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e - languageName: node - linkType: hard - -"@babel/template@npm:^7.22.5": +"@babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3, @babel/template@npm:^7.4.4": version: 7.22.5 resolution: "@babel/template@npm:7.22.5" dependencies: @@ -2816,25 +1478,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.20.5, @babel/traverse@npm:^7.22.1, @babel/traverse@npm:^7.7.2": - version: 7.22.4 - resolution: "@babel/traverse@npm:7.22.4" - dependencies: - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.4 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.21.4 - "@babel/types": ^7.21.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: f22f067c2d9b6497abf3d4e53ea71f3aa82a21f2ed434dd69b8c5767f11f2a4c24c8d2f517d2312c9e5248e5c69395fdca1c95a2b3286122c75f5783ddb6f53c - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.22.5": +"@babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.7.2": version: 7.22.5 resolution: "@babel/traverse@npm:7.22.5" dependencies: @@ -2852,29 +1496,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.21.4, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.21.4 - resolution: "@babel/types@npm:7.21.4" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: 587bc55a91ce003b0f8aa10d70070f8006560d7dc0360dc0406d306a2cb2a10154e2f9080b9c37abec76907a90b330a536406cb75e6bdc905484f37b75c73219 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.5, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.4, @babel/types@npm:^7.21.5, @babel/types@npm:^7.22.0, @babel/types@npm:^7.22.3, @babel/types@npm:^7.22.4, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.22.4 - resolution: "@babel/types@npm:7.22.4" - dependencies: - "@babel/helper-string-parser": ^7.21.5 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: ffe36bb4f4a99ad13c426a98c3b508d70736036cae4e471d9c862e3a579847ed4f480686af0fce2633f6f7c0f0d3bf02da73da36e7edd3fde0b2061951dcba9a - languageName: node - linkType: hard - -"@babel/types@npm:^7.22.5": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.22.5 resolution: "@babel/types@npm:7.22.5" dependencies: @@ -2989,9 +1611,9 @@ __metadata: linkType: hard "@cspell/dict-companies@npm:^3.0.9": - version: 3.0.14 - resolution: "@cspell/dict-companies@npm:3.0.14" - checksum: 106f800613b972b878793abbce9bd03812d34c8e6e124f7707865ba8f61b09203f585aed9b03ad88835e05176dd3de4d8a14d961fc2aec6054f9d2ea76a9139b + version: 3.0.15 + resolution: "@cspell/dict-companies@npm:3.0.15" + checksum: bc6d9a79ef4b8f682ca8a4755b3c3b69a8f124ea6e0f00feb1c2103ab1b57f9c699f0b0fad72e6a5dcc505a9068e90a8eb265a0c294c871e897a927a0bf68343 languageName: node linkType: hard @@ -3030,6 +1652,13 @@ __metadata: languageName: node linkType: hard +"@cspell/dict-data-science@npm:^1.0.0": + version: 1.0.3 + resolution: "@cspell/dict-data-science@npm:1.0.3" + checksum: 90b4692783b330bb6efce739600ad1fe4b0387c04fcdb5828a5c073ff2fb9ca65c4d80b34aab41f0d971eeedd242fde0db037768d7345255ca5436b5f0247d7a + languageName: node + linkType: hard + "@cspell/dict-django@npm:^4.0.2": version: 4.0.2 resolution: "@cspell/dict-django@npm:4.0.2" @@ -3115,9 +1744,9 @@ __metadata: linkType: hard "@cspell/dict-golang@npm:^6.0.1": - version: 6.0.1 - resolution: "@cspell/dict-golang@npm:6.0.1" - checksum: 465dc7a879fa34be010aecc7dac9820bc93ea694abc24299757662c10b8d9f632df7d18c37b31d7dabb67b721bfa9a6d02bd50125e464f79e1d466aa8073a35b + version: 6.0.2 + resolution: "@cspell/dict-golang@npm:6.0.2" + checksum: 6a2e7dbfc9227a9e848ac2c4777e30460ca73f94c4c245143032aa73188ffa44e1968146ebc0ef3ea0883f69f261876e4fe62a06802cdd12e2ce3c45a74c5aab languageName: node linkType: hard @@ -3213,9 +1842,11 @@ __metadata: linkType: hard "@cspell/dict-python@npm:^4.0.2": - version: 4.0.7 - resolution: "@cspell/dict-python@npm:4.0.7" - checksum: 700499f3f2a2006bb36c2374c1b71080f0fc9321c31050059324fc983756fc93f4fb20ed374cabf2097a30a0e0a11c70b8d56f1e217f0d6a94623c115c8228ce + version: 4.1.1 + resolution: "@cspell/dict-python@npm:4.1.1" + dependencies: + "@cspell/dict-data-science": ^1.0.0 + checksum: 520e992c8c52cbdc0bec8368e388627792b4358f9070bf2f016d423b52f395c5b423961ab879fc6dff86cd01abeb44140e76ad2c44c571170d50d784a745df4d languageName: node linkType: hard @@ -3248,9 +1879,9 @@ __metadata: linkType: hard "@cspell/dict-software-terms@npm:^3.1.6": - version: 3.1.12 - resolution: "@cspell/dict-software-terms@npm:3.1.12" - checksum: 3f765ab5d7fefe3b65ee3970b9c7a8c55bf275d97c0f8e46ec30747adb03a0d8e7c12fa09df101e0bda53d4fd5858cd3d1003e2411c07224f1135747b508f4f2 + version: 3.1.16 + resolution: "@cspell/dict-software-terms@npm:3.1.16" + checksum: 94ef28d66d86fcdc3062cc0fbbf1372d2788b8980388e16eaae2f2f25d4190cc2157336e0578a79b23cffece5b337fdf7156f093540dedac8da7a8e62fc7ad78 languageName: node linkType: hard @@ -3342,28 +1973,19 @@ __metadata: linkType: hard "@csstools/css-color-parser@npm:^1.2.0": - version: 1.2.0 - resolution: "@csstools/css-color-parser@npm:1.2.0" + version: 1.2.1 + resolution: "@csstools/css-color-parser@npm:1.2.1" dependencies: "@csstools/color-helpers": ^2.1.0 "@csstools/css-calc": ^1.1.1 peerDependencies: "@csstools/css-parser-algorithms": ^2.1.1 "@csstools/css-tokenizer": ^2.1.1 - checksum: d3908aac70a7478a21cba710f8a6ec9486efa21fd6f4335362196533460b7096cb0d8961ac4176785baec61f6cacc0c2e4f89ff7a098255fc37469133f8cc0b6 + checksum: 7da5c49b618e792029b9d7db1f545650558b3e42b5994b161707109ed1d5aab7ed6d183d33b3b4e0e04fd52691b018b44712a73821fdd882e560e9dc10372329 languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^2.1.1": - version: 2.2.0 - resolution: "@csstools/css-parser-algorithms@npm:2.2.0" - peerDependencies: - "@csstools/css-tokenizer": ^2.1.1 - checksum: 9f1b6e902dadfc6ac37086c4b7073b16458186d9f42c534fdede8b0e7c2e3a832ea2d716baf32d4976c1fc2d8ad78f829916419faa73ecd10cc61c329121e683 - languageName: node - linkType: hard - -"@csstools/css-parser-algorithms@npm:^2.2.0": +"@csstools/css-parser-algorithms@npm:^2.1.1, @csstools/css-parser-algorithms@npm:^2.2.0": version: 2.2.0 resolution: "@csstools/css-parser-algorithms@npm:2.2.0" peerDependencies: @@ -3784,28 +2406,7 @@ __metadata: languageName: node linkType: hard -"@emotion/react@npm:11.11.1": - version: 11.11.1 - resolution: "@emotion/react@npm:11.11.1" - dependencies: - "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.11.0 - "@emotion/cache": ^11.11.0 - "@emotion/serialize": ^1.1.2 - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.1 - "@emotion/utils": ^1.2.1 - "@emotion/weak-memoize": ^0.3.1 - hoist-non-react-statics: ^3.3.1 - peerDependencies: - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: aec3c36650f5f0d3d4445ff44d73dd88712b1609645b6af3e6d08049cfbc51f1785fe13dea1a1d4ab1b0800d68f2339ab11e459687180362b1ef98863155aae5 - languageName: node - linkType: hard - -"@emotion/react@npm:^11.8.1": +"@emotion/react@npm:11.11.1, @emotion/react@npm:^11.8.1": version: 11.11.1 resolution: "@emotion/react@npm:11.11.1" dependencies: @@ -3922,10 +2523,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.42.0": - version: 8.42.0 - resolution: "@eslint/js@npm:8.42.0" - checksum: 750558843ac458f7da666122083ee05306fc087ecc1e5b21e7e14e23885775af6c55bcc92283dff1862b7b0d8863ec676c0f18c7faf1219c722fe91a8ece56b6 +"@eslint/js@npm:8.43.0": + version: 8.43.0 + resolution: "@eslint/js@npm:8.43.0" + checksum: 580487a09c82ac169744d36e4af77bc4f582c9a37749d1e9481eb93626c8f3991b2390c6e4e69e5642e3b6e870912b839229a0e23594fae348156ea5a8ed7e2e languageName: node linkType: hard @@ -3936,19 +2537,19 @@ __metadata: languageName: node linkType: hard -"@floating-ui/core@npm:^1.2.6": - version: 1.2.6 - resolution: "@floating-ui/core@npm:1.2.6" - checksum: e4aa96c435277f1720d4bc939e17a79b1e1eebd589c20b622d3c646a5273590ff889b8c6e126f7be61873cf8c4d7db7d418895986ea19b8b0d0530de32504c3a +"@floating-ui/core@npm:^1.3.1": + version: 1.3.1 + resolution: "@floating-ui/core@npm:1.3.1" + checksum: fe3b40fcaec95b0825c01a98330ae75b60c61c395ca012055a32f9c22ab97fde8ce1bd14fce3d242beb9dbe4564c90ce4a7a767851911d4215b9ec7721440e5b languageName: node linkType: hard "@floating-ui/dom@npm:^1.0.1": - version: 1.2.9 - resolution: "@floating-ui/dom@npm:1.2.9" + version: 1.4.2 + resolution: "@floating-ui/dom@npm:1.4.2" dependencies: - "@floating-ui/core": ^1.2.6 - checksum: 16ae5e05a41c2ca16d51579d12729ca9d346241319f68ce5678f5fbeb9c4f9a16176c95089bbd7a0eb37c6ed90e5fd55a310ffc9948af7c841d5b8bfa0afe1b8 + "@floating-ui/core": ^1.3.1 + checksum: aede0dbdba0772782fbc284d086cc6a922bd97bdb72ee72a75d0623683d3898af85aa8c71c6ef1b6bfc1bba54398898ccdee51f49c33e317142c9593ee250d06 languageName: node linkType: hard @@ -4057,13 +2658,6 @@ __metadata: languageName: node linkType: hard -"@gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 - languageName: node - linkType: hard - "@humanwhocodes/config-array@npm:^0.11.10": version: 0.11.10 resolution: "@humanwhocodes/config-array@npm:0.11.10" @@ -4089,6 +2683,20 @@ __metadata: languageName: node linkType: hard +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: ^5.1.2 + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: ^7.0.1 + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: ^8.1.0 + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb + languageName: node + linkType: hard + "@istanbuljs/load-nyc-config@npm:^1.0.0": version: 1.1.0 resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" @@ -4839,19 +3447,6 @@ __metadata: languageName: node linkType: hard -"@loadable/component@npm:^5.15.3": - version: 5.15.3 - resolution: "@loadable/component@npm:5.15.3" - dependencies: - "@babel/runtime": ^7.7.7 - hoist-non-react-statics: ^3.3.1 - react-is: ^16.12.0 - peerDependencies: - react: ^16.3.0 || ^17.0.0 || ^18.0.0 - checksum: 78ac341465f2310db30381bc75e8bf73a33f99af849a6a2d87eb3842da0ba1df265e08045dc4f3fee1d194522a43a030baa91740045b64aad002f159ccce64bf - languageName: node - linkType: hard - "@mapbox/node-pre-gyp@npm:^1.0.8": version: 1.0.10 resolution: "@mapbox/node-pre-gyp@npm:1.0.10" @@ -4907,23 +3502,19 @@ __metadata: languageName: node linkType: hard -"@npmcli/fs@npm:^2.1.0": - version: 2.1.2 - resolution: "@npmcli/fs@npm:2.1.2" +"@npmcli/fs@npm:^3.1.0": + version: 3.1.0 + resolution: "@npmcli/fs@npm:3.1.0" dependencies: - "@gar/promisify": ^1.1.3 semver: ^7.3.5 - checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 + checksum: a50a6818de5fc557d0b0e6f50ec780a7a02ab8ad07e5ac8b16bf519e0ad60a144ac64f97d05c443c3367235d337182e1d012bbac0eb8dbae8dc7b40b193efd0e languageName: node linkType: hard -"@npmcli/move-file@npm:^2.0.0": - version: 2.0.1 - resolution: "@npmcli/move-file@npm:2.0.1" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f languageName: node linkType: hard @@ -5104,25 +3695,7 @@ __metadata: languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.0.2 - resolution: "@sinonjs/fake-timers@npm:10.0.2" - dependencies: - "@sinonjs/commons": ^2.0.0 - checksum: c62aa98e7cefda8dedc101ce227abc888dc46b8ff9706c5f0a8dfd9c3ada97d0a5611384738d9ba0b26b59f99c2ba24efece8e779bb08329e9e87358fa309824 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^10.0.2, @sinonjs/fake-timers@npm:^10.2.0": - version: 10.2.0 - resolution: "@sinonjs/fake-timers@npm:10.2.0" - dependencies: - "@sinonjs/commons": ^3.0.0 - checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^10.3.0": +"@sinonjs/fake-timers@npm:^10.0.2, @sinonjs/fake-timers@npm:^10.3.0": version: 10.3.0 resolution: "@sinonjs/fake-timers@npm:10.3.0" dependencies: @@ -5162,18 +3735,18 @@ __metadata: linkType: hard "@testing-library/dom@npm:^8.11.1, @testing-library/dom@npm:^8.5.0": - version: 8.20.0 - resolution: "@testing-library/dom@npm:8.20.0" + version: 8.20.1 + resolution: "@testing-library/dom@npm:8.20.1" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 "@types/aria-query": ^5.0.1 - aria-query: ^5.0.0 + aria-query: 5.1.3 chalk: ^4.1.0 dom-accessibility-api: ^0.5.9 - lz-string: ^1.4.4 + lz-string: ^1.5.0 pretty-format: ^27.0.2 - checksum: 1e599129a2fe91959ce80900a0a4897232b89e2a8e22c1f5950c36d39c97629ea86b4986b60b173b5525a05de33fde1e35836ea597b03de78cc51b122835c6f0 + checksum: 06fc8dc67849aadb726cbbad0e7546afdf8923bd39acb64c576d706249bd7d0d05f08e08a31913fb621162e3b9c2bd0dce15964437f030f9fa4476326fdd3007 languageName: node linkType: hard @@ -5374,12 +3947,22 @@ __metadata: linkType: hard "@types/eslint@npm:*": - version: 8.40.0 - resolution: "@types/eslint@npm:8.40.0" + version: 8.40.2 + resolution: "@types/eslint@npm:8.40.2" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: a4780e45e677e3af21c44a900846996cb6d9ae8f71d51940942a047163ae93a05444392c005f491ed46aa169f3b25f8be125ab42c5d8bdb571154bf62a7c828a + languageName: node + linkType: hard + +"@types/eslint@npm:8.37.0": + version: 8.37.0 + resolution: "@types/eslint@npm:8.37.0" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: bab41d7f590182e743853cdd5bf5359cbc4240df986223457c8a5f5674743a3fe2a8626704b65bf9121dfa0ce0a0efd760da8339cc329018f229d4d2d6ee1c43 + checksum: 06d3b3fba12004294591b5c7a52e3cec439472195da54e096076b1f2ddfbb8a445973b9681046dd530a6ac31eca502f635abc1e3ce37d03513089358e6f822ee languageName: node linkType: hard @@ -5618,9 +4201,9 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=13.7.0": - version: 20.2.5 - resolution: "@types/node@npm:20.2.5" - checksum: 38ce7c7e9d76880dc632f71d71e0d5914fcda9d5e9a7095d6c339abda55ca4affb0f2a882aeb29398f8e09d2c5151f0b6586c81c8ccdfe529c34b1ea3337425e + version: 20.3.1 + resolution: "@types/node@npm:20.3.1" + checksum: 63a393ab6d947be17320817b35d7277ef03728e231558166ed07ee30b09fd7c08861be4d746f10fdc63ca7912e8cd023939d4eab887ff6580ff704ff24ed810c languageName: node linkType: hard @@ -5639,16 +4222,16 @@ __metadata: linkType: hard "@types/node@npm:^18.16.3": - version: 18.16.16 - resolution: "@types/node@npm:18.16.16" - checksum: 0efad726dd1e0bef71c392c708fc5d78c5b39c46b0ac5186fee74de4ccb1b2e847b3fa468da67d62812f56569da721b15bf31bdc795e6c69b56c73a45079ed2d + version: 18.16.18 + resolution: "@types/node@npm:18.16.18" + checksum: d32d8a0a04cd3f5ecb361bcb42f3a07623881ac90d680e06bf626defb3c663a94860d11690babe607cfe67265eceeb8a59ba5fe40c0e49f5a1b01e0088640469 languageName: node linkType: hard "@types/node@npm:~14": - version: 14.18.48 - resolution: "@types/node@npm:14.18.48" - checksum: bc410153cd12b5f5218c2c2a5ab4a65e8dc99ebffe98261a30e9d4beb8f9a0e4ee48c41b850f8cb80da6ed1024e42bba8dee1592869aa5b1826ddb7c29ad6899 + version: 14.18.51 + resolution: "@types/node@npm:14.18.51" + checksum: 0960a31d2ac605763fe79c8edcee3cb48257d345ce417c019d84ff5d8cd92dd0937674814ab3f169346b4259c29f640556006bcb2c54cfb3e63fa0cf728d320e languageName: node linkType: hard @@ -5696,16 +4279,7 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:18.2.4, @types/react-dom@npm:^18.0.0": - version: 18.2.4 - resolution: "@types/react-dom@npm:18.2.4" - dependencies: - "@types/react": "*" - checksum: b56e42efab121a3a8013d2eb8c1688e6028a25ea6d33c4362d2846f0af3760b164b4d7c34846614024cfb8956cca70dd1743487f152e32ff89a00fe6fbd2be54 - languageName: node - linkType: hard - -"@types/react-dom@npm:18.2.6": +"@types/react-dom@npm:18.2.6, @types/react-dom@npm:^18.0.0": version: 18.2.6 resolution: "@types/react-dom@npm:18.2.6" dependencies: @@ -5735,14 +4309,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:^18.2.9": - version: 18.2.9 - resolution: "@types/react@npm:18.2.9" +"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:18.2.14": + version: 18.2.14 + resolution: "@types/react@npm:18.2.14" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: f155256171a2d701eb962a1d3aa2a1c9ee36d9dd4a4aecb911d29e50717aab1a76914aef25242665147c455b9e8d081d1a60275d13ca81075c148ebd6607414a + checksum: a6a5e8cc78f486b9020d1ad009aa6c56943c68c7c6376e0f8399e9cbcd950b7b8f5d73f00200f5379f5e58d31d57d8aed24357f301d8e86108cd438ce6c8b3dd languageName: node linkType: hard @@ -5905,13 +4479,13 @@ __metadata: linkType: hard "@typescript-eslint/experimental-utils@npm:^5.0.0": - version: 5.59.9 - resolution: "@typescript-eslint/experimental-utils@npm:5.59.9" + version: 5.60.0 + resolution: "@typescript-eslint/experimental-utils@npm:5.60.0" dependencies: - "@typescript-eslint/utils": 5.59.9 + "@typescript-eslint/utils": 5.60.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 90cbd1c2caf5e48a9907ba2fcfd363e932f7a18c8d1a9a8eb79c34bee72e4b424c9cc48459125bc374cacfb5664e328566619300af6543b00372fe3bb740b4ea + checksum: 37d46701a35c4329ba24ce8ed063362978a58d0b429db80f520f7e5ba71616e5cab76c07fe8360a6a71ddb9872af9ace7e329c879915c73e9efc598c2283ec77 languageName: node linkType: hard @@ -5932,36 +4506,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.10.1": - version: 5.10.1 - resolution: "@typescript-eslint/scope-manager@npm:5.10.1" - dependencies: - "@typescript-eslint/types": 5.10.1 - "@typescript-eslint/visitor-keys": 5.10.1 - checksum: a4f802ca683bcb3db0e14739d02e680f0f51b6562c23380ea9e0878a70f638572650bd2dbc62f8d74bc39657c053c3e6469a0d4179d3d99bb94fd47bd14d6ecf - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.59.0": - version: 5.59.0 - resolution: "@typescript-eslint/scope-manager@npm:5.59.0" - dependencies: - "@typescript-eslint/types": 5.59.0 - "@typescript-eslint/visitor-keys": 5.59.0 - checksum: dd89cd34291f7674edcbe9628748faa61dbf7199f9776586167e81fd91b93ba3a7f0ddd493c559c0dbb805b58629858fae648d56550e8ac5330b2ed1802b0178 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/scope-manager@npm:5.59.9" - dependencies: - "@typescript-eslint/types": 5.60.0 - "@typescript-eslint/visitor-keys": 5.60.0 - checksum: b21ee1ef57be948a806aa31fd65a9186766b3e1a727030dc47025edcadc54bd1aa6133a439acd5f44a93e2b983dd55bc5571bb01cb834461dab733682d66256a - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:5.60.0": version: 5.60.0 resolution: "@typescript-eslint/scope-manager@npm:5.60.0" @@ -5989,27 +4533,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:5.10.1": - version: 5.10.1 - resolution: "@typescript-eslint/types@npm:5.10.1" - checksum: e8bbedae74637c35677aab92eceb154e8f1b100b6015d4aa20b5d52bb2e486e50733feca07610406763e1cc36c448a97ca77f058f4e07e7c61bd8d830c092030 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.59.0": - version: 5.59.0 - resolution: "@typescript-eslint/types@npm:5.59.0" - checksum: 5dc608a867b07b4262a236a264a65e894f841388b3aba461c4c1a30d76a2c3aed0c6a1e3d1ea2f64cce55e783091bafb826bf01a0ef83258820af63da860addf - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/types@npm:5.59.9" - checksum: 283f8fee1ee590eeccc2e0fcd3526c856c4b1e2841af2cdcd09eeac842a42cfb32f6bc8b40385380f3dbc3ee29da30f1819115eedf9e16f69ff5a160aeddd8fa - languageName: node - linkType: hard - "@typescript-eslint/types@npm:5.60.0": version: 5.60.0 resolution: "@typescript-eslint/types@npm:5.60.0" @@ -6017,60 +4540,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.10.1": - version: 5.10.1 - resolution: "@typescript-eslint/typescript-estree@npm:5.10.1" - dependencies: - "@typescript-eslint/types": 5.10.1 - "@typescript-eslint/visitor-keys": 5.10.1 - debug: ^4.3.2 - globby: ^11.0.4 - is-glob: ^4.0.3 - semver: ^7.3.5 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 5721e99baa9b286a474a22c4b08e6ac5a0d79435e7f2a91e876e6a2135a44244f0a83ff42cc1cd2ac23cc6ee014965baaa84481e9017f703c45f22e474620c7f - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.59.0": - version: 5.59.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.59.0" - dependencies: - "@typescript-eslint/types": 5.59.0 - "@typescript-eslint/visitor-keys": 5.59.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: d80f2766e2830dc830b9f4f1b9e744e1e7a285ebe72babdf0970f75bfe26cb832c6623bb836a53c48f1e707069d1e407ac1ea095bd583807007f713ba6e2e0e1 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/typescript-estree@npm:5.59.9" - dependencies: - "@typescript-eslint/types": 5.60.0 - "@typescript-eslint/visitor-keys": 5.60.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 0f4f342730ead42ba60b5fca4bf1950abebd83030010c38b5df98ff9fd95d0ce1cfc3974a44c90c65f381f4f172adcf1a540e018d7968cc845d937bf6c734dae - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:5.60.0": version: 5.60.0 resolution: "@typescript-eslint/typescript-estree@npm:5.60.0" @@ -6089,41 +4558,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.10.1": - version: 5.10.1 - resolution: "@typescript-eslint/utils@npm:5.10.1" - dependencies: - "@types/json-schema": ^7.0.9 - "@typescript-eslint/scope-manager": 5.10.1 - "@typescript-eslint/types": 5.10.1 - "@typescript-eslint/typescript-estree": 5.10.1 - eslint-scope: ^5.1.1 - eslint-utils: ^3.0.0 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: beca5b5eb56b6236215baa409619fc8eea700e733094683c3ac39236bf442793b61fcf3ad6fe57ccec265649962d84c1951900e47bd55208ed50c4c2c7d8cf6b - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.59.9, @typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.58.0": - version: 5.59.9 - resolution: "@typescript-eslint/utils@npm:5.59.9" - dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.60.0 - "@typescript-eslint/types": 5.60.0 - "@typescript-eslint/typescript-estree": 5.60.0 - eslint-scope: ^5.1.1 - semver: ^7.3.7 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: cbe56567f0b53e24ad7ef7d2fb4cdc8596e2559c21ee639aa0560879b6216208550e51e9d8ae4b388ff21286809c6dc985cec66738294871051396a8ae5bccbc - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.60.0": +"@typescript-eslint/utils@npm:5.60.0, @typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.58.0": version: 5.60.0 resolution: "@typescript-eslint/utils@npm:5.60.0" dependencies: @@ -6141,54 +4576,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.58.0": - version: 5.59.0 - resolution: "@typescript-eslint/utils@npm:5.59.0" - dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.59.0 - "@typescript-eslint/types": 5.59.0 - "@typescript-eslint/typescript-estree": 5.59.0 - eslint-scope: ^5.1.1 - semver: ^7.3.7 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 228318df02f2381f859af184cafa5de4146a2e1518a5062444bf9bd7d468e058f9bd93a3e46cc4683d9bd02159648f416e5c7c539901ca16142456cae3c1af5f - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.10.1": - version: 5.10.1 - resolution: "@typescript-eslint/visitor-keys@npm:5.10.1" - dependencies: - "@typescript-eslint/types": 5.10.1 - eslint-visitor-keys: ^3.0.0 - checksum: 7e1e1a41b2df797534ee56c0d9ae2a056e0ca0ca019b31125fd52d7deb0e802d899920031f2dbf88a951e6752d8fcbd9fa904eaeccb50cf30d2b92b54fd7879d - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.59.0": - version: 5.59.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.59.0" - dependencies: - "@typescript-eslint/types": 5.59.0 - eslint-visitor-keys: ^3.3.0 - checksum: e21656de02e221a27a5fe9f7fd34a1ca28530e47675134425f84fd0d1f276695fe39e35120837a491b02255d49aa2fd871e2c858ecccc66c687db972d057bd1c - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/visitor-keys@npm:5.59.9" - dependencies: - "@typescript-eslint/types": 5.60.0 - eslint-visitor-keys: ^3.3.0 - checksum: d39b2485d030f9755820d0f6f3748a8ec44e1ca23cb36ddcba67a9eb1f258c8ec83c61fc015c50e8f4a00d05df62d719dbda445625e3e71a64a659f1d248157e - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:5.60.0": version: 5.60.0 resolution: "@typescript-eslint/visitor-keys@npm:5.60.0" @@ -6376,29 +4763,10 @@ __metadata: peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x - peerDependenciesMeta: - webpack-dev-server: - optional: true - checksum: 75f0e54681796d567a71ac3e2781d2901a8d8cf1cdfc82f261034dddac59a8343e8c3bc5e32b4bb9d6766759ba49fb29a5cd86ef1701d79c506fe886bb63ac75 - languageName: node - linkType: hard - -"@wireapp/api-client@npm:^24.15.3": - version: 24.15.6 - resolution: "@wireapp/api-client@npm:24.15.6" - dependencies: - "@wireapp/commons": ^5.1.0 - "@wireapp/priority-queue": ^2.1.1 - "@wireapp/protocol-messaging": 1.44.0 - axios: 1.4.0 - axios-retry: 3.5.0 - http-status-codes: 2.2.0 - logdown: 3.3.1 - reconnecting-websocket: 4.4.0 - spark-md5: 3.0.2 - tough-cookie: 4.1.3 - ws: 8.11.0 - checksum: 9f14648dc839aff733c19b236f78f7563552639293ce9bd131d0a34ede2025b8ed51f22123c0efadf98454b6e4f23211dc605536105709fb741c47bbc7590a81 + peerDependenciesMeta: + webpack-dev-server: + optional: true + checksum: 75f0e54681796d567a71ac3e2781d2901a8d8cf1cdfc82f261034dddac59a8343e8c3bc5e32b4bb9d6766759ba49fb29a5cd86ef1701d79c506fe886bb63ac75 languageName: node linkType: hard @@ -6463,35 +4831,10 @@ __metadata: languageName: node linkType: hard -"@wireapp/core-crypto@npm:0.8.2": - version: 0.8.2 - resolution: "@wireapp/core-crypto@npm:0.8.2" - checksum: f28a44ed5c4adba56453cd6a62813d6ba433b9ee2143522a741c52f5581aca86de3296b0afe4011fc1d5d5cf76d7afda747bb2171c7c129ba73d3b15087a4e99 - languageName: node - linkType: hard - -"@wireapp/core@npm:40.4.2": - version: 40.4.2 - resolution: "@wireapp/core@npm:40.4.2" - dependencies: - "@wireapp/api-client": ^24.15.3 - "@wireapp/commons": ^5.1.0 - "@wireapp/core-crypto": 0.8.2 - "@wireapp/cryptobox": 12.8.0 - "@wireapp/promise-queue": ^2.2.0 - "@wireapp/protocol-messaging": 1.44.0 - "@wireapp/store-engine": 5.1.1 - "@wireapp/store-engine-dexie": ^2.1.2 - axios: 1.4.0 - bazinga64: 6.1.1 - deepmerge-ts: 4.3.0 - hash.js: 1.1.7 - http-status-codes: 2.2.0 - idb: 7.1.1 - logdown: 3.3.1 - long: ^5.2.0 - uuidjs: 4.2.13 - checksum: f81f0eb00a6e9188530f4f52861846dacba50fe7b5964661cad374c238b1548a03c9a61e287acc98c6e04ef53c6c10fd8ce3350b6dfd5b7bb088ec9308486918 +"@wireapp/core-crypto@npm:0.11.0": + version: 0.11.0 + resolution: "@wireapp/core-crypto@npm:0.11.0" + checksum: 247272085a734b15a1fc82caaaad1c1f935609564a4fa8b5954727bcd16df23c4e85192772d853fcd15baabb6efd7e1777901aa4021e9e34fd46e89d98bab8ca languageName: node linkType: hard @@ -6501,7 +4844,7 @@ __metadata: dependencies: "@wireapp/api-client": ^24.15.7 "@wireapp/commons": ^5.1.0 - "@wireapp/core-crypto": 0.8.2 + "@wireapp/core-crypto": 0.11.0 "@wireapp/cryptobox": 12.8.0 "@wireapp/promise-queue": ^2.2.0 "@wireapp/protocol-messaging": 1.44.0 @@ -6855,11 +5198,11 @@ __metadata: linkType: hard "acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.0, acorn@npm:^8.8.1, acorn@npm:^8.8.2": - version: 8.8.2 - resolution: "acorn@npm:8.8.2" + version: 8.9.0 + resolution: "acorn@npm:8.9.0" bin: acorn: bin/acorn - checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 + checksum: 25dfb94952386ecfb847e61934de04a4e7c2dc21c2e700fc4e2ef27ce78cb717700c4c4f279cd630bb4774948633c3859fc16063ec8573bda4568e0a312e6744 languageName: node linkType: hard @@ -7040,7 +5383,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^6.0.0": +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 @@ -7163,7 +5506,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0, aria-query@npm:^5.1.3": +"aria-query@npm:5.1.3": version: 5.1.3 resolution: "aria-query@npm:5.1.3" dependencies: @@ -7172,6 +5515,15 @@ __metadata: languageName: node linkType: hard +"aria-query@npm:^5.1.3": + version: 5.3.0 + resolution: "aria-query@npm:5.3.0" + dependencies: + dequal: ^2.0.3 + checksum: 305bd73c76756117b59aba121d08f413c7ff5e80fa1b98e217a3443fcddb9a232ee790e24e432b59ae7625aebcf4c47cb01c2cac872994f0b426f5bdfcd96ba9 + languageName: node + linkType: hard + "arr-union@npm:^3.1.0": version: 3.1.0 resolution: "arr-union@npm:3.1.0" @@ -7363,11 +5715,11 @@ __metadata: linkType: hard "axobject-query@npm:^3.1.1": - version: 3.1.1 - resolution: "axobject-query@npm:3.1.1" + version: 3.2.1 + resolution: "axobject-query@npm:3.2.1" dependencies: - deep-equal: ^2.0.5 - checksum: c12a5da10dc7bab75e1cda9b6a3b5fcf10eba426ddf1a17b71ef65a434ed707ede7d1c4f013ba1609e970bc8c0cddac01365080d376204314e9b294719acd8a5 + dequal: ^2.0.3 + checksum: a94047e702b57c91680e6a952ec4a1aaa2cfd0d80ead76bc8c954202980d8c51968a6ea18b4d8010e8e2cf95676533d8022a8ebba9abc1dfe25686721df26fd2 languageName: node linkType: hard @@ -7666,21 +6018,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4, browserslist@npm:^4.21.5": - version: 4.21.7 - resolution: "browserslist@npm:4.21.7" - dependencies: - caniuse-lite: ^1.0.30001489 - electron-to-chromium: ^1.4.411 - node-releases: ^2.0.12 - update-browserslist-db: ^1.0.11 - bin: - browserslist: cli.js - checksum: 3d0d025e6d381c4db5e71b538258952660ba574c060832095f182a9877ca798836fa550736269e669a2080e486f0cfdf5d3bcf2769b9f7cf123f6c6b8c005f8f - languageName: node - linkType: hard - -"browserslist@npm:^4.21.9": +"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4, browserslist@npm:^4.21.5, browserslist@npm:^4.21.9": version: 4.21.9 resolution: "browserslist@npm:4.21.9" dependencies: @@ -7767,29 +6105,23 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^16.1.0": - version: 16.1.3 - resolution: "cacache@npm:16.1.3" +"cacache@npm:^17.0.0": + version: 17.1.3 + resolution: "cacache@npm:17.1.3" dependencies: - "@npmcli/fs": ^2.1.0 - "@npmcli/move-file": ^2.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - glob: ^8.0.1 - infer-owner: ^1.0.4 + "@npmcli/fs": ^3.1.0 + fs-minipass: ^3.0.0 + glob: ^10.2.2 lru-cache: ^7.7.1 - minipass: ^3.1.6 + minipass: ^5.0.0 minipass-collect: ^1.0.2 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 - mkdirp: ^1.0.4 p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^9.0.0 + ssri: ^10.0.0 tar: ^6.1.11 - unique-filename: ^2.0.0 - checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 + unique-filename: ^3.0.0 + checksum: 385756781e1e21af089160d89d7462b7ed9883c978e848c7075b90b73cb823680e66092d61513050164588387d2ca87dd6d910e28d64bc13a9ac82cd8580c796 languageName: node linkType: hard @@ -7864,31 +6196,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001449, caniuse-lite@npm:^1.0.30001464": - version: 1.0.30001481 - resolution: "caniuse-lite@npm:1.0.30001481" - checksum: 8200a043c191b4fd4fe0beda37a58fd61869c895ab93f87bdd0420e5927453f48434d716ce9da8552ff6c3ecc4dcd1366354cda3a134f3cc844af741574a7cab - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001464, caniuse-lite@npm:^1.0.30001489, caniuse-lite@npm:^1.0.30001495": - version: 1.0.30001495 - resolution: "caniuse-lite@npm:1.0.30001495" - checksum: c0a139a2e679ca60ae1ce2aaf0e9f5850cc1016b3735200cc1a1347bd7737f0a2a5993bc3f88f43a13ec687befffdae212a849f782702a6fe488de123e92351e - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001503": - version: 1.0.30001506 - resolution: "caniuse-lite@npm:1.0.30001506" - checksum: 0a090745824622df146e2f6dde79c7f7920a899dec1b3a599d2ef9acf41cef5e179fd133bb59f2030286a4ea935f4230e05438d7394694c414e8ada345eb5268 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001507": - version: 1.0.30001507 - resolution: "caniuse-lite@npm:1.0.30001507" - checksum: 7044172bdf65140c927cdaaff50368a97676f06a9fd8b515c046613bdf52cb769e9efb832ee491b8f8cc21f82c15f154a896efbab690f431bb064c95f3a2b7a8 +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001464, caniuse-lite@npm:^1.0.30001503, caniuse-lite@npm:^1.0.30001507": + version: 1.0.30001508 + resolution: "caniuse-lite@npm:1.0.30001508" + checksum: 0a083ed92194d87e608fc35cac65830a27900249729eb8a68e270f866f2c4f83396c2e54eb47b0ef71360682174dd74e2e68eac0b8d407d125611c7bc12488eb languageName: node linkType: hard @@ -7958,9 +6269,9 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^1.0.0": - version: 1.2.2 - resolution: "cjs-module-lexer@npm:1.2.2" - checksum: 977f3f042bd4f08e368c890d91eecfbc4f91da0bc009a3c557bc4dfbf32022ad1141244ac1178d44de70fc9f3dea7add7cd9a658a34b9fae98a55d8f92331ce5 + version: 1.2.3 + resolution: "cjs-module-lexer@npm:1.2.3" + checksum: 5ea3cb867a9bb609b6d476cd86590d105f3cfd6514db38ff71f63992ab40939c2feb68967faa15a6d2b1f90daa6416b79ea2de486e9e2485a6f8b66a21b4fb0a languageName: node linkType: hard @@ -8391,11 +6702,11 @@ __metadata: linkType: hard "core-js-compat@npm:^3.30.1, core-js-compat@npm:^3.30.2": - version: 3.30.2 - resolution: "core-js-compat@npm:3.30.2" + version: 3.31.0 + resolution: "core-js-compat@npm:3.31.0" dependencies: browserslist: ^4.21.5 - checksum: 4c81d635559eebc2f81db60f5095a235f580a2f90698113c4124c72761393592b139e30974cce6095a9a6aad6bb3cd467b24b20c32e77ed24ca74eb5944d0638 + checksum: 5c76ac5e4ab39480391f93a5aef14a2cfa188cda7bd6a7b8532de1f8bc5d89099a5025b2640d2ef70a2928614792363dcbcf8bd254aa7b2e11b85aeed7ac460f languageName: node linkType: hard @@ -8425,18 +6736,6 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:8.1.3": - version: 8.1.3 - resolution: "cosmiconfig@npm:8.1.3" - dependencies: - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - parse-json: ^5.0.0 - path-type: ^4.0.0 - checksum: 836d5d8efa750f3fb17b03d6ca74cd3154ed025dffd045304b3ef59637f662bde1e5dc88f8830080d180ec60841719cf4ea2ce73fb21ec694b16865c478ff297 - languageName: node - linkType: hard - "cosmiconfig@npm:8.2.0, cosmiconfig@npm:^8.2.0": version: 8.2.0 resolution: "cosmiconfig@npm:8.2.0" @@ -8462,18 +6761,6 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^8.1.3": - version: 8.2.0 - resolution: "cosmiconfig@npm:8.2.0" - dependencies: - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - parse-json: ^5.0.0 - path-type: ^4.0.0 - checksum: 836d5d8efa750f3fb17b03d6ca74cd3154ed025dffd045304b3ef59637f662bde1e5dc88f8830080d180ec60841719cf4ea2ce73fb21ec694b16865c478ff297 - languageName: node - linkType: hard - "countly-sdk-web@npm:23.2.2": version: 23.2.2 resolution: "countly-sdk-web@npm:23.2.2" @@ -8533,7 +6820,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: @@ -9098,6 +7385,13 @@ __metadata: languageName: node linkType: hard +"dequal@npm:^2.0.3": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 + languageName: node + linkType: hard + "detect-libc@npm:^2.0.0": version: 2.0.1 resolution: "detect-libc@npm:2.0.1" @@ -9352,17 +7646,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.411": - version: 1.4.425 - resolution: "electron-to-chromium@npm:1.4.425" - checksum: 1ec2e80601eb49982c51f562f74dc9fa1a80f3006c7d508f3bc37d2d12c726df99ff60d7f013e38c374ae81414e0b76d5e7a97f406cdea8b5e8e3dfb51c23f72 - languageName: node - linkType: hard - "electron-to-chromium@npm:^1.4.431": - version: 1.4.437 - resolution: "electron-to-chromium@npm:1.4.437" - checksum: 3453e4fc148305a2fc33a94f2e173a8ae3d22f54f121aa6f2beffdbb83ebfca249776297f9fa1957b7fccf896acad2f55c4c64eedff87902a3c720be874c5b5c + version: 1.4.440 + resolution: "electron-to-chromium@npm:1.4.440" + checksum: 702f8f045492a15bc6eee408987c986de1e78a568b34fc68ed6a21e1fc03f3a3019e7e6a6d88c1f4468fbe788045425e70104ec9b481825d0bce00e3841418b8 languageName: node linkType: hard @@ -9422,27 +7709,7 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.12.0": - version: 5.13.0 - resolution: "enhanced-resolve@npm:5.13.0" - dependencies: - graceful-fs: ^4.2.4 - tapable: ^2.2.0 - checksum: 76d6844c4393d76beed5b3ce6cf5a98dee3ad5c84a9887f49ccde1224e3b7af201dfbd5a57ebf2b49f623b74883df262d50ff480d3cc02fc2881fc58b84e1bbe - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.12.0, enhanced-resolve@npm:^5.14.1": - version: 5.14.1 - resolution: "enhanced-resolve@npm:5.14.1" - dependencies: - graceful-fs: ^4.2.4 - tapable: ^2.2.0 - checksum: fbd8cdc9263be71cc737aa8a7d6c57b43d6aa38f6cc75dde6fcd3598a130cc465f979d2f4d01bb3bf475acb43817749c79f8eef9be048683602ca91ab52e4f11 - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.15.0": +"enhanced-resolve@npm:^5.12.0, enhanced-resolve@npm:^5.15.0": version: 5.15.0 resolution: "enhanced-resolve@npm:5.15.0" dependencies: @@ -9495,11 +7762,11 @@ __metadata: linkType: hard "envinfo@npm:^7.7.3": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" + version: 7.9.0 + resolution: "envinfo@npm:7.9.0" bin: envinfo: dist/cli.js - checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 + checksum: 133583b07510309374b91c943f436c12cecc2d7b8520d65b699a80713773d130ccccb55fe6204d5b6a700b85357b6106d8d0dcf6ac24809cb44b24841e40543f languageName: node linkType: hard @@ -9597,9 +7864,9 @@ __metadata: linkType: hard "es-module-lexer@npm:^1.2.1": - version: 1.2.1 - resolution: "es-module-lexer@npm:1.2.1" - checksum: c4145b853e1491eaa5d591e4580926d242978c38071ad3d09165c3b6d50314cc0ae3bf6e1dec81a9e53768b9299df2063d2e4a67d7742a5029ddeae6c4fc26f0 + version: 1.3.0 + resolution: "es-module-lexer@npm:1.3.0" + checksum: 48fd9f504a9d2a894126f75c8b7ccc6273a289983e9b67255f165bfd9ae765d50100218251e94e702ca567826905ea2f7b3b4a0c4d74d3ce99cce3a2a606a238 languageName: node linkType: hard @@ -10060,13 +8327,13 @@ __metadata: linkType: hard "eslint@npm:^8.41.0": - version: 8.42.0 - resolution: "eslint@npm:8.42.0" + version: 8.43.0 + resolution: "eslint@npm:8.43.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.4.0 "@eslint/eslintrc": ^2.0.3 - "@eslint/js": 8.42.0 + "@eslint/js": 8.43.0 "@humanwhocodes/config-array": ^0.11.10 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -10104,7 +8371,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 07105397b5f2ff4064b983b8971e8c379ec04b1dfcc9d918976b3e00377189000161dac991d82ba14f8759e466091b8c71146f602930ca810c290ee3fcb3faf0 + checksum: 55654ce00b0d128822b57526e40473d0497c7c6be3886afdc0b41b6b0dfbd34d0eae8159911b18451b4db51a939a0e6d2e117e847ae419086884fc3d4fe23c7c languageName: node linkType: hard @@ -10288,6 +8555,13 @@ __metadata: languageName: node linkType: hard +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48 + languageName: node + linkType: hard + "extend-shallow@npm:^2.0.0, extend-shallow@npm:^2.0.1": version: 2.0.1 resolution: "extend-shallow@npm:2.0.1" @@ -10576,6 +8850,16 @@ __metadata: languageName: node linkType: hard +"foreground-child@npm:^3.1.0": + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" + dependencies: + cross-spawn: ^7.0.0 + signal-exit: ^4.0.1 + checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5 + languageName: node + linkType: hard + "form-data@npm:^4.0.0": version: 4.0.0 resolution: "form-data@npm:4.0.0" @@ -10649,7 +8933,7 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": +"fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" dependencies: @@ -10658,6 +8942,15 @@ __metadata: languageName: node linkType: hard +"fs-minipass@npm:^3.0.0": + version: 3.0.2 + resolution: "fs-minipass@npm:3.0.2" + dependencies: + minipass: ^5.0.0 + checksum: e9cc0e1f2d01c6f6f62f567aee59530aba65c6c7b2ae88c5027bc34c711ebcfcfaefd0caf254afa6adfe7d1fba16bc2537508a6235196bac7276747d078aef0a + languageName: node + linkType: hard + "fs-mkdirp-stream@npm:^1.0.0": version: 1.0.0 resolution: "fs-mkdirp-stream@npm:1.0.0" @@ -10940,6 +9233,21 @@ __metadata: languageName: node linkType: hard +"glob@npm:^10.2.2": + version: 10.3.0 + resolution: "glob@npm:10.3.0" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^2.0.3 + minimatch: ^9.0.1 + minipass: ^5.0.0 || ^6.0.2 + path-scurry: ^1.7.0 + bin: + glob: dist/cjs/src/bin.js + checksum: 6fa4ac0a86ffec1c5715a2e6fbdd63e1e7f1c2c8f5db08cc3256cdfcb81093678e7c80a3d100b502a1b9d141369ecf87bc24fe2bcb72acec7b14626d358a4eb0 + languageName: node + linkType: hard + "glob@npm:^7.0.5, glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": version: 7.2.3 resolution: "glob@npm:7.2.3" @@ -10954,7 +9262,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.0.0, glob@npm:^8.0.1": +"glob@npm:^8.0.0": version: 8.1.0 resolution: "glob@npm:8.1.0" dependencies: @@ -11080,15 +9388,15 @@ __metadata: linkType: hard "globby@npm:^13.1.1, globby@npm:^13.1.3": - version: 13.1.4 - resolution: "globby@npm:13.1.4" + version: 13.2.0 + resolution: "globby@npm:13.2.0" dependencies: dir-glob: ^3.0.1 fast-glob: ^3.2.11 ignore: ^5.2.0 merge2: ^1.4.1 slash: ^4.0.0 - checksum: e8bc13879972082d590cd1b0e27080d90d2e12fff7eeb2cee9329c29115ace14cc5b9f899e3d6beb136ba826307a727016658919a6f383e1511d698acee81741 + checksum: 0a3dd786571788adef1c894f22112834cff5bbe061ae6e0a01c5118c39d44b3f1937ef1dae3f8b9bc24756eba84a0923e565b1ad9a4ec52831d7e2a04c035e75 languageName: node linkType: hard @@ -11300,9 +9608,9 @@ __metadata: linkType: hard "html-entities@npm:^2.1.0": - version: 2.3.5 - resolution: "html-entities@npm:2.3.5" - checksum: 585f8a4d549b126b147c95398849a343df4cec379ad0ab87c6be1539870751cb85d3d4910c2cb4a848cc99de84307cd9a372890175b73852d5225e716e65e62f + version: 2.4.0 + resolution: "html-entities@npm:2.4.0" + checksum: 25bea32642ce9ebd0eedc4d24381883ecb0335ccb8ac26379a0958b9b16652fdbaa725d70207ce54a51db24103436a698a8e454397d3ba8ad81460224751f1dc languageName: node linkType: hard @@ -11364,7 +9672,7 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:^4.1.0": +"http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 @@ -11462,11 +9770,11 @@ __metadata: linkType: hard "i18next@npm:*": - version: 22.5.1 - resolution: "i18next@npm:22.5.1" + version: 23.2.3 + resolution: "i18next@npm:23.2.3" dependencies: - "@babel/runtime": ^7.20.6 - checksum: 175f8ab7fac2abcee147b00cc2d8e7d4fa9b05cdc227f02cac841fc2fd9545ed4a6d88774f594f8ad12dc944e4d34cc8e88aa00c8b9947baef9e859d93abd305 + "@babel/runtime": ^7.22.5 + checksum: 74504bfe1f7784f76b08c9d5e589779c4c65b85b4d44f2b89531bc0cb0fbe18b9abede5eb3e0f3c088ba39455d4271cccf1d40aebadaa82a58d517847b7518b2 languageName: node linkType: hard @@ -11584,13 +9892,6 @@ __metadata: languageName: node linkType: hard -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 - languageName: node - linkType: hard - "inflight@npm:^1.0.4": version: 1.0.6 resolution: "inflight@npm:1.0.6" @@ -12342,6 +10643,19 @@ __metadata: languageName: node linkType: hard +"jackspeak@npm:^2.0.3": + version: 2.2.1 + resolution: "jackspeak@npm:2.2.1" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: e29291c0d0f280a063fa18fbd1e891ab8c2d7519fd34052c0ebde38538a15c603140d60c2c7f432375ff7ee4c5f1c10daa8b2ae19a97c3d4affe308c8360c1df + languageName: node + linkType: hard + "jake@npm:^10.8.5": version: 10.8.7 resolution: "jake@npm:10.8.7" @@ -13748,7 +12062,7 @@ __metadata: languageName: node linkType: hard -"lz-string@npm:^1.4.4": +"lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0" bin: @@ -13792,27 +12106,26 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^10.0.3": - version: 10.2.1 - resolution: "make-fetch-happen@npm:10.2.1" +"make-fetch-happen@npm:^11.0.3": + version: 11.1.1 + resolution: "make-fetch-happen@npm:11.1.1" dependencies: agentkeepalive: ^4.2.1 - cacache: ^16.1.0 - http-cache-semantics: ^4.1.0 + cacache: ^17.0.0 + http-cache-semantics: ^4.1.1 http-proxy-agent: ^5.0.0 https-proxy-agent: ^5.0.0 is-lambda: ^1.0.1 lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.3 + minipass: ^5.0.0 + minipass-fetch: ^3.0.0 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 negotiator: ^0.6.3 promise-retry: ^2.0.1 socks-proxy-agent: ^7.0.0 - ssri: ^9.0.0 - checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c + ssri: ^10.0.0 + checksum: 7268bf274a0f6dcf0343829489a4506603ff34bd0649c12058753900b0eb29191dce5dba12680719a5d0a983d3e57810f594a12f3c18494e93a1fbc6348a4540 languageName: node linkType: hard @@ -14082,6 +12395,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^9.0.1": + version: 9.0.2 + resolution: "minimatch@npm:9.0.2" + dependencies: + brace-expansion: ^2.0.1 + checksum: 2eb12e2047a062fdb973fb51b9803f2455e3a00977858c038d66646d303a5a15bbcbc6ed5a2fc403bc869b1309f829ed3acd881d3246faf044ea7a494974b924 + languageName: node + linkType: hard + "minimist-options@npm:4.1.0": version: 4.1.0 resolution: "minimist-options@npm:4.1.0" @@ -14109,18 +12431,18 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^2.0.3": - version: 2.1.2 - resolution: "minipass-fetch@npm:2.1.2" +"minipass-fetch@npm:^3.0.0": + version: 3.0.3 + resolution: "minipass-fetch@npm:3.0.3" dependencies: encoding: ^0.1.13 - minipass: ^3.1.6 + minipass: ^5.0.0 minipass-sized: ^1.0.3 minizlib: ^2.1.2 dependenciesMeta: encoding: optional: true - checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 + checksum: af5ab2552a16fcf505d35fd7ffb84b57f4a0eeb269e6e1d9a2a75824dda48b36e527083250b7cca4a4def21d9544e2ade441e4730e233c0bc2133f6abda31e18 languageName: node linkType: hard @@ -14151,7 +12473,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": +"minipass@npm:^3.0.0": version: 3.3.6 resolution: "minipass@npm:3.3.6" dependencies: @@ -14377,13 +12699,14 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 9.3.1 - resolution: "node-gyp@npm:9.3.1" + version: 9.4.0 + resolution: "node-gyp@npm:9.4.0" dependencies: env-paths: ^2.2.0 + exponential-backoff: ^3.1.1 glob: ^7.1.4 graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 + make-fetch-happen: ^11.0.3 nopt: ^6.0.0 npmlog: ^6.0.0 rimraf: ^3.0.2 @@ -14392,7 +12715,7 @@ __metadata: which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: b860e9976fa645ca0789c69e25387401b4396b93c8375489b5151a6c55cf2640a3b6183c212b38625ef7c508994930b72198338e3d09b9d7ade5acc4aaf51ea7 + checksum: 78b404e2e0639d64e145845f7f5a3cb20c0520cdaf6dda2f6e025e9b644077202ea7de1232396ba5bde3fee84cdc79604feebe6ba3ec84d464c85d407bb5da99 languageName: node linkType: hard @@ -14410,13 +12733,6 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.8": - version: 2.0.10 - resolution: "node-releases@npm:2.0.10" - checksum: d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc - languageName: node - linkType: hard - "nopt@npm:^5.0.0": version: 5.0.0 resolution: "nopt@npm:5.0.0" @@ -15006,7 +13322,7 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.6.1": +"path-scurry@npm:^1.6.1, path-scurry@npm:^1.7.0": version: 1.9.2 resolution: "path-scurry@npm:1.9.2" dependencies: @@ -15134,9 +13450,9 @@ __metadata: linkType: hard "pirates@npm:^4.0.4": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 languageName: node linkType: hard @@ -16085,13 +14401,6 @@ __metadata: languageName: node linkType: hard -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 - languageName: node - linkType: hard - "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -16333,7 +14642,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.12.0, react-is@npm:^16.13.1, react-is@npm:^16.7.0": +"react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f @@ -17112,29 +15421,7 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.1.1": - version: 3.1.2 - resolution: "schema-utils@npm:3.1.2" - dependencies: - "@types/json-schema": ^7.0.8 - ajv: ^6.12.5 - ajv-keywords: ^3.5.2 - checksum: e8c590c525a58e135658dbe614c60e4821f98eb4c257c962ad61f72ad1e48b23148c7edd9295dbd5f9fc525ff8c6f448af0a932871fe9c9e1f523d1dbef917c8 - languageName: node - linkType: hard - -"schema-utils@npm:^3.1.1, schema-utils@npm:^3.1.2": - version: 3.2.0 - resolution: "schema-utils@npm:3.2.0" - dependencies: - "@types/json-schema": ^7.0.8 - ajv: ^6.12.5 - ajv-keywords: ^3.5.2 - checksum: e8c590c525a58e135658dbe614c60e4821f98eb4c257c962ad61f72ad1e48b23148c7edd9295dbd5f9fc525ff8c6f448af0a932871fe9c9e1f523d1dbef917c8 - languageName: node - linkType: hard - -"schema-utils@npm:^3.2.0": +"schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": version: 3.3.0 resolution: "schema-utils@npm:3.3.0" dependencies: @@ -17146,14 +15433,14 @@ __metadata: linkType: hard "schema-utils@npm:^4.0.0": - version: 4.1.0 - resolution: "schema-utils@npm:4.1.0" + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" dependencies: "@types/json-schema": ^7.0.9 ajv: ^8.9.0 ajv-formats: ^2.1.1 ajv-keywords: ^5.1.0 - checksum: f88af7cc0739ee29501ac40e135a4ff7e667a6e7a4c3814086d24b17377bfe0c8ea260c36a89ccbeefbb30f4508d67f336fd0df1a16966e1ba00c8d58a6323b1 + checksum: 26a0463d47683258106e6652e9aeb0823bf0b85843039e068b57da1892f7ae6b6b1094d48e9ed5ba5cbe9f7166469d880858b9d91abe8bd249421eb813850cde languageName: node linkType: hard @@ -17190,13 +15477,13 @@ __metadata: linkType: hard "semver@npm:^7.1.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": - version: 7.5.1 - resolution: "semver@npm:7.5.1" + version: 7.5.3 + resolution: "semver@npm:7.5.3" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: d16dbedad53c65b086f79524b9ef766bf38670b2395bdad5c957f824dcc566b624988013564f4812bcace3f9d405355c3635e2007396a39d1bffc71cfec4a2fc + checksum: 9d58db16525e9f749ad0a696a1f27deabaa51f66e91d2fa2b0db3de3e9644e8677de3b7d7a03f4c15bc81521e0c3916d7369e0572dbde250d9bedf5194e2a8a7 languageName: node linkType: hard @@ -17284,6 +15571,13 @@ __metadata: languageName: node linkType: hard +"signal-exit@npm:^4.0.1": + version: 4.0.2 + resolution: "signal-exit@npm:4.0.2" + checksum: 41f5928431cc6e91087bf0343db786a6313dd7c6fd7e551dbc141c95bb5fb26663444fd9df8ea47c5d7fc202f60aa7468c3162a9365cbb0615fc5e1b1328fe31 + languageName: node + linkType: hard + "simple-git@npm:3.19.0": version: 3.19.0 resolution: "simple-git@npm:3.19.0" @@ -17548,12 +15842,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^9.0.0": - version: 9.0.1 - resolution: "ssri@npm:9.0.1" +"ssri@npm:^10.0.0": + version: 10.0.4 + resolution: "ssri@npm:10.0.4" dependencies: - minipass: ^3.1.1 - checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb + minipass: ^5.0.0 + checksum: fb14da9f8a72b04eab163eb13a9dda11d5962cd2317f85457c4e0b575e9a6e0e3a6a87b5bf122c75cb36565830cd5f263fb457571bf6f1587eb5f95d095d6165 languageName: node linkType: hard @@ -17615,6 +15909,17 @@ __metadata: languageName: node linkType: hard +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.1 + checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + languageName: node + linkType: hard + "string-width@npm:^1.0.1, string-width@npm:^1.0.2": version: 1.0.2 resolution: "string-width@npm:1.0.2" @@ -17626,18 +15931,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"string-width@npm:^5.0.0": +"string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2": version: 5.1.2 resolution: "string-width@npm:5.1.2" dependencies: @@ -17726,6 +16020,15 @@ __metadata: languageName: node linkType: hard +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: ^5.0.1 + checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + languageName: node + linkType: hard + "strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": version: 3.0.1 resolution: "strip-ansi@npm:3.0.1" @@ -17735,15 +16038,6 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - "strip-ansi@npm:^7.0.1": version: 7.1.0 resolution: "strip-ansi@npm:7.1.0" @@ -18164,8 +16458,8 @@ __metadata: linkType: hard "terser@npm:^5.0.0, terser@npm:^5.10.0, terser@npm:^5.16.8": - version: 5.17.7 - resolution: "terser@npm:5.17.7" + version: 5.18.1 + resolution: "terser@npm:5.18.1" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -18173,7 +16467,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: b7b17b281febadf3bea9b9412d699fa24edf9b3e20fc7ad4e1a9cec276bdb65ddaa291c9663d5ab66b58834e433377477f73328574ccab2da1637a15b095811d + checksum: 15d1af05aae451ce844f7dc3627db09ec79f842fa9a3cf2b40221a639249d70fcd91fd3baa9c970842d75e1dd2fb957eb1afd8a0fcfc9b2a3296076a4e72528a languageName: node linkType: hard @@ -18345,18 +16639,6 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:4.1.3": - version: 4.1.3 - resolution: "tough-cookie@npm:4.1.3" - dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.2.0 - url-parse: ^1.5.3 - checksum: c9226afff36492a52118432611af083d1d8493a53ff41ec4ea48e5b583aec744b989e4280bcf476c910ec1525a89a4a0f1cae81c08b18fb2ec3a9b3a72b91dcc - languageName: node - linkType: hard - "tough-cookie@npm:4.1.3, tough-cookie@npm:^4.1.2": version: 4.1.3 resolution: "tough-cookie@npm:4.1.3" @@ -18369,18 +16651,6 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.0.0": - version: 4.1.2 - resolution: "tough-cookie@npm:4.1.2" - dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.2.0 - url-parse: ^1.5.3 - checksum: c9226afff36492a52118432611af083d1d8493a53ff41ec4ea48e5b583aec744b989e4280bcf476c910ec1525a89a4a0f1cae81c08b18fb2ec3a9b3a72b91dcc - languageName: node - linkType: hard - "tr46@npm:^1.0.1": version: 1.0.1 resolution: "tr46@npm:1.0.1" @@ -18767,21 +17037,21 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^2.0.0": - version: 2.0.1 - resolution: "unique-filename@npm:2.0.1" +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" dependencies: - unique-slug: ^3.0.0 - checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f + unique-slug: ^4.0.0 + checksum: 8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df languageName: node linkType: hard -"unique-slug@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-slug@npm:3.0.0" +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" dependencies: imurmurhash: ^0.1.4 - checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c + checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd15 languageName: node linkType: hard @@ -19412,12 +17682,12 @@ __metadata: "@faker-js/faker": 7.6.0 "@formatjs/cli": 6.1.3 "@koush/wrtc": 0.5.3 - "@loadable/component": ^5.15.3 "@testing-library/react": 13.4.0 "@types/adm-zip": 0.5.0 "@types/caniuse-lite": ^1.0.1 "@types/classnames": 2.3.1 "@types/dexie-batch": 0.4.3 + "@types/eslint": 8.37.0 "@types/fs-extra": 11.0.1 "@types/generate-changelog": 1.8.1 "@types/highlight.js": 10.1.0 @@ -19434,7 +17704,7 @@ __metadata: "@types/open-graph": 0.2.2 "@types/platform": 1.3.4 "@types/prettier": ^2.7.3 - "@types/react": 18.0.28 + "@types/react": 18.2.14 "@types/react-dom": 18.2.6 "@types/react-redux": 7.1.25 "@types/react-transition-group": 4.4.6 @@ -19794,6 +18064,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + languageName: node + linkType: hard + "wrap-ansi@npm:^2.0.0": version: 2.1.0 resolution: "wrap-ansi@npm:2.1.0" @@ -19815,14 +18096,14 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + ansi-styles: ^6.1.0 + string-width: ^5.0.1 + strip-ansi: ^7.0.1 + checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 languageName: node linkType: hard From 25e97289e9df7048464aa7c17b4cc816bf9452b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Tue, 4 Jul 2023 10:07:19 +0200 Subject: [PATCH 13/95] feat: get the certificate is working --- package.json | 3 +- server/routes/RedirectRoutes.ts | 2 +- .../auth/page/E2EIdentityOidcRedirect.tsx | 68 ------------------- src/script/util/E2EIdentity/E2EIdentity.ts | 14 +++- yarn.lock | 32 +++++---- 5 files changed, 34 insertions(+), 85 deletions(-) delete mode 100644 src/script/auth/page/E2EIdentityOidcRedirect.tsx diff --git a/package.json b/package.json index 5aa096b75d3..42d7845e1ba 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "@datadog/browser-logs": "^4.43.0", "@datadog/browser-rum": "^4.43.0", "@emotion/react": "11.11.1", - "@types/eslint": "8.37.0", + "@loadable/component": "^5.15.3", + "@types/eslint": "8.40.2", "@wireapp/avs": "9.2.15", "@wireapp/core": "40.5.5", "@wireapp/lru-cache": "3.8.1", diff --git a/server/routes/RedirectRoutes.ts b/server/routes/RedirectRoutes.ts index 13640ebd7b0..6811389a353 100644 --- a/server/routes/RedirectRoutes.ts +++ b/server/routes/RedirectRoutes.ts @@ -65,6 +65,6 @@ export const RedirectRoutes = (config: ServerConfig, clientConfig: ClientConfig) const queryString = Object.keys(query) .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(query[key] as string)}`) .join('&'); - return res.redirect(HTTP_STATUS.MOVED_TEMPORARILY, `/auth/${queryString ? '?' : ''}${queryString}`); + return res.redirect(HTTP_STATUS.MOVED_TEMPORARILY, `/auth${queryString ? '?' : ''}${queryString}`); }), ]; diff --git a/src/script/auth/page/E2EIdentityOidcRedirect.tsx b/src/script/auth/page/E2EIdentityOidcRedirect.tsx deleted file mode 100644 index fece7c713c5..00000000000 --- a/src/script/auth/page/E2EIdentityOidcRedirect.tsx +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {useEffect} from 'react'; - -import {container} from 'tsyringe'; - -import {Core} from 'src/script/service/CoreSingleton'; - -const E2EIdentityOidcRedirect = () => { - const search = window.location.href.split('/#/oidc')[1]; - const urlParams = new URLSearchParams(search); - - useEffect(() => { - async function enroll() { - const core = container.resolve(Core); - await core.init(); - return await core.continueE2EIEnrollment(); - } - enroll() - .then(success => console.log('done', success)) - .catch(error => console.log('error', error)); - }, []); - - const oidcRedirectParams: Record = { - code: urlParams.get('code'), - state: urlParams.get('state'), - scope: urlParams.get('scope'), - error: urlParams.get('error'), - errorDescription: urlParams.get('error_description'), - }; - - return ( -
-
-

E2EIdentityOidcRedirectComponent

-
- <> -
- {oidcRedirectParams && - Object.keys(oidcRedirectParams).map(key => ( -

- {key}: {oidcRedirectParams[key]} -

- ))} -
- -
- ); -}; - -export {E2EIdentityOidcRedirect}; diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/util/E2EIdentity/E2EIdentity.ts index c7c334d821e..6805618afc5 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.ts @@ -19,6 +19,8 @@ import {container} from 'tsyringe'; +import {AcmeStorage} from '@wireapp/core'; + import {PrimaryModal, removeCurrentModal} from 'Components/Modals/PrimaryModal'; import {Config} from 'src/script/Config'; import {Core} from 'src/script/service/CoreSingleton'; @@ -100,7 +102,9 @@ class E2EIHandler { public initialize(): void { if (this.isE2EIEnabled) { - this.showE2EINotificationMessage(); + if (!AcmeStorage.hasCertificateData()) { + this.showE2EINotificationMessage(); + } } } @@ -180,6 +184,14 @@ class E2EIHandler { } private showE2EINotificationMessage(): void { + // If the user has already started enrollment, don't show the notification. Instead, show the loading modal + // This will occur after the redirect from the oauth provider + if (AcmeStorage.hasHandle()) { + this.showLoadingMessage(); + void this.enrollE2EI(); + return; + } + if (this.currentStep !== E2EIHandlerStep.UNINITIALIZED && this.currentStep !== E2EIHandlerStep.SNOOZE) { return; } diff --git a/yarn.lock b/yarn.lock index e0ea9353afe..ccd85ce597c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1458,7 +1458,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.22.5 resolution: "@babel/runtime@npm:7.22.5" dependencies: @@ -3447,6 +3447,19 @@ __metadata: languageName: node linkType: hard +"@loadable/component@npm:^5.15.3": + version: 5.15.3 + resolution: "@loadable/component@npm:5.15.3" + dependencies: + "@babel/runtime": ^7.7.7 + hoist-non-react-statics: ^3.3.1 + react-is: ^16.12.0 + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + checksum: 78ac341465f2310db30381bc75e8bf73a33f99af849a6a2d87eb3842da0ba1df265e08045dc4f3fee1d194522a43a030baa91740045b64aad002f159ccce64bf + languageName: node + linkType: hard + "@mapbox/node-pre-gyp@npm:^1.0.8": version: 1.0.10 resolution: "@mapbox/node-pre-gyp@npm:1.0.10" @@ -3946,7 +3959,7 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:*": +"@types/eslint@npm:*, @types/eslint@npm:8.40.2": version: 8.40.2 resolution: "@types/eslint@npm:8.40.2" dependencies: @@ -3956,16 +3969,6 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:8.37.0": - version: 8.37.0 - resolution: "@types/eslint@npm:8.37.0" - dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: 06d3b3fba12004294591b5c7a52e3cec439472195da54e096076b1f2ddfbb8a445973b9681046dd530a6ac31eca502f635abc1e3ce37d03513089358e6f822ee - languageName: node - linkType: hard - "@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.1 resolution: "@types/estree@npm:1.0.1" @@ -14642,7 +14645,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.13.1, react-is@npm:^16.7.0": +"react-is@npm:^16.12.0, react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f @@ -17682,12 +17685,13 @@ __metadata: "@faker-js/faker": 7.6.0 "@formatjs/cli": 6.1.3 "@koush/wrtc": 0.5.3 + "@loadable/component": ^5.15.3 "@testing-library/react": 13.4.0 "@types/adm-zip": 0.5.0 "@types/caniuse-lite": ^1.0.1 "@types/classnames": 2.3.1 "@types/dexie-batch": 0.4.3 - "@types/eslint": 8.37.0 + "@types/eslint": 8.40.2 "@types/fs-extra": 11.0.1 "@types/generate-changelog": 1.8.1 "@types/highlight.js": 10.1.0 From e8f4369f87d41aa868a4a1bcc20d444c37b338cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Mon, 17 Jul 2023 14:22:29 +0200 Subject: [PATCH 14/95] feat: remove unused page --- src/script/auth/page/Root.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/script/auth/page/Root.tsx b/src/script/auth/page/Root.tsx index 65bb8c921ab..2287396fcd1 100644 --- a/src/script/auth/page/Root.tsx +++ b/src/script/auth/page/Root.tsx @@ -60,9 +60,6 @@ import {ROUTE} from '../route'; /** * Lazy loading components for routes, which can only be accessed by activated feature flags */ -const E2EIdentityOidcRedirect = loadable(() => import('./E2EIdentityOidcRedirect'), { - resolveComponent: component => component.E2EIdentityOidcRedirect, -}); const CreateAccount = loadable(() => import('./CreateAccount'), { resolveComponent: component => component.CreateAccount, }); @@ -225,9 +222,6 @@ const RootComponent: FC = ({ {Config.getConfig().FEATURE.ENABLE_ACCOUNT_REGISTRATION && ( } /> )} - {Config.getConfig().FEATURE.ENABLE_E2EI && ( - } /> - )} } /> From 47907146dfa4a557a53183850b7fe8690ae10f09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Wed, 2 Aug 2023 11:18:08 +0200 Subject: [PATCH 15/95] feat: change api of E2EI --- package.json | 3 -- .../util/E2EIdentity/E2EIdentity.test.ts | 8 ++--- src/script/util/E2EIdentity/E2EIdentity.ts | 18 +++++----- yarn.lock | 33 ------------------- 4 files changed, 14 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index d7bcaa40f62..d91d7a751cf 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "@datadog/browser-rum": "^4.45.0", "@emotion/react": "11.11.1", "@loadable/component": "^5.15.3", - "@types/eslint": "8.37.0", "@wireapp/avs": "9.3.7", "@wireapp/core": "40.7.0", "@wireapp/lru-cache": "3.8.1", @@ -86,8 +85,6 @@ "@types/open-graph": "0.2.2", "@types/platform": "1.3.4", "@types/prettier": "^2.7.3", - "@types/react": "18.2.14", - "@types/react-dom": "18.2.6", "@types/react-redux": "7.1.25", "@types/react-transition-group": "4.4.6", "@types/redux-mock-store": "1.0.3", diff --git a/src/script/util/E2EIdentity/E2EIdentity.test.ts b/src/script/util/E2EIdentity/E2EIdentity.test.ts index e0fb33bd64b..c3e781058ca 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.test.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.test.ts @@ -34,7 +34,7 @@ jest.mock('tsyringe'); jest.mock('src/script/service/CoreSingleton', () => { return { Core: jest.fn().mockImplementation(() => { - return {startE2EIEnrollment: jest.fn()}; + return {enrollE2EI: jest.fn()}; }), }; }); @@ -60,7 +60,7 @@ jest.mock('./Modals', () => ({ })); jest.mock('src/script/service/CoreSingleton', () => ({ Core: jest.fn().mockImplementation(() => ({ - startE2EIEnrollment: jest.fn(), + enrollE2EI: jest.fn(), })), })); jest.mock('src/script/user/UserState', () => ({ @@ -86,7 +86,7 @@ describe('E2EIHandler', () => { coreMock = new Core(); userStateMock = new UserState(); (userStateMock.self as unknown as jest.Mock).mockReturnValue({name: () => 'John Doe', username: () => 'johndoe'}); - (coreMock.startE2EIEnrollment as jest.Mock).mockResolvedValue(true); + (coreMock.enrollE2EI as jest.Mock).mockResolvedValue(true); (container.resolve as jest.Mock).mockImplementation(service => { if (service === Core) { @@ -171,7 +171,7 @@ describe('E2EIHandler', () => { // Mock the Core service to return an error (container.resolve as any) = jest.fn(service => { if (service === Core) { - return {startE2EIEnrollment: jest.fn(() => Promise.reject())}; + return {enrollE2EI: jest.fn(() => Promise.reject())}; } return {self: () => user}; }); diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/util/E2EIdentity/E2EIdentity.ts index 6805618afc5..ad3f1898845 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.ts @@ -119,21 +119,22 @@ class E2EIHandler { // Notify user about E2EI enrollment in progress this.currentStep = E2EIHandlerStep.ENROLL; this.showLoadingMessage(); - const success = await core.startE2EIEnrollment( - userState.self().name(), - userState.self().username(), - this.discoveryUrl, - ); + const success = await core.enrollE2EI(userState.self().name(), userState.self().username(), this.discoveryUrl); if (!success) { throw new Error('E2EI enrollment failed'); } // Notify user about E2EI enrollment success - removeCurrentModal(); + setTimeout(() => { + removeCurrentModal(); + }, 0); + this.currentStep = E2EIHandlerStep.SUCCESS; this.showSuccessMessage(); } catch (e) { - removeCurrentModal(); this.currentStep = E2EIHandlerStep.ERROR; + setTimeout(() => { + removeCurrentModal(); + }, 0); this.showErrorMessage(); } } @@ -159,7 +160,6 @@ class E2EIHandler { type: ModalType.SUCCESS, hideSecondary: true, hideClose: false, - primaryActionFn: () => null, }); PrimaryModal.show(modalType, modalOptions); } @@ -180,12 +180,14 @@ class E2EIHandler { this.showE2EINotificationMessage(); }, }); + PrimaryModal.show(modalType, modalOptions); } private showE2EINotificationMessage(): void { // If the user has already started enrollment, don't show the notification. Instead, show the loading modal // This will occur after the redirect from the oauth provider + console.log('showE2EINotificationMessage'); if (AcmeStorage.hasHandle()) { this.showLoadingMessage(); void this.enrollE2EI(); diff --git a/yarn.lock b/yarn.lock index 17a8af6b706..1281aff6784 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3995,16 +3995,6 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:8.37.0": - version: 8.37.0 - resolution: "@types/eslint@npm:8.37.0" - dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: 06d3b3fba12004294591b5c7a52e3cec439472195da54e096076b1f2ddfbb8a445973b9681046dd530a6ac31eca502f635abc1e3ce37d03513089358e6f822ee - languageName: node - linkType: hard - "@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.1 resolution: "@types/estree@npm:1.0.1" @@ -4318,15 +4308,6 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:18.2.6": - version: 18.2.6 - resolution: "@types/react-dom@npm:18.2.6" - dependencies: - "@types/react": "*" - checksum: b56e42efab121a3a8013d2eb8c1688e6028a25ea6d33c4362d2846f0af3760b164b4d7c34846614024cfb8956cca70dd1743487f152e32ff89a00fe6fbd2be54 - languageName: node - linkType: hard - "@types/react-dom@npm:^18.0.0": version: 18.2.7 resolution: "@types/react-dom@npm:18.2.7" @@ -4368,17 +4349,6 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:18.2.14": - version: 18.2.14 - resolution: "@types/react@npm:18.2.14" - dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" - csstype: ^3.0.2 - checksum: a6a5e8cc78f486b9020d1ad009aa6c56943c68c7c6376e0f8399e9cbcd950b7b8f5d73f00200f5379f5e58d31d57d8aed24357f301d8e86108cd438ce6c8b3dd - languageName: node - linkType: hard - "@types/redux-mock-store@npm:1.0.3": version: 1.0.3 resolution: "@types/redux-mock-store@npm:1.0.3" @@ -17686,7 +17656,6 @@ __metadata: "@types/caniuse-lite": ^1.0.1 "@types/classnames": 2.3.1 "@types/dexie-batch": 0.4.3 - "@types/eslint": 8.37.0 "@types/fs-extra": 11.0.1 "@types/generate-changelog": 1.8.1 "@types/highlight.js": 10.1.0 @@ -17703,8 +17672,6 @@ __metadata: "@types/open-graph": 0.2.2 "@types/platform": 1.3.4 "@types/prettier": ^2.7.3 - "@types/react": 18.2.14 - "@types/react-dom": 18.2.6 "@types/react-redux": 7.1.25 "@types/react-transition-group": 4.4.6 "@types/redux-mock-store": 1.0.3 From 22804e11546fdc1e37e6f9afc3889cf919deb5c4 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Mon, 7 Aug 2023 17:55:32 +0200 Subject: [PATCH 16/95] feat: Conversations shields --- src/script/components/AvailabilityState.tsx | 5 + src/script/components/Badges/Badges.tsx | 121 ++++++++++++++++++ src/script/components/Badges/index.ts | 20 +++ src/script/components/TitleBar/TitleBar.tsx | 3 + .../components/UserListItem/UserListItem.tsx | 2 + src/script/components/panel/UserDetails.tsx | 1 + .../panels/Conversations/Conversations.tsx | 1 + .../ConversationDetailsHeader.tsx | 3 + src/style/components/availability-state.less | 4 + src/style/content/conversation/title-bar.less | 4 + src/style/panel/conversation-details.less | 4 + 11 files changed, 168 insertions(+) create mode 100644 src/script/components/Badges/Badges.tsx create mode 100644 src/script/components/Badges/index.ts diff --git a/src/script/components/AvailabilityState.tsx b/src/script/components/AvailabilityState.tsx index f9c61c9d5ee..f683802b749 100644 --- a/src/script/components/AvailabilityState.tsx +++ b/src/script/components/AvailabilityState.tsx @@ -24,6 +24,7 @@ import cx from 'classnames'; import {Availability} from '@wireapp/protocol-messaging'; +import {Badges} from 'Components/Badges'; import {CSS_SQUARE} from 'Util/CSSMixin'; import {KEY} from 'Util/KeyboardUtil'; @@ -38,6 +39,7 @@ export interface AvailabilityStateProps { onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void; showArrow?: boolean; theme?: boolean; + showBadges?: boolean; } const iconStyles: CSSObject = { @@ -63,6 +65,7 @@ const AvailabilityState: React.FC = ({ showArrow = false, theme = false, onClick, + showBadges = false, }) => { const isAvailable = availability === Availability.Type.AVAILABLE; const isAway = availability === Availability.Type.AWAY; @@ -125,6 +128,8 @@ const AvailabilityState: React.FC = ({ )} + {showBadges && } + {showArrow && ( ({ + color: isMLSConversation ? 'var(--green-500)' : 'var(--blue-500)', + fontSize: '12px', + lineHeight: '14px', + marginRight: '4px', +}); + +export const Badges: React.FC = ({ + conversationProtocol = 'MLS', + displayBothProtocolBadges = false, + displayBadgeTitle = false, +}) => { + const isMLSConversation = conversationProtocol === 'MLS'; + const isProteusConversation = conversationProtocol === 'PROTEUS'; + + const isExpired = false; + const isNotDownloaded = false; + const isExpiresSoon = false; + + return ( +
+ {(displayBothProtocolBadges || isMLSConversation) && ( +
+ {displayBadgeTitle && Verified (End-to-end Identity)} + {!isExpired && !isNotDownloaded && !isExpiresSoon && ( + + + + )} + + {isExpiresSoon && ( + + + + )} + + {isExpired && ( + + + + )} + + {isNotDownloaded && ( + + + + )} +
+ )} + + {(displayBothProtocolBadges || isProteusConversation) && ( +
+ {displayBadgeTitle && Verified (Proteus)} + + + + +
+ )} +
+ ); +}; diff --git a/src/script/components/Badges/index.ts b/src/script/components/Badges/index.ts new file mode 100644 index 00000000000..12ce8d5888a --- /dev/null +++ b/src/script/components/Badges/index.ts @@ -0,0 +1,20 @@ +/* + * Wire + * Copyright (C) 2022 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export * from './Badges'; diff --git a/src/script/components/TitleBar/TitleBar.tsx b/src/script/components/TitleBar/TitleBar.tsx index a4c3e82d351..ed9ba1a4a12 100644 --- a/src/script/components/TitleBar/TitleBar.tsx +++ b/src/script/components/TitleBar/TitleBar.tsx @@ -27,6 +27,7 @@ import {container} from 'tsyringe'; import {IconButton, IconButtonVariant, useMatchMedia} from '@wireapp/react-ui-kit'; import {WebAppEvents} from '@wireapp/webapp-events'; +import {Badges} from 'Components/Badges'; import {useCallAlertState} from 'Components/calling/useCallAlertState'; import {Icon} from 'Components/Icon'; import {LegalHoldDot} from 'Components/LegalHoldDot'; @@ -276,6 +277,8 @@ export const TitleBar: React.FC = ({ {displayName} + +
{conversationSubtitle &&
{conversationSubtitle}
} diff --git a/src/script/components/UserList/components/UserListItem/UserListItem.tsx b/src/script/components/UserList/components/UserListItem/UserListItem.tsx index fc9d7cecbde..02ace8b05b7 100644 --- a/src/script/components/UserList/components/UserListItem/UserListItem.tsx +++ b/src/script/components/UserList/components/UserListItem/UserListItem.tsx @@ -133,6 +133,8 @@ const UserListItem = ({ verified: isSelfVerified && isVerified, }} /> + +
here
); }; diff --git a/src/script/components/panel/UserDetails.tsx b/src/script/components/panel/UserDetails.tsx index 4a90e338fc6..26efb0ae417 100644 --- a/src/script/components/panel/UserDetails.tsx +++ b/src/script/components/panel/UserDetails.tsx @@ -82,6 +82,7 @@ export const UserDetailsComponent: React.FC = ({ availability={user.availability} label={user.name} dataUieName="status-name" + showBadges /> ) : (

= ({ availability={userAvailability} dataUieName="status-availability" label={userName} + showBadges /> diff --git a/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx b/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx index 66e8809114b..addc74ad4b0 100644 --- a/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx +++ b/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx @@ -19,6 +19,7 @@ import {ChangeEvent, FC, KeyboardEvent, useEffect, useRef, useState} from 'react'; +import {Badges} from 'Components/Badges'; import {Icon} from 'Components/Icon'; import {isEnterKey} from 'Util/KeyboardUtil'; import {t} from 'Util/LocalizerUtil'; @@ -146,6 +147,8 @@ const ConversationDetailsHeader: FC = ({ data-uie-name="enter-name" /> )} + + ) : (
diff --git a/src/style/components/availability-state.less b/src/style/components/availability-state.less index 474711da7fe..e25f58600b1 100644 --- a/src/style/components/availability-state.less +++ b/src/style/components/availability-state.less @@ -20,4 +20,8 @@ .availability-state { display: flex; align-items: center; + + .conversation-badges { + margin-left: 4px; + } } diff --git a/src/style/content/conversation/title-bar.less b/src/style/content/conversation/title-bar.less index 8660cb6d40b..c1a3897a2af 100644 --- a/src/style/content/conversation/title-bar.less +++ b/src/style/content/conversation/title-bar.less @@ -119,6 +119,10 @@ body.theme-dark { .flex-center; display: flex; } + + + .conversation-badges { + margin-left: 4px; + } } .conversation-title-bar-name--subtitle { diff --git a/src/style/panel/conversation-details.less b/src/style/panel/conversation-details.less index 3d43775fccb..1c9244204cb 100644 --- a/src/style/panel/conversation-details.less +++ b/src/style/panel/conversation-details.less @@ -32,6 +32,10 @@ &__header { padding: 0 16px; + + .conversation-badges { + margin-top: 6px; + } } &__flex-row { From c30f9ab1b58e58864e681bfb22446199fe47dcbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Wed, 9 Aug 2023 15:48:17 +0200 Subject: [PATCH 17/95] feat: clear uri from redirect valuesw --- src/script/util/E2EIdentity/E2EIdentity.ts | 6 ++-- src/script/util/E2EIdentity/helper/uri.ts | 22 ++++++++++++++ yarn.lock | 35 +++++++--------------- 3 files changed, 36 insertions(+), 27 deletions(-) create mode 100644 src/script/util/E2EIdentity/helper/uri.ts diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/util/E2EIdentity/E2EIdentity.ts index ad3f1898845..eef806c6f27 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.ts @@ -28,6 +28,7 @@ import {UserState} from 'src/script/user/UserState'; import {supportsMLS} from 'Util/util'; import {GracePeriodTimer} from './DelayTimer'; +import {removeUrlParameters} from './helper/uri'; import {getModalOptions, ModalType} from './Modals'; export enum E2EIHandlerStep { @@ -130,7 +131,9 @@ class E2EIHandler { this.currentStep = E2EIHandlerStep.SUCCESS; this.showSuccessMessage(); - } catch (e) { + // Remove the url parameters after enrollment + removeUrlParameters(); + } catch (error) { this.currentStep = E2EIHandlerStep.ERROR; setTimeout(() => { removeCurrentModal(); @@ -187,7 +190,6 @@ class E2EIHandler { private showE2EINotificationMessage(): void { // If the user has already started enrollment, don't show the notification. Instead, show the loading modal // This will occur after the redirect from the oauth provider - console.log('showE2EINotificationMessage'); if (AcmeStorage.hasHandle()) { this.showLoadingMessage(); void this.enrollE2EI(); diff --git a/src/script/util/E2EIdentity/helper/uri.ts b/src/script/util/E2EIdentity/helper/uri.ts new file mode 100644 index 00000000000..474dba7151b --- /dev/null +++ b/src/script/util/E2EIdentity/helper/uri.ts @@ -0,0 +1,22 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export const removeUrlParameters = () => { + location.replace(`${location.origin}/${location.hash}`); +}; diff --git a/yarn.lock b/yarn.lock index 1281aff6784..f23a43bdec8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4800,21 +4800,21 @@ __metadata: linkType: hard "@wireapp/api-client@npm:^24.19.0": - version: 24.20.0 - resolution: "@wireapp/api-client@npm:24.20.0" + version: 24.20.2 + resolution: "@wireapp/api-client@npm:24.20.2" dependencies: "@wireapp/commons": ^5.1.0 "@wireapp/priority-queue": ^2.1.1 "@wireapp/protocol-messaging": 1.44.0 axios: 1.4.0 - axios-retry: 3.5.1 + axios-retry: 3.6.0 http-status-codes: 2.2.0 logdown: 3.3.1 reconnecting-websocket: 4.4.0 spark-md5: 3.0.2 tough-cookie: 4.1.3 - ws: 8.11.0 - checksum: dcdaa28423d4085fbd70ba3eb8c8fe5127afbf25212e57b2b402f939f81d578a02baaf47e1e6de7873391a90dd7e624d637fddb09fd285db8b3e8272975fb4a4 + ws: 8.13.0 + checksum: 2c7dab29e72246d42d964b67cf04a0517855b2964b604b6ff978a805f613b520c5d43a4ddf81d555332f52bb8961e091696b3bab68637cdd64b61c05736ed6ae languageName: node linkType: hard @@ -5727,13 +5727,13 @@ __metadata: languageName: node linkType: hard -"axios-retry@npm:3.5.1": - version: 3.5.1 - resolution: "axios-retry@npm:3.5.1" +"axios-retry@npm:3.6.0": + version: 3.6.0 + resolution: "axios-retry@npm:3.6.0" dependencies: "@babel/runtime": ^7.15.4 is-retry-allowed: ^2.2.0 - checksum: ff1690a635c74b45a0ff60b2608d36bae82ea23660a2571dea918c79242fd88cc0332ba9757810bfac398c947a950299078cef2bc2b08807c27c6ffe069aad4a + checksum: 9ed0879453170a55960dea21116e7f732f1e78acb72eb49d80b1620583814d94bda78200d0767bae82d37cc2ab80752f0aec49717ce4b141858059c0c6b9921c languageName: node linkType: hard @@ -18102,22 +18102,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.11.0": - version: 8.11.0 - resolution: "ws@npm:8.11.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 316b33aba32f317cd217df66dbfc5b281a2f09ff36815de222bc859e3424d83766d9eb2bd4d667de658b6ab7be151f258318fb1da812416b30be13103e5b5c67 - languageName: node - linkType: hard - -"ws@npm:^8.11.0": +"ws@npm:8.13.0, ws@npm:^8.11.0": version: 8.13.0 resolution: "ws@npm:8.13.0" peerDependencies: From 05eeece9567727f06340ef364e92f3dfaa67d8c1 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Fri, 11 Aug 2023 10:57:45 +0200 Subject: [PATCH 18/95] Prepare shields --- package.json | 2 +- src/script/components/AvailabilityState.tsx | 9 ++- src/script/components/Badges/Badges.tsx | 70 +++++++++++++------ .../Badges/Icons/CertificateExpiredIcon.tsx | 36 ++++++++++ .../Badges/Icons/CertificateExpired_Icon.svg | 5 ++ .../Badges/Icons/CertificateRevokedIcon.tsx | 33 +++++++++ .../Badges/Icons/CertificateRevoked_Icon.svg | 3 + .../Badges/Icons/ExpiresSoonIcon.tsx | 43 ++++++++++++ .../Badges/Icons/ExpiresSoon_Icon.svg | 4 ++ .../Badges/Icons/MLSVerifiedIcon.tsx | 33 +++++++++ .../Badges/Icons/MLSVerified_Icon.svg | 3 + .../Badges/Icons/ProteusVerifiedIcon.tsx | 39 +++++++++++ .../Badges/Icons/ProteusVerified_Icon.svg | 4 ++ .../ParticipantItemContent.tsx | 24 +++++-- .../ServiceListItem/ServiceListItem.tsx | 2 +- src/script/components/TitleBar/TitleBar.tsx | 13 ++-- .../components/UserListItem/UserListItem.tsx | 13 ++-- src/script/components/panel/UserDetails.tsx | 13 ++-- .../components/userDevices/DeviceCard.tsx | 12 +++- .../panels/preferences/AccountPreferences.tsx | 45 ++++++------ .../AvailabilityButtons.tsx | 1 + .../ConversationDetails.tsx | 1 + .../ConversationDetailsHeader.tsx | 6 +- src/style/components/device-card.less | 11 +++ src/style/content/preferences.less | 8 +++ src/style/content/preferences/account.less | 17 ++++- yarn.lock | 20 +++--- 27 files changed, 385 insertions(+), 85 deletions(-) create mode 100644 src/script/components/Badges/Icons/CertificateExpiredIcon.tsx create mode 100644 src/script/components/Badges/Icons/CertificateExpired_Icon.svg create mode 100644 src/script/components/Badges/Icons/CertificateRevokedIcon.tsx create mode 100644 src/script/components/Badges/Icons/CertificateRevoked_Icon.svg create mode 100644 src/script/components/Badges/Icons/ExpiresSoonIcon.tsx create mode 100644 src/script/components/Badges/Icons/ExpiresSoon_Icon.svg create mode 100644 src/script/components/Badges/Icons/MLSVerifiedIcon.tsx create mode 100644 src/script/components/Badges/Icons/MLSVerified_Icon.svg create mode 100644 src/script/components/Badges/Icons/ProteusVerifiedIcon.tsx create mode 100644 src/script/components/Badges/Icons/ProteusVerified_Icon.svg diff --git a/package.json b/package.json index d91d7a751cf..9e20a5081ce 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@wireapp/avs": "9.3.7", "@wireapp/core": "40.7.0", "@wireapp/lru-cache": "3.8.1", - "@wireapp/react-ui-kit": "9.7.6", + "@wireapp/react-ui-kit": "9.7.8", "@wireapp/store-engine-dexie": "2.1.1", "@wireapp/store-engine-sqleet": "1.8.9", "@wireapp/webapp-events": "0.17.0", diff --git a/src/script/components/AvailabilityState.tsx b/src/script/components/AvailabilityState.tsx index f683802b749..c41050d558d 100644 --- a/src/script/components/AvailabilityState.tsx +++ b/src/script/components/AvailabilityState.tsx @@ -25,6 +25,7 @@ import cx from 'classnames'; import {Availability} from '@wireapp/protocol-messaging'; import {Badges} from 'Components/Badges'; +import {selfIndicator} from 'Components/ParticipantItemContent/ParticipantItem.styles'; import {CSS_SQUARE} from 'Util/CSSMixin'; import {KEY} from 'Util/KeyboardUtil'; @@ -35,11 +36,13 @@ export interface AvailabilityStateProps { className?: string; dataUieName: string; label: string; + selfString?: string; title?: string; onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void; showArrow?: boolean; theme?: boolean; showBadges?: boolean; + isProteusVerified?: boolean; } const iconStyles: CSSObject = { @@ -61,11 +64,13 @@ const AvailabilityState: React.FC = ({ className, dataUieName, label, + selfString, title, showArrow = false, theme = false, onClick, showBadges = false, + isProteusVerified = false, }) => { const isAvailable = availability === Availability.Type.AVAILABLE; const isAway = availability === Availability.Type.AWAY; @@ -128,7 +133,9 @@ const AvailabilityState: React.FC = ({ )} - {showBadges && } + {selfString && {selfString}} + + {showBadges && } {showArrow && ( ({ }); export const Badges: React.FC = ({ - conversationProtocol = 'MLS', - displayBothProtocolBadges = false, - displayBadgeTitle = false, + conversationProtocol, + isMLSVerified = false, + isProteusVerified = false, + MLSStatus, + displayTitle = false, }) => { - const isMLSConversation = conversationProtocol === 'MLS'; - const isProteusConversation = conversationProtocol === 'PROTEUS'; + if (!isMLSVerified && !isProteusVerified) { + return null; + } + + const isExpired = MLSStatus === MLSStatues.EXPIRED; + const isNotDownloaded = MLSStatus === MLSStatues.NOT_DOWNLOADED; + const isExpiresSoon = MLSStatus === MLSStatues.EXPIRES_SOON; - const isExpired = false; - const isNotDownloaded = false; - const isExpiresSoon = false; + const conversationHasProtocol = !!conversationProtocol; + + const showMLSBadge = conversationHasProtocol + ? conversationProtocol === ConversationProtocol.MLS && isMLSVerified + : isMLSVerified; + + const showProteusBadge = conversationHasProtocol + ? conversationProtocol === ConversationProtocol.PROTEUS && isProteusVerified + : isProteusVerified; return (
- {(displayBothProtocolBadges || isMLSConversation) && ( + {showMLSBadge && (
- {displayBadgeTitle && Verified (End-to-end Identity)} + {displayTitle && Verified (End-to-end Identity)} + {!isExpired && !isNotDownloaded && !isExpiresSoon && ( - + )} @@ -77,7 +105,7 @@ export const Badges: React.FC = ({ data-tooltip="End-to-end identity certificate expires soon" style={iconStyles} > - + )} @@ -87,7 +115,7 @@ export const Badges: React.FC = ({ data-tooltip="End-to-end identity certificate expired" style={iconStyles} > - + )} @@ -97,22 +125,22 @@ export const Badges: React.FC = ({ data-tooltip="End-to-end identity certificate revoked" style={iconStyles} > - + )}
)} - {(displayBothProtocolBadges || isProteusConversation) && ( + {showProteusBadge && (
- {displayBadgeTitle && Verified (Proteus)} + {displayTitle && Verified (Proteus)} - +
)} diff --git a/src/script/components/Badges/Icons/CertificateExpiredIcon.tsx b/src/script/components/Badges/Icons/CertificateExpiredIcon.tsx new file mode 100644 index 00000000000..72b0a24664e --- /dev/null +++ b/src/script/components/Badges/Icons/CertificateExpiredIcon.tsx @@ -0,0 +1,36 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {SVGIcon} from '@wireapp/react-ui-kit/lib/Icon/SVGIcon'; + +interface SVGIconProps {} + +export const CertificateExpiredIcon = (props: SVGIconProps) => ( + + + + + +); diff --git a/src/script/components/Badges/Icons/CertificateExpired_Icon.svg b/src/script/components/Badges/Icons/CertificateExpired_Icon.svg new file mode 100644 index 00000000000..69314c06e2f --- /dev/null +++ b/src/script/components/Badges/Icons/CertificateExpired_Icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/script/components/Badges/Icons/CertificateRevokedIcon.tsx b/src/script/components/Badges/Icons/CertificateRevokedIcon.tsx new file mode 100644 index 00000000000..551e909c12c --- /dev/null +++ b/src/script/components/Badges/Icons/CertificateRevokedIcon.tsx @@ -0,0 +1,33 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {SVGIcon} from '@wireapp/react-ui-kit/lib/Icon/SVGIcon'; + +interface SVGIconProps {} + +export const CertificateRevokedIcon = (props: SVGIconProps) => ( + + + +); diff --git a/src/script/components/Badges/Icons/CertificateRevoked_Icon.svg b/src/script/components/Badges/Icons/CertificateRevoked_Icon.svg new file mode 100644 index 00000000000..91b3fb64b9c --- /dev/null +++ b/src/script/components/Badges/Icons/CertificateRevoked_Icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/script/components/Badges/Icons/ExpiresSoonIcon.tsx b/src/script/components/Badges/Icons/ExpiresSoonIcon.tsx new file mode 100644 index 00000000000..9fd9e12373e --- /dev/null +++ b/src/script/components/Badges/Icons/ExpiresSoonIcon.tsx @@ -0,0 +1,43 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {SVGIcon} from '@wireapp/react-ui-kit/lib/Icon/SVGIcon'; + +interface SVGIconProps {} + +export const ExpiresSoonIcon = (props: SVGIconProps) => ( + + + + +); diff --git a/src/script/components/Badges/Icons/ExpiresSoon_Icon.svg b/src/script/components/Badges/Icons/ExpiresSoon_Icon.svg new file mode 100644 index 00000000000..524575d0b85 --- /dev/null +++ b/src/script/components/Badges/Icons/ExpiresSoon_Icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/script/components/Badges/Icons/MLSVerifiedIcon.tsx b/src/script/components/Badges/Icons/MLSVerifiedIcon.tsx new file mode 100644 index 00000000000..ecf43749d91 --- /dev/null +++ b/src/script/components/Badges/Icons/MLSVerifiedIcon.tsx @@ -0,0 +1,33 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {SVGIcon} from '@wireapp/react-ui-kit/lib/Icon/SVGIcon'; + +interface SVGIconProps {} + +export const MLSVerifiedIcon = (props: SVGIconProps) => ( + + + +); diff --git a/src/script/components/Badges/Icons/MLSVerified_Icon.svg b/src/script/components/Badges/Icons/MLSVerified_Icon.svg new file mode 100644 index 00000000000..7edb15427dc --- /dev/null +++ b/src/script/components/Badges/Icons/MLSVerified_Icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/script/components/Badges/Icons/ProteusVerifiedIcon.tsx b/src/script/components/Badges/Icons/ProteusVerifiedIcon.tsx new file mode 100644 index 00000000000..0c2a876a5c7 --- /dev/null +++ b/src/script/components/Badges/Icons/ProteusVerifiedIcon.tsx @@ -0,0 +1,39 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {SVGIcon} from '@wireapp/react-ui-kit/lib/Icon/SVGIcon'; + +interface SVGIconProps {} + +export const ProteusVerifiedIcon = (props: SVGIconProps) => ( + + + + +); diff --git a/src/script/components/Badges/Icons/ProteusVerified_Icon.svg b/src/script/components/Badges/Icons/ProteusVerified_Icon.svg new file mode 100644 index 00000000000..f0c54d48706 --- /dev/null +++ b/src/script/components/Badges/Icons/ProteusVerified_Icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/script/components/ParticipantItemContent/ParticipantItemContent.tsx b/src/script/components/ParticipantItemContent/ParticipantItemContent.tsx index 44c566c235d..755dea0d371 100644 --- a/src/script/components/ParticipantItemContent/ParticipantItemContent.tsx +++ b/src/script/components/ParticipantItemContent/ParticipantItemContent.tsx @@ -22,6 +22,7 @@ import React from 'react'; import {Availability} from '@wireapp/protocol-messaging'; import {AvailabilityState} from 'Components/AvailabilityState'; +import {Badges} from 'Components/Badges'; import {Icon} from 'Components/Icon'; import { @@ -47,6 +48,9 @@ export interface ParticipantItemContentProps { showArrow?: boolean; onDropdownClick?: (event: React.MouseEvent) => void; showAvailabilityState?: boolean; + isService?: boolean; + isSelectable?: boolean; + isProteusVerified?: boolean; } export const ParticipantItemContent = ({ @@ -58,6 +62,9 @@ export const ParticipantItemContent = ({ hasUsernameInfo = false, showArrow = false, showAvailabilityState = false, + isService = false, + isSelectable = false, + isProteusVerified = false, }: ParticipantItemContentProps) => { return (
@@ -69,14 +76,21 @@ export const ParticipantItemContent = ({ css={[userName, userAvailability, ellipsis]} dataUieName="status-name" label={name} + selfString={selfString} + showBadges={!isService && !isSelectable} + isProteusVerified={isProteusVerified} /> ) : ( -
- {name} -
- )} + <> +
+ {name} + + {selfString && {selfString}} +
- {selfString &&
{selfString}
} + {!isService && !isSelectable && } + + )}
{shortDescription && ( diff --git a/src/script/components/ServiceList/components/ServiceListItem/ServiceListItem.tsx b/src/script/components/ServiceList/components/ServiceListItem/ServiceListItem.tsx index 56242784325..78681ccc0ad 100644 --- a/src/script/components/ServiceList/components/ServiceListItem/ServiceListItem.tsx +++ b/src/script/components/ServiceList/components/ServiceListItem/ServiceListItem.tsx @@ -53,7 +53,7 @@ export const ServiceListItem = ({service, onClick}: ServiceListItemProps) => {
); diff --git a/src/script/components/TitleBar/TitleBar.tsx b/src/script/components/TitleBar/TitleBar.tsx index ed9ba1a4a12..557c89a4725 100644 --- a/src/script/components/TitleBar/TitleBar.tsx +++ b/src/script/components/TitleBar/TitleBar.tsx @@ -267,18 +267,15 @@ export const TitleBar: React.FC = ({ /> )} - {verificationState === ConversationVerificationState.VERIFIED && ( - - )} - {displayName} - +
{conversationSubtitle &&
{conversationSubtitle}
} diff --git a/src/script/components/UserList/components/UserListItem/UserListItem.tsx b/src/script/components/UserList/components/UserListItem/UserListItem.tsx index 02ace8b05b7..29234987bc7 100644 --- a/src/script/components/UserList/components/UserListItem/UserListItem.tsx +++ b/src/script/components/UserList/components/UserListItem/UserListItem.tsx @@ -52,6 +52,10 @@ export interface UserListItemProps { showArrow: boolean; } +interface RenderParticipantProps { + isSelectable?: boolean; +} + const UserListItem = ({ canSelect, customInfo, @@ -110,7 +114,7 @@ const UserListItem = ({ const contentInfoText = getContentInfoText(); - const RenderParticipant = () => { + const RenderParticipant = ({isSelectable = false}: RenderParticipantProps) => { return (
); }; @@ -161,7 +164,7 @@ const UserListItem = ({ >
- +
diff --git a/src/script/components/panel/UserDetails.tsx b/src/script/components/panel/UserDetails.tsx index 26efb0ae417..eca7a6e9ebd 100644 --- a/src/script/components/panel/UserDetails.tsx +++ b/src/script/components/panel/UserDetails.tsx @@ -83,6 +83,7 @@ export const UserDetailsComponent: React.FC = ({ label={user.name} dataUieName="status-name" showBadges + isProteusVerified={isSelfVerified && user.is_verified} /> ) : (

= ({

)} - {isSelfVerified && user.is_verified && ( - - )} + {/*{isSelfVerified && user.is_verified && (*/} + {/* */} + {/*)}*/}

{participant.handle && ( diff --git a/src/script/components/userDevices/DeviceCard.tsx b/src/script/components/userDevices/DeviceCard.tsx index 86abd62036f..6b048927243 100644 --- a/src/script/components/userDevices/DeviceCard.tsx +++ b/src/script/components/userDevices/DeviceCard.tsx @@ -22,6 +22,7 @@ import React from 'react'; import {ClientClassification} from '@wireapp/api-client/lib/client'; import cx from 'classnames'; +import {Badges} from 'Components/Badges'; import {DeviceId} from 'Components/DeviceId'; import {useMessageFocusedTabIndex} from 'Components/MessagesList/Message/util'; import {handleKeyDown} from 'Util/KeyboardUtil'; @@ -30,7 +31,6 @@ import {t} from 'Util/LocalizerUtil'; import type {ClientEntity} from '../../client/ClientEntity'; import {Icon} from '../Icon'; import {LegalHoldDot} from '../LegalHoldDot'; -import {VerifiedIcon} from '../VerifiedIcon'; export interface DeviceCardProps { click?: (device: ClientEntity) => void; @@ -76,20 +76,26 @@ const DeviceCard: React.FC = ({ dataUieName="status-legal-hold-device" /> )} + {showDesktopIcon && } {showMobileIcon && } +
-
+
{name} + + {showVerified && }
+

{t('preferencesDevicesId')} +

- {showVerified && } + {clickable && }
); diff --git a/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx b/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx index de599cbd58d..411f09d9416 100644 --- a/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx @@ -24,6 +24,7 @@ import {container} from 'tsyringe'; import {Runtime} from '@wireapp/commons'; +import {Badges} from 'Components/Badges'; import {ErrorFallback} from 'Components/ErrorFallback'; import {PrimaryModal} from 'Components/Modals/PrimaryModal'; import {useEnrichedFields} from 'Components/panel/EnrichedFields'; @@ -90,14 +91,24 @@ const AccountPreferences: React.FC = ({ }) => { const {self: selfUser, isActivatedAccount} = useKoSubscribableChildren(userState, ['self', 'isActivatedAccount']); const {isTeam, teamName} = useKoSubscribableChildren(teamState, ['isTeam', 'teamName']); - const {name, email, availability, username, managedBy, phone} = useKoSubscribableChildren(selfUser, [ + const { + name, + email, + availability, + username, + managedBy, + phone, + is_verified: isVerified, + } = useKoSubscribableChildren(selfUser, [ 'name', 'email', 'availability', 'username', 'managedBy', 'phone', + 'is_verified', ]); + const canEditProfile = managedBy === User.CONFIG.MANAGED_BY.WIRE; const isDesktop = Runtime.isDesktopApp(); const isTemporaryAndNonPersistent = useRef(isTemporaryClientAndNonPersistent(loadValue(StorageKey.AUTH.PERSIST))); @@ -135,26 +146,16 @@ const AccountPreferences: React.FC = ({ return ( -
-

- {name} -

- -
+
+
+

+ {name} +

+ + +
+ +
@@ -163,7 +164,7 @@ const AccountPreferences: React.FC = ({ {isActivatedAccount && isTeam && } {isActivatedAccount && ( -
+
userRepository.changeAccentColor(id)} />
)} diff --git a/src/script/page/MainContent/panels/preferences/accountPreferences/AvailabilityButtons.tsx b/src/script/page/MainContent/panels/preferences/accountPreferences/AvailabilityButtons.tsx index 4ad1ec90290..754ba4615c2 100644 --- a/src/script/page/MainContent/panels/preferences/accountPreferences/AvailabilityButtons.tsx +++ b/src/script/page/MainContent/panels/preferences/accountPreferences/AvailabilityButtons.tsx @@ -48,6 +48,7 @@ const headerStyles: CSSObject = { lineHeight: '0.875rem', margin: '37px 0 6px', padding: 0, + textAlign: 'center', }; const AvailabilityButtons: React.FC = ({availability}) => { diff --git a/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx b/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx index 0f11cb26f23..982b8b9ea63 100644 --- a/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx +++ b/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx @@ -332,6 +332,7 @@ const ConversationDetails = forwardRef serviceParticipants={serviceParticipants} allUsersCount={allUsersCount} isTeam={isTeam} + conversationProtocol={activeConversation.protocol} /> {showTopActions && showActionAddParticipants && ( diff --git a/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx b/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx index addc74ad4b0..af83b0849e9 100644 --- a/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx +++ b/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx @@ -19,6 +19,8 @@ import {ChangeEvent, FC, KeyboardEvent, useEffect, useRef, useState} from 'react'; +import {ConversationProtocol} from '@wireapp/api-client/lib/conversation'; + import {Badges} from 'Components/Badges'; import {Icon} from 'Components/Icon'; import {isEnterKey} from 'Util/KeyboardUtil'; @@ -40,6 +42,7 @@ interface ConversationDetailsHeaderProps { serviceParticipants: ServiceEntity[]; allUsersCount: number; isTeam?: boolean; + conversationProtocol?: ConversationProtocol; } const ConversationDetailsHeader: FC = ({ @@ -52,6 +55,7 @@ const ConversationDetailsHeader: FC = ({ serviceParticipants, allUsersCount, isTeam = false, + conversationProtocol, }) => { const textAreaRef = useRef(null); const isEditGroupNameTouched = useRef(false); @@ -148,7 +152,7 @@ const ConversationDetailsHeader: FC = ({ /> )} - + ) : (
diff --git a/src/style/components/device-card.less b/src/style/components/device-card.less index a7868e711ed..d9dfa83d08e 100644 --- a/src/style/components/device-card.less +++ b/src/style/components/device-card.less @@ -51,6 +51,17 @@ device-card, line-height: @line-height-sm; } + &__name { + .label-xs; + + display: flex; + align-items: center; + + .conversation-badges { + margin-left: 4px; + } + } + &__label, &__model { font-weight: @font-weight-bold; diff --git a/src/style/content/preferences.less b/src/style/content/preferences.less index 3273dbb6a44..754e64cc1b4 100644 --- a/src/style/content/preferences.less +++ b/src/style/content/preferences.less @@ -215,3 +215,11 @@ body.theme-dark { .preferences-history-restore-button { margin-top: 20px; } + +.preferences-wrapper { + width: var(--preferences-width); + + .buttons-group { + justify-content: center; + } +} diff --git a/src/style/content/preferences/account.less b/src/style/content/preferences/account.less index a5b23ea0532..7803cd36244 100644 --- a/src/style/content/preferences/account.less +++ b/src/style/content/preferences/account.less @@ -212,7 +212,14 @@ } .preferences-account-name { - font-weight: @font-weight-bold; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 16px; + + .conversation-badges { + margin-left: 4px; + } } .preferences-account-username-atsign { @@ -232,3 +239,11 @@ cursor: pointer; } + +.preferences-account-image { + text-align: center; +} + +.preferences-accent-color-picker { + text-align: center; +} diff --git a/yarn.lock b/yarn.lock index 1281aff6784..8838f80fbfe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4999,14 +4999,14 @@ __metadata: languageName: node linkType: hard -"@wireapp/react-ui-kit@npm:9.7.6": - version: 9.7.6 - resolution: "@wireapp/react-ui-kit@npm:9.7.6" +"@wireapp/react-ui-kit@npm:9.7.8": + version: 9.7.8 + resolution: "@wireapp/react-ui-kit@npm:9.7.8" dependencies: "@types/color": 3.0.3 color: 4.2.3 emotion-normalize: 11.0.1 - react-select: 5.7.3 + react-select: 5.7.4 react-transition-group: 4.4.5 peerDependencies: "@emotion/react": 11.10.4 @@ -5016,7 +5016,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 1cab9a374d5792d88c337f43663f184b983d3f0004d7712422f466f236be9aff4878b7a3e116e12a4d3211b9cf4575a6c9429ab56e3a1b3d30f62152b43db4ee + checksum: bfc5ba99629e612f13f652c43199e02d2dbbdb89501eb750f3f0e4c4cee110b4708cd8b5d083ecf7b7ba96c56b494d5c88c12d5018e273b98050812169ae3caf languageName: node linkType: hard @@ -14665,9 +14665,9 @@ __metadata: languageName: node linkType: hard -"react-select@npm:5.7.3": - version: 5.7.3 - resolution: "react-select@npm:5.7.3" +"react-select@npm:5.7.4": + version: 5.7.4 + resolution: "react-select@npm:5.7.4" dependencies: "@babel/runtime": ^7.12.0 "@emotion/cache": ^11.4.0 @@ -14681,7 +14681,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 9ffa75afb395e7077076521c529611494164ace0c6b1ceb249406991ac668947cfd0424812c15c2a45c792bb2794b22f2df93c4c2f2515962b7dfc7c91b029ec + checksum: ca72941ad1d2c578ec04c09ed3deb7e373f987e589f403fadedc6fcc3e29935b5425ec4d2628f0fe58c21319bcaf153c0d0172432e09fc6423da869d848de757 languageName: node linkType: hard @@ -17689,7 +17689,7 @@ __metadata: "@wireapp/eslint-config": 2.2.2 "@wireapp/lru-cache": 3.8.1 "@wireapp/prettier-config": 0.6.0 - "@wireapp/react-ui-kit": 9.7.6 + "@wireapp/react-ui-kit": 9.7.8 "@wireapp/store-engine": ^5.1.1 "@wireapp/store-engine-dexie": 2.1.1 "@wireapp/store-engine-sqleet": 1.8.9 From b10fde0271bd24ee116d22b35fd6849b8ac7309d Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Fri, 11 Aug 2023 11:13:25 +0200 Subject: [PATCH 19/95] remove unused files --- .../components/Badges/Icons/CertificateExpired_Icon.svg | 5 ----- .../components/Badges/Icons/CertificateRevoked_Icon.svg | 3 --- src/script/components/Badges/Icons/ExpiresSoon_Icon.svg | 4 ---- src/script/components/Badges/Icons/MLSVerified_Icon.svg | 3 --- src/script/components/Badges/Icons/ProteusVerified_Icon.svg | 4 ---- 5 files changed, 19 deletions(-) delete mode 100644 src/script/components/Badges/Icons/CertificateExpired_Icon.svg delete mode 100644 src/script/components/Badges/Icons/CertificateRevoked_Icon.svg delete mode 100644 src/script/components/Badges/Icons/ExpiresSoon_Icon.svg delete mode 100644 src/script/components/Badges/Icons/MLSVerified_Icon.svg delete mode 100644 src/script/components/Badges/Icons/ProteusVerified_Icon.svg diff --git a/src/script/components/Badges/Icons/CertificateExpired_Icon.svg b/src/script/components/Badges/Icons/CertificateExpired_Icon.svg deleted file mode 100644 index 69314c06e2f..00000000000 --- a/src/script/components/Badges/Icons/CertificateExpired_Icon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/script/components/Badges/Icons/CertificateRevoked_Icon.svg b/src/script/components/Badges/Icons/CertificateRevoked_Icon.svg deleted file mode 100644 index 91b3fb64b9c..00000000000 --- a/src/script/components/Badges/Icons/CertificateRevoked_Icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/script/components/Badges/Icons/ExpiresSoon_Icon.svg b/src/script/components/Badges/Icons/ExpiresSoon_Icon.svg deleted file mode 100644 index 524575d0b85..00000000000 --- a/src/script/components/Badges/Icons/ExpiresSoon_Icon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/script/components/Badges/Icons/MLSVerified_Icon.svg b/src/script/components/Badges/Icons/MLSVerified_Icon.svg deleted file mode 100644 index 7edb15427dc..00000000000 --- a/src/script/components/Badges/Icons/MLSVerified_Icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/script/components/Badges/Icons/ProteusVerified_Icon.svg b/src/script/components/Badges/Icons/ProteusVerified_Icon.svg deleted file mode 100644 index f0c54d48706..00000000000 --- a/src/script/components/Badges/Icons/ProteusVerified_Icon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - From 460b1cf76506b8c0920021fd63c65d7c187c4b45 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Fri, 11 Aug 2023 11:27:38 +0200 Subject: [PATCH 20/95] update wire-web-packages and remove icons from wire-webapp --- package.json | 2 +- src/script/components/Badges/Badges.tsx | 20 +++++---- .../Badges/Icons/CertificateExpiredIcon.tsx | 36 ---------------- .../Badges/Icons/CertificateRevokedIcon.tsx | 33 -------------- .../Badges/Icons/ExpiresSoonIcon.tsx | 43 ------------------- .../Badges/Icons/MLSVerifiedIcon.tsx | 33 -------------- .../Badges/Icons/ProteusVerifiedIcon.tsx | 39 ----------------- yarn.lock | 10 ++--- 8 files changed, 17 insertions(+), 199 deletions(-) delete mode 100644 src/script/components/Badges/Icons/CertificateExpiredIcon.tsx delete mode 100644 src/script/components/Badges/Icons/CertificateRevokedIcon.tsx delete mode 100644 src/script/components/Badges/Icons/ExpiresSoonIcon.tsx delete mode 100644 src/script/components/Badges/Icons/MLSVerifiedIcon.tsx delete mode 100644 src/script/components/Badges/Icons/ProteusVerifiedIcon.tsx diff --git a/package.json b/package.json index 9e20a5081ce..635ffb1a43f 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@wireapp/avs": "9.3.7", "@wireapp/core": "40.7.0", "@wireapp/lru-cache": "3.8.1", - "@wireapp/react-ui-kit": "9.7.8", + "@wireapp/react-ui-kit": "9.8.0", "@wireapp/store-engine-dexie": "2.1.1", "@wireapp/store-engine-sqleet": "1.8.9", "@wireapp/webapp-events": "0.17.0", diff --git a/src/script/components/Badges/Badges.tsx b/src/script/components/Badges/Badges.tsx index f500e895931..be65e7b4b83 100644 --- a/src/script/components/Badges/Badges.tsx +++ b/src/script/components/Badges/Badges.tsx @@ -21,11 +21,13 @@ import React, {CSSProperties} from 'react'; import {ConversationProtocol} from '@wireapp/api-client/lib/conversation'; -import {CertificateExpiredIcon} from 'Components/Badges/Icons/CertificateExpiredIcon'; -import {CertificateRevokedIcon} from 'Components/Badges/Icons/CertificateRevokedIcon'; -import {ExpiresSoonIcon} from 'Components/Badges/Icons/ExpiresSoonIcon'; -import {MLSVerifiedIcon} from 'Components/Badges/Icons/MLSVerifiedIcon'; -import {ProteusVerifiedIcon} from 'Components/Badges/Icons/ProteusVerifiedIcon'; +import { + CertificateExpiredIcon, + CertificateRevoked, + ExpiresSoon, + MLSVerified, + ProteusVerified, +} from '@wireapp/react-ui-kit'; enum MLSStatues { NOT_DOWNLOADED = 'not_downloaded', @@ -95,7 +97,7 @@ export const Badges: React.FC = ({ data-tooltip="Device verified (End-to-end identity)" style={iconStyles} > - + )} @@ -105,7 +107,7 @@ export const Badges: React.FC = ({ data-tooltip="End-to-end identity certificate expires soon" style={iconStyles} > - + )} @@ -125,7 +127,7 @@ export const Badges: React.FC = ({ data-tooltip="End-to-end identity certificate revoked" style={iconStyles} > - + )}
@@ -140,7 +142,7 @@ export const Badges: React.FC = ({ data-tooltip="Device verified (Proteus)" style={iconStyles} > - +
)} diff --git a/src/script/components/Badges/Icons/CertificateExpiredIcon.tsx b/src/script/components/Badges/Icons/CertificateExpiredIcon.tsx deleted file mode 100644 index 72b0a24664e..00000000000 --- a/src/script/components/Badges/Icons/CertificateExpiredIcon.tsx +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {SVGIcon} from '@wireapp/react-ui-kit/lib/Icon/SVGIcon'; - -interface SVGIconProps {} - -export const CertificateExpiredIcon = (props: SVGIconProps) => ( - - - - - -); diff --git a/src/script/components/Badges/Icons/CertificateRevokedIcon.tsx b/src/script/components/Badges/Icons/CertificateRevokedIcon.tsx deleted file mode 100644 index 551e909c12c..00000000000 --- a/src/script/components/Badges/Icons/CertificateRevokedIcon.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {SVGIcon} from '@wireapp/react-ui-kit/lib/Icon/SVGIcon'; - -interface SVGIconProps {} - -export const CertificateRevokedIcon = (props: SVGIconProps) => ( - - - -); diff --git a/src/script/components/Badges/Icons/ExpiresSoonIcon.tsx b/src/script/components/Badges/Icons/ExpiresSoonIcon.tsx deleted file mode 100644 index 9fd9e12373e..00000000000 --- a/src/script/components/Badges/Icons/ExpiresSoonIcon.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {SVGIcon} from '@wireapp/react-ui-kit/lib/Icon/SVGIcon'; - -interface SVGIconProps {} - -export const ExpiresSoonIcon = (props: SVGIconProps) => ( - - - - -); diff --git a/src/script/components/Badges/Icons/MLSVerifiedIcon.tsx b/src/script/components/Badges/Icons/MLSVerifiedIcon.tsx deleted file mode 100644 index ecf43749d91..00000000000 --- a/src/script/components/Badges/Icons/MLSVerifiedIcon.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {SVGIcon} from '@wireapp/react-ui-kit/lib/Icon/SVGIcon'; - -interface SVGIconProps {} - -export const MLSVerifiedIcon = (props: SVGIconProps) => ( - - - -); diff --git a/src/script/components/Badges/Icons/ProteusVerifiedIcon.tsx b/src/script/components/Badges/Icons/ProteusVerifiedIcon.tsx deleted file mode 100644 index 0c2a876a5c7..00000000000 --- a/src/script/components/Badges/Icons/ProteusVerifiedIcon.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {SVGIcon} from '@wireapp/react-ui-kit/lib/Icon/SVGIcon'; - -interface SVGIconProps {} - -export const ProteusVerifiedIcon = (props: SVGIconProps) => ( - - - - -); diff --git a/yarn.lock b/yarn.lock index 8838f80fbfe..f6abc46413c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4999,9 +4999,9 @@ __metadata: languageName: node linkType: hard -"@wireapp/react-ui-kit@npm:9.7.8": - version: 9.7.8 - resolution: "@wireapp/react-ui-kit@npm:9.7.8" +"@wireapp/react-ui-kit@npm:9.8.0": + version: 9.8.0 + resolution: "@wireapp/react-ui-kit@npm:9.8.0" dependencies: "@types/color": 3.0.3 color: 4.2.3 @@ -5016,7 +5016,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: bfc5ba99629e612f13f652c43199e02d2dbbdb89501eb750f3f0e4c4cee110b4708cd8b5d083ecf7b7ba96c56b494d5c88c12d5018e273b98050812169ae3caf + checksum: f56e21f87b781101e57c8694990d647a89dd64e28e0cddbdf01bf359351162279536ea7f4b9e3d8572cfbdfb4079f23240669fcad455db03cbbe59d5c889eeaa languageName: node linkType: hard @@ -17689,7 +17689,7 @@ __metadata: "@wireapp/eslint-config": 2.2.2 "@wireapp/lru-cache": 3.8.1 "@wireapp/prettier-config": 0.6.0 - "@wireapp/react-ui-kit": 9.7.8 + "@wireapp/react-ui-kit": 9.8.0 "@wireapp/store-engine": ^5.1.1 "@wireapp/store-engine-dexie": 2.1.1 "@wireapp/store-engine-sqleet": 1.8.9 From 233271b2e56a3631db12f23d28bca2c49f7c05bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Tue, 22 Aug 2023 15:59:01 +0200 Subject: [PATCH 21/95] refactor: move parts of the code out of webapp --- package.json | 2 +- server/routes/RedirectRoutes.ts | 2 +- server/yarn.lock | 1627 ++++------ .../util/E2EIdentity/DelayTimer.test.ts | 200 -- src/script/util/E2EIdentity/DelayTimer.ts | 287 -- src/script/util/E2EIdentity/E2EIdentity.ts | 29 +- src/script/util/E2EIdentity/helper/delay.ts | 45 - src/script/util/E2EIdentity/helper/storage.ts | 42 - yarn.lock | 2869 +++-------------- 9 files changed, 1165 insertions(+), 3938 deletions(-) delete mode 100644 src/script/util/E2EIdentity/DelayTimer.test.ts delete mode 100644 src/script/util/E2EIdentity/DelayTimer.ts delete mode 100644 src/script/util/E2EIdentity/helper/delay.ts delete mode 100644 src/script/util/E2EIdentity/helper/storage.ts diff --git a/package.json b/package.json index f5f8868efc5..d8e831d40f6 100644 --- a/package.json +++ b/package.json @@ -79,11 +79,11 @@ "@types/libsodium-wrappers": "^0", "@types/linkify-it": "3.0.2", "@types/loadable__component": "^5", - "@types/prettier": "^2.7.3", "@types/markdown-it": "13.0.0", "@types/node": "^20.5.1", "@types/open-graph": "0.2.2", "@types/platform": "1.3.4", + "@types/prettier": "^2.7.3", "@types/react": "18.2.20", "@types/react-dom": "18.2.7", "@types/react-redux": "7.1.25", diff --git a/server/routes/RedirectRoutes.ts b/server/routes/RedirectRoutes.ts index 6811389a353..a0cee80b9ad 100644 --- a/server/routes/RedirectRoutes.ts +++ b/server/routes/RedirectRoutes.ts @@ -65,6 +65,6 @@ export const RedirectRoutes = (config: ServerConfig, clientConfig: ClientConfig) const queryString = Object.keys(query) .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(query[key] as string)}`) .join('&'); - return res.redirect(HTTP_STATUS.MOVED_TEMPORARILY, `/auth${queryString ? '?' : ''}${queryString}`); + return res.redirect(HTTP_STATUS.MOVED_TEMPORARILY, `/${queryString ? '?' : ''}${queryString}`); }), ]; diff --git a/server/yarn.lock b/server/yarn.lock index 1661a7848b9..2e2247baf10 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -1,3 +1,6 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + __metadata: version: 6 cacheKey: 8 @@ -12,12 +15,13 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/code-frame@npm:7.22.5" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.10, @babel/code-frame@npm:^7.22.5": + version: 7.22.10 + resolution: "@babel/code-frame@npm:7.22.10" dependencies: - "@babel/highlight": ^7.22.5 - checksum: cfe804f518f53faaf9a1d3e0f9f74127ab9a004912c3a16fda07fb6a633393ecb9918a053cb71804204c1b7ec3d49e1699604715e2cfb0c9f7bc4933d324ebb6 + "@babel/highlight": ^7.22.10 + chalk: ^2.4.2 + checksum: 89a06534ad19759da6203a71bad120b1d7b2ddc016c8e07d4c56b35dea25e7396c6da60a754e8532a86733092b131ae7f661dbe6ba5d165ea777555daa2ed3c9 languageName: node linkType: hard @@ -29,52 +33,50 @@ __metadata: linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": - version: 7.22.9 - resolution: "@babel/core@npm:7.22.9" + version: 7.22.10 + resolution: "@babel/core@npm:7.22.10" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.9 - "@babel/helper-compilation-targets": ^7.22.9 + "@babel/code-frame": ^7.22.10 + "@babel/generator": ^7.22.10 + "@babel/helper-compilation-targets": ^7.22.10 "@babel/helper-module-transforms": ^7.22.9 - "@babel/helpers": ^7.22.6 - "@babel/parser": ^7.22.7 + "@babel/helpers": ^7.22.10 + "@babel/parser": ^7.22.10 "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.8 - "@babel/types": ^7.22.5 + "@babel/traverse": ^7.22.10 + "@babel/types": ^7.22.10 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 semver: ^6.3.1 - checksum: 7bf069aeceb417902c4efdaefab1f7b94adb7dea694a9aed1bda2edf4135348a080820529b1a300c6f8605740a00ca00c19b2d5e74b5dd489d99d8c11d5e56d1 + checksum: cc4efa09209fe1f733cf512e9e4bb50870b191ab2dee8014e34cd6e731f204e48476cc53b4bbd0825d4d342304d577ae43ff5fd8ab3896080673c343321acb32 languageName: node linkType: hard -"@babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.7.2": - version: 7.22.9 - resolution: "@babel/generator@npm:7.22.9" +"@babel/generator@npm:^7.22.10, @babel/generator@npm:^7.7.2": + version: 7.22.10 + resolution: "@babel/generator@npm:7.22.10" dependencies: - "@babel/types": ^7.22.5 + "@babel/types": ^7.22.10 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 7c9d2c58b8d5ac5e047421a6ab03ec2ff5d9a5ff2c2212130a0055e063ac349e0b19d435537d6886c999771aef394832e4f54cd9fc810100a7f23d982f6af06b + checksum: 59a79730abdff9070692834bd3af179e7a9413fa2ff7f83dff3eb888765aeaeb2bfc7b0238a49613ed56e1af05956eff303cc139f2407eda8df974813e486074 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-compilation-targets@npm:7.22.9" +"@babel/helper-compilation-targets@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/helper-compilation-targets@npm:7.22.10" dependencies: "@babel/compat-data": ^7.22.9 "@babel/helper-validator-option": ^7.22.5 browserslist: ^4.21.9 lru-cache: ^5.1.1 semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: ea0006c6a93759025f4a35a25228ae260538c9f15023e8aac2a6d45ca68aef4cf86cfc429b19af9a402cbdd54d5de74ad3fbcf6baa7e48184dc079f1a791e178 + checksum: f6f1896816392bcff671bbe6e277307729aee53befb4a66ea126e2a91eda78d819a70d06fa384c74ef46c1595544b94dca50bef6c78438d9ffd31776dafbd435 languageName: node linkType: hard @@ -174,34 +176,34 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helpers@npm:7.22.6" +"@babel/helpers@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/helpers@npm:7.22.10" dependencies: "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.6 - "@babel/types": ^7.22.5 - checksum: 5c1f33241fe7bf7709868c2105134a0a86dca26a0fbd508af10a89312b1f77ca38ebae43e50be3b208613c5eacca1559618af4ca236f0abc55d294800faeff30 + "@babel/traverse": ^7.22.10 + "@babel/types": ^7.22.10 + checksum: 3b1219e362df390b6c5d94b75a53fc1c2eb42927ced0b8022d6a29b833a839696206b9bdad45b4805d05591df49fc16b6fb7db758c9c2ecfe99e3e94cb13020f languageName: node linkType: hard -"@babel/highlight@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/highlight@npm:7.22.5" +"@babel/highlight@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/highlight@npm:7.22.10" dependencies: "@babel/helper-validator-identifier": ^7.22.5 - chalk: ^2.0.0 + chalk: ^2.4.2 js-tokens: ^4.0.0 - checksum: f61ae6de6ee0ea8d9b5bcf2a532faec5ab0a1dc0f7c640e5047fc61630a0edb88b18d8c92eb06566d30da7a27db841aca11820ecd3ebe9ce514c9350fbed39c4 + checksum: f714a1e1a72dd9d72f6383f4f30fd342e21a8df32d984a4ea8f5eab691bb6ba6db2f8823d4b4cf135d98869e7a98925b81306aa32ee3c429f8cfa52c75889e1b languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.22.7": - version: 7.22.7 - resolution: "@babel/parser@npm:7.22.7" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.10, @babel/parser@npm:^7.22.5": + version: 7.22.10 + resolution: "@babel/parser@npm:7.22.10" bin: parser: ./bin/babel-parser.js - checksum: 02209ddbd445831ee8bf966fdf7c29d189ed4b14343a68eb2479d940e7e3846340d7cc6bd654a5f3d87d19dc84f49f50a58cf9363bee249dc5409ff3ba3dab54 + checksum: af51567b7d3cdf523bc608eae057397486c7fa6c2e5753027c01fe5c36f0767b2d01ce3049b222841326cc5b8c7fda1d810ac1a01af0a97bb04679e2ef9f7049 languageName: node linkType: hard @@ -370,32 +372,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8": - version: 7.22.8 - resolution: "@babel/traverse@npm:7.22.8" +"@babel/traverse@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/traverse@npm:7.22.10" dependencies: - "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.7 + "@babel/code-frame": ^7.22.10 + "@babel/generator": ^7.22.10 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-hoist-variables": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.22.7 - "@babel/types": ^7.22.5 + "@babel/parser": ^7.22.10 + "@babel/types": ^7.22.10 debug: ^4.1.0 globals: ^11.1.0 - checksum: a381369bc3eedfd13ed5fef7b884657f1c29024ea7388198149f0edc34bd69ce3966e9f40188d15f56490a5e12ba250ccc485f2882b53d41b054fccefb233e33 + checksum: 9f7b358563bfb0f57ac4ed639f50e5c29a36b821a1ce1eea0c7db084f5b925e3275846d0de63bde01ca407c85d9804e0efbe370d92cd2baaafde3bd13b0f4cdb languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": - version: 7.22.5 - resolution: "@babel/types@npm:7.22.5" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": + version: 7.22.10 + resolution: "@babel/types@npm:7.22.10" dependencies: "@babel/helper-string-parser": ^7.22.5 "@babel/helper-validator-identifier": ^7.22.5 to-fast-properties: ^2.0.0 - checksum: c13a9c1dc7d2d1a241a2f8363540cb9af1d66e978e8984b400a20c4f38ba38ca29f06e26a0f2d49a70bad9e57615dac09c35accfddf1bb90d23cd3e0a0bab892 + checksum: 095c4f4b7503fa816e4094113f0ec2351ef96ff32012010b771693066ff628c7c664b21c6bd3fb93aeb46fe7c61f6b3a3c9e4ed0034d6a2481201c417371c8af languageName: node linkType: hard @@ -440,50 +442,50 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/console@npm:29.6.2" +"@jest/console@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/console@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 + jest-message-util: ^29.6.3 + jest-util: ^29.6.3 slash: ^3.0.0 - checksum: 1198667bda0430770c3e9b92681c0ee9f8346394574071c633f306192ac5f08e12972d6a5fdf03eb0d441051c8439bce0f6f9f355dc60d98777a35328331ba2e + checksum: a30b380166944ac06d36a50a36f05e65022b97064efd3ace7113d1dfc30d96966af578266f69817afa9d6ec679f8ceb6ae905352c07e5ad23d3c307fc0060174 languageName: node linkType: hard -"@jest/core@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/core@npm:29.6.2" +"@jest/core@npm:^29.6.2, @jest/core@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/core@npm:29.6.3" dependencies: - "@jest/console": ^29.6.2 - "@jest/reporters": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/console": ^29.6.3 + "@jest/reporters": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/transform": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 ci-info: ^3.2.0 exit: ^0.1.2 graceful-fs: ^4.2.9 - jest-changed-files: ^29.5.0 - jest-config: ^29.6.2 - jest-haste-map: ^29.6.2 - jest-message-util: ^29.6.2 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.2 - jest-resolve-dependencies: ^29.6.2 - jest-runner: ^29.6.2 - jest-runtime: ^29.6.2 - jest-snapshot: ^29.6.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 - jest-watcher: ^29.6.2 + jest-changed-files: ^29.6.3 + jest-config: ^29.6.3 + jest-haste-map: ^29.6.3 + jest-message-util: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.6.3 + jest-resolve-dependencies: ^29.6.3 + jest-runner: ^29.6.3 + jest-runtime: ^29.6.3 + jest-snapshot: ^29.6.3 + jest-util: ^29.6.3 + jest-validate: ^29.6.3 + jest-watcher: ^29.6.3 micromatch: ^4.0.4 - pretty-format: ^29.6.2 + pretty-format: ^29.6.3 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -491,94 +493,76 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 6bbb3886430248c0092f275b1b946a701406732f7442c04e63e4ee2297c2ec02d8ceeec508a202e08128197699b2bcddbae2c2f74adb2cf30f2f0d7d94a7c2dc + checksum: 8ec37ce75f52dc85dfe703d4f8de31acf2134d1056127d075a700cf3668bad0cccc17f742b39f0053f8c12455075018bd3551093c0b3e082d593980093cb6ce9 languageName: node linkType: hard -"@jest/environment@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/environment@npm:29.6.2" +"@jest/environment@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/environment@npm:29.6.3" dependencies: - "@jest/fake-timers": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/fake-timers": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^29.6.2 - checksum: c7de0e4c0d9166e02d0eb166574e05ec460e1db3b69d6476e63244edd52d7c917e6876af55fe723ff3086f52c0b1869dec60654054735a7a48c9d4ac43af2a25 + jest-mock: ^29.6.3 + checksum: 96aaf9baaa58fbacbdfbde9591297f25f9d6f5566cf10cd07d744a4a25b1d82b6cfb89f217a45ccce2cc50ec6c7e3c9a0122908d6b827985a1679afb5e10b7b1 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.4.1": - version: 29.4.1 - resolution: "@jest/expect-utils@npm:29.4.1" +"@jest/expect-utils@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/expect-utils@npm:29.6.3" dependencies: - jest-get-type: ^29.2.0 - checksum: 865b4ee79d43e2457efb8ce3f58108f2fe141ce620350fe21d0baaf7e2f00b9b67f6e9c1c89760b1008c100e844fb03a6dda264418ed378243956904d9a88c69 + jest-get-type: ^29.6.3 + checksum: aeb0c2a485df09fdb51f866d58e232010cde888a7e6e1f9b395df236918e09e98407eb8281a3d41d2b115d9ff740d100b75100d521717ba903abeacb26e2a192 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/expect-utils@npm:29.6.1" +"@jest/expect@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/expect@npm:29.6.3" dependencies: - jest-get-type: ^29.4.3 - checksum: 0decf2009aa3735f9df469e78ce1721c2815e4278439887e0cf0321ca8979541a22515d114a59b2445a6cd70a074b09dc9c00b5e7b3b3feac5174b9c4a78b2e1 + expect: ^29.6.3 + jest-snapshot: ^29.6.3 + checksum: 40c3fc53aa9f86e10129fcaec243405a4b4c398a8d65a3133f97d39331f065c3833c352b133377f003b2e9acc70909d72ac91698c219a883b857b7cda559b199 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/expect-utils@npm:29.6.2" +"@jest/fake-timers@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/fake-timers@npm:29.6.3" dependencies: - jest-get-type: ^29.4.3 - checksum: 0decf2009aa3735f9df469e78ce1721c2815e4278439887e0cf0321ca8979541a22515d114a59b2445a6cd70a074b09dc9c00b5e7b3b3feac5174b9c4a78b2e1 - languageName: node - linkType: hard - -"@jest/expect@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/expect@npm:29.6.2" - dependencies: - expect: ^29.6.2 - jest-snapshot: ^29.6.2 - checksum: bd2d88a4e7c5420079c239afef341ec53dc7e353816cd13acbb42631a31fd321fe58677bb43a4dba851028f4c7e31da7980314e9094cd5b348896cb6cd3d42b2 - languageName: node - linkType: hard - -"@jest/fake-timers@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/fake-timers@npm:29.6.2" - dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^29.6.2 - jest-mock: ^29.6.2 - jest-util: ^29.6.2 - checksum: 1abcda02f22d2ba32e178b7ab80a9180235a6c75ec9faef33324627b19a70dad64889a9ea49b8f07230e14a6e683b9120542c6d1d6b2ecaf937f4efde32dad88 + jest-message-util: ^29.6.3 + jest-mock: ^29.6.3 + jest-util: ^29.6.3 + checksum: 60be71159bb92c8b8da593fac2b2fff50c0760c26c3b17237561a2818382d3c797bd119a1707ec1d3e9b77e8e3d6513fe88f0c668d6ca26fb2c01ab475620888 languageName: node linkType: hard -"@jest/globals@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/globals@npm:29.6.2" +"@jest/globals@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/globals@npm:29.6.3" dependencies: - "@jest/environment": ^29.6.2 - "@jest/expect": ^29.6.2 - "@jest/types": ^29.6.1 - jest-mock: ^29.6.2 - checksum: aa4a54f19cc025205bc696546940e1fe9c752c2d4d825852088aa76d44677ebba1ec66fabb78e615480cff23a06a70b5a3f893ab5163d901cdfa0d2267870b10 + "@jest/environment": ^29.6.3 + "@jest/expect": ^29.6.3 + "@jest/types": ^29.6.3 + jest-mock: ^29.6.3 + checksum: c90ad4e85c4c7fa42e4c61fc6bba854dc7e12c3579b4412fe879e712bf3675e92a771d2ac4ba2a48304a4dab34182e62e9d62f36ca13ddf8dff3cca911ddfbbb languageName: node linkType: hard -"@jest/reporters@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/reporters@npm:29.6.2" +"@jest/reporters@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/reporters@npm:29.6.3" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/console": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/transform": ^29.6.3 + "@jest/types": ^29.6.3 "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 @@ -587,13 +571,13 @@ __metadata: glob: ^7.1.3 graceful-fs: ^4.2.9 istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^5.1.0 + istanbul-lib-instrument: ^6.0.0 istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 - jest-worker: ^29.6.2 + jest-message-util: ^29.6.3 + jest-util: ^29.6.3 + jest-worker: ^29.6.3 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -603,88 +587,88 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 7cf880d0730cee7d24ee96928003ef6946bf93423b0ae9a2edb53cae2c231b8ac50ec264f48a73744e3f11ca319cd414edacf99b2e7bf37cd72fe0b362090dd1 + checksum: 8899240f018874148a24886ac78ada6dda4b7fc621fed904b276b324b981c2294d2036df92fb87411f2abb914faa351098eeb814d7685dcfa37c7c27b54660a4 languageName: node linkType: hard -"@jest/schemas@npm:^29.6.0": - version: 29.6.0 - resolution: "@jest/schemas@npm:29.6.0" +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" dependencies: "@sinclair/typebox": ^0.27.8 - checksum: c00511c69cf89138a7d974404d3a5060af375b5a52b9c87215d91873129b382ca11c1ff25bd6d605951404bb381ddce5f8091004a61e76457da35db1f5c51365 + checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 languageName: node linkType: hard -"@jest/source-map@npm:^29.6.0": - version: 29.6.0 - resolution: "@jest/source-map@npm:29.6.0" +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" dependencies: "@jridgewell/trace-mapping": ^0.3.18 callsites: ^3.0.0 graceful-fs: ^4.2.9 - checksum: 9c6c40387410bb70b2fae8124287fc28f6bdd1b2d7f24348e8611e1bb638b404518228a4ce64a582365b589c536ae8e7ebab0126cef59a87874b71061d19783b + checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb languageName: node linkType: hard -"@jest/test-result@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/test-result@npm:29.6.2" +"@jest/test-result@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/test-result@npm:29.6.3" dependencies: - "@jest/console": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/console": ^29.6.3 + "@jest/types": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 8aff37f18c8d2df4d9f453d57ec018a6479eb697fabcf74b1ca06e34553da1d7a2b85580a290408ba0b02e58543263244a2cb065c7c7180c8d8180cc78444fbd + checksum: 0f8164520587555f4e0c5b3e0843ae8ae43c517301c2986b9ff24ca58215f407164b99f3ccfde778dc3fb299c3bb8922a3dd81cf3ccf0ff646806df61d3d2d78 languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/test-sequencer@npm:29.6.2" +"@jest/test-sequencer@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/test-sequencer@npm:29.6.3" dependencies: - "@jest/test-result": ^29.6.2 + "@jest/test-result": ^29.6.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 + jest-haste-map: ^29.6.3 slash: ^3.0.0 - checksum: 12dc2577e45eeb98b85d1769846b7d6effa536907986ad3c4cbd014df9e24431a564cc8cd94603332e4b1f9bfb421371883efc6a5085b361a52425ffc2a52dc6 + checksum: 71b5fee13e28b2006b4bdea62181dd6b7a537531ac027b1230ad96a5a0c7837a4c008e9cbeebee630b0c7cc22187fede48cb18fec79209ff641492c994db8259 languageName: node linkType: hard -"@jest/transform@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/transform@npm:29.6.2" +"@jest/transform@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/transform@npm:29.6.3" dependencies: "@babel/core": ^7.11.6 - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@jridgewell/trace-mapping": ^0.3.18 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 - jest-regex-util: ^29.4.3 - jest-util: ^29.6.2 + jest-haste-map: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-util: ^29.6.3 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: ffb8c3c344cd48bedadec295d9c436737eccc39c1f0868aa9753b76397b33b2e5b121058af6f287ba6f2036181137e37df1212334bfa9d9a712986a4518cdc18 + checksum: edc47e960a71dab5ad8f0480fc4c1b05f2950c12e5aeb62bacfd46929dd5c7101dd2fa521a2e59c62a90849118039949f0230282a485de8dc373aac711f1bff9 languageName: node linkType: hard -"@jest/types@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/types@npm:29.6.1" +"@jest/types@npm:^29.6.1, @jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" dependencies: - "@jest/schemas": ^29.6.0 + "@jest/schemas": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: 89fc1ccf71a84fe0da643e0675b1cfe6a6f19ea72e935b2ab1dbdb56ec547e94433fb59b3536d3832a6e156c077865b7176fe9dae707dab9c3d2f9405ba6233c + checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc languageName: node linkType: hard @@ -699,10 +683,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 languageName: node linkType: hard @@ -713,14 +697,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 @@ -728,12 +705,12 @@ __metadata: linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.18 - resolution: "@jridgewell/trace-mapping@npm:0.3.18" + version: 0.3.19 + resolution: "@jridgewell/trace-mapping@npm:0.3.19" dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 0572669f855260808c16fe8f78f5f1b4356463b11d3f2c7c0b5580c8ba1cbf4ae53efe9f627595830856e57dbac2325ac17eb0c3dd0ec42102e6f227cc289c02 + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: 956a6f0f6fec060fb48c6bf1f5ec2064e13cd38c8be3873877d4b92b4a27ba58289a34071752671262a3e3c202abcc3fa2aac64d8447b4b0fa1ba3c9047f1c20 languageName: node linkType: hard @@ -790,8 +767,8 @@ __metadata: linkType: hard "@pm2/agent@npm:~2.0.0": - version: 2.0.1 - resolution: "@pm2/agent@npm:2.0.1" + version: 2.0.3 + resolution: "@pm2/agent@npm:2.0.3" dependencies: async: ~3.2.0 chalk: ~3.0.0 @@ -803,10 +780,10 @@ __metadata: nssocket: 0.6.0 pm2-axon: ~4.0.1 pm2-axon-rpc: ~0.7.0 - proxy-agent: ~5.0.0 - semver: ~7.2.0 + proxy-agent: ~6.3.0 + semver: ~7.5.0 ws: ~7.4.0 - checksum: d15e1ccec8e25bd020eabf2a59e0d2896082414b7950e918a1a19485ef1001012d7df6063fb720f453d9a2cd887abc80d576f985d2c28c127a7c1a16b95aee65 + checksum: 59a102665c5bf6e66338bb36fc7b41de4f1056397ca09691ce20fdae272728f4fb71232b1b4a707843fad3d54e86741e02b32dc9acc2f53b9d975642b3d7305c languageName: node linkType: hard @@ -875,13 +852,6 @@ __metadata: languageName: node linkType: hard -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 - languageName: node - linkType: hard - "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -889,6 +859,13 @@ __metadata: languageName: node linkType: hard +"@tootallnate/quickjs-emscripten@npm:^0.23.0": + version: 0.23.0 + resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0" + checksum: c350a2947ffb80b22e14ff35099fd582d1340d65723384a0fd0515e905e2534459ad2f301a43279a37308a27c99273c932e64649abd57d0bb3ca8c557150eccc + languageName: node + linkType: hard + "@types/babel__core@npm:^7.1.14": version: 7.20.1 resolution: "@types/babel__core@npm:7.20.1" @@ -1092,9 +1069,9 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 20.4.4 - resolution: "@types/node@npm:20.4.4" - checksum: 43f3c4a8acc38ae753e15a0e79bae0447d255b3742fa87f8e065d7b9d20ecb0e03d6c5b46c00d5d26f4552160381a00255f49205595a8ee48c2423e00263c930 + version: 20.5.2 + resolution: "@types/node@npm:20.5.2" + checksum: 46d032bb9a1db687693f6351702572d2f1e12face32caf8182323413918de27d4ac16cc2b15ff6b891651313e602da18edbdd095d16d2b5a26588c2edffca892 languageName: node linkType: hard @@ -1105,13 +1082,6 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.1.5": - version: 2.7.3 - resolution: "@types/prettier@npm:2.7.3" - checksum: 705384209cea6d1433ff6c187c80dcc0b95d99d5c5ce21a46a9a58060c527973506822e428789d842761e0280d25e3359300f017fbe77b9755bc772ab3dc2f83 - languageName: node - linkType: hard - "@types/qs@npm:*": version: 6.9.7 resolution: "@types/qs@npm:6.9.7" @@ -1199,23 +1169,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.2.0": - version: 8.2.0 - resolution: "acorn-walk@npm:8.2.0" - checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 - languageName: node - linkType: hard - -"acorn@npm:^8.7.0": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" - bin: - acorn: bin/acorn - checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.0, agent-base@npm:^6.0.2": +"agent-base@npm:6, agent-base@npm:^6.0.2": version: 6.0.2 resolution: "agent-base@npm:6.0.2" dependencies: @@ -1224,14 +1178,21 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:^7.0.1, agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": + version: 7.1.0 + resolution: "agent-base@npm:7.1.0" + dependencies: + debug: ^4.3.4 + checksum: f7828f991470a0cc22cb579c86a18cbae83d8a3cbed39992ab34fc7217c4d126017f1c74d0ab66be87f71455318a8ea3e757d6a37881b8d0f2a2c6aa55e5418f + languageName: node + linkType: hard + "agentkeepalive@npm:^4.2.1": - version: 4.3.0 - resolution: "agentkeepalive@npm:4.3.0" + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" dependencies: - debug: ^4.1.0 - depd: ^2.0.0 humanize-ms: ^1.2.1 - checksum: 982453aa44c11a06826c836025e5162c846e1200adb56f2d075400da7d32d87021b3b0a58768d949d824811f5654223d5a8a3dad120921a2439625eb847c6260 + checksum: 13278cd5b125e51eddd5079f04d6fe0914ac1b8b91c1f3db2c1822f99ac1a7457869068997784342fe455d59daaff22e14fb7b8c3da4e741896e7e31faf92481 languageName: node linkType: hard @@ -1366,7 +1327,7 @@ __metadata: languageName: node linkType: hard -"ast-types@npm:^0.13.2": +"ast-types@npm:^0.13.4": version: 0.13.4 resolution: "ast-types@npm:0.13.4" dependencies: @@ -1419,20 +1380,20 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.6.2": - version: 29.6.2 - resolution: "babel-jest@npm:29.6.2" +"babel-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-jest@npm:29.6.3" dependencies: - "@jest/transform": ^29.6.2 + "@jest/transform": ^29.6.3 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^29.5.0 + babel-preset-jest: ^29.6.3 chalk: ^4.0.0 graceful-fs: ^4.2.9 slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 3936b5d6ed6f08670c830ed919e38a4a593d0643b8e30fdeb16f4588b262ea5255fb96fd1849c02fba0b082ecfa4e788ce9a128ad1b9e654d46aac09c3a55504 + checksum: 8b4b85d829d8ee010f0c8381cb9d67842da905c32183c1fc6e1e8833447a79b969f8279759d44197bb77001239dc41a49fff0e8222d8e8577f47a8d0428d178e languageName: node linkType: hard @@ -1449,15 +1410,15 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-plugin-jest-hoist@npm:29.5.0" +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" dependencies: "@babel/template": ^7.3.3 "@babel/types": ^7.3.3 "@types/babel__core": ^7.1.14 "@types/babel__traverse": ^7.0.6 - checksum: 099b5254073b6bc985b6d2d045ad26fb8ed30ff8ae6404c4fe8ee7cd0e98a820f69e3dfb871c7c65aae0f4b65af77046244c07bb92d49ef9005c90eedf681539 + checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 languageName: node linkType: hard @@ -1483,15 +1444,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-preset-jest@npm:29.5.0" +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" dependencies: - babel-plugin-jest-hoist: ^29.5.0 + babel-plugin-jest-hoist: ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 5566ca2762766c9319b4973d018d2fa08c0fcf6415c72cc54f4c8e7199e851ea8f5e6c6730f03ed7ed44fc8beefa959dd15911f2647dee47c615ff4faeddb1ad + checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb languageName: node linkType: hard @@ -1502,6 +1463,13 @@ __metadata: languageName: node linkType: hard +"basic-ftp@npm:^5.0.2": + version: 5.0.3 + resolution: "basic-ftp@npm:5.0.3" + checksum: 8b04e88eb85a64de9311721bb0707c9cd70453eefdd854cab85438e6f46fb6c597ddad57ed1acf0a9ede3c677b14e657f51051688a5f23d6f3ea7b5d9073b850 + languageName: node + linkType: hard + "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" @@ -1574,16 +1542,16 @@ __metadata: linkType: hard "browserslist@npm:^4.21.9": - version: 4.21.9 - resolution: "browserslist@npm:4.21.9" + version: 4.21.10 + resolution: "browserslist@npm:4.21.10" dependencies: - caniuse-lite: ^1.0.30001503 - electron-to-chromium: ^1.4.431 - node-releases: ^2.0.12 + caniuse-lite: ^1.0.30001517 + electron-to-chromium: ^1.4.477 + node-releases: ^2.0.13 update-browserslist-db: ^1.0.11 bin: browserslist: cli.js - checksum: 80d3820584e211484ad1b1a5cfdeca1dd00442f47be87e117e1dda34b628c87e18b81ae7986fa5977b3e6a03154f6d13cd763baa6b8bf5dd9dd19f4926603698 + checksum: 1e27c0f111a35d1dd0e8fc2c61781b0daefabc2c9471b0b10537ce54843014bceb2a1ce4571af1a82b2bf1e6e6e05d38865916689a158f03bc2c7a4ec2577db8 languageName: node linkType: hard @@ -1611,14 +1579,14 @@ __metadata: linkType: hard "cacache@npm:^17.0.0": - version: 17.1.3 - resolution: "cacache@npm:17.1.3" + version: 17.1.4 + resolution: "cacache@npm:17.1.4" dependencies: "@npmcli/fs": ^3.1.0 fs-minipass: ^3.0.0 glob: ^10.2.2 lru-cache: ^7.7.1 - minipass: ^5.0.0 + minipass: ^7.0.3 minipass-collect: ^1.0.2 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 @@ -1626,7 +1594,7 @@ __metadata: ssri: ^10.0.0 tar: ^6.1.11 unique-filename: ^3.0.0 - checksum: 385756781e1e21af089160d89d7462b7ed9883c978e848c7075b90b73cb823680e66092d61513050164588387d2ca87dd6d910e28d64bc13a9ac82cd8580c796 + checksum: b7751df756656954a51201335addced8f63fc53266fa56392c9f5ae83c8d27debffb4458ac2d168a744a4517ec3f2163af05c20097f93d17bdc2dc8a385e14a6 languageName: node linkType: hard @@ -1661,10 +1629,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001503": - version: 1.0.30001517 - resolution: "caniuse-lite@npm:1.0.30001517" - checksum: e4e87436ae1c4408cf4438aac22902b31eb03f3f5bad7f33bc518d12ffb35f3fd9395ccf7efc608ee046f90ce324ec6f7f26f8a8172b8c43c26a06ecee612a29 +"caniuse-lite@npm:^1.0.30001517": + version: 1.0.30001522 + resolution: "caniuse-lite@npm:1.0.30001522" + checksum: 56e3551c02ae595085114073cf242f7d9d54d32255c80893ca9098a44f44fc6eef353936f234f31c7f4cb894dd2b6c9c4626e30649ee29e04d70aa127eeefeb0 languageName: node linkType: hard @@ -1678,7 +1646,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.0, chalk@npm:^2.3.0": +"chalk@npm:^2.3.0, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -1910,13 +1878,6 @@ __metadata: languageName: node linkType: hard -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 - languageName: node - linkType: hard - "croner@npm:~4.1.92": version: 4.1.97 resolution: "croner@npm:4.1.97" @@ -1942,10 +1903,10 @@ __metadata: languageName: node linkType: hard -"data-uri-to-buffer@npm:3": - version: 3.0.1 - resolution: "data-uri-to-buffer@npm:3.0.1" - checksum: c59c3009686a78c071806b72f4810856ec28222f0f4e252aa495ec027ed9732298ceea99c50328cf59b151dd34cbc3ad6150bbb43e41fc56fa19f48c99e9fc30 +"data-uri-to-buffer@npm:^5.0.1": + version: 5.0.1 + resolution: "data-uri-to-buffer@npm:5.0.1" + checksum: 10958f89c0047b84bd86d572b6b77c9bf238ebe7b55a9a9ab04c90fbf5ab1881783b72e31dc0febdffd30ec914930244f2f728e3629bb8911d922baba129426f languageName: node linkType: hard @@ -1972,7 +1933,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.3, debug@npm:~4.3.1": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:~4.3.1": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -1994,21 +1955,14 @@ __metadata: linkType: hard "dedent@npm:^1.0.0": - version: 1.3.0 - resolution: "dedent@npm:1.3.0" + version: 1.5.1 + resolution: "dedent@npm:1.5.1" peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: 7554941491ab9c5181e3f404e5f5dba1c798fd720d146a7f398bd5d09a9aea7ba18bdc00ed3237d4f612bbe0e9d65754ce2f24745820e9a7be3238c128ea3ea2 - languageName: node - linkType: hard - -"deep-is@npm:~0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 + checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a languageName: node linkType: hard @@ -2019,15 +1973,14 @@ __metadata: languageName: node linkType: hard -"degenerator@npm:^3.0.2": - version: 3.0.4 - resolution: "degenerator@npm:3.0.4" +"degenerator@npm:^5.0.0": + version: 5.0.1 + resolution: "degenerator@npm:5.0.1" dependencies: - ast-types: ^0.13.2 - escodegen: ^1.8.1 - esprima: ^4.0.0 - vm2: ^3.9.17 - checksum: 99c27c9456095e32c4f6e01091d2b5c249f246b574487c52bca571e1e586b02d4b74a0ea7f22f30cc953c914383d02e2038d7d476a22f2704a8c1e88b671007d + ast-types: ^0.13.4 + escodegen: ^2.1.0 + esprima: ^4.0.1 + checksum: a64fa39cdf6c2edd75188157d32338ee9de7193d7dbb2aeb4acb1eb30fa4a15ed80ba8dae9bd4d7b085472cf174a5baf81adb761aaa8e326771392c922084152 languageName: node linkType: hard @@ -2038,7 +1991,7 @@ __metadata: languageName: node linkType: hard -"depd@npm:2.0.0, depd@npm:^2.0.0": +"depd@npm:2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a @@ -2059,10 +2012,10 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^29.4.3": - version: 29.4.3 - resolution: "diff-sequences@npm:29.4.3" - checksum: 28b265e04fdddcf7f9f814effe102cc95a9dec0564a579b5aed140edb24fc345c611ca52d76d725a3cab55d3888b915b5e8a4702e0f6058968a90fa5f41fcde7 +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa languageName: node linkType: hard @@ -2108,10 +2061,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.431": - version: 1.4.468 - resolution: "electron-to-chromium@npm:1.4.468" - checksum: 3da242381c95286a928ef03501c0fdcc71b773e382cc8574aa998562ae8c9b14712c910879b41d6184fd954ccecc2424865754a86e20d83077a35a0b75a1cfea +"electron-to-chromium@npm:^1.4.477": + version: 1.4.498 + resolution: "electron-to-chromium@npm:1.4.498" + checksum: 01962ae42e9097c321cb6ff63ca97dfd36457050727893d1768e6eb1b7d5a48ece568b94b1128fd0211f7ce3a31aca0c17eb72b1292d9b5ef7b0664d90dfe3aa languageName: node linkType: hard @@ -2228,14 +2181,13 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^1.8.1": - version: 1.14.3 - resolution: "escodegen@npm:1.14.3" +"escodegen@npm:^2.1.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" dependencies: esprima: ^4.0.1 - estraverse: ^4.2.0 + estraverse: ^5.2.0 esutils: ^2.0.2 - optionator: ^0.8.1 source-map: ~0.6.1 dependenciesMeta: source-map: @@ -2243,7 +2195,7 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 381cdc4767ecdb221206bbbab021b467bbc2a6f5c9a99c9e6353040080bdd3dfe73d7604ad89a47aca6ea7d58bc635f6bd3fbc8da9a1998e9ddfa8372362ccd0 + checksum: 096696407e161305cd05aebb95134ad176708bc5cb13d0dcc89a5fcbb959b8ed757e7f2591a5f8036f8f4952d4a724de0df14cd419e29212729fa6df5ce16bf6 languageName: node linkType: hard @@ -2257,10 +2209,10 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.2.0": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 +"estraverse@npm:^5.2.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b languageName: node linkType: hard @@ -2323,44 +2275,16 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0": - version: 29.4.1 - resolution: "expect@npm:29.4.1" - dependencies: - "@jest/expect-utils": ^29.4.1 - jest-get-type: ^29.2.0 - jest-matcher-utils: ^29.4.1 - jest-message-util: ^29.4.1 - jest-util: ^29.4.1 - checksum: 5918f69371557bbceb01bc163cd0ac03e8cbbc5de761892a9c27ef17a1f9e94dc91edd8298b4eaca18b71ba4a9d521c74b072f0a46950b13d6b61123b0431836 - languageName: node - linkType: hard - -"expect@npm:^29.0.0, expect@npm:^29.6.1": - version: 29.6.1 - resolution: "expect@npm:29.6.1" +"expect@npm:^29.0.0, expect@npm:^29.6.3": + version: 29.6.3 + resolution: "expect@npm:29.6.3" dependencies: - "@jest/expect-utils": ^29.6.2 - "@types/node": "*" - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.2 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 - checksum: 71f7b0c560e58bf6d27e0fded261d4bdb7ef81552a6bb4bd1ee09ce7a1f7dca67fbf83cf9b07a6645a88ef52e65085a0dcbe17f6c063b53ff7c2f0f3ea4ef69e - languageName: node - linkType: hard - -"expect@npm:^29.6.2": - version: 29.6.2 - resolution: "expect@npm:29.6.2" - dependencies: - "@jest/expect-utils": ^29.6.2 - "@types/node": "*" - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.2 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 - checksum: 71f7b0c560e58bf6d27e0fded261d4bdb7ef81552a6bb4bd1ee09ce7a1f7dca67fbf83cf9b07a6645a88ef52e65085a0dcbe17f6c063b53ff7c2f0f3ea4ef69e + "@jest/expect-utils": ^29.6.3 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.6.3 + jest-message-util: ^29.6.3 + jest-util: ^29.6.3 + checksum: c72de87abbc9acc17c66f42fcac8be4dff256f871f1800c3aaa004c74f95f61866cf80e8f2ddacc3f2df290fd58b0cba8adb3a0dee3a09dd5d39f97f63d2aae8 languageName: node linkType: hard @@ -2441,13 +2365,6 @@ __metadata: languageName: node linkType: hard -"fast-levenshtein@npm:~2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c - languageName: node - linkType: hard - "fb-watchman@npm:^2.0.0": version: 2.0.2 resolution: "fb-watchman@npm:2.0.2" @@ -2464,13 +2381,6 @@ __metadata: languageName: node linkType: hard -"file-uri-to-path@npm:2": - version: 2.0.0 - resolution: "file-uri-to-path@npm:2.0.0" - checksum: 4a71a99ddaa6ae7ae7bffe2948c34da59982ed465d930a0af9cb59fcc10fcd93366cc356ec3337c18373fde5df7ac52afda4558f155febd1799d135552207edb - languageName: node - linkType: hard - "fill-range@npm:^7.0.1": version: 7.0.1 resolution: "fill-range@npm:7.0.1" @@ -2589,11 +2499,11 @@ __metadata: linkType: hard "fs-minipass@npm:^3.0.0": - version: 3.0.2 - resolution: "fs-minipass@npm:3.0.2" + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" dependencies: - minipass: ^5.0.0 - checksum: e9cc0e1f2d01c6f6f62f567aee59530aba65c6c7b2ae88c5027bc34c711ebcfcfaefd0caf254afa6adfe7d1fba16bc2537508a6235196bac7276747d078aef0a + minipass: ^7.0.3 + checksum: 8722a41109130851d979222d3ec88aabaceeaaf8f57b2a8f744ef8bd2d1ce95453b04a61daa0078822bc5cd21e008814f06fe6586f56fef511e71b8d2394d802 languageName: node linkType: hard @@ -2605,34 +2515,24 @@ __metadata: linkType: hard "fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" dependencies: node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + checksum: 11e6ea6fea15e42461fc55b4b0e4a0a3c654faa567f1877dbd353f39156f69def97a69936d1746619d656c4b93de2238bf731f6085a03a50cabf287c9d024317 conditions: os=darwin languageName: node linkType: hard "fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=18f3a7" dependencies: node-gyp: latest conditions: os=darwin languageName: node linkType: hard -"ftp@npm:^0.3.10": - version: 0.3.10 - resolution: "ftp@npm:0.3.10" - dependencies: - readable-stream: 1.1.x - xregexp: 2.0.0 - checksum: ddd313c1d44eb7429f3a7d77a0155dc8fe86a4c64dca58f395632333ce4b4e74c61413c6e0ef66ea3f3d32d905952fbb6d028c7117d522f793eb1fa282e17357 - languageName: node - linkType: hard - "function-bind@npm:^1.1.1": version: 1.1.1 resolution: "function-bind@npm:1.1.1" @@ -2712,17 +2612,15 @@ __metadata: languageName: node linkType: hard -"get-uri@npm:3": - version: 3.0.2 - resolution: "get-uri@npm:3.0.2" +"get-uri@npm:^6.0.1": + version: 6.0.1 + resolution: "get-uri@npm:6.0.1" dependencies: - "@tootallnate/once": 1 - data-uri-to-buffer: 3 - debug: 4 - file-uri-to-path: 2 + basic-ftp: ^5.0.2 + data-uri-to-buffer: ^5.0.1 + debug: ^4.3.4 fs-extra: ^8.1.0 - ftp: ^0.3.10 - checksum: 5325b2906b08ca37529ca421cf52bc50376e75c6a945e0a8064e3f76b4bb67b8ab1e316a2fc7a307c8c606ab36d030720f39a57c97b027ff1134335e12102946 + checksum: a8aec70e1c67386fbe67f66e344ecd671a19f4cfc8e0f0e14d070563af5123d540e77fbceb6e26566f29846fac864d2862699ab134d307f85c85e7d72ce23d14 languageName: node linkType: hard @@ -2804,7 +2702,7 @@ __metadata: languageName: node linkType: hard -"handlebars@npm:4.7.7, handlebars@npm:^4.1.0": +"handlebars@npm:4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" dependencies: @@ -2822,6 +2720,24 @@ __metadata: languageName: node linkType: hard +"handlebars@npm:^4.1.0": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: ^1.2.5 + neo-async: ^2.6.2 + source-map: ^0.6.1 + uglify-js: ^3.1.4 + wordwrap: ^1.0.0 + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 00e68bb5c183fd7b8b63322e6234b5ac8fbb960d712cb3f25587d559c2951d9642df83c04a1172c918c41bcfc81bfbd7a7718bbce93b893e0135fc99edea93ff + languageName: node + linkType: hard + "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" @@ -2910,17 +2826,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^4.0.0, http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 - languageName: node - linkType: hard - "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -2932,6 +2837,16 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "http-proxy-agent@npm:7.0.0" + dependencies: + agent-base: ^7.1.0 + debug: ^4.3.4 + checksum: 48d4fac997917e15f45094852b63b62a46d0c8a4f0b9c6c23ca26d27b8df8d178bed88389e604745e748bd9a01f5023e25093722777f0593c3f052009ff438b6 + languageName: node + linkType: hard + "http-status-codes@npm:2.2.0": version: 2.2.0 resolution: "http-status-codes@npm:2.2.0" @@ -2939,7 +2854,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:5, https-proxy-agent@npm:^5.0.0": +"https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: @@ -2949,6 +2864,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^7.0.0": + version: 7.0.1 + resolution: "https-proxy-agent@npm:7.0.1" + dependencies: + agent-base: ^7.0.2 + debug: 4 + checksum: 2d765c31865071373771f53abdd72912567b76015a4eff61094f586194192950cd89257d50f0e621807a16c083bc8cad5852e3885c6ba154d2ce721a18fac248 + languageName: node + linkType: hard + "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -3019,7 +2944,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:~2.0.1": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -3033,7 +2958,7 @@ __metadata: languageName: node linkType: hard -"ip@npm:^1.1.5": +"ip@npm:^1.1.8": version: 1.1.8 resolution: "ip@npm:1.1.8" checksum: a2ade53eb339fb0cbe9e69a44caab10d6e3784662285eb5d2677117ee4facc33a64679051c35e0dfdb1a3983a51ce2f5d2cb36446d52e10d01881789b76e28fb @@ -3070,12 +2995,12 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.12.0": - version: 2.12.1 - resolution: "is-core-module@npm:2.12.1" +"is-core-module@npm:^2.13.0": + version: 2.13.0 + resolution: "is-core-module@npm:2.13.0" dependencies: has: ^1.0.3 - checksum: f04ea30533b5e62764e7b2e049d3157dc0abd95ef44275b32489ea2081176ac9746ffb1cdb107445cf1ff0e0dfcad522726ca27c27ece64dadf3795428b8e468 + checksum: 053ab101fb390bfeb2333360fd131387bed54e476b26860dc7f5a700bbf34a0ec4454f7c8c4d43e8a0030957e4b3db6e16d35e1890ea6fb654c833095e040355 languageName: node linkType: hard @@ -3137,13 +3062,6 @@ __metadata: languageName: node linkType: hard -"isarray@npm:0.0.1": - version: 0.0.1 - resolution: "isarray@npm:0.0.1" - checksum: 49191f1425681df4a18c2f0f93db3adb85573bcdd6a4482539d98eac9e705d8961317b01175627e860516a2fc45f8f9302db26e5a380a97a520e272e2a40a8d4 - languageName: node - linkType: hard - "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -3158,7 +3076,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": +"istanbul-lib-instrument@npm:^5.0.4": version: 5.2.1 resolution: "istanbul-lib-instrument@npm:5.2.1" dependencies: @@ -3171,14 +3089,27 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.0 + resolution: "istanbul-lib-instrument@npm:6.0.0" + dependencies: + "@babel/core": ^7.12.3 + "@babel/parser": ^7.14.7 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.2.0 + semver: ^7.5.4 + checksum: b9dc3723a769e65dbe1b912f935088ffc07cf393fa78a3ce79022c91aabb0ad01405ffd56083cdd822e514798e9daae3ea7bfe85633b094ecb335d28eb0a3f97 + languageName: node + linkType: hard + "istanbul-lib-report@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-report@npm:3.0.0" + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" dependencies: istanbul-lib-coverage: ^3.0.0 - make-dir: ^3.0.0 + make-dir: ^4.0.0 supports-color: ^7.1.0 - checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b + checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 languageName: node linkType: hard @@ -3194,80 +3125,81 @@ __metadata: linkType: hard "istanbul-reports@npm:^3.1.3": - version: 3.1.5 - resolution: "istanbul-reports@npm:3.1.5" + version: 3.1.6 + resolution: "istanbul-reports@npm:3.1.6" dependencies: html-escaper: ^2.0.0 istanbul-lib-report: ^3.0.0 - checksum: 7867228f83ed39477b188ea07e7ccb9b4f5320b6f73d1db93a0981b7414fa4ef72d3f80c4692c442f90fc250d9406e71d8d7ab65bb615cb334e6292b73192b89 + checksum: 44c4c0582f287f02341e9720997f9e82c071627e1e862895745d5f52ec72c9b9f38e1d12370015d2a71dcead794f34c7732aaef3fab80a24bc617a21c3d911d6 languageName: node linkType: hard "jackspeak@npm:^2.0.3": - version: 2.2.1 - resolution: "jackspeak@npm:2.2.1" + version: 2.3.0 + resolution: "jackspeak@npm:2.3.0" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: e29291c0d0f280a063fa18fbd1e891ab8c2d7519fd34052c0ebde38538a15c603140d60c2c7f432375ff7ee4c5f1c10daa8b2ae19a97c3d4affe308c8360c1df + checksum: 71bf716f4b5793226d4aeb9761ebf2605ee093b59f91a61451d57d998dd64bbf2b54323fb749b8b2ae8b6d8a463de4f6e3fedab50108671f247bbc80195a6306 languageName: node linkType: hard -"jest-changed-files@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-changed-files@npm:29.5.0" +"jest-changed-files@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-changed-files@npm:29.6.3" dependencies: execa: ^5.0.0 + jest-util: ^29.6.3 p-limit: ^3.1.0 - checksum: a67a7cb3c11f8f92bd1b7c79e84f724cbd11a9ad51f3cdadafe3ce7ee3c79ee50dbea128f920f5fddc807e9e4e83f5462143094391feedd959a77dd20ab96cf3 + checksum: 55bc820a70c220a02fec214d5c48d5e0d829549e5c7b9959776b4ca3f76f5ff20c7c8ff816a847822766f1d712477ab3027f7a66ec61bf65de3f852e878b4dfd languageName: node linkType: hard -"jest-circus@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-circus@npm:29.6.2" +"jest-circus@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-circus@npm:29.6.3" dependencies: - "@jest/environment": ^29.6.2 - "@jest/expect": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/environment": ^29.6.3 + "@jest/expect": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^1.0.0 is-generator-fn: ^2.0.0 - jest-each: ^29.6.2 - jest-matcher-utils: ^29.6.2 - jest-message-util: ^29.6.2 - jest-runtime: ^29.6.2 - jest-snapshot: ^29.6.2 - jest-util: ^29.6.2 + jest-each: ^29.6.3 + jest-matcher-utils: ^29.6.3 + jest-message-util: ^29.6.3 + jest-runtime: ^29.6.3 + jest-snapshot: ^29.6.3 + jest-util: ^29.6.3 p-limit: ^3.1.0 - pretty-format: ^29.6.2 + pretty-format: ^29.6.3 pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 4f5a96a68c3c808c3d5a9279a2f39a2937386e2cebba5096971f267d79562ce2133a13bc05356a39f8f1ba68fcfe1eb39c4572b3fb0f91affbd932950e89c1e3 + checksum: 65b76f853d1bd2ddc74ec5d9a37cff3d04d436e675b0ded52167ba9e5dfb9d6fbca8572c9f255d379ad332e87770bac3da6dbcabcaf840ee2ba6e0cde5b8c20e languageName: node linkType: hard "jest-cli@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-cli@npm:29.6.2" + version: 29.6.3 + resolution: "jest-cli@npm:29.6.3" dependencies: - "@jest/core": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/core": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/types": ^29.6.3 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.6.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 + jest-config: ^29.6.3 + jest-util: ^29.6.3 + jest-validate: ^29.6.3 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -3277,34 +3209,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 0b7b09ae4bd327caf1981eac5a14679ddda3c5c836c9f8ea0ecfe1e5e10e9a39a5ed783fa38d25383604c4d3405595e74b391d955e99aea7e51acb41a59ea108 + checksum: 69c422f1522b25756afb5a27b4b01a710d0f5ba52c592903b1ab47103ee2414ac9a9fff36a976092bb595980ba5c45f128e33b5d6ebc666c8a6973474bbf1443 languageName: node linkType: hard -"jest-config@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-config@npm:29.6.2" +"jest-config@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-config@npm:29.6.3" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.6.2 - "@jest/types": ^29.6.1 - babel-jest: ^29.6.2 + "@jest/test-sequencer": ^29.6.3 + "@jest/types": ^29.6.3 + babel-jest: ^29.6.3 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.6.2 - jest-environment-node: ^29.6.2 - jest-get-type: ^29.4.3 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.2 - jest-runner: ^29.6.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 + jest-circus: ^29.6.3 + jest-environment-node: ^29.6.3 + jest-get-type: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.6.3 + jest-runner: ^29.6.3 + jest-util: ^29.6.3 + jest-validate: ^29.6.3 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.6.2 + pretty-format: ^29.6.3 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -3315,217 +3247,135 @@ __metadata: optional: true ts-node: optional: true - checksum: 3bd104a3ac2dd9d34986238142437606354169766dcf88359a7a12ac106d0dc17dcc6b627e4f20db97a58bac5b0502b5436c9cc4722b3629b2a114bba6da9128 - languageName: node - linkType: hard - -"jest-diff@npm:^29.4.1": - version: 29.4.1 - resolution: "jest-diff@npm:29.4.1" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.3.1 - jest-get-type: ^29.2.0 - pretty-format: ^29.4.1 - checksum: 359af2d11a75bbb3c91e3def8cfd0ede00afc6fb5d69d9495f2af5f6e18f692adb940d8338a186159f75afe48088d82bce14e2cc272cad9a5c2148bf0bc7f6bf - languageName: node - linkType: hard - -"jest-diff@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-diff@npm:29.6.1" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.4.3 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.2 - checksum: 0effd66a0c23f8c139ebf7ca99ed30b479b86fff66f19ad4869f130aaf7ae6a24ca1533f697b7e4930cbe2ddffc85387723fcca673501c653fb77a38f538e959 + checksum: c3505411b89e5d046fbd294bb6e9ccc8c64a7efcf9d546450bec25512db4cbb67c8d102e4a58fa8ef8eac73052d1259533d9012b483469581ad5ed4cc5faa39f languageName: node linkType: hard -"jest-diff@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-diff@npm:29.6.2" +"jest-diff@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-diff@npm:29.6.3" dependencies: chalk: ^4.0.0 - diff-sequences: ^29.4.3 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.2 - checksum: 0effd66a0c23f8c139ebf7ca99ed30b479b86fff66f19ad4869f130aaf7ae6a24ca1533f697b7e4930cbe2ddffc85387723fcca673501c653fb77a38f538e959 + diff-sequences: ^29.6.3 + jest-get-type: ^29.6.3 + pretty-format: ^29.6.3 + checksum: 23b0a88efeab36566386f059f3da340754d2860969cbc34805154e2377714e37e3130e21a791fc68008fb460bbf5edd7ec43c16d96d15797b32ccfae5160fe37 languageName: node linkType: hard -"jest-docblock@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-docblock@npm:29.4.3" +"jest-docblock@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-docblock@npm:29.6.3" dependencies: detect-newline: ^3.0.0 - checksum: e0e9df1485bb8926e5b33478cdf84b3387d9caf3658e7dc1eaa6dc34cb93dea0d2d74797f6e940f0233a88f3dadd60957f2288eb8f95506361f85b84bf8661df + checksum: 6f3213a1e79e7eedafeb462acfa9a41303f9c0167893b140f6818fa16d7eb6bf3f9b9cf4669097ca6b7154847793489ecd6b4f6cfb0e416b88cfa3b4b36715b6 languageName: node linkType: hard -"jest-each@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-each@npm:29.6.2" +"jest-each@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-each@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 chalk: ^4.0.0 - jest-get-type: ^29.4.3 - jest-util: ^29.6.2 - pretty-format: ^29.6.2 - checksum: b64194f4ca27afc6070a42b7ecccbc68be0ded19a849f8cd8f91a2abb23fadae2d38d47559a315f4d1f576927761f3ea437a75ab6cf19206332abb8527d7c165 + jest-get-type: ^29.6.3 + jest-util: ^29.6.3 + pretty-format: ^29.6.3 + checksum: fe06e80b3554e2a8464f5f5c61943e02db1f8a7177139cb55b3201a1d1513cb089d8800401f102729a31bf8dd6f88229044e6088fea9dd5647ed11e841b6b88c languageName: node linkType: hard -"jest-environment-node@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-environment-node@npm:29.6.2" +"jest-environment-node@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-environment-node@npm:29.6.3" dependencies: - "@jest/environment": ^29.6.2 - "@jest/fake-timers": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/environment": ^29.6.3 + "@jest/fake-timers": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^29.6.2 - jest-util: ^29.6.2 - checksum: 0b754ac2d3bdb7ce5d6fc28595b9d1c64176f20506b6f773b18b0280ab0b396ed7d927c8519779d3c560fa2b13236ee7077092ccb19a13bea23d40dd30f06450 + jest-mock: ^29.6.3 + jest-util: ^29.6.3 + checksum: c215d8d94d95ba0353677c8b6c7c46d3f612bfd6becafa90e842ab99cb4ba2243c7f0309f1518ea2879820d39c0f3ec0d678e9ebb41055ed6eedbeb123f2897c languageName: node linkType: hard -"jest-get-type@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-get-type@npm:29.4.3" - checksum: 6ac7f2dde1c65e292e4355b6c63b3a4897d7e92cb4c8afcf6d397f2682f8080e094c8b0b68205a74d269882ec06bf696a9de6cd3e1b7333531e5ed7b112605ce +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 languageName: node linkType: hard -"jest-haste-map@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-haste-map@npm:29.6.2" +"jest-haste-map@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-haste-map@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 fb-watchman: ^2.0.0 fsevents: ^2.3.2 graceful-fs: ^4.2.9 - jest-regex-util: ^29.4.3 - jest-util: ^29.6.2 - jest-worker: ^29.6.2 + jest-regex-util: ^29.6.3 + jest-util: ^29.6.3 + jest-worker: ^29.6.3 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: 726233972030eb2e5bce6c9468e497310436b455c88b40e744bd053e20a6f3ff19aec340edcbd89537c629ed5cf8916506bc895d690cc39a0862c74dcd95b7b8 - languageName: node - linkType: hard - -"jest-leak-detector@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-leak-detector@npm:29.6.2" - dependencies: - jest-get-type: ^29.4.3 - pretty-format: ^29.6.2 - checksum: e00152acdba8aa8f9334775b77375947508051c34646fbeb702275da2b6ac6145f8cad6d5893112e76484d00fa8c0b4fd71b78ab0b4ef34950f5b6a84f37ae67 + checksum: d72b81442cf54c5962009502b4001e53b7e40ecd1717bb5d17d5b0badc89cf5529b8be5d2804442d25ee6a70809de150e554b074029170b0e86a32b7560ce430 languageName: node linkType: hard -"jest-matcher-utils@npm:^29.4.1": - version: 29.4.1 - resolution: "jest-matcher-utils@npm:29.4.1" +"jest-leak-detector@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-leak-detector@npm:29.6.3" dependencies: - chalk: ^4.0.0 - jest-diff: ^29.4.1 - jest-get-type: ^29.2.0 - pretty-format: ^29.4.1 - checksum: ea84dbcae82241cb28e94ff586660aeec51196d9245413dc516ce3aa78140b3ea728b1168b242281b59ad513b0148b9f12d674729bd043a894a3ba9d6ec164f4 + jest-get-type: ^29.6.3 + pretty-format: ^29.6.3 + checksum: 27548fcfc7602fe1b88f8600185e35ffff71751f3631e52bbfdfc72776f5a13a430185cf02fc632b41320a74f99ae90e40ce101c8887509f0f919608a7175129 languageName: node linkType: hard -"jest-matcher-utils@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-matcher-utils@npm:29.6.1" +"jest-matcher-utils@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-matcher-utils@npm:29.6.3" dependencies: chalk: ^4.0.0 - jest-diff: ^29.6.2 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.2 - checksum: 3e1b65dd30d05f75fe56dc45fbe4135aec2ff96a3d1e21afbf6a66f3a45a7e29cd0fd37cf80b9564e0381d6205833f77ccaf766c6f7e1aad6b7924d117be504e + jest-diff: ^29.6.3 + jest-get-type: ^29.6.3 + pretty-format: ^29.6.3 + checksum: d4965d5cc079799bc0a9075daea7a964768d4db55f0388ef879642215399c955ae9a22c967496813c908763b487f97e40701a1eb4ed5b0b7529c447b6d33e652 languageName: node linkType: hard -"jest-matcher-utils@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-matcher-utils@npm:29.6.2" - dependencies: - chalk: ^4.0.0 - jest-diff: ^29.6.2 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.2 - checksum: 3e1b65dd30d05f75fe56dc45fbe4135aec2ff96a3d1e21afbf6a66f3a45a7e29cd0fd37cf80b9564e0381d6205833f77ccaf766c6f7e1aad6b7924d117be504e - languageName: node - linkType: hard - -"jest-message-util@npm:^29.4.1": - version: 29.4.1 - resolution: "jest-message-util@npm:29.4.1" +"jest-message-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-message-util@npm:29.6.3" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.4.1 + "@jest/types": ^29.6.3 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^29.4.1 + pretty-format: ^29.6.3 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 7d49823401b6d42f0d2d63dd9c0f11d2f64783416f82a68634190abee46e600e25bb0b380c746726acc56e854687bb03a76e26e617fcdda78e8c6316423b694f + checksum: 59f5229a06c073a8877ba4d2e304cc07d63b0062bf5764d4bed14364403889e77f1825d1bd9017c19a840847d17dffd414dc06f1fcb537b5f9e03dbc65b84ada languageName: node linkType: hard -"jest-message-util@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-message-util@npm:29.6.1" +"jest-mock@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-mock@npm:29.6.3" dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.1 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.6.2 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: e8e3c8d2301e2ca4038ed6df8cbba7fedc6949d1ede4c0e3f1f44f53afb56d77eb35983fa460140d0eadeab99a5f3ae04b703fe77cd7b316b40b361228b5aa1a - languageName: node - linkType: hard - -"jest-message-util@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-message-util@npm:29.6.2" - dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.1 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.6.2 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: e8e3c8d2301e2ca4038ed6df8cbba7fedc6949d1ede4c0e3f1f44f53afb56d77eb35983fa460140d0eadeab99a5f3ae04b703fe77cd7b316b40b361228b5aa1a - languageName: node - linkType: hard - -"jest-mock@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-mock@npm:29.6.2" - dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-util: ^29.6.2 - checksum: 0bacb5d58441462c0e531ec4d2f7377eecbe21f664d8a460e72f94ba61d22635028931678e7a0f1c3e3f5894973db8e409432f7db4c01283456c8fdbd85f5b3b + jest-util: ^29.6.3 + checksum: 35772968010c0afb1bb1ef78570b9cbea907c6f967d24b4e95e1a596a1000c63d60e225fb9ddfdd5218674da4aa61d92a09927fc26310cecbbfaa8278d919e32 languageName: node linkType: hard @@ -3541,208 +3391,180 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-regex-util@npm:29.4.3" - checksum: 96fc7fc28cd4dd73a63c13a526202c4bd8b351d4e5b68b1a2a2c88da3308c2a16e26feaa593083eb0bac38cca1aa9dd05025412e7de013ba963fb8e66af22b8a +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-resolve-dependencies@npm:29.6.2" +"jest-resolve-dependencies@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-resolve-dependencies@npm:29.6.3" dependencies: - jest-regex-util: ^29.4.3 - jest-snapshot: ^29.6.2 - checksum: d40ee11af2c9d2ef0dbbcf9a5b7dda37c2b86cf4e5de1705795919fd8927907569115c502116ab56de0dca576d5faa31ec9b636240333b6830a568a63004da17 + jest-regex-util: ^29.6.3 + jest-snapshot: ^29.6.3 + checksum: db0e57158cc085926f1e0dd63919cc78b87dc7e5644cd40f6b4b0bdcc228f3872b5520477db9a67889f4bcf658c5b85303fef89eee1df60d02a662c356021c2f languageName: node linkType: hard -"jest-resolve@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-resolve@npm:29.6.2" +"jest-resolve@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-resolve@npm:29.6.3" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 + jest-haste-map: ^29.6.3 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 + jest-util: ^29.6.3 + jest-validate: ^29.6.3 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: 01721957e61821a576b2ded043eeab8b392166e0e6d8d680f75657737e2ea7481ff29c2716b866ccd12e743f3a8da465504b1028e78b6a3c68b9561303de7ec8 + checksum: 94594aab55b957e4f13fec248a18c99a6d8eb4842aa33ea5ef77179604df206d3fff1c59393a8984f179d0a7c6b98322d260b356076cdc2e74f2ebf1d9fba74a languageName: node linkType: hard -"jest-runner@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-runner@npm:29.6.2" +"jest-runner@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-runner@npm:29.6.3" dependencies: - "@jest/console": ^29.6.2 - "@jest/environment": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/console": ^29.6.3 + "@jest/environment": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/transform": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 - jest-docblock: ^29.4.3 - jest-environment-node: ^29.6.2 - jest-haste-map: ^29.6.2 - jest-leak-detector: ^29.6.2 - jest-message-util: ^29.6.2 - jest-resolve: ^29.6.2 - jest-runtime: ^29.6.2 - jest-util: ^29.6.2 - jest-watcher: ^29.6.2 - jest-worker: ^29.6.2 + jest-docblock: ^29.6.3 + jest-environment-node: ^29.6.3 + jest-haste-map: ^29.6.3 + jest-leak-detector: ^29.6.3 + jest-message-util: ^29.6.3 + jest-resolve: ^29.6.3 + jest-runtime: ^29.6.3 + jest-util: ^29.6.3 + jest-watcher: ^29.6.3 + jest-worker: ^29.6.3 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 46bd506a08ddf79628a509aed4105ab74c0b03727a3e24c90bbc2915531860b3da99f7ace2fd9603194440553cffac9cfb1a3b7d0ce03d5fc9c5f2d5ffbb3d3f + checksum: 9f10100f1a558ec78d24e131494d9b3736633f788f3edcd30dbce7257c0cee6f62fec08ab99dbb684ddcc7dbb5ca846711b140ca6090a9547c5900a0e3da53f8 languageName: node linkType: hard -"jest-runtime@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-runtime@npm:29.6.2" - dependencies: - "@jest/environment": ^29.6.2 - "@jest/fake-timers": ^29.6.2 - "@jest/globals": ^29.6.2 - "@jest/source-map": ^29.6.0 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 +"jest-runtime@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-runtime@npm:29.6.3" + dependencies: + "@jest/environment": ^29.6.3 + "@jest/fake-timers": ^29.6.3 + "@jest/globals": ^29.6.3 + "@jest/source-map": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/transform": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 - jest-message-util: ^29.6.2 - jest-mock: ^29.6.2 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.2 - jest-snapshot: ^29.6.2 - jest-util: ^29.6.2 + jest-haste-map: ^29.6.3 + jest-message-util: ^29.6.3 + jest-mock: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.6.3 + jest-snapshot: ^29.6.3 + jest-util: ^29.6.3 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 8e7e4486b23b01a9c407313681bed0def39680c2ae21cf01347f111983252ec3a024c56493c5411fed53633f02863eed0816099110cbe04b3889aa5babf1042d + checksum: 8743c61a2354dbce87282bfcbc11049f7d30d25ecd5f475ce56c1b7d926debb21b04db284d4d65a14283893a696442c66e923b35742fb02cc9f940a0a41ca49e languageName: node linkType: hard -"jest-snapshot@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-snapshot@npm:29.6.2" +"jest-snapshot@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-snapshot@npm:29.6.3" dependencies: "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 "@babel/plugin-syntax-jsx": ^7.7.2 "@babel/plugin-syntax-typescript": ^7.7.2 "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/expect-utils": ^29.6.3 + "@jest/transform": ^29.6.3 + "@jest/types": ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.6.2 + expect: ^29.6.3 graceful-fs: ^4.2.9 - jest-diff: ^29.6.2 - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.2 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 + jest-diff: ^29.6.3 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.6.3 + jest-message-util: ^29.6.3 + jest-util: ^29.6.3 natural-compare: ^1.4.0 - pretty-format: ^29.6.2 + pretty-format: ^29.6.3 semver: ^7.5.3 - checksum: c1c70a9dbce7fca62ed73ac38234b4ee643e8b667acf71b4417ab67776c1188bb08b8ad450e56a2889ad182903ffd416386fa8082a477724ccf8d8c29a4c6906 - languageName: node - linkType: hard - -"jest-util@npm:^29.4.1": - version: 29.4.1 - resolution: "jest-util@npm:29.4.1" - dependencies: - "@jest/types": ^29.4.1 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: 10a0e6c448ace1386f728ee3b7669f67878bb0c2e668a902d11140cc3f75c89a18f4142a37a24ccb587ede20dad86d497b3e8df4f26848a9be50a44779d92bc9 + checksum: c63631d2c18adc678455b9aa6e569cb1ea227e97aaa8628e154b39c95ca626d89e88d62c82e07d66cc83a1fddda1f7153506dd0f49d3411bbbecb52272ed72f5 languageName: node linkType: hard -"jest-util@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-util@npm:29.6.1" +"jest-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-util@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: 8aedc0c80083d0cabd6c6c4f04dea1cbcac609fd7bc3b1fc05a3999291bd6e63dd52b0c806f9378d5cae28eff5a6191709a4987861001293f8d03e53984adca4 + checksum: 7bf3ba3ac67ac6ceff7d8fdd23a86768e23ddd9133ecd9140ef87cc0c28708effabaf67a6cd45cd9d90a63d645a522ed0825d09ee59ac4c03b9c473b1fef4c7c languageName: node linkType: hard -"jest-util@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-util@npm:29.6.2" +"jest-validate@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-validate@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: 8aedc0c80083d0cabd6c6c4f04dea1cbcac609fd7bc3b1fc05a3999291bd6e63dd52b0c806f9378d5cae28eff5a6191709a4987861001293f8d03e53984adca4 - languageName: node - linkType: hard - -"jest-validate@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-validate@npm:29.6.2" - dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^29.4.3 + jest-get-type: ^29.6.3 leven: ^3.1.0 - pretty-format: ^29.6.2 - checksum: 32648d002189c0ad8a958eace7c6b7d05ea1dc440a1b91e0f22dc1aef489899446ec80b2d527fd13713862d89dfb4606e24a3bf8a10c4ddac3c911e93b7f0374 + pretty-format: ^29.6.3 + checksum: caa489ed11080441c636b8035ab71bafbdc0c052b1e452855e4d2dd24ac15e497710a270ea6fc5ef8926b22c1ce4d6e07ec2dc193f0810cff5851d7a2222c045 languageName: node linkType: hard -"jest-watcher@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-watcher@npm:29.6.2" +"jest-watcher@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-watcher@npm:29.6.3" dependencies: - "@jest/test-result": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/test-result": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.6.2 + jest-util: ^29.6.3 string-length: ^4.0.1 - checksum: 14624190fc8b5fbae466a2ec81458a88c15716d99f042bb4674d53e9623d305cb2905bc1dffeda05fd1a10a05c2a83efe5ac41942477e2b15eaebb08d0aaab32 + checksum: d31ab2076342d45959d5a7d9fdd88c0c5d52c2ea6fb3b1eabe7f8c28177d90355331beb4d844e171ed9e0341a2da901b7eefaa122505ba0f0ac88e58d29b3374 languageName: node linkType: hard -"jest-worker@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-worker@npm:29.6.2" +"jest-worker@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-worker@npm:29.6.3" dependencies: "@types/node": "*" - jest-util: ^29.6.2 + jest-util: ^29.6.3 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 11035564534bf181ead80b25be138c2d42372bd5626151a3e705200d47a74fd9da3ca79f8a7b15806cdc325ad73c3d21d23acceeed99d50941589ff02915ed38 + checksum: 8ffb24a2d4c70ed3032034a2601defccc19353d854d89459f58793c6c8f170f88038c6722073c8047c5734c8ec8d4902ebc955f4f7acb433c2499adf616388fc languageName: node linkType: hard @@ -3874,16 +3696,6 @@ __metadata: languageName: node linkType: hard -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e - languageName: node - linkType: hard - "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" @@ -3941,7 +3753,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.7.1": +"lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 @@ -3949,18 +3761,18 @@ __metadata: linkType: hard "lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.0.0 - resolution: "lru-cache@npm:10.0.0" - checksum: 18f101675fe283bc09cda0ef1e3cc83781aeb8373b439f086f758d1d91b28730950db785999cd060d3c825a8571c03073e8c14512b6655af2188d623031baf50 + version: 10.0.1 + resolution: "lru-cache@npm:10.0.1" + checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 languageName: node linkType: hard -"make-dir@npm:^3.0.0": - version: 3.1.0 - resolution: "make-dir@npm:3.1.0" +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" dependencies: - semver: ^6.0.0 - checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 + semver: ^7.5.3 + checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a languageName: node linkType: hard @@ -4136,17 +3948,17 @@ __metadata: linkType: hard "minipass-fetch@npm:^3.0.0": - version: 3.0.3 - resolution: "minipass-fetch@npm:3.0.3" + version: 3.0.4 + resolution: "minipass-fetch@npm:3.0.4" dependencies: encoding: ^0.1.13 - minipass: ^5.0.0 + minipass: ^7.0.3 minipass-sized: ^1.0.3 minizlib: ^2.1.2 dependenciesMeta: encoding: optional: true - checksum: af5ab2552a16fcf505d35fd7ffb84b57f4a0eeb269e6e1d9a2a75824dda48b36e527083250b7cca4a4def21d9544e2ade441e4730e233c0bc2133f6abda31e18 + checksum: af7aad15d5c128ab1ebe52e043bdf7d62c3c6f0cecb9285b40d7b395e1375b45dcdfd40e63e93d26a0e8249c9efd5c325c65575aceee192883970ff8cb11364a languageName: node linkType: hard @@ -4200,10 +4012,10 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": - version: 7.0.2 - resolution: "minipass@npm:7.0.2" - checksum: 46776de732eb7cef2c7404a15fb28c41f5c54a22be50d47b03c605bf21f5c18d61a173c0a20b49a97e7a65f78d887245066410642551e45fffe04e9ac9e325bc +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.3": + version: 7.0.3 + resolution: "minipass@npm:7.0.3" + checksum: 6f1614f5b5b55568a46bca5fec0e7c46dac027691db27d0e1923a8192866903144cd962ac772c0e9f89b608ea818b702709c042bce98e190d258847d85461531 languageName: node linkType: hard @@ -4295,7 +4107,7 @@ __metadata: languageName: node linkType: hard -"neo-async@npm:^2.6.0": +"neo-async@npm:^2.6.0, neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 @@ -4344,7 +4156,7 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.12": +"node-releases@npm:^2.0.13": version: 2.0.13 resolution: "node-releases@npm:2.0.13" checksum: 17ec8f315dba62710cae71a8dad3cd0288ba943d2ece43504b3b1aa8625bf138637798ab470b1d9035b0545996f63000a8a926e0f6d35d0996424f8b6d36dda3 @@ -4450,20 +4262,6 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 - languageName: node - linkType: hard - "p-defer@npm:^1.0.0": version: 1.0.0 resolution: "p-defer@npm:1.0.0" @@ -4542,31 +4340,30 @@ __metadata: languageName: node linkType: hard -"pac-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "pac-proxy-agent@npm:5.0.0" +"pac-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "pac-proxy-agent@npm:7.0.0" dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - get-uri: 3 - http-proxy-agent: ^4.0.1 - https-proxy-agent: 5 - pac-resolver: ^5.0.0 - raw-body: ^2.2.0 - socks-proxy-agent: 5 - checksum: cfd26a0e2ebfea4ca6162465018ce093bf147d26cf6c8fb3e7155bc7c184370d80d4d09a1c097e3db7676d0e3f574ea1cb56a4aa7d1d2e5cca6238935fabf010 + "@tootallnate/quickjs-emscripten": ^0.23.0 + agent-base: ^7.0.2 + debug: ^4.3.4 + get-uri: ^6.0.1 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.0 + pac-resolver: ^7.0.0 + socks-proxy-agent: ^8.0.1 + checksum: 45fe10ae58b1700d5419a9e5b525fb261b866ed6a65c1382fe45c3d5af9f81d9a58250d407941a363b1955e0315f3d97e02a2f20e4c7e2ba793bd46585db7ec8 languageName: node linkType: hard -"pac-resolver@npm:^5.0.0": - version: 5.0.1 - resolution: "pac-resolver@npm:5.0.1" +"pac-resolver@npm:^7.0.0": + version: 7.0.0 + resolution: "pac-resolver@npm:7.0.0" dependencies: - degenerator: ^3.0.2 - ip: ^1.1.5 + degenerator: ^5.0.0 + ip: ^1.1.8 netmask: ^2.0.2 - checksum: e3bd8aada70d173cd4cec1ac810fb56161678b7a597060a740c4a31d9c5f8cd95687b2d0fd90b69c0cafe5ef787404074f38042ba08c8d378fed48973f58e493 + checksum: fa3a898c09848e93e35f5e23443fea36ddb393a851c76a23664a5bf3fcbe58ff77a0bcdae1e4f01b9ea87ea493c52e14d97a0fe39f92474d14cd45559c6e3cde languageName: node linkType: hard @@ -4795,43 +4592,14 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 - languageName: node - linkType: hard - -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.4.1": - version: 29.4.1 - resolution: "pretty-format@npm:29.4.1" - dependencies: - "@jest/schemas": ^29.4.0 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: bcc8e86bcf8e7f5106c96e2ea7905912bd17ae2aac76e4e0745d2a50df4b340638ed95090ee455a1c0f78189efa05077bd655ca08bf66292e83ebd7035fc46fd - languageName: node - linkType: hard - -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.1": - version: 29.6.1 - resolution: "pretty-format@npm:29.6.1" - dependencies: - "@jest/schemas": ^29.6.0 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: a0f972a44f959023c0df9cdfe9eed7540264d7f7ddf74667db8a5294444d5aa153fd47d20327df10ae86964e2ceec10e46ea06b1a5c9c12e02348b78c952c9fc - languageName: node - linkType: hard - -"pretty-format@npm:^29.6.2": - version: 29.6.2 - resolution: "pretty-format@npm:29.6.2" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.3": + version: 29.6.3 + resolution: "pretty-format@npm:29.6.3" dependencies: - "@jest/schemas": ^29.6.0 + "@jest/schemas": ^29.6.3 ansi-styles: ^5.0.0 react-is: ^18.0.0 - checksum: a0f972a44f959023c0df9cdfe9eed7540264d7f7ddf74667db8a5294444d5aa153fd47d20327df10ae86964e2ceec10e46ea06b1a5c9c12e02348b78c952c9fc + checksum: 4e1c0db48e65571c22e80ff92123925ff8b3a2a89b71c3a1683cfde711004d492de32fe60c6bc10eea8bf6c678e5cbe544ac6c56cb8096e1eb7caf856928b1c4 languageName: node linkType: hard @@ -4874,23 +4642,23 @@ __metadata: languageName: node linkType: hard -"proxy-agent@npm:~5.0.0": - version: 5.0.0 - resolution: "proxy-agent@npm:5.0.0" +"proxy-agent@npm:~6.3.0": + version: 6.3.0 + resolution: "proxy-agent@npm:6.3.0" dependencies: - agent-base: ^6.0.0 - debug: 4 - http-proxy-agent: ^4.0.0 - https-proxy-agent: ^5.0.0 - lru-cache: ^5.1.1 - pac-proxy-agent: ^5.0.0 - proxy-from-env: ^1.0.0 - socks-proxy-agent: ^5.0.0 - checksum: 3b0bb73a4d3a07711d3cad72b2fa4320880f7a6ec1959cdcc186ac6ffb173db8137d7c4046c27fdfa6e2207b2eb75e802f3d5e14c766700586ec4d47299a5124 + agent-base: ^7.0.2 + debug: ^4.3.4 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.0 + lru-cache: ^7.14.1 + pac-proxy-agent: ^7.0.0 + proxy-from-env: ^1.1.0 + socks-proxy-agent: ^8.0.1 + checksum: e3fb0633d665e352ed4efe23ae5616b8301423dfa4ff1c5975d093da8a636181a97391f7a91c6a7ffae17c1a305df855e95507f73bcdafda8876198c64b88f5b languageName: node linkType: hard -"proxy-from-env@npm:^1.0.0": +"proxy-from-env@npm:^1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 @@ -4932,18 +4700,6 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:^2.2.0": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d574676 - languageName: node - linkType: hard - "react-is@npm:^18.0.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" @@ -4960,18 +4716,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:1.1.x": - version: 1.1.14 - resolution: "readable-stream@npm:1.1.14" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.1 - isarray: 0.0.1 - string_decoder: ~0.10.x - checksum: 17dfeae3e909945a4a1abc5613ea92d03269ef54c49288599507fc98ff4615988a1c39a999dcf9aacba70233d9b7040bc11a5f2bfc947e262dedcc0a8b32b5a0 - languageName: node - linkType: hard - "readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" @@ -5034,28 +4778,28 @@ __metadata: linkType: hard "resolve@npm:^1.20.0, resolve@npm:^1.22.1": - version: 1.22.3 - resolution: "resolve@npm:1.22.3" + version: 1.22.4 + resolution: "resolve@npm:1.22.4" dependencies: - is-core-module: ^2.12.0 + is-core-module: ^2.13.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: fb834b81348428cb545ff1b828a72ea28feb5a97c026a1cf40aa1008352c72811ff4d4e71f2035273dc536dcfcae20c13604ba6283c612d70fa0b6e44519c374 + checksum: 23f25174c2736ce24c6d918910e0d1f89b6b38fefa07a995dff864acd7863d59a7f049e691f93b4b2ee29696303390d921552b6d1b841ed4a8101f517e1d0124 languageName: node linkType: hard "resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": - version: 1.22.3 - resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=07638b" + version: 1.22.4 + resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin::version=1.22.4&hash=07638b" dependencies: - is-core-module: ^2.12.0 + is-core-module: ^2.13.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: ad59734723b596d0891321c951592ed9015a77ce84907f89c9d9307dd0c06e11a67906a3e628c4cae143d3e44898603478af0ddeb2bba3f229a9373efe342665 + checksum: c45f2545fdc4d21883861b032789e20aa67a2f2692f68da320cc84d5724cd02f2923766c5354b3210897e88f1a7b3d6d2c7c22faeead8eed7078e4c783a444bc languageName: node linkType: hard @@ -5134,7 +4878,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -5143,7 +4887,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.2, semver@npm:^7.3.5, semver@npm:^7.5.3": +"semver@npm:^7.2, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:~7.5.0": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -5154,15 +4898,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:~7.2.0": - version: 7.2.3 - resolution: "semver@npm:7.2.3" - bin: - semver: bin/semver.js - checksum: e6a27b19853bb07829f863782647408afc20698f6a2b2cce9c60d1f4465cfc38848c47d9e8bbadc48dd62d096b9a4e7fd841e91274f307cb3a9d83a381c10b26 - languageName: node - linkType: hard - "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -5252,9 +4987,9 @@ __metadata: linkType: hard "signal-exit@npm:^4.0.1": - version: 4.0.2 - resolution: "signal-exit@npm:4.0.2" - checksum: 41f5928431cc6e91087bf0343db786a6313dd7c6fd7e551dbc141c95bb5fb26663444fd9df8ea47c5d7fc202f60aa7468c3162a9365cbb0615fc5e1b1328fe31 + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 languageName: node linkType: hard @@ -5279,17 +5014,6 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:5, socks-proxy-agent@npm:^5.0.0": - version: 5.0.1 - resolution: "socks-proxy-agent@npm:5.0.1" - dependencies: - agent-base: ^6.0.2 - debug: 4 - socks: ^2.3.3 - checksum: 1b60c4977b2fef783f0fc4dc619cd2758aafdb43f3cf679f1e3627cb6c6e752811cee5513ebb4157ad26786033d2f85029440f197d321e8293b38cc5aab01e06 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" @@ -5301,7 +5025,18 @@ __metadata: languageName: node linkType: hard -"socks@npm:^2.3.3, socks@npm:^2.6.2": +"socks-proxy-agent@npm:^8.0.1": + version: 8.0.1 + resolution: "socks-proxy-agent@npm:8.0.1" + dependencies: + agent-base: ^7.0.1 + debug: ^4.3.4 + socks: ^2.7.1 + checksum: f6538fd16cb545094d20b9a1ae97bb2c4ddd150622ad7cc6b64c89c889d8847b7bac179757838ce5487cbac49a499537e3991c975fe13b152b76b10027470dfb + languageName: node + linkType: hard + +"socks@npm:^2.6.2, socks@npm:^2.7.1": version: 2.7.1 resolution: "socks@npm:2.7.1" dependencies: @@ -5353,11 +5088,11 @@ __metadata: linkType: hard "ssri@npm:^10.0.0": - version: 10.0.4 - resolution: "ssri@npm:10.0.4" + version: 10.0.5 + resolution: "ssri@npm:10.0.5" dependencies: - minipass: ^5.0.0 - checksum: fb14da9f8a72b04eab163eb13a9dda11d5962cd2317f85457c4e0b575e9a6e0e3a6a87b5bf122c75cb36565830cd5f263fb457571bf6f1587eb5f95d095d6165 + minipass: ^7.0.3 + checksum: 0a31b65f21872dea1ed3f7c200d7bc1c1b91c15e419deca14f282508ba917cbb342c08a6814c7f68ca4ca4116dd1a85da2bbf39227480e50125a1ceffeecb750 languageName: node linkType: hard @@ -5418,13 +5153,6 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:~0.10.x": - version: 0.10.31 - resolution: "string_decoder@npm:0.10.31" - checksum: fe00f8e303647e5db919948ccb5ce0da7dea209ab54702894dd0c664edd98e5d4df4b80d6fabf7b9e92b237359d21136c95bf068b2f7760b772ca974ba970202 - languageName: node - linkType: hard - "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" @@ -5499,8 +5227,8 @@ __metadata: linkType: hard "systeminformation@npm:^5.7": - version: 5.18.7 - resolution: "systeminformation@npm:5.18.7" + version: 5.18.15 + resolution: "systeminformation@npm:5.18.15" bin: systeminformation: lib/cli.js conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) @@ -5577,9 +5305,9 @@ __metadata: linkType: hard "tslib@npm:^2.0.1": - version: 2.6.0 - resolution: "tslib@npm:2.6.0" - checksum: c01066038f950016a18106ddeca4649b4d76caa76ec5a31e2a26e10586a59fceb4ee45e96719bf6c715648e7c14085a81fee5c62f7e9ebee68e77a5396e5538f + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad languageName: node linkType: hard @@ -5599,15 +5327,6 @@ __metadata: languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: dd3b1495642731bc0e1fc40abe5e977e0263005551ac83342ecb6f4f89551d106b368ec32ad3fb2da19b3bd7b2d1f64330da2ea9176d8ddbfe389fb286eb5124 - languageName: node - linkType: hard - "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -5776,18 +5495,6 @@ __metadata: languageName: node linkType: hard -"vm2@npm:^3.9.17": - version: 3.9.19 - resolution: "vm2@npm:3.9.19" - dependencies: - acorn: ^8.7.0 - acorn-walk: ^8.2.0 - bin: - vm2: bin/vm2 - checksum: fc6cf553134145cd7bb5246985bf242b056e3fb5ea71e2eef6710b2a5d6c6119cc6bc960435ff62480ee82efb43369be8f4db07b6690916ae7d3b2e714f395d8 - languageName: node - linkType: hard - "walk@npm:2.3.15": version: 2.3.15 resolution: "walk@npm:2.3.15" @@ -5860,13 +5567,6 @@ __metadata: languageName: unknown linkType: soft -"word-wrap@npm:~1.2.3": - version: 1.2.5 - resolution: "word-wrap@npm:1.2.5" - checksum: f93ba3586fc181f94afdaff3a6fef27920b4b6d9eaefed0f428f8e07adea2a7f54a5f2830ce59406c8416f033f86902b91eb824072354645eea687dff3691ccb - languageName: node - linkType: hard - "wordwrap@npm:^1.0.0": version: 1.0.0 resolution: "wordwrap@npm:1.0.0" @@ -5950,13 +5650,6 @@ __metadata: languageName: node linkType: hard -"xregexp@npm:2.0.0": - version: 2.0.0 - resolution: "xregexp@npm:2.0.0" - checksum: de62d1f01c9f1a67c80cafe48a3dc081b324249a0e88e65dc9acae9cce6d8e63c9d91c0f97e2ad2d8c5351c856c139c04dc55ebd941e59b7d1d5c1169e164cff - languageName: node - linkType: hard - "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" diff --git a/src/script/util/E2EIdentity/DelayTimer.test.ts b/src/script/util/E2EIdentity/DelayTimer.test.ts deleted file mode 100644 index a623e2a072c..00000000000 --- a/src/script/util/E2EIdentity/DelayTimer.test.ts +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {GracePeriodTimer} from './DelayTimer'; // Update this with your module's actual path -import {ONE_HOUR, FIFTEEN_MINUTES, FOUR_HOURS, ONE_MINUTE} from './helper/delay'; - -jest.mock('Util/Logger', () => ({ - getLogger: () => ({ - info: jest.fn(), - // eslint-disable-next-line no-console - log: console.log, - }), -})); - -describe('createGracePeriodTimer', () => { - let timer: GracePeriodTimer | undefined; - beforeEach(() => { - // Mock the localStorage - const localStorageMock = (function () { - let store: {[key: string]: string} = {}; - return { - getItem: function (key: string) { - return store[key]; - }, - setItem: function (key: string, value: string) { - store[key] = value.toString(); - }, - clear: function () { - store = {}; - }, - removeItem: function (key: string) { - delete store[key]; - }, - }; - })(); - Object.defineProperty(window, 'localStorage', {value: localStorageMock}); - }); - - beforeEach(() => { - jest.useFakeTimers(); - window.localStorage.clear(); - timer = GracePeriodTimer?.getInstance({ - gracePeriodInMS: 0, - gracePeriodExpiredCallback: jest.fn(), - delayPeriodExpiredCallback: jest.fn(), - }); - }); - - afterEach(() => { - timer?.resetInstance(); - timer = undefined; - jest.useRealTimers(); - }); - - it('should call the gracePeriodExpiredCallback when the grace period is over', () => { - const gracePeriodExpiredCallback = jest.fn(); - timer?.updateParams({ - gracePeriodInMS: 1000, - gracePeriodExpiredCallback, - delayPeriodExpiredCallback: jest.fn(), - }); - - jest.advanceTimersByTime(1000); - expect(gracePeriodExpiredCallback).toHaveBeenCalled(); - }); - - it('should call the gracePeriodExpiredCallback only after the delay time is over', () => { - const gracePeriodExpiredCallback = jest.fn(); - - timer?.updateParams({ - gracePeriodInMS: ONE_HOUR, - gracePeriodExpiredCallback, - delayPeriodExpiredCallback: jest.fn(), - }); - - timer?.delayPrompt(); - - jest.advanceTimersByTime(FIFTEEN_MINUTES); - expect(gracePeriodExpiredCallback).not.toHaveBeenCalled(); - - jest.advanceTimersByTime(ONE_HOUR); - expect(gracePeriodExpiredCallback).toHaveBeenCalled(); - }); - - it('should not allow delaying the prompt if the grace period is already over', () => { - const gracePeriodExpiredCallback = jest.fn(); - timer?.updateParams({ - gracePeriodInMS: 0, - gracePeriodExpiredCallback, - delayPeriodExpiredCallback: jest.fn(), - }); - timer?.delayPrompt(); - - jest.advanceTimersByTime(500); - expect(gracePeriodExpiredCallback).toHaveBeenCalled(); - }); - - it('should allow delaying the prompt multiple times within the grace period', () => { - const gracePeriodExpiredCallback = jest.fn(); - timer?.updateParams({ - gracePeriodInMS: 7200000, - gracePeriodExpiredCallback, - delayPeriodExpiredCallback: jest.fn(), - }); - timer?.delayPrompt(); - jest.advanceTimersByTime(3600000); - timer?.delayPrompt(); - jest.advanceTimersByTime(3600000); - - expect(gracePeriodExpiredCallback).toHaveBeenCalled(); - }); - - it('should call the delayPeriodExpiredCallback after a delay based on the grace period', () => { - const delayPeriodExpiredCallback = jest.fn(); - timer?.updateParams({ - gracePeriodInMS: ONE_HOUR, - gracePeriodExpiredCallback: jest.fn(), - delayPeriodExpiredCallback, - }); - - timer?.delayPrompt(); - - // getDelayTime(ONE_HOUR) will return FIFTEEN_MINUTES according to the function provided. - jest.advanceTimersByTime(FIFTEEN_MINUTES); - expect(delayPeriodExpiredCallback).toHaveBeenCalled(); - }); - - it('should not call delayPeriodExpiredCallback if grace period is over', () => { - const delayPeriodExpiredCallback = jest.fn(); - const gracePeriodExpiredCallback = jest.fn(); - timer?.updateParams({ - gracePeriodInMS: ONE_HOUR, - delayPeriodExpiredCallback, - gracePeriodExpiredCallback, - }); - - timer?.delayPrompt(); - - // Here, instead of advancing time by "ONE_HOUR + FIFTEEN_MINUTES", we advance by "ONE_HOUR", which is the end of the grace period. - jest.advanceTimersByTime(ONE_HOUR + FIFTEEN_MINUTES); - expect(delayPeriodExpiredCallback).toHaveBeenCalled(); // The delayPeriodExpiredCallback should be called after ONE_HOUR. - expect(gracePeriodExpiredCallback).toHaveBeenCalled(); // The gracePeriodExpiredCallback should be called when the grace period ends, which is after ONE_HOUR. - - timer?.delayPrompt(); // We try to delay after the grace period has ended. - jest.advanceTimersByTime(FIFTEEN_MINUTES); - expect(delayPeriodExpiredCallback).toHaveBeenCalledTimes(1); // The delayPeriodExpiredCallback should not be called again since we're now past the grace period. - }); - - it('should call delayPeriodExpiredCallback multiple times if delayPrompt is called multiple times within the grace period', () => { - const delayPeriodExpiredCallback = jest.fn(); - timer?.updateParams({ - gracePeriodInMS: FOUR_HOURS, - gracePeriodExpiredCallback: jest.fn(), - delayPeriodExpiredCallback, - }); - - timer?.delayPrompt(); - jest.advanceTimersByTime(ONE_HOUR); // gracePeriod > delay, so delay = ONE_HOUR - - timer?.delayPrompt(); - jest.advanceTimersByTime(ONE_HOUR); - - timer?.delayPrompt(); - jest.advanceTimersByTime(ONE_HOUR); - - expect(delayPeriodExpiredCallback).toHaveBeenCalledTimes(3); - }); - - it('should not execute the delayPrompt() if the grace period is over', () => { - const delayPeriodExpiredCallback = jest.fn(); - const gracePeriodExpiredCallback = jest.fn(); - timer?.updateParams({ - gracePeriodInMS: ONE_MINUTE, - gracePeriodExpiredCallback, - delayPeriodExpiredCallback, - }); - - timer?.delayPrompt(); - jest.advanceTimersByTime(ONE_MINUTE); - - expect(delayPeriodExpiredCallback).not.toHaveBeenCalled(); - expect(gracePeriodExpiredCallback).toHaveBeenCalled(); - }); -}); diff --git a/src/script/util/E2EIdentity/DelayTimer.ts b/src/script/util/E2EIdentity/DelayTimer.ts deleted file mode 100644 index 95891f04a5e..00000000000 --- a/src/script/util/E2EIdentity/DelayTimer.ts +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {TaskScheduler} from '@wireapp/core/lib/util/TaskScheduler'; - -import {getLogger} from 'Util/Logger'; - -import {getDelayTime} from './helper/delay'; -import {DelayTimerStore} from './helper/storage'; - -const logger = getLogger('E2EIdentity.DelayTimer'); - -interface CreateGracePeriodTimerParams { - gracePeriodInMS: number; - gracePeriodExpiredCallback: () => void; - delayPeriodExpiredCallback: () => void; -} - -class GracePeriodTimer { - private static instance: GracePeriodTimer | null = null; - private gracePeriodInMS: number; - private gracePeriodExpiredCallback: () => void; - private delayPeriodExpiredCallback: () => void; - private delayPeriodTimerKey: string = 'E2EIdentity_DelayTimer'; - private gracePeriodTimerKey: string = 'E2EIdentity_GracePeriodTimer'; - - private constructor({ - gracePeriodInMS, - gracePeriodExpiredCallback, - delayPeriodExpiredCallback, - }: CreateGracePeriodTimerParams) { - this.gracePeriodInMS = gracePeriodInMS; - this.gracePeriodExpiredCallback = gracePeriodExpiredCallback; - this.delayPeriodExpiredCallback = delayPeriodExpiredCallback; - this.initialize(); - } - - /** - * Get the singleton instance of GracePeriodTimer or create a new one - * For the first time, params are required to create the instance - * After that, params are optional and can be used to update the grace period timer - * @param params The params to create the grace period timer - * @returns The singleton instance of GracePeriodTimer - */ - public static getInstance(params?: CreateGracePeriodTimerParams) { - if (!GracePeriodTimer.instance) { - if (!params) { - throw new Error('GracePeriodTimer is not initialized. Please call getInstance with params.'); - } - GracePeriodTimer.instance = new GracePeriodTimer(params); - } - return GracePeriodTimer.instance; - } - - /** - * @param CreateGracePeriodTimerParams The params to create the grace period timer - */ - public updateParams({ - gracePeriodInMS, - gracePeriodExpiredCallback, - delayPeriodExpiredCallback, - }: CreateGracePeriodTimerParams) { - DelayTimerStore.clear.all(); - this.clearGracePeriodTimer(); - this.clearDelayPeriodTimer(); - this.gracePeriodInMS = gracePeriodInMS; - this.gracePeriodExpiredCallback = gracePeriodExpiredCallback; - this.delayPeriodExpiredCallback = delayPeriodExpiredCallback; - this.initialize(); - } - - /** - * Initialize the grace period timer and load saved data from local storage if available - */ - public initialize() { - if (this.gracePeriodInMS <= 0) { - return this.exit('Grace period is 0. No delays are allowed.'); - } - - // Check if grace period has changed - if (DelayTimerStore.get.gracePeriod() !== this.gracePeriodInMS) { - // Check if grace period is less than the time elapsed since the last prompt - if (this.gracePeriodInMS < this.getElapsedGracePeriod()) { - return this.exit( - 'Grace period has changed and is less than the time elapsed since the last prompt. No more delays are allowed.', - ); - } - this.updateGracePeriod(); - } - - // Load saved data from local storage - if (DelayTimerStore.get.firingDate()) { - const currentTime = Date.now(); - if (DelayTimerStore.get.firingDate() <= currentTime) { - return this.exit('Grace period is already over. No more delays are allowed.'); - } - } else { - const firingDate = Date.now() + this.gracePeriodInMS; - DelayTimerStore.set.firingDate(firingDate); - DelayTimerStore.set.gracePeriod(this.gracePeriodInMS); - } - - // Start / restart the grace period timer - this.startGracePeriod(DelayTimerStore.get.firingDate()); - - // this will start the delay period timer if it was active before - this.continueDelayPeriodTimer(); - } - - /** - * Prompt the user to delay the enrollment - */ - public delayPrompt() { - if (this.isDelayTimerActive()) { - return; - } - if (!this.isSnoozeTimeAvailable()) { - return this.exit('No more delays are allowed.'); - } - const delayTimeInMS = getDelayTime(this.gracePeriodInMS); - if (delayTimeInMS <= 0) { - return this.exit('Delay period is 0. No more delays are allowed.'); - } - - if (DelayTimerStore.get.firingDate() <= Date.now()) { - return this.exit('Grace period is already over. No more delays are allowed.'); - } - - this.startDelayPeriod(Date.now() + delayTimeInMS); - } - - /** - * Update the grace period - */ - private updateGracePeriod() { - // Store the new grace period - DelayTimerStore.set.gracePeriod(this.gracePeriodInMS); - const elapsedGracePeriod = this.getElapsedGracePeriod(); - - // Check if grace period is already over - if (elapsedGracePeriod > this.gracePeriodInMS) { - return this.exit('Grace period is already over. No more delays are allowed.'); - } - - // Update the remaining grace period - this.gracePeriodInMS -= elapsedGracePeriod; - const startTime = Date.now(); - // Calculate the new end time - const firingDate = startTime + this.gracePeriodInMS; - // Store the new end time - DelayTimerStore.set.firingDate(firingDate); - - this.startGracePeriod(firingDate); - } - - /** - * Exit the function - * @param exitMessage The exit message - * @returns Calls the gracePeriodExpiredCallback - */ - private exit(exitMessage: string) { - logger.info(exitMessage); - this.clearDelayPeriodTimer(); - this.clearGracePeriodTimer(); - DelayTimerStore.clear.all(); - return this.gracePeriodExpiredCallback(); - } - - /** - * Start the grace period timer and store the grace period - * @param gracePeriodInMS The grace period in ms - */ - private startGracePeriod(firingDate: number) { - this.clearGracePeriodTimer(); - - const task = () => { - return this.exit('Grace period is over. No more delays are allowed.'); - }; - - if (TaskScheduler.hasActiveTask(this.gracePeriodTimerKey)) { - TaskScheduler.continueTask({ - key: this.gracePeriodTimerKey, - task, - }); - } else { - TaskScheduler.addTask({ - key: this.gracePeriodTimerKey, - task, - firingDate, - persist: true, - }); - } - } - - /** - * Start the delay period timer and store the delay time - * @param delayTimeInMS The delay time in ms - */ - private startDelayPeriod(firingDate?: number) { - this.clearDelayPeriodTimer(); - - const task = () => { - logger.info('Delay time is over.'); - return this.delayPeriodExpiredCallback(); - }; - - if (TaskScheduler.hasActiveTask(this.delayPeriodTimerKey)) { - TaskScheduler.continueTask({ - key: this.delayPeriodTimerKey, - task, - }); - } else if (firingDate) { - TaskScheduler.addTask({ - key: this.delayPeriodTimerKey, - task, - firingDate, - persist: true, - }); - } - } - - /** - * Clear the current grace period timer - */ - private clearGracePeriodTimer() { - TaskScheduler.cancelTask(this.gracePeriodTimerKey); - } - - /** - * Clear the current delay period timer - */ - private clearDelayPeriodTimer() { - TaskScheduler.cancelTask(this.delayPeriodTimerKey); - } - - private continueDelayPeriodTimer() { - this.startDelayPeriod(); - } - - /** - * Get the time elapsed since the last prompt - * @returns The time elapsed since the last prompt in ms - */ - private getElapsedGracePeriod() { - return DelayTimerStore.get.firingDate() - ? Date.now() - (DelayTimerStore.get.firingDate() - this.gracePeriodInMS) - : 0; - } - - /** - * Reset the instance - */ - public resetInstance() { - DelayTimerStore.clear.all(); - this.clearGracePeriodTimer(); - this.clearDelayPeriodTimer(); - GracePeriodTimer.instance = null; - } - - public isDelayTimerActive() { - return TaskScheduler.hasActiveTask(this.delayPeriodTimerKey); - } - - public isSnoozeTimeAvailable() { - const remainingTime = DelayTimerStore.get.firingDate() - Date.now(); - const delayTime = getDelayTime(remainingTime); - return remainingTime - delayTime > 0; - } -} - -export {GracePeriodTimer}; diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/util/E2EIdentity/E2EIdentity.ts index eef806c6f27..b2242e67dbc 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.ts @@ -19,15 +19,12 @@ import {container} from 'tsyringe'; -import {AcmeStorage} from '@wireapp/core'; - import {PrimaryModal, removeCurrentModal} from 'Components/Modals/PrimaryModal'; import {Config} from 'src/script/Config'; import {Core} from 'src/script/service/CoreSingleton'; import {UserState} from 'src/script/user/UserState'; import {supportsMLS} from 'Util/util'; -import {GracePeriodTimer} from './DelayTimer'; import {removeUrlParameters} from './helper/uri'; import {getModalOptions, ModalType} from './Modals'; @@ -47,7 +44,8 @@ interface E2EIHandlerParams { class E2EIHandler { private static instance: E2EIHandler | null = null; - private timer: GracePeriodTimer; + private readonly core = container.resolve(Core); + private timer: ReturnType; private discoveryUrl: string; private gracePeriodInMS: number; private currentStep: E2EIHandlerStep | null = E2EIHandlerStep.UNINITIALIZED; @@ -56,11 +54,7 @@ class E2EIHandler { // ToDo: Do these values need to te able to be updated? Should we use a singleton with update fn? this.discoveryUrl = discoveryUrl; this.gracePeriodInMS = gracePeriodInMS; - this.timer = GracePeriodTimer.getInstance({ - delayPeriodExpiredCallback: () => null, - gracePeriodExpiredCallback: () => null, - gracePeriodInMS, - }); + this.timer = this.core.e2eiUtils.getDelayTimerInstance(gracePeriodInMS); } /** @@ -93,17 +87,13 @@ class E2EIHandler { public updateParams({gracePeriodInMS, discoveryUrl}: E2EIHandlerParams) { this.gracePeriodInMS = gracePeriodInMS; this.discoveryUrl = discoveryUrl; - this.timer = GracePeriodTimer.getInstance({ - delayPeriodExpiredCallback: () => null, - gracePeriodExpiredCallback: () => null, - gracePeriodInMS, - }); + this.timer = this.core.e2eiUtils.getDelayTimerInstance(gracePeriodInMS); this.initialize(); } public initialize(): void { if (this.isE2EIEnabled) { - if (!AcmeStorage.hasCertificateData()) { + if (!this.core.e2eiUtils.hasActiveCertificate()) { this.showE2EINotificationMessage(); } } @@ -116,11 +106,14 @@ class E2EIHandler { private async enrollE2EI() { try { const userState = container.resolve(UserState); - const core = container.resolve(Core); // Notify user about E2EI enrollment in progress this.currentStep = E2EIHandlerStep.ENROLL; this.showLoadingMessage(); - const success = await core.enrollE2EI(userState.self().name(), userState.self().username(), this.discoveryUrl); + const success = await this.core.enrollE2EI( + userState.self().name(), + userState.self().username(), + this.discoveryUrl, + ); if (!success) { throw new Error('E2EI enrollment failed'); } @@ -190,7 +183,7 @@ class E2EIHandler { private showE2EINotificationMessage(): void { // If the user has already started enrollment, don't show the notification. Instead, show the loading modal // This will occur after the redirect from the oauth provider - if (AcmeStorage.hasHandle()) { + if (this.core.e2eiUtils.isEnrollmentInProgress()) { this.showLoadingMessage(); void this.enrollE2EI(); return; diff --git a/src/script/util/E2EIdentity/helper/delay.ts b/src/script/util/E2EIdentity/helper/delay.ts deleted file mode 100644 index 7afc9ab2536..00000000000 --- a/src/script/util/E2EIdentity/helper/delay.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -/* eslint-disable no-magic-numbers */ - -import {TIME_IN_MILLIS} from 'Util/TimeUtil'; - -export const ONE_MINUTE = TIME_IN_MILLIS.MINUTE; -export const FIVE_MINUTES = TIME_IN_MILLIS.MINUTE * 5; -export const FIFTEEN_MINUTES = TIME_IN_MILLIS.MINUTE * 15; -export const ONE_HOUR = TIME_IN_MILLIS.HOUR; -export const FOUR_HOURS = TIME_IN_MILLIS.HOUR * 4; -export const ONE_DAY = TIME_IN_MILLIS.DAY; - -export function getDelayTime(gracePeriodInMs: number): number { - if (gracePeriodInMs > 0) { - if (gracePeriodInMs <= FIFTEEN_MINUTES) { - return Math.min(FIVE_MINUTES, gracePeriodInMs); - } else if (gracePeriodInMs <= ONE_HOUR) { - return Math.min(FIFTEEN_MINUTES, gracePeriodInMs); - } else if (gracePeriodInMs <= FOUR_HOURS) { - return Math.min(ONE_HOUR, gracePeriodInMs); - } else if (gracePeriodInMs <= ONE_DAY) { - return Math.min(FOUR_HOURS, gracePeriodInMs); - } - return Math.min(ONE_DAY, gracePeriodInMs); - } - return 0; -} diff --git a/src/script/util/E2EIdentity/helper/storage.ts b/src/script/util/E2EIdentity/helper/storage.ts deleted file mode 100644 index 46183fb97bc..00000000000 --- a/src/script/util/E2EIdentity/helper/storage.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -const FiringDateKey = 'E2EIdentity_DelayTimer_FiringDate'; -const GracePeriodKey = 'E2EIdentity_DelayTimer_GracePeriod'; - -const DelayTimerStore = { - set: { - firingDate: (firingDate: number) => localStorage.setItem(FiringDateKey, String(firingDate)), - gracePeriod: (gracePeriod: number) => localStorage.setItem(GracePeriodKey, String(gracePeriod)), - }, - get: { - firingDate: () => Number(localStorage.getItem(FiringDateKey)), - gracePeriod: () => Number(localStorage.getItem(GracePeriodKey)), - }, - clear: { - firingDate: () => localStorage.removeItem(FiringDateKey), - gracePeriod: () => localStorage.removeItem(GracePeriodKey), - all: () => { - DelayTimerStore.clear.firingDate(); - DelayTimerStore.clear.gracePeriod(); - }, - }, -}; - -export {DelayTimerStore}; diff --git a/yarn.lock b/yarn.lock index 810b178f02a..0c046b4f423 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,3 +1,6 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + __metadata: version: 6 cacheKey: 8 @@ -42,15 +45,6 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/code-frame@npm:7.22.5" - dependencies: - "@babel/highlight": ^7.22.5 - checksum: cfe804f518f53faaf9a1d3e0f9f74127ab9a004912c3a16fda07fb6a633393ecb9918a053cb71804204c1b7ec3d49e1699604715e2cfb0c9f7bc4933d324ebb6 - languageName: node - linkType: hard - "@babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": version: 7.22.9 resolution: "@babel/compat-data@npm:7.22.9" @@ -81,29 +75,6 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:7.22.9, @babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": - version: 7.22.9 - resolution: "@babel/core@npm:7.22.9" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.10 - "@babel/generator": ^7.22.10 - "@babel/helper-compilation-targets": ^7.22.10 - "@babel/helper-module-transforms": ^7.22.9 - "@babel/helpers": ^7.22.10 - "@babel/parser": ^7.22.10 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.10 - "@babel/types": ^7.22.10 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.2 - semver: ^6.3.1 - checksum: cc4efa09209fe1f733cf512e9e4bb50870b191ab2dee8014e34cd6e731f204e48476cc53b4bbd0825d4d342304d577ae43ff5fd8ab3896080673c343321acb32 - languageName: node - linkType: hard - "@babel/eslint-parser@npm:7.22.10": version: 7.22.10 resolution: "@babel/eslint-parser@npm:7.22.10" @@ -118,20 +89,6 @@ __metadata: languageName: node linkType: hard -"@babel/eslint-parser@npm:7.22.9": - version: 7.22.9 - resolution: "@babel/eslint-parser@npm:7.22.9" - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 - eslint-visitor-keys: ^2.1.0 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 - checksum: 56f53da0e3d22af13b0a11644e646416938cd9c536efbfc23809eb95c2a1f7f14109b2fd46b7b077032a7e21d3f67cd1857345486880bd6dfd718ea5d89be779 - languageName: node - linkType: hard - "@babel/generator@npm:^7.22.10, @babel/generator@npm:^7.7.2": version: 7.22.10 resolution: "@babel/generator@npm:7.22.10" @@ -144,18 +101,6 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.7.2": - version: 7.22.9 - resolution: "@babel/generator@npm:7.22.9" - dependencies: - "@babel/types": ^7.22.5 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 7c9d2c58b8d5ac5e047421a6ab03ec2ff5d9a5ff2c2212130a0055e063ac349e0b19d435537d6886c999771aef394832e4f54cd9fc810100a7f23d982f6af06b - languageName: node - linkType: hard - "@babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" @@ -187,19 +132,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-compilation-targets@npm:7.22.9" - dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-validator-option": ^7.22.5 - browserslist: ^4.21.9 - lru-cache: ^5.1.1 - semver: ^6.3.1 - checksum: f6f1896816392bcff671bbe6e277307729aee53befb4a66ea126e2a91eda78d819a70d06fa384c74ef46c1595544b94dca50bef6c78438d9ffd31776dafbd435 - languageName: node - linkType: hard - "@babel/helper-create-class-features-plugin@npm:^7.22.10, @babel/helper-create-class-features-plugin@npm:^7.22.5": version: 7.22.10 resolution: "@babel/helper-create-class-features-plugin@npm:7.22.10" @@ -219,25 +151,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.22.6, @babel/helper-create-class-features-plugin@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.9" - dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-member-expression-to-functions": ^7.22.5 - "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 6c2436d1a5a3f1ff24628d78fa8c6d3120c40285aa3eda7815b1adbf8c5951e0dd73d368cf845825888fa3dc2f207dadce53309825598d7c67953e5ed9dd51d2 - languageName: node - linkType: hard - "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": version: 7.22.9 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.9" @@ -341,19 +254,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.22.5": - version: 7.22.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.22.9" - dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-wrap-function": ^7.22.9 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 05538079447829b13512157491cc77f9cf1ea7e1680e15cff0682c3ed9ee162de0c4862ece20a6d6b2df28177a1520bcfe45993fbeccf2747a81795a7c3f6290 - languageName: node - linkType: hard - "@babel/helper-remap-async-to-generator@npm:^7.22.5, @babel/helper-remap-async-to-generator@npm:^7.22.9": version: 7.22.9 resolution: "@babel/helper-remap-async-to-generator@npm:7.22.9" @@ -450,17 +350,6 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helpers@npm:7.22.6" - dependencies: - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.10 - "@babel/types": ^7.22.10 - checksum: 3b1219e362df390b6c5d94b75a53fc1c2eb42927ced0b8022d6a29b833a839696206b9bdad45b4805d05591df49fc16b6fb7db758c9c2ecfe99e3e94cb13020f - languageName: node - linkType: hard - "@babel/highlight@npm:^7.22.10": version: 7.22.10 resolution: "@babel/highlight@npm:7.22.10" @@ -472,17 +361,6 @@ __metadata: languageName: node linkType: hard -"@babel/highlight@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/highlight@npm:7.22.5" - dependencies: - "@babel/helper-validator-identifier": ^7.22.5 - chalk: ^2.4.2 - js-tokens: ^4.0.0 - checksum: f714a1e1a72dd9d72f6383f4f30fd342e21a8df32d984a4ea8f5eab691bb6ba6db2f8823d4b4cf135d98869e7a98925b81306aa32ee3c429f8cfa52c75889e1b - languageName: node - linkType: hard - "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.10, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.9.4": version: 7.22.10 resolution: "@babel/parser@npm:7.22.10" @@ -492,15 +370,6 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.22.7, @babel/parser@npm:^7.9.4": - version: 7.22.7 - resolution: "@babel/parser@npm:7.22.7" - bin: - parser: ./bin/babel-parser.js - checksum: 02209ddbd445831ee8bf966fdf7c29d189ed4b14343a68eb2479d940e7e3846340d7cc6bd654a5f3d87d19dc84f49f50a58cf9363bee249dc5409ff3ba3dab54 - languageName: node - linkType: hard - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.5" @@ -540,21 +409,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-decorators@npm:7.22.7": - version: 7.22.7 - resolution: "@babel/plugin-proposal-decorators@npm:7.22.7" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.6 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.9 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/plugin-syntax-decorators": ^7.22.10 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d9d6f7cc8b3f1450963d3f26909af025836189b81e43c48ad455db5db2319beaf4ad2fda5aa12a1afcf856de11ecd5ee6894a9e906e8de8ee445c79102b50d26 - languageName: node - linkType: hard - "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": version: 7.21.0-placeholder-for-preset-env.2 resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" @@ -564,18 +418,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a8575ecb7ff24bf6c6e94808d5c84bb5a0c6dd7892b54f09f4646711ba0ee1e1668032b3c43e3e1dfec2c5716c302e851ac756c1645e15882d73df6ad21ae951 - languageName: node - linkType: hard - "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -879,17 +721,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-block-scoping@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b1d06f358dedcb748a57e5feea4b9285c60593fb2912b921f22898c57c552c78fe18128678c8f84dd4ea1d4e5aebede8783830b24cd63f22c30261156d78bc77 - languageName: node - linkType: hard - "@babel/plugin-transform-class-properties@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-class-properties@npm:7.22.5" @@ -957,17 +788,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-destructuring@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 76f6ea2aee1fcfa1c3791eb7a5b89703c6472650b993e8666fff0f1d6e9d737a84134edf89f63c92297f3e75064c1263219463b02dd9bc7434b6e5b9935e3f20 - languageName: node - linkType: hard - "@babel/plugin-transform-dotall-regex@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" @@ -980,18 +800,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.22.5, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.22.5 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 409b658d11e3082c8f69e9cdef2d96e4d6d11256f005772425fb230cc48fd05945edbfbcb709dab293a1a2f01f9c8a5bb7b4131e632b23264039d9f95864b453 - languageName: node - linkType: hard - "@babel/plugin-transform-duplicate-keys@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-duplicate-keys@npm:7.22.5" @@ -1259,19 +1067,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.22.5, @babel/plugin-transform-optional-chaining@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.6" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9713f7920ed04090c149fc5ec024dd1638e8b97aa4ae3753b93072d84103b8de380afb96d6cf03e53b285420db4f705f3ac13149c6fd54f322b61dc19e33c54f - languageName: node - linkType: hard - "@babel/plugin-transform-parameters@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-parameters@npm:7.22.5" @@ -1381,18 +1176,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - regenerator-transform: ^0.15.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f7c5ca5151321963df777cc02725d10d1ccc3b3b8323da0423aecd9ac6144cbdd2274af5281a5580db2fc2f8b234e318517b5d76b85669118906533a559f2b6a - languageName: node - linkType: hard - "@babel/plugin-transform-reserved-words@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-reserved-words@npm:7.22.5" @@ -1485,17 +1268,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 807f40ed1324c8cb107c45358f1903384ca3f0ef1d01c5a3c5c9b271c8d8eec66936a3dcc8d75ddfceea9421420368c2e77ae3adef0a50557e778dfe296bf382 - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-property-regex@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.22.5" @@ -1622,125 +1394,22 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:7.22.9, @babel/preset-env@npm:^7.11.0": - version: 7.22.9 - resolution: "@babel/preset-env@npm:7.22.9" - dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-compilation-targets": ^7.22.10 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-option": ^7.22.5 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.5 - "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - "@babel/plugin-syntax-import-assertions": ^7.22.5 - "@babel/plugin-syntax-import-attributes": ^7.22.5 - "@babel/plugin-syntax-import-meta": ^7.10.4 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 - "@babel/plugin-transform-arrow-functions": ^7.22.5 - "@babel/plugin-transform-async-generator-functions": ^7.22.10 - "@babel/plugin-transform-async-to-generator": ^7.22.5 - "@babel/plugin-transform-block-scoped-functions": ^7.22.5 - "@babel/plugin-transform-block-scoping": ^7.22.10 - "@babel/plugin-transform-class-properties": ^7.22.5 - "@babel/plugin-transform-class-static-block": ^7.22.5 - "@babel/plugin-transform-classes": ^7.22.6 - "@babel/plugin-transform-computed-properties": ^7.22.5 - "@babel/plugin-transform-destructuring": ^7.22.10 - "@babel/plugin-transform-dotall-regex": ^7.22.5 - "@babel/plugin-transform-duplicate-keys": ^7.22.5 - "@babel/plugin-transform-dynamic-import": ^7.22.5 - "@babel/plugin-transform-exponentiation-operator": ^7.22.5 - "@babel/plugin-transform-export-namespace-from": ^7.22.5 - "@babel/plugin-transform-for-of": ^7.22.5 - "@babel/plugin-transform-function-name": ^7.22.5 - "@babel/plugin-transform-json-strings": ^7.22.5 - "@babel/plugin-transform-literals": ^7.22.5 - "@babel/plugin-transform-logical-assignment-operators": ^7.22.5 - "@babel/plugin-transform-member-expression-literals": ^7.22.5 - "@babel/plugin-transform-modules-amd": ^7.22.5 - "@babel/plugin-transform-modules-commonjs": ^7.22.5 - "@babel/plugin-transform-modules-systemjs": ^7.22.5 - "@babel/plugin-transform-modules-umd": ^7.22.5 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.22.5 - "@babel/plugin-transform-new-target": ^7.22.5 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.5 - "@babel/plugin-transform-numeric-separator": ^7.22.5 - "@babel/plugin-transform-object-rest-spread": ^7.22.5 - "@babel/plugin-transform-object-super": ^7.22.5 - "@babel/plugin-transform-optional-catch-binding": ^7.22.5 - "@babel/plugin-transform-optional-chaining": ^7.22.10 - "@babel/plugin-transform-parameters": ^7.22.5 - "@babel/plugin-transform-private-methods": ^7.22.5 - "@babel/plugin-transform-private-property-in-object": ^7.22.5 - "@babel/plugin-transform-property-literals": ^7.22.5 - "@babel/plugin-transform-regenerator": ^7.22.10 - "@babel/plugin-transform-reserved-words": ^7.22.5 - "@babel/plugin-transform-shorthand-properties": ^7.22.5 - "@babel/plugin-transform-spread": ^7.22.5 - "@babel/plugin-transform-sticky-regex": ^7.22.5 - "@babel/plugin-transform-template-literals": ^7.22.5 - "@babel/plugin-transform-typeof-symbol": ^7.22.5 - "@babel/plugin-transform-unicode-escapes": ^7.22.10 - "@babel/plugin-transform-unicode-property-regex": ^7.22.5 - "@babel/plugin-transform-unicode-regex": ^7.22.5 - "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 - "@babel/preset-modules": 0.1.6-no-external-plugins - "@babel/types": ^7.22.10 - babel-plugin-polyfill-corejs2: ^0.4.5 - babel-plugin-polyfill-corejs3: ^0.8.3 - babel-plugin-polyfill-regenerator: ^0.5.2 - core-js-compat: ^3.31.0 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4145a660a7b05e21e6d8b6cdf348c6931238abb15282a258bdb5e04cd3cca9356dc120ecfe0d1b977819ade4aac50163127c86db2300227ff60392d24daa0b7c - languageName: node - linkType: hard - -"@babel/preset-modules@npm:0.1.6-no-external-plugins": - version: 0.1.6-no-external-plugins - resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@babel/types": ^7.4.4 - esutils: ^2.0.2 - peerDependencies: - "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 - checksum: 4855e799bc50f2449fb5210f78ea9e8fd46cf4f242243f1e2ed838e2bd702e25e73e822e7f8447722a5f4baa5e67a8f7a0e403f3e7ce04540ff743a9c411c375 - languageName: node - linkType: hard - -"@babel/preset-modules@npm:^0.1.5": - version: 0.1.6 - resolution: "@babel/preset-modules@npm:0.1.6" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@babel/types": ^7.4.4 - esutils: ^2.0.2 - peerDependencies: - "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 - checksum: 9700992d2b9526e703ab49eb8c4cd0b26bec93594d57c6b808967619df1a387565e0e58829b65b5bd6d41049071ea0152c9195b39599515fddb3e52b09a55ff0 - languageName: node - linkType: hard - -"@babel/preset-react@npm:7.22.5": - version: 7.22.5 - resolution: "@babel/preset-react@npm:7.22.5" +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@babel/types": ^7.4.4 + esutils: ^2.0.2 + peerDependencies: + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 4855e799bc50f2449fb5210f78ea9e8fd46cf4f242243f1e2ed838e2bd702e25e73e822e7f8447722a5f4baa5e67a8f7a0e403f3e7ce04540ff743a9c411c375 + languageName: node + linkType: hard + +"@babel/preset-react@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/preset-react@npm:7.22.5" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-validator-option": ^7.22.5 @@ -1777,15 +1446,6 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.22.6 - resolution: "@babel/runtime@npm:7.22.6" - dependencies: - regenerator-runtime: ^0.13.11 - checksum: e585338287c4514a713babf4fdb8fc2a67adcebab3e7723a739fc62c79cfda875b314c90fd25f827afb150d781af97bc16c85bfdbfa2889f06053879a1ddb597 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.22.10 resolution: "@babel/runtime@npm:7.22.10" dependencies: @@ -1823,24 +1483,6 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8": - version: 7.22.8 - resolution: "@babel/traverse@npm:7.22.8" - dependencies: - "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.7 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.22.10 - "@babel/types": ^7.22.10 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 9f7b358563bfb0f57ac4ed639f50e5c29a36b821a1ce1eea0c7db084f5b925e3275846d0de63bde01ca407c85d9804e0efbe370d92cd2baaafde3bd13b0f4cdb - languageName: node - linkType: hard - "@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.22.10 resolution: "@babel/types@npm:7.22.10" @@ -1852,17 +1494,6 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.22.5 - resolution: "@babel/types@npm:7.22.5" - dependencies: - "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.5 - to-fast-properties: ^2.0.0 - checksum: 095c4f4b7503fa816e4094113f0ec2351ef96ff32012010b771693066ff628c7c664b21c6bd3fb93aeb46fe7c61f6b3a3c9e4ed0034d6a2481201c417371c8af - languageName: node - linkType: hard - "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -1955,13 +1586,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-ada@npm:^4.0.1": - version: 4.0.2 - resolution: "@cspell/dict-ada@npm:4.0.2" - checksum: 847729d40022db4df698aa9511c6b9073954f71268b64ad4fa354e6ac3eb5b03486bcb566ecadd4bccbebb4f188752eff2b2bdd9021b58dbf2cd61cd6a426752 - languageName: node - linkType: hard - "@cspell/dict-ada@npm:^4.0.2": version: 4.0.2 resolution: "@cspell/dict-ada@npm:4.0.2" @@ -1990,20 +1614,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-companies@npm:^3.0.9": - version: 3.0.17 - resolution: "@cspell/dict-companies@npm:3.0.17" - checksum: 39d6425773becf4c51771d573cc3731f82a369d3ab063862d750183397e9a291de1ddd365ea45fe258722f3a34830941dd9f575d699ce0ba15cd6304e26c9111 - languageName: node - linkType: hard - -"@cspell/dict-cpp@npm:^5.0.2": - version: 5.0.4 - resolution: "@cspell/dict-cpp@npm:5.0.4" - checksum: 087fd0225626033c5395363aebaa913052892bb0f23d8c499de4b9b532f8f05978d7fb3b6ab2a4800085fb7b4d3a17e6fc9a3785cb2a25cdcbca6c006655a999 - languageName: node - linkType: hard - "@cspell/dict-cpp@npm:^5.0.4": version: 5.0.4 resolution: "@cspell/dict-cpp@npm:5.0.4" @@ -2025,13 +1635,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-css@npm:^4.0.5": - version: 4.0.6 - resolution: "@cspell/dict-css@npm:4.0.6" - checksum: fc816014e4dfd78d4a00cd311c8f96657d899e10767766cdcdfbaf61beac8dd4d23e903dc40b679f31da7df03e7d4eb593a81810c50eeddbbb190b0d605160f0 - languageName: node - linkType: hard - "@cspell/dict-css@npm:^4.0.6": version: 4.0.6 resolution: "@cspell/dict-css@npm:4.0.6" @@ -2039,13 +1642,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-dart@npm:^2.0.2": - version: 2.0.3 - resolution: "@cspell/dict-dart@npm:2.0.3" - checksum: 66bfcfa029baacd0b14b3ff5b6ab7597cf9459f77185d88b25123b42a4babb66df6786806843f1b6506c335326100599a2e1db6e6104e66bd021ede9ccb3cec4 - languageName: node - linkType: hard - "@cspell/dict-dart@npm:^2.0.3": version: 2.0.3 resolution: "@cspell/dict-dart@npm:2.0.3" @@ -2053,20 +1649,13 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-data-science@npm:^1.0.0": +"@cspell/dict-data-science@npm:^1.0.11": version: 1.0.11 resolution: "@cspell/dict-data-science@npm:1.0.11" checksum: 513f8f416f584f46576d45be23a4aa354e46d244f10a3d466222ffc13afe475e676639e4a24ab3a1ba157239f9ce23f7eef59c9f4c7a877a044db3a6344b18c6 languageName: node linkType: hard -"@cspell/dict-django@npm:^4.0.2": - version: 4.1.0 - resolution: "@cspell/dict-django@npm:4.1.0" - checksum: b8a66135525e235bd6f2ea02de84ac7eae78e1068418f36b0c2260f9516b72492ef73f3fdc5fe8db2a6933747ff45a3eb743423a7dbf5b74548b1b1f30792679 - languageName: node - linkType: hard - "@cspell/dict-django@npm:^4.1.0": version: 4.1.0 resolution: "@cspell/dict-django@npm:4.1.0" @@ -2074,13 +1663,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-docker@npm:^1.1.6": - version: 1.1.7 - resolution: "@cspell/dict-docker@npm:1.1.7" - checksum: 307f8b5132edca7cd291ba0ab6ed88f8787df984d6a42401b12a0da1ecb935d50af3a108ede885ce5bede96c445acdc88bb9ea8396de151c565a90a3bf66853e - languageName: node - linkType: hard - "@cspell/dict-docker@npm:^1.1.7": version: 1.1.7 resolution: "@cspell/dict-docker@npm:1.1.7" @@ -2095,13 +1677,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-elixir@npm:^4.0.2": - version: 4.0.3 - resolution: "@cspell/dict-elixir@npm:4.0.3" - checksum: f084449b2de5a2fa08076ac699c6073beaa4bb43796a662d681ea8fe5cba31f9efe718f3f98ef432ba75d4ea574316de34ab8422f79f4f2022cfddee7a7b8653 - languageName: node - linkType: hard - "@cspell/dict-elixir@npm:^4.0.3": version: 4.0.3 resolution: "@cspell/dict-elixir@npm:4.0.3" @@ -2123,13 +1698,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-en_us@npm:^4.3.2": - version: 4.3.6 - resolution: "@cspell/dict-en_us@npm:4.3.6" - checksum: 8664230074e5fe22385494f09a351a46f39bc8d9db45aa50293a43b2db54ca3a8837174097b5d0621dd75f38cec5271df022396b0d1857a1b825976d4e0b2f65 - languageName: node - linkType: hard - "@cspell/dict-en_us@npm:^4.3.6": version: 4.3.6 resolution: "@cspell/dict-en_us@npm:4.3.6" @@ -2137,13 +1705,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-filetypes@npm:^3.0.0": - version: 3.0.1 - resolution: "@cspell/dict-filetypes@npm:3.0.1" - checksum: 43ad696dac5feaee290120216153a25f454302bda5834ce5e86dbab5fca73266a35c7fc00466120ae3b696ec1fa94b4f2b36e036dd07f05d5a4a770db7eb5d0a - languageName: node - linkType: hard - "@cspell/dict-filetypes@npm:^3.0.1": version: 3.0.1 resolution: "@cspell/dict-filetypes@npm:3.0.1" @@ -2186,13 +1747,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-golang@npm:^6.0.1": - version: 6.0.2 - resolution: "@cspell/dict-golang@npm:6.0.2" - checksum: 6a2e7dbfc9227a9e848ac2c4777e30460ca73f94c4c245143032aa73188ffa44e1968146ebc0ef3ea0883f69f261876e4fe62a06802cdd12e2ce3c45a74c5aab - languageName: node - linkType: hard - "@cspell/dict-golang@npm:^6.0.2": version: 6.0.2 resolution: "@cspell/dict-golang@npm:6.0.2" @@ -2263,13 +1817,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-npm@npm:^5.0.5": - version: 5.0.7 - resolution: "@cspell/dict-npm@npm:5.0.7" - checksum: 990cd3573bb8c4ed26f46fa1d54cbb034b4554869655391c4c02f9140462e07cbb4f311f762e875a48600ab4564be473ba439d73b9f3c5ce14e02e3448b6dc48 - languageName: node - linkType: hard - "@cspell/dict-npm@npm:^5.0.8": version: 5.0.8 resolution: "@cspell/dict-npm@npm:5.0.8" @@ -2284,13 +1831,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-powershell@npm:^5.0.1": - version: 5.0.2 - resolution: "@cspell/dict-powershell@npm:5.0.2" - checksum: 0591920546caa6965fe1238fe43aa9a9d714594d7149225bebfb0157a337d741603f52f39b2265131d20612617cfccf5da92e04491824d4c395ec664eca98076 - languageName: node - linkType: hard - "@cspell/dict-powershell@npm:^5.0.2": version: 5.0.2 resolution: "@cspell/dict-powershell@npm:5.0.2" @@ -2298,13 +1838,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-public-licenses@npm:^2.0.2": - version: 2.0.3 - resolution: "@cspell/dict-public-licenses@npm:2.0.3" - checksum: f6a9334b528faf0d090554030519c9f498dcfac080c7893e560892dd66f061a4f22d4e3a0353c3737bdf8ed5cc8840da28ab4098e1658863089e202b8c3ba76b - languageName: node - linkType: hard - "@cspell/dict-public-licenses@npm:^2.0.3": version: 2.0.3 resolution: "@cspell/dict-public-licenses@npm:2.0.3" @@ -2312,21 +1845,12 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-python@npm:^4.0.2": - version: 4.1.4 - resolution: "@cspell/dict-python@npm:4.1.4" - dependencies: - "@cspell/dict-data-science": ^1.0.0 - checksum: 40d01f2f8b530bd7d3cc5ca379bc8fb0446ac292e3f0d1ca6bf8ee11aa4d55b27172dbd3a04c32df038e1f41a5f7f80517d66424f0ed069b865ebb11c56dc5b0 - languageName: node - linkType: hard - "@cspell/dict-python@npm:^4.1.5": - version: 4.1.6 - resolution: "@cspell/dict-python@npm:4.1.6" + version: 4.1.7 + resolution: "@cspell/dict-python@npm:4.1.7" dependencies: - "@cspell/dict-data-science": ^1.0.0 - checksum: 28acd5dd3292b0861b1535262f201407f88a6350449b1d08e2a00784d9b3f8995cd7a554e1d53f536ad110aeb03850342d7369e2e61ec0e4a2ec9b19f245efd5 + "@cspell/dict-data-science": ^1.0.11 + checksum: 1fe0d292534f984a90572886084ba1e8404de0878342bd045f4ab808b69c9df69723b7d596c850b28e4db77be9d04ca7432422fefcdc2ba09bbdab735e8c76ed languageName: node linkType: hard @@ -2358,13 +1882,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-software-terms@npm:^3.1.6": - version: 3.2.0 - resolution: "@cspell/dict-software-terms@npm:3.2.0" - checksum: b4990fa65496e18b09cc047b1e509207bd577f705cc57c1928bcd9a35ec3c65b6805aa05fc90af7ab12ca66f1adc412912673d7777d6ca8e5196ca7d5581674f - languageName: node - linkType: hard - "@cspell/dict-software-terms@npm:^3.2.1": version: 3.2.1 resolution: "@cspell/dict-software-terms@npm:3.2.1" @@ -2372,13 +1889,6 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-sql@npm:^2.1.0": - version: 2.1.1 - resolution: "@cspell/dict-sql@npm:2.1.1" - checksum: 12f86a7fae8e26e8032b51c3418200afc53de9159b30fac98d5529fd5002c057597e53a957823c1d17df1d088be731ac6aab8cebccd930b121b4bdb2b30faa58 - languageName: node - linkType: hard - "@cspell/dict-sql@npm:^2.1.1": version: 2.1.1 resolution: "@cspell/dict-sql@npm:2.1.1" @@ -2439,16 +1949,6 @@ __metadata: languageName: node linkType: hard -"@csstools/cascade-layer-name-parser@npm:^1.0.2, @csstools/cascade-layer-name-parser@npm:^1.0.3": - version: 1.0.3 - resolution: "@csstools/cascade-layer-name-parser@npm:1.0.3" - peerDependencies: - "@csstools/css-parser-algorithms": ^2.3.0 - "@csstools/css-tokenizer": ^2.1.1 - checksum: 5fe06884c2247af50345a1044438af62065c11fe5333dbe46e560182484333f9e2206829ae3577e8d4a4f04a98fe0bfa714762af5326a7354924818492f3d9c8 - languageName: node - linkType: hard - "@csstools/cascade-layer-name-parser@npm:^1.0.3, @csstools/cascade-layer-name-parser@npm:^1.0.4": version: 1.0.4 resolution: "@csstools/cascade-layer-name-parser@npm:1.0.4" @@ -2466,16 +1966,6 @@ __metadata: languageName: node linkType: hard -"@csstools/css-calc@npm:^1.1.1, @csstools/css-calc@npm:^1.1.2": - version: 1.1.2 - resolution: "@csstools/css-calc@npm:1.1.2" - peerDependencies: - "@csstools/css-parser-algorithms": ^2.3.0 - "@csstools/css-tokenizer": ^2.1.1 - checksum: 446f376fe9f079dafb103d805e047c9a5de53655f03518eae1bd9e48232596765672469b016eb24f5978ea9cec45d4d7616ea198e27f499b185d913abc8a1837 - languageName: node - linkType: hard - "@csstools/css-calc@npm:^1.1.3": version: 1.1.3 resolution: "@csstools/css-calc@npm:1.1.3" @@ -2486,19 +1976,6 @@ __metadata: languageName: node linkType: hard -"@csstools/css-color-parser@npm:^1.2.0": - version: 1.2.2 - resolution: "@csstools/css-color-parser@npm:1.2.2" - dependencies: - "@csstools/color-helpers": ^3.0.0 - "@csstools/css-calc": ^1.1.2 - peerDependencies: - "@csstools/css-parser-algorithms": ^2.3.0 - "@csstools/css-tokenizer": ^2.1.1 - checksum: f69faf0bafb66647cfe72b88de9b85975c6006727f71a662d5cf886f73e60ac72fdf2ff450be73c0bbc3b86f54abc665f1ff1a008d65d360ff4071814a02d11b - languageName: node - linkType: hard - "@csstools/css-color-parser@npm:^1.2.2": version: 1.2.3 resolution: "@csstools/css-color-parser@npm:1.2.3" @@ -2512,15 +1989,6 @@ __metadata: languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^2.1.1, @csstools/css-parser-algorithms@npm:^2.2.0, @csstools/css-parser-algorithms@npm:^2.3.0": - version: 2.3.0 - resolution: "@csstools/css-parser-algorithms@npm:2.3.0" - peerDependencies: - "@csstools/css-tokenizer": ^2.1.1 - checksum: 3be22a0cfcfe0dc4bb140e2f266590addf21c5052d9e69334da860b3839fbd4369c3d158cbc396032d5ed96d01d2b5d8ebdb5497f75c9830ed9ce99853e3f915 - languageName: node - linkType: hard - "@csstools/css-parser-algorithms@npm:^2.3.0, @csstools/css-parser-algorithms@npm:^2.3.1": version: 2.3.1 resolution: "@csstools/css-parser-algorithms@npm:2.3.1" @@ -2530,13 +1998,6 @@ __metadata: languageName: node linkType: hard -"@csstools/css-tokenizer@npm:^2.1.1": - version: 2.1.1 - resolution: "@csstools/css-tokenizer@npm:2.1.1" - checksum: d6ac4b08d7fdfc146755542f00b208af7248efd6cf2eb0f0f7d2ba3583a81f08ed9be6047d78b046925708b5bd0886f487edeeee2f90f0f34030dcbef4122d0e - languageName: node - linkType: hard - "@csstools/css-tokenizer@npm:^2.1.1, @csstools/css-tokenizer@npm:^2.2.0": version: 2.2.0 resolution: "@csstools/css-tokenizer@npm:2.2.0" @@ -2544,16 +2005,6 @@ __metadata: languageName: node linkType: hard -"@csstools/media-query-list-parser@npm:^2.1.1, @csstools/media-query-list-parser@npm:^2.1.2": - version: 2.1.2 - resolution: "@csstools/media-query-list-parser@npm:2.1.2" - peerDependencies: - "@csstools/css-parser-algorithms": ^2.3.0 - "@csstools/css-tokenizer": ^2.1.1 - checksum: 04936573ba837f14d7d637e172342c473665679c6497bbc0d548d93d08cb22e22151bb19e0e20422954c0b2aa50c3f38c9fc5f45c136e31bc863c656cb79df1b - languageName: node - linkType: hard - "@csstools/media-query-list-parser@npm:^2.1.2, @csstools/media-query-list-parser@npm:^2.1.4": version: 2.1.4 resolution: "@csstools/media-query-list-parser@npm:2.1.4" @@ -2576,20 +2027,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-color-function@npm:^2.2.3": - version: 2.2.3 - resolution: "@csstools/postcss-color-function@npm:2.2.3" - dependencies: - "@csstools/css-color-parser": ^1.2.0 - "@csstools/css-parser-algorithms": ^2.1.1 - "@csstools/css-tokenizer": ^2.1.1 - "@csstools/postcss-progressive-custom-properties": ^2.3.0 - peerDependencies: - postcss: ^8.4 - checksum: 802148d64c943473cd61eae85c4f53357e8972670bfd70c1ad85f3ed5aead6287b9944586a74108f6ea17e4fa4d90435946d875ca43e8fffacd7a9547da579ed - languageName: node - linkType: hard - "@csstools/postcss-color-function@npm:^3.0.1": version: 3.0.1 resolution: "@csstools/postcss-color-function@npm:3.0.1" @@ -2604,20 +2041,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-color-mix-function@npm:^1.0.3": - version: 1.0.3 - resolution: "@csstools/postcss-color-mix-function@npm:1.0.3" - dependencies: - "@csstools/css-color-parser": ^1.2.0 - "@csstools/css-parser-algorithms": ^2.1.1 - "@csstools/css-tokenizer": ^2.1.1 - "@csstools/postcss-progressive-custom-properties": ^2.3.0 - peerDependencies: - postcss: ^8.4 - checksum: 865ae0aaab0fa0d40ef3b3c1fa83e45da9a8d42a01d511147fc9f1e9b4a37f1726b38d04a5fa7138ee6392ca8db9856b5c6bd8b84d1582e5caab675d22489818 - languageName: node - linkType: hard - "@csstools/postcss-color-mix-function@npm:^2.0.1": version: 2.0.1 resolution: "@csstools/postcss-color-mix-function@npm:2.0.1" @@ -2645,17 +2068,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-font-format-keywords@npm:^2.0.2": - version: 2.0.2 - resolution: "@csstools/postcss-font-format-keywords@npm:2.0.2" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.4 - checksum: c871440a2ac5b12bec9322fcc0f560e9a0e8d50d9585b1a2ceea3ca56a7903bab43f9754dc3af973ab4bfd0d90ee28998753e010c21287125e134875a052e604 - languageName: node - linkType: hard - "@csstools/postcss-font-format-keywords@npm:^3.0.0": version: 3.0.0 resolution: "@csstools/postcss-font-format-keywords@npm:3.0.0" @@ -2667,20 +2079,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-gradients-interpolation-method@npm:^3.0.6": - version: 3.0.6 - resolution: "@csstools/postcss-gradients-interpolation-method@npm:3.0.6" - dependencies: - "@csstools/css-color-parser": ^1.2.0 - "@csstools/css-parser-algorithms": ^2.1.1 - "@csstools/css-tokenizer": ^2.1.1 - "@csstools/postcss-progressive-custom-properties": ^2.3.0 - peerDependencies: - postcss: ^8.4 - checksum: 7403c59e80720e102f0d76ba87dc4894ba02e1fe23d0bf93cbbbf3391a6fbeb24192b6022427f77b425521a90de658e2bd56ce24c299430bc8e1d1a926ee119c - languageName: node - linkType: hard - "@csstools/postcss-gradients-interpolation-method@npm:^4.0.1": version: 4.0.1 resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.1" @@ -2695,19 +2093,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-hwb-function@npm:^2.2.2": - version: 2.2.2 - resolution: "@csstools/postcss-hwb-function@npm:2.2.2" - dependencies: - "@csstools/css-color-parser": ^1.2.0 - "@csstools/css-parser-algorithms": ^2.1.1 - "@csstools/css-tokenizer": ^2.1.1 - peerDependencies: - postcss: ^8.4 - checksum: 02cc0d91247667d64840bfd32973d5c99b859176658002a8f66fb78f795d26a757beae5e6876f51f1d9acbb9ef02132dde9b7f4d87ab7543524babc6e17b7d90 - languageName: node - linkType: hard - "@csstools/postcss-hwb-function@npm:^3.0.1": version: 3.0.1 resolution: "@csstools/postcss-hwb-function@npm:3.0.1" @@ -2721,18 +2106,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-ic-unit@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/postcss-ic-unit@npm:2.0.4" - dependencies: - "@csstools/postcss-progressive-custom-properties": ^2.3.0 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.4 - checksum: 6191228178f39d3ef440aa0b9d91bead801ea16b4842531fe8b3d07736089877753eb1c2063906d6e5c8d86bb1efecb902a3d6d583bd37c5ff0f3a2914e4f370 - languageName: node - linkType: hard - "@csstools/postcss-ic-unit@npm:^3.0.0": version: 3.0.0 resolution: "@csstools/postcss-ic-unit@npm:3.0.0" @@ -2745,18 +2118,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-is-pseudo-class@npm:^3.2.1": - version: 3.2.1 - resolution: "@csstools/postcss-is-pseudo-class@npm:3.2.1" - dependencies: - "@csstools/selector-specificity": ^2.0.0 - postcss-selector-parser: ^6.0.10 - peerDependencies: - postcss: ^8.4 - checksum: 62c3829405540665545b1fad80bd3fe655b2f2df6e713a121278972af199e5bcd4329a9f0abbcd7576cd61d18bbc2ad05e6c6e4a3dd278c53b45c1ccab64b123 - languageName: node - linkType: hard - "@csstools/postcss-is-pseudo-class@npm:^4.0.0": version: 4.0.0 resolution: "@csstools/postcss-is-pseudo-class@npm:4.0.0" @@ -2769,15 +2130,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-logical-float-and-clear@npm:^1.0.1": - version: 1.0.1 - resolution: "@csstools/postcss-logical-float-and-clear@npm:1.0.1" - peerDependencies: - postcss: ^8.4 - checksum: 5184cd62a61cdcf1364364145f638e4c3ffdbde2fe4c154c11404f7e44045b3ed62ea7ff5d7230d89e42417506c1180dc3ab64ad5e8378ac5eb0a9298bbf80d1 - languageName: node - linkType: hard - "@csstools/postcss-logical-float-and-clear@npm:^2.0.0": version: 2.0.0 resolution: "@csstools/postcss-logical-float-and-clear@npm:2.0.0" @@ -2787,17 +2139,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-logical-resize@npm:^1.0.1": - version: 1.0.1 - resolution: "@csstools/postcss-logical-resize@npm:1.0.1" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.4 - checksum: b19f340d1909249e97cf5557741dabc8a247ae9f7dd6b2e525a3137b6b8f6997a5da83441b20423b17044dff8eafc3c2d33527fabcf3bdf0ebbe04274d3c6caa - languageName: node - linkType: hard - "@csstools/postcss-logical-resize@npm:^2.0.0": version: 2.0.0 resolution: "@csstools/postcss-logical-resize@npm:2.0.0" @@ -2809,17 +2150,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-logical-viewport-units@npm:^1.0.3": - version: 1.0.3 - resolution: "@csstools/postcss-logical-viewport-units@npm:1.0.3" - dependencies: - "@csstools/css-tokenizer": ^2.1.1 - peerDependencies: - postcss: ^8.4 - checksum: 82819ceeedd94d422bb28dbc7ba49b914d06a605ae2487c6833c0ec6b481c6753e84b46cf476a411e8f993f8b430669dad48230723022d0ee26e04a5b278a687 - languageName: node - linkType: hard - "@csstools/postcss-logical-viewport-units@npm:^2.0.1": version: 2.0.1 resolution: "@csstools/postcss-logical-viewport-units@npm:2.0.1" @@ -2831,20 +2161,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-media-minmax@npm:^1.0.4": - version: 1.0.5 - resolution: "@csstools/postcss-media-minmax@npm:1.0.5" - dependencies: - "@csstools/css-calc": ^1.1.2 - "@csstools/css-parser-algorithms": ^2.3.0 - "@csstools/css-tokenizer": ^2.1.1 - "@csstools/media-query-list-parser": ^2.1.2 - peerDependencies: - postcss: ^8.4 - checksum: e4ccd035a5a98356ad22c136d16da071e05a9c068abae9de5f5c2137de8a7206af6b174a24c4916305c7838cb2522d21109c3204415aae6cf578db391823efc1 - languageName: node - linkType: hard - "@csstools/postcss-media-minmax@npm:^1.0.7": version: 1.0.7 resolution: "@csstools/postcss-media-minmax@npm:1.0.7" @@ -2859,19 +2175,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^1.0.4": - version: 1.0.4 - resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:1.0.4" - dependencies: - "@csstools/css-parser-algorithms": ^2.2.0 - "@csstools/css-tokenizer": ^2.1.1 - "@csstools/media-query-list-parser": ^2.1.1 - peerDependencies: - postcss: ^8.4 - checksum: 99125a673066ee6119dc25d8aecf7b9ed14a56eba7ae1e18a7aaee596860a35629f45b87d39bfa4f2fafbe505aa29213d7bde9150928d97e628b351b71f3fd00 - languageName: node - linkType: hard - "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^2.0.2": version: 2.0.2 resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:2.0.2" @@ -2885,17 +2188,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-nested-calc@npm:^2.0.2": - version: 2.0.2 - resolution: "@csstools/postcss-nested-calc@npm:2.0.2" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.4 - checksum: 028b4e18111456b0a6d5402b64d33567bffbb72bfbd167cecef009352521f4f2d216b3cfd6bbd292e9cae58c921a6e164405203d6569c1ca0002f5db7d4d06d3 - languageName: node - linkType: hard - "@csstools/postcss-nested-calc@npm:^3.0.0": version: 3.0.0 resolution: "@csstools/postcss-nested-calc@npm:3.0.0" @@ -2907,20 +2199,6 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-normalize-display-values@npm:^2.0.1": - version: 2.0.1 - resolution: "@csstools/postcss-color-mix-function@npm:2.0.1" - dependencies: - "@csstools/css-color-parser": ^1.2.2 - "@csstools/css-parser-algorithms": ^2.3.1 - "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.0 - peerDependencies: - postcss: ^8.4 - checksum: 811d53ad7697811e519082bfae657c54c4e0615f9dc83bb2234f9d6a43e6323cd9e8f6c15821d43310f9963e510b3fbf21e7a34905c1b9af0a86a97b1d348869 - languageName: node - linkType: hard - "@csstools/postcss-normalize-display-values@npm:^3.0.0": version: 3.0.0 resolution: "@csstools/postcss-normalize-display-values@npm:3.0.0" @@ -3029,15 +2307,6 @@ __metadata: languageName: node linkType: hard -"@csstools/selector-specificity@npm:^2.0.0, @csstools/selector-specificity@npm:^2.0.1, @csstools/selector-specificity@npm:^2.0.2": - version: 2.2.0 - resolution: "@csstools/selector-specificity@npm:2.2.0" - peerDependencies: - postcss-selector-parser: ^6.0.10 - checksum: 97c89f23b3b527d7bd51ed299969ed2b9fbb219a367948b44aefec228b8eda6ae0ad74fe8a82f9aac8ff32cfd00bb6d0c98d1daeab2e8fc6d5c4af25e5be5673 - languageName: node - linkType: hard - "@csstools/selector-specificity@npm:^3.0.0": version: 3.0.0 resolution: "@csstools/selector-specificity@npm:3.0.0" @@ -3047,13 +2316,6 @@ __metadata: languageName: node linkType: hard -"@datadog/browser-core@npm:4.45.0": - version: 4.45.0 - resolution: "@datadog/browser-core@npm:4.45.0" - checksum: 9777d8087c8dbd1eec47d90dd035e223210e6c71d8bcf635d372607ff3659db489ec4756e0e4fb9985e9fad40755d5d6ebb6440ea4ffcb3eae0c08784de6de2c - languageName: node - linkType: hard - "@datadog/browser-core@npm:4.47.0": version: 4.47.0 resolution: "@datadog/browser-core@npm:4.47.0" @@ -3061,17 +2323,6 @@ __metadata: languageName: node linkType: hard -"@datadog/browser-logs@npm:^4.45.0": - version: 4.45.0 - resolution: "@datadog/browser-logs@npm:4.45.0" - dependencies: - "@csstools/css-tokenizer": ^2.2.0 - peerDependencies: - postcss: ^8.4 - checksum: f779267989a9e46e7bcf2163a4ae1862d2af171248c31adcd6b1fba73611dbf788d5c58c90c9ef0851db63fa00b2dc09e6883ebc31645ddf5cbbe2da2b7616c0 - languageName: node - linkType: hard - "@datadog/browser-logs@npm:^4.47.0": version: 4.47.0 resolution: "@datadog/browser-logs@npm:4.47.0" @@ -3264,17 +2515,6 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" - dependencies: - eslint-visitor-keys: ^3.3.0 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 - languageName: node - linkType: hard - "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -3286,34 +2526,10 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.4.0": - version: 4.6.0 - resolution: "@eslint-community/regexpp@npm:4.6.0" - checksum: 7517bf490970bcc6be4d793b202ec5a8d525078dd817454b832669e79d6cdd3af25068563410b0c3d861891ccbf7e03626a575e6fec6a2eac7ae4fd5b0223e0f - languageName: node - linkType: hard - "@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.6.2 - resolution: "@eslint-community/regexpp@npm:4.6.2" - checksum: a3c341377b46b54fa228f455771b901d1a2717f95d47dcdf40199df30abc000ba020f747f114f08560d119e979d882a94cf46cfc51744544d54b00319c0f2724 - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^2.1.0": - version: 2.1.0 - resolution: "@eslint/eslintrc@npm:2.1.0" - dependencies: - ajv: ^6.12.4 - debug: ^4.3.2 - espree: ^9.6.0 - globals: ^13.19.0 - ignore: ^5.2.0 - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - minimatch: ^3.1.2 - strip-json-comments: ^3.1.1 - checksum: d5ed0adbe23f6571d8c9bb0ca6edf7618dc6aed4046aa56df7139f65ae7b578874e0d9c796df784c25bda648ceb754b6320277d828c8b004876d7443b8dc018c + version: 4.7.0 + resolution: "@eslint-community/regexpp@npm:4.7.0" + checksum: 09b8d11a9957b58be870d76e36b718030ba2215e1fb9d009f7a0833733c86b47d8528c47808eeef389145ca198abc3ea4d169452840e36142ecfb9491e3a1d16 languageName: node linkType: hard @@ -3334,13 +2550,6 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.44.0": - version: 8.44.0 - resolution: "@eslint/js@npm:8.44.0" - checksum: fc539583226a28f5677356e9f00d2789c34253f076643d2e32888250e509a4e13aafe0880cb2425139051de0f3a48d25bfc5afa96b7304f203b706c17340e3cf - languageName: node - linkType: hard - "@eslint/js@npm:^8.47.0": version: 8.47.0 resolution: "@eslint/js@npm:8.47.0" @@ -3355,13 +2564,6 @@ __metadata: languageName: node linkType: hard -"@floating-ui/core@npm:^1.3.1": - version: 1.3.1 - resolution: "@floating-ui/core@npm:1.3.1" - checksum: fe3b40fcaec95b0825c01a98330ae75b60c61c395ca012055a32f9c22ab97fde8ce1bd14fce3d242beb9dbe4564c90ce4a7a767851911d4215b9ec7721440e5b - languageName: node - linkType: hard - "@floating-ui/core@npm:^1.4.1": version: 1.4.1 resolution: "@floating-ui/core@npm:1.4.1" @@ -3561,50 +2763,50 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/console@npm:29.6.2" +"@jest/console@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/console@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 + jest-message-util: ^29.6.3 + jest-util: ^29.6.3 slash: ^3.0.0 - checksum: 1198667bda0430770c3e9b92681c0ee9f8346394574071c633f306192ac5f08e12972d6a5fdf03eb0d441051c8439bce0f6f9f355dc60d98777a35328331ba2e + checksum: a30b380166944ac06d36a50a36f05e65022b97064efd3ace7113d1dfc30d96966af578266f69817afa9d6ec679f8ceb6ae905352c07e5ad23d3c307fc0060174 languageName: node linkType: hard -"@jest/core@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/core@npm:29.6.2" +"@jest/core@npm:^29.6.2, @jest/core@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/core@npm:29.6.3" dependencies: - "@jest/console": ^29.6.2 - "@jest/reporters": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/console": ^29.6.3 + "@jest/reporters": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/transform": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 ci-info: ^3.2.0 exit: ^0.1.2 graceful-fs: ^4.2.9 - jest-changed-files: ^29.5.0 - jest-config: ^29.6.2 - jest-haste-map: ^29.6.2 - jest-message-util: ^29.6.2 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.2 - jest-resolve-dependencies: ^29.6.2 - jest-runner: ^29.6.2 - jest-runtime: ^29.6.2 - jest-snapshot: ^29.6.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 - jest-watcher: ^29.6.2 + jest-changed-files: ^29.6.3 + jest-config: ^29.6.3 + jest-haste-map: ^29.6.3 + jest-message-util: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.6.3 + jest-resolve-dependencies: ^29.6.3 + jest-runner: ^29.6.3 + jest-runtime: ^29.6.3 + jest-snapshot: ^29.6.3 + jest-util: ^29.6.3 + jest-validate: ^29.6.3 + jest-watcher: ^29.6.3 micromatch: ^4.0.4 - pretty-format: ^29.6.2 + pretty-format: ^29.6.3 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -3612,86 +2814,76 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 6bbb3886430248c0092f275b1b946a701406732f7442c04e63e4ee2297c2ec02d8ceeec508a202e08128197699b2bcddbae2c2f74adb2cf30f2f0d7d94a7c2dc + checksum: 8ec37ce75f52dc85dfe703d4f8de31acf2134d1056127d075a700cf3668bad0cccc17f742b39f0053f8c12455075018bd3551093c0b3e082d593980093cb6ce9 languageName: node linkType: hard -"@jest/environment@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/environment@npm:29.6.2" +"@jest/environment@npm:^29.6.2, @jest/environment@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/environment@npm:29.6.3" dependencies: - "@jest/fake-timers": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/fake-timers": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^29.6.2 - checksum: c7de0e4c0d9166e02d0eb166574e05ec460e1db3b69d6476e63244edd52d7c917e6876af55fe723ff3086f52c0b1869dec60654054735a7a48c9d4ac43af2a25 + jest-mock: ^29.6.3 + checksum: 96aaf9baaa58fbacbdfbde9591297f25f9d6f5566cf10cd07d744a4a25b1d82b6cfb89f217a45ccce2cc50ec6c7e3c9a0122908d6b827985a1679afb5e10b7b1 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/expect-utils@npm:29.6.1" +"@jest/expect-utils@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/expect-utils@npm:29.6.3" dependencies: - expect: ^29.6.2 - jest-snapshot: ^29.6.2 - checksum: bd2d88a4e7c5420079c239afef341ec53dc7e353816cd13acbb42631a31fd321fe58677bb43a4dba851028f4c7e31da7980314e9094cd5b348896cb6cd3d42b2 + jest-get-type: ^29.6.3 + checksum: aeb0c2a485df09fdb51f866d58e232010cde888a7e6e1f9b395df236918e09e98407eb8281a3d41d2b115d9ff740d100b75100d521717ba903abeacb26e2a192 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/expect-utils@npm:29.6.2" +"@jest/expect@npm:^29.6.2, @jest/expect@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/expect@npm:29.6.3" dependencies: - jest-get-type: ^29.4.3 - checksum: 0decf2009aa3735f9df469e78ce1721c2815e4278439887e0cf0321ca8979541a22515d114a59b2445a6cd70a074b09dc9c00b5e7b3b3feac5174b9c4a78b2e1 - languageName: node - linkType: hard - -"@jest/expect@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/expect@npm:29.6.2" - dependencies: - expect: ^29.6.2 - jest-snapshot: ^29.6.2 - checksum: bd2d88a4e7c5420079c239afef341ec53dc7e353816cd13acbb42631a31fd321fe58677bb43a4dba851028f4c7e31da7980314e9094cd5b348896cb6cd3d42b2 + expect: ^29.6.3 + jest-snapshot: ^29.6.3 + checksum: 40c3fc53aa9f86e10129fcaec243405a4b4c398a8d65a3133f97d39331f065c3833c352b133377f003b2e9acc70909d72ac91698c219a883b857b7cda559b199 languageName: node linkType: hard -"@jest/fake-timers@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/fake-timers@npm:29.6.2" +"@jest/fake-timers@npm:^29.6.2, @jest/fake-timers@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/fake-timers@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^29.6.2 - jest-mock: ^29.6.2 - jest-util: ^29.6.2 - checksum: 1abcda02f22d2ba32e178b7ab80a9180235a6c75ec9faef33324627b19a70dad64889a9ea49b8f07230e14a6e683b9120542c6d1d6b2ecaf937f4efde32dad88 + jest-message-util: ^29.6.3 + jest-mock: ^29.6.3 + jest-util: ^29.6.3 + checksum: 60be71159bb92c8b8da593fac2b2fff50c0760c26c3b17237561a2818382d3c797bd119a1707ec1d3e9b77e8e3d6513fe88f0c668d6ca26fb2c01ab475620888 languageName: node linkType: hard -"@jest/globals@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/globals@npm:29.6.2" +"@jest/globals@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/globals@npm:29.6.3" dependencies: - "@jest/environment": ^29.6.2 - "@jest/expect": ^29.6.2 - "@jest/types": ^29.6.1 - jest-mock: ^29.6.2 - checksum: aa4a54f19cc025205bc696546940e1fe9c752c2d4d825852088aa76d44677ebba1ec66fabb78e615480cff23a06a70b5a3f893ab5163d901cdfa0d2267870b10 + "@jest/environment": ^29.6.3 + "@jest/expect": ^29.6.3 + "@jest/types": ^29.6.3 + jest-mock: ^29.6.3 + checksum: c90ad4e85c4c7fa42e4c61fc6bba854dc7e12c3579b4412fe879e712bf3675e92a771d2ac4ba2a48304a4dab34182e62e9d62f36ca13ddf8dff3cca911ddfbbb languageName: node linkType: hard -"@jest/reporters@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/reporters@npm:29.6.2" +"@jest/reporters@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/reporters@npm:29.6.3" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/console": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/transform": ^29.6.3 + "@jest/types": ^29.6.3 "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 @@ -3700,13 +2892,13 @@ __metadata: glob: ^7.1.3 graceful-fs: ^4.2.9 istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^5.1.0 + istanbul-lib-instrument: ^6.0.0 istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 - jest-worker: ^29.6.2 + jest-message-util: ^29.6.3 + jest-util: ^29.6.3 + jest-worker: ^29.6.3 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -3716,88 +2908,88 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 7cf880d0730cee7d24ee96928003ef6946bf93423b0ae9a2edb53cae2c231b8ac50ec264f48a73744e3f11ca319cd414edacf99b2e7bf37cd72fe0b362090dd1 + checksum: 8899240f018874148a24886ac78ada6dda4b7fc621fed904b276b324b981c2294d2036df92fb87411f2abb914faa351098eeb814d7685dcfa37c7c27b54660a4 languageName: node linkType: hard -"@jest/schemas@npm:^29.6.0": - version: 29.6.0 - resolution: "@jest/schemas@npm:29.6.0" +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" dependencies: "@sinclair/typebox": ^0.27.8 - checksum: c00511c69cf89138a7d974404d3a5060af375b5a52b9c87215d91873129b382ca11c1ff25bd6d605951404bb381ddce5f8091004a61e76457da35db1f5c51365 + checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 languageName: node linkType: hard -"@jest/source-map@npm:^29.6.0": - version: 29.6.0 - resolution: "@jest/source-map@npm:29.6.0" +"@jest/source-map@npm:^29.6.0, @jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" dependencies: "@jridgewell/trace-mapping": ^0.3.18 callsites: ^3.0.0 graceful-fs: ^4.2.9 - checksum: 9c6c40387410bb70b2fae8124287fc28f6bdd1b2d7f24348e8611e1bb638b404518228a4ce64a582365b589c536ae8e7ebab0126cef59a87874b71061d19783b + checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb languageName: node linkType: hard -"@jest/test-result@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/test-result@npm:29.6.2" +"@jest/test-result@npm:^29.6.2, @jest/test-result@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/test-result@npm:29.6.3" dependencies: - "@jest/console": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/console": ^29.6.3 + "@jest/types": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 8aff37f18c8d2df4d9f453d57ec018a6479eb697fabcf74b1ca06e34553da1d7a2b85580a290408ba0b02e58543263244a2cb065c7c7180c8d8180cc78444fbd + checksum: 0f8164520587555f4e0c5b3e0843ae8ae43c517301c2986b9ff24ca58215f407164b99f3ccfde778dc3fb299c3bb8922a3dd81cf3ccf0ff646806df61d3d2d78 languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/test-sequencer@npm:29.6.2" +"@jest/test-sequencer@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/test-sequencer@npm:29.6.3" dependencies: - "@jest/test-result": ^29.6.2 + "@jest/test-result": ^29.6.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 + jest-haste-map: ^29.6.3 slash: ^3.0.0 - checksum: 12dc2577e45eeb98b85d1769846b7d6effa536907986ad3c4cbd014df9e24431a564cc8cd94603332e4b1f9bfb421371883efc6a5085b361a52425ffc2a52dc6 + checksum: 71b5fee13e28b2006b4bdea62181dd6b7a537531ac027b1230ad96a5a0c7837a4c008e9cbeebee630b0c7cc22187fede48cb18fec79209ff641492c994db8259 languageName: node linkType: hard -"@jest/transform@npm:^29.6.2": - version: 29.6.2 - resolution: "@jest/transform@npm:29.6.2" +"@jest/transform@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/transform@npm:29.6.3" dependencies: "@babel/core": ^7.11.6 - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@jridgewell/trace-mapping": ^0.3.18 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 - jest-regex-util: ^29.4.3 - jest-util: ^29.6.2 + jest-haste-map: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-util: ^29.6.3 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: ffb8c3c344cd48bedadec295d9c436737eccc39c1f0868aa9753b76397b33b2e5b121058af6f287ba6f2036181137e37df1212334bfa9d9a712986a4518cdc18 + checksum: edc47e960a71dab5ad8f0480fc4c1b05f2950c12e5aeb62bacfd46929dd5c7101dd2fa521a2e59c62a90849118039949f0230282a485de8dc373aac711f1bff9 languageName: node linkType: hard -"@jest/types@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/types@npm:29.6.1" +"@jest/types@npm:^29.6.1, @jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" dependencies: - "@jest/schemas": ^29.6.0 + "@jest/schemas": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: 89fc1ccf71a84fe0da643e0675b1cfe6a6f19ea72e935b2ab1dbdb56ec547e94433fb59b3536d3832a6e156c077865b7176fe9dae707dab9c3d2f9405ba6233c + checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc languageName: node linkType: hard @@ -4203,20 +3395,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.0.3": - version: 3.1.1 - resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 - languageName: node - linkType: hard - "@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.1 resolution: "@jridgewell/resolve-uri@npm:3.1.1" @@ -4241,20 +3419,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 - languageName: node - linkType: hard - "@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" @@ -4614,22 +3778,6 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:^8.11.1, @testing-library/dom@npm:^8.5.0": - version: 8.20.1 - resolution: "@testing-library/dom@npm:8.20.1" - dependencies: - "@babel/code-frame": ^7.10.4 - "@babel/runtime": ^7.12.5 - "@types/aria-query": ^5.0.1 - aria-query: 5.1.3 - chalk: ^4.1.0 - dom-accessibility-api: ^0.5.9 - lz-string: ^1.5.0 - pretty-format: ^27.0.2 - checksum: 06fc8dc67849aadb726cbbad0e7546afdf8923bd39acb64c576d706249bd7d0d05f08e08a31913fb621162e3b9c2bd0dce15964437f030f9fa4476326fdd3007 - languageName: node - linkType: hard - "@testing-library/dom@npm:^9.0.0": version: 9.3.1 resolution: "@testing-library/dom@npm:9.3.1" @@ -4782,15 +3930,6 @@ __metadata: languageName: node linkType: hard -"@types/classnames@npm:2.3.1": - version: 2.3.1 - resolution: "@types/classnames@npm:2.3.1" - dependencies: - classnames: "*" - checksum: 09a17ea08fcb83380921efdfdac94cfa162f87025cae0bf6f4ba508c2fa5f436459ce7612905a3f968fdddb68c03b8e6ff08e762ed2d0c110c5c4fceb244dc55 - languageName: node - linkType: hard - "@types/color-convert@npm:*": version: 2.0.0 resolution: "@types/color-convert@npm:2.0.0" @@ -4842,16 +3981,6 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:*": - version: 8.44.0 - resolution: "@types/eslint@npm:8.44.0" - dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: 2655f409a4ecdd64bb9dd9eb6715e7a2ac30c0e7f902b414e10dbe9d6d497baa5a0f13105e1f7bd5ad7a913338e2ab4bed1faf192a7a0d27d1acd45ba79d3f69 - languageName: node - linkType: hard - "@types/eslint@npm:*, @types/eslint@npm:^8": version: 8.44.2 resolution: "@types/eslint@npm:8.44.2" @@ -4902,15 +4031,6 @@ __metadata: languageName: node linkType: hard -"@types/highlight.js@npm:10.1.0": - version: 10.1.0 - resolution: "@types/highlight.js@npm:10.1.0" - dependencies: - highlight.js: "*" - checksum: 284f47e89bfe300f307ad76523a257ff12ed7cf0318cdc0a7fe6965a1d7e21840d133cfc623ec705495550d37341c278c2c9641bafce8b8dbb4bea4acd46f0ec - languageName: node - linkType: hard - "@types/hoist-non-react-statics@npm:^3.3.0, @types/hoist-non-react-statics@npm:^3.3.1": version: 3.3.1 resolution: "@types/hoist-non-react-statics@npm:3.3.1" @@ -5017,13 +4137,6 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.12 - resolution: "@types/json-schema@npm:7.0.12" - checksum: 00239e97234eeb5ceefb0c1875d98ade6e922bfec39dd365ec6bd360b5c2f825e612ac4f6e5f1d13601b8b30f378f15e6faa805a3a732f4a1bbe61915163d293 - languageName: node - linkType: hard - "@types/json5@npm:^0.0.29": version: 0.0.29 resolution: "@types/json5@npm:0.0.29" @@ -5079,16 +4192,6 @@ __metadata: languageName: node linkType: hard -"@types/markdown-it@npm:12.2.3, @types/markdown-it@npm:^12.2.3": - version: 12.2.3 - resolution: "@types/markdown-it@npm:12.2.3" - dependencies: - "@types/linkify-it": "*" - "@types/mdurl": "*" - checksum: 868824a3e4d00718ba9cd4762cf16694762a670860f4b402e6e9f952b6841a2027488bdc55d05c2b960bf5078df21a9d041270af7e8949514645fe88fdb722ac - languageName: node - linkType: hard - "@types/markdown-it@npm:13.0.0": version: 13.0.0 resolution: "@types/markdown-it@npm:13.0.0" @@ -5116,13 +4219,6 @@ __metadata: languageName: node linkType: hard -"@types/minimist@npm:^1.2.0": - version: 1.2.2 - resolution: "@types/minimist@npm:1.2.2" - checksum: b8da83c66eb4aac0440e64674b19564d9d86c80ae273144db9681e5eeff66f238ade9515f5006ffbfa955ceff8b89ad2bd8ec577d7caee74ba101431fb07045d - languageName: node - linkType: hard - "@types/minimist@npm:^1.2.2": version: 1.2.2 resolution: "@types/minimist@npm:1.2.2" @@ -5130,17 +4226,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=13.7.0": - version: 20.4.4 - resolution: "@types/node@npm:20.4.4" - checksum: 43f3c4a8acc38ae753e15a0e79bae0447d255b3742fa87f8e065d7b9d20ecb0e03d6c5b46c00d5d26f4552160381a00255f49205595a8ee48c2423e00263c930 - languageName: node - linkType: hard - "@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^20.5.1": - version: 20.5.1 - resolution: "@types/node@npm:20.5.1" - checksum: 3dbe611cd67afa987102c8558ee70f848949c5dcfee5f60abc073e55c0d7b048e391bf06bb1e0dc052cb7210ca97136ac496cbaf6e89123c989de6bd125fde82 + version: 20.5.2 + resolution: "@types/node@npm:20.5.2" + checksum: 46d032bb9a1db687693f6351702572d2f1e12face32caf8182323413918de27d4ac16cc2b15ff6b891651313e602da18edbdd095d16d2b5a26588c2edffca892 languageName: node linkType: hard @@ -5158,13 +4247,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^18.16.3": - version: 18.17.0 - resolution: "@types/node@npm:18.17.0" - checksum: 3a43c5c5541342751b514485144818a515fac5427f663066068eaacbe8a108cbe1207aae75ec89d34c3b32414c334aad84e9083cf7fcf3ebfd970adc871314a4 - languageName: node - linkType: hard - "@types/node@npm:~14": version: 14.18.54 resolution: "@types/node@npm:14.18.54" @@ -5202,7 +4284,7 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.1.5, @types/prettier@npm:^2.7.3": +"@types/prettier@npm:^2.7.3": version: 2.7.3 resolution: "@types/prettier@npm:2.7.3" checksum: 705384209cea6d1433ff6c187c80dcc0b95d99d5c5ce21a46a9a58060c527973506822e428789d842761e0280d25e3359300f017fbe77b9755bc772ab3dc2f83 @@ -5234,15 +4316,6 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^18.0.0": - version: 18.2.7 - resolution: "@types/react-dom@npm:18.2.7" - dependencies: - "@types/react": "*" - checksum: e02ea908289a7ad26053308248d2b87f6aeafd73d0e2de2a3d435947bcea0422599016ffd1c3e38ff36c42f5e1c87c7417f05b0a157e48649e4a02f21727d54f - languageName: node - linkType: hard - "@types/react-redux@npm:7.1.25": version: 7.1.25 resolution: "@types/react-redux@npm:7.1.25" @@ -5264,17 +4337,6 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:16 || 17 || 18": - version: 18.2.15 - resolution: "@types/react@npm:18.2.15" - dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" - csstype: ^3.0.2 - checksum: 36989f638201bfe2f4110b06c119180f6df9c0e13d7060481e82e7a745f81745a01ae543c478a25b61e0767cb52e82da2ad5b0dedacabf99339e523d06176705 - languageName: node - linkType: hard - "@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:18.2.20": version: 18.2.20 resolution: "@types/react@npm:18.2.20" @@ -5318,13 +4380,6 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.12": - version: 7.5.0 - resolution: "@types/semver@npm:7.5.0" - checksum: 0a64b9b9c7424d9a467658b18dd70d1d781c2d6f033096a6e05762d20ebbad23c1b69b0083b0484722aabf35640b78ccc3de26368bcae1129c87e9df028a22e2 - languageName: node - linkType: hard - "@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": version: 7.5.0 resolution: "@types/semver@npm:7.5.0" @@ -5383,13 +4438,6 @@ __metadata: languageName: node linkType: hard -"@types/uint32@npm:0.2.0": - version: 0.2.0 - resolution: "@types/uint32@npm:0.2.0" - checksum: 10e31438f0be48629742ff148f2ae0030008b63d232472bc836dd19c34cdf219ccdfac1d7ff5d89e116c405e4b43e485268375f3343d00a84d1b3f32e3e24691 - languageName: node - linkType: hard - "@types/underscore@npm:1.11.6": version: 1.11.6 resolution: "@types/underscore@npm:1.11.6" @@ -5427,39 +4475,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^5.61.0": - version: 5.62.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" - dependencies: - "@eslint-community/regexpp": ^4.4.0 - "@typescript-eslint/scope-manager": 5.62.0 - "@typescript-eslint/type-utils": 5.62.0 - "@typescript-eslint/utils": 5.62.0 - debug: ^4.3.4 - graphemer: ^1.4.0 - ignore: ^5.2.4 - natural-compare: ^1.4.0 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 - peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: fc104b389c768f9fa7d45a48c86d5c1ad522c1d0512943e782a56b1e3096b2cbcc1eea3fcc590647bf0658eef61aac35120a9c6daf979bf629ad2956deb516a1 - languageName: node - linkType: hard - "@typescript-eslint/eslint-plugin@npm:^6.0.0": - version: 6.4.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.4.0" + version: 6.4.1 + resolution: "@typescript-eslint/eslint-plugin@npm:6.4.1" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.4.0 - "@typescript-eslint/type-utils": 6.4.0 - "@typescript-eslint/utils": 6.4.0 - "@typescript-eslint/visitor-keys": 6.4.0 + "@typescript-eslint/scope-manager": 6.4.1 + "@typescript-eslint/type-utils": 6.4.1 + "@typescript-eslint/utils": 6.4.1 + "@typescript-eslint/visitor-keys": 6.4.1 debug: ^4.3.4 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -5472,53 +4496,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: d59e88228a4088f3dcaa614103eefa7a0c57315ed79ee1c48afd9817ad013522aa9a9f987e90e1fd7dccc0bbb03ed23e4df6f5ea5cceef8856db33c78ea13d53 - languageName: node - linkType: hard - -"@typescript-eslint/experimental-utils@npm:^5.0.0": - version: 5.62.0 - resolution: "@typescript-eslint/experimental-utils@npm:5.62.0" - dependencies: - "@typescript-eslint/utils": 5.62.0 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: ce55d9f74eac5cb94d66d5db9ead9a5d734f4301519fb5956a57f4b405a5318a115b0316195a3c039e0111489138680411709cb769085d71e1e1db1376ea0949 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:^5.61.0": - version: 5.62.0 - resolution: "@typescript-eslint/parser@npm:5.62.0" - dependencies: - "@typescript-eslint/scope-manager": 5.62.0 - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/typescript-estree": 5.62.0 - debug: ^4.3.4 - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: d168f4c7f21a7a63f47002e2d319bcbb6173597af5c60c1cf2de046b46c76b4930a093619e69faf2d30214c29ab27b54dcf1efc7046a6a6bd6f37f59a990e752 + checksum: aa5f2f516a4ea07d1a9878d347dcb915808862f41efd3c4acd4955e616d265e051c4c93d597d30e54bee10bab9b965e2ef9cea1b497bf16f23a475d7911a8078 languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.0.0": - version: 6.4.0 - resolution: "@typescript-eslint/parser@npm:6.4.0" + version: 6.4.1 + resolution: "@typescript-eslint/parser@npm:6.4.1" dependencies: - "@typescript-eslint/scope-manager": 6.4.0 - "@typescript-eslint/types": 6.4.0 - "@typescript-eslint/typescript-estree": 6.4.0 - "@typescript-eslint/visitor-keys": 6.4.0 + "@typescript-eslint/scope-manager": 6.4.1 + "@typescript-eslint/types": 6.4.1 + "@typescript-eslint/typescript-estree": 6.4.1 + "@typescript-eslint/visitor-keys": 6.4.1 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 36c8dbeacfc03af9c5a4a0f065861ac6f3747fc64be582a32b0b084de5b5247cef086a0c0052291b97145e0ea8f82acbec452dd927b7b7a1917d56381d59a17c + checksum: cb61c757963f2a7964c2f846087eadda044720da769d96600f9f0069fe796d612caef5d9bb0c785aa4fa95028b2d231e7c83847ce44f02b1fa41f2102d6f444c languageName: node linkType: hard @@ -5532,39 +4528,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.4.0": - version: 6.4.0 - resolution: "@typescript-eslint/scope-manager@npm:6.4.0" - dependencies: - "@typescript-eslint/types": 6.4.0 - "@typescript-eslint/visitor-keys": 6.4.0 - checksum: 19406eac3a1899f77eb7c3aa52577e2146075e1318c6eb34d220678afa167832b89c90860714f33b99e107544b48f6970594ca4bcf48c5ede8f2a14a0795ba33 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/type-utils@npm:5.62.0" +"@typescript-eslint/scope-manager@npm:6.4.1": + version: 6.4.1 + resolution: "@typescript-eslint/scope-manager@npm:6.4.1" dependencies: - "@typescript-eslint/typescript-estree": 5.62.0 - "@typescript-eslint/utils": 5.62.0 - debug: ^4.3.4 - ts-api-utils: ^1.0.1 - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: fc41eece5f315dfda14320be0da78d3a971d650ea41300be7196934b9715f3fe1120a80207551eb71d39568275dbbcf359bde540d1ca1439d8be15e9885d2739 + "@typescript-eslint/types": 6.4.1 + "@typescript-eslint/visitor-keys": 6.4.1 + checksum: 8f7f90aa378a19838301b31cfa58a4b0641d2b84891705c8c006c67aacb5c0d07112b714e1f0e7a159c5736779c934ec26dadef42a0711fccb635596aba391fc languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.4.0": - version: 6.4.0 - resolution: "@typescript-eslint/type-utils@npm:6.4.0" +"@typescript-eslint/type-utils@npm:6.4.1": + version: 6.4.1 + resolution: "@typescript-eslint/type-utils@npm:6.4.1" dependencies: - "@typescript-eslint/typescript-estree": 6.4.0 - "@typescript-eslint/utils": 6.4.0 + "@typescript-eslint/typescript-estree": 6.4.1 + "@typescript-eslint/utils": 6.4.1 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -5572,7 +4551,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 7930d2ffdc844a5b706d48ae3e4584882f7f0c06d581a3b06bc280a351c55974b16dbb73f1842f7389f04b80c2cfaf867edd2f261b699804d8a4fea9c20b3869 + checksum: 33bcdd48bd4e07258ed1919b598d50354dd67d8f01702cd2fd46aa9250b7b7cba9caab640df01f4dc0e45dabeddbb3ca47bee88f81fe2087350ed6f70a4cbe5d languageName: node linkType: hard @@ -5583,10 +4562,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.4.0": - version: 6.4.0 - resolution: "@typescript-eslint/types@npm:6.4.0" - checksum: 85b293ad1559dbf8103b2c4cfd0db11c3d9c970d502e2c13d4b1d35e420567042d7077a716d2b4e5113286314d5260f378f242a6dd22ad4b94b4aa69c5f79223 +"@typescript-eslint/types@npm:6.4.1": + version: 6.4.1 + resolution: "@typescript-eslint/types@npm:6.4.1" + checksum: 16ba46140dbe426407bbb940e87fb347e7eb53b64f74e8f6a819cd662aa25ccd0c25b1e588867ce3cd36a8b4eccea7bd81f4d429595e6e86d9a24c655b1c8617 languageName: node linkType: hard @@ -5608,12 +4587,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.4.0": - version: 6.4.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.4.0" +"@typescript-eslint/typescript-estree@npm:6.4.1": + version: 6.4.1 + resolution: "@typescript-eslint/typescript-estree@npm:6.4.1" dependencies: - "@typescript-eslint/types": 6.4.0 - "@typescript-eslint/visitor-keys": 6.4.0 + "@typescript-eslint/types": 6.4.1 + "@typescript-eslint/visitor-keys": 6.4.1 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -5622,42 +4601,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: a8db3896550515d0adf140ee115527b409916c4a14ac1f45b5623d130a27ae2d08a1ac906ceda440b01167c88846e2b91ca2025f3d718bff389948f66990c1e7 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.62.0, @typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.58.0": - version: 5.62.0 - resolution: "@typescript-eslint/utils@npm:5.62.0" - dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.62.0 - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/typescript-estree": 5.62.0 - eslint-scope: ^5.1.1 - semver: ^7.3.7 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: ee9398c8c5db6d1da09463ca7bf36ed134361e20131ea354b2da16a5fdb6df9ba70c62a388d19f6eebb421af1786dbbd79ba95ddd6ab287324fc171c3e28d931 + checksum: 34c289e50a6337321154efe6c20c762e94fea308f9032971e356a266f63e99b908b1a00dd8cf51eba50a6f69db01d665faf2cf13454b355767fd167eebe60f1c languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.4.0": - version: 6.4.0 - resolution: "@typescript-eslint/utils@npm:6.4.0" +"@typescript-eslint/utils@npm:6.4.1": + version: 6.4.1 + resolution: "@typescript-eslint/utils@npm:6.4.1" dependencies: "@eslint-community/eslint-utils": ^4.4.0 "@types/json-schema": ^7.0.12 "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.4.0 - "@typescript-eslint/types": 6.4.0 - "@typescript-eslint/typescript-estree": 6.4.0 + "@typescript-eslint/scope-manager": 6.4.1 + "@typescript-eslint/types": 6.4.1 + "@typescript-eslint/typescript-estree": 6.4.1 semver: ^7.5.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: abc55382c601c7ed298076548d2df78f15b07ed6830086db6ce1b82d461f0a190ee103a804690ac9205cdca9f373a864e1dd3e20012e9d103f3137963e0aa5ea + checksum: 54e642a345790f912393a6f2821495e2359eff0f874a94cbe6fb3ef4411702983ed54fe88ca3ea9d28f2e93800a74dee22b7888838154bc1afd57c7e119e17ec languageName: node linkType: hard @@ -5689,13 +4650,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.4.0": - version: 6.4.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.4.0" +"@typescript-eslint/visitor-keys@npm:6.4.1": + version: 6.4.1 + resolution: "@typescript-eslint/visitor-keys@npm:6.4.1" dependencies: - "@typescript-eslint/types": 6.4.0 + "@typescript-eslint/types": 6.4.1 eslint-visitor-keys: ^3.4.1 - checksum: 42eb614b9c0a49b6929e093757d772fd27fe5dda9c75f4c7820d1710012c8257eea9bd4f1c4173e2265a8a9ad86cefc1a21869893e7304f3b29b94fa1f987554 + checksum: bd9cd56fc793e1d880c24193f939c4992b2653f330baece41cd461d1fb48edb2c53696987cba0e29074bbb452dd181fd009db92dd19060fdcc417ad76768f18a languageName: node linkType: hard @@ -5883,25 +4844,6 @@ __metadata: languageName: node linkType: hard -"@wireapp/api-client@npm:^24.19.0": - version: 24.20.2 - resolution: "@wireapp/api-client@npm:24.20.2" - dependencies: - "@wireapp/commons": ^5.1.0 - "@wireapp/priority-queue": ^2.1.1 - "@wireapp/protocol-messaging": 1.44.0 - axios: 1.4.0 - axios-retry: 3.6.0 - http-status-codes: 2.2.0 - logdown: 3.3.1 - reconnecting-websocket: 4.4.0 - spark-md5: 3.0.2 - tough-cookie: 4.1.3 - ws: 8.13.0 - checksum: 2c7dab29e72246d42d964b67cf04a0517855b2964b604b6ff978a805f613b520c5d43a4ddf81d555332f52bb8961e091696b3bab68637cdd64b61c05736ed6ae - languageName: node - linkType: hard - "@wireapp/api-client@npm:^25.2.2": version: 25.2.2 resolution: "@wireapp/api-client@npm:25.2.2" @@ -6432,15 +5374,6 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: ^0.21.3 - checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 - languageName: node - linkType: hard - "ansi-escapes@npm:^5.0.0": version: 5.0.0 resolution: "ansi-escapes@npm:5.0.0" @@ -6814,13 +5747,6 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.3": - version: 3.2.4 - resolution: "async@npm:3.2.4" - checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 - languageName: node - linkType: hard - "async@npm:^3.2.3, async@npm:^3.2.4": version: 3.2.4 resolution: "async@npm:3.2.4" @@ -6913,20 +5839,20 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.6.2": - version: 29.6.2 - resolution: "babel-jest@npm:29.6.2" +"babel-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-jest@npm:29.6.3" dependencies: - "@jest/transform": ^29.6.2 + "@jest/transform": ^29.6.3 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^29.5.0 + babel-preset-jest: ^29.6.3 chalk: ^4.0.0 graceful-fs: ^4.2.9 slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 3936b5d6ed6f08670c830ed919e38a4a593d0643b8e30fdeb16f4588b262ea5255fb96fd1849c02fba0b082ecfa4e788ce9a128ad1b9e654d46aac09c3a55504 + checksum: 8b4b85d829d8ee010f0c8381cb9d67842da905c32183c1fc6e1e8833447a79b969f8279759d44197bb77001239dc41a49fff0e8222d8e8577f47a8d0428d178e languageName: node linkType: hard @@ -6956,15 +5882,15 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-plugin-jest-hoist@npm:29.5.0" +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" dependencies: "@babel/template": ^7.3.3 "@babel/types": ^7.3.3 "@types/babel__core": ^7.1.14 "@types/babel__traverse": ^7.0.6 - checksum: 099b5254073b6bc985b6d2d045ad26fb8ed30ff8ae6404c4fe8ee7cd0e98a820f69e3dfb871c7c65aae0f4b65af77046244c07bb92d49ef9005c90eedf681539 + checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 languageName: node linkType: hard @@ -6978,42 +5904,17 @@ __metadata: checksum: 765de4abebd3e4688ebdfbff8571ddc8cd8061f839bb6c3e550b0344a4027b04c60491f843296ce3f3379fb356cc873d57a9ee6694262547eb822c14a25be9a6 languageName: node linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.4.4": - version: 0.4.5 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.5" - dependencies: - "@babel/compat-data": ^7.22.6 - "@babel/helper-define-polyfill-provider": ^0.4.2 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 33a8e06aa54e2858d211c743d179f0487b03222f9ca1bfd7c4865bca243fca942a3358cb75f6bb894ed476cbddede834811fbd6903ff589f055821146f053e1a - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.4.5": - version: 0.4.5 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.5" - dependencies: - "@babel/compat-data": ^7.22.6 - "@babel/helper-define-polyfill-provider": ^0.4.2 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 33a8e06aa54e2858d211c743d179f0487b03222f9ca1bfd7c4865bca243fca942a3358cb75f6bb894ed476cbddede834811fbd6903ff589f055821146f053e1a - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.8.2": - version: 0.8.3 - resolution: "babel-plugin-polyfill-corejs3@npm:0.8.3" + +"babel-plugin-polyfill-corejs2@npm:^0.4.5": + version: 0.4.5 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.5" dependencies: + "@babel/compat-data": ^7.22.6 "@babel/helper-define-polyfill-provider": ^0.4.2 - core-js-compat: ^3.31.0 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: dcbb30e551702a82cfd4d2c375da2c317658e55f95e9edcda93b9bbfdcc8fb6e5344efcb144e04d3406859e7682afce7974c60ededd9f12072a48a83dd22a0da + checksum: 33a8e06aa54e2858d211c743d179f0487b03222f9ca1bfd7c4865bca243fca942a3358cb75f6bb894ed476cbddede834811fbd6903ff589f055821146f053e1a languageName: node linkType: hard @@ -7029,17 +5930,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.5.1": - version: 0.5.2 - resolution: "babel-plugin-polyfill-regenerator@npm:0.5.2" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.4.2 - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: d962200f604016a9a09bc9b4aaf60a3db7af876bb65bcefaeac04d44ac9d9ec4037cf24ce117760cc141d7046b6394c7eb0320ba9665cb4a2ee64df2be187c93 - languageName: node - linkType: hard - "babel-plugin-polyfill-regenerator@npm:^0.5.2": version: 0.5.2 resolution: "babel-plugin-polyfill-regenerator@npm:0.5.2" @@ -7051,18 +5941,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-transform-import-meta@npm:^2.2.0": - version: 2.2.0 - resolution: "babel-plugin-transform-import-meta@npm:2.2.0" - dependencies: - "@babel/template": ^7.4.4 - tslib: ^2.4.0 - peerDependencies: - "@babel/core": ^7.10.0 - checksum: 2868e3ac22fc403003b19750dd04f9f05303d2ade3d005e2e557ba8e260ac0b8ee3717f772ec4db8a9e6a8aac13dc61eb82b79a6479f933290cef2d89e4b731b - languageName: node - linkType: hard - "babel-plugin-transform-import-meta@npm:^2.2.1": version: 2.2.1 resolution: "babel-plugin-transform-import-meta@npm:2.2.1" @@ -7097,15 +5975,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-preset-jest@npm:29.5.0" +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" dependencies: - babel-plugin-jest-hoist: ^29.5.0 + babel-plugin-jest-hoist: ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 5566ca2762766c9319b4973d018d2fa08c0fcf6415c72cc54f4c8e7199e851ea8f5e6c6730f03ed7ed44fc8beefa959dd15911f2647dee47c615ff4faeddb1ad + checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb languageName: node linkType: hard @@ -7281,20 +6159,6 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.4, browserslist@npm:^4.21.5, browserslist@npm:^4.21.9": - version: 4.21.9 - resolution: "browserslist@npm:4.21.9" - dependencies: - caniuse-lite: ^1.0.30001503 - electron-to-chromium: ^1.4.431 - node-releases: ^2.0.12 - update-browserslist-db: ^1.0.11 - bin: - browserslist: cli.js - checksum: 1e27c0f111a35d1dd0e8fc2c61781b0daefabc2c9471b0b10537ce54843014bceb2a1ce4571af1a82b2bf1e6e6e05d38865916689a158f03bc2c7a4ec2577db8 - languageName: node - linkType: hard - "bser@npm:2.1.1": version: 2.1.1 resolution: "bser@npm:2.1.1" @@ -7345,13 +6209,6 @@ __metadata: languageName: node linkType: hard -"builtin-modules@npm:^3.1.0": - version: 3.3.0 - resolution: "builtin-modules@npm:3.3.0" - checksum: db021755d7ed8be048f25668fe2117620861ef6703ea2c65ed2779c9e3636d5c3b82325bd912244293959ff3ae303afa3471f6a15bf5060c103e4cc3a839749d - languageName: node - linkType: hard - "builtin-modules@npm:^3.1.0, builtin-modules@npm:^3.3.0": version: 3.3.0 resolution: "builtin-modules@npm:3.3.0" @@ -7460,13 +6317,6 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001464, caniuse-lite@npm:^1.0.30001503, caniuse-lite@npm:^1.0.30001517": - version: 1.0.30001517 - resolution: "caniuse-lite@npm:1.0.30001517" - checksum: e4e87436ae1c4408cf4438aac22902b31eb03f3f5bad7f33bc518d12ffb35f3fd9395ccf7efc608ee046f90ce324ec6f7f26f8a8172b8c43c26a06ecee612a29 - languageName: node - linkType: hard - "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001517, caniuse-lite@npm:^1.0.30001520, caniuse-lite@npm:^1.0.30001522": version: 1.0.30001522 resolution: "caniuse-lite@npm:1.0.30001522" @@ -7780,13 +6630,6 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^2.0.10, colorette@npm:^2.0.14, colorette@npm:^2.0.19": - version: 2.0.20 - resolution: "colorette@npm:2.0.20" - checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d - languageName: node - linkType: hard - "colorette@npm:^2.0.10, colorette@npm:^2.0.14, colorette@npm:^2.0.20": version: 2.0.20 resolution: "colorette@npm:2.0.20" @@ -8273,13 +7116,6 @@ __metadata: languageName: node linkType: hard -"css-functions-list@npm:^3.1.0": - version: 3.2.0 - resolution: "css-functions-list@npm:3.2.0" - checksum: fe912ea852fad500aef9a4f04db9a0371c7b0eb1ac1a45fbd8df0156ae0538cee7492ebd620b9bb502fe5bf2b5ed3bf3c16b6659cf67c7144eff0b597bcc3891 - languageName: node - linkType: hard - "css-functions-list@npm:^3.2.0": version: 3.2.0 resolution: "css-functions-list@npm:3.2.0" @@ -8403,45 +7239,6 @@ __metadata: languageName: node linkType: hard -"cssnano-preset-default@npm:^5.2.14": - version: 5.2.14 - resolution: "cssnano-preset-default@npm:5.2.14" - dependencies: - css-declaration-sorter: ^6.3.1 - cssnano-utils: ^3.1.0 - postcss-calc: ^8.2.3 - postcss-colormin: ^5.3.1 - postcss-convert-values: ^5.1.3 - postcss-discard-comments: ^5.1.2 - postcss-discard-duplicates: ^5.1.0 - postcss-discard-empty: ^5.1.1 - postcss-discard-overridden: ^5.1.0 - postcss-merge-longhand: ^5.1.7 - postcss-merge-rules: ^5.1.4 - postcss-minify-font-values: ^5.1.0 - postcss-minify-gradients: ^5.1.1 - postcss-minify-params: ^5.1.4 - postcss-minify-selectors: ^5.2.1 - postcss-normalize-charset: ^5.1.0 - postcss-normalize-display-values: ^5.1.0 - postcss-normalize-positions: ^5.1.1 - postcss-normalize-repeat-style: ^5.1.1 - postcss-normalize-string: ^5.1.0 - postcss-normalize-timing-functions: ^5.1.0 - postcss-normalize-unicode: ^5.1.1 - postcss-normalize-url: ^5.1.0 - postcss-normalize-whitespace: ^5.1.1 - postcss-ordered-values: ^5.1.3 - postcss-reduce-initial: ^5.1.2 - postcss-reduce-transforms: ^5.1.0 - postcss-svgo: ^5.1.0 - postcss-unique-selectors: ^5.1.1 - peerDependencies: - postcss: ^8.2.15 - checksum: d3bbbe3d50c6174afb28d0bdb65b511fdab33952ec84810aef58b87189f3891c34aaa8b6a6101acd5314f8acded839b43513e39a75f91a698ddc985a1b1d9e95 - languageName: node - linkType: hard - "cssnano-preset-default@npm:^6.0.1": version: 6.0.1 resolution: "cssnano-preset-default@npm:6.0.1" @@ -8502,19 +7299,6 @@ __metadata: languageName: node linkType: hard -"cssnano@npm:^5.1.14": - version: 5.1.15 - resolution: "cssnano@npm:5.1.15" - dependencies: - cssnano-preset-default: ^5.2.14 - lilconfig: ^2.0.3 - yaml: ^1.10.2 - peerDependencies: - postcss: ^8.2.15 - checksum: ca9e1922178617c66c2f1548824b2c7af2ecf69cc3a187fc96bf8d29251c2e84d9e4966c69cf64a2a6a057a37dff7d6d057bc8a2a0957e6ea382e452ae9d0bbb - languageName: node - linkType: hard - "csso@npm:^5.0.5": version: 5.0.5 resolution: "csso@npm:5.0.5" @@ -8763,13 +7547,6 @@ __metadata: languageName: node linkType: hard -"depd@npm:^2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a - languageName: node - linkType: hard - "dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" @@ -8800,13 +7577,6 @@ __metadata: languageName: node linkType: hard -"dexie@npm:3.2.3": - version: 3.2.3 - resolution: "dexie@npm:3.2.3" - checksum: 54fd7bc94364ed601dc2d53f8b488e49ac61d4ec532f001a68fde9ffccb4bf3c6a8af310b41d8f52c94c1a99c0e165437d7b223b655df582ceda90b9bfcd60e7 - languageName: node - linkType: hard - "dexie@npm:3.2.4, dexie@npm:^3.2.0, dexie@npm:latest": version: 3.2.4 resolution: "dexie@npm:3.2.4" @@ -8814,17 +7584,10 @@ __metadata: languageName: node linkType: hard -"dexie@npm:3.2.4, dexie@npm:latest": - version: 3.2.4 - resolution: "dexie@npm:3.2.4" - checksum: 4e5294a954118b6862c864b8c3970904a1733daebcd919488624520696411e2e81ed1bceeac3634c5c15a21e37ce4b8502ed41c4edfbc5ba3f5925c34d56497b - languageName: node - linkType: hard - -"diff-sequences@npm:^29.4.3": - version: 29.4.3 - resolution: "diff-sequences@npm:29.4.3" - checksum: 28b265e04fdddcf7f9f814effe102cc95a9dec0564a579b5aed140edb24fc345c611ca52d76d725a3cab55d3888b915b5e8a4702e0f6058968a90fa5f41fcde7 +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa languageName: node linkType: hard @@ -9057,17 +7820,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.431": - version: 1.4.468 - resolution: "electron-to-chromium@npm:1.4.468" - checksum: 3da242381c95286a928ef03501c0fdcc71b773e382cc8574aa998562ae8c9b14712c910879b41d6184fd954ccecc2424865754a86e20d83077a35a0b75a1cfea - languageName: node - linkType: hard - "electron-to-chromium@npm:^1.4.477": - version: 1.4.496 - resolution: "electron-to-chromium@npm:1.4.496" - checksum: b90cc4cc71691a9506bcce3b8b184d22794c58b4a2af5e95f7bc305b254e8c5af06b51e26f866d018aaf70b80e0fb498e3a196c5841765bcf05bac9f0f924624 + version: 1.4.498 + resolution: "electron-to-chromium@npm:1.4.498" + checksum: 01962ae42e9097c321cb6ff63ca97dfd36457050727893d1768e6eb1b7d5a48ece568b94b1128fd0211f7ce3a31aca0c17eb72b1292d9b5ef7b0664d90dfe3aa languageName: node linkType: hard @@ -9169,13 +7925,6 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.4.0": - version: 4.5.0 - resolution: "entities@npm:4.5.0" - checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 - languageName: node - linkType: hard - "entities@npm:~2.1.0": version: 2.1.0 resolution: "entities@npm:2.1.0" @@ -9240,53 +7989,6 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": - version: 1.22.1 - resolution: "es-abstract@npm:1.22.1" - dependencies: - array-buffer-byte-length: ^1.0.0 - arraybuffer.prototype.slice: ^1.0.1 - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-set-tostringtag: ^2.0.1 - es-to-primitive: ^1.2.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.2.1 - get-symbol-description: ^1.0.0 - globalthis: ^1.0.3 - gopd: ^1.0.1 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-proto: ^1.0.1 - has-symbols: ^1.0.3 - internal-slot: ^1.0.5 - is-array-buffer: ^3.0.2 - is-callable: ^1.2.7 - is-negative-zero: ^2.0.2 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - is-string: ^1.0.7 - is-typed-array: ^1.1.10 - is-weakref: ^1.0.2 - object-inspect: ^1.12.3 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.5.0 - safe-array-concat: ^1.0.0 - safe-regex-test: ^1.0.0 - string.prototype.trim: ^1.2.7 - string.prototype.trimend: ^1.0.6 - string.prototype.trimstart: ^1.0.6 - typed-array-buffer: ^1.0.0 - typed-array-byte-length: ^1.0.0 - typed-array-byte-offset: ^1.0.0 - typed-array-length: ^1.0.4 - unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.10 - checksum: 614e2c1c3717cb8d30b6128ef12ea110e06fd7d75ad77091ca1c5dbfb00da130e62e4bbbbbdda190eada098a22b27fe0f99ae5a1171dac2c8663b1e8be8a3a9b - languageName: node - linkType: hard - "es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4, es-abstract@npm:^1.21.2, es-abstract@npm:^1.21.3": version: 1.22.1 resolution: "es-abstract@npm:1.22.1" @@ -9525,18 +8227,6 @@ __metadata: languageName: node linkType: hard -"eslint-module-utils@npm:^2.7.4": - version: 2.8.0 - resolution: "eslint-module-utils@npm:2.8.0" - dependencies: - debug: ^3.2.7 - peerDependenciesMeta: - eslint: - optional: true - checksum: 74c6dfea7641ebcfe174be61168541a11a14aa8d72e515f5f09af55cd0d0862686104b0524aa4b8e0ce66418a44aa38a94d2588743db5fd07a6b49ffd16921d2 - languageName: node - linkType: hard - "eslint-module-utils@npm:^2.7.4, eslint-module-utils@npm:^2.8.0": version: 2.8.0 resolution: "eslint-module-utils@npm:2.8.0" @@ -9549,17 +8239,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-babel@npm:5.3.1": - version: 5.3.1 - resolution: "eslint-plugin-babel@npm:5.3.1" - dependencies: - eslint-rule-composer: ^0.3.0 - peerDependencies: - eslint: ">=4.0.0" - checksum: 18b0bfda53deab4056160a4f3a89a4649b6ae17e4970cc836f7d586c8abab5ebb492440e2acf4770a463138a44a4ee7f9b22b4ed1fdbe69c652f714c1d973e38 - languageName: node - linkType: hard - "eslint-plugin-better-styled-components@npm:^1.1.2": version: 1.1.2 resolution: "eslint-plugin-better-styled-components@npm:1.1.2" @@ -9637,25 +8316,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:^39.8.0": - version: 39.9.1 - resolution: "eslint-plugin-jsdoc@npm:39.9.1" - dependencies: - "@es-joy/jsdoccomment": ~0.40.1 - are-docs-informative: ^0.0.2 - comment-parser: 1.4.0 - debug: ^4.3.4 - escape-string-regexp: ^4.0.0 - esquery: ^1.5.0 - is-builtin-module: ^3.2.1 - semver: ^7.5.4 - spdx-expression-parse: ^3.0.1 - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 757444505eabff5bd24ded18fd1a2920031520ba251c84944dd5c12dd2b21460fde6aa6253e454518386c3d7a0fa64f2496e3ba27bd338ec7768cb090ae86cca - languageName: node - linkType: hard - "eslint-plugin-jsdoc@npm:^46.2.3": version: 46.5.0 resolution: "eslint-plugin-jsdoc@npm:46.5.0" @@ -9815,110 +8475,39 @@ __metadata: checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb languageName: node linkType: hard - -"eslint-scope@npm:^7.2.0": - version: 7.2.1 - resolution: "eslint-scope@npm:7.2.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^5.2.0 - checksum: dccda5c8909216f6261969b72c77b95e385f9086bed4bc09d8a6276df8439d8f986810fd9ac3bd02c94c0572cefc7fdbeae392c69df2e60712ab8263986522c5 - languageName: node - linkType: hard - -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^5.2.0 - checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^1.1.0": - version: 1.3.0 - resolution: "eslint-visitor-keys@npm:1.3.0" - checksum: 37a19b712f42f4c9027e8ba98c2b06031c17e0c0a4c696cd429bd9ee04eb43889c446f2cd545e1ff51bef9593fcec94ecd2c2ef89129fcbbf3adadbef520376a - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.1.0": - version: 2.1.0 - resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1": - version: 3.4.1 - resolution: "eslint-visitor-keys@npm:3.4.1" - checksum: f05121d868202736b97de7d750847a328fcfa8593b031c95ea89425333db59676ac087fa905eba438d0a3c5769632f828187e0c1a0d271832a2153c1d3661c2c - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": - version: 3.4.3 - resolution: "eslint-visitor-keys@npm:3.4.3" - checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 - languageName: node - linkType: hard - -"eslint@npm:^8, eslint@npm:^8.47.0": - version: 8.47.0 - resolution: "eslint@npm:8.47.0" - dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@eslint-community/regexpp": ^4.6.1 - "@eslint/eslintrc": ^2.1.2 - "@eslint/js": ^8.47.0 - "@humanwhocodes/config-array": ^0.11.10 - "@humanwhocodes/module-importer": ^1.0.1 - "@nodelib/fs.walk": ^1.2.8 - ajv: ^6.12.4 - chalk: ^4.0.0 - cross-spawn: ^7.0.2 - debug: ^4.3.2 - doctrine: ^3.0.0 - escape-string-regexp: ^4.0.0 - eslint-scope: ^7.2.2 - eslint-visitor-keys: ^3.4.3 - espree: ^9.6.1 - esquery: ^1.4.2 - esutils: ^2.0.2 - fast-deep-equal: ^3.1.3 - file-entry-cache: ^6.0.1 - find-up: ^5.0.0 - glob-parent: ^6.0.2 - globals: ^13.19.0 - graphemer: ^1.4.0 - ignore: ^5.2.0 - imurmurhash: ^0.1.4 - is-glob: ^4.0.0 - is-path-inside: ^3.0.3 - js-yaml: ^4.1.0 - json-stable-stringify-without-jsonify: ^1.0.1 - levn: ^0.4.1 - lodash.merge: ^4.6.2 - minimatch: ^3.1.2 - natural-compare: ^1.4.0 - optionator: ^0.9.3 - strip-ansi: ^6.0.1 - text-table: ^0.2.0 - bin: - eslint: bin/eslint.js - checksum: 1988617f703eadc5c7540468d54dc8e5171cf2bb9483f6172799cd1ff54a9a5e4470f003784e8cef92687eaa14de37172732787040e67817581a20bcb9c15970 + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^2.1.0": + version: 2.1.0 + resolution: "eslint-visitor-keys@npm:2.1.0" + checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 languageName: node linkType: hard -"eslint@npm:^8.41.0": - version: 8.45.0 - resolution: "eslint@npm:8.45.0" +"eslint@npm:^8, eslint@npm:^8.47.0": + version: 8.47.0 + resolution: "eslint@npm:8.47.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 - "@eslint-community/regexpp": ^4.4.0 - "@eslint/eslintrc": ^2.1.0 - "@eslint/js": 8.44.0 + "@eslint-community/regexpp": ^4.6.1 + "@eslint/eslintrc": ^2.1.2 + "@eslint/js": ^8.47.0 "@humanwhocodes/config-array": ^0.11.10 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -9928,9 +8517,9 @@ __metadata: debug: ^4.3.2 doctrine: ^3.0.0 escape-string-regexp: ^4.0.0 - eslint-scope: ^7.2.0 - eslint-visitor-keys: ^3.4.1 - espree: ^9.6.0 + eslint-scope: ^7.2.2 + eslint-visitor-keys: ^3.4.3 + espree: ^9.6.1 esquery: ^1.4.2 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 @@ -9954,18 +8543,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 3e6dcce5cc43c5e301662db88ee26d1d188b22c177b9f104d7eefd1191236980bd953b3670fe2fac287114b26d7c5420ab48407d7ea1c3a446d6313c000009da - languageName: node - linkType: hard - -"espree@npm:^9.0.0, espree@npm:^9.6.0": - version: 9.6.1 - resolution: "espree@npm:9.6.1" - dependencies: - acorn: ^8.9.0 - acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.4.1 - checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9 + checksum: 1988617f703eadc5c7540468d54dc8e5171cf2bb9483f6172799cd1ff54a9a5e4470f003784e8cef92687eaa14de37172732787040e67817581a20bcb9c15970 languageName: node linkType: hard @@ -10109,23 +8687,6 @@ __metadata: languageName: node linkType: hard -"execa@npm:^7.0.0, execa@npm:^7.1.1": - version: 7.1.1 - resolution: "execa@npm:7.1.1" - dependencies: - cross-spawn: ^7.0.3 - get-stream: ^6.0.1 - human-signals: ^4.3.0 - is-stream: ^3.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^5.1.0 - onetime: ^6.0.0 - signal-exit: ^3.0.7 - strip-final-newline: ^3.0.0 - checksum: 21fa46fc69314ace4068cf820142bdde5b643a5d89831c2c9349479c1555bff137a291b8e749e7efca36535e4e0a8c772c11008ca2e84d2cbd6ca141a3c8f937 - languageName: node - linkType: hard - "exif-parser@npm:^0.1.12": version: 0.1.12 resolution: "exif-parser@npm:0.1.12" @@ -10149,31 +8710,16 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.6.1": - version: 29.6.1 - resolution: "expect@npm:29.6.1" - dependencies: - "@jest/expect-utils": ^29.6.1 - "@types/node": "*" - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.1 - jest-message-util: ^29.6.1 - jest-util: ^29.6.1 - checksum: 4e712e52c90f6c54e748fd2876be33c43ada6a59088ddf6a1acb08b18b3b97b3a672124684abe32599986d2f2a438d5afad148837ee06ea386d2a4bf0348de78 - languageName: node - linkType: hard - -"expect@npm:^29.0.0, expect@npm:^29.6.2": - version: 29.6.2 - resolution: "expect@npm:29.6.2" +"expect@npm:^29.0.0, expect@npm:^29.6.3": + version: 29.6.3 + resolution: "expect@npm:29.6.3" dependencies: - "@jest/expect-utils": ^29.6.2 - "@types/node": "*" - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.2 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 - checksum: 71f7b0c560e58bf6d27e0fded261d4bdb7ef81552a6bb4bd1ee09ce7a1f7dca67fbf83cf9b07a6645a88ef52e65085a0dcbe17f6c063b53ff7c2f0f3ea4ef69e + "@jest/expect-utils": ^29.6.3 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.6.3 + jest-message-util: ^29.6.3 + jest-util: ^29.6.3 + checksum: c72de87abbc9acc17c66f42fcac8be4dff256f871f1800c3aaa004c74f95f61866cf80e8f2ddacc3f2df290fd58b0cba8adb3a0dee3a09dd5d39f97f63d2aae8 languageName: node linkType: hard @@ -10231,22 +8777,9 @@ __metadata: linkType: hard "fast-fifo@npm:^1.1.0": - version: 1.3.0 - resolution: "fast-fifo@npm:1.3.0" - checksum: edc589b818eede61d0048f399daf67cbc5ef736588669482a20f37269b4808356e54ab89676fd8fa59b26c216c11e5ac57335cc70dca54fbbf692d4acde10de6 - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": - version: 3.3.1 - resolution: "fast-glob@npm:3.3.1" - dependencies: - "@nodelib/fs.stat": ^2.0.2 - "@nodelib/fs.walk": ^1.2.3 - glob-parent: ^5.1.2 - merge2: ^1.3.0 - micromatch: ^4.0.4 - checksum: b6f3add6403e02cf3a798bfbb1183d0f6da2afd368f27456010c0bc1f9640aea308243d4cb2c0ab142f618276e65ecb8be1661d7c62a7b4e5ba774b9ce5432e5 + version: 1.3.2 + resolution: "fast-fifo@npm:1.3.2" + checksum: 6bfcba3e4df5af7be3332703b69a7898a8ed7020837ec4395bb341bd96cc3a6d86c3f6071dd98da289618cf2234c70d84b2a6f09a33dd6f988b1ff60d8e54275 languageName: node linkType: hard @@ -10617,18 +9150,18 @@ __metadata: linkType: hard "fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" dependencies: node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + checksum: 11e6ea6fea15e42461fc55b4b0e4a0a3c654faa567f1877dbd353f39156f69def97a69936d1746619d656c4b93de2238bf731f6085a03a50cabf287c9d024317 conditions: os=darwin languageName: node linkType: hard "fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=18f3a7" dependencies: node-gyp: latest conditions: os=darwin @@ -11029,19 +9562,6 @@ __metadata: languageName: node linkType: hard -"globby@npm:^13.1.1, globby@npm:^13.1.3": - version: 13.2.2 - resolution: "globby@npm:13.2.2" - dependencies: - dir-glob: ^3.0.1 - fast-glob: ^3.3.0 - ignore: ^5.2.4 - merge2: ^1.4.1 - slash: ^4.0.0 - checksum: f3d84ced58a901b4fcc29c846983108c426631fe47e94872868b65565495f7bee7b3defd68923bd480582771fd4bbe819217803a164a618ad76f1d22f666f41e - languageName: node - linkType: hard - "globjoin@npm:^0.1.4": version: 0.1.4 resolution: "globjoin@npm:0.1.4" @@ -11192,13 +9712,6 @@ __metadata: languageName: node linkType: hard -"highlight.js@npm:*, highlight.js@npm:11.8.0": - version: 11.8.0 - resolution: "highlight.js@npm:11.8.0" - checksum: d2578a57aee7315946ff19379053fd0a28b127baabf7617ab1d28d62cdc4eaf3d75053569cb8479a5afdc7a68f1ba9a6c1d612d8ae399b4b9aa43093b4fb6831 - languageName: node - linkType: hard - "highlight.js@npm:11.8.0": version: 11.8.0 resolution: "highlight.js@npm:11.8.0" @@ -11280,13 +9793,6 @@ __metadata: languageName: node linkType: hard -"html-tags@npm:^3.2.0": - version: 3.3.1 - resolution: "html-tags@npm:3.3.1" - checksum: b4ef1d5a76b678e43cce46e3783d563607b1d550cab30b4f511211564574770aa8c658a400b100e588bc60b8234e59b35ff72c7851cc28f3b5403b13a2c6cbce - languageName: node - linkType: hard - "html-tags@npm:^3.3.1": version: 3.3.1 resolution: "html-tags@npm:3.3.1" @@ -11459,13 +9965,6 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.2.1, ignore@npm:^5.2.4": - version: 5.2.4 - resolution: "ignore@npm:5.2.4" - checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef - languageName: node - linkType: hard - "ignore@npm:^5.2.0, ignore@npm:^5.2.4": version: 5.2.4 resolution: "ignore@npm:5.2.4" @@ -11735,15 +10234,6 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.12.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0": - version: 2.12.1 - resolution: "is-core-module@npm:2.12.1" - dependencies: - has: ^1.0.3 - checksum: f04ea30533b5e62764e7b2e049d3157dc0abd95ef44275b32489ea2081176ac9746ffb1cdb107445cf1ff0e0dfcad522726ca27c27ece64dadf3795428b8e468 - languageName: node - linkType: hard - "is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0": version: 2.13.0 resolution: "is-core-module@npm:2.13.0" @@ -12258,7 +10748,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": +"istanbul-lib-instrument@npm:^5.0.4": version: 5.2.1 resolution: "istanbul-lib-instrument@npm:5.2.1" dependencies: @@ -12271,6 +10761,19 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.0 + resolution: "istanbul-lib-instrument@npm:6.0.0" + dependencies: + "@babel/core": ^7.12.3 + "@babel/parser": ^7.14.7 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.2.0 + semver: ^7.5.4 + checksum: b9dc3723a769e65dbe1b912f935088ffc07cf393fa78a3ce79022c91aabb0ad01405ffd56083cdd822e514798e9daae3ea7bfe85633b094ecb335d28eb0a3f97 + languageName: node + linkType: hard + "istanbul-lib-report@npm:^3.0.0": version: 3.0.1 resolution: "istanbul-lib-report@npm:3.0.1" @@ -12353,58 +10856,59 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-changed-files@npm:29.5.0" +"jest-changed-files@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-changed-files@npm:29.6.3" dependencies: execa: ^5.0.0 + jest-util: ^29.6.3 p-limit: ^3.1.0 - checksum: a67a7cb3c11f8f92bd1b7c79e84f724cbd11a9ad51f3cdadafe3ce7ee3c79ee50dbea128f920f5fddc807e9e4e83f5462143094391feedd959a77dd20ab96cf3 + checksum: 55bc820a70c220a02fec214d5c48d5e0d829549e5c7b9959776b4ca3f76f5ff20c7c8ff816a847822766f1d712477ab3027f7a66ec61bf65de3f852e878b4dfd languageName: node linkType: hard -"jest-circus@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-circus@npm:29.6.2" +"jest-circus@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-circus@npm:29.6.3" dependencies: - "@jest/environment": ^29.6.2 - "@jest/expect": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/environment": ^29.6.3 + "@jest/expect": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^1.0.0 is-generator-fn: ^2.0.0 - jest-each: ^29.6.2 - jest-matcher-utils: ^29.6.2 - jest-message-util: ^29.6.2 - jest-runtime: ^29.6.2 - jest-snapshot: ^29.6.2 - jest-util: ^29.6.2 + jest-each: ^29.6.3 + jest-matcher-utils: ^29.6.3 + jest-message-util: ^29.6.3 + jest-runtime: ^29.6.3 + jest-snapshot: ^29.6.3 + jest-util: ^29.6.3 p-limit: ^3.1.0 - pretty-format: ^29.6.2 + pretty-format: ^29.6.3 pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 4f5a96a68c3c808c3d5a9279a2f39a2937386e2cebba5096971f267d79562ce2133a13bc05356a39f8f1ba68fcfe1eb39c4572b3fb0f91affbd932950e89c1e3 + checksum: 65b76f853d1bd2ddc74ec5d9a37cff3d04d436e675b0ded52167ba9e5dfb9d6fbca8572c9f255d379ad332e87770bac3da6dbcabcaf840ee2ba6e0cde5b8c20e languageName: node linkType: hard "jest-cli@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-cli@npm:29.6.2" + version: 29.6.3 + resolution: "jest-cli@npm:29.6.3" dependencies: - "@jest/core": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/core": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/types": ^29.6.3 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.6.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 + jest-config: ^29.6.3 + jest-util: ^29.6.3 + jest-validate: ^29.6.3 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -12414,34 +10918,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 0b7b09ae4bd327caf1981eac5a14679ddda3c5c836c9f8ea0ecfe1e5e10e9a39a5ed783fa38d25383604c4d3405595e74b391d955e99aea7e51acb41a59ea108 + checksum: 69c422f1522b25756afb5a27b4b01a710d0f5ba52c592903b1ab47103ee2414ac9a9fff36a976092bb595980ba5c45f128e33b5d6ebc666c8a6973474bbf1443 languageName: node linkType: hard -"jest-config@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-config@npm:29.6.2" +"jest-config@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-config@npm:29.6.3" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.6.2 - "@jest/types": ^29.6.1 - babel-jest: ^29.6.2 + "@jest/test-sequencer": ^29.6.3 + "@jest/types": ^29.6.3 + babel-jest: ^29.6.3 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.6.2 - jest-environment-node: ^29.6.2 - jest-get-type: ^29.4.3 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.2 - jest-runner: ^29.6.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 + jest-circus: ^29.6.3 + jest-environment-node: ^29.6.3 + jest-get-type: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.6.3 + jest-runner: ^29.6.3 + jest-util: ^29.6.3 + jest-validate: ^29.6.3 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.6.2 + pretty-format: ^29.6.3 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -12452,53 +10956,41 @@ __metadata: optional: true ts-node: optional: true - checksum: 3bd104a3ac2dd9d34986238142437606354169766dcf88359a7a12ac106d0dc17dcc6b627e4f20db97a58bac5b0502b5436c9cc4722b3629b2a114bba6da9128 + checksum: c3505411b89e5d046fbd294bb6e9ccc8c64a7efcf9d546450bec25512db4cbb67c8d102e4a58fa8ef8eac73052d1259533d9012b483469581ad5ed4cc5faa39f languageName: node linkType: hard -"jest-diff@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-diff@npm:29.6.1" +"jest-diff@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-diff@npm:29.6.3" dependencies: chalk: ^4.0.0 - diff-sequences: ^29.4.3 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.1 - checksum: c6350178ca27d92c7fd879790fb2525470c1ff1c5d29b1834a240fecd26c6904fb470ebddb98dc96dd85389c56c3b50e6965a1f5203e9236d213886ed9806219 + diff-sequences: ^29.6.3 + jest-get-type: ^29.6.3 + pretty-format: ^29.6.3 + checksum: 23b0a88efeab36566386f059f3da340754d2860969cbc34805154e2377714e37e3130e21a791fc68008fb460bbf5edd7ec43c16d96d15797b32ccfae5160fe37 languageName: node linkType: hard -"jest-diff@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-diff@npm:29.6.2" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.4.3 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.2 - checksum: 0effd66a0c23f8c139ebf7ca99ed30b479b86fff66f19ad4869f130aaf7ae6a24ca1533f697b7e4930cbe2ddffc85387723fcca673501c653fb77a38f538e959 - languageName: node - linkType: hard - -"jest-docblock@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-docblock@npm:29.4.3" +"jest-docblock@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-docblock@npm:29.6.3" dependencies: detect-newline: ^3.0.0 - checksum: e0e9df1485bb8926e5b33478cdf84b3387d9caf3658e7dc1eaa6dc34cb93dea0d2d74797f6e940f0233a88f3dadd60957f2288eb8f95506361f85b84bf8661df + checksum: 6f3213a1e79e7eedafeb462acfa9a41303f9c0167893b140f6818fa16d7eb6bf3f9b9cf4669097ca6b7154847793489ecd6b4f6cfb0e416b88cfa3b4b36715b6 languageName: node linkType: hard -"jest-each@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-each@npm:29.6.2" +"jest-each@npm:^29.6.2, jest-each@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-each@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 chalk: ^4.0.0 - jest-get-type: ^29.4.3 - jest-util: ^29.6.2 - pretty-format: ^29.6.2 - checksum: b64194f4ca27afc6070a42b7ecccbc68be0ded19a849f8cd8f91a2abb23fadae2d38d47559a315f4d1f576927761f3ea437a75ab6cf19206332abb8527d7c165 + jest-get-type: ^29.6.3 + jest-util: ^29.6.3 + pretty-format: ^29.6.3 + checksum: fe06e80b3554e2a8464f5f5c61943e02db1f8a7177139cb55b3201a1d1513cb089d8800401f102729a31bf8dd6f88229044e6088fea9dd5647ed11e841b6b88c languageName: node linkType: hard @@ -12523,47 +11015,47 @@ __metadata: languageName: node linkType: hard -"jest-environment-node@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-environment-node@npm:29.6.2" +"jest-environment-node@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-environment-node@npm:29.6.3" dependencies: - "@jest/environment": ^29.6.2 - "@jest/fake-timers": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/environment": ^29.6.3 + "@jest/fake-timers": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^29.6.2 - jest-util: ^29.6.2 - checksum: 0b754ac2d3bdb7ce5d6fc28595b9d1c64176f20506b6f773b18b0280ab0b396ed7d927c8519779d3c560fa2b13236ee7077092ccb19a13bea23d40dd30f06450 + jest-mock: ^29.6.3 + jest-util: ^29.6.3 + checksum: c215d8d94d95ba0353677c8b6c7c46d3f612bfd6becafa90e842ab99cb4ba2243c7f0309f1518ea2879820d39c0f3ec0d678e9ebb41055ed6eedbeb123f2897c languageName: node linkType: hard -"jest-get-type@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-get-type@npm:29.4.3" - checksum: 6ac7f2dde1c65e292e4355b6c63b3a4897d7e92cb4c8afcf6d397f2682f8080e094c8b0b68205a74d269882ec06bf696a9de6cd3e1b7333531e5ed7b112605ce +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 languageName: node linkType: hard -"jest-haste-map@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-haste-map@npm:29.6.2" +"jest-haste-map@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-haste-map@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 fb-watchman: ^2.0.0 fsevents: ^2.3.2 graceful-fs: ^4.2.9 - jest-regex-util: ^29.4.3 - jest-util: ^29.6.2 - jest-worker: ^29.6.2 + jest-regex-util: ^29.6.3 + jest-util: ^29.6.3 + jest-worker: ^29.6.3 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: 726233972030eb2e5bce6c9468e497310436b455c88b40e744bd053e20a6f3ff19aec340edcbd89537c629ed5cf8916506bc895d690cc39a0862c74dcd95b7b8 + checksum: d72b81442cf54c5962009502b4001e53b7e40ecd1717bb5d17d5b0badc89cf5529b8be5d2804442d25ee6a70809de150e554b074029170b0e86a32b7560ce430 languageName: node linkType: hard @@ -12592,82 +11084,53 @@ __metadata: languageName: node linkType: hard -"jest-leak-detector@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-leak-detector@npm:29.6.2" - dependencies: - jest-get-type: ^29.4.3 - pretty-format: ^29.6.2 - checksum: e00152acdba8aa8f9334775b77375947508051c34646fbeb702275da2b6ac6145f8cad6d5893112e76484d00fa8c0b4fd71b78ab0b4ef34950f5b6a84f37ae67 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-matcher-utils@npm:29.6.1" - dependencies: - chalk: ^4.0.0 - jest-diff: ^29.6.1 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.1 - checksum: d2efa6aed6e4820758b732b9fefd315c7fa4508ee690da656e1c5ac4c1a0f4cee5b04c9719ee1fda9aeb883b4209186c145089ced521e715b9fa70afdfa4a9c6 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-matcher-utils@npm:29.6.2" +"jest-leak-detector@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-leak-detector@npm:29.6.3" dependencies: - chalk: ^4.0.0 - jest-diff: ^29.6.2 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.2 - checksum: 3e1b65dd30d05f75fe56dc45fbe4135aec2ff96a3d1e21afbf6a66f3a45a7e29cd0fd37cf80b9564e0381d6205833f77ccaf766c6f7e1aad6b7924d117be504e + jest-get-type: ^29.6.3 + pretty-format: ^29.6.3 + checksum: 27548fcfc7602fe1b88f8600185e35ffff71751f3631e52bbfdfc72776f5a13a430185cf02fc632b41320a74f99ae90e40ce101c8887509f0f919608a7175129 languageName: node linkType: hard -"jest-message-util@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-message-util@npm:29.6.1" +"jest-matcher-utils@npm:^29.6.2, jest-matcher-utils@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-matcher-utils@npm:29.6.3" dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.1 - "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.6.2 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: e8e3c8d2301e2ca4038ed6df8cbba7fedc6949d1ede4c0e3f1f44f53afb56d77eb35983fa460140d0eadeab99a5f3ae04b703fe77cd7b316b40b361228b5aa1a + jest-diff: ^29.6.3 + jest-get-type: ^29.6.3 + pretty-format: ^29.6.3 + checksum: d4965d5cc079799bc0a9075daea7a964768d4db55f0388ef879642215399c955ae9a22c967496813c908763b487f97e40701a1eb4ed5b0b7529c447b6d33e652 languageName: node linkType: hard -"jest-message-util@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-message-util@npm:29.6.2" +"jest-message-util@npm:^29.6.2, jest-message-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-message-util@npm:29.6.3" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^29.6.2 + pretty-format: ^29.6.3 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: e8e3c8d2301e2ca4038ed6df8cbba7fedc6949d1ede4c0e3f1f44f53afb56d77eb35983fa460140d0eadeab99a5f3ae04b703fe77cd7b316b40b361228b5aa1a + checksum: 59f5229a06c073a8877ba4d2e304cc07d63b0062bf5764d4bed14364403889e77f1825d1bd9017c19a840847d17dffd414dc06f1fcb537b5f9e03dbc65b84ada languageName: node linkType: hard -"jest-mock@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-mock@npm:29.6.2" +"jest-mock@npm:^29.6.2, jest-mock@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-mock@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-util: ^29.6.2 - checksum: 0bacb5d58441462c0e531ec4d2f7377eecbe21f664d8a460e72f94ba61d22635028931678e7a0f1c3e3f5894973db8e409432f7db4c01283456c8fdbd85f5b3b + jest-util: ^29.6.3 + checksum: 35772968010c0afb1bb1ef78570b9cbea907c6f967d24b4e95e1a596a1000c63d60e225fb9ddfdd5218674da4aa61d92a09927fc26310cecbbfaa8278d919e32 languageName: node linkType: hard @@ -12683,182 +11146,168 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-regex-util@npm:29.4.3" - checksum: 96fc7fc28cd4dd73a63c13a526202c4bd8b351d4e5b68b1a2a2c88da3308c2a16e26feaa593083eb0bac38cca1aa9dd05025412e7de013ba963fb8e66af22b8a +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-resolve-dependencies@npm:29.6.2" +"jest-resolve-dependencies@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-resolve-dependencies@npm:29.6.3" dependencies: - jest-regex-util: ^29.4.3 - jest-snapshot: ^29.6.2 - checksum: d40ee11af2c9d2ef0dbbcf9a5b7dda37c2b86cf4e5de1705795919fd8927907569115c502116ab56de0dca576d5faa31ec9b636240333b6830a568a63004da17 + jest-regex-util: ^29.6.3 + jest-snapshot: ^29.6.3 + checksum: db0e57158cc085926f1e0dd63919cc78b87dc7e5644cd40f6b4b0bdcc228f3872b5520477db9a67889f4bcf658c5b85303fef89eee1df60d02a662c356021c2f languageName: node linkType: hard -"jest-resolve@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-resolve@npm:29.6.2" +"jest-resolve@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-resolve@npm:29.6.3" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 + jest-haste-map: ^29.6.3 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.6.2 - jest-validate: ^29.6.2 + jest-util: ^29.6.3 + jest-validate: ^29.6.3 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: 01721957e61821a576b2ded043eeab8b392166e0e6d8d680f75657737e2ea7481ff29c2716b866ccd12e743f3a8da465504b1028e78b6a3c68b9561303de7ec8 + checksum: 94594aab55b957e4f13fec248a18c99a6d8eb4842aa33ea5ef77179604df206d3fff1c59393a8984f179d0a7c6b98322d260b356076cdc2e74f2ebf1d9fba74a languageName: node linkType: hard -"jest-runner@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-runner@npm:29.6.2" +"jest-runner@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-runner@npm:29.6.3" dependencies: - "@jest/console": ^29.6.2 - "@jest/environment": ^29.6.2 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/console": ^29.6.3 + "@jest/environment": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/transform": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 - jest-docblock: ^29.4.3 - jest-environment-node: ^29.6.2 - jest-haste-map: ^29.6.2 - jest-leak-detector: ^29.6.2 - jest-message-util: ^29.6.2 - jest-resolve: ^29.6.2 - jest-runtime: ^29.6.2 - jest-util: ^29.6.2 - jest-watcher: ^29.6.2 - jest-worker: ^29.6.2 + jest-docblock: ^29.6.3 + jest-environment-node: ^29.6.3 + jest-haste-map: ^29.6.3 + jest-leak-detector: ^29.6.3 + jest-message-util: ^29.6.3 + jest-resolve: ^29.6.3 + jest-runtime: ^29.6.3 + jest-util: ^29.6.3 + jest-watcher: ^29.6.3 + jest-worker: ^29.6.3 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 46bd506a08ddf79628a509aed4105ab74c0b03727a3e24c90bbc2915531860b3da99f7ace2fd9603194440553cffac9cfb1a3b7d0ce03d5fc9c5f2d5ffbb3d3f + checksum: 9f10100f1a558ec78d24e131494d9b3736633f788f3edcd30dbce7257c0cee6f62fec08ab99dbb684ddcc7dbb5ca846711b140ca6090a9547c5900a0e3da53f8 languageName: node linkType: hard -"jest-runtime@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-runtime@npm:29.6.2" +"jest-runtime@npm:^29.6.2, jest-runtime@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-runtime@npm:29.6.3" dependencies: - "@jest/environment": ^29.6.2 - "@jest/fake-timers": ^29.6.2 - "@jest/globals": ^29.6.2 - "@jest/source-map": ^29.6.0 - "@jest/test-result": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/environment": ^29.6.3 + "@jest/fake-timers": ^29.6.3 + "@jest/globals": ^29.6.3 + "@jest/source-map": ^29.6.3 + "@jest/test-result": ^29.6.3 + "@jest/transform": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.2 - jest-message-util: ^29.6.2 - jest-mock: ^29.6.2 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.2 - jest-snapshot: ^29.6.2 - jest-util: ^29.6.2 + jest-haste-map: ^29.6.3 + jest-message-util: ^29.6.3 + jest-mock: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.6.3 + jest-snapshot: ^29.6.3 + jest-util: ^29.6.3 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 8e7e4486b23b01a9c407313681bed0def39680c2ae21cf01347f111983252ec3a024c56493c5411fed53633f02863eed0816099110cbe04b3889aa5babf1042d + checksum: 8743c61a2354dbce87282bfcbc11049f7d30d25ecd5f475ce56c1b7d926debb21b04db284d4d65a14283893a696442c66e923b35742fb02cc9f940a0a41ca49e languageName: node linkType: hard -"jest-snapshot@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-snapshot@npm:29.6.2" +"jest-snapshot@npm:^29.6.2, jest-snapshot@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-snapshot@npm:29.6.3" dependencies: "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 "@babel/plugin-syntax-jsx": ^7.7.2 "@babel/plugin-syntax-typescript": ^7.7.2 "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.6.2 - "@jest/transform": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/expect-utils": ^29.6.3 + "@jest/transform": ^29.6.3 + "@jest/types": ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.6.2 + expect: ^29.6.3 graceful-fs: ^4.2.9 - jest-diff: ^29.6.2 - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.2 - jest-message-util: ^29.6.2 - jest-util: ^29.6.2 + jest-diff: ^29.6.3 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.6.3 + jest-message-util: ^29.6.3 + jest-util: ^29.6.3 natural-compare: ^1.4.0 - pretty-format: ^29.6.2 + pretty-format: ^29.6.3 semver: ^7.5.3 - checksum: c1c70a9dbce7fca62ed73ac38234b4ee643e8b667acf71b4417ab67776c1188bb08b8ad450e56a2889ad182903ffd416386fa8082a477724ccf8d8c29a4c6906 - languageName: node - linkType: hard - -"jest-util@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-util@npm:29.6.1" - dependencies: - "@jest/types": ^29.6.1 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: 8aedc0c80083d0cabd6c6c4f04dea1cbcac609fd7bc3b1fc05a3999291bd6e63dd52b0c806f9378d5cae28eff5a6191709a4987861001293f8d03e53984adca4 + checksum: c63631d2c18adc678455b9aa6e569cb1ea227e97aaa8628e154b39c95ca626d89e88d62c82e07d66cc83a1fddda1f7153506dd0f49d3411bbbecb52272ed72f5 languageName: node linkType: hard -"jest-util@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-util@npm:29.6.2" +"jest-util@npm:^29.6.2, jest-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-util@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: 8aedc0c80083d0cabd6c6c4f04dea1cbcac609fd7bc3b1fc05a3999291bd6e63dd52b0c806f9378d5cae28eff5a6191709a4987861001293f8d03e53984adca4 + checksum: 7bf3ba3ac67ac6ceff7d8fdd23a86768e23ddd9133ecd9140ef87cc0c28708effabaf67a6cd45cd9d90a63d645a522ed0825d09ee59ac4c03b9c473b1fef4c7c languageName: node linkType: hard -"jest-validate@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-validate@npm:29.6.2" +"jest-validate@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-validate@npm:29.6.3" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^29.4.3 + jest-get-type: ^29.6.3 leven: ^3.1.0 - pretty-format: ^29.6.2 - checksum: 32648d002189c0ad8a958eace7c6b7d05ea1dc440a1b91e0f22dc1aef489899446ec80b2d527fd13713862d89dfb4606e24a3bf8a10c4ddac3c911e93b7f0374 + pretty-format: ^29.6.3 + checksum: caa489ed11080441c636b8035ab71bafbdc0c052b1e452855e4d2dd24ac15e497710a270ea6fc5ef8926b22c1ce4d6e07ec2dc193f0810cff5851d7a2222c045 languageName: node linkType: hard -"jest-watcher@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-watcher@npm:29.6.2" +"jest-watcher@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-watcher@npm:29.6.3" dependencies: - "@jest/test-result": ^29.6.2 - "@jest/types": ^29.6.1 + "@jest/test-result": ^29.6.3 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.6.2 + jest-util: ^29.6.3 string-length: ^4.0.1 - checksum: 14624190fc8b5fbae466a2ec81458a88c15716d99f042bb4674d53e9623d305cb2905bc1dffeda05fd1a10a05c2a83efe5ac41942477e2b15eaebb08d0aaab32 + checksum: d31ab2076342d45959d5a7d9fdd88c0c5d52c2ea6fb3b1eabe7f8c28177d90355331beb4d844e171ed9e0341a2da901b7eefaa122505ba0f0ac88e58d29b3374 languageName: node linkType: hard @@ -12884,15 +11333,15 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.6.2": - version: 29.6.2 - resolution: "jest-worker@npm:29.6.2" +"jest-worker@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-worker@npm:29.6.3" dependencies: "@types/node": "*" - jest-util: ^29.6.2 + jest-util: ^29.6.3 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 11035564534bf181ead80b25be138c2d42372bd5626151a3e705200d47a74fd9da3ca79f8a7b15806cdc325ad73c3d21d23acceeed99d50941589ff02915ed38 + checksum: 8ffb24a2d4c70ed3032034a2601defccc19353d854d89459f58793c6c8f170f88038c6722073c8047c5734c8ec8d4902ebc955f4f7acb433c2499adf616388fc languageName: node linkType: hard @@ -13880,15 +12329,8 @@ __metadata: "map-obj@npm:^1.0.0": version: 1.0.1 - resolution: "map-obj@npm:1.0.1" - checksum: 9949e7baec2a336e63b8d4dc71018c117c3ce6e39d2451ccbfd3b8350c547c4f6af331a4cbe1c83193d7c6b786082b6256bde843db90cb7da2a21e8fcc28afed - languageName: node - linkType: hard - -"map-obj@npm:^4.0.0": - version: 4.3.0 - resolution: "map-obj@npm:4.3.0" - checksum: fbc554934d1a27a1910e842bc87b177b1a556609dd803747c85ece420692380827c6ae94a95cce4407c054fa0964be3bf8226f7f2cb2e9eeee432c7c1985684e + resolution: "map-obj@npm:1.0.1" + checksum: 9949e7baec2a336e63b8d4dc71018c117c3ce6e39d2451ccbfd3b8350c547c4f6af331a4cbe1c83193d7c6b786082b6256bde843db90cb7da2a21e8fcc28afed languageName: node linkType: hard @@ -14250,13 +12692,6 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": - version: 7.0.2 - resolution: "minipass@npm:7.0.2" - checksum: 46776de732eb7cef2c7404a15fb28c41f5c54a22be50d47b03c605bf21f5c18d61a173c0a20b49a97e7a65f78d887245066410642551e45fffe04e9ac9e325bc - languageName: node - linkType: hard - "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.3": version: 7.0.3 resolution: "minipass@npm:7.0.3" @@ -14349,20 +12784,6 @@ __metadata: languageName: node linkType: hard -"native-request@npm:^1.0.5": - version: 1.1.0 - resolution: "native-request@npm:1.1.0" - checksum: ab96f79c7a5e726a88eaa90c700d4d844af884e68d9784d90d42134c12224105453e4db82b5985624b458e4a304d5f664c1be760e88b63f7f247001f4e755603 - languageName: node - linkType: hard - -"natural-compare-lite@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare-lite@npm:1.4.0" - checksum: 5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -14449,20 +12870,6 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:2.6.12, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9": - version: 2.6.12 - resolution: "node-fetch@npm:2.6.12" - dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 3bc1655203d47ee8e313c0d96664b9673a3d4dd8002740318e9d27d14ef306693a4b2ef8d6525775056fd912a19e23f3ac0d7111ad8925877b7567b29a625592 - languageName: node - linkType: hard - "node-fetch@npm:2.6.13, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7": version: 2.6.13 resolution: "node-fetch@npm:2.6.13" @@ -14505,13 +12912,6 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.12": - version: 2.0.13 - resolution: "node-releases@npm:2.0.13" - checksum: 17ec8f315dba62710cae71a8dad3cd0288ba943d2ece43504b3b1aa8625bf138637798ab470b1d9035b0545996f63000a8a926e0f6d35d0996424f8b6d36dda3 - languageName: node - linkType: hard - "node-releases@npm:^2.0.13": version: 2.0.13 resolution: "node-releases@npm:2.0.13" @@ -14553,18 +12953,6 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^3.0.0": - version: 3.0.3 - resolution: "normalize-package-data@npm:3.0.3" - dependencies: - hosted-git-info: ^4.0.1 - is-core-module: ^2.5.0 - semver: ^7.3.4 - validate-npm-package-license: ^3.0.1 - checksum: bbcee00339e7c26fdbc760f9b66d429258e2ceca41a5df41f5df06cc7652de8d82e8679ff188ca095cad8eff2b6118d7d866af2b68400f74602fbcbce39c160a - languageName: node - linkType: hard - "normalize-package-data@npm:^3.0.2": version: 3.0.3 resolution: "normalize-package-data@npm:3.0.3" @@ -15384,20 +13772,6 @@ __metadata: languageName: node linkType: hard -"postcss-colormin@npm:^5.3.1": - version: 5.3.1 - resolution: "postcss-colormin@npm:5.3.1" - dependencies: - browserslist: ^4.21.4 - caniuse-api: ^3.0.0 - colord: ^2.9.1 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: e5778baab30877cd1f51e7dc9d2242a162aeca6360a52956acd7f668c5bc235c2ccb7e4df0370a804d65ebe00c5642366f061db53aa823f9ed99972cebd16024 - languageName: node - linkType: hard - "postcss-colormin@npm:^6.0.0": version: 6.0.0 resolution: "postcss-colormin@npm:6.0.0" @@ -15438,20 +13812,6 @@ __metadata: languageName: node linkType: hard -"postcss-custom-properties@npm:^13.2.0": - version: 13.2.1 - resolution: "postcss-custom-properties@npm:13.2.1" - dependencies: - "@csstools/cascade-layer-name-parser": ^1.0.3 - "@csstools/css-parser-algorithms": ^2.3.0 - "@csstools/css-tokenizer": ^2.1.1 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.4 - checksum: 567bbaa7f8f2f3b970bb48230578788d63e395bdb3ab5957116496a94dec1f20268863852d5bd9f29e7409a062a069f17e7983c0ed1510aa492279993610ea37 - languageName: node - linkType: hard - "postcss-custom-properties@npm:^13.3.0": version: 13.3.0 resolution: "postcss-custom-properties@npm:13.3.0" @@ -15466,20 +13826,6 @@ __metadata: languageName: node linkType: hard -"postcss-custom-selectors@npm:^7.1.3": - version: 7.1.4 - resolution: "postcss-custom-selectors@npm:7.1.4" - dependencies: - "@csstools/cascade-layer-name-parser": ^1.0.3 - "@csstools/css-parser-algorithms": ^2.3.0 - "@csstools/css-tokenizer": ^2.1.1 - postcss-selector-parser: ^6.0.13 - peerDependencies: - postcss: ^8.4 - checksum: dfb5d82f52ddfdaca0174f1840e5da27c0a184ad552bcb800c060b6a67d95efc98d9a7179d6a863a669c8ad1d34b5f006a211e536657b9aea1e97dee5cfe7ce1 - languageName: node - linkType: hard - "postcss-custom-selectors@npm:^7.1.4": version: 7.1.4 resolution: "postcss-custom-selectors@npm:7.1.4" @@ -15686,20 +14032,6 @@ __metadata: languageName: node linkType: hard -"postcss-merge-rules@npm:^5.1.4": - version: 5.1.4 - resolution: "postcss-merge-rules@npm:5.1.4" - dependencies: - browserslist: ^4.21.4 - caniuse-api: ^3.0.0 - cssnano-utils: ^4.0.0 - postcss-selector-parser: ^6.0.5 - peerDependencies: - postcss: ^8.2.15 - checksum: 8ab6a569babe6cb412d6612adee74f053cea7edb91fa013398515ab36754b1fec830d68782ed8cdfb44cffdc6b78c79eab157bff650f428aa4460d3f3857447e - languageName: node - linkType: hard - "postcss-merge-rules@npm:^6.0.1": version: 6.0.1 resolution: "postcss-merge-rules@npm:6.0.1" @@ -16046,18 +14378,6 @@ __metadata: languageName: node linkType: hard -"postcss-reduce-initial@npm:^5.1.2": - version: 5.1.2 - resolution: "postcss-reduce-initial@npm:5.1.2" - dependencies: - browserslist: ^4.21.4 - caniuse-api: ^3.0.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 55db697f85231a81f1969d54c894e4773912d9ddb914f9b03d2e73abc4030f2e3bef4d7465756d0c1acfcc2c2d69974bfb50a972ab27546a7d68b5a4fc90282b - languageName: node - linkType: hard - "postcss-reduce-initial@npm:^6.0.0": version: 6.0.0 resolution: "postcss-reduce-initial@npm:6.0.0" @@ -16136,16 +14456,6 @@ __metadata: languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.13, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": - version: 6.0.13 - resolution: "postcss-selector-parser@npm:6.0.13" - dependencies: - cssesc: ^3.0.0 - util-deprecate: ^1.0.2 - checksum: f89163338a1ce3b8ece8e9055cd5a3165e79a15e1c408e18de5ad8f87796b61ec2d48a2902d179ae0c4b5de10fccd3a325a4e660596549b040bc5ad1b465f096 - languageName: node - linkType: hard - "postcss-sorting@npm:^7.0.1": version: 7.0.1 resolution: "postcss-sorting@npm:7.0.1" @@ -16185,17 +14495,6 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.27, postcss@npm:^8.3.11, postcss@npm:^8.4.19, postcss@npm:^8.4.21": - version: 8.4.27 - resolution: "postcss@npm:8.4.27" - dependencies: - nanoid: ^3.3.6 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: f605c24a36f7e400bad379735fbfc893ccb8d293ad6d419bb824db77cdcb69f43d614ef35f9f7091f32ca588d130ec60dbcf53b366e6bf88a8a64bbeb3c05f6d - languageName: node - linkType: hard - "postcss@npm:8.4.28, postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.27": version: 8.4.28 resolution: "postcss@npm:8.4.28" @@ -16277,25 +14576,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.1": - version: 29.6.1 - resolution: "pretty-format@npm:29.6.1" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.2, pretty-format@npm:^29.6.3": + version: 29.6.3 + resolution: "pretty-format@npm:29.6.3" dependencies: - "@jest/schemas": ^29.6.0 + "@jest/schemas": ^29.6.3 ansi-styles: ^5.0.0 react-is: ^18.0.0 - checksum: a0f972a44f959023c0df9cdfe9eed7540264d7f7ddf74667db8a5294444d5aa153fd47d20327df10ae86964e2ceec10e46ea06b1a5c9c12e02348b78c952c9fc - languageName: node - linkType: hard - -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.2": - version: 29.6.2 - resolution: "pretty-format@npm:29.6.2" - dependencies: - "@jest/schemas": ^29.6.0 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: a0f972a44f959023c0df9cdfe9eed7540264d7f7ddf74667db8a5294444d5aa153fd47d20327df10ae86964e2ceec10e46ea06b1a5c9c12e02348b78c952c9fc + checksum: 4e1c0db48e65571c22e80ff92123925ff8b3a2a89b71c3a1683cfde711004d492de32fe60c6bc10eea8bf6c678e5cbe544ac6c56cb8096e1eb7caf856928b1c4 languageName: node linkType: hard @@ -16749,15 +15037,6 @@ __metadata: languageName: node linkType: hard -"readdir-glob@npm:^1.0.0": - version: 1.1.3 - resolution: "readdir-glob@npm:1.1.3" - dependencies: - minimatch: ^5.1.0 - checksum: 1dc0f7440ff5d9378b593abe9d42f34ebaf387516615e98ab410cf3a68f840abbf9ff1032d15e0a0dbffa78f9e2c46d4fafdbaac1ca435af2efe3264e3f21874 - languageName: node - linkType: hard - "readdir-glob@npm:^1.1.2": version: 1.1.3 resolution: "readdir-glob@npm:1.1.3" @@ -17102,19 +15381,6 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1": - version: 1.22.3 - resolution: "resolve@npm:1.22.3" - dependencies: - is-core-module: ^2.12.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: fb834b81348428cb545ff1b828a72ea28feb5a97c026a1cf40aa1008352c72811ff4d4e71f2035273dc536dcfcae20c13604ba6283c612d70fa0b6e44519c374 - languageName: node - linkType: hard - "resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.4": version: 1.22.4 resolution: "resolve@npm:1.22.4" @@ -17141,19 +15407,6 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": - version: 1.22.3 - resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=07638b" - dependencies: - is-core-module: ^2.12.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: ad59734723b596d0891321c951592ed9015a77ce84907f89c9d9307dd0c06e11a67906a3e628c4cae143d3e44898603478af0ddeb2bba3f229a9373efe342665 - languageName: node - linkType: hard - "resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.4#~builtin": version: 1.22.4 resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin::version=1.22.4&hash=07638b" @@ -17289,15 +15542,6 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^7.8.0": - version: 7.8.1 - resolution: "rxjs@npm:7.8.1" - dependencies: - tslib: ^2.1.0 - checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f119 - languageName: node - linkType: hard - "safe-array-concat@npm:^1.0.0": version: 1.0.0 resolution: "safe-array-concat@npm:1.0.0" @@ -17422,17 +15666,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3": - version: 7.5.4 - resolution: "semver@npm:7.5.4" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 - languageName: node - linkType: hard - "semver@npm:^7.1.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" @@ -17797,13 +16030,6 @@ __metadata: languageName: node linkType: hard -"stable@npm:^0.1.8": - version: 0.1.8 - resolution: "stable@npm:0.1.8" - checksum: 2ff482bb100285d16dd75cd8f7c60ab652570e8952c0bfa91828a2b5f646a0ff533f14596ea4eabd48bb7f4aeea408dce8f8515812b975d958a4cc4fa6b9dfeb - languageName: node - linkType: hard - "stack-utils@npm:^2.0.3": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" @@ -17857,13 +16083,6 @@ __metadata: languageName: node linkType: hard -"string-argv@npm:^0.3.1": - version: 0.3.2 - resolution: "string-argv@npm:0.3.2" - checksum: 8703ad3f3db0b2641ed2adbb15cf24d3945070d9a751f9e74a924966db9f325ac755169007233e8985a39a6a292f14d4fee20482989b89b96e473c4221508a0f - languageName: node - linkType: hard - "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -18003,15 +16222,6 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" - dependencies: - ansi-regex: ^6.0.1 - checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d - languageName: node - linkType: hard - "strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": version: 7.1.0 resolution: "strip-ansi@npm:7.1.0" @@ -18719,18 +16929,6 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.14.1": - version: 3.14.2 - resolution: "tsconfig-paths@npm:3.14.2" - dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.2 - minimist: ^1.2.6 - strip-bom: ^3.0.0 - checksum: a6162eaa1aed680537f93621b82399c7856afd10ec299867b13a0675e981acac4e0ec00896860480efc59fc10fd0b16fdc928c0b885865b52be62cadac692447 - languageName: node - linkType: hard - "tsconfig-paths@npm:^3.14.2": version: 3.14.2 resolution: "tsconfig-paths@npm:3.14.2" @@ -18743,13 +16941,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.10.0, tslib@npm:^1.8.1, tslib@npm:^1.9.3": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd - languageName: node - linkType: hard - "tslib@npm:^1.8.1, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" @@ -18757,13 +16948,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0": - version: 2.6.0 - resolution: "tslib@npm:2.6.0" - checksum: c01066038f950016a18106ddeca4649b4d76caa76ec5a31e2a26e10586a59fceb4ee45e96719bf6c715648e7c14085a81fee5c62f7e9ebee68e77a5396e5538f - languageName: node - linkType: hard - "tslib@npm:^2.0.3, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0": version: 2.6.2 resolution: "tslib@npm:2.6.2" @@ -18837,13 +17021,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f - languageName: node - linkType: hard - "type-fest@npm:^1.0.1, type-fest@npm:^1.0.2, type-fest@npm:^1.2.1, type-fest@npm:^1.2.2": version: 1.4.0 resolution: "type-fest@npm:1.4.0" @@ -18917,16 +17094,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:5.0.4": - version: 5.0.4 - resolution: "typescript@npm:5.0.4" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: b2f2c35096035fe1f5facd1e38922ccb8558996331405eb00a5111cc948b2e733163cc22fab5db46992aba7dd520fff637f2c1df4996ff0e134e77d3249a7350 - languageName: node - linkType: hard - "typescript@npm:5.1.6, typescript@npm:^5, typescript@npm:^5.0.2": version: 5.1.6 resolution: "typescript@npm:5.1.6" @@ -18937,16 +17104,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.0.2": - version: 5.1.6 - resolution: "typescript@npm:5.1.6" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: b2f2c35096035fe1f5facd1e38922ccb8558996331405eb00a5111cc948b2e733163cc22fab5db46992aba7dd520fff637f2c1df4996ff0e134e77d3249a7350 - languageName: node - linkType: hard - "typescript@patch:typescript@4.8.4#~builtin": version: 4.8.4 resolution: "typescript@patch:typescript@npm%3A4.8.4#~builtin::version=4.8.4&hash=a1c5e5" @@ -18957,16 +17114,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@5.0.4#~builtin": - version: 5.0.4 - resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin::version=5.0.4&hash=a1c5e5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 21e88b0a0c0226f9cb9fd25b9626fb05b4c0f3fddac521844a13e1f30beb8f14e90bd409a9ac43c812c5946d714d6e0dee12d5d02dfc1c562c5aacfa1f49b606 - languageName: node - linkType: hard - "typescript@patch:typescript@5.1.6#~builtin, typescript@patch:typescript@^5#~builtin, typescript@patch:typescript@^5.0.2#~builtin": version: 5.1.6 resolution: "typescript@patch:typescript@npm%3A5.1.6#~builtin::version=5.1.6&hash=a1c5e5" @@ -18977,16 +17124,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^5.0.2#~builtin": - version: 5.1.6 - resolution: "typescript@patch:typescript@npm%3A5.1.6#~builtin::version=5.1.6&hash=a1c5e5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 21e88b0a0c0226f9cb9fd25b9626fb05b4c0f3fddac521844a13e1f30beb8f14e90bd409a9ac43c812c5946d714d6e0dee12d5d02dfc1c562c5aacfa1f49b606 - languageName: node - linkType: hard - "typeson-registry@npm:^1.0.0-alpha.20": version: 1.0.0-alpha.39 resolution: "typeson-registry@npm:1.0.0-alpha.39" @@ -19745,6 +17882,7 @@ __metadata: "@faker-js/faker": 8.0.2 "@formatjs/cli": 6.1.3 "@koush/wrtc": 0.5.3 + "@loadable/component": ^5.15.3 "@testing-library/react": 14.0.0 "@types/adm-zip": 0.5.0 "@types/caniuse-lite": ^1.0.1 @@ -19759,10 +17897,12 @@ __metadata: "@types/keyboardjs": 2.5.1 "@types/libsodium-wrappers": ^0 "@types/linkify-it": 3.0.2 + "@types/loadable__component": ^5 "@types/markdown-it": 13.0.0 "@types/node": ^20.5.1 "@types/open-graph": 0.2.2 "@types/platform": 1.3.4 + "@types/prettier": ^2.7.3 "@types/react": 18.2.20 "@types/react-dom": 18.2.7 "@types/react-redux": 7.1.25 @@ -20133,17 +18273,6 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^8.1.0": - version: 8.1.0 - resolution: "wrap-ansi@npm:8.1.0" - dependencies: - ansi-styles: ^6.1.0 - string-width: ^5.0.1 - strip-ansi: ^7.0.1 - checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 - languageName: node - linkType: hard - "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" @@ -20311,20 +18440,6 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.2.2": - version: 2.3.1 - resolution: "yaml@npm:2.3.1" - checksum: 2c7bc9a7cd4c9f40d3b0b0a98e370781b68b8b7c4515720869aced2b00d92f5da1762b4ffa947f9e795d6cd6b19f410bd4d15fdd38aca7bd96df59bd9486fb54 - languageName: node - linkType: hard - -"yargs-parser@npm:^20.2.3": - version: 20.2.9 - resolution: "yargs-parser@npm:20.2.9" - checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 - languageName: node - linkType: hard - "yargs-parser@npm:^20.2.9": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" From 1ceb3ee50e6f0ebb800977c1750968c71185f832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Tue, 29 Aug 2023 09:59:20 +0200 Subject: [PATCH 22/95] fix: router behaviour for oauth --- package.json | 3 +- server/routes/RedirectRoutes.ts | 7 +- src/script/auth/page/Root.tsx | 7 ++ src/script/auth/route.ts | 19 ++- src/script/util/E2EIdentity/E2EIdentity.ts | 17 ++- src/script/util/E2EIdentity/helper/uri.ts | 1 + yarn.lock | 137 +++++++++++++++++++-- 7 files changed, 175 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index d8e831d40f6..75246857899 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,9 @@ "@datadog/browser-rum": "^4.47.0", "@emotion/react": "11.11.1", "@loadable/component": "^5.15.3", + "@wireapp/api-client": "file:.yalc/@wireapp/api-client", "@wireapp/avs": "9.3.7", - "@wireapp/core": "41.2.2", + "@wireapp/core": "file:.yalc/@wireapp/core", "@wireapp/lru-cache": "3.8.1", "@wireapp/react-ui-kit": "9.8.1", "@wireapp/store-engine-dexie": "2.1.3", diff --git a/server/routes/RedirectRoutes.ts b/server/routes/RedirectRoutes.ts index a0cee80b9ad..5befe045777 100644 --- a/server/routes/RedirectRoutes.ts +++ b/server/routes/RedirectRoutes.ts @@ -60,11 +60,14 @@ export const RedirectRoutes = (config: ServerConfig, clientConfig: ClientConfig) router.get('/version/?', (_req, res) => { return res.json({version: config.VERSION}); }), - router.get('/oidc/?', (_req, res) => { + router.get('/oidc?', (_req, res) => { const {query} = _req; const queryString = Object.keys(query) .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(query[key] as string)}`) .join('&'); - return res.redirect(HTTP_STATUS.MOVED_TEMPORARILY, `/${queryString ? '?' : ''}${queryString}`); + return res.redirect( + HTTP_STATUS.MOVED_TEMPORARILY, + `/auth/?${queryString ? queryString : 'no_query=true'}#/e2ei-redirect`, + ); }), ]; diff --git a/src/script/auth/page/Root.tsx b/src/script/auth/page/Root.tsx index 2287396fcd1..eb4bff5233b 100644 --- a/src/script/auth/page/Root.tsx +++ b/src/script/auth/page/Root.tsx @@ -133,6 +133,13 @@ const RootComponent: FC = ({ const ProtectedSetPassword = () => isAuthenticatedCheck(); const ProtectedOAuthPermissions = () => isOAuthCheck(); + // Send user back to index page after e2ei oauth redirect + // This is needed because the oauth redirect is only done by logged in users + // and the user would otherwise be stuck on login page without getting logged in + if (window.location.hash.includes(ROUTE.E2EI_OAUTH_REDIRECT)) { + navigate(ROUTE.INDEX); + } + const brandName = Config.getConfig().BRAND_NAME; return ( diff --git a/src/script/auth/route.ts b/src/script/auth/route.ts index b8bf2e9590e..b38d4129a4c 100644 --- a/src/script/auth/route.ts +++ b/src/script/auth/route.ts @@ -37,12 +37,29 @@ export const QUERY_KEY = { TWO_FACTOR: '2fa', }; +// These are the query keys that are in the redirect link from the OAuth server +export const OAUTH_QUERY_KEYS = { + CLIENT_ID: 'client_id', + REDIRECT_URI: 'redirect_uri', + RESPONSE_TYPE: 'response_type', + SCOPE: 'scope', + STATE: 'state', + CODE_CHALLENGE: 'code_challenge', + CODE_CHALLENGE_METHOD: 'code_challenge_method', + RESPONSE_MODE: 'response_mode', + CODE: 'code', + AUTH_USER: 'authuser', + PROMPT: 'prompt', + HD: 'hd', +}; + export const FORWARDED_QUERY_KEYS = [ QUERY_KEY.ACCOUNT_ID, QUERY_KEY.ENVIRONMENT, QUERY_KEY.LOCALE, QUERY_KEY.PERSIST_TEMPORARY_CLIENTS, QUERY_KEY.TRACKING, + ...Object.values(OAUTH_QUERY_KEYS), ]; export const LOGOUT_REASON = { @@ -73,8 +90,8 @@ export const ROUTE = { SET_HANDLE: '/sethandle', SET_PASSWORD: '/setpassword', SSO: '/sso', - E2E_IDENTITY_OIDC: '/oidc', VERIFY_EMAIL_CODE: '/verifyemailcode', VERIFY_EMAIL_LINK: '/verifyemaillink', VERIFY_PHONE_CODE: '/verifyphonecode', + E2EI_OAUTH_REDIRECT: '/e2ei-redirect', }; diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/util/E2EIdentity/E2EIdentity.ts index b2242e67dbc..ee5c5692b37 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.ts +++ b/src/script/util/E2EIdentity/E2EIdentity.ts @@ -17,6 +17,7 @@ * */ +import {E2EIUtils} from '@wireapp/core/lib/messagingProtocols/mls/E2EIdentityService'; import {container} from 'tsyringe'; import {PrimaryModal, removeCurrentModal} from 'Components/Modals/PrimaryModal'; @@ -45,6 +46,7 @@ interface E2EIHandlerParams { class E2EIHandler { private static instance: E2EIHandler | null = null; private readonly core = container.resolve(Core); + private readonly userState = container.resolve(UserState); private timer: ReturnType; private discoveryUrl: string; private gracePeriodInMS: number; @@ -105,19 +107,19 @@ class E2EIHandler { private async enrollE2EI() { try { - const userState = container.resolve(UserState); // Notify user about E2EI enrollment in progress this.currentStep = E2EIHandlerStep.ENROLL; this.showLoadingMessage(); const success = await this.core.enrollE2EI( - userState.self().name(), - userState.self().username(), + this.userState.self().name(), + this.userState.self().username(), this.discoveryUrl, ); if (!success) { throw new Error('E2EI enrollment failed'); } // Notify user about E2EI enrollment success + // This setTimeout is needed because there was a timing with the success modal and the loading modal setTimeout(() => { removeCurrentModal(); }, 0); @@ -165,12 +167,14 @@ class E2EIHandler { return; } + E2EIUtils.clearAllProgress(); + const {modalOptions, modalType} = getModalOptions({ type: ModalType.ERROR, hideClose: true, - primaryActionFn: async () => { + primaryActionFn: () => { this.currentStep = E2EIHandlerStep.INITIALIZED; - await this.enrollE2EI(); + void this.enrollE2EI(); }, secondaryActionFn: () => { this.showE2EINotificationMessage(); @@ -189,10 +193,12 @@ class E2EIHandler { return; } + // If the user has already snoozed the notification, don't show it again until the snooze period has expired if (this.currentStep !== E2EIHandlerStep.UNINITIALIZED && this.currentStep !== E2EIHandlerStep.SNOOZE) { return; } + // Only initialize the timer when the it is uninitialized if (this.currentStep === E2EIHandlerStep.UNINITIALIZED) { this.timer.updateParams({ gracePeriodInMS: this.gracePeriodInMS, @@ -206,6 +212,7 @@ class E2EIHandler { this.currentStep = E2EIHandlerStep.INITIALIZED; } + // If the timer is not active, show the notification if (!this.timer.isDelayTimerActive()) { const {modalOptions, modalType} = getModalOptions({ hideSecondary: !this.timer.isSnoozeTimeAvailable(), diff --git a/src/script/util/E2EIdentity/helper/uri.ts b/src/script/util/E2EIdentity/helper/uri.ts index 474dba7151b..4c5cc350fc1 100644 --- a/src/script/util/E2EIdentity/helper/uri.ts +++ b/src/script/util/E2EIdentity/helper/uri.ts @@ -17,6 +17,7 @@ * */ +// ToDo: Use React Router instead of location.replace export const removeUrlParameters = () => { location.replace(`${location.origin}/${location.hash}`); }; diff --git a/yarn.lock b/yarn.lock index 0c046b4f423..9f718d679e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,6 +35,21 @@ __metadata: languageName: node linkType: hard +"@auth0/auth0-spa-js@npm:^1.6.2": + version: 1.22.6 + resolution: "@auth0/auth0-spa-js@npm:1.22.6" + dependencies: + abortcontroller-polyfill: ^1.7.3 + browser-tabs-lock: ^1.2.15 + core-js: ^3.25.4 + es-cookie: ~1.3.2 + fast-text-encoding: ^1.0.6 + promise-polyfill: ^8.2.3 + unfetch: ^4.2.0 + checksum: 0155025b82898bd0533db373d7c8b85938fbae097c6fdf732a315ddee67d84a32c32a3b944465aec0600adb11d6d32e53eabbfc2ea04e6b5c90f92f72607bc30 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.10, @babel/code-frame@npm:^7.22.5": version: 7.22.10 resolution: "@babel/code-frame@npm:7.22.10" @@ -4844,6 +4859,26 @@ __metadata: languageName: node linkType: hard +"@wireapp/api-client@file:.yalc/@wireapp/api-client::locator=wire-webapp%40workspace%3A.": + version: 25.2.2 + resolution: "@wireapp/api-client@file:.yalc/@wireapp/api-client#.yalc/@wireapp/api-client::hash=07d4d9&locator=wire-webapp%40workspace%3A." + dependencies: + "@wireapp/commons": ^5.1.0 + "@wireapp/priority-queue": ^2.1.1 + "@wireapp/protocol-messaging": 1.44.0 + axios: 1.4.0 + axios-retry: 3.6.0 + http-status-codes: 2.2.0 + logdown: 3.3.1 + reconnecting-websocket: 4.4.0 + spark-md5: 3.0.2 + tough-cookie: 4.1.3 + ws: 8.13.0 + zod: 3.21.4 + checksum: 6e20cb842d3a3b622368009678125b5acbe70185bef0947d136c38c4e8e0da088be5a16cc6c72be7f4c4b9c83a0751bbd291361ee1693e248916440e0b3ba19e + languageName: node + linkType: hard + "@wireapp/api-client@npm:^25.2.2": version: 25.2.2 resolution: "@wireapp/api-client@npm:25.2.2" @@ -4912,9 +4947,9 @@ __metadata: languageName: node linkType: hard -"@wireapp/core@npm:41.2.2": - version: 41.2.2 - resolution: "@wireapp/core@npm:41.2.2" +"@wireapp/core@file:.yalc/@wireapp/core::locator=wire-webapp%40workspace%3A.": + version: 41.3.0 + resolution: "@wireapp/core@file:.yalc/@wireapp/core#.yalc/@wireapp/core::hash=91a5f0&locator=wire-webapp%40workspace%3A." dependencies: "@wireapp/api-client": ^25.2.2 "@wireapp/commons": ^5.1.0 @@ -4924,6 +4959,7 @@ __metadata: "@wireapp/protocol-messaging": 1.44.0 "@wireapp/store-engine": 5.1.1 "@wireapp/store-engine-dexie": ^2.1.3 + auth0-spa-js: ^1.6.5 axios: 1.4.0 bazinga64: 6.1.2 deepmerge-ts: 5.1.0 @@ -4932,8 +4968,10 @@ __metadata: idb: 7.1.1 logdown: 3.3.1 long: ^5.2.0 + oidc-client-ts: ^2.2.2 uuidjs: 4.2.13 - checksum: 62f88d3a0de74bc14a85f2a0f6c96a328f97c6fdaf0ff4972addcc7626b81cf121946c2c284a62e0a6835f46fad0f9db52cbdbcc36b9dc5e22937494a33dab5b + zod: 3.21.4 + checksum: c371e17ae454f4c254accc490f4dd5b4713f6258e1313535616470b9ea361be4efbc5994ec5d39c9fc4617802c0de36c3647572203aecd6c1fc78411585fef48 languageName: node linkType: hard @@ -5155,6 +5193,13 @@ __metadata: languageName: node linkType: hard +"abortcontroller-polyfill@npm:^1.7.3": + version: 1.7.5 + resolution: "abortcontroller-polyfill@npm:1.7.5" + checksum: daf4169f4228ae0e4f4dbcfa782e501b923667f2666b7c55bd3b7664e5d6b100e333a93371173985fdf21f65d7dfba15bdb2e6031bdc9e57e4ce0297147da3aa + languageName: node + linkType: hard + "acorn-class-fields@npm:^0.3.7": version: 0.3.7 resolution: "acorn-class-fields@npm:0.3.7" @@ -5777,6 +5822,15 @@ __metadata: languageName: node linkType: hard +"auth0-spa-js@npm:^1.6.5": + version: 1.6.5 + resolution: "auth0-spa-js@npm:1.6.5" + dependencies: + "@auth0/auth0-spa-js": ^1.6.2 + checksum: daec7a9f2afc1eb24adc0f1173805087e5526508a89e751d37cd8b395374cf7b2806e833a6bce8748a6cb169676692a70d0861e33fe105f0f7511fe77e5b8a21 + languageName: node + linkType: hard + "autoprefixer@npm:^10.4.14, autoprefixer@npm:^10.4.15": version: 10.4.15 resolution: "autoprefixer@npm:10.4.15" @@ -6145,6 +6199,15 @@ __metadata: languageName: node linkType: hard +"browser-tabs-lock@npm:^1.2.15": + version: 1.3.0 + resolution: "browser-tabs-lock@npm:1.3.0" + dependencies: + lodash: ">=4.17.21" + checksum: 4fcfb6d5fc4bc5e4f53c298d555d8421ca4f815e32c2650b73008868eb70d7ee41aca8f92ad84d9beb77a8ffe0cb99f1efc8d9b3135cc434d48f7bd569f2bb72 + languageName: node + linkType: hard + "browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.21.9": version: 4.21.10 resolution: "browserslist@npm:4.21.10" @@ -6834,7 +6897,7 @@ __metadata: languageName: node linkType: hard -"core-js@npm:3.32.1": +"core-js@npm:3.32.1, core-js@npm:^3.25.4": version: 3.32.1 resolution: "core-js@npm:3.32.1" checksum: e4af91d9c6be7b59235feb3f273d16705126ce09a0b4a787144d131d874f0cd10be3c24fc52e5eea7d7cb03ceabe4be7b255abcd9474b5eb1ff365d2c5611f9a @@ -6955,6 +7018,13 @@ __metadata: languageName: node linkType: hard +"crypto-js@npm:^4.1.1": + version: 4.1.1 + resolution: "crypto-js@npm:4.1.1" + checksum: b3747c12ee3a7632fab3b3e171ea50f78b182545f0714f6d3e7e2858385f0f4101a15f2517e033802ce9d12ba50a391575ff4638c9de3dd9b2c4bc47768d5425 + languageName: node + linkType: hard + "crypto-random-string@npm:^2.0.0": version: 2.0.0 resolution: "crypto-random-string@npm:2.0.0" @@ -8036,6 +8106,13 @@ __metadata: languageName: node linkType: hard +"es-cookie@npm:~1.3.2": + version: 1.3.2 + resolution: "es-cookie@npm:1.3.2" + checksum: 8509355a7d00bd2e3fcab4a76a90e0da35b40c1e76f114f8ffe805ab3fdfff51e8fc0e7cdccd9bf1536066150b6b9861e37d78ae14f80680513901902ac4f0df + languageName: node + linkType: hard + "es-get-iterator@npm:^1.1.3": version: 1.1.3 resolution: "es-get-iterator@npm:1.1.3" @@ -8810,6 +8887,13 @@ __metadata: languageName: node linkType: hard +"fast-text-encoding@npm:^1.0.6": + version: 1.0.6 + resolution: "fast-text-encoding@npm:1.0.6" + checksum: 9d58f694314b3283e785bf61954902536da228607ad246905e30256f9ab8331f780ac987e7222c9f5eafd04168d07e12b8054c85cedb76a2c05af0e82387a903 + languageName: node + linkType: hard + "fastest-levenshtein@npm:^1.0.12, fastest-levenshtein@npm:^1.0.16": version: 1.0.16 resolution: "fastest-levenshtein@npm:1.0.16" @@ -11652,6 +11736,13 @@ __metadata: languageName: node linkType: hard +"jwt-decode@npm:^3.1.2": + version: 3.1.2 + resolution: "jwt-decode@npm:3.1.2" + checksum: 20a4b072d44ce3479f42d0d2c8d3dabeb353081ba4982e40b83a779f2459a70be26441be6c160bfc8c3c6eadf9f6380a036fbb06ac5406b5674e35d8c4205eeb + languageName: node + linkType: hard + "keyboardjs@npm:2.7.0": version: 2.7.0 resolution: "keyboardjs@npm:2.7.0" @@ -12118,7 +12209,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:>=4.17.21, lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -13151,6 +13242,16 @@ __metadata: languageName: node linkType: hard +"oidc-client-ts@npm:^2.2.2": + version: 2.2.5 + resolution: "oidc-client-ts@npm:2.2.5" + dependencies: + crypto-js: ^4.1.1 + jwt-decode: ^3.1.2 + checksum: 2b7055bddbc2b06390b364c52214d9169ee7c90a2b4e40bef907d0ab43bdc8f736805356f0fac3e422e5dfe973f6e666ecb2ee9f8a2ac031b8032ea8eb898704 + languageName: node + linkType: hard + "omggif@npm:^1.0.10, omggif@npm:^1.0.9": version: 1.0.10 resolution: "omggif@npm:1.0.10" @@ -14601,6 +14702,13 @@ __metadata: languageName: node linkType: hard +"promise-polyfill@npm:^8.2.3": + version: 8.3.0 + resolution: "promise-polyfill@npm:8.3.0" + checksum: 206373802076c77def0805758d0a8ece64120dfa6603f092404a1004211f8f2f67f33cadbc35953fc2a8ed0b0d38c774e88bdf01e20ce7a920723a60df84b7a5 + languageName: node + linkType: hard + "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -17191,6 +17299,13 @@ __metadata: languageName: node linkType: hard +"unfetch@npm:^4.2.0": + version: 4.2.0 + resolution: "unfetch@npm:4.2.0" + checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -17913,9 +18028,10 @@ __metadata: "@types/speakingurl": 13.0.3 "@types/underscore": 1.11.6 "@types/webpack-env": 1.18.1 + "@wireapp/api-client": "file:.yalc/@wireapp/api-client" "@wireapp/avs": 9.3.7 "@wireapp/copy-config": 2.1.1 - "@wireapp/core": 41.2.2 + "@wireapp/core": "file:.yalc/@wireapp/core" "@wireapp/eslint-config": 3.0.1 "@wireapp/lru-cache": 3.8.1 "@wireapp/prettier-config": 0.6.0 @@ -18532,6 +18648,13 @@ __metadata: languageName: node linkType: hard +"zod@npm:3.21.4": + version: 3.21.4 + resolution: "zod@npm:3.21.4" + checksum: f185ba87342ff16f7a06686767c2b2a7af41110c7edf7c1974095d8db7a73792696bcb4a00853de0d2edeb34a5b2ea6a55871bc864227dace682a0a28de33e1f + languageName: node + linkType: hard + "zustand@npm:4.4.1": version: 4.4.1 resolution: "zustand@npm:4.4.1" From e704db0b3e657a4c31cd8319968c9c524189df5a Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Thu, 31 Aug 2023 16:47:18 +0200 Subject: [PATCH 23/95] feat: add base tests --- src/script/components/Badges/Badges.test.tsx | 67 ++++++++++++++++++++ src/script/components/Badges/Badges.tsx | 12 +++- 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 src/script/components/Badges/Badges.test.tsx diff --git a/src/script/components/Badges/Badges.test.tsx b/src/script/components/Badges/Badges.test.tsx new file mode 100644 index 00000000000..b8b42fd73df --- /dev/null +++ b/src/script/components/Badges/Badges.test.tsx @@ -0,0 +1,67 @@ +/* + * Wire + * Copyright (C) 2022 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {render} from '@testing-library/react'; + +import {withTheme} from 'src/script/auth/util/test/TestUtil'; + +import {Badges, MLSStatues} from './Badges'; + +describe('Badges', () => { + const isMLSVerified = true; + + it('is mls verified', async () => { + const {getByTestId} = render(withTheme()); + + const E2EIdentityStatus = getByTestId('mls-status'); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatues.VALID); + }); + + it('is proteus verified', async () => { + const {getByTestId} = render(withTheme()); + + const E2EIdentityStatus = getByTestId('proteus-verified'); + expect(E2EIdentityStatus).not.toBeNull(); + }); + + it('is not downloaded', async () => { + const {getByTestId} = render( + withTheme(), + ); + + const E2EIdentityStatus = getByTestId('mls-status'); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatues.NOT_DOWNLOADED); + }); + + it('is expired', async () => { + const {getByTestId} = render(withTheme()); + + const E2EIdentityStatus = getByTestId('mls-status'); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatues.EXPIRED); + }); + + it('is expires soon', async () => { + const {getByTestId} = render( + withTheme(), + ); + + const E2EIdentityStatus = getByTestId('mls-status'); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatues.EXPIRES_SOON); + }); +}); diff --git a/src/script/components/Badges/Badges.tsx b/src/script/components/Badges/Badges.tsx index be65e7b4b83..36fedc4ab44 100644 --- a/src/script/components/Badges/Badges.tsx +++ b/src/script/components/Badges/Badges.tsx @@ -29,7 +29,8 @@ import { ProteusVerified, } from '@wireapp/react-ui-kit'; -enum MLSStatues { +export enum MLSStatues { + VALID = 'valid', NOT_DOWNLOADED = 'not_downloaded', EXPIRED = 'expired', EXPIRES_SOON = 'expires_soon', @@ -96,6 +97,8 @@ export const Badges: React.FC = ({ className="with-tooltip with-tooltip--external" data-tooltip="Device verified (End-to-end identity)" style={iconStyles} + data-uie-name="mls-status" + data-uie-value={MLSStatues.VALID} > @@ -106,6 +109,8 @@ export const Badges: React.FC = ({ className="with-tooltip with-tooltip--external" data-tooltip="End-to-end identity certificate expires soon" style={iconStyles} + data-uie-name="mls-status" + data-uie-value={MLSStatues.EXPIRES_SOON} > @@ -116,6 +121,8 @@ export const Badges: React.FC = ({ className="with-tooltip with-tooltip--external" data-tooltip="End-to-end identity certificate expired" style={iconStyles} + data-uie-name="mls-status" + data-uie-value={MLSStatues.EXPIRED} > @@ -126,6 +133,8 @@ export const Badges: React.FC = ({ className="with-tooltip with-tooltip--external" data-tooltip="End-to-end identity certificate revoked" style={iconStyles} + data-uie-name="mls-status" + data-uie-value={MLSStatues.NOT_DOWNLOADED} > @@ -141,6 +150,7 @@ export const Badges: React.FC = ({ className="with-tooltip with-tooltip--external" data-tooltip="Device verified (Proteus)" style={iconStyles} + data-uie-name="proteus-verified" > From 97dc698cfde4a2c1330d397aa3f7bdc25f3a7c41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Fri, 1 Sep 2023 16:16:58 +0200 Subject: [PATCH 24/95] feat: add UI functionality (redirects) to thr webapp --- package.json | 4 +- .../E2EIdentity/DelayTimer/DelayTimer.test.ts | 171 +++++++++++ .../E2EIdentity/DelayTimer/DelayTimer.ts | 288 ++++++++++++++++++ .../DelayTimer/DelayTimerStorage.ts | 42 +++ src/script/E2EIdentity/DelayTimer/delay.ts | 52 ++++ .../E2EIdentity/E2EIdentity.test.ts | 0 .../{util => }/E2EIdentity/E2EIdentity.ts | 57 +++- .../{util => }/E2EIdentity/Modals.test.ts | 0 src/script/{util => }/E2EIdentity/Modals.ts | 0 .../E2EIdentity/OIDCService/OIDCService.ts | 58 ++++ .../OIDCService/OIDCServiceStorage.ts | 40 +++ src/script/E2EIdentity/OIDCService/index.ts | 37 +++ .../{util => }/E2EIdentity/helper/uri.ts | 0 src/script/{util => }/E2EIdentity/index.ts | 0 src/script/team/TeamRepository.ts | 4 +- yarn.lock | 116 +------ 16 files changed, 748 insertions(+), 121 deletions(-) create mode 100644 src/script/E2EIdentity/DelayTimer/DelayTimer.test.ts create mode 100644 src/script/E2EIdentity/DelayTimer/DelayTimer.ts create mode 100644 src/script/E2EIdentity/DelayTimer/DelayTimerStorage.ts create mode 100644 src/script/E2EIdentity/DelayTimer/delay.ts rename src/script/{util => }/E2EIdentity/E2EIdentity.test.ts (100%) rename src/script/{util => }/E2EIdentity/E2EIdentity.ts (77%) rename src/script/{util => }/E2EIdentity/Modals.test.ts (100%) rename src/script/{util => }/E2EIdentity/Modals.ts (100%) create mode 100644 src/script/E2EIdentity/OIDCService/OIDCService.ts create mode 100644 src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts create mode 100644 src/script/E2EIdentity/OIDCService/index.ts rename src/script/{util => }/E2EIdentity/helper/uri.ts (100%) rename src/script/{util => }/E2EIdentity/index.ts (100%) diff --git a/package.json b/package.json index 75246857899..e68c635eb23 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,8 @@ "@datadog/browser-rum": "^4.47.0", "@emotion/react": "11.11.1", "@loadable/component": "^5.15.3", - "@wireapp/api-client": "file:.yalc/@wireapp/api-client", "@wireapp/avs": "9.3.7", - "@wireapp/core": "file:.yalc/@wireapp/core", + "@wireapp/core": "41.2.2", "@wireapp/lru-cache": "3.8.1", "@wireapp/react-ui-kit": "9.8.1", "@wireapp/store-engine-dexie": "2.1.3", @@ -34,6 +33,7 @@ "long": "5.2.3", "markdown-it": "13.0.1", "murmurhash": "2.0.1", + "oidc-client-ts": "^2.2.5", "platform": "1.3.6", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/src/script/E2EIdentity/DelayTimer/DelayTimer.test.ts b/src/script/E2EIdentity/DelayTimer/DelayTimer.test.ts new file mode 100644 index 00000000000..57d89866858 --- /dev/null +++ b/src/script/E2EIdentity/DelayTimer/DelayTimer.test.ts @@ -0,0 +1,171 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {FIFTEEN_MINUTES, FOUR_HOURS, ONE_HOUR, ONE_MINUTE} from './delay'; +import {DelayTimerService} from './DelayTimer'; // Update this with your module's actual path + +describe('createGracePeriodTimer', () => { + let timer: DelayTimerService | undefined; + + beforeEach(() => { + jest.useFakeTimers(); + global.localStorage.clear(); + timer = DelayTimerService?.getInstance({ + gracePeriodInMS: 0, + gracePeriodExpiredCallback: jest.fn(), + delayPeriodExpiredCallback: jest.fn(), + }); + }); + + afterEach(() => { + timer?.resetInstance(); + timer = undefined; + jest.useRealTimers(); + }); + + it('should call the gracePeriodExpiredCallback when the grace period is over', () => { + const gracePeriodExpiredCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: 1000, + gracePeriodExpiredCallback, + delayPeriodExpiredCallback: jest.fn(), + }); + + jest.advanceTimersByTime(1000); + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); + }); + + it('should call the gracePeriodExpiredCallback only after the delay time is over', () => { + const gracePeriodExpiredCallback = jest.fn(); + + timer?.updateParams({ + gracePeriodInMS: ONE_HOUR, + gracePeriodExpiredCallback, + delayPeriodExpiredCallback: jest.fn(), + }); + + timer?.delayPrompt(); + + jest.advanceTimersByTime(FIFTEEN_MINUTES); + expect(gracePeriodExpiredCallback).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(ONE_HOUR); + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); + }); + + it('should not allow delaying the prompt if the grace period is already over', () => { + const gracePeriodExpiredCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: 0, + gracePeriodExpiredCallback, + delayPeriodExpiredCallback: jest.fn(), + }); + timer?.delayPrompt(); + + jest.advanceTimersByTime(500); + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); + }); + + it('should allow delaying the prompt multiple times within the grace period', () => { + const gracePeriodExpiredCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: 7200000, + gracePeriodExpiredCallback, + delayPeriodExpiredCallback: jest.fn(), + }); + timer?.delayPrompt(); + jest.advanceTimersByTime(3600000); + timer?.delayPrompt(); + jest.advanceTimersByTime(3600000); + + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); + }); + + it('should call the delayPeriodExpiredCallback after a delay based on the grace period', () => { + const delayPeriodExpiredCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: ONE_HOUR, + gracePeriodExpiredCallback: jest.fn(), + delayPeriodExpiredCallback, + }); + + timer?.delayPrompt(); + + // getDelayTime(ONE_HOUR) will return FIFTEEN_MINUTES according to the function provided. + jest.advanceTimersByTime(FIFTEEN_MINUTES); + expect(delayPeriodExpiredCallback).toHaveBeenCalled(); + }); + + it('should not call delayPeriodExpiredCallback if grace period is over', () => { + const delayPeriodExpiredCallback = jest.fn(); + const gracePeriodExpiredCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: ONE_HOUR, + delayPeriodExpiredCallback, + gracePeriodExpiredCallback, + }); + + timer?.delayPrompt(); + + // Here, instead of advancing time by "ONE_HOUR + FIFTEEN_MINUTES", we advance by "ONE_HOUR", which is the end of the grace period. + jest.advanceTimersByTime(ONE_HOUR + FIFTEEN_MINUTES); + expect(delayPeriodExpiredCallback).toHaveBeenCalled(); // The delayPeriodExpiredCallback should be called after ONE_HOUR. + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); // The gracePeriodExpiredCallback should be called when the grace period ends, which is after ONE_HOUR. + + timer?.delayPrompt(); // We try to delay after the grace period has ended. + jest.advanceTimersByTime(FIFTEEN_MINUTES); + expect(delayPeriodExpiredCallback).toHaveBeenCalledTimes(1); // The delayPeriodExpiredCallback should not be called again since we're now past the grace period. + }); + + it('should call delayPeriodExpiredCallback multiple times if delayPrompt is called multiple times within the grace period', () => { + const delayPeriodExpiredCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: FOUR_HOURS, + gracePeriodExpiredCallback: jest.fn(), + delayPeriodExpiredCallback, + }); + + timer?.delayPrompt(); + jest.advanceTimersByTime(ONE_HOUR); // gracePeriod > delay, so delay = ONE_HOUR + + timer?.delayPrompt(); + jest.advanceTimersByTime(ONE_HOUR); + + timer?.delayPrompt(); + jest.advanceTimersByTime(ONE_HOUR); + + expect(delayPeriodExpiredCallback).toHaveBeenCalledTimes(3); + }); + + it('should not execute the delayPrompt() if the grace period is over', () => { + const delayPeriodExpiredCallback = jest.fn(); + const gracePeriodExpiredCallback = jest.fn(); + timer?.updateParams({ + gracePeriodInMS: ONE_MINUTE, + gracePeriodExpiredCallback, + delayPeriodExpiredCallback, + }); + + timer?.delayPrompt(); + jest.advanceTimersByTime(ONE_MINUTE); + + expect(delayPeriodExpiredCallback).not.toHaveBeenCalled(); + expect(gracePeriodExpiredCallback).toHaveBeenCalled(); + }); +}); diff --git a/src/script/E2EIdentity/DelayTimer/DelayTimer.ts b/src/script/E2EIdentity/DelayTimer/DelayTimer.ts new file mode 100644 index 00000000000..e795cd8ec7f --- /dev/null +++ b/src/script/E2EIdentity/DelayTimer/DelayTimer.ts @@ -0,0 +1,288 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import logdown from 'logdown'; + +import {util} from '@wireapp/core'; + +import {getDelayTime} from './delay'; +import {DelayTimerStore} from './DelayTimerStorage'; + +const {TaskScheduler} = util; + +interface CreateGracePeriodTimerParams { + gracePeriodInMS: number; + gracePeriodExpiredCallback: () => void; + delayPeriodExpiredCallback: () => void; +} + +class DelayTimerService { + private static instance: DelayTimerService | null = null; + private gracePeriodInMS: number; + private gracePeriodExpiredCallback: () => void; + private delayPeriodExpiredCallback: () => void; + private readonly logger = logdown('@wireapp/core/DelayTimer'); + private delayPeriodTimerKey: string = 'E2EIdentity_DelayTimer'; + private gracePeriodTimerKey: string = 'E2EIdentity_GracePeriodTimer'; + + private constructor({ + gracePeriodInMS, + gracePeriodExpiredCallback, + delayPeriodExpiredCallback, + }: CreateGracePeriodTimerParams) { + this.gracePeriodInMS = gracePeriodInMS; + this.gracePeriodExpiredCallback = gracePeriodExpiredCallback; + this.delayPeriodExpiredCallback = delayPeriodExpiredCallback; + this.initialize(); + } + + /** + * Get the singleton instance of GracePeriodTimer or create a new one + * For the first time, params are required to create the instance + * After that, params are optional and can be used to update the grace period timer + * @param params The params to create the grace period timer + * @returns The singleton instance of GracePeriodTimer + */ + public static getInstance(params?: CreateGracePeriodTimerParams) { + if (!DelayTimerService.instance) { + if (!params) { + throw new Error('DelayTimerService is not initialized. Please call getInstance with params.'); + } + DelayTimerService.instance = new DelayTimerService(params); + } + return DelayTimerService.instance; + } + + /** + * @param CreateGracePeriodTimerParams The params to create the grace period timer + */ + public updateParams({ + gracePeriodInMS, + gracePeriodExpiredCallback, + delayPeriodExpiredCallback, + }: CreateGracePeriodTimerParams) { + DelayTimerStore.clear.all(); + this.clearGracePeriodTimer(); + this.clearDelayPeriodTimer(); + this.gracePeriodInMS = gracePeriodInMS; + this.gracePeriodExpiredCallback = gracePeriodExpiredCallback; + this.delayPeriodExpiredCallback = delayPeriodExpiredCallback; + this.initialize(); + } + + /** + * Initialize the grace period timer and load saved data from local storage if available + */ + public initialize() { + if (this.gracePeriodInMS <= 0) { + return this.exit('Grace period is 0. No delays are allowed.'); + } + + // Check if grace period has changed + if (DelayTimerStore.get.gracePeriod() !== this.gracePeriodInMS) { + // Check if grace period is less than the time elapsed since the last prompt + if (this.gracePeriodInMS < this.getElapsedGracePeriod()) { + return this.exit( + 'Grace period has changed and is less than the time elapsed since the last prompt. No more delays are allowed.', + ); + } + this.updateGracePeriod(); + } + + // Load saved data from local storage + if (DelayTimerStore.get.firingDate()) { + const currentTime = Date.now(); + if (DelayTimerStore.get.firingDate() <= currentTime) { + return this.exit('Grace period is already over. No more delays are allowed.'); + } + } else { + const firingDate = Date.now() + this.gracePeriodInMS; + DelayTimerStore.store.firingDate(firingDate); + DelayTimerStore.store.gracePeriod(this.gracePeriodInMS); + } + + // Start / restart the grace period timer + this.startGracePeriod(DelayTimerStore.get.firingDate()); + + // this will start the delay period timer if it was active before + this.continueDelayPeriodTimer(); + } + + /** + * Prompt the user to delay the enrollment + */ + public delayPrompt() { + if (this.isDelayTimerActive()) { + return; + } + if (!this.isSnoozeTimeAvailable()) { + return this.exit('No more delays are allowed.'); + } + const delayTimeInMS = getDelayTime(this.gracePeriodInMS); + if (delayTimeInMS <= 0) { + return this.exit('Delay period is 0. No more delays are allowed.'); + } + + if (DelayTimerStore.get.firingDate() <= Date.now()) { + return this.exit('Grace period is already over. No more delays are allowed.'); + } + + this.startDelayPeriod(Date.now() + delayTimeInMS); + } + + /** + * Update the grace period + */ + private updateGracePeriod() { + // Store the new grace period + DelayTimerStore.store.gracePeriod(this.gracePeriodInMS); + const elapsedGracePeriod = this.getElapsedGracePeriod(); + + // Check if grace period is already over + if (elapsedGracePeriod > this.gracePeriodInMS) { + return this.exit('Grace period is already over. No more delays are allowed.'); + } + + // Update the remaining grace period + this.gracePeriodInMS -= elapsedGracePeriod; + const startTime = Date.now(); + // Calculate the new end time + const firingDate = startTime + this.gracePeriodInMS; + // Store the new end time + DelayTimerStore.store.firingDate(firingDate); + + this.startGracePeriod(firingDate); + } + + /** + * Exit the function + * @param exitMessage The exit message + * @returns Calls the gracePeriodExpiredCallback + */ + private exit(exitMessage: string) { + this.logger.info(exitMessage); + this.clearDelayPeriodTimer(); + this.clearGracePeriodTimer(); + DelayTimerStore.clear.all(); + return this.gracePeriodExpiredCallback(); + } + + /** + * Start the grace period timer and store the grace period + * @param gracePeriodInMS The grace period in ms + */ + private startGracePeriod(firingDate: number) { + this.clearGracePeriodTimer(); + + const task = () => { + return this.exit('Grace period is over. No more delays are allowed.'); + }; + + if (TaskScheduler.hasActiveTask(this.gracePeriodTimerKey)) { + TaskScheduler.continueTask({ + key: this.gracePeriodTimerKey, + task, + }); + } else { + TaskScheduler.addTask({ + key: this.gracePeriodTimerKey, + task, + firingDate, + persist: true, + }); + } + } + + /** + * Start the delay period timer and store the delay time + * @param delayTimeInMS The delay time in ms + */ + private startDelayPeriod(firingDate?: number) { + this.clearDelayPeriodTimer(); + + const task = () => { + this.logger.info('Delay time is over.'); + return this.delayPeriodExpiredCallback(); + }; + + if (TaskScheduler.hasActiveTask(this.delayPeriodTimerKey)) { + TaskScheduler.continueTask({ + key: this.delayPeriodTimerKey, + task, + }); + } else if (firingDate) { + TaskScheduler.addTask({ + key: this.delayPeriodTimerKey, + task, + firingDate, + persist: true, + }); + } + } + + /** + * Clear the current grace period timer + */ + private clearGracePeriodTimer() { + TaskScheduler.cancelTask(this.gracePeriodTimerKey); + } + + /** + * Clear the current delay period timer + */ + private clearDelayPeriodTimer() { + TaskScheduler.cancelTask(this.delayPeriodTimerKey); + } + + private continueDelayPeriodTimer() { + this.startDelayPeriod(); + } + + /** + * Get the time elapsed since the last prompt + * @returns The time elapsed since the last prompt in ms + */ + private getElapsedGracePeriod() { + return DelayTimerStore.get.firingDate() + ? Date.now() - (DelayTimerStore.get.firingDate() - this.gracePeriodInMS) + : 0; + } + + /** + * Reset the instance + */ + public resetInstance() { + DelayTimerStore.clear.all(); + this.clearGracePeriodTimer(); + this.clearDelayPeriodTimer(); + DelayTimerService.instance = null; + } + + public isDelayTimerActive() { + return TaskScheduler.hasActiveTask(this.delayPeriodTimerKey); + } + + public isSnoozeTimeAvailable() { + const remainingTime = DelayTimerStore.get.firingDate() - Date.now(); + const delayTime = getDelayTime(remainingTime); + return remainingTime - delayTime > 0; + } +} + +export {DelayTimerService}; diff --git a/src/script/E2EIdentity/DelayTimer/DelayTimerStorage.ts b/src/script/E2EIdentity/DelayTimer/DelayTimerStorage.ts new file mode 100644 index 00000000000..7c122af9975 --- /dev/null +++ b/src/script/E2EIdentity/DelayTimer/DelayTimerStorage.ts @@ -0,0 +1,42 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +const FiringDateKey = 'E2EIdentity_DelayTimer_FiringDate'; +const GracePeriodKey = 'E2EIdentity_DelayTimer_GracePeriod'; + +const DelayTimerStore = { + store: { + firingDate: (firingDate: number) => localStorage.setItem(FiringDateKey, String(firingDate)), + gracePeriod: (gracePeriod: number) => localStorage.setItem(GracePeriodKey, String(gracePeriod)), + }, + get: { + firingDate: () => Number(localStorage.getItem(FiringDateKey)), + gracePeriod: () => Number(localStorage.getItem(GracePeriodKey)), + }, + clear: { + firingDate: () => localStorage.removeItem(FiringDateKey), + gracePeriod: () => localStorage.removeItem(GracePeriodKey), + all: () => { + DelayTimerStore.clear.firingDate(); + DelayTimerStore.clear.gracePeriod(); + }, + }, +}; + +export {DelayTimerStore}; diff --git a/src/script/E2EIdentity/DelayTimer/delay.ts b/src/script/E2EIdentity/DelayTimer/delay.ts new file mode 100644 index 00000000000..7dbdc03a6fe --- /dev/null +++ b/src/script/E2EIdentity/DelayTimer/delay.ts @@ -0,0 +1,52 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +/* eslint-disable no-magic-numbers */ + +enum TIME_IN_MILLIS { + SECOND = 1000, + MINUTE = SECOND * 60, + HOUR = MINUTE * 60, + DAY = HOUR * 24, + WEEK = DAY * 7, + YEAR = DAY * 365, +} + +export const ONE_MINUTE = TIME_IN_MILLIS.MINUTE; +export const FIVE_MINUTES = TIME_IN_MILLIS.MINUTE * 5; +export const FIFTEEN_MINUTES = TIME_IN_MILLIS.MINUTE * 15; +export const ONE_HOUR = TIME_IN_MILLIS.HOUR; +export const FOUR_HOURS = TIME_IN_MILLIS.HOUR * 4; +export const ONE_DAY = TIME_IN_MILLIS.DAY; + +export function getDelayTime(gracePeriodInMs: number): number { + if (gracePeriodInMs > 0) { + if (gracePeriodInMs <= FIFTEEN_MINUTES) { + return Math.min(FIVE_MINUTES, gracePeriodInMs); + } else if (gracePeriodInMs <= ONE_HOUR) { + return Math.min(FIFTEEN_MINUTES, gracePeriodInMs); + } else if (gracePeriodInMs <= FOUR_HOURS) { + return Math.min(ONE_HOUR, gracePeriodInMs); + } else if (gracePeriodInMs <= ONE_DAY) { + return Math.min(FOUR_HOURS, gracePeriodInMs); + } + return Math.min(ONE_DAY, gracePeriodInMs); + } + return 0; +} diff --git a/src/script/util/E2EIdentity/E2EIdentity.test.ts b/src/script/E2EIdentity/E2EIdentity.test.ts similarity index 100% rename from src/script/util/E2EIdentity/E2EIdentity.test.ts rename to src/script/E2EIdentity/E2EIdentity.test.ts diff --git a/src/script/util/E2EIdentity/E2EIdentity.ts b/src/script/E2EIdentity/E2EIdentity.ts similarity index 77% rename from src/script/util/E2EIdentity/E2EIdentity.ts rename to src/script/E2EIdentity/E2EIdentity.ts index ee5c5692b37..18c65eef789 100644 --- a/src/script/util/E2EIdentity/E2EIdentity.ts +++ b/src/script/E2EIdentity/E2EIdentity.ts @@ -17,7 +17,6 @@ * */ -import {E2EIUtils} from '@wireapp/core/lib/messagingProtocols/mls/E2EIdentityService'; import {container} from 'tsyringe'; import {PrimaryModal, removeCurrentModal} from 'Components/Modals/PrimaryModal'; @@ -26,8 +25,11 @@ import {Core} from 'src/script/service/CoreSingleton'; import {UserState} from 'src/script/user/UserState'; import {supportsMLS} from 'Util/util'; +import {DelayTimerService} from './DelayTimer/DelayTimer'; import {removeUrlParameters} from './helper/uri'; import {getModalOptions, ModalType} from './Modals'; +import {getOIDCServiceInstance} from './OIDCService'; +import {OIDCServiceStore} from './OIDCService/OIDCServiceStorage'; export enum E2EIHandlerStep { UNINITIALIZED = 'uninitialized', @@ -47,7 +49,7 @@ class E2EIHandler { private static instance: E2EIHandler | null = null; private readonly core = container.resolve(Core); private readonly userState = container.resolve(UserState); - private timer: ReturnType; + private timer: DelayTimerService; private discoveryUrl: string; private gracePeriodInMS: number; private currentStep: E2EIHandlerStep | null = E2EIHandlerStep.UNINITIALIZED; @@ -56,7 +58,11 @@ class E2EIHandler { // ToDo: Do these values need to te able to be updated? Should we use a singleton with update fn? this.discoveryUrl = discoveryUrl; this.gracePeriodInMS = gracePeriodInMS; - this.timer = this.core.e2eiUtils.getDelayTimerInstance(gracePeriodInMS); + this.timer = DelayTimerService.getInstance({ + gracePeriodInMS, + gracePeriodExpiredCallback: () => null, + delayPeriodExpiredCallback: () => null, + }); } /** @@ -89,13 +95,17 @@ class E2EIHandler { public updateParams({gracePeriodInMS, discoveryUrl}: E2EIHandlerParams) { this.gracePeriodInMS = gracePeriodInMS; this.discoveryUrl = discoveryUrl; - this.timer = this.core.e2eiUtils.getDelayTimerInstance(gracePeriodInMS); + this.timer = DelayTimerService.getInstance({ + gracePeriodInMS, + gracePeriodExpiredCallback: () => null, + delayPeriodExpiredCallback: () => null, + }); this.initialize(); } public initialize(): void { if (this.isE2EIEnabled) { - if (!this.core.e2eiUtils.hasActiveCertificate()) { + if (!this.core.service?.e2eIdentity?.hasActiveCertificate()) { this.showE2EINotificationMessage(); } } @@ -105,19 +115,47 @@ class E2EIHandler { return supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; } + private async storeRedirectTargetAndRedirect(targetURL: string): Promise { + // store the target url in the persistent oidc service store, since the oidc service will be destroyed after the redirect + OIDCServiceStore.store.targetURL(targetURL); + const oidcService = getOIDCServiceInstance(); + await oidcService.authenticate(); + } + private async enrollE2EI() { try { // Notify user about E2EI enrollment in progress this.currentStep = E2EIHandlerStep.ENROLL; this.showLoadingMessage(); - const success = await this.core.enrollE2EI( + let oAuthIdToken: string | undefined; + + // If the enrollment is in progress, we need to get the id token from the oidc service, since oauth should have already been completed + if (this.core.service?.e2eIdentity?.isEnrollmentInProgress()) { + const oidcService = getOIDCServiceInstance(); + const userData = await oidcService.handleAuthentication(); + if (!userData) { + throw new Error('Received no user data from OIDC service'); + } + oAuthIdToken = userData?.id_token; + } + + const data = await this.core.enrollE2EI( this.userState.self().name(), this.userState.self().username(), this.discoveryUrl, + oAuthIdToken, ); - if (!success) { + + // If the data is false or we dont get the ACMEChallenge, enrollment failed + if (!data) { throw new Error('E2EI enrollment failed'); } + + // Check if the data is a boolean, if not, we need to handle the oauth redirect + if (typeof data !== 'boolean') { + await this.storeRedirectTargetAndRedirect(data.target); + } + // Notify user about E2EI enrollment success // This setTimeout is needed because there was a timing with the success modal and the loading modal setTimeout(() => { @@ -167,7 +205,7 @@ class E2EIHandler { return; } - E2EIUtils.clearAllProgress(); + this.core.service?.e2eIdentity?.clearAllProgress(); const {modalOptions, modalType} = getModalOptions({ type: ModalType.ERROR, @@ -187,8 +225,7 @@ class E2EIHandler { private showE2EINotificationMessage(): void { // If the user has already started enrollment, don't show the notification. Instead, show the loading modal // This will occur after the redirect from the oauth provider - if (this.core.e2eiUtils.isEnrollmentInProgress()) { - this.showLoadingMessage(); + if (this.core.service?.e2eIdentity?.isEnrollmentInProgress()) { void this.enrollE2EI(); return; } diff --git a/src/script/util/E2EIdentity/Modals.test.ts b/src/script/E2EIdentity/Modals.test.ts similarity index 100% rename from src/script/util/E2EIdentity/Modals.test.ts rename to src/script/E2EIdentity/Modals.test.ts diff --git a/src/script/util/E2EIdentity/Modals.ts b/src/script/E2EIdentity/Modals.ts similarity index 100% rename from src/script/util/E2EIdentity/Modals.ts rename to src/script/E2EIdentity/Modals.ts diff --git a/src/script/E2EIdentity/OIDCService/OIDCService.ts b/src/script/E2EIdentity/OIDCService/OIDCService.ts new file mode 100644 index 00000000000..f74fe9c3fba --- /dev/null +++ b/src/script/E2EIdentity/OIDCService/OIDCService.ts @@ -0,0 +1,58 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {UserManager, User, UserManagerSettings} from 'oidc-client-ts'; + +interface OIDCServiceConfig { + authorityUrl: string; + audience: string; + redirectUri: string; + clientSecret?: string; +} + +export class OIDCService { + private userManager: UserManager; + + constructor(config: OIDCServiceConfig) { + const {authorityUrl, audience, redirectUri, clientSecret = ''} = config; + const dexioConfig: UserManagerSettings = { + authority: authorityUrl, + client_id: audience, + redirect_uri: redirectUri, + response_type: 'code', + scope: 'openid profile email', + client_secret: clientSecret, + }; + + this.userManager = new UserManager(dexioConfig); + } + + public async authenticate(): Promise { + await this.userManager.signinRedirect(); + } + + public handleAuthentication(): Promise { + // Remove the hash (hash router) from the url before processing + const url = window.location.href.replace('/#', ''); + + return this.userManager.signinRedirectCallback(url).then(user => { + return user; + }); + } +} diff --git a/src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts b/src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts new file mode 100644 index 00000000000..12839b659b6 --- /dev/null +++ b/src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts @@ -0,0 +1,40 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +const TargetURLKey = 'E2EIdentity_OIDCService_TargetURL'; + +const OIDCServiceStore = { + store: { + targetURL: (url: string) => localStorage.setItem(TargetURLKey, url), + }, + get: { + targetURL: () => Number(localStorage.getItem(TargetURLKey)), + }, + has: { + targetURL: () => localStorage.getItem(TargetURLKey) !== null, + }, + clear: { + targetURL: () => localStorage.removeItem(TargetURLKey), + all: () => { + OIDCServiceStore.clear.targetURL(); + }, + }, +}; + +export {OIDCServiceStore}; diff --git a/src/script/E2EIdentity/OIDCService/index.ts b/src/script/E2EIdentity/OIDCService/index.ts new file mode 100644 index 00000000000..cf4c4c6adab --- /dev/null +++ b/src/script/E2EIdentity/OIDCService/index.ts @@ -0,0 +1,37 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {OIDCService} from './OIDCService'; +import {OIDCServiceStore} from './OIDCServiceStorage'; + +// lots of hardcoded values here, but this is just for testing until we have a proper OIDC service +export const getOIDCServiceInstance = (): OIDCService => { + // if there is no targetURL, we cannot create an OIDCService + if (!OIDCServiceStore.has.targetURL()) { + throw new Error('OIDCServiceStore has no targetURL'); + } + const targetURL = OIDCServiceStore.get.targetURL(); + const oidcService = new OIDCService({ + audience: '338888153072-ktbh66pv3mr0ua0dn64sphgimeo0p7ss.apps.googleusercontent.com', + authorityUrl: 'https://accounts.google.com' || targetURL, + redirectUri: 'https://local.elna.wire.link:8081/oidc', + clientSecret: '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', + }); + return oidcService; +}; diff --git a/src/script/util/E2EIdentity/helper/uri.ts b/src/script/E2EIdentity/helper/uri.ts similarity index 100% rename from src/script/util/E2EIdentity/helper/uri.ts rename to src/script/E2EIdentity/helper/uri.ts diff --git a/src/script/util/E2EIdentity/index.ts b/src/script/E2EIdentity/index.ts similarity index 100% rename from src/script/util/E2EIdentity/index.ts rename to src/script/E2EIdentity/index.ts diff --git a/src/script/team/TeamRepository.ts b/src/script/team/TeamRepository.ts index 0e072f4d3f5..bba66716571 100644 --- a/src/script/team/TeamRepository.ts +++ b/src/script/team/TeamRepository.ts @@ -39,7 +39,7 @@ import {Runtime} from '@wireapp/commons'; import {Availability} from '@wireapp/protocol-messaging'; import {WebAppEvents} from '@wireapp/webapp-events'; -import {E2EIHandler} from 'Util/E2EIdentity'; +import {E2EIHandler} from 'src/script/E2EIdentity'; import {Environment} from 'Util/Environment'; import {replaceLink, t} from 'Util/LocalizerUtil'; import {getLogger, Logger} from 'Util/Logger'; @@ -435,7 +435,7 @@ export class TeamRepository { } // Trigger E2E identity handler - // this.handleE2EIdentityFeatureChange(featureConfigList.mlsE2EId, featureConfigList.mls); + this.handleE2EIdentityFeatureChange(featureConfigList.mlsE2EId, featureConfigList.mls); this.saveFeatureConfig(featureConfigList); }; diff --git a/yarn.lock b/yarn.lock index 9f718d679e9..e19c71f0f54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,21 +35,6 @@ __metadata: languageName: node linkType: hard -"@auth0/auth0-spa-js@npm:^1.6.2": - version: 1.22.6 - resolution: "@auth0/auth0-spa-js@npm:1.22.6" - dependencies: - abortcontroller-polyfill: ^1.7.3 - browser-tabs-lock: ^1.2.15 - core-js: ^3.25.4 - es-cookie: ~1.3.2 - fast-text-encoding: ^1.0.6 - promise-polyfill: ^8.2.3 - unfetch: ^4.2.0 - checksum: 0155025b82898bd0533db373d7c8b85938fbae097c6fdf732a315ddee67d84a32c32a3b944465aec0600adb11d6d32e53eabbfc2ea04e6b5c90f92f72607bc30 - languageName: node - linkType: hard - "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.10, @babel/code-frame@npm:^7.22.5": version: 7.22.10 resolution: "@babel/code-frame@npm:7.22.10" @@ -4859,26 +4844,6 @@ __metadata: languageName: node linkType: hard -"@wireapp/api-client@file:.yalc/@wireapp/api-client::locator=wire-webapp%40workspace%3A.": - version: 25.2.2 - resolution: "@wireapp/api-client@file:.yalc/@wireapp/api-client#.yalc/@wireapp/api-client::hash=07d4d9&locator=wire-webapp%40workspace%3A." - dependencies: - "@wireapp/commons": ^5.1.0 - "@wireapp/priority-queue": ^2.1.1 - "@wireapp/protocol-messaging": 1.44.0 - axios: 1.4.0 - axios-retry: 3.6.0 - http-status-codes: 2.2.0 - logdown: 3.3.1 - reconnecting-websocket: 4.4.0 - spark-md5: 3.0.2 - tough-cookie: 4.1.3 - ws: 8.13.0 - zod: 3.21.4 - checksum: 6e20cb842d3a3b622368009678125b5acbe70185bef0947d136c38c4e8e0da088be5a16cc6c72be7f4c4b9c83a0751bbd291361ee1693e248916440e0b3ba19e - languageName: node - linkType: hard - "@wireapp/api-client@npm:^25.2.2": version: 25.2.2 resolution: "@wireapp/api-client@npm:25.2.2" @@ -4947,9 +4912,9 @@ __metadata: languageName: node linkType: hard -"@wireapp/core@file:.yalc/@wireapp/core::locator=wire-webapp%40workspace%3A.": - version: 41.3.0 - resolution: "@wireapp/core@file:.yalc/@wireapp/core#.yalc/@wireapp/core::hash=91a5f0&locator=wire-webapp%40workspace%3A." +"@wireapp/core@npm:41.2.2": + version: 41.2.2 + resolution: "@wireapp/core@npm:41.2.2" dependencies: "@wireapp/api-client": ^25.2.2 "@wireapp/commons": ^5.1.0 @@ -4959,7 +4924,6 @@ __metadata: "@wireapp/protocol-messaging": 1.44.0 "@wireapp/store-engine": 5.1.1 "@wireapp/store-engine-dexie": ^2.1.3 - auth0-spa-js: ^1.6.5 axios: 1.4.0 bazinga64: 6.1.2 deepmerge-ts: 5.1.0 @@ -4968,10 +4932,8 @@ __metadata: idb: 7.1.1 logdown: 3.3.1 long: ^5.2.0 - oidc-client-ts: ^2.2.2 uuidjs: 4.2.13 - zod: 3.21.4 - checksum: c371e17ae454f4c254accc490f4dd5b4713f6258e1313535616470b9ea361be4efbc5994ec5d39c9fc4617802c0de36c3647572203aecd6c1fc78411585fef48 + checksum: 62f88d3a0de74bc14a85f2a0f6c96a328f97c6fdaf0ff4972addcc7626b81cf121946c2c284a62e0a6835f46fad0f9db52cbdbcc36b9dc5e22937494a33dab5b languageName: node linkType: hard @@ -5193,13 +5155,6 @@ __metadata: languageName: node linkType: hard -"abortcontroller-polyfill@npm:^1.7.3": - version: 1.7.5 - resolution: "abortcontroller-polyfill@npm:1.7.5" - checksum: daf4169f4228ae0e4f4dbcfa782e501b923667f2666b7c55bd3b7664e5d6b100e333a93371173985fdf21f65d7dfba15bdb2e6031bdc9e57e4ce0297147da3aa - languageName: node - linkType: hard - "acorn-class-fields@npm:^0.3.7": version: 0.3.7 resolution: "acorn-class-fields@npm:0.3.7" @@ -5822,15 +5777,6 @@ __metadata: languageName: node linkType: hard -"auth0-spa-js@npm:^1.6.5": - version: 1.6.5 - resolution: "auth0-spa-js@npm:1.6.5" - dependencies: - "@auth0/auth0-spa-js": ^1.6.2 - checksum: daec7a9f2afc1eb24adc0f1173805087e5526508a89e751d37cd8b395374cf7b2806e833a6bce8748a6cb169676692a70d0861e33fe105f0f7511fe77e5b8a21 - languageName: node - linkType: hard - "autoprefixer@npm:^10.4.14, autoprefixer@npm:^10.4.15": version: 10.4.15 resolution: "autoprefixer@npm:10.4.15" @@ -6199,15 +6145,6 @@ __metadata: languageName: node linkType: hard -"browser-tabs-lock@npm:^1.2.15": - version: 1.3.0 - resolution: "browser-tabs-lock@npm:1.3.0" - dependencies: - lodash: ">=4.17.21" - checksum: 4fcfb6d5fc4bc5e4f53c298d555d8421ca4f815e32c2650b73008868eb70d7ee41aca8f92ad84d9beb77a8ffe0cb99f1efc8d9b3135cc434d48f7bd569f2bb72 - languageName: node - linkType: hard - "browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.21.9": version: 4.21.10 resolution: "browserslist@npm:4.21.10" @@ -6897,7 +6834,7 @@ __metadata: languageName: node linkType: hard -"core-js@npm:3.32.1, core-js@npm:^3.25.4": +"core-js@npm:3.32.1": version: 3.32.1 resolution: "core-js@npm:3.32.1" checksum: e4af91d9c6be7b59235feb3f273d16705126ce09a0b4a787144d131d874f0cd10be3c24fc52e5eea7d7cb03ceabe4be7b255abcd9474b5eb1ff365d2c5611f9a @@ -8106,13 +8043,6 @@ __metadata: languageName: node linkType: hard -"es-cookie@npm:~1.3.2": - version: 1.3.2 - resolution: "es-cookie@npm:1.3.2" - checksum: 8509355a7d00bd2e3fcab4a76a90e0da35b40c1e76f114f8ffe805ab3fdfff51e8fc0e7cdccd9bf1536066150b6b9861e37d78ae14f80680513901902ac4f0df - languageName: node - linkType: hard - "es-get-iterator@npm:^1.1.3": version: 1.1.3 resolution: "es-get-iterator@npm:1.1.3" @@ -8887,13 +8817,6 @@ __metadata: languageName: node linkType: hard -"fast-text-encoding@npm:^1.0.6": - version: 1.0.6 - resolution: "fast-text-encoding@npm:1.0.6" - checksum: 9d58f694314b3283e785bf61954902536da228607ad246905e30256f9ab8331f780ac987e7222c9f5eafd04168d07e12b8054c85cedb76a2c05af0e82387a903 - languageName: node - linkType: hard - "fastest-levenshtein@npm:^1.0.12, fastest-levenshtein@npm:^1.0.16": version: 1.0.16 resolution: "fastest-levenshtein@npm:1.0.16" @@ -12209,7 +12132,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:>=4.17.21, lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:^4.0.0, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -13242,7 +13165,7 @@ __metadata: languageName: node linkType: hard -"oidc-client-ts@npm:^2.2.2": +"oidc-client-ts@npm:^2.2.5": version: 2.2.5 resolution: "oidc-client-ts@npm:2.2.5" dependencies: @@ -14702,13 +14625,6 @@ __metadata: languageName: node linkType: hard -"promise-polyfill@npm:^8.2.3": - version: 8.3.0 - resolution: "promise-polyfill@npm:8.3.0" - checksum: 206373802076c77def0805758d0a8ece64120dfa6603f092404a1004211f8f2f67f33cadbc35953fc2a8ed0b0d38c774e88bdf01e20ce7a920723a60df84b7a5 - languageName: node - linkType: hard - "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -17299,13 +17215,6 @@ __metadata: languageName: node linkType: hard -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a - languageName: node - linkType: hard - "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -18028,10 +17937,9 @@ __metadata: "@types/speakingurl": 13.0.3 "@types/underscore": 1.11.6 "@types/webpack-env": 1.18.1 - "@wireapp/api-client": "file:.yalc/@wireapp/api-client" "@wireapp/avs": 9.3.7 "@wireapp/copy-config": 2.1.1 - "@wireapp/core": "file:.yalc/@wireapp/core" + "@wireapp/core": 41.2.2 "@wireapp/eslint-config": 3.0.1 "@wireapp/lru-cache": 3.8.1 "@wireapp/prettier-config": 0.6.0 @@ -18092,6 +18000,7 @@ __metadata: markdown-it: 13.0.1 murmurhash: 2.0.1 node-fetch: 2.6.13 + oidc-client-ts: ^2.2.5 os-browserify: 0.3.0 path-browserify: 1.0.1 platform: 1.3.6 @@ -18648,13 +18557,6 @@ __metadata: languageName: node linkType: hard -"zod@npm:3.21.4": - version: 3.21.4 - resolution: "zod@npm:3.21.4" - checksum: f185ba87342ff16f7a06686767c2b2a7af41110c7edf7c1974095d8db7a73792696bcb4a00853de0d2edeb34a5b2ea6a55871bc864227dace682a0a28de33e1f - languageName: node - linkType: hard - "zustand@npm:4.4.1": version: 4.4.1 resolution: "zustand@npm:4.4.1" From 1eb2d97505fd85c3ee032aee2b2ccd85fb6971b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Mon, 11 Sep 2023 09:51:05 +0200 Subject: [PATCH 25/95] chore: rebuild yarn.lock --- server/yarn.lock | 898 ++++++---------------------------- yarn.lock | 1222 +++++++++++++--------------------------------- 2 files changed, 485 insertions(+), 1635 deletions(-) diff --git a/server/yarn.lock b/server/yarn.lock index 0bb834b2de7..e48997234af 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -1,3 +1,6 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + __metadata: version: 6 cacheKey: 8 @@ -12,13 +15,13 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.10, @babel/code-frame@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/code-frame@npm:7.22.10" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/code-frame@npm:7.22.13" dependencies: - "@babel/highlight": ^7.22.10 + "@babel/highlight": ^7.22.13 chalk: ^2.4.2 - checksum: 89a06534ad19759da6203a71bad120b1d7b2ddc016c8e07d4c56b35dea25e7396c6da60a754e8532a86733092b131ae7f661dbe6ba5d165ea777555daa2ed3c9 + checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 languageName: node linkType: hard @@ -30,50 +33,50 @@ __metadata: linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": - version: 7.22.10 - resolution: "@babel/core@npm:7.22.10" + version: 7.22.17 + resolution: "@babel/core@npm:7.22.17" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.10 - "@babel/generator": ^7.22.10 - "@babel/helper-compilation-targets": ^7.22.10 - "@babel/helper-module-transforms": ^7.22.9 - "@babel/helpers": ^7.22.10 - "@babel/parser": ^7.22.10 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.10 - "@babel/types": ^7.22.10 + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.22.15 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-module-transforms": ^7.22.17 + "@babel/helpers": ^7.22.15 + "@babel/parser": ^7.22.16 + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.22.17 + "@babel/types": ^7.22.17 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 - json5: ^2.2.2 + json5: ^2.2.3 semver: ^6.3.1 - checksum: cc4efa09209fe1f733cf512e9e4bb50870b191ab2dee8014e34cd6e731f204e48476cc53b4bbd0825d4d342304d577ae43ff5fd8ab3896080673c343321acb32 + checksum: 355216a342d1b3952d7c040dd4c99ecef6b3501ba99a713703c1fec1ae73bc92a48a0c1234562bdbb4fd334b2e452f5a6c3bb282f0e613fa89e1518c91d1aea1 languageName: node linkType: hard -"@babel/generator@npm:^7.22.10, @babel/generator@npm:^7.7.2": - version: 7.22.10 - resolution: "@babel/generator@npm:7.22.10" +"@babel/generator@npm:^7.22.15, @babel/generator@npm:^7.7.2": + version: 7.22.15 + resolution: "@babel/generator@npm:7.22.15" dependencies: - "@babel/types": ^7.22.10 + "@babel/types": ^7.22.15 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 59a79730abdff9070692834bd3af179e7a9413fa2ff7f83dff3eb888765aeaeb2bfc7b0238a49613ed56e1af05956eff303cc139f2407eda8df974813e486074 + checksum: 5b2a3ccdc3634f6ea86e0a442722bcd430238369432d31f15b428a4ee8013c2f4f917b5b135bf4fc1d0a3e2f87f10fd4ce5d07955ecc2d3b9400a05c2a481374 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/helper-compilation-targets@npm:7.22.10" +"@babel/helper-compilation-targets@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-compilation-targets@npm:7.22.15" dependencies: "@babel/compat-data": ^7.22.9 - "@babel/helper-validator-option": ^7.22.5 + "@babel/helper-validator-option": ^7.22.15 browserslist: ^4.21.9 lru-cache: ^5.1.1 semver: ^6.3.1 - checksum: f6f1896816392bcff671bbe6e277307729aee53befb4a66ea126e2a91eda78d819a70d06fa384c74ef46c1595544b94dca50bef6c78438d9ffd31776dafbd435 + checksum: ce85196769e091ae54dd39e4a80c2a9df1793da8588e335c383d536d54f06baf648d0a08fc873044f226398c4ded15c4ae9120ee18e7dfd7c639a68e3cdc9980 languageName: node linkType: hard @@ -103,27 +106,27 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-module-imports@npm:7.22.5" +"@babel/helper-module-imports@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-module-imports@npm:7.22.15" dependencies: - "@babel/types": ^7.22.5 - checksum: 9ac2b0404fa38b80bdf2653fbeaf8e8a43ccb41bd505f9741d820ed95d3c4e037c62a1bcdcb6c9527d7798d2e595924c4d025daed73283badc180ada2c9c49ad + "@babel/types": ^7.22.15 + checksum: ecd7e457df0a46f889228f943ef9b4a47d485d82e030676767e6a2fdcbdaa63594d8124d4b55fd160b41c201025aec01fc27580352b1c87a37c9c6f33d116702 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-module-transforms@npm:7.22.9" +"@babel/helper-module-transforms@npm:^7.22.17": + version: 7.22.17 + resolution: "@babel/helper-module-transforms@npm:7.22.17" dependencies: "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-module-imports": ^7.22.15 "@babel/helper-simple-access": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.15 peerDependencies: "@babel/core": ^7.0.0 - checksum: 2751f77660518cf4ff027514d6f4794f04598c6393be7b04b8e46c6e21606e11c19f3f57ab6129a9c21bacdf8b3ffe3af87bb401d972f34af2d0ffde02ac3001 + checksum: 458021c74093e66179765fcc9d1c1cb694f7bdf98656f23486901d35636495c38aab4661547fac2142e13d887987d1ea30cc9fe42968376a51a99bcd207b4989 languageName: node linkType: hard @@ -159,48 +162,48 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-identifier@npm:7.22.5" - checksum: 7f0f30113474a28298c12161763b49de5018732290ca4de13cdaefd4fd0d635a6fe3f6686c37a02905fb1e64f21a5ee2b55140cf7b070e729f1bd66866506aea +"@babel/helper-validator-identifier@npm:^7.22.15, @babel/helper-validator-identifier@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-validator-identifier@npm:7.22.15" + checksum: eb0bee4bda664c0959924bc1ad5611eacfce806f46612202dd164fef1df8fef1a11682a1e7615288987100e9fb304982b6e2a4ff07ffe842ab8765b95ed1118c languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-option@npm:7.22.5" - checksum: bbeca8a85ee86990215c0424997438b388b8d642d69b9f86c375a174d3cdeb270efafd1ff128bc7a1d370923d13b6e45829ba8581c027620e83e3a80c5c414b3 +"@babel/helper-validator-option@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-validator-option@npm:7.22.15" + checksum: 68da52b1e10002a543161494c4bc0f4d0398c8fdf361d5f7f4272e95c45d5b32d974896d44f6a0ea7378c9204988879d73613ca683e13bd1304e46d25ff67a8d languageName: node linkType: hard -"@babel/helpers@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/helpers@npm:7.22.10" +"@babel/helpers@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helpers@npm:7.22.15" dependencies: - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.10 - "@babel/types": ^7.22.10 - checksum: 3b1219e362df390b6c5d94b75a53fc1c2eb42927ced0b8022d6a29b833a839696206b9bdad45b4805d05591df49fc16b6fb7db758c9c2ecfe99e3e94cb13020f + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 49f61a93cbae4df3328bda67af5db743fead659ae4242571226c3596b7df78546189cdf991fed1eca33b559de8abf396a90a001f474a1bab351418f07b7ae6ef languageName: node linkType: hard -"@babel/highlight@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/highlight@npm:7.22.10" +"@babel/highlight@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/highlight@npm:7.22.13" dependencies: "@babel/helper-validator-identifier": ^7.22.5 chalk: ^2.4.2 js-tokens: ^4.0.0 - checksum: f714a1e1a72dd9d72f6383f4f30fd342e21a8df32d984a4ea8f5eab691bb6ba6db2f8823d4b4cf135d98869e7a98925b81306aa32ee3c429f8cfa52c75889e1b + checksum: 7266d2bff8aa8fc78eb65b6e92a8211e12897a731126a282d2f9bb50d8fcaa4c1b02af2284f990ac7e3ab8d892d448a2cab8f5ed0ea8a90bce2c025b11ebe802 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.10, @babel/parser@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/parser@npm:7.22.10" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16": + version: 7.22.16 + resolution: "@babel/parser@npm:7.22.16" bin: parser: ./bin/babel-parser.js - checksum: af51567b7d3cdf523bc608eae057397486c7fa6c2e5753027c01fe5c36f0767b2d01ce3049b222841326cc5b8c7fda1d810ac1a01af0a97bb04679e2ef9f7049 + checksum: 944c756b5bdeb07b9fec16ecef6b3c61aff9d4c4b924abadcf01afa1840a740b8e2357ae00482b5b37daad6d2bfd848c947f27ad65138d687b6fdc924bc59edd languageName: node linkType: hard @@ -358,43 +361,43 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3": - version: 7.22.5 - resolution: "@babel/template@npm:7.22.5" +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3": + version: 7.22.15 + resolution: "@babel/template@npm:7.22.15" dependencies: - "@babel/code-frame": ^7.22.5 - "@babel/parser": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: c5746410164039aca61829cdb42e9a55410f43cace6f51ca443313f3d0bdfa9a5a330d0b0df73dc17ef885c72104234ae05efede37c1cc8a72dc9f93425977a3 + "@babel/code-frame": ^7.22.13 + "@babel/parser": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd languageName: node linkType: hard -"@babel/traverse@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/traverse@npm:7.22.10" +"@babel/traverse@npm:^7.22.15, @babel/traverse@npm:^7.22.17": + version: 7.22.17 + resolution: "@babel/traverse@npm:7.22.17" dependencies: - "@babel/code-frame": ^7.22.10 - "@babel/generator": ^7.22.10 + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.22.15 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-hoist-variables": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.22.10 - "@babel/types": ^7.22.10 + "@babel/parser": ^7.22.16 + "@babel/types": ^7.22.17 debug: ^4.1.0 globals: ^11.1.0 - checksum: 9f7b358563bfb0f57ac4ed639f50e5c29a36b821a1ce1eea0c7db084f5b925e3275846d0de63bde01ca407c85d9804e0efbe370d92cd2baaafde3bd13b0f4cdb + checksum: 1153ca166a0a9b3fddf67f7f7c8c5b4f88aa2c2c00261ff2fc8424a63bc93250ed3fd08b04bd526ad19e797aeb6f22161120646a570cbfe5ff2a5d2f5d28af01 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": - version: 7.22.10 - resolution: "@babel/types@npm:7.22.10" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.17, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": + version: 7.22.17 + resolution: "@babel/types@npm:7.22.17" dependencies: "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.15 to-fast-properties: ^2.0.0 - checksum: 095c4f4b7503fa816e4094113f0ec2351ef96ff32012010b771693066ff628c7c664b21c6bd3fb93aeb46fe7c61f6b3a3c9e4ed0034d6a2481201c417371c8af + checksum: 7382220f6eb2548f2c867a98916c3aa8a6063498d5372e5d21d8d184ba354033defb72aeba5858c1b2b42177058b896a34a7dcbae5eccd47fb0104721efa909d languageName: node linkType: hard @@ -439,20 +442,6 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/console@npm:29.6.3" - dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - jest-message-util: ^29.6.3 - jest-util: ^29.6.3 - slash: ^3.0.0 - checksum: a30b380166944ac06d36a50a36f05e65022b97064efd3ace7113d1dfc30d96966af578266f69817afa9d6ec679f8ceb6ae905352c07e5ad23d3c307fc0060174 - languageName: node - linkType: hard - "@jest/console@npm:^29.6.4": version: 29.6.4 resolution: "@jest/console@npm:29.6.4" @@ -467,47 +456,6 @@ __metadata: languageName: node linkType: hard -"@jest/core@npm:^29.6.2, @jest/core@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/core@npm:29.6.3" - dependencies: - "@jest/console": ^29.6.3 - "@jest/reporters": ^29.6.3 - "@jest/test-result": ^29.6.3 - "@jest/transform": ^29.6.3 - "@jest/types": ^29.6.3 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - ci-info: ^3.2.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - jest-changed-files: ^29.6.3 - jest-config: ^29.6.3 - jest-haste-map: ^29.6.3 - jest-message-util: ^29.6.3 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.6.3 - jest-resolve-dependencies: ^29.6.3 - jest-runner: ^29.6.3 - jest-runtime: ^29.6.3 - jest-snapshot: ^29.6.3 - jest-util: ^29.6.3 - jest-validate: ^29.6.3 - jest-watcher: ^29.6.3 - micromatch: ^4.0.4 - pretty-format: ^29.6.3 - slash: ^3.0.0 - strip-ansi: ^6.0.0 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 8ec37ce75f52dc85dfe703d4f8de31acf2134d1056127d075a700cf3668bad0cccc17f742b39f0053f8c12455075018bd3551093c0b3e082d593980093cb6ce9 - languageName: node - linkType: hard - "@jest/core@npm:^29.6.4": version: 29.6.4 resolution: "@jest/core@npm:29.6.4" @@ -549,18 +497,6 @@ __metadata: languageName: node linkType: hard -"@jest/environment@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/environment@npm:29.6.3" - dependencies: - "@jest/fake-timers": ^29.6.3 - "@jest/types": ^29.6.3 - "@types/node": "*" - jest-mock: ^29.6.3 - checksum: 96aaf9baaa58fbacbdfbde9591297f25f9d6f5566cf10cd07d744a4a25b1d82b6cfb89f217a45ccce2cc50ec6c7e3c9a0122908d6b827985a1679afb5e10b7b1 - languageName: node - linkType: hard - "@jest/environment@npm:^29.6.4": version: 29.6.4 resolution: "@jest/environment@npm:29.6.4" @@ -573,15 +509,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect-utils@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/expect-utils@npm:29.6.3" - dependencies: - jest-get-type: ^29.6.3 - checksum: aeb0c2a485df09fdb51f866d58e232010cde888a7e6e1f9b395df236918e09e98407eb8281a3d41d2b115d9ff740d100b75100d521717ba903abeacb26e2a192 - languageName: node - linkType: hard - "@jest/expect-utils@npm:^29.6.4": version: 29.6.4 resolution: "@jest/expect-utils@npm:29.6.4" @@ -591,16 +518,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/expect@npm:29.6.3" - dependencies: - expect: ^29.6.3 - jest-snapshot: ^29.6.3 - checksum: 40c3fc53aa9f86e10129fcaec243405a4b4c398a8d65a3133f97d39331f065c3833c352b133377f003b2e9acc70909d72ac91698c219a883b857b7cda559b199 - languageName: node - linkType: hard - "@jest/expect@npm:^29.6.4": version: 29.6.4 resolution: "@jest/expect@npm:29.6.4" @@ -611,20 +528,6 @@ __metadata: languageName: node linkType: hard -"@jest/fake-timers@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/fake-timers@npm:29.6.3" - dependencies: - "@jest/types": ^29.6.3 - "@sinonjs/fake-timers": ^10.0.2 - "@types/node": "*" - jest-message-util: ^29.6.3 - jest-mock: ^29.6.3 - jest-util: ^29.6.3 - checksum: 60be71159bb92c8b8da593fac2b2fff50c0760c26c3b17237561a2818382d3c797bd119a1707ec1d3e9b77e8e3d6513fe88f0c668d6ca26fb2c01ab475620888 - languageName: node - linkType: hard - "@jest/fake-timers@npm:^29.6.4": version: 29.6.4 resolution: "@jest/fake-timers@npm:29.6.4" @@ -639,18 +542,6 @@ __metadata: languageName: node linkType: hard -"@jest/globals@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/globals@npm:29.6.3" - dependencies: - "@jest/environment": ^29.6.3 - "@jest/expect": ^29.6.3 - "@jest/types": ^29.6.3 - jest-mock: ^29.6.3 - checksum: c90ad4e85c4c7fa42e4c61fc6bba854dc7e12c3579b4412fe879e712bf3675e92a771d2ac4ba2a48304a4dab34182e62e9d62f36ca13ddf8dff3cca911ddfbbb - languageName: node - linkType: hard - "@jest/globals@npm:^29.6.4": version: 29.6.4 resolution: "@jest/globals@npm:29.6.4" @@ -663,43 +554,6 @@ __metadata: languageName: node linkType: hard -"@jest/reporters@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/reporters@npm:29.6.3" - dependencies: - "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.6.3 - "@jest/test-result": ^29.6.3 - "@jest/transform": ^29.6.3 - "@jest/types": ^29.6.3 - "@jridgewell/trace-mapping": ^0.3.18 - "@types/node": "*" - chalk: ^4.0.0 - collect-v8-coverage: ^1.0.0 - exit: ^0.1.2 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^6.0.0 - istanbul-lib-report: ^3.0.0 - istanbul-lib-source-maps: ^4.0.0 - istanbul-reports: ^3.1.3 - jest-message-util: ^29.6.3 - jest-util: ^29.6.3 - jest-worker: ^29.6.3 - slash: ^3.0.0 - string-length: ^4.0.1 - strip-ansi: ^6.0.0 - v8-to-istanbul: ^9.0.1 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 8899240f018874148a24886ac78ada6dda4b7fc621fed904b276b324b981c2294d2036df92fb87411f2abb914faa351098eeb814d7685dcfa37c7c27b54660a4 - languageName: node - linkType: hard - "@jest/reporters@npm:^29.6.4": version: 29.6.4 resolution: "@jest/reporters@npm:29.6.4" @@ -737,15 +591,6 @@ __metadata: languageName: node linkType: hard -"@jest/schemas@npm:^29.4.0": - version: 29.4.0 - resolution: "@jest/schemas@npm:29.4.0" - dependencies: - "@sinclair/typebox": ^0.25.16 - checksum: 005c90b7b641af029133fa390c0c8a75b63edf651da6253d7c472a8f15ddd18aa139edcd4236e57f974006e39c67217925768115484dbd7bfed2eba224de8b7d - languageName: node - linkType: hard - "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -766,18 +611,6 @@ __metadata: languageName: node linkType: hard -"@jest/test-result@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/test-result@npm:29.6.3" - dependencies: - "@jest/console": ^29.6.3 - "@jest/types": ^29.6.3 - "@types/istanbul-lib-coverage": ^2.0.0 - collect-v8-coverage: ^1.0.0 - checksum: 0f8164520587555f4e0c5b3e0843ae8ae43c517301c2986b9ff24ca58215f407164b99f3ccfde778dc3fb299c3bb8922a3dd81cf3ccf0ff646806df61d3d2d78 - languageName: node - linkType: hard - "@jest/test-result@npm:^29.6.4": version: 29.6.4 resolution: "@jest/test-result@npm:29.6.4" @@ -790,18 +623,6 @@ __metadata: languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/test-sequencer@npm:29.6.3" - dependencies: - "@jest/test-result": ^29.6.3 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.3 - slash: ^3.0.0 - checksum: 71b5fee13e28b2006b4bdea62181dd6b7a537531ac027b1230ad96a5a0c7837a4c008e9cbeebee630b0c7cc22187fede48cb18fec79209ff641492c994db8259 - languageName: node - linkType: hard - "@jest/test-sequencer@npm:^29.6.4": version: 29.6.4 resolution: "@jest/test-sequencer@npm:29.6.4" @@ -814,29 +635,6 @@ __metadata: languageName: node linkType: hard -"@jest/transform@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/transform@npm:29.6.3" - dependencies: - "@babel/core": ^7.11.6 - "@jest/types": ^29.6.3 - "@jridgewell/trace-mapping": ^0.3.18 - babel-plugin-istanbul: ^6.1.1 - chalk: ^4.0.0 - convert-source-map: ^2.0.0 - fast-json-stable-stringify: ^2.1.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.3 - jest-regex-util: ^29.6.3 - jest-util: ^29.6.3 - micromatch: ^4.0.4 - pirates: ^4.0.4 - slash: ^3.0.0 - write-file-atomic: ^4.0.2 - checksum: edc47e960a71dab5ad8f0480fc4c1b05f2950c12e5aeb62bacfd46929dd5c7101dd2fa521a2e59c62a90849118039949f0230282a485de8dc373aac711f1bff9 - languageName: node - linkType: hard - "@jest/transform@npm:^29.6.4": version: 29.6.4 resolution: "@jest/transform@npm:29.6.4" @@ -860,20 +658,6 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^29.6.1, @jest/types@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/types@npm:29.6.3" - dependencies: - "@jest/schemas": ^29.6.3 - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^17.0.8 - chalk: ^4.0.0 - checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc - languageName: node - linkType: hard - "@jest/types@npm:^29.6.3": version: 29.6.3 resolution: "@jest/types@npm:29.6.3" @@ -888,16 +672,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" - dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc - languageName: node - linkType: hard - "@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": version: 0.3.3 resolution: "@jridgewell/gen-mapping@npm:0.3.3" @@ -909,17 +683,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 4a74944bd31f22354fc01c3da32e83c19e519e3bbadafa114f6da4522ea77dd0c2842607e923a591d60a76699d819a2fbb6f3552e277efdb9b58b081390b60ab - languageName: node - linkType: hard - "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.1 resolution: "@jridgewell/resolve-uri@npm:3.1.1" @@ -1155,23 +918,23 @@ __metadata: linkType: hard "@types/connect@npm:*": - version: 3.4.35 - resolution: "@types/connect@npm:3.4.35" + version: 3.4.36 + resolution: "@types/connect@npm:3.4.36" dependencies: "@types/node": "*" - checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 + checksum: 4dee3d966fb527b98f0cbbdcf6977c9193fc3204ed539b7522fe5e64dfa45f9017bdda4ffb1f760062262fce7701a0ee1c2f6ce2e50af36c74d4e37052303172 languageName: node linkType: hard "@types/express-serve-static-core@npm:^4.17.33": - version: 4.17.35 - resolution: "@types/express-serve-static-core@npm:4.17.35" + version: 4.17.36 + resolution: "@types/express-serve-static-core@npm:4.17.36" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" "@types/send": "*" - checksum: cc8995d10c6feda475ec1b3a0e69eb0f35f21ab6b49129ad5c6f279e0bc5de8175bc04ec51304cb79a43eec3ed2f5a1e01472eb6d5f827b8c35c6ca8ad24eb6e + checksum: 410b13cbd663f18c0f8729e7f2ff54d960d96de76ebbae7cadb612972f85cc66c54051e00d32f11aa230c0a683d81a6d6fc7f7e4e383a95c0801494c517f36e1 languageName: node linkType: hard @@ -1306,9 +1069,9 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 20.5.2 - resolution: "@types/node@npm:20.5.2" - checksum: 46d032bb9a1db687693f6351702572d2f1e12face32caf8182323413918de27d4ac16cc2b15ff6b891651313e602da18edbdd095d16d2b5a26588c2edffca892 + version: 20.6.0 + resolution: "@types/node@npm:20.6.0" + checksum: 52611801af5cf151c6fac1963aa4a8a8ca2e388a9e9ed82b01b70bca762088ded5b32cc789c5564220d5d7dccba2b8dd34446a3d4fc74736805e1f2cf262e29d languageName: node linkType: hard @@ -1320,9 +1083,9 @@ __metadata: linkType: hard "@types/qs@npm:*": - version: 6.9.7 - resolution: "@types/qs@npm:6.9.7" - checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba + version: 6.9.8 + resolution: "@types/qs@npm:6.9.8" + checksum: c28e07d00d07970e5134c6eed184a0189b8a4649e28fdf36d9117fe671c067a44820890de6bdecef18217647a95e9c6aebdaaae69f5fe4b0bec9345db885f77e languageName: node linkType: hard @@ -1415,7 +1178,7 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:^7.0.1, agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": version: 7.1.0 resolution: "agent-base@npm:7.1.0" dependencies: @@ -1617,23 +1380,6 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-jest@npm:29.6.3" - dependencies: - "@jest/transform": ^29.6.3 - "@types/babel__core": ^7.1.14 - babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^29.6.3 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - slash: ^3.0.0 - peerDependencies: - "@babel/core": ^7.8.0 - checksum: 8b4b85d829d8ee010f0c8381cb9d67842da905c32183c1fc6e1e8833447a79b969f8279759d44197bb77001239dc41a49fff0e8222d8e8577f47a8d0428d178e - languageName: node - linkType: hard - "babel-jest@npm:^29.6.4": version: 29.6.4 resolution: "babel-jest@npm:29.6.4" @@ -1884,9 +1630,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001517": - version: 1.0.30001522 - resolution: "caniuse-lite@npm:1.0.30001522" - checksum: 56e3551c02ae595085114073cf242f7d9d54d32255c80893ca9098a44f44fc6eef353936f234f31c7f4cb894dd2b6c9c4626e30649ee29e04d70aa127eeefeb0 + version: 1.0.30001532 + resolution: "caniuse-lite@npm:1.0.30001532" + checksum: 613abeb15e03dde307d543195a7860f7ba7450c9c9262d45642b2c8fbe097914fa060d68c8647f9d443947b1f62b09d891858bde7d2cac94fae8133a0b518b28 languageName: node linkType: hard @@ -2266,13 +2012,6 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^29.3.1": - version: 29.3.1 - resolution: "diff-sequences@npm:29.3.1" - checksum: 8edab8c383355022e470779a099852d595dd856f9f5bd7af24f177e74138a668932268b4c4fd54096eed643861575c3652d4ecbbb1a9d710488286aed3ffa443 - languageName: node - linkType: hard - "diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" @@ -2323,9 +2062,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.477": - version: 1.4.498 - resolution: "electron-to-chromium@npm:1.4.498" - checksum: 01962ae42e9097c321cb6ff63ca97dfd36457050727893d1768e6eb1b7d5a48ece568b94b1128fd0211f7ce3a31aca0c17eb72b1292d9b5ef7b0664d90dfe3aa + version: 1.4.513 + resolution: "electron-to-chromium@npm:1.4.513" + checksum: 613b66da177dcf5abca2441c502cde4b4fb247665dc049c54d1fe3b79fc3a5a3ecae92faf97d3147af0fec9c50bf90db09e8ca3f0953a5ec2fdb472d6d6253c2 languageName: node linkType: hard @@ -2536,20 +2275,7 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.6.3": - version: 29.6.3 - resolution: "expect@npm:29.6.3" - dependencies: - "@jest/expect-utils": ^29.6.3 - jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.6.3 - jest-message-util: ^29.6.3 - jest-util: ^29.6.3 - checksum: c72de87abbc9acc17c66f42fcac8be4dff256f871f1800c3aaa004c74f95f61866cf80e8f2ddacc3f2df290fd58b0cba8adb3a0dee3a09dd5d39f97f63d2aae8 - languageName: node - linkType: hard - -"expect@npm:^29.6.4": +"expect@npm:^29.0.0, expect@npm:^29.6.4": version: 29.6.4 resolution: "expect@npm:29.6.4" dependencies: @@ -2922,8 +2648,8 @@ __metadata: linkType: hard "glob@npm:^10.2.2": - version: 10.3.3 - resolution: "glob@npm:10.3.3" + version: 10.3.4 + resolution: "glob@npm:10.3.4" dependencies: foreground-child: ^3.1.0 jackspeak: ^2.0.3 @@ -2932,7 +2658,7 @@ __metadata: path-scurry: ^1.10.1 bin: glob: dist/cjs/src/bin.js - checksum: 29190d3291f422da0cb40b77a72fc8d2c51a36524e99b8bf412548b7676a6627489528b57250429612b6eec2e6fe7826d328451d3e694a9d15e575389308ec53 + checksum: 176b97c124414401cb51329a93d2ba112cef8814adbed10348481916b9521b677773eee2691cb6b24d66632d8c8bb8913533f5ac4bfb2d0ef5454a1856082361 languageName: node linkType: hard @@ -3138,13 +2864,13 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.0": - version: 7.0.1 - resolution: "https-proxy-agent@npm:7.0.1" +"https-proxy-agent@npm:^7.0.2": + version: 7.0.2 + resolution: "https-proxy-agent@npm:7.0.2" dependencies: agent-base: ^7.0.2 debug: 4 - checksum: 2d765c31865071373771f53abdd72912567b76015a4eff61094f586194192950cd89257d50f0e621807a16c083bc8cad5852e3885c6ba154d2ce721a18fac248 + checksum: 088969a0dd476ea7a0ed0a2cf1283013682b08f874c3bc6696c83fa061d2c157d29ef0ad3eb70a2046010bb7665573b2388d10fdcb3e410a66995e5248444292 languageName: node linkType: hard @@ -3409,15 +3135,15 @@ __metadata: linkType: hard "jackspeak@npm:^2.0.3": - version: 2.3.0 - resolution: "jackspeak@npm:2.3.0" + version: 2.3.3 + resolution: "jackspeak@npm:2.3.3" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 71bf716f4b5793226d4aeb9761ebf2605ee093b59f91a61451d57d998dd64bbf2b54323fb749b8b2ae8b6d8a463de4f6e3fedab50108671f247bbc80195a6306 + checksum: 4313a7c0cc44c7753c4cb9869935f0b06f4cf96827515f63f58ff46b3d2f6e29aba6b3b5151778397c3f5ae67ef8bfc48871967bd10343c27e90cff198ec7808 languageName: node linkType: hard @@ -3432,34 +3158,6 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-circus@npm:29.6.3" - dependencies: - "@jest/environment": ^29.6.3 - "@jest/expect": ^29.6.3 - "@jest/test-result": ^29.6.3 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - dedent: ^1.0.0 - is-generator-fn: ^2.0.0 - jest-each: ^29.6.3 - jest-matcher-utils: ^29.6.3 - jest-message-util: ^29.6.3 - jest-runtime: ^29.6.3 - jest-snapshot: ^29.6.3 - jest-util: ^29.6.3 - p-limit: ^3.1.0 - pretty-format: ^29.6.3 - pure-rand: ^6.0.0 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: 65b76f853d1bd2ddc74ec5d9a37cff3d04d436e675b0ded52167ba9e5dfb9d6fbca8572c9f255d379ad332e87770bac3da6dbcabcaf840ee2ba6e0cde5b8c20e - languageName: node - linkType: hard - "jest-circus@npm:^29.6.4": version: 29.6.4 resolution: "jest-circus@npm:29.6.4" @@ -3488,33 +3186,6 @@ __metadata: languageName: node linkType: hard -"jest-cli@npm:^29.6.2": - version: 29.6.3 - resolution: "jest-cli@npm:29.6.3" - dependencies: - "@jest/core": ^29.6.3 - "@jest/test-result": ^29.6.3 - "@jest/types": ^29.6.3 - chalk: ^4.0.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - import-local: ^3.0.2 - jest-config: ^29.6.3 - jest-util: ^29.6.3 - jest-validate: ^29.6.3 - prompts: ^2.0.1 - yargs: ^17.3.1 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 69c422f1522b25756afb5a27b4b01a710d0f5ba52c592903b1ab47103ee2414ac9a9fff36a976092bb595980ba5c45f128e33b5d6ebc666c8a6973474bbf1443 - languageName: node - linkType: hard - "jest-cli@npm:^29.6.4": version: 29.6.4 resolution: "jest-cli@npm:29.6.4" @@ -3542,44 +3213,6 @@ __metadata: languageName: node linkType: hard -"jest-config@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-config@npm:29.6.3" - dependencies: - "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.6.3 - "@jest/types": ^29.6.3 - babel-jest: ^29.6.3 - chalk: ^4.0.0 - ci-info: ^3.2.0 - deepmerge: ^4.2.2 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-circus: ^29.6.3 - jest-environment-node: ^29.6.3 - jest-get-type: ^29.6.3 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.6.3 - jest-runner: ^29.6.3 - jest-util: ^29.6.3 - jest-validate: ^29.6.3 - micromatch: ^4.0.4 - parse-json: ^5.2.0 - pretty-format: ^29.6.3 - slash: ^3.0.0 - strip-json-comments: ^3.1.1 - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - checksum: c3505411b89e5d046fbd294bb6e9ccc8c64a7efcf9d546450bec25512db4cbb67c8d102e4a58fa8ef8eac73052d1259533d9012b483469581ad5ed4cc5faa39f - languageName: node - linkType: hard - "jest-config@npm:^29.6.4": version: 29.6.4 resolution: "jest-config@npm:29.6.4" @@ -3618,18 +3251,6 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-diff@npm:29.6.3" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.6.3 - jest-get-type: ^29.6.3 - pretty-format: ^29.6.3 - checksum: 23b0a88efeab36566386f059f3da340754d2860969cbc34805154e2377714e37e3130e21a791fc68008fb460bbf5edd7ec43c16d96d15797b32ccfae5160fe37 - languageName: node - linkType: hard - "jest-diff@npm:^29.6.4": version: 29.6.4 resolution: "jest-diff@npm:29.6.4" @@ -3664,20 +3285,6 @@ __metadata: languageName: node linkType: hard -"jest-environment-node@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-environment-node@npm:29.6.3" - dependencies: - "@jest/environment": ^29.6.3 - "@jest/fake-timers": ^29.6.3 - "@jest/types": ^29.6.3 - "@types/node": "*" - jest-mock: ^29.6.3 - jest-util: ^29.6.3 - checksum: c215d8d94d95ba0353677c8b6c7c46d3f612bfd6becafa90e842ab99cb4ba2243c7f0309f1518ea2879820d39c0f3ec0d678e9ebb41055ed6eedbeb123f2897c - languageName: node - linkType: hard - "jest-environment-node@npm:^29.6.4": version: 29.6.4 resolution: "jest-environment-node@npm:29.6.4" @@ -3699,29 +3306,6 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-haste-map@npm:29.6.3" - dependencies: - "@jest/types": ^29.6.3 - "@types/graceful-fs": ^4.1.3 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.3.2 - graceful-fs: ^4.2.9 - jest-regex-util: ^29.6.3 - jest-util: ^29.6.3 - jest-worker: ^29.6.3 - micromatch: ^4.0.4 - walker: ^1.0.8 - dependenciesMeta: - fsevents: - optional: true - checksum: d72b81442cf54c5962009502b4001e53b7e40ecd1717bb5d17d5b0badc89cf5529b8be5d2804442d25ee6a70809de150e554b074029170b0e86a32b7560ce430 - languageName: node - linkType: hard - "jest-haste-map@npm:^29.6.4": version: 29.6.4 resolution: "jest-haste-map@npm:29.6.4" @@ -3755,18 +3339,6 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-matcher-utils@npm:29.6.3" - dependencies: - chalk: ^4.0.0 - jest-diff: ^29.6.3 - jest-get-type: ^29.6.3 - pretty-format: ^29.6.3 - checksum: d4965d5cc079799bc0a9075daea7a964768d4db55f0388ef879642215399c955ae9a22c967496813c908763b487f97e40701a1eb4ed5b0b7529c447b6d33e652 - languageName: node - linkType: hard - "jest-matcher-utils@npm:^29.6.4": version: 29.6.4 resolution: "jest-matcher-utils@npm:29.6.4" @@ -3779,23 +3351,6 @@ __metadata: languageName: node linkType: hard -"jest-message-util@npm:^29.4.1": - version: 29.4.1 - resolution: "jest-message-util@npm:29.4.1" - dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.3 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.6.3 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: 59f5229a06c073a8877ba4d2e304cc07d63b0062bf5764d4bed14364403889e77f1825d1bd9017c19a840847d17dffd414dc06f1fcb537b5f9e03dbc65b84ada - languageName: node - linkType: hard - "jest-message-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-message-util@npm:29.6.3" @@ -3843,16 +3398,6 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-resolve-dependencies@npm:29.6.3" - dependencies: - jest-regex-util: ^29.6.3 - jest-snapshot: ^29.6.3 - checksum: db0e57158cc085926f1e0dd63919cc78b87dc7e5644cd40f6b4b0bdcc228f3872b5520477db9a67889f4bcf658c5b85303fef89eee1df60d02a662c356021c2f - languageName: node - linkType: hard - "jest-resolve-dependencies@npm:^29.6.4": version: 29.6.4 resolution: "jest-resolve-dependencies@npm:29.6.4" @@ -3863,23 +3408,6 @@ __metadata: languageName: node linkType: hard -"jest-resolve@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-resolve@npm:29.6.3" - dependencies: - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.3 - jest-pnp-resolver: ^1.2.2 - jest-util: ^29.6.3 - jest-validate: ^29.6.3 - resolve: ^1.20.0 - resolve.exports: ^2.0.0 - slash: ^3.0.0 - checksum: 94594aab55b957e4f13fec248a18c99a6d8eb4842aa33ea5ef77179604df206d3fff1c59393a8984f179d0a7c6b98322d260b356076cdc2e74f2ebf1d9fba74a - languageName: node - linkType: hard - "jest-resolve@npm:^29.6.4": version: 29.6.4 resolution: "jest-resolve@npm:29.6.4" @@ -3897,35 +3425,6 @@ __metadata: languageName: node linkType: hard -"jest-runner@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-runner@npm:29.6.3" - dependencies: - "@jest/console": ^29.6.3 - "@jest/environment": ^29.6.3 - "@jest/test-result": ^29.6.3 - "@jest/transform": ^29.6.3 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - emittery: ^0.13.1 - graceful-fs: ^4.2.9 - jest-docblock: ^29.6.3 - jest-environment-node: ^29.6.3 - jest-haste-map: ^29.6.3 - jest-leak-detector: ^29.6.3 - jest-message-util: ^29.6.3 - jest-resolve: ^29.6.3 - jest-runtime: ^29.6.3 - jest-util: ^29.6.3 - jest-watcher: ^29.6.3 - jest-worker: ^29.6.3 - p-limit: ^3.1.0 - source-map-support: 0.5.13 - checksum: 9f10100f1a558ec78d24e131494d9b3736633f788f3edcd30dbce7257c0cee6f62fec08ab99dbb684ddcc7dbb5ca846711b140ca6090a9547c5900a0e3da53f8 - languageName: node - linkType: hard - "jest-runner@npm:^29.6.4": version: 29.6.4 resolution: "jest-runner@npm:29.6.4" @@ -3955,36 +3454,6 @@ __metadata: languageName: node linkType: hard -"jest-runtime@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-runtime@npm:29.6.3" - dependencies: - "@jest/environment": ^29.6.3 - "@jest/fake-timers": ^29.6.3 - "@jest/globals": ^29.6.3 - "@jest/source-map": ^29.6.3 - "@jest/test-result": ^29.6.3 - "@jest/transform": ^29.6.3 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - cjs-module-lexer: ^1.0.0 - collect-v8-coverage: ^1.0.0 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.3 - jest-message-util: ^29.6.3 - jest-mock: ^29.6.3 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.6.3 - jest-snapshot: ^29.6.3 - jest-util: ^29.6.3 - slash: ^3.0.0 - strip-bom: ^4.0.0 - checksum: 8743c61a2354dbce87282bfcbc11049f7d30d25ecd5f475ce56c1b7d926debb21b04db284d4d65a14283893a696442c66e923b35742fb02cc9f940a0a41ca49e - languageName: node - linkType: hard - "jest-runtime@npm:^29.6.4": version: 29.6.4 resolution: "jest-runtime@npm:29.6.4" @@ -4015,34 +3484,6 @@ __metadata: languageName: node linkType: hard -"jest-snapshot@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-snapshot@npm:29.6.3" - dependencies: - "@babel/core": ^7.11.6 - "@babel/generator": ^7.7.2 - "@babel/plugin-syntax-jsx": ^7.7.2 - "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.6.3 - "@jest/transform": ^29.6.3 - "@jest/types": ^29.6.3 - babel-preset-current-node-syntax: ^1.0.0 - chalk: ^4.0.0 - expect: ^29.6.3 - graceful-fs: ^4.2.9 - jest-diff: ^29.6.3 - jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.6.3 - jest-message-util: ^29.6.3 - jest-util: ^29.6.3 - natural-compare: ^1.4.0 - pretty-format: ^29.6.3 - semver: ^7.5.3 - checksum: c63631d2c18adc678455b9aa6e569cb1ea227e97aaa8628e154b39c95ca626d89e88d62c82e07d66cc83a1fddda1f7153506dd0f49d3411bbbecb52272ed72f5 - languageName: node - linkType: hard - "jest-snapshot@npm:^29.6.4": version: 29.6.4 resolution: "jest-snapshot@npm:29.6.4" @@ -4099,22 +3540,6 @@ __metadata: languageName: node linkType: hard -"jest-watcher@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-watcher@npm:29.6.3" - dependencies: - "@jest/test-result": ^29.6.3 - "@jest/types": ^29.6.3 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - emittery: ^0.13.1 - jest-util: ^29.6.3 - string-length: ^4.0.1 - checksum: d31ab2076342d45959d5a7d9fdd88c0c5d52c2ea6fb3b1eabe7f8c28177d90355331beb4d844e171ed9e0341a2da901b7eefaa122505ba0f0ac88e58d29b3374 - languageName: node - linkType: hard - "jest-watcher@npm:^29.6.4": version: 29.6.4 resolution: "jest-watcher@npm:29.6.4" @@ -4131,18 +3556,6 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-worker@npm:29.6.3" - dependencies: - "@types/node": "*" - jest-util: ^29.6.3 - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 8ffb24a2d4c70ed3032034a2601defccc19353d854d89459f58793c6c8f170f88038c6722073c8047c5734c8ec8d4902ebc955f4f7acb433c2499adf616388fc - languageName: node - linkType: hard - "jest-worker@npm:^29.6.4": version: 29.6.4 resolution: "jest-worker@npm:29.6.4" @@ -4228,7 +3641,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.2": +"json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -4927,19 +4340,19 @@ __metadata: languageName: node linkType: hard -"pac-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "pac-proxy-agent@npm:7.0.0" +"pac-proxy-agent@npm:^7.0.1": + version: 7.0.1 + resolution: "pac-proxy-agent@npm:7.0.1" dependencies: "@tootallnate/quickjs-emscripten": ^0.23.0 agent-base: ^7.0.2 debug: ^4.3.4 get-uri: ^6.0.1 http-proxy-agent: ^7.0.0 - https-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.2 pac-resolver: ^7.0.0 - socks-proxy-agent: ^8.0.1 - checksum: 45fe10ae58b1700d5419a9e5b525fb261b866ed6a65c1382fe45c3d5af9f81d9a58250d407941a363b1955e0315f3d97e02a2f20e4c7e2ba793bd46585db7ec8 + socks-proxy-agent: ^8.0.2 + checksum: 3d4aa48ec1c19db10158ecc1c4c9a9f77792294412d225ceb3dfa45d5a06950dca9755e2db0d9b69f12769119bea0adf2b24390d9c73c8d81df75e28245ae451 languageName: node linkType: hard @@ -5180,17 +4593,6 @@ __metadata: linkType: hard "pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.3": - version: 29.6.3 - resolution: "pretty-format@npm:29.6.3" - dependencies: - "@jest/schemas": ^29.6.3 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: bcc8e86bcf8e7f5106c96e2ea7905912bd17ae2aac76e4e0745d2a50df4b340638ed95090ee455a1c0f78189efa05077bd655ca08bf66292e83ebd7035fc46fd - languageName: node - linkType: hard - -"pretty-format@npm:^29.6.3": version: 29.6.3 resolution: "pretty-format@npm:29.6.3" dependencies: @@ -5201,13 +4603,6 @@ __metadata: languageName: node linkType: hard -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 - languageName: node - linkType: hard - "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -5248,18 +4643,18 @@ __metadata: linkType: hard "proxy-agent@npm:~6.3.0": - version: 6.3.0 - resolution: "proxy-agent@npm:6.3.0" + version: 6.3.1 + resolution: "proxy-agent@npm:6.3.1" dependencies: agent-base: ^7.0.2 debug: ^4.3.4 http-proxy-agent: ^7.0.0 - https-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.2 lru-cache: ^7.14.1 - pac-proxy-agent: ^7.0.0 + pac-proxy-agent: ^7.0.1 proxy-from-env: ^1.1.0 - socks-proxy-agent: ^8.0.1 - checksum: e3fb0633d665e352ed4efe23ae5616b8301423dfa4ff1c5975d093da8a636181a97391f7a91c6a7ffae17c1a305df855e95507f73bcdafda8876198c64b88f5b + socks-proxy-agent: ^8.0.2 + checksum: 31030da419da31809340ac2521090c9a5bf4fe47a944843f829b3502883208c8586a468955e64b694140a41d70af6f45cf4793f5efd4a6f3ed94e5ac8023e36d languageName: node linkType: hard @@ -5271,9 +4666,9 @@ __metadata: linkType: hard "pure-rand@npm:^6.0.0": - version: 6.0.2 - resolution: "pure-rand@npm:6.0.2" - checksum: 79de33876a4f515d759c48e98d00756bbd916b4ea260cc572d7adfa4b62cace9952e89f0241d0410214554503d25061140fe325c66f845213d2b1728ba8d413e + version: 6.0.3 + resolution: "pure-rand@npm:6.0.3" + checksum: d08701cfd1528c5f9cdca996776c498c92767722561f9b8f9e62645d5025c8a3bf60b90f76f262aaab124e6bb1d58e1b0850722dbca2846a19b708801956e56b languageName: node linkType: hard @@ -5492,17 +4887,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.2, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4": - version: 7.5.4 - resolution: "semver@npm:7.5.4" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 - languageName: node - linkType: hard - "semver@npm:^7.2, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:~7.5.0": version: 7.5.4 resolution: "semver@npm:7.5.4" @@ -5641,14 +5025,14 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.1": - version: 8.0.1 - resolution: "socks-proxy-agent@npm:8.0.1" +"socks-proxy-agent@npm:^8.0.2": + version: 8.0.2 + resolution: "socks-proxy-agent@npm:8.0.2" dependencies: - agent-base: ^7.0.1 + agent-base: ^7.0.2 debug: ^4.3.4 socks: ^2.7.1 - checksum: f6538fd16cb545094d20b9a1ae97bb2c4ddd150622ad7cc6b64c89c889d8847b7bac179757838ce5487cbac49a499537e3991c975fe13b152b76b10027470dfb + checksum: 4fb165df08f1f380881dcd887b3cdfdc1aba3797c76c1e9f51d29048be6e494c5b06d68e7aea2e23df4572428f27a3ec22b3d7c75c570c5346507433899a4b6d languageName: node linkType: hard @@ -5843,8 +5227,8 @@ __metadata: linkType: hard "systeminformation@npm:^5.7": - version: 5.18.15 - resolution: "systeminformation@npm:5.18.15" + version: 5.21.4 + resolution: "systeminformation@npm:5.21.4" bin: systeminformation: lib/cli.js conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) @@ -5852,8 +5236,8 @@ __metadata: linkType: hard "tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.15 - resolution: "tar@npm:6.1.15" + version: 6.2.0 + resolution: "tar@npm:6.2.0" dependencies: chownr: ^2.0.0 fs-minipass: ^2.0.0 @@ -5861,7 +5245,7 @@ __metadata: minizlib: ^2.1.1 mkdirp: ^1.0.3 yallist: ^4.0.0 - checksum: f23832fceeba7578bf31907aac744ae21e74a66f4a17a9e94507acf460e48f6db598c7023882db33bab75b80e027c21f276d405e4a0322d58f51c7088d428268 + checksum: db4d9fe74a2082c3a5016630092c54c8375ff3b280186938cfd104f2e089c4fd9bad58688ef6be9cf186a889671bf355c7cda38f09bbf60604b281715ca57f5c languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index d3d9902c74d..6e84da5787d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,17 +35,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.10, @babel/code-frame@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/code-frame@npm:7.22.10" - dependencies: - "@babel/highlight": ^7.22.10 - chalk: ^2.4.2 - checksum: 89a06534ad19759da6203a71bad120b1d7b2ddc016c8e07d4c56b35dea25e7396c6da60a754e8532a86733092b131ae7f661dbe6ba5d165ea777555daa2ed3c9 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.22.13": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.13": version: 7.22.13 resolution: "@babel/code-frame@npm:7.22.13" dependencies: @@ -62,7 +52,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:7.22.17": +"@babel/core@npm:7.22.17, @babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": version: 7.22.17 resolution: "@babel/core@npm:7.22.17" dependencies: @@ -85,29 +75,6 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": - version: 7.22.11 - resolution: "@babel/core@npm:7.22.11" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.10 - "@babel/generator": ^7.22.10 - "@babel/helper-compilation-targets": ^7.22.10 - "@babel/helper-module-transforms": ^7.22.9 - "@babel/helpers": ^7.22.11 - "@babel/parser": ^7.22.11 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.11 - "@babel/types": ^7.22.11 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.3 - semver: ^6.3.1 - checksum: f258b2539ea2e5bfe55a708c2f3e1093a1b4744f12becc35abeb896037b66210de9a8ad6296a706046d5dc3a24e564362b73a9b814e5bfe500c8baab60c22d2e - languageName: node - linkType: hard - "@babel/eslint-parser@npm:7.22.15": version: 7.22.15 resolution: "@babel/eslint-parser@npm:7.22.15" @@ -122,19 +89,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.22.10, @babel/generator@npm:^7.7.2": - version: 7.22.10 - resolution: "@babel/generator@npm:7.22.10" - dependencies: - "@babel/types": ^7.22.10 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 59a79730abdff9070692834bd3af179e7a9413fa2ff7f83dff3eb888765aeaeb2bfc7b0238a49613ed56e1af05956eff303cc139f2407eda8df974813e486074 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.22.15": +"@babel/generator@npm:^7.22.15, @babel/generator@npm:^7.7.2": version: 7.22.15 resolution: "@babel/generator@npm:7.22.15" dependencies: @@ -156,28 +111,15 @@ __metadata: linkType: hard "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.5": - version: 7.22.10 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.10" - dependencies: - "@babel/types": ^7.22.10 - checksum: 6de4a1f30e6244f9a1efdfcbe89df39923df3d165be606da5ad11319f8a11c12c72c60d9dc5fb696363281e2d6f741444c1af51f525fc7cf1d2a90fe23370bd9 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.22.10, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.10 - resolution: "@babel/helper-compilation-targets@npm:7.22.10" + version: 7.22.15 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-validator-option": ^7.22.5 - browserslist: ^4.21.9 - lru-cache: ^5.1.1 - semver: ^6.3.1 - checksum: f6f1896816392bcff671bbe6e277307729aee53befb4a66ea126e2a91eda78d819a70d06fa384c74ef46c1595544b94dca50bef6c78438d9ffd31776dafbd435 + "@babel/types": ^7.22.15 + checksum: 639c697a1c729f9fafa2dd4c9af2e18568190299b5907bd4c2d0bc818fcbd1e83ffeecc2af24327a7faa7ac4c34edd9d7940510a5e66296c19bad17001cf5c7a languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.15": +"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": version: 7.22.15 resolution: "@babel/helper-compilation-targets@npm:7.22.15" dependencies: @@ -190,26 +132,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.22.11, @babel/helper-create-class-features-plugin@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.11" - dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-member-expression-to-functions": ^7.22.5 - "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: b7aeb22e29aba5327616328576363522b3b186918faeda605e300822af4a5f29416eb34b5bd825d07ab496550e271d02d7634f0022a62b5b8cbf0eb6389bc3fa - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.22.15": +"@babel/helper-create-class-features-plugin@npm:^7.22.11, @babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.22.5": version: 7.22.15 resolution: "@babel/helper-create-class-features-plugin@npm:7.22.15" dependencies: @@ -229,15 +152,15 @@ __metadata: linkType: hard "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": - version: 7.22.9 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.9" + version: 7.22.15 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 regexpu-core: ^5.3.1 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 87cb48a7ee898ab205374274364c3adc70b87b08c7bd07f51019ae4562c0170d7148e654d591f825dee14b5fe11666a0e7966872dfdbfa0d1b94b861ecf0e4e1 + checksum: 0243b8d4854f1dc8861b1029a46d3f6393ad72f366a5a08e36a4648aa682044f06da4c6e87a456260e1e1b33c999f898ba591a0760842c1387bcc93fbf2151a6 languageName: node linkType: hard @@ -282,7 +205,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.22.15": +"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.22.5": version: 7.22.15 resolution: "@babel/helper-member-expression-to-functions@npm:7.22.15" dependencies: @@ -291,25 +214,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-member-expression-to-functions@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: 4bd5791529c280c00743e8bdc669ef0d4cd1620d6e3d35e0d42b862f8262bc2364973e5968007f960780344c539a4b9cf92ab41f5b4f94560a9620f536de2a39 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-module-imports@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: 9ac2b0404fa38b80bdf2653fbeaf8e8a43ccb41bd505f9741d820ed95d3c4e037c62a1bcdcb6c9527d7798d2e595924c4d025daed73283badc180ada2c9c49ad - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.22.15": +"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.22.5": version: 7.22.15 resolution: "@babel/helper-module-imports@npm:7.22.15" dependencies: @@ -318,22 +223,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helper-module-transforms@npm:7.22.15" - dependencies: - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-module-imports": ^7.22.15 - "@babel/helper-simple-access": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.15 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: de571fa352331bb5d5d56e95239c2e5dd79a1454e5167f3d80820d4975ee95052f8198e9fc1310015c55a0407b7566f8ca9d86cf262046884847aa24f8139bca - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.22.17": +"@babel/helper-module-transforms@npm:^7.22.15, @babel/helper-module-transforms@npm:^7.22.17, @babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": version: 7.22.17 resolution: "@babel/helper-module-transforms@npm:7.22.17" dependencies: @@ -348,21 +238,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-module-transforms@npm:7.22.9" - dependencies: - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-module-imports": ^7.22.5 - "@babel/helper-simple-access": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 2751f77660518cf4ff027514d6f4794f04598c6393be7b04b8e46c6e21606e11c19f3f57ab6129a9c21bacdf8b3ffe3af87bb401d972f34af2d0ffde02ac3001 - languageName: node - linkType: hard - "@babel/helper-optimise-call-expression@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" @@ -380,15 +255,15 @@ __metadata: linkType: hard "@babel/helper-remap-async-to-generator@npm:^7.22.5, @babel/helper-remap-async-to-generator@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.22.9" + version: 7.22.17 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.17" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-wrap-function": ^7.22.9 + "@babel/helper-wrap-function": ^7.22.17 peerDependencies: "@babel/core": ^7.0.0 - checksum: 05538079447829b13512157491cc77f9cf1ea7e1680e15cff0682c3ed9ee162de0c4862ece20a6d6b2df28177a1520bcfe45993fbeccf2747a81795a7c3f6290 + checksum: 59307e623d00b6f5fa7f974e29081b2243e3f7bc3a89df331e8c1f8815d83f97bd092404a28b8bef5299028e3259450b5a943f34e1b32c7c55350436d218ab13 languageName: node linkType: hard @@ -439,20 +314,13 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.15": +"@babel/helper-validator-identifier@npm:^7.22.15, @babel/helper-validator-identifier@npm:^7.22.5": version: 7.22.15 resolution: "@babel/helper-validator-identifier@npm:7.22.15" checksum: eb0bee4bda664c0959924bc1ad5611eacfce806f46612202dd164fef1df8fef1a11682a1e7615288987100e9fb304982b6e2a4ff07ffe842ab8765b95ed1118c languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-identifier@npm:7.22.5" - checksum: 7f0f30113474a28298c12161763b49de5018732290ca4de13cdaefd4fd0d635a6fe3f6686c37a02905fb1e64f21a5ee2b55140cf7b070e729f1bd66866506aea - languageName: node - linkType: hard - "@babel/helper-validator-option@npm:^7.22.15": version: 7.22.15 resolution: "@babel/helper-validator-option@npm:7.22.15" @@ -460,32 +328,14 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-option@npm:7.22.5" - checksum: bbeca8a85ee86990215c0424997438b388b8d642d69b9f86c375a174d3cdeb270efafd1ff128bc7a1d370923d13b6e45829ba8581c027620e83e3a80c5c414b3 - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.22.9": - version: 7.22.10 - resolution: "@babel/helper-wrap-function@npm:7.22.10" +"@babel/helper-wrap-function@npm:^7.22.17": + version: 7.22.17 + resolution: "@babel/helper-wrap-function@npm:7.22.17" dependencies: "@babel/helper-function-name": ^7.22.5 - "@babel/template": ^7.22.5 - "@babel/types": ^7.22.10 - checksum: 854bd85fc1de1d4c633f04aa1f5b6b022fbc013b47d012b6a11a7a9125a1f4a2a4f13a3e0d7a7056fe7eda8a9ecd1ea3daf8af685685a2d1b16578768cfdd28f - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/helpers@npm:7.22.11" - dependencies: - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.11 - "@babel/types": ^7.22.11 - checksum: 93186544228b5e371486466ec3b86a77cce91beeff24a5670ca8ec46d50328f7700dab82d532351286e9d68624dc51d6d71589b051dd9535e44be077a43ec013 + "@babel/template": ^7.22.15 + "@babel/types": ^7.22.17 + checksum: 95328b508049b6edd9cadd2ac89b4d4812ebdfa54a2ae77791939d795d88d561b31fd3669eea5d13558372cf2422eda05177d7f742690b5023c712bc3f0aec8e languageName: node linkType: hard @@ -500,17 +350,6 @@ __metadata: languageName: node linkType: hard -"@babel/highlight@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/highlight@npm:7.22.10" - dependencies: - "@babel/helper-validator-identifier": ^7.22.5 - chalk: ^2.4.2 - js-tokens: ^4.0.0 - checksum: f714a1e1a72dd9d72f6383f4f30fd342e21a8df32d984a4ea8f5eab691bb6ba6db2f8823d4b4cf135d98869e7a98925b81306aa32ee3c429f8cfa52c75889e1b - languageName: node - linkType: hard - "@babel/highlight@npm:^7.22.13": version: 7.22.13 resolution: "@babel/highlight@npm:7.22.13" @@ -522,25 +361,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.11, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.9.4": - version: 7.22.11 - resolution: "@babel/parser@npm:7.22.11" - bin: - parser: ./bin/babel-parser.js - checksum: 332079ed09794d3685343e9fc39c6a12dcb6ea589119f2135952cdef2424296786bb609a33f6dfa9be271797bbf8339f1865118418ea50b32a0c701734c96664 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/parser@npm:7.22.15" - bin: - parser: ./bin/babel-parser.js - checksum: 7431c1ab445cf2b6e8acb2d7acc60d9d7c25728c7649ae16732590834002786bea10b54ab1936ae0784b0e7d080efe9fd4bf17c4534b6eb36d09c75a85253ef9 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.22.16": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16, @babel/parser@npm:^7.9.4": version: 7.22.16 resolution: "@babel/parser@npm:7.22.16" bin: @@ -560,17 +381,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 1e353a060fb2cd8f1256d28cd768f16fb02513f905b9b6d656fb0242c96c341a196fa188b27c2701506a6e27515359fbcc1a5ca7fa8b9b530cf88fbd137baefc - languageName: node - linkType: hard - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.15": version: 7.22.15 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.15" @@ -584,19 +394,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/plugin-transform-optional-chaining": ^7.22.5 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 16e7a5f3bf2f2ac0ca032a70bf0ebd7e886d84dbb712b55c0643c04c495f0f221fbcbca14b5f8f8027fa6c87a3dafae0934022ad2b409384af6c5c356495b7bd - languageName: node - linkType: hard - "@babel/plugin-proposal-decorators@npm:7.22.15": version: 7.22.15 resolution: "@babel/plugin-proposal-decorators@npm:7.22.15" @@ -875,20 +672,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.11" - dependencies: - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-remap-async-to-generator": ^7.22.9 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f11227a1d2831972a7fe28ed54a618ee251547632dc384b2f291f9d8d6aae1177a68c6bbd7709ab78275fa84e757ae795ec08061d94f6f01826f02a35ee875d4 - languageName: node - linkType: hard - "@babel/plugin-transform-async-generator-functions@npm:^7.22.15": version: 7.22.15 resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.15" @@ -927,17 +710,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/plugin-transform-block-scoping@npm:7.22.10" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b1d06f358dedcb748a57e5feea4b9285c60593fb2912b921f22898c57c552c78fe18128678c8f84dd4ea1d4e5aebede8783830b24cd63f22c30261156d78bc77 - languageName: node - linkType: hard - "@babel/plugin-transform-block-scoping@npm:^7.22.15": version: 7.22.15 resolution: "@babel/plugin-transform-block-scoping@npm:7.22.15" @@ -993,25 +765,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/plugin-transform-classes@npm:7.22.6" - dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.6 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8380e855c01033dbc7460d9acfbc1fc37c880350fa798c2de8c594ef818ade0e4c96173ec72f05f2a4549d8d37135e18cb62548352d51557b45a0fb4388d2f3f - languageName: node - linkType: hard - "@babel/plugin-transform-computed-properties@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-computed-properties@npm:7.22.5" @@ -1024,17 +777,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/plugin-transform-destructuring@npm:7.22.10" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 011707801bd0029fd4f0523d24d06fdc0cbe8c9da280d75728f76713d639c4dc976e1b56a1ba7bff25468f86867efb71c9b4cac81140adbdd0abf2324b19a8bb - languageName: node - linkType: hard - "@babel/plugin-transform-destructuring@npm:^7.22.15": version: 7.22.15 resolution: "@babel/plugin-transform-destructuring@npm:7.22.15" @@ -1116,17 +858,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-for-of@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d7b8d4db010bce7273674caa95c4e6abd909362866ce297e86a2ecaa9ae636e05d525415811db9b3c942155df7f3651d19b91dd6c41f142f7308a97c7cb06023 - languageName: node - linkType: hard - "@babel/plugin-transform-function-name@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-function-name@npm:7.22.5" @@ -1198,19 +929,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.11" - dependencies: - "@babel/helper-module-transforms": ^7.22.9 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-simple-access": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c15ad7f1234a930cab214224bb85f6b3a3f301fa1d4d15bef193e5c11c614ce369551e5cbb708fde8d3f7e1cb84b05e9798a3647a11b56c3d67580e362a712d4 - languageName: node - linkType: hard - "@babel/plugin-transform-modules-commonjs@npm:^7.22.15": version: 7.22.15 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.15" @@ -1297,21 +1015,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.11" - dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-compilation-targets": ^7.22.10 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b9c9ed8df8d6d7563eb42844d8e3e6748ba8f7568998230f7317bc49304db65828df48fc4b93bf4421772a6c9f7b389f3dd1c4e84379c17dd9ee223fb3fc5245 - languageName: node - linkType: hard - "@babel/plugin-transform-object-rest-spread@npm:^7.22.15": version: 7.22.15 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.15" @@ -1351,19 +1054,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.22.12, @babel/plugin-transform-optional-chaining@npm:^7.22.5": - version: 7.22.12 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.12" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 47065439bb721a0967cdcc83895700bb7b18b146b2ef27e43449d7b5a7130a2497afadddc42c616253858cac6732546646b9f0c581f4bb8a3d362baeb4c30bbb - languageName: node - linkType: hard - "@babel/plugin-transform-optional-chaining@npm:^7.22.15": version: 7.22.15 resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.15" @@ -1388,17 +1078,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-parameters@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b44f89cf97daf23903776ba27c2ab13b439d80d8c8a95be5c476ab65023b1e0c0e94c28d3745f3b60a58edc4e590fa0cd4287a0293e51401ca7d29a2ddb13b8e - languageName: node - linkType: hard - "@babel/plugin-transform-private-methods@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-private-methods@npm:7.22.5" @@ -1458,7 +1137,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.22.15": +"@babel/plugin-transform-react-jsx@npm:^7.22.15, @babel/plugin-transform-react-jsx@npm:^7.22.5": version: 7.22.15 resolution: "@babel/plugin-transform-react-jsx@npm:7.22.15" dependencies: @@ -1473,21 +1152,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-react-jsx@npm:7.22.5" - dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-module-imports": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-jsx": ^7.22.5 - "@babel/types": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c8f93f29f32cf79683ca2b8958fd62f38155674846ef27a7d4b6fbeb8713c37257418391731b58ff8024ec37b888bed5960e615a3f552e28245d2082e7f2a2df - languageName: node - linkType: hard - "@babel/plugin-transform-react-pure-annotations@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.22.5" @@ -1640,7 +1304,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:7.22.15": +"@babel/preset-env@npm:7.22.15, @babel/preset-env@npm:^7.11.0": version: 7.22.15 resolution: "@babel/preset-env@npm:7.22.15" dependencies: @@ -1730,96 +1394,6 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.11.0": - version: 7.22.14 - resolution: "@babel/preset-env@npm:7.22.14" - dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-compilation-targets": ^7.22.10 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-option": ^7.22.5 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.5 - "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - "@babel/plugin-syntax-import-assertions": ^7.22.5 - "@babel/plugin-syntax-import-attributes": ^7.22.5 - "@babel/plugin-syntax-import-meta": ^7.10.4 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 - "@babel/plugin-transform-arrow-functions": ^7.22.5 - "@babel/plugin-transform-async-generator-functions": ^7.22.11 - "@babel/plugin-transform-async-to-generator": ^7.22.5 - "@babel/plugin-transform-block-scoped-functions": ^7.22.5 - "@babel/plugin-transform-block-scoping": ^7.22.10 - "@babel/plugin-transform-class-properties": ^7.22.5 - "@babel/plugin-transform-class-static-block": ^7.22.11 - "@babel/plugin-transform-classes": ^7.22.6 - "@babel/plugin-transform-computed-properties": ^7.22.5 - "@babel/plugin-transform-destructuring": ^7.22.10 - "@babel/plugin-transform-dotall-regex": ^7.22.5 - "@babel/plugin-transform-duplicate-keys": ^7.22.5 - "@babel/plugin-transform-dynamic-import": ^7.22.11 - "@babel/plugin-transform-exponentiation-operator": ^7.22.5 - "@babel/plugin-transform-export-namespace-from": ^7.22.11 - "@babel/plugin-transform-for-of": ^7.22.5 - "@babel/plugin-transform-function-name": ^7.22.5 - "@babel/plugin-transform-json-strings": ^7.22.11 - "@babel/plugin-transform-literals": ^7.22.5 - "@babel/plugin-transform-logical-assignment-operators": ^7.22.11 - "@babel/plugin-transform-member-expression-literals": ^7.22.5 - "@babel/plugin-transform-modules-amd": ^7.22.5 - "@babel/plugin-transform-modules-commonjs": ^7.22.11 - "@babel/plugin-transform-modules-systemjs": ^7.22.11 - "@babel/plugin-transform-modules-umd": ^7.22.5 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.22.5 - "@babel/plugin-transform-new-target": ^7.22.5 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.11 - "@babel/plugin-transform-numeric-separator": ^7.22.11 - "@babel/plugin-transform-object-rest-spread": ^7.22.11 - "@babel/plugin-transform-object-super": ^7.22.5 - "@babel/plugin-transform-optional-catch-binding": ^7.22.11 - "@babel/plugin-transform-optional-chaining": ^7.22.12 - "@babel/plugin-transform-parameters": ^7.22.5 - "@babel/plugin-transform-private-methods": ^7.22.5 - "@babel/plugin-transform-private-property-in-object": ^7.22.11 - "@babel/plugin-transform-property-literals": ^7.22.5 - "@babel/plugin-transform-regenerator": ^7.22.10 - "@babel/plugin-transform-reserved-words": ^7.22.5 - "@babel/plugin-transform-shorthand-properties": ^7.22.5 - "@babel/plugin-transform-spread": ^7.22.5 - "@babel/plugin-transform-sticky-regex": ^7.22.5 - "@babel/plugin-transform-template-literals": ^7.22.5 - "@babel/plugin-transform-typeof-symbol": ^7.22.5 - "@babel/plugin-transform-unicode-escapes": ^7.22.10 - "@babel/plugin-transform-unicode-property-regex": ^7.22.5 - "@babel/plugin-transform-unicode-regex": ^7.22.5 - "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 - "@babel/preset-modules": 0.1.6-no-external-plugins - "@babel/types": ^7.22.11 - babel-plugin-polyfill-corejs2: ^0.4.5 - babel-plugin-polyfill-corejs3: ^0.8.3 - babel-plugin-polyfill-regenerator: ^0.5.2 - core-js-compat: ^3.31.0 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a62b5717a86c41ab675ac0f4d46ff504088fb2cce2011aa36508453d2235a3ecf1f6d127aa57962310fcce4ec18bad840ccd09987a78c57e4d1b4339cedeaacd - languageName: node - linkType: hard - "@babel/preset-modules@npm:0.1.6-no-external-plugins": version: 0.1.6-no-external-plugins resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" @@ -1860,85 +1434,38 @@ __metadata: "@babel/plugin-transform-typescript": ^7.22.15 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 02ac4d5c812a52357c8f517f81584725f06f385d54ccfda89dd082e0ed89a94bd9f4d9b05fa1cbdcf426e3489c1921f04c93c5acc5deea83407a64c22ad2feb4 - languageName: node - linkType: hard - -"@babel/regjsgen@npm:^0.8.0": - version: 0.8.0 - resolution: "@babel/regjsgen@npm:0.8.0" - checksum: 89c338fee774770e5a487382170711014d49a68eb281e74f2b5eac88f38300a4ad545516a7786a8dd5702e9cf009c94c2f582d200f077ac5decd74c56b973730 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.22.10 - resolution: "@babel/runtime@npm:7.22.10" - dependencies: - regenerator-runtime: ^0.14.0 - checksum: 524d41517e68953dbc73a4f3616b8475e5813f64e28ba89ff5fca2c044d535c2ea1a3f310df1e5bb06162e1f0b401b5c4af73fe6e2519ca2450d9d8c44cf268d - languageName: node - linkType: hard - -"@babel/template@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/template@npm:7.22.15" - dependencies: - "@babel/code-frame": ^7.22.13 - "@babel/parser": ^7.22.15 - "@babel/types": ^7.22.15 - checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd + checksum: 02ac4d5c812a52357c8f517f81584725f06f385d54ccfda89dd082e0ed89a94bd9f4d9b05fa1cbdcf426e3489c1921f04c93c5acc5deea83407a64c22ad2feb4 languageName: node linkType: hard -"@babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3, @babel/template@npm:^7.4.4": - version: 7.22.5 - resolution: "@babel/template@npm:7.22.5" - dependencies: - "@babel/code-frame": ^7.22.5 - "@babel/parser": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: c5746410164039aca61829cdb42e9a55410f43cace6f51ca443313f3d0bdfa9a5a330d0b0df73dc17ef885c72104234ae05efede37c1cc8a72dc9f93425977a3 +"@babel/regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "@babel/regjsgen@npm:0.8.0" + checksum: 89c338fee774770e5a487382170711014d49a68eb281e74f2b5eac88f38300a4ad545516a7786a8dd5702e9cf009c94c2f582d200f077ac5decd74c56b973730 languageName: node linkType: hard -"@babel/traverse@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/traverse@npm:7.22.11" +"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": + version: 7.22.15 + resolution: "@babel/runtime@npm:7.22.15" dependencies: - "@babel/code-frame": ^7.22.10 - "@babel/generator": ^7.22.10 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.22.11 - "@babel/types": ^7.22.11 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 4ad62d548ca8b95dbf45bae16cc167428f174f3c837d55a5878b1f17bdbc8b384d6df741dc7c461b62c04d881cf25644d3ab885909ba46e3ac43224e2b15b504 + regenerator-runtime: ^0.14.0 + checksum: 793296df1e41599a935a3d77ec01eb6088410d3fd4dbe4e92f06c6b7bb2f8355024e6d78621a3a35f44e0e23b0b59107f23d585384df4f3123256a1e1492040e languageName: node linkType: hard -"@babel/traverse@npm:^7.22.15": +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3, @babel/template@npm:^7.4.4": version: 7.22.15 - resolution: "@babel/traverse@npm:7.22.15" + resolution: "@babel/template@npm:7.22.15" dependencies: "@babel/code-frame": ^7.22.13 - "@babel/generator": ^7.22.15 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 "@babel/parser": ^7.22.15 "@babel/types": ^7.22.15 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 12aba7da6fd6109905d5086e1a9d1aea2cdbb0b80533d2d235d5dad2ff97f0315173c063023e601e96086dfeaaeb97f9d3cbaf38a10f04820e47e2848607cef4 + checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd languageName: node linkType: hard -"@babel/traverse@npm:^7.22.17": +"@babel/traverse@npm:^7.22.15, @babel/traverse@npm:^7.22.17": version: 7.22.17 resolution: "@babel/traverse@npm:7.22.17" dependencies: @@ -1956,29 +1483,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.11, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.22.11 - resolution: "@babel/types@npm:7.22.11" - dependencies: - "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.5 - to-fast-properties: ^2.0.0 - checksum: 431a6446896adb62c876d0fe75263835735d3c974aae05356a87eb55f087c20a777028cf08eadcace7993e058bbafe3b21ce2119363222c6cef9eedd7a204810 - languageName: node - linkType: hard - -"@babel/types@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/types@npm:7.22.15" - dependencies: - "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.15 - to-fast-properties: ^2.0.0 - checksum: a2aa59746dc8500c358a3a9afca2adff49dbade009d616aa8308714485064f2218da04e1823f1243a4992f1424ec6d6719e76a7af9a0ac3647227dca3015eea4 - languageName: node - linkType: hard - -"@babel/types@npm:^7.22.17": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.17, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.22.17 resolution: "@babel/types@npm:7.22.17" dependencies: @@ -3021,9 +2526,9 @@ __metadata: linkType: hard "@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.7.0 - resolution: "@eslint-community/regexpp@npm:4.7.0" - checksum: 09b8d11a9957b58be870d76e36b718030ba2215e1fb9d009f7a0833733c86b47d8528c47808eeef389145ca198abc3ea4d169452840e36142ecfb9491e3a1d16 + version: 4.8.0 + resolution: "@eslint-community/regexpp@npm:4.8.0" + checksum: 601e6d033d556e98e8c929905bef335f20d7389762812df4d0f709d9b4d2631610dda975fb272e23b5b68e24a163b3851b114c8080a0a19fb4c141a1eff6305b languageName: node linkType: hard @@ -3044,13 +2549,6 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.48.0": - version: 8.48.0 - resolution: "@eslint/js@npm:8.48.0" - checksum: b2755f9c0ee810c886eba3c50dcacb184ba5a5cd1cbc01988ee506ad7340653cae0bd55f1d95c64b56dfc6d25c2caa7825335ffd2c50165bae9996fe0f396851 - languageName: node - linkType: hard - "@eslint/js@npm:8.49.0": version: 8.49.0 resolution: "@eslint/js@npm:8.49.0" @@ -3075,12 +2573,12 @@ __metadata: linkType: hard "@floating-ui/dom@npm:^1.0.1": - version: 1.5.1 - resolution: "@floating-ui/dom@npm:1.5.1" + version: 1.5.2 + resolution: "@floating-ui/dom@npm:1.5.2" dependencies: "@floating-ui/core": ^1.4.1 "@floating-ui/utils": ^0.1.1 - checksum: ddb509030978536ba7b321cf8c764ae9d0142a3b1fefb7e6bc050a5de7e825e12131fa5089009edabf7c125fb274886da211a5220fe17a71d875a7a96eb1386c + checksum: 3c71eed50bb22cec8f1f31750ad3d42b3b7b4b29dc6e4351100ff05a62445a5404abb71c733320f8376a8c5e78852e1cfba1b81e22bfc4ca0728f50ca8998dc5 languageName: node linkType: hard @@ -3205,17 +2703,6 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.10": - version: 0.11.10 - resolution: "@humanwhocodes/config-array@npm:0.11.10" - dependencies: - "@humanwhocodes/object-schema": ^1.2.1 - debug: ^4.1.1 - minimatch: ^3.0.5 - checksum: 1b1302e2403d0e35bc43e66d67a2b36b0ad1119efc704b5faff68c41f791a052355b010fb2d27ef022670f550de24cd6d08d5ecf0821c16326b7dcd0ee5d5d8a - languageName: node - linkType: hard - "@humanwhocodes/config-array@npm:^0.11.11": version: 0.11.11 resolution: "@humanwhocodes/config-array@npm:0.11.11" @@ -4427,20 +3914,20 @@ __metadata: linkType: hard "@types/cheerio@npm:*": - version: 0.22.31 - resolution: "@types/cheerio@npm:0.22.31" + version: 0.22.32 + resolution: "@types/cheerio@npm:0.22.32" dependencies: "@types/node": "*" - checksum: 8d73d22fdd384c290514dad6f9f4a436f5a90bc836bbe9b46fe4f557041a03484f0547291d0347185a806149f465355fc225dc87477b8cf5af5be307bb75e6a4 + checksum: 5a4885e03889c19638f0086d53e653d36a9eb097d0a08ec69dddf65ef685cd7118989c4fb28d5b28746502efc54bc57a3f751ee2a9aab3cfd32991bf5b51df10 languageName: node linkType: hard "@types/color-convert@npm:*": - version: 2.0.0 - resolution: "@types/color-convert@npm:2.0.0" + version: 2.0.1 + resolution: "@types/color-convert@npm:2.0.1" dependencies: "@types/color-name": "*" - checksum: 027b68665dc2278cc2d83e796ada0a05a08aa5a11297e227c48c7f9f6eac518dec98578ab0072bd211963d3e4b431da70b20ea28d6c3136d0badfd3f9913baee + checksum: 52843d9206661d80957d15330d71f2eb8ebda4aaba72236d2d200e588ac806005a25e25f96393d81c9e61632a8316070d1136d2ff74f0a9350cf6d97291a2550 languageName: node linkType: hard @@ -4598,11 +4085,11 @@ __metadata: linkType: hard "@types/jquery@npm:^3": - version: 3.5.16 - resolution: "@types/jquery@npm:3.5.16" + version: 3.5.18 + resolution: "@types/jquery@npm:3.5.18" dependencies: "@types/sizzle": "*" - checksum: 13c995f15d1c2f1d322103dc1cb0a22b95eecc3e7546f00279b8731aea21d7ec04550af40e609ee48e755d4e11bf61c25b4aa9f53df3bcbec4b8fe8e81471732 + checksum: 6576bc9a6d35671ceb464e8f937b7eb916227b38b4edf8769a0bc628cfbb9f211b61ccd4158d42aa31591f2c6766b7095430f820d374f70245258ac6cec3e439 languageName: node linkType: hard @@ -4675,20 +4162,13 @@ __metadata: linkType: hard "@types/libsodium-wrappers@npm:*, @types/libsodium-wrappers@npm:^0": - version: 0.7.10 - resolution: "@types/libsodium-wrappers@npm:0.7.10" - checksum: 717054ebcb5fa553e378144b8d564bed8b691905c0d4e90b95c64d77ba24ec9fe798cb2c58cd61dad545ceacb1f05ab69b5597217f9829f2da7a23f0688d11d0 - languageName: node - linkType: hard - -"@types/linkify-it@npm:*": - version: 3.0.2 - resolution: "@types/linkify-it@npm:3.0.2" - checksum: dff8f10fafb885422474e456596f12d518ec4cdd6c33cca7a08e7c86b912d301ed91cf5a7613e148c45a12600dc9ab3d85ad16d5b48dc1aaeda151a68f16b536 + version: 0.7.11 + resolution: "@types/libsodium-wrappers@npm:0.7.11" + checksum: e3c3acdfc178a466a04d81c030ba1b748abc9335b1d66421125eb55b32cbaf6a9076e32a98744fcb84ba2fa2af342203ff29054262dcc465c12c4feddddb64ac languageName: node linkType: hard -"@types/linkify-it@npm:3.0.3": +"@types/linkify-it@npm:*, @types/linkify-it@npm:3.0.3": version: 3.0.3 resolution: "@types/linkify-it@npm:3.0.3" checksum: a734becc4e7476833b0e6951ec133c006a34809639c722d3e28b7cf88f5f6ccbb433f195788be5e56209b1e9e6e0778879291dd2db401acee3bb585c44dcc329 @@ -4696,11 +4176,11 @@ __metadata: linkType: hard "@types/loadable__component@npm:^5": - version: 5.13.4 - resolution: "@types/loadable__component@npm:5.13.4" + version: 5.13.5 + resolution: "@types/loadable__component@npm:5.13.5" dependencies: "@types/react": "*" - checksum: a2d1c77b952eb15c45dfad841a7a0a3e4045f828e1f0ecbab997a306a56a48cd48ee12ee75bf79f59bbcff0347bbeb120106e8e66c91a38a530a028e1598b130 + checksum: 9ff5c96931bbc1eeb7ba776890ca576a3a96c8f236538ce29380d6d4b28643d14a50bac5524be0859ade3620e47ec41a68af1d9e17c2cec6d3271424b144ac21 languageName: node linkType: hard @@ -4738,10 +4218,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=13.7.0": - version: 20.5.2 - resolution: "@types/node@npm:20.5.2" - checksum: 46d032bb9a1db687693f6351702572d2f1e12face32caf8182323413918de27d4ac16cc2b15ff6b891651313e602da18edbdd095d16d2b5a26588c2edffca892 +"@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^20.6.0": + version: 20.6.0 + resolution: "@types/node@npm:20.6.0" + checksum: 52611801af5cf151c6fac1963aa4a8a8ca2e388a9e9ed82b01b70bca762088ded5b32cc789c5564220d5d7dccba2b8dd34446a3d4fc74736805e1f2cf262e29d languageName: node linkType: hard @@ -4759,17 +4239,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.6.0": - version: 20.6.0 - resolution: "@types/node@npm:20.6.0" - checksum: 52611801af5cf151c6fac1963aa4a8a8ca2e388a9e9ed82b01b70bca762088ded5b32cc789c5564220d5d7dccba2b8dd34446a3d4fc74736805e1f2cf262e29d - languageName: node - linkType: hard - "@types/node@npm:~14": - version: 14.18.54 - resolution: "@types/node@npm:14.18.54" - checksum: 9fd66f91fcd8e9b25067f784a9c60bd710ef86a89c838c131ab2b1921398adc53b1c70d741bceed48bb2403b75c434b1bbbb255240773819cde36295c4b6abf1 + version: 14.18.59 + resolution: "@types/node@npm:14.18.59" + checksum: 6a2a5a5c07b9150bad47b821deb723ab72d33beae8b7b75a10787550236e6428d547806ba3103c86918b849b790bfaef0b165650213d807792effcfb7181be10 languageName: node linkType: hard @@ -4900,9 +4373,9 @@ __metadata: linkType: hard "@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": - version: 7.5.0 - resolution: "@types/semver@npm:7.5.0" - checksum: 0a64b9b9c7424d9a467658b18dd70d1d781c2d6f033096a6e05762d20ebbad23c1b69b0083b0484722aabf35640b78ccc3de26368bcae1129c87e9df028a22e2 + version: 7.5.1 + resolution: "@types/semver@npm:7.5.1" + checksum: 2fffe938c7ac168711f245a16e1856a3578d77161ca17e29a05c3e02c7be3e9c5beefa29a3350f6c1bd982fb70aa28cc52e4845eb7d36246bcdc0377170d584d languageName: node linkType: hard @@ -4995,14 +4468,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.0.0": - version: 6.4.1 - resolution: "@typescript-eslint/eslint-plugin@npm:6.4.1" + version: 6.6.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.6.0" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.4.1 - "@typescript-eslint/type-utils": 6.4.1 - "@typescript-eslint/utils": 6.4.1 - "@typescript-eslint/visitor-keys": 6.4.1 + "@typescript-eslint/scope-manager": 6.6.0 + "@typescript-eslint/type-utils": 6.6.0 + "@typescript-eslint/utils": 6.6.0 + "@typescript-eslint/visitor-keys": 6.6.0 debug: ^4.3.4 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -5015,25 +4488,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: aa5f2f516a4ea07d1a9878d347dcb915808862f41efd3c4acd4955e616d265e051c4c93d597d30e54bee10bab9b965e2ef9cea1b497bf16f23a475d7911a8078 + checksum: ed41c6df87096706777e9c1f53adabd998fd840691b57f5b68b18903e567f16c0a8354ff0ad29229c249f29440ba4a017c9fe966da182a455dde9769232a4344 languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.0.0": - version: 6.4.1 - resolution: "@typescript-eslint/parser@npm:6.4.1" + version: 6.6.0 + resolution: "@typescript-eslint/parser@npm:6.6.0" dependencies: - "@typescript-eslint/scope-manager": 6.4.1 - "@typescript-eslint/types": 6.4.1 - "@typescript-eslint/typescript-estree": 6.4.1 - "@typescript-eslint/visitor-keys": 6.4.1 + "@typescript-eslint/scope-manager": 6.6.0 + "@typescript-eslint/types": 6.6.0 + "@typescript-eslint/typescript-estree": 6.6.0 + "@typescript-eslint/visitor-keys": 6.6.0 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: cb61c757963f2a7964c2f846087eadda044720da769d96600f9f0069fe796d612caef5d9bb0c785aa4fa95028b2d231e7c83847ce44f02b1fa41f2102d6f444c + checksum: b2d0082b6acc1a85997ebbb60fc73a43f3fe5e5028cb4130938a2cffddc94872c8e0d00a1742be8f8b755bc1994d43b55b7e4660dc88946744094ff2aca4ffd3 languageName: node linkType: hard @@ -5047,22 +4520,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.4.1": - version: 6.4.1 - resolution: "@typescript-eslint/scope-manager@npm:6.4.1" +"@typescript-eslint/scope-manager@npm:6.6.0": + version: 6.6.0 + resolution: "@typescript-eslint/scope-manager@npm:6.6.0" dependencies: - "@typescript-eslint/types": 6.4.1 - "@typescript-eslint/visitor-keys": 6.4.1 - checksum: 8f7f90aa378a19838301b31cfa58a4b0641d2b84891705c8c006c67aacb5c0d07112b714e1f0e7a159c5736779c934ec26dadef42a0711fccb635596aba391fc + "@typescript-eslint/types": 6.6.0 + "@typescript-eslint/visitor-keys": 6.6.0 + checksum: 18b552fee98894c4f35e9f3d71a276f266ad4e2d7c6b9bb32a9b25caa36cc3768928676972b4e78308098ad53fa8dc6626a82810f17d51c667ce959da3ac11bc languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.4.1": - version: 6.4.1 - resolution: "@typescript-eslint/type-utils@npm:6.4.1" +"@typescript-eslint/type-utils@npm:6.6.0": + version: 6.6.0 + resolution: "@typescript-eslint/type-utils@npm:6.6.0" dependencies: - "@typescript-eslint/typescript-estree": 6.4.1 - "@typescript-eslint/utils": 6.4.1 + "@typescript-eslint/typescript-estree": 6.6.0 + "@typescript-eslint/utils": 6.6.0 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -5070,7 +4543,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 33bcdd48bd4e07258ed1919b598d50354dd67d8f01702cd2fd46aa9250b7b7cba9caab640df01f4dc0e45dabeddbb3ca47bee88f81fe2087350ed6f70a4cbe5d + checksum: be68ebc1d8da9d4db48933cfd5c8f22382fdf1faf4116b0eb929c65eaeaf00ef224f38b03e7f6ea2de4496d046380876dd5db514c65d078ebc7a25e771a61265 languageName: node linkType: hard @@ -5081,10 +4554,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.4.1": - version: 6.4.1 - resolution: "@typescript-eslint/types@npm:6.4.1" - checksum: 16ba46140dbe426407bbb940e87fb347e7eb53b64f74e8f6a819cd662aa25ccd0c25b1e588867ce3cd36a8b4eccea7bd81f4d429595e6e86d9a24c655b1c8617 +"@typescript-eslint/types@npm:6.6.0": + version: 6.6.0 + resolution: "@typescript-eslint/types@npm:6.6.0" + checksum: d0642ad52e904062a4ac75ac4e6cc51d81ec6030f8830e230df476e69786d3232d45ca0c9ce011add9ede13f0eba4ab7f1eaf679954c6602cf4f43e1ba002be9 languageName: node linkType: hard @@ -5106,12 +4579,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.4.1": - version: 6.4.1 - resolution: "@typescript-eslint/typescript-estree@npm:6.4.1" +"@typescript-eslint/typescript-estree@npm:6.6.0": + version: 6.6.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.6.0" dependencies: - "@typescript-eslint/types": 6.4.1 - "@typescript-eslint/visitor-keys": 6.4.1 + "@typescript-eslint/types": 6.6.0 + "@typescript-eslint/visitor-keys": 6.6.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -5120,24 +4593,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 34c289e50a6337321154efe6c20c762e94fea308f9032971e356a266f63e99b908b1a00dd8cf51eba50a6f69db01d665faf2cf13454b355767fd167eebe60f1c + checksum: 100620bc5865dc9d2551c6be520a34b931bc70eca144c5ab0e275b81e57aa92f24a9d3a57f332d98b96e4581cf7e87211c3196d964f4951c7a2508105e3bd3f5 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.4.1": - version: 6.4.1 - resolution: "@typescript-eslint/utils@npm:6.4.1" +"@typescript-eslint/utils@npm:6.6.0": + version: 6.6.0 + resolution: "@typescript-eslint/utils@npm:6.6.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 "@types/json-schema": ^7.0.12 "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.4.1 - "@typescript-eslint/types": 6.4.1 - "@typescript-eslint/typescript-estree": 6.4.1 + "@typescript-eslint/scope-manager": 6.6.0 + "@typescript-eslint/types": 6.6.0 + "@typescript-eslint/typescript-estree": 6.6.0 semver: ^7.5.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 54e642a345790f912393a6f2821495e2359eff0f874a94cbe6fb3ef4411702983ed54fe88ca3ea9d28f2e93800a74dee22b7888838154bc1afd57c7e119e17ec + checksum: da02305703569549eb7deebb7512940cd40426eccec684680087a5b8c8e08052e2ff0ff6951a2ca64740e86e4b5b390903d0b13ad51efc374d9ae54f70c6a046 languageName: node linkType: hard @@ -5169,13 +4642,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.4.1": - version: 6.4.1 - resolution: "@typescript-eslint/visitor-keys@npm:6.4.1" +"@typescript-eslint/visitor-keys@npm:6.6.0": + version: 6.6.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.6.0" dependencies: - "@typescript-eslint/types": 6.4.1 + "@typescript-eslint/types": 6.6.0 eslint-visitor-keys: ^3.4.1 - checksum: bd9cd56fc793e1d880c24193f939c4992b2653f330baece41cd461d1fb48edb2c53696987cba0e29074bbb452dd181fd009db92dd19060fdcc417ad76768f18a + checksum: 28171124c5c7d5d10c04c204530508f1488214f2af5eb7e64a5f1cc410c64f02676c04be087adcfd0deb5566f5bb7337b208afcb249719614634c38bcc3da897 languageName: node linkType: hard @@ -6111,15 +5584,15 @@ __metadata: linkType: hard "array-includes@npm:^3.1.6": - version: 3.1.6 - resolution: "array-includes@npm:3.1.6" + version: 3.1.7 + resolution: "array-includes@npm:3.1.7" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - get-intrinsic: ^1.1.3 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + get-intrinsic: ^1.2.1 is-string: ^1.0.7 - checksum: f22f8cd8ba8a6448d91eebdc69f04e4e55085d09232b5216ee2d476dab3ef59984e8d1889e662c6a0ed939dcb1b57fd05b2c0209c3370942fc41b752c82a2ca5 + checksum: 06f9e4598fac12a919f7c59a3f04f010ea07f0b7f0585465ed12ef528a60e45f374e79d1bddbb34cdd4338357d00023ddbd0ac18b0be36964f5e726e8965d7fc languageName: node linkType: hard @@ -6138,66 +5611,67 @@ __metadata: linkType: hard "array.prototype.findlastindex@npm:^1.2.2": - version: 1.2.2 - resolution: "array.prototype.findlastindex@npm:1.2.2" + version: 1.2.3 + resolution: "array.prototype.findlastindex@npm:1.2.3" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 es-shim-unscopables: ^1.0.0 - get-intrinsic: ^1.1.3 - checksum: 8a166359f69a2a751c843f26b9c8cd03d0dc396a92cdcb85f4126b5f1cecdae5b2c0c616a71ea8aff026bde68165b44950b3664404bb73db0673e288495ba264 + get-intrinsic: ^1.2.1 + checksum: 31f35d7b370c84db56484618132041a9af401b338f51899c2e78ef7690fbba5909ee7ca3c59a7192085b328cc0c68c6fd1f6d1553db01a689a589ae510f3966e languageName: node linkType: hard "array.prototype.flat@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flat@npm:1.3.1" + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 es-shim-unscopables: ^1.0.0 - checksum: 5a8415949df79bf6e01afd7e8839bbde5a3581300e8ad5d8449dea52639e9e59b26a467665622783697917b43bf39940a6e621877c7dd9b3d1c1f97484b9b88b + checksum: 5d6b4bf102065fb3f43764bfff6feb3295d372ce89591e6005df3d0ce388527a9f03c909af6f2a973969a4d178ab232ffc9236654149173e0e187ec3a1a6b87b languageName: node linkType: hard "array.prototype.flatmap@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flatmap@npm:1.3.1" + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 es-shim-unscopables: ^1.0.0 - checksum: 8c1c43a4995f12cf12523436da28515184c753807b3f0bc2ca6c075f71c470b099e2090cc67dba8e5280958fea401c1d0c59e1db0143272aef6cd1103921a987 + checksum: ce09fe21dc0bcd4f30271f8144083aa8c13d4639074d6c8dc82054b847c7fc9a0c97f857491f4da19d4003e507172a78f4bcd12903098adac8b9cd374f734be3 languageName: node linkType: hard "array.prototype.tosorted@npm:^1.1.1": - version: 1.1.1 - resolution: "array.prototype.tosorted@npm:1.1.1" + version: 1.1.2 + resolution: "array.prototype.tosorted@npm:1.1.2" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 es-shim-unscopables: ^1.0.0 - get-intrinsic: ^1.1.3 - checksum: 7923324a67e70a2fc0a6e40237405d92395e45ebd76f5cb89c2a5cf1e66b47aca6baacd0cd628ffd88830b90d47fff268071493d09c9ae123645613dac2c2ca3 + get-intrinsic: ^1.2.1 + checksum: 3607a7d6b117f0ffa6f4012457b7af0d47d38cf05e01d50e09682fd2fb782a66093a5e5fbbdbad77c8c824794a9d892a51844041641f719ad41e3a974f0764de languageName: node linkType: hard "arraybuffer.prototype.slice@npm:^1.0.1": - version: 1.0.1 - resolution: "arraybuffer.prototype.slice@npm:1.0.1" + version: 1.0.2 + resolution: "arraybuffer.prototype.slice@npm:1.0.2" dependencies: array-buffer-byte-length: ^1.0.0 call-bind: ^1.0.2 define-properties: ^1.2.0 + es-abstract: ^1.22.1 get-intrinsic: ^1.2.1 is-array-buffer: ^3.0.2 is-shared-array-buffer: ^1.0.2 - checksum: e3e9b2a3e988ebfeddce4c7e8f69df730c9e48cb04b0d40ff0874ce3d86b3d1339dd520ffde5e39c02610bc172ecfbd4bc93324b1cabd9554c44a56b131ce0ce + checksum: c200faf437786f5b2c80d4564ff5481c886a16dee642ef02abdc7306c7edd523d1f01d1dd12b769c7eb42ac9bc53874510db19a92a2c035c0f6696172aafa5d3 languageName: node linkType: hard @@ -6292,9 +5766,9 @@ __metadata: linkType: hard "axe-core@npm:^4.6.2": - version: 4.7.2 - resolution: "axe-core@npm:4.7.2" - checksum: 5d86fa0f45213b0e54cbb5d713ce885c4a8fe3a72b92dd915a47aa396d6fd149c4a87fec53aa978511f6d941402256cfeb26f2db35129e370f25a453c688655a + version: 4.8.1 + resolution: "axe-core@npm:4.8.1" + checksum: 78cc7c19bd98d9fc859e9f08923d12c0023f93c9f807b2eebc2ef7b415d7c7cd0dcda914848fa5443ec4b58a9db879366186528a86e08b1c1b336ee38a029c7e languageName: node linkType: hard @@ -6814,9 +6288,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001517, caniuse-lite@npm:^1.0.30001520": - version: 1.0.30001524 - resolution: "caniuse-lite@npm:1.0.30001524" - checksum: 35d662a62f5e6be3c2d2141f1f30b3428ec72c5756cbd9fc723e33606846f28a515fd30f1e8b56e506c63fe0755f6eb7e3548dc6eefd53c5591b1a3bd28fee98 + version: 1.0.30001532 + resolution: "caniuse-lite@npm:1.0.30001532" + checksum: 613abeb15e03dde307d543195a7860f7ba7450c9c9262d45642b2c8fbe097914fa060d68c8647f9d443947b1f62b09d891858bde7d2cac94fae8133a0b518b28 languageName: node linkType: hard @@ -7322,11 +6796,11 @@ __metadata: linkType: hard "core-js-compat@npm:^3.31.0": - version: 3.32.1 - resolution: "core-js-compat@npm:3.32.1" + version: 3.32.2 + resolution: "core-js-compat@npm:3.32.2" dependencies: browserslist: ^4.21.10 - checksum: 2ce0002d6d2acabfc6f4c1ea32915683406a10051a186db354b761303cb6f5728f83887d070fb8d0072b5601bb16cb0d24555ee72bfa6df244f7b3ef74d61f76 + checksum: efca146ad71a542e6f196db5ba5aed617e48c615bdf1fbb065471b3267f833ac545bd5fc5ad0642c3d3974b955f0684ff0863d7471d7050ee0284e0a1313942e languageName: node linkType: hard @@ -7387,14 +6861,19 @@ __metadata: linkType: hard "cosmiconfig@npm:^8.2.0": - version: 8.2.0 - resolution: "cosmiconfig@npm:8.2.0" + version: 8.3.5 + resolution: "cosmiconfig@npm:8.3.5" dependencies: - import-fresh: ^3.2.1 + import-fresh: ^3.3.0 js-yaml: ^4.1.0 - parse-json: ^5.0.0 + parse-json: ^5.2.0 path-type: ^4.0.0 - checksum: 836d5d8efa750f3fb17b03d6ca74cd3154ed025dffd045304b3ef59637f662bde1e5dc88f8830080d180ec60841719cf4ea2ce73fb21ec694b16865c478ff297 + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: c6e44bb3cabf268b70049e7bd4ee8ecf00068854e53cbc32f9104794927ef406817f9e64e1c4949bd10776b604c01f7b50674336fcd2d5b9efc4cf8277fdf025 languageName: node linkType: hard @@ -7738,9 +7217,9 @@ __metadata: linkType: hard "cssdb@npm:^7.7.1": - version: 7.7.1 - resolution: "cssdb@npm:7.7.1" - checksum: 61e3094a3c5cc94c6965ddd1b91af3383f6fb24fe96945e44954c548612a24a06713fe384e4da5efcd37e6383e534e6193aedcac9f2441b207d3c04dcc1aabf7 + version: 7.7.2 + resolution: "cssdb@npm:7.7.2" + checksum: 74a8b46fc694b8576686dde6acbf0a28b07a1a1ff01b24c0c3de12e4680f2124d4beb3367b97ec309938d32306e1806fe5e209f8c899f120349cdfb5d327b727 languageName: node linkType: hard @@ -8342,9 +7821,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.477": - version: 1.4.498 - resolution: "electron-to-chromium@npm:1.4.498" - checksum: 01962ae42e9097c321cb6ff63ca97dfd36457050727893d1768e6eb1b7d5a48ece568b94b1128fd0211f7ce3a31aca0c17eb72b1292d9b5ef7b0664d90dfe3aa + version: 1.4.513 + resolution: "electron-to-chromium@npm:1.4.513" + checksum: 613b66da177dcf5abca2441c502cde4b4fb247665dc049c54d1fe3b79fc3a5a3ecae92faf97d3147af0fec9c50bf90db09e8ca3f0953a5ec2fdb472d6d6253c2 languageName: node linkType: hard @@ -8356,13 +7835,13 @@ __metadata: linkType: hard "emoji-picker-react@npm:^4.5.0": - version: 4.5.0 - resolution: "emoji-picker-react@npm:4.5.0" + version: 4.5.1 + resolution: "emoji-picker-react@npm:4.5.1" dependencies: clsx: ^1.2.1 peerDependencies: react: ">=16" - checksum: 8428d0738c89b38937c6f372862f69445e0d985541cf3b58c9f84e4422f45039ec32635ebfd46fd01b818c82254ed9248000cd6a88b050d5b8d42e3d216aee16 + checksum: aa34bbf11772d7b15831b33a2340743f5e4f4984925d04576cff7a9e9c927c94a2e890f76de3099e6c6a072a780c04b2ceb2db1f076e8183a2fb77b86e845524 languageName: node linkType: hard @@ -8501,7 +7980,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4, es-abstract@npm:^1.21.2, es-abstract@npm:^1.21.3": +"es-abstract@npm:^1.22.1": version: 1.22.1 resolution: "es-abstract@npm:1.22.1" dependencies: @@ -8566,13 +8045,13 @@ __metadata: linkType: hard "es-iterator-helpers@npm:^1.0.12": - version: 1.0.13 - resolution: "es-iterator-helpers@npm:1.0.13" + version: 1.0.14 + resolution: "es-iterator-helpers@npm:1.0.14" dependencies: asynciterator.prototype: ^1.0.0 call-bind: ^1.0.2 define-properties: ^1.2.0 - es-abstract: ^1.21.3 + es-abstract: ^1.22.1 es-set-tostringtag: ^2.0.1 function-bind: ^1.1.1 get-intrinsic: ^1.2.1 @@ -8583,14 +8062,14 @@ __metadata: internal-slot: ^1.0.5 iterator.prototype: ^1.1.0 safe-array-concat: ^1.0.0 - checksum: 1b08ae7388439121fee1129cb23497abd7bf23dd440f7fa44d119c9f92f38f9b7d75b7d98453fcd15948a7eb58abb2a48c673c7250d2e15871abe3641f567ed7 + checksum: 484ca398389d5e259855e2d848573233985a7e7a4126c5de62c8a554174495aea47320ae1d2b55b757ece62ac1cb8455532aa61fd123fe4e01d0567eb2d7adfa languageName: node linkType: hard "es-module-lexer@npm:^1.2.1": - version: 1.3.0 - resolution: "es-module-lexer@npm:1.3.0" - checksum: 48fd9f504a9d2a894126f75c8b7ccc6273a289983e9b67255f165bfd9ae765d50100218251e94e702ca567826905ea2f7b3b4a0c4d74d3ce99cce3a2a606a238 + version: 1.3.1 + resolution: "es-module-lexer@npm:1.3.1" + checksum: 3beafa7e171eb1e8cc45695edf8d51638488dddf65294d7911f8d6a96249da6a9838c87529262cc6ea53988d8272cec0f4bff93f476ed031a54ba3afb51a0ed3 languageName: node linkType: hard @@ -8798,15 +8277,18 @@ __metadata: linkType: hard "eslint-plugin-jest-dom@npm:^5.0.2": - version: 5.0.2 - resolution: "eslint-plugin-jest-dom@npm:5.0.2" + version: 5.1.0 + resolution: "eslint-plugin-jest-dom@npm:5.1.0" dependencies: "@babel/runtime": ^7.16.3 requireindex: ^1.2.0 peerDependencies: "@testing-library/dom": ^8.0.0 || ^9.0.0 eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 - checksum: 83bda8d1f86edfaf4b8e3039f15b73ad8ec035b6afc2403828cea70d4ed792e015406aa58c3dab91235d230f4561f33d26a80064cf7b298fd6edc72a1c27273a + peerDependenciesMeta: + "@testing-library/dom": + optional: true + checksum: bd190a5501b9f5bb6ac9057fbee124d54d3854f992e13a7415aba5d34ecedd0c7362263d6b8e956549d76c40008b70232da84476200b5762c4162021e3af052c languageName: node linkType: hard @@ -8829,8 +8311,8 @@ __metadata: linkType: hard "eslint-plugin-jsdoc@npm:^46.2.3": - version: 46.5.0 - resolution: "eslint-plugin-jsdoc@npm:46.5.0" + version: 46.6.0 + resolution: "eslint-plugin-jsdoc@npm:46.6.0" dependencies: "@es-joy/jsdoccomment": ~0.40.1 are-docs-informative: ^0.0.2 @@ -8843,7 +8325,7 @@ __metadata: spdx-expression-parse: ^3.0.1 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 6e182b25e136250cd0bde076bdb051d4e82efc50c20f99cb436aa136a49769ec44a2346df384deba399ca8f303f9ae3be80e21e546d0e921b23f9a0c6330e32e + checksum: 3e2b46b31c6022773b8d21282b3a95fcc8053c865e4529516f9806860331021db1548a75972cf39eb1615fb5b794340365e4bd90033218aa427693c96d9e7878 languageName: node linkType: hard @@ -8946,13 +8428,13 @@ __metadata: linkType: hard "eslint-plugin-testing-library@npm:^6.0.0": - version: 6.0.0 - resolution: "eslint-plugin-testing-library@npm:6.0.0" + version: 6.0.1 + resolution: "eslint-plugin-testing-library@npm:6.0.1" dependencies: "@typescript-eslint/utils": ^5.58.0 peerDependencies: eslint: ^7.5.0 || ^8.0.0 - checksum: 35ca701bc7cd788b0a1505a191d5c00721ede4bbb6ffd126d6700713dc104397451edefbca52b7c6c3eae2d4b55174ea6630a28dc3642b8b73ee2e2ba997cde4 + checksum: eff1a134cb62f1c39d2136d8b89d4f231a32003fe45da2a905e5dfaa820c4a235f601ea66be6f44dd51e91debc69a36a70b586af65ac8831102b9bd411bc2705 languageName: node linkType: hard @@ -9012,54 +8494,7 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8": - version: 8.48.0 - resolution: "eslint@npm:8.48.0" - dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@eslint-community/regexpp": ^4.6.1 - "@eslint/eslintrc": ^2.1.2 - "@eslint/js": 8.48.0 - "@humanwhocodes/config-array": ^0.11.10 - "@humanwhocodes/module-importer": ^1.0.1 - "@nodelib/fs.walk": ^1.2.8 - ajv: ^6.12.4 - chalk: ^4.0.0 - cross-spawn: ^7.0.2 - debug: ^4.3.2 - doctrine: ^3.0.0 - escape-string-regexp: ^4.0.0 - eslint-scope: ^7.2.2 - eslint-visitor-keys: ^3.4.3 - espree: ^9.6.1 - esquery: ^1.4.2 - esutils: ^2.0.2 - fast-deep-equal: ^3.1.3 - file-entry-cache: ^6.0.1 - find-up: ^5.0.0 - glob-parent: ^6.0.2 - globals: ^13.19.0 - graphemer: ^1.4.0 - ignore: ^5.2.0 - imurmurhash: ^0.1.4 - is-glob: ^4.0.0 - is-path-inside: ^3.0.3 - js-yaml: ^4.1.0 - json-stable-stringify-without-jsonify: ^1.0.1 - levn: ^0.4.1 - lodash.merge: ^4.6.2 - minimatch: ^3.1.2 - natural-compare: ^1.4.0 - optionator: ^0.9.3 - strip-ansi: ^6.0.1 - text-table: ^0.2.0 - bin: - eslint: bin/eslint.js - checksum: f20b359a4f8123fec5c033577368cc020d42978b1b45303974acd8da7a27063168ee3fe297ab5b35327162f6a93154063e3ce6577102f70f9809aff793db9bd0 - languageName: node - linkType: hard - -"eslint@npm:^8.49.0": +"eslint@npm:^8, eslint@npm:^8.49.0": version: 8.49.0 resolution: "eslint@npm:8.49.0" dependencies: @@ -9548,16 +8983,17 @@ __metadata: linkType: hard "flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" + version: 3.1.0 + resolution: "flat-cache@npm:3.1.0" dependencies: - flatted: ^3.1.0 + flatted: ^3.2.7 + keyv: ^4.5.3 rimraf: ^3.0.2 - checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 + checksum: 99312601d5b90f44aef403f17f056dc09be7e437703740b166cdc9386d99e681f74e6b6e8bd7d010bda66904ea643c9527276b1b80308a2119741d94108a4d8f languageName: node linkType: hard -"flatted@npm:^3.1.0": +"flatted@npm:^3.2.7": version: 3.2.7 resolution: "flatted@npm:3.2.7" checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 @@ -9605,9 +9041,9 @@ __metadata: linkType: hard "fraction.js@npm:^4.2.0": - version: 4.2.1 - resolution: "fraction.js@npm:4.2.1" - checksum: 94cc9844bf1e3071734fa70c7410cf26c09636a0e95f956f2f90d839bf516d60f07bac6f33fbe018dbdbba7bda360794c0232810900475295415a164c3c9cf78 + version: 4.3.6 + resolution: "fraction.js@npm:4.3.6" + checksum: e96ae77e64ebfd442d3a5a01a3f0637b0663fc2440bcf2841b3ad9341ba24c81fb2e3e7142e43ef7d088558c6b3f8609df135b201adc7a1c674aea6a71384162 languageName: node linkType: hard @@ -9728,18 +9164,18 @@ __metadata: linkType: hard "function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + functions-have-names: ^1.2.3 + checksum: 7a3f9bd98adab09a07f6e1f03da03d3f7c26abbdeaeee15223f6c04a9fb5674792bdf5e689dac19b97ac71de6aad2027ba3048a9b883aa1b3173eed6ab07f479 languageName: node linkType: hard -"functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3": +"functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 @@ -9948,8 +9384,8 @@ __metadata: linkType: hard "glob@npm:^10.2.2": - version: 10.3.3 - resolution: "glob@npm:10.3.3" + version: 10.3.4 + resolution: "glob@npm:10.3.4" dependencies: foreground-child: ^3.1.0 jackspeak: ^2.0.3 @@ -9958,7 +9394,7 @@ __metadata: path-scurry: ^1.10.1 bin: glob: dist/cjs/src/bin.js - checksum: 29190d3291f422da0cb40b77a72fc8d2c51a36524e99b8bf412548b7676a6627489528b57250429612b6eec2e6fe7826d328451d3e694a9d15e575389308ec53 + checksum: 176b97c124414401cb51329a93d2ba112cef8814adbed10348481916b9521b677773eee2691cb6b24d66632d8c8bb8913533f5ac4bfb2d0ef5454a1856082361 languageName: node linkType: hard @@ -10476,11 +9912,11 @@ __metadata: linkType: hard "i18next@npm:*": - version: 23.4.4 - resolution: "i18next@npm:23.4.4" + version: 23.5.1 + resolution: "i18next@npm:23.5.1" dependencies: "@babel/runtime": ^7.22.5 - checksum: faa968dcba328528231e3cd140d5a0f4b9b472b75874b7cbf8415e2dbff48397f1cdcc36a739ea6915f6970c367fdd7f985f120e63e1c30a839c53e366d851fd + checksum: 4be043bd72287bfae9777a3252b9458d2e3f5e9a97ea62cf434e6e3767b45df4365d8780d0dd14efd4e9da5eb0f90534510b138f1372d1cb9012000a69bbedaf languageName: node linkType: hard @@ -10636,7 +10072,7 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5": +"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5": version: 1.0.5 resolution: "internal-slot@npm:1.0.5" dependencies: @@ -11365,28 +10801,27 @@ __metadata: linkType: hard "iterator.prototype@npm:^1.1.0": - version: 1.1.0 - resolution: "iterator.prototype@npm:1.1.0" + version: 1.1.1 + resolution: "iterator.prototype@npm:1.1.1" dependencies: - define-properties: ^1.1.4 - get-intrinsic: ^1.1.3 + define-properties: ^1.2.0 + get-intrinsic: ^1.2.1 has-symbols: ^1.0.3 - has-tostringtag: ^1.0.0 reflect.getprototypeof: ^1.0.3 - checksum: 462fe16c770affeb9c08620b13fc98d38307335821f4fabd489f491d38c79855c6a93d4b56f6146eaa56711f61690aa5c7eb0ce8586c95145d2f665a3834d916 + checksum: 2807469a39e280ff25ed95f8f84197b870a12fae2b15cb8779bbb0d12bc0e648be4d6277bedb6f4ae05d3fc94f05a29f90c018335003f27045582cf5455248df languageName: node linkType: hard "jackspeak@npm:^2.0.3": - version: 2.3.0 - resolution: "jackspeak@npm:2.3.0" + version: 2.3.3 + resolution: "jackspeak@npm:2.3.3" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 71bf716f4b5793226d4aeb9761ebf2605ee093b59f91a61451d57d998dd64bbf2b54323fb749b8b2ae8b6d8a463de4f6e3fedab50108671f247bbc80195a6306 + checksum: 4313a7c0cc44c7753c4cb9869935f0b06f4cf96827515f63f58ff46b3d2f6e29aba6b3b5151778397c3f5ae67ef8bfc48871967bd10343c27e90cff198ec7808 languageName: node linkType: hard @@ -11935,11 +11370,11 @@ __metadata: linkType: hard "jiti@npm:^1.18.2": - version: 1.19.3 - resolution: "jiti@npm:1.19.3" + version: 1.20.0 + resolution: "jiti@npm:1.20.0" bin: jiti: bin/jiti.js - checksum: de3dacdfe30948d96b69712b04cc28127c17f43d5233a5aa069933e04ac4c9aaf265bef4cdf2b0c2a6f5af236a58aea9bfea83e8e289e2490802bdff7f99bff7 + checksum: 7924062b5675142e3e272a27735be84b7bfc0a0eb73217fc2dcafa034f37c4f7b4b9ffc07dd98bcff0f739a8811ce1544db205ae7e97b1c86f0df92c65ce3c72 languageName: node linkType: hard @@ -12104,6 +11539,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 + languageName: node + linkType: hard + "json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" @@ -12224,6 +11666,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^4.5.3": + version: 4.5.3 + resolution: "keyv@npm:4.5.3" + dependencies: + json-buffer: 3.0.1 + checksum: 3ffb4d5b72b6b4b4af443bbb75ca2526b23c750fccb5ac4c267c6116888b4b65681015c2833cb20d26cf3e6e32dac6b988c77f7f022e1a571b7d90f1442257da + languageName: node + linkType: hard + "kind-of@npm:^3.0.2": version: 3.2.2 resolution: "kind-of@npm:3.2.2" @@ -13634,57 +13085,57 @@ __metadata: linkType: hard "object.entries@npm:^1.1.6": - version: 1.1.6 - resolution: "object.entries@npm:1.1.6" + version: 1.1.7 + resolution: "object.entries@npm:1.1.7" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0f8c47517e6a9a980241eafe3b73de11e59511883173c2b93d67424a008e47e11b77c80e431ad1d8a806f6108b225a1cab9223e53e555776c612a24297117d28 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: da287d434e7e32989586cd734382364ba826a2527f2bc82e6acbf9f9bfafa35d51018b66ec02543ffdfa2a5ba4af2b6f1ca6e588c65030cb4fd9c67d6ced594c languageName: node linkType: hard "object.fromentries@npm:^2.0.6": - version: 2.0.6 - resolution: "object.fromentries@npm:2.0.6" + version: 2.0.7 + resolution: "object.fromentries@npm:2.0.7" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 453c6d694180c0c30df451b60eaf27a5b9bca3fb43c37908fd2b78af895803dc631242bcf05582173afa40d8d0e9c96e16e8874b39471aa53f3ac1f98a085d85 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 7341ce246e248b39a431b87a9ddd331ff52a454deb79afebc95609f94b1f8238966cf21f52188f2a353f0fdf83294f32f1ebf1f7826aae915ebad21fd0678065 languageName: node linkType: hard "object.groupby@npm:^1.0.0": - version: 1.0.0 - resolution: "object.groupby@npm:1.0.0" + version: 1.0.1 + resolution: "object.groupby@npm:1.0.1" dependencies: call-bind: ^1.0.2 define-properties: ^1.2.0 - es-abstract: ^1.21.2 + es-abstract: ^1.22.1 get-intrinsic: ^1.2.1 - checksum: 64b00b287d57580111c958e7ff375c9b61811fa356f2cf0d35372d43cab61965701f00fac66c19fd8f49c4dfa28744bee6822379c69a73648ad03e09fcdeae70 + checksum: d7959d6eaaba358b1608066fc67ac97f23ce6f573dc8fc661f68c52be165266fcb02937076aedb0e42722fdda0bdc0bbf74778196ac04868178888e9fd3b78b5 languageName: node linkType: hard "object.hasown@npm:^1.1.2": - version: 1.1.2 - resolution: "object.hasown@npm:1.1.2" + version: 1.1.3 + resolution: "object.hasown@npm:1.1.3" dependencies: - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: b936572536db0cdf38eb30afd2f1026a8b6f2cc5d2c4497c9d9bbb01eaf3e980dead4fd07580cfdd098e6383e5a9db8212d3ea0c6bdd2b5e68c60aa7e3b45566 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 76bc17356f6124542fb47e5d0e78d531eafa4bba3fc2d6fc4b1a8ce8b6878912366c0d99f37ce5c84ada8fd79df7aa6ea1214fddf721f43e093ad2df51f27da1 languageName: node linkType: hard "object.values@npm:^1.1.6": - version: 1.1.6 - resolution: "object.values@npm:1.1.6" + version: 1.1.7 + resolution: "object.values@npm:1.1.7" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: f6fff9fd817c24cfd8107f50fb33061d81cd11bacc4e3dbb3852e9ff7692fde4dbce823d4333ea27cd9637ef1b6690df5fbb61f1ed314fa2959598dc3ae23d8e + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: f3e4ae4f21eb1cc7cebb6ce036d4c67b36e1c750428d7b7623c56a0db90edced63d08af8a316d81dfb7c41a3a5fa81b05b7cc9426e98d7da986b1682460f0777 languageName: node linkType: hard @@ -15276,9 +14727,9 @@ __metadata: linkType: hard "pure-rand@npm:^6.0.0": - version: 6.0.2 - resolution: "pure-rand@npm:6.0.2" - checksum: 79de33876a4f515d759c48e98d00756bbd916b4ea260cc572d7adfa4b62cace9952e89f0241d0410214554503d25061140fe325c66f845213d2b1728ba8d413e + version: 6.0.3 + resolution: "pure-rand@npm:6.0.3" + checksum: d08701cfd1528c5f9cdca996776c498c92767722561f9b8f9e62645d5025c8a3bf60b90f76f262aaab124e6bb1d58e1b0850722dbca2846a19b708801956e56b languageName: node linkType: hard @@ -15683,16 +15134,16 @@ __metadata: linkType: hard "reflect.getprototypeof@npm:^1.0.3": - version: 1.0.3 - resolution: "reflect.getprototypeof@npm:1.0.3" + version: 1.0.4 + resolution: "reflect.getprototypeof@npm:1.0.4" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - get-intrinsic: ^1.1.1 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + get-intrinsic: ^1.2.1 globalthis: ^1.0.3 which-builtin-type: ^1.1.3 - checksum: 843e2506c013da66f83635f943c5bd41243bc6c7703298531cfb16eb6baaefd92f83031fa37140ad31c4edc86938b6eb385e6fc85bf1628e79348ed49e044f3d + checksum: 16e2361988dbdd23274b53fb2b1b9cefeab876c3941a2543b4cadac6f989e3db3957b07a44aac46cfceb3e06e2871785ec2aac992d824f76292f3b5ee87f66f2 languageName: node linkType: hard @@ -15735,7 +15186,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0": +"regexp.prototype.flags@npm:^1.5.0": version: 1.5.0 resolution: "regexp.prototype.flags@npm:1.5.0" dependencies: @@ -16088,14 +15539,14 @@ __metadata: linkType: hard "safe-array-concat@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-array-concat@npm:1.0.0" + version: 1.0.1 + resolution: "safe-array-concat@npm:1.0.1" dependencies: call-bind: ^1.0.2 - get-intrinsic: ^1.2.0 + get-intrinsic: ^1.2.1 has-symbols: ^1.0.3 isarray: ^2.0.5 - checksum: f43cb98fe3b566327d0c09284de2b15fb85ae964a89495c1b1a5d50c7c8ed484190f4e5e71aacc167e16231940079b326f2c0807aea633d47cc7322f40a6b57f + checksum: 001ecf1d8af398251cbfabaf30ed66e3855127fbceee178179524b24160b49d15442f94ed6c0db0b2e796da76bb05b73bf3cc241490ec9c2b741b41d33058581 languageName: node linkType: hard @@ -16672,51 +16123,51 @@ __metadata: linkType: hard "string.prototype.matchall@npm:^4.0.6, string.prototype.matchall@npm:^4.0.8": - version: 4.0.8 - resolution: "string.prototype.matchall@npm:4.0.8" + version: 4.0.9 + resolution: "string.prototype.matchall@npm:4.0.9" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - get-intrinsic: ^1.1.3 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + get-intrinsic: ^1.2.1 has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - regexp.prototype.flags: ^1.4.3 + internal-slot: ^1.0.5 + regexp.prototype.flags: ^1.5.0 side-channel: ^1.0.4 - checksum: 952da3a818de42ad1c10b576140a5e05b4de7b34b8d9dbf00c3ac8c1293e9c0f533613a39c5cda53e0a8221f2e710bc2150e730b1c2278d60004a8a35726efb6 + checksum: a68a9914755ec8c9b9129d6fb70603d78b839a1ca4a907e601fcb860109cecfbd1884e8b38989885f9c825c1c2015ff5b1ed9ddac7c8d040e4e4b3c9bc4ed5ed languageName: node linkType: hard "string.prototype.trim@npm:^1.2.7": - version: 1.2.7 - resolution: "string.prototype.trim@npm:1.2.7" + version: 1.2.8 + resolution: "string.prototype.trim@npm:1.2.8" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 05b7b2d6af63648e70e44c4a8d10d8cc457536df78b55b9d6230918bde75c5987f6b8604438c4c8652eb55e4fc9725d2912789eb4ec457d6995f3495af190c09 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 49eb1a862a53aba73c3fb6c2a53f5463173cb1f4512374b623bcd6b43ad49dd559a06fb5789bdec771a40fc4d2a564411c0a75d35fb27e76bbe738c211ecff07 languageName: node linkType: hard "string.prototype.trimend@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimend@npm:1.0.6" + version: 1.0.7 + resolution: "string.prototype.trimend@npm:1.0.7" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 2375516272fd1ba75992f4c4aa88a7b5f3c7a9ca308d963bcd5645adf689eba6f8a04ebab80c33e30ec0aefc6554181a3a8416015c38da0aa118e60ec896310c languageName: node linkType: hard "string.prototype.trimstart@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimstart@npm:1.0.6" + version: 1.0.7 + resolution: "string.prototype.trimstart@npm:1.0.7" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + checksum: 13d0c2cb0d5ff9e926fa0bec559158b062eed2b68cd5be777ffba782c96b2b492944e47057274e064549b94dd27cf81f48b27a31fee8af5b574cff253e7eb613 languageName: node linkType: hard @@ -17131,8 +16582,8 @@ __metadata: linkType: hard "tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.15 - resolution: "tar@npm:6.1.15" + version: 6.2.0 + resolution: "tar@npm:6.2.0" dependencies: chownr: ^2.0.0 fs-minipass: ^2.0.0 @@ -17140,7 +16591,7 @@ __metadata: minizlib: ^2.1.1 mkdirp: ^1.0.3 yallist: ^4.0.0 - checksum: f23832fceeba7578bf31907aac744ae21e74a66f4a17a9e94507acf460e48f6db598c7023882db33bab75b80e027c21f276d405e4a0322d58f51c7088d428268 + checksum: db4d9fe74a2082c3a5016630092c54c8375ff3b280186938cfd104f2e089c4fd9bad58688ef6be9cf186a889671bf355c7cda38f09bbf60604b281715ca57f5c languageName: node linkType: hard @@ -17195,8 +16646,8 @@ __metadata: linkType: hard "terser@npm:^5.0.0, terser@npm:^5.10.0, terser@npm:^5.16.8": - version: 5.19.2 - resolution: "terser@npm:5.19.2" + version: 5.19.4 + resolution: "terser@npm:5.19.4" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -17204,7 +16655,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: e059177775b4d4f4cff219ad89293175aefbd1b081252270444dc83e42a2c5f07824eb2a85eae6e22ef6eb7ef04b21af36dd7d1dd7cfb93912310e57d416a205 + checksum: 09273ce7d3fbe8fea0ec2603ad1c06cc304838bdac42bbfe77835b0b0b6c4a894054575ca518fe16c95d5c401574a8c703f4fde97da45f1c972ea568e6ecafda languageName: node linkType: hard @@ -17410,11 +16861,11 @@ __metadata: linkType: hard "ts-api-utils@npm:^1.0.1": - version: 1.0.2 - resolution: "ts-api-utils@npm:1.0.2" + version: 1.0.3 + resolution: "ts-api-utils@npm:1.0.3" peerDependencies: typescript: ">=4.2.0" - checksum: 6375e12ba90b6cbe73f564405248da14c52aa44b62b386e1cbbb1da2640265dd33e99d3e019688dffa874e365cf596b161ccd49351e90638be825c2639697640 + checksum: 441cc4489d65fd515ae6b0f4eb8690057add6f3b6a63a36073753547fb6ce0c9ea0e0530220a0b282b0eec535f52c4dfc315d35f8a4c9a91c0def0707a714ca6 languageName: node linkType: hard @@ -18250,9 +17701,9 @@ __metadata: linkType: hard "whatwg-fetch@npm:^3.4.1": - version: 3.6.17 - resolution: "whatwg-fetch@npm:3.6.17" - checksum: 0a8785dc2d1515c17ee9365d3f6438cf8fd281567426652fc6c55fc99e58cc6287ae5d1add5b8b1dd665f149e38d3de4ebe3812fd7170438ba0681d03b88b4dd + version: 3.6.18 + resolution: "whatwg-fetch@npm:3.6.18" + checksum: 72fd318a00fd9031f7f5b28bfe30e458ca5e6ebc9b3de6e03edf810f455bca0ec954035bd9f1b5f9e6a82bbdc3fbba59b14bee24c039460c8a75f8f990ebe0b1 languageName: node linkType: hard @@ -18854,7 +18305,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.13.0, ws@npm:^8.11.0": +"ws@npm:8.13.0": version: 8.13.0 resolution: "ws@npm:8.13.0" peerDependencies: @@ -18869,6 +18320,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^8.11.0": + version: 8.14.1 + resolution: "ws@npm:8.14.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 9e310be2b0ff69e1f87d8c6d093ecd17a1ed4c37f281d17c35e8c30e2bd116401775b3d503249651374e6e0e1e9905db62fff096b694371c77561aee06bc3466 + languageName: node + linkType: hard + "xdg-basedir@npm:^5.0.1": version: 5.1.0 resolution: "xdg-basedir@npm:5.1.0" From 1040c0d9a984364c5290cab85f956014be351a53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Mon, 11 Sep 2023 18:55:22 +0200 Subject: [PATCH 26/95] feat: add a new featureChangeHandler to start the E2EI flow --- src/script/page/AppMain.tsx | 4 +- .../FeatureConfigChangeHandler.tsx | 46 ++++++++++++++++ .../Features/E2EIdentity.ts | 54 +++++++++++++++++++ .../FeatureConfigChangeNotifier.store.ts | 0 .../FeatureConfigChangeNotifier.test.tsx | 2 +- .../FeatureConfigChangeNotifier.ts | 4 +- .../FeatureConfigChangeNotifier/index.ts | 0 .../components/FeatureConfigChange/guards.ts | 26 +++++++++ 8 files changed, 132 insertions(+), 4 deletions(-) create mode 100644 src/script/page/components/FeatureConfigChange/FeatureConfigChangeHandler/FeatureConfigChangeHandler.tsx create mode 100644 src/script/page/components/FeatureConfigChange/FeatureConfigChangeHandler/Features/E2EIdentity.ts rename src/script/page/components/{ => FeatureConfigChange}/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.store.ts (100%) rename src/script/page/components/{ => FeatureConfigChange}/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.test.tsx (99%) rename src/script/page/components/{ => FeatureConfigChange}/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.ts (98%) rename src/script/page/components/{ => FeatureConfigChange}/FeatureConfigChangeNotifier/index.ts (100%) create mode 100644 src/script/page/components/FeatureConfigChange/guards.ts diff --git a/src/script/page/AppMain.tsx b/src/script/page/AppMain.tsx index 6d43938a273..ee00e9d78f2 100644 --- a/src/script/page/AppMain.tsx +++ b/src/script/page/AppMain.tsx @@ -36,7 +36,8 @@ import {showUserModal, UserModal} from 'Components/Modals/UserModal'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {AppLock} from './AppLock'; -import {FeatureConfigChangeNotifier} from './components/FeatureConfigChangeNotifier'; +import {FeatureConfigChangeHandler} from './components/FeatureConfigChange/FeatureConfigChangeHandler/FeatureConfigChangeHandler'; +import {FeatureConfigChangeNotifier} from './components/FeatureConfigChange/FeatureConfigChangeNotifier'; import {WindowTitleUpdater} from './components/WindowTitleUpdater'; import {LeftSidebar} from './LeftSidebar'; import {MainContent} from './MainContent'; @@ -245,6 +246,7 @@ const AppMain: FC = ({ + { + if (config) { + // initialize feature handlers + handleE2EIdentityFeatureChange(logger, config); + } + }, [config]); + + return null; +} diff --git a/src/script/page/components/FeatureConfigChange/FeatureConfigChangeHandler/Features/E2EIdentity.ts b/src/script/page/components/FeatureConfigChange/FeatureConfigChangeHandler/Features/E2EIdentity.ts new file mode 100644 index 00000000000..8e5344cf84e --- /dev/null +++ b/src/script/page/components/FeatureConfigChange/FeatureConfigChangeHandler/Features/E2EIdentity.ts @@ -0,0 +1,54 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {FeatureStatus, FEATURE_KEY, FeatureList} from '@wireapp/api-client/lib/team'; + +import {E2EIHandler} from 'src/script/E2EIdentity'; +import {Logger} from 'Util/Logger'; + +import {isFeatureMLSE2EI, isFeatureMLS} from '../../guards'; + +export const handleE2EIdentityFeatureChange = (logger: Logger, config: FeatureList) => { + const e2eiConfig = config[FEATURE_KEY.MLSE2EID]; + const mlsConfig = config[FEATURE_KEY.MLS]; + // Check if MLS or MLS E2EIdentity feature is existent + if (!isFeatureMLSE2EI(e2eiConfig) && !isFeatureMLS(mlsConfig)) { + return; + } + + // Check if E2EIdentity feature is enabled + if (e2eiConfig?.status === FeatureStatus.ENABLED) { + // Check if MLS feature is enabled + if (mlsConfig?.status !== FeatureStatus.ENABLED) { + logger.info('Warning: E2EIdentity feature enabled but MLS feature is not active'); + return; + } + // Check if E2EIdentity feature has a server discoveryUrl + if (!e2eiConfig.config || !e2eiConfig.config.acmeDiscoveryUrl || e2eiConfig.config.acmeDiscoveryUrl.length <= 0) { + logger.info('Warning: E2EIdentity feature enabled but no discoveryUrl provided'); + return; + } + // Either get the current E2EIdentity handler instance or create a new one + const e2eHandler = E2EIHandler.getInstance({ + discoveryUrl: e2eiConfig.config.acmeDiscoveryUrl!, + gracePeriodInMS: e2eiConfig.config.verificationExpiration, + }); + e2eHandler.initialize(); + } +}; diff --git a/src/script/page/components/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.store.ts b/src/script/page/components/FeatureConfigChange/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.store.ts similarity index 100% rename from src/script/page/components/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.store.ts rename to src/script/page/components/FeatureConfigChange/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.store.ts diff --git a/src/script/page/components/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.test.tsx b/src/script/page/components/FeatureConfigChange/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.test.tsx similarity index 99% rename from src/script/page/components/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.test.tsx rename to src/script/page/components/FeatureConfigChange/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.test.tsx index 0b07ba66b47..0cc5ba32cf6 100644 --- a/src/script/page/components/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.test.tsx +++ b/src/script/page/components/FeatureConfigChange/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.test.tsx @@ -26,7 +26,7 @@ import {setStrings} from 'Util/LocalizerUtil'; import {FeatureConfigChangeNotifier} from './FeatureConfigChangeNotifier'; -import {TeamState} from '../../../team/TeamState'; +import {TeamState} from '../../../../team/TeamState'; setStrings({en}); diff --git a/src/script/page/components/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.ts b/src/script/page/components/FeatureConfigChange/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.ts similarity index 98% rename from src/script/page/components/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.ts rename to src/script/page/components/FeatureConfigChange/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.ts index 31bfb6bddb0..3a3930b674c 100644 --- a/src/script/page/components/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.ts +++ b/src/script/page/components/FeatureConfigChange/FeatureConfigChangeNotifier/FeatureConfigChangeNotifier.ts @@ -36,8 +36,8 @@ import {formatDuration} from 'Util/TimeUtil'; import {loadFeatureConfig, saveFeatureConfig} from './FeatureConfigChangeNotifier.store'; -import {Config} from '../../../Config'; -import {TeamState} from '../../../team/TeamState'; +import {Config} from '../../../../Config'; +import {TeamState} from '../../../../team/TeamState'; const featureNotifications: Partial< Record< diff --git a/src/script/page/components/FeatureConfigChangeNotifier/index.ts b/src/script/page/components/FeatureConfigChange/FeatureConfigChangeNotifier/index.ts similarity index 100% rename from src/script/page/components/FeatureConfigChangeNotifier/index.ts rename to src/script/page/components/FeatureConfigChange/FeatureConfigChangeNotifier/index.ts diff --git a/src/script/page/components/FeatureConfigChange/guards.ts b/src/script/page/components/FeatureConfigChange/guards.ts new file mode 100644 index 00000000000..e304293950a --- /dev/null +++ b/src/script/page/components/FeatureConfigChange/guards.ts @@ -0,0 +1,26 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {FeatureMLS, FeatureMLSE2EId} from '@wireapp/api-client/lib/team'; + +export const isFeatureMLSE2EI = (feature: any): feature is FeatureMLSE2EId => + 'config' in feature && 'verificationExpiration' in feature.config; + +export const isFeatureMLS = (feature: any): feature is FeatureMLS => + 'config' in feature && 'defaultProtocol' in feature.config; From 3a7dd7b90737be8e88592df8fc396da5b99b9f6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Wed, 13 Sep 2023 10:53:42 +0200 Subject: [PATCH 27/95] feat: clear oidc progress at error --- src/script/E2EIdentity/E2EIdentity.ts | 4 ++- .../E2EIdentity/OIDCService/OIDCService.ts | 4 +++ yarn.lock | 25 ++++--------------- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/script/E2EIdentity/E2EIdentity.ts b/src/script/E2EIdentity/E2EIdentity.ts index 18c65eef789..802ec50eacd 100644 --- a/src/script/E2EIdentity/E2EIdentity.ts +++ b/src/script/E2EIdentity/E2EIdentity.ts @@ -200,11 +200,13 @@ class E2EIHandler { PrimaryModal.show(modalType, modalOptions); } - private showErrorMessage(): void { + private async showErrorMessage(): Promise { if (this.currentStep !== E2EIHandlerStep.ERROR) { return; } + const oidcService = getOIDCServiceInstance(); + await oidcService.clearProgress(); this.core.service?.e2eIdentity?.clearAllProgress(); const {modalOptions, modalType} = getModalOptions({ diff --git a/src/script/E2EIdentity/OIDCService/OIDCService.ts b/src/script/E2EIdentity/OIDCService/OIDCService.ts index f74fe9c3fba..e2e6e2746db 100644 --- a/src/script/E2EIdentity/OIDCService/OIDCService.ts +++ b/src/script/E2EIdentity/OIDCService/OIDCService.ts @@ -55,4 +55,8 @@ export class OIDCService { return user; }); } + + public clearProgress(): Promise { + return this.userManager.clearStaleState(); + } } diff --git a/yarn.lock b/yarn.lock index 6e84da5787d..b50c0f79920 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4837,8 +4837,8 @@ __metadata: linkType: hard "@wireapp/api-client@npm:^26.0.3": - version: 26.0.3 - resolution: "@wireapp/api-client@npm:26.0.3" + version: 26.0.4 + resolution: "@wireapp/api-client@npm:26.0.4" dependencies: "@wireapp/commons": ^5.1.3 "@wireapp/priority-queue": ^2.1.4 @@ -4851,8 +4851,8 @@ __metadata: reconnecting-websocket: 4.4.0 spark-md5: 3.0.2 tough-cookie: 4.1.3 - ws: 8.13.0 - checksum: 3f9ac886c80d539dc8da4e96803cd20e921af9ac463af2be5612736650a3ba72340f959a68390d07b7b9106b01dff9b21c6a016c4a76eeb87af9577751339234 + ws: 8.14.1 + checksum: 21610e5fa2dc323ea8c921e9a4f14caa0544a54a76718b153fd8d383396541d3afcd4f03eb35b4ecce4eeb63a539db1a593e91d3bb592a9b1d4a2b384fe9f499 languageName: node linkType: hard @@ -18305,22 +18305,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.13.0": - version: 8.13.0 - resolution: "ws@npm:8.13.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c - languageName: node - linkType: hard - -"ws@npm:^8.11.0": +"ws@npm:8.14.1, ws@npm:^8.11.0": version: 8.14.1 resolution: "ws@npm:8.14.1" peerDependencies: From af7c30d0d0e2408105083381ac5a002336b32a21 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Thu, 14 Sep 2023 13:06:35 +0200 Subject: [PATCH 28/95] feat: replace url param after get certificate --- src/script/E2EIdentity/helper/uri.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/script/E2EIdentity/helper/uri.ts b/src/script/E2EIdentity/helper/uri.ts index 4c5cc350fc1..8c4bd9ed0ff 100644 --- a/src/script/E2EIdentity/helper/uri.ts +++ b/src/script/E2EIdentity/helper/uri.ts @@ -17,7 +17,6 @@ * */ -// ToDo: Use React Router instead of location.replace export const removeUrlParameters = () => { - location.replace(`${location.origin}/${location.hash}`); + history.replaceState({}, '', `${location.origin}/${location.hash}`); }; From 5faceee7a2b04b02ff6fc2b059a5767d82b1cfe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Thu, 14 Sep 2023 13:33:36 +0200 Subject: [PATCH 29/95] fix: clean up after success or failed try. --- src/script/E2EIdentity/E2EIdentity.ts | 4 ++++ src/script/E2EIdentity/OIDCService/OIDCService.ts | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/script/E2EIdentity/E2EIdentity.ts b/src/script/E2EIdentity/E2EIdentity.ts index 802ec50eacd..41924a86b82 100644 --- a/src/script/E2EIdentity/E2EIdentity.ts +++ b/src/script/E2EIdentity/E2EIdentity.ts @@ -205,8 +205,12 @@ class E2EIHandler { return; } + // Remove the url parameters of the failed enrollment + removeUrlParameters(); + // Clear the oidc service progress const oidcService = getOIDCServiceInstance(); await oidcService.clearProgress(); + // Clear the e2e identity progress this.core.service?.e2eIdentity?.clearAllProgress(); const {modalOptions, modalType} = getModalOptions({ diff --git a/src/script/E2EIdentity/OIDCService/OIDCService.ts b/src/script/E2EIdentity/OIDCService/OIDCService.ts index e2e6e2746db..1f6363b21ae 100644 --- a/src/script/E2EIdentity/OIDCService/OIDCService.ts +++ b/src/script/E2EIdentity/OIDCService/OIDCService.ts @@ -43,6 +43,14 @@ export class OIDCService { this.userManager = new UserManager(dexioConfig); } + private clearKeysStartingWith(prefix: string, storage: Storage): void { + Object.keys(storage) + .filter(item => item.startsWith(prefix)) + .forEach(item => { + storage.removeItem(item); + }); + } + public async authenticate(): Promise { await this.userManager.signinRedirect(); } @@ -57,6 +65,10 @@ export class OIDCService { } public clearProgress(): Promise { + const {localStorage, sessionStorage} = window; + // remove all oidc keys from local and session storage to prevent errors and stale state + this.clearKeysStartingWith('oidc.', localStorage); + this.clearKeysStartingWith('oidc.user:', sessionStorage); return this.userManager.clearStaleState(); } } From f8a623b1cbe06cb73334a3243bc4ffed84a4f17b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Thu, 14 Sep 2023 13:40:45 +0200 Subject: [PATCH 30/95] chore: move util functions --- src/script/E2EIdentity/E2EIdentity.ts | 2 +- .../E2EIdentity/OIDCService/OIDCService.ts | 14 ++++-------- src/script/E2EIdentity/helper/uri.ts | 22 ------------------- src/script/util/UrlUtil.ts | 7 ++++++ src/script/util/localStorage.ts | 14 ++++++++++++ 5 files changed, 26 insertions(+), 33 deletions(-) delete mode 100644 src/script/E2EIdentity/helper/uri.ts diff --git a/src/script/E2EIdentity/E2EIdentity.ts b/src/script/E2EIdentity/E2EIdentity.ts index 41924a86b82..15a5f66cad2 100644 --- a/src/script/E2EIdentity/E2EIdentity.ts +++ b/src/script/E2EIdentity/E2EIdentity.ts @@ -23,10 +23,10 @@ import {PrimaryModal, removeCurrentModal} from 'Components/Modals/PrimaryModal'; import {Config} from 'src/script/Config'; import {Core} from 'src/script/service/CoreSingleton'; import {UserState} from 'src/script/user/UserState'; +import {removeUrlParameters} from 'Util/UrlUtil'; import {supportsMLS} from 'Util/util'; import {DelayTimerService} from './DelayTimer/DelayTimer'; -import {removeUrlParameters} from './helper/uri'; import {getModalOptions, ModalType} from './Modals'; import {getOIDCServiceInstance} from './OIDCService'; import {OIDCServiceStore} from './OIDCService/OIDCServiceStorage'; diff --git a/src/script/E2EIdentity/OIDCService/OIDCService.ts b/src/script/E2EIdentity/OIDCService/OIDCService.ts index 1f6363b21ae..6f0aef805dd 100644 --- a/src/script/E2EIdentity/OIDCService/OIDCService.ts +++ b/src/script/E2EIdentity/OIDCService/OIDCService.ts @@ -19,6 +19,8 @@ import {UserManager, User, UserManagerSettings} from 'oidc-client-ts'; +import {clearKeysStartingWith} from 'Util/localStorage'; + interface OIDCServiceConfig { authorityUrl: string; audience: string; @@ -43,14 +45,6 @@ export class OIDCService { this.userManager = new UserManager(dexioConfig); } - private clearKeysStartingWith(prefix: string, storage: Storage): void { - Object.keys(storage) - .filter(item => item.startsWith(prefix)) - .forEach(item => { - storage.removeItem(item); - }); - } - public async authenticate(): Promise { await this.userManager.signinRedirect(); } @@ -67,8 +61,8 @@ export class OIDCService { public clearProgress(): Promise { const {localStorage, sessionStorage} = window; // remove all oidc keys from local and session storage to prevent errors and stale state - this.clearKeysStartingWith('oidc.', localStorage); - this.clearKeysStartingWith('oidc.user:', sessionStorage); + clearKeysStartingWith('oidc.', localStorage); + clearKeysStartingWith('oidc.user:', sessionStorage); return this.userManager.clearStaleState(); } } diff --git a/src/script/E2EIdentity/helper/uri.ts b/src/script/E2EIdentity/helper/uri.ts deleted file mode 100644 index 8c4bd9ed0ff..00000000000 --- a/src/script/E2EIdentity/helper/uri.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -export const removeUrlParameters = () => { - history.replaceState({}, '', `${location.origin}/${location.hash}`); -}; diff --git a/src/script/util/UrlUtil.ts b/src/script/util/UrlUtil.ts index f9a07571d39..cf41f88e10d 100644 --- a/src/script/util/UrlUtil.ts +++ b/src/script/util/UrlUtil.ts @@ -108,3 +108,10 @@ export const getLinksFromHtml = (html: string): T[] => { * @returns prepended URL */ export const prependProtocol = (url: string) => (!url.match(/^http[s]?:\/\//i) ? `http://${url}` : url); + +/** + * Removes all URL parameters from the current URL + */ +export const removeUrlParameters = () => { + history.replaceState({}, '', `${location.origin}/${location.hash}`); +}; diff --git a/src/script/util/localStorage.ts b/src/script/util/localStorage.ts index 630dc7cda8c..1af7cbb3115 100644 --- a/src/script/util/localStorage.ts +++ b/src/script/util/localStorage.ts @@ -34,3 +34,17 @@ export function getStorage(): Storage | undefined { return undefined; } } + +/** + * Clears all keys starting with the given prefix from the given storage + * Supports storages with the web storage API (localStorage, sessionStorage) + * @param prefix string + * @param storage Storage + */ +export function clearKeysStartingWith(prefix: string, storage: Storage): void { + Object.keys(storage) + .filter(item => item.startsWith(prefix)) + .forEach(item => { + storage.removeItem(item); + }); +} From fab6e280f2def61f6672e39da9a10ea8ab583140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= Date: Wed, 20 Sep 2023 15:11:10 +0200 Subject: [PATCH 31/95] fix: yarn errors --- package.json | 2 +- server/yarn.lock | 263 ++++------ yarn.lock | 1212 ++++++++++++++++++++-------------------------- 3 files changed, 596 insertions(+), 881 deletions(-) diff --git a/package.json b/package.json index 86b299cf42b..613e90ae8b9 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "@types/open-graph": "0.2.3", "@types/platform": "1.3.4", "@types/prettier": "^2.7.3", - "@types/react": "18.2.21", + "@types/react": "^18.2.22", "@types/react-dom": "18.2.7", "@types/react-redux": "7.1.26", "@types/react-transition-group": "4.4.6", diff --git a/server/yarn.lock b/server/yarn.lock index b808700d2f1..45b93323cd2 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -26,32 +26,32 @@ __metadata: linkType: hard "@babel/compat-data@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/compat-data@npm:7.22.9" - checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 + version: 7.22.20 + resolution: "@babel/compat-data@npm:7.22.20" + checksum: efedd1d18878c10fde95e4d82b1236a9aba41395ef798cbb651f58dbf5632dbff475736c507b8d13d4c8f44809d41c0eb2ef0d694283af9ba5dd8339b6dab451 languageName: node linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": - version: 7.22.17 - resolution: "@babel/core@npm:7.22.17" + version: 7.22.20 + resolution: "@babel/core@npm:7.22.20" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.22.13 "@babel/generator": ^7.22.15 "@babel/helper-compilation-targets": ^7.22.15 - "@babel/helper-module-transforms": ^7.22.17 + "@babel/helper-module-transforms": ^7.22.20 "@babel/helpers": ^7.22.15 "@babel/parser": ^7.22.16 "@babel/template": ^7.22.15 - "@babel/traverse": ^7.22.17 - "@babel/types": ^7.22.17 + "@babel/traverse": ^7.22.20 + "@babel/types": ^7.22.19 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: 355216a342d1b3952d7c040dd4c99ecef6b3501ba99a713703c1fec1ae73bc92a48a0c1234562bdbb4fd334b2e452f5a6c3bb282f0e613fa89e1518c91d1aea1 + checksum: 73663a079194b5dc406b2e2e5e50db81977d443e4faf7ef2c27e5836cd9a359e81e551115193dc9b1a93471275351a972e54904f4d3aa6cb156f51e26abf6765 languageName: node linkType: hard @@ -80,10 +80,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-environment-visitor@npm:7.22.5" - checksum: 248532077d732a34cd0844eb7b078ff917c3a8ec81a7f133593f71a860a582f05b60f818dc5049c2212e5baa12289c27889a4b81d56ef409b4863db49646c4b1 +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 languageName: node linkType: hard @@ -115,18 +115,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.17": - version: 7.22.17 - resolution: "@babel/helper-module-transforms@npm:7.22.17" +"@babel/helper-module-transforms@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-module-transforms@npm:7.22.20" dependencies: - "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.20 "@babel/helper-module-imports": ^7.22.15 "@babel/helper-simple-access": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.15 + "@babel/helper-validator-identifier": ^7.22.20 peerDependencies: "@babel/core": ^7.0.0 - checksum: 458021c74093e66179765fcc9d1c1cb694f7bdf98656f23486901d35636495c38aab4661547fac2142e13d887987d1ea30cc9fe42968376a51a99bcd207b4989 + checksum: 8fce25362df8711bd4620f41c5c18769edfeafe7f8f1dae9691966ef368e57f9da68dfa1707cd63c834c89dc4eaa82c26f12ea33e88fd262ac62844b11dcc389 languageName: node linkType: hard @@ -162,10 +162,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.15, @babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-validator-identifier@npm:7.22.15" - checksum: eb0bee4bda664c0959924bc1ad5611eacfce806f46612202dd164fef1df8fef1a11682a1e7615288987100e9fb304982b6e2a4ff07ffe842ab8765b95ed1118c +"@babel/helper-validator-identifier@npm:^7.22.19, @babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc languageName: node linkType: hard @@ -188,13 +188,13 @@ __metadata: linkType: hard "@babel/highlight@npm:^7.22.13": - version: 7.22.13 - resolution: "@babel/highlight@npm:7.22.13" + version: 7.22.20 + resolution: "@babel/highlight@npm:7.22.20" dependencies: - "@babel/helper-validator-identifier": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 chalk: ^2.4.2 js-tokens: ^4.0.0 - checksum: 7266d2bff8aa8fc78eb65b6e92a8211e12897a731126a282d2f9bb50d8fcaa4c1b02af2284f990ac7e3ab8d892d448a2cab8f5ed0ea8a90bce2c025b11ebe802 + checksum: 84bd034dca309a5e680083cd827a766780ca63cef37308404f17653d32366ea76262bd2364b2d38776232f2d01b649f26721417d507e8b4b6da3e4e739f6d134 languageName: node linkType: hard @@ -372,32 +372,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.22.15, @babel/traverse@npm:^7.22.17": - version: 7.22.17 - resolution: "@babel/traverse@npm:7.22.17" +"@babel/traverse@npm:^7.22.15, @babel/traverse@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/traverse@npm:7.22.20" dependencies: "@babel/code-frame": ^7.22.13 "@babel/generator": ^7.22.15 - "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.20 "@babel/helper-function-name": ^7.22.5 "@babel/helper-hoist-variables": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 "@babel/parser": ^7.22.16 - "@babel/types": ^7.22.17 + "@babel/types": ^7.22.19 debug: ^4.1.0 globals: ^11.1.0 - checksum: 1153ca166a0a9b3fddf67f7f7c8c5b4f88aa2c2c00261ff2fc8424a63bc93250ed3fd08b04bd526ad19e797aeb6f22161120646a570cbfe5ff2a5d2f5d28af01 + checksum: 97da9afa7f8f505ce52c36ac2531129bc4a0e250880aaf9b467dc044f30a5bce2b756c1af4d961958bc225659546e811a7d536ab3d920fd60921087989b841b9 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.17, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": - version: 7.22.17 - resolution: "@babel/types@npm:7.22.17" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": + version: 7.22.19 + resolution: "@babel/types@npm:7.22.19" dependencies: "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.15 + "@babel/helper-validator-identifier": ^7.22.19 to-fast-properties: ^2.0.0 - checksum: 7382220f6eb2548f2c867a98916c3aa8a6063498d5372e5d21d8d184ba354033defb72aeba5858c1b2b42177058b896a34a7dcbae5eccd47fb0104721efa909d + checksum: 2d69740e69b55ba36ece0c17d5afb7b7213b34297157df39ef9ba24965aff677c56f014413052ecc5b2fbbf26910c63e5bb24a969df84d7a17153750cf75915e languageName: node linkType: hard @@ -509,15 +509,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect-utils@npm:^29.6.4": - version: 29.6.4 - resolution: "@jest/expect-utils@npm:29.6.4" - dependencies: - jest-get-type: ^29.6.3 - checksum: a17059e02a4c0fca98e2abb7e9e58c70df3cd3d4ebcc6a960cb57c571726f7bd738c6cd008a9bf99770b77e92f7e21c75fe1f9ceec9b7a7710010f9340bb28ad - languageName: node - linkType: hard - "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -797,8 +788,8 @@ __metadata: linkType: hard "@pm2/io@npm:~5.0.0": - version: 5.0.0 - resolution: "@pm2/io@npm:5.0.0" + version: 5.0.2 + resolution: "@pm2/io@npm:5.0.2" dependencies: "@opencensus/core": 0.0.9 "@opencensus/propagation-b3": 0.0.8 @@ -806,11 +797,11 @@ __metadata: debug: ~4.3.1 eventemitter2: ^6.3.1 require-in-the-middle: ^5.0.0 - semver: 6.3.0 + semver: ~7.5.4 shimmer: ^1.2.0 signal-exit: ^3.0.3 tslib: 1.9.3 - checksum: f912096e823003de941a539d1098243cdc39b896704dea176e75a1d4fb0e0573b552c0a30e5198c2415fee9e1d8365ce0a8e78257eb85a8bfb994f1fb8153af1 + checksum: 54e4cf462a00f86d5d3a201dee72490a253896e732dee6ce0282c55ef59d088974d7f5665f586d9f2ef35c099f5bf345fdd39a099c61c88877d215da2ce345ac languageName: node linkType: hard @@ -876,53 +867,53 @@ __metadata: linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.20.1 - resolution: "@types/babel__core@npm:7.20.1" + version: 7.20.2 + resolution: "@types/babel__core@npm:7.20.2" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 9fcd9691a33074802d9057ff70b0e3ff3778f52470475b68698a0f6714fbe2ccb36c16b43dc924eb978cd8a81c1f845e5ff4699e7a47606043b539eb8c6331a8 + checksum: 564fbaa8ff1305d50807ada0ec227c3e7528bebb2f8fe6b2ed88db0735a31511a74ad18729679c43eeed8025ed29d408f53059289719e95ab1352ed559a100bd languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.4 - resolution: "@types/babel__generator@npm:7.6.4" + version: 7.6.5 + resolution: "@types/babel__generator@npm:7.6.5" dependencies: "@babel/types": ^7.0.0 - checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 + checksum: c7459f5025c4c800eaf58f4db3b24e9d736331fe7df40961d9bc49f31b46e2a3be83dc9276e8688f10a5ed752ae153ad5f1bdd45e2245bac95273730b9115ec2 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.1 - resolution: "@types/babel__template@npm:7.4.1" + version: 7.4.2 + resolution: "@types/babel__template@npm:7.4.2" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee + checksum: 0fe977b45a3269336c77f3ae4641a6c48abf0fa35ab1a23fb571690786af02d6cec08255a43499b0b25c5633800f7ae882ace450cce905e3060fa9e6995047ae languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.1 - resolution: "@types/babel__traverse@npm:7.20.1" + version: 7.20.2 + resolution: "@types/babel__traverse@npm:7.20.2" dependencies: "@babel/types": ^7.20.7 - checksum: 58341e23c649c0eba134a1682d4f20d027fad290d92e5740faa1279978f6ed476fc467ae51ce17a877e2566d805aeac64eae541168994367761ec883a4150221 + checksum: 981340286479524436348d32373eaa3bf993c635cbf70307b4b69463eee83406a959ac4844f683911e0db8ab8d9f0025ab630dc7a8c170fee9ee74144c2a528f languageName: node linkType: hard "@types/body-parser@npm:*": - version: 1.19.2 - resolution: "@types/body-parser@npm:1.19.2" + version: 1.19.3 + resolution: "@types/body-parser@npm:1.19.3" dependencies: "@types/connect": "*" "@types/node": "*" - checksum: e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 + checksum: 932fa71437c275023799123680ef26ffd90efd37f51a1abe405e6ae6e5b4ad9511b7a3a8f5a12877ed1444a02b6286c0a137a98e914b3c61932390c83643cc2c languageName: node linkType: hard @@ -1013,9 +1004,9 @@ __metadata: linkType: hard "@types/http-errors@npm:*": - version: 2.0.1 - resolution: "@types/http-errors@npm:2.0.1" - checksum: 3bb0c50b0a652e679a84c30cd0340d696c32ef6558518268c238840346c077f899315daaf1c26c09c57ddd5dc80510f2a7f46acd52bf949e339e35ed3ee9654f + version: 2.0.2 + resolution: "@types/http-errors@npm:2.0.2" + checksum: d7f14045240ac4b563725130942b8e5c8080bfabc724c8ff3f166ea928ff7ae02c5194763bc8f6aaf21897e8a44049b0492493b9de3e058247e58fdfe0f86692 languageName: node linkType: hard @@ -1055,11 +1046,11 @@ __metadata: linkType: hard "@types/jsonfile@npm:*": - version: 6.1.1 - resolution: "@types/jsonfile@npm:6.1.1" + version: 6.1.2 + resolution: "@types/jsonfile@npm:6.1.2" dependencies: "@types/node": "*" - checksum: 0f8fe0a9221a00e8413cffba723dfe16553868724b830237256fb0052ecd5cac96498189d1235a001cfa815f352008261c9ceb373f0aa58227f891e0c7a12c4d + checksum: 3e020944de09e54ef7c4200dfbbedba76da417a58c712611ff9d30921e214dfabbe81dadd4d6608647a3ee8900d445407d7336dd991b8fe6df4249320ad4a1b4 languageName: node linkType: hard @@ -1078,9 +1069,9 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 20.6.0 - resolution: "@types/node@npm:20.6.0" - checksum: 52611801af5cf151c6fac1963aa4a8a8ca2e388a9e9ed82b01b70bca762088ded5b32cc789c5564220d5d7dccba2b8dd34446a3d4fc74736805e1f2cf262e29d + version: 20.6.2 + resolution: "@types/node@npm:20.6.2" + checksum: 96fe5303872640a173f3fd43e289a451776ed5b8f0090094447c6790b43f23fb607eea8268af0829cef4d132e5afa0bfa4cd871aa7412e9042a414a698e9e971 languageName: node linkType: hard @@ -1639,9 +1630,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001517": - version: 1.0.30001532 - resolution: "caniuse-lite@npm:1.0.30001532" - checksum: 613abeb15e03dde307d543195a7860f7ba7450c9c9262d45642b2c8fbe097914fa060d68c8647f9d443947b1f62b09d891858bde7d2cac94fae8133a0b518b28 + version: 1.0.30001538 + resolution: "caniuse-lite@npm:1.0.30001538" + checksum: 94c5d55757a339c7cc175f08a024671e2b4e7c04f130b1015793303d637061347efb6ad84447c3b8137333e742d150b8ad9672716bbf2482646c2e63a56f6c55 languageName: node linkType: hard @@ -2088,9 +2079,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.477": - version: 1.4.513 - resolution: "electron-to-chromium@npm:1.4.513" - checksum: 613b66da177dcf5abca2441c502cde4b4fb247665dc049c54d1fe3b79fc3a5a3ecae92faf97d3147af0fec9c50bf90db09e8ca3f0953a5ec2fdb472d6d6253c2 + version: 1.4.523 + resolution: "electron-to-chromium@npm:1.4.523" + checksum: c090a958afe7849d9d1a0d3ed3a2300ded202374cd68013f9114fac33c506268b3e08a204c3f6e0ad4fe56a3ae75d23a8325cf9474e2954c6d0ddef6a018780c languageName: node linkType: hard @@ -2301,20 +2292,7 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0": - version: 29.6.4 - resolution: "expect@npm:29.6.4" - dependencies: - "@jest/expect-utils": ^29.6.4 - jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.6.4 - jest-message-util: ^29.6.3 - jest-util: ^29.6.3 - checksum: 019b187d665562e4948b239e011a8791363e916f3076a229298d625e67fdadb06e8c2748798c49b4cf418ea223673eadd1de06537e08ba3c055c6f0efefc2306 - languageName: node - linkType: hard - -"expect@npm:^29.7.0": +"expect@npm:^29.0.0, expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" dependencies: @@ -3289,18 +3267,6 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.6.4": - version: 29.6.4 - resolution: "jest-diff@npm:29.6.4" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.6.3 - jest-get-type: ^29.6.3 - pretty-format: ^29.6.3 - checksum: e205c45ab6dbcc660dc2a682cddb20f6a3cbbbdecd2821cce2050619f96dbd7560ee25f7f51d42c302596aeaddbea54390b78be3ab639340d24d67e4d270a8b0 - languageName: node - linkType: hard - "jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -3389,18 +3355,6 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:^29.6.4": - version: 29.6.4 - resolution: "jest-matcher-utils@npm:29.6.4" - dependencies: - chalk: ^4.0.0 - jest-diff: ^29.6.4 - jest-get-type: ^29.6.3 - pretty-format: ^29.6.3 - checksum: 9e17bce282e74bdbba2ce5475c490e0bba4f464cd42132bfc5df0337e0853af4dba925c7f4f61cbb0a4818fa121d28d7ff0196ec8829773a22fce59a822976d2 - languageName: node - linkType: hard - "jest-matcher-utils@npm:^29.7.0": version: 29.7.0 resolution: "jest-matcher-utils@npm:29.7.0" @@ -3413,23 +3367,6 @@ __metadata: languageName: node linkType: hard -"jest-message-util@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-message-util@npm:29.6.3" - dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.3 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.6.3 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: 59f5229a06c073a8877ba4d2e304cc07d63b0062bf5764d4bed14364403889e77f1825d1bd9017c19a840847d17dffd414dc06f1fcb537b5f9e03dbc65b84ada - languageName: node - linkType: hard - "jest-message-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-message-util@npm:29.7.0" @@ -3591,20 +3528,6 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-util@npm:29.6.3" - dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: 7bf3ba3ac67ac6ceff7d8fdd23a86768e23ddd9133ecd9140ef87cc0c28708effabaf67a6cd45cd9d90a63d645a522ed0825d09ee59ac4c03b9c473b1fef4c7c - languageName: node - linkType: hard - "jest-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-util@npm:29.7.0" @@ -4685,18 +4608,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.3": - version: 29.6.3 - resolution: "pretty-format@npm:29.6.3" - dependencies: - "@jest/schemas": ^29.6.3 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: 4e1c0db48e65571c22e80ff92123925ff8b3a2a89b71c3a1683cfde711004d492de32fe60c6bc10eea8bf6c678e5cbe544ac6c56cb8096e1eb7caf856928b1c4 - languageName: node - linkType: hard - -"pretty-format@npm:^29.7.0": +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: @@ -4882,28 +4794,28 @@ __metadata: linkType: hard "resolve@npm:^1.20.0, resolve@npm:^1.22.1": - version: 1.22.4 - resolution: "resolve@npm:1.22.4" + version: 1.22.6 + resolution: "resolve@npm:1.22.6" dependencies: is-core-module: ^2.13.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 23f25174c2736ce24c6d918910e0d1f89b6b38fefa07a995dff864acd7863d59a7f049e691f93b4b2ee29696303390d921552b6d1b841ed4a8101f517e1d0124 + checksum: d13bf66d4e2ee30d291491f16f2fa44edd4e0cefb85d53249dd6f93e70b2b8c20ec62f01b18662e3cd40e50a7528f18c4087a99490048992a3bb954cf3201a5b languageName: node linkType: hard "resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": - version: 1.22.4 - resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin::version=1.22.4&hash=07638b" + version: 1.22.6 + resolution: "resolve@patch:resolve@npm%3A1.22.6#~builtin::version=1.22.6&hash=07638b" dependencies: is-core-module: ^2.13.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: c45f2545fdc4d21883861b032789e20aa67a2f2692f68da320cc84d5724cd02f2923766c5354b3210897e88f1a7b3d6d2c7c22faeead8eed7078e4c783a444bc + checksum: 9d3b3c67aefd12cecbe5f10ca4d1f51ea190891096497c43f301b086883b426466918c3a64f1bbf1788fabb52b579d58809614006c5d0b49186702b3b8fb746a languageName: node linkType: hard @@ -4964,15 +4876,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 - languageName: node - linkType: hard - "semver@npm:^5.3.0, semver@npm:^5.5.0": version: 5.7.2 resolution: "semver@npm:5.7.2" @@ -4991,7 +4894,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.2, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:~7.5.0": +"semver@npm:^7.2, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:~7.5.0, semver@npm:~7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -5331,8 +5234,8 @@ __metadata: linkType: hard "systeminformation@npm:^5.7": - version: 5.21.4 - resolution: "systeminformation@npm:5.21.4" + version: 5.21.6 + resolution: "systeminformation@npm:5.21.6" bin: systeminformation: lib/cli.js conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) diff --git a/yarn.lock b/yarn.lock index fc28d606992..44bea364b2c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,3 +1,6 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + __metadata: version: 6 cacheKey: 8 @@ -42,33 +45,33 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/compat-data@npm:7.22.9" - checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 +"@babel/compat-data@npm:^7.22.20, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": + version: 7.22.20 + resolution: "@babel/compat-data@npm:7.22.20" + checksum: efedd1d18878c10fde95e4d82b1236a9aba41395ef798cbb651f58dbf5632dbff475736c507b8d13d4c8f44809d41c0eb2ef0d694283af9ba5dd8339b6dab451 languageName: node linkType: hard -"@babel/core@npm:7.22.17, @babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": - version: 7.22.17 - resolution: "@babel/core@npm:7.22.17" +"@babel/core@npm:7.22.20, @babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": + version: 7.22.20 + resolution: "@babel/core@npm:7.22.20" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.22.13 "@babel/generator": ^7.22.15 "@babel/helper-compilation-targets": ^7.22.15 - "@babel/helper-module-transforms": ^7.22.17 + "@babel/helper-module-transforms": ^7.22.20 "@babel/helpers": ^7.22.15 "@babel/parser": ^7.22.16 "@babel/template": ^7.22.15 - "@babel/traverse": ^7.22.17 - "@babel/types": ^7.22.17 + "@babel/traverse": ^7.22.20 + "@babel/types": ^7.22.19 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: 355216a342d1b3952d7c040dd4c99ecef6b3501ba99a713703c1fec1ae73bc92a48a0c1234562bdbb4fd334b2e452f5a6c3bb282f0e613fa89e1518c91d1aea1 + checksum: 73663a079194b5dc406b2e2e5e50db81977d443e4faf7ef2c27e5836cd9a359e81e551115193dc9b1a93471275351a972e54904f4d3aa6cb156f51e26abf6765 languageName: node linkType: hard @@ -176,10 +179,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-environment-visitor@npm:7.22.5" - checksum: 248532077d732a34cd0844eb7b078ff917c3a8ec81a7f133593f71a860a582f05b60f818dc5049c2212e5baa12289c27889a4b81d56ef409b4863db49646c4b1 +"@babel/helper-environment-visitor@npm:^7.22.20, @babel/helper-environment-visitor@npm:^7.22.5": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 languageName: node linkType: hard @@ -202,7 +205,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.22.5": +"@babel/helper-member-expression-to-functions@npm:^7.22.15": version: 7.22.15 resolution: "@babel/helper-member-expression-to-functions@npm:7.22.15" dependencies: @@ -220,18 +223,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.15, @babel/helper-module-transforms@npm:^7.22.17, @babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": - version: 7.22.17 - resolution: "@babel/helper-module-transforms@npm:7.22.17" +"@babel/helper-module-transforms@npm:^7.22.15, @babel/helper-module-transforms@npm:^7.22.20, @babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": + version: 7.22.20 + resolution: "@babel/helper-module-transforms@npm:7.22.20" dependencies: - "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.20 "@babel/helper-module-imports": ^7.22.15 "@babel/helper-simple-access": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.15 + "@babel/helper-validator-identifier": ^7.22.20 peerDependencies: "@babel/core": ^7.0.0 - checksum: 458021c74093e66179765fcc9d1c1cb694f7bdf98656f23486901d35636495c38aab4661547fac2142e13d887987d1ea30cc9fe42968376a51a99bcd207b4989 + checksum: 8fce25362df8711bd4620f41c5c18769edfeafe7f8f1dae9691966ef368e57f9da68dfa1707cd63c834c89dc4eaa82c26f12ea33e88fd262ac62844b11dcc389 languageName: node linkType: hard @@ -252,28 +255,28 @@ __metadata: linkType: hard "@babel/helper-remap-async-to-generator@npm:^7.22.5, @babel/helper-remap-async-to-generator@npm:^7.22.9": - version: 7.22.17 - resolution: "@babel/helper-remap-async-to-generator@npm:7.22.17" + version: 7.22.20 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.20" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-wrap-function": ^7.22.17 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-wrap-function": ^7.22.20 peerDependencies: "@babel/core": ^7.0.0 - checksum: 59307e623d00b6f5fa7f974e29081b2243e3f7bc3a89df331e8c1f8815d83f97bd092404a28b8bef5299028e3259450b5a943f34e1b32c7c55350436d218ab13 + checksum: 2fe6300a6f1b58211dffa0aed1b45d4958506d096543663dba83bd9251fe8d670fa909143a65b45e72acb49e7e20fbdb73eae315d9ddaced467948c3329986e7 languageName: node linkType: hard "@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-replace-supers@npm:7.22.9" + version: 7.22.20 + resolution: "@babel/helper-replace-supers@npm:7.22.20" dependencies: - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-member-expression-to-functions": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-member-expression-to-functions": ^7.22.15 "@babel/helper-optimise-call-expression": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0 - checksum: d41471f56ff2616459d35a5df1900d5f0756ae78b1027040365325ef332d66e08e3be02a9489756d870887585ff222403a228546e93dd7019e19e59c0c0fe586 + checksum: a0008332e24daedea2e9498733e3c39b389d6d4512637e000f96f62b797e702ee24a407ccbcd7a236a551590a38f31282829a8ef35c50a3c0457d88218cae639 languageName: node linkType: hard @@ -311,10 +314,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.15, @babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-validator-identifier@npm:7.22.15" - checksum: eb0bee4bda664c0959924bc1ad5611eacfce806f46612202dd164fef1df8fef1a11682a1e7615288987100e9fb304982b6e2a4ff07ffe842ab8765b95ed1118c +"@babel/helper-validator-identifier@npm:^7.22.19, @babel/helper-validator-identifier@npm:^7.22.20, @babel/helper-validator-identifier@npm:^7.22.5": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc languageName: node linkType: hard @@ -325,14 +328,14 @@ __metadata: languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.22.17": - version: 7.22.17 - resolution: "@babel/helper-wrap-function@npm:7.22.17" +"@babel/helper-wrap-function@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-wrap-function@npm:7.22.20" dependencies: "@babel/helper-function-name": ^7.22.5 "@babel/template": ^7.22.15 - "@babel/types": ^7.22.17 - checksum: 95328b508049b6edd9cadd2ac89b4d4812ebdfa54a2ae77791939d795d88d561b31fd3669eea5d13558372cf2422eda05177d7f742690b5023c712bc3f0aec8e + "@babel/types": ^7.22.19 + checksum: 221ed9b5572612aeb571e4ce6a256f2dee85b3c9536f1dd5e611b0255e5f59a3d0ec392d8d46d4152149156a8109f92f20379b1d6d36abb613176e0e33f05fca languageName: node linkType: hard @@ -348,13 +351,13 @@ __metadata: linkType: hard "@babel/highlight@npm:^7.22.13": - version: 7.22.13 - resolution: "@babel/highlight@npm:7.22.13" + version: 7.22.20 + resolution: "@babel/highlight@npm:7.22.20" dependencies: - "@babel/helper-validator-identifier": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 chalk: ^2.4.2 js-tokens: ^4.0.0 - checksum: 7266d2bff8aa8fc78eb65b6e92a8211e12897a731126a282d2f9bb50d8fcaa4c1b02af2284f990ac7e3ab8d892d448a2cab8f5ed0ea8a90bce2c025b11ebe802 + checksum: 84bd034dca309a5e680083cd827a766780ca63cef37308404f17653d32366ea76262bd2364b2d38776232f2d01b649f26721417d507e8b4b6da3e4e739f6d134 languageName: node linkType: hard @@ -1301,11 +1304,11 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:7.22.15, @babel/preset-env@npm:^7.11.0": - version: 7.22.15 - resolution: "@babel/preset-env@npm:7.22.15" +"@babel/preset-env@npm:7.22.20, @babel/preset-env@npm:^7.11.0": + version: 7.22.20 + resolution: "@babel/preset-env@npm:7.22.20" dependencies: - "@babel/compat-data": ^7.22.9 + "@babel/compat-data": ^7.22.20 "@babel/helper-compilation-targets": ^7.22.15 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-validator-option": ^7.22.15 @@ -1379,7 +1382,7 @@ __metadata: "@babel/plugin-transform-unicode-regex": ^7.22.5 "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 "@babel/preset-modules": 0.1.6-no-external-plugins - "@babel/types": ^7.22.15 + "@babel/types": ^7.22.19 babel-plugin-polyfill-corejs2: ^0.4.5 babel-plugin-polyfill-corejs3: ^0.8.3 babel-plugin-polyfill-regenerator: ^0.5.2 @@ -1387,7 +1390,7 @@ __metadata: semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c3cf0223cab006cbf0c563a49a5076caa0b62e3b61b4f10ba857347fcd4f85dbb662a78e6f289e4f29f72c36974696737ae86c23da114617f5b00ab2c1c66126 + checksum: 99357a5cb30f53bacdc0d1cd6dff0f052ea6c2d1ba874d969bba69897ef716e87283e84a59dc52fb49aa31fd1b6f55ed756c64c04f5678380700239f6030b881 languageName: node linkType: hard @@ -1462,32 +1465,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.22.15, @babel/traverse@npm:^7.22.17": - version: 7.22.17 - resolution: "@babel/traverse@npm:7.22.17" +"@babel/traverse@npm:^7.22.15, @babel/traverse@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/traverse@npm:7.22.20" dependencies: "@babel/code-frame": ^7.22.13 "@babel/generator": ^7.22.15 - "@babel/helper-environment-visitor": ^7.22.5 + "@babel/helper-environment-visitor": ^7.22.20 "@babel/helper-function-name": ^7.22.5 "@babel/helper-hoist-variables": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 "@babel/parser": ^7.22.16 - "@babel/types": ^7.22.17 + "@babel/types": ^7.22.19 debug: ^4.1.0 globals: ^11.1.0 - checksum: 1153ca166a0a9b3fddf67f7f7c8c5b4f88aa2c2c00261ff2fc8424a63bc93250ed3fd08b04bd526ad19e797aeb6f22161120646a570cbfe5ff2a5d2f5d28af01 + checksum: 97da9afa7f8f505ce52c36ac2531129bc4a0e250880aaf9b467dc044f30a5bce2b756c1af4d961958bc225659546e811a7d536ab3d920fd60921087989b841b9 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.17, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.22.17 - resolution: "@babel/types@npm:7.22.17" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.22.19 + resolution: "@babel/types@npm:7.22.19" dependencies: "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.15 + "@babel/helper-validator-identifier": ^7.22.19 to-fast-properties: ^2.0.0 - checksum: 7382220f6eb2548f2c867a98916c3aa8a6063498d5372e5d21d8d184ba354033defb72aeba5858c1b2b42177058b896a34a7dcbae5eccd47fb0104721efa909d + checksum: 2d69740e69b55ba36ece0c17d5afb7b7213b34297157df39ef9ba24965aff677c56f014413052ecc5b2fbbf26910c63e5bb24a969df84d7a17153750cf75915e languageName: node linkType: hard @@ -1831,9 +1834,9 @@ __metadata: linkType: hard "@cspell/dict-php@npm:^4.0.2": - version: 4.0.2 - resolution: "@cspell/dict-php@npm:4.0.2" - checksum: 29cd4e080cab8eac34f540e5b1e65dfb9e6b02f0414ec6041256487a7fb03e3d598dd83d0c01bf7444644c069b1070a2387fa770598306de23d943d114ac12c2 + version: 4.0.3 + resolution: "@cspell/dict-php@npm:4.0.3" + checksum: 98040e804e3ca67df965a3ea1840d68369d7b32cf6176a63605759e40a2325321f24723c4f24525a6cdf8d35bbc975ed6424a1a581775fb8cf7e55b5b2e60c89 languageName: node linkType: hard @@ -1955,7 +1958,7 @@ __metadata: languageName: node linkType: hard -"@csstools/cascade-layer-name-parser@npm:^1.0.3, @csstools/cascade-layer-name-parser@npm:^1.0.4": +"@csstools/cascade-layer-name-parser@npm:^1.0.4": version: 1.0.4 resolution: "@csstools/cascade-layer-name-parser@npm:1.0.4" peerDependencies: @@ -1995,7 +1998,7 @@ __metadata: languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^2.3.0, @csstools/css-parser-algorithms@npm:^2.3.1": +"@csstools/css-parser-algorithms@npm:^2.3.1": version: 2.3.1 resolution: "@csstools/css-parser-algorithms@npm:2.3.1" peerDependencies: @@ -2004,14 +2007,14 @@ __metadata: languageName: node linkType: hard -"@csstools/css-tokenizer@npm:^2.1.1, @csstools/css-tokenizer@npm:^2.2.0": +"@csstools/css-tokenizer@npm:^2.2.0": version: 2.2.0 resolution: "@csstools/css-tokenizer@npm:2.2.0" checksum: d6b3ead496e187cbf89b5e08a55be7a8393676c2b93526f7f051418376d08146f9f533708aca5eec6a07d925ea6a7e65b0e0bb36aabeba657666e968b8d89cd0 languageName: node linkType: hard -"@csstools/media-query-list-parser@npm:^2.1.2, @csstools/media-query-list-parser@npm:^2.1.4": +"@csstools/media-query-list-parser@npm:^2.1.4": version: 2.1.4 resolution: "@csstools/media-query-list-parser@npm:2.1.4" peerDependencies: @@ -2033,31 +2036,31 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-color-function@npm:^3.0.3": - version: 3.0.3 - resolution: "@csstools/postcss-color-function@npm:3.0.3" +"@csstools/postcss-color-function@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/postcss-color-function@npm:3.0.4" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.0 + "@csstools/postcss-progressive-custom-properties": ^3.0.1 peerDependencies: postcss: ^8.4 - checksum: 9cef65142823670e9ab6667c8855f7499716eab6c2b880d8dbcebaf4c1c720df7c5417d6686b78b162a7c214c5c4e3c04621095182463d9f86a5e58f96a98828 + checksum: b1ac1b33453f4df154aa50b54a01a74fa4c659c1c15cd0d83080396f6e5e9974a514f9a16a058262dd3236dc245763040478a83da8e675883d03dff33db6e577 languageName: node linkType: hard -"@csstools/postcss-color-mix-function@npm:^2.0.3": - version: 2.0.3 - resolution: "@csstools/postcss-color-mix-function@npm:2.0.3" +"@csstools/postcss-color-mix-function@npm:^2.0.4": + version: 2.0.4 + resolution: "@csstools/postcss-color-mix-function@npm:2.0.4" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.0 + "@csstools/postcss-progressive-custom-properties": ^3.0.1 peerDependencies: postcss: ^8.4 - checksum: 20c371381de7b65373b17f2f6f4568296bda3503ea25ed2090e03d71949770811fdd839a02608bf3a6cb6a300e4a1c45ca9d9bfc5aacc601420b6078a5378a86 + checksum: f52ca6367273e5a5b4139b422998a91496e26fdde7f91c48099093503fd24d72d9c1603b492c11b6f31d0b6dea72cb283d7c68cc5381c8c9bc6fb32ea31d92d8 languageName: node linkType: hard @@ -2085,17 +2088,17 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-gradients-interpolation-method@npm:^4.0.3": - version: 4.0.3 - resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.3" +"@csstools/postcss-gradients-interpolation-method@npm:^4.0.4": + version: 4.0.4 + resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.4" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.0 + "@csstools/postcss-progressive-custom-properties": ^3.0.1 peerDependencies: postcss: ^8.4 - checksum: 4433768c89b96f5d506ab02b1d266a499c4e4ed0b568573e38dd009c9dc9a23fed4f2319a52b9097fbe8d158607de14e32b997b3c9f1c2241e582136d54bd7ca + checksum: 796a0a79da02393df562c961effa516e047721f0b4055791702878320465dc5d583ced3705295dd3bc9c03c2f64dbd56971f0b8079df2fc19638f408ff2bceef languageName: node linkType: hard @@ -2112,27 +2115,36 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-ic-unit@npm:^3.0.0": - version: 3.0.0 - resolution: "@csstools/postcss-ic-unit@npm:3.0.0" +"@csstools/postcss-ic-unit@npm:^3.0.1": + version: 3.0.1 + resolution: "@csstools/postcss-ic-unit@npm:3.0.1" dependencies: - "@csstools/postcss-progressive-custom-properties": ^3.0.0 + "@csstools/postcss-progressive-custom-properties": ^3.0.1 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 91bbe46c8691f641d610f8878fa5a8a01cbf7cb8f2b79222c3de4c21c2afa5e82654fd169b507faa424c8cd8711677aadaa978df4d25269b811be36615eebf61 + checksum: b8120d8e2886cb5fc3276d576b7351821665575d0f2f3cf58c2a376352a19f21c88087ebb8f55bdfe094b2d4f9ef25e5bc8e0944e1761760b4f8c34032b04d9a languageName: node linkType: hard -"@csstools/postcss-is-pseudo-class@npm:^4.0.1": - version: 4.0.1 - resolution: "@csstools/postcss-is-pseudo-class@npm:4.0.1" +"@csstools/postcss-initial@npm:^1.0.0": + version: 1.0.0 + resolution: "@csstools/postcss-initial@npm:1.0.0" + peerDependencies: + postcss: ^8.4 + checksum: 21d15759921509ddc78505265bd376854bf2710cdc27f62c138d4ee991581a34bebd8f61f100fd053e0bb95760121f1e1e4dbe61ae41cbef7b3f817e42c35743 + languageName: node + linkType: hard + +"@csstools/postcss-is-pseudo-class@npm:^4.0.2": + version: 4.0.2 + resolution: "@csstools/postcss-is-pseudo-class@npm:4.0.2" dependencies: "@csstools/selector-specificity": ^3.0.0 postcss-selector-parser: ^6.0.13 peerDependencies: postcss: ^8.4 - checksum: eff256d0c7bf84a4a4fb1dffae54b9ab019b5aec3e2bcc9a41b19e71044a060a282f65f2ef2e4e1f679cd0a6db7fa0622c95220ece22a116181cffd0dffb7e11 + checksum: ef944cbcd4ced80dcf6b276ec8e818389c07a3986036e479adc0f0cdf4b4a65e0230aa5e9f31843e1dfdfe1654d3b301aabbeeca4cd99221712970023c937461 languageName: node linkType: hard @@ -2156,14 +2168,14 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-logical-viewport-units@npm:^2.0.1": - version: 2.0.1 - resolution: "@csstools/postcss-logical-viewport-units@npm:2.0.1" +"@csstools/postcss-logical-viewport-units@npm:^2.0.2": + version: 2.0.2 + resolution: "@csstools/postcss-logical-viewport-units@npm:2.0.2" dependencies: "@csstools/css-tokenizer": ^2.2.0 peerDependencies: postcss: ^8.4 - checksum: f779267989a9e46e7bcf2163a4ae1862d2af171248c31adcd6b1fba73611dbf788d5c58c90c9ef0851db63fa00b2dc09e6883ebc31645ddf5cbbe2da2b7616c0 + checksum: 6d6a86b41cd846d1298a0bdb39f03ece179bc8e1fb96c9d129658102952a389a6f4110ead25d7d8c65ff74313b59a567a4a2e9000a290777d69892b08742fef1 languageName: node linkType: hard @@ -2205,53 +2217,53 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-normalize-display-values@npm:^3.0.0": - version: 3.0.0 - resolution: "@csstools/postcss-normalize-display-values@npm:3.0.0" +"@csstools/postcss-normalize-display-values@npm:^3.0.1": + version: 3.0.1 + resolution: "@csstools/postcss-normalize-display-values@npm:3.0.1" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: fcb1c3f862b5966558e1ea91a8e91db86afc34cfe5cc4c2d19a4126153b87a041533dec9a8887f0fa284c361de30a38262799aa83dcc789ed336abc9b17f8d97 + checksum: 895873a7ec7551962fd2c03207b7899cc0f6a575b9bf816de49afff15b28dd751e8cf6fbf2a3bfb8372993309d600b3f35236ddf249a59ecf7c981ec72628305 languageName: node linkType: hard -"@csstools/postcss-oklab-function@npm:^3.0.3": - version: 3.0.3 - resolution: "@csstools/postcss-oklab-function@npm:3.0.3" +"@csstools/postcss-oklab-function@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/postcss-oklab-function@npm:3.0.4" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.0 + "@csstools/postcss-progressive-custom-properties": ^3.0.1 peerDependencies: postcss: ^8.4 - checksum: 4e3c6f6b9388d23d5c7a8c1b35912af354af5ca985552f7a2d01c6efe5a11e0a6ebeeaa4fd5a159c41a76292856f19de1388772718d3d46f91d41ff6bdd61d85 + checksum: 714a3cd27e2c46a925b74eeb6d1840dc3088655fb49b83aae8632416fcbec0797acde31bdbd9d26ba6707663675ba78a92ccfb12c1f35eec41a5731ed3c32f4f languageName: node linkType: hard -"@csstools/postcss-progressive-custom-properties@npm:^3.0.0": - version: 3.0.0 - resolution: "@csstools/postcss-progressive-custom-properties@npm:3.0.0" +"@csstools/postcss-progressive-custom-properties@npm:^3.0.1": + version: 3.0.1 + resolution: "@csstools/postcss-progressive-custom-properties@npm:3.0.1" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 4b92e5ae893c45bfd4109a0c5b90180af9df121e38a1ad0e828c29bec4f487b89af9140a1d9c58b83ebc28303b733f62926c8bb8cc72ac9db6e10a1e7a31c9ee + checksum: 4bb03459c5f39fcd77518c8229026b68cc24746e44234604fc4f93ea4c6fccf01d23e8cad6043a23e1bc7ce3b677f5d038b9b63ea5971231bb7787535fa035ed languageName: node linkType: hard -"@csstools/postcss-relative-color-syntax@npm:^2.0.3": - version: 2.0.3 - resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.3" +"@csstools/postcss-relative-color-syntax@npm:^2.0.4": + version: 2.0.4 + resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.4" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.0 + "@csstools/postcss-progressive-custom-properties": ^3.0.1 peerDependencies: postcss: ^8.4 - checksum: 02465a12737805474e0ff0dbe83a770aaa53f6b7e3a82f47c24cc0a89e392c958e04194e1938e341265748aae1aacc0a59b806aa2c53384a3875663fecf1b6f3 + checksum: 5c1b13e8e17e206547b0cef55d227d66e5a1cf96a11eb91a2ea176cad3c6dd5abec88c742ba90d4812f3cbbd9ef88d2a80b31e6858345e2966393ab7f3fd784f languageName: node linkType: hard @@ -2279,15 +2291,15 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-text-decoration-shorthand@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/postcss-text-decoration-shorthand@npm:3.0.2" +"@csstools/postcss-text-decoration-shorthand@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/postcss-text-decoration-shorthand@npm:3.0.3" dependencies: "@csstools/color-helpers": ^3.0.2 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: ce0eedb04f628b874a20caff68848ca98fc8731852a4da8c0014f093d593f920be3ae024b272444e10cdc3c1779630426d288d6cb57883f2c7b2b0ea9f5ed7c3 + checksum: c39e4e7aa275f49c2dc565e606bdecc6605eac3fd46c1bdf551b75674034511c666294f935e203c2e0103f7c422c09ccdbbe1a5c3fb16991072744a963a820ad languageName: node linkType: hard @@ -2322,48 +2334,48 @@ __metadata: languageName: node linkType: hard -"@datadog/browser-core@npm:4.48.2": - version: 4.48.2 - resolution: "@datadog/browser-core@npm:4.48.2" - checksum: 28002c637ccdab1f6035e75e87e27a5c73a19391f08465c7e06c7b9b4cdddf26e6702c534455bbbe6e343ed9acb747e9702539b957022780f09ceb4ac2a0920c +"@datadog/browser-core@npm:4.49.0": + version: 4.49.0 + resolution: "@datadog/browser-core@npm:4.49.0" + checksum: 627f60073efdc518b022419f4b35d21a3e46dbecbf20a22286035a2d1828cfa854c8ac905773122622a408e6318059463f880530a2eb1339c3ba99e7c0ac194c languageName: node linkType: hard -"@datadog/browser-logs@npm:^4.48.2": - version: 4.48.2 - resolution: "@datadog/browser-logs@npm:4.48.2" +"@datadog/browser-logs@npm:^4.49.0": + version: 4.49.0 + resolution: "@datadog/browser-logs@npm:4.49.0" dependencies: - "@datadog/browser-core": 4.48.2 + "@datadog/browser-core": 4.49.0 peerDependencies: - "@datadog/browser-rum": 4.48.2 + "@datadog/browser-rum": 4.49.0 peerDependenciesMeta: "@datadog/browser-rum": optional: true - checksum: 4040e585f013522e4b14bfffc3699c08ed712fe435e4f304e03cfce725602e7e723bab8a663a0501574c5702f1418e5ad86b5794f23274b3ce220f2bdc722809 + checksum: a68a89fbfeb03a1929ee9ab2a97d8d85980f655cd495ded27cbe619f9d07d3686a7ae890028bfbfa0f94a455de2bdbf3cad246372dfd0c2833dafce251e768cb languageName: node linkType: hard -"@datadog/browser-rum-core@npm:4.48.2": - version: 4.48.2 - resolution: "@datadog/browser-rum-core@npm:4.48.2" +"@datadog/browser-rum-core@npm:4.49.0": + version: 4.49.0 + resolution: "@datadog/browser-rum-core@npm:4.49.0" dependencies: - "@datadog/browser-core": 4.48.2 - checksum: e1f2b3d6c620723b9e36ef0ae0344efa1a2b8e03ba96807bd28eda6561147f53cc01018f7673bba8b65e20bbea668a22cdbe10894242e28f5899432e1035eab0 + "@datadog/browser-core": 4.49.0 + checksum: 497a8b39cb02dc8867016303b75215c7919f047e31e54d931e3c60ba33a856c4b60e96115f6993cd8bec1623ff0e13ab26398ade69ad68006f8de38ee2a5595a languageName: node linkType: hard -"@datadog/browser-rum@npm:^4.48.2": - version: 4.48.2 - resolution: "@datadog/browser-rum@npm:4.48.2" +"@datadog/browser-rum@npm:^4.49.0": + version: 4.49.0 + resolution: "@datadog/browser-rum@npm:4.49.0" dependencies: - "@datadog/browser-core": 4.48.2 - "@datadog/browser-rum-core": 4.48.2 + "@datadog/browser-core": 4.49.0 + "@datadog/browser-rum-core": 4.49.0 peerDependencies: - "@datadog/browser-logs": 4.48.2 + "@datadog/browser-logs": 4.49.0 peerDependenciesMeta: "@datadog/browser-logs": optional: true - checksum: 3d1a42d6dfdb5b632221bd41863103e409c025e60bc2338e428e495bcc4d7df00657373f62b7d4da6a26b4c997a4462e34e0cc4358e48bdb51abc41b75af4613 + checksum: 9b1578538b781aab1365243853eef9fe0f5c78f7fcded38a3a32f09df02b42561bf42bc472145e45d9724874091f7d09168141327977398633ff355c2d3a4f25 languageName: node linkType: hard @@ -2523,9 +2535,9 @@ __metadata: linkType: hard "@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.8.0 - resolution: "@eslint-community/regexpp@npm:4.8.0" - checksum: 601e6d033d556e98e8c929905bef335f20d7389762812df4d0f709d9b4d2631610dda975fb272e23b5b68e24a163b3851b114c8080a0a19fb4c141a1eff6305b + version: 4.8.1 + resolution: "@eslint-community/regexpp@npm:4.8.1" + checksum: 82d62c845ef42b810f268cfdc84d803a2da01735fb52e902fd34bdc09f92464a094fd8e4802839874b000b2f73f67c972859e813ba705233515d3e954f234bf2 languageName: node linkType: hard @@ -2560,29 +2572,29 @@ __metadata: languageName: node linkType: hard -"@floating-ui/core@npm:^1.4.1": - version: 1.4.1 - resolution: "@floating-ui/core@npm:1.4.1" +"@floating-ui/core@npm:^1.4.2": + version: 1.5.0 + resolution: "@floating-ui/core@npm:1.5.0" dependencies: - "@floating-ui/utils": ^0.1.1 - checksum: be4ab864fe17eeba5e205bd554c264b9a4895a57c573661bbf638357fa3108677fed7ba3269ec15b4da90e29274c9b626d5a15414e8d1fe691e210d02a03695c + "@floating-ui/utils": ^0.1.3 + checksum: 54b4fe26b3c228746ac5589f97303abf158b80aa5f8b99027259decd68d1c2030c4c637648ebd33dfe78a4212699453bc2bd7537fd5a594d3bd3e63d362f666f languageName: node linkType: hard "@floating-ui/dom@npm:^1.0.1": - version: 1.5.2 - resolution: "@floating-ui/dom@npm:1.5.2" + version: 1.5.3 + resolution: "@floating-ui/dom@npm:1.5.3" dependencies: - "@floating-ui/core": ^1.4.1 - "@floating-ui/utils": ^0.1.1 - checksum: 3c71eed50bb22cec8f1f31750ad3d42b3b7b4b29dc6e4351100ff05a62445a5404abb71c733320f8376a8c5e78852e1cfba1b81e22bfc4ca0728f50ca8998dc5 + "@floating-ui/core": ^1.4.2 + "@floating-ui/utils": ^0.1.3 + checksum: 00053742064aac70957f0bd5c1542caafb3bfe9716588bfe1d409fef72a67ed5e60450d08eb492a77f78c22ed1ce4f7955873cc72bf9f9caf2b0f43ae3561c21 languageName: node linkType: hard -"@floating-ui/utils@npm:^0.1.1": - version: 0.1.1 - resolution: "@floating-ui/utils@npm:0.1.1" - checksum: 548acdda7902f45b0afbe34e2e7f4cbff0696b95bad8c039f80936519de24ef2ec20e79902825b7815294b37f51a7c52ee86288b0688869a57cc229a164d86b4 +"@floating-ui/utils@npm:^0.1.3": + version: 0.1.4 + resolution: "@floating-ui/utils@npm:0.1.4" + checksum: e6195ded5b3a6fd38411a833605184c31f24609b08feab2615e90ccc063bf4d3965383d817642fc7e8ca5ab6a54c29c71103e874f3afb0518595c8bd3390ba16 languageName: node linkType: hard @@ -2826,15 +2838,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect-utils@npm:^29.6.4": - version: 29.6.4 - resolution: "@jest/expect-utils@npm:29.6.4" - dependencies: - jest-get-type: ^29.6.3 - checksum: a17059e02a4c0fca98e2abb7e9e58c70df3cd3d4ebcc6a960cb57c571726f7bd738c6cd008a9bf99770b77e92f7e21c75fe1f9ceec9b7a7710010f9340bb28ad - languageName: node - linkType: hard - "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -3654,10 +3657,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.8.0": - version: 1.8.0 - resolution: "@remix-run/router@npm:1.8.0" - checksum: f754f02d3b4fc86791b88acf16065000609e2324b9436027844a76831c7107c0994067cb83abdd6093c282bd518a5c89b5e02aead585782978586e3a04534428 +"@remix-run/router@npm:1.9.0": + version: 1.9.0 + resolution: "@remix-run/router@npm:1.9.0" + checksum: 0537b0ff29879ac85077cb4c42eaca4a295b9efd71477848984c2f2dfa5741c9b83d3106a7bb72994a51a9adfeeab3b0f5a40f2dee8be3f0750feeeca2a6d513 languageName: node linkType: hard @@ -3784,8 +3787,8 @@ __metadata: linkType: hard "@testing-library/dom@npm:^9.0.0": - version: 9.3.1 - resolution: "@testing-library/dom@npm:9.3.1" + version: 9.3.3 + resolution: "@testing-library/dom@npm:9.3.3" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 @@ -3795,7 +3798,7 @@ __metadata: dom-accessibility-api: ^0.5.9 lz-string: ^1.5.0 pretty-format: ^27.0.2 - checksum: 8ee3136451644e39990edea93709c38cf1e8ce5306f3c66273ca00935963faa51ca74e8d92b02eb442ccb842cfa28ca62833e393e075eb269cf9bef6f5600663 + checksum: 34e0a564da7beb92aa9cc44a9080221e2412b1a132eb37be3d513fe6c58027674868deb9f86195756d98d15ba969a30fe00632a4e26e25df2a5a4f6ac0686e37 languageName: node linkType: hard @@ -3879,43 +3882,43 @@ __metadata: linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.20.1 - resolution: "@types/babel__core@npm:7.20.1" + version: 7.20.2 + resolution: "@types/babel__core@npm:7.20.2" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 9fcd9691a33074802d9057ff70b0e3ff3778f52470475b68698a0f6714fbe2ccb36c16b43dc924eb978cd8a81c1f845e5ff4699e7a47606043b539eb8c6331a8 + checksum: 564fbaa8ff1305d50807ada0ec227c3e7528bebb2f8fe6b2ed88db0735a31511a74ad18729679c43eeed8025ed29d408f53059289719e95ab1352ed559a100bd languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.4 - resolution: "@types/babel__generator@npm:7.6.4" + version: 7.6.5 + resolution: "@types/babel__generator@npm:7.6.5" dependencies: "@babel/types": ^7.0.0 - checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 + checksum: c7459f5025c4c800eaf58f4db3b24e9d736331fe7df40961d9bc49f31b46e2a3be83dc9276e8688f10a5ed752ae153ad5f1bdd45e2245bac95273730b9115ec2 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.1 - resolution: "@types/babel__template@npm:7.4.1" + version: 7.4.2 + resolution: "@types/babel__template@npm:7.4.2" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee + checksum: 0fe977b45a3269336c77f3ae4641a6c48abf0fa35ab1a23fb571690786af02d6cec08255a43499b0b25c5633800f7ae882ace450cce905e3060fa9e6995047ae languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.1 - resolution: "@types/babel__traverse@npm:7.20.1" + version: 7.20.2 + resolution: "@types/babel__traverse@npm:7.20.2" dependencies: "@babel/types": ^7.20.7 - checksum: 58341e23c649c0eba134a1682d4f20d027fad290d92e5740faa1279978f6ed476fc467ae51ce17a877e2566d805aeac64eae541168994367761ec883a4150221 + checksum: 981340286479524436348d32373eaa3bf993c635cbf70307b4b69463eee83406a959ac4844f683911e0db8ab8d9f0025ab630dc7a8c170fee9ee74144c2a528f languageName: node linkType: hard @@ -4003,13 +4006,13 @@ __metadata: languageName: node linkType: hard -"@types/fs-extra@npm:11.0.1": - version: 11.0.1 - resolution: "@types/fs-extra@npm:11.0.1" +"@types/fs-extra@npm:11.0.2": + version: 11.0.2 + resolution: "@types/fs-extra@npm:11.0.2" dependencies: "@types/jsonfile": "*" "@types/node": "*" - checksum: 3e930346e5d84f419deb8ced1c582beef8cb20d0bd8a0eb145a37d75bab0572a1895f0e48a0d681d386b3a58b9a992b2d2acecc464bcaec2548f53ea00718651 + checksum: 5b3e30343ee62d2e393e1029355f13f64bab6f3416226e22492483f99da840e2e53ca22cbfa4ac3749f2f83f7086d19c009005c8fa175da01df0fae59c2d73e1 languageName: node linkType: hard @@ -4030,12 +4033,12 @@ __metadata: linkType: hard "@types/hoist-non-react-statics@npm:^3.3.0, @types/hoist-non-react-statics@npm:^3.3.1": - version: 3.3.1 - resolution: "@types/hoist-non-react-statics@npm:3.3.1" + version: 3.3.2 + resolution: "@types/hoist-non-react-statics@npm:3.3.2" dependencies: "@types/react": "*" hoist-non-react-statics: ^3.3.0 - checksum: 2c0778570d9a01d05afabc781b32163f28409bb98f7245c38d5eaf082416fdb73034003f5825eb5e21313044e8d2d9e1f3fe2831e345d3d1b1d20bcd12270719 + checksum: fe5d4b751e13f56010811fd6c4e49e53e2ccbcbbdc54bb8d86a413fbd08c5a83311bca9ef75a1a88d3ba62806711b5dea3f323c0e0f932b3a283dcebc3240238 languageName: node linkType: hard @@ -4071,13 +4074,13 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:29.5.4": - version: 29.5.4 - resolution: "@types/jest@npm:29.5.4" +"@types/jest@npm:29.5.5": + version: 29.5.5 + resolution: "@types/jest@npm:29.5.5" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: 38ed5942f44336452efd0f071eab60aaa57cd8d46530348d0a3aa5a691dcbf1366c4ca8f6ee8364efb45b4413bfefae443e5d4f469246a472a03b21ac11cd4ed + checksum: 56e55cde9949bcc0ee2fa34ce5b7c32c2bfb20e53424aa4ff3a210859eeaaa3fdf6f42f81a3f655238039cdaaaf108b054b7a8602f394e6c52b903659338d8c6 languageName: node linkType: hard @@ -4091,29 +4094,29 @@ __metadata: linkType: hard "@types/jquery@npm:^3": - version: 3.5.18 - resolution: "@types/jquery@npm:3.5.18" + version: 3.5.19 + resolution: "@types/jquery@npm:3.5.19" dependencies: "@types/sizzle": "*" - checksum: 6576bc9a6d35671ceb464e8f937b7eb916227b38b4edf8769a0bc628cfbb9f211b61ccd4158d42aa31591f2c6766b7095430f820d374f70245258ac6cec3e439 + checksum: 0298e53a353089e2abae4be2f660b5f2bfb4797464623701c5c2f2c911317b554f1887c2c3d587d0f724d70a3fb5e31907bf7fa5d96df33af07e2842660ef52a languageName: node linkType: hard -"@types/js-cookie@npm:3.0.3": - version: 3.0.3 - resolution: "@types/js-cookie@npm:3.0.3" - checksum: 927254ec37ce4fbe4d9d54f53a446b4351259799d9933db5808ddb7c430396aa2496bdd0a4e47e1b56048ffbec98645cbd4daa9e3ed9a6fff55e25eb640fcb15 +"@types/js-cookie@npm:3.0.4": + version: 3.0.4 + resolution: "@types/js-cookie@npm:3.0.4" + checksum: 46ac93974776a256f3cedadf60b45ded4d905a5e69986882d8c17baa351cb2e81a691864a1f19c3ca90eaa2cb3eeb7cb5426416b487a7d54cf5ff278d39d7870 languageName: node linkType: hard -"@types/jsdom@npm:21.1.2": - version: 21.1.2 - resolution: "@types/jsdom@npm:21.1.2" +"@types/jsdom@npm:21.1.3": + version: 21.1.3 + resolution: "@types/jsdom@npm:21.1.3" dependencies: "@types/node": "*" "@types/tough-cookie": "*" parse5: ^7.0.0 - checksum: 62513fc82afa0234034919dee37d3f82425245e1794c58bac55fabbd00de10b3c384992db1cdd53d35a0af58540e2733730f22dbeb57f5b76bca90bca8c368a8 + checksum: be8e42eb2d24db8abd3a19a229ce2c2e5d0809351765d9053272604ddf1df04fd16ff193eee9a2d79130952c4f91ee995148deae836a4d43451e64db8a698281 languageName: node linkType: hard @@ -4129,9 +4132,9 @@ __metadata: linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.12 - resolution: "@types/json-schema@npm:7.0.12" - checksum: 00239e97234eeb5ceefb0c1875d98ade6e922bfec39dd365ec6bd360b5c2f825e612ac4f6e5f1d13601b8b30f378f15e6faa805a3a732f4a1bbe61915163d293 + version: 7.0.13 + resolution: "@types/json-schema@npm:7.0.13" + checksum: 345df21a678fa72fb389f35f33de77833d09d4a142bb2bcb27c18690efa4cf70fc2876e43843cefb3fbdb9fcb12cd3e970a90936df30f53bbee899865ff605ab languageName: node linkType: hard @@ -4143,11 +4146,11 @@ __metadata: linkType: hard "@types/jsonfile@npm:*": - version: 6.1.1 - resolution: "@types/jsonfile@npm:6.1.1" + version: 6.1.2 + resolution: "@types/jsonfile@npm:6.1.2" dependencies: "@types/node": "*" - checksum: 0f8fe0a9221a00e8413cffba723dfe16553868724b830237256fb0052ecd5cac96498189d1235a001cfa815f352008261c9ceb373f0aa58227f891e0c7a12c4d + checksum: 3e020944de09e54ef7c4200dfbbedba76da417a58c712611ff9d30921e214dfabbe81dadd4d6608647a3ee8900d445407d7336dd991b8fe6df4249320ad4a1b4 languageName: node linkType: hard @@ -4224,10 +4227,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^20.6.0": - version: 20.6.0 - resolution: "@types/node@npm:20.6.0" - checksum: 52611801af5cf151c6fac1963aa4a8a8ca2e388a9e9ed82b01b70bca762088ded5b32cc789c5564220d5d7dccba2b8dd34446a3d4fc74736805e1f2cf262e29d +"@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^20.6.2": + version: 20.6.2 + resolution: "@types/node@npm:20.6.2" + checksum: 96fe5303872640a173f3fd43e289a451776ed5b8f0090094447c6790b43f23fb607eea8268af0829cef4d132e5afa0bfa4cd871aa7412e9042a414a698e9e971 languageName: node linkType: hard @@ -4246,9 +4249,9 @@ __metadata: linkType: hard "@types/node@npm:~14": - version: 14.18.59 - resolution: "@types/node@npm:14.18.59" - checksum: 6a2a5a5c07b9150bad47b821deb723ab72d33beae8b7b75a10787550236e6428d547806ba3103c86918b849b790bfaef0b165650213d807792effcfb7181be10 + version: 14.18.61 + resolution: "@types/node@npm:14.18.61" + checksum: 531f6df70335e3c6dd0c0613ae2ef921abd4a2c38a6683406ea4f8c7bba0ed1bd8b011ef2f91b1e3ab4a002962dea959b1c003c8a8582273bab846e66d023b4a languageName: node linkType: hard @@ -4299,9 +4302,9 @@ __metadata: linkType: hard "@types/prop-types@npm:*": - version: 15.7.5 - resolution: "@types/prop-types@npm:15.7.5" - checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 + version: 15.7.6 + resolution: "@types/prop-types@npm:15.7.6" + checksum: 5f2796c7330461a556c4d18035fb914b372f96b1619a4f8302d07e1ea708e06a2dbe666dfcd8ff03f64c625aa4c12b31f677d0298a32910f5ab7ee51521d8086 languageName: node linkType: hard @@ -4335,14 +4338,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:18.2.21": - version: 18.2.21 - resolution: "@types/react@npm:18.2.21" +"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:^18.2.22": + version: 18.2.22 + resolution: "@types/react@npm:18.2.22" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: ffed203bfe7aad772b8286f7953305c9181ac3a8f27d3f5400fbbc2a8e27ca8e5bbff818ee014f39ca0d19d2b3bb154e5bdbec7e232c6f80b59069375aa78349 + checksum: 44289523dabaadcd3fd85689abb98f9ebcc8492d7e978348d1c986138acef4801030b279e89a19e38a6319e294bcea77559e37e0c803e4bacf2b8ae3a56ba587 languageName: node linkType: hard @@ -4379,9 +4382,9 @@ __metadata: linkType: hard "@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": - version: 7.5.1 - resolution: "@types/semver@npm:7.5.1" - checksum: 2fffe938c7ac168711f245a16e1856a3578d77161ca17e29a05c3e02c7be3e9c5beefa29a3350f6c1bd982fb70aa28cc52e4845eb7d36246bcdc0377170d584d + version: 7.5.2 + resolution: "@types/semver@npm:7.5.2" + checksum: 743aa8a2b58e20b329c19bd2459152cb049d12fafab7279b90ac11e0f268c97efbcb606ea0c681cca03f79015381b40d9b1244349b354270bec3f939ed49f6e9 languageName: node linkType: hard @@ -4423,16 +4426,16 @@ __metadata: linkType: hard "@types/tough-cookie@npm:*": - version: 4.0.2 - resolution: "@types/tough-cookie@npm:4.0.2" - checksum: e055556ffdaa39ad85ede0af192c93f93f986f4bd9e9426efdc2948e3e2632db3a4a584d4937dbf6d7620527419bc99e6182d3daf2b08685e710f2eda5291905 + version: 4.0.3 + resolution: "@types/tough-cookie@npm:4.0.3" + checksum: f201be1bbca2f2d3572032513cdb9825845114d2604a7f4091af848eeee3228a573cdc5e8082b04468a2848bb1d058f1adbb97db822e22c975ebd6fcd851a453 languageName: node linkType: hard "@types/trusted-types@npm:^2.0.2": - version: 2.0.3 - resolution: "@types/trusted-types@npm:2.0.3" - checksum: 4794804bc4a4a173d589841b6d26cf455ff5dc4f3e704e847de7d65d215f2e7043d8757e4741ce3a823af3f08260a8d04a1a6e9c5ec9b20b7b04586956a6b005 + version: 2.0.4 + resolution: "@types/trusted-types@npm:2.0.4" + checksum: 5256c4576cd1c90d33ddd9cc9cbd4f202b39c98cbe8b7f74963298f9eb2159c285ea5c25a6181b4c594d8d75641765bff85d72c2d251ad076e6529ce0eeedd1c languageName: node linkType: hard @@ -4474,14 +4477,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.0.0": - version: 6.6.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.6.0" + version: 6.7.2 + resolution: "@typescript-eslint/eslint-plugin@npm:6.7.2" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.6.0 - "@typescript-eslint/type-utils": 6.6.0 - "@typescript-eslint/utils": 6.6.0 - "@typescript-eslint/visitor-keys": 6.6.0 + "@typescript-eslint/scope-manager": 6.7.2 + "@typescript-eslint/type-utils": 6.7.2 + "@typescript-eslint/utils": 6.7.2 + "@typescript-eslint/visitor-keys": 6.7.2 debug: ^4.3.4 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -4494,25 +4497,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: ed41c6df87096706777e9c1f53adabd998fd840691b57f5b68b18903e567f16c0a8354ff0ad29229c249f29440ba4a017c9fe966da182a455dde9769232a4344 + checksum: 4d6f612619282a20518cd6581bce16cd7c50ac4e49f5eeca2ab916a923049379aa382817568c929216381fb2c1bfbc1c4e6fde16ac8bfdd63862a9126f0ab797 languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.0.0": - version: 6.6.0 - resolution: "@typescript-eslint/parser@npm:6.6.0" + version: 6.7.2 + resolution: "@typescript-eslint/parser@npm:6.7.2" dependencies: - "@typescript-eslint/scope-manager": 6.6.0 - "@typescript-eslint/types": 6.6.0 - "@typescript-eslint/typescript-estree": 6.6.0 - "@typescript-eslint/visitor-keys": 6.6.0 + "@typescript-eslint/scope-manager": 6.7.2 + "@typescript-eslint/types": 6.7.2 + "@typescript-eslint/typescript-estree": 6.7.2 + "@typescript-eslint/visitor-keys": 6.7.2 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: b2d0082b6acc1a85997ebbb60fc73a43f3fe5e5028cb4130938a2cffddc94872c8e0d00a1742be8f8b755bc1994d43b55b7e4660dc88946744094ff2aca4ffd3 + checksum: 9e93d3eb432ed5457a852e25a31782d07518f728966cd477620175ae64db9be04f5d8e605f3561dbfe9a365f209a83b2a3788efb9b3cf33669c8bca17f1bcf6f languageName: node linkType: hard @@ -4526,22 +4529,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.6.0": - version: 6.6.0 - resolution: "@typescript-eslint/scope-manager@npm:6.6.0" +"@typescript-eslint/scope-manager@npm:6.7.2": + version: 6.7.2 + resolution: "@typescript-eslint/scope-manager@npm:6.7.2" dependencies: - "@typescript-eslint/types": 6.6.0 - "@typescript-eslint/visitor-keys": 6.6.0 - checksum: 18b552fee98894c4f35e9f3d71a276f266ad4e2d7c6b9bb32a9b25caa36cc3768928676972b4e78308098ad53fa8dc6626a82810f17d51c667ce959da3ac11bc + "@typescript-eslint/types": 6.7.2 + "@typescript-eslint/visitor-keys": 6.7.2 + checksum: e35fa23ecb16252c3ad00b5f1ec05d9b8d33ee30d4c57543892f900443ed77926be9bd2836f06463c31b483f5f0f79070273bc51c4a606f55ac3cd1d9c9cd542 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.6.0": - version: 6.6.0 - resolution: "@typescript-eslint/type-utils@npm:6.6.0" +"@typescript-eslint/type-utils@npm:6.7.2": + version: 6.7.2 + resolution: "@typescript-eslint/type-utils@npm:6.7.2" dependencies: - "@typescript-eslint/typescript-estree": 6.6.0 - "@typescript-eslint/utils": 6.6.0 + "@typescript-eslint/typescript-estree": 6.7.2 + "@typescript-eslint/utils": 6.7.2 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -4549,7 +4552,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: be68ebc1d8da9d4db48933cfd5c8f22382fdf1faf4116b0eb929c65eaeaf00ef224f38b03e7f6ea2de4496d046380876dd5db514c65d078ebc7a25e771a61265 + checksum: 67743f8e4b77d0ab3d82907eda0411ffd221357b60ac9cbd29683d5b8c77127369ebfafcf0bfc30a1f1828927ccd5635fab5b2eaf2b2f1d12a9361549cab3e62 languageName: node linkType: hard @@ -4560,10 +4563,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.6.0": - version: 6.6.0 - resolution: "@typescript-eslint/types@npm:6.6.0" - checksum: d0642ad52e904062a4ac75ac4e6cc51d81ec6030f8830e230df476e69786d3232d45ca0c9ce011add9ede13f0eba4ab7f1eaf679954c6602cf4f43e1ba002be9 +"@typescript-eslint/types@npm:6.7.2": + version: 6.7.2 + resolution: "@typescript-eslint/types@npm:6.7.2" + checksum: 5a7c4cd456f721649757d2edb4cae71d1405c1c2c35672031f012b27007b9d49b7118297eec746dc3351370e6aa414e5d2c493fb658c7b910154b7998c0278e1 languageName: node linkType: hard @@ -4585,12 +4588,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.6.0": - version: 6.6.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.6.0" +"@typescript-eslint/typescript-estree@npm:6.7.2": + version: 6.7.2 + resolution: "@typescript-eslint/typescript-estree@npm:6.7.2" dependencies: - "@typescript-eslint/types": 6.6.0 - "@typescript-eslint/visitor-keys": 6.6.0 + "@typescript-eslint/types": 6.7.2 + "@typescript-eslint/visitor-keys": 6.7.2 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -4599,24 +4602,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 100620bc5865dc9d2551c6be520a34b931bc70eca144c5ab0e275b81e57aa92f24a9d3a57f332d98b96e4581cf7e87211c3196d964f4951c7a2508105e3bd3f5 + checksum: c30b9803567c37527e2806badd98f3083ae125db9a430d8a28647b153e446e6a4b830833f229cca27d5aa0ff5497c149aaa524aa3a6dbf932b557c60d0bfd4f9 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.6.0": - version: 6.6.0 - resolution: "@typescript-eslint/utils@npm:6.6.0" +"@typescript-eslint/utils@npm:6.7.2": + version: 6.7.2 + resolution: "@typescript-eslint/utils@npm:6.7.2" dependencies: "@eslint-community/eslint-utils": ^4.4.0 "@types/json-schema": ^7.0.12 "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.6.0 - "@typescript-eslint/types": 6.6.0 - "@typescript-eslint/typescript-estree": 6.6.0 + "@typescript-eslint/scope-manager": 6.7.2 + "@typescript-eslint/types": 6.7.2 + "@typescript-eslint/typescript-estree": 6.7.2 semver: ^7.5.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: da02305703569549eb7deebb7512940cd40426eccec684680087a5b8c8e08052e2ff0ff6951a2ca64740e86e4b5b390903d0b13ad51efc374d9ae54f70c6a046 + checksum: 97f950562dba2bda63ffe64672f643ef940123cf74007bc878afcf31c75f905c99934a3ad77da3d5a4fe7807d5d69c791b20c429712ad5a5525e331ebc313756 languageName: node linkType: hard @@ -4648,13 +4651,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.6.0": - version: 6.6.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.6.0" +"@typescript-eslint/visitor-keys@npm:6.7.2": + version: 6.7.2 + resolution: "@typescript-eslint/visitor-keys@npm:6.7.2" dependencies: - "@typescript-eslint/types": 6.6.0 + "@typescript-eslint/types": 6.7.2 eslint-visitor-keys: ^3.4.1 - checksum: 28171124c5c7d5d10c04c204530508f1488214f2af5eb7e64a5f1cc410c64f02676c04be087adcfd0deb5566f5bb7337b208afcb249719614634c38bcc3da897 + checksum: b4915fbc0f3d44c81b92b7151830b698e8b6ed2dee8587bb65540c888c7a84300d3fd6b0c159e2131c7c6df1bebe49fb0d21c347ecdbf7f3e4aec05acebbb0bc languageName: node linkType: hard @@ -4842,46 +4845,6 @@ __metadata: languageName: node linkType: hard -"@wireapp/api-client@npm:^26.0.3": - version: 26.0.4 - resolution: "@wireapp/api-client@npm:26.0.4" - dependencies: - "@wireapp/commons": ^5.1.3 - "@wireapp/priority-queue": ^2.1.4 - "@wireapp/protocol-messaging": 1.44.0 - axios: 1.5.0 - axios-retry: 3.7.0 - http-status-codes: 2.2.0 - logdown: 3.3.1 - pako: 2.1.0 - reconnecting-websocket: 4.4.0 - spark-md5: 3.0.2 - tough-cookie: 4.1.3 - ws: 8.14.1 - checksum: 21610e5fa2dc323ea8c921e9a4f14caa0544a54a76718b153fd8d383396541d3afcd4f03eb35b4ecce4eeb63a539db1a593e91d3bb592a9b1d4a2b384fe9f499 - languageName: node - linkType: hard - -"@wireapp/api-client@npm:^26.0.4": - version: 26.0.4 - resolution: "@wireapp/api-client@npm:26.0.4" - dependencies: - "@wireapp/commons": ^5.1.3 - "@wireapp/priority-queue": ^2.1.4 - "@wireapp/protocol-messaging": 1.44.0 - axios: 1.5.0 - axios-retry: 3.7.0 - http-status-codes: 2.2.0 - logdown: 3.3.1 - pako: 2.1.0 - reconnecting-websocket: 4.4.0 - spark-md5: 3.0.2 - tough-cookie: 4.1.3 - ws: 8.14.1 - checksum: 21610e5fa2dc323ea8c921e9a4f14caa0544a54a76718b153fd8d383396541d3afcd4f03eb35b4ecce4eeb63a539db1a593e91d3bb592a9b1d4a2b384fe9f499 - languageName: node - linkType: hard - "@wireapp/api-client@npm:^26.1.1": version: 26.1.1 resolution: "@wireapp/api-client@npm:26.1.1" @@ -4951,31 +4914,6 @@ __metadata: languageName: node linkType: hard -"@wireapp/core@npm:42.3.1": - version: 42.3.1 - resolution: "@wireapp/core@npm:42.3.1" - dependencies: - "@wireapp/api-client": ^26.0.4 - "@wireapp/commons": ^5.1.3 - "@wireapp/core-crypto": 1.0.0-rc.12 - "@wireapp/cryptobox": 12.8.0 - "@wireapp/promise-queue": ^2.2.4 - "@wireapp/protocol-messaging": 1.44.0 - "@wireapp/store-engine": 5.1.4 - "@wireapp/store-engine-dexie": ^2.1.6 - axios: 1.5.0 - bazinga64: ^6.3.1 - deepmerge-ts: 5.1.0 - hash.js: 1.1.7 - http-status-codes: 2.2.0 - idb: 7.1.1 - logdown: 3.3.1 - long: ^5.2.0 - uuidjs: 4.2.13 - checksum: b17cf5b2f203491c41c248f6dd2385fb83283cd8a64cd3e4cf1e4894ea9f021ad970f359cb15cfa51f33fbf317794cdbe9c131698052a893c4b6beb5ffbb0754 - languageName: node - linkType: hard - "@wireapp/core@npm:42.3.4": version: 42.3.4 resolution: "@wireapp/core@npm:42.3.4" @@ -5731,7 +5669,7 @@ __metadata: languageName: node linkType: hard -"arraybuffer.prototype.slice@npm:^1.0.1": +"arraybuffer.prototype.slice@npm:^1.0.2": version: 1.0.2 resolution: "arraybuffer.prototype.slice@npm:1.0.2" dependencies: @@ -6359,9 +6297,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001517, caniuse-lite@npm:^1.0.30001520": - version: 1.0.30001532 - resolution: "caniuse-lite@npm:1.0.30001532" - checksum: 613abeb15e03dde307d543195a7860f7ba7450c9c9262d45642b2c8fbe097914fa060d68c8647f9d443947b1f62b09d891858bde7d2cac94fae8133a0b518b28 + version: 1.0.30001538 + resolution: "caniuse-lite@npm:1.0.30001538" + checksum: 94c5d55757a339c7cc175f08a024671e2b4e7c04f130b1015793303d637061347efb6ad84447c3b8137333e742d150b8ad9672716bbf2482646c2e63a56f6c55 languageName: node linkType: hard @@ -6498,9 +6436,9 @@ __metadata: linkType: hard "cli-spinners@npm:^2.5.0": - version: 2.9.0 - resolution: "cli-spinners@npm:2.9.0" - checksum: a9c56e1f44457d4a9f4f535364e729cb8726198efa9e98990cfd9eda9e220dfa4ba12f92808d1be5e29029cdfead781db82dc8549b97b31c907d55f96aa9b0e2 + version: 2.9.1 + resolution: "cli-spinners@npm:2.9.1" + checksum: 1780618be58309c469205bc315db697934bac68bce78cd5dfd46248e507a533172d623c7348ecfd904734f597ce0a4e5538684843d2cfb7af485d4466699940c languageName: node linkType: hard @@ -6932,8 +6870,8 @@ __metadata: linkType: hard "cosmiconfig@npm:^8.2.0": - version: 8.3.5 - resolution: "cosmiconfig@npm:8.3.5" + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" dependencies: import-fresh: ^3.3.0 js-yaml: ^4.1.0 @@ -6944,7 +6882,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: c6e44bb3cabf268b70049e7bd4ee8ecf00068854e53cbc32f9104794927ef406817f9e64e1c4949bd10776b604c01f7b50674336fcd2d5b9efc4cf8277fdf025 + checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 languageName: node linkType: hard @@ -7304,7 +7242,7 @@ __metadata: languageName: node linkType: hard -"cssdb@npm:^7.7.1": +"cssdb@npm:^7.7.2": version: 7.7.2 resolution: "cssdb@npm:7.7.2" checksum: 74a8b46fc694b8576686dde6acbf0a28b07a1a1ff01b24c0c3de12e4680f2124d4beb3367b97ec309938d32306e1806fe5e209f8c899f120349cdfb5d327b727 @@ -7595,6 +7533,17 @@ __metadata: languageName: node linkType: hard +"define-data-property@npm:^1.0.1": + version: 1.1.0 + resolution: "define-data-property@npm:1.1.0" + dependencies: + get-intrinsic: ^1.2.1 + gopd: ^1.0.1 + has-property-descriptors: ^1.0.0 + checksum: 7ad4ee84cca8ad427a4831f5693526804b62ce9dfd4efac77214e95a4382aed930072251d4075dc8dc9fc949a353ed51f19f5285a84a788ba9216cc51472a093 + languageName: node + linkType: hard + "define-lazy-prop@npm:^3.0.0": version: 3.0.0 resolution: "define-lazy-prop@npm:3.0.0" @@ -7602,13 +7551,14 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": - version: 1.2.0 - resolution: "define-properties@npm:1.2.0" +"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" dependencies: + define-data-property: ^1.0.1 has-property-descriptors: ^1.0.0 object-keys: ^1.1.1 - checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 + checksum: b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12 languageName: node linkType: hard @@ -7909,9 +7859,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.477": - version: 1.4.513 - resolution: "electron-to-chromium@npm:1.4.513" - checksum: 613b66da177dcf5abca2441c502cde4b4fb247665dc049c54d1fe3b79fc3a5a3ecae92faf97d3147af0fec9c50bf90db09e8ca3f0953a5ec2fdb472d6d6253c2 + version: 1.4.523 + resolution: "electron-to-chromium@npm:1.4.523" + checksum: c090a958afe7849d9d1a0d3ed3a2300ded202374cd68013f9114fac33c506268b3e08a204c3f6e0ad4fe56a3ae75d23a8325cf9474e2954c6d0ddef6a018780c languageName: node linkType: hard @@ -7922,17 +7872,6 @@ __metadata: languageName: node linkType: hard -"emoji-picker-react@npm:^4.5.0": - version: 4.5.1 - resolution: "emoji-picker-react@npm:4.5.1" - dependencies: - clsx: ^1.2.1 - peerDependencies: - react: ">=16" - checksum: aa34bbf11772d7b15831b33a2340743f5e4f4984925d04576cff7a9e9c927c94a2e890f76de3099e6c6a072a780c04b2ceb2db1f076e8183a2fb77b86e845524 - languageName: node - linkType: hard - "emoji-picker-react@npm:^4.5.1": version: 4.5.1 resolution: "emoji-picker-react@npm:4.5.1" @@ -8080,16 +8019,16 @@ __metadata: linkType: hard "es-abstract@npm:^1.22.1": - version: 1.22.1 - resolution: "es-abstract@npm:1.22.1" + version: 1.22.2 + resolution: "es-abstract@npm:1.22.2" dependencies: array-buffer-byte-length: ^1.0.0 - arraybuffer.prototype.slice: ^1.0.1 + arraybuffer.prototype.slice: ^1.0.2 available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 es-set-tostringtag: ^2.0.1 es-to-primitive: ^1.2.1 - function.prototype.name: ^1.1.5 + function.prototype.name: ^1.1.6 get-intrinsic: ^1.2.1 get-symbol-description: ^1.0.0 globalthis: ^1.0.3 @@ -8105,24 +8044,24 @@ __metadata: is-regex: ^1.1.4 is-shared-array-buffer: ^1.0.2 is-string: ^1.0.7 - is-typed-array: ^1.1.10 + is-typed-array: ^1.1.12 is-weakref: ^1.0.2 object-inspect: ^1.12.3 object-keys: ^1.1.1 object.assign: ^4.1.4 - regexp.prototype.flags: ^1.5.0 - safe-array-concat: ^1.0.0 + regexp.prototype.flags: ^1.5.1 + safe-array-concat: ^1.0.1 safe-regex-test: ^1.0.0 - string.prototype.trim: ^1.2.7 - string.prototype.trimend: ^1.0.6 - string.prototype.trimstart: ^1.0.6 + string.prototype.trim: ^1.2.8 + string.prototype.trimend: ^1.0.7 + string.prototype.trimstart: ^1.0.7 typed-array-buffer: ^1.0.0 typed-array-byte-length: ^1.0.0 typed-array-byte-offset: ^1.0.0 typed-array-length: ^1.0.4 unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.10 - checksum: 614e2c1c3717cb8d30b6128ef12ea110e06fd7d75ad77091ca1c5dbfb00da130e62e4bbbbbdda190eada098a22b27fe0f99ae5a1171dac2c8663b1e8be8a3a9b + which-typed-array: ^1.1.11 + checksum: cc70e592d360d7d729859013dee7a610c6b27ed8630df0547c16b0d16d9fe6505a70ee14d1af08d970fdd132b3f88c9ca7815ce72c9011608abf8ab0e55fc515 languageName: node linkType: hard @@ -8144,12 +8083,12 @@ __metadata: linkType: hard "es-iterator-helpers@npm:^1.0.12": - version: 1.0.14 - resolution: "es-iterator-helpers@npm:1.0.14" + version: 1.0.15 + resolution: "es-iterator-helpers@npm:1.0.15" dependencies: asynciterator.prototype: ^1.0.0 call-bind: ^1.0.2 - define-properties: ^1.2.0 + define-properties: ^1.2.1 es-abstract: ^1.22.1 es-set-tostringtag: ^2.0.1 function-bind: ^1.1.1 @@ -8159,9 +8098,9 @@ __metadata: has-proto: ^1.0.1 has-symbols: ^1.0.3 internal-slot: ^1.0.5 - iterator.prototype: ^1.1.0 - safe-array-concat: ^1.0.0 - checksum: 484ca398389d5e259855e2d848573233985a7e7a4126c5de62c8a554174495aea47320ae1d2b55b757ece62ac1cb8455532aa61fd123fe4e01d0567eb2d7adfa + iterator.prototype: ^1.1.2 + safe-array-concat: ^1.0.1 + checksum: 50081ae5c549efe62e5c1d244df0194b40b075f7897fc2116b7e1aa437eb3c41f946d2afda18c33f9b31266ec544765932542765af839f76fa6d7b7855d1e0e1 languageName: node linkType: hard @@ -8392,8 +8331,8 @@ __metadata: linkType: hard "eslint-plugin-jest@npm:^27.1.4": - version: 27.2.3 - resolution: "eslint-plugin-jest@npm:27.2.3" + version: 27.4.0 + resolution: "eslint-plugin-jest@npm:27.4.0" dependencies: "@typescript-eslint/utils": ^5.10.0 peerDependencies: @@ -8405,13 +8344,13 @@ __metadata: optional: true jest: optional: true - checksum: 4c7e07f52f17749ac6fd0ff5fcd5ce30b88983ba31eeee322e4d48859f55eaa112f06172e586ad2031c00ff28bb2dfdc3d35c83895251b9c0e860fa47dfc5ff4 + checksum: c33593dba87e750123555c2de32fb174d6f2c92342571492f8dbde01bf61a8ac229dff31bd08fea16c3ca2c4843fc2fec985459c351319c019016767ed1cd78e languageName: node linkType: hard "eslint-plugin-jsdoc@npm:^46.2.3": - version: 46.6.0 - resolution: "eslint-plugin-jsdoc@npm:46.6.0" + version: 46.8.1 + resolution: "eslint-plugin-jsdoc@npm:46.8.1" dependencies: "@es-joy/jsdoccomment": ~0.40.1 are-docs-informative: ^0.0.2 @@ -8424,7 +8363,7 @@ __metadata: spdx-expression-parse: ^3.0.1 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 3e2b46b31c6022773b8d21282b3a95fcc8053c865e4529516f9806860331021db1548a75972cf39eb1615fb5b794340365e4bd90033218aa427693c96d9e7878 + checksum: 481be2d8684892039d1f5165172e8934cb40c595c2af54c91bbfe0c9dab89a19fadc03278631bbb2c30fc7431dca725678dd012b228333f6eecf2677c4e9ec4d languageName: node linkType: hard @@ -8803,20 +8742,7 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0": - version: 29.6.4 - resolution: "expect@npm:29.6.4" - dependencies: - "@jest/expect-utils": ^29.6.4 - jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.6.4 - jest-message-util: ^29.6.3 - jest-util: ^29.6.3 - checksum: 019b187d665562e4948b239e011a8791363e916f3076a229298d625e67fdadb06e8c2748798c49b4cf418ea223673eadd1de06537e08ba3c055c6f0efefc2306 - languageName: node - linkType: hard - -"expect@npm:^29.7.0": +"expect@npm:^29.0.0, expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" dependencies: @@ -9103,7 +9029,7 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": +"flat-cache@npm:^3.0.4, flat-cache@npm:^3.1.0": version: 3.1.0 resolution: "flat-cache@npm:3.1.0" dependencies: @@ -9114,28 +9040,10 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.1.0": - version: 3.1.0 - resolution: "flat-cache@npm:3.1.0" - dependencies: - flatted: ^3.2.7 - keyv: ^4.5.3 - rimraf: ^3.0.2 - checksum: 99312601d5b90f44aef403f17f056dc09be7e437703740b166cdc9386d99e681f74e6b6e8bd7d010bda66904ea643c9527276b1b80308a2119741d94108a4d8f - languageName: node - linkType: hard - -"flatted@npm:^3.1.0, flatted@npm:^3.2.7": - version: 3.2.7 - resolution: "flatted@npm:3.2.7" - checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 - languageName: node - linkType: hard - "flatted@npm:^3.2.7": - version: 3.2.7 - resolution: "flatted@npm:3.2.7" - checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 + version: 3.2.9 + resolution: "flatted@npm:3.2.9" + checksum: f14167fbe26a9d20f6fca8d998e8f1f41df72c8e81f9f2c9d61ed2bea058248f5e1cbd05e7f88c0e5087a6a0b822a1e5e2b446e879f3cfbe0b07ba2d7f80b026 languageName: node linkType: hard @@ -9302,7 +9210,7 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.5": +"function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": version: 1.1.6 resolution: "function.prototype.name@npm:1.1.6" dependencies: @@ -9522,22 +9430,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2": - version: 10.3.4 - resolution: "glob@npm:10.3.4" - dependencies: - foreground-child: ^3.1.0 - jackspeak: ^2.0.3 - minimatch: ^9.0.1 - minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - path-scurry: ^1.10.1 - bin: - glob: dist/cjs/src/bin.js - checksum: 176b97c124414401cb51329a93d2ba112cef8814adbed10348481916b9521b677773eee2691cb6b24d66632d8c8bb8913533f5ac4bfb2d0ef5454a1856082361 - languageName: node - linkType: hard - -"glob@npm:^10.3.4": +"glob@npm:^10.2.2, glob@npm:^10.3.4": version: 10.3.4 resolution: "glob@npm:10.3.4" dependencies: @@ -10721,7 +10614,7 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.12, is-typed-array@npm:^1.1.9": version: 1.1.12 resolution: "is-typed-array@npm:1.1.12" dependencies: @@ -10942,15 +10835,16 @@ __metadata: languageName: node linkType: hard -"iterator.prototype@npm:^1.1.0": - version: 1.1.1 - resolution: "iterator.prototype@npm:1.1.1" +"iterator.prototype@npm:^1.1.2": + version: 1.1.2 + resolution: "iterator.prototype@npm:1.1.2" dependencies: - define-properties: ^1.2.0 + define-properties: ^1.2.1 get-intrinsic: ^1.2.1 has-symbols: ^1.0.3 - reflect.getprototypeof: ^1.0.3 - checksum: 2807469a39e280ff25ed95f8f84197b870a12fae2b15cb8779bbb0d12bc0e648be4d6277bedb6f4ae05d3fc94f05a29f90c018335003f27045582cf5455248df + reflect.getprototypeof: ^1.0.4 + set-function-name: ^2.0.1 + checksum: d8a507e2ccdc2ce762e8a1d3f4438c5669160ac72b88b648e59a688eec6bc4e64b22338e74000518418d9e693faf2a092d2af21b9ec7dbf7763b037a54701168 languageName: node linkType: hard @@ -11094,18 +10988,6 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.6.4": - version: 29.6.4 - resolution: "jest-diff@npm:29.6.4" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.6.3 - jest-get-type: ^29.6.3 - pretty-format: ^29.6.3 - checksum: e205c45ab6dbcc660dc2a682cddb20f6a3cbbbdecd2821cce2050619f96dbd7560ee25f7f51d42c302596aeaddbea54390b78be3ab639340d24d67e4d270a8b0 - languageName: node - linkType: hard - "jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -11240,18 +11122,6 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:^29.6.4": - version: 29.6.4 - resolution: "jest-matcher-utils@npm:29.6.4" - dependencies: - chalk: ^4.0.0 - jest-diff: ^29.6.4 - jest-get-type: ^29.6.3 - pretty-format: ^29.6.3 - checksum: 9e17bce282e74bdbba2ce5475c490e0bba4f464cd42132bfc5df0337e0853af4dba925c7f4f61cbb0a4818fa121d28d7ff0196ec8829773a22fce59a822976d2 - languageName: node - linkType: hard - "jest-matcher-utils@npm:^29.7.0": version: 29.7.0 resolution: "jest-matcher-utils@npm:29.7.0" @@ -11264,23 +11134,6 @@ __metadata: languageName: node linkType: hard -"jest-message-util@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-message-util@npm:29.6.3" - dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.3 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.6.3 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: 59f5229a06c073a8877ba4d2e304cc07d63b0062bf5764d4bed14364403889e77f1825d1bd9017c19a840847d17dffd414dc06f1fcb537b5f9e03dbc65b84ada - languageName: node - linkType: hard - "jest-message-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-message-util@npm:29.7.0" @@ -11442,20 +11295,6 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-util@npm:29.6.3" - dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: 7bf3ba3ac67ac6ceff7d8fdd23a86768e23ddd9133ecd9140ef87cc0c28708effabaf67a6cd45cd9d90a63d645a522ed0825d09ee59ac4c03b9c473b1fef4c7c - languageName: node - linkType: hard - "jest-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-util@npm:29.7.0" @@ -12054,9 +11893,9 @@ __metadata: linkType: hard "libsodium-sumo@npm:^0.7.0": - version: 0.7.11 - resolution: "libsodium-sumo@npm:0.7.11" - checksum: 9efac902a05002e1caca1c1df3a7cd838ac370588cfa31107d6e787cb5a181f4ca46c7961e3136943c8b07b1d543c0283b91e08a141f9b55a74f10808c3017ef + version: 0.7.13 + resolution: "libsodium-sumo@npm:0.7.13" + checksum: d0905530c53c27a0c01348eed8abc2ecf3725c0647545cc528ea4bbd0ee63b7a471b56abefec5b293086ee64b5ba7cf911a655cd2c36f400a4bfec6e2d152ebd languageName: node linkType: hard @@ -12069,12 +11908,12 @@ __metadata: languageName: node linkType: hard -"libsodium-wrappers@npm:0.7.11": - version: 0.7.11 - resolution: "libsodium-wrappers@npm:0.7.11" +"libsodium-wrappers@npm:0.7.13": + version: 0.7.13 + resolution: "libsodium-wrappers@npm:0.7.13" dependencies: - libsodium: ^0.7.11 - checksum: 6a6ef47b2213e3fb4687196c28fee4c9885f70d89547d845e62d96014d3d5ad9f59cb05fadc601debc0031a3cfd0b9b416d7efbeb5bf66db6aa0ed69f55a6293 + libsodium: ^0.7.13 + checksum: d184395f7c33023414b191ef9ea2171eb1a5cb061503e886ea877590cb7adc3a4feaf794b9b08731a20515518fa23dbf1c1bfcd376e5ab01728e95cf1cb7525a languageName: node linkType: hard @@ -12935,11 +12774,11 @@ __metadata: linkType: hard "nan@npm:*, nan@npm:^2.3.2": - version: 2.17.0 - resolution: "nan@npm:2.17.0" + version: 2.18.0 + resolution: "nan@npm:2.18.0" dependencies: node-gyp: latest - checksum: ec609aeaf7e68b76592a3ba96b372aa7f5df5b056c1e37410b0f1deefbab5a57a922061e2c5b369bae9c7c6b5e6eecf4ad2dac8833a1a7d3a751e0a7c7f849ed + checksum: 4fe42f58456504eab3105c04a5cffb72066b5f22bd45decf33523cb17e7d6abc33cca2a19829407b9000539c5cb25f410312d4dc5b30220167a3594896ea6a0a languageName: node linkType: hard @@ -13923,15 +13762,15 @@ __metadata: languageName: node linkType: hard -"postcss-color-functional-notation@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-color-functional-notation@npm:6.0.0" +"postcss-color-functional-notation@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-color-functional-notation@npm:6.0.1" dependencies: - "@csstools/postcss-progressive-custom-properties": ^3.0.0 + "@csstools/postcss-progressive-custom-properties": ^3.0.1 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: c80683e908ebdb03603029bdd0ad7b3626c40880601ed678e9903fcf46522418db825d4781e9d89f4970bb0772232b4a10e6eac029fdbc1bf14b36aee9c96216 + checksum: afb3eaaad1f3d4b38a9f7f1bd0cdaf2602e82e568147eb7ef45467e28b2b96dcdb45d3c3ddc908571776b7df4b66fe49ec3ff21fce42d49648db9b2ef9f369ed languageName: node linkType: hard @@ -13946,14 +13785,14 @@ __metadata: languageName: node linkType: hard -"postcss-color-rebeccapurple@npm:^9.0.0": - version: 9.0.0 - resolution: "postcss-color-rebeccapurple@npm:9.0.0" +"postcss-color-rebeccapurple@npm:^9.0.1": + version: 9.0.1 + resolution: "postcss-color-rebeccapurple@npm:9.0.1" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 3b3d087e5bd70bddd11fb52d5d82fb1c1a04b5cdc628f5bb9bc5ef1fa6c16d95ffda0c16a3208bd420218761fc4052b9d3201b5f2efc1edbc34b2ac82d0b20d6 + checksum: baf61a300dc4922a9bbcb34c3c7b224c53bd2a3f504fae3cd30ad62a8ded0dea61c5c8e2f15a554d810ff1c2c9f2d681d58f816ee1e6c6049152c76d242e1dca languageName: node linkType: hard @@ -13983,23 +13822,23 @@ __metadata: languageName: node linkType: hard -"postcss-custom-media@npm:^10.0.0": - version: 10.0.0 - resolution: "postcss-custom-media@npm:10.0.0" +"postcss-custom-media@npm:^10.0.1": + version: 10.0.1 + resolution: "postcss-custom-media@npm:10.0.1" dependencies: - "@csstools/cascade-layer-name-parser": ^1.0.3 - "@csstools/css-parser-algorithms": ^2.3.0 - "@csstools/css-tokenizer": ^2.1.1 - "@csstools/media-query-list-parser": ^2.1.2 + "@csstools/cascade-layer-name-parser": ^1.0.4 + "@csstools/css-parser-algorithms": ^2.3.1 + "@csstools/css-tokenizer": ^2.2.0 + "@csstools/media-query-list-parser": ^2.1.4 peerDependencies: postcss: ^8.4 - checksum: f52165a866bd978d3fe295f2d60fd5f591c0db241d2fd7d1197ad511817938ce737eab0c1ff2d5d42adbc3df27ee9645fd76c1af568df333e501ae8872461963 + checksum: 8e56241957e0a53e746934181448eea81f94946d59bfb9cf4bda71d0700a00554ee973e2e4808712da57127a3ab4e455bc0aba9c9d8c975b412d9fc991741388 languageName: node linkType: hard -"postcss-custom-properties@npm:^13.3.0": - version: 13.3.0 - resolution: "postcss-custom-properties@npm:13.3.0" +"postcss-custom-properties@npm:^13.3.1": + version: 13.3.1 + resolution: "postcss-custom-properties@npm:13.3.1" dependencies: "@csstools/cascade-layer-name-parser": ^1.0.4 "@csstools/css-parser-algorithms": ^2.3.1 @@ -14007,21 +13846,21 @@ __metadata: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 7757a6a5a8cd4da7114e0680f503b0ab2e22d2d84cda2dd7938aad6f2233cd2daec11bb1b5a63b54d954683702a31a694499b3ae906451075ff8eb16316b946f + checksum: 8f54b5afef55368dd162e3c6455f504b309fedaf2e1e3ce6c7ede9ad7a9baa3162e9763a2342814c0e2af2a1a52adb490ec70e1d3419adeaaffc665bd3ca887b languageName: node linkType: hard -"postcss-custom-selectors@npm:^7.1.4": - version: 7.1.4 - resolution: "postcss-custom-selectors@npm:7.1.4" +"postcss-custom-selectors@npm:^7.1.5": + version: 7.1.5 + resolution: "postcss-custom-selectors@npm:7.1.5" dependencies: - "@csstools/cascade-layer-name-parser": ^1.0.3 - "@csstools/css-parser-algorithms": ^2.3.0 - "@csstools/css-tokenizer": ^2.1.1 + "@csstools/cascade-layer-name-parser": ^1.0.4 + "@csstools/css-parser-algorithms": ^2.3.1 + "@csstools/css-tokenizer": ^2.2.0 postcss-selector-parser: ^6.0.13 peerDependencies: postcss: ^8.4 - checksum: dfb5d82f52ddfdaca0174f1840e5da27c0a184ad552bcb800c060b6a67d95efc98d9a7179d6a863a669c8ad1d34b5f006a211e536657b9aea1e97dee5cfe7ce1 + checksum: 416561fc471e4856ec696015262d0502042413ce09f13cc47bced72b450a6e01c3be4f9631bc87c3eea043df90b6e54cebc5e078e97b406467ff90f093b38adb languageName: node linkType: hard @@ -14072,15 +13911,15 @@ __metadata: languageName: node linkType: hard -"postcss-double-position-gradients@npm:^5.0.0": - version: 5.0.0 - resolution: "postcss-double-position-gradients@npm:5.0.0" +"postcss-double-position-gradients@npm:^5.0.1": + version: 5.0.1 + resolution: "postcss-double-position-gradients@npm:5.0.1" dependencies: - "@csstools/postcss-progressive-custom-properties": ^3.0.0 + "@csstools/postcss-progressive-custom-properties": ^3.0.1 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 432b609a2c0d5e9353e1ec218ec1710847a810dda8361e7296c00d2ee6af6851267e1d1e0a5ab8b5a555ec2dcb530e37f3dbff4526953a6228193cf2bf74fc46 + checksum: 77b3d1d475ea4e79491b750ef775483431c008e1b6fa95a6da992b12150e06e45a29f2085e24b977ef78bba1cc109d08477cc19e3289249597722ba5b81210ec languageName: node linkType: hard @@ -14124,14 +13963,14 @@ __metadata: languageName: node linkType: hard -"postcss-image-set-function@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-image-set-function@npm:6.0.0" +"postcss-image-set-function@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-image-set-function@npm:6.0.1" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: edea6b3a9cda696bfdbaabe9956e9245e4a9d36eb098dc83b6ba1db59418f350ad18b66e38e8f99fe18c895b71d3d627c3913c097cca2834e4763bf62223cb35 + checksum: 0a4043591af3b92725f439651330cfb0a43f1388772e7aa4441ceee502e347bd131e71b1bcaa3fc50205195f1e00513d3d515108c4de6f57a60b1b06a28ca9a0 languageName: node linkType: hard @@ -14148,26 +13987,17 @@ __metadata: languageName: node linkType: hard -"postcss-initial@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-initial@npm:4.0.1" - peerDependencies: - postcss: ^8.0.0 - checksum: 6956953853865de79c39d11533a2860e9f38b770bb284d0010d98a00b9469e22de344e4e5fd8208614d797030487e8918dd2f2c37d9e24d4dd59d565d4fc3e12 - languageName: node - linkType: hard - -"postcss-lab-function@npm:^6.0.3": - version: 6.0.3 - resolution: "postcss-lab-function@npm:6.0.3" +"postcss-lab-function@npm:^6.0.4": + version: 6.0.4 + resolution: "postcss-lab-function@npm:6.0.4" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.0 + "@csstools/postcss-progressive-custom-properties": ^3.0.1 peerDependencies: postcss: ^8.4 - checksum: 4b151846c0d08363a1011e02664211834eb4c45f19ded1833f8ef7f94f89df42b0ca1e285a5e0a620619cc1e7efdfc1a49c2fa19114df07a379ce6b925c66ad6 + checksum: 45fa12f0bce1c4fb54976ba0b56ebc391a749545a2a3597ecd688be7014a0a2e8319ef6710b3b1de9f6c83e824488ea1f2ab1c1cd38787fe65e30257fb54cafd languageName: node linkType: hard @@ -14486,31 +14316,32 @@ __metadata: linkType: hard "postcss-preset-env@npm:^9.1.3": - version: 9.1.3 - resolution: "postcss-preset-env@npm:9.1.3" + version: 9.1.4 + resolution: "postcss-preset-env@npm:9.1.4" dependencies: "@csstools/postcss-cascade-layers": ^4.0.0 - "@csstools/postcss-color-function": ^3.0.3 - "@csstools/postcss-color-mix-function": ^2.0.3 + "@csstools/postcss-color-function": ^3.0.4 + "@csstools/postcss-color-mix-function": ^2.0.4 "@csstools/postcss-exponential-functions": ^1.0.0 "@csstools/postcss-font-format-keywords": ^3.0.0 - "@csstools/postcss-gradients-interpolation-method": ^4.0.3 + "@csstools/postcss-gradients-interpolation-method": ^4.0.4 "@csstools/postcss-hwb-function": ^3.0.3 - "@csstools/postcss-ic-unit": ^3.0.0 - "@csstools/postcss-is-pseudo-class": ^4.0.1 + "@csstools/postcss-ic-unit": ^3.0.1 + "@csstools/postcss-initial": ^1.0.0 + "@csstools/postcss-is-pseudo-class": ^4.0.2 "@csstools/postcss-logical-float-and-clear": ^2.0.0 "@csstools/postcss-logical-resize": ^2.0.0 - "@csstools/postcss-logical-viewport-units": ^2.0.1 + "@csstools/postcss-logical-viewport-units": ^2.0.2 "@csstools/postcss-media-minmax": ^1.0.7 "@csstools/postcss-media-queries-aspect-ratio-number-values": ^2.0.2 "@csstools/postcss-nested-calc": ^3.0.0 - "@csstools/postcss-normalize-display-values": ^3.0.0 - "@csstools/postcss-oklab-function": ^3.0.3 - "@csstools/postcss-progressive-custom-properties": ^3.0.0 - "@csstools/postcss-relative-color-syntax": ^2.0.3 + "@csstools/postcss-normalize-display-values": ^3.0.1 + "@csstools/postcss-oklab-function": ^3.0.4 + "@csstools/postcss-progressive-custom-properties": ^3.0.1 + "@csstools/postcss-relative-color-syntax": ^2.0.4 "@csstools/postcss-scope-pseudo-class": ^3.0.0 "@csstools/postcss-stepped-value-functions": ^3.0.1 - "@csstools/postcss-text-decoration-shorthand": ^3.0.2 + "@csstools/postcss-text-decoration-shorthand": ^3.0.3 "@csstools/postcss-trigonometric-functions": ^3.0.1 "@csstools/postcss-unset-value": ^3.0.0 autoprefixer: ^10.4.15 @@ -14518,24 +14349,23 @@ __metadata: css-blank-pseudo: ^6.0.0 css-has-pseudo: ^6.0.0 css-prefers-color-scheme: ^9.0.0 - cssdb: ^7.7.1 + cssdb: ^7.7.2 postcss-attribute-case-insensitive: ^6.0.2 postcss-clamp: ^4.1.0 - postcss-color-functional-notation: ^6.0.0 + postcss-color-functional-notation: ^6.0.1 postcss-color-hex-alpha: ^9.0.2 - postcss-color-rebeccapurple: ^9.0.0 - postcss-custom-media: ^10.0.0 - postcss-custom-properties: ^13.3.0 - postcss-custom-selectors: ^7.1.4 + postcss-color-rebeccapurple: ^9.0.1 + postcss-custom-media: ^10.0.1 + postcss-custom-properties: ^13.3.1 + postcss-custom-selectors: ^7.1.5 postcss-dir-pseudo-class: ^8.0.0 - postcss-double-position-gradients: ^5.0.0 + postcss-double-position-gradients: ^5.0.1 postcss-focus-visible: ^9.0.0 postcss-focus-within: ^8.0.0 postcss-font-variant: ^5.0.0 postcss-gap-properties: ^5.0.0 - postcss-image-set-function: ^6.0.0 - postcss-initial: ^4.0.1 - postcss-lab-function: ^6.0.3 + postcss-image-set-function: ^6.0.1 + postcss-lab-function: ^6.0.4 postcss-logical: ^7.0.0 postcss-nesting: ^12.0.1 postcss-opacity-percentage: ^2.0.0 @@ -14548,7 +14378,7 @@ __metadata: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 5cf455b0834ae1dcf63327315752b9ec77285b6d31d55487cdd17e4c7d775e75a7ca38b6d8301053b87a52bf87aa4ba75187d7d3fd60e8010914f07921db10e3 + checksum: 2e2afcbed8c4e0699ca6df6f9115f33334b503c7cb075b00c03b609c3780a7d1cb703df1e24f3c179e8cbd63496eeaccc7dcd729cfd1a76759f5d26273ed8a86 languageName: node linkType: hard @@ -14680,7 +14510,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.29, postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.27": +"postcss@npm:8.4.29": version: 8.4.29 resolution: "postcss@npm:8.4.29" dependencies: @@ -14701,6 +14531,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.27": + version: 8.4.30 + resolution: "postcss@npm:8.4.30" + dependencies: + nanoid: ^3.3.6 + picocolors: ^1.0.0 + source-map-js: ^1.0.2 + checksum: 6c810c10c9bd3e03ca016e0b6b6756261e640aba1a9a7b1200b55502bc34b9165e38f590aef3493afc2f30ab55cdfcd43fd0f8408d69a77318ddbcf2a8ad164b + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -14761,18 +14602,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.3": - version: 29.6.3 - resolution: "pretty-format@npm:29.6.3" - dependencies: - "@jest/schemas": ^29.6.3 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: 4e1c0db48e65571c22e80ff92123925ff8b3a2a89b71c3a1683cfde711004d492de32fe60c6bc10eea8bf6c678e5cbe544ac6c56cb8096e1eb7caf856928b1c4 - languageName: node - linkType: hard - -"pretty-format@npm:^29.7.0": +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: @@ -15077,27 +14907,27 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:6.15.0": - version: 6.15.0 - resolution: "react-router-dom@npm:6.15.0" +"react-router-dom@npm:6.16.0": + version: 6.16.0 + resolution: "react-router-dom@npm:6.16.0" dependencies: - "@remix-run/router": 1.8.0 - react-router: 6.15.0 + "@remix-run/router": 1.9.0 + react-router: 6.16.0 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 95301837e293654f00934de6a4bdb27bfb06f613503e4cce7a93f19384793729832e7479d50faf3b9457d149014d4df40a3ee3a5193d7e3a3caadb7aaa6ec0f9 + checksum: 18b398924bb0f0d97cf2f71dab71d860b960a7a267b2f77388990c662bb6d8738bdc3042d92f713fd63d269ae9ad90df39c8e97661b6ba758bbb7386b9f20ae0 languageName: node linkType: hard -"react-router@npm:6.15.0": - version: 6.15.0 - resolution: "react-router@npm:6.15.0" +"react-router@npm:6.16.0": + version: 6.16.0 + resolution: "react-router@npm:6.16.0" dependencies: - "@remix-run/router": 1.8.0 + "@remix-run/router": 1.9.0 peerDependencies: react: ">=16.8" - checksum: 345b29277e13997f2625f0037f537eaf1955bb9f44ebfea80dd3ff83fc06273f7b64e1be944bfc75945fd2af5af917874133a8a93ed5ecaca523be8f045ae166 + checksum: b31c187e3fdcdf7294ffdad6ff834e14d012840c94d8ee8c7fbe451062a8fcb6e31e8bc7827fb1ff45445dd40fad2b8c96a7e98f0ac1c3eb1d716c257a0821c9 languageName: node linkType: hard @@ -15324,7 +15154,7 @@ __metadata: languageName: node linkType: hard -"reflect.getprototypeof@npm:^1.0.3": +"reflect.getprototypeof@npm:^1.0.4": version: 1.0.4 resolution: "reflect.getprototypeof@npm:1.0.4" dependencies: @@ -15339,11 +15169,11 @@ __metadata: linkType: hard "regenerate-unicode-properties@npm:^10.1.0": - version: 10.1.0 - resolution: "regenerate-unicode-properties@npm:10.1.0" + version: 10.1.1 + resolution: "regenerate-unicode-properties@npm:10.1.1" dependencies: regenerate: ^1.4.2 - checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 + checksum: b80958ef40f125275824c2c47d5081dfaefebd80bff26c76761e9236767c748a4a95a69c053fe29d2df881177f2ca85df4a71fe70a82360388b31159ef19adcf languageName: node linkType: hard @@ -15377,14 +15207,14 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.0": - version: 1.5.0 - resolution: "regexp.prototype.flags@npm:1.5.0" +"regexp.prototype.flags@npm:^1.5.0, regexp.prototype.flags@npm:^1.5.1": + version: 1.5.1 + resolution: "regexp.prototype.flags@npm:1.5.1" dependencies: call-bind: ^1.0.2 define-properties: ^1.2.0 - functions-have-names: ^1.2.3 - checksum: c541687cdbdfff1b9a07f6e44879f82c66bbf07665f9a7544c5fd16acdb3ec8d1436caab01662d2fbcad403f3499d49ab0b77fbc7ef29ef961d98cc4bc9755b4 + set-function-name: ^2.0.0 + checksum: 869edff00288442f8d7fa4c9327f91d85f3b3acf8cbbef9ea7a220345cf23e9241b6def9263d2c1ebcf3a316b0aa52ad26a43a84aa02baca3381717b3e307f47 languageName: node linkType: hard @@ -15569,15 +15399,15 @@ __metadata: linkType: hard "resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.4": - version: 1.22.4 - resolution: "resolve@npm:1.22.4" + version: 1.22.6 + resolution: "resolve@npm:1.22.6" dependencies: is-core-module: ^2.13.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 23f25174c2736ce24c6d918910e0d1f89b6b38fefa07a995dff864acd7863d59a7f049e691f93b4b2ee29696303390d921552b6d1b841ed4a8101f517e1d0124 + checksum: d13bf66d4e2ee30d291491f16f2fa44edd4e0cefb85d53249dd6f93e70b2b8c20ec62f01b18662e3cd40e50a7528f18c4087a99490048992a3bb954cf3201a5b languageName: node linkType: hard @@ -15595,15 +15425,15 @@ __metadata: linkType: hard "resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.4#~builtin": - version: 1.22.4 - resolution: "resolve@patch:resolve@npm%3A1.22.4#~builtin::version=1.22.4&hash=07638b" + version: 1.22.6 + resolution: "resolve@patch:resolve@npm%3A1.22.6#~builtin::version=1.22.6&hash=07638b" dependencies: is-core-module: ^2.13.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: c45f2545fdc4d21883861b032789e20aa67a2f2692f68da320cc84d5724cd02f2923766c5354b3210897e88f1a7b3d6d2c7c22faeead8eed7078e4c783a444bc + checksum: 9d3b3c67aefd12cecbe5f10ca4d1f51ea190891096497c43f301b086883b426466918c3a64f1bbf1788fabb52b579d58809614006c5d0b49186702b3b8fb746a languageName: node linkType: hard @@ -15729,7 +15559,7 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.0.0": +"safe-array-concat@npm:^1.0.1": version: 1.0.1 resolution: "safe-array-concat@npm:1.0.1" dependencies: @@ -15889,6 +15719,17 @@ __metadata: languageName: node linkType: hard +"set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": + version: 2.0.1 + resolution: "set-function-name@npm:2.0.1" + dependencies: + define-data-property: ^1.0.1 + functions-have-names: ^1.2.3 + has-property-descriptors: ^1.0.0 + checksum: 4975d17d90c40168eee2c7c9c59d023429f0a1690a89d75656306481ece0c3c1fb1ebcc0150ea546d1913e35fbd037bace91372c69e543e51fc5d1f31a9fa126 + languageName: node + linkType: hard + "set-getter@npm:^0.1.0": version: 0.1.1 resolution: "set-getter@npm:0.1.1" @@ -16179,9 +16020,9 @@ __metadata: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.13 - resolution: "spdx-license-ids@npm:3.0.13" - checksum: 3469d85c65f3245a279fa11afc250c3dca96e9e847f2f79d57f466940c5bb8495da08a542646086d499b7f24a74b8d0b42f3fc0f95d50ff99af1f599f6360ad7 + version: 3.0.14 + resolution: "spdx-license-ids@npm:3.0.14" + checksum: 9ff0264e5e84963f3fc438b77eeae9ce5f3f5a1807102be7efb6b5a0b14b0c1d3d5226e4ce881f58961b59165e05de8745e49b9c23c5a59d5197f4d0fb958ab1 languageName: node linkType: hard @@ -16314,8 +16155,8 @@ __metadata: linkType: hard "string.prototype.matchall@npm:^4.0.6, string.prototype.matchall@npm:^4.0.8": - version: 4.0.9 - resolution: "string.prototype.matchall@npm:4.0.9" + version: 4.0.10 + resolution: "string.prototype.matchall@npm:4.0.10" dependencies: call-bind: ^1.0.2 define-properties: ^1.2.0 @@ -16324,12 +16165,13 @@ __metadata: has-symbols: ^1.0.3 internal-slot: ^1.0.5 regexp.prototype.flags: ^1.5.0 + set-function-name: ^2.0.0 side-channel: ^1.0.4 - checksum: a68a9914755ec8c9b9129d6fb70603d78b839a1ca4a907e601fcb860109cecfbd1884e8b38989885f9c825c1c2015ff5b1ed9ddac7c8d040e4e4b3c9bc4ed5ed + checksum: 3c78bdeff39360c8e435d7c4c6ea19f454aa7a63eda95fa6fadc3a5b984446a2f9f2c02d5c94171ce22268a573524263fbd0c8edbe3ce2e9890d7cc036cdc3ed languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.7": +"string.prototype.trim@npm:^1.2.8": version: 1.2.8 resolution: "string.prototype.trim@npm:1.2.8" dependencies: @@ -16340,7 +16182,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.6": +"string.prototype.trimend@npm:^1.0.7": version: 1.0.7 resolution: "string.prototype.trimend@npm:1.0.7" dependencies: @@ -16351,7 +16193,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.6": +"string.prototype.trimstart@npm:^1.0.7": version: 1.0.7 resolution: "string.prototype.trimstart@npm:1.0.7" dependencies: @@ -17892,9 +17734,9 @@ __metadata: linkType: hard "whatwg-fetch@npm:^3.4.1": - version: 3.6.18 - resolution: "whatwg-fetch@npm:3.6.18" - checksum: 72fd318a00fd9031f7f5b28bfe30e458ca5e6ebc9b3de6e03edf810f455bca0ec954035bd9f1b5f9e6a82bbdc3fbba59b14bee24c039460c8a75f8f990ebe0b1 + version: 3.6.19 + resolution: "whatwg-fetch@npm:3.6.19" + checksum: 2896bc9ca867ea514392c73e2a272f65d5c4916248fe0837a9df5b1b92f247047bc76cf7c29c28a01ac6c5fb4314021d2718958c8a08292a96d56f72b2f56806 languageName: node linkType: hard @@ -17999,7 +17841,7 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.9": +"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.9": version: 1.1.11 resolution: "which-typed-array@npm:1.1.11" dependencies: @@ -18054,14 +17896,14 @@ __metadata: version: 0.0.0-use.local resolution: "wire-webapp@workspace:." dependencies: - "@babel/core": 7.22.17 + "@babel/core": 7.22.20 "@babel/eslint-parser": 7.22.15 "@babel/plugin-proposal-decorators": 7.22.15 - "@babel/preset-env": 7.22.15 + "@babel/preset-env": 7.22.20 "@babel/preset-react": 7.22.15 "@babel/preset-typescript": 7.22.15 - "@datadog/browser-logs": ^4.48.2 - "@datadog/browser-rum": ^4.48.2 + "@datadog/browser-logs": ^4.49.0 + "@datadog/browser-rum": ^4.49.0 "@emotion/eslint-plugin": ^11.11.0 "@emotion/react": 11.11.1 "@faker-js/faker": 8.0.2 @@ -18072,22 +17914,22 @@ __metadata: "@types/adm-zip": 0.5.1 "@types/dexie-batch": 0.4.3 "@types/eslint": ^8 - "@types/fs-extra": 11.0.1 + "@types/fs-extra": 11.0.2 "@types/generate-changelog": 1.8.1 - "@types/jest": 29.5.4 + "@types/jest": 29.5.5 "@types/jquery": ^3 - "@types/js-cookie": 3.0.3 - "@types/jsdom": 21.1.2 + "@types/js-cookie": 3.0.4 + "@types/jsdom": 21.1.3 "@types/keyboardjs": 2.5.1 "@types/libsodium-wrappers": ^0 "@types/linkify-it": 3.0.3 "@types/loadable__component": ^5 "@types/markdown-it": 13.0.1 - "@types/node": ^20.6.0 + "@types/node": ^20.6.2 "@types/open-graph": 0.2.3 "@types/platform": 1.3.4 "@types/prettier": ^2.7.3 - "@types/react": 18.2.21 + "@types/react": ^18.2.22 "@types/react-dom": 18.2.7 "@types/react-redux": 7.1.26 "@types/react-transition-group": 4.4.6 @@ -18152,7 +17994,7 @@ __metadata: knockout: 3.5.1 less: 4.2.0 less-loader: ^11.1.3 - libsodium-wrappers: 0.7.11 + libsodium-wrappers: 0.7.13 linkify-it: 4.0.1 lint-staged: 14.0.1 long: 5.2.3 @@ -18176,8 +18018,8 @@ __metadata: react-error-boundary: 4.0.11 react-intl: 6.4.6 react-redux: 8.1.2 - react-router: 6.15.0 - react-router-dom: 6.15.0 + react-router: 6.16.0 + react-router-dom: 6.16.0 react-transition-group: 4.4.5 redux: 4.2.1 redux-devtools-extension: 2.13.9 @@ -18496,21 +18338,6 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.14.1": - version: 8.14.1 - resolution: "ws@npm:8.14.1" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 9e310be2b0ff69e1f87d8c6d093ecd17a1ed4c37f281d17c35e8c30e2bd116401775b3d503249651374e6e0e1e9905db62fff096b694371c77561aee06bc3466 - languageName: node - linkType: hard - "ws@npm:8.14.1, ws@npm:^8.11.0": version: 8.14.1 resolution: "ws@npm:8.14.1" @@ -18526,21 +18353,6 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.11.0": - version: 8.13.0 - resolution: "ws@npm:8.13.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 9e310be2b0ff69e1f87d8c6d093ecd17a1ed4c37f281d17c35e8c30e2bd116401775b3d503249651374e6e0e1e9905db62fff096b694371c77561aee06bc3466 - languageName: node - linkType: hard - "xdg-basedir@npm:^5.0.1": version: 5.1.0 resolution: "xdg-basedir@npm:5.1.0" From fd6befb2b4dc9db54ddf9762f144e534c5e42632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20J=C3=B3=C5=BAwik?= Date: Tue, 26 Sep 2023 11:49:33 +0200 Subject: [PATCH 32/95] feat: Show MLS Info on devices (#15637) * feature: Show MLS Info on devices * Prepare mls details in right sidebar and device details * remove unecessary code * feat: add mls fingerprint * fix todos * feat: add translations * code review changes --- src/i18n/en-US.json | 13 +- src/script/client/ClientEntity.ts | 5 + src/script/client/ClientMapper.ts | 6 +- src/script/components/Badges/Badges.tsx | 1 + src/script/components/DeviceId.test.tsx | 40 ----- .../Message/DecryptErrorMessage.tsx | 5 +- .../components/userDevices/DeviceCard.tsx | 29 ++-- .../components/userDevices/DeviceDetails.tsx | 144 ++++++++++-------- .../userDevices/SelfFingerprint.tsx | 7 +- .../devices/DeviceDetailsPreferences.tsx | 32 ++-- .../devices/DevicesPreferences.tsx | 53 ++++--- .../devices/components/DetailedDevice.tsx | 58 +++---- .../devices/components/FormattedId.styles.ts} | 35 +++-- .../devices/components/FormattedId.tsx | 19 ++- .../MLSDeviceDetails.styles.ts | 45 ++++++ .../MLSDeviceDetails/MLSDeviceDetails.tsx | 44 ++++++ .../components/MLSDeviceDetails/index.ts | 20 +++ .../components/ProteusDeviceDetails.tsx | 87 +++++++++++ src/script/storage/record/ClientRecord.ts | 1 + src/script/util/TypePredicateUtil.ts | 6 + src/style/common/typing.less | 25 +++ src/style/components/device-card.less | 29 ++-- src/style/content/preferences.less | 8 + src/style/content/preferences/devices.less | 95 +++++++----- src/style/panel/panel.less | 7 +- src/style/panel/participant-devices.less | 45 +++--- 26 files changed, 567 insertions(+), 292 deletions(-) delete mode 100644 src/script/components/DeviceId.test.tsx rename src/script/{components/DeviceId.tsx => page/MainContent/panels/preferences/devices/components/FormattedId.styles.ts} (58%) create mode 100644 src/script/page/MainContent/panels/preferences/devices/components/MLSDeviceDetails/MLSDeviceDetails.styles.ts create mode 100644 src/script/page/MainContent/panels/preferences/devices/components/MLSDeviceDetails/MLSDeviceDetails.tsx create mode 100644 src/script/page/MainContent/panels/preferences/devices/components/MLSDeviceDetails/index.ts create mode 100644 src/script/page/MainContent/panels/preferences/devices/components/ProteusDeviceDetails.tsx diff --git a/src/i18n/en-US.json b/src/i18n/en-US.json index 8d1ce264861..ed9bb4de7ba 100644 --- a/src/i18n/en-US.json +++ b/src/i18n/en-US.json @@ -748,6 +748,8 @@ "mlsConversationRecovered": "You haven’t used this device for a while, or an issue has occurred. Some older messages may not appear here.", "mlsToggleInfo": "When this is on, conversation will use the new messaging layer security (MLS) protocol.", "mlsToggleName": "MLS", + "mlsSignature": "MLS with {{signature}} Signature", + "mlsThumbprint": "MLS Thumbprint", "modalAccountCreateAction": "OK", "modalAccountCreateHeadline": "Create an account?", "modalAccountCreateMessage": "By creating an account you will lose the conversation history in this guest room.", @@ -1042,11 +1044,15 @@ "ongoingGroupAudioCall": "Ongoing conference call with {{conversationName}}.", "ongoingGroupVideoCall": "Ongoing video conference call with {{conversationName}}, your camera is {{cameraStatus}}.", "ongoingVideoCall": "Ongoing video call with {{conversationName}}, your camera is {{cameraStatus}}.", + "participantDevicesProteusDeviceVerification": "Proteus Device Verification", + "participantDevicesProteusKeyFingerprint": "Proteus Key Fingerprint", "participantDevicesDetailHeadline": "Verify that this matches the fingerprint shown on [bold]{{user}}’s device[/bold].", "participantDevicesDetailHowTo": "How do I do that?", "participantDevicesDetailResetSession": "Reset session", "participantDevicesDetailShowMyDevice": "Show my device fingerprint", + "preferencesDeviceDetailsVerificationStatus": "Verification Status", "participantDevicesDetailVerify": "Verified", + "preferencesDeviceDetailsFingerprintNotMatch": "If fingerprints don’t match, reset the session to generate new encryption keys on both sides.", "participantDevicesHeader": "Devices", "participantDevicesHeadline": "{{brandName}} gives every device a unique fingerprint. Compare them with {{user}} and verify your conversation.", "participantDevicesLearnMore": "Learn more", @@ -1125,13 +1131,14 @@ "preferencesDeviceDetails": "Device Details", "preferencesDeviceNotVerified": "not verified", "preferencesDevices": "Devices", - "preferencesDevicesActivatedOn": "Activated [bold]{{date}}[/bold]", + "preferencesDevicesActivatedOn": "Activated", "preferencesDevicesActive": "Active", "preferencesDevicesActiveDetail": "If you don’t recognize a device above, remove it and reset your password.", "preferencesDevicesCurrent": "Current", "preferencesDevicesFingerprint": "Key fingerprint", "preferencesDevicesFingerprintDetail": "{{brandName}} gives every device a unique fingerprint. Compare them and verify your devices and conversations.", "preferencesDevicesId": "ID: ", + "preferencesMLSThumbprint": "MLS Thumbprint: ", "preferencesDevicesRemove": "Remove Device", "preferencesDevicesRemoveCancel": "Cancel", "preferencesDevicesRemoveDetail": "Remove this device if you have stopped using it. You will be logged out of this device immediately.", @@ -1185,6 +1192,10 @@ "preferencesOptionsPreviewsSendCheckbox": "Create previews for links you send", "preferencesOptionsPreviewsSendDetail": "Previews may still be shown for links from other people.", "preferencesOptionsUseDarkMode": "Dark theme", + "proteusDeviceDetails": "Proteus Device Details", + "proteusID": "Proteus ID", + "proteusVerified": "Verified", + "proteusNotVerified": "Not Verified", "readReceiptsToggleInfo": "When this is on, people can see when their messages in this conversation are read.", "readReceiptsToggleName": "Read receipts", "receiptToggleInfo": "When this is on, people can see when their messages in this conversation are read.", diff --git a/src/script/client/ClientEntity.ts b/src/script/client/ClientEntity.ts index 2de40e68507..721824f3a5f 100644 --- a/src/script/client/ClientEntity.ts +++ b/src/script/client/ClientEntity.ts @@ -26,6 +26,10 @@ import {ClientMapper} from './ClientMapper'; import {ClientRecord} from '../storage'; +export enum MLSPublicKeys { + ED25519 = 'ed25519', +} + export class ClientEntity { static CONFIG = { DEFAULT_VALUE: '?', @@ -50,6 +54,7 @@ export class ClientEntity { model?: string; time?: string; type?: ClientType.PERMANENT | ClientType.TEMPORARY; + mlsPublicKeys?: Record; constructor(isSelfClient: boolean, domain: string | null, id = '') { this.isSelfClient = isSelfClient; diff --git a/src/script/client/ClientMapper.ts b/src/script/client/ClientMapper.ts index a797d870fc1..38ed4ef4362 100644 --- a/src/script/client/ClientMapper.ts +++ b/src/script/client/ClientMapper.ts @@ -23,7 +23,7 @@ import {ClientEntity} from './ClientEntity'; import {parseClientId} from './ClientIdUtil'; import {ClientRecord} from '../storage'; -import {isClientRecord} from '../util/TypePredicateUtil'; +import {hasMlsPublicKeys, isClientRecord} from '../util/TypePredicateUtil'; export class ClientMapper { static get CONFIG() { @@ -62,6 +62,10 @@ export class ClientMapper { clientEntity.meta.userId = userId; } + if (hasMlsPublicKeys(clientPayload)) { + clientEntity.mlsPublicKeys = clientPayload.mls_public_keys; + } + return clientEntity; } diff --git a/src/script/components/Badges/Badges.tsx b/src/script/components/Badges/Badges.tsx index 36fedc4ab44..64a14fe2778 100644 --- a/src/script/components/Badges/Badges.tsx +++ b/src/script/components/Badges/Badges.tsx @@ -34,6 +34,7 @@ export enum MLSStatues { NOT_DOWNLOADED = 'not_downloaded', EXPIRED = 'expired', EXPIRES_SOON = 'expires_soon', + NOT_ACTIVATED = 'not_activated', } interface BadgesProps { diff --git a/src/script/components/DeviceId.test.tsx b/src/script/components/DeviceId.test.tsx deleted file mode 100644 index 83f14d2be68..00000000000 --- a/src/script/components/DeviceId.test.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Wire - * Copyright (C) 2021 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {render} from '@testing-library/react'; - -import {DeviceId} from './DeviceId'; - -describe('DeviceId', () => { - it('can print device id', () => { - const {getAllByTestId} = render(); - - const deviceIdParts = getAllByTestId('element-device-id-part').map(node => node.textContent); - - expect(deviceIdParts).toEqual(['66', 'e6', '6c', '79', 'e8', 'd1', 'de', 'a4']); - }); - - it('can print device id and apply padding', () => { - const {getAllByTestId} = render(); - - const deviceIdParts = getAllByTestId('element-device-id-part').map(node => node.textContent); - - expect(deviceIdParts).toEqual(['06', 'e6', '6c', '79', 'e8', 'd1', 'de', 'a4']); - }); -}); diff --git a/src/script/components/MessagesList/Message/DecryptErrorMessage.tsx b/src/script/components/MessagesList/Message/DecryptErrorMessage.tsx index 0ea2ae94938..809d4f85330 100644 --- a/src/script/components/MessagesList/Message/DecryptErrorMessage.tsx +++ b/src/script/components/MessagesList/Message/DecryptErrorMessage.tsx @@ -19,13 +19,14 @@ import React, {useState} from 'react'; -import {DeviceId} from 'Components/DeviceId'; import {Icon} from 'Components/Icon'; import {getDecryptErrorUrl} from 'src/script/externalRoute'; import {MotionDuration} from 'src/script/motion/MotionDuration'; import {t} from 'Util/LocalizerUtil'; +import {splitFingerprint} from 'Util/StringUtil'; import {DecryptErrorMessage as DecryptErrorMessageEntity} from '../../../entity/message/DecryptErrorMessage'; +import {FormattedId} from '../../../page/MainContent/panels/preferences/devices/components/FormattedId'; export interface DecryptErrorMessageProps { message: DecryptErrorMessageEntity; @@ -81,7 +82,7 @@ const DecryptErrorMessage: React.FC = ({message, onCli {message.clientId && ( <> {'ID: '} - + )}

diff --git a/src/script/components/userDevices/DeviceCard.tsx b/src/script/components/userDevices/DeviceCard.tsx index 6b048927243..1a4c840d5f5 100644 --- a/src/script/components/userDevices/DeviceCard.tsx +++ b/src/script/components/userDevices/DeviceCard.tsx @@ -23,12 +23,14 @@ import {ClientClassification} from '@wireapp/api-client/lib/client'; import cx from 'classnames'; import {Badges} from 'Components/Badges'; -import {DeviceId} from 'Components/DeviceId'; import {useMessageFocusedTabIndex} from 'Components/MessagesList/Message/util'; import {handleKeyDown} from 'Util/KeyboardUtil'; import {t} from 'Util/LocalizerUtil'; +import {splitFingerprint} from 'Util/StringUtil'; import type {ClientEntity} from '../../client/ClientEntity'; +import {MLSPublicKeys} from '../../client/ClientEntity'; +import {FormattedId} from '../../page/MainContent/panels/preferences/devices/components/FormattedId'; import {Icon} from '../Icon'; import {LegalHoldDot} from '../LegalHoldDot'; @@ -50,9 +52,9 @@ const DeviceCard: React.FC = ({ const name = clientEntity.getName(); const clickable = !!click; const isVerified = meta.isVerified; + const mlsFingerprint = clientEntity.mlsPublicKeys?.[MLSPublicKeys.ED25519]; + const showLegalHoldIcon = showIcon && deviceClass === ClientClassification.LEGAL_HOLD; - const showDesktopIcon = showIcon && deviceClass === ClientClassification.DESKTOP; - const showMobileIcon = showIcon && !showLegalHoldIcon && !showDesktopIcon; const clickOnDevice = () => { if (clickable) { @@ -77,21 +79,28 @@ const DeviceCard: React.FC = ({ /> )} - {showDesktopIcon && } - {showMobileIcon && } -
{name} - {showVerified && } + {showVerified && }
-

+ {mlsFingerprint && ( +

+ {t('preferencesMLSThumbprint')} + + + + +

+ )} + +

{t('preferencesDevicesId')} - - + +

diff --git a/src/script/components/userDevices/DeviceDetails.tsx b/src/script/components/userDevices/DeviceDetails.tsx index b9d35a0ebbb..b38116c1db5 100644 --- a/src/script/components/userDevices/DeviceDetails.tsx +++ b/src/script/components/userDevices/DeviceDetails.tsx @@ -23,21 +23,23 @@ import cx from 'classnames'; import type {DexieError} from 'dexie'; import {container} from 'tsyringe'; -import {Icon} from 'Components/Icon'; +import {Button, ButtonVariant} from '@wireapp/react-ui-kit'; + import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; import type {Logger} from 'Util/Logger'; - -import {DeviceCard} from './DeviceCard'; +import {splitFingerprint} from 'Util/StringUtil'; import type {ClientRepository, ClientEntity} from '../../client'; +import {MLSPublicKeys} from '../../client'; import {Config} from '../../Config'; import {ConversationState} from '../../conversation/ConversationState'; import type {MessageRepository} from '../../conversation/MessageRepository'; import type {CryptographyRepository} from '../../cryptography/CryptographyRepository'; import type {User} from '../../entity/User'; import {MotionDuration} from '../../motion/MotionDuration'; -import {DeviceId} from '../DeviceId'; +import {FormattedId} from '../../page/MainContent/panels/preferences/devices/components/FormattedId'; +import {MLSDeviceDetails} from '../../page/MainContent/panels/preferences/devices/components/MLSDeviceDetails'; interface DeviceDetailsProps { clickToShowSelfFingerprint: () => void; @@ -101,74 +103,86 @@ const DeviceDetails: React.FC = ({ }; const isMLSConversation = !!conversationState.activeConversation()?.isUsingMLSProtocol; + const mlsFingerprint = selectedClient.mlsPublicKeys?.[MLSPublicKeys.ED25519]; return (
- -

- - {t('participantDevicesDetailHowTo')} - -

- -
- {fingerprintRemote && ( -
- -
- )} - -
-
- + {mlsFingerprint && } - -
+
+

{t('participantDevicesProteusDeviceVerification')}

-
- + - {!isMLSConversation && ( - - )} + + + {t('participantDevicesDetailHowTo')} + +

+ + {fingerprintRemote && ( + <> +

+ {t('participantDevicesProteusKeyFingerprint')} +

+ +
+ +
+ + )} + +

+ {t('preferencesDeviceDetailsVerificationStatus')} + Verification Status +

+ +
+
+ + + +
+ +

+ {t('preferencesDeviceDetailsFingerprintNotMatch')} +

+ + {!isMLSConversation && ( + + )} + +
); diff --git a/src/script/components/userDevices/SelfFingerprint.tsx b/src/script/components/userDevices/SelfFingerprint.tsx index 131155919a8..5514f0dcefd 100644 --- a/src/script/components/userDevices/SelfFingerprint.tsx +++ b/src/script/components/userDevices/SelfFingerprint.tsx @@ -27,12 +27,13 @@ import {WebAppEvents} from '@wireapp/webapp-events'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; +import {splitFingerprint} from 'Util/StringUtil'; import {DeviceCard} from './DeviceCard'; import {ClientState} from '../../client/ClientState'; import type {CryptographyRepository} from '../../cryptography/CryptographyRepository'; -import {DeviceId} from '../DeviceId'; +import {FormattedId} from '../../page/MainContent/panels/preferences/devices/components/FormattedId'; interface SelfFingerprintProps { clientState?: ClientState; @@ -55,9 +56,11 @@ const SelfFingerprint: React.FC = ({ return (
+
- +
+
)} + {resetState === SessionResetState.ONGOING && (

{t('preferencesDevicesSessionOngoing')}

)} + {resetState === SessionResetState.CONFIRMATION && (

{t('preferencesDevicesSessionConfirmation')} @@ -139,9 +140,16 @@ const DeviceDetailsPreferences: React.FC = ({

+
+
+
+
+
+ {!device.isLegalHold() && (
-

{t('preferencesDevicesRemoveDetail')}

+

{t('preferencesDevicesRemoveDetail')}

+ +
+ +
+ {certificate} +
+ +
+ + + +
+ + ); +}; diff --git a/src/script/components/Modals/CertificateDetailsModal/index.ts b/src/script/components/Modals/CertificateDetailsModal/index.ts new file mode 100644 index 00000000000..d8baa78a360 --- /dev/null +++ b/src/script/components/Modals/CertificateDetailsModal/index.ts @@ -0,0 +1,20 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export * from './CertificateDetailsModal'; diff --git a/src/script/components/VerificationBadges/VerificationBadges.test.tsx b/src/script/components/VerificationBadges/VerificationBadges.test.tsx index 79f985ec4f7..1da3ab7bf45 100644 --- a/src/script/components/VerificationBadges/VerificationBadges.test.tsx +++ b/src/script/components/VerificationBadges/VerificationBadges.test.tsx @@ -21,7 +21,7 @@ import {render} from '@testing-library/react'; import {withTheme} from 'src/script/auth/util/test/TestUtil'; -import {VerificationBadges, MLSStatues} from './VerificationBadges'; +import {VerificationBadges, MLSStatuses} from './VerificationBadges'; describe('VerificationBadges', () => { const isMLSVerified = true; @@ -30,7 +30,7 @@ describe('VerificationBadges', () => { const {getByTestId} = render(withTheme()); const E2EIdentityStatus = getByTestId('mls-status'); - expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatues.VALID); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.VALID); }); it('is proteus verified', async () => { @@ -42,28 +42,28 @@ describe('VerificationBadges', () => { it('is not downloaded', async () => { const {getByTestId} = render( - withTheme(), + withTheme(), ); const E2EIdentityStatus = getByTestId('mls-status'); - expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatues.NOT_DOWNLOADED); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.NOT_DOWNLOADED); }); it('is expired', async () => { const {getByTestId} = render( - withTheme(), + withTheme(), ); const E2EIdentityStatus = getByTestId('mls-status'); - expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatues.EXPIRED); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.EXPIRED); }); it('is expires soon', async () => { const {getByTestId} = render( - withTheme(), + withTheme(), ); const E2EIdentityStatus = getByTestId('mls-status'); - expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatues.EXPIRES_SOON); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.EXPIRED); }); }); diff --git a/src/script/components/VerificationBadges/VerificationBadges.tsx b/src/script/components/VerificationBadges/VerificationBadges.tsx index a04fa6813b7..64489682a93 100644 --- a/src/script/components/VerificationBadges/VerificationBadges.tsx +++ b/src/script/components/VerificationBadges/VerificationBadges.tsx @@ -23,25 +23,24 @@ import {ConversationProtocol} from '@wireapp/api-client/lib/conversation'; import { CertificateExpiredIcon, - CertificateRevoked, ExpiresSoon, + CertificateRevoked, MLSVerified, ProteusVerified, } from '@wireapp/react-ui-kit'; -export enum MLSStatues { +export enum MLSStatuses { VALID = 'valid', NOT_DOWNLOADED = 'not_downloaded', EXPIRED = 'expired', EXPIRES_SOON = 'expires_soon', - NOT_ACTIVATED = 'not_activated', } interface VerificationBadgesProps { conversationProtocol?: ConversationProtocol; isMLSVerified?: boolean; isProteusVerified?: boolean; - MLSStatus?: MLSStatues; + MLSStatus?: MLSStatuses; displayTitle?: boolean; } @@ -73,9 +72,9 @@ export const VerificationBadges: React.FC = ({ return null; } - const isExpired = MLSStatus === MLSStatues.EXPIRED; - const isNotDownloaded = MLSStatus === MLSStatues.NOT_DOWNLOADED; - const isExpiresSoon = MLSStatus === MLSStatues.EXPIRES_SOON; + const isExpired = MLSStatus === MLSStatuses.EXPIRED; + const isNotDownloaded = MLSStatus === MLSStatuses.NOT_DOWNLOADED; + const isExpiresSoon = MLSStatus === MLSStatuses.EXPIRES_SOON; const conversationHasProtocol = !!conversationProtocol; @@ -99,33 +98,33 @@ export const VerificationBadges: React.FC = ({ data-tooltip="Device verified (End-to-end identity)" style={iconStyles} data-uie-name="mls-status" - data-uie-value={MLSStatues.VALID} + data-uie-value={MLSStatuses.VALID} > )} - {isExpiresSoon && ( + {isExpired && ( - + )} - {isExpired && ( + {isExpiresSoon && ( - + )} @@ -135,7 +134,7 @@ export const VerificationBadges: React.FC = ({ data-tooltip="End-to-end identity certificate revoked" style={iconStyles} data-uie-name="mls-status" - data-uie-value={MLSStatues.NOT_DOWNLOADED} + data-uie-value={MLSStatuses.NOT_DOWNLOADED} > diff --git a/src/script/components/userDevices/DeviceCard.tsx b/src/script/components/userDevices/DeviceCard.tsx index 54de74036fa..b3847e90e2e 100644 --- a/src/script/components/userDevices/DeviceCard.tsx +++ b/src/script/components/userDevices/DeviceCard.tsx @@ -30,7 +30,7 @@ import {splitFingerprint} from 'Util/StringUtil'; import type {ClientEntity} from '../../client/ClientEntity'; import {MLSPublicKeys} from '../../client/ClientEntity'; -import {FormattedId} from '../../page/MainContent/panels/preferences/devices/components/FormattedId'; +import {FormattedId} from '../../page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId'; import {Icon} from '../Icon'; import {LegalHoldDot} from '../LegalHoldDot'; diff --git a/src/script/components/userDevices/DeviceDetails.tsx b/src/script/components/userDevices/DeviceDetails.tsx index b38116c1db5..e00c395e18d 100644 --- a/src/script/components/userDevices/DeviceDetails.tsx +++ b/src/script/components/userDevices/DeviceDetails.tsx @@ -17,7 +17,7 @@ * */ -import React, {useEffect, useMemo, useState} from 'react'; +import {useEffect, useMemo, useState} from 'react'; import cx from 'classnames'; import type {DexieError} from 'dexie'; @@ -38,8 +38,8 @@ import type {MessageRepository} from '../../conversation/MessageRepository'; import type {CryptographyRepository} from '../../cryptography/CryptographyRepository'; import type {User} from '../../entity/User'; import {MotionDuration} from '../../motion/MotionDuration'; -import {FormattedId} from '../../page/MainContent/panels/preferences/devices/components/FormattedId'; -import {MLSDeviceDetails} from '../../page/MainContent/panels/preferences/devices/components/MLSDeviceDetails'; +import {FormattedId} from '../../page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId'; +import {MLSDeviceDetails} from '../../page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails'; interface DeviceDetailsProps { clickToShowSelfFingerprint: () => void; @@ -53,7 +53,7 @@ interface DeviceDetailsProps { user: User; } -const DeviceDetails: React.FC = ({ +export const DeviceDetails = ({ selectedClient, cryptographyRepository, user, @@ -63,7 +63,7 @@ const DeviceDetails: React.FC = ({ noPadding, logger, conversationState = container.resolve(ConversationState), -}) => { +}: DeviceDetailsProps) => { const [fingerprintRemote, setFingerprintRemote] = useState(); const [isResettingSession, setIsResettingSession] = useState(false); @@ -75,7 +75,7 @@ const DeviceDetails: React.FC = ({ useEffect(() => { setFingerprintRemote(undefined); if (selectedClient) { - cryptographyRepository + void cryptographyRepository .getRemoteFingerprint(user.qualifiedId, selectedClient.id) .then(remoteFingerprint => setFingerprintRemote(remoteFingerprint)); } @@ -107,7 +107,7 @@ const DeviceDetails: React.FC = ({ return (
- {mlsFingerprint && } + {mlsFingerprint && }

{t('participantDevicesProteusDeviceVerification')}

@@ -187,5 +187,3 @@ const DeviceDetails: React.FC = ({
); }; - -export {DeviceDetails}; diff --git a/src/script/components/userDevices/SelfFingerprint.tsx b/src/script/components/userDevices/SelfFingerprint.tsx index 5514f0dcefd..3542ba1d627 100644 --- a/src/script/components/userDevices/SelfFingerprint.tsx +++ b/src/script/components/userDevices/SelfFingerprint.tsx @@ -33,7 +33,7 @@ import {DeviceCard} from './DeviceCard'; import {ClientState} from '../../client/ClientState'; import type {CryptographyRepository} from '../../cryptography/CryptographyRepository'; -import {FormattedId} from '../../page/MainContent/panels/preferences/devices/components/FormattedId'; +import {FormattedId} from '../../page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId'; interface SelfFingerprintProps { clientState?: ClientState; diff --git a/src/script/page/MainContent/MainContent.tsx b/src/script/page/MainContent/MainContent.tsx index 88529fc5cbd..57f65eae839 100644 --- a/src/script/page/MainContent/MainContent.tsx +++ b/src/script/page/MainContent/MainContent.tsx @@ -38,7 +38,7 @@ import {Collection} from './panels/Collection'; import {AboutPreferences} from './panels/preferences/AboutPreferences'; import {AccountPreferences} from './panels/preferences/AccountPreferences'; import {AVPreferences} from './panels/preferences/AVPreferences'; -import {DevicesPreferences} from './panels/preferences/devices/DevicesPreferences'; +import {DevicesPreferences} from './panels/preferences/DevicesPreferences'; import {OptionPreferences} from './panels/preferences/OptionPreferences'; import {ClientState} from '../../client/ClientState'; @@ -202,7 +202,7 @@ const MainContent: FC = ({ resetSession={(userId, device, conversation) => repositories.message.resetSession(userId, device.id, conversation) } - userState={userState} + selfUser={selfUser} verifyDevice={(userId, device, verified) => repositories.client.verifyClient(userId, device, verified) } diff --git a/src/script/page/MainContent/panels/preferences/devices/DevicesPreferences.test.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.test.tsx similarity index 100% rename from src/script/page/MainContent/panels/preferences/devices/DevicesPreferences.test.tsx rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.test.tsx diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx new file mode 100644 index 00000000000..11f443ffcb9 --- /dev/null +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx @@ -0,0 +1,153 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import React, {useEffect, useState} from 'react'; + +import {QualifiedId} from '@wireapp/api-client/lib/user'; +import {WireIdentity} from '@wireapp/core-crypto/platforms/web/corecrypto'; +import {container} from 'tsyringe'; + +import {ClientEntity} from 'src/script/client/ClientEntity'; +import {CryptographyRepository} from 'src/script/cryptography/CryptographyRepository'; +import {Conversation} from 'src/script/entity/Conversation'; +import {User} from 'src/script/entity/User'; +import {useKoSubscribableChildren} from 'Util/ComponentUtil'; +import {t} from 'Util/LocalizerUtil'; + +import {DetailedDevice} from './components/DetailedDevice'; +import {Device} from './components/Device'; +import {DeviceDetailsPreferences} from './components/DeviceDetailsPreferences'; + +import {ClientState} from '../../../../../client/ClientState'; +import {isMLSConversation} from '../../../../../conversation/ConversationSelectors'; +import {ConversationState} from '../../../../../conversation/ConversationState'; +import {E2EIHandler} from '../../../../../E2EIdentity'; +import {PreferencesPage} from '../components/PreferencesPage'; + +interface DevicesPreferencesProps { + clientState: ClientState; + conversationState: ConversationState; + cryptographyRepository: CryptographyRepository; + selfUser: User; + removeDevice: (device: ClientEntity) => Promise; + resetSession: (userId: QualifiedId, device: ClientEntity, conversation: Conversation) => Promise; + verifyDevice: (userId: QualifiedId, device: ClientEntity, isVerified: boolean) => void; +} + +export const DevicesPreferences: React.FC = ({ + clientState = container.resolve(ClientState), + conversationState = container.resolve(ConversationState), + cryptographyRepository, + selfUser, + removeDevice, + verifyDevice, + resetSession, +}) => { + const [selectedDevice, setSelectedDevice] = useState(); + const [selectedDeviceIdentity, setSelectedDeviceIdentity] = useState(); + const [localFingerprint, setLocalFingerprint] = useState(''); + + const {clients, currentClient} = useKoSubscribableChildren(clientState, ['clients', 'currentClient']); + const {isVerified: isSelfClientVerified} = useKoSubscribableChildren(currentClient.meta, ['isVerified']); + + const getFingerprint = (device: ClientEntity) => + cryptographyRepository.getRemoteFingerprint(selfUser.qualifiedId, device.id); + + useEffect(() => { + void cryptographyRepository.getLocalFingerprint().then(setLocalFingerprint); + }, [cryptographyRepository]); + + if (selectedDevice) { + return ( + { + await removeDevice(device); + setSelectedDevice(undefined); + }} + onClose={() => setSelectedDevice(undefined)} + onVerify={(device, verified) => verifyDevice(selfUser.qualifiedId, device, verified)} + onResetSession={device => + resetSession(selfUser.qualifiedId, device, conversationState.getSelfProteusConversation()) + } + /> + ); + } + + const isSSO = selfUser.isNoPasswordSSO; + + const e2eiIdentity = E2EIHandler.getInstance(); + const certificate = e2eiIdentity.getCertificateData(); + + const selectDevice = async (device: ClientEntity, deviceIdentity?: WireIdentity) => { + setSelectedDevice(device); + + if (deviceIdentity) { + setSelectedDeviceIdentity(deviceIdentity); + } + }; + + const getDeviceIdentity = async (deviceId: string) => { + const selfConversation = conversationState?.getSelfMLSConversation(); + + if (!isMLSConversation(selfConversation)) { + return null; + } + + const groupId = selfConversation.groupId; + return e2eiIdentity.getUserDeviceEntities(groupId, {[deviceId]: selfUser}); + }; + + return ( + +
+ {t('preferencesDevicesCurrent')} + + +
+ +
+ + {clients.length > 0 && ( +
+ {t('preferencesDevicesActive')} + {clients.map((device, index) => ( + + ))} +

{t('preferencesDevicesActiveDetail')}

+
+ )} +
+ ); +}; diff --git a/src/script/page/MainContent/panels/preferences/devices/components/DetailedDevice.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx similarity index 61% rename from src/script/page/MainContent/panels/preferences/devices/components/DetailedDevice.tsx rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx index fc6b690247c..2e1f510dc85 100644 --- a/src/script/page/MainContent/panels/preferences/devices/components/DetailedDevice.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx @@ -21,6 +21,7 @@ import React from 'react'; import {ClientEntity, MLSPublicKeys} from 'src/script/client/ClientEntity'; import {VerificationBadges} from 'src/script/components/VerificationBadges'; +import {getCertificateDetails, getCertificateState} from 'Util/certificateDetails'; import {MLSDeviceDetails} from './MLSDeviceDetails'; import {ProteusDeviceDetails} from './ProteusDeviceDetails'; @@ -29,22 +30,39 @@ export interface DeviceProps { device: ClientEntity; fingerprint: string; showVerificationStatus?: boolean; + isOtherDevice?: boolean; + certificate?: string; + isProteusVerified?: boolean; } -export const DetailedDevice: React.FC = ({device, fingerprint, showVerificationStatus = true}) => { - const isProteusVerified = true; - +export const DetailedDevice: React.FC = ({ + device, + fingerprint, + showVerificationStatus = true, + isOtherDevice = false, + certificate, + isProteusVerified = false, +}) => { const mlsFingerprint = device.mlsPublicKeys?.[MLSPublicKeys.ED25519]; + const {isNotDownloaded, isValid, isExpireSoon} = getCertificateDetails(certificate); + const certificateState = getCertificateState({isNotDownloaded, isValid, isExpireSoon}); return ( <>

{device.model} - + {/* Badges to display: None, Proteus, MLS (Valid), MLS (Not Activated), MLS (Expires Soon), MLS (Expired), , MLS (Revoked) */} +

- {mlsFingerprint && } + {mlsFingerprint && ( + + )} {/* Proteus */} void; + onSelect: (device: ClientEntity, currentDeviceIdentity?: WireIdentity) => void; + deviceNumber: number; + getDeviceIdentity: (deviceId: string) => Promise; +} + +export const Device = ({device, isSSO, onSelect, onRemove, deviceNumber, getDeviceIdentity}: DeviceProps) => { + const {isVerified} = useKoSubscribableChildren(device.meta, ['isVerified']); + const verifiedLabel = isVerified ? t('preferencesDevicesVerification') : t('preferencesDeviceNotVerified'); + const deviceAriaLabel = `${t('preferencesDevice')} ${deviceNumber}, ${device.getName()}, ${verifiedLabel}`; + + const [currentDeviceIdentity, setCurrentDeviceIdentity] = useState(); + const mlsFingerprint = device.mlsPublicKeys?.[MLSPublicKeys.ED25519]; + + const {isNotDownloaded, isValid, isExpireSoon} = getCertificateDetails(currentDeviceIdentity?.certificate); + const certificateState = getCertificateState({isNotDownloaded, isValid, isExpireSoon}); + + const handleClick = (event: MouseEvent) => { + event.stopPropagation(); + onRemove(device); + }; + + const handleKeyPress = (event: KeyboardEvent) => { + event.stopPropagation(); + }; + + const handleGetDeviceIdentity = useCallback(async () => { + const deviceIdentity = await getDeviceIdentity(device.id); + setCurrentDeviceIdentity(deviceIdentity?.[0]); + }, [device.id, getDeviceIdentity]); + + useEffect(() => { + void handleGetDeviceIdentity(); + }, [handleGetDeviceIdentity]); + + const onDeviceSelect = () => onSelect(device, currentDeviceIdentity); + + return ( +
handleKeyDown(event, onDeviceSelect)} + tabIndex={TabIndex.FOCUSABLE} + role="button" + > +
+
+ {device.getName()} + + +
+ + {mlsFingerprint && ( +

+ {t('preferencesMLSThumbprint')} + + + + +

+ )} + +

+ {t('preferencesDevicesId')} + + + + +

+
+ +
+ {!device.isLegalHold() && ( + + )} + +
+
+ ); +}; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/index.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/index.ts new file mode 100644 index 00000000000..f134bf2cc9a --- /dev/null +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/index.ts @@ -0,0 +1,20 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export * from './Device'; diff --git a/src/script/page/MainContent/panels/preferences/devices/DeviceDetailsPreferences.test.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.test.tsx similarity index 100% rename from src/script/page/MainContent/panels/preferences/devices/DeviceDetailsPreferences.test.tsx rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.test.tsx diff --git a/src/script/page/MainContent/panels/preferences/devices/DeviceDetailsPreferences.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx similarity index 88% rename from src/script/page/MainContent/panels/preferences/devices/DeviceDetailsPreferences.tsx rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx index 397c50e4af7..4a607d01c48 100644 --- a/src/script/page/MainContent/panels/preferences/devices/DeviceDetailsPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx @@ -19,16 +19,17 @@ import React, {useEffect, useState} from 'react'; +import {WireIdentity} from '@wireapp/core-crypto/platforms/web/corecrypto'; + import {Button, ButtonVariant} from '@wireapp/react-ui-kit'; import {ClientEntity} from 'src/script/client/ClientEntity'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; -import {DetailedDevice} from './components/DetailedDevice'; - -import {Config} from '../../../../../Config'; -import {MotionDuration} from '../../../../../motion/MotionDuration'; +import {Config} from '../../../../../../../Config'; +import {MotionDuration} from '../../../../../../../motion/MotionDuration'; +import {DetailedDevice} from '../DetailedDevice'; interface DevicesPreferencesProps { device: ClientEntity; @@ -37,6 +38,7 @@ interface DevicesPreferencesProps { onRemove: (device: ClientEntity) => void; onResetSession: (device: ClientEntity) => Promise; onVerify: (device: ClientEntity, verified: boolean) => void; + deviceIdentity?: WireIdentity; } enum SessionResetState { @@ -45,13 +47,14 @@ enum SessionResetState { RESET = 'reset', } -const DeviceDetailsPreferences: React.FC = ({ +export const DeviceDetailsPreferences: React.FC = ({ device, getFingerprint, onVerify, onRemove, onClose, onResetSession, + deviceIdentity, }) => { const {isVerified} = useKoSubscribableChildren(device.meta, ['isVerified']); const [resetState, setResetState] = useState(SessionResetState.RESET); @@ -66,7 +69,7 @@ const DeviceDetailsPreferences: React.FC = ({ }; useEffect(() => { - getFingerprint(device).then(setFingerprint); + void getFingerprint(device).then(setFingerprint); }, [device, getFingerprint]); return ( @@ -89,7 +92,14 @@ const DeviceDetailsPreferences: React.FC = ({ /> - +
= ({
); }; - -export {DeviceDetailsPreferences}; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/index.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/index.ts new file mode 100644 index 00000000000..5d8b26a3ea6 --- /dev/null +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/index.ts @@ -0,0 +1,20 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export * from './DeviceDetailsPreferences'; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts new file mode 100644 index 00000000000..6866354b406 --- /dev/null +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts @@ -0,0 +1,98 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {CSSObject} from '@emotion/serialize'; + +import {MLSStatuses} from 'Components/Badges'; + +const MLSStatusColor = { + [MLSStatuses.VALID]: 'var(--green-500)', + [MLSStatuses.EXPIRED]: 'var(--red-500)', + [MLSStatuses.NOT_DOWNLOADED]: 'var(--red-500)', + [MLSStatuses.EXPIRES_SOON]: 'var(--green-500)', +}; + +type stylesProps = { + container: CSSObject; + title: CSSObject; + e2eiStatusContainer: CSSObject; + e2eiStatus: (MLSStatus?: MLSStatuses) => CSSObject; + serialNumberWrapper: CSSObject; + notAvailable: CSSObject; + serialNumber: CSSObject; + delimiter: (position: number) => CSSObject; + buttonsGroup: CSSObject; +}; + +export const styles: stylesProps = { + container: { + paddingLeft: '16px', + borderLeft: '4px solid var(--gray-40)', + marginTop: '12px', + }, + title: { + marginBottom: '6px', + }, + e2eiStatusContainer: { + display: 'flex', + alignItems: 'center', + marginBottom: '6px', + + '.conversation-badges': { + marginLeft: '4px', + }, + }, + e2eiStatus: (MLSStatus?: MLSStatuses) => ({ + color: MLSStatus ? MLSStatusColor[MLSStatus] : 'var(--green-500)', + }), + serialNumberWrapper: { + marginBlock: '6px', + }, + notAvailable: { + color: 'var(--gray-70)', + }, + serialNumber: { + fontSize: 'var(--font-size-medium)', + lineHeight: 'var(--line-height-sm)', + textTransform: 'uppercase', + width: '217px', + textAlign: 'justify', + }, + delimiter: position => ({ + marginInline: '2px', + + [`:nth-of-type(${position})`]: { + marginRight: 0, + + '&::after': { + content: '""', + display: 'block', + }, + }, + }), + buttonsGroup: { + display: 'flex', + alignItems: 'center', + gap: '6px', + + '> button': { + marginBottom: 0, + }, + }, +}; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx new file mode 100644 index 00000000000..86008440783 --- /dev/null +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx @@ -0,0 +1,56 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {render} from '@testing-library/react'; + +import {MLSStatuses} from 'Components/Badges'; +import {withTheme} from 'src/script/auth/util/test/TestUtil'; + +import {E2EICertificateDetails} from './E2EICertificateDetails'; + +describe('E2ECertificateDetails', () => { + const isMLSVerified = true; + + it('is e2e identity verified', async () => { + const {getByTestId} = render( + withTheme(), + ); + + const E2EIdentityStatus = getByTestId('e2e-identity-status'); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual('Valid'); + }); + + it('is e2e identity not downloaded', async () => { + const {getByTestId} = render( + withTheme(), + ); + + const E2EIdentityStatus = getByTestId('e2e-identity-status'); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.NOT_DOWNLOADED); + }); + + it('is e2e identity expired', async () => { + const {getByTestId} = render( + withTheme(), + ); + + const E2EIdentityStatus = getByTestId('e2e-identity-status'); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.EXPIRED); + }); +}); diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx new file mode 100644 index 00000000000..a494b8b1676 --- /dev/null +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx @@ -0,0 +1,108 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {useState} from 'react'; + +import {Button, ButtonVariant} from '@wireapp/react-ui-kit'; + +import {Badges} from 'Components/Badges'; +import {CertificateDetailsModal} from 'Components/Modals/CertificateDetailsModal'; +import {E2EIHandler} from 'src/script/E2EIdentity'; +import {getCertificateDetails, getCertificateState} from 'Util/certificateDetails'; +import {t} from 'Util/LocalizerUtil'; +import {getLogger} from 'Util/Logger'; + +import {styles} from './E2EICertificateDetails.styles'; + +const logger = getLogger('E2EICertificateDetails'); + +interface E2EICertificateDetailsProps { + certificate?: string; + isMLSVerified?: boolean; + isOtherDevice?: boolean; +} + +export const E2EICertificateDetails = ({ + certificate, + isMLSVerified, + isOtherDevice = false, +}: E2EICertificateDetailsProps) => { + const [isCertificateDetailsModalOpen, setIsCertificateDetailsModalOpen] = useState(false); + + const {isNotDownloaded, isValid, isExpireSoon} = getCertificateDetails(certificate); + const certificateState = getCertificateState({isNotDownloaded, isValid, isExpireSoon}); + + const updateCertificate = async () => { + // TODO: Waiting for update certificate implementation + return null; + }; + + const getCertificate = async () => { + try { + const e2eHandler = E2EIHandler.getInstance(); + + await e2eHandler.enrollE2EI(); + } catch (error) { + logger.error('Cannot get E2EI instance: ', error); + } + }; + + return ( +
+
{t('E2EI.certificateTitle')}
+ +
+

+ {t('E2EI.status')} + {t(`E2EI.${certificateState}`)} +

+ + +
+ +
+ {!isNotDownloaded && ( + + )} + + {isCertificateDetailsModalOpen && certificate && ( + setIsCertificateDetailsModalOpen(false)} /> + )} + + {!isOtherDevice && isNotDownloaded && ( + + )} + + {!isOtherDevice && certificate && !isValid && ( + + )} +
+
+ ); +}; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/index.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/index.ts new file mode 100644 index 00000000000..0bfb91a67bc --- /dev/null +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/index.ts @@ -0,0 +1,20 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export * from './E2EICertificateDetails'; diff --git a/src/script/page/MainContent/panels/preferences/devices/components/FormattedId.styles.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId.styles.ts similarity index 100% rename from src/script/page/MainContent/panels/preferences/devices/components/FormattedId.styles.ts rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId.styles.ts diff --git a/src/script/page/MainContent/panels/preferences/devices/components/FormattedId.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId.tsx similarity index 100% rename from src/script/page/MainContent/panels/preferences/devices/components/FormattedId.tsx rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId.tsx diff --git a/src/script/page/MainContent/panels/preferences/devices/components/MLSDeviceDetails/MLSDeviceDetails.styles.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.styles.ts similarity index 100% rename from src/script/page/MainContent/panels/preferences/devices/components/MLSDeviceDetails/MLSDeviceDetails.styles.ts rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.styles.ts diff --git a/src/script/page/MainContent/panels/preferences/devices/components/MLSDeviceDetails/MLSDeviceDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx similarity index 70% rename from src/script/page/MainContent/panels/preferences/devices/components/MLSDeviceDetails/MLSDeviceDetails.tsx rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx index 8ad236437b6..20f9585b270 100644 --- a/src/script/page/MainContent/panels/preferences/devices/components/MLSDeviceDetails/MLSDeviceDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx @@ -17,19 +17,32 @@ * */ +import {Config} from 'src/script/Config'; import {t} from 'Util/LocalizerUtil'; import {splitFingerprint} from 'Util/StringUtil'; +import {supportsMLS} from 'Util/util'; import {styles} from './MLSDeviceDetails.styles'; import {MLSPublicKeys} from '../../../../../../../client'; +import {E2EICertificateDetails} from '../E2EICertificateDetails'; import {FormattedId} from '../FormattedId'; interface MLSDeviceDetailsProps { + isMLSVerified?: boolean; fingerprint: string; + isOtherDevice?: boolean; + certificate?: string; } -export const MLSDeviceDetails = ({fingerprint}: MLSDeviceDetailsProps) => { +export const MLSDeviceDetails = ({ + fingerprint, + isMLSVerified = true, + isOtherDevice = false, + certificate, +}: MLSDeviceDetailsProps) => { + const isE2EIEnabled = supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; + return (

{t('mlsSignature', MLSPublicKeys.ED25519.toUpperCase())}

@@ -39,6 +52,10 @@ export const MLSDeviceDetails = ({fingerprint}: MLSDeviceDetailsProps) => {

+ + {isE2EIEnabled && ( + + )}
); }; diff --git a/src/script/page/MainContent/panels/preferences/devices/components/MLSDeviceDetails/index.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/index.ts similarity index 100% rename from src/script/page/MainContent/panels/preferences/devices/components/MLSDeviceDetails/index.ts rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/index.ts diff --git a/src/script/page/MainContent/panels/preferences/devices/components/ProteusDeviceDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx similarity index 100% rename from src/script/page/MainContent/panels/preferences/devices/components/ProteusDeviceDetails.tsx rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/index.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/index.ts new file mode 100644 index 00000000000..9a9777cafe3 --- /dev/null +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/index.ts @@ -0,0 +1,20 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export * from './DevicesPreferences'; diff --git a/src/script/page/MainContent/panels/preferences/devices/DevicesPreferences.tsx b/src/script/page/MainContent/panels/preferences/devices/DevicesPreferences.tsx deleted file mode 100644 index 65d6ae6b5b9..00000000000 --- a/src/script/page/MainContent/panels/preferences/devices/DevicesPreferences.tsx +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Wire - * Copyright (C) 2022 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import React, {useEffect, useState} from 'react'; - -import {QualifiedId} from '@wireapp/api-client/lib/user'; -import {TabIndex} from '@wireapp/react-ui-kit/lib/types/enums'; -import {container} from 'tsyringe'; - -import {Icon} from 'Components/Icon'; -import {ClientEntity, MLSPublicKeys} from 'src/script/client/ClientEntity'; -import {VerificationBadges} from 'src/script/components/VerificationBadges'; -import {CryptographyRepository} from 'src/script/cryptography/CryptographyRepository'; -import {handleKeyDown} from 'Util/KeyboardUtil'; -import {t} from 'Util/LocalizerUtil'; -import {splitFingerprint} from 'Util/StringUtil'; - -import {DetailedDevice} from './components/DetailedDevice'; -import {FormattedId} from './components/FormattedId'; -import {DeviceDetailsPreferences} from './DeviceDetailsPreferences'; - -import {ClientState} from '../../../../../client/ClientState'; -import {ConversationState} from '../../../../../conversation/ConversationState'; -import {Conversation} from '../../../../../entity/Conversation'; -import {UserState} from '../../../../../user/UserState'; -import {useKoSubscribableChildren} from '../../../../../util/ComponentUtil'; -import {PreferencesPage} from '../components/PreferencesPage'; - -interface DevicesPreferencesProps { - clientState: ClientState; - conversationState: ConversationState; - cryptographyRepository: CryptographyRepository; - removeDevice: (device: ClientEntity) => Promise; - resetSession: (userId: QualifiedId, device: ClientEntity, conversation: Conversation) => Promise; - userState: UserState; - verifyDevice: (userId: QualifiedId, device: ClientEntity, isVerified: boolean) => void; -} - -interface DeviceProps { - device: ClientEntity; - isSSO: boolean; - onRemove: (device: ClientEntity) => void; - onSelect: (device: ClientEntity) => void; - deviceNumber: number; -} - -const Device = ({device, isSSO, onSelect, onRemove, deviceNumber}: DeviceProps) => { - const {isVerified} = useKoSubscribableChildren(device.meta, ['isVerified']); - const verifiedLabel = isVerified ? t('preferencesDevicesVerification') : t('preferencesDeviceNotVerified'); - const deviceAriaLabel = `${t('preferencesDevice')} ${deviceNumber}, ${device.getName()}, ${verifiedLabel}`; - - const mlsFingerprint = device.mlsPublicKeys?.[MLSPublicKeys.ED25519]; - - const handleClick = (event: React.MouseEvent) => { - event.stopPropagation(); - onRemove(device); - }; - - const handleKeyPress = (event: React.KeyboardEvent) => { - event.stopPropagation(); - }; - - const onDeviceSelect = () => onSelect(device); - - return ( -
handleKeyDown(event, onDeviceSelect)} - tabIndex={TabIndex.FOCUSABLE} - role="button" - > -
-
- {device.getName()} - - -
- - {mlsFingerprint && ( -

- {t('preferencesMLSThumbprint')} - - - - -

- )} - -

- {t('preferencesDevicesId')} - - - - -

-
- -
- {!device.isLegalHold() && ( - - )} - -
-
- ); -}; - -const DevicesPreferences: React.FC = ({ - clientState = container.resolve(ClientState), - userState = container.resolve(UserState), - conversationState = container.resolve(ConversationState), - cryptographyRepository, - removeDevice, - verifyDevice, - resetSession, -}) => { - const [selectedDevice, setSelectedDevice] = useState(); - const {clients, currentClient} = useKoSubscribableChildren(clientState, ['clients', 'currentClient']); - const {self} = useKoSubscribableChildren(userState, ['self']); - const isSSO = self?.isNoPasswordSSO; - const getFingerprint = (device: ClientEntity) => - cryptographyRepository.getRemoteFingerprint(self.qualifiedId, device.id); - - const [localFingerprint, setLocalFingerprint] = useState(''); - - useEffect(() => { - cryptographyRepository.getLocalFingerprint().then(setLocalFingerprint); - }, [cryptographyRepository]); - - if (selectedDevice) { - return ( - { - await removeDevice(device); - setSelectedDevice(undefined); - }} - onClose={() => setSelectedDevice(undefined)} - onVerify={(device, verified) => verifyDevice(self.qualifiedId, device, verified)} - onResetSession={device => - resetSession(self.qualifiedId, device, conversationState.getSelfProteusConversation()) - } - /> - ); - } - - return ( - -
- {t('preferencesDevicesCurrent')} - -
- -
- - {clients.length > 0 && ( -
- {t('preferencesDevicesActive')} - {clients.map((device, index) => ( - - ))} -

{t('preferencesDevicesActiveDetail')}

-
- )} -
- ); -}; - -export {DevicesPreferences}; diff --git a/src/script/util/certificateDetails.ts b/src/script/util/certificateDetails.ts new file mode 100644 index 00000000000..cf3b1f742fa --- /dev/null +++ b/src/script/util/certificateDetails.ts @@ -0,0 +1,68 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import * as x509 from '@peculiar/x509'; + +import {MLSStatuses} from 'Components/Badges'; + +// TODO: Will be changed when I get information how much hours before we need to display this status. +const EXPIRATION_HOURS = 32; + +export const getCertificateDetails = (certificate?: string) => { + const currentDate = new Date(); + const parsedCertificate = certificate ? new x509.X509Certificate(certificate) : null; + const isValid = + !!parsedCertificate && currentDate > parsedCertificate.notBefore && currentDate < parsedCertificate.notAfter; + + const expireDate = parsedCertificate?.notAfter ? new Date(parsedCertificate.notAfter) : null; + const expirationDate = expireDate ? expireDate.setHours(expireDate.getHours() - EXPIRATION_HOURS) : null; + const isExpireSoon = isValid && !!expirationDate && parsedCertificate.notAfter > new Date(expirationDate); + + return { + isNotDownloaded: !certificate, + isValid, + isExpireSoon, + }; +}; + +interface GetCertificateState { + isNotDownloaded?: boolean; + isValid?: boolean; + isExpireSoon?: boolean; +} + +export const getCertificateState = ({ + isNotDownloaded = false, + isValid = false, + isExpireSoon = false, +}: GetCertificateState): MLSStatuses => { + if (isNotDownloaded) { + return MLSStatuses.NOT_DOWNLOADED; + } + + if (isValid && !isExpireSoon) { + return MLSStatuses.VALID; + } + + if (isValid && isExpireSoon) { + return MLSStatuses.EXPIRES_SOON; + } + + return MLSStatuses.EXPIRED; +}; diff --git a/src/style/common/typing.less b/src/style/common/typing.less index 66df3d9b6d9..7d8fa6e81b8 100644 --- a/src/style/common/typing.less +++ b/src/style/common/typing.less @@ -162,6 +162,14 @@ line-height: var(--line-height-lg); } +.label-1 { + color: var(--black); + //font-family: "SF Pro Text" + font-size: var(--font-size-medium); + font-weight: var(--font-weight-regular); + line-height: var(--line-height-sm); +} + .label-2 { color: var(--gray-70); font-size: var(--font-size-small); diff --git a/yarn.lock b/yarn.lock index 44bea364b2c..eeb5a181b27 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1958,7 +1958,7 @@ __metadata: languageName: node linkType: hard -"@csstools/cascade-layer-name-parser@npm:^1.0.4": +"@csstools/cascade-layer-name-parser@npm:^1.0.3, @csstools/cascade-layer-name-parser@npm:^1.0.4": version: 1.0.4 resolution: "@csstools/cascade-layer-name-parser@npm:1.0.4" peerDependencies: @@ -1998,7 +1998,7 @@ __metadata: languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^2.3.1": +"@csstools/css-parser-algorithms@npm:^2.3.0, @csstools/css-parser-algorithms@npm:^2.3.1": version: 2.3.1 resolution: "@csstools/css-parser-algorithms@npm:2.3.1" peerDependencies: @@ -2007,14 +2007,14 @@ __metadata: languageName: node linkType: hard -"@csstools/css-tokenizer@npm:^2.2.0": +"@csstools/css-tokenizer@npm:^2.1.1, @csstools/css-tokenizer@npm:^2.2.0": version: 2.2.0 resolution: "@csstools/css-tokenizer@npm:2.2.0" checksum: d6b3ead496e187cbf89b5e08a55be7a8393676c2b93526f7f051418376d08146f9f533708aca5eec6a07d925ea6a7e65b0e0bb36aabeba657666e968b8d89cd0 languageName: node linkType: hard -"@csstools/media-query-list-parser@npm:^2.1.4": +"@csstools/media-query-list-parser@npm:^2.1.2, @csstools/media-query-list-parser@npm:^2.1.4": version: 2.1.4 resolution: "@csstools/media-query-list-parser@npm:2.1.4" peerDependencies: @@ -2036,31 +2036,31 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-color-function@npm:^3.0.4": - version: 3.0.4 - resolution: "@csstools/postcss-color-function@npm:3.0.4" +"@csstools/postcss-color-function@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/postcss-color-function@npm:3.0.3" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.1 + "@csstools/postcss-progressive-custom-properties": ^3.0.0 peerDependencies: postcss: ^8.4 - checksum: b1ac1b33453f4df154aa50b54a01a74fa4c659c1c15cd0d83080396f6e5e9974a514f9a16a058262dd3236dc245763040478a83da8e675883d03dff33db6e577 + checksum: 9cef65142823670e9ab6667c8855f7499716eab6c2b880d8dbcebaf4c1c720df7c5417d6686b78b162a7c214c5c4e3c04621095182463d9f86a5e58f96a98828 languageName: node linkType: hard -"@csstools/postcss-color-mix-function@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/postcss-color-mix-function@npm:2.0.4" +"@csstools/postcss-color-mix-function@npm:^2.0.3": + version: 2.0.3 + resolution: "@csstools/postcss-color-mix-function@npm:2.0.3" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.1 + "@csstools/postcss-progressive-custom-properties": ^3.0.0 peerDependencies: postcss: ^8.4 - checksum: f52ca6367273e5a5b4139b422998a91496e26fdde7f91c48099093503fd24d72d9c1603b492c11b6f31d0b6dea72cb283d7c68cc5381c8c9bc6fb32ea31d92d8 + checksum: 20c371381de7b65373b17f2f6f4568296bda3503ea25ed2090e03d71949770811fdd839a02608bf3a6cb6a300e4a1c45ca9d9bfc5aacc601420b6078a5378a86 languageName: node linkType: hard @@ -2088,17 +2088,17 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-gradients-interpolation-method@npm:^4.0.4": - version: 4.0.4 - resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.4" +"@csstools/postcss-gradients-interpolation-method@npm:^4.0.3": + version: 4.0.3 + resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.3" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.1 + "@csstools/postcss-progressive-custom-properties": ^3.0.0 peerDependencies: postcss: ^8.4 - checksum: 796a0a79da02393df562c961effa516e047721f0b4055791702878320465dc5d583ced3705295dd3bc9c03c2f64dbd56971f0b8079df2fc19638f408ff2bceef + checksum: 4433768c89b96f5d506ab02b1d266a499c4e4ed0b568573e38dd009c9dc9a23fed4f2319a52b9097fbe8d158607de14e32b997b3c9f1c2241e582136d54bd7ca languageName: node linkType: hard @@ -2115,36 +2115,27 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-ic-unit@npm:^3.0.1": - version: 3.0.1 - resolution: "@csstools/postcss-ic-unit@npm:3.0.1" +"@csstools/postcss-ic-unit@npm:^3.0.0": + version: 3.0.0 + resolution: "@csstools/postcss-ic-unit@npm:3.0.0" dependencies: - "@csstools/postcss-progressive-custom-properties": ^3.0.1 + "@csstools/postcss-progressive-custom-properties": ^3.0.0 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: b8120d8e2886cb5fc3276d576b7351821665575d0f2f3cf58c2a376352a19f21c88087ebb8f55bdfe094b2d4f9ef25e5bc8e0944e1761760b4f8c34032b04d9a - languageName: node - linkType: hard - -"@csstools/postcss-initial@npm:^1.0.0": - version: 1.0.0 - resolution: "@csstools/postcss-initial@npm:1.0.0" - peerDependencies: - postcss: ^8.4 - checksum: 21d15759921509ddc78505265bd376854bf2710cdc27f62c138d4ee991581a34bebd8f61f100fd053e0bb95760121f1e1e4dbe61ae41cbef7b3f817e42c35743 + checksum: 91bbe46c8691f641d610f8878fa5a8a01cbf7cb8f2b79222c3de4c21c2afa5e82654fd169b507faa424c8cd8711677aadaa978df4d25269b811be36615eebf61 languageName: node linkType: hard -"@csstools/postcss-is-pseudo-class@npm:^4.0.2": - version: 4.0.2 - resolution: "@csstools/postcss-is-pseudo-class@npm:4.0.2" +"@csstools/postcss-is-pseudo-class@npm:^4.0.1": + version: 4.0.1 + resolution: "@csstools/postcss-is-pseudo-class@npm:4.0.1" dependencies: "@csstools/selector-specificity": ^3.0.0 postcss-selector-parser: ^6.0.13 peerDependencies: postcss: ^8.4 - checksum: ef944cbcd4ced80dcf6b276ec8e818389c07a3986036e479adc0f0cdf4b4a65e0230aa5e9f31843e1dfdfe1654d3b301aabbeeca4cd99221712970023c937461 + checksum: eff256d0c7bf84a4a4fb1dffae54b9ab019b5aec3e2bcc9a41b19e71044a060a282f65f2ef2e4e1f679cd0a6db7fa0622c95220ece22a116181cffd0dffb7e11 languageName: node linkType: hard @@ -2168,14 +2159,14 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-logical-viewport-units@npm:^2.0.2": - version: 2.0.2 - resolution: "@csstools/postcss-logical-viewport-units@npm:2.0.2" +"@csstools/postcss-logical-viewport-units@npm:^2.0.1": + version: 2.0.1 + resolution: "@csstools/postcss-logical-viewport-units@npm:2.0.1" dependencies: "@csstools/css-tokenizer": ^2.2.0 peerDependencies: postcss: ^8.4 - checksum: 6d6a86b41cd846d1298a0bdb39f03ece179bc8e1fb96c9d129658102952a389a6f4110ead25d7d8c65ff74313b59a567a4a2e9000a290777d69892b08742fef1 + checksum: f779267989a9e46e7bcf2163a4ae1862d2af171248c31adcd6b1fba73611dbf788d5c58c90c9ef0851db63fa00b2dc09e6883ebc31645ddf5cbbe2da2b7616c0 languageName: node linkType: hard @@ -2217,53 +2208,53 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-normalize-display-values@npm:^3.0.1": - version: 3.0.1 - resolution: "@csstools/postcss-normalize-display-values@npm:3.0.1" +"@csstools/postcss-normalize-display-values@npm:^3.0.0": + version: 3.0.0 + resolution: "@csstools/postcss-normalize-display-values@npm:3.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 895873a7ec7551962fd2c03207b7899cc0f6a575b9bf816de49afff15b28dd751e8cf6fbf2a3bfb8372993309d600b3f35236ddf249a59ecf7c981ec72628305 + checksum: fcb1c3f862b5966558e1ea91a8e91db86afc34cfe5cc4c2d19a4126153b87a041533dec9a8887f0fa284c361de30a38262799aa83dcc789ed336abc9b17f8d97 languageName: node linkType: hard -"@csstools/postcss-oklab-function@npm:^3.0.4": - version: 3.0.4 - resolution: "@csstools/postcss-oklab-function@npm:3.0.4" +"@csstools/postcss-oklab-function@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/postcss-oklab-function@npm:3.0.3" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.1 + "@csstools/postcss-progressive-custom-properties": ^3.0.0 peerDependencies: postcss: ^8.4 - checksum: 714a3cd27e2c46a925b74eeb6d1840dc3088655fb49b83aae8632416fcbec0797acde31bdbd9d26ba6707663675ba78a92ccfb12c1f35eec41a5731ed3c32f4f + checksum: 4e3c6f6b9388d23d5c7a8c1b35912af354af5ca985552f7a2d01c6efe5a11e0a6ebeeaa4fd5a159c41a76292856f19de1388772718d3d46f91d41ff6bdd61d85 languageName: node linkType: hard -"@csstools/postcss-progressive-custom-properties@npm:^3.0.1": - version: 3.0.1 - resolution: "@csstools/postcss-progressive-custom-properties@npm:3.0.1" +"@csstools/postcss-progressive-custom-properties@npm:^3.0.0": + version: 3.0.0 + resolution: "@csstools/postcss-progressive-custom-properties@npm:3.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 4bb03459c5f39fcd77518c8229026b68cc24746e44234604fc4f93ea4c6fccf01d23e8cad6043a23e1bc7ce3b677f5d038b9b63ea5971231bb7787535fa035ed + checksum: 4b92e5ae893c45bfd4109a0c5b90180af9df121e38a1ad0e828c29bec4f487b89af9140a1d9c58b83ebc28303b733f62926c8bb8cc72ac9db6e10a1e7a31c9ee languageName: node linkType: hard -"@csstools/postcss-relative-color-syntax@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.4" +"@csstools/postcss-relative-color-syntax@npm:^2.0.3": + version: 2.0.3 + resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.3" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.1 + "@csstools/postcss-progressive-custom-properties": ^3.0.0 peerDependencies: postcss: ^8.4 - checksum: 5c1b13e8e17e206547b0cef55d227d66e5a1cf96a11eb91a2ea176cad3c6dd5abec88c742ba90d4812f3cbbd9ef88d2a80b31e6858345e2966393ab7f3fd784f + checksum: 02465a12737805474e0ff0dbe83a770aaa53f6b7e3a82f47c24cc0a89e392c958e04194e1938e341265748aae1aacc0a59b806aa2c53384a3875663fecf1b6f3 languageName: node linkType: hard @@ -2291,15 +2282,15 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-text-decoration-shorthand@npm:^3.0.3": - version: 3.0.3 - resolution: "@csstools/postcss-text-decoration-shorthand@npm:3.0.3" +"@csstools/postcss-text-decoration-shorthand@npm:^3.0.2": + version: 3.0.2 + resolution: "@csstools/postcss-text-decoration-shorthand@npm:3.0.2" dependencies: "@csstools/color-helpers": ^3.0.2 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: c39e4e7aa275f49c2dc565e606bdecc6605eac3fd46c1bdf551b75674034511c666294f935e203c2e0103f7c422c09ccdbbe1a5c3fb16991072744a963a820ad + checksum: ce0eedb04f628b874a20caff68848ca98fc8731852a4da8c0014f093d593f920be3ae024b272444e10cdc3c1779630426d288d6cb57883f2c7b2b0ea9f5ed7c3 languageName: node linkType: hard @@ -3563,6 +3554,152 @@ __metadata: languageName: node linkType: hard +"@peculiar/asn1-cms@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-cms@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + "@peculiar/asn1-x509-attr": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: caeb7fcb594b7158ecb31f2e0e3a85a79fb9a51b9204b3fbad398706f56f20dfb6478f37fc163b544ebe3fd6ade7606a71826684df040ae6870fe7a4d8286d8c + languageName: node + linkType: hard + +"@peculiar/asn1-csr@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-csr@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 4989edc765476b02995fbee88ab3860cf657f0e62756fa0ec44cd95158e6276f58c2c8656e5f8bd2f6934650999b781f2ec7b65ec537fc41a1aeb387b2e32883 + languageName: node + linkType: hard + +"@peculiar/asn1-ecc@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-ecc@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 4b9a383dd443fbb9699d79550e03d1185781885768d8c7b780e26a959344286a53539824fa4a3103e9e8393a7d062fe6820bf79abafb340dc18ee5ce81b1d470 + languageName: node + linkType: hard + +"@peculiar/asn1-pfx@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-pfx@npm:2.3.6" + dependencies: + "@peculiar/asn1-cms": ^2.3.6 + "@peculiar/asn1-pkcs8": ^2.3.6 + "@peculiar/asn1-rsa": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: faa3abc62e4ba4e67f6377178df62c24146920475e4ddfee024b1e14b208947d9b136c1bb1b82d7a3a28b76a544687529338f6143f92bdf324db23bd6aa0c11a + languageName: node + linkType: hard + +"@peculiar/asn1-pkcs8@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-pkcs8@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 17b2ea5f2350ba74d58084f95f4d739d30413112e85268fd55b308307bd6a6f006e06accaf3e181103a61bfb7efd2c21be7f914b48954845bef109b1b0a4bc46 + languageName: node + linkType: hard + +"@peculiar/asn1-pkcs9@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-pkcs9@npm:2.3.6" + dependencies: + "@peculiar/asn1-cms": ^2.3.6 + "@peculiar/asn1-pfx": ^2.3.6 + "@peculiar/asn1-pkcs8": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + "@peculiar/asn1-x509-attr": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 3b8ca25b46ce9afc51b8cc72afab6fd32bb1dbf501eef68f997b35591c16c321384224fe478fd03fa644f3d540d719568767c7bd8bd1f617a5d9f8d318be0d2c + languageName: node + linkType: hard + +"@peculiar/asn1-rsa@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-rsa@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 120dda00af6e1b1e5568826ac8211d60d36b3cbe91b086cae6b5ba132f1670ba129284068110305b237550e402c0beeda45fd713d640f97ad11d8cf6c925b31a + languageName: node + linkType: hard + +"@peculiar/asn1-schema@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-schema@npm:2.3.6" + dependencies: + asn1js: ^3.0.5 + pvtsutils: ^1.3.2 + tslib: ^2.4.0 + checksum: fc09387c6e3dea07fca21b54ea8c71ce3ec0f8c92377237e51aef729f0c2df92781aa7a18a546a6fe809519faeaa222df576ec21a35c6095037a78677204a55b + languageName: node + linkType: hard + +"@peculiar/asn1-x509-attr@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-x509-attr@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 100a11aad2168a99b23d576869d27d569c34191d14311cf6fcbea126b737bcb42f23401ead45c2bc55074d164712c65e5541be23c0e5f92bf19005957a16a872 + languageName: node + linkType: hard + +"@peculiar/asn1-x509@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-x509@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + asn1js: ^3.0.5 + ipaddr.js: ^2.0.1 + pvtsutils: ^1.3.2 + tslib: ^2.4.0 + checksum: 6e946bd44091fb88f617c3bbf54ed1113ed2b249675dd36004513444f409160f6d446bdb82d3cb6041b4d15c68fa4cf40ad452891a5f85dda2af89ee5b0590d2 + languageName: node + linkType: hard + +"@peculiar/x509@npm:1.9.5": + version: 1.9.5 + resolution: "@peculiar/x509@npm:1.9.5" + dependencies: + "@peculiar/asn1-cms": ^2.3.6 + "@peculiar/asn1-csr": ^2.3.6 + "@peculiar/asn1-ecc": ^2.3.6 + "@peculiar/asn1-pkcs9": ^2.3.6 + "@peculiar/asn1-rsa": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + pvtsutils: ^1.3.5 + reflect-metadata: ^0.1.13 + tslib: ^2.6.1 + tsyringe: ^4.8.0 + checksum: 855342d71bb9cf4c19f5232106bd5f79f2ae7b5607568940d9bdb5bd528ccf4454a19bd47a7cb820397216a1bb7cf613e940c1778b8cf940ec082055bc373c56 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -4302,9 +4439,9 @@ __metadata: linkType: hard "@types/prop-types@npm:*": - version: 15.7.6 - resolution: "@types/prop-types@npm:15.7.6" - checksum: 5f2796c7330461a556c4d18035fb914b372f96b1619a4f8302d07e1ea708e06a2dbe666dfcd8ff03f64c625aa4c12b31f677d0298a32910f5ab7ee51521d8086 + version: 15.7.5 + resolution: "@types/prop-types@npm:15.7.5" + checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 languageName: node linkType: hard @@ -4338,7 +4475,18 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:^18.2.22": +"@types/react@npm:*, @types/react@npm:16 || 17 || 18": + version: 18.2.21 + resolution: "@types/react@npm:18.2.21" + dependencies: + "@types/prop-types": "*" + "@types/scheduler": "*" + csstype: ^3.0.2 + checksum: ffed203bfe7aad772b8286f7953305c9181ac3a8f27d3f5400fbbc2a8e27ca8e5bbff818ee014f39ca0d19d2b3bb154e5bdbec7e232c6f80b59069375aa78349 + languageName: node + linkType: hard + +"@types/react@npm:^18.2.22": version: 18.2.22 resolution: "@types/react@npm:18.2.22" dependencies: @@ -4477,14 +4625,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.0.0": - version: 6.7.2 - resolution: "@typescript-eslint/eslint-plugin@npm:6.7.2" + version: 6.7.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.7.0" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.7.2 - "@typescript-eslint/type-utils": 6.7.2 - "@typescript-eslint/utils": 6.7.2 - "@typescript-eslint/visitor-keys": 6.7.2 + "@typescript-eslint/scope-manager": 6.7.0 + "@typescript-eslint/type-utils": 6.7.0 + "@typescript-eslint/utils": 6.7.0 + "@typescript-eslint/visitor-keys": 6.7.0 debug: ^4.3.4 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -4497,25 +4645,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 4d6f612619282a20518cd6581bce16cd7c50ac4e49f5eeca2ab916a923049379aa382817568c929216381fb2c1bfbc1c4e6fde16ac8bfdd63862a9126f0ab797 + checksum: 48393749c5c1f67acf71795551c6065586198530006189c48636e32caea4d1285624c16c047164f9d29055e26c4f90fca964c5a2b5c0e9b6d9ed87acd74ca0d6 languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.0.0": - version: 6.7.2 - resolution: "@typescript-eslint/parser@npm:6.7.2" + version: 6.7.0 + resolution: "@typescript-eslint/parser@npm:6.7.0" dependencies: - "@typescript-eslint/scope-manager": 6.7.2 - "@typescript-eslint/types": 6.7.2 - "@typescript-eslint/typescript-estree": 6.7.2 - "@typescript-eslint/visitor-keys": 6.7.2 + "@typescript-eslint/scope-manager": 6.7.0 + "@typescript-eslint/types": 6.7.0 + "@typescript-eslint/typescript-estree": 6.7.0 + "@typescript-eslint/visitor-keys": 6.7.0 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 9e93d3eb432ed5457a852e25a31782d07518f728966cd477620175ae64db9be04f5d8e605f3561dbfe9a365f209a83b2a3788efb9b3cf33669c8bca17f1bcf6f + checksum: 21d52a49abf78a3b037261c01f1f4d2d550919ddc906ebb058db3410a706457ac3a7d082716328ce98a6741d4e77c945b71ff386d9047c5a2e5beef23e14ab45 languageName: node linkType: hard @@ -4529,22 +4677,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.7.2": - version: 6.7.2 - resolution: "@typescript-eslint/scope-manager@npm:6.7.2" +"@typescript-eslint/scope-manager@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/scope-manager@npm:6.7.0" dependencies: - "@typescript-eslint/types": 6.7.2 - "@typescript-eslint/visitor-keys": 6.7.2 - checksum: e35fa23ecb16252c3ad00b5f1ec05d9b8d33ee30d4c57543892f900443ed77926be9bd2836f06463c31b483f5f0f79070273bc51c4a606f55ac3cd1d9c9cd542 + "@typescript-eslint/types": 6.7.0 + "@typescript-eslint/visitor-keys": 6.7.0 + checksum: f6ea33c647783d53d98938bd5d3fc94c9a5ebc83bd64cf379215863921dd1c57e66c33af7948d6ac1884623e1917a3b42565e6d02e1fd7adfbce4b3424a2382e languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.7.2": - version: 6.7.2 - resolution: "@typescript-eslint/type-utils@npm:6.7.2" +"@typescript-eslint/type-utils@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/type-utils@npm:6.7.0" dependencies: - "@typescript-eslint/typescript-estree": 6.7.2 - "@typescript-eslint/utils": 6.7.2 + "@typescript-eslint/typescript-estree": 6.7.0 + "@typescript-eslint/utils": 6.7.0 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -4552,7 +4700,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 67743f8e4b77d0ab3d82907eda0411ffd221357b60ac9cbd29683d5b8c77127369ebfafcf0bfc30a1f1828927ccd5635fab5b2eaf2b2f1d12a9361549cab3e62 + checksum: 15ae33a6981721f83b2ac612a7597a4fcb2d9d9bfedce54707e5228bec2774fd99ba54ffce89924ae36b61488c7b6c0c2165a6d361be5cd4cefebefad8b02a01 languageName: node linkType: hard @@ -4563,10 +4711,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.7.2": - version: 6.7.2 - resolution: "@typescript-eslint/types@npm:6.7.2" - checksum: 5a7c4cd456f721649757d2edb4cae71d1405c1c2c35672031f012b27007b9d49b7118297eec746dc3351370e6aa414e5d2c493fb658c7b910154b7998c0278e1 +"@typescript-eslint/types@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/types@npm:6.7.0" + checksum: fb76031432a009813d559b1cc63091eb5434279012cdb98de62fcd556910663c6a1b506e0a77c4f86e223a5e2c00e76a2d1d2170802c75168008d19a52a51fca languageName: node linkType: hard @@ -4588,12 +4736,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.7.2": - version: 6.7.2 - resolution: "@typescript-eslint/typescript-estree@npm:6.7.2" +"@typescript-eslint/typescript-estree@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.7.0" dependencies: - "@typescript-eslint/types": 6.7.2 - "@typescript-eslint/visitor-keys": 6.7.2 + "@typescript-eslint/types": 6.7.0 + "@typescript-eslint/visitor-keys": 6.7.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -4602,24 +4750,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: c30b9803567c37527e2806badd98f3083ae125db9a430d8a28647b153e446e6a4b830833f229cca27d5aa0ff5497c149aaa524aa3a6dbf932b557c60d0bfd4f9 + checksum: 9bd57910085f0dd97d7083e0468c34e0753d20d36d3ffaa4ba111f13cc4986743374f5aed928e645ea982cf2ed9a8141598bee41393cad0abee001f0842ad117 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.7.2": - version: 6.7.2 - resolution: "@typescript-eslint/utils@npm:6.7.2" +"@typescript-eslint/utils@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/utils@npm:6.7.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 "@types/json-schema": ^7.0.12 "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.7.2 - "@typescript-eslint/types": 6.7.2 - "@typescript-eslint/typescript-estree": 6.7.2 + "@typescript-eslint/scope-manager": 6.7.0 + "@typescript-eslint/types": 6.7.0 + "@typescript-eslint/typescript-estree": 6.7.0 semver: ^7.5.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 97f950562dba2bda63ffe64672f643ef940123cf74007bc878afcf31c75f905c99934a3ad77da3d5a4fe7807d5d69c791b20c429712ad5a5525e331ebc313756 + checksum: b2a2857ec856d1752e77c2a274a12513372311c300f9ec57ed7bf7411eb9ea34b85a8e7810a5c48fff0e3966b71d63d77e38c5c7bca1d5c004bede5638619a00 languageName: node linkType: hard @@ -4651,13 +4799,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.7.2": - version: 6.7.2 - resolution: "@typescript-eslint/visitor-keys@npm:6.7.2" +"@typescript-eslint/visitor-keys@npm:6.7.0": + version: 6.7.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.7.0" dependencies: - "@typescript-eslint/types": 6.7.2 + "@typescript-eslint/types": 6.7.0 eslint-visitor-keys: ^3.4.1 - checksum: b4915fbc0f3d44c81b92b7151830b698e8b6ed2dee8587bb65540c888c7a84300d3fd6b0c159e2131c7c6df1bebe49fb0d21c347ecdbf7f3e4aec05acebbb0bc + checksum: cd85722d26ccfa23a76e5cb5aa0229f89eb3c4f1ed87d71a0f902db15f420f3f3e94cbd16dc711039f611ac60b1e7d0fee9ee78c48c88310a5f1926a2bc8778e languageName: node linkType: hard @@ -4846,22 +4994,22 @@ __metadata: linkType: hard "@wireapp/api-client@npm:^26.1.1": - version: 26.1.1 - resolution: "@wireapp/api-client@npm:26.1.1" + version: 26.2.2 + resolution: "@wireapp/api-client@npm:26.2.2" dependencies: - "@wireapp/commons": ^5.1.3 + "@wireapp/commons": ^5.2.0 "@wireapp/priority-queue": ^2.1.4 "@wireapp/protocol-messaging": 1.44.0 axios: 1.5.0 - axios-retry: 3.7.0 - http-status-codes: 2.2.0 + axios-retry: 3.8.0 + http-status-codes: 2.3.0 logdown: 3.3.1 pako: 2.1.0 reconnecting-websocket: 4.4.0 spark-md5: 3.0.2 tough-cookie: 4.1.3 - ws: 8.14.1 - checksum: 788935f49f52c7b9c932f853a125f2ed4760eb62216f44c3ff12926b566502591f35bb3d163ed726acab48c8d6b3bb512ae3d2963440de28271d16e9648c9fcf + ws: 8.14.2 + checksum: bcf939e366a3cf2a4f8fd1184606d6d2c78d8304d0c1d40c2d2964dde1db5dcec80c91859f819da4e73b520dbfb5f0b5416a15c31ecadacdf428adb5a3411287 languageName: node linkType: hard @@ -4891,6 +5039,18 @@ __metadata: languageName: node linkType: hard +"@wireapp/commons@npm:^5.2.0": + version: 5.2.0 + resolution: "@wireapp/commons@npm:5.2.0" + dependencies: + ansi-regex: 5.0.1 + fs-extra: 11.1.0 + logdown: 3.3.1 + platform: 1.3.6 + checksum: 7537084a5c06dee8d8793e98841098ea5b2b507fd9efd1f0f6d4d7413b148f767690def018a15f4b77d34701415f20fce5755cd9755f6a96c71ff1197682b0b8 + languageName: node + linkType: hard + "@wireapp/copy-config@npm:2.1.7": version: 2.1.7 resolution: "@wireapp/copy-config@npm:2.1.7" @@ -5691,6 +5851,17 @@ __metadata: languageName: node linkType: hard +"asn1js@npm:^3.0.5": + version: 3.0.5 + resolution: "asn1js@npm:3.0.5" + dependencies: + pvtsutils: ^1.3.2 + pvutils: ^1.1.3 + tslib: ^2.4.0 + checksum: 3b6af1bbadd5762ef8ead5daf2f6bda1bc9e23bc825c4dcc996aa1f9521ad7390a64028565d95d98090d69c8431f004c71cccb866004759169d7c203cf9075eb + languageName: node + linkType: hard + "ast-types-flow@npm:^0.0.7": version: 0.0.7 resolution: "ast-types-flow@npm:0.0.7" @@ -5781,13 +5952,13 @@ __metadata: languageName: node linkType: hard -"axios-retry@npm:3.7.0": - version: 3.7.0 - resolution: "axios-retry@npm:3.7.0" +"axios-retry@npm:3.8.0": + version: 3.8.0 + resolution: "axios-retry@npm:3.8.0" dependencies: "@babel/runtime": ^7.15.4 is-retry-allowed: ^2.2.0 - checksum: ef34b50a86b5cd65ce2bf933aaed422ffb1a17b8fe11a53e444437fb42be400b48271d1ff9fd23a051627b7f3b33bebdeb1d66556aae04d5d6bfbe57fecdfb64 + checksum: 448d951b971ccd35eaedc0f10ff1129a6bf2b3dfe13ce57749809bd37975332ae0e906ea4e67a41c9c98215bb1bf8a554e6880f1272419c758f91e4d68ca6b55 languageName: node linkType: hard @@ -6297,9 +6468,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001517, caniuse-lite@npm:^1.0.30001520": - version: 1.0.30001538 - resolution: "caniuse-lite@npm:1.0.30001538" - checksum: 94c5d55757a339c7cc175f08a024671e2b4e7c04f130b1015793303d637061347efb6ad84447c3b8137333e742d150b8ad9672716bbf2482646c2e63a56f6c55 + version: 1.0.30001535 + resolution: "caniuse-lite@npm:1.0.30001535" + checksum: d66f71a3b97bc24108a54fe7ecaf9133c8a9466f91199185bdf43cff94dc89905860ea15ac18e57a109dd5dc85465d8df7dffa50e19324d03682f37a203468c1 languageName: node linkType: hard @@ -7242,7 +7413,7 @@ __metadata: languageName: node linkType: hard -"cssdb@npm:^7.7.2": +"cssdb@npm:^7.7.1": version: 7.7.2 resolution: "cssdb@npm:7.7.2" checksum: 74a8b46fc694b8576686dde6acbf0a28b07a1a1ff01b24c0c3de12e4680f2124d4beb3367b97ec309938d32306e1806fe5e209f8c899f120349cdfb5d327b727 @@ -9875,6 +10046,13 @@ __metadata: languageName: node linkType: hard +"http-status-codes@npm:2.3.0": + version: 2.3.0 + resolution: "http-status-codes@npm:2.3.0" + checksum: dae3b99e0155441b6df28e8265ff27c56a45f82c6092f736414233e9ccf063d5ea93c1e1279e8b499c4642e2538b37995c76b1640ed3f615d0e2883d3a1dcfd5 + languageName: node + linkType: hard + "https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" @@ -10158,6 +10336,13 @@ __metadata: languageName: node linkType: hard +"ipaddr.js@npm:^2.0.1": + version: 2.1.0 + resolution: "ipaddr.js@npm:2.1.0" + checksum: 807a054f2bd720c4d97ee479d6c9e865c233bea21f139fb8dabd5a35c4226d2621c42e07b4ad94ff3f82add926a607d8d9d37c625ad0319f0e08f9f2bd1968e2 + languageName: node + linkType: hard + "is-absolute@npm:^0.2.5": version: 0.2.6 resolution: "is-absolute@npm:0.2.6" @@ -13762,15 +13947,15 @@ __metadata: languageName: node linkType: hard -"postcss-color-functional-notation@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-color-functional-notation@npm:6.0.1" +"postcss-color-functional-notation@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-color-functional-notation@npm:6.0.0" dependencies: - "@csstools/postcss-progressive-custom-properties": ^3.0.1 + "@csstools/postcss-progressive-custom-properties": ^3.0.0 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: afb3eaaad1f3d4b38a9f7f1bd0cdaf2602e82e568147eb7ef45467e28b2b96dcdb45d3c3ddc908571776b7df4b66fe49ec3ff21fce42d49648db9b2ef9f369ed + checksum: c80683e908ebdb03603029bdd0ad7b3626c40880601ed678e9903fcf46522418db825d4781e9d89f4970bb0772232b4a10e6eac029fdbc1bf14b36aee9c96216 languageName: node linkType: hard @@ -13785,14 +13970,14 @@ __metadata: languageName: node linkType: hard -"postcss-color-rebeccapurple@npm:^9.0.1": - version: 9.0.1 - resolution: "postcss-color-rebeccapurple@npm:9.0.1" +"postcss-color-rebeccapurple@npm:^9.0.0": + version: 9.0.0 + resolution: "postcss-color-rebeccapurple@npm:9.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: baf61a300dc4922a9bbcb34c3c7b224c53bd2a3f504fae3cd30ad62a8ded0dea61c5c8e2f15a554d810ff1c2c9f2d681d58f816ee1e6c6049152c76d242e1dca + checksum: 3b3d087e5bd70bddd11fb52d5d82fb1c1a04b5cdc628f5bb9bc5ef1fa6c16d95ffda0c16a3208bd420218761fc4052b9d3201b5f2efc1edbc34b2ac82d0b20d6 languageName: node linkType: hard @@ -13822,23 +14007,23 @@ __metadata: languageName: node linkType: hard -"postcss-custom-media@npm:^10.0.1": - version: 10.0.1 - resolution: "postcss-custom-media@npm:10.0.1" +"postcss-custom-media@npm:^10.0.0": + version: 10.0.0 + resolution: "postcss-custom-media@npm:10.0.0" dependencies: - "@csstools/cascade-layer-name-parser": ^1.0.4 - "@csstools/css-parser-algorithms": ^2.3.1 - "@csstools/css-tokenizer": ^2.2.0 - "@csstools/media-query-list-parser": ^2.1.4 + "@csstools/cascade-layer-name-parser": ^1.0.3 + "@csstools/css-parser-algorithms": ^2.3.0 + "@csstools/css-tokenizer": ^2.1.1 + "@csstools/media-query-list-parser": ^2.1.2 peerDependencies: postcss: ^8.4 - checksum: 8e56241957e0a53e746934181448eea81f94946d59bfb9cf4bda71d0700a00554ee973e2e4808712da57127a3ab4e455bc0aba9c9d8c975b412d9fc991741388 + checksum: f52165a866bd978d3fe295f2d60fd5f591c0db241d2fd7d1197ad511817938ce737eab0c1ff2d5d42adbc3df27ee9645fd76c1af568df333e501ae8872461963 languageName: node linkType: hard -"postcss-custom-properties@npm:^13.3.1": - version: 13.3.1 - resolution: "postcss-custom-properties@npm:13.3.1" +"postcss-custom-properties@npm:^13.3.0": + version: 13.3.0 + resolution: "postcss-custom-properties@npm:13.3.0" dependencies: "@csstools/cascade-layer-name-parser": ^1.0.4 "@csstools/css-parser-algorithms": ^2.3.1 @@ -13846,21 +14031,21 @@ __metadata: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 8f54b5afef55368dd162e3c6455f504b309fedaf2e1e3ce6c7ede9ad7a9baa3162e9763a2342814c0e2af2a1a52adb490ec70e1d3419adeaaffc665bd3ca887b + checksum: 7757a6a5a8cd4da7114e0680f503b0ab2e22d2d84cda2dd7938aad6f2233cd2daec11bb1b5a63b54d954683702a31a694499b3ae906451075ff8eb16316b946f languageName: node linkType: hard -"postcss-custom-selectors@npm:^7.1.5": - version: 7.1.5 - resolution: "postcss-custom-selectors@npm:7.1.5" +"postcss-custom-selectors@npm:^7.1.4": + version: 7.1.4 + resolution: "postcss-custom-selectors@npm:7.1.4" dependencies: - "@csstools/cascade-layer-name-parser": ^1.0.4 - "@csstools/css-parser-algorithms": ^2.3.1 - "@csstools/css-tokenizer": ^2.2.0 + "@csstools/cascade-layer-name-parser": ^1.0.3 + "@csstools/css-parser-algorithms": ^2.3.0 + "@csstools/css-tokenizer": ^2.1.1 postcss-selector-parser: ^6.0.13 peerDependencies: postcss: ^8.4 - checksum: 416561fc471e4856ec696015262d0502042413ce09f13cc47bced72b450a6e01c3be4f9631bc87c3eea043df90b6e54cebc5e078e97b406467ff90f093b38adb + checksum: dfb5d82f52ddfdaca0174f1840e5da27c0a184ad552bcb800c060b6a67d95efc98d9a7179d6a863a669c8ad1d34b5f006a211e536657b9aea1e97dee5cfe7ce1 languageName: node linkType: hard @@ -13911,15 +14096,15 @@ __metadata: languageName: node linkType: hard -"postcss-double-position-gradients@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-double-position-gradients@npm:5.0.1" +"postcss-double-position-gradients@npm:^5.0.0": + version: 5.0.0 + resolution: "postcss-double-position-gradients@npm:5.0.0" dependencies: - "@csstools/postcss-progressive-custom-properties": ^3.0.1 + "@csstools/postcss-progressive-custom-properties": ^3.0.0 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 77b3d1d475ea4e79491b750ef775483431c008e1b6fa95a6da992b12150e06e45a29f2085e24b977ef78bba1cc109d08477cc19e3289249597722ba5b81210ec + checksum: 432b609a2c0d5e9353e1ec218ec1710847a810dda8361e7296c00d2ee6af6851267e1d1e0a5ab8b5a555ec2dcb530e37f3dbff4526953a6228193cf2bf74fc46 languageName: node linkType: hard @@ -13963,14 +14148,14 @@ __metadata: languageName: node linkType: hard -"postcss-image-set-function@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-image-set-function@npm:6.0.1" +"postcss-image-set-function@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-image-set-function@npm:6.0.0" dependencies: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 0a4043591af3b92725f439651330cfb0a43f1388772e7aa4441ceee502e347bd131e71b1bcaa3fc50205195f1e00513d3d515108c4de6f57a60b1b06a28ca9a0 + checksum: edea6b3a9cda696bfdbaabe9956e9245e4a9d36eb098dc83b6ba1db59418f350ad18b66e38e8f99fe18c895b71d3d627c3913c097cca2834e4763bf62223cb35 languageName: node linkType: hard @@ -13987,17 +14172,26 @@ __metadata: languageName: node linkType: hard -"postcss-lab-function@npm:^6.0.4": - version: 6.0.4 - resolution: "postcss-lab-function@npm:6.0.4" +"postcss-initial@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-initial@npm:4.0.1" + peerDependencies: + postcss: ^8.0.0 + checksum: 6956953853865de79c39d11533a2860e9f38b770bb284d0010d98a00b9469e22de344e4e5fd8208614d797030487e8918dd2f2c37d9e24d4dd59d565d4fc3e12 + languageName: node + linkType: hard + +"postcss-lab-function@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-lab-function@npm:6.0.3" dependencies: "@csstools/css-color-parser": ^1.3.1 "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 - "@csstools/postcss-progressive-custom-properties": ^3.0.1 + "@csstools/postcss-progressive-custom-properties": ^3.0.0 peerDependencies: postcss: ^8.4 - checksum: 45fa12f0bce1c4fb54976ba0b56ebc391a749545a2a3597ecd688be7014a0a2e8319ef6710b3b1de9f6c83e824488ea1f2ab1c1cd38787fe65e30257fb54cafd + checksum: 4b151846c0d08363a1011e02664211834eb4c45f19ded1833f8ef7f94f89df42b0ca1e285a5e0a620619cc1e7efdfc1a49c2fa19114df07a379ce6b925c66ad6 languageName: node linkType: hard @@ -14316,32 +14510,31 @@ __metadata: linkType: hard "postcss-preset-env@npm:^9.1.3": - version: 9.1.4 - resolution: "postcss-preset-env@npm:9.1.4" + version: 9.1.3 + resolution: "postcss-preset-env@npm:9.1.3" dependencies: "@csstools/postcss-cascade-layers": ^4.0.0 - "@csstools/postcss-color-function": ^3.0.4 - "@csstools/postcss-color-mix-function": ^2.0.4 + "@csstools/postcss-color-function": ^3.0.3 + "@csstools/postcss-color-mix-function": ^2.0.3 "@csstools/postcss-exponential-functions": ^1.0.0 "@csstools/postcss-font-format-keywords": ^3.0.0 - "@csstools/postcss-gradients-interpolation-method": ^4.0.4 + "@csstools/postcss-gradients-interpolation-method": ^4.0.3 "@csstools/postcss-hwb-function": ^3.0.3 - "@csstools/postcss-ic-unit": ^3.0.1 - "@csstools/postcss-initial": ^1.0.0 - "@csstools/postcss-is-pseudo-class": ^4.0.2 + "@csstools/postcss-ic-unit": ^3.0.0 + "@csstools/postcss-is-pseudo-class": ^4.0.1 "@csstools/postcss-logical-float-and-clear": ^2.0.0 "@csstools/postcss-logical-resize": ^2.0.0 - "@csstools/postcss-logical-viewport-units": ^2.0.2 + "@csstools/postcss-logical-viewport-units": ^2.0.1 "@csstools/postcss-media-minmax": ^1.0.7 "@csstools/postcss-media-queries-aspect-ratio-number-values": ^2.0.2 "@csstools/postcss-nested-calc": ^3.0.0 - "@csstools/postcss-normalize-display-values": ^3.0.1 - "@csstools/postcss-oklab-function": ^3.0.4 - "@csstools/postcss-progressive-custom-properties": ^3.0.1 - "@csstools/postcss-relative-color-syntax": ^2.0.4 + "@csstools/postcss-normalize-display-values": ^3.0.0 + "@csstools/postcss-oklab-function": ^3.0.3 + "@csstools/postcss-progressive-custom-properties": ^3.0.0 + "@csstools/postcss-relative-color-syntax": ^2.0.3 "@csstools/postcss-scope-pseudo-class": ^3.0.0 "@csstools/postcss-stepped-value-functions": ^3.0.1 - "@csstools/postcss-text-decoration-shorthand": ^3.0.3 + "@csstools/postcss-text-decoration-shorthand": ^3.0.2 "@csstools/postcss-trigonometric-functions": ^3.0.1 "@csstools/postcss-unset-value": ^3.0.0 autoprefixer: ^10.4.15 @@ -14349,23 +14542,24 @@ __metadata: css-blank-pseudo: ^6.0.0 css-has-pseudo: ^6.0.0 css-prefers-color-scheme: ^9.0.0 - cssdb: ^7.7.2 + cssdb: ^7.7.1 postcss-attribute-case-insensitive: ^6.0.2 postcss-clamp: ^4.1.0 - postcss-color-functional-notation: ^6.0.1 + postcss-color-functional-notation: ^6.0.0 postcss-color-hex-alpha: ^9.0.2 - postcss-color-rebeccapurple: ^9.0.1 - postcss-custom-media: ^10.0.1 - postcss-custom-properties: ^13.3.1 - postcss-custom-selectors: ^7.1.5 + postcss-color-rebeccapurple: ^9.0.0 + postcss-custom-media: ^10.0.0 + postcss-custom-properties: ^13.3.0 + postcss-custom-selectors: ^7.1.4 postcss-dir-pseudo-class: ^8.0.0 - postcss-double-position-gradients: ^5.0.1 + postcss-double-position-gradients: ^5.0.0 postcss-focus-visible: ^9.0.0 postcss-focus-within: ^8.0.0 postcss-font-variant: ^5.0.0 postcss-gap-properties: ^5.0.0 - postcss-image-set-function: ^6.0.1 - postcss-lab-function: ^6.0.4 + postcss-image-set-function: ^6.0.0 + postcss-initial: ^4.0.1 + postcss-lab-function: ^6.0.3 postcss-logical: ^7.0.0 postcss-nesting: ^12.0.1 postcss-opacity-percentage: ^2.0.0 @@ -14378,7 +14572,7 @@ __metadata: postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.4 - checksum: 2e2afcbed8c4e0699ca6df6f9115f33334b503c7cb075b00c03b609c3780a7d1cb703df1e24f3c179e8cbd63496eeaccc7dcd729cfd1a76759f5d26273ed8a86 + checksum: 5cf455b0834ae1dcf63327315752b9ec77285b6d31d55487cdd17e4c7d775e75a7ca38b6d8301053b87a52bf87aa4ba75187d7d3fd60e8010914f07921db10e3 languageName: node linkType: hard @@ -14510,7 +14704,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.29": +"postcss@npm:8.4.29, postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.27": version: 8.4.29 resolution: "postcss@npm:8.4.29" dependencies: @@ -14531,17 +14725,6 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.27": - version: 8.4.30 - resolution: "postcss@npm:8.4.30" - dependencies: - nanoid: ^3.3.6 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 6c810c10c9bd3e03ca016e0b6b6756261e640aba1a9a7b1200b55502bc34b9165e38f590aef3493afc2f30ab55cdfcd43fd0f8408d69a77318ddbcf2a8ad164b - languageName: node - linkType: hard - "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -14754,6 +14937,22 @@ __metadata: languageName: node linkType: hard +"pvtsutils@npm:^1.3.2, pvtsutils@npm:^1.3.5": + version: 1.3.5 + resolution: "pvtsutils@npm:1.3.5" + dependencies: + tslib: ^2.6.1 + checksum: e734516b3cb26086c18bd9c012fefe818928a5073178842ab7e62885a090f1dd7bda9c7bb8cd317167502cb8ec86c0b1b0ccd71dac7ab469382a4518157b0d12 + languageName: node + linkType: hard + +"pvutils@npm:^1.1.3": + version: 1.1.3 + resolution: "pvutils@npm:1.1.3" + checksum: 2ee26a9e5176c348977d6ec00d8ee80bff62f51743b1c5fe8abeeb4c5d29d9959cdfe0ce146707a9e6801bce88190fed3002d720b072dc87d031c692820b44c9 + languageName: node + linkType: hard + "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" @@ -15154,6 +15353,13 @@ __metadata: languageName: node linkType: hard +"reflect-metadata@npm:^0.1.13": + version: 0.1.13 + resolution: "reflect-metadata@npm:0.1.13" + checksum: 798d379a7b6f6455501145419505c97dd11cbc23857a386add2b9ef15963ccf15a48d9d15507afe01d4cd74116df8a213247200bac00320bd7c11ddeaa5e8fb4 + languageName: node + linkType: hard + "reflect.getprototypeof@npm:^1.0.4": version: 1.0.4 resolution: "reflect.getprototypeof@npm:1.0.4" @@ -16020,9 +16226,9 @@ __metadata: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.14 - resolution: "spdx-license-ids@npm:3.0.14" - checksum: 9ff0264e5e84963f3fc438b77eeae9ce5f3f5a1807102be7efb6b5a0b14b0c1d3d5226e4ce881f58961b59165e05de8745e49b9c23c5a59d5197f4d0fb958ab1 + version: 3.0.13 + resolution: "spdx-license-ids@npm:3.0.13" + checksum: 3469d85c65f3245a279fa11afc250c3dca96e9e847f2f79d57f466940c5bb8495da08a542646086d499b7f24a74b8d0b42f3fc0f95d50ff99af1f599f6360ad7 languageName: node linkType: hard @@ -16975,7 +17181,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.3, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2": +"tslib@npm:^2.0.3, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad @@ -16993,7 +17199,7 @@ __metadata: languageName: node linkType: hard -"tsyringe@npm:4.8.0": +"tsyringe@npm:4.8.0, tsyringe@npm:^4.8.0": version: 4.8.0 resolution: "tsyringe@npm:4.8.0" dependencies: @@ -17910,6 +18116,7 @@ __metadata: "@formatjs/cli": 6.1.5 "@koush/wrtc": 0.5.3 "@loadable/component": ^5.15.3 + "@peculiar/x509": 1.9.5 "@testing-library/react": 14.0.0 "@types/adm-zip": 0.5.1 "@types/dexie-batch": 0.4.3 @@ -18338,7 +18545,22 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.14.1, ws@npm:^8.11.0": +"ws@npm:8.14.2": + version: 8.14.2 + resolution: "ws@npm:8.14.2" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 3ca0dad26e8cc6515ff392b622a1467430814c463b3368b0258e33696b1d4bed7510bc7030f7b72838b9fdeb8dbd8839cbf808367d6aae2e1d668ce741d4308b + languageName: node + linkType: hard + +"ws@npm:^8.11.0": version: 8.14.1 resolution: "ws@npm:8.14.1" peerDependencies: From e0657165a3a50699c279cfce05c4214b207aac93 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Fri, 6 Oct 2023 12:08:54 +0200 Subject: [PATCH 36/95] fixes --- .../DevicesPreferences/components/Device/Device.tsx | 8 ++++++-- .../E2EICertificateDetails.styles.ts | 2 +- .../E2EICertificateDetails.test.tsx | 2 +- .../E2EICertificateDetails/E2EICertificateDetails.tsx | 4 ++-- src/script/util/certificateDetails.ts | 2 +- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx index 60b2416f03b..b2950e8a7ab 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx @@ -23,8 +23,8 @@ import {TabIndex} from '@wireapp/react-ui-kit/lib/types/enums'; import {WireIdentity} from '@wireapp/core-crypto'; -import {Badges} from 'Components/Badges'; import {Icon} from 'Components/Icon'; +import {VerificationBadges} from 'Components/VerificationBadges'; import {getCertificateDetails, getCertificateState} from 'Util/certificateDetails'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {handleKeyDown} from 'Util/KeyboardUtil'; @@ -90,7 +90,11 @@ export const Device = ({device, isSSO, onSelect, onRemove, deviceNumber, getDevi > {device.getName()} - +
{mlsFingerprint && ( diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts index 6866354b406..ea2abdb020a 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts @@ -19,7 +19,7 @@ import {CSSObject} from '@emotion/serialize'; -import {MLSStatuses} from 'Components/Badges'; +import {MLSStatuses} from 'Components/VerificationBadges'; const MLSStatusColor = { [MLSStatuses.VALID]: 'var(--green-500)', diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx index 86008440783..0bc10445f4d 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx @@ -19,7 +19,7 @@ import {render} from '@testing-library/react'; -import {MLSStatuses} from 'Components/Badges'; +import {MLSStatuses} from 'Components/VerificationBadges'; import {withTheme} from 'src/script/auth/util/test/TestUtil'; import {E2EICertificateDetails} from './E2EICertificateDetails'; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx index a494b8b1676..f24fb3893ab 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx @@ -21,8 +21,8 @@ import {useState} from 'react'; import {Button, ButtonVariant} from '@wireapp/react-ui-kit'; -import {Badges} from 'Components/Badges'; import {CertificateDetailsModal} from 'Components/Modals/CertificateDetailsModal'; +import {VerificationBadges} from 'Components/VerificationBadges'; import {E2EIHandler} from 'src/script/E2EIdentity'; import {getCertificateDetails, getCertificateState} from 'Util/certificateDetails'; import {t} from 'Util/LocalizerUtil'; @@ -73,7 +73,7 @@ export const E2EICertificateDetails = ({ {t(`E2EI.${certificateState}`)}

- +
diff --git a/src/script/util/certificateDetails.ts b/src/script/util/certificateDetails.ts index cf3b1f742fa..2e317b5ae80 100644 --- a/src/script/util/certificateDetails.ts +++ b/src/script/util/certificateDetails.ts @@ -19,7 +19,7 @@ import * as x509 from '@peculiar/x509'; -import {MLSStatuses} from 'Components/Badges'; +import {MLSStatuses} from 'Components/VerificationBadges'; // TODO: Will be changed when I get information how much hours before we need to display this status. const EXPIRATION_HOURS = 32; From d42bb220ba735abf9e65fdbeeeb58fadbeff9f0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= <77456193+aweiss-dev@users.noreply.github.com> Date: Mon, 9 Oct 2023 14:36:35 +0200 Subject: [PATCH 37/95] feat: manage conversation verification state for mls [WPB-482] (#15889) --- package.json | 1 + src/__mocks__/@wireapp/core.ts | 1 - .../OIDCService/OIDCServiceStorage.ts | 2 +- src/script/E2EIdentity/OIDCService/index.ts | 6 +- .../conversation/ConversationFilter.test.ts | 7 +- .../conversation/ConversationRepository.ts | 49 +++- .../ConversationVerificationStateHandler.ts | 271 ------------------ .../MLS/MLSStateHandler.test.ts | 155 ++++++++++ .../MLS/MLSStateHandler.ts | 173 +++++++++++ .../MLS/index.ts | 20 ++ .../Proteus/ProteusStateHandler.test.ts} | 12 +- .../Proteus/ProteusStateHandler.ts | 220 ++++++++++++++ .../Proteus/index.ts | 20 ++ .../index.ts | 21 ++ .../shared/changeHandler/index.ts | 32 +++ .../shared/conversation/index.ts | 144 ++++++++++ .../shared/index.ts | 21 ++ src/script/entity/Conversation.ts | 7 + .../storage/record/ConversationRecord.ts | 1 + test/helper/ConversationGenerator.ts | 1 + yarn.lock | 250 +++++++++++++++- 21 files changed, 1109 insertions(+), 305 deletions(-) delete mode 100644 src/script/conversation/ConversationVerificationStateHandler.ts create mode 100644 src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts create mode 100644 src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts create mode 100644 src/script/conversation/ConversationVerificationStateHandler/MLS/index.ts rename src/script/conversation/{ConversationVerificationStateHandler.test.ts => ConversationVerificationStateHandler/Proteus/ProteusStateHandler.test.ts} (96%) create mode 100644 src/script/conversation/ConversationVerificationStateHandler/Proteus/ProteusStateHandler.ts create mode 100644 src/script/conversation/ConversationVerificationStateHandler/Proteus/index.ts create mode 100644 src/script/conversation/ConversationVerificationStateHandler/index.ts create mode 100644 src/script/conversation/ConversationVerificationStateHandler/shared/changeHandler/index.ts create mode 100644 src/script/conversation/ConversationVerificationStateHandler/shared/conversation/index.ts create mode 100644 src/script/conversation/ConversationVerificationStateHandler/shared/index.ts diff --git a/package.json b/package.json index 613e90ae8b9..67c4dc71a0a 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "@datadog/browser-rum": "^4.49.0", "@emotion/react": "11.11.1", "@loadable/component": "^5.15.3", + "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.3.7", "@wireapp/core": "42.3.4", "@wireapp/lru-cache": "3.8.1", diff --git a/src/__mocks__/@wireapp/core.ts b/src/__mocks__/@wireapp/core.ts index f4d525a190e..ae033078c07 100644 --- a/src/__mocks__/@wireapp/core.ts +++ b/src/__mocks__/@wireapp/core.ts @@ -55,7 +55,6 @@ export class Account extends EventEmitter { setConversationLevelTimer: jest.fn(), }, }, - client: { deleteClient: jest.fn(), }, diff --git a/src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts b/src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts index 12839b659b6..da41033ad67 100644 --- a/src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts +++ b/src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts @@ -24,7 +24,7 @@ const OIDCServiceStore = { targetURL: (url: string) => localStorage.setItem(TargetURLKey, url), }, get: { - targetURL: () => Number(localStorage.getItem(TargetURLKey)), + targetURL: () => localStorage.getItem(TargetURLKey), }, has: { targetURL: () => localStorage.getItem(TargetURLKey) !== null, diff --git a/src/script/E2EIdentity/OIDCService/index.ts b/src/script/E2EIdentity/OIDCService/index.ts index cf4c4c6adab..290e1343c8d 100644 --- a/src/script/E2EIdentity/OIDCService/index.ts +++ b/src/script/E2EIdentity/OIDCService/index.ts @@ -23,10 +23,10 @@ import {OIDCServiceStore} from './OIDCServiceStorage'; // lots of hardcoded values here, but this is just for testing until we have a proper OIDC service export const getOIDCServiceInstance = (): OIDCService => { // if there is no targetURL, we cannot create an OIDCService - if (!OIDCServiceStore.has.targetURL()) { - throw new Error('OIDCServiceStore has no targetURL'); - } const targetURL = OIDCServiceStore.get.targetURL(); + if (!targetURL) { + throw new Error('No targetURL found in OIDCServiceStore'); + } const oidcService = new OIDCService({ audience: '338888153072-ktbh66pv3mr0ua0dn64sphgimeo0p7ss.apps.googleusercontent.com', authorityUrl: 'https://accounts.google.com' || targetURL, diff --git a/src/script/conversation/ConversationFilter.test.ts b/src/script/conversation/ConversationFilter.test.ts index 29ea2dfd8e9..b1487d67b0f 100644 --- a/src/script/conversation/ConversationFilter.test.ts +++ b/src/script/conversation/ConversationFilter.test.ts @@ -27,6 +27,7 @@ import {ConversationProtocol} from '@wireapp/api-client/lib/conversation/NewConv import {ConversationFilter} from './ConversationFilter'; import {ConversationDatabaseData, ConversationMapper} from './ConversationMapper'; import {ConversationStatus} from './ConversationStatus'; +import {ConversationVerificationState} from './ConversationVerificationState'; import {Conversation} from '../entity/Conversation'; @@ -70,7 +71,8 @@ describe('ConversationFilter', () => { status: 0, team_id: undefined, type: 3, - verification_state: 0, + verification_state: ConversationVerificationState.UNVERIFIED, + mlsVerificationState: ConversationVerificationState.UNVERIFIED, }; const [conversationEntity] = ConversationMapper.mapConversations([conversationData]); expect(conversationEntity.is1to1()).toBeFalsy(); @@ -122,7 +124,8 @@ describe('ConversationFilter', () => { status: 0, team_id: null, type: 2, - verification_state: 0, + verification_state: ConversationVerificationState.UNVERIFIED, + mlsVerificationState: ConversationVerificationState.UNVERIFIED, }; const [conversationEntity] = ConversationMapper.mapConversations([conversationData]); expect(conversationEntity.is1to1()).toBeTruthy(); diff --git a/src/script/conversation/ConversationRepository.ts b/src/script/conversation/ConversationRepository.ts index 4356e930c69..4f2b6854a53 100644 --- a/src/script/conversation/ConversationRepository.ts +++ b/src/script/conversation/ConversationRepository.ts @@ -90,7 +90,9 @@ import {ConversationState} from './ConversationState'; import {ConversationStateHandler} from './ConversationStateHandler'; import {ConversationStatus} from './ConversationStatus'; import {ConversationVerificationState} from './ConversationVerificationState'; -import {ConversationVerificationStateHandler} from './ConversationVerificationStateHandler'; +import {ProteusConversationVerificationStateHandler} from './ConversationVerificationStateHandler'; +import {registerMLSConversationVerificationStateHandler} from './ConversationVerificationStateHandler/MLS'; +import {OnConversationVerificationStateChange} from './ConversationVerificationStateHandler/shared'; import {EventMapper} from './EventMapper'; import {MessageRepository} from './MessageRepository'; import {NOTIFICATION_STATE} from './NotificationSetting'; @@ -161,7 +163,7 @@ export class ConversationRepository { private readonly eventService: EventService; private readonly logger: Logger; public readonly stateHandler: ConversationStateHandler; - public readonly verificationStateHandler: ConversationVerificationStateHandler; + public readonly proteusVerificationStateHandler: ProteusConversationVerificationStateHandler; static readonly eventFromStreamMessage = 'event from notification stream'; static get CONFIG() { @@ -269,11 +271,20 @@ export class ConversationRepository { this.logger = getLogger('ConversationRepository'); this.event_mapper = new EventMapper(); - this.verificationStateHandler = new ConversationVerificationStateHandler( - this.eventRepository, + + // we register and store a handler, that we can manually trigger for incoming events from proteus and mixed conversations + this.proteusVerificationStateHandler = new ProteusConversationVerificationStateHandler( + this.onConversationVerificationStateChange, this.userState, this.conversationState, ); + // we register a handler that will handle MLS conversations on its own + registerMLSConversationVerificationStateHandler( + this.onConversationVerificationStateChange, + this.conversationState, + this.core, + ); + this.isBlockingNotificationHandling = true; this.conversationsWithNewEvents = new Map(); @@ -1556,6 +1567,30 @@ export class ConversationRepository { // Send events //############################################################################## + private onConversationVerificationStateChange: OnConversationVerificationStateChange = async ({ + conversationEntity, + conversationVerificationState, + verificationMessageType, + userIds = [], + }) => { + switch (conversationVerificationState) { + case ConversationVerificationState.VERIFIED: + const allVerifiedEvent = EventBuilder.buildAllVerified(conversationEntity); + await this.eventRepository.injectEvent(allVerifiedEvent); + break; + case ConversationVerificationState.DEGRADED: + if (verificationMessageType) { + const event = EventBuilder.buildDegraded(conversationEntity, userIds, verificationMessageType); + await this.eventRepository.injectEvent(event); + } else { + this.logger.error('onConversationVerificationStateChange: Missing verificationMessageType while degrading'); + } + break; + default: + break; + } + }; + /** * Add users to an existing conversation. * @@ -2639,7 +2674,7 @@ export class ConversationRepository { this.addCreationMessage(conversationEntity, false, initialTimestamp, eventSource); } await this.updateParticipatingUserEntities(conversationEntity); - this.verificationStateHandler.onConversationCreate(conversationEntity); + this.proteusVerificationStateHandler.onConversationCreate(conversationEntity); await this.saveConversation(conversationEntity); } return {conversationEntity}; @@ -2753,7 +2788,7 @@ export class ConversationRepository { .then(() => this.updateParticipatingUserEntities(conversationEntity, false, true)) .then(() => this.addEventToConversation(conversationEntity, eventJson)) .then(({messageEntity}) => { - this.verificationStateHandler.onMemberJoined(conversationEntity, qualifiedUserIds); + this.proteusVerificationStateHandler.onMemberJoined(conversationEntity, qualifiedUserIds); return {conversationEntity, messageEntity}; }); } @@ -2848,7 +2883,7 @@ export class ConversationRepository { await this.updateParticipatingUserEntities(conversationEntity); - this.verificationStateHandler.onMemberLeft(conversationEntity); + this.proteusVerificationStateHandler.onMemberLeft(conversationEntity); return {conversationEntity, messageEntity}; } diff --git a/src/script/conversation/ConversationVerificationStateHandler.ts b/src/script/conversation/ConversationVerificationStateHandler.ts deleted file mode 100644 index 310a469aee1..00000000000 --- a/src/script/conversation/ConversationVerificationStateHandler.ts +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Wire - * Copyright (C) 2018 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import type {QualifiedId} from '@wireapp/api-client/lib/user/'; -import {amplify} from 'amplify'; -import {container} from 'tsyringe'; - -import {WebAppEvents} from '@wireapp/webapp-events'; - -import {getLogger, Logger} from 'Util/Logger'; -import {matchQualifiedIds} from 'Util/QualifiedId'; - -import {ConversationState} from './ConversationState'; -import {ConversationVerificationState} from './ConversationVerificationState'; - -import type {ClientEntity} from '../client/ClientEntity'; -import {EventBuilder} from '../conversation/EventBuilder'; -import type {Conversation} from '../entity/Conversation'; -import type {EventRepository} from '../event/EventRepository'; -import {VerificationMessageType} from '../message/VerificationMessageType'; -import {UserState} from '../user/UserState'; - -export class ConversationVerificationStateHandler { - private readonly logger: Logger; - - constructor( - private readonly eventRepository: EventRepository, - private readonly userState = container.resolve(UserState), - private readonly conversationState = container.resolve(ConversationState), - ) { - this.logger = getLogger('ConversationVerificationStateHandler'); - - amplify.subscribe(WebAppEvents.USER.CLIENT_ADDED, this.onClientAdded); - amplify.subscribe(WebAppEvents.USER.CLIENT_REMOVED, this.onClientRemoved); - amplify.subscribe(WebAppEvents.USER.CLIENTS_UPDATED, this.onClientsUpdated); - amplify.subscribe(WebAppEvents.CLIENT.VERIFICATION_STATE_CHANGED, this.onClientVerificationChanged); - } - - readonly onClientVerificationChanged = (userId: QualifiedId): void => { - this.getActiveConversationsWithUsers([userId]).forEach(({conversationEntity, userIds}) => { - const isStateChange = this.checkChangeToVerified(conversationEntity); - if (!isStateChange) { - this.checkChangeToDegraded(conversationEntity, userIds, VerificationMessageType.UNVERIFIED); - } - }); - }; - - /** - * Self user or other participant added clients. - * @param userId ID of user that added client (can be self user ID) - */ - readonly onClientAdded = (userId: QualifiedId, _clientEntity?: ClientEntity): void => { - this.onClientsAdded([userId]); - }; - - /** - * Multiple participants added clients. - * @param userIds Multiple user IDs (can include self user ID) - */ - onClientsAdded(userIds: QualifiedId[]): void { - this.getActiveConversationsWithUsers(userIds).forEach(({conversationEntity, userIds: matchingUserIds}) => { - this.checkChangeToDegraded(conversationEntity, matchingUserIds, VerificationMessageType.NEW_DEVICE); - }); - } - - /** - * Self user removed a client or other participants deleted clients. - * @param userId ID of user that added client (can be self user ID) - */ - readonly onClientRemoved = (userId: QualifiedId): void => { - this.getActiveConversationsWithUsers([userId]).forEach(({conversationEntity}) => { - this.checkChangeToVerified(conversationEntity); - }); - }; - - /** - * A new conversation was created. - * @param conversationEntity New conversation entity - */ - onConversationCreate(conversationEntity: Conversation): void { - this.checkChangeToVerified(conversationEntity); - } - - /** - * Clients of a user were updated. - */ - readonly onClientsUpdated = (userId: QualifiedId): void => { - this.getActiveConversationsWithUsers([userId]).forEach(({conversationEntity, userIds}) => { - const isStateChange = this.checkChangeToVerified(conversationEntity); - if (!isStateChange) { - this.checkChangeToDegraded(conversationEntity, userIds, VerificationMessageType.NEW_DEVICE); - } - }); - }; - - /** - * New member(s) joined the conversation. - * @param conversationEntity Changed conversation entity - * @param userIds IDs of added members - */ - onMemberJoined(conversationEntity: Conversation, userIds: QualifiedId[]): void { - this.checkChangeToDegraded(conversationEntity, userIds, VerificationMessageType.NEW_MEMBER); - } - - /** - * Member(s) left the conversation. - * @param conversationEntity Changed conversation entity - */ - onMemberLeft(conversationEntity: Conversation): void { - this.checkChangeToVerified(conversationEntity); - } - - /** - * Change that could verify conversation. - * - * @param conversationEntity Changed conversation entity - * @returns `true` if state changed - */ - private checkChangeToVerified(conversationEntity: Conversation): boolean { - if (this.willChangeToVerified(conversationEntity)) { - const allVerifiedEvent = EventBuilder.buildAllVerified(conversationEntity); - this.eventRepository.injectEvent(allVerifiedEvent); - return true; - } - - return false; - } - - /** - * Change that could degrade conversation. - * - * @param conversationEntity Changed conversation entity - * @param userIds IDs of affected users - * @param type Type of degradation - * @returns `true` if state changed - */ - private checkChangeToDegraded( - conversationEntity: Conversation, - userIds: QualifiedId[], - type: VerificationMessageType, - ): boolean { - const shouldShowDegradationWarning = type !== VerificationMessageType.UNVERIFIED; - const isConversationDegraded = this.willChangeToDegraded(conversationEntity, shouldShowDegradationWarning); - - if (isConversationDegraded) { - /** - * TEMPORARY DEBUGGING FIX: - * We have seen conversations in a degraded state without an unverified device in there. - * Previously the code would hide this fact, not create a system message and then fail when it tried to prompt - * the user to grant subsequent message sending - essentially blocking the conversation. - * - * As we are unsure of the trigger of the degradation we temporarily throw an error to get to the bottom of this. - * The conversation is also reset to the verified state to ensure we can continue to send messages. - */ - if (!userIds.length) { - conversationEntity.verification_state(ConversationVerificationState.VERIFIED); - throw new Error('Conversation degraded without affected users'); - } - - const event = EventBuilder.buildDegraded(conversationEntity, userIds, type); - this.eventRepository.injectEvent(event); - - return true; - } - - return false; - } - - /** - * Get all conversation where self user and the given users are active. - * - * @param userIds Multiple user IDs (can include self user ID) - * @returns Array of objects containing the conversation entities and matching user IDs - */ - private getActiveConversationsWithUsers( - userIds: QualifiedId[], - ): {conversationEntity: Conversation; userIds: QualifiedId[]}[] { - return this.conversationState - .filteredConversations() - .map((conversationEntity: Conversation) => { - if (!conversationEntity.removed_from_conversation()) { - const userIdsInConversation = conversationEntity - .participating_user_ids() - .concat(this.userState.self().qualifiedId); - const matchingUserIds = userIdsInConversation.filter(userIdInConversation => - userIds.find(userId => matchQualifiedIds(userId, userIdInConversation)), - ); - - if (!!matchingUserIds.length) { - return {conversationEntity, userIds: matchingUserIds}; - } - } - return undefined; - }) - .filter(activeConversationInfo => !!activeConversationInfo) as { - conversationEntity: Conversation; - userIds: QualifiedId[]; - }[]; - } - - /** - * Check whether to degrade conversation and set corresponding state. - * - * @param conversationEntity Conversation entity to evaluate - * @param shouldShowDegradationWarning Should a modal warn about the degradation? - * @returns `true` if conversation state changed to degraded - */ - private willChangeToDegraded(conversationEntity: Conversation, shouldShowDegradationWarning = true): boolean { - const state = conversationEntity.verification_state(); - const isDegraded = state === ConversationVerificationState.DEGRADED; - - if (isDegraded) { - return false; - } - - // Explicit Boolean check to prevent state changes on undefined - const isStateVerified = state === ConversationVerificationState.VERIFIED; - const isConversationUnverified = conversationEntity.is_verified() === false; - if (isStateVerified && isConversationUnverified) { - conversationEntity.verification_state( - shouldShowDegradationWarning - ? ConversationVerificationState.DEGRADED - : ConversationVerificationState.UNVERIFIED, - ); - this.logger.log(`Verification of conversation '${conversationEntity.id}' changed to degraded`); - return true; - } - - return false; - } - - /** - * Check whether to verify conversation and set corresponding state - * - * @param conversationEntity Conversation entity to evaluate - * @returns `true` if conversation state changed to verified - */ - private willChangeToVerified(conversationEntity: Conversation): boolean { - const state = conversationEntity.verification_state(); - const isStateVerified = state === ConversationVerificationState.VERIFIED; - if (isStateVerified) { - return false; - } - - // Explicit Boolean check to prevent state changes on undefined - const isConversationVerified = conversationEntity.is_verified() === true; - if (isConversationVerified) { - conversationEntity.verification_state(ConversationVerificationState.VERIFIED); - this.logger.log(`Verification state of conversation '${conversationEntity.id}' changed to verified`); - return true; - } - - return false; - } -} diff --git a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts new file mode 100644 index 00000000000..57a9943c8f9 --- /dev/null +++ b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts @@ -0,0 +1,155 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {ConversationProtocol} from '@wireapp/api-client/lib/conversation/NewConversation'; + +import {Conversation} from 'src/script/entity/Conversation'; +import {Core} from 'src/script/service/CoreSingleton'; +import {getLogger, Logger} from 'Util/Logger'; +import {createUuid} from 'Util/uuid'; + +import {MLSConversationVerificationStateHandler} from './MLSStateHandler'; + +import {ConversationState} from '../../ConversationState'; + +jest.mock('Util/Logger', () => ({ + getLogger: jest.fn().mockReturnValue({ + error: jest.fn(), + log: jest.fn(), + }), +})); + +describe('MLSConversationVerificationStateHandler', () => { + const uuid = createUuid(); + let handler: MLSConversationVerificationStateHandler; + let mockOnConversationVerificationStateChange: jest.Mock; + let mockConversationState: jest.Mocked; + let mockCore: jest.Mocked; + let logger: jest.Mocked; + const conversation: Conversation = new Conversation(uuid, '', ConversationProtocol.MLS); + const groupId = 'groupIdXYZ'; + + beforeEach(() => { + jest.clearAllMocks(); + conversation.groupId = groupId; + + mockOnConversationVerificationStateChange = jest.fn(); + mockConversationState = { + filteredConversations: () => [conversation], + } as unknown as jest.Mocked; + mockCore = { + service: { + mls: { + on: jest.fn(), + }, + e2eIdentity: {}, + }, + } as unknown as jest.Mocked; + + handler = new MLSConversationVerificationStateHandler( + mockOnConversationVerificationStateChange, + mockConversationState, + mockCore, + ); + logger = getLogger('MLSConversationVerificationStateHandler') as jest.Mocked; + }); + + it('should log an error if MLS service is not available', () => { + mockCore.service.mls = undefined; + + new MLSConversationVerificationStateHandler( + mockOnConversationVerificationStateChange, + mockConversationState, + mockCore, + ); + + // Assert + expect(logger.error).toHaveBeenCalledWith('MLS service not available'); + }); + + it('should log an error if e2eIdentity service is not available', () => { + mockCore.service.e2eIdentity = undefined; + + new MLSConversationVerificationStateHandler( + mockOnConversationVerificationStateChange, + mockConversationState, + mockCore, + ); + + // Assert + expect(logger.error).toHaveBeenCalledWith('E2E identity service not available'); + }); + + it('should hook into the newEpoch event of the MLS service', () => { + new MLSConversationVerificationStateHandler( + mockOnConversationVerificationStateChange, + mockConversationState, + mockCore, + ); + + // Assert + expect(mockCore.service.mls.on).toHaveBeenCalledWith('newEpoch', expect.any(Function)); + }); + + describe('checkEpoch', () => { + it('should degrade conversation if not all user entities have certificates', async () => { + jest.spyOn(handler as any, 'degradeConversation'); + + const mockData = { + groupId, + epoch: 12345, + }; + + jest.spyOn(handler as any, 'getAllUserEntitiesInConversation').mockResolvedValue({ + isResultComplete: false, + identities: [], + qualifiedIds: [], + }); + + await (handler as any).checkEpoch(mockData); + + expect((handler as any).degradeConversation).toHaveBeenCalled(); + }); + + it('should verify conversation if all checks pass', async () => { + jest.spyOn(handler as any, 'verifyConversation'); + + const mockData = { + groupId, + epoch: 12345, + }; + + jest.spyOn(handler as any, 'getAllUserEntitiesInConversation').mockResolvedValue({ + isResultComplete: true, + identities: [ + { + certificate: 'mockCertificate', + }, + ], + qualifiedIds: [], + }); + + jest.spyOn(handler as any, 'isCertificateActiveAndValid').mockResolvedValue(true); + + await (handler as any).checkEpoch(mockData); // Calling the private method + + expect((handler as any).verifyConversation).toHaveBeenCalled(); + }); + }); +}); diff --git a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts new file mode 100644 index 00000000000..5f1a47aee00 --- /dev/null +++ b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts @@ -0,0 +1,173 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {X509Certificate} from '@peculiar/x509'; +import {QualifiedId} from '@wireapp/api-client/lib/user'; +import {container} from 'tsyringe'; + +import {Conversation} from 'src/script/entity/Conversation'; +import {VerificationMessageType} from 'src/script/message/VerificationMessageType'; +import {Core} from 'src/script/service/CoreSingleton'; +import {Logger, getLogger} from 'Util/Logger'; + +import {ConversationState} from '../../ConversationState'; +import { + getConversationByGroupId, + attemptChangeToDegraded, + attemptChangeToVerified, + OnConversationVerificationStateChange, +} from '../shared'; + +export class MLSConversationVerificationStateHandler { + private readonly logger: Logger; + + public constructor( + private readonly onConversationVerificationStateChange: OnConversationVerificationStateChange, + private readonly conversationState = container.resolve(ConversationState), + private readonly core = container.resolve(Core), + ) { + this.logger = getLogger('MLSConversationVerificationStateHandler'); + // We need to check if the core service is available + if (!this.core.service?.mls) { + this.logger.error('MLS service not available'); + return; + } + // We need to check if the e2eIdentity service is available + if (!this.core.service?.e2eIdentity) { + this.logger.error('E2E identity service not available'); + return; + } + // We hook into the newEpoch event of the MLS service to check if the conversation needs to be verified or degraded + this.core.service.mls.on('newEpoch', this.checkEpoch); + } + + /** + * This function checks if the conversation is verified and if it is, it will degrade it + * @param conversationEntity + * @param userIds + */ + private degradeConversation = async (conversationEntity: Conversation, userIds: QualifiedId[]) => { + this.logger.log(`Conversation ${conversationEntity.name} will be degraded`); + const conversationVerificationState = attemptChangeToDegraded({ + conversationEntity, + logger: this.logger, + }); + if (conversationVerificationState) { + this.onConversationVerificationStateChange({ + conversationEntity, + conversationVerificationState, + verificationMessageType: VerificationMessageType.UNVERIFIED, + userIds, + }); + } + }; + + /** + * This function checks if the conversation is degraded and if it is, it will verify it + * @param conversationEntity + * @param userIds + */ + private verifyConversation = async (conversationEntity: Conversation) => { + this.logger.log(`Conversation ${conversationEntity.name} will be verified`); + + const conversationVerificationState = attemptChangeToVerified({conversationEntity, logger: this.logger}); + + if (conversationVerificationState) { + this.onConversationVerificationStateChange({ + conversationEntity, + conversationVerificationState, + }); + } + }; + + /** + * This function returns the WireIdentity of all userDeviceEntities in a conversation, as long as they have a certificate. + * If the conversation has userDeviceEntities without a certificate, it will not be included in the returned array + * + */ + private getAllUserEntitiesInConversation = async (conversation: Conversation) => { + if (!conversation.groupId) { + this.logger.error('Conversation has no groupId', conversation.name); + throw new Error('Conversation has no groupId'); + } + + const userEntities = conversation.getAllUserEntities(); + + const deviceUserPairs = userEntities + .flatMap(userEntity => { + return userEntity.devices().map(device => ({[device.id]: userEntity.qualifiedId})); + }) + .reduce((acc, current) => { + return {...acc, ...current}; + }, {}); + + const identities = await this.core.service!.e2eIdentity!.getUserDeviceEntities( + conversation.groupId, + deviceUserPairs, + ); + + return { + identities, + isResultComplete: Object.keys(deviceUserPairs).length === identities.length, + qualifiedIds: userEntities.map(userEntity => userEntity.qualifiedId), + }; + }; + + private async isCertificateActiveAndValid(certificateString: string): Promise { + const cert = new X509Certificate(certificateString); + const isValid = await cert.verify(); + const isActive = cert.notAfter.getTime() > Date.now(); + + return isValid && isActive; + } + + private async checkEpoch({groupId, epoch}: {groupId: string; epoch: number}): Promise { + this.logger.log(`Epoch changed to ${epoch} for groupId ${groupId}`); + const conversationEntity = getConversationByGroupId({conversationState: this.conversationState, groupId}); + if (!conversationEntity) { + this.logger.error(`Epoch changed but conversationEntity can't be found`); + return; + } + + const {isResultComplete, identities, qualifiedIds} = + await this.getAllUserEntitiesInConversation(conversationEntity); + + // If the number of userDevicePairs is not equal to the number of identities, our Conversation is not secure + if (!isResultComplete) { + return this.degradeConversation(conversationEntity, qualifiedIds); + } + + // We need to check if identities are valid and not expired + const certificates = identities.map(identity => identity.certificate); + if (certificates.some(certificate => !this.isCertificateActiveAndValid(certificate))) { + return this.degradeConversation(conversationEntity, qualifiedIds); + } + + // If we reach this point, all checks have passed and we can set the conversation to verified + return this.verifyConversation(conversationEntity); + } +} + +export const registerMLSConversationVerificationStateHandler = ( + onConversationVerificationStateChange: OnConversationVerificationStateChange, + conversationState?: ConversationState, + core?: Core, +): void => { + new MLSConversationVerificationStateHandler(onConversationVerificationStateChange, conversationState, core); +}; diff --git a/src/script/conversation/ConversationVerificationStateHandler/MLS/index.ts b/src/script/conversation/ConversationVerificationStateHandler/MLS/index.ts new file mode 100644 index 00000000000..17527c28813 --- /dev/null +++ b/src/script/conversation/ConversationVerificationStateHandler/MLS/index.ts @@ -0,0 +1,20 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export * from './MLSStateHandler'; diff --git a/src/script/conversation/ConversationVerificationStateHandler.test.ts b/src/script/conversation/ConversationVerificationStateHandler/Proteus/ProteusStateHandler.test.ts similarity index 96% rename from src/script/conversation/ConversationVerificationStateHandler.test.ts rename to src/script/conversation/ConversationVerificationStateHandler/Proteus/ProteusStateHandler.test.ts index fbaff5a1790..4a4319c1e3e 100644 --- a/src/script/conversation/ConversationVerificationStateHandler.test.ts +++ b/src/script/conversation/ConversationVerificationStateHandler/Proteus/ProteusStateHandler.test.ts @@ -24,14 +24,14 @@ import {Conversation} from 'src/script/entity/Conversation'; import {User} from 'src/script/entity/User'; import {createUuid} from 'Util/uuid'; -import {ConversationRepository} from './ConversationRepository'; -import {ConversationVerificationStateHandler} from './ConversationVerificationStateHandler'; +import {ProteusConversationVerificationStateHandler} from './ProteusStateHandler'; -import {TestFactory} from '../../../test/helper/TestFactory'; +import {TestFactory} from '../../../../../test/helper/TestFactory'; +import {ConversationRepository} from '../../ConversationRepository'; -describe('ConversationVerificationStateHandler', () => { +describe('ProteusConversationVerificationStateHandler', () => { const testFactory = new TestFactory(); - let stateHandler: ConversationVerificationStateHandler; + let stateHandler: ProteusConversationVerificationStateHandler; let conversationRepository: ConversationRepository; let conversationAB: Conversation; @@ -49,7 +49,7 @@ describe('ConversationVerificationStateHandler', () => { return testFactory.exposeConversationActors().then(_conversation_repository => { spyOn(testFactory.event_repository, 'injectEvent').and.returnValue(undefined); conversationRepository = _conversation_repository; - stateHandler = conversationRepository.verificationStateHandler; + stateHandler = conversationRepository.proteusVerificationStateHandler; conversationAB = new Conversation(createUuid()); conversationB = new Conversation(createUuid()); diff --git a/src/script/conversation/ConversationVerificationStateHandler/Proteus/ProteusStateHandler.ts b/src/script/conversation/ConversationVerificationStateHandler/Proteus/ProteusStateHandler.ts new file mode 100644 index 00000000000..0297553fa7a --- /dev/null +++ b/src/script/conversation/ConversationVerificationStateHandler/Proteus/ProteusStateHandler.ts @@ -0,0 +1,220 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import type {QualifiedId} from '@wireapp/api-client/lib/user/'; +import {amplify} from 'amplify'; +import {container} from 'tsyringe'; + +import {WebAppEvents} from '@wireapp/webapp-events'; + +import {Conversation} from 'src/script/entity/Conversation'; +import {VerificationMessageType} from 'src/script/message/VerificationMessageType'; +import {UserState} from 'src/script/user/UserState'; +import {getLogger, Logger} from 'Util/Logger'; + +import {isMixedConversation, isProteusConversation} from '../../ConversationSelectors'; +import {ConversationState} from '../../ConversationState'; +import {ConversationVerificationState} from '../../ConversationVerificationState'; +import { + getActiveConversationsWithUsers, + attemptChangeToVerified, + attemptChangeToDegraded, + OnConversationVerificationStateChange, +} from '../shared'; + +export class ProteusConversationVerificationStateHandler { + private readonly logger: Logger; + + constructor( + private readonly onConversationVerificationStateChange: OnConversationVerificationStateChange, + private readonly userState = container.resolve(UserState), + private readonly conversationState = container.resolve(ConversationState), + ) { + this.logger = getLogger('ProteusConversationVerificationStateHandler'); + + amplify.subscribe(WebAppEvents.USER.CLIENT_ADDED, this.onClientAdded); + amplify.subscribe(WebAppEvents.USER.CLIENT_REMOVED, this.onClientRemoved); + amplify.subscribe(WebAppEvents.USER.CLIENTS_UPDATED, this.onClientsUpdated); + amplify.subscribe(WebAppEvents.CLIENT.VERIFICATION_STATE_CHANGED, this.onClientVerificationChanged); + } + + readonly onClientVerificationChanged = (userId: QualifiedId): void => { + getActiveConversationsWithUsers({ + userIds: [userId], + conversationState: this.conversationState, + userState: this.userState, + }).forEach(({conversationEntity, userIds}) => { + const isStateChange = this.checkChangeToVerified(conversationEntity); + if (!isStateChange) { + this.checkChangeToDegraded(conversationEntity, userIds, VerificationMessageType.UNVERIFIED); + } + }); + }; + + /** + * Self user or other participant added clients. + * @param userId ID of user that added client (can be self user ID) + */ + readonly onClientAdded = (userId: QualifiedId): void => { + this.onClientsAdded([userId]); + }; + + /** + * Multiple participants added clients. + * @param userIds Multiple user IDs (can include self user ID) + */ + onClientsAdded(userIds: QualifiedId[]): void { + getActiveConversationsWithUsers({ + userIds, + conversationState: this.conversationState, + userState: this.userState, + }).forEach(({conversationEntity, userIds: matchingUserIds}) => { + this.checkChangeToDegraded(conversationEntity, matchingUserIds, VerificationMessageType.NEW_DEVICE); + }); + } + + /** + * Self user removed a client or other participants deleted clients. + * @param userId ID of user that added client (can be self user ID) + */ + readonly onClientRemoved = (userId: QualifiedId): void => { + getActiveConversationsWithUsers({ + userIds: [userId], + conversationState: this.conversationState, + userState: this.userState, + }).forEach(({conversationEntity}) => { + this.checkChangeToVerified(conversationEntity); + }); + }; + + /** + * A new conversation was created. + * @param conversationEntity New conversation entity + */ + onConversationCreate(conversationEntity: Conversation): void { + this.checkChangeToVerified(conversationEntity); + } + + /** + * Clients of a user were updated. + */ + readonly onClientsUpdated = (userId: QualifiedId): void => { + getActiveConversationsWithUsers({ + userIds: [userId], + conversationState: this.conversationState, + userState: this.userState, + }).forEach(({conversationEntity, userIds}) => { + const isStateChange = this.checkChangeToVerified(conversationEntity); + if (!isStateChange) { + this.checkChangeToDegraded(conversationEntity, userIds, VerificationMessageType.NEW_DEVICE); + } + }); + }; + + /** + * New member(s) joined the conversation. + * @param conversationEntity Changed conversation entity + * @param userIds IDs of added members + */ + onMemberJoined(conversationEntity: Conversation, userIds: QualifiedId[]): void { + this.checkChangeToDegraded(conversationEntity, userIds, VerificationMessageType.NEW_MEMBER); + } + + /** + * Member(s) left the conversation. + * @param conversationEntity Changed conversation entity + */ + onMemberLeft(conversationEntity: Conversation): void { + this.checkChangeToVerified(conversationEntity); + } + + /** + * Change that could verify conversation. + * + * @param conversationEntity Changed conversation entity + * @returns `true` if state changed + */ + private checkChangeToVerified(conversationEntity: Conversation): boolean { + // We want to process only Proteus and Mixed conversations + if (isProteusConversation(conversationEntity) || isMixedConversation(conversationEntity)) { + const conversationVerificationState = attemptChangeToVerified({conversationEntity, logger: this.logger}); + + if (conversationVerificationState) { + this.onConversationVerificationStateChange({ + conversationEntity, + conversationVerificationState, + }); + return true; + } + } + + return false; + } + + /** + * Change that could degrade conversation. + * + * @param conversationEntity Changed conversation entity + * @param userIds IDs of affected users + * @param type Type of degradation + * @returns `true` if state changed + */ + private checkChangeToDegraded( + conversationEntity: Conversation, + userIds: QualifiedId[], + type: VerificationMessageType, + ): boolean { + // We want to process only Proteus and MLS conversations + if (isProteusConversation(conversationEntity) || isMixedConversation(conversationEntity)) { + const shouldShowDegradationWarning = type !== VerificationMessageType.UNVERIFIED; + const conversationVerificationState = attemptChangeToDegraded({ + conversationEntity, + shouldShowDegradationWarning, + logger: this.logger, + }); + + if (conversationVerificationState) { + /** + * TEMPORARY DEBUGGING FIX: + * We have seen conversations in a degraded state without an unverified device in there. + * Previously the code would hide this fact, not create a system message and then fail when it tried to prompt + * the user to grant subsequent message sending - essentially blocking the conversation. + * + * As we are unsure of the trigger of the degradation we temporarily throw an error to get to the bottom of this. + * The conversation is also reset to the verified state to ensure we can continue to send messages. + */ + if (!userIds.length) { + conversationEntity.verification_state(ConversationVerificationState.VERIFIED); + throw new Error('Conversation degraded without affected users'); + } + + this.onConversationVerificationStateChange({ + conversationEntity, + conversationVerificationState, + userIds, + verificationMessageType: type, + }); + + return true; + } + } + + return false; + } +} diff --git a/src/script/conversation/ConversationVerificationStateHandler/Proteus/index.ts b/src/script/conversation/ConversationVerificationStateHandler/Proteus/index.ts new file mode 100644 index 00000000000..d3d650e40e6 --- /dev/null +++ b/src/script/conversation/ConversationVerificationStateHandler/Proteus/index.ts @@ -0,0 +1,20 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export * from './ProteusStateHandler'; diff --git a/src/script/conversation/ConversationVerificationStateHandler/index.ts b/src/script/conversation/ConversationVerificationStateHandler/index.ts new file mode 100644 index 00000000000..6afd195ab77 --- /dev/null +++ b/src/script/conversation/ConversationVerificationStateHandler/index.ts @@ -0,0 +1,21 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export * from './Proteus'; +export * from './MLS'; diff --git a/src/script/conversation/ConversationVerificationStateHandler/shared/changeHandler/index.ts b/src/script/conversation/ConversationVerificationStateHandler/shared/changeHandler/index.ts new file mode 100644 index 00000000000..9c7d26ee7f6 --- /dev/null +++ b/src/script/conversation/ConversationVerificationStateHandler/shared/changeHandler/index.ts @@ -0,0 +1,32 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {QualifiedId} from '@wireapp/api-client/lib/user'; + +import {ConversationVerificationState} from 'src/script/conversation/ConversationVerificationState'; +import {Conversation} from 'src/script/entity/Conversation'; +import {VerificationMessageType} from 'src/script/message/VerificationMessageType'; + +interface OnConversationVerificationStateChangeParams { + conversationEntity: Conversation; + conversationVerificationState: ConversationVerificationState; + verificationMessageType?: VerificationMessageType; + userIds?: QualifiedId[]; +} +export type OnConversationVerificationStateChange = (params: OnConversationVerificationStateChangeParams) => void; diff --git a/src/script/conversation/ConversationVerificationStateHandler/shared/conversation/index.ts b/src/script/conversation/ConversationVerificationStateHandler/shared/conversation/index.ts new file mode 100644 index 00000000000..c52ceb56ce6 --- /dev/null +++ b/src/script/conversation/ConversationVerificationStateHandler/shared/conversation/index.ts @@ -0,0 +1,144 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {QualifiedId} from '@wireapp/api-client/lib/user'; + +import {isMLSConversation, MLSConversation} from 'src/script/conversation/ConversationSelectors'; +import {ConversationState} from 'src/script/conversation/ConversationState'; +import {ConversationVerificationState} from 'src/script/conversation/ConversationVerificationState'; +import {Conversation} from 'src/script/entity/Conversation'; +import {UserState} from 'src/script/user/UserState'; +import {Logger} from 'Util/Logger'; +import {matchQualifiedIds} from 'Util/QualifiedId'; + +interface GetActiveConversationsWithUsersParams { + userIds: QualifiedId[]; + conversationState: ConversationState; + userState: UserState; +} +type GetActiveConversationsWithUsersResult = {conversationEntity: Conversation; userIds: QualifiedId[]}[]; + +export const getActiveConversationsWithUsers = ({ + conversationState, + userIds, + userState, +}: GetActiveConversationsWithUsersParams): GetActiveConversationsWithUsersResult => { + return conversationState + .filteredConversations() + .map((conversationEntity: Conversation) => { + if (!conversationEntity.removed_from_conversation()) { + const userIdsInConversation = conversationEntity.participating_user_ids().concat(userState.self().qualifiedId); + const matchingUserIds = userIdsInConversation.filter(userIdInConversation => + userIds.find(userId => matchQualifiedIds(userId, userIdInConversation)), + ); + + if (!!matchingUserIds.length) { + return {conversationEntity, userIds: matchingUserIds}; + } + } + return undefined; + }) + .flatMap(activeConversationInfo => (!!activeConversationInfo ? [activeConversationInfo] : [])); +}; + +interface GetConversationByGroupIdParams { + conversationState: ConversationState; + groupId: string; +} +export const getConversationByGroupId = ({ + conversationState, + groupId, +}: GetConversationByGroupIdParams): MLSConversation | undefined => { + const conversation = conversationState.filteredConversations().find(conversation => conversation.groupId === groupId); + if (conversation && isMLSConversation(conversation)) { + return conversation; + } + return undefined; +}; + +/** + * Check whether to degrade conversation and set corresponding state. + * + * @param conversationEntity Conversation entity to evaluate + * @param shouldShowDegradationWarning Should a modal warn about the degradation? + * @returns `true` if conversation state changed to degraded + */ +interface AttemptChangeToDegradedParams { + conversationEntity: Conversation; + shouldShowDegradationWarning?: boolean; + logger: Logger; +} +export const attemptChangeToDegraded = ({ + conversationEntity, + logger, + shouldShowDegradationWarning = true, +}: AttemptChangeToDegradedParams): ConversationVerificationState | undefined => { + const state = conversationEntity.verification_state(); + const isAlreadyDegraded = state === ConversationVerificationState.DEGRADED; + + if (isAlreadyDegraded) { + return undefined; + } + + // Explicit Boolean check to prevent state changes on undefined + const isStateVerified = state === ConversationVerificationState.VERIFIED; + const isConversationUnverified = conversationEntity.is_verified() === false; + if (isStateVerified && isConversationUnverified) { + const conversationVerificationState = shouldShowDegradationWarning + ? ConversationVerificationState.DEGRADED + : ConversationVerificationState.UNVERIFIED; + conversationEntity.verification_state(conversationVerificationState); + logger.log(`Verification of conversation '${conversationEntity.id}' changed to degraded`); + return conversationVerificationState; + } + + return undefined; +}; + +/** + * Check whether to verify conversation and set corresponding state + * + * @param conversationEntity Conversation entity to evaluate + * @returns `true` if conversation state changed to verified + */ +interface AttemptChangeToVerifiedParams { + conversationEntity: Conversation; + logger: Logger; +} +export const attemptChangeToVerified = ({ + conversationEntity, + logger, +}: AttemptChangeToVerifiedParams): ConversationVerificationState | undefined => { + const state = conversationEntity.verification_state(); + const isAlreadyVerified = state === ConversationVerificationState.VERIFIED; + + if (isAlreadyVerified) { + return undefined; + } + + // Explicit Boolean check to prevent state changes on undefined + const isConversationVerified = conversationEntity.is_verified() === true; + if (isConversationVerified) { + conversationEntity.verification_state(ConversationVerificationState.VERIFIED); + logger.log(`Verification state of conversation '${conversationEntity.id}' changed to verified`); + return ConversationVerificationState.VERIFIED; + } + + return undefined; +}; diff --git a/src/script/conversation/ConversationVerificationStateHandler/shared/index.ts b/src/script/conversation/ConversationVerificationStateHandler/shared/index.ts new file mode 100644 index 00000000000..02e7cb0326c --- /dev/null +++ b/src/script/conversation/ConversationVerificationStateHandler/shared/index.ts @@ -0,0 +1,21 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export * from './conversation'; +export * from './changeHandler'; diff --git a/src/script/entity/Conversation.ts b/src/script/entity/Conversation.ts index b029547630a..a7bcbdf3b70 100644 --- a/src/script/entity/Conversation.ts +++ b/src/script/entity/Conversation.ts @@ -170,6 +170,7 @@ export class Conversation { public readonly type: ko.Observable; public readonly unreadState: ko.PureComputed; public readonly verification_state: ko.Observable; + public readonly mlsVerificationState: ko.Observable; public readonly withAllTeamMembers: ko.Observable; public readonly hasExternal: ko.PureComputed; public readonly hasFederatedUsers: ko.PureComputed; @@ -285,6 +286,7 @@ export class Conversation { this.archivedState = ko.observable(false).extend({notify: 'always'}); this.mutedState = ko.observable(NOTIFICATION_STATE.EVERYTHING); this.verification_state = ko.observable(ConversationVerificationState.UNVERIFIED); + this.mlsVerificationState = ko.observable(ConversationVerificationState.UNVERIFIED); this.archivedTimestamp = ko.observable(0); this.cleared_timestamp = ko.observable(0); @@ -1013,6 +1015,10 @@ export class Conversation { return userEntities.filter(userEntity => !userEntity.is_verified()); } + getAllUserEntities(): User[] { + return this.participating_user_ets(); + } + supportsVideoCall(sftEnabled: boolean): boolean { if (sftEnabled) { return true; @@ -1059,6 +1065,7 @@ export class Conversation { team_id: this.team_id, type: this.type(), verification_state: this.verification_state(), + mlsVerificationState: this.mlsVerificationState(), }; } } diff --git a/src/script/storage/record/ConversationRecord.ts b/src/script/storage/record/ConversationRecord.ts index a18ebd2ff33..d1ce32b467b 100644 --- a/src/script/storage/record/ConversationRecord.ts +++ b/src/script/storage/record/ConversationRecord.ts @@ -64,4 +64,5 @@ export interface ConversationRecord { team_id: string; type: CONVERSATION_TYPE; verification_state: ConversationVerificationState; + mlsVerificationState: ConversationVerificationState; } diff --git a/test/helper/ConversationGenerator.ts b/test/helper/ConversationGenerator.ts index eed312b1a01..ddce7bccf31 100644 --- a/test/helper/ConversationGenerator.ts +++ b/test/helper/ConversationGenerator.ts @@ -55,6 +55,7 @@ export function generateAPIConversation({ qualified_id: id, access: [], verification_state: ConversationVerificationState.UNVERIFIED, + mlsVerificationState: ConversationVerificationState.UNVERIFIED, receipt_mode: RECEIPT_MODE.ON, team_id: '', status: ConversationStatus.CURRENT_MEMBER, diff --git a/yarn.lock b/yarn.lock index 44bea364b2c..f2083221430 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3563,6 +3563,152 @@ __metadata: languageName: node linkType: hard +"@peculiar/asn1-cms@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-cms@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + "@peculiar/asn1-x509-attr": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: caeb7fcb594b7158ecb31f2e0e3a85a79fb9a51b9204b3fbad398706f56f20dfb6478f37fc163b544ebe3fd6ade7606a71826684df040ae6870fe7a4d8286d8c + languageName: node + linkType: hard + +"@peculiar/asn1-csr@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-csr@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 4989edc765476b02995fbee88ab3860cf657f0e62756fa0ec44cd95158e6276f58c2c8656e5f8bd2f6934650999b781f2ec7b65ec537fc41a1aeb387b2e32883 + languageName: node + linkType: hard + +"@peculiar/asn1-ecc@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-ecc@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 4b9a383dd443fbb9699d79550e03d1185781885768d8c7b780e26a959344286a53539824fa4a3103e9e8393a7d062fe6820bf79abafb340dc18ee5ce81b1d470 + languageName: node + linkType: hard + +"@peculiar/asn1-pfx@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-pfx@npm:2.3.6" + dependencies: + "@peculiar/asn1-cms": ^2.3.6 + "@peculiar/asn1-pkcs8": ^2.3.6 + "@peculiar/asn1-rsa": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: faa3abc62e4ba4e67f6377178df62c24146920475e4ddfee024b1e14b208947d9b136c1bb1b82d7a3a28b76a544687529338f6143f92bdf324db23bd6aa0c11a + languageName: node + linkType: hard + +"@peculiar/asn1-pkcs8@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-pkcs8@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 17b2ea5f2350ba74d58084f95f4d739d30413112e85268fd55b308307bd6a6f006e06accaf3e181103a61bfb7efd2c21be7f914b48954845bef109b1b0a4bc46 + languageName: node + linkType: hard + +"@peculiar/asn1-pkcs9@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-pkcs9@npm:2.3.6" + dependencies: + "@peculiar/asn1-cms": ^2.3.6 + "@peculiar/asn1-pfx": ^2.3.6 + "@peculiar/asn1-pkcs8": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + "@peculiar/asn1-x509-attr": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 3b8ca25b46ce9afc51b8cc72afab6fd32bb1dbf501eef68f997b35591c16c321384224fe478fd03fa644f3d540d719568767c7bd8bd1f617a5d9f8d318be0d2c + languageName: node + linkType: hard + +"@peculiar/asn1-rsa@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-rsa@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 120dda00af6e1b1e5568826ac8211d60d36b3cbe91b086cae6b5ba132f1670ba129284068110305b237550e402c0beeda45fd713d640f97ad11d8cf6c925b31a + languageName: node + linkType: hard + +"@peculiar/asn1-schema@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-schema@npm:2.3.6" + dependencies: + asn1js: ^3.0.5 + pvtsutils: ^1.3.2 + tslib: ^2.4.0 + checksum: fc09387c6e3dea07fca21b54ea8c71ce3ec0f8c92377237e51aef729f0c2df92781aa7a18a546a6fe809519faeaa222df576ec21a35c6095037a78677204a55b + languageName: node + linkType: hard + +"@peculiar/asn1-x509-attr@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-x509-attr@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + asn1js: ^3.0.5 + tslib: ^2.4.0 + checksum: 100a11aad2168a99b23d576869d27d569c34191d14311cf6fcbea126b737bcb42f23401ead45c2bc55074d164712c65e5541be23c0e5f92bf19005957a16a872 + languageName: node + linkType: hard + +"@peculiar/asn1-x509@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-x509@npm:2.3.6" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + asn1js: ^3.0.5 + ipaddr.js: ^2.0.1 + pvtsutils: ^1.3.2 + tslib: ^2.4.0 + checksum: 6e946bd44091fb88f617c3bbf54ed1113ed2b249675dd36004513444f409160f6d446bdb82d3cb6041b4d15c68fa4cf40ad452891a5f85dda2af89ee5b0590d2 + languageName: node + linkType: hard + +"@peculiar/x509@npm:1.9.5": + version: 1.9.5 + resolution: "@peculiar/x509@npm:1.9.5" + dependencies: + "@peculiar/asn1-cms": ^2.3.6 + "@peculiar/asn1-csr": ^2.3.6 + "@peculiar/asn1-ecc": ^2.3.6 + "@peculiar/asn1-pkcs9": ^2.3.6 + "@peculiar/asn1-rsa": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + pvtsutils: ^1.3.5 + reflect-metadata: ^0.1.13 + tslib: ^2.6.1 + tsyringe: ^4.8.0 + checksum: 855342d71bb9cf4c19f5232106bd5f79f2ae7b5607568940d9bdb5bd528ccf4454a19bd47a7cb820397216a1bb7cf613e940c1778b8cf940ec082055bc373c56 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -4846,22 +4992,22 @@ __metadata: linkType: hard "@wireapp/api-client@npm:^26.1.1": - version: 26.1.1 - resolution: "@wireapp/api-client@npm:26.1.1" + version: 26.2.3 + resolution: "@wireapp/api-client@npm:26.2.3" dependencies: - "@wireapp/commons": ^5.1.3 + "@wireapp/commons": ^5.2.0 "@wireapp/priority-queue": ^2.1.4 "@wireapp/protocol-messaging": 1.44.0 axios: 1.5.0 - axios-retry: 3.7.0 - http-status-codes: 2.2.0 + axios-retry: 3.8.0 + http-status-codes: 2.3.0 logdown: 3.3.1 pako: 2.1.0 reconnecting-websocket: 4.4.0 spark-md5: 3.0.2 tough-cookie: 4.1.3 - ws: 8.14.1 - checksum: 788935f49f52c7b9c932f853a125f2ed4760eb62216f44c3ff12926b566502591f35bb3d163ed726acab48c8d6b3bb512ae3d2963440de28271d16e9648c9fcf + ws: 8.14.2 + checksum: 2872223be89a6ae85092832270d23135bb22441d5d068522335416fcd783bac87d425030379128b741054ef3948593b485f67354e239800864b0b694887b6d8a languageName: node linkType: hard @@ -4891,6 +5037,18 @@ __metadata: languageName: node linkType: hard +"@wireapp/commons@npm:^5.2.0": + version: 5.2.0 + resolution: "@wireapp/commons@npm:5.2.0" + dependencies: + ansi-regex: 5.0.1 + fs-extra: 11.1.0 + logdown: 3.3.1 + platform: 1.3.6 + checksum: 7537084a5c06dee8d8793e98841098ea5b2b507fd9efd1f0f6d4d7413b148f767690def018a15f4b77d34701415f20fce5755cd9755f6a96c71ff1197682b0b8 + languageName: node + linkType: hard + "@wireapp/copy-config@npm:2.1.7": version: 2.1.7 resolution: "@wireapp/copy-config@npm:2.1.7" @@ -5691,6 +5849,17 @@ __metadata: languageName: node linkType: hard +"asn1js@npm:^3.0.5": + version: 3.0.5 + resolution: "asn1js@npm:3.0.5" + dependencies: + pvtsutils: ^1.3.2 + pvutils: ^1.1.3 + tslib: ^2.4.0 + checksum: 3b6af1bbadd5762ef8ead5daf2f6bda1bc9e23bc825c4dcc996aa1f9521ad7390a64028565d95d98090d69c8431f004c71cccb866004759169d7c203cf9075eb + languageName: node + linkType: hard + "ast-types-flow@npm:^0.0.7": version: 0.0.7 resolution: "ast-types-flow@npm:0.0.7" @@ -5781,13 +5950,13 @@ __metadata: languageName: node linkType: hard -"axios-retry@npm:3.7.0": - version: 3.7.0 - resolution: "axios-retry@npm:3.7.0" +"axios-retry@npm:3.8.0": + version: 3.8.0 + resolution: "axios-retry@npm:3.8.0" dependencies: "@babel/runtime": ^7.15.4 is-retry-allowed: ^2.2.0 - checksum: ef34b50a86b5cd65ce2bf933aaed422ffb1a17b8fe11a53e444437fb42be400b48271d1ff9fd23a051627b7f3b33bebdeb1d66556aae04d5d6bfbe57fecdfb64 + checksum: 448d951b971ccd35eaedc0f10ff1129a6bf2b3dfe13ce57749809bd37975332ae0e906ea4e67a41c9c98215bb1bf8a554e6880f1272419c758f91e4d68ca6b55 languageName: node linkType: hard @@ -9875,6 +10044,13 @@ __metadata: languageName: node linkType: hard +"http-status-codes@npm:2.3.0": + version: 2.3.0 + resolution: "http-status-codes@npm:2.3.0" + checksum: dae3b99e0155441b6df28e8265ff27c56a45f82c6092f736414233e9ccf063d5ea93c1e1279e8b499c4642e2538b37995c76b1640ed3f615d0e2883d3a1dcfd5 + languageName: node + linkType: hard + "https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" @@ -10158,6 +10334,13 @@ __metadata: languageName: node linkType: hard +"ipaddr.js@npm:^2.0.1": + version: 2.1.0 + resolution: "ipaddr.js@npm:2.1.0" + checksum: 807a054f2bd720c4d97ee479d6c9e865c233bea21f139fb8dabd5a35c4226d2621c42e07b4ad94ff3f82add926a607d8d9d37c625ad0319f0e08f9f2bd1968e2 + languageName: node + linkType: hard + "is-absolute@npm:^0.2.5": version: 0.2.6 resolution: "is-absolute@npm:0.2.6" @@ -14754,6 +14937,22 @@ __metadata: languageName: node linkType: hard +"pvtsutils@npm:^1.3.2, pvtsutils@npm:^1.3.5": + version: 1.3.5 + resolution: "pvtsutils@npm:1.3.5" + dependencies: + tslib: ^2.6.1 + checksum: e734516b3cb26086c18bd9c012fefe818928a5073178842ab7e62885a090f1dd7bda9c7bb8cd317167502cb8ec86c0b1b0ccd71dac7ab469382a4518157b0d12 + languageName: node + linkType: hard + +"pvutils@npm:^1.1.3": + version: 1.1.3 + resolution: "pvutils@npm:1.1.3" + checksum: 2ee26a9e5176c348977d6ec00d8ee80bff62f51743b1c5fe8abeeb4c5d29d9959cdfe0ce146707a9e6801bce88190fed3002d720b072dc87d031c692820b44c9 + languageName: node + linkType: hard + "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" @@ -15154,6 +15353,13 @@ __metadata: languageName: node linkType: hard +"reflect-metadata@npm:^0.1.13": + version: 0.1.13 + resolution: "reflect-metadata@npm:0.1.13" + checksum: 798d379a7b6f6455501145419505c97dd11cbc23857a386add2b9ef15963ccf15a48d9d15507afe01d4cd74116df8a213247200bac00320bd7c11ddeaa5e8fb4 + languageName: node + linkType: hard + "reflect.getprototypeof@npm:^1.0.4": version: 1.0.4 resolution: "reflect.getprototypeof@npm:1.0.4" @@ -16975,7 +17181,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.3, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2": +"tslib@npm:^2.0.3, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad @@ -16993,7 +17199,7 @@ __metadata: languageName: node linkType: hard -"tsyringe@npm:4.8.0": +"tsyringe@npm:4.8.0, tsyringe@npm:^4.8.0": version: 4.8.0 resolution: "tsyringe@npm:4.8.0" dependencies: @@ -17910,6 +18116,7 @@ __metadata: "@formatjs/cli": 6.1.5 "@koush/wrtc": 0.5.3 "@loadable/component": ^5.15.3 + "@peculiar/x509": 1.9.5 "@testing-library/react": 14.0.0 "@types/adm-zip": 0.5.1 "@types/dexie-batch": 0.4.3 @@ -18338,7 +18545,22 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.14.1, ws@npm:^8.11.0": +"ws@npm:8.14.2": + version: 8.14.2 + resolution: "ws@npm:8.14.2" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 3ca0dad26e8cc6515ff392b622a1467430814c463b3368b0258e33696b1d4bed7510bc7030f7b72838b9fdeb8dbd8839cbf808367d6aae2e1d668ce741d4308b + languageName: node + linkType: hard + +"ws@npm:^8.11.0": version: 8.14.1 resolution: "ws@npm:8.14.1" peerDependencies: From 0999001d43b50aee16be016411ae5489ba53b239 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Thu, 12 Oct 2023 12:26:50 +0200 Subject: [PATCH 38/95] revert loadable component --- package.json | 1 + yarn.lock | 25 ++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 9f0043ad1b1..6fd43d2d308 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "@emotion/react": "11.11.1", "@lexical/history": "0.12.2", "@lexical/react": "0.12.2", + "@loadable/component": "5.15.3", "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.4.18", "@wireapp/commons": "5.2.1", diff --git a/yarn.lock b/yarn.lock index 869f589cc9b..f8d0de41d05 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1454,6 +1454,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.7.7": + version: 7.23.2 + resolution: "@babel/runtime@npm:7.23.2" + dependencies: + regenerator-runtime: ^0.14.0 + checksum: 6c4df4839ec75ca10175f636d6362f91df8a3137f86b38f6cd3a4c90668a0fe8e9281d320958f4fbd43b394988958585a17c3aab2a4ea6bf7316b22916a371fb + languageName: node + linkType: hard + "@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3, @babel/template@npm:^7.4.4": version: 7.22.15 resolution: "@babel/template@npm:7.22.15" @@ -3742,6 +3751,19 @@ __metadata: languageName: node linkType: hard +"@loadable/component@npm:^5.15.3": + version: 5.15.3 + resolution: "@loadable/component@npm:5.15.3" + dependencies: + "@babel/runtime": ^7.7.7 + hoist-non-react-statics: ^3.3.1 + react-is: ^16.12.0 + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + checksum: 78ac341465f2310db30381bc75e8bf73a33f99af849a6a2d87eb3842da0ba1df265e08045dc4f3fee1d194522a43a030baa91740045b64aad002f159ccce64bf + languageName: node + linkType: hard + "@mapbox/node-pre-gyp@npm:^1.0.8": version: 1.0.11 resolution: "@mapbox/node-pre-gyp@npm:1.0.11" @@ -15277,7 +15299,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.13.1, react-is@npm:^16.7.0": +"react-is@npm:^16.12.0, react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f @@ -18348,6 +18370,7 @@ __metadata: "@koush/wrtc": 0.5.3 "@lexical/history": 0.12.2 "@lexical/react": 0.12.2 + "@loadable/component": ^5.15.3 "@peculiar/x509": 1.9.5 "@testing-library/react": 14.0.0 "@types/adm-zip": 0.5.2 From 7aca32d8c78f07c6d884eb57dcbde84547753a2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20J=C3=B3=C5=BAwik?= Date: Tue, 17 Oct 2023 13:51:37 +0200 Subject: [PATCH 39/95] feat: Indicate client with valid certificate (#16018) * feat: Indicate client with valid certificate * remove unecessary code --- src/script/components/AvailabilityState.tsx | 4 ++- .../ParticipantItemContent.tsx | 7 +++- src/script/components/TitleBar/TitleBar.tsx | 4 ++- .../components/UserListItem/UserListItem.tsx | 11 ++++++- src/script/components/panel/UserDetails.tsx | 2 ++ .../components/userDevices/DeviceCard.tsx | 12 +++++-- .../ConversationDetails.tsx | 6 +--- .../ConversationDetailsHeader.tsx | 32 +++++++++++++------ 8 files changed, 58 insertions(+), 20 deletions(-) diff --git a/src/script/components/AvailabilityState.tsx b/src/script/components/AvailabilityState.tsx index f88f22b8217..272d0157d6c 100644 --- a/src/script/components/AvailabilityState.tsx +++ b/src/script/components/AvailabilityState.tsx @@ -43,6 +43,7 @@ interface AvailabilityStateProps { theme?: boolean; showBadges?: boolean; isProteusVerified?: boolean; + isMLSVerified?: boolean; } const iconStyles: CSSObject = { @@ -71,6 +72,7 @@ export const AvailabilityState: React.FC = ({ onClick, showBadges = false, isProteusVerified = false, + isMLSVerified = false, }) => { const isAvailable = availability === Availability.Type.AVAILABLE; const isAway = availability === Availability.Type.AWAY; @@ -135,7 +137,7 @@ export const AvailabilityState: React.FC = ({ {selfString && {selfString}} - {showBadges && } + {showBadges && } {showArrow && ( { return (
@@ -79,6 +81,7 @@ export const ParticipantItemContent = ({ selfString={selfString} showBadges={!isService && !isSelectable} isProteusVerified={isProteusVerified} + isMLSVerified={isMLSVerified} /> ) : ( <> @@ -88,7 +91,9 @@ export const ParticipantItemContent = ({ {selfString && {selfString}}
- {!isService && !isSelectable && } + {!isService && !isSelectable && ( + + )} )}
diff --git a/src/script/components/TitleBar/TitleBar.tsx b/src/script/components/TitleBar/TitleBar.tsx index f585aee8b0a..a7f4b994cd5 100644 --- a/src/script/components/TitleBar/TitleBar.tsx +++ b/src/script/components/TitleBar/TitleBar.tsx @@ -87,6 +87,7 @@ export const TitleBar: React.FC = ({ hasLegalHold, display_name: displayName, verification_state: verificationState, + mlsVerificationState, } = useKoSubscribableChildren(conversation, [ 'is1to1', 'isRequest', @@ -100,6 +101,7 @@ export const TitleBar: React.FC = ({ 'hasLegalHold', 'display_name', 'verification_state', + 'mlsVerificationState', ]); const {isActivatedAccount} = useKoSubscribableChildren(selfUser, ['isActivatedAccount']); @@ -273,8 +275,8 @@ export const TitleBar: React.FC = ({
diff --git a/src/script/components/UserList/components/UserListItem/UserListItem.tsx b/src/script/components/UserList/components/UserListItem/UserListItem.tsx index ed2d0f0f42f..d3ab066300d 100644 --- a/src/script/components/UserList/components/UserListItem/UserListItem.tsx +++ b/src/script/components/UserList/components/UserListItem/UserListItem.tsx @@ -80,7 +80,15 @@ const UserListItem = ({ isDirectGuest, availability, expirationText, - } = useKoSubscribableChildren(user, ['isDirectGuest', 'is_verified', 'availability', 'expirationText', 'name']); + isMLSVerified, + } = useKoSubscribableChildren(user, [ + 'isDirectGuest', + 'is_verified', + 'availability', + 'expirationText', + 'name', + 'isMLSVerified', + ]); const {isMe: isSelf, isFederated} = user; const isTemporaryGuest = user.isTemporaryGuest(); @@ -129,6 +137,7 @@ const UserListItem = ({ showAvailabilityState isSelectable={isSelectable} isProteusVerified={isSelfVerified && isVerified} + isMLSVerified={isMLSVerified} /> = ({ 'availability', 'is_verified', 'isAvailable', + 'isMLSVerified', ]); useEffect(() => { @@ -83,6 +84,7 @@ const UserDetailsComponent: React.FC = ({ dataUieName="status-name" showBadges isProteusVerified={isSelfVerified && user.is_verified} + isMLSVerified={user.isMLSVerified} /> ) : (

= ({ const {class: deviceClass = '?', id = '', label = '?', meta} = clientEntity; const name = clientEntity.getName(); const clickable = !!click; - const isVerified = meta.isVerified; + const {isVerified, isMLSVerified} = useKoSubscribableChildren(meta, ['isVerified', 'isMLSVerified']); + const mlsFingerprint = clientEntity.mlsPublicKeys?.[MLSPublicKeys.ED25519]; const showLegalHoldIcon = showIcon && deviceClass === ClientClassification.LEGAL_HOLD; @@ -83,7 +85,13 @@ const DeviceCard: React.FC = ({
{name} - {showVerified && } + {showVerified && ( + + )}
{mlsFingerprint && ( diff --git a/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx b/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx index 417cd6162a0..3737b33b2dc 100644 --- a/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx +++ b/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx @@ -104,7 +104,6 @@ const ConversationDetails = forwardRef verification_state: verificationState, isGroup, removed_from_conversation: removedFromConversation, - display_name: displayName, notificationState, hasGlobalMessageTimer, globalMessageTimer, @@ -122,7 +121,6 @@ const ConversationDetails = forwardRef 'verification_state', 'isGroup', 'removed_from_conversation', - 'display_name', 'notificationState', 'hasGlobalMessageTimer', 'globalMessageTimer', @@ -326,14 +324,12 @@ const ConversationDetails = forwardRef {showTopActions && showActionAddParticipants && ( diff --git a/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx b/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx index e5c44a0c32c..115f5aa82c1 100644 --- a/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx +++ b/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.tsx @@ -19,15 +19,16 @@ import {ChangeEvent, FC, KeyboardEvent, useEffect, useRef, useState} from 'react'; -import {ConversationProtocol} from '@wireapp/api-client/lib/conversation'; - import {Icon} from 'Components/Icon'; import {VerificationBadges} from 'src/script/components/VerificationBadges'; +import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {isEnterKey} from 'Util/KeyboardUtil'; import {t} from 'Util/LocalizerUtil'; import {removeLineBreaks} from 'Util/StringUtil'; import {ConversationRepository} from '../../../../../conversation/ConversationRepository'; +import {ConversationVerificationState} from '../../../../../conversation/ConversationVerificationState'; +import {Conversation} from '../../../../../entity/Conversation'; import {User} from '../../../../../entity/User'; import {ServiceEntity} from '../../../../../integration/ServiceEntity'; import {GroupDetails} from '../GroupDetails/GroupDetails'; @@ -35,28 +36,36 @@ import {GroupDetails} from '../GroupDetails/GroupDetails'; interface ConversationDetailsHeaderProps { isActiveGroupParticipant: boolean; canRenameGroup: boolean; - displayName: string; updateConversationName: (conversationName: string) => void; - isGroup: boolean; userParticipants: User[]; serviceParticipants: ServiceEntity[]; allUsersCount: number; isTeam?: boolean; - conversationProtocol?: ConversationProtocol; + conversation: Conversation; } const ConversationDetailsHeader: FC = ({ isActiveGroupParticipant, canRenameGroup, - displayName, updateConversationName, - isGroup, userParticipants, serviceParticipants, allUsersCount, isTeam = false, - conversationProtocol, + conversation, }) => { + const { + isGroup, + display_name: displayName, + verification_state: verificationState, + mlsVerificationState, + } = useKoSubscribableChildren(conversation, [ + 'isGroup', + 'display_name', + 'verification_state', + 'mlsVerificationState', + ]); + const textAreaRef = useRef(null); const isEditGroupNameTouched = useRef(false); @@ -152,7 +161,12 @@ const ConversationDetailsHeader: FC = ({ /> )} - + ) : (
From 906ba63724af75bb52343e647f4a9ca272f73fcf Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Wed, 18 Oct 2023 18:28:55 +0200 Subject: [PATCH 40/95] yarn.lock file update --- yarn.lock | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9742f3ad34d..6b5ec8f2db8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1445,16 +1445,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.23.2 - resolution: "@babel/runtime@npm:7.23.2" - dependencies: - regenerator-runtime: ^0.14.0 - checksum: 6c4df4839ec75ca10175f636d6362f91df8a3137f86b38f6cd3a4c90668a0fe8e9281d320958f4fbd43b394988958585a17c3aab2a4ea6bf7316b22916a371fb - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.7.7": +"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.23.2 resolution: "@babel/runtime@npm:7.23.2" dependencies: @@ -3751,7 +3742,7 @@ __metadata: languageName: node linkType: hard -"@loadable/component@npm:^5.15.3": +"@loadable/component@npm:5.15.3": version: 5.15.3 resolution: "@loadable/component@npm:5.15.3" dependencies: @@ -18406,7 +18397,7 @@ __metadata: "@koush/wrtc": 0.5.3 "@lexical/history": 0.12.2 "@lexical/react": 0.12.2 - "@loadable/component": ^5.15.3 + "@loadable/component": 5.15.3 "@peculiar/x509": 1.9.5 "@testing-library/react": 14.0.0 "@types/adm-zip": 0.5.2 From 4fcf44122eebaebf2b2cf9a8a1aa042dab54c0f4 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Wed, 18 Oct 2023 18:34:28 +0200 Subject: [PATCH 41/95] yarn.lock file update --- yarn.lock | 549 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 288 insertions(+), 261 deletions(-) diff --git a/yarn.lock b/yarn.lock index 6b5ec8f2db8..f974a26049d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1624,9 +1624,9 @@ __metadata: linkType: hard "@cspell/dict-cpp@npm:^5.0.8": - version: 5.0.8 - resolution: "@cspell/dict-cpp@npm:5.0.8" - checksum: 933a56daa66789a105f9309cdb91e7b5fffb1fb32be0a27e6f70506949d9f24355055eb763db7f80a00560d86786995eb1b1df003a6ad3ba87843d47686b02e2 + version: 5.0.9 + resolution: "@cspell/dict-cpp@npm:5.0.9" + checksum: f31ecffbb4385751b30fa7688706c61ffe0bdb4389ca26c00f53cf028d14d0a542eca5e04435a5eeafd13f1e7e2c6f1acb1a0235f5255169c4f9c33126b8c9ba languageName: node linkType: hard @@ -1708,9 +1708,9 @@ __metadata: linkType: hard "@cspell/dict-en_us@npm:^4.3.9": - version: 4.3.9 - resolution: "@cspell/dict-en_us@npm:4.3.9" - checksum: 890b1c4e430b623e860af5138d02514fe6eafdd62d693851a8d995e7a5ae68e501b6ddb74669faabd2393ba620d984873d00511c68564692e6a768f2dab9165a + version: 4.3.10 + resolution: "@cspell/dict-en_us@npm:4.3.10" + checksum: 278625e91c485c298661bc25bf9940c2054858aa684b118dc72c063ad57cd782a9361448180cf7310e36f5acb2333e03ca3d0f98e5ab6c15a21276f5f1e1476d languageName: node linkType: hard @@ -1757,9 +1757,9 @@ __metadata: linkType: hard "@cspell/dict-golang@npm:^6.0.3": - version: 6.0.3 - resolution: "@cspell/dict-golang@npm:6.0.3" - checksum: c7b46ad177b26ad1d449a79d12b7e1dc464c04dd7e78bf4b367ce376addfee3fa61fbbb6c7ff47e8b3a89a1fed31fbd3a889ca7cbb6bfa2cd79c1cdbfb6771b0 + version: 6.0.4 + resolution: "@cspell/dict-golang@npm:6.0.4" + checksum: a3d039a8b715ac09ef5c5ae310eda9870475411964fca3334aed81e3a77d5cf14af112423f51719af6d41ba10f94f841f90a9ba35d7b0f16430f7964149e74cf languageName: node linkType: hard @@ -1792,9 +1792,9 @@ __metadata: linkType: hard "@cspell/dict-k8s@npm:^1.0.1": - version: 1.0.1 - resolution: "@cspell/dict-k8s@npm:1.0.1" - checksum: 90800857566c8d774523d26bbb962d2cdf2d5587162851a14ef85d6b38f70a9da9c61eac26287476371f680556862ef75d18c155a8dfb77de0c543e5e9390714 + version: 1.0.2 + resolution: "@cspell/dict-k8s@npm:1.0.2" + checksum: 4afd7806033b2bf71b17f4cf3fbc33449492bfb2a33a8301cc97b2e55583c07a4a07c288f50f445261c1de4b95494e495b8b982ca428d285393f7eb917bb5a61 languageName: node linkType: hard @@ -1834,9 +1834,9 @@ __metadata: linkType: hard "@cspell/dict-php@npm:^4.0.3": - version: 4.0.3 - resolution: "@cspell/dict-php@npm:4.0.3" - checksum: 98040e804e3ca67df965a3ea1840d68369d7b32cf6176a63605759e40a2325321f24723c4f24525a6cdf8d35bbc975ed6424a1a581775fb8cf7e55b5b2e60c89 + version: 4.0.4 + resolution: "@cspell/dict-php@npm:4.0.4" + checksum: ad835552eaf48bbd01c6c4cfb2fd56aeae027d4aabd2c8984129bf3e7e3dd66941c90d877a3f7cae1e7ab6e713089bd4ac49fb674e7cb8e5b741fe63d922ad71 languageName: node linkType: hard @@ -1892,9 +1892,9 @@ __metadata: linkType: hard "@cspell/dict-software-terms@npm:^3.3.6": - version: 3.3.6 - resolution: "@cspell/dict-software-terms@npm:3.3.6" - checksum: d0187d1ed6e33dbc25150e6f918757e57e94449bde85581ecc5cdaf08ea257a1d2368533dddcfd81139dffbab80beea0b7877d569f1b5aa9feba6e668b61e336 + version: 3.3.7 + resolution: "@cspell/dict-software-terms@npm:3.3.7" + checksum: 8a9870ddc10b4d2ac4caea1e9ff3627724150cc237e1ea6283edd0feda1ae827b56f8baac4d95870cf6dec2870917dd15805bff9c319f148c7d5c4a011773308 languageName: node linkType: hard @@ -3458,12 +3458,12 @@ __metadata: linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.19 - resolution: "@jridgewell/trace-mapping@npm:0.3.19" + version: 0.3.20 + resolution: "@jridgewell/trace-mapping@npm:0.3.20" dependencies: "@jridgewell/resolve-uri": ^3.1.0 "@jridgewell/sourcemap-codec": ^1.4.14 - checksum: 956a6f0f6fec060fb48c6bf1f5ec2064e13cd38c8be3873877d4b92b4a27ba58289a34071752671262a3e3c202abcc3fa2aac64d8447b4b0fa1ba3c9047f1c20 + checksum: cd1a7353135f385909468ff0cf20bdd37e59f2ee49a13a966dedf921943e222082c583ade2b579ff6cd0d8faafcb5461f253e1bf2a9f48fec439211fdbe788f5 languageName: node linkType: hard @@ -3819,130 +3819,130 @@ __metadata: languageName: node linkType: hard -"@peculiar/asn1-cms@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-cms@npm:2.3.6" +"@peculiar/asn1-cms@npm:^2.3.6, @peculiar/asn1-cms@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-cms@npm:2.3.8" dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 - "@peculiar/asn1-x509-attr": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-x509": ^2.3.8 + "@peculiar/asn1-x509-attr": ^2.3.8 asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: caeb7fcb594b7158ecb31f2e0e3a85a79fb9a51b9204b3fbad398706f56f20dfb6478f37fc163b544ebe3fd6ade7606a71826684df040ae6870fe7a4d8286d8c + tslib: ^2.6.2 + checksum: 5c5f833ad62bd5ba9391dc2f1fe80e49e5067688ee54c1a3ee37b659507049b652888c6e78f6e38ee8c73a1093dbe531dd47a8e4e2b09842bda737e8952001c1 languageName: node linkType: hard "@peculiar/asn1-csr@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-csr@npm:2.3.6" + version: 2.3.8 + resolution: "@peculiar/asn1-csr@npm:2.3.8" dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-x509": ^2.3.8 asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 4989edc765476b02995fbee88ab3860cf657f0e62756fa0ec44cd95158e6276f58c2c8656e5f8bd2f6934650999b781f2ec7b65ec537fc41a1aeb387b2e32883 + tslib: ^2.6.2 + checksum: d2bc7641f5e71e55ebb0bcfbbdb63e5168ac676e5ee56ee549c61f63414d9699600d1267fca223d1d6dad4fdb0a50be2a125bee37828a91b9b4c138a2b8295b7 languageName: node linkType: hard "@peculiar/asn1-ecc@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-ecc@npm:2.3.6" + version: 2.3.8 + resolution: "@peculiar/asn1-ecc@npm:2.3.8" dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-x509": ^2.3.8 asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 4b9a383dd443fbb9699d79550e03d1185781885768d8c7b780e26a959344286a53539824fa4a3103e9e8393a7d062fe6820bf79abafb340dc18ee5ce81b1d470 + tslib: ^2.6.2 + checksum: c7db2004a03f88c35fcd21957c8c15bfbf29c137a636bbc35d51dcebbc287ec253762e127d50197f0b5910600e3641a738c8ca756a15741fc09272272b0303f4 languageName: node linkType: hard -"@peculiar/asn1-pfx@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-pfx@npm:2.3.6" +"@peculiar/asn1-pfx@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-pfx@npm:2.3.8" dependencies: - "@peculiar/asn1-cms": ^2.3.6 - "@peculiar/asn1-pkcs8": ^2.3.6 - "@peculiar/asn1-rsa": ^2.3.6 - "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-cms": ^2.3.8 + "@peculiar/asn1-pkcs8": ^2.3.8 + "@peculiar/asn1-rsa": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.8 asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: faa3abc62e4ba4e67f6377178df62c24146920475e4ddfee024b1e14b208947d9b136c1bb1b82d7a3a28b76a544687529338f6143f92bdf324db23bd6aa0c11a + tslib: ^2.6.2 + checksum: a01dda82d077d52b343faafd14d58892813c4c43e37fb13e7531ab761d18fd453c50b5f0dbdffeb9310f0f502f97ab668d966bd899bae9604bd0aa43cd3874ea languageName: node linkType: hard -"@peculiar/asn1-pkcs8@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-pkcs8@npm:2.3.6" +"@peculiar/asn1-pkcs8@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-pkcs8@npm:2.3.8" dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-x509": ^2.3.8 asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 17b2ea5f2350ba74d58084f95f4d739d30413112e85268fd55b308307bd6a6f006e06accaf3e181103a61bfb7efd2c21be7f914b48954845bef109b1b0a4bc46 + tslib: ^2.6.2 + checksum: c1337df0097104b500f9428f839a699a9222125c9cdd34c288c95e52f5d0eec533d75ac45e41200ca8e328d135d3eda7638d2e7e91d1791419a04cd14b2d36a1 languageName: node linkType: hard "@peculiar/asn1-pkcs9@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-pkcs9@npm:2.3.6" - dependencies: - "@peculiar/asn1-cms": ^2.3.6 - "@peculiar/asn1-pfx": ^2.3.6 - "@peculiar/asn1-pkcs8": ^2.3.6 - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 - "@peculiar/asn1-x509-attr": ^2.3.6 + version: 2.3.8 + resolution: "@peculiar/asn1-pkcs9@npm:2.3.8" + dependencies: + "@peculiar/asn1-cms": ^2.3.8 + "@peculiar/asn1-pfx": ^2.3.8 + "@peculiar/asn1-pkcs8": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-x509": ^2.3.8 + "@peculiar/asn1-x509-attr": ^2.3.8 asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 3b8ca25b46ce9afc51b8cc72afab6fd32bb1dbf501eef68f997b35591c16c321384224fe478fd03fa644f3d540d719568767c7bd8bd1f617a5d9f8d318be0d2c + tslib: ^2.6.2 + checksum: 22ee32733a5abb14039c858093f4e79c989ed32c5ece746dd638afa23428f34a0a4c207126b75c2ae18198a20083fbc08dee9309771569eb8ef3734a37ff950f languageName: node linkType: hard -"@peculiar/asn1-rsa@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-rsa@npm:2.3.6" +"@peculiar/asn1-rsa@npm:^2.3.6, @peculiar/asn1-rsa@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-rsa@npm:2.3.8" dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-x509": ^2.3.8 asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 120dda00af6e1b1e5568826ac8211d60d36b3cbe91b086cae6b5ba132f1670ba129284068110305b237550e402c0beeda45fd713d640f97ad11d8cf6c925b31a + tslib: ^2.6.2 + checksum: d9bf0f143686b475d3cc9f9b7d948826dc8c8764bc865697705351278541f0bf31a8f788ec8ff8bf6e4150b04aa65b20853bda45d77e4abbac717d7019e6fd56 languageName: node linkType: hard -"@peculiar/asn1-schema@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-schema@npm:2.3.6" +"@peculiar/asn1-schema@npm:^2.3.6, @peculiar/asn1-schema@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-schema@npm:2.3.8" dependencies: asn1js: ^3.0.5 - pvtsutils: ^1.3.2 - tslib: ^2.4.0 - checksum: fc09387c6e3dea07fca21b54ea8c71ce3ec0f8c92377237e51aef729f0c2df92781aa7a18a546a6fe809519faeaa222df576ec21a35c6095037a78677204a55b + pvtsutils: ^1.3.5 + tslib: ^2.6.2 + checksum: 1f4dd421f1411df8bc52bca12b1cef710434c13ff0a8b5746ede42b10d62b5ad06a3925c4a6db53102aaf1e589947539a6955fa8554a9b8ebb1ffa38b0155a24 languageName: node linkType: hard -"@peculiar/asn1-x509-attr@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-x509-attr@npm:2.3.6" +"@peculiar/asn1-x509-attr@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-x509-attr@npm:2.3.8" dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-x509": ^2.3.8 asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 100a11aad2168a99b23d576869d27d569c34191d14311cf6fcbea126b737bcb42f23401ead45c2bc55074d164712c65e5541be23c0e5f92bf19005957a16a872 + tslib: ^2.6.2 + checksum: 07a64f1cf50af87f510aa857794e9f9334f36bd1682df3ece7bb4935575bca36111e0ba263e8559a738ae77116bc3ee576c2d4d713b2c720fa31a809452b2f4e languageName: node linkType: hard -"@peculiar/asn1-x509@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-x509@npm:2.3.6" +"@peculiar/asn1-x509@npm:^2.3.6, @peculiar/asn1-x509@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-x509@npm:2.3.8" dependencies: - "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.8 asn1js: ^3.0.5 - ipaddr.js: ^2.0.1 - pvtsutils: ^1.3.2 - tslib: ^2.4.0 - checksum: 6e946bd44091fb88f617c3bbf54ed1113ed2b249675dd36004513444f409160f6d446bdb82d3cb6041b4d15c68fa4cf40ad452891a5f85dda2af89ee5b0590d2 + ipaddr.js: ^2.1.0 + pvtsutils: ^1.3.5 + tslib: ^2.6.2 + checksum: 23856e5d024298447afca55bd68d19a7440c0ae076437aee5ced26a0fa2e4efa3e0e4a354fa6ee9968d62ac21ee1c2186fc427942bacfc824d3a3a4d2e80d14b languageName: node linkType: hard @@ -4277,75 +4277,75 @@ __metadata: linkType: hard "@types/aria-query@npm:^5.0.1": - version: 5.0.2 - resolution: "@types/aria-query@npm:5.0.2" - checksum: 19394fea016e72da39dd5ef1cf1643e3252b7ee99d8f0b3a8740d3b72f874443fc1e00a41935b36fdfaf92cd735d4ae10dc5d6ab8f1192527d4c0471bb8ff8e4 + version: 5.0.3 + resolution: "@types/aria-query@npm:5.0.3" + checksum: c06f899fdf1d761cd444f8f359d771f54cdf60bf36495720f1dcdddbf0429d9a9175d8c32f55e74975479dc2ad30e9a7d30f3775cd532aeb52fa2f22dd2d7347 languageName: node linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.20.2 - resolution: "@types/babel__core@npm:7.20.2" + version: 7.20.3 + resolution: "@types/babel__core@npm:7.20.3" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 564fbaa8ff1305d50807ada0ec227c3e7528bebb2f8fe6b2ed88db0735a31511a74ad18729679c43eeed8025ed29d408f53059289719e95ab1352ed559a100bd + checksum: 8d14acc14d99b4b8bf36c00da368f6d597bd9ae3344aa7048f83f0f701b0463fa7c7bf2e50c3e4382fdbcfd1e4187b3452a0f0888b0f3ae8fad975591f7bdb94 languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.5 - resolution: "@types/babel__generator@npm:7.6.5" + version: 7.6.6 + resolution: "@types/babel__generator@npm:7.6.6" dependencies: "@babel/types": ^7.0.0 - checksum: c7459f5025c4c800eaf58f4db3b24e9d736331fe7df40961d9bc49f31b46e2a3be83dc9276e8688f10a5ed752ae153ad5f1bdd45e2245bac95273730b9115ec2 + checksum: 36e8838c7e16eff611447579e840526946a8b14c794c82486cee2a5ad2257aa6cad746d8ecff3144e3721178837d2c25d0a435d384391eb67846b933c062b075 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.2 - resolution: "@types/babel__template@npm:7.4.2" + version: 7.4.3 + resolution: "@types/babel__template@npm:7.4.3" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: 0fe977b45a3269336c77f3ae4641a6c48abf0fa35ab1a23fb571690786af02d6cec08255a43499b0b25c5633800f7ae882ace450cce905e3060fa9e6995047ae + checksum: 55deb814c94d1bfb78c4d1de1de1b73eb17c79374602f3bd8aa14e356a77fca64d01646cebe25ec9b307f53a047acc6d53ad6e931019d0726422f5f911e945aa languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.2 - resolution: "@types/babel__traverse@npm:7.20.2" + version: 7.20.3 + resolution: "@types/babel__traverse@npm:7.20.3" dependencies: "@babel/types": ^7.20.7 - checksum: 981340286479524436348d32373eaa3bf993c635cbf70307b4b69463eee83406a959ac4844f683911e0db8ab8d9f0025ab630dc7a8c170fee9ee74144c2a528f + checksum: 6d0f70d8972647c9b78b51a54f0b6481c4f23f0bb2699ad276e6070678bd121fede99e8e2c8c3e409d2f31a0bf83ae511abc6fefb91f0630c8d728a3a9136790 languageName: node linkType: hard "@types/cheerio@npm:*": - version: 0.22.32 - resolution: "@types/cheerio@npm:0.22.32" + version: 0.22.33 + resolution: "@types/cheerio@npm:0.22.33" dependencies: "@types/node": "*" - checksum: 5a4885e03889c19638f0086d53e653d36a9eb097d0a08ec69dddf65ef685cd7118989c4fb28d5b28746502efc54bc57a3f751ee2a9aab3cfd32991bf5b51df10 + checksum: da4745b4d431b79c0ea046ae831a65f948d889bac5c7fe8b50b38055401e7c736e97c0f499e6506941b3ed4d80e4c5b8736b34fc7ecdcae48be7353eb24230be languageName: node linkType: hard "@types/color-convert@npm:*": - version: 2.0.1 - resolution: "@types/color-convert@npm:2.0.1" + version: 2.0.2 + resolution: "@types/color-convert@npm:2.0.2" dependencies: "@types/color-name": "*" - checksum: 52843d9206661d80957d15330d71f2eb8ebda4aaba72236d2d200e588ac806005a25e25f96393d81c9e61632a8316070d1136d2ff74f0a9350cf6d97291a2550 + checksum: fdfefcff76088cc1a5229a7c03886e64802b99a0f0d7022152feddcc7460781e8061c31e27bd355d2531f2dc3977de3081e8e7f0880dc1f4002e46e7e8e57625 languageName: node linkType: hard "@types/color-name@npm:*": - version: 1.1.1 - resolution: "@types/color-name@npm:1.1.1" - checksum: b71fcad728cc68abcba1d405742134410c8f8eb3c2ef18113b047afca158ad23a4f2c229bcf71a38f4a818dead375c45b20db121d0e69259c2d81e97a740daa6 + version: 1.1.2 + resolution: "@types/color-name@npm:1.1.2" + checksum: 4fa24be926870ddab3ea76ebfd4d5f23aa53f79b029050d1b01bb9f52a92ab9eb5c4e1fb61792a039355ef5ff95f93a7a4f067bfc652f1b576c64e2761670cc7 languageName: node linkType: hard @@ -4375,29 +4375,29 @@ __metadata: linkType: hard "@types/eslint-scope@npm:^3.7.3": - version: 3.7.5 - resolution: "@types/eslint-scope@npm:3.7.5" + version: 3.7.6 + resolution: "@types/eslint-scope@npm:3.7.6" dependencies: "@types/eslint": "*" "@types/estree": "*" - checksum: e91ce335c3791c2cf6084caa0073f90d5b7ae3fcf27785ade8422b7d896159fa14a5a3f1efd31ef03e9ebc1ff04983288280dfe8c9a5579a958539f59df8cc9f + checksum: a2339e312949ae7f96bca52cde89a3d2218d4505746a78a0ba1aa56573e43b3d52ce9662b86ab785663a62fa8f2bd2fb61b990398785b40f2efc91be3fd246f8 languageName: node linkType: hard "@types/eslint@npm:*, @types/eslint@npm:^8": - version: 8.44.4 - resolution: "@types/eslint@npm:8.44.4" + version: 8.44.5 + resolution: "@types/eslint@npm:8.44.5" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: 15bafdaba800e2995f38d3a2a929d8e9303035315e8d3535523a21cd719b6769a45884afa955f0b845ffa545a4150429b0178e2c44feeedf59ebb285eeae9825 + checksum: 0fba768ecffbd9eccf07207979ffa82e748bfb67203be107d8fb6c9b1215054d57ca12062577878e73353ef8feb43591951c2a750452fde639858f501e03304a languageName: node linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.2 - resolution: "@types/estree@npm:1.0.2" - checksum: aeedb1b2fe20cbe06f44b99b562bf9703e360bfcdf5bb3d61d248182ee1dd63500f2474e12f098ffe1f5ac3202b43b3e18ec99902d9328d5374f5512fa077e45 + version: 1.0.3 + resolution: "@types/estree@npm:1.0.3" + checksum: f21a5448995f8aa61ab2248d10590d275666b11d26c27fe75b3c23420b07b469d5ce820deefcf7399671faa09d56eb7ce012322948e484d94686fda154be5221 languageName: node linkType: hard @@ -4426,21 +4426,21 @@ __metadata: linkType: hard "@types/graceful-fs@npm:^4.1.3": - version: 4.1.7 - resolution: "@types/graceful-fs@npm:4.1.7" + version: 4.1.8 + resolution: "@types/graceful-fs@npm:4.1.8" dependencies: "@types/node": "*" - checksum: 8b97e208f85c9efd02a6003a582c77646dd87be0af13aec9419a720771560a8a87a979eaca73ae193d7c73127f34d0a958403a9b5d6246e450289fd8c79adf09 + checksum: 6e1ee9c119e075134696171b680fee7b627f3e077ec5e5ad9ba9359f1688a84fa35ea6804f96922c43ca30ab8d4ca9531a526b64f57fa13e1d721bf741884829 languageName: node linkType: hard "@types/hoist-non-react-statics@npm:^3.3.0, @types/hoist-non-react-statics@npm:^3.3.1": - version: 3.3.3 - resolution: "@types/hoist-non-react-statics@npm:3.3.3" + version: 3.3.4 + resolution: "@types/hoist-non-react-statics@npm:3.3.4" dependencies: "@types/react": "*" hoist-non-react-statics: ^3.3.0 - checksum: 107ac20ab36acdc83fb6bfca901e6f4f11307a0a307099c31ecf2a9875f8abffd731a2e1ee793162307e8aaee48fe9fd8d4e034fce88d5da480bc4178a3fc8d7 + checksum: dee430941a9ea16b7f665ecafa9b134066a49d13ae497fc051cf5d41b3aead394ab1a8179c3c98c9a3584f80aed16fab82dd7979c7dcddfbb5f74a132575d362 languageName: node linkType: hard @@ -4452,27 +4452,27 @@ __metadata: linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.4 - resolution: "@types/istanbul-lib-coverage@npm:2.0.4" - checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 + version: 2.0.5 + resolution: "@types/istanbul-lib-coverage@npm:2.0.5" + checksum: 978eaf327f9a238eb1e2828b93b4b48e288ffb88c4be81330c74477ab8b93fac41a8784260d72bdd9995535d70608f738199b6364fd3344842e924a3ec3301e7 languageName: node linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.1 - resolution: "@types/istanbul-lib-report@npm:3.0.1" + version: 3.0.2 + resolution: "@types/istanbul-lib-report@npm:3.0.2" dependencies: "@types/istanbul-lib-coverage": "*" - checksum: cfc66de48577bb7b2636a6afded7056483693c3ea70916276518cdfaa0d4b51bf564ded88fb13e75716665c3af3d4d54e9c2de042c0219dcabad7e81c398688b + checksum: 549e44e14a4dc98164ce477ca8650d33898e5c74a6bb8079cbec7f811567dcb805a3bfdbf83ce53222eaecc37ae53aa7f25bda1a7d8347449155c8f0b4f30232 languageName: node linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.2 - resolution: "@types/istanbul-reports@npm:3.0.2" + version: 3.0.3 + resolution: "@types/istanbul-reports@npm:3.0.3" dependencies: "@types/istanbul-lib-report": "*" - checksum: f52028d6fe4d28f0085dd7ed66ccfa6af632579e9a4091b90928ffef93d4dbec0bacd49e9caf1b939d05df9eafc5ac1f5939413cdf8ac59fbe4b29602d4d0939 + checksum: 21d007be7dd09165ed24f5cc9947319ad435fc3b3e568f3eec0a42ee80fd2adccdeb929bc1311efb2cf7597835638cde865d3630d8b4c15d1390c9527bcad1a9 languageName: node linkType: hard @@ -4496,11 +4496,11 @@ __metadata: linkType: hard "@types/jquery@npm:^3": - version: 3.5.22 - resolution: "@types/jquery@npm:3.5.22" + version: 3.5.23 + resolution: "@types/jquery@npm:3.5.23" dependencies: "@types/sizzle": "*" - checksum: b81c95e27bb30686c1ad5d3f414781243d0cbb468b91d5584dedd3d3ca07ac99796d876e257a7246d6d9b69916bbb0cd0508142ab9f88848605c6d431144d729 + checksum: 9231af0b80efe63257d898d41c4ee03bbe2152654e0d4709a9fd27eba255622f837315ad7529865ad9796312812dacfa4fc2d11dd4559ff13585c642ffd989b4 languageName: node linkType: hard @@ -4534,9 +4534,9 @@ __metadata: linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.13 - resolution: "@types/json-schema@npm:7.0.13" - checksum: 345df21a678fa72fb389f35f33de77833d09d4a142bb2bcb27c18690efa4cf70fc2876e43843cefb3fbdb9fcb12cd3e970a90936df30f53bbee899865ff605ab + version: 7.0.14 + resolution: "@types/json-schema@npm:7.0.14" + checksum: 4b3dd99616c7c808201c56f6c7f6552eb67b5c0c753ab3fa03a6cb549aae950da537e9558e53fa65fba23d1be624a1e4e8d20c15027efbe41e03ca56f2b04fb0 languageName: node linkType: hard @@ -4573,13 +4573,20 @@ __metadata: linkType: hard "@types/libsodium-wrappers@npm:*, @types/libsodium-wrappers@npm:^0": - version: 0.7.11 - resolution: "@types/libsodium-wrappers@npm:0.7.11" - checksum: e3c3acdfc178a466a04d81c030ba1b748abc9335b1d66421125eb55b32cbaf6a9076e32a98744fcb84ba2fa2af342203ff29054262dcc465c12c4feddddb64ac + version: 0.7.12 + resolution: "@types/libsodium-wrappers@npm:0.7.12" + checksum: 8f25b4ffe6b60c36f3c59b3dea2e952b8790c9b8375ee5235e6d294c1519a578b7882d773f168005eb0f3fdb4f11e06ba27b30b89d2c3b8be3f985c7eedd0491 languageName: node linkType: hard -"@types/linkify-it@npm:*, @types/linkify-it@npm:3.0.3": +"@types/linkify-it@npm:*": + version: 3.0.4 + resolution: "@types/linkify-it@npm:3.0.4" + checksum: cd873857faf77231811a5ee49aadffdbdd7c6309b92ca004cb28320993858d2e30cad7b343c6db928763ed0f766c6ed140e0f995536e488a1447a527b6f8127f + languageName: node + linkType: hard + +"@types/linkify-it@npm:3.0.3": version: 3.0.3 resolution: "@types/linkify-it@npm:3.0.3" checksum: a734becc4e7476833b0e6951ec133c006a34809639c722d3e28b7cf88f5f6ccbb433f195788be5e56209b1e9e6e0778879291dd2db401acee3bb585c44dcc329 @@ -4587,11 +4594,11 @@ __metadata: linkType: hard "@types/loadable__component@npm:^5": - version: 5.13.5 - resolution: "@types/loadable__component@npm:5.13.5" + version: 5.13.6 + resolution: "@types/loadable__component@npm:5.13.6" dependencies: "@types/react": "*" - checksum: 9ff5c96931bbc1eeb7ba776890ca576a3a96c8f236538ce29380d6d4b28643d14a50bac5524be0859ade3620e47ec41a68af1d9e17c2cec6d3271424b144ac21 + checksum: 2167af14ac6f0d8be45baeb5a7a4754d2eb513ff65696865d719fb05701272f9d40d6db512c563ee91289189faa86c3b46a91d2f5ac65f007f3e1e59c1ff83da languageName: node linkType: hard @@ -4616,25 +4623,25 @@ __metadata: linkType: hard "@types/mdurl@npm:*": - version: 1.0.3 - resolution: "@types/mdurl@npm:1.0.3" - checksum: 5bbed4f0eb9f60040fa26be77aa2158ca468b6423876cec0d2043e7f8298e83b8e5b95fb66056327b02d747c4d376aed16c11ff3fdc4cb3dca327a6931a71f18 + version: 1.0.4 + resolution: "@types/mdurl@npm:1.0.4" + checksum: b55f2ea3d6711187cb36a2887287413da6428b28b1f26a824245ddc6485907725f5364a9f9f29709bb366c69ce8356ffd69140ed37eda6a224c1ab18bd0f0338 languageName: node linkType: hard "@types/minimist@npm:^1.2.2": - version: 1.2.3 - resolution: "@types/minimist@npm:1.2.3" - checksum: 666ea4f8c39dcbdfbc3171fe6b3902157c845cc9cb8cee33c10deb706cda5e0cc80f98ace2d6d29f6774b0dc21180c96cd73c592a1cbefe04777247c7ba0e84b + version: 1.2.4 + resolution: "@types/minimist@npm:1.2.4" + checksum: d7912f9a466312cbc1333800272b9208178140ef4da2ccec3fa82231c8e67f57f84275b3c19109c4f68f1b7b057baeacc6b80af1de14b58b46e6b54233e44c6a languageName: node linkType: hard "@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^20.8.6": - version: 20.8.6 - resolution: "@types/node@npm:20.8.6" + version: 20.8.7 + resolution: "@types/node@npm:20.8.7" dependencies: undici-types: ~5.25.1 - checksum: ccfb7ac482c5a96edeb239893c5c099f5257fcc2ed9ae62fefdfbc782b79e16dbc2af9a85b379665237bf759904b44ca2be68e75d239e0297882aad42f61905c + checksum: 2173c0c03daefcb60c03a61b1371b28c8fe412e7a40dc6646458b809d14a85fbc7aeb369d957d57f0aaaafd99964e77436f29b3b579232d8f2b20c58abbd1d25 languageName: node linkType: hard @@ -4660,9 +4667,9 @@ __metadata: linkType: hard "@types/normalize-package-data@npm:^2.4.0": - version: 2.4.2 - resolution: "@types/normalize-package-data@npm:2.4.2" - checksum: 2132e4054711e6118de967ae3a34f8c564e58d71fbcab678ec2c34c14659f638a86c35a0fd45237ea35a4a03079cf0a485e3f97736ffba5ed647bfb5da086b03 + version: 2.4.3 + resolution: "@types/normalize-package-data@npm:2.4.3" + checksum: 6f60e157c0fc39b80d80eb9043cdd78e4090f25c5264ef0317f5701648a5712fd453d364569675a19aef44a18c6f14f6e4809bdc0b97a46a0ed9ce4a320bbe42 languageName: node linkType: hard @@ -4676,9 +4683,9 @@ __metadata: linkType: hard "@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b + version: 4.0.1 + resolution: "@types/parse-json@npm:4.0.1" + checksum: 467c5fb95f4b03ea10fac007b4de7c9db103e8fce87b039ba5b37f17b374911833724624c311f3591435e4c42e376cab219400af1aef1dc314d5bd495d22fde7 languageName: node linkType: hard @@ -4706,9 +4713,9 @@ __metadata: linkType: hard "@types/prop-types@npm:*": - version: 15.7.8 - resolution: "@types/prop-types@npm:15.7.8" - checksum: 61dfad79da8b1081c450bab83b77935df487ae1cdd4660ec7df6be8e74725c15fa45cf486ce057addc956ca4ae78300b97091e2a25061133d1b9a1440bc896ae + version: 15.7.9 + resolution: "@types/prop-types@npm:15.7.9" + checksum: c7591d3ff7593e243908a07e1d3e2bb6e8879008af5800d8378115a90d0fdf669a1cae72a6d7f69e59c4fa7bb4c8ed61f6ebc1c520fe110c6f2b03ac02414072 languageName: node linkType: hard @@ -4733,7 +4740,7 @@ __metadata: languageName: node linkType: hard -"@types/react-transition-group@npm:4.4.7, @types/react-transition-group@npm:^4.4.0": +"@types/react-transition-group@npm:4.4.7": version: 4.4.7 resolution: "@types/react-transition-group@npm:4.4.7" dependencies: @@ -4742,7 +4749,27 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:18.2.28": +"@types/react-transition-group@npm:^4.4.0": + version: 4.4.8 + resolution: "@types/react-transition-group@npm:4.4.8" + dependencies: + "@types/react": "*" + checksum: ad7ba2bce97631fda9d89b4ed9772489bd050fec3ccd7563041b206dbe219d37d22e0d7731b1f90f56e89daf40e69ba16beba8066c42165bf8a584533feb6a2c + languageName: node + linkType: hard + +"@types/react@npm:*, @types/react@npm:16 || 17 || 18": + version: 18.2.29 + resolution: "@types/react@npm:18.2.29" + dependencies: + "@types/prop-types": "*" + "@types/scheduler": "*" + csstype: ^3.0.2 + checksum: 3d09ac61a683fa976512a28ac175b9d823f0368adc5fb2abf53f64ab030e8ad866a201a8029f92ff48246c8e326f7517ebe165f976ecb412627c65c6f9a7c9d3 + languageName: node + linkType: hard + +"@types/react@npm:18.2.28": version: 18.2.28 resolution: "@types/react@npm:18.2.28" dependencies: @@ -4779,9 +4806,9 @@ __metadata: linkType: hard "@types/seedrandom@npm:^3": - version: 3.0.6 - resolution: "@types/seedrandom@npm:3.0.6" - checksum: 6d50b4ec8db13af2435886659323fa2fc47945f368193ca61eb5e3af9fe4d14db2c862ffbc887769f482e5dacb4b9456c0827507e5baf04ea5696d866e56ac51 + version: 3.0.7 + resolution: "@types/seedrandom@npm:3.0.7" + checksum: 367e7eae95abb698f29bdcef9270a267d1ce13bf5b131951e4df08c4f2d7ff51d02c110245c8f39d2ec268b1582a488abeb12b23ba55fac1738df9c735860912 languageName: node linkType: hard @@ -4802,16 +4829,16 @@ __metadata: linkType: hard "@types/sinonjs__fake-timers@npm:*": - version: 8.1.3 - resolution: "@types/sinonjs__fake-timers@npm:8.1.3" - checksum: d4bac3c1b8d544ac7a57edac3fbf402b055d6401b2f8504fc83908aa40682c71c8ba260c52db29c7a6e72932751c653a0f5185bdb18530534ac50c86425b5cb8 + version: 8.1.4 + resolution: "@types/sinonjs__fake-timers@npm:8.1.4" + checksum: f53fcb5cc6c77e064f8bf0772ddd82d5bbc8264167182cdb7209600d3580e09e71ca313925e6e8a3de0faad10518a8f803db8555762bca5a100cf5bcb5e13170 languageName: node linkType: hard "@types/sizzle@npm:*": - version: 2.3.4 - resolution: "@types/sizzle@npm:2.3.4" - checksum: cb3b0b2a1b46068c257762d616f3d0d91c85e35e47a6d5101d69d530b7727c564a17868877dd90b5079363496b35698cf2709a7c0bbc0a584eaf91a0e044ebaa + version: 2.3.5 + resolution: "@types/sizzle@npm:2.3.5" + checksum: 1c2609a9bed3a30d8142ac7a2a63aa6dfe7bec28542f5bfe51407a2a3684b103cc3f5ef1eda781037c76e508501734d16fd6a8c1142dda66acb2d5457fb83757 languageName: node linkType: hard @@ -4823,9 +4850,9 @@ __metadata: linkType: hard "@types/stack-utils@npm:^2.0.0": - version: 2.0.1 - resolution: "@types/stack-utils@npm:2.0.1" - checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 + version: 2.0.2 + resolution: "@types/stack-utils@npm:2.0.2" + checksum: 777cc7ac0c1000c5a07561013bcf7bd8477a3d55f55f376ee2f0c586331f7b999f57788140cfbdb65f6d7d97c0c41fe8fe6c778fd3ed71859c9b681ea76fc621 languageName: node linkType: hard @@ -4881,14 +4908,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.0.0": - version: 6.7.5 - resolution: "@typescript-eslint/eslint-plugin@npm:6.7.5" + version: 6.8.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.8.0" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.7.5 - "@typescript-eslint/type-utils": 6.7.5 - "@typescript-eslint/utils": 6.7.5 - "@typescript-eslint/visitor-keys": 6.7.5 + "@typescript-eslint/scope-manager": 6.8.0 + "@typescript-eslint/type-utils": 6.8.0 + "@typescript-eslint/utils": 6.8.0 + "@typescript-eslint/visitor-keys": 6.8.0 debug: ^4.3.4 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -4901,25 +4928,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: c37edf5a703db4ff9227d67c2d2cf817e65c9afc94cc0e650fa3d2b05ac55201ef887ce9dadb9ca13779f4025bf4367e132b013e3559e777006a2332079bb180 + checksum: c36ccf606ebcaff8263c4ffa3b4cda58c6f93474b9eea9906e51be2fef8596977a245cc13770b21c6bfd38ccf45a3cf3613d5f4499429f62ec80afe15ae345bd languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.0.0": - version: 6.7.5 - resolution: "@typescript-eslint/parser@npm:6.7.5" + version: 6.8.0 + resolution: "@typescript-eslint/parser@npm:6.8.0" dependencies: - "@typescript-eslint/scope-manager": 6.7.5 - "@typescript-eslint/types": 6.7.5 - "@typescript-eslint/typescript-estree": 6.7.5 - "@typescript-eslint/visitor-keys": 6.7.5 + "@typescript-eslint/scope-manager": 6.8.0 + "@typescript-eslint/types": 6.8.0 + "@typescript-eslint/typescript-estree": 6.8.0 + "@typescript-eslint/visitor-keys": 6.8.0 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 63f988c1c87697bd20487933be952b97f7a5f2a9977f505af671c7d49367fc01ca508817576646caa937c15cc0a0ef1e86adff9111eb19df8b489e7436d10620 + checksum: 10d7a3ae383fee5a5cba9541c72e23d6ab01cca6b414a62b44dacb5ebc15c80b80aa6c105b6469d3795f2f8514ae2499c069cd2d9dcac61f3db9ef6c7a75e080 languageName: node linkType: hard @@ -4933,22 +4960,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.7.5": - version: 6.7.5 - resolution: "@typescript-eslint/scope-manager@npm:6.7.5" +"@typescript-eslint/scope-manager@npm:6.8.0": + version: 6.8.0 + resolution: "@typescript-eslint/scope-manager@npm:6.8.0" dependencies: - "@typescript-eslint/types": 6.7.5 - "@typescript-eslint/visitor-keys": 6.7.5 - checksum: f21858ed78f81ab2d9879139f69657fda2a7b901078f79df64d1262d80f84ef66c56525ed0bb5e393fa5ca5474ad97f2225b7f713977c2d0f79cda31b2744af9 + "@typescript-eslint/types": 6.8.0 + "@typescript-eslint/visitor-keys": 6.8.0 + checksum: b6cf2803531d1c14b56c30fd3cd807b80e17fe48d0da8e5aa9ae50915407ed732c7e2a7ac8030b7cf8ed07b8e481a1138d76bf05b727837a0e016280c2f6873b languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.7.5": - version: 6.7.5 - resolution: "@typescript-eslint/type-utils@npm:6.7.5" +"@typescript-eslint/type-utils@npm:6.8.0": + version: 6.8.0 + resolution: "@typescript-eslint/type-utils@npm:6.8.0" dependencies: - "@typescript-eslint/typescript-estree": 6.7.5 - "@typescript-eslint/utils": 6.7.5 + "@typescript-eslint/typescript-estree": 6.8.0 + "@typescript-eslint/utils": 6.8.0 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -4956,7 +4983,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 8023d8ddcfbf4a0411b192016711068e9e6787c5811aee3a25ac40025ade0d063a1a3d7b38469e1a534bb31fa9dbeec08ab53b7a6d7b3128358294ac5b219d9a + checksum: 9b7d56904dc1a5719ef79eb1b7989d6fad10c71fb07ec3e66cf69b8c8dc5383d644ab122d4701bc4960fb7c99cc08aee4e645db3e4675d488d5779197e15dfda languageName: node linkType: hard @@ -4967,10 +4994,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.7.5": - version: 6.7.5 - resolution: "@typescript-eslint/types@npm:6.7.5" - checksum: f21e5726b60f13feb3a920c92515fbc1205ba0e9bba9959b2e42c02c282a0ab4fb0e5ae84f3807b9b1cf95036027e9033d92a911fa88e6c243a87621d8dd7a01 +"@typescript-eslint/types@npm:6.8.0": + version: 6.8.0 + resolution: "@typescript-eslint/types@npm:6.8.0" + checksum: 1fcd85f6d575116d51c6ee757ed37610ae5e7e4296a29f93c9c6949f6cd16d24550eb7fc5bae7a43119cc08e13836f69a7ae7c54ebba6c95aef96b34d3bfb7f7 languageName: node linkType: hard @@ -4992,12 +5019,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.7.5": - version: 6.7.5 - resolution: "@typescript-eslint/typescript-estree@npm:6.7.5" +"@typescript-eslint/typescript-estree@npm:6.8.0": + version: 6.8.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.8.0" dependencies: - "@typescript-eslint/types": 6.7.5 - "@typescript-eslint/visitor-keys": 6.7.5 + "@typescript-eslint/types": 6.8.0 + "@typescript-eslint/visitor-keys": 6.8.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -5006,24 +5033,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 17685e8321edce1d1ec4278d84e63c0f41ccb19e9308f21c37450943ad0c33328755ac52b966e7855af17e01d22bc83d1fcda79c279fabe7d3460c8f315a7265 + checksum: 388db7f33ef1bc0e7b960c0bce9c744c2e32c66c7ab8dfae73d8533958202ad6f31663b0010f79c45b5ff93159c67f45b00693d73b9da2472b17156dfd26b4a8 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.7.5": - version: 6.7.5 - resolution: "@typescript-eslint/utils@npm:6.7.5" +"@typescript-eslint/utils@npm:6.8.0": + version: 6.8.0 + resolution: "@typescript-eslint/utils@npm:6.8.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 "@types/json-schema": ^7.0.12 "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.7.5 - "@typescript-eslint/types": 6.7.5 - "@typescript-eslint/typescript-estree": 6.7.5 + "@typescript-eslint/scope-manager": 6.8.0 + "@typescript-eslint/types": 6.8.0 + "@typescript-eslint/typescript-estree": 6.8.0 semver: ^7.5.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: f365c654241f927e7784640079627d60a296aa3d575552b07594a69cfc419832eb5fa4adc87acb1988bea9741ae9cc4a5277dab168990310caef5de125255752 + checksum: 6d9f90db504502a9aa10e834830c3ffa25483757414670acc6141a3ebef9171a57688a3a179febf35a0e1e0b322f37228d9537bf1b279f1af7fc97888b873bc3 languageName: node linkType: hard @@ -5055,13 +5082,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.7.5": - version: 6.7.5 - resolution: "@typescript-eslint/visitor-keys@npm:6.7.5" +"@typescript-eslint/visitor-keys@npm:6.8.0": + version: 6.8.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.8.0" dependencies: - "@typescript-eslint/types": 6.7.5 + "@typescript-eslint/types": 6.8.0 eslint-visitor-keys: ^3.4.1 - checksum: 2df996742f63d89fa339b0e8ff3a3a289d36b3f584f7538a7626bed3869e9ae27f8f56ab31748519d25a63de2ae22a43dd8413610b00436ff342b0a17eb85289 + checksum: 710d9067b85d7715a400ae625c083c41733abb891d7b35108de083913980f9642e79d27689599fa39915f0fecae16dbfc30367007fccc838ccd917943660de22 languageName: node linkType: hard @@ -6714,9 +6741,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001549 - resolution: "caniuse-lite@npm:1.0.30001549" - checksum: 7f2abeedc8cf8b92cc0613855d71b995ce436068c0bcdd798c5af7d297ccf9f52496b00181beda42d82d25079dd4b6e389c67486156d40d8854e5707a25cb054 + version: 1.0.30001550 + resolution: "caniuse-lite@npm:1.0.30001550" + checksum: b48d5a0bd25d634d61f410e0130c5e6c328724285c3c6065644eb41f86a227f5db0eb77da25d0fe3c6c9b04bbd040c9c164bf8dc50dd75cb30fc578aaae562f1 languageName: node linkType: hard @@ -7542,7 +7569,7 @@ __metadata: languageName: node linkType: hard -"css-functions-list@npm:^3.2.0": +"css-functions-list@npm:^3.2.1": version: 3.2.1 resolution: "css-functions-list@npm:3.2.1" checksum: 57d7deb3b05e84d95b88ba9b3244cf60d33b40652b3357f084c805b24a9febda5987ade44ef25a56be41e73249a7dcc157abd704d8a0e998b2c1c2e2d5de6461 @@ -8259,9 +8286,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.535": - version: 1.4.554 - resolution: "electron-to-chromium@npm:1.4.554" - checksum: cbac43c50b43777327f4a7bf149ee3088c1da8b91bbcd80f78d2cc77bc52763f6d0941574499239d9caefd3430d3093f865e5f1093371418f7d6b70301eeae9b + version: 1.4.557 + resolution: "electron-to-chromium@npm:1.4.557" + checksum: 16f24e8d648489f0bfe7c2ffd4ada282bd68465862779f1f2e0afff5357e96536b075731c4b721dd27e2eae72008dc66d79e7bce6315e1c8f02947d41d988b78 languageName: node linkType: hard @@ -9328,7 +9355,7 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^7.0.1": +"file-entry-cache@npm:^7.0.0, file-entry-cache@npm:^7.0.1": version: 7.0.1 resolution: "file-entry-cache@npm:7.0.1" dependencies: @@ -10385,11 +10412,11 @@ __metadata: linkType: hard "i18next@npm:*": - version: 23.5.1 - resolution: "i18next@npm:23.5.1" + version: 23.6.0 + resolution: "i18next@npm:23.6.0" dependencies: "@babel/runtime": ^7.22.5 - checksum: 4be043bd72287bfae9777a3252b9458d2e3f5e9a97ea62cf434e6e3767b45df4365d8780d0dd14efd4e9da5eb0f90534510b138f1372d1cb9012000a69bbedaf + checksum: 0898be75ce56a5901eb9763c8cd941a23cfc24fbe7b32ba0479c08f58c40c1c88c95596430154a6250087ec76d150335144b2cb637ebaa443490b9af7b6e275e languageName: node linkType: hard @@ -10596,7 +10623,7 @@ __metadata: languageName: node linkType: hard -"ipaddr.js@npm:^2.0.1": +"ipaddr.js@npm:^2.1.0": version: 2.1.0 resolution: "ipaddr.js@npm:2.1.0" checksum: 807a054f2bd720c4d97ee479d6c9e865c233bea21f139fb8dabd5a35c4226d2621c42e07b4ad94ff3f82add926a607d8d9d37c625ad0319f0e08f9f2bd1968e2 @@ -12201,10 +12228,10 @@ __metadata: languageName: node linkType: hard -"known-css-properties@npm:^0.28.0": - version: 0.28.0 - resolution: "known-css-properties@npm:0.28.0" - checksum: c9e0d6948e31386e872d348eb955e9db80edd58f9d7f7fc9b072180bfb26708a629d5942d4478f66fc766fb913c4552a220950730cef85f8c3bc9830e33b00c8 +"known-css-properties@npm:^0.29.0": + version: 0.29.0 + resolution: "known-css-properties@npm:0.29.0" + checksum: daa6562e907f856cbfd58a00c42f532c9bba283388984da6a3bffb494e56612e5f23c52f30b0d9885f0ea07ad5d88bfa0470ee65017a6ce6c565289a1afd78af languageName: node linkType: hard @@ -14958,7 +14985,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.31, postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.27": +"postcss@npm:8.4.31, postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.28": version: 8.4.31 resolution: "postcss@npm:8.4.31" dependencies: @@ -16889,8 +16916,8 @@ __metadata: linkType: hard "stylelint@npm:^15": - version: 15.10.3 - resolution: "stylelint@npm:15.10.3" + version: 15.11.0 + resolution: "stylelint@npm:15.11.0" dependencies: "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 @@ -16899,12 +16926,12 @@ __metadata: balanced-match: ^2.0.0 colord: ^2.9.3 cosmiconfig: ^8.2.0 - css-functions-list: ^3.2.0 + css-functions-list: ^3.2.1 css-tree: ^2.3.1 debug: ^4.3.4 fast-glob: ^3.3.1 fastest-levenshtein: ^1.0.16 - file-entry-cache: ^6.0.1 + file-entry-cache: ^7.0.0 global-modules: ^2.0.0 globby: ^11.1.0 globjoin: ^0.1.4 @@ -16913,13 +16940,13 @@ __metadata: import-lazy: ^4.0.0 imurmurhash: ^0.1.4 is-plain-object: ^5.0.0 - known-css-properties: ^0.28.0 + known-css-properties: ^0.29.0 mathml-tag-names: ^2.1.3 meow: ^10.1.5 micromatch: ^4.0.5 normalize-path: ^3.0.0 picocolors: ^1.0.0 - postcss: ^8.4.27 + postcss: ^8.4.28 postcss-resolve-nested-selector: ^0.1.1 postcss-safe-parser: ^6.0.0 postcss-selector-parser: ^6.0.13 @@ -16934,7 +16961,7 @@ __metadata: write-file-atomic: ^5.0.1 bin: stylelint: bin/stylelint.mjs - checksum: eb70dd0e4d500141f4868ddb7403ad7eb8732b02a3f2fe3907d0859369cedd395b60b0075da758b5be07de771c586b1bf64de4eead8159d46b0d16beff827e67 + checksum: 9835f8a3e3976a3b81a35569d08f5f4a9c3b5cff415f1345a505870afc0c3231acff27f119d937c5bb11fdbc98d554af564c2a648a52604280a59a11974fcbfc languageName: node linkType: hard From 8be23fd80714fdb25dc8dae9eea3aca797133c79 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Wed, 18 Oct 2023 18:55:26 +0200 Subject: [PATCH 42/95] update yarn.locks --- server/yarn.lock | 150 +++++++++++++++++++++++++---------------------- yarn.lock | 12 ++-- 2 files changed, 87 insertions(+), 75 deletions(-) diff --git a/server/yarn.lock b/server/yarn.lock index 2b1e89c19d8..6656bb242c1 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -705,12 +705,12 @@ __metadata: linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.19 - resolution: "@jridgewell/trace-mapping@npm:0.3.19" + version: 0.3.20 + resolution: "@jridgewell/trace-mapping@npm:0.3.20" dependencies: "@jridgewell/resolve-uri": ^3.1.0 "@jridgewell/sourcemap-codec": ^1.4.14 - checksum: 956a6f0f6fec060fb48c6bf1f5ec2064e13cd38c8be3873877d4b92b4a27ba58289a34071752671262a3e3c202abcc3fa2aac64d8447b4b0fa1ba3c9047f1c20 + checksum: cd1a7353135f385909468ff0cf20bdd37e59f2ee49a13a966dedf921943e222082c583ade2b579ff6cd0d8faafcb5461f253e1bf2a9f48fec439211fdbe788f5 languageName: node linkType: hard @@ -867,74 +867,74 @@ __metadata: linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.20.2 - resolution: "@types/babel__core@npm:7.20.2" + version: 7.20.3 + resolution: "@types/babel__core@npm:7.20.3" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 564fbaa8ff1305d50807ada0ec227c3e7528bebb2f8fe6b2ed88db0735a31511a74ad18729679c43eeed8025ed29d408f53059289719e95ab1352ed559a100bd + checksum: 8d14acc14d99b4b8bf36c00da368f6d597bd9ae3344aa7048f83f0f701b0463fa7c7bf2e50c3e4382fdbcfd1e4187b3452a0f0888b0f3ae8fad975591f7bdb94 languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.5 - resolution: "@types/babel__generator@npm:7.6.5" + version: 7.6.6 + resolution: "@types/babel__generator@npm:7.6.6" dependencies: "@babel/types": ^7.0.0 - checksum: c7459f5025c4c800eaf58f4db3b24e9d736331fe7df40961d9bc49f31b46e2a3be83dc9276e8688f10a5ed752ae153ad5f1bdd45e2245bac95273730b9115ec2 + checksum: 36e8838c7e16eff611447579e840526946a8b14c794c82486cee2a5ad2257aa6cad746d8ecff3144e3721178837d2c25d0a435d384391eb67846b933c062b075 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.2 - resolution: "@types/babel__template@npm:7.4.2" + version: 7.4.3 + resolution: "@types/babel__template@npm:7.4.3" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: 0fe977b45a3269336c77f3ae4641a6c48abf0fa35ab1a23fb571690786af02d6cec08255a43499b0b25c5633800f7ae882ace450cce905e3060fa9e6995047ae + checksum: 55deb814c94d1bfb78c4d1de1de1b73eb17c79374602f3bd8aa14e356a77fca64d01646cebe25ec9b307f53a047acc6d53ad6e931019d0726422f5f911e945aa languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.2 - resolution: "@types/babel__traverse@npm:7.20.2" + version: 7.20.3 + resolution: "@types/babel__traverse@npm:7.20.3" dependencies: "@babel/types": ^7.20.7 - checksum: 981340286479524436348d32373eaa3bf993c635cbf70307b4b69463eee83406a959ac4844f683911e0db8ab8d9f0025ab630dc7a8c170fee9ee74144c2a528f + checksum: 6d0f70d8972647c9b78b51a54f0b6481c4f23f0bb2699ad276e6070678bd121fede99e8e2c8c3e409d2f31a0bf83ae511abc6fefb91f0630c8d728a3a9136790 languageName: node linkType: hard "@types/body-parser@npm:*": - version: 1.19.3 - resolution: "@types/body-parser@npm:1.19.3" + version: 1.19.4 + resolution: "@types/body-parser@npm:1.19.4" dependencies: "@types/connect": "*" "@types/node": "*" - checksum: 932fa71437c275023799123680ef26ffd90efd37f51a1abe405e6ae6e5b4ad9511b7a3a8f5a12877ed1444a02b6286c0a137a98e914b3c61932390c83643cc2c + checksum: 10accc30773319bd49af7d12d2cd5faf9a0293ea4764345297f26ba6ef31d5caa7609da7619584d6c61279e09b89d3ab13d28c5cb644807c5d9c722ae1454778 languageName: node linkType: hard "@types/connect@npm:*": - version: 3.4.36 - resolution: "@types/connect@npm:3.4.36" + version: 3.4.37 + resolution: "@types/connect@npm:3.4.37" dependencies: "@types/node": "*" - checksum: 4dee3d966fb527b98f0cbbdcf6977c9193fc3204ed539b7522fe5e64dfa45f9017bdda4ffb1f760062262fce7701a0ee1c2f6ce2e50af36c74d4e37052303172 + checksum: 79ef1f79a28235ea7cbefa153914318d7b46d60041a932681b613abd706591108f4f17ddd2072ee8ec23ba9a3fb068a6c3bbdca66b95de1a7e6039bd940ae988 languageName: node linkType: hard "@types/express-serve-static-core@npm:^4.17.33": - version: 4.17.37 - resolution: "@types/express-serve-static-core@npm:4.17.37" + version: 4.17.38 + resolution: "@types/express-serve-static-core@npm:4.17.38" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" "@types/send": "*" - checksum: 2dab1380e45eb44e56ecc1be1c42c4b897364d2f2a08e03ca28fbcb1e6866e390217385435813711c046f9acd684424d088855dc32825d5cbecf72c60ecd037f + checksum: 22d057c9e890ead9cf7518afb0a41d378bf265d850be6a3f7c0294e6a7b43812aec3a8ce29aabfc8027024563136e917b0f2311b4f74250921c84ceca15b11a2 languageName: node linkType: hard @@ -956,7 +956,19 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:*, @types/express@npm:4.17.19": +"@types/express@npm:*": + version: 4.17.20 + resolution: "@types/express@npm:4.17.20" + dependencies: + "@types/body-parser": "*" + "@types/express-serve-static-core": ^4.17.33 + "@types/qs": "*" + "@types/serve-static": "*" + checksum: bf8a97d283128e5129f9ccabbeef728ff3f0484465e0ae74a304bd0588fa6cb715ae68845650caba9a641944b7791ba125d02ddbd47a7e62aaefdd036570c6c5 + languageName: node + linkType: hard + +"@types/express@npm:4.17.19": version: 4.17.19 resolution: "@types/express@npm:4.17.19" dependencies: @@ -986,11 +998,11 @@ __metadata: linkType: hard "@types/graceful-fs@npm:^4.1.3": - version: 4.1.7 - resolution: "@types/graceful-fs@npm:4.1.7" + version: 4.1.8 + resolution: "@types/graceful-fs@npm:4.1.8" dependencies: "@types/node": "*" - checksum: 8b97e208f85c9efd02a6003a582c77646dd87be0af13aec9419a720771560a8a87a979eaca73ae193d7c73127f34d0a958403a9b5d6246e450289fd8c79adf09 + checksum: 6e1ee9c119e075134696171b680fee7b627f3e077ec5e5ad9ba9359f1688a84fa35ea6804f96922c43ca30ab8d4ca9531a526b64f57fa13e1d721bf741884829 languageName: node linkType: hard @@ -1004,44 +1016,44 @@ __metadata: linkType: hard "@types/http-errors@npm:*": - version: 2.0.2 - resolution: "@types/http-errors@npm:2.0.2" - checksum: d7f14045240ac4b563725130942b8e5c8080bfabc724c8ff3f166ea928ff7ae02c5194763bc8f6aaf21897e8a44049b0492493b9de3e058247e58fdfe0f86692 + version: 2.0.3 + resolution: "@types/http-errors@npm:2.0.3" + checksum: ea9530fb6e8a0400c4f9aac4dd628c5074f0adc8d01e2cdb917c0b97c230dedf4fcc67eadb491377b0eff5778e566648e63613a9719e383185318b9ec8c009b9 languageName: node linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.4 - resolution: "@types/istanbul-lib-coverage@npm:2.0.4" - checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 + version: 2.0.5 + resolution: "@types/istanbul-lib-coverage@npm:2.0.5" + checksum: 978eaf327f9a238eb1e2828b93b4b48e288ffb88c4be81330c74477ab8b93fac41a8784260d72bdd9995535d70608f738199b6364fd3344842e924a3ec3301e7 languageName: node linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.1 - resolution: "@types/istanbul-lib-report@npm:3.0.1" + version: 3.0.2 + resolution: "@types/istanbul-lib-report@npm:3.0.2" dependencies: "@types/istanbul-lib-coverage": "*" - checksum: cfc66de48577bb7b2636a6afded7056483693c3ea70916276518cdfaa0d4b51bf564ded88fb13e75716665c3af3d4d54e9c2de042c0219dcabad7e81c398688b + checksum: 549e44e14a4dc98164ce477ca8650d33898e5c74a6bb8079cbec7f811567dcb805a3bfdbf83ce53222eaecc37ae53aa7f25bda1a7d8347449155c8f0b4f30232 languageName: node linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.2 - resolution: "@types/istanbul-reports@npm:3.0.2" + version: 3.0.3 + resolution: "@types/istanbul-reports@npm:3.0.3" dependencies: "@types/istanbul-lib-report": "*" - checksum: f52028d6fe4d28f0085dd7ed66ccfa6af632579e9a4091b90928ffef93d4dbec0bacd49e9caf1b939d05df9eafc5ac1f5939413cdf8ac59fbe4b29602d4d0939 + checksum: 21d007be7dd09165ed24f5cc9947319ad435fc3b3e568f3eec0a42ee80fd2adccdeb929bc1311efb2cf7597835638cde865d3630d8b4c15d1390c9527bcad1a9 languageName: node linkType: hard "@types/jest@npm:^29.5.5": - version: 29.5.5 - resolution: "@types/jest@npm:29.5.5" + version: 29.5.6 + resolution: "@types/jest@npm:29.5.6" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: 56e55cde9949bcc0ee2fa34ce5b7c32c2bfb20e53424aa4ff3a210859eeaaa3fdf6f42f81a3f655238039cdaaaf108b054b7a8602f394e6c52b903659338d8c6 + checksum: fa13a27bd1c8efd0381a419478769d0d6d3a8e93e1952d7ac3a16274e8440af6f73ed6f96ac1ff00761198badf2ee226b5ab5583a5d87a78d609ea78da5c5a24 languageName: node linkType: hard @@ -1069,11 +1081,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 20.8.6 - resolution: "@types/node@npm:20.8.6" + version: 20.8.7 + resolution: "@types/node@npm:20.8.7" dependencies: undici-types: ~5.25.1 - checksum: ccfb7ac482c5a96edeb239893c5c099f5257fcc2ed9ae62fefdfbc782b79e16dbc2af9a85b379665237bf759904b44ca2be68e75d239e0297882aad42f61905c + checksum: 2173c0c03daefcb60c03a61b1371b28c8fe412e7a40dc6646458b809d14a85fbc7aeb369d957d57f0aaaafd99964e77436f29b3b579232d8f2b20c58abbd1d25 languageName: node linkType: hard @@ -1085,44 +1097,44 @@ __metadata: linkType: hard "@types/qs@npm:*": - version: 6.9.8 - resolution: "@types/qs@npm:6.9.8" - checksum: c28e07d00d07970e5134c6eed184a0189b8a4649e28fdf36d9117fe671c067a44820890de6bdecef18217647a95e9c6aebdaaae69f5fe4b0bec9345db885f77e + version: 6.9.9 + resolution: "@types/qs@npm:6.9.9" + checksum: 03ddbd032bcaa8f07429efe9de6d0fc027ccdd1e24eac1656bd931c2210c204bbc25be0937a9d46702fb6262fb6ffcc2980e040b399b62a3f91ec6e387c2edae languageName: node linkType: hard "@types/range-parser@npm:*": - version: 1.2.5 - resolution: "@types/range-parser@npm:1.2.5" - checksum: db9aaa04a02d019395a9a4346475669a2864a32a6477ad0fc457bd2ef39a167cabe742f55a8a3fa8bc90abac795b716c22b37348bc3e19313ebe6c9310815233 + version: 1.2.6 + resolution: "@types/range-parser@npm:1.2.6" + checksum: 22decf0fa30a5fb5b26b9d30052c8eca1dddf55449c87031c8d58a4e2e75c606d7bab6a1409988c96f774eb0ebf814147d47c76487d1d0d83441f1ab26bd5d6a languageName: node linkType: hard "@types/send@npm:*": - version: 0.17.2 - resolution: "@types/send@npm:0.17.2" + version: 0.17.3 + resolution: "@types/send@npm:0.17.3" dependencies: "@types/mime": ^1 "@types/node": "*" - checksum: 1ff5b1bd6a4f6fdc6402c7024781ff5dbd0e1f51a43c69529fb67c710943c7416d2f0d77c57c70fccf6616f25f838f32f960284526e408d4edae2e91e1fce95a + checksum: 2162f917f1015e7218b8a1f51a70c16ae647e1c4e16f940acae9fb326455d6031b33b3868b40bda8ba8d3d577013f64176f30a37f1a2aa3ce4f999a808f34397 languageName: node linkType: hard "@types/serve-static@npm:*": - version: 1.15.3 - resolution: "@types/serve-static@npm:1.15.3" + version: 1.15.4 + resolution: "@types/serve-static@npm:1.15.4" dependencies: "@types/http-errors": "*" "@types/mime": "*" "@types/node": "*" - checksum: afa52252f0ba94cdb5391e80f23e17fd629bdf2a31be8876e2c4490312ed6b0570822dd7de7cea04c9002049e207709563568b7f4ee10bb9f456321db1e83e40 + checksum: e2e71916d262cac05fa36c3178c3bcc5c0f2fb801f9dc3c4ee58864b7b2bd69b6fb0e312f60e3f19e0ba7206ea57964652a4a3251125121a463acb34dfc9f636 languageName: node linkType: hard "@types/stack-utils@npm:^2.0.0": - version: 2.0.1 - resolution: "@types/stack-utils@npm:2.0.1" - checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 + version: 2.0.2 + resolution: "@types/stack-utils@npm:2.0.2" + checksum: 777cc7ac0c1000c5a07561013bcf7bd8477a3d55f55f376ee2f0c586331f7b999f57788140cfbdb65f6d7d97c0c41fe8fe6c778fd3ed71859c9b681ea76fc621 languageName: node linkType: hard @@ -1632,9 +1644,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001549 - resolution: "caniuse-lite@npm:1.0.30001549" - checksum: 7f2abeedc8cf8b92cc0613855d71b995ce436068c0bcdd798c5af7d297ccf9f52496b00181beda42d82d25079dd4b6e389c67486156d40d8854e5707a25cb054 + version: 1.0.30001550 + resolution: "caniuse-lite@npm:1.0.30001550" + checksum: b48d5a0bd25d634d61f410e0130c5e6c328724285c3c6065644eb41f86a227f5db0eb77da25d0fe3c6c9b04bbd040c9c164bf8dc50dd75cb30fc578aaae562f1 languageName: node linkType: hard @@ -2074,9 +2086,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.535": - version: 1.4.554 - resolution: "electron-to-chromium@npm:1.4.554" - checksum: cbac43c50b43777327f4a7bf149ee3088c1da8b91bbcd80f78d2cc77bc52763f6d0941574499239d9caefd3430d3093f865e5f1093371418f7d6b70301eeae9b + version: 1.4.557 + resolution: "electron-to-chromium@npm:1.4.557" + checksum: 16f24e8d648489f0bfe7c2ffd4ada282bd68465862779f1f2e0afff5357e96536b075731c4b721dd27e2eae72008dc66d79e7bce6315e1c8f02947d41d988b78 languageName: node linkType: hard @@ -5227,8 +5239,8 @@ __metadata: linkType: hard "systeminformation@npm:^5.7": - version: 5.21.11 - resolution: "systeminformation@npm:5.21.11" + version: 5.21.12 + resolution: "systeminformation@npm:5.21.12" bin: systeminformation: lib/cli.js conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) diff --git a/yarn.lock b/yarn.lock index f974a26049d..f3359438a53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4857,16 +4857,16 @@ __metadata: linkType: hard "@types/tough-cookie@npm:*": - version: 4.0.3 - resolution: "@types/tough-cookie@npm:4.0.3" - checksum: f201be1bbca2f2d3572032513cdb9825845114d2604a7f4091af848eeee3228a573cdc5e8082b04468a2848bb1d058f1adbb97db822e22c975ebd6fcd851a453 + version: 4.0.4 + resolution: "@types/tough-cookie@npm:4.0.4" + checksum: 6be275b09f5fbf33f359fd6d5372c69357cf96dea5d7ba7a6563c76c6cce8b0c7f81caa4805810b0e67427cad381aeef00d8c060d614fee79ca245c2b9887c3a languageName: node linkType: hard "@types/trusted-types@npm:^2.0.2": - version: 2.0.4 - resolution: "@types/trusted-types@npm:2.0.4" - checksum: 5256c4576cd1c90d33ddd9cc9cbd4f202b39c98cbe8b7f74963298f9eb2159c285ea5c25a6181b4c594d8d75641765bff85d72c2d251ad076e6529ce0eeedd1c + version: 2.0.5 + resolution: "@types/trusted-types@npm:2.0.5" + checksum: e138a70a702e31b49ac73cc33852d892367224be6e096c445194d76327cb46f54f971ae311e34371f649a2d5ac9204afee345bb22f32cfc515eb21c3f12f66b7 languageName: node linkType: hard From 0d6f728028b714c967b364a29f48f78ee60591d5 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Wed, 18 Oct 2023 19:09:58 +0200 Subject: [PATCH 43/95] lint fixes --- src/script/util/TypePredicateUtil.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/script/util/TypePredicateUtil.ts b/src/script/util/TypePredicateUtil.ts index dac9e1c7aab..ce293f59448 100644 --- a/src/script/util/TypePredicateUtil.ts +++ b/src/script/util/TypePredicateUtil.ts @@ -17,10 +17,10 @@ * */ -import type {BackendError} from '@wireapp/api-client/lib/http/'; +import {RegisteredClient} from '@wireapp/api-client/lib/client'; +import type {BackendError} from '@wireapp/api-client/lib/http'; import {AxiosError} from 'axios'; -import {RegisteredClient} from '../../../.yalc/@wireapp/api-client/lib/client'; import {Conversation} from '../entity/Conversation'; import {User} from '../entity/User'; import {ClientRecord} from '../storage/record/ClientRecord'; From d2657675b171c2bcab846f7b991cb6e2fec76afe Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Wed, 18 Oct 2023 19:21:00 +0200 Subject: [PATCH 44/95] test fixes --- src/script/E2EIdentity/E2EIdentity.ts | 2 +- .../E2EICertificateDetails.tsx | 2 +- .../ConversationDetailsHeader.test.tsx | 17 ++++++++++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/script/E2EIdentity/E2EIdentity.ts b/src/script/E2EIdentity/E2EIdentity.ts index 8fd00fa8208..ee514996d75 100644 --- a/src/script/E2EIdentity/E2EIdentity.ts +++ b/src/script/E2EIdentity/E2EIdentity.ts @@ -294,7 +294,7 @@ class E2EIHandler { */ public getCertificateData() { if (!this.hasActiveCertificate()) { - return; + return undefined; } return this.coreE2EIService.getCertificateData(); diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx index f24fb3893ab..0cf98c735c2 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx @@ -48,7 +48,7 @@ export const E2EICertificateDetails = ({ const {isNotDownloaded, isValid, isExpireSoon} = getCertificateDetails(certificate); const certificateState = getCertificateState({isNotDownloaded, isValid, isExpireSoon}); - const updateCertificate = async () => { + const updateCertificate = (): null => { // TODO: Waiting for update certificate implementation return null; }; diff --git a/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.test.tsx b/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.test.tsx index ba8a7d3a20b..607bc829305 100644 --- a/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.test.tsx +++ b/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.test.tsx @@ -18,24 +18,31 @@ */ import {render, fireEvent} from '@testing-library/react'; +import {CONVERSATION_TYPE} from '@wireapp/api-client/lib/conversation'; import {User} from 'src/script/entity/User'; import {ServiceEntity} from 'src/script/integration/ServiceEntity'; +import {createUuid} from 'Util/uuid'; import {ConversationDetailsHeader} from './ConversationDetailsHeader'; +import {Conversation} from '../../../../../entity/Conversation'; + const participant = new User('id'); const service = new ServiceEntity({id: 'id'}); +const conversation = new Conversation(createUuid()); +conversation.display_name('Group Chat'); +conversation.type(CONVERSATION_TYPE.REGULAR); + const getDefaultProps = () => ({ isActiveGroupParticipant: true, canRenameGroup: true, - displayName: 'Group Chat', updateConversationName: jest.fn(), - isGroup: true, userParticipants: new Array(participant), serviceParticipants: new Array(service), allUsersCount: 0, isTeam: false, + conversation, }); describe('ConversationDetailsHeader', () => { @@ -43,7 +50,7 @@ describe('ConversationDetailsHeader', () => { const props = getDefaultProps(); const {getByText} = render(); - const nameElement = getByText(props.displayName); + const nameElement = getByText(props.conversation.display_name()); expect(nameElement).not.toBe(null); }); @@ -51,7 +58,7 @@ describe('ConversationDetailsHeader', () => { const props = getDefaultProps(); const {getByText, getByTestId} = render(); - const nameElement = getByText(props.displayName); + const nameElement = getByText(props.conversation.display_name()); fireEvent.click(nameElement); const textareaElement = getByTestId('enter-name') as HTMLInputElement; @@ -62,7 +69,7 @@ describe('ConversationDetailsHeader', () => { const props = getDefaultProps(); const {getByText, getByTestId} = render(); - const nameElement = getByText(props.displayName); + const nameElement = getByText(props.conversation.display_name()); fireEvent.click(nameElement); const newGroupName = 'Group Name Update'; From 1f12e35c6b5ee6e38d002e74e6370ee43ae36236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20J=C3=B3=C5=BAwik?= Date: Fri, 20 Oct 2023 11:04:14 +0200 Subject: [PATCH 45/95] feat: Add MLS Verification Badges (#16029) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Add MLS Verification Badges * fix: remove yalc import --------- Co-authored-by: Adrian Weiß --- .../components/userDevices/DeviceCard.tsx | 20 +++---------------- .../panels/Conversations/Conversations.tsx | 13 +++++++++++- .../panels/preferences/AccountPreferences.tsx | 4 +++- .../DevicesPreferences/DevicesPreferences.tsx | 2 -- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/script/components/userDevices/DeviceCard.tsx b/src/script/components/userDevices/DeviceCard.tsx index 09f77779830..f739055b43c 100644 --- a/src/script/components/userDevices/DeviceCard.tsx +++ b/src/script/components/userDevices/DeviceCard.tsx @@ -17,8 +17,6 @@ * */ -import React from 'react'; - import {ClientClassification} from '@wireapp/api-client/lib/client'; import cx from 'classnames'; @@ -29,8 +27,7 @@ import {handleKeyDown} from 'Util/KeyboardUtil'; import {t} from 'Util/LocalizerUtil'; import {splitFingerprint} from 'Util/StringUtil'; -import type {ClientEntity} from '../../client/ClientEntity'; -import {MLSPublicKeys} from '../../client/ClientEntity'; +import {type ClientEntity, MLSPublicKeys} from '../../client/ClientEntity'; import {FormattedId} from '../../page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId'; import {Icon} from '../Icon'; import {LegalHoldDot} from '../LegalHoldDot'; @@ -42,12 +39,7 @@ export interface DeviceCardProps { showVerified?: boolean; } -const DeviceCard: React.FC = ({ - click, - device: clientEntity, - showVerified = false, - showIcon = false, -}) => { +const DeviceCard = ({click, device: clientEntity, showVerified = false, showIcon = false}: DeviceCardProps) => { const messageFocusedTabIndex = useMessageFocusedTabIndex(!!click); const {class: deviceClass = '?', id = '', label = '?', meta} = clientEntity; const name = clientEntity.getName(); @@ -85,13 +77,7 @@ const DeviceCard: React.FC = ({
{name} - {showVerified && ( - - )} + {showVerified && }
{mlsFingerprint && ( diff --git a/src/script/page/LeftSidebar/panels/Conversations/Conversations.tsx b/src/script/page/LeftSidebar/panels/Conversations/Conversations.tsx index 6634b6a1297..d967d60da52 100644 --- a/src/script/page/LeftSidebar/panels/Conversations/Conversations.tsx +++ b/src/script/page/LeftSidebar/panels/Conversations/Conversations.tsx @@ -90,7 +90,16 @@ const Conversations: React.FC = ({ availability: userAvailability, isOnLegalHold, hasPendingLegalHold, - } = useKoSubscribableChildren(selfUser, ['hasPendingLegalHold', 'isOnLegalHold', 'name', 'availability']); + isMLSVerified, + is_verified: isProteusVerified, + } = useKoSubscribableChildren(selfUser, [ + 'hasPendingLegalHold', + 'isOnLegalHold', + 'name', + 'availability', + 'isMLSVerified', + 'is_verified', + ]); const {classifiedDomains} = useKoSubscribableChildren(teamState, ['classifiedDomains']); const {connectRequests} = useKoSubscribableChildren(userState, ['connectRequests']); const {activeConversation} = useKoSubscribableChildren(conversationState, ['activeConversation']); @@ -182,6 +191,8 @@ const Conversations: React.FC = ({ dataUieName="status-availability" label={userName} showBadges + isMLSVerified={isMLSVerified} + isProteusVerified={isProteusVerified} /> diff --git a/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx b/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx index e090683dba3..731c49f3325 100644 --- a/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx @@ -99,6 +99,7 @@ export const AccountPreferences = ({ managedBy, phone, is_verified: isVerified, + isMLSVerified, } = useKoSubscribableChildren(selfUser, [ 'name', 'email', @@ -107,6 +108,7 @@ export const AccountPreferences = ({ 'managedBy', 'phone', 'is_verified', + 'isMLSVerified', ]); const canEditProfile = managedBy === User.CONFIG.MANAGED_BY.WIRE; @@ -153,7 +155,7 @@ export const AccountPreferences = ({ {name}

- +
diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx index c61c560e88b..a8fb2502a56 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx @@ -65,7 +65,6 @@ export const DevicesPreferences: React.FC = ({ const {clients} = useKoSubscribableChildren(clientState, ['clients']); const currentClient = clientState.currentClient; - const isSelfClientVerified = React.useMemo(() => { if (!currentClient) { return false; @@ -74,7 +73,6 @@ export const DevicesPreferences: React.FC = ({ }, [currentClient]); const isSSO = selfUser.isNoPasswordSSO; - const getFingerprint = (device: ClientEntity) => cryptographyRepository.getRemoteFingerprint(selfUser.qualifiedId, device.id); From c63652a4db3da5629a38dc416c398847510b3cc8 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Mon, 6 Nov 2023 13:45:55 +0100 Subject: [PATCH 46/95] test fixes --- .../VerificationBadges.test.tsx | 2 +- .../components/panel/UserDetails.test.tsx | 15 ----- .../userDevices/DeviceCard.test.tsx | 62 ------------------- .../ConversationDetailsHeader.test.tsx | 2 +- yarn.lock | 13 +--- 5 files changed, 3 insertions(+), 91 deletions(-) diff --git a/src/script/components/VerificationBadges/VerificationBadges.test.tsx b/src/script/components/VerificationBadges/VerificationBadges.test.tsx index 1da3ab7bf45..eb0c955ab3c 100644 --- a/src/script/components/VerificationBadges/VerificationBadges.test.tsx +++ b/src/script/components/VerificationBadges/VerificationBadges.test.tsx @@ -64,6 +64,6 @@ describe('VerificationBadges', () => { ); const E2EIdentityStatus = getByTestId('mls-status'); - expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.EXPIRED); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.EXPIRES_SOON); }); }); diff --git a/src/script/components/panel/UserDetails.test.tsx b/src/script/components/panel/UserDetails.test.tsx index d9ecfe43a54..89a0a0e798c 100644 --- a/src/script/components/panel/UserDetails.test.tsx +++ b/src/script/components/panel/UserDetails.test.tsx @@ -24,7 +24,6 @@ import {createUuid} from 'Util/uuid'; import {UserDetails} from './UserDetails'; -import {ClientEntity} from '../../client/ClientEntity'; import {User} from '../../entity/User'; describe('UserDetails', () => { @@ -54,20 +53,6 @@ describe('UserDetails', () => { expect(queryByTestId('status-admin')).toBeNull(); }); - it('shows a verified icon when all clients from the self user are verified and all clients of the other participant are verified', () => { - const otherParticipant = new User(createUuid()); - const verifiedClient = new ClientEntity(false, null); - verifiedClient.meta.isVerified?.(true); - otherParticipant.devices.push(verifiedClient); - - const props = {isGroupAdmin: true, isSelfVerified: true, participant: otherParticipant}; - - const {queryByTestId} = render(); - - expect(queryByTestId('status-verified-participant')).not.toBeNull(); - expect(queryByTestId('status-admin')).not.toBeNull(); - }); - it('renders the badge for a user', () => { const badge = 'badgeText'; const participant = new User(createUuid()); diff --git a/src/script/components/userDevices/DeviceCard.test.tsx b/src/script/components/userDevices/DeviceCard.test.tsx index 8bb866686f1..75ab4d0265b 100644 --- a/src/script/components/userDevices/DeviceCard.test.tsx +++ b/src/script/components/userDevices/DeviceCard.test.tsx @@ -37,36 +37,6 @@ function createClientEntity(clientEntity: Partial): ClientEntity { } describe('DeviceCard', () => { - it('renders desktop icon for desktop clients', async () => { - const props = { - device: createClientEntity({ - class: ClientClassification.DESKTOP, - meta: { - isVerified: ko.observable(false), - }, - }), - showIcon: true, - }; - - const {getByTestId} = render(); - expect(getByTestId('status-desktop-device')).not.toBeNull(); - }); - - it('renders mobile devices icon for non-desktop clients', async () => { - const props = { - device: createClientEntity({ - class: ClientClassification.PHONE, - meta: { - isVerified: ko.observable(false), - }, - }), - showIcon: true, - }; - - const {getByTestId} = render(); - expect(getByTestId('status-mobile-device')).not.toBeNull(); - }); - it('shows disclose icon when component is clickable', async () => { const props = { click: jest.fn(), @@ -82,36 +52,4 @@ describe('DeviceCard', () => { const {getByTestId} = render(); expect(getByTestId('disclose-icon')).not.toBeNull(); }); - - it('shows verified icon', async () => { - const props = { - device: createClientEntity({ - class: ClientClassification.PHONE, - meta: { - isVerified: ko.observable(true), - }, - }), - showIcon: true, - showVerified: true, - }; - - const {getByTestId} = render(); - expect(getByTestId('user-device-verified')).not.toBeNull(); - }); - - it('shows unverified icon', async () => { - const props = { - device: createClientEntity({ - class: ClientClassification.PHONE, - meta: { - isVerified: ko.observable(false), - }, - }), - showIcon: true, - showVerified: true, - }; - - const {getByTestId} = render(); - expect(getByTestId('user-device-not-verified')).not.toBeNull(); - }); }); diff --git a/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.test.tsx b/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.test.tsx index 607bc829305..1a6c5928d57 100644 --- a/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.test.tsx +++ b/src/script/page/RightSidebar/ConversationDetails/components/ConversationDetailsHeader/ConversationDetailsHeader.test.tsx @@ -31,7 +31,7 @@ import {Conversation} from '../../../../../entity/Conversation'; const participant = new User('id'); const service = new ServiceEntity({id: 'id'}); const conversation = new Conversation(createUuid()); -conversation.display_name('Group Chat'); +conversation.name('Group Chat'); conversation.type(CONVERSATION_TYPE.REGULAR); const getDefaultProps = () => ({ diff --git a/yarn.lock b/yarn.lock index 12ffe304668..14c672c91c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4773,7 +4773,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:16 || 17 || 18": +"@types/react@npm:18.2.35": version: 18.2.35 resolution: "@types/react@npm:18.2.35" dependencies: @@ -4784,17 +4784,6 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:18.2.33": - version: 18.2.33 - resolution: "@types/react@npm:18.2.33" - dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" - csstype: ^3.0.2 - checksum: 75903c4d53898c69dd23d0b2730eac4676dc5ade15c25c793dec855f0d7c650cb823832bb1dd881efe8895724f15b06d4bf7081ea0b82391aa3059512ad49ccf - languageName: node - linkType: hard - "@types/redux-mock-store@npm:1.0.5": version: 1.0.5 resolution: "@types/redux-mock-store@npm:1.0.5" From c8f58af366655cd46030021a0e5a185ff1a67a09 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Mon, 6 Nov 2023 15:27:03 +0100 Subject: [PATCH 47/95] Add translations and fix section --- src/i18n/en-US.json | 7 +++++++ .../VerificationBadges/VerificationBadges.tsx | 16 +++++++++------- .../DevicesPreferences/DevicesPreferences.tsx | 15 ++++++--------- .../DeviceDetailsPreferences.tsx | 6 +----- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/src/i18n/en-US.json b/src/i18n/en-US.json index 0c0cb162dde..7cb48fb938e 100644 --- a/src/i18n/en-US.json +++ b/src/i18n/en-US.json @@ -539,6 +539,11 @@ "customEnvRedirect.credentialsInfo": "Provide credentials only if you're sure this is your organization's login.", "customEnvRedirect.redirectHeadline": "Redirecting...", "customEnvRedirect.redirectTo": "You are being redirected to your dedicated enterprise service.", + "E2EI.verified": "Verified (End-to-end Identity)", + "E2EI.deviceVerified": "Device verified (End-to-end identity)", + "E2EI.certificateExpired": "End-to-end identity certificate expired", + "E2EI.certificateExpiresSoon": "End-to-end identity certificate expires soon", + "E2EI.certificateRevoked": "End-to-end identity certificate revoked", "E2EI.status": "Status: ", "E2EI.certificateTitle": "End-to-end identity certificate", "E2EI.valid": "Valid", @@ -555,6 +560,8 @@ "E2EI.downloadCertificate": "Download", "E2EI.copyCertificate": "Copy to Clipboard", "E2EI.certificateCopied": "Text copied!", + "proteusVerifiedDetails": "Verified (Proteus)", + "proteusDeviceVerified": "Device verified (Proteus)", "enumerationAnd": ", and ", "ephemeralRemaining": "remaining", "ephemeralUnitsDay": "day", diff --git a/src/script/components/VerificationBadges/VerificationBadges.tsx b/src/script/components/VerificationBadges/VerificationBadges.tsx index 64489682a93..0443750d6b9 100644 --- a/src/script/components/VerificationBadges/VerificationBadges.tsx +++ b/src/script/components/VerificationBadges/VerificationBadges.tsx @@ -29,6 +29,8 @@ import { ProteusVerified, } from '@wireapp/react-ui-kit'; +import {t} from 'Util/LocalizerUtil'; + export enum MLSStatuses { VALID = 'valid', NOT_DOWNLOADED = 'not_downloaded', @@ -90,12 +92,12 @@ export const VerificationBadges: React.FC = ({
{showMLSBadge && (
- {displayTitle && Verified (End-to-end Identity)} + {displayTitle && {t('E2EI.verified')}} {!isExpired && !isNotDownloaded && !isExpiresSoon && ( = ({ {isExpired && ( = ({ {isExpiresSoon && ( = ({ {isNotDownloaded && ( = ({ {showProteusBadge && (
- {displayTitle && Verified (Proteus)} + {displayTitle && {t('proteusVerifiedDetails')}} diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx index a8fb2502a56..fa2ae552eab 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx @@ -126,15 +126,12 @@ export const DevicesPreferences: React.FC = ({
{t('preferencesDevicesCurrent')} {currentClient && ( - <> - - - + )}
diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx index 4a607d01c48..c27211fb4c0 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx @@ -150,11 +150,7 @@ export const DeviceDetailsPreferences: React.FC = ({
-
-
-
-
-
+
{!device.isLegalHold() && (
From d537a7a7ab9774cded3e63bcc582b8fb82c4e507 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Tue, 7 Nov 2023 12:33:04 +0100 Subject: [PATCH 48/95] fix --- server/yarn.lock | 110 ++++++++++--------- yarn.lock | 275 ++++++++++++++++++++++++----------------------- 2 files changed, 202 insertions(+), 183 deletions(-) diff --git a/server/yarn.lock b/server/yarn.lock index 4f167c8ff65..b4630ad2047 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -873,74 +873,74 @@ __metadata: linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.20.3 - resolution: "@types/babel__core@npm:7.20.3" + version: 7.20.4 + resolution: "@types/babel__core@npm:7.20.4" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 8d14acc14d99b4b8bf36c00da368f6d597bd9ae3344aa7048f83f0f701b0463fa7c7bf2e50c3e4382fdbcfd1e4187b3452a0f0888b0f3ae8fad975591f7bdb94 + checksum: 75ed6072213423d2b827740d68bbf96f5a7050ce8bd842dde0ceec8d352d06e847166bac757df4beba55525b65f8727c0432adeb5cb4f83aa42e155ac555767e languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.6 - resolution: "@types/babel__generator@npm:7.6.6" + version: 7.6.7 + resolution: "@types/babel__generator@npm:7.6.7" dependencies: "@babel/types": ^7.0.0 - checksum: 36e8838c7e16eff611447579e840526946a8b14c794c82486cee2a5ad2257aa6cad746d8ecff3144e3721178837d2c25d0a435d384391eb67846b933c062b075 + checksum: 03e96ea327a5238f00c38394a05cc01619b9f5f3ea57371419a1c25cf21676a6d327daf802435819f8cb3b8fa10e938a94bcbaf79a38c132068c813a1807ff93 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.3 - resolution: "@types/babel__template@npm:7.4.3" + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: 55deb814c94d1bfb78c4d1de1de1b73eb17c79374602f3bd8aa14e356a77fca64d01646cebe25ec9b307f53a047acc6d53ad6e931019d0726422f5f911e945aa + checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.3 - resolution: "@types/babel__traverse@npm:7.20.3" + version: 7.20.4 + resolution: "@types/babel__traverse@npm:7.20.4" dependencies: "@babel/types": ^7.20.7 - checksum: 6d0f70d8972647c9b78b51a54f0b6481c4f23f0bb2699ad276e6070678bd121fede99e8e2c8c3e409d2f31a0bf83ae511abc6fefb91f0630c8d728a3a9136790 + checksum: f044ba80e00d07e46ee917c44f96cfc268fcf6d3871f7dfb8db8d3c6dab1508302f3e6bc508352a4a3ae627d2522e3fc500fa55907e0410a08e2e0902a8f3576 languageName: node linkType: hard "@types/body-parser@npm:*": - version: 1.19.4 - resolution: "@types/body-parser@npm:1.19.4" + version: 1.19.5 + resolution: "@types/body-parser@npm:1.19.5" dependencies: "@types/connect": "*" "@types/node": "*" - checksum: 10accc30773319bd49af7d12d2cd5faf9a0293ea4764345297f26ba6ef31d5caa7609da7619584d6c61279e09b89d3ab13d28c5cb644807c5d9c722ae1454778 + checksum: 1e251118c4b2f61029cc43b0dc028495f2d1957fe8ee49a707fb940f86a9bd2f9754230805598278fe99958b49e9b7e66eec8ef6a50ab5c1f6b93e1ba2aaba82 languageName: node linkType: hard "@types/connect@npm:*": - version: 3.4.37 - resolution: "@types/connect@npm:3.4.37" + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" dependencies: "@types/node": "*" - checksum: 79ef1f79a28235ea7cbefa153914318d7b46d60041a932681b613abd706591108f4f17ddd2072ee8ec23ba9a3fb068a6c3bbdca66b95de1a7e6039bd940ae988 + checksum: 7eb1bc5342a9604facd57598a6c62621e244822442976c443efb84ff745246b10d06e8b309b6e80130026a396f19bf6793b7cecd7380169f369dac3bfc46fb99 languageName: node linkType: hard "@types/express-serve-static-core@npm:^4.17.33": - version: 4.17.39 - resolution: "@types/express-serve-static-core@npm:4.17.39" + version: 4.17.41 + resolution: "@types/express-serve-static-core@npm:4.17.41" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" "@types/send": "*" - checksum: 4227b96a53f0cf19d01fdb77a74252660f8e70650b79167e591b04c66ec9c7330d0a00038939415f96664a67312b21798bbac150fe81bf613380849b96546c37 + checksum: 12750f6511dd870bbaccfb8208ad1e79361cf197b147f62a3bedc19ec642f3a0f9926ace96705f4bc88ec2ae56f61f7ca8c2438e6b22f5540842b5569c28a121 languageName: node linkType: hard @@ -962,7 +962,19 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:*, @types/express@npm:4.17.20": +"@types/express@npm:*": + version: 4.17.21 + resolution: "@types/express@npm:4.17.21" + dependencies: + "@types/body-parser": "*" + "@types/express-serve-static-core": ^4.17.33 + "@types/qs": "*" + "@types/serve-static": "*" + checksum: fb238298630370a7392c7abdc80f495ae6c716723e114705d7e3fb67e3850b3859bbfd29391463a3fb8c0b32051847935933d99e719c0478710f8098ee7091c5 + languageName: node + linkType: hard + +"@types/express@npm:4.17.20": version: 4.17.20 resolution: "@types/express@npm:4.17.20" dependencies: @@ -992,11 +1004,11 @@ __metadata: linkType: hard "@types/graceful-fs@npm:^4.1.3": - version: 4.1.8 - resolution: "@types/graceful-fs@npm:4.1.8" + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" dependencies: "@types/node": "*" - checksum: 6e1ee9c119e075134696171b680fee7b627f3e077ec5e5ad9ba9359f1688a84fa35ea6804f96922c43ca30ab8d4ca9531a526b64f57fa13e1d721bf741884829 + checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 languageName: node linkType: hard @@ -1010,34 +1022,34 @@ __metadata: linkType: hard "@types/http-errors@npm:*": - version: 2.0.3 - resolution: "@types/http-errors@npm:2.0.3" - checksum: ea9530fb6e8a0400c4f9aac4dd628c5074f0adc8d01e2cdb917c0b97c230dedf4fcc67eadb491377b0eff5778e566648e63613a9719e383185318b9ec8c009b9 + version: 2.0.4 + resolution: "@types/http-errors@npm:2.0.4" + checksum: 1f3d7c3b32c7524811a45690881736b3ef741bf9849ae03d32ad1ab7062608454b150a4e7f1351f83d26a418b2d65af9bdc06198f1c079d75578282884c4e8e3 languageName: node linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.5 - resolution: "@types/istanbul-lib-coverage@npm:2.0.5" - checksum: 978eaf327f9a238eb1e2828b93b4b48e288ffb88c4be81330c74477ab8b93fac41a8784260d72bdd9995535d70608f738199b6364fd3344842e924a3ec3301e7 + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 languageName: node linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.2 - resolution: "@types/istanbul-lib-report@npm:3.0.2" + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" dependencies: "@types/istanbul-lib-coverage": "*" - checksum: 549e44e14a4dc98164ce477ca8650d33898e5c74a6bb8079cbec7f811567dcb805a3bfdbf83ce53222eaecc37ae53aa7f25bda1a7d8347449155c8f0b4f30232 + checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 languageName: node linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.3 - resolution: "@types/istanbul-reports@npm:3.0.3" + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" dependencies: "@types/istanbul-lib-report": "*" - checksum: 21d007be7dd09165ed24f5cc9947319ad435fc3b3e568f3eec0a42ee80fd2adccdeb929bc1311efb2cf7597835638cde865d3630d8b4c15d1390c9527bcad1a9 + checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 languageName: node linkType: hard @@ -1052,11 +1064,11 @@ __metadata: linkType: hard "@types/jsonfile@npm:*": - version: 6.1.3 - resolution: "@types/jsonfile@npm:6.1.3" + version: 6.1.4 + resolution: "@types/jsonfile@npm:6.1.4" dependencies: "@types/node": "*" - checksum: 3f2d0060a567f78b5d666971d5371e72f37294cbfc19069912c76ba9585d209ceb5aac421658f2b3ab922f96b8df53081e9f51d09aef34f2b4882b813a0e0c38 + checksum: 309fda20eb5f1cf68f2df28931afdf189c5e7e6bec64ac783ce737bb98908d57f6f58757ad5da9be37b815645a6f914e2d4f3ac66c574b8fe1ba6616284d0e97 languageName: node linkType: hard @@ -1140,11 +1152,11 @@ __metadata: linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.29 - resolution: "@types/yargs@npm:17.0.29" + version: 17.0.30 + resolution: "@types/yargs@npm:17.0.30" dependencies: "@types/yargs-parser": "*" - checksum: 8bbc0edd573a5a084cb13a9985c124490fd74e73b1ed8a3058861c13124e103b00a19770dc55c53215653a7845d7033e0695917b75153cfe9618d5b2fd3cf86e + checksum: 62d9e23923420a7353253512b45289a1928d5eeb073bb2fee947257ba41fcc5bc6f78b9e087162ea2e00c7e98d27d043ef85615ad856f0d7def5c6d60f610e58 languageName: node linkType: hard @@ -2034,9 +2046,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.535": - version: 1.4.576 - resolution: "electron-to-chromium@npm:1.4.576" - checksum: cf26065d95b0ecdd01f6daeec15b1e684a3b39680ae9f6d5d33c1391a6c1aa5ea2cb81cce699878e4fbb942328fc1076726f2d9ab1e8df9fbe02c84f1a5bbf1f + version: 1.4.577 + resolution: "electron-to-chromium@npm:1.4.577" + checksum: 822af571c8c94934655e46f77057bdce5474e1bcf7ceaa8a62fcec68554855d92f3d55de13b93d190ac88892ae89d0733645344c056bf684b190ca5db8ec1040 languageName: node linkType: hard @@ -3014,9 +3026,9 @@ __metadata: linkType: hard "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.0 - resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 + version: 3.2.1 + resolution: "istanbul-lib-coverage@npm:3.2.1" + checksum: 382d5f698fed81de5c32a32d91848cba29df097bfce162f3cdd7fb66de7feeace9873d75c9d6bf3e34b1a4cda6be5bd819ec41c4b532c584dbff7c69db85448e languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index 14c672c91c2..0f10b1ec30c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4308,75 +4308,75 @@ __metadata: linkType: hard "@types/aria-query@npm:^5.0.1": - version: 5.0.3 - resolution: "@types/aria-query@npm:5.0.3" - checksum: c06f899fdf1d761cd444f8f359d771f54cdf60bf36495720f1dcdddbf0429d9a9175d8c32f55e74975479dc2ad30e9a7d30f3775cd532aeb52fa2f22dd2d7347 + version: 5.0.4 + resolution: "@types/aria-query@npm:5.0.4" + checksum: ad8b87e4ad64255db5f0a73bc2b4da9b146c38a3a8ab4d9306154334e0fc67ae64e76bfa298eebd1e71830591fb15987e5de7111bdb36a2221bdc379e3415fb0 languageName: node linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.20.3 - resolution: "@types/babel__core@npm:7.20.3" + version: 7.20.4 + resolution: "@types/babel__core@npm:7.20.4" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 8d14acc14d99b4b8bf36c00da368f6d597bd9ae3344aa7048f83f0f701b0463fa7c7bf2e50c3e4382fdbcfd1e4187b3452a0f0888b0f3ae8fad975591f7bdb94 + checksum: 75ed6072213423d2b827740d68bbf96f5a7050ce8bd842dde0ceec8d352d06e847166bac757df4beba55525b65f8727c0432adeb5cb4f83aa42e155ac555767e languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.6 - resolution: "@types/babel__generator@npm:7.6.6" + version: 7.6.7 + resolution: "@types/babel__generator@npm:7.6.7" dependencies: "@babel/types": ^7.0.0 - checksum: 36e8838c7e16eff611447579e840526946a8b14c794c82486cee2a5ad2257aa6cad746d8ecff3144e3721178837d2c25d0a435d384391eb67846b933c062b075 + checksum: 03e96ea327a5238f00c38394a05cc01619b9f5f3ea57371419a1c25cf21676a6d327daf802435819f8cb3b8fa10e938a94bcbaf79a38c132068c813a1807ff93 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.3 - resolution: "@types/babel__template@npm:7.4.3" + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: 55deb814c94d1bfb78c4d1de1de1b73eb17c79374602f3bd8aa14e356a77fca64d01646cebe25ec9b307f53a047acc6d53ad6e931019d0726422f5f911e945aa + checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.3 - resolution: "@types/babel__traverse@npm:7.20.3" + version: 7.20.4 + resolution: "@types/babel__traverse@npm:7.20.4" dependencies: "@babel/types": ^7.20.7 - checksum: 6d0f70d8972647c9b78b51a54f0b6481c4f23f0bb2699ad276e6070678bd121fede99e8e2c8c3e409d2f31a0bf83ae511abc6fefb91f0630c8d728a3a9136790 + checksum: f044ba80e00d07e46ee917c44f96cfc268fcf6d3871f7dfb8db8d3c6dab1508302f3e6bc508352a4a3ae627d2522e3fc500fa55907e0410a08e2e0902a8f3576 languageName: node linkType: hard "@types/cheerio@npm:*": - version: 0.22.33 - resolution: "@types/cheerio@npm:0.22.33" + version: 0.22.34 + resolution: "@types/cheerio@npm:0.22.34" dependencies: "@types/node": "*" - checksum: da4745b4d431b79c0ea046ae831a65f948d889bac5c7fe8b50b38055401e7c736e97c0f499e6506941b3ed4d80e4c5b8736b34fc7ecdcae48be7353eb24230be + checksum: 8795f4ddc68f394d140513817a996dbe148872a7e30218f32cea90e7fb36802726450c7174c0b7cd27bd8bf179f20d2c0a43a9064547df3c51b8960711582a13 languageName: node linkType: hard "@types/color-convert@npm:*": - version: 2.0.2 - resolution: "@types/color-convert@npm:2.0.2" + version: 2.0.3 + resolution: "@types/color-convert@npm:2.0.3" dependencies: "@types/color-name": "*" - checksum: fdfefcff76088cc1a5229a7c03886e64802b99a0f0d7022152feddcc7460781e8061c31e27bd355d2531f2dc3977de3081e8e7f0880dc1f4002e46e7e8e57625 + checksum: bb6649b49a9da85435c0076c0b00183b972ee2ccbebb7f2f20e58843f081616bba054280fad96fe19e8bb998b3494a3f4c105dea6fef31147f92097f2c08f1ca languageName: node linkType: hard "@types/color-name@npm:*": - version: 1.1.2 - resolution: "@types/color-name@npm:1.1.2" - checksum: 4fa24be926870ddab3ea76ebfd4d5f23aa53f79b029050d1b01bb9f52a92ab9eb5c4e1fb61792a039355ef5ff95f93a7a4f067bfc652f1b576c64e2761670cc7 + version: 1.1.3 + resolution: "@types/color-name@npm:1.1.3" + checksum: 9060d16d0bce2cdf562d6da54e18c5f23e80308ccb58b725b9173a028818f27d8e01c8a5cd96952e76f11145a7388ed7d2f450fb4652f4760383834f2e698263 languageName: node linkType: hard @@ -4406,29 +4406,29 @@ __metadata: linkType: hard "@types/eslint-scope@npm:^3.7.3": - version: 3.7.6 - resolution: "@types/eslint-scope@npm:3.7.6" + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" dependencies: "@types/eslint": "*" "@types/estree": "*" - checksum: a2339e312949ae7f96bca52cde89a3d2218d4505746a78a0ba1aa56573e43b3d52ce9662b86ab785663a62fa8f2bd2fb61b990398785b40f2efc91be3fd246f8 + checksum: e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e languageName: node linkType: hard "@types/eslint@npm:*, @types/eslint@npm:^8": - version: 8.44.6 - resolution: "@types/eslint@npm:8.44.6" + version: 8.44.7 + resolution: "@types/eslint@npm:8.44.7" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: ed8de582ab3dbd7ec0bf97d41f4f3de28dd8a37fc48bc423e1c406bbb70d1fd8c4175ba17ad6495ef9ef99a43df71421277b7a2a0355097489c4c4cf6bb266ff + checksum: 72a52f74477fbe7cc95ad290b491f51f0bc547cb7ea3672c68da3ffd3fb21ba86145bc36823a37d0a186caedeaee15b2d2a6b4c02c6c55819ff746053bd28310 languageName: node linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.4 - resolution: "@types/estree@npm:1.0.4" - checksum: dcd08e6e967def3afff745774b6b9b912d6394ddacbb3e8be05bb291c1803f5f03f1ab0eeb852bf8a85ca14842663f461f3dac82179dcdccbf45fbc067673bbc + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a languageName: node linkType: hard @@ -4457,21 +4457,21 @@ __metadata: linkType: hard "@types/graceful-fs@npm:^4.1.3": - version: 4.1.8 - resolution: "@types/graceful-fs@npm:4.1.8" + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" dependencies: "@types/node": "*" - checksum: 6e1ee9c119e075134696171b680fee7b627f3e077ec5e5ad9ba9359f1688a84fa35ea6804f96922c43ca30ab8d4ca9531a526b64f57fa13e1d721bf741884829 + checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 languageName: node linkType: hard "@types/hoist-non-react-statics@npm:^3.3.0, @types/hoist-non-react-statics@npm:^3.3.1": - version: 3.3.4 - resolution: "@types/hoist-non-react-statics@npm:3.3.4" + version: 3.3.5 + resolution: "@types/hoist-non-react-statics@npm:3.3.5" dependencies: "@types/react": "*" hoist-non-react-statics: ^3.3.0 - checksum: dee430941a9ea16b7f665ecafa9b134066a49d13ae497fc051cf5d41b3aead394ab1a8179c3c98c9a3584f80aed16fab82dd7979c7dcddfbb5f74a132575d362 + checksum: b645b062a20cce6ab1245ada8274051d8e2e0b2ee5c6bd58215281d0ec6dae2f26631af4e2e7c8abe238cdcee73fcaededc429eef569e70908f82d0cc0ea31d7 languageName: node linkType: hard @@ -4483,27 +4483,27 @@ __metadata: linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.5 - resolution: "@types/istanbul-lib-coverage@npm:2.0.5" - checksum: 978eaf327f9a238eb1e2828b93b4b48e288ffb88c4be81330c74477ab8b93fac41a8784260d72bdd9995535d70608f738199b6364fd3344842e924a3ec3301e7 + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 languageName: node linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.2 - resolution: "@types/istanbul-lib-report@npm:3.0.2" + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" dependencies: "@types/istanbul-lib-coverage": "*" - checksum: 549e44e14a4dc98164ce477ca8650d33898e5c74a6bb8079cbec7f811567dcb805a3bfdbf83ce53222eaecc37ae53aa7f25bda1a7d8347449155c8f0b4f30232 + checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 languageName: node linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.3 - resolution: "@types/istanbul-reports@npm:3.0.3" + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" dependencies: "@types/istanbul-lib-report": "*" - checksum: 21d007be7dd09165ed24f5cc9947319ad435fc3b3e568f3eec0a42ee80fd2adccdeb929bc1311efb2cf7597835638cde865d3630d8b4c15d1390c9527bcad1a9 + checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 languageName: node linkType: hard @@ -4527,11 +4527,11 @@ __metadata: linkType: hard "@types/jquery@npm:^3": - version: 3.5.25 - resolution: "@types/jquery@npm:3.5.25" + version: 3.5.26 + resolution: "@types/jquery@npm:3.5.26" dependencies: "@types/sizzle": "*" - checksum: 912ce4212447a7c640147345c6b46bde5b12bafc2c97e1abc76939174c3109e3dbb361a534af717be2da4e907bc257558a6bc631971fcc47f7e5f044d315183e + checksum: 4c46902939d35a791a798f44567ef485d7aacf709a93e6f18d3fe4060c79183829b12050c53576014c4e25ee7bfd42e545e6b9c721a28f3e9d53e24d46653b3c languageName: node linkType: hard @@ -4565,9 +4565,9 @@ __metadata: linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.14 - resolution: "@types/json-schema@npm:7.0.14" - checksum: 4b3dd99616c7c808201c56f6c7f6552eb67b5c0c753ab3fa03a6cb549aae950da537e9558e53fa65fba23d1be624a1e4e8d20c15027efbe41e03ca56f2b04fb0 + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 languageName: node linkType: hard @@ -4579,11 +4579,11 @@ __metadata: linkType: hard "@types/jsonfile@npm:*": - version: 6.1.3 - resolution: "@types/jsonfile@npm:6.1.3" + version: 6.1.4 + resolution: "@types/jsonfile@npm:6.1.4" dependencies: "@types/node": "*" - checksum: 3f2d0060a567f78b5d666971d5371e72f37294cbfc19069912c76ba9585d209ceb5aac421658f2b3ab922f96b8df53081e9f51d09aef34f2b4882b813a0e0c38 + checksum: 309fda20eb5f1cf68f2df28931afdf189c5e7e6bec64ac783ce737bb98908d57f6f58757ad5da9be37b815645a6f914e2d4f3ac66c574b8fe1ba6616284d0e97 languageName: node linkType: hard @@ -4604,13 +4604,20 @@ __metadata: linkType: hard "@types/libsodium-wrappers@npm:*, @types/libsodium-wrappers@npm:^0": - version: 0.7.12 - resolution: "@types/libsodium-wrappers@npm:0.7.12" - checksum: 8f25b4ffe6b60c36f3c59b3dea2e952b8790c9b8375ee5235e6d294c1519a578b7882d773f168005eb0f3fdb4f11e06ba27b30b89d2c3b8be3f985c7eedd0491 + version: 0.7.13 + resolution: "@types/libsodium-wrappers@npm:0.7.13" + checksum: 94d608bed8ccd364754c3a7bf5d4c770b229efa33f0c475061b1b82bb8d5da8d57a72df0b8876b887077edbb6ff9594b7a1183029de4d1ad679821d1013f3db9 languageName: node linkType: hard -"@types/linkify-it@npm:*, @types/linkify-it@npm:3.0.4": +"@types/linkify-it@npm:*": + version: 3.0.5 + resolution: "@types/linkify-it@npm:3.0.5" + checksum: fac28f41a6e576282300a459d70ea0d33aab70dbb77c3d09582bb0335bb00d862b6de69585792a4d590aae4173fbab0bf28861e2d90ca7b2b1439b52688e9ff6 + languageName: node + linkType: hard + +"@types/linkify-it@npm:3.0.4": version: 3.0.4 resolution: "@types/linkify-it@npm:3.0.4" checksum: cd873857faf77231811a5ee49aadffdbdd7c6309b92ca004cb28320993858d2e30cad7b343c6db928763ed0f766c6ed140e0f995536e488a1447a527b6f8127f @@ -4618,11 +4625,11 @@ __metadata: linkType: hard "@types/loadable__component@npm:^5": - version: 5.13.6 - resolution: "@types/loadable__component@npm:5.13.6" + version: 5.13.7 + resolution: "@types/loadable__component@npm:5.13.7" dependencies: "@types/react": "*" - checksum: 2167af14ac6f0d8be45baeb5a7a4754d2eb513ff65696865d719fb05701272f9d40d6db512c563ee91289189faa86c3b46a91d2f5ac65f007f3e1e59c1ff83da + checksum: 48d1c90b7f96c4bde4e65c1b715a4a3ce13537a3e069ce5f7395ea48c17158dd214aa17cd56472863bfec5ecc58f5e8d4a28cf2bada151767c73cc12f4c6d4f6 languageName: node linkType: hard @@ -4647,16 +4654,16 @@ __metadata: linkType: hard "@types/mdurl@npm:*": - version: 1.0.4 - resolution: "@types/mdurl@npm:1.0.4" - checksum: b55f2ea3d6711187cb36a2887287413da6428b28b1f26a824245ddc6485907725f5364a9f9f29709bb366c69ce8356ffd69140ed37eda6a224c1ab18bd0f0338 + version: 1.0.5 + resolution: "@types/mdurl@npm:1.0.5" + checksum: e8e872e8da8f517a9c748b06cec61c947cb73fd3069e8aeb0926670ec5dfac5d30549b3d0f1634950401633e812f9b7263f2d5dbe7e98fce12bcb2c659aa4b21 languageName: node linkType: hard "@types/minimist@npm:^1.2.2": - version: 1.2.4 - resolution: "@types/minimist@npm:1.2.4" - checksum: d7912f9a466312cbc1333800272b9208178140ef4da2ccec3fa82231c8e67f57f84275b3c19109c4f68f1b7b057baeacc6b80af1de14b58b46e6b54233e44c6a + version: 1.2.5 + resolution: "@types/minimist@npm:1.2.5" + checksum: 477047b606005058ab0263c4f58097136268007f320003c348794f74adedc3166ffc47c80ec3e94687787f2ab7f4e72c468223946e79892cf0fd9e25e9970a90 languageName: node linkType: hard @@ -4773,14 +4780,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:18.2.35": - version: 18.2.35 - resolution: "@types/react@npm:18.2.35" +"@types/react@npm:18.2.36": + version: 18.2.36 + resolution: "@types/react@npm:18.2.36" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: d3f1c39116c82e3a504f3332b9198f94f34a33d8535604434b1e387ecabd41ec995961775e2e1c08feefdde878a5b86220879350900137980d681ae3983db462 + checksum: 561fab294117983f3d245a63730bcffb423fc2a1b0f27d20c870abc5d980bc206a74f741cb11b5170fcdf0e747ac05448369cd930fbf345f74ed567f8fef3a9e languageName: node linkType: hard @@ -4903,23 +4910,23 @@ __metadata: linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.29 - resolution: "@types/yargs@npm:17.0.29" + version: 17.0.30 + resolution: "@types/yargs@npm:17.0.30" dependencies: "@types/yargs-parser": "*" - checksum: 8bbc0edd573a5a084cb13a9985c124490fd74e73b1ed8a3058861c13124e103b00a19770dc55c53215653a7845d7033e0695917b75153cfe9618d5b2fd3cf86e + checksum: 62d9e23923420a7353253512b45289a1928d5eeb073bb2fee947257ba41fcc5bc6f78b9e087162ea2e00c7e98d27d043ef85615ad856f0d7def5c6d60f610e58 languageName: node linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.0.0": - version: 6.9.1 - resolution: "@typescript-eslint/eslint-plugin@npm:6.9.1" + version: 6.10.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.10.0" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.9.1 - "@typescript-eslint/type-utils": 6.9.1 - "@typescript-eslint/utils": 6.9.1 - "@typescript-eslint/visitor-keys": 6.9.1 + "@typescript-eslint/scope-manager": 6.10.0 + "@typescript-eslint/type-utils": 6.10.0 + "@typescript-eslint/utils": 6.10.0 + "@typescript-eslint/visitor-keys": 6.10.0 debug: ^4.3.4 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -4932,25 +4939,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 71ad2487ab3ce23dc8ac58e8f402c0bd23883dbcb045d049b8adf126d1f7c4f386655f0e25d316db256f91663d436683cbf101e45aed9e1d248cd843b7fa22f9 + checksum: eaf1f66ae1915426dad8d229c8cb80d2b320572a30c3fbc57d560d40edc2d17d004101a2fcbe331bc458df19a00f8b705f2442ee02e028bb595f4e9f9152e99d languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.0.0": - version: 6.9.1 - resolution: "@typescript-eslint/parser@npm:6.9.1" + version: 6.10.0 + resolution: "@typescript-eslint/parser@npm:6.10.0" dependencies: - "@typescript-eslint/scope-manager": 6.9.1 - "@typescript-eslint/types": 6.9.1 - "@typescript-eslint/typescript-estree": 6.9.1 - "@typescript-eslint/visitor-keys": 6.9.1 + "@typescript-eslint/scope-manager": 6.10.0 + "@typescript-eslint/types": 6.10.0 + "@typescript-eslint/typescript-estree": 6.10.0 + "@typescript-eslint/visitor-keys": 6.10.0 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: aabca4e9751c0caf48477a75a811e1f96176ddea26465d5654579a1a5288d1bb959bf4426207ee22f7dcfb2f1ab50ade2bbf49fee555e1b4ca8abebd47fe26fb + checksum: c4b140932d639b3f3eac892497aa700bcc9101ef268285020757dc9bee670d122de107e936320af99a5c06569e4eb93bccf87f14a9970ceab708c432e748423a languageName: node linkType: hard @@ -4964,22 +4971,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/scope-manager@npm:6.9.1" +"@typescript-eslint/scope-manager@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/scope-manager@npm:6.10.0" dependencies: - "@typescript-eslint/types": 6.9.1 - "@typescript-eslint/visitor-keys": 6.9.1 - checksum: 3b48f7c939ab4668e150360756b84310467306700b874d028614b337e894d1db79f9898e3d20b9d60ef40c219160d653791ed61058c8857059c310c904a4c6a8 + "@typescript-eslint/types": 6.10.0 + "@typescript-eslint/visitor-keys": 6.10.0 + checksum: c9b9483082ae853f10b888cf04d4a14f666ac55e749bfdb7b7f726fc51127a6340b5e2f50d93f134a8854ddcc41f7b116b214753251a8b033d0d84c600439c54 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/type-utils@npm:6.9.1" +"@typescript-eslint/type-utils@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/type-utils@npm:6.10.0" dependencies: - "@typescript-eslint/typescript-estree": 6.9.1 - "@typescript-eslint/utils": 6.9.1 + "@typescript-eslint/typescript-estree": 6.10.0 + "@typescript-eslint/utils": 6.10.0 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -4987,7 +4994,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 39cf4831ebe3618ffd47f85b2425d8fba746cf2087d16f99e021a66a148c3c52034f68854acfde9c01816e363e699e59e16606482937051418b86a60593f850a + checksum: cfe9520cf0c0f50b115d2591acb2abf99ffe5789b3536268ca65b624c8498812d91f187e80c41bea7cf2cebad9c38f69ef27440f872a20fb53c59856d8f5df38 languageName: node linkType: hard @@ -4998,10 +5005,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/types@npm:6.9.1" - checksum: f9208af83e8117cdeb48655bbb436339b8b2369421cda0cc7ae7c7bb44a2743a5b2702c9c9f7ccbe261fbac63083c6e357a015a20903cb8dfed3e754f8fb40e3 +"@typescript-eslint/types@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/types@npm:6.10.0" + checksum: e63a9e05eb3d736d02a09131627d5cb89394bf0d9d6b46fb4b620be902d89d73554720be65acbc194787bff9ffcd518c9a6cf88fd63e418232b4181e8d8438df languageName: node linkType: hard @@ -5023,12 +5030,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/typescript-estree@npm:6.9.1" +"@typescript-eslint/typescript-estree@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.10.0" dependencies: - "@typescript-eslint/types": 6.9.1 - "@typescript-eslint/visitor-keys": 6.9.1 + "@typescript-eslint/types": 6.10.0 + "@typescript-eslint/visitor-keys": 6.10.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -5037,24 +5044,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 3824629963e05a70944788da00711e35ac9ba72be690add5b3d771b2aa5a7d1f9bcf974e0170e6ee644090c96b9e0496d781dd4f4893e6e24652e7dae876c293 + checksum: 15bd8d9239a557071d6b03e7aa854b769fcc2dbdff587ed94be7ee8060dabdb05bcae4251df22432f625f82087e7f6986e9aab04f7eea35af694d4edd76a21af languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/utils@npm:6.9.1" +"@typescript-eslint/utils@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/utils@npm:6.10.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 "@types/json-schema": ^7.0.12 "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.9.1 - "@typescript-eslint/types": 6.9.1 - "@typescript-eslint/typescript-estree": 6.9.1 + "@typescript-eslint/scope-manager": 6.10.0 + "@typescript-eslint/types": 6.10.0 + "@typescript-eslint/typescript-estree": 6.10.0 semver: ^7.5.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 124db80dbe849cfb951d97a3b2dd04a8dd4d7be2f6db7d2782943e84bbf3fad210f884a16ffa8ead48fd4c43b22c3132abcd9a4f2da9d94a99c473a7bb04f2e7 + checksum: b6bd4d68623fb8d616ae63a88f2954258411a0cc113029fba801d1e74b4c0319fdfbcac0070527afe5cc38c012c8718e4faecd1603000924d7b89e8fefc3f24d languageName: node linkType: hard @@ -5086,13 +5093,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.9.1": - version: 6.9.1 - resolution: "@typescript-eslint/visitor-keys@npm:6.9.1" +"@typescript-eslint/visitor-keys@npm:6.10.0": + version: 6.10.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.10.0" dependencies: - "@typescript-eslint/types": 6.9.1 + "@typescript-eslint/types": 6.10.0 eslint-visitor-keys: ^3.4.1 - checksum: 4262055a71d9f54d576df915a80050ad1ad01ef13301e67a1494ca34712a73b9f31f0d06830c582d8dd7483681368aa769575f9db03cb5a8e910efc435f0e78a + checksum: 9640bfae41e6109ffba31e68b1720382de0538d021261e2fc9e514c83c703084393c0818ca77ed26b950273e45e593371120281e8d4bbd09cb8c2d46c9fe4f03 languageName: node linkType: hard @@ -8281,9 +8288,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.535": - version: 1.4.576 - resolution: "electron-to-chromium@npm:1.4.576" - checksum: cf26065d95b0ecdd01f6daeec15b1e684a3b39680ae9f6d5d33c1391a6c1aa5ea2cb81cce699878e4fbb942328fc1076726f2d9ab1e8df9fbe02c84f1a5bbf1f + version: 1.4.577 + resolution: "electron-to-chromium@npm:1.4.577" + checksum: 822af571c8c94934655e46f77057bdce5474e1bcf7ceaa8a62fcec68554855d92f3d55de13b93d190ac88892ae89d0733645344c056bf684b190ca5db8ec1040 languageName: node linkType: hard @@ -9254,15 +9261,15 @@ __metadata: linkType: hard "fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.1": - version: 3.3.1 - resolution: "fast-glob@npm:3.3.1" + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 glob-parent: ^5.1.2 merge2: ^1.3.0 micromatch: ^4.0.4 - checksum: b6f3add6403e02cf3a798bfbb1183d0f6da2afd368f27456010c0bc1f9640aea308243d4cb2c0ab142f618276e65ecb8be1661d7c62a7b4e5ba774b9ce5432e5 + checksum: 900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec1 languageName: node linkType: hard @@ -11240,9 +11247,9 @@ __metadata: linkType: hard "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.0 - resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 + version: 3.2.1 + resolution: "istanbul-lib-coverage@npm:3.2.1" + checksum: 382d5f698fed81de5c32a32d91848cba29df097bfce162f3cdd7fb66de7feeace9873d75c9d6bf3e34b1a4cda6be5bd819ec41c4b532c584dbff7c69db85448e languageName: node linkType: hard From 093b9b616bf4bc0676630fc3f6afde9f6c081890 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Tue, 7 Nov 2023 12:46:01 +0100 Subject: [PATCH 49/95] restore files from dev --- package.json | 2 - server/yarn.lock | 604 ++++++++++++--------- yarn.lock | 1343 ++++++++++++++++++++++++---------------------- 3 files changed, 1052 insertions(+), 897 deletions(-) diff --git a/package.json b/package.json index bdf77f72bfd..b300f06a4b7 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,6 @@ "@emotion/react": "11.11.1", "@lexical/history": "0.12.2", "@lexical/react": "0.12.2", - "@loadable/component": "5.15.3", "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.5.2", "@wireapp/commons": "5.2.2", @@ -86,7 +85,6 @@ "@types/node": "^20.8.10", "@types/open-graph": "0.2.4", "@types/platform": "1.3.5", - "@types/prettier": "^2.7.3", "@types/react": "18.2.33", "@types/react-dom": "18.2.14", "@types/react-redux": "7.1.28", diff --git a/server/yarn.lock b/server/yarn.lock index b4630ad2047..9575c09d4e6 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -705,25 +705,12 @@ __metadata: linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.20 - resolution: "@jridgewell/trace-mapping@npm:0.3.20" + version: 0.3.19 + resolution: "@jridgewell/trace-mapping@npm:0.3.19" dependencies: "@jridgewell/resolve-uri": ^3.1.0 "@jridgewell/sourcemap-codec": ^1.4.14 - checksum: cd1a7353135f385909468ff0cf20bdd37e59f2ee49a13a966dedf921943e222082c583ade2b579ff6cd0d8faafcb5461f253e1bf2a9f48fec439211fdbe788f5 - languageName: node - linkType: hard - -"@npmcli/agent@npm:^2.0.0": - version: 2.2.0 - resolution: "@npmcli/agent@npm:2.2.0" - dependencies: - agent-base: ^7.1.0 - http-proxy-agent: ^7.0.0 - https-proxy-agent: ^7.0.1 - lru-cache: ^10.0.1 - socks-proxy-agent: ^8.0.1 - checksum: 3b25312edbdfaa4089af28e2d423b6f19838b945e47765b0c8174c1395c79d43c3ad6d23cb364b43f59fd3acb02c93e3b493f72ddbe3dfea04c86843a7311fc4 + checksum: 956a6f0f6fec060fb48c6bf1f5ec2064e13cd38c8be3873877d4b92b4a27ba58289a34071752671262a3e3c202abcc3fa2aac64d8447b4b0fa1ba3c9047f1c20 languageName: node linkType: hard @@ -865,6 +852,13 @@ __metadata: languageName: node linkType: hard +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + languageName: node + linkType: hard + "@tootallnate/quickjs-emscripten@npm:^0.23.0": version: 0.23.0 resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0" @@ -873,74 +867,74 @@ __metadata: linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.20.4 - resolution: "@types/babel__core@npm:7.20.4" + version: 7.20.2 + resolution: "@types/babel__core@npm:7.20.2" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 75ed6072213423d2b827740d68bbf96f5a7050ce8bd842dde0ceec8d352d06e847166bac757df4beba55525b65f8727c0432adeb5cb4f83aa42e155ac555767e + checksum: 564fbaa8ff1305d50807ada0ec227c3e7528bebb2f8fe6b2ed88db0735a31511a74ad18729679c43eeed8025ed29d408f53059289719e95ab1352ed559a100bd languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.7 - resolution: "@types/babel__generator@npm:7.6.7" + version: 7.6.5 + resolution: "@types/babel__generator@npm:7.6.5" dependencies: "@babel/types": ^7.0.0 - checksum: 03e96ea327a5238f00c38394a05cc01619b9f5f3ea57371419a1c25cf21676a6d327daf802435819f8cb3b8fa10e938a94bcbaf79a38c132068c813a1807ff93 + checksum: c7459f5025c4c800eaf58f4db3b24e9d736331fe7df40961d9bc49f31b46e2a3be83dc9276e8688f10a5ed752ae153ad5f1bdd45e2245bac95273730b9115ec2 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" + version: 7.4.2 + resolution: "@types/babel__template@npm:7.4.2" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 + checksum: 0fe977b45a3269336c77f3ae4641a6c48abf0fa35ab1a23fb571690786af02d6cec08255a43499b0b25c5633800f7ae882ace450cce905e3060fa9e6995047ae languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.4 - resolution: "@types/babel__traverse@npm:7.20.4" + version: 7.20.2 + resolution: "@types/babel__traverse@npm:7.20.2" dependencies: "@babel/types": ^7.20.7 - checksum: f044ba80e00d07e46ee917c44f96cfc268fcf6d3871f7dfb8db8d3c6dab1508302f3e6bc508352a4a3ae627d2522e3fc500fa55907e0410a08e2e0902a8f3576 + checksum: 981340286479524436348d32373eaa3bf993c635cbf70307b4b69463eee83406a959ac4844f683911e0db8ab8d9f0025ab630dc7a8c170fee9ee74144c2a528f languageName: node linkType: hard "@types/body-parser@npm:*": - version: 1.19.5 - resolution: "@types/body-parser@npm:1.19.5" + version: 1.19.3 + resolution: "@types/body-parser@npm:1.19.3" dependencies: "@types/connect": "*" "@types/node": "*" - checksum: 1e251118c4b2f61029cc43b0dc028495f2d1957fe8ee49a707fb940f86a9bd2f9754230805598278fe99958b49e9b7e66eec8ef6a50ab5c1f6b93e1ba2aaba82 + checksum: 932fa71437c275023799123680ef26ffd90efd37f51a1abe405e6ae6e5b4ad9511b7a3a8f5a12877ed1444a02b6286c0a137a98e914b3c61932390c83643cc2c languageName: node linkType: hard "@types/connect@npm:*": - version: 3.4.38 - resolution: "@types/connect@npm:3.4.38" + version: 3.4.36 + resolution: "@types/connect@npm:3.4.36" dependencies: "@types/node": "*" - checksum: 7eb1bc5342a9604facd57598a6c62621e244822442976c443efb84ff745246b10d06e8b309b6e80130026a396f19bf6793b7cecd7380169f369dac3bfc46fb99 + checksum: 4dee3d966fb527b98f0cbbdcf6977c9193fc3204ed539b7522fe5e64dfa45f9017bdda4ffb1f760062262fce7701a0ee1c2f6ce2e50af36c74d4e37052303172 languageName: node linkType: hard "@types/express-serve-static-core@npm:^4.17.33": - version: 4.17.41 - resolution: "@types/express-serve-static-core@npm:4.17.41" + version: 4.17.37 + resolution: "@types/express-serve-static-core@npm:4.17.37" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" "@types/send": "*" - checksum: 12750f6511dd870bbaccfb8208ad1e79361cf197b147f62a3bedc19ec642f3a0f9926ace96705f4bc88ec2ae56f61f7ca8c2438e6b22f5540842b5569c28a121 + checksum: 2dab1380e45eb44e56ecc1be1c42c4b897364d2f2a08e03ca28fbcb1e6866e390217385435813711c046f9acd684424d088855dc32825d5cbecf72c60ecd037f languageName: node linkType: hard @@ -963,14 +957,14 @@ __metadata: linkType: hard "@types/express@npm:*": - version: 4.17.21 - resolution: "@types/express@npm:4.17.21" + version: 4.17.19 + resolution: "@types/express@npm:4.17.19" dependencies: "@types/body-parser": "*" "@types/express-serve-static-core": ^4.17.33 "@types/qs": "*" "@types/serve-static": "*" - checksum: fb238298630370a7392c7abdc80f495ae6c716723e114705d7e3fb67e3850b3859bbfd29391463a3fb8c0b32051847935933d99e719c0478710f8098ee7091c5 + checksum: 3d39d0655eb0825d96fec100985a38737767ddd6da2dbda1e330a3adf36c98a9b7cd8d9539db32876d1fbb47a09343cad7b38c30c8dd7c291271fcb9b85cb21b languageName: node linkType: hard @@ -1004,11 +998,11 @@ __metadata: linkType: hard "@types/graceful-fs@npm:^4.1.3": - version: 4.1.9 - resolution: "@types/graceful-fs@npm:4.1.9" + version: 4.1.7 + resolution: "@types/graceful-fs@npm:4.1.7" dependencies: "@types/node": "*" - checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 + checksum: 8b97e208f85c9efd02a6003a582c77646dd87be0af13aec9419a720771560a8a87a979eaca73ae193d7c73127f34d0a958403a9b5d6246e450289fd8c79adf09 languageName: node linkType: hard @@ -1022,34 +1016,34 @@ __metadata: linkType: hard "@types/http-errors@npm:*": - version: 2.0.4 - resolution: "@types/http-errors@npm:2.0.4" - checksum: 1f3d7c3b32c7524811a45690881736b3ef741bf9849ae03d32ad1ab7062608454b150a4e7f1351f83d26a418b2d65af9bdc06198f1c079d75578282884c4e8e3 + version: 2.0.2 + resolution: "@types/http-errors@npm:2.0.2" + checksum: d7f14045240ac4b563725130942b8e5c8080bfabc724c8ff3f166ea928ff7ae02c5194763bc8f6aaf21897e8a44049b0492493b9de3e058247e58fdfe0f86692 languageName: node linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.6 - resolution: "@types/istanbul-lib-coverage@npm:2.0.6" - checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 + version: 2.0.4 + resolution: "@types/istanbul-lib-coverage@npm:2.0.4" + checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 languageName: node linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.3 - resolution: "@types/istanbul-lib-report@npm:3.0.3" + version: 3.0.1 + resolution: "@types/istanbul-lib-report@npm:3.0.1" dependencies: "@types/istanbul-lib-coverage": "*" - checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 + checksum: cfc66de48577bb7b2636a6afded7056483693c3ea70916276518cdfaa0d4b51bf564ded88fb13e75716665c3af3d4d54e9c2de042c0219dcabad7e81c398688b languageName: node linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/istanbul-reports@npm:3.0.4" + version: 3.0.2 + resolution: "@types/istanbul-reports@npm:3.0.2" dependencies: "@types/istanbul-lib-report": "*" - checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 + checksum: f52028d6fe4d28f0085dd7ed66ccfa6af632579e9a4091b90928ffef93d4dbec0bacd49e9caf1b939d05df9eafc5ac1f5939413cdf8ac59fbe4b29602d4d0939 languageName: node linkType: hard @@ -1064,34 +1058,34 @@ __metadata: linkType: hard "@types/jsonfile@npm:*": - version: 6.1.4 - resolution: "@types/jsonfile@npm:6.1.4" + version: 6.1.2 + resolution: "@types/jsonfile@npm:6.1.2" dependencies: "@types/node": "*" - checksum: 309fda20eb5f1cf68f2df28931afdf189c5e7e6bec64ac783ce737bb98908d57f6f58757ad5da9be37b815645a6f914e2d4f3ac66c574b8fe1ba6616284d0e97 + checksum: 3e020944de09e54ef7c4200dfbbedba76da417a58c712611ff9d30921e214dfabbe81dadd4d6608647a3ee8900d445407d7336dd991b8fe6df4249320ad4a1b4 languageName: node linkType: hard "@types/mime@npm:*": - version: 3.0.3 - resolution: "@types/mime@npm:3.0.3" - checksum: d905a6b4736cc60fb56b39776b77ba0e10983d39f0aefc0034dc895b6ef90780e2f2e0a8c576539adb2963741a5aa67a6924d8940b0f7250f69e3e68a57f93b5 + version: 3.0.2 + resolution: "@types/mime@npm:3.0.2" + checksum: 09cf74f6377d1b27f4a24512cb689ad30af59880ac473ed6f7bc5285ecde88bbe8fe500789340ad57810da9d6fe1704f86e8bfe147b9ea76d58925204a60b906 languageName: node linkType: hard "@types/mime@npm:^1": - version: 1.3.4 - resolution: "@types/mime@npm:1.3.4" - checksum: d8670d2993773903e00fc0d7aa3254be2f8b384300ce3278999d057afbb80a5f71543d656d9d9725d691088c0b94e4acfca84359becf122cdf5942e53c9a75ce + version: 1.3.3 + resolution: "@types/mime@npm:1.3.3" + checksum: 7e27dede6517c1d604821a8a5412d6b7131decc8397ad4bac9216fc90dea26c9571426623ebeea2a9b89dbfb89ad98f7370a3c62cd2be8896c6e897333b117c9 languageName: node linkType: hard "@types/node@npm:*": - version: 20.8.10 - resolution: "@types/node@npm:20.8.10" + version: 20.8.6 + resolution: "@types/node@npm:20.8.6" dependencies: - undici-types: ~5.26.4 - checksum: 7c61190e43e8074a1b571e52ff14c880bc67a0447f2fe5ed0e1a023eb8a23d5f815658edb98890f7578afe0f090433c4a635c7c87311762544e20dd78723e515 + undici-types: ~5.25.1 + checksum: ccfb7ac482c5a96edeb239893c5c099f5257fcc2ed9ae62fefdfbc782b79e16dbc2af9a85b379665237bf759904b44ca2be68e75d239e0297882aad42f61905c languageName: node linkType: hard @@ -1103,60 +1097,60 @@ __metadata: linkType: hard "@types/qs@npm:*": - version: 6.9.9 - resolution: "@types/qs@npm:6.9.9" - checksum: 03ddbd032bcaa8f07429efe9de6d0fc027ccdd1e24eac1656bd931c2210c204bbc25be0937a9d46702fb6262fb6ffcc2980e040b399b62a3f91ec6e387c2edae + version: 6.9.8 + resolution: "@types/qs@npm:6.9.8" + checksum: c28e07d00d07970e5134c6eed184a0189b8a4649e28fdf36d9117fe671c067a44820890de6bdecef18217647a95e9c6aebdaaae69f5fe4b0bec9345db885f77e languageName: node linkType: hard "@types/range-parser@npm:*": - version: 1.2.6 - resolution: "@types/range-parser@npm:1.2.6" - checksum: 22decf0fa30a5fb5b26b9d30052c8eca1dddf55449c87031c8d58a4e2e75c606d7bab6a1409988c96f774eb0ebf814147d47c76487d1d0d83441f1ab26bd5d6a + version: 1.2.5 + resolution: "@types/range-parser@npm:1.2.5" + checksum: db9aaa04a02d019395a9a4346475669a2864a32a6477ad0fc457bd2ef39a167cabe742f55a8a3fa8bc90abac795b716c22b37348bc3e19313ebe6c9310815233 languageName: node linkType: hard "@types/send@npm:*": - version: 0.17.3 - resolution: "@types/send@npm:0.17.3" + version: 0.17.2 + resolution: "@types/send@npm:0.17.2" dependencies: "@types/mime": ^1 "@types/node": "*" - checksum: 2162f917f1015e7218b8a1f51a70c16ae647e1c4e16f940acae9fb326455d6031b33b3868b40bda8ba8d3d577013f64176f30a37f1a2aa3ce4f999a808f34397 + checksum: 1ff5b1bd6a4f6fdc6402c7024781ff5dbd0e1f51a43c69529fb67c710943c7416d2f0d77c57c70fccf6616f25f838f32f960284526e408d4edae2e91e1fce95a languageName: node linkType: hard "@types/serve-static@npm:*": - version: 1.15.4 - resolution: "@types/serve-static@npm:1.15.4" + version: 1.15.3 + resolution: "@types/serve-static@npm:1.15.3" dependencies: "@types/http-errors": "*" "@types/mime": "*" "@types/node": "*" - checksum: e2e71916d262cac05fa36c3178c3bcc5c0f2fb801f9dc3c4ee58864b7b2bd69b6fb0e312f60e3f19e0ba7206ea57964652a4a3251125121a463acb34dfc9f636 + checksum: afa52252f0ba94cdb5391e80f23e17fd629bdf2a31be8876e2c4490312ed6b0570822dd7de7cea04c9002049e207709563568b7f4ee10bb9f456321db1e83e40 languageName: node linkType: hard "@types/stack-utils@npm:^2.0.0": - version: 2.0.2 - resolution: "@types/stack-utils@npm:2.0.2" - checksum: 777cc7ac0c1000c5a07561013bcf7bd8477a3d55f55f376ee2f0c586331f7b999f57788140cfbdb65f6d7d97c0c41fe8fe6c778fd3ed71859c9b681ea76fc621 + version: 2.0.1 + resolution: "@types/stack-utils@npm:2.0.1" + checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 languageName: node linkType: hard "@types/yargs-parser@npm:*": - version: 21.0.2 - resolution: "@types/yargs-parser@npm:21.0.2" - checksum: e979051aac91d778fdb3953aced8cf039d954c3936b910b57735b7b52a413d065e6b2aea1cb2c583f6c23296a6f8543d2541879d798f0afedd7409a562b7bdeb + version: 21.0.1 + resolution: "@types/yargs-parser@npm:21.0.1" + checksum: 64e6316c2045e2d460c4fb79572f872f9d2f98fddc6d9d3949c71f0b6ad0ef8a2706cf49db26dfb02a9cb81433abb8f340f015e1d20a9692279abe9477b72c8e languageName: node linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.30 - resolution: "@types/yargs@npm:17.0.30" + version: 17.0.28 + resolution: "@types/yargs@npm:17.0.28" dependencies: "@types/yargs-parser": "*" - checksum: 62d9e23923420a7353253512b45289a1928d5eeb073bb2fee947257ba41fcc5bc6f78b9e087162ea2e00c7e98d27d043ef85615ad856f0d7def5c6d60f610e58 + checksum: f78c5e5c29903933c0557b4ffcd1d0b8564d66859c8ca4aa51da3714e49109ed7c2644334a1918d033df19028f4cecc91fd2e502651bb8e8451f246c371da847 languageName: node linkType: hard @@ -1172,10 +1166,10 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f36 +"abbrev@npm:^1.0.0": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 languageName: node linkType: hard @@ -1189,6 +1183,15 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: 4 + checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + languageName: node + linkType: hard + "agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": version: 7.1.0 resolution: "agent-base@npm:7.1.0" @@ -1198,6 +1201,15 @@ __metadata: languageName: node linkType: hard +"agentkeepalive@npm:^4.2.1": + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" + dependencies: + humanize-ms: ^1.2.1 + checksum: 13278cd5b125e51eddd5079f04d6fe0914ac1b8b91c1f3db2c1822f99ac1a7457869068997784342fe455d59daaff22e14fb7b8c3da4e741896e7e31faf92481 + languageName: node + linkType: hard + "aggregate-error@npm:^3.0.0": version: 3.1.0 resolution: "aggregate-error@npm:3.1.0" @@ -1296,6 +1308,23 @@ __metadata: languageName: node linkType: hard +"aproba@npm:^1.0.3 || ^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 + languageName: node + linkType: hard + +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: ^1.0.0 + readable-stream: ^3.6.0 + checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + languageName: node + linkType: hard + "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -1341,9 +1370,9 @@ __metadata: linkType: hard "async@npm:^3.2.0, async@npm:~3.2.0": - version: 3.2.5 - resolution: "async@npm:3.2.5" - checksum: 5ec77f1312301dee02d62140a6b1f7ee0edd2a0f983b6fd2b0849b969f245225b990b47b8243e7b9ad16451a53e7f68e753700385b706198ced888beedba3af4 + version: 3.2.4 + resolution: "async@npm:3.2.4" + checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 languageName: node linkType: hard @@ -1563,14 +1592,14 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.0 - resolution: "cacache@npm:18.0.0" +"cacache@npm:^17.0.0": + version: 17.1.4 + resolution: "cacache@npm:17.1.4" dependencies: "@npmcli/fs": ^3.1.0 fs-minipass: ^3.0.0 glob: ^10.2.2 - lru-cache: ^10.0.1 + lru-cache: ^7.7.1 minipass: ^7.0.3 minipass-collect: ^1.0.2 minipass-flush: ^1.0.5 @@ -1579,18 +1608,17 @@ __metadata: ssri: ^10.0.0 tar: ^6.1.11 unique-filename: ^3.0.0 - checksum: 2cd6bf15551abd4165acb3a4d1ef0593b3aa2fd6853ae16b5bb62199c2faecf27d36555a9545c0e07dd03347ec052e782923bdcece724a24611986aafb53e152 + checksum: b7751df756656954a51201335addced8f63fc53266fa56392c9f5ae83c8d27debffb4458ac2d168a744a4517ec3f2163af05c20097f93d17bdc2dc8a385e14a6 languageName: node linkType: hard "call-bind@npm:^1.0.0": - version: 1.0.5 - resolution: "call-bind@npm:1.0.5" + version: 1.0.2 + resolution: "call-bind@npm:1.0.2" dependencies: - function-bind: ^1.1.2 - get-intrinsic: ^1.2.1 - set-function-length: ^1.1.1 - checksum: 449e83ecbd4ba48e7eaac5af26fea3b50f8f6072202c2dd7c5a6e7a6308f2421abe5e13a3bbd55221087f76320c5e09f25a8fdad1bab2b77c68ae74d92234ea5 + function-bind: ^1.1.1 + get-intrinsic: ^1.0.2 + checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 languageName: node linkType: hard @@ -1616,9 +1644,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001561 - resolution: "caniuse-lite@npm:1.0.30001561" - checksum: 949829fe037e23346595614e01d362130245920503a12677f2506ce68e1240360113d6383febed41e8aa38cd0f5fd9c69c21b0af65a71c0246d560db489f1373 + version: 1.0.30001549 + resolution: "caniuse-lite@npm:1.0.30001549" + checksum: 7f2abeedc8cf8b92cc0613855d71b995ce436068c0bcdd798c5af7d297ccf9f52496b00181beda42d82d25079dd4b6e389c67486156d40d8854e5707a25cb054 languageName: node linkType: hard @@ -1780,6 +1808,15 @@ __metadata: languageName: node linkType: hard +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b + languageName: node + linkType: hard + "commander@npm:2.15.1": version: 2.15.1 resolution: "commander@npm:2.15.1" @@ -1794,6 +1831,13 @@ __metadata: languageName: node linkType: hard +"console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed + languageName: node + linkType: hard + "content-disposition@npm:0.5.4": version: 0.5.4 resolution: "content-disposition@npm:0.5.4" @@ -1913,7 +1957,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.4, debug@npm:~4.3.1": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:~4.3.1": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -1953,17 +1997,6 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.1.1": - version: 1.1.1 - resolution: "define-data-property@npm:1.1.1" - dependencies: - get-intrinsic: ^1.2.1 - gopd: ^1.0.1 - has-property-descriptors: ^1.0.0 - checksum: a29855ad3f0630ea82e3c5012c812efa6ca3078d5c2aa8df06b5f597c1cde6f7254692df41945851d903e05a1668607b6d34e778f402b9ff9ffb38111f1a3f0d - languageName: node - linkType: hard - "degenerator@npm:^5.0.0": version: 5.0.1 resolution: "degenerator@npm:5.0.1" @@ -1975,6 +2008,13 @@ __metadata: languageName: node linkType: hard +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd + languageName: node + linkType: hard + "depd@npm:2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" @@ -2046,9 +2086,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.535": - version: 1.4.577 - resolution: "electron-to-chromium@npm:1.4.577" - checksum: 822af571c8c94934655e46f77057bdce5474e1bcf7ceaa8a62fcec68554855d92f3d55de13b93d190ac88892ae89d0733645344c056bf684b190ca5db8ec1040 + version: 1.4.554 + resolution: "electron-to-chromium@npm:1.4.554" + checksum: cbac43c50b43777327f4a7bf149ee3088c1da8b91bbcd80f78d2cc77bc52763f6d0941574499239d9caefd3430d3093f865e5f1093371418f7d6b70301eeae9b languageName: node linkType: hard @@ -2517,7 +2557,7 @@ __metadata: languageName: node linkType: hard -"function-bind@npm:^1.1.2": +"function-bind@npm:^1.1.1": version: 1.1.2 resolution: "function-bind@npm:1.1.2" checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1 @@ -2533,6 +2573,22 @@ __metadata: languageName: node linkType: hard +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.3 + console-control-strings: ^1.1.0 + has-unicode: ^2.0.1 + signal-exit: ^3.0.7 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.5 + checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + languageName: node + linkType: hard + "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -2554,15 +2610,15 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2": - version: 1.2.2 - resolution: "get-intrinsic@npm:1.2.2" +"get-intrinsic@npm:^1.0.2": + version: 1.2.1 + resolution: "get-intrinsic@npm:1.2.1" dependencies: - function-bind: ^1.1.2 + function-bind: ^1.1.1 + has: ^1.0.3 has-proto: ^1.0.1 has-symbols: ^1.0.3 - hasown: ^2.0.0 - checksum: 447ff0724df26829908dc033b62732359596fcf66027bc131ab37984afb33842d9cd458fd6cecadfe7eac22fd8a54b349799ed334cf2726025c921c7250e7417 + checksum: 5b61d88552c24b0cf6fa2d1b3bc5459d7306f699de060d76442cce49a4721f52b8c560a33ab392cf5575b7810277d54ded9d4d39a1ea61855619ebc005aa7e5f languageName: node linkType: hard @@ -2615,7 +2671,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": +"glob@npm:^10.2.2": version: 10.3.10 resolution: "glob@npm:10.3.10" dependencies: @@ -2663,15 +2719,6 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: ^1.1.3 - checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 - languageName: node - linkType: hard - "graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" @@ -2729,15 +2776,6 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0": - version: 1.0.1 - resolution: "has-property-descriptors@npm:1.0.1" - dependencies: - get-intrinsic: ^1.2.2 - checksum: 2bcc6bf6ec6af375add4e4b4ef586e43674850a91ad4d46666d0b28ba8e1fd69e424c7677d24d60f69470ad0afaa2f3197f508b20b0bb7dd99a8ab77ffc4b7c4 - languageName: node - linkType: hard - "has-proto@npm:^1.0.1": version: 1.0.1 resolution: "has-proto@npm:1.0.1" @@ -2752,12 +2790,17 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0": - version: 2.0.0 - resolution: "hasown@npm:2.0.0" - dependencies: - function-bind: ^1.1.2 - checksum: 6151c75ca12554565098641c98a40f4cc86b85b0fd5b6fe92360967e4605a4f9610f7757260b4e8098dd1c2ce7f4b095f2006fe72a570e3b6d2d28de0298c176 +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 + languageName: node + linkType: hard + +"has@npm:^1.0.3": + version: 1.0.4 + resolution: "has@npm:1.0.4" + checksum: 8a11ba062e0627c9578a1d08285401e39f1d071a9692ddf793199070edb5648b21c774dd733e2a181edd635bf6862731885f476f4ccf67c998d7a5ff7cef2550 languageName: node linkType: hard @@ -2805,6 +2848,17 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": 2 + agent-base: 6 + debug: 4 + checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + languageName: node + linkType: hard + "http-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "http-proxy-agent@npm:7.0.0" @@ -2822,7 +2876,17 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.2": +"https-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: 6 + debug: 4 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.2": version: 7.0.2 resolution: "https-proxy-agent@npm:7.0.2" dependencies: @@ -2839,6 +2903,15 @@ __metadata: languageName: node linkType: hard +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: ^2.0.0 + checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + languageName: node + linkType: hard + "iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.4": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" @@ -2893,7 +2966,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -2945,11 +3018,11 @@ __metadata: linkType: hard "is-core-module@npm:^2.13.0": - version: 2.13.1 - resolution: "is-core-module@npm:2.13.1" + version: 2.13.0 + resolution: "is-core-module@npm:2.13.0" dependencies: - hasown: ^2.0.0 - checksum: 256559ee8a9488af90e4bad16f5583c6d59e92f0742e9e8bb4331e758521ee86b810b93bae44f390766ffbc518a0488b18d9dab7da9a5ff997d499efc9403f7c + has: ^1.0.3 + checksum: 053ab101fb390bfeb2333360fd131387bed54e476b26860dc7f5a700bbf34a0ec4454f7c8c4d43e8a0030957e4b3db6e16d35e1890ea6fb654c833095e040355 languageName: node linkType: hard @@ -3018,17 +3091,10 @@ __metadata: languageName: node linkType: hard -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e - languageName: node - linkType: hard - "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.1 - resolution: "istanbul-lib-coverage@npm:3.2.1" - checksum: 382d5f698fed81de5c32a32d91848cba29df097bfce162f3cdd7fb66de7feeace9873d75c9d6bf3e34b1a4cda6be5bd819ec41c4b532c584dbff7c69db85448e + version: 3.2.0 + resolution: "istanbul-lib-coverage@npm:3.2.0" + checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 languageName: node linkType: hard @@ -3690,13 +3756,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.0.1 - resolution: "lru-cache@npm:10.0.1" - checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 - languageName: node - linkType: hard - "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -3715,13 +3774,20 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.14.1": +"lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 languageName: node linkType: hard +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.1 + resolution: "lru-cache@npm:10.0.1" + checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 + languageName: node + linkType: hard + "make-dir@npm:^4.0.0": version: 4.0.0 resolution: "make-dir@npm:4.0.0" @@ -3731,22 +3797,26 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.0 - resolution: "make-fetch-happen@npm:13.0.0" +"make-fetch-happen@npm:^11.0.3": + version: 11.1.1 + resolution: "make-fetch-happen@npm:11.1.1" dependencies: - "@npmcli/agent": ^2.0.0 - cacache: ^18.0.0 + agentkeepalive: ^4.2.1 + cacache: ^17.0.0 http-cache-semantics: ^4.1.1 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 is-lambda: ^1.0.1 - minipass: ^7.0.2 + lru-cache: ^7.7.1 + minipass: ^5.0.0 minipass-fetch: ^3.0.0 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 negotiator: ^0.6.3 promise-retry: ^2.0.1 + socks-proxy-agent: ^7.0.0 ssri: ^10.0.0 - checksum: 7c7a6d381ce919dd83af398b66459a10e2fe8f4504f340d1d090d3fa3d1b0c93750220e1d898114c64467223504bd258612ba83efbc16f31b075cd56de24b4af + checksum: 7268bf274a0f6dcf0343829489a4506603ff34bd0649c12058753900b0eb29191dce5dba12680719a5d0a983d3e57810f594a12f3c18494e93a1fbc6348a4540 languageName: node linkType: hard @@ -3963,7 +4033,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.3": version: 7.0.4 resolution: "minipass@npm:7.0.4" checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 @@ -4017,7 +4087,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.1.1": +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -4080,22 +4150,23 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 10.0.1 - resolution: "node-gyp@npm:10.0.1" + version: 9.4.0 + resolution: "node-gyp@npm:9.4.0" dependencies: env-paths: ^2.2.0 exponential-backoff: ^3.1.1 - glob: ^10.3.10 + glob: ^7.1.4 graceful-fs: ^4.2.6 - make-fetch-happen: ^13.0.0 - nopt: ^7.0.0 - proc-log: ^3.0.0 + make-fetch-happen: ^11.0.3 + nopt: ^6.0.0 + npmlog: ^6.0.0 + rimraf: ^3.0.2 semver: ^7.3.5 tar: ^6.1.2 - which: ^4.0.0 + which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: 60a74e66d364903ce02049966303a57f898521d139860ac82744a5fdd9f7b7b3b61f75f284f3bfe6e6add3b8f1871ce305a1d41f775c7482de837b50c792223f + checksum: 78b404e2e0639d64e145845f7f5a3cb20c0520cdaf6dda2f6e025e9b644077202ea7de1232396ba5bde3fee84cdc79604feebe6ba3ec84d464c85d407bb5da99 languageName: node linkType: hard @@ -4120,14 +4191,14 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.0 - resolution: "nopt@npm:7.2.0" +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" dependencies: - abbrev: ^2.0.0 + abbrev: ^1.0.0 bin: nopt: bin/nopt.js - checksum: a9c0f57fb8cb9cc82ae47192ca2b7ef00e199b9480eed202482c962d61b59a7fbe7541920b2a5839a97b42ee39e288c0aed770e38057a608d7f579389dfde410 + checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac languageName: node linkType: hard @@ -4147,6 +4218,18 @@ __metadata: languageName: node linkType: hard +"npmlog@npm:^6.0.0": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: ^3.0.0 + console-control-strings: ^1.1.0 + gauge: ^4.0.3 + set-blocking: ^2.0.0 + checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a + languageName: node + linkType: hard + "nssocket@npm:0.6.0": version: 0.6.0 resolution: "nssocket@npm:0.6.0" @@ -4158,9 +4241,9 @@ __metadata: linkType: hard "object-inspect@npm:^1.9.0": - version: 1.13.1 - resolution: "object-inspect@npm:1.13.1" - checksum: 7d9fa9221de3311dcb5c7c307ee5dc011cdd31dc43624b7c184b3840514e118e05ef0002be5388304c416c0eb592feb46e983db12577fc47e47d5752fbbfb61f + version: 1.13.0 + resolution: "object-inspect@npm:1.13.0" + checksum: 21353e910a3079466cb44adca71d8bef15bd8b87e518eb68bb33d82c5c70b83193993edce432cc92268f7dd02c4a8ab338663a011844367d0bd0559f6dde1fed languageName: node linkType: hard @@ -4541,13 +4624,6 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 02b64e1b3919e63df06f836b98d3af002b5cd92655cab18b5746e37374bfb73e03b84fe305454614b34c25b485cc687a9eebdccf0242cda8fda2475dd2c97e02 - languageName: node - linkType: hard - "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -4661,6 +4737,17 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^3.6.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d + languageName: node + linkType: hard + "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" @@ -4755,6 +4842,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + languageName: node + linkType: hard + "run-series@npm:^1.1.8": version: 1.1.9 resolution: "run-series@npm:1.1.9" @@ -4762,7 +4860,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.2.1": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -4845,15 +4943,10 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.1.1": - version: 1.1.1 - resolution: "set-function-length@npm:1.1.1" - dependencies: - define-data-property: ^1.1.1 - get-intrinsic: ^1.2.1 - gopd: ^1.0.1 - has-property-descriptors: ^1.0.0 - checksum: c131d7569cd7e110cafdfbfbb0557249b538477624dfac4fc18c376d879672fa52563b74029ca01f8f4583a8acb35bb1e873d573a24edb80d978a7ee607c6e06 +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 languageName: node linkType: hard @@ -4933,7 +5026,18 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.1, socks-proxy-agent@npm:^8.0.2": +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" + dependencies: + agent-base: ^6.0.2 + debug: ^4.3.3 + socks: ^2.6.2 + checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.2": version: 8.0.2 resolution: "socks-proxy-agent@npm:8.0.2" dependencies: @@ -4944,7 +5048,7 @@ __metadata: languageName: node linkType: hard -"socks@npm:^2.7.1": +"socks@npm:^2.6.2, socks@npm:^2.7.1": version: 2.7.1 resolution: "socks@npm:2.7.1" dependencies: @@ -5030,7 +5134,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -5052,6 +5156,15 @@ __metadata: languageName: node linkType: hard +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: ~5.2.0 + checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 + languageName: node + linkType: hard + "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" @@ -5126,8 +5239,8 @@ __metadata: linkType: hard "systeminformation@npm:^5.7": - version: 5.21.15 - resolution: "systeminformation@npm:5.21.15" + version: 5.21.11 + resolution: "systeminformation@npm:5.21.11" bin: systeminformation: lib/cli.js conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) @@ -5288,10 +5401,10 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~5.26.4": - version: 5.26.5 - resolution: "undici-types@npm:5.26.5" - checksum: 3192ef6f3fd5df652f2dc1cd782b49d6ff14dc98e5dced492aa8a8c65425227da5da6aafe22523c67f035a272c599bb89cfe803c1db6311e44bed3042fc25487 +"undici-types@npm:~5.25.1": + version: 5.25.3 + resolution: "undici-types@npm:5.25.3" + checksum: ec9d2cc36520cbd9fbe3b3b6c682a87fe5be214699e1f57d1e3d9a2cb5be422e62735f06e0067dc325fd3dd7404c697e4d479f9147dc8a804e049e29f357f2ff languageName: node linkType: hard @@ -5321,9 +5434,9 @@ __metadata: linkType: hard "universalify@npm:^2.0.0": - version: 2.0.1 - resolution: "universalify@npm:2.0.1" - checksum: ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60 + version: 2.0.0 + resolution: "universalify@npm:2.0.0" + checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 languageName: node linkType: hard @@ -5348,6 +5461,13 @@ __metadata: languageName: node linkType: hard +"util-deprecate@npm:^1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + languageName: node + linkType: hard + "utils-merge@npm:1.0.1": version: 1.0.1 resolution: "utils-merge@npm:1.0.1" @@ -5412,7 +5532,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^2.0.1": +"which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: @@ -5423,14 +5543,12 @@ __metadata: languageName: node linkType: hard -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" +"wide-align@npm:^1.1.5": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" dependencies: - isexe: ^3.1.1 - bin: - node-which: bin/which.js - checksum: f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 + string-width: ^1.0.2 || 2 || 3 || 4 + checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index 0f10b1ec30c..0edc833b844 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1445,7 +1445,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.23.2 resolution: "@babel/runtime@npm:7.23.2" dependencies: @@ -1617,16 +1617,16 @@ __metadata: linkType: hard "@cspell/dict-companies@npm:^3.0.26": - version: 3.0.27 - resolution: "@cspell/dict-companies@npm:3.0.27" - checksum: 960a2c6514389b2a540556d30a21c34bd1495ed5598f8a37a3afc2320dd93ed57df4d5d3c3c63d54024f5fc7d31cc228ea76aa89490a91812d7b691088eb78c1 + version: 3.0.26 + resolution: "@cspell/dict-companies@npm:3.0.26" + checksum: ae6f4e7c39b8fa7644d1e4d25c453b8edf93b4d518991f36e5d86fceab9e7795ec0912a8170a8e5c1c650f876d5d95b096f4369d47b725fd54f2666063c93beb languageName: node linkType: hard "@cspell/dict-cpp@npm:^5.0.8": - version: 5.0.9 - resolution: "@cspell/dict-cpp@npm:5.0.9" - checksum: f31ecffbb4385751b30fa7688706c61ffe0bdb4389ca26c00f53cf028d14d0a542eca5e04435a5eeafd13f1e7e2c6f1acb1a0235f5255169c4f9c33126b8c9ba + version: 5.0.8 + resolution: "@cspell/dict-cpp@npm:5.0.8" + checksum: 933a56daa66789a105f9309cdb91e7b5fffb1fb32be0a27e6f70506949d9f24355055eb763db7f80a00560d86786995eb1b1df003a6ad3ba87843d47686b02e2 languageName: node linkType: hard @@ -1708,16 +1708,16 @@ __metadata: linkType: hard "@cspell/dict-en_us@npm:^4.3.9": - version: 4.3.11 - resolution: "@cspell/dict-en_us@npm:4.3.11" - checksum: 2b311642480b63d85397780234637c84643661f040d36fe448ae5a518a3ec5d89c9fca341cb3bfb636fa03bb633416b5493b0260751100e1f484ad15563052a6 + version: 4.3.9 + resolution: "@cspell/dict-en_us@npm:4.3.9" + checksum: 890b1c4e430b623e860af5138d02514fe6eafdd62d693851a8d995e7a5ae68e501b6ddb74669faabd2393ba620d984873d00511c68564692e6a768f2dab9165a languageName: node linkType: hard "@cspell/dict-filetypes@npm:^3.0.1": - version: 3.0.2 - resolution: "@cspell/dict-filetypes@npm:3.0.2" - checksum: 929b5d9d547edfffb5ab507b5fe09afe3d7802db6f30484cff475ce3b6d3ddedca060a4d8fb69c32dede0b3312d6b773a136065457569179cf3c6b72bff0a446 + version: 3.0.1 + resolution: "@cspell/dict-filetypes@npm:3.0.1" + checksum: 43ad696dac5feaee290120216153a25f454302bda5834ce5e86dbab5fca73266a35c7fc00466120ae3b696ec1fa94b4f2b36e036dd07f05d5a4a770db7eb5d0a languageName: node linkType: hard @@ -1729,9 +1729,9 @@ __metadata: linkType: hard "@cspell/dict-fsharp@npm:^1.0.0": - version: 1.0.1 - resolution: "@cspell/dict-fsharp@npm:1.0.1" - checksum: ce0df20704bf95d1fe434d2889cc764279cbce2b057fc5247be1ccaf7a8cc57372de3da2cdab6643b3df5221119716929b2e2aaad3f60533dcf0bd3c7d892fab + version: 1.0.0 + resolution: "@cspell/dict-fsharp@npm:1.0.0" + checksum: 79141e510c44581cfa5082ab69e9f0fb09f873743f9afb9e9b465e4b74f2e05c18fd89e796649616202527f9cc50603e5f0c8b81f482b22e80a7988d3c856411 languageName: node linkType: hard @@ -1757,9 +1757,9 @@ __metadata: linkType: hard "@cspell/dict-golang@npm:^6.0.3": - version: 6.0.4 - resolution: "@cspell/dict-golang@npm:6.0.4" - checksum: a3d039a8b715ac09ef5c5ae310eda9870475411964fca3334aed81e3a77d5cf14af112423f51719af6d41ba10f94f841f90a9ba35d7b0f16430f7964149e74cf + version: 6.0.3 + resolution: "@cspell/dict-golang@npm:6.0.3" + checksum: c7b46ad177b26ad1d449a79d12b7e1dc464c04dd7e78bf4b367ce376addfee3fa61fbbb6c7ff47e8b3a89a1fed31fbd3a889ca7cbb6bfa2cd79c1cdbfb6771b0 languageName: node linkType: hard @@ -1792,9 +1792,9 @@ __metadata: linkType: hard "@cspell/dict-k8s@npm:^1.0.1": - version: 1.0.2 - resolution: "@cspell/dict-k8s@npm:1.0.2" - checksum: 4afd7806033b2bf71b17f4cf3fbc33449492bfb2a33a8301cc97b2e55583c07a4a07c288f50f445261c1de4b95494e495b8b982ca428d285393f7eb917bb5a61 + version: 1.0.1 + resolution: "@cspell/dict-k8s@npm:1.0.1" + checksum: 90800857566c8d774523d26bbb962d2cdf2d5587162851a14ef85d6b38f70a9da9c61eac26287476371f680556862ef75d18c155a8dfb77de0c543e5e9390714 languageName: node linkType: hard @@ -1834,9 +1834,9 @@ __metadata: linkType: hard "@cspell/dict-php@npm:^4.0.3": - version: 4.0.4 - resolution: "@cspell/dict-php@npm:4.0.4" - checksum: ad835552eaf48bbd01c6c4cfb2fd56aeae027d4aabd2c8984129bf3e7e3dd66941c90d877a3f7cae1e7ab6e713089bd4ac49fb674e7cb8e5b741fe63d922ad71 + version: 4.0.3 + resolution: "@cspell/dict-php@npm:4.0.3" + checksum: 98040e804e3ca67df965a3ea1840d68369d7b32cf6176a63605759e40a2325321f24723c4f24525a6cdf8d35bbc975ed6424a1a581775fb8cf7e55b5b2e60c89 languageName: node linkType: hard @@ -1855,11 +1855,11 @@ __metadata: linkType: hard "@cspell/dict-python@npm:^4.1.9": - version: 4.1.10 - resolution: "@cspell/dict-python@npm:4.1.10" + version: 4.1.9 + resolution: "@cspell/dict-python@npm:4.1.9" dependencies: "@cspell/dict-data-science": ^1.0.11 - checksum: 67e210815e1ccdfda6c005e82174b93ee39b94c166e5e8971e2900850166c2bfe583edc01c263862fff3edcffd9324bc83a6260075ac7cfce2f366b94eab7154 + checksum: 9424c6da9ffd5f58ef393af133cea0c57f58d2b2fc8bf575360cba508ed2e159e5df3b973f2a70b4548a5820be3c07a716c784c0d6df62fc921db4abb91f450a languageName: node linkType: hard @@ -1892,9 +1892,9 @@ __metadata: linkType: hard "@cspell/dict-software-terms@npm:^3.3.6": - version: 3.3.9 - resolution: "@cspell/dict-software-terms@npm:3.3.9" - checksum: a7c2b0867a6239eba6099ee1a6f05d8f686f7a0289150079573e8c3ed37dbdec0d58373b4aa70638548b1774298394d0ec215201eae1d62d7cd239180ca53818 + version: 3.3.6 + resolution: "@cspell/dict-software-terms@npm:3.3.6" + checksum: d0187d1ed6e33dbc25150e6f918757e57e94449bde85581ecc5cdaf08ea257a1d2368533dddcfd81139dffbab80beea0b7877d569f1b5aa9feba6e668b61e336 languageName: node linkType: hard @@ -2566,9 +2566,26 @@ __metadata: linkType: hard "@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.10.0 - resolution: "@eslint-community/regexpp@npm:4.10.0" - checksum: 2a6e345429ea8382aaaf3a61f865cae16ed44d31ca917910033c02dc00d505d939f10b81e079fa14d43b51499c640138e153b7e40743c4c094d9df97d4e56f7b + version: 4.9.1 + resolution: "@eslint-community/regexpp@npm:4.9.1" + checksum: 06fb839e9c756f6375cc545c2f2e05a0a64576bd6370e8e3c07983fd29a3d6e164ef4aa48a361f7d27e6713ab79c83053ff6a2ccb78748bc955e344279c4a3b6 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.2": + version: 2.1.2 + resolution: "@eslint/eslintrc@npm:2.1.2" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^9.6.0 + globals: ^13.19.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: bc742a1e3b361f06fedb4afb6bf32cbd27171292ef7924f61c62f2aed73048367bcc7ac68f98c06d4245cd3fabc43270f844e3c1699936d4734b3ac5398814a7 languageName: node linkType: hard @@ -2589,6 +2606,13 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:8.52.0": + version: 8.52.0 + resolution: "@eslint/js@npm:8.52.0" + checksum: 490893b8091a66415f4ac98b963d23eb287264ea3bd6af7ec788f0570705cf64fd6ab84b717785980f55e39d08ff5c7fde6d8e4391ccb507169370ce3a6d091a + languageName: node + linkType: hard + "@eslint/js@npm:8.53.0": version: 8.53.0 resolution: "@eslint/js@npm:8.53.0" @@ -3476,12 +3500,12 @@ __metadata: linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.20 - resolution: "@jridgewell/trace-mapping@npm:0.3.20" + version: 0.3.19 + resolution: "@jridgewell/trace-mapping@npm:0.3.19" dependencies: "@jridgewell/resolve-uri": ^3.1.0 "@jridgewell/sourcemap-codec": ^1.4.14 - checksum: cd1a7353135f385909468ff0cf20bdd37e59f2ee49a13a966dedf921943e222082c583ade2b579ff6cd0d8faafcb5461f253e1bf2a9f48fec439211fdbe788f5 + checksum: 956a6f0f6fec060fb48c6bf1f5ec2064e13cd38c8be3873877d4b92b4a27ba58289a34071752671262a3e3c202abcc3fa2aac64d8447b4b0fa1ba3c9047f1c20 languageName: node linkType: hard @@ -3760,19 +3784,6 @@ __metadata: languageName: node linkType: hard -"@loadable/component@npm:5.15.3": - version: 5.15.3 - resolution: "@loadable/component@npm:5.15.3" - dependencies: - "@babel/runtime": ^7.7.7 - hoist-non-react-statics: ^3.3.1 - react-is: ^16.12.0 - peerDependencies: - react: ^16.3.0 || ^17.0.0 || ^18.0.0 - checksum: 78ac341465f2310db30381bc75e8bf73a33f99af849a6a2d87eb3842da0ba1df265e08045dc4f3fee1d194522a43a030baa91740045b64aad002f159ccce64bf - languageName: node - linkType: hard - "@mapbox/node-pre-gyp@npm:^1.0.8": version: 1.0.11 resolution: "@mapbox/node-pre-gyp@npm:1.0.11" @@ -3828,19 +3839,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^2.0.0": - version: 2.2.0 - resolution: "@npmcli/agent@npm:2.2.0" - dependencies: - agent-base: ^7.1.0 - http-proxy-agent: ^7.0.0 - https-proxy-agent: ^7.0.1 - lru-cache: ^10.0.1 - socks-proxy-agent: ^8.0.1 - checksum: 3b25312edbdfaa4089af28e2d423b6f19838b945e47765b0c8174c1395c79d43c3ad6d23cb364b43f59fd3acb02c93e3b493f72ddbe3dfea04c86843a7311fc4 - languageName: node - linkType: hard - "@npmcli/fs@npm:^3.1.0": version: 3.1.0 resolution: "@npmcli/fs@npm:3.1.0" @@ -3850,130 +3848,130 @@ __metadata: languageName: node linkType: hard -"@peculiar/asn1-cms@npm:^2.3.6, @peculiar/asn1-cms@npm:^2.3.8": - version: 2.3.8 - resolution: "@peculiar/asn1-cms@npm:2.3.8" +"@peculiar/asn1-cms@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-cms@npm:2.3.6" dependencies: - "@peculiar/asn1-schema": ^2.3.8 - "@peculiar/asn1-x509": ^2.3.8 - "@peculiar/asn1-x509-attr": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + "@peculiar/asn1-x509-attr": ^2.3.6 asn1js: ^3.0.5 - tslib: ^2.6.2 - checksum: 5c5f833ad62bd5ba9391dc2f1fe80e49e5067688ee54c1a3ee37b659507049b652888c6e78f6e38ee8c73a1093dbe531dd47a8e4e2b09842bda737e8952001c1 + tslib: ^2.4.0 + checksum: caeb7fcb594b7158ecb31f2e0e3a85a79fb9a51b9204b3fbad398706f56f20dfb6478f37fc163b544ebe3fd6ade7606a71826684df040ae6870fe7a4d8286d8c languageName: node linkType: hard "@peculiar/asn1-csr@npm:^2.3.6": - version: 2.3.8 - resolution: "@peculiar/asn1-csr@npm:2.3.8" + version: 2.3.6 + resolution: "@peculiar/asn1-csr@npm:2.3.6" dependencies: - "@peculiar/asn1-schema": ^2.3.8 - "@peculiar/asn1-x509": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 asn1js: ^3.0.5 - tslib: ^2.6.2 - checksum: d2bc7641f5e71e55ebb0bcfbbdb63e5168ac676e5ee56ee549c61f63414d9699600d1267fca223d1d6dad4fdb0a50be2a125bee37828a91b9b4c138a2b8295b7 + tslib: ^2.4.0 + checksum: 4989edc765476b02995fbee88ab3860cf657f0e62756fa0ec44cd95158e6276f58c2c8656e5f8bd2f6934650999b781f2ec7b65ec537fc41a1aeb387b2e32883 languageName: node linkType: hard "@peculiar/asn1-ecc@npm:^2.3.6": - version: 2.3.8 - resolution: "@peculiar/asn1-ecc@npm:2.3.8" + version: 2.3.6 + resolution: "@peculiar/asn1-ecc@npm:2.3.6" dependencies: - "@peculiar/asn1-schema": ^2.3.8 - "@peculiar/asn1-x509": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 asn1js: ^3.0.5 - tslib: ^2.6.2 - checksum: c7db2004a03f88c35fcd21957c8c15bfbf29c137a636bbc35d51dcebbc287ec253762e127d50197f0b5910600e3641a738c8ca756a15741fc09272272b0303f4 + tslib: ^2.4.0 + checksum: 4b9a383dd443fbb9699d79550e03d1185781885768d8c7b780e26a959344286a53539824fa4a3103e9e8393a7d062fe6820bf79abafb340dc18ee5ce81b1d470 languageName: node linkType: hard -"@peculiar/asn1-pfx@npm:^2.3.8": - version: 2.3.8 - resolution: "@peculiar/asn1-pfx@npm:2.3.8" +"@peculiar/asn1-pfx@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-pfx@npm:2.3.6" dependencies: - "@peculiar/asn1-cms": ^2.3.8 - "@peculiar/asn1-pkcs8": ^2.3.8 - "@peculiar/asn1-rsa": ^2.3.8 - "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-cms": ^2.3.6 + "@peculiar/asn1-pkcs8": ^2.3.6 + "@peculiar/asn1-rsa": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.6 asn1js: ^3.0.5 - tslib: ^2.6.2 - checksum: a01dda82d077d52b343faafd14d58892813c4c43e37fb13e7531ab761d18fd453c50b5f0dbdffeb9310f0f502f97ab668d966bd899bae9604bd0aa43cd3874ea + tslib: ^2.4.0 + checksum: faa3abc62e4ba4e67f6377178df62c24146920475e4ddfee024b1e14b208947d9b136c1bb1b82d7a3a28b76a544687529338f6143f92bdf324db23bd6aa0c11a languageName: node linkType: hard -"@peculiar/asn1-pkcs8@npm:^2.3.8": - version: 2.3.8 - resolution: "@peculiar/asn1-pkcs8@npm:2.3.8" +"@peculiar/asn1-pkcs8@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-pkcs8@npm:2.3.6" dependencies: - "@peculiar/asn1-schema": ^2.3.8 - "@peculiar/asn1-x509": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 asn1js: ^3.0.5 - tslib: ^2.6.2 - checksum: c1337df0097104b500f9428f839a699a9222125c9cdd34c288c95e52f5d0eec533d75ac45e41200ca8e328d135d3eda7638d2e7e91d1791419a04cd14b2d36a1 + tslib: ^2.4.0 + checksum: 17b2ea5f2350ba74d58084f95f4d739d30413112e85268fd55b308307bd6a6f006e06accaf3e181103a61bfb7efd2c21be7f914b48954845bef109b1b0a4bc46 languageName: node linkType: hard "@peculiar/asn1-pkcs9@npm:^2.3.6": - version: 2.3.8 - resolution: "@peculiar/asn1-pkcs9@npm:2.3.8" - dependencies: - "@peculiar/asn1-cms": ^2.3.8 - "@peculiar/asn1-pfx": ^2.3.8 - "@peculiar/asn1-pkcs8": ^2.3.8 - "@peculiar/asn1-schema": ^2.3.8 - "@peculiar/asn1-x509": ^2.3.8 - "@peculiar/asn1-x509-attr": ^2.3.8 + version: 2.3.6 + resolution: "@peculiar/asn1-pkcs9@npm:2.3.6" + dependencies: + "@peculiar/asn1-cms": ^2.3.6 + "@peculiar/asn1-pfx": ^2.3.6 + "@peculiar/asn1-pkcs8": ^2.3.6 + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 + "@peculiar/asn1-x509-attr": ^2.3.6 asn1js: ^3.0.5 - tslib: ^2.6.2 - checksum: 22ee32733a5abb14039c858093f4e79c989ed32c5ece746dd638afa23428f34a0a4c207126b75c2ae18198a20083fbc08dee9309771569eb8ef3734a37ff950f + tslib: ^2.4.0 + checksum: 3b8ca25b46ce9afc51b8cc72afab6fd32bb1dbf501eef68f997b35591c16c321384224fe478fd03fa644f3d540d719568767c7bd8bd1f617a5d9f8d318be0d2c languageName: node linkType: hard -"@peculiar/asn1-rsa@npm:^2.3.6, @peculiar/asn1-rsa@npm:^2.3.8": - version: 2.3.8 - resolution: "@peculiar/asn1-rsa@npm:2.3.8" +"@peculiar/asn1-rsa@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-rsa@npm:2.3.6" dependencies: - "@peculiar/asn1-schema": ^2.3.8 - "@peculiar/asn1-x509": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 asn1js: ^3.0.5 - tslib: ^2.6.2 - checksum: d9bf0f143686b475d3cc9f9b7d948826dc8c8764bc865697705351278541f0bf31a8f788ec8ff8bf6e4150b04aa65b20853bda45d77e4abbac717d7019e6fd56 + tslib: ^2.4.0 + checksum: 120dda00af6e1b1e5568826ac8211d60d36b3cbe91b086cae6b5ba132f1670ba129284068110305b237550e402c0beeda45fd713d640f97ad11d8cf6c925b31a languageName: node linkType: hard -"@peculiar/asn1-schema@npm:^2.3.6, @peculiar/asn1-schema@npm:^2.3.8": - version: 2.3.8 - resolution: "@peculiar/asn1-schema@npm:2.3.8" +"@peculiar/asn1-schema@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-schema@npm:2.3.6" dependencies: asn1js: ^3.0.5 - pvtsutils: ^1.3.5 - tslib: ^2.6.2 - checksum: 1f4dd421f1411df8bc52bca12b1cef710434c13ff0a8b5746ede42b10d62b5ad06a3925c4a6db53102aaf1e589947539a6955fa8554a9b8ebb1ffa38b0155a24 + pvtsutils: ^1.3.2 + tslib: ^2.4.0 + checksum: fc09387c6e3dea07fca21b54ea8c71ce3ec0f8c92377237e51aef729f0c2df92781aa7a18a546a6fe809519faeaa222df576ec21a35c6095037a78677204a55b languageName: node linkType: hard -"@peculiar/asn1-x509-attr@npm:^2.3.8": - version: 2.3.8 - resolution: "@peculiar/asn1-x509-attr@npm:2.3.8" +"@peculiar/asn1-x509-attr@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-x509-attr@npm:2.3.6" dependencies: - "@peculiar/asn1-schema": ^2.3.8 - "@peculiar/asn1-x509": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/asn1-x509": ^2.3.6 asn1js: ^3.0.5 - tslib: ^2.6.2 - checksum: 07a64f1cf50af87f510aa857794e9f9334f36bd1682df3ece7bb4935575bca36111e0ba263e8559a738ae77116bc3ee576c2d4d713b2c720fa31a809452b2f4e + tslib: ^2.4.0 + checksum: 100a11aad2168a99b23d576869d27d569c34191d14311cf6fcbea126b737bcb42f23401ead45c2bc55074d164712c65e5541be23c0e5f92bf19005957a16a872 languageName: node linkType: hard -"@peculiar/asn1-x509@npm:^2.3.6, @peculiar/asn1-x509@npm:^2.3.8": - version: 2.3.8 - resolution: "@peculiar/asn1-x509@npm:2.3.8" +"@peculiar/asn1-x509@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-x509@npm:2.3.6" dependencies: - "@peculiar/asn1-schema": ^2.3.8 + "@peculiar/asn1-schema": ^2.3.6 asn1js: ^3.0.5 - ipaddr.js: ^2.1.0 - pvtsutils: ^1.3.5 - tslib: ^2.6.2 - checksum: 23856e5d024298447afca55bd68d19a7440c0ae076437aee5ced26a0fa2e4efa3e0e4a354fa6ee9968d62ac21ee1c2186fc427942bacfc824d3a3a4d2e80d14b + ipaddr.js: ^2.0.1 + pvtsutils: ^1.3.2 + tslib: ^2.4.0 + checksum: 6e946bd44091fb88f617c3bbf54ed1113ed2b249675dd36004513444f409160f6d446bdb82d3cb6041b4d15c68fa4cf40ad452891a5f85dda2af89ee5b0590d2 languageName: node linkType: hard @@ -4308,75 +4306,75 @@ __metadata: linkType: hard "@types/aria-query@npm:^5.0.1": - version: 5.0.4 - resolution: "@types/aria-query@npm:5.0.4" - checksum: ad8b87e4ad64255db5f0a73bc2b4da9b146c38a3a8ab4d9306154334e0fc67ae64e76bfa298eebd1e71830591fb15987e5de7111bdb36a2221bdc379e3415fb0 + version: 5.0.2 + resolution: "@types/aria-query@npm:5.0.2" + checksum: 19394fea016e72da39dd5ef1cf1643e3252b7ee99d8f0b3a8740d3b72f874443fc1e00a41935b36fdfaf92cd735d4ae10dc5d6ab8f1192527d4c0471bb8ff8e4 languageName: node linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.20.4 - resolution: "@types/babel__core@npm:7.20.4" + version: 7.20.2 + resolution: "@types/babel__core@npm:7.20.2" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 75ed6072213423d2b827740d68bbf96f5a7050ce8bd842dde0ceec8d352d06e847166bac757df4beba55525b65f8727c0432adeb5cb4f83aa42e155ac555767e + checksum: 564fbaa8ff1305d50807ada0ec227c3e7528bebb2f8fe6b2ed88db0735a31511a74ad18729679c43eeed8025ed29d408f53059289719e95ab1352ed559a100bd languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.7 - resolution: "@types/babel__generator@npm:7.6.7" + version: 7.6.5 + resolution: "@types/babel__generator@npm:7.6.5" dependencies: "@babel/types": ^7.0.0 - checksum: 03e96ea327a5238f00c38394a05cc01619b9f5f3ea57371419a1c25cf21676a6d327daf802435819f8cb3b8fa10e938a94bcbaf79a38c132068c813a1807ff93 + checksum: c7459f5025c4c800eaf58f4db3b24e9d736331fe7df40961d9bc49f31b46e2a3be83dc9276e8688f10a5ed752ae153ad5f1bdd45e2245bac95273730b9115ec2 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" + version: 7.4.2 + resolution: "@types/babel__template@npm:7.4.2" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 + checksum: 0fe977b45a3269336c77f3ae4641a6c48abf0fa35ab1a23fb571690786af02d6cec08255a43499b0b25c5633800f7ae882ace450cce905e3060fa9e6995047ae languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.4 - resolution: "@types/babel__traverse@npm:7.20.4" + version: 7.20.2 + resolution: "@types/babel__traverse@npm:7.20.2" dependencies: "@babel/types": ^7.20.7 - checksum: f044ba80e00d07e46ee917c44f96cfc268fcf6d3871f7dfb8db8d3c6dab1508302f3e6bc508352a4a3ae627d2522e3fc500fa55907e0410a08e2e0902a8f3576 + checksum: 981340286479524436348d32373eaa3bf993c635cbf70307b4b69463eee83406a959ac4844f683911e0db8ab8d9f0025ab630dc7a8c170fee9ee74144c2a528f languageName: node linkType: hard "@types/cheerio@npm:*": - version: 0.22.34 - resolution: "@types/cheerio@npm:0.22.34" + version: 0.22.32 + resolution: "@types/cheerio@npm:0.22.32" dependencies: "@types/node": "*" - checksum: 8795f4ddc68f394d140513817a996dbe148872a7e30218f32cea90e7fb36802726450c7174c0b7cd27bd8bf179f20d2c0a43a9064547df3c51b8960711582a13 + checksum: 5a4885e03889c19638f0086d53e653d36a9eb097d0a08ec69dddf65ef685cd7118989c4fb28d5b28746502efc54bc57a3f751ee2a9aab3cfd32991bf5b51df10 languageName: node linkType: hard "@types/color-convert@npm:*": - version: 2.0.3 - resolution: "@types/color-convert@npm:2.0.3" + version: 2.0.1 + resolution: "@types/color-convert@npm:2.0.1" dependencies: "@types/color-name": "*" - checksum: bb6649b49a9da85435c0076c0b00183b972ee2ccbebb7f2f20e58843f081616bba054280fad96fe19e8bb998b3494a3f4c105dea6fef31147f92097f2c08f1ca + checksum: 52843d9206661d80957d15330d71f2eb8ebda4aaba72236d2d200e588ac806005a25e25f96393d81c9e61632a8316070d1136d2ff74f0a9350cf6d97291a2550 languageName: node linkType: hard "@types/color-name@npm:*": - version: 1.1.3 - resolution: "@types/color-name@npm:1.1.3" - checksum: 9060d16d0bce2cdf562d6da54e18c5f23e80308ccb58b725b9173a028818f27d8e01c8a5cd96952e76f11145a7388ed7d2f450fb4652f4760383834f2e698263 + version: 1.1.1 + resolution: "@types/color-name@npm:1.1.1" + checksum: b71fcad728cc68abcba1d405742134410c8f8eb3c2ef18113b047afca158ad23a4f2c229bcf71a38f4a818dead375c45b20db121d0e69259c2d81e97a740daa6 languageName: node linkType: hard @@ -4406,29 +4404,29 @@ __metadata: linkType: hard "@types/eslint-scope@npm:^3.7.3": - version: 3.7.7 - resolution: "@types/eslint-scope@npm:3.7.7" + version: 3.7.5 + resolution: "@types/eslint-scope@npm:3.7.5" dependencies: "@types/eslint": "*" "@types/estree": "*" - checksum: e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e + checksum: e91ce335c3791c2cf6084caa0073f90d5b7ae3fcf27785ade8422b7d896159fa14a5a3f1efd31ef03e9ebc1ff04983288280dfe8c9a5579a958539f59df8cc9f languageName: node linkType: hard "@types/eslint@npm:*, @types/eslint@npm:^8": - version: 8.44.7 - resolution: "@types/eslint@npm:8.44.7" + version: 8.44.4 + resolution: "@types/eslint@npm:8.44.4" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: 72a52f74477fbe7cc95ad290b491f51f0bc547cb7ea3672c68da3ffd3fb21ba86145bc36823a37d0a186caedeaee15b2d2a6b4c02c6c55819ff746053bd28310 + checksum: 15bafdaba800e2995f38d3a2a929d8e9303035315e8d3535523a21cd719b6769a45884afa955f0b845ffa545a4150429b0178e2c44feeedf59ebb285eeae9825 languageName: node linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a + version: 1.0.2 + resolution: "@types/estree@npm:1.0.2" + checksum: aeedb1b2fe20cbe06f44b99b562bf9703e360bfcdf5bb3d61d248182ee1dd63500f2474e12f098ffe1f5ac3202b43b3e18ec99902d9328d5374f5512fa077e45 languageName: node linkType: hard @@ -4457,21 +4455,21 @@ __metadata: linkType: hard "@types/graceful-fs@npm:^4.1.3": - version: 4.1.9 - resolution: "@types/graceful-fs@npm:4.1.9" + version: 4.1.7 + resolution: "@types/graceful-fs@npm:4.1.7" dependencies: "@types/node": "*" - checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 + checksum: 8b97e208f85c9efd02a6003a582c77646dd87be0af13aec9419a720771560a8a87a979eaca73ae193d7c73127f34d0a958403a9b5d6246e450289fd8c79adf09 languageName: node linkType: hard "@types/hoist-non-react-statics@npm:^3.3.0, @types/hoist-non-react-statics@npm:^3.3.1": - version: 3.3.5 - resolution: "@types/hoist-non-react-statics@npm:3.3.5" + version: 3.3.3 + resolution: "@types/hoist-non-react-statics@npm:3.3.3" dependencies: "@types/react": "*" hoist-non-react-statics: ^3.3.0 - checksum: b645b062a20cce6ab1245ada8274051d8e2e0b2ee5c6bd58215281d0ec6dae2f26631af4e2e7c8abe238cdcee73fcaededc429eef569e70908f82d0cc0ea31d7 + checksum: 107ac20ab36acdc83fb6bfca901e6f4f11307a0a307099c31ecf2a9875f8abffd731a2e1ee793162307e8aaee48fe9fd8d4e034fce88d5da480bc4178a3fc8d7 languageName: node linkType: hard @@ -4483,27 +4481,27 @@ __metadata: linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.6 - resolution: "@types/istanbul-lib-coverage@npm:2.0.6" - checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 + version: 2.0.4 + resolution: "@types/istanbul-lib-coverage@npm:2.0.4" + checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 languageName: node linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.3 - resolution: "@types/istanbul-lib-report@npm:3.0.3" + version: 3.0.1 + resolution: "@types/istanbul-lib-report@npm:3.0.1" dependencies: "@types/istanbul-lib-coverage": "*" - checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 + checksum: cfc66de48577bb7b2636a6afded7056483693c3ea70916276518cdfaa0d4b51bf564ded88fb13e75716665c3af3d4d54e9c2de042c0219dcabad7e81c398688b languageName: node linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/istanbul-reports@npm:3.0.4" + version: 3.0.2 + resolution: "@types/istanbul-reports@npm:3.0.2" dependencies: "@types/istanbul-lib-report": "*" - checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 + checksum: f52028d6fe4d28f0085dd7ed66ccfa6af632579e9a4091b90928ffef93d4dbec0bacd49e9caf1b939d05df9eafc5ac1f5939413cdf8ac59fbe4b29602d4d0939 languageName: node linkType: hard @@ -4527,11 +4525,11 @@ __metadata: linkType: hard "@types/jquery@npm:^3": - version: 3.5.26 - resolution: "@types/jquery@npm:3.5.26" + version: 3.5.22 + resolution: "@types/jquery@npm:3.5.22" dependencies: "@types/sizzle": "*" - checksum: 4c46902939d35a791a798f44567ef485d7aacf709a93e6f18d3fe4060c79183829b12050c53576014c4e25ee7bfd42e545e6b9c721a28f3e9d53e24d46653b3c + checksum: b81c95e27bb30686c1ad5d3f414781243d0cbb468b91d5584dedd3d3ca07ac99796d876e257a7246d6d9b69916bbb0cd0508142ab9f88848605c6d431144d729 languageName: node linkType: hard @@ -4565,9 +4563,9 @@ __metadata: linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15" - checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 + version: 7.0.13 + resolution: "@types/json-schema@npm:7.0.13" + checksum: 345df21a678fa72fb389f35f33de77833d09d4a142bb2bcb27c18690efa4cf70fc2876e43843cefb3fbdb9fcb12cd3e970a90936df30f53bbee899865ff605ab languageName: node linkType: hard @@ -4579,11 +4577,11 @@ __metadata: linkType: hard "@types/jsonfile@npm:*": - version: 6.1.4 - resolution: "@types/jsonfile@npm:6.1.4" + version: 6.1.2 + resolution: "@types/jsonfile@npm:6.1.2" dependencies: "@types/node": "*" - checksum: 309fda20eb5f1cf68f2df28931afdf189c5e7e6bec64ac783ce737bb98908d57f6f58757ad5da9be37b815645a6f914e2d4f3ac66c574b8fe1ba6616284d0e97 + checksum: 3e020944de09e54ef7c4200dfbbedba76da417a58c712611ff9d30921e214dfabbe81dadd4d6608647a3ee8900d445407d7336dd991b8fe6df4249320ad4a1b4 languageName: node linkType: hard @@ -4604,20 +4602,13 @@ __metadata: linkType: hard "@types/libsodium-wrappers@npm:*, @types/libsodium-wrappers@npm:^0": - version: 0.7.13 - resolution: "@types/libsodium-wrappers@npm:0.7.13" - checksum: 94d608bed8ccd364754c3a7bf5d4c770b229efa33f0c475061b1b82bb8d5da8d57a72df0b8876b887077edbb6ff9594b7a1183029de4d1ad679821d1013f3db9 - languageName: node - linkType: hard - -"@types/linkify-it@npm:*": - version: 3.0.5 - resolution: "@types/linkify-it@npm:3.0.5" - checksum: fac28f41a6e576282300a459d70ea0d33aab70dbb77c3d09582bb0335bb00d862b6de69585792a4d590aae4173fbab0bf28861e2d90ca7b2b1439b52688e9ff6 + version: 0.7.12 + resolution: "@types/libsodium-wrappers@npm:0.7.12" + checksum: 8f25b4ffe6b60c36f3c59b3dea2e952b8790c9b8375ee5235e6d294c1519a578b7882d773f168005eb0f3fdb4f11e06ba27b30b89d2c3b8be3f985c7eedd0491 languageName: node linkType: hard -"@types/linkify-it@npm:3.0.4": +"@types/linkify-it@npm:*, @types/linkify-it@npm:3.0.4": version: 3.0.4 resolution: "@types/linkify-it@npm:3.0.4" checksum: cd873857faf77231811a5ee49aadffdbdd7c6309b92ca004cb28320993858d2e30cad7b343c6db928763ed0f766c6ed140e0f995536e488a1447a527b6f8127f @@ -4625,11 +4616,11 @@ __metadata: linkType: hard "@types/loadable__component@npm:^5": - version: 5.13.7 - resolution: "@types/loadable__component@npm:5.13.7" + version: 5.13.5 + resolution: "@types/loadable__component@npm:5.13.5" dependencies: "@types/react": "*" - checksum: 48d1c90b7f96c4bde4e65c1b715a4a3ce13537a3e069ce5f7395ea48c17158dd214aa17cd56472863bfec5ecc58f5e8d4a28cf2bada151767c73cc12f4c6d4f6 + checksum: 9ff5c96931bbc1eeb7ba776890ca576a3a96c8f236538ce29380d6d4b28643d14a50bac5524be0859ade3620e47ec41a68af1d9e17c2cec6d3271424b144ac21 languageName: node linkType: hard @@ -4654,25 +4645,25 @@ __metadata: linkType: hard "@types/mdurl@npm:*": - version: 1.0.5 - resolution: "@types/mdurl@npm:1.0.5" - checksum: e8e872e8da8f517a9c748b06cec61c947cb73fd3069e8aeb0926670ec5dfac5d30549b3d0f1634950401633e812f9b7263f2d5dbe7e98fce12bcb2c659aa4b21 + version: 1.0.3 + resolution: "@types/mdurl@npm:1.0.3" + checksum: 5bbed4f0eb9f60040fa26be77aa2158ca468b6423876cec0d2043e7f8298e83b8e5b95fb66056327b02d747c4d376aed16c11ff3fdc4cb3dca327a6931a71f18 languageName: node linkType: hard "@types/minimist@npm:^1.2.2": - version: 1.2.5 - resolution: "@types/minimist@npm:1.2.5" - checksum: 477047b606005058ab0263c4f58097136268007f320003c348794f74adedc3166ffc47c80ec3e94687787f2ab7f4e72c468223946e79892cf0fd9e25e9970a90 + version: 1.2.3 + resolution: "@types/minimist@npm:1.2.3" + checksum: 666ea4f8c39dcbdfbc3171fe6b3902157c845cc9cb8cee33c10deb706cda5e0cc80f98ace2d6d29f6774b0dc21180c96cd73c592a1cbefe04777247c7ba0e84b languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^20.8.10": - version: 20.8.10 - resolution: "@types/node@npm:20.8.10" +"@types/node@npm:*, @types/node@npm:>=13.7.0": + version: 20.8.9 + resolution: "@types/node@npm:20.8.9" dependencies: undici-types: ~5.26.4 - checksum: 7c61190e43e8074a1b571e52ff14c880bc67a0447f2fe5ed0e1a023eb8a23d5f815658edb98890f7578afe0f090433c4a635c7c87311762544e20dd78723e515 + checksum: 0c05f3502a9507ff27e91dd6fd574fa6f391b3fafedcfe8e0c8d33351fb22d02c0121f854e5b6b3ecb9a8a468407ddf6e7ac0029fb236d4c7e1361ffc758a01f languageName: node linkType: hard @@ -4690,6 +4681,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^20.8.10": + version: 20.8.10 + resolution: "@types/node@npm:20.8.10" + dependencies: + undici-types: ~5.26.4 + checksum: 7c61190e43e8074a1b571e52ff14c880bc67a0447f2fe5ed0e1a023eb8a23d5f815658edb98890f7578afe0f090433c4a635c7c87311762544e20dd78723e515 + languageName: node + linkType: hard + "@types/node@npm:~14": version: 14.18.63 resolution: "@types/node@npm:14.18.63" @@ -4698,9 +4698,9 @@ __metadata: linkType: hard "@types/normalize-package-data@npm:^2.4.0": - version: 2.4.3 - resolution: "@types/normalize-package-data@npm:2.4.3" - checksum: 6f60e157c0fc39b80d80eb9043cdd78e4090f25c5264ef0317f5701648a5712fd453d364569675a19aef44a18c6f14f6e4809bdc0b97a46a0ed9ce4a320bbe42 + version: 2.4.2 + resolution: "@types/normalize-package-data@npm:2.4.2" + checksum: 2132e4054711e6118de967ae3a34f8c564e58d71fbcab678ec2c34c14659f638a86c35a0fd45237ea35a4a03079cf0a485e3f97736ffba5ed647bfb5da086b03 languageName: node linkType: hard @@ -4714,9 +4714,9 @@ __metadata: linkType: hard "@types/parse-json@npm:^4.0.0": - version: 4.0.1 - resolution: "@types/parse-json@npm:4.0.1" - checksum: 467c5fb95f4b03ea10fac007b4de7c9db103e8fce87b039ba5b37f17b374911833724624c311f3591435e4c42e376cab219400af1aef1dc314d5bd495d22fde7 + version: 4.0.0 + resolution: "@types/parse-json@npm:4.0.0" + checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b languageName: node linkType: hard @@ -4727,13 +4727,6 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.7.3": - version: 2.7.3 - resolution: "@types/prettier@npm:2.7.3" - checksum: 705384209cea6d1433ff6c187c80dcc0b95d99d5c5ce21a46a9a58060c527973506822e428789d842761e0280d25e3359300f017fbe77b9755bc772ab3dc2f83 - languageName: node - linkType: hard - "@types/prettier@npm:^3": version: 3.0.0 resolution: "@types/prettier@npm:3.0.0" @@ -4744,9 +4737,9 @@ __metadata: linkType: hard "@types/prop-types@npm:*": - version: 15.7.9 - resolution: "@types/prop-types@npm:15.7.9" - checksum: c7591d3ff7593e243908a07e1d3e2bb6e8879008af5800d8378115a90d0fdf669a1cae72a6d7f69e59c4fa7bb4c8ed61f6ebc1c520fe110c6f2b03ac02414072 + version: 15.7.8 + resolution: "@types/prop-types@npm:15.7.8" + checksum: 61dfad79da8b1081c450bab83b77935df487ae1cdd4660ec7df6be8e74725c15fa45cf486ce057addc956ca4ae78300b97091e2a25061133d1b9a1440bc896ae languageName: node linkType: hard @@ -4780,14 +4773,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:18.2.36": - version: 18.2.36 - resolution: "@types/react@npm:18.2.36" +"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:18.2.33": + version: 18.2.33 + resolution: "@types/react@npm:18.2.33" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 561fab294117983f3d245a63730bcffb423fc2a1b0f27d20c870abc5d980bc206a74f741cb11b5170fcdf0e747ac05448369cd930fbf345f74ed567f8fef3a9e + checksum: 75903c4d53898c69dd23d0b2730eac4676dc5ade15c25c793dec855f0d7c650cb823832bb1dd881efe8895724f15b06d4bf7081ea0b82391aa3059512ad49ccf languageName: node linkType: hard @@ -4810,23 +4803,23 @@ __metadata: linkType: hard "@types/scheduler@npm:*": - version: 0.16.5 - resolution: "@types/scheduler@npm:0.16.5" - checksum: 5aae67331bb7877edc65f77f205fb03c3808d9e51c186afe26945ce69f4072886629580a751e9ce8573e4a7538d0dfa1e4ce388c7c451fa689a4c592fdf1ea45 + version: 0.16.4 + resolution: "@types/scheduler@npm:0.16.4" + checksum: a57b0f10da1b021e6bd5eeef8a1917dd3b08a8715bd8029e2ded2096d8f091bb1bb1fef2d66e139588a983c4bfbad29b59e48011141725fa83c76e986e1257d7 languageName: node linkType: hard "@types/seedrandom@npm:^3": - version: 3.0.7 - resolution: "@types/seedrandom@npm:3.0.7" - checksum: 367e7eae95abb698f29bdcef9270a267d1ce13bf5b131951e4df08c4f2d7ff51d02c110245c8f39d2ec268b1582a488abeb12b23ba55fac1738df9c735860912 + version: 3.0.6 + resolution: "@types/seedrandom@npm:3.0.6" + checksum: 6d50b4ec8db13af2435886659323fa2fc47945f368193ca61eb5e3af9fe4d14db2c862ffbc887769f482e5dacb4b9456c0827507e5baf04ea5696d866e56ac51 languageName: node linkType: hard "@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": - version: 7.5.4 - resolution: "@types/semver@npm:7.5.4" - checksum: 120c0189f6fec5f2d12d0d71ac8a4cfa952dc17fa3d842e8afddb82bba8828a4052f8799c1653e2b47ae1977435f38e8985658fde971905ce5afb8e23ee97ecf + version: 7.5.3 + resolution: "@types/semver@npm:7.5.3" + checksum: 349fdd1ab6c213bac5c991bac766bd07b8b12e63762462bb058740dcd2eb09c8193d068bb226f134661275f2022976214c0e727a4e5eb83ec1b131127c980d3e languageName: node linkType: hard @@ -4840,16 +4833,16 @@ __metadata: linkType: hard "@types/sinonjs__fake-timers@npm:*": - version: 8.1.4 - resolution: "@types/sinonjs__fake-timers@npm:8.1.4" - checksum: f53fcb5cc6c77e064f8bf0772ddd82d5bbc8264167182cdb7209600d3580e09e71ca313925e6e8a3de0faad10518a8f803db8555762bca5a100cf5bcb5e13170 + version: 8.1.3 + resolution: "@types/sinonjs__fake-timers@npm:8.1.3" + checksum: d4bac3c1b8d544ac7a57edac3fbf402b055d6401b2f8504fc83908aa40682c71c8ba260c52db29c7a6e72932751c653a0f5185bdb18530534ac50c86425b5cb8 languageName: node linkType: hard "@types/sizzle@npm:*": - version: 2.3.5 - resolution: "@types/sizzle@npm:2.3.5" - checksum: 1c2609a9bed3a30d8142ac7a2a63aa6dfe7bec28542f5bfe51407a2a3684b103cc3f5ef1eda781037c76e508501734d16fd6a8c1142dda66acb2d5457fb83757 + version: 2.3.4 + resolution: "@types/sizzle@npm:2.3.4" + checksum: cb3b0b2a1b46068c257762d616f3d0d91c85e35e47a6d5101d69d530b7727c564a17868877dd90b5079363496b35698cf2709a7c0bbc0a584eaf91a0e044ebaa languageName: node linkType: hard @@ -4861,23 +4854,23 @@ __metadata: linkType: hard "@types/stack-utils@npm:^2.0.0": - version: 2.0.2 - resolution: "@types/stack-utils@npm:2.0.2" - checksum: 777cc7ac0c1000c5a07561013bcf7bd8477a3d55f55f376ee2f0c586331f7b999f57788140cfbdb65f6d7d97c0c41fe8fe6c778fd3ed71859c9b681ea76fc621 + version: 2.0.1 + resolution: "@types/stack-utils@npm:2.0.1" + checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 languageName: node linkType: hard "@types/tough-cookie@npm:*": - version: 4.0.4 - resolution: "@types/tough-cookie@npm:4.0.4" - checksum: 6be275b09f5fbf33f359fd6d5372c69357cf96dea5d7ba7a6563c76c6cce8b0c7f81caa4805810b0e67427cad381aeef00d8c060d614fee79ca245c2b9887c3a + version: 4.0.3 + resolution: "@types/tough-cookie@npm:4.0.3" + checksum: f201be1bbca2f2d3572032513cdb9825845114d2604a7f4091af848eeee3228a573cdc5e8082b04468a2848bb1d058f1adbb97db822e22c975ebd6fcd851a453 languageName: node linkType: hard "@types/trusted-types@npm:^2.0.2": - version: 2.0.5 - resolution: "@types/trusted-types@npm:2.0.5" - checksum: e138a70a702e31b49ac73cc33852d892367224be6e096c445194d76327cb46f54f971ae311e34371f649a2d5ac9204afee345bb22f32cfc515eb21c3f12f66b7 + version: 2.0.4 + resolution: "@types/trusted-types@npm:2.0.4" + checksum: 5256c4576cd1c90d33ddd9cc9cbd4f202b39c98cbe8b7f74963298f9eb2159c285ea5c25a6181b4c594d8d75641765bff85d72c2d251ad076e6529ce0eeedd1c languageName: node linkType: hard @@ -4903,30 +4896,30 @@ __metadata: linkType: hard "@types/yargs-parser@npm:*": - version: 21.0.2 - resolution: "@types/yargs-parser@npm:21.0.2" - checksum: e979051aac91d778fdb3953aced8cf039d954c3936b910b57735b7b52a413d065e6b2aea1cb2c583f6c23296a6f8543d2541879d798f0afedd7409a562b7bdeb + version: 21.0.1 + resolution: "@types/yargs-parser@npm:21.0.1" + checksum: 64e6316c2045e2d460c4fb79572f872f9d2f98fddc6d9d3949c71f0b6ad0ef8a2706cf49db26dfb02a9cb81433abb8f340f015e1d20a9692279abe9477b72c8e languageName: node linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.30 - resolution: "@types/yargs@npm:17.0.30" + version: 17.0.28 + resolution: "@types/yargs@npm:17.0.28" dependencies: "@types/yargs-parser": "*" - checksum: 62d9e23923420a7353253512b45289a1928d5eeb073bb2fee947257ba41fcc5bc6f78b9e087162ea2e00c7e98d27d043ef85615ad856f0d7def5c6d60f610e58 + checksum: f78c5e5c29903933c0557b4ffcd1d0b8564d66859c8ca4aa51da3714e49109ed7c2644334a1918d033df19028f4cecc91fd2e502651bb8e8451f246c371da847 languageName: node linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.0.0": - version: 6.10.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.10.0" + version: 6.7.5 + resolution: "@typescript-eslint/eslint-plugin@npm:6.7.5" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.10.0 - "@typescript-eslint/type-utils": 6.10.0 - "@typescript-eslint/utils": 6.10.0 - "@typescript-eslint/visitor-keys": 6.10.0 + "@typescript-eslint/scope-manager": 6.7.5 + "@typescript-eslint/type-utils": 6.7.5 + "@typescript-eslint/utils": 6.7.5 + "@typescript-eslint/visitor-keys": 6.7.5 debug: ^4.3.4 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -4939,25 +4932,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: eaf1f66ae1915426dad8d229c8cb80d2b320572a30c3fbc57d560d40edc2d17d004101a2fcbe331bc458df19a00f8b705f2442ee02e028bb595f4e9f9152e99d + checksum: c37edf5a703db4ff9227d67c2d2cf817e65c9afc94cc0e650fa3d2b05ac55201ef887ce9dadb9ca13779f4025bf4367e132b013e3559e777006a2332079bb180 languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.0.0": - version: 6.10.0 - resolution: "@typescript-eslint/parser@npm:6.10.0" + version: 6.7.5 + resolution: "@typescript-eslint/parser@npm:6.7.5" dependencies: - "@typescript-eslint/scope-manager": 6.10.0 - "@typescript-eslint/types": 6.10.0 - "@typescript-eslint/typescript-estree": 6.10.0 - "@typescript-eslint/visitor-keys": 6.10.0 + "@typescript-eslint/scope-manager": 6.7.5 + "@typescript-eslint/types": 6.7.5 + "@typescript-eslint/typescript-estree": 6.7.5 + "@typescript-eslint/visitor-keys": 6.7.5 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: c4b140932d639b3f3eac892497aa700bcc9101ef268285020757dc9bee670d122de107e936320af99a5c06569e4eb93bccf87f14a9970ceab708c432e748423a + checksum: 63f988c1c87697bd20487933be952b97f7a5f2a9977f505af671c7d49367fc01ca508817576646caa937c15cc0a0ef1e86adff9111eb19df8b489e7436d10620 languageName: node linkType: hard @@ -4971,22 +4964,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.10.0": - version: 6.10.0 - resolution: "@typescript-eslint/scope-manager@npm:6.10.0" +"@typescript-eslint/scope-manager@npm:6.7.5": + version: 6.7.5 + resolution: "@typescript-eslint/scope-manager@npm:6.7.5" dependencies: - "@typescript-eslint/types": 6.10.0 - "@typescript-eslint/visitor-keys": 6.10.0 - checksum: c9b9483082ae853f10b888cf04d4a14f666ac55e749bfdb7b7f726fc51127a6340b5e2f50d93f134a8854ddcc41f7b116b214753251a8b033d0d84c600439c54 + "@typescript-eslint/types": 6.7.5 + "@typescript-eslint/visitor-keys": 6.7.5 + checksum: f21858ed78f81ab2d9879139f69657fda2a7b901078f79df64d1262d80f84ef66c56525ed0bb5e393fa5ca5474ad97f2225b7f713977c2d0f79cda31b2744af9 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.10.0": - version: 6.10.0 - resolution: "@typescript-eslint/type-utils@npm:6.10.0" +"@typescript-eslint/type-utils@npm:6.7.5": + version: 6.7.5 + resolution: "@typescript-eslint/type-utils@npm:6.7.5" dependencies: - "@typescript-eslint/typescript-estree": 6.10.0 - "@typescript-eslint/utils": 6.10.0 + "@typescript-eslint/typescript-estree": 6.7.5 + "@typescript-eslint/utils": 6.7.5 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -4994,7 +4987,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: cfe9520cf0c0f50b115d2591acb2abf99ffe5789b3536268ca65b624c8498812d91f187e80c41bea7cf2cebad9c38f69ef27440f872a20fb53c59856d8f5df38 + checksum: 8023d8ddcfbf4a0411b192016711068e9e6787c5811aee3a25ac40025ade0d063a1a3d7b38469e1a534bb31fa9dbeec08ab53b7a6d7b3128358294ac5b219d9a languageName: node linkType: hard @@ -5005,10 +4998,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.10.0": - version: 6.10.0 - resolution: "@typescript-eslint/types@npm:6.10.0" - checksum: e63a9e05eb3d736d02a09131627d5cb89394bf0d9d6b46fb4b620be902d89d73554720be65acbc194787bff9ffcd518c9a6cf88fd63e418232b4181e8d8438df +"@typescript-eslint/types@npm:6.7.5": + version: 6.7.5 + resolution: "@typescript-eslint/types@npm:6.7.5" + checksum: f21e5726b60f13feb3a920c92515fbc1205ba0e9bba9959b2e42c02c282a0ab4fb0e5ae84f3807b9b1cf95036027e9033d92a911fa88e6c243a87621d8dd7a01 languageName: node linkType: hard @@ -5030,12 +5023,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.10.0": - version: 6.10.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.10.0" +"@typescript-eslint/typescript-estree@npm:6.7.5": + version: 6.7.5 + resolution: "@typescript-eslint/typescript-estree@npm:6.7.5" dependencies: - "@typescript-eslint/types": 6.10.0 - "@typescript-eslint/visitor-keys": 6.10.0 + "@typescript-eslint/types": 6.7.5 + "@typescript-eslint/visitor-keys": 6.7.5 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -5044,24 +5037,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 15bd8d9239a557071d6b03e7aa854b769fcc2dbdff587ed94be7ee8060dabdb05bcae4251df22432f625f82087e7f6986e9aab04f7eea35af694d4edd76a21af + checksum: 17685e8321edce1d1ec4278d84e63c0f41ccb19e9308f21c37450943ad0c33328755ac52b966e7855af17e01d22bc83d1fcda79c279fabe7d3460c8f315a7265 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.10.0": - version: 6.10.0 - resolution: "@typescript-eslint/utils@npm:6.10.0" +"@typescript-eslint/utils@npm:6.7.5": + version: 6.7.5 + resolution: "@typescript-eslint/utils@npm:6.7.5" dependencies: "@eslint-community/eslint-utils": ^4.4.0 "@types/json-schema": ^7.0.12 "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.10.0 - "@typescript-eslint/types": 6.10.0 - "@typescript-eslint/typescript-estree": 6.10.0 + "@typescript-eslint/scope-manager": 6.7.5 + "@typescript-eslint/types": 6.7.5 + "@typescript-eslint/typescript-estree": 6.7.5 semver: ^7.5.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: b6bd4d68623fb8d616ae63a88f2954258411a0cc113029fba801d1e74b4c0319fdfbcac0070527afe5cc38c012c8718e4faecd1603000924d7b89e8fefc3f24d + checksum: f365c654241f927e7784640079627d60a296aa3d575552b07594a69cfc419832eb5fa4adc87acb1988bea9741ae9cc4a5277dab168990310caef5de125255752 languageName: node linkType: hard @@ -5093,13 +5086,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.10.0": - version: 6.10.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.10.0" +"@typescript-eslint/visitor-keys@npm:6.7.5": + version: 6.7.5 + resolution: "@typescript-eslint/visitor-keys@npm:6.7.5" dependencies: - "@typescript-eslint/types": 6.10.0 + "@typescript-eslint/types": 6.7.5 eslint-visitor-keys: ^3.4.1 - checksum: 9640bfae41e6109ffba31e68b1720382de0538d021261e2fc9e514c83c703084393c0818ca77ed26b950273e45e593371120281e8d4bbd09cb8c2d46c9fe4f03 + checksum: 2df996742f63d89fa339b0e8ff3a3a289d36b3f584f7538a7626bed3869e9ae27f8f56ab31748519d25a63de2ae22a43dd8413610b00436ff342b0a17eb85289 languageName: node linkType: hard @@ -5601,20 +5594,13 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:1": +"abbrev@npm:1, abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 languageName: node linkType: hard -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f36 - languageName: node - linkType: hard - "acorn-class-fields@npm:^0.3.7": version: 0.3.7 resolution: "acorn-class-fields@npm:0.3.7" @@ -5699,22 +5685,22 @@ __metadata: linkType: hard "acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": - version: 8.3.0 - resolution: "acorn-walk@npm:8.3.0" - checksum: 15ea56ab6529135be05e7d018f935ca80a572355dd3f6d3cd717e36df3346e0f635a93ae781b1c7942607693e2e5f3ef81af5c6fc697bbadcc377ebda7b7f5f6 + version: 8.2.0 + resolution: "acorn-walk@npm:8.2.0" + checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 languageName: node linkType: hard "acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.11.2 - resolution: "acorn@npm:8.11.2" + version: 8.10.0 + resolution: "acorn@npm:8.10.0" bin: acorn: bin/acorn - checksum: 818450408684da89423e3daae24e4dc9b68692db8ab49ea4569c7c5abb7a3f23669438bf129cc81dfdada95e1c9b944ee1bfca2c57a05a4dc73834a612fbf6a7 + checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d languageName: node linkType: hard -"agent-base@npm:6": +"agent-base@npm:6, agent-base@npm:^6.0.2": version: 6.0.2 resolution: "agent-base@npm:6.0.2" dependencies: @@ -5723,12 +5709,12 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": - version: 7.1.0 - resolution: "agent-base@npm:7.1.0" +"agentkeepalive@npm:^4.2.1": + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" dependencies: - debug: ^4.3.4 - checksum: f7828f991470a0cc22cb579c86a18cbae83d8a3cbed39992ab34fc7217c4d126017f1c74d0ab66be87f71455318a8ea3e757d6a37881b8d0f2a2c6aa55e5418f + humanize-ms: ^1.2.1 + checksum: 13278cd5b125e51eddd5079f04d6fe0914ac1b8b91c1f3db2c1822f99ac1a7457869068997784342fe455d59daaff22e14fb7b8c3da4e741896e7e31faf92481 languageName: node linkType: hard @@ -5975,6 +5961,16 @@ __metadata: languageName: node linkType: hard +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: ^1.0.0 + readable-stream: ^3.6.0 + checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + languageName: node + linkType: hard + "arg@npm:^4.1.0": version: 4.1.3 resolution: "arg@npm:4.1.3" @@ -6007,7 +6003,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.3.0": +"aria-query@npm:^5.1.3": version: 5.3.0 resolution: "aria-query@npm:5.3.0" dependencies: @@ -6033,7 +6029,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7": +"array-includes@npm:^3.1.6": version: 3.1.7 resolution: "array-includes@npm:3.1.7" dependencies: @@ -6060,7 +6056,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.3": +"array.prototype.findlastindex@npm:^1.2.2": version: 1.2.3 resolution: "array.prototype.findlastindex@npm:1.2.3" dependencies: @@ -6073,7 +6069,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": +"array.prototype.flat@npm:^1.3.1": version: 1.3.2 resolution: "array.prototype.flat@npm:1.3.2" dependencies: @@ -6085,7 +6081,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.3.1, array.prototype.flatmap@npm:^1.3.2": +"array.prototype.flatmap@npm:^1.3.1": version: 1.3.2 resolution: "array.prototype.flatmap@npm:1.3.2" dependencies: @@ -6143,10 +6139,10 @@ __metadata: languageName: node linkType: hard -"ast-types-flow@npm:^0.0.8": - version: 0.0.8 - resolution: "ast-types-flow@npm:0.0.8" - checksum: 0a64706609a179233aac23817837abab614f3548c252a2d3d79ea1e10c74aa28a0846e11f466cf72771b6ed8713abc094dcf8c40c3ec4207da163efa525a94a8 +"ast-types-flow@npm:^0.0.7": + version: 0.0.7 + resolution: "ast-types-flow@npm:0.0.7" + checksum: a26dcc2182ffee111cad7c471759b0bda22d3b7ebacf27c348b22c55f16896b18ab0a4d03b85b4020dce7f3e634b8f00b593888f622915096ea1927fa51866c4 languageName: node linkType: hard @@ -6172,9 +6168,9 @@ __metadata: linkType: hard "async@npm:^3.2.3, async@npm:^3.2.4": - version: 3.2.5 - resolution: "async@npm:3.2.5" - checksum: 5ec77f1312301dee02d62140a6b1f7ee0edd2a0f983b6fd2b0849b969f245225b990b47b8243e7b9ad16451a53e7f68e753700385b706198ced888beedba3af4 + version: 3.2.4 + resolution: "async@npm:3.2.4" + checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 languageName: node linkType: hard @@ -6226,10 +6222,10 @@ __metadata: languageName: node linkType: hard -"axe-core@npm:=4.7.0": - version: 4.7.0 - resolution: "axe-core@npm:4.7.0" - checksum: f086bcab42be1761ba2b0b127dec350087f4c3a853bba8dd58f69d898cefaac31a1561da23146f6f3c07954c76171d1f2ce460e555e052d2b02cd79af628fa4a +"axe-core@npm:^4.6.2": + version: 4.8.2 + resolution: "axe-core@npm:4.8.2" + checksum: 8c19f507dabfcb8514e4280c7fc66e85143be303ddb57ec9f119338021228dc9b80560993938003837bda415fde7c07bba3a96560008ffa5f4145a248ed8f5fe languageName: node linkType: hard @@ -6254,7 +6250,7 @@ __metadata: languageName: node linkType: hard -"axobject-query@npm:^3.2.1": +"axobject-query@npm:^3.1.1": version: 3.2.1 resolution: "axobject-query@npm:3.2.1" dependencies: @@ -6350,14 +6346,14 @@ __metadata: linkType: hard "babel-plugin-polyfill-corejs3@npm:^0.8.5": - version: 0.8.6 - resolution: "babel-plugin-polyfill-corejs3@npm:0.8.6" + version: 0.8.5 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.5" dependencies: "@babel/helper-define-polyfill-provider": ^0.4.3 - core-js-compat: ^3.33.1 + core-js-compat: ^3.32.2 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 36951c2edac42ac0f05b200502e90d77bf66ccee5b52e2937d23496c6ef2372cce31b8c64144da374b77bd3eb65e2721703a52eac56cad16a152326c092cbf77 + checksum: 54ff3956c4f88e483d38b27ceec6199b9e73fceac10ebf969469d215e6a62929384e4433f85335c9a6ba809329636e27f9bdae2f54075f833e7a745341c07d84 languageName: node linkType: hard @@ -6656,14 +6652,14 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.0 - resolution: "cacache@npm:18.0.0" +"cacache@npm:^17.0.0": + version: 17.1.4 + resolution: "cacache@npm:17.1.4" dependencies: "@npmcli/fs": ^3.1.0 fs-minipass: ^3.0.0 glob: ^10.2.2 - lru-cache: ^10.0.1 + lru-cache: ^7.7.1 minipass: ^7.0.3 minipass-collect: ^1.0.2 minipass-flush: ^1.0.5 @@ -6672,18 +6668,17 @@ __metadata: ssri: ^10.0.0 tar: ^6.1.11 unique-filename: ^3.0.0 - checksum: 2cd6bf15551abd4165acb3a4d1ef0593b3aa2fd6853ae16b5bb62199c2faecf27d36555a9545c0e07dd03347ec052e782923bdcece724a24611986aafb53e152 + checksum: b7751df756656954a51201335addced8f63fc53266fa56392c9f5ae83c8d27debffb4458ac2d168a744a4517ec3f2163af05c20097f93d17bdc2dc8a385e14a6 languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.4, call-bind@npm:^1.0.5": - version: 1.0.5 - resolution: "call-bind@npm:1.0.5" +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind@npm:1.0.2" dependencies: - function-bind: ^1.1.2 - get-intrinsic: ^1.2.1 - set-function-length: ^1.1.1 - checksum: 449e83ecbd4ba48e7eaac5af26fea3b50f8f6072202c2dd7c5a6e7a6308f2421abe5e13a3bbd55221087f76320c5e09f25a8fdad1bab2b77c68ae74d92234ea5 + function-bind: ^1.1.1 + get-intrinsic: ^1.0.2 + checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 languageName: node linkType: hard @@ -6750,9 +6745,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001561 - resolution: "caniuse-lite@npm:1.0.30001561" - checksum: 949829fe037e23346595614e01d362130245920503a12677f2506ce68e1240360113d6383febed41e8aa38cd0f5fd9c69c21b0af65a71c0246d560db489f1373 + version: 1.0.30001549 + resolution: "caniuse-lite@npm:1.0.30001549" + checksum: 7f2abeedc8cf8b92cc0613855d71b995ce436068c0bcdd798c5af7d297ccf9f52496b00181beda42d82d25079dd4b6e389c67486156d40d8854e5707a25cb054 languageName: node linkType: hard @@ -7029,7 +7024,7 @@ __metadata: languageName: node linkType: hard -"color-support@npm:^1.1.2": +"color-support@npm:^1.1.2, color-support@npm:^1.1.3": version: 1.1.3 resolution: "color-support@npm:1.1.3" bin: @@ -7250,12 +7245,12 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.33.1": - version: 3.33.2 - resolution: "core-js-compat@npm:3.33.2" +"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.32.2": + version: 3.33.0 + resolution: "core-js-compat@npm:3.33.0" dependencies: browserslist: ^4.22.1 - checksum: 4206d3ff282a9188399e9003301fa4b96844152afcea7b9c9accc653542f40f581f77bf079b8be67f614e305da1f29e868a49ceebb6dbe3f5fb4a28bd2dbf431 + checksum: 83ae54008c09b8e0ae3c59457039866c342c7e28b0d30eebb638a5b51c01432e63fe97695c90645cbc6a8b073a4f9a8b0e75f0818bbf8b4b054e01f4c17d3181 languageName: node linkType: hard @@ -7571,7 +7566,7 @@ __metadata: languageName: node linkType: hard -"css-functions-list@npm:^3.2.1": +"css-functions-list@npm:^3.2.0": version: 3.2.1 resolution: "css-functions-list@npm:3.2.1" checksum: 57d7deb3b05e84d95b88ba9b3244cf60d33b40652b3357f084c805b24a9febda5987ade44ef25a56be41e73249a7dcc157abd704d8a0e998b2c1c2e2d5de6461 @@ -7820,7 +7815,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -7962,7 +7957,7 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.1": +"define-data-property@npm:^1.0.1": version: 1.1.1 resolution: "define-data-property@npm:1.1.1" dependencies: @@ -8288,9 +8283,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.535": - version: 1.4.577 - resolution: "electron-to-chromium@npm:1.4.577" - checksum: 822af571c8c94934655e46f77057bdce5474e1bcf7ceaa8a62fcec68554855d92f3d55de13b93d190ac88892ae89d0733645344c056bf684b190ca5db8ec1040 + version: 1.4.554 + resolution: "electron-to-chromium@npm:1.4.554" + checksum: cbac43c50b43777327f4a7bf149ee3088c1da8b91bbcd80f78d2cc77bc52763f6d0941574499239d9caefd3430d3093f865e5f1093371418f7d6b70301eeae9b languageName: node linkType: hard @@ -8403,11 +8398,11 @@ __metadata: linkType: hard "envinfo@npm:^7.7.3": - version: 7.11.0 - resolution: "envinfo@npm:7.11.0" + version: 7.10.0 + resolution: "envinfo@npm:7.10.0" bin: envinfo: dist/cli.js - checksum: c45a7d20409d5f4cda72483b150d3816b15b434f2944d72c1495d8838bd7c4e7b2f32c12128ffb9b92b5f66f436237b8a525eb3a9a5da2d20013bc4effa28aef + checksum: 05e81a5768c42cbd5c580dc3f274db3401facadd53e9bd52e2aa49dfbb5d8b26f6181c25a6652d79618a6994185bd2b1c137673101690b147f758e4e71d42f7d languageName: node linkType: hard @@ -8446,24 +8441,24 @@ __metadata: linkType: hard "es-abstract@npm:^1.22.1": - version: 1.22.3 - resolution: "es-abstract@npm:1.22.3" + version: 1.22.2 + resolution: "es-abstract@npm:1.22.2" dependencies: array-buffer-byte-length: ^1.0.0 arraybuffer.prototype.slice: ^1.0.2 available-typed-arrays: ^1.0.5 - call-bind: ^1.0.5 + call-bind: ^1.0.2 es-set-tostringtag: ^2.0.1 es-to-primitive: ^1.2.1 function.prototype.name: ^1.1.6 - get-intrinsic: ^1.2.2 + get-intrinsic: ^1.2.1 get-symbol-description: ^1.0.0 globalthis: ^1.0.3 gopd: ^1.0.1 + has: ^1.0.3 has-property-descriptors: ^1.0.0 has-proto: ^1.0.1 has-symbols: ^1.0.3 - hasown: ^2.0.0 internal-slot: ^1.0.5 is-array-buffer: ^3.0.2 is-callable: ^1.2.7 @@ -8473,7 +8468,7 @@ __metadata: is-string: ^1.0.7 is-typed-array: ^1.1.12 is-weakref: ^1.0.2 - object-inspect: ^1.13.1 + object-inspect: ^1.12.3 object-keys: ^1.1.1 object.assign: ^4.1.4 regexp.prototype.flags: ^1.5.1 @@ -8487,8 +8482,8 @@ __metadata: typed-array-byte-offset: ^1.0.0 typed-array-length: ^1.0.4 unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.13 - checksum: b1bdc962856836f6e72be10b58dc128282bdf33771c7a38ae90419d920fc3b36cc5d2b70a222ad8016e3fc322c367bf4e9e89fc2bc79b7e933c05b218e83d79a + which-typed-array: ^1.1.11 + checksum: cc70e592d360d7d729859013dee7a610c6b27ed8630df0547c16b0d16d9fe6505a70ee14d1af08d970fdd132b3f88c9ca7815ce72c9011608abf8ab0e55fc515 languageName: node linkType: hard @@ -8509,7 +8504,7 @@ __metadata: languageName: node linkType: hard -"es-iterator-helpers@npm:^1.0.12, es-iterator-helpers@npm:^1.0.15": +"es-iterator-helpers@npm:^1.0.12": version: 1.0.15 resolution: "es-iterator-helpers@npm:1.0.15" dependencies: @@ -8539,22 +8534,22 @@ __metadata: linkType: hard "es-set-tostringtag@npm:^2.0.1": - version: 2.0.2 - resolution: "es-set-tostringtag@npm:2.0.2" + version: 2.0.1 + resolution: "es-set-tostringtag@npm:2.0.1" dependencies: - get-intrinsic: ^1.2.2 + get-intrinsic: ^1.1.3 + has: ^1.0.3 has-tostringtag: ^1.0.0 - hasown: ^2.0.0 - checksum: afcec3a4c9890ae14d7ec606204858441c801ff84f312538e1d1ccf1e5493c8b17bd672235df785f803756472cb4f2d49b87bde5237aef33411e74c22f194e07 + checksum: ec416a12948cefb4b2a5932e62093a7cf36ddc3efd58d6c58ca7ae7064475ace556434b869b0bbeb0c365f1032a8ccd577211101234b69837ad83ad204fff884 languageName: node linkType: hard "es-shim-unscopables@npm:^1.0.0": - version: 1.0.2 - resolution: "es-shim-unscopables@npm:1.0.2" + version: 1.0.0 + resolution: "es-shim-unscopables@npm:1.0.0" dependencies: - hasown: ^2.0.0 - checksum: 432bd527c62065da09ed1d37a3f8e623c423683285e6188108286f4a1e8e164a5bcbfbc0051557c7d14633cd2a41ce24c7048e6bbb66a985413fd32f1be72626 + has: ^1.0.3 + checksum: 83e95cadbb6ee44d3644dfad60dcad7929edbc42c85e66c3e99aefd68a3a5c5665f2686885cddb47dfeabfd77bd5ea5a7060f2092a955a729bbd8834f0d86fa1 languageName: node linkType: hard @@ -8654,7 +8649,7 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.9": +"eslint-import-resolver-node@npm:^0.3.7": version: 0.3.9 resolution: "eslint-import-resolver-node@npm:0.3.9" dependencies: @@ -8715,29 +8710,29 @@ __metadata: linkType: hard "eslint-plugin-import@npm:^2.26.0": - version: 2.29.0 - resolution: "eslint-plugin-import@npm:2.29.0" + version: 2.28.1 + resolution: "eslint-plugin-import@npm:2.28.1" dependencies: - array-includes: ^3.1.7 - array.prototype.findlastindex: ^1.2.3 - array.prototype.flat: ^1.3.2 - array.prototype.flatmap: ^1.3.2 + array-includes: ^3.1.6 + array.prototype.findlastindex: ^1.2.2 + array.prototype.flat: ^1.3.1 + array.prototype.flatmap: ^1.3.1 debug: ^3.2.7 doctrine: ^2.1.0 - eslint-import-resolver-node: ^0.3.9 + eslint-import-resolver-node: ^0.3.7 eslint-module-utils: ^2.8.0 - hasown: ^2.0.0 - is-core-module: ^2.13.1 + has: ^1.0.3 + is-core-module: ^2.13.0 is-glob: ^4.0.3 minimatch: ^3.1.2 - object.fromentries: ^2.0.7 - object.groupby: ^1.0.1 - object.values: ^1.1.7 + object.fromentries: ^2.0.6 + object.groupby: ^1.0.0 + object.values: ^1.1.6 semver: ^6.3.1 tsconfig-paths: ^3.14.2 peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 19ee541fb95eb7a796f3daebe42387b8d8262bbbcc4fd8a6e92f63a12035f3d2c6cb8bc0b6a70864fa14b1b50ed6b8e6eed5833e625e16cb6bb98b665beff269 + checksum: e8ae6dd8f06d8adf685f9c1cfd46ac9e053e344a05c4090767e83b63a85c8421ada389807a39e73c643b9bff156715c122e89778169110ed68d6428e12607edf languageName: node linkType: hard @@ -8758,8 +8753,8 @@ __metadata: linkType: hard "eslint-plugin-jest@npm:^27.1.4": - version: 27.6.0 - resolution: "eslint-plugin-jest@npm:27.6.0" + version: 27.4.2 + resolution: "eslint-plugin-jest@npm:27.4.2" dependencies: "@typescript-eslint/utils": ^5.10.0 peerDependencies: @@ -8771,7 +8766,7 @@ __metadata: optional: true jest: optional: true - checksum: 4c42641f9bf2d597761637028083e20b9f81762308e98baae40eb805d3e81ff8d837f06f4f0c1a2fd249e2be2fb24d33b7aafeaa8942de805c2b8d7c3b6fc4e4 + checksum: 99a8301ae00c37da97866b8b13c89a077716d2c653b26bc417d242e7300a43237c0017fd488c43966fa38585f19050facdbbc71d03ca36a1ce6f2ba930a9143e languageName: node linkType: hard @@ -8795,28 +8790,28 @@ __metadata: linkType: hard "eslint-plugin-jsx-a11y@npm:^6.6.1": - version: 6.8.0 - resolution: "eslint-plugin-jsx-a11y@npm:6.8.0" - dependencies: - "@babel/runtime": ^7.23.2 - aria-query: ^5.3.0 - array-includes: ^3.1.7 - array.prototype.flatmap: ^1.3.2 - ast-types-flow: ^0.0.8 - axe-core: =4.7.0 - axobject-query: ^3.2.1 + version: 6.7.1 + resolution: "eslint-plugin-jsx-a11y@npm:6.7.1" + dependencies: + "@babel/runtime": ^7.20.7 + aria-query: ^5.1.3 + array-includes: ^3.1.6 + array.prototype.flatmap: ^1.3.1 + ast-types-flow: ^0.0.7 + axe-core: ^4.6.2 + axobject-query: ^3.1.1 damerau-levenshtein: ^1.0.8 emoji-regex: ^9.2.2 - es-iterator-helpers: ^1.0.15 - hasown: ^2.0.0 - jsx-ast-utils: ^3.3.5 - language-tags: ^1.0.9 + has: ^1.0.3 + jsx-ast-utils: ^3.3.3 + language-tags: =1.0.5 minimatch: ^3.1.2 - object.entries: ^1.1.7 - object.fromentries: ^2.0.7 + object.entries: ^1.1.6 + object.fromentries: ^2.0.6 + semver: ^6.3.0 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 3dec00e2a3089c4c61ac062e4196a70985fb7eda1fd67fe035363d92578debde92fdb8ed2e472321fc0d71e75f4a1e8888c6a3218c14dd93c8e8d19eb6f51554 + checksum: f166dd5fe7257c7b891c6692e6a3ede6f237a14043ae3d97581daf318fc5833ddc6b4871aa34ab7656187430170500f6d806895747ea17ecdf8231a666c3c2fd languageName: node linkType: hard @@ -8959,7 +8954,55 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8, eslint@npm:^8.53.0": +"eslint@npm:^8": + version: 8.52.0 + resolution: "eslint@npm:8.52.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.6.1 + "@eslint/eslintrc": ^2.1.2 + "@eslint/js": 8.52.0 + "@humanwhocodes/config-array": ^0.11.13 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 + "@ungap/structured-clone": ^1.2.0 + ajv: ^6.12.4 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.2.2 + eslint-visitor-keys: ^3.4.3 + espree: ^9.6.1 + esquery: ^1.4.2 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + globals: ^13.19.0 + graphemer: ^1.4.0 + ignore: ^5.2.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + is-path-inside: ^3.0.3 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.3 + strip-ansi: ^6.0.1 + text-table: ^0.2.0 + bin: + eslint: bin/eslint.js + checksum: fd22d1e9bd7090e31b00cbc7a3b98f3b76020a4c4641f987ae7d0c8f52e1b88c3b268bdfdabac2e1a93513e5d11339b718ff45cbff48a44c35d7e52feba510ed + languageName: node + linkType: hard + +"eslint@npm:^8.53.0": version: 8.53.0 resolution: "eslint@npm:8.53.0" dependencies: @@ -9261,15 +9304,15 @@ __metadata: linkType: hard "fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.1": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" + version: 3.3.1 + resolution: "fast-glob@npm:3.3.1" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 glob-parent: ^5.1.2 merge2: ^1.3.0 micromatch: ^4.0.4 - checksum: 900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec1 + checksum: b6f3add6403e02cf3a798bfbb1183d0f6da2afd368f27456010c0bc1f9640aea308243d4cb2c0ab142f618276e65ecb8be1661d7c62a7b4e5ba774b9ce5432e5 languageName: node linkType: hard @@ -9356,7 +9399,7 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^7.0.0, file-entry-cache@npm:^7.0.1": +"file-entry-cache@npm:^7.0.1": version: 7.0.1 resolution: "file-entry-cache@npm:7.0.1" dependencies: @@ -9657,7 +9700,7 @@ __metadata: languageName: node linkType: hard -"function-bind@npm:^1.1.1, function-bind@npm:^1.1.2": +"function-bind@npm:^1.1.1": version: 1.1.2 resolution: "function-bind@npm:1.1.2" checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1 @@ -9700,6 +9743,22 @@ __metadata: languageName: node linkType: hard +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.3 + console-control-strings: ^1.1.0 + has-unicode: ^2.0.1 + signal-exit: ^3.0.7 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.5 + checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + languageName: node + linkType: hard + "generate-changelog@npm:1.8.0": version: 1.8.0 resolution: "generate-changelog@npm:1.8.0" @@ -9742,15 +9801,15 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2": - version: 1.2.2 - resolution: "get-intrinsic@npm:1.2.2" +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": + version: 1.2.1 + resolution: "get-intrinsic@npm:1.2.1" dependencies: - function-bind: ^1.1.2 + function-bind: ^1.1.1 + has: ^1.0.3 has-proto: ^1.0.1 has-symbols: ^1.0.3 - hasown: ^2.0.0 - checksum: 447ff0724df26829908dc033b62732359596fcf66027bc131ab37984afb33842d9cd458fd6cecadfe7eac22fd8a54b349799ed334cf2726025c921c7250e7417 + checksum: 5b61d88552c24b0cf6fa2d1b3bc5459d7306f699de060d76442cce49a4721f52b8c560a33ab392cf5575b7810277d54ded9d4d39a1ea61855619ebc005aa7e5f languageName: node linkType: hard @@ -9875,7 +9934,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.4": +"glob@npm:^10.2.2, glob@npm:^10.3.4": version: 10.3.10 resolution: "glob@npm:10.3.10" dependencies: @@ -10114,11 +10173,11 @@ __metadata: linkType: hard "has-property-descriptors@npm:^1.0.0": - version: 1.0.1 - resolution: "has-property-descriptors@npm:1.0.1" + version: 1.0.0 + resolution: "has-property-descriptors@npm:1.0.0" dependencies: - get-intrinsic: ^1.2.2 - checksum: 2bcc6bf6ec6af375add4e4b4ef586e43674850a91ad4d46666d0b28ba8e1fd69e424c7677d24d60f69470ad0afaa2f3197f508b20b0bb7dd99a8ab77ffc4b7c4 + get-intrinsic: ^1.1.1 + checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb languageName: node linkType: hard @@ -10152,6 +10211,13 @@ __metadata: languageName: node linkType: hard +"has@npm:^1.0.3": + version: 1.0.4 + resolution: "has@npm:1.0.4" + checksum: 8a11ba062e0627c9578a1d08285401e39f1d071a9692ddf793199070edb5648b21c774dd733e2a181edd635bf6862731885f476f4ccf67c998d7a5ff7cef2550 + languageName: node + linkType: hard + "hash.js@npm:1.1.7": version: 1.1.7 resolution: "hash.js@npm:1.1.7" @@ -10162,15 +10228,6 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0": - version: 2.0.0 - resolution: "hasown@npm:2.0.0" - dependencies: - function-bind: ^1.1.2 - checksum: 6151c75ca12554565098641c98a40f4cc86b85b0fd5b6fe92360967e4605a4f9610f7757260b4e8098dd1c2ce7f4b095f2006fe72a570e3b6d2d28de0298c176 - languageName: node - linkType: hard - "he@npm:^1.2.0": version: 1.2.0 resolution: "he@npm:1.2.0" @@ -10313,16 +10370,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "http-proxy-agent@npm:7.0.0" - dependencies: - agent-base: ^7.1.0 - debug: ^4.3.4 - checksum: 48d4fac997917e15f45094852b63b62a46d0c8a4f0b9c6c23ca26d27b8df8d178bed88389e604745e748bd9a01f5023e25093722777f0593c3f052009ff438b6 - languageName: node - linkType: hard - "http-status-codes@npm:2.3.0": version: 2.3.0 resolution: "http-status-codes@npm:2.3.0" @@ -10340,16 +10387,6 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.1": - version: 7.0.2 - resolution: "https-proxy-agent@npm:7.0.2" - dependencies: - agent-base: ^7.0.2 - debug: 4 - checksum: 088969a0dd476ea7a0ed0a2cf1283013682b08f874c3bc6696c83fa061d2c157d29ef0ad3eb70a2046010bb7665573b2388d10fdcb3e410a66995e5248444292 - languageName: node - linkType: hard - "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -10371,6 +10408,15 @@ __metadata: languageName: node linkType: hard +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: ^2.0.0 + checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + languageName: node + linkType: hard + "husky@npm:8.0.3": version: 8.0.3 resolution: "husky@npm:8.0.3" @@ -10410,11 +10456,11 @@ __metadata: linkType: hard "i18next@npm:*": - version: 23.6.0 - resolution: "i18next@npm:23.6.0" + version: 23.5.1 + resolution: "i18next@npm:23.5.1" dependencies: "@babel/runtime": ^7.22.5 - checksum: 0898be75ce56a5901eb9763c8cd941a23cfc24fbe7b32ba0479c08f58c40c1c88c95596430154a6250087ec76d150335144b2cb637ebaa443490b9af7b6e275e + checksum: 4be043bd72287bfae9777a3252b9458d2e3f5e9a97ea62cf434e6e3767b45df4365d8780d0dd14efd4e9da5eb0f90534510b138f1372d1cb9012000a69bbedaf languageName: node linkType: hard @@ -10512,9 +10558,9 @@ __metadata: linkType: hard "import-meta-resolve@npm:^3.0.0": - version: 3.1.1 - resolution: "import-meta-resolve@npm:3.1.1" - checksum: 24e703e8107699e22fdbea8712e1fa3ef6c379a5e999e6d62280754d302ec71bf41302e791886706a015cc20eb2d292c7187d16efb064e25b617808e3f65e1d3 + version: 3.0.0 + resolution: "import-meta-resolve@npm:3.0.0" + checksum: d0428cd14915ee0093b995dc5bbc70bd01cc668822f52b62af98f728e5d6a08724f07e6aa9f5fae002d5eecbf6ec2cdcd379bf4869dd1b353bd080693f91e394 languageName: node linkType: hard @@ -10571,13 +10617,13 @@ __metadata: linkType: hard "internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5": - version: 1.0.6 - resolution: "internal-slot@npm:1.0.6" + version: 1.0.5 + resolution: "internal-slot@npm:1.0.5" dependencies: - get-intrinsic: ^1.2.2 - hasown: ^2.0.0 + get-intrinsic: ^1.2.0 + has: ^1.0.3 side-channel: ^1.0.4 - checksum: 7872454888047553ce97a3fa1da7cc054a28ec5400a9c2e9f4dbe4fe7c1d041cb8e8301467614b80d4246d50377aad2fb58860b294ed74d6700cc346b6f89549 + checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a languageName: node linkType: hard @@ -10621,7 +10667,7 @@ __metadata: languageName: node linkType: hard -"ipaddr.js@npm:^2.1.0": +"ipaddr.js@npm:^2.0.1": version: 2.1.0 resolution: "ipaddr.js@npm:2.1.0" checksum: 807a054f2bd720c4d97ee479d6c9e865c233bea21f139fb8dabd5a35c4226d2621c42e07b4ad94ff3f82add926a607d8d9d37c625ad0319f0e08f9f2bd1968e2 @@ -10638,12 +10684,12 @@ __metadata: languageName: node linkType: hard -"is-accessor-descriptor@npm:^1.0.1": - version: 1.0.1 - resolution: "is-accessor-descriptor@npm:1.0.1" +"is-accessor-descriptor@npm:^0.1.6": + version: 0.1.6 + resolution: "is-accessor-descriptor@npm:0.1.6" dependencies: - hasown: ^2.0.0 - checksum: 8db44c02230a5e9b9dec390a343178791f073d5d5556a400527d2fd67a72d93b226abab2bd4123305c268f5dc22831bfdbd38430441fda82ea9e0b95ddc6b267 + kind-of: ^3.0.2 + checksum: 3d629a086a9585bc16a83a8e8a3416f400023301855cafb7ccc9a1d63145b7480f0ad28877dcc2cce09492c4ec1c39ef4c071996f24ee6ac626be4217b8ffc8a languageName: node linkType: hard @@ -10733,21 +10779,21 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1, is-core-module@npm:^2.5.0": - version: 2.13.1 - resolution: "is-core-module@npm:2.13.1" +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.5.0": + version: 2.13.0 + resolution: "is-core-module@npm:2.13.0" dependencies: - hasown: ^2.0.0 - checksum: 256559ee8a9488af90e4bad16f5583c6d59e92f0742e9e8bb4331e758521ee86b810b93bae44f390766ffbc518a0488b18d9dab7da9a5ff997d499efc9403f7c + has: ^1.0.3 + checksum: 053ab101fb390bfeb2333360fd131387bed54e476b26860dc7f5a700bbf34a0ec4454f7c8c4d43e8a0030957e4b3db6e16d35e1890ea6fb654c833095e040355 languageName: node linkType: hard -"is-data-descriptor@npm:^1.0.1": - version: 1.0.1 - resolution: "is-data-descriptor@npm:1.0.1" +"is-data-descriptor@npm:^0.1.4": + version: 0.1.4 + resolution: "is-data-descriptor@npm:0.1.4" dependencies: - hasown: ^2.0.0 - checksum: fc6da5be5177149d554c5612cc382e9549418ed72f2d3ed5a3e6511b03dd119ae1b2258320ca94931df50b7e9ee012894eccd4ca45bbcadf0d5b27da6faeb15a + kind-of: ^3.0.2 + checksum: 5c622e078ba933a78338ae398a3d1fc5c23332b395312daf4f74bab4afb10d061cea74821add726cb4db8b946ba36217ee71a24fe71dd5bca4632edb7f6aad87 languageName: node linkType: hard @@ -10761,12 +10807,13 @@ __metadata: linkType: hard "is-descriptor@npm:^0.1.0": - version: 0.1.7 - resolution: "is-descriptor@npm:0.1.7" + version: 0.1.6 + resolution: "is-descriptor@npm:0.1.6" dependencies: - is-accessor-descriptor: ^1.0.1 - is-data-descriptor: ^1.0.1 - checksum: 45743109f0bb03f9fa989c34d31ece87cc15792649f147b896a7c4db2906a02fca685867619f4d312e024d7bbd53b945a47c6830d01f5e73efcc6388ac211963 + is-accessor-descriptor: ^0.1.6 + is-data-descriptor: ^0.1.4 + kind-of: ^5.0.0 + checksum: 0f780c1b46b465f71d970fd7754096ffdb7b69fd8797ca1f5069c163eaedcd6a20ec4a50af669075c9ebcfb5266d2e53c8b227e485eefdb0d1fee09aa1dd8ab6 languageName: node linkType: hard @@ -11213,13 +11260,6 @@ __metadata: languageName: node linkType: hard -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e - languageName: node - linkType: hard - "isobject@npm:^2.1.0": version: 2.1.0 resolution: "isobject@npm:2.1.0" @@ -11247,9 +11287,9 @@ __metadata: linkType: hard "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.1 - resolution: "istanbul-lib-coverage@npm:3.2.1" - checksum: 382d5f698fed81de5c32a32d91848cba29df097bfce162f3cdd7fb66de7feeace9873d75c9d6bf3e34b1a4cda6be5bd819ec41c4b532c584dbff7c69db85448e + version: 3.2.0 + resolution: "istanbul-lib-coverage@npm:3.2.0" + checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 languageName: node linkType: hard @@ -11881,11 +11921,11 @@ __metadata: linkType: hard "jiti@npm:^1.18.2": - version: 1.21.0 - resolution: "jiti@npm:1.21.0" + version: 1.20.0 + resolution: "jiti@npm:1.20.0" bin: jiti: bin/jiti.js - checksum: a7bd5d63921c170eaec91eecd686388181c7828e1fa0657ab374b9372bfc1f383cf4b039e6b272383d5cb25607509880af814a39abdff967322459cca41f2961 + checksum: 7924062b5675142e3e272a27735be84b7bfc0a0eb73217fc2dcafa034f37c4f7b4b9ffc07dd98bcff0f739a8811ce1544db205ae7e97b1c86f0df92c65ce3c72 languageName: node linkType: hard @@ -12132,7 +12172,7 @@ __metadata: languageName: node linkType: hard -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.3": version: 3.3.5 resolution: "jsx-ast-utils@npm:3.3.5" dependencies: @@ -12195,6 +12235,13 @@ __metadata: languageName: node linkType: hard +"kind-of@npm:^5.0.0": + version: 5.1.0 + resolution: "kind-of@npm:5.1.0" + checksum: f2a0102ae0cf19c4a953397e552571bad2b588b53282874f25fca7236396e650e2db50d41f9f516bd402536e4df968dbb51b8e69e4d5d4a7173def78448f7bab + languageName: node + linkType: hard + "kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -12225,26 +12272,26 @@ __metadata: languageName: node linkType: hard -"known-css-properties@npm:^0.29.0": - version: 0.29.0 - resolution: "known-css-properties@npm:0.29.0" - checksum: daa6562e907f856cbfd58a00c42f532c9bba283388984da6a3bffb494e56612e5f23c52f30b0d9885f0ea07ad5d88bfa0470ee65017a6ce6c565289a1afd78af +"known-css-properties@npm:^0.28.0": + version: 0.28.0 + resolution: "known-css-properties@npm:0.28.0" + checksum: c9e0d6948e31386e872d348eb955e9db80edd58f9d7f7fc9b072180bfb26708a629d5942d4478f66fc766fb913c4552a220950730cef85f8c3bc9830e33b00c8 languageName: node linkType: hard -"language-subtag-registry@npm:^0.3.20": +"language-subtag-registry@npm:~0.3.2": version: 0.3.22 resolution: "language-subtag-registry@npm:0.3.22" checksum: 8ab70a7e0e055fe977ac16ea4c261faec7205ac43db5e806f72e5b59606939a3b972c4bd1e10e323b35d6ffa97c3e1c4c99f6553069dad2dfdd22020fa3eb56a languageName: node linkType: hard -"language-tags@npm:^1.0.9": - version: 1.0.9 - resolution: "language-tags@npm:1.0.9" +"language-tags@npm:=1.0.5": + version: 1.0.5 + resolution: "language-tags@npm:1.0.5" dependencies: - language-subtag-registry: ^0.3.20 - checksum: 57c530796dc7179914dee71bc94f3747fd694612480241d0453a063777265dfe3a951037f7acb48f456bf167d6eb419d4c00263745326b3ba1cdcf4657070e78 + language-subtag-registry: ~0.3.2 + checksum: c81b5d8b9f5f9cfd06ee71ada6ddfe1cf83044dd5eeefcd1e420ad491944da8957688db4a0a9bc562df4afdc2783425cbbdfd152c01d93179cf86888903123cf languageName: node linkType: hard @@ -12704,13 +12751,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.0.1 - resolution: "lru-cache@npm:10.0.1" - checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 - languageName: node - linkType: hard - "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -12729,6 +12769,20 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^7.7.1": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 + languageName: node + linkType: hard + +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.1 + resolution: "lru-cache@npm:10.0.1" + checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 + languageName: node + linkType: hard + "lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0" @@ -12782,22 +12836,26 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.0 - resolution: "make-fetch-happen@npm:13.0.0" +"make-fetch-happen@npm:^11.0.3": + version: 11.1.1 + resolution: "make-fetch-happen@npm:11.1.1" dependencies: - "@npmcli/agent": ^2.0.0 - cacache: ^18.0.0 + agentkeepalive: ^4.2.1 + cacache: ^17.0.0 http-cache-semantics: ^4.1.1 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 is-lambda: ^1.0.1 - minipass: ^7.0.2 + lru-cache: ^7.7.1 + minipass: ^5.0.0 minipass-fetch: ^3.0.0 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 negotiator: ^0.6.3 promise-retry: ^2.0.1 + socks-proxy-agent: ^7.0.0 ssri: ^10.0.0 - checksum: 7c7a6d381ce919dd83af398b66459a10e2fe8f4504f340d1d090d3fa3d1b0c93750220e1d898114c64467223504bd258612ba83efbc16f31b075cd56de24b4af + checksum: 7268bf274a0f6dcf0343829489a4506603ff34bd0649c12058753900b0eb29191dce5dba12680719a5d0a983d3e57810f594a12f3c18494e93a1fbc6348a4540 languageName: node linkType: hard @@ -13159,7 +13217,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.3": version: 7.0.4 resolution: "minipass@npm:7.0.4" checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 @@ -13219,7 +13277,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.1.1": +"ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -13243,11 +13301,11 @@ __metadata: linkType: hard "nanoid@npm:^3.3.6": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" + version: 3.3.6 + resolution: "nanoid@npm:3.3.6" bin: nanoid: bin/nanoid.cjs - checksum: d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 + checksum: 7d0eda657002738aa5206107bd0580aead6c95c460ef1bdd0b1a87a9c7ae6277ac2e9b945306aaa5b32c6dcb7feaf462d0f552e7f8b5718abfc6ead5c94a71b3 languageName: node linkType: hard @@ -13352,22 +13410,23 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 10.0.1 - resolution: "node-gyp@npm:10.0.1" + version: 9.4.0 + resolution: "node-gyp@npm:9.4.0" dependencies: env-paths: ^2.2.0 exponential-backoff: ^3.1.1 - glob: ^10.3.10 + glob: ^7.1.4 graceful-fs: ^4.2.6 - make-fetch-happen: ^13.0.0 - nopt: ^7.0.0 - proc-log: ^3.0.0 + make-fetch-happen: ^11.0.3 + nopt: ^6.0.0 + npmlog: ^6.0.0 + rimraf: ^3.0.2 semver: ^7.3.5 tar: ^6.1.2 - which: ^4.0.0 + which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: 60a74e66d364903ce02049966303a57f898521d139860ac82744a5fdd9f7b7b3b61f75f284f3bfe6e6add3b8f1871ce305a1d41f775c7482de837b50c792223f + checksum: 78b404e2e0639d64e145845f7f5a3cb20c0520cdaf6dda2f6e025e9b644077202ea7de1232396ba5bde3fee84cdc79604feebe6ba3ec84d464c85d407bb5da99 languageName: node linkType: hard @@ -13396,14 +13455,14 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.0 - resolution: "nopt@npm:7.2.0" +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" dependencies: - abbrev: ^2.0.0 + abbrev: ^1.0.0 bin: nopt: bin/nopt.js - checksum: a9c0f57fb8cb9cc82ae47192ca2b7ef00e199b9480eed202482c962d61b59a7fbe7541920b2a5839a97b42ee39e288c0aed770e38057a608d7f579389dfde410 + checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac languageName: node linkType: hard @@ -13484,6 +13543,18 @@ __metadata: languageName: node linkType: hard +"npmlog@npm:^6.0.0": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: ^3.0.0 + console-control-strings: ^1.1.0 + gauge: ^4.0.3 + set-blocking: ^2.0.0 + checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a + languageName: node + linkType: hard + "nth-check@npm:^2.0.1": version: 2.1.1 resolution: "nth-check@npm:2.1.1" @@ -13514,10 +13585,10 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.1, object-inspect@npm:^1.9.0": - version: 1.13.1 - resolution: "object-inspect@npm:1.13.1" - checksum: 7d9fa9221de3311dcb5c7c307ee5dc011cdd31dc43624b7c184b3840514e118e05ef0002be5388304c416c0eb592feb46e983db12577fc47e47d5752fbbfb61f +"object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": + version: 1.13.0 + resolution: "object-inspect@npm:1.13.0" + checksum: 21353e910a3079466cb44adca71d8bef15bd8b87e518eb68bb33d82c5c70b83193993edce432cc92268f7dd02c4a8ab338663a011844367d0bd0559f6dde1fed languageName: node linkType: hard @@ -13550,7 +13621,7 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.6, object.entries@npm:^1.1.7": +"object.entries@npm:^1.1.6": version: 1.1.7 resolution: "object.entries@npm:1.1.7" dependencies: @@ -13561,7 +13632,7 @@ __metadata: languageName: node linkType: hard -"object.fromentries@npm:^2.0.6, object.fromentries@npm:^2.0.7": +"object.fromentries@npm:^2.0.6": version: 2.0.7 resolution: "object.fromentries@npm:2.0.7" dependencies: @@ -13572,7 +13643,7 @@ __metadata: languageName: node linkType: hard -"object.groupby@npm:^1.0.1": +"object.groupby@npm:^1.0.0": version: 1.0.1 resolution: "object.groupby@npm:1.0.1" dependencies: @@ -13594,7 +13665,7 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.6, object.values@npm:^1.1.7": +"object.values@npm:^1.1.6": version: 1.1.7 resolution: "object.values@npm:1.1.7" dependencies: @@ -14960,7 +15031,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.31, postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.28": +"postcss@npm:8.4.31, postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.27": version: 8.4.31 resolution: "postcss@npm:8.4.31" dependencies: @@ -15059,13 +15130,6 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 02b64e1b3919e63df06f836b98d3af002b5cd92655cab18b5746e37374bfb73e03b84fe305454614b34c25b485cc687a9eebdccf0242cda8fda2475dd2c97e02 - languageName: node - linkType: hard - "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" @@ -15194,9 +15258,9 @@ __metadata: linkType: hard "punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.3.1 - resolution: "punycode@npm:2.3.1" - checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 + version: 2.3.0 + resolution: "punycode@npm:2.3.0" + checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 languageName: node linkType: hard @@ -15334,7 +15398,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.12.0, react-is@npm:^16.13.1, react-is@npm:^16.7.0": +"react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f @@ -16206,18 +16270,6 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.1.1": - version: 1.1.1 - resolution: "set-function-length@npm:1.1.1" - dependencies: - define-data-property: ^1.1.1 - get-intrinsic: ^1.2.1 - gopd: ^1.0.1 - has-property-descriptors: ^1.0.0 - checksum: c131d7569cd7e110cafdfbfbb0557249b538477624dfac4fc18c376d879672fa52563b74029ca01f8f4583a8acb35bb1e873d573a24edb80d978a7ee607c6e06 - languageName: node - linkType: hard - "set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": version: 2.0.1 resolution: "set-function-name@npm:2.0.1" @@ -16385,18 +16437,18 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.1": - version: 8.0.2 - resolution: "socks-proxy-agent@npm:8.0.2" +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" dependencies: - agent-base: ^7.0.2 - debug: ^4.3.4 - socks: ^2.7.1 - checksum: 4fb165df08f1f380881dcd887b3cdfdc1aba3797c76c1e9f51d29048be6e494c5b06d68e7aea2e23df4572428f27a3ec22b3d7c75c570c5346507433899a4b6d + agent-base: ^6.0.2 + debug: ^4.3.3 + socks: ^2.6.2 + checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 languageName: node linkType: hard -"socks@npm:^2.7.1": +"socks@npm:^2.6.2": version: 2.7.1 resolution: "socks@npm:2.7.1" dependencies: @@ -16407,9 +16459,9 @@ __metadata: linkType: hard "sortobject@npm:^4.0.0": - version: 4.17.0 - resolution: "sortobject@npm:4.17.0" - checksum: 1435f69039803cc430d2d00dc392ba537b6d68ee01fe17e48d9976d24126456d2d344364cc53dac702d9cbf63ebdf4c91fcd295965910dede8d1a9c2bc1e64cc + version: 4.16.0 + resolution: "sortobject@npm:4.16.0" + checksum: 4212571c41cd5e265e3aa6531153c2ad6862f4b5dd8059647b4b89fdeee23ad8762dc8f3c0fc3c1756c9f87d1b46ba0e49b753c8ab7bd18c1a5bb75be2102c9a languageName: node linkType: hard @@ -16587,12 +16639,12 @@ __metadata: linkType: hard "streamx@npm:^2.12.0, streamx@npm:^2.12.5, streamx@npm:^2.13.2, streamx@npm:^2.14.0, streamx@npm:^2.15.0": - version: 2.15.2 - resolution: "streamx@npm:2.15.2" + version: 2.15.1 + resolution: "streamx@npm:2.15.1" dependencies: fast-fifo: ^1.1.0 queue-tick: ^1.0.1 - checksum: 41a801e17dcdcb2f2e5055acaeeb50594825950d353a77b104509dedf02a88a69ce2534ff1a540bd2d1edb0ff0667d3d3344234b5a7342208d844858fb9ea001 + checksum: 6f2b4fed68caacd28efbd44d4264f5d3c2b81b0a5de14419333dac57f2075c49ae648df8d03db632a33587a6c8ab7cb9cdb4f9a2f8305be0c2cd79af35742b15 languageName: node linkType: hard @@ -16903,8 +16955,8 @@ __metadata: linkType: hard "stylelint@npm:^15": - version: 15.11.0 - resolution: "stylelint@npm:15.11.0" + version: 15.10.3 + resolution: "stylelint@npm:15.10.3" dependencies: "@csstools/css-parser-algorithms": ^2.3.1 "@csstools/css-tokenizer": ^2.2.0 @@ -16913,12 +16965,12 @@ __metadata: balanced-match: ^2.0.0 colord: ^2.9.3 cosmiconfig: ^8.2.0 - css-functions-list: ^3.2.1 + css-functions-list: ^3.2.0 css-tree: ^2.3.1 debug: ^4.3.4 fast-glob: ^3.3.1 fastest-levenshtein: ^1.0.16 - file-entry-cache: ^7.0.0 + file-entry-cache: ^6.0.1 global-modules: ^2.0.0 globby: ^11.1.0 globjoin: ^0.1.4 @@ -16927,13 +16979,13 @@ __metadata: import-lazy: ^4.0.0 imurmurhash: ^0.1.4 is-plain-object: ^5.0.0 - known-css-properties: ^0.29.0 + known-css-properties: ^0.28.0 mathml-tag-names: ^2.1.3 meow: ^10.1.5 micromatch: ^4.0.5 normalize-path: ^3.0.0 picocolors: ^1.0.0 - postcss: ^8.4.28 + postcss: ^8.4.27 postcss-resolve-nested-selector: ^0.1.1 postcss-safe-parser: ^6.0.0 postcss-selector-parser: ^6.0.13 @@ -16948,7 +17000,7 @@ __metadata: write-file-atomic: ^5.0.1 bin: stylelint: bin/stylelint.mjs - checksum: 9835f8a3e3976a3b81a35569d08f5f4a9c3b5cff415f1345a505870afc0c3231acff27f119d937c5bb11fdbc98d554af564c2a648a52604280a59a11974fcbfc + checksum: eb70dd0e4d500141f4868ddb7403ad7eb8732b02a3f2fe3907d0859369cedd395b60b0075da758b5be07de771c586b1bf64de4eead8159d46b0d16beff827e67 languageName: node linkType: hard @@ -17171,8 +17223,8 @@ __metadata: linkType: hard "terser@npm:^5.0.0, terser@npm:^5.10.0, terser@npm:^5.16.8": - version: 5.24.0 - resolution: "terser@npm:5.24.0" + version: 5.22.0 + resolution: "terser@npm:5.22.0" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -17180,7 +17232,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: d88f774b6fa711a234fcecefd7657f99189c367e17dbe95a51c2776d426ad0e4d98d1ffe6edfdf299877c7602e495bdd711d21b2caaec188410795e5447d0f6c + checksum: ee95981c54ebd381e0b7f5872c646e7a05543e53960f8e0c2f240863c368989d43a3ca80b7e9f691683c92ba199eb4b91d61785fef0b9ca4a887eb55866001f4 languageName: node linkType: hard @@ -17792,9 +17844,9 @@ __metadata: linkType: hard "universalify@npm:^2.0.0": - version: 2.0.1 - resolution: "universalify@npm:2.0.1" - checksum: ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60 + version: 2.0.0 + resolution: "universalify@npm:2.0.0" + checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 languageName: node linkType: hard @@ -18341,16 +18393,16 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.9": - version: 1.1.13 - resolution: "which-typed-array@npm:1.1.13" +"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.9": + version: 1.1.11 + resolution: "which-typed-array@npm:1.1.11" dependencies: available-typed-arrays: ^1.0.5 - call-bind: ^1.0.4 + call-bind: ^1.0.2 for-each: ^0.3.3 gopd: ^1.0.1 has-tostringtag: ^1.0.0 - checksum: 3828a0d5d72c800e369d447e54c7620742a4cc0c9baf1b5e8c17e9b6ff90d8d861a3a6dd4800f1953dbf80e5e5cec954a289e5b4a223e3bee4aeb1f8c5f33309 + checksum: 711ffc8ef891ca6597b19539075ec3e08bb9b4c2ca1f78887e3c07a977ab91ac1421940505a197758fb5939aa9524976d0a5bbcac34d07ed6faa75cedbb17206 languageName: node linkType: hard @@ -18365,7 +18417,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^2.0.1": +"which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: @@ -18376,18 +18428,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" - dependencies: - isexe: ^3.1.1 - bin: - node-which: bin/which.js - checksum: f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 - languageName: node - linkType: hard - -"wide-align@npm:^1.1.2": +"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: @@ -18422,7 +18463,6 @@ __metadata: "@koush/wrtc": 0.5.3 "@lexical/history": 0.12.2 "@lexical/react": 0.12.2 - "@loadable/component": 5.15.3 "@peculiar/x509": 1.9.5 "@testing-library/react": 14.0.0 "@types/dexie-batch": 0.4.6 @@ -18441,7 +18481,6 @@ __metadata: "@types/node": ^20.8.10 "@types/open-graph": 0.2.4 "@types/platform": 1.3.5 - "@types/prettier": ^2.7.3 "@types/react": 18.2.33 "@types/react-dom": 18.2.14 "@types/react-redux": 7.1.28 From 37d012faca032b7d7f15aa0e158795d1410d0c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20J=C3=B3=C5=BAwik?= Date: Wed, 8 Nov 2023 11:24:33 +0100 Subject: [PATCH 50/95] feat: Conversation shields improvements (#16163) * feat: Conversation shields improvements * CR fixes --- src/script/E2EIdentity/E2EIdentity.ts | 28 ++++----- src/script/client/ClientMapper.ts | 4 +- .../CertificateDetailsModal.test.tsx | 12 +++- src/script/guards/Protocol.ts | 12 ++++ .../guards.ts => guards/common.ts} | 12 +--- .../DevicesPreferences.test.tsx | 30 ++++++++- .../E2EICertificateDetails.test.tsx | 62 +++++++++++++++---- .../components/FormattedId.styles.ts | 2 +- .../Features/E2EIdentity.ts | 2 +- src/script/util/TypePredicateUtil.ts | 6 +- src/script/util/certificateDetails.ts | 16 +++-- src/style/common/modal.less | 2 +- src/style/components/search-list.less | 2 +- src/style/list/start-ui.less | 2 +- 14 files changed, 132 insertions(+), 60 deletions(-) rename src/script/{page/components/FeatureConfigChange/guards.ts => guards/common.ts} (52%) diff --git a/src/script/E2EIdentity/E2EIdentity.ts b/src/script/E2EIdentity/E2EIdentity.ts index 400ec6179ee..c07bb20b202 100644 --- a/src/script/E2EIdentity/E2EIdentity.ts +++ b/src/script/E2EIdentity/E2EIdentity.ts @@ -18,6 +18,7 @@ */ import {QualifiedId} from '@wireapp/api-client/lib/user'; +import {WireIdentity} from '@wireapp/core/lib/messagingProtocols/mls'; import {container} from 'tsyringe'; import {PrimaryModal, removeCurrentModal} from 'Components/Modals/PrimaryModal'; @@ -67,16 +68,6 @@ class E2EIHandler { }); } - private get coreE2EIService() { - const e2eiService = this.core.service?.e2eIdentity; - - if (!e2eiService) { - throw new Error('E2EI Service not available'); - } - - return e2eiService; - } - /** * Get the singleton instance of GracePeriodTimer or create a new one * For the first time, params are required to create the instance @@ -142,7 +133,7 @@ class E2EIHandler { let oAuthIdToken: string | undefined; // If the enrollment is in progress, we need to get the id token from the oidc service, since oauth should have already been completed - if (this.coreE2EIService.isEnrollmentInProgress()) { + if (this.core.service?.e2eIdentity?.isEnrollmentInProgress()) { const oidcService = getOIDCServiceInstance(); const userData = await oidcService.handleAuthentication(); if (!userData) { @@ -223,7 +214,7 @@ class E2EIHandler { const oidcService = getOIDCServiceInstance(); await oidcService.clearProgress(); // Clear the e2e identity progress - this.coreE2EIService.clearAllProgress(); + this.core.service?.e2eIdentity?.clearAllProgress(); const {modalOptions, modalType} = getModalOptions({ type: ModalType.ERROR, @@ -243,7 +234,7 @@ class E2EIHandler { private showE2EINotificationMessage(): void { // If the user has already started enrollment, don't show the notification. Instead, show the loading modal // This will occur after the redirect from the oauth provider - if (this.coreE2EIService.isEnrollmentInProgress()) { + if (this.core.service?.e2eIdentity?.isEnrollmentInProgress()) { void this.enrollE2EI(); return; } @@ -287,7 +278,7 @@ class E2EIHandler { * Checks if E2EI has active certificate. */ public hasActiveCertificate() { - return this.coreE2EIService.hasActiveCertificate(); + return !!this.core.service?.e2eIdentity?.hasActiveCertificate(); } /** @@ -298,7 +289,7 @@ class E2EIHandler { return undefined; } - return this.coreE2EIService.getCertificateData(); + return this.core.service?.e2eIdentity?.getCertificateData(); } /** @@ -306,8 +297,11 @@ class E2EIHandler { * @param clientIdsWithUser client ids with user data * Returns devices E2EI certificates */ - public async getUserDeviceEntities(groupId: string | Uint8Array, clientIdsWithUser: Record) { - return this.coreE2EIService.getUserDeviceEntities(groupId, clientIdsWithUser); + public async getUserDeviceEntities( + groupId: string | Uint8Array, + clientIdsWithUser: Record, + ): Promise { + return this.core.service?.e2eIdentity?.getUserDeviceEntities(groupId, clientIdsWithUser) || []; } } diff --git a/src/script/client/ClientMapper.ts b/src/script/client/ClientMapper.ts index 6c97bd6aeae..342144f6e11 100644 --- a/src/script/client/ClientMapper.ts +++ b/src/script/client/ClientMapper.ts @@ -23,7 +23,7 @@ import {ClientEntity} from './ClientEntity'; import {parseClientId} from './ClientIdUtil'; import {ClientRecord} from '../storage'; -import {hasMlsPublicKeys, isClientRecord} from '../util/TypePredicateUtil'; +import {isClientRecord, isClientWithMLSPublicKeys} from '../util/TypePredicateUtil'; export class ClientMapper { static get CONFIG() { @@ -63,7 +63,7 @@ export class ClientMapper { clientEntity.meta.userId = userId; } - if (hasMlsPublicKeys(clientPayload)) { + if (isClientWithMLSPublicKeys(clientPayload)) { clientEntity.mlsPublicKeys = clientPayload.mls_public_keys; } diff --git a/src/script/components/Modals/CertificateDetailsModal/CertificateDetailsModal.test.tsx b/src/script/components/Modals/CertificateDetailsModal/CertificateDetailsModal.test.tsx index 10900fc5f5c..213b73ca639 100644 --- a/src/script/components/Modals/CertificateDetailsModal/CertificateDetailsModal.test.tsx +++ b/src/script/components/Modals/CertificateDetailsModal/CertificateDetailsModal.test.tsx @@ -30,6 +30,12 @@ Object.assign(navigator, { }, }); +Object.assign(window, { + URL: { + revokeObjectURL: jest.fn(), + }, +}); + const defaultProps = { certificate, onClose: jest.fn(), @@ -49,16 +55,16 @@ describe('CertificateDetailsModal', () => { }); it('is certificate copied', async () => { - const {getByText, getByTestId} = render(); + const {getByTestId} = render(); - const copyButton = getByTestId('copy-certificate'); + const copyButton = getByTestId('copy-certificate') as HTMLButtonElement; expect(copyButton).toBeDefined(); fireEvent.click(copyButton); expect(navigator.clipboard.writeText).toHaveBeenCalledWith(certificate); await waitFor(() => { - expect(getByText('Text copied!')).toBeDefined(); + expect(copyButton.disabled).toBe(true); }); }); }); diff --git a/src/script/guards/Protocol.ts b/src/script/guards/Protocol.ts index 4d5bf739091..10b9751e7db 100644 --- a/src/script/guards/Protocol.ts +++ b/src/script/guards/Protocol.ts @@ -18,6 +18,9 @@ */ import {ConversationProtocol} from '@wireapp/api-client/lib/conversation/NewConversation'; +import {FeatureMLS, FeatureMLSE2EId} from '@wireapp/api-client/lib/team'; + +import {isObject} from './common'; export interface ProtocolOption { label: string; @@ -28,3 +31,12 @@ export const isProtocolOption = (option: any): option is ProtocolOption => { const protocols = Object.values(ConversationProtocol) as string[]; return typeof option?.value === 'string' && protocols.includes(option.value); }; + +const isFeatureWithConfig = (feature: unknown): feature is {config: {}} => + isObject(feature) && 'config' in feature && isObject(feature.config); + +export const hasE2EIVerificationExpiration = (feature: unknown): feature is FeatureMLSE2EId => + isFeatureWithConfig(feature) && 'verificationExpiration' in feature.config; + +export const hasMLSDefaultProtocol = (feature: unknown): feature is FeatureMLS => + isFeatureWithConfig(feature) && 'defaultProtocol' in feature.config; diff --git a/src/script/page/components/FeatureConfigChange/guards.ts b/src/script/guards/common.ts similarity index 52% rename from src/script/page/components/FeatureConfigChange/guards.ts rename to src/script/guards/common.ts index d07f2104988..37a4212a084 100644 --- a/src/script/page/components/FeatureConfigChange/guards.ts +++ b/src/script/guards/common.ts @@ -17,14 +17,4 @@ * */ -import {FeatureMLS, FeatureMLSE2EId} from '@wireapp/api-client/lib/team'; - -const isObject = (value: unknown): value is {} => typeof value === 'object' && value !== null; -const isFeatureWithConfig = (feature: unknown): feature is {config: {}} => - isObject(feature) && 'config' in feature && isObject(feature.config); - -export const hasE2EIVerificationExpiration = (feature: unknown): feature is FeatureMLSE2EId => - isFeatureWithConfig(feature) && 'verificationExpiration' in feature.config; - -export const hasMLSDefaultProtocol = (feature: unknown): feature is FeatureMLS => - isFeatureWithConfig(feature) && 'defaultProtocol' in feature.config; +export const isObject = (value: unknown): value is {} => typeof value === 'object' && value !== null; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.test.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.test.tsx index d5bc372ca35..f64c2bd25b4 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.test.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.test.tsx @@ -18,8 +18,11 @@ */ import {render, waitFor} from '@testing-library/react'; +import {CONVERSATION_TYPE, ConversationProtocol} from '@wireapp/api-client/lib/conversation'; import ko from 'knockout'; +import {randomUUID} from 'crypto'; + import {ClientEntity} from 'src/script/client/ClientEntity'; import {ClientState} from 'src/script/client/ClientState'; import {ConversationState} from 'src/script/conversation/ConversationState'; @@ -28,6 +31,8 @@ import {createUuid} from 'Util/uuid'; import {DevicesPreferences} from './DevicesPreferences'; +import {E2EIHandler} from '../../../../../E2EIdentity'; +import {Conversation} from '../../../../../entity/Conversation'; import {User} from '../../../../../entity/User'; function createDevice(): ClientEntity { @@ -37,7 +42,25 @@ function createDevice(): ClientEntity { return device; } +function createConversation(protocol?: ConversationProtocol, type?: CONVERSATION_TYPE) { + const conversation = new Conversation(randomUUID(), '', protocol); + if (protocol === ConversationProtocol.MLS) { + conversation.groupId = `groupid-${randomUUID()}`; + conversation.epoch = 0; + } + if (type) { + conversation.type(type); + } + return conversation; +} + describe('DevicesPreferences', () => { + const params = {discoveryUrl: 'http://example.com', gracePeriodInSeconds: 30}; + + const selfProteusConversation = createConversation(ConversationProtocol.PROTEUS, CONVERSATION_TYPE.SELF); + const selfMLSConversation = createConversation(ConversationProtocol.MLS, CONVERSATION_TYPE.SELF); + const regularConversation = createConversation(); + const clientState = new ClientState(); clientState.clients = ko.pureComputed(() => [createDevice(), createDevice()]); clientState.currentClient = createDevice(); @@ -54,11 +77,16 @@ describe('DevicesPreferences', () => { verifyDevice: jest.fn(), }; + defaultParams.conversationState.conversations([selfProteusConversation, selfMLSConversation, regularConversation]); + it('displays all devices', async () => { + const instance = E2EIHandler.getInstance(params); + expect(instance).toBeInstanceOf(E2EIHandler); + const {getByText, getAllByText} = render(); await waitFor(() => getByText('preferencesDevicesCurrent')); expect(getByText('preferencesDevicesCurrent')).toBeDefined(); - expect(getAllByText('preferencesDevicesId')).toHaveLength(clientState.clients().length + 1); + expect(getAllByText('preferencesDevicesId')).toHaveLength(clientState.clients().length); }); }); diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx index 0bc10445f4d..9d97292e956 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx @@ -17,6 +17,7 @@ * */ +import * as x509 from '@peculiar/x509'; import {render} from '@testing-library/react'; import {MLSStatuses} from 'Components/VerificationBadges'; @@ -24,33 +25,68 @@ import {withTheme} from 'src/script/auth/util/test/TestUtil'; import {E2EICertificateDetails} from './E2EICertificateDetails'; -describe('E2ECertificateDetails', () => { +const certificateGenerator = async (notBefore: Date, notAfter: Date) => { + const alg = { + name: 'RSASSA-PKCS1-v1_5', + hash: 'SHA-256', + publicExponent: new Uint8Array([1, 0, 1]), + modulusLength: 2048, + }; + const keys = await crypto.subtle.generateKey(alg, false, ['sign', 'verify']); + const cert = await x509.X509CertificateGenerator.createSelfSigned({ + serialNumber: '01', + name: 'CN=Test', + notBefore, + notAfter, + signingAlgorithm: alg, + keys, + extensions: [ + new x509.BasicConstraintsExtension(true, 2, true), + new x509.ExtendedKeyUsageExtension(['1.2.3.4.5.6.7', '2.3.4.5.6.7.8'], true), + new x509.KeyUsagesExtension(x509.KeyUsageFlags.keyCertSign | x509.KeyUsageFlags.cRLSign, true), + await x509.SubjectKeyIdentifierExtension.create(keys.publicKey), + ], + }); + + return cert.toString('pem'); +}; + +describe('E2EICertificateDetails', () => { const isMLSVerified = true; + const currentDate = new Date(); + + it('is e2ei identity verified', async () => { + const yesterday = new Date(currentDate.getTime() - 86400000); + const followingDay = new Date(currentDate.getTime() + 86400000 * 2); + + const generatedCertificate = await certificateGenerator(yesterday, followingDay); - it('is e2e identity verified', async () => { const {getByTestId} = render( - withTheme(), + withTheme(), ); - const E2EIdentityStatus = getByTestId('e2e-identity-status'); - expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual('Valid'); + const E2EIdentityStatus = getByTestId('e2ei-identity-status'); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.VALID); }); - it('is e2e identity not downloaded', async () => { - const {getByTestId} = render( - withTheme(), - ); + it('is e2ei identity not downloaded', async () => { + const {getByTestId} = render(withTheme()); - const E2EIdentityStatus = getByTestId('e2e-identity-status'); + const E2EIdentityStatus = getByTestId('e2ei-identity-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.NOT_DOWNLOADED); }); - it('is e2e identity expired', async () => { + it('is e2ei identity expired', async () => { + const yesterday = new Date(currentDate.getTime() - 86400000); + const followingDay = new Date(currentDate.getTime() - 86400000 / 2); + + const generatedCertificate = await certificateGenerator(yesterday, followingDay); + const {getByTestId} = render( - withTheme(), + withTheme(), ); - const E2EIdentityStatus = getByTestId('e2e-identity-status'); + const E2EIdentityStatus = getByTestId('e2ei-identity-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.EXPIRED); }); }); diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId.styles.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId.styles.ts index f43a9fbb93b..87e1449b7b8 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId.styles.ts +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId.styles.ts @@ -27,7 +27,7 @@ export const devicePart = (smallPadding = false): CSSObject => ({ ...(!smallPadding && { width: '18px', - '&:nth-child(8n)': { + '&:nth-of-type(8n)': { marginRight: 0, '&::after': { diff --git a/src/script/page/components/FeatureConfigChange/FeatureConfigChangeHandler/Features/E2EIdentity.ts b/src/script/page/components/FeatureConfigChange/FeatureConfigChangeHandler/Features/E2EIdentity.ts index 474bd00cf5a..818cd38b48e 100644 --- a/src/script/page/components/FeatureConfigChange/FeatureConfigChangeHandler/Features/E2EIdentity.ts +++ b/src/script/page/components/FeatureConfigChange/FeatureConfigChangeHandler/Features/E2EIdentity.ts @@ -22,7 +22,7 @@ import {FeatureStatus, FEATURE_KEY, FeatureList} from '@wireapp/api-client/lib/t import {E2EIHandler} from 'src/script/E2EIdentity'; import {Logger} from 'Util/Logger'; -import {hasE2EIVerificationExpiration, hasMLSDefaultProtocol} from '../../guards'; +import {hasE2EIVerificationExpiration, hasMLSDefaultProtocol} from '../../../../../guards/Protocol'; export const handleE2EIdentityFeatureChange = (logger: Logger, config: FeatureList) => { const e2eiConfig = config[FEATURE_KEY.MLSE2EID]; diff --git a/src/script/util/TypePredicateUtil.ts b/src/script/util/TypePredicateUtil.ts index ce293f59448..19bb1c05754 100644 --- a/src/script/util/TypePredicateUtil.ts +++ b/src/script/util/TypePredicateUtil.ts @@ -23,6 +23,7 @@ import {AxiosError} from 'axios'; import {Conversation} from '../entity/Conversation'; import {User} from '../entity/User'; +import {isObject} from '../guards/common'; import {ClientRecord} from '../storage/record/ClientRecord'; export function isAxiosError(errorCandidate: any): errorCandidate is AxiosError { @@ -45,7 +46,6 @@ export function isClientRecord(record: any): record is ClientRecord { return !!record.meta; } -// TODO: Temporary checking for mls_public_keys -export function hasMlsPublicKeys(client: any): client is RegisteredClient { - return !!client && 'mls_public_keys' in client; +export function isClientWithMLSPublicKeys(record: unknown): record is RegisteredClient { + return isObject(record) && 'mls_public_keys' in record; } diff --git a/src/script/util/certificateDetails.ts b/src/script/util/certificateDetails.ts index 2e317b5ae80..57804146611 100644 --- a/src/script/util/certificateDetails.ts +++ b/src/script/util/certificateDetails.ts @@ -22,17 +22,23 @@ import * as x509 from '@peculiar/x509'; import {MLSStatuses} from 'Components/VerificationBadges'; // TODO: Will be changed when I get information how much hours before we need to display this status. -const EXPIRATION_HOURS = 32; +const EXPIRATION_HOURS = 4; + +const checkExpirationDate = (notAfter: Date) => { + const endDate = new Date(notAfter); + const currentDate = new Date(); + const dateBeforeEnd = new Date(notAfter); + dateBeforeEnd.setHours(endDate.getHours() - EXPIRATION_HOURS); + + return currentDate > dateBeforeEnd; +}; export const getCertificateDetails = (certificate?: string) => { const currentDate = new Date(); const parsedCertificate = certificate ? new x509.X509Certificate(certificate) : null; const isValid = !!parsedCertificate && currentDate > parsedCertificate.notBefore && currentDate < parsedCertificate.notAfter; - - const expireDate = parsedCertificate?.notAfter ? new Date(parsedCertificate.notAfter) : null; - const expirationDate = expireDate ? expireDate.setHours(expireDate.getHours() - EXPIRATION_HOURS) : null; - const isExpireSoon = isValid && !!expirationDate && parsedCertificate.notAfter > new Date(expirationDate); + const isExpireSoon = isValid && !!parsedCertificate?.notAfter && checkExpirationDate(parsedCertificate.notAfter); return { isNotDownloaded: !certificate, diff --git a/src/style/common/modal.less b/src/style/common/modal.less index 545121da075..20f74cd66be 100644 --- a/src/style/common/modal.less +++ b/src/style/common/modal.less @@ -271,7 +271,7 @@ margin-bottom: 16px; line-height: @line-height-sm; - & div:nth-child(even) { + & div:nth-of-type(even) { margin-bottom: 16px; } } diff --git a/src/style/components/search-list.less b/src/style/components/search-list.less index cff7d5ee366..c6ebd8a8d84 100644 --- a/src/style/components/search-list.less +++ b/src/style/components/search-list.less @@ -40,7 +40,7 @@ .search-list-sm & { text-align: center; - &:nth-child(3n) { + &:nth-of-type(3n) { margin-right: 0; } } diff --git a/src/style/list/start-ui.less b/src/style/list/start-ui.less index 016bf101fe0..378d089dc9c 100644 --- a/src/style/list/start-ui.less +++ b/src/style/list/start-ui.less @@ -188,7 +188,7 @@ body.theme-dark { .search-list-item { margin-right: 20px; - &:nth-child(3n) { + &:nth-of-type(3n) { margin-right: 0; } &:nth-last-child(-n + 3) { From 9682a9dfe5a08880ea9246f9f55e4c98614f8526 Mon Sep 17 00:00:00 2001 From: Przemyslaw Jozwik Date: Wed, 8 Nov 2023 11:54:03 +0100 Subject: [PATCH 51/95] revert unnecessary changes --- src/script/E2EIdentity/Modals.test.ts | 60 ----------- src/script/E2EIdentity/Modals.ts | 144 -------------------------- src/script/auth/page/Root.tsx | 25 +---- 3 files changed, 5 insertions(+), 224 deletions(-) delete mode 100644 src/script/E2EIdentity/Modals.test.ts delete mode 100644 src/script/E2EIdentity/Modals.ts diff --git a/src/script/E2EIdentity/Modals.test.ts b/src/script/E2EIdentity/Modals.test.ts deleted file mode 100644 index f9f26971b61..00000000000 --- a/src/script/E2EIdentity/Modals.test.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {PrimaryModal} from 'Components/Modals/PrimaryModal'; - -import {getModalOptions, ModalType} from './Modals'; - -describe('getModalOptions', () => { - it('should return modal options with hidden secondary action when hideSecondary is true', () => { - const options = getModalOptions({type: ModalType.ENROLL, hideSecondary: true}); - - expect(options.modalOptions.secondaryAction).toBeUndefined(); - expect(options.modalType).toEqual(PrimaryModal.type.ACKNOWLEDGE); - }); - - it('should return modal options with hidden secondary action when secondaryActionFn is not provided', () => { - const options = getModalOptions({type: ModalType.ENROLL, secondaryActionFn: undefined}); - - expect(options.modalOptions.secondaryAction).toBeUndefined(); - expect(options.modalType).toEqual(PrimaryModal.type.ACKNOWLEDGE); - }); - - it('should return modal options with hidden primary action when hidePrimary is true', () => { - const options = getModalOptions({type: ModalType.ENROLL, hidePrimary: true}); - - expect(options.modalOptions.primaryAction).toBeUndefined(); - }); - - it('should return modal options with hidden close button when hideClose is true', () => { - const options = getModalOptions({type: ModalType.ENROLL, hideClose: true}); - - expect(options.modalOptions.hideCloseBtn).toBeTruthy(); - expect(options.modalOptions.preventClose).toBeTruthy(); - }); - - it('should return modal options with hidden secondary and primary actions when both hideSecondary and hidePrimary are true', () => { - const options = getModalOptions({type: ModalType.ENROLL, hideSecondary: true, hidePrimary: true}); - - expect(options.modalOptions.secondaryAction).toBeUndefined(); - expect(options.modalOptions.primaryAction).toBeUndefined(); - }); - - // Add more test cases as needed to cover different combinations of hide functionality -}); diff --git a/src/script/E2EIdentity/Modals.ts b/src/script/E2EIdentity/Modals.ts deleted file mode 100644 index d422b592466..00000000000 --- a/src/script/E2EIdentity/Modals.ts +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {PrimaryModal} from 'Components/Modals/PrimaryModal'; -import {ModalOptions, PrimaryModalType} from 'Components/Modals/PrimaryModal/PrimaryModalTypes'; -import {t} from 'Util/LocalizerUtil'; - -const hideSecondaryBtn = {hideSecondary: true}; -const hideCloseBtn = {hideCloseBtn: true, preventClose: true}; - -export enum ModalType { - ENROLL = 'enroll', - ERROR = 'error', - SUCCESS = 'success', - LOADING = 'loading', -} - -interface GetModalOptions { - type: ModalType; - primaryActionFn?: () => void; - secondaryActionFn?: () => void; - hideSecondary?: boolean; - hidePrimary?: boolean; - hideClose?: boolean; -} -export const getModalOptions = ({ - type, - primaryActionFn, - secondaryActionFn, - hidePrimary = false, - hideSecondary = false, - hideClose = true, -}: GetModalOptions) => { - if (!secondaryActionFn) { - hideSecondary = true; - } - let options: ModalOptions = {}; - let modalType: PrimaryModalType = PrimaryModal.type.CONFIRM; - switch (type) { - case ModalType.ENROLL: - options = { - text: { - closeBtnLabel: t('acme.settingsChanged.button.close'), - htmlMessage: t('acme.settingsChanged.paragraph'), - title: t('acme.settingsChanged.headline.alt'), - }, - primaryAction: { - action: primaryActionFn, - text: t('acme.settingsChanged.button.primary'), - }, - secondaryAction: { - action: secondaryActionFn, - text: t('acme.settingsChanged.button.secondary'), - }, - ...hideCloseBtn, - }; - modalType = - hideSecondary || secondaryActionFn === undefined ? PrimaryModal.type.ACKNOWLEDGE : PrimaryModal.type.CONFIRM; - break; - - case ModalType.ERROR: - options = { - text: { - closeBtnLabel: t('acme.error.button.close'), - htmlMessage: t('acme.error.paragraph'), - title: t('acme.error.headline'), - }, - primaryAction: { - action: primaryActionFn, - text: t('acme.error.button.primary'), - }, - secondaryAction: { - action: secondaryActionFn, - text: t('acme.error.button.secondary'), - }, - }; - modalType = - hideSecondary || secondaryActionFn === undefined ? PrimaryModal.type.CONFIRM : PrimaryModal.type.ACKNOWLEDGE; - break; - - case ModalType.LOADING: - options = { - text: { - title: t('acme.inProgress.headline'), - }, - ...hideCloseBtn, - }; - // Needs to be changed to Loading spinner Modal - modalType = PrimaryModalType.LOADING; - break; - - case ModalType.SUCCESS: - options = { - text: { - closeBtnLabel: t('acme.done.button.close'), - htmlMessage: t('acme.done.paragraph'), - title: t('acme.done.headline'), - }, - primaryAction: { - action: primaryActionFn, - text: t('acme.done.button'), - }, - }; - modalType = PrimaryModal.type.ACKNOWLEDGE; - break; - } - - if (hideClose) { - options = { - ...options, - ...hideCloseBtn, - }; - } - - if (hideSecondary || secondaryActionFn === undefined) { - delete options.secondaryAction; - options = { - ...options, - ...hideSecondaryBtn, - }; - } - - if (hidePrimary) { - delete options.primaryAction; - } - - return {modalOptions: options, modalType}; -}; diff --git a/src/script/auth/page/Root.tsx b/src/script/auth/page/Root.tsx index 988c0978d2a..9d5dce05909 100644 --- a/src/script/auth/page/Root.tsx +++ b/src/script/auth/page/Root.tsx @@ -19,7 +19,6 @@ import {FC, ReactNode, useEffect} from 'react'; -import loadable from '@loadable/component'; import {pathWithParams} from '@wireapp/commons/lib/util/UrlUtil'; import {IntlProvider} from 'react-intl'; import {connect} from 'react-redux'; @@ -34,6 +33,8 @@ import {CheckPassword} from './CheckPassword'; import {ClientManager} from './ClientManager'; import {ConversationJoin} from './ConversationJoin'; import {ConversationJoinInvalid} from './ConversationJoinInvalid'; +import {CreateAccount} from './CreateAccount'; +import {CreatePersonalAccount} from './CreatePersonalAccount'; import {CustomEnvironmentRedirect} from './CustomEnvironmentRedirect'; import {HistoryInfo} from './HistoryInfo'; import {Index} from './Index'; @@ -43,9 +44,12 @@ import {OAuthPermissions} from './OAuthPermissions'; import {PhoneLogin} from './PhoneLogin'; import {SetAccountType} from './SetAccountType'; import {SetEmail} from './SetEmail'; +import {SetEntropyPage} from './SetEntropyPage'; import {SetHandle} from './SetHandle'; import {SetPassword} from './SetPassword'; import {SingleSignOn} from './SingleSignOn'; +import {TeamName} from './TeamName'; +import {VerifyEmailCode} from './VerifyEmailCode'; import {VerifyEmailLink} from './VerifyEmailLink'; import {VerifyPhoneCode} from './VerifyPhoneCode'; @@ -58,25 +62,6 @@ import * as LanguageSelector from '../module/selector/LanguageSelector'; import {ROUTE} from '../route'; import {getOAuthQueryString} from '../util/oauthUtil'; -/** - * Lazy loading components for routes, which can only be accessed by activated feature flags - */ -const CreateAccount = loadable(() => import('./CreateAccount'), { - resolveComponent: component => component.CreateAccount, -}); -const CreatePersonalAccount = loadable(() => import('./CreatePersonalAccount'), { - resolveComponent: component => component.CreatePersonalAccount, -}); -const VerifyEmailCode = loadable(() => import('./VerifyEmailCode'), { - resolveComponent: component => component.VerifyEmailCode, -}); -const SetEntropyPage = loadable(() => import('./SetEntropyPage'), { - resolveComponent: component => component.SetEntropyPage, -}); -const TeamName = loadable(() => import('./TeamName'), { - resolveComponent: component => component.TeamName, -}); - interface RootProps {} const Title: FC<{title: string; children: ReactNode}> = ({title, children}) => { From 199871ee85d077e14b61692bebc100f3245c53d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20J=C3=B3=C5=BAwik?= Date: Thu, 9 Nov 2023 15:26:37 +0100 Subject: [PATCH 52/95] feat: Prepare core e2ei service method (#16164) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Prepare core e2ei service method * fix: core mock in e2eiHandler tests * remove duplicated code * fix tests --------- Co-authored-by: Adrian Weiß --- src/__mocks__/@wireapp/core.ts | 9 ++- src/script/E2EIdentity/E2EIdentity.test.ts | 78 ++++++---------------- src/script/E2EIdentity/E2EIdentity.ts | 22 ++++-- 3 files changed, 44 insertions(+), 65 deletions(-) diff --git a/src/__mocks__/@wireapp/core.ts b/src/__mocks__/@wireapp/core.ts index 68501e7c8bd..bedc3966240 100644 --- a/src/__mocks__/@wireapp/core.ts +++ b/src/__mocks__/@wireapp/core.ts @@ -32,8 +32,15 @@ export class Account extends EventEmitter { }; configureMLSCallbacks = jest.fn(); - + enrollE2EI = jest.fn(); service = { + e2eIdentity: { + isEnrollmentInProgress: jest.fn(), + clearAllProgress: jest.fn(), + hasActiveCertificate: jest.fn(), + getCertificateData: jest.fn(), + getUserDeviceEntities: jest.fn(), + }, mls: { schedulePeriodicKeyMaterialRenewals: jest.fn(), registerConversation: jest.fn(), diff --git a/src/script/E2EIdentity/E2EIdentity.test.ts b/src/script/E2EIdentity/E2EIdentity.test.ts index d8f0853d1e2..8a41db7fdff 100644 --- a/src/script/E2EIdentity/E2EIdentity.test.ts +++ b/src/script/E2EIdentity/E2EIdentity.test.ts @@ -35,23 +35,9 @@ jest.mock('./OIDCService', () => ({ clearProgress: jest.fn(), } as unknown as OIDCService), })); + jest.mock('Util/util'); jest.mock('src/script/Config'); -jest.mock('tsyringe'); -jest.mock('src/script/service/CoreSingleton', () => { - return { - Core: jest.fn().mockImplementation(() => { - return {enrollE2EI: jest.fn()}; - }), - }; -}); -jest.mock('src/script/user/UserState', () => { - return { - UserState: jest.fn().mockImplementation(() => { - return {self: jest.fn()}; - }), - }; -}); jest.mock('Components/Modals/PrimaryModal'); jest.mock('./Modals', () => ({ getModalOptions: jest.fn().mockReturnValue({ @@ -65,23 +51,11 @@ jest.mock('./Modals', () => ({ ENROLL: 'enroll', }, })); -jest.mock('src/script/service/CoreSingleton', () => ({ - Core: jest.fn().mockImplementation(() => ({ - enrollE2EI: jest.fn(), - })), -})); -jest.mock('src/script/user/UserState', () => ({ - UserState: jest.fn().mockImplementation(() => ({ - self: jest.fn(), - })), -})); describe('E2EIHandler', () => { const params = {discoveryUrl: 'http://example.com', gracePeriodInSeconds: 30}; const newParams = {discoveryUrl: 'http://new-example.com', gracePeriodInSeconds: 60}; const user = {name: () => 'John Doe', username: () => 'johndoe'}; - let coreMock: Core; - let userStateMock: UserState; beforeEach(() => { (util.supportsMLS as jest.Mock).mockReturnValue(true); @@ -89,21 +63,6 @@ describe('E2EIHandler', () => { E2EIHandler.resetInstance(); // Clear all mocks before each test jest.clearAllMocks(); - // Setup the Core and UserState services mocks - coreMock = new Core(); - userStateMock = new UserState(); - (userStateMock.self as unknown as jest.Mock).mockReturnValue({name: () => 'John Doe', username: () => 'johndoe'}); - (coreMock.enrollE2EI as jest.Mock).mockResolvedValue(true); - - (container.resolve as jest.Mock).mockImplementation(service => { - if (service === Core) { - return coreMock; - } - if (service === UserState) { - return userStateMock; - } - return null; - }); // Mock the Config service to return true for ENABLE_E2EI (util.supportsMLS as jest.Mock).mockReturnValue(true); @@ -112,6 +71,11 @@ describe('E2EIHandler', () => { // Mock the PrimaryModal service to return a mock modal (PrimaryModal.show as jest.Mock).mockClear(); (getModalOptions as jest.Mock).mockClear(); + + jest + .spyOn(container.resolve(UserState), 'self') + .mockReturnValue({name: () => 'John Doe', username: () => 'johndoe'}); + jest.spyOn(container.resolve(Core), 'enrollE2EI').mockResolvedValue(true); }); it('should create instance with valid params', () => { @@ -168,20 +132,23 @@ describe('E2EIHandler', () => { expect(instance['currentStep']).toBe(E2EIHandlerStep.INITIALIZED); }); - it('should set currentStep to ENROLL when enrollE2EI is called and enrollment succeeds', async () => { + it('should set currentStep to SUCCESS when enrollE2EI is called and enrollment succeeds', async () => { + jest + .spyOn(container.resolve(UserState), 'self') + .mockReturnValue({name: () => 'John Doe', username: () => 'johndoe'}); + + jest.spyOn(container.resolve(Core), 'enrollE2EI').mockResolvedValueOnce(true); + const instance = E2EIHandler.getInstance(params); await instance['enrollE2EI'](); + expect(instance['currentStep']).toBe(E2EIHandlerStep.SUCCESS); }); it('should set currentStep to ERROR when enrollE2EI is called and enrollment fails', async () => { // Mock the Core service to return an error - (container.resolve as any) = jest.fn(service => { - if (service === Core) { - return {enrollE2EI: jest.fn(() => Promise.reject())}; - } - return {self: () => user}; - }); + jest.spyOn(container.resolve(Core), 'enrollE2EI').mockImplementationOnce(jest.fn(() => Promise.reject())); + jest.spyOn(container.resolve(UserState), 'self').mockImplementationOnce(() => user); const instance = E2EIHandler.getInstance(params); await instance['enrollE2EI'](); @@ -209,6 +176,8 @@ describe('E2EIHandler', () => { }); it('should display success message when enrollment is done', async () => { + jest.spyOn(container.resolve(Core), 'enrollE2EI').mockResolvedValueOnce(true); + const handler = E2EIHandler.getInstance(params); handler['showLoadingMessage'] = jest.fn(); await handler['enrollE2EI'](); @@ -220,15 +189,8 @@ describe('E2EIHandler', () => { }); it('should display error message when enrollment fails', async () => { - (container.resolve as jest.Mock).mockImplementation(service => { - if (service === Core) { - return {startE2EIEnrollment: jest.fn(() => Promise.reject(false))}; - } - if (service === UserState) { - return userStateMock; - } - return null; - }); + jest.spyOn(container.resolve(Core), 'enrollE2EI').mockRejectedValueOnce(false); + const handler = E2EIHandler.getInstance(params); handler['showLoadingMessage'] = jest.fn(); await handler['enrollE2EI'](); diff --git a/src/script/E2EIdentity/E2EIdentity.ts b/src/script/E2EIdentity/E2EIdentity.ts index c07bb20b202..fc00019ffad 100644 --- a/src/script/E2EIdentity/E2EIdentity.ts +++ b/src/script/E2EIdentity/E2EIdentity.ts @@ -68,6 +68,16 @@ class E2EIHandler { }); } + private get coreE2EIService() { + const e2eiService = this.core.service?.e2eIdentity; + + if (!e2eiService) { + throw new Error('E2EI Service not available'); + } + + return e2eiService; + } + /** * Get the singleton instance of GracePeriodTimer or create a new one * For the first time, params are required to create the instance @@ -133,7 +143,7 @@ class E2EIHandler { let oAuthIdToken: string | undefined; // If the enrollment is in progress, we need to get the id token from the oidc service, since oauth should have already been completed - if (this.core.service?.e2eIdentity?.isEnrollmentInProgress()) { + if (this.coreE2EIService.isEnrollmentInProgress()) { const oidcService = getOIDCServiceInstance(); const userData = await oidcService.handleAuthentication(); if (!userData) { @@ -214,7 +224,7 @@ class E2EIHandler { const oidcService = getOIDCServiceInstance(); await oidcService.clearProgress(); // Clear the e2e identity progress - this.core.service?.e2eIdentity?.clearAllProgress(); + this.coreE2EIService.clearAllProgress(); const {modalOptions, modalType} = getModalOptions({ type: ModalType.ERROR, @@ -234,7 +244,7 @@ class E2EIHandler { private showE2EINotificationMessage(): void { // If the user has already started enrollment, don't show the notification. Instead, show the loading modal // This will occur after the redirect from the oauth provider - if (this.core.service?.e2eIdentity?.isEnrollmentInProgress()) { + if (this.coreE2EIService.isEnrollmentInProgress()) { void this.enrollE2EI(); return; } @@ -278,7 +288,7 @@ class E2EIHandler { * Checks if E2EI has active certificate. */ public hasActiveCertificate() { - return !!this.core.service?.e2eIdentity?.hasActiveCertificate(); + return this.coreE2EIService.hasActiveCertificate(); } /** @@ -289,7 +299,7 @@ class E2EIHandler { return undefined; } - return this.core.service?.e2eIdentity?.getCertificateData(); + return this.coreE2EIService.getCertificateData(); } /** @@ -301,7 +311,7 @@ class E2EIHandler { groupId: string | Uint8Array, clientIdsWithUser: Record, ): Promise { - return this.core.service?.e2eIdentity?.getUserDeviceEntities(groupId, clientIdsWithUser) || []; + return this.coreE2EIService.getUserDeviceEntities(groupId, clientIdsWithUser); } } From ef94836140d4e79e4cab92187f112afb733c8287 Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Wed, 15 Nov 2023 14:57:24 +0100 Subject: [PATCH 53/95] fix: Improve user verification badges computation (#16218) --- src/__mocks__/@wireapp/core-crypto.ts | 14 + src/__mocks__/@wireapp/core.ts | 7 +- .../E2EIdentity/DelayTimer/DelayTimer.ts | 2 +- src/script/E2EIdentity/E2EIdentity.test.ts | 34 +- src/script/E2EIdentity/E2EIdentity.ts | 315 ++---------------- .../E2EIdentity/E2EIdentityEnrolment.ts | 285 ++++++++++++++++ src/script/E2EIdentity/Modals/Modals.test.ts | 10 +- src/script/E2EIdentity/Modals/Modals.ts | 4 +- src/script/E2EIdentity/index.ts | 1 + src/script/client/ClientEntity.ts | 4 +- src/script/client/ClientMapper.test.ts | 6 - src/script/client/ClientMapper.ts | 1 - .../components/AvailabilityState.test.tsx | 37 +- src/script/components/AvailabilityState.tsx | 22 +- .../components/Modals/UserModal/UserModal.tsx | 18 +- .../ParticipantItemContent.tsx | 38 +-- .../ServiceListItem/ServiceListItem.tsx | 2 +- src/script/components/TitleBar/TitleBar.tsx | 13 +- src/script/components/UserDevices.tsx | 10 +- src/script/components/UserList/UserList.tsx | 3 + .../components/UserListItem/UserListItem.tsx | 28 +- src/script/components/UserSearchableList.tsx | 5 +- .../VerificationBadges.test.tsx | 16 +- .../VerificationBadges.tsx | 81 ++++- .../index.ts | 0 .../CallParticipantItemContent.tsx | 18 +- .../CallParticipantsListItem.tsx | 6 +- .../components/list/ConversationListCell.tsx | 22 +- src/script/components/panel/UserDetails.tsx | 27 +- .../components/userDevices/DeviceCard.tsx | 11 +- .../components/userDevices/DeviceDetails.tsx | 2 +- .../components/userDevices/DeviceList.tsx | 10 +- .../userDevices/SelfFingerprint.tsx | 4 +- .../conversation/ConversationRepository.ts | 11 - src/script/conversation/ConversationState.ts | 11 +- .../MLS/MLSStateHandler.test.ts | 193 +++-------- .../MLS/MLSStateHandler.ts | 158 +++------ .../shared/conversation/index.ts | 5 +- src/script/entity/Conversation.ts | 25 +- src/script/entity/User/User.ts | 11 - src/script/integration/ServiceEntity.ts | 6 +- src/script/main/app.ts | 4 + .../panels/Conversations/Conversations.tsx | 25 +- .../panels/preferences/AccountPreferences.tsx | 20 +- ...es.test.tsx => DevicesPreference.test.tsx} | 11 +- ...sPreferences.tsx => DevicesPreference.tsx} | 29 +- .../components/DetailedDevice.tsx | 14 +- .../components/Device/Device.tsx | 8 +- .../DeviceDetailsPreferences.test.tsx | 2 +- .../DeviceDetailsPreferences.tsx | 4 +- .../E2EICertificateDetails.styles.ts | 2 +- .../E2EICertificateDetails.test.tsx | 13 +- .../E2EICertificateDetails.tsx | 13 +- .../MLSDeviceDetails/MLSDeviceDetails.tsx | 12 +- .../components/ProteusDeviceDetails.tsx | 2 +- .../preferences/DevicesPreferences/index.ts | 2 +- .../ConversationDetails.tsx | 11 +- .../ConversationDetailsHeader.tsx | 22 +- .../ConversationParticipants.tsx | 3 + .../GroupParticipantUser.tsx | 9 +- .../ParticipantDevices/ParticipantDevices.tsx | 13 +- src/script/page/RightSidebar/RightSidebar.tsx | 15 + src/script/util/certificateDetails.ts | 2 +- 63 files changed, 725 insertions(+), 987 deletions(-) create mode 100644 src/script/E2EIdentity/E2EIdentityEnrolment.ts rename src/script/components/{VerificationBadges => VerificationBadge}/VerificationBadges.test.tsx (77%) rename src/script/components/{VerificationBadges => VerificationBadge}/VerificationBadges.tsx (64%) rename src/script/components/{VerificationBadges => VerificationBadge}/index.ts (100%) rename src/script/page/MainContent/panels/preferences/DevicesPreferences/{DevicesPreferences.test.tsx => DevicesPreference.test.tsx} (89%) rename src/script/page/MainContent/panels/preferences/DevicesPreferences/{DevicesPreferences.tsx => DevicesPreference.tsx} (89%) diff --git a/src/__mocks__/@wireapp/core-crypto.ts b/src/__mocks__/@wireapp/core-crypto.ts index 0f1756edff7..745f3f5c370 100644 --- a/src/__mocks__/@wireapp/core-crypto.ts +++ b/src/__mocks__/@wireapp/core-crypto.ts @@ -41,3 +41,17 @@ export enum CredentialType { Basic = 1, X509 = 2, } +export enum E2eiConversationState { + /** + * All clients have a valid E2EI certificate + */ + Verified = 1, + /** + * Some clients are either still Basic or their certificate is expired + */ + Degraded = 2, + /** + * All clients are still Basic. If all client have expired certificates, Degraded is returned. + */ + NotEnabled = 3, +} diff --git a/src/__mocks__/@wireapp/core.ts b/src/__mocks__/@wireapp/core.ts index 89507d83cb2..f972009952d 100644 --- a/src/__mocks__/@wireapp/core.ts +++ b/src/__mocks__/@wireapp/core.ts @@ -40,6 +40,7 @@ export class Account extends EventEmitter { hasActiveCertificate: jest.fn(), getCertificateData: jest.fn(), getUserDeviceEntities: jest.fn(), + getConversationState: jest.fn(), }, mls: { schedulePeriodicKeyMaterialRenewals: jest.fn(), @@ -50,9 +51,9 @@ export class Account extends EventEmitter { getEpoch: jest.fn(), conversationExists: jest.fn(), exportSecretKey: jest.fn(), - on: this.on, - emit: this.emit, - off: this.off, + on: jest.fn(), + emit: jest.fn(), + off: jest.fn(), scheduleKeyMaterialRenewal: jest.fn(), }, asset: { diff --git a/src/script/E2EIdentity/DelayTimer/DelayTimer.ts b/src/script/E2EIdentity/DelayTimer/DelayTimer.ts index 6fd68e1a2fa..723782bc326 100644 --- a/src/script/E2EIdentity/DelayTimer/DelayTimer.ts +++ b/src/script/E2EIdentity/DelayTimer/DelayTimer.ts @@ -124,7 +124,7 @@ class DelayTimerService { } /** - * Prompt the user to delay the enrollment + * Prompt the user to delay the enrolment */ public delayPrompt() { if (this.isDelayTimerActive()) { diff --git a/src/script/E2EIdentity/E2EIdentity.test.ts b/src/script/E2EIdentity/E2EIdentity.test.ts index 8a41db7fdff..112c45ffc38 100644 --- a/src/script/E2EIdentity/E2EIdentity.test.ts +++ b/src/script/E2EIdentity/E2EIdentity.test.ts @@ -26,7 +26,7 @@ import {Core} from 'src/script/service/CoreSingleton'; import {UserState} from 'src/script/user/UserState'; import * as util from 'Util/util'; -import {E2EIHandler, E2EIHandlerStep} from './E2EIdentity'; +import {E2EIHandler, E2EIHandlerStep} from './E2EIdentityEnrolment'; import {getModalOptions, ModalType} from './Modals'; import {OIDCService} from './OIDCService/OIDCService'; @@ -36,9 +36,6 @@ jest.mock('./OIDCService', () => ({ } as unknown as OIDCService), })); -jest.mock('Util/util'); -jest.mock('src/script/Config'); -jest.mock('Components/Modals/PrimaryModal'); jest.mock('./Modals', () => ({ getModalOptions: jest.fn().mockReturnValue({ modalOptions: {}, @@ -48,7 +45,7 @@ jest.mock('./Modals', () => ({ LOADING: 'loading', SUCCESS: 'success', ERROR: 'error', - ENROLL: 'enroll', + ENROL: 'enrol', }, })); @@ -58,7 +55,7 @@ describe('E2EIHandler', () => { const user = {name: () => 'John Doe', username: () => 'johndoe'}; beforeEach(() => { - (util.supportsMLS as jest.Mock).mockReturnValue(true); + jest.spyOn(util, 'supportsMLS').mockReturnValue(true); // Reset the singleton instance before each test E2EIHandler.resetInstance(); // Clear all mocks before each test @@ -68,8 +65,7 @@ describe('E2EIHandler', () => { (util.supportsMLS as jest.Mock).mockReturnValue(true); Config.getConfig = jest.fn().mockReturnValue({FEATURE: {ENABLE_E2EI: true}}); - // Mock the PrimaryModal service to return a mock modal - (PrimaryModal.show as jest.Mock).mockClear(); + jest.spyOn(PrimaryModal, 'show'); (getModalOptions as jest.Mock).mockClear(); jest @@ -132,7 +128,7 @@ describe('E2EIHandler', () => { expect(instance['currentStep']).toBe(E2EIHandlerStep.INITIALIZED); }); - it('should set currentStep to SUCCESS when enrollE2EI is called and enrollment succeeds', async () => { + it('should set currentStep to SUCCESS when enrolE2EI is called and enrolment succeeds', async () => { jest .spyOn(container.resolve(UserState), 'self') .mockReturnValue({name: () => 'John Doe', username: () => 'johndoe'}); @@ -140,18 +136,18 @@ describe('E2EIHandler', () => { jest.spyOn(container.resolve(Core), 'enrollE2EI').mockResolvedValueOnce(true); const instance = E2EIHandler.getInstance(params); - await instance['enrollE2EI'](); + await instance['enrol'](); expect(instance['currentStep']).toBe(E2EIHandlerStep.SUCCESS); }); - it('should set currentStep to ERROR when enrollE2EI is called and enrollment fails', async () => { + it('should set currentStep to ERROR when enrolE2EI is called and enrolment fails', async () => { // Mock the Core service to return an error jest.spyOn(container.resolve(Core), 'enrollE2EI').mockImplementationOnce(jest.fn(() => Promise.reject())); jest.spyOn(container.resolve(UserState), 'self').mockImplementationOnce(() => user); const instance = E2EIHandler.getInstance(params); - await instance['enrollE2EI'](); + await instance['enrol'](); expect(instance['currentStep']).toBe(E2EIHandlerStep.ERROR); }); @@ -160,14 +156,14 @@ describe('E2EIHandler', () => { await handler.initialize(); expect(getModalOptions).toHaveBeenCalledWith( expect.objectContaining({ - type: ModalType.ENROLL, + type: ModalType.ENROL, }), ); }); - it('should display loading message when enrolled', async () => { + it('should display loading message when enroled', async () => { const handler = E2EIHandler.getInstance(params); - await handler['enrollE2EI'](); + await handler['enrol'](); expect(getModalOptions).toHaveBeenCalledWith( expect.objectContaining({ type: ModalType.LOADING, @@ -175,12 +171,12 @@ describe('E2EIHandler', () => { ); }); - it('should display success message when enrollment is done', async () => { + it('should display success message when enrolment is done', async () => { jest.spyOn(container.resolve(Core), 'enrollE2EI').mockResolvedValueOnce(true); const handler = E2EIHandler.getInstance(params); handler['showLoadingMessage'] = jest.fn(); - await handler['enrollE2EI'](); + await handler['enrol'](); expect(getModalOptions).toHaveBeenCalledWith( expect.objectContaining({ type: ModalType.SUCCESS, @@ -188,12 +184,12 @@ describe('E2EIHandler', () => { ); }); - it('should display error message when enrollment fails', async () => { + it('should display error message when enrolment fails', async () => { jest.spyOn(container.resolve(Core), 'enrollE2EI').mockRejectedValueOnce(false); const handler = E2EIHandler.getInstance(params); handler['showLoadingMessage'] = jest.fn(); - await handler['enrollE2EI'](); + await handler['enrol'](); expect(getModalOptions).toHaveBeenCalledWith( expect.objectContaining({ type: ModalType.ERROR, diff --git a/src/script/E2EIdentity/E2EIdentity.ts b/src/script/E2EIdentity/E2EIdentity.ts index fc00019ffad..bc2379cf37f 100644 --- a/src/script/E2EIdentity/E2EIdentity.ts +++ b/src/script/E2EIdentity/E2EIdentity.ts @@ -18,301 +18,44 @@ */ import {QualifiedId} from '@wireapp/api-client/lib/user'; -import {WireIdentity} from '@wireapp/core/lib/messagingProtocols/mls'; import {container} from 'tsyringe'; -import {PrimaryModal, removeCurrentModal} from 'Components/Modals/PrimaryModal'; -import {Config} from 'src/script/Config'; import {Core} from 'src/script/service/CoreSingleton'; -import {UserState} from 'src/script/user/UserState'; -import {TIME_IN_MILLIS} from 'Util/TimeUtil'; -import {removeUrlParameters} from 'Util/UrlUtil'; -import {supportsMLS} from 'Util/util'; +import {base64ToArray} from 'Util/util'; -import {DelayTimerService} from './DelayTimer/DelayTimer'; -import {getModalOptions, ModalType} from './Modals'; -import {getOIDCServiceInstance} from './OIDCService'; -import {OIDCServiceStore} from './OIDCService/OIDCServiceStorage'; - -export enum E2EIHandlerStep { - UNINITIALIZED = 'uninitialized', - INITIALIZED = 'initialized', - ENROLL = 'enroll', - SUCCESS = 'success', - ERROR = 'error', - SNOOZE = 'snooze', +export function getE2EIdentityService() { + return container.resolve(Core).service?.e2eIdentity; } -interface E2EIHandlerParams { - discoveryUrl: string; - gracePeriodInSeconds: number; +/** + * @param groupId id of the group + * @param clientIdsWithUser client ids with user data + * Returns devices E2EI certificates + */ +export async function getUserDeviceEntities( + groupId: string | Uint8Array, + clientIdsWithUser: Record, +) { + return getE2EIdentityService()?.getUserDeviceEntities(groupId, clientIdsWithUser); } -class E2EIHandler { - private static instance: E2EIHandler | null = null; - private readonly core = container.resolve(Core); - private readonly userState = container.resolve(UserState); - private timer: DelayTimerService; - private discoveryUrl: string; - private gracePeriodInMS: number; - private currentStep: E2EIHandlerStep | null = E2EIHandlerStep.UNINITIALIZED; - - private constructor({discoveryUrl, gracePeriodInSeconds}: E2EIHandlerParams) { - // ToDo: Do these values need to te able to be updated? Should we use a singleton with update fn? - this.discoveryUrl = discoveryUrl; - this.gracePeriodInMS = gracePeriodInSeconds * TIME_IN_MILLIS.SECOND; - this.timer = DelayTimerService.getInstance({ - gracePeriodInMS: this.gracePeriodInMS, - gracePeriodExpiredCallback: () => null, - delayPeriodExpiredCallback: () => null, - }); - } - - private get coreE2EIService() { - const e2eiService = this.core.service?.e2eIdentity; - - if (!e2eiService) { - throw new Error('E2EI Service not available'); - } - - return e2eiService; - } - - /** - * Get the singleton instance of GracePeriodTimer or create a new one - * For the first time, params are required to create the instance - * After that, params are optional and can be used to update the grace period timer - * @param params The params to create the grace period timer - * @returns The singleton instance of GracePeriodTimer - */ - public static getInstance(params?: E2EIHandlerParams) { - if (!E2EIHandler.instance) { - if (!params) { - throw new Error('GracePeriodTimer is not initialized. Please call getInstance with params.'); - } - E2EIHandler.instance = new E2EIHandler(params); - } - return E2EIHandler.instance; - } - - /** - * Reset the instance - */ - public static resetInstance() { - E2EIHandler.instance = null; - } - - /** - * @param E2EIHandlerParams The params to create the grace period timer - */ - public updateParams({gracePeriodInSeconds, discoveryUrl}: E2EIHandlerParams) { - this.gracePeriodInMS = gracePeriodInSeconds * TIME_IN_MILLIS.SECOND; - this.discoveryUrl = discoveryUrl; - this.timer.updateParams({ - gracePeriodInMS: this.gracePeriodInMS, - gracePeriodExpiredCallback: () => null, - delayPeriodExpiredCallback: () => null, - }); - this.initialize(); - } - - public initialize(): void { - if (this.isE2EIEnabled) { - if (!this.hasActiveCertificate()) { - this.showE2EINotificationMessage(); - } - } - } - - get isE2EIEnabled(): boolean { - return supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; - } - - private async storeRedirectTargetAndRedirect(targetURL: string): Promise { - // store the target url in the persistent oidc service store, since the oidc service will be destroyed after the redirect - OIDCServiceStore.store.targetURL(targetURL); - const oidcService = getOIDCServiceInstance(); - await oidcService.authenticate(); - } - - public async enrollE2EI() { - try { - // Notify user about E2EI enrollment in progress - this.currentStep = E2EIHandlerStep.ENROLL; - this.showLoadingMessage(); - let oAuthIdToken: string | undefined; - - // If the enrollment is in progress, we need to get the id token from the oidc service, since oauth should have already been completed - if (this.coreE2EIService.isEnrollmentInProgress()) { - const oidcService = getOIDCServiceInstance(); - const userData = await oidcService.handleAuthentication(); - if (!userData) { - throw new Error('Received no user data from OIDC service'); - } - oAuthIdToken = userData?.id_token; - } - - const data = await this.core.enrollE2EI( - this.userState.self().name(), - this.userState.self().username(), - this.discoveryUrl, - oAuthIdToken, - ); - - // If the data is false or we dont get the ACMEChallenge, enrollment failed - if (!data) { - throw new Error('E2EI enrollment failed'); - } - - // Check if the data is a boolean, if not, we need to handle the oauth redirect - if (typeof data !== 'boolean') { - await this.storeRedirectTargetAndRedirect(data.target); - } - - // Notify user about E2EI enrollment success - // This setTimeout is needed because there was a timing with the success modal and the loading modal - setTimeout(() => { - removeCurrentModal(); - }, 0); - - this.currentStep = E2EIHandlerStep.SUCCESS; - this.showSuccessMessage(); - // Remove the url parameters after enrollment - removeUrlParameters(); - } catch (error) { - this.currentStep = E2EIHandlerStep.ERROR; - setTimeout(() => { - removeCurrentModal(); - }, 0); - this.showErrorMessage(); - } - } - - private showLoadingMessage(): void { - if (this.currentStep !== E2EIHandlerStep.ENROLL) { - return; - } - - const {modalOptions, modalType} = getModalOptions({ - type: ModalType.LOADING, - hideClose: true, - }); - PrimaryModal.show(modalType, modalOptions); - } - - private showSuccessMessage(): void { - if (this.currentStep !== E2EIHandlerStep.SUCCESS) { - return; - } - - const {modalOptions, modalType} = getModalOptions({ - type: ModalType.SUCCESS, - hideSecondary: true, - hideClose: false, - }); - PrimaryModal.show(modalType, modalOptions); - } - - private async showErrorMessage(): Promise { - if (this.currentStep !== E2EIHandlerStep.ERROR) { - return; - } - - // Remove the url parameters of the failed enrollment - removeUrlParameters(); - // Clear the oidc service progress - const oidcService = getOIDCServiceInstance(); - await oidcService.clearProgress(); - // Clear the e2e identity progress - this.coreE2EIService.clearAllProgress(); - - const {modalOptions, modalType} = getModalOptions({ - type: ModalType.ERROR, - hideClose: true, - primaryActionFn: () => { - this.currentStep = E2EIHandlerStep.INITIALIZED; - void this.enrollE2EI(); - }, - secondaryActionFn: () => { - this.showE2EINotificationMessage(); - }, - }); - - PrimaryModal.show(modalType, modalOptions); - } - - private showE2EINotificationMessage(): void { - // If the user has already started enrollment, don't show the notification. Instead, show the loading modal - // This will occur after the redirect from the oauth provider - if (this.coreE2EIService.isEnrollmentInProgress()) { - void this.enrollE2EI(); - return; - } - - // If the user has already snoozed the notification, don't show it again until the snooze period has expired - if (this.currentStep !== E2EIHandlerStep.UNINITIALIZED && this.currentStep !== E2EIHandlerStep.SNOOZE) { - return; - } - - // Only initialize the timer when the it is uninitialized - if (this.currentStep === E2EIHandlerStep.UNINITIALIZED) { - this.timer.updateParams({ - gracePeriodInMS: this.gracePeriodInMS, - gracePeriodExpiredCallback: () => { - this.showE2EINotificationMessage(); - }, - delayPeriodExpiredCallback: () => { - this.showE2EINotificationMessage(); - }, - }); - this.currentStep = E2EIHandlerStep.INITIALIZED; - } - - // If the timer is not active, show the notification - if (!this.timer.isDelayTimerActive()) { - const {modalOptions, modalType} = getModalOptions({ - hideSecondary: !this.timer.isSnoozeTimeAvailable(), - primaryActionFn: () => this.enrollE2EI(), - secondaryActionFn: () => { - this.currentStep = E2EIHandlerStep.SNOOZE; - this.timer.delayPrompt(); - }, - type: ModalType.ENROLL, - hideClose: true, - }); - PrimaryModal.show(modalType, modalOptions); - } - } - - /** - * Checks if E2EI has active certificate. - */ - public hasActiveCertificate() { - return this.coreE2EIService.hasActiveCertificate(); - } - - /** - * returns E2EI certificate data. - */ - public getCertificateData() { - if (!this.hasActiveCertificate()) { - return undefined; - } +export async function getConversationState(groupId: string) { + return getE2EIdentityService()?.getConversationState(base64ToArray(groupId)); +} +/** + * Checks if E2EI has active certificate. + */ +export function hasActiveCertificate() { + return getE2EIdentityService()?.hasActiveCertificate(); +} - return this.coreE2EIService.getCertificateData(); +/** + * returns E2EI certificate data. + */ +export function getCertificateData() { + if (!hasActiveCertificate()) { + return undefined; } - /** - * @param groupId id of the group - * @param clientIdsWithUser client ids with user data - * Returns devices E2EI certificates - */ - public async getUserDeviceEntities( - groupId: string | Uint8Array, - clientIdsWithUser: Record, - ): Promise { - return this.coreE2EIService.getUserDeviceEntities(groupId, clientIdsWithUser); - } + return getE2EIdentityService()?.getCertificateData(); } - -export {E2EIHandler}; diff --git a/src/script/E2EIdentity/E2EIdentityEnrolment.ts b/src/script/E2EIdentity/E2EIdentityEnrolment.ts new file mode 100644 index 00000000000..3582a6eb3dc --- /dev/null +++ b/src/script/E2EIdentity/E2EIdentityEnrolment.ts @@ -0,0 +1,285 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {container} from 'tsyringe'; + +import {PrimaryModal, removeCurrentModal} from 'Components/Modals/PrimaryModal'; +import {Config} from 'src/script/Config'; +import {Core} from 'src/script/service/CoreSingleton'; +import {UserState} from 'src/script/user/UserState'; +import {TIME_IN_MILLIS} from 'Util/TimeUtil'; +import {removeUrlParameters} from 'Util/UrlUtil'; +import {supportsMLS} from 'Util/util'; + +import {DelayTimerService} from './DelayTimer/DelayTimer'; +import {hasActiveCertificate} from './E2EIdentity'; +import {getModalOptions, ModalType} from './Modals'; +import {getOIDCServiceInstance} from './OIDCService'; +import {OIDCServiceStore} from './OIDCService/OIDCServiceStorage'; + +export enum E2EIHandlerStep { + UNINITIALIZED = 'uninitialized', + INITIALIZED = 'initialized', + ENROL = 'enrol', + SUCCESS = 'success', + ERROR = 'error', + SNOOZE = 'snooze', +} + +interface E2EIHandlerParams { + discoveryUrl: string; + gracePeriodInSeconds: number; +} + +export class E2EIHandler { + private static instance: E2EIHandler | null = null; + private readonly core = container.resolve(Core); + private readonly userState = container.resolve(UserState); + private timer: DelayTimerService; + private discoveryUrl: string; + private gracePeriodInMS: number; + private currentStep: E2EIHandlerStep | null = E2EIHandlerStep.UNINITIALIZED; + + private constructor({discoveryUrl, gracePeriodInSeconds}: E2EIHandlerParams) { + // ToDo: Do these values need to te able to be updated? Should we use a singleton with update fn? + this.discoveryUrl = discoveryUrl; + this.gracePeriodInMS = gracePeriodInSeconds * TIME_IN_MILLIS.SECOND; + this.timer = DelayTimerService.getInstance({ + gracePeriodInMS: this.gracePeriodInMS, + gracePeriodExpiredCallback: () => null, + delayPeriodExpiredCallback: () => null, + }); + } + + private get coreE2EIService() { + const e2eiService = this.core.service?.e2eIdentity; + + if (!e2eiService) { + throw new Error('E2EI Service not available'); + } + + return e2eiService; + } + + /** + * Get the singleton instance of GracePeriodTimer or create a new one + * For the first time, params are required to create the instance + * After that, params are optional and can be used to update the grace period timer + * @param params The params to create the grace period timer + * @returns The singleton instance of GracePeriodTimer + */ + public static getInstance(params?: E2EIHandlerParams) { + if (!E2EIHandler.instance) { + if (!params) { + throw new Error('GracePeriodTimer is not initialized. Please call getInstance with params.'); + } + E2EIHandler.instance = new E2EIHandler(params); + } + return E2EIHandler.instance; + } + + /** + * Reset the instance + */ + public static resetInstance() { + E2EIHandler.instance = null; + } + + /** + * @param E2EIHandlerParams The params to create the grace period timer + */ + public updateParams({gracePeriodInSeconds, discoveryUrl}: E2EIHandlerParams) { + this.gracePeriodInMS = gracePeriodInSeconds * TIME_IN_MILLIS.SECOND; + this.discoveryUrl = discoveryUrl; + this.timer.updateParams({ + gracePeriodInMS: this.gracePeriodInMS, + gracePeriodExpiredCallback: () => null, + delayPeriodExpiredCallback: () => null, + }); + this.initialize(); + } + + public initialize(): void { + if (this.isE2EIEnabled) { + if (!hasActiveCertificate()) { + this.showE2EINotificationMessage(); + } + } + } + + get isE2EIEnabled(): boolean { + return supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; + } + + private async storeRedirectTargetAndRedirect(targetURL: string): Promise { + // store the target url in the persistent oidc service store, since the oidc service will be destroyed after the redirect + OIDCServiceStore.store.targetURL(targetURL); + const oidcService = getOIDCServiceInstance(); + await oidcService.authenticate(); + } + + public async enrol() { + try { + // Notify user about E2EI enrolment in progress + this.currentStep = E2EIHandlerStep.ENROL; + this.showLoadingMessage(); + let oAuthIdToken: string | undefined; + + // If the enrolment is in progress, we need to get the id token from the oidc service, since oauth should have already been completed + if (this.coreE2EIService.isEnrollmentInProgress()) { + const oidcService = getOIDCServiceInstance(); + const userData = await oidcService.handleAuthentication(); + if (!userData) { + throw new Error('Received no user data from OIDC service'); + } + oAuthIdToken = userData?.id_token; + } + + const data = await this.core.enrollE2EI( + this.userState.self().name(), + this.userState.self().username(), + this.discoveryUrl, + oAuthIdToken, + ); + + // If the data is false or we dont get the ACMEChallenge, enrolment failed + if (!data) { + throw new Error('E2EI enrolment failed'); + } + + // Check if the data is a boolean, if not, we need to handle the oauth redirect + if (typeof data !== 'boolean') { + await this.storeRedirectTargetAndRedirect(data.target); + } + + // Notify user about E2EI enrolment success + // This setTimeout is needed because there was a timing with the success modal and the loading modal + setTimeout(() => { + removeCurrentModal(); + }, 0); + + this.currentStep = E2EIHandlerStep.SUCCESS; + this.showSuccessMessage(); + // Remove the url parameters after enrolment + removeUrlParameters(); + } catch (error) { + this.currentStep = E2EIHandlerStep.ERROR; + setTimeout(() => { + removeCurrentModal(); + }, 0); + this.showErrorMessage(); + } + } + + private showLoadingMessage(): void { + if (this.currentStep !== E2EIHandlerStep.ENROL) { + return; + } + + const {modalOptions, modalType} = getModalOptions({ + type: ModalType.LOADING, + hideClose: true, + }); + PrimaryModal.show(modalType, modalOptions); + } + + private showSuccessMessage(): void { + if (this.currentStep !== E2EIHandlerStep.SUCCESS) { + return; + } + + const {modalOptions, modalType} = getModalOptions({ + type: ModalType.SUCCESS, + hideSecondary: true, + hideClose: false, + }); + PrimaryModal.show(modalType, modalOptions); + } + + private async showErrorMessage(): Promise { + if (this.currentStep !== E2EIHandlerStep.ERROR) { + return; + } + + // Remove the url parameters of the failed enrolment + removeUrlParameters(); + // Clear the oidc service progress + const oidcService = getOIDCServiceInstance(); + await oidcService.clearProgress(); + // Clear the e2e identity progress + this.coreE2EIService.clearAllProgress(); + + const {modalOptions, modalType} = getModalOptions({ + type: ModalType.ERROR, + hideClose: true, + primaryActionFn: () => { + this.currentStep = E2EIHandlerStep.INITIALIZED; + void this.enrol(); + }, + secondaryActionFn: () => { + this.showE2EINotificationMessage(); + }, + }); + + PrimaryModal.show(modalType, modalOptions); + } + + private showE2EINotificationMessage(): void { + // If the user has already started enrolment, don't show the notification. Instead, show the loading modal + // This will occur after the redirect from the oauth provider + if (this.coreE2EIService.isEnrollmentInProgress()) { + void this.enrol(); + return; + } + + // If the user has already snoozed the notification, don't show it again until the snooze period has expired + if (this.currentStep !== E2EIHandlerStep.UNINITIALIZED && this.currentStep !== E2EIHandlerStep.SNOOZE) { + return; + } + + // Only initialize the timer when the it is uninitialized + if (this.currentStep === E2EIHandlerStep.UNINITIALIZED) { + this.timer.updateParams({ + gracePeriodInMS: this.gracePeriodInMS, + gracePeriodExpiredCallback: () => { + this.showE2EINotificationMessage(); + }, + delayPeriodExpiredCallback: () => { + this.showE2EINotificationMessage(); + }, + }); + this.currentStep = E2EIHandlerStep.INITIALIZED; + } + + // If the timer is not active, show the notification + if (!this.timer.isDelayTimerActive()) { + const {modalOptions, modalType} = getModalOptions({ + hideSecondary: !this.timer.isSnoozeTimeAvailable(), + primaryActionFn: () => this.enrol(), + secondaryActionFn: () => { + this.currentStep = E2EIHandlerStep.SNOOZE; + this.timer.delayPrompt(); + }, + type: ModalType.ENROL, + hideClose: true, + }); + PrimaryModal.show(modalType, modalOptions); + } + } +} diff --git a/src/script/E2EIdentity/Modals/Modals.test.ts b/src/script/E2EIdentity/Modals/Modals.test.ts index f9f26971b61..8eb202fb599 100644 --- a/src/script/E2EIdentity/Modals/Modals.test.ts +++ b/src/script/E2EIdentity/Modals/Modals.test.ts @@ -23,34 +23,34 @@ import {getModalOptions, ModalType} from './Modals'; describe('getModalOptions', () => { it('should return modal options with hidden secondary action when hideSecondary is true', () => { - const options = getModalOptions({type: ModalType.ENROLL, hideSecondary: true}); + const options = getModalOptions({type: ModalType.ENROL, hideSecondary: true}); expect(options.modalOptions.secondaryAction).toBeUndefined(); expect(options.modalType).toEqual(PrimaryModal.type.ACKNOWLEDGE); }); it('should return modal options with hidden secondary action when secondaryActionFn is not provided', () => { - const options = getModalOptions({type: ModalType.ENROLL, secondaryActionFn: undefined}); + const options = getModalOptions({type: ModalType.ENROL, secondaryActionFn: undefined}); expect(options.modalOptions.secondaryAction).toBeUndefined(); expect(options.modalType).toEqual(PrimaryModal.type.ACKNOWLEDGE); }); it('should return modal options with hidden primary action when hidePrimary is true', () => { - const options = getModalOptions({type: ModalType.ENROLL, hidePrimary: true}); + const options = getModalOptions({type: ModalType.ENROL, hidePrimary: true}); expect(options.modalOptions.primaryAction).toBeUndefined(); }); it('should return modal options with hidden close button when hideClose is true', () => { - const options = getModalOptions({type: ModalType.ENROLL, hideClose: true}); + const options = getModalOptions({type: ModalType.ENROL, hideClose: true}); expect(options.modalOptions.hideCloseBtn).toBeTruthy(); expect(options.modalOptions.preventClose).toBeTruthy(); }); it('should return modal options with hidden secondary and primary actions when both hideSecondary and hidePrimary are true', () => { - const options = getModalOptions({type: ModalType.ENROLL, hideSecondary: true, hidePrimary: true}); + const options = getModalOptions({type: ModalType.ENROL, hideSecondary: true, hidePrimary: true}); expect(options.modalOptions.secondaryAction).toBeUndefined(); expect(options.modalOptions.primaryAction).toBeUndefined(); diff --git a/src/script/E2EIdentity/Modals/Modals.ts b/src/script/E2EIdentity/Modals/Modals.ts index d422b592466..37720d068ac 100644 --- a/src/script/E2EIdentity/Modals/Modals.ts +++ b/src/script/E2EIdentity/Modals/Modals.ts @@ -25,7 +25,7 @@ const hideSecondaryBtn = {hideSecondary: true}; const hideCloseBtn = {hideCloseBtn: true, preventClose: true}; export enum ModalType { - ENROLL = 'enroll', + ENROL = 'enrol', ERROR = 'error', SUCCESS = 'success', LOADING = 'loading', @@ -53,7 +53,7 @@ export const getModalOptions = ({ let options: ModalOptions = {}; let modalType: PrimaryModalType = PrimaryModal.type.CONFIRM; switch (type) { - case ModalType.ENROLL: + case ModalType.ENROL: options = { text: { closeBtnLabel: t('acme.settingsChanged.button.close'), diff --git a/src/script/E2EIdentity/index.ts b/src/script/E2EIdentity/index.ts index 6092e227756..2d41de7f8da 100644 --- a/src/script/E2EIdentity/index.ts +++ b/src/script/E2EIdentity/index.ts @@ -17,4 +17,5 @@ * */ +export * from './E2EIdentityEnrolment'; export * from './E2EIdentity'; diff --git a/src/script/client/ClientEntity.ts b/src/script/client/ClientEntity.ts index 2d5f05d7f6c..e2d76e16340 100644 --- a/src/script/client/ClientEntity.ts +++ b/src/script/client/ClientEntity.ts @@ -47,8 +47,7 @@ export class ClientEntity { lon?: number; }; meta: { - isVerified?: ko.Observable; - isMLSVerified?: ko.Observable; + isVerified: ko.Observable; primaryKey?: string; userId?: string; }; @@ -77,7 +76,6 @@ export class ClientEntity { // Metadata maintained by us this.meta = { isVerified: ko.observable(false), - isMLSVerified: ko.observable(false), primaryKey: undefined, }; } diff --git a/src/script/client/ClientMapper.test.ts b/src/script/client/ClientMapper.test.ts index 84f0b523fad..597ef9c4c0b 100644 --- a/src/script/client/ClientMapper.test.ts +++ b/src/script/client/ClientMapper.test.ts @@ -60,7 +60,6 @@ describe('ClientMapper', () => { expect(clientEntity.location?.lat).toBe(clientPayload.location.lat); expect(clientEntity.location?.lon).toBe(clientPayload.location.lon); expect(clientEntity.meta.isVerified?.()).toBe(false); - expect(clientEntity.meta.isMLSVerified?.()).toBe(false); expect(clientEntity.model).toBe(clientPayload.model); expect(clientEntity.time).toBe(clientPayload.time); expect(clientEntity.type).toBe(ClientType.TEMPORARY); @@ -76,7 +75,6 @@ describe('ClientMapper', () => { expect(clientEntity.id).toBe(clientPayload.id); expect(clientEntity.class).toBe(clientPayload.class); expect(clientEntity.meta.isVerified?.()).toBe(false); - expect(clientEntity.meta.isMLSVerified?.()).toBe(false); expect(clientEntity.isPermanent()).toBe(false); expect(clientEntity.isTemporary()).toBe(false); }); @@ -87,7 +85,6 @@ describe('ClientMapper', () => { id: '66d0515a23a0ef25', meta: { is_verified: true, - is_mls_verified: true, }, }; @@ -107,7 +104,6 @@ describe('ClientMapper', () => { domain: '', meta: { is_verified: true, - is_mls_verified: true, }, }; @@ -147,7 +143,6 @@ describe('ClientMapper', () => { expect(clientEntity.location?.lat).toBe(clientPayload.location.lat); expect(clientEntity.location?.lon).toBe(clientPayload.location.lon); expect(clientEntity.meta.isVerified?.()).toBe(false); - expect(clientEntity.meta.isMLSVerified?.()).toBe(false); expect(clientEntity.model).toBe(clientPayload.model); expect(clientEntity.time).toBe(clientPayload.time); expect(clientEntity.type).toBe(ClientType.PERMANENT); @@ -170,7 +165,6 @@ describe('ClientMapper', () => { expect(clientEntity.location?.lat).toBe(clientPayload.location.lat); expect(clientEntity.location?.lon).toBe(clientPayload.location.lon); expect(clientEntity.meta.isVerified?.()).toBe(false); - expect(clientEntity.meta.isMLSVerified?.()).toBe(false); expect(clientEntity.model).toBe(clientPayload.model); expect(clientEntity.time).toBe(clientPayload.time); expect(clientEntity.type).toBe(ClientType.PERMANENT); diff --git a/src/script/client/ClientMapper.ts b/src/script/client/ClientMapper.ts index 342144f6e11..07fcf714703 100644 --- a/src/script/client/ClientMapper.ts +++ b/src/script/client/ClientMapper.ts @@ -58,7 +58,6 @@ export class ClientMapper { const {userId} = parseClientId(clientPayload.meta.primary_key); clientEntity.meta.isVerified?.(!!clientPayload.meta.is_verified); - clientEntity.meta.isMLSVerified?.(!!clientPayload.meta.is_mls_verified); clientEntity.meta.primaryKey = clientPayload.meta.primary_key; clientEntity.meta.userId = userId; } diff --git a/src/script/components/AvailabilityState.test.tsx b/src/script/components/AvailabilityState.test.tsx index 73b420b5ce2..d9dff16020f 100644 --- a/src/script/components/AvailabilityState.test.tsx +++ b/src/script/components/AvailabilityState.test.tsx @@ -23,9 +23,13 @@ import {Availability} from '@wireapp/protocol-messaging'; import {AvailabilityState} from './AvailabilityState'; +import {User} from '../entity/User'; + +const user = new User(); + const defaultProps = { - availability: Availability.Type.AVAILABLE, dataUieName: 'example-data-uie', + user, label: 'example', showArrow: false, theme: false, @@ -33,6 +37,7 @@ const defaultProps = { describe('AvailabilityState', () => { it('renders available icon', async () => { + user.availability(Availability.Type.AVAILABLE); const {getByTestId} = render(); const statusAvailabilityIcon = getByTestId('status-availability-icon'); @@ -40,33 +45,27 @@ describe('AvailabilityState', () => { }); it('renders away icon', async () => { - const props = { - ...defaultProps, - availability: Availability.Type.AWAY, - }; + user.availability(Availability.Type.AWAY); - const {getByTestId} = render(); + const {getByTestId} = render(); const statusAvailabilityIcon = getByTestId('status-availability-icon'); expect(statusAvailabilityIcon.getAttribute('data-uie-value')).toEqual('away'); }); it('renders busy icon', async () => { - const props = { - ...defaultProps, - availability: Availability.Type.BUSY, - }; + user.availability(Availability.Type.BUSY); - const {getByTestId} = render(); + const {getByTestId} = render(); const statusAvailabilityIcon = getByTestId('status-availability-icon'); expect(statusAvailabilityIcon.getAttribute('data-uie-value')).toEqual('busy'); }); it('renders availability icon with arrow', async () => { + user.availability(Availability.Type.BUSY); const props = { ...defaultProps, - availability: Availability.Type.BUSY, showArrow: true, }; @@ -77,18 +76,4 @@ describe('AvailabilityState', () => { expect(getByTestId('availability-arrow')).not.toBeNull(); }); - - it('shows label text', async () => { - const label = 'cool label'; - const props = { - ...defaultProps, - availability: Availability.Type.BUSY, - label, - showArrow: true, - }; - - const {getByText} = render(); - - expect(getByText(label)).not.toBeNull(); - }); }); diff --git a/src/script/components/AvailabilityState.tsx b/src/script/components/AvailabilityState.tsx index 272d0157d6c..c0a8cf7d1fb 100644 --- a/src/script/components/AvailabilityState.tsx +++ b/src/script/components/AvailabilityState.tsx @@ -25,25 +25,24 @@ import cx from 'classnames'; import {Availability} from '@wireapp/protocol-messaging'; import {selfIndicator} from 'Components/ParticipantItemContent/ParticipantItem.styles'; -import {VerificationBadges} from 'src/script/components/VerificationBadges'; +import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {CSS_SQUARE} from 'Util/CSSMixin'; import {KEY} from 'Util/KeyboardUtil'; import {Icon} from './Icon'; +import {User} from '../entity/User'; + interface AvailabilityStateProps { - availability: Availability.Type; + user: User; className?: string; dataUieName: string; - label: string; selfString?: string; title?: string; onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void; showArrow?: boolean; theme?: boolean; - showBadges?: boolean; - isProteusVerified?: boolean; - isMLSVerified?: boolean; + children?: React.ReactNode; } const iconStyles: CSSObject = { @@ -61,19 +60,18 @@ const buttonCommonStyles: CSSObject = { }; export const AvailabilityState: React.FC = ({ - availability, + user, className, dataUieName, - label, selfString, title, showArrow = false, theme = false, onClick, - showBadges = false, - isProteusVerified = false, - isMLSVerified = false, + children, }) => { + const {availability, name: label} = useKoSubscribableChildren(user, ['availability', 'name']); + const isAvailable = availability === Availability.Type.AVAILABLE; const isAway = availability === Availability.Type.AWAY; const isBusy = availability === Availability.Type.BUSY; @@ -137,7 +135,7 @@ export const AvailabilityState: React.FC = ({ {selfString && {selfString}} - {showBadges && } + {children} {showArrow && ( = ({ resetState(); }; const {classifiedDomains} = useKoSubscribableChildren(teamState, ['classifiedDomains']); - const { - is_trusted: isTrusted, - is_verified: isSelfVerified, - isActivatedAccount, - } = useKoSubscribableChildren(selfUser, ['is_trusted', 'is_verified', 'isActivatedAccount']); + const {is_trusted: isTrusted, isActivatedAccount} = useKoSubscribableChildren(selfUser, [ + 'is_trusted', + 'isActivatedAccount', + ]); const isFederated = core.backendFeatures?.isFederated; useEffect(() => { @@ -202,14 +201,7 @@ const UserModal: React.FC = ({
{user && ( <> - + diff --git a/src/script/components/ParticipantItemContent/ParticipantItemContent.tsx b/src/script/components/ParticipantItemContent/ParticipantItemContent.tsx index cb0f4fa9f72..c9b5e0d767d 100644 --- a/src/script/components/ParticipantItemContent/ParticipantItemContent.tsx +++ b/src/script/components/ParticipantItemContent/ParticipantItemContent.tsx @@ -19,11 +19,11 @@ import React from 'react'; -import {Availability} from '@wireapp/protocol-messaging'; - import {AvailabilityState} from 'Components/AvailabilityState'; import {Icon} from 'Components/Icon'; -import {VerificationBadges} from 'src/script/components/VerificationBadges'; +import {User} from 'src/script/entity/User'; +import {ServiceEntity} from 'src/script/integration/ServiceEntity'; +import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import { contentInfoWrapper, @@ -39,50 +39,48 @@ import { } from './ParticipantItem.styles'; export interface ParticipantItemContentProps { - name: string; + renderParticipantBadges?: (user: User) => React.ReactNode; + participant: User | ServiceEntity; selfInTeam?: boolean; - availability?: Availability.Type; shortDescription?: string; selfString?: string; hasUsernameInfo?: boolean; showArrow?: boolean; onDropdownClick?: (event: React.MouseEvent) => void; showAvailabilityState?: boolean; - isService?: boolean; isSelectable?: boolean; isProteusVerified?: boolean; isMLSVerified?: boolean; } export const ParticipantItemContent = ({ - name, + renderParticipantBadges, + participant, selfInTeam = false, - availability = Availability.Type.NONE, shortDescription = '', selfString = '', hasUsernameInfo = false, showArrow = false, showAvailabilityState = false, - isService = false, isSelectable = false, - isProteusVerified = false, - isMLSVerified = false, }: ParticipantItemContentProps) => { + const {name} = useKoSubscribableChildren(participant, ['name']); + + const isService = participant instanceof ServiceEntity; + return (
- {showAvailabilityState && selfInTeam ? ( + {!isService && showAvailabilityState && selfInTeam ? ( + > + {!isSelectable && renderParticipantBadges?.(participant)} + ) : ( <>
@@ -91,9 +89,7 @@ export const ParticipantItemContent = ({ {selfString && {selfString}}
- {!isService && !isSelectable && ( - - )} + {!isSelectable && !isService && renderParticipantBadges?.(participant)} )}
diff --git a/src/script/components/ServiceList/components/ServiceListItem/ServiceListItem.tsx b/src/script/components/ServiceList/components/ServiceListItem/ServiceListItem.tsx index 78681ccc0ad..c20fbc7b5f7 100644 --- a/src/script/components/ServiceList/components/ServiceListItem/ServiceListItem.tsx +++ b/src/script/components/ServiceList/components/ServiceListItem/ServiceListItem.tsx @@ -53,7 +53,7 @@ export const ServiceListItem = ({service, onClick}: ServiceListItemProps) => {
); diff --git a/src/script/components/TitleBar/TitleBar.tsx b/src/script/components/TitleBar/TitleBar.tsx index 5822d4922f9..ea5d8193477 100644 --- a/src/script/components/TitleBar/TitleBar.tsx +++ b/src/script/components/TitleBar/TitleBar.tsx @@ -30,7 +30,7 @@ import {WebAppEvents} from '@wireapp/webapp-events'; import {useCallAlertState} from 'Components/calling/useCallAlertState'; import {Icon} from 'Components/Icon'; import {LegalHoldDot} from 'Components/LegalHoldDot'; -import {VerificationBadges} from 'src/script/components/VerificationBadges'; +import {ConversationVerificationBadges} from 'Components/VerificationBadge'; import {User} from 'src/script/entity/User'; import {useAppMainState, ViewType} from 'src/script/page/state'; import {ContentState} from 'src/script/page/useAppState'; @@ -42,7 +42,6 @@ import {TIME_IN_MILLIS} from 'Util/TimeUtil'; import {CallState} from '../../calling/CallState'; import {ConversationFilter} from '../../conversation/ConversationFilter'; -import {ConversationVerificationState} from '../../conversation/ConversationVerificationState'; import {Conversation} from '../../entity/Conversation'; import {RightSidebarParams} from '../../page/AppMain'; import {PanelState} from '../../page/RightSidebar/RightSidebar'; @@ -88,8 +87,6 @@ export const TitleBar: React.FC = ({ firstUserEntity, hasLegalHold, display_name: displayName, - verification_state: verificationState, - mlsVerificationState, } = useKoSubscribableChildren(conversation, [ 'is1to1', 'isRequest', @@ -102,8 +99,6 @@ export const TitleBar: React.FC = ({ 'firstUserEntity', 'hasLegalHold', 'display_name', - 'verification_state', - 'mlsVerificationState', ]); const {isActivatedAccount} = useKoSubscribableChildren(selfUser, ['isActivatedAccount']); @@ -275,11 +270,7 @@ export const TitleBar: React.FC = ({ {displayName} - +
{conversationSubtitle &&
{conversationSubtitle}
} diff --git a/src/script/components/UserDevices.tsx b/src/script/components/UserDevices.tsx index 0bba4ee02e2..f49eabe96ca 100644 --- a/src/script/components/UserDevices.tsx +++ b/src/script/components/UserDevices.tsx @@ -20,6 +20,7 @@ import React, {useEffect, useMemo, useState} from 'react'; import {ClientClassification} from '@wireapp/api-client/lib/client/'; +import {QualifiedId} from '@wireapp/api-client/lib/user'; import {partition} from 'Util/ArrayUtil'; import {t} from 'Util/LocalizerUtil'; @@ -84,6 +85,7 @@ interface UserDevicesProps { cryptographyRepository: CryptographyRepository; current: UserDevicesHistoryEntry; goTo: (state: UserDevicesState, headline: string) => void; + renderDeviceBadges?: (device: ClientEntity, userId: QualifiedId) => React.ReactNode; messageRepository: MessageRepository; noPadding?: boolean; user: User; @@ -97,6 +99,7 @@ const UserDevices: React.FC = ({ goTo, messageRepository, cryptographyRepository, + renderDeviceBadges, }) => { const [selectedClient, setSelectedClient] = useState(); const [deviceMode, setDeviceMode] = useState(FIND_MODE.REQUESTING); @@ -121,6 +124,10 @@ const UserDevices: React.FC = ({ })(); }, [user]); + const renderBadges = (device: ClientEntity) => { + return renderDeviceBadges?.(device, user.qualifiedId); + }; + const clickOnDevice = (clientEntity: ClientEntity) => { setSelectedClient(clientEntity); const headline = user.isMe ? clientEntity.label || clientEntity.model : capitalizeFirstChar(clientEntity.class); @@ -136,7 +143,7 @@ const UserDevices: React.FC = ({ return (
{showDeviceList && deviceMode === FIND_MODE.FOUND && ( - + )} {showDeviceList && deviceMode === FIND_MODE.NOT_FOUND && } @@ -144,6 +151,7 @@ const UserDevices: React.FC = ({ {current.state === UserDevicesState.DEVICE_DETAILS && ( React.ReactNode; conversationRepository?: ConversationRepository; conversationState?: ConversationState; highlightedUsers?: User[]; @@ -75,6 +76,7 @@ export interface UserListProps { export const UserList = ({ onClick, + renderParticipantBadges, conversationRepository, users, infos, @@ -130,6 +132,7 @@ export const UserList = ({ return (
  • React.ReactNode; canSelect: boolean; customInfo?: string; external: boolean; @@ -57,14 +58,14 @@ interface RenderParticipantProps { isSelectable?: boolean; } -const UserListItem = ({ +export const UserListItem = ({ + renderParticipantBadges, canSelect, customInfo, external, hideInfo, isHighlighted, isSelected, - isSelfVerified = false, mode = UserlistMode.DEFAULT, noInteraction, noUnderline = false, @@ -75,20 +76,7 @@ const UserListItem = ({ }: UserListItemProps) => { const checkboxId = useId(); - const { - is_verified: isVerified, - isDirectGuest, - availability, - expirationText, - isMLSVerified, - } = useKoSubscribableChildren(user, [ - 'isDirectGuest', - 'is_verified', - 'availability', - 'expirationText', - 'name', - 'isMLSVerified', - ]); + const {isDirectGuest, expirationText} = useKoSubscribableChildren(user, ['isDirectGuest', 'expirationText']); const {isMe: isSelf, isFederated} = user; const isTemporaryGuest = user.isTemporaryGuest(); @@ -128,16 +116,14 @@ const UserListItem = ({
  • ); }; - -export {UserSearchableList}; diff --git a/src/script/components/VerificationBadges/VerificationBadges.test.tsx b/src/script/components/VerificationBadge/VerificationBadges.test.tsx similarity index 77% rename from src/script/components/VerificationBadges/VerificationBadges.test.tsx rename to src/script/components/VerificationBadge/VerificationBadges.test.tsx index eb0c955ab3c..5071f621428 100644 --- a/src/script/components/VerificationBadges/VerificationBadges.test.tsx +++ b/src/script/components/VerificationBadge/VerificationBadges.test.tsx @@ -24,10 +24,8 @@ import {withTheme} from 'src/script/auth/util/test/TestUtil'; import {VerificationBadges, MLSStatuses} from './VerificationBadges'; describe('VerificationBadges', () => { - const isMLSVerified = true; - it('is mls verified', async () => { - const {getByTestId} = render(withTheme()); + const {getByTestId} = render(withTheme()); const E2EIdentityStatus = getByTestId('mls-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.VALID); @@ -41,27 +39,21 @@ describe('VerificationBadges', () => { }); it('is not downloaded', async () => { - const {getByTestId} = render( - withTheme(), - ); + const {getByTestId} = render(withTheme()); const E2EIdentityStatus = getByTestId('mls-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.NOT_DOWNLOADED); }); it('is expired', async () => { - const {getByTestId} = render( - withTheme(), - ); + const {getByTestId} = render(withTheme()); const E2EIdentityStatus = getByTestId('mls-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.EXPIRED); }); it('is expires soon', async () => { - const {getByTestId} = render( - withTheme(), - ); + const {getByTestId} = render(withTheme()); const E2EIdentityStatus = getByTestId('mls-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.EXPIRES_SOON); diff --git a/src/script/components/VerificationBadges/VerificationBadges.tsx b/src/script/components/VerificationBadge/VerificationBadges.tsx similarity index 64% rename from src/script/components/VerificationBadges/VerificationBadges.tsx rename to src/script/components/VerificationBadge/VerificationBadges.tsx index 0443750d6b9..0ee6af1ce7a 100644 --- a/src/script/components/VerificationBadges/VerificationBadges.tsx +++ b/src/script/components/VerificationBadge/VerificationBadges.tsx @@ -17,9 +17,10 @@ * */ -import React, {CSSProperties} from 'react'; +import {CSSProperties, useEffect, useState} from 'react'; import {ConversationProtocol} from '@wireapp/api-client/lib/conversation'; +import {QualifiedId} from '@wireapp/api-client/lib/user'; import { CertificateExpiredIcon, @@ -29,6 +30,12 @@ import { ProteusVerified, } from '@wireapp/react-ui-kit'; +import {ClientEntity} from 'src/script/client'; +import {ConversationVerificationState} from 'src/script/conversation/ConversationVerificationState'; +import {getUserDeviceEntities} from 'src/script/E2EIdentity'; +import {Conversation} from 'src/script/entity/Conversation'; +import {User} from 'src/script/entity/User'; +import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; export enum MLSStatuses { @@ -40,7 +47,6 @@ export enum MLSStatuses { interface VerificationBadgesProps { conversationProtocol?: ConversationProtocol; - isMLSVerified?: boolean; isProteusVerified?: boolean; MLSStatus?: MLSStatuses; displayTitle?: boolean; @@ -63,14 +69,73 @@ const title = (isMLSConversation = false): CSSProperties => ({ marginRight: '4px', }); -export const VerificationBadges: React.FC = ({ +const useConversationVerificationState = (conversation: Conversation) => { + const {verification_state: proteusVerificationState, mlsVerificationState} = useKoSubscribableChildren(conversation, [ + 'verification_state', + 'mlsVerificationState', + ]); + const mlsState = mlsVerificationState === ConversationVerificationState.VERIFIED ? MLSStatuses.VALID : undefined; + return {MLS: mlsState, proteus: proteusVerificationState}; +}; + +export const UserVerificationBadges = ({user, groupId}: {user: User; groupId?: string}) => { + const {is_verified: isProteusVerified} = useKoSubscribableChildren(user, ['is_verified']); + + return ; +}; + +export const DeviceVerificationBadges = ({ + device, + userId, + groupId, +}: { + device: ClientEntity; + userId: QualifiedId; + groupId?: string; +}) => { + const [isMLSVerified, setIsMLSVerified] = useState(false); + useEffect(() => { + if (groupId) { + void (async () => { + const identities = await getUserDeviceEntities(groupId, {[device.id]: userId}); + // TODO, soon coreCrypto will return a `isValid` property. Use this one to check for validity + setIsMLSVerified(!!identities?.length); + })(); + } + }); + + return ( + + ); +}; + +type ConversationVerificationBadgeProps = { + conversation: Conversation; + displayTitle?: boolean; +}; +export const ConversationVerificationBadges = ({conversation, displayTitle}: ConversationVerificationBadgeProps) => { + const verificationState = useConversationVerificationState(conversation); + + return ( + + ); +}; + +export const VerificationBadges = ({ conversationProtocol, - isMLSVerified = false, isProteusVerified = false, MLSStatus, displayTitle = false, -}) => { - if (!isMLSVerified && !isProteusVerified) { +}: VerificationBadgesProps) => { + if (!MLSStatus && !isProteusVerified) { return null; } @@ -81,8 +146,8 @@ export const VerificationBadges: React.FC = ({ const conversationHasProtocol = !!conversationProtocol; const showMLSBadge = conversationHasProtocol - ? conversationProtocol === ConversationProtocol.MLS && isMLSVerified - : isMLSVerified; + ? conversationProtocol === ConversationProtocol.MLS && !!MLSStatus + : !!MLSStatus; const showProteusBadge = conversationHasProtocol ? conversationProtocol === ConversationProtocol.PROTEUS && isProteusVerified diff --git a/src/script/components/VerificationBadges/index.ts b/src/script/components/VerificationBadge/index.ts similarity index 100% rename from src/script/components/VerificationBadges/index.ts rename to src/script/components/VerificationBadge/index.ts diff --git a/src/script/components/calling/CallParticipantsListItem/CallParticipantItemContent/CallParticipantItemContent.tsx b/src/script/components/calling/CallParticipantsListItem/CallParticipantItemContent/CallParticipantItemContent.tsx index 4ebdc04ef49..77c6bdc31aa 100644 --- a/src/script/components/calling/CallParticipantsListItem/CallParticipantItemContent/CallParticipantItemContent.tsx +++ b/src/script/components/calling/CallParticipantsListItem/CallParticipantItemContent/CallParticipantItemContent.tsx @@ -21,10 +21,10 @@ import React from 'react'; import {TabIndex} from '@wireapp/react-ui-kit/lib/types/enums'; -import {Availability} from '@wireapp/protocol-messaging'; - import {AvailabilityState} from 'Components/AvailabilityState'; import {Icon} from 'Components/Icon'; +import {User} from 'src/script/entity/User'; +import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; import {capitalizeFirstChar} from 'Util/StringUtil'; @@ -40,24 +40,23 @@ import { } from './CallParticipantItemContent.styles'; export interface CallParticipantItemContentProps { - name: string; + user: User; selfInTeam?: boolean; isAudioEstablished: boolean; - availability?: Availability.Type; isSelf?: boolean; showContextMenu: boolean; onDropdownClick: (event: React.MouseEvent) => void; } export const CallParticipantItemContent = ({ - name, + user, selfInTeam = false, isAudioEstablished, - availability = Availability.Type.NONE, isSelf = false, showContextMenu, onDropdownClick, }: CallParticipantItemContentProps) => { + const {name} = useKoSubscribableChildren(user, ['name']); const selfString = `(${capitalizeFirstChar(t('conversationYouNominative'))})`; return ( @@ -65,12 +64,7 @@ export const CallParticipantItemContent = ({
    {selfInTeam ? ( - + ) : (
    {name} diff --git a/src/script/components/calling/CallParticipantsListItem/CallParticipantsListItem.tsx b/src/script/components/calling/CallParticipantsListItem/CallParticipantsListItem.tsx index bce9fcd2b2a..98931c179f7 100644 --- a/src/script/components/calling/CallParticipantsListItem/CallParticipantsListItem.tsx +++ b/src/script/components/calling/CallParticipantsListItem/CallParticipantsListItem.tsx @@ -63,10 +63,9 @@ export const CallParticipantsListItem = ({ const { isDirectGuest, is_verified: isVerified, - availability, name: userName, isExternal, - } = useKoSubscribableChildren(user, ['isDirectGuest', 'is_verified', 'availability', 'name', 'isExternal']); + } = useKoSubscribableChildren(user, ['isDirectGuest', 'is_verified', 'name', 'isExternal']); const handleContextKeyDown = (event: React.KeyboardEvent) => { handleKeyDown(event, () => { @@ -103,9 +102,8 @@ export const CallParticipantsListItem = ({ onContextMenu?.(event as unknown as React.MouseEvent)} diff --git a/src/script/components/list/ConversationListCell.tsx b/src/script/components/list/ConversationListCell.tsx index 06dee945c54..31efbd4e564 100644 --- a/src/script/components/list/ConversationListCell.tsx +++ b/src/script/components/list/ConversationListCell.tsx @@ -29,8 +29,6 @@ import React, { import {TabIndex} from '@wireapp/react-ui-kit/lib/types/enums'; import cx from 'classnames'; -import {Availability} from '@wireapp/protocol-messaging'; - import {AvailabilityState} from 'Components/AvailabilityState'; import {Avatar, AVATAR_SIZE, GroupAvatar} from 'Components/Avatar'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; @@ -77,7 +75,6 @@ const ConversationListCell = ({ participating_user_ets: users, display_name: displayName, removed_from_conversation: removedFromConversation, - availabilityOfUser, unreadState, mutedState, isRequest, @@ -88,7 +85,6 @@ const ConversationListCell = ({ 'participating_user_ets', 'display_name', 'removed_from_conversation', - 'availabilityOfUser', 'unreadState', 'mutedState', 'isRequest', @@ -157,20 +153,6 @@ const ConversationListCell = ({ } }, [isFocused]); - const availabilityStrings: Record = { - [Availability.Type.AVAILABLE]: t('userAvailabilityAvailable'), - [Availability.Type.AWAY]: t('userAvailabilityAway'), - [Availability.Type.BUSY]: t('userAvailabilityBusy'), - }; - const availabilityTitle = [Availability.Type.AWAY, Availability.Type.BUSY, Availability.Type.AVAILABLE].includes( - availabilityOfUser, - ) - ? t('accessibility.conversationTitle', { - username: displayName, - status: availabilityStrings[availabilityOfUser], - }) - : displayName; - return (
  • ) : ( diff --git a/src/script/components/panel/UserDetails.tsx b/src/script/components/panel/UserDetails.tsx index 2a6a4825b7e..ab6074ca1e2 100644 --- a/src/script/components/panel/UserDetails.tsx +++ b/src/script/components/panel/UserDetails.tsx @@ -39,9 +39,9 @@ import {User} from '../../entity/User'; interface UserDetailsProps { badge?: string; + renderParticipantBadges?: (user: User) => React.ReactNode; classifiedDomains?: string[]; isGroupAdmin?: boolean; - isSelfVerified: boolean; isVerified?: boolean; participant: User; avatarStyles?: React.CSSProperties; @@ -51,22 +51,13 @@ interface UserDetailsProps { const UserDetailsComponent: React.FC = ({ badge, participant, - isSelfVerified, + renderParticipantBadges, isGroupAdmin, avatarStyles, classifiedDomains, teamState = container.resolve(TeamState), }) => { - const user = useKoSubscribableChildren(participant, [ - 'isGuest', - 'isTemporaryGuest', - 'expirationText', - 'name', - 'availability', - 'is_verified', - 'isAvailable', - 'isMLSVerified', - ]); + const user = useKoSubscribableChildren(participant, ['isGuest', 'isTemporaryGuest', 'expirationText', 'isAvailable']); useEffect(() => { // This will trigger a user refresh @@ -77,15 +68,9 @@ const UserDetailsComponent: React.FC = ({
    {teamState.isInTeam(participant) ? ( - + + {renderParticipantBadges?.(participant)} + ) : (

    void; + renderDeviceBadges?: (device: ClientEntity) => React.ReactNode; device: ClientEntity; showIcon?: boolean; showVerified?: boolean; } -const DeviceCard = ({click, device: clientEntity, showVerified = false, showIcon = false}: DeviceCardProps) => { +const DeviceCard = ({click, renderDeviceBadges, device: clientEntity, showIcon = false}: DeviceCardProps) => { const messageFocusedTabIndex = useMessageFocusedTabIndex(!!click); - const {class: deviceClass = '?', id = '', label = '?', meta} = clientEntity; + const {class: deviceClass = '?', id = '', label = '?'} = clientEntity; const name = clientEntity.getName(); const clickable = !!click; - const {isVerified, isMLSVerified} = useKoSubscribableChildren(meta, ['isVerified', 'isMLSVerified']); const mlsFingerprint = clientEntity.mlsPublicKeys?.[MLSPublicKeys.ED25519]; @@ -76,8 +74,7 @@ const DeviceCard = ({click, device: clientEntity, showVerified = false, showIcon
    {name} - - {showVerified && } + {renderDeviceBadges?.(clientEntity)}
    {mlsFingerprint && ( diff --git a/src/script/components/userDevices/DeviceDetails.tsx b/src/script/components/userDevices/DeviceDetails.tsx index 8c6fc6bdcc4..bdb30b90a8b 100644 --- a/src/script/components/userDevices/DeviceDetails.tsx +++ b/src/script/components/userDevices/DeviceDetails.tsx @@ -50,7 +50,7 @@ interface DeviceDetailsProps { logger: Logger; messageRepository: MessageRepository; noPadding: boolean; - selectedClient: ClientEntity; + selectedClient?: ClientEntity; user: User; } diff --git a/src/script/components/userDevices/DeviceList.tsx b/src/script/components/userDevices/DeviceList.tsx index 11797ace6c6..0fdba970c41 100644 --- a/src/script/components/userDevices/DeviceList.tsx +++ b/src/script/components/userDevices/DeviceList.tsx @@ -33,12 +33,13 @@ import {getPrivacyWhyUrl} from '../../externalRoute'; interface DeviceListProps { clickOnDevice: (client: ClientEntity) => void; + renderDeviceBadges: (device: ClientEntity) => React.ReactNode; clients: ClientEntity[]; noPadding: boolean; user: User; } -const DeviceList: React.FC = ({user, noPadding, clients, clickOnDevice}) => { +const DeviceList: React.FC = ({user, renderDeviceBadges, noPadding, clients, clickOnDevice}) => { const {name: userName} = useKoSubscribableChildren(user, ['name']); return ( @@ -67,7 +68,12 @@ const DeviceList: React.FC = ({user, noPadding, clients, clickO })} data-uie-name="item-device" > - clickOnDevice(client)} showVerified showIcon /> + clickOnDevice(client)} + showIcon + />

  • ))} diff --git a/src/script/components/userDevices/SelfFingerprint.tsx b/src/script/components/userDevices/SelfFingerprint.tsx index 049759b8b2f..b0cec4224c6 100644 --- a/src/script/components/userDevices/SelfFingerprint.tsx +++ b/src/script/components/userDevices/SelfFingerprint.tsx @@ -40,7 +40,7 @@ interface SelfFingerprintProps { noPadding: boolean; } -const SelfFingerprint: React.FC = ({ +export const SelfFingerprint: React.FC = ({ cryptographyRepository, noPadding, clientState = container.resolve(ClientState), @@ -71,5 +71,3 @@ const SelfFingerprint: React.FC = ({
    ); }; - -export {SelfFingerprint}; diff --git a/src/script/conversation/ConversationRepository.ts b/src/script/conversation/ConversationRepository.ts index 4e97e53276d..d412b6910b4 100644 --- a/src/script/conversation/ConversationRepository.ts +++ b/src/script/conversation/ConversationRepository.ts @@ -69,7 +69,6 @@ import { } from 'Util/StringUtil'; import {TIME_IN_MILLIS} from 'Util/TimeUtil'; import {isBackendError} from 'Util/TypePredicateUtil'; -import {supportsMLS} from 'Util/util'; import {createUuid} from 'Util/uuid'; import {ACCESS_STATE} from './AccessState'; @@ -93,7 +92,6 @@ import {ConversationStateHandler} from './ConversationStateHandler'; import {ConversationStatus} from './ConversationStatus'; import {ConversationVerificationState} from './ConversationVerificationState'; import {ProteusConversationVerificationStateHandler} from './ConversationVerificationStateHandler'; -import {registerMLSConversationVerificationStateHandler} from './ConversationVerificationStateHandler/MLS'; import {OnConversationVerificationStateChange} from './ConversationVerificationStateHandler/shared'; import {EventMapper} from './EventMapper'; import {MessageRepository} from './MessageRepository'; @@ -285,15 +283,6 @@ export class ConversationRepository { this.conversationState, ); - if (supportsMLS()) { - // we register a handler that will handle MLS conversations on its own - registerMLSConversationVerificationStateHandler( - this.onConversationVerificationStateChange, - this.conversationState, - this.core, - ); - } - this.isBlockingNotificationHandling = true; this.teamState.isTeam.subscribe(() => this.mapGuestStatusSelf()); diff --git a/src/script/conversation/ConversationState.ts b/src/script/conversation/ConversationState.ts index 34061513469..185bde1806a 100644 --- a/src/script/conversation/ConversationState.ts +++ b/src/script/conversation/ConversationState.ts @@ -55,8 +55,8 @@ export class ConversationState { public readonly visibleConversations: ko.PureComputed; public readonly filteredConversations: ko.PureComputed; public readonly archivedConversations: ko.PureComputed; - private readonly selfProteusConversation: ko.PureComputed; - private readonly selfMLSConversation: ko.PureComputed; + public readonly selfProteusConversation: ko.PureComputed; + public readonly selfMLSConversation: ko.PureComputed; public readonly unreadConversations: ko.PureComputed; /** * All the users that are connected to the selfUser through a conversation. Those users are not necessarily **directly** connected to the selfUser (through a connection request) @@ -78,7 +78,10 @@ export class ConversationState { this.conversations().find(conversation => !isMLSConversation(conversation) && isSelfConversation(conversation)), ); this.selfMLSConversation = ko.pureComputed(() => - this.conversations().find(conversation => isMLSConversation(conversation) && isSelfConversation(conversation)), + this.conversations().find( + (conversation): conversation is MLSConversation => + isMLSConversation(conversation) && isSelfConversation(conversation), + ), ); this.visibleConversations = ko.pureComputed(() => { @@ -160,7 +163,7 @@ export class ConversationState { return proteusConversation; } - getSelfMLSConversation(): Conversation { + getSelfMLSConversation(): MLSConversation { const mlsConversation = this.selfMLSConversation(); if (!mlsConversation) { throw new Error('No MLS self conversation'); diff --git a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts index 23a82f48d3f..30f97299226 100644 --- a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts +++ b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts @@ -18,191 +18,76 @@ */ import {ConversationProtocol} from '@wireapp/api-client/lib/conversation/NewConversation'; +import {E2eiConversationState} from '@wireapp/core/lib/messagingProtocols/mls'; -import {ClientEntity} from 'src/script/client'; +import * as e2eIdentity from 'src/script/E2EIdentity/E2EIdentity'; import {Conversation} from 'src/script/entity/Conversation'; -import {User} from 'src/script/entity/User'; import {Core} from 'src/script/service/CoreSingleton'; import {createUuid} from 'Util/uuid'; -import { - MLSConversationVerificationStateHandler, - registerMLSConversationVerificationStateHandler, -} from './MLSStateHandler'; +import {registerMLSConversationVerificationStateHandler} from './MLSStateHandler'; import {ConversationState} from '../../ConversationState'; +import {ConversationVerificationState} from '../../ConversationVerificationState'; describe('MLSConversationVerificationStateHandler', () => { - const uuid = createUuid(); - let handler: MLSConversationVerificationStateHandler; - let mockOnConversationVerificationStateChange: jest.Mock; - let mockConversationState: jest.Mocked; - let mockCore: jest.Mocked; - const groupId = 'groupIdXYZ'; - const clientEntityId = 'clientIdXYZ'; - const selfClientEntityId = 'selfClientIdXYZ'; - const clientEntity: ClientEntity = new ClientEntity(false, '', clientEntityId); - const selfClientEntity: ClientEntity = new ClientEntity(false, '', selfClientEntityId); - const conversation: Conversation = new Conversation(uuid, '', ConversationProtocol.MLS); + const conversationState = new ConversationState(); + let core = new Core(); + const groupId = 'AAEAAKA0LuGtiU7NjqqlZIE2dQUAZWxuYS53aXJlLmxpbms='; + const conversation = new Conversation(createUuid(), '', ConversationProtocol.MLS); + conversationState.conversations.push(conversation); + conversation.groupId = groupId; beforeEach(() => { - conversation.groupId = groupId; - conversation.getAllUserEntities = jest.fn().mockReturnValue([ - { - devices: () => [clientEntity], - }, - ]); - mockOnConversationVerificationStateChange = jest.fn(); - // Mock the conversation state - mockConversationState = { - filteredConversations: () => [conversation], - } as unknown as jest.Mocked; - mockCore = { - service: { - mls: { - on: jest.fn(), - }, - e2eIdentity: { - getUserDeviceEntities: jest.fn().mockResolvedValue([ - { - certificate: 'mockCertificate', - clientId: clientEntityId, - }, - { - certificate: 'mockCertificate', - clientId: selfClientEntityId, - }, - ]), - }, - }, - } as unknown as jest.Mocked; - - handler = new MLSConversationVerificationStateHandler( - mockOnConversationVerificationStateChange, - mockConversationState, - mockCore, - ); - + core = new Core(); jest.clearAllMocks(); }); it('should do nothing if MLS service is not available', () => { - mockCore.service.mls = undefined; + core.service!.mls = undefined; - const t = () => - registerMLSConversationVerificationStateHandler( - mockOnConversationVerificationStateChange, - mockConversationState, - mockCore, - ); + const t = () => registerMLSConversationVerificationStateHandler(undefined, conversationState, core); expect(t).not.toThrow(); }); it('should do nothing if e2eIdentity service is not available', () => { - mockCore.service.e2eIdentity = undefined; - - registerMLSConversationVerificationStateHandler( - mockOnConversationVerificationStateChange, - mockConversationState, - mockCore, - ); - - // Assert - expect(mockCore.service?.mls?.on).not.toHaveBeenCalled(); - }); + core.service!.e2eIdentity = undefined; - it('should hook into the newEpoch event of the MLS service', () => { - registerMLSConversationVerificationStateHandler( - mockOnConversationVerificationStateChange, - mockConversationState, - mockCore, - ); + registerMLSConversationVerificationStateHandler(undefined, conversationState, core); - // Assert - expect(mockCore.service.mls.on).toHaveBeenCalledWith('newEpoch', expect.any(Function)); + expect(core.service?.mls?.on).not.toHaveBeenCalled(); }); - describe('checkEpoch', () => { - it('should degrade conversation if not all user entities have certificates', async () => { - jest.spyOn(handler as any, 'degradeConversation'); - - const mockData = { - groupId, - epoch: 12345, - }; - - jest.spyOn(handler as any, 'updateUserDevices').mockResolvedValue({ - isResultComplete: false, - identities: [], - qualifiedIds: [], - }); - - await (handler as any).checkEpoch(mockData); - - expect((handler as any).degradeConversation).toHaveBeenCalled(); - }); - - it('should verify conversation if all checks pass', async () => { - jest.spyOn(handler as any, 'verifyConversation'); - - const mockData = { - groupId, - epoch: 12345, - }; + describe('checkConversationVerificationState', () => { + it('should degrade conversation', async () => { + let triggerEpochChange: Function = () => {}; + conversation.mlsVerificationState(ConversationVerificationState.VERIFIED); + jest.spyOn(e2eIdentity, 'getConversationState').mockResolvedValue(E2eiConversationState.Degraded); + jest + .spyOn(core.service!.mls!, 'on') + .mockImplementation((_event, listener) => (triggerEpochChange = listener) as any); - jest.spyOn(handler as any, 'updateUserDevices').mockResolvedValue({ - isResultComplete: true, - identities: [ - { - certificate: 'mockCertificate', - }, - ], - qualifiedIds: [], - }); + registerMLSConversationVerificationStateHandler(undefined, conversationState, core); - jest.spyOn(handler as any, 'isCertificateActiveAndValid').mockResolvedValue(true); - - await (handler as any).checkEpoch(mockData); // Calling the private method - - expect((handler as any).verifyConversation).toHaveBeenCalled(); + triggerEpochChange({groupId}); + await new Promise(resolve => setTimeout(resolve, 0)); + expect(conversation.mlsVerificationState()).toBe(ConversationVerificationState.DEGRADED); }); - it('should update ClientEntity isMLSVerified observable', async () => { - const mockData = { - groupId, - epoch: 12345, - }; - - jest.spyOn(handler as any, 'isCertificateActiveAndValid').mockReturnValue(true); - jest.spyOn(handler as any, 'verifyConversation').mockImplementation(() => null); - - expect(clientEntity.meta.isMLSVerified?.()).toBe(false); - - await (handler as any).checkEpoch(mockData); // Calling the private method - - expect(clientEntity.meta.isMLSVerified?.()).toBe(true); - }); - - it('should update selfClient isMLSVerified observable', async () => { - const mockData = { - groupId, - epoch: 12345, - }; - - const user = new User(); - user.isMe = true; - user.localClient = selfClientEntity; - conversation.getAllUserEntities = jest.fn().mockReturnValue([user]); - - jest.spyOn(handler as any, 'isCertificateActiveAndValid').mockReturnValue(true); - jest.spyOn(handler as any, 'verifyConversation').mockImplementation(() => null); - - expect(selfClientEntity.meta.isMLSVerified?.()).toBe(false); + it('should verify conversation', async () => { + let triggerEpochChange: Function = () => {}; + conversation.mlsVerificationState(ConversationVerificationState.DEGRADED); + jest.spyOn(e2eIdentity, 'getConversationState').mockResolvedValue(E2eiConversationState.Verified); + jest + .spyOn(core.service!.mls!, 'on') + .mockImplementation((_event, listener) => (triggerEpochChange = listener) as any); - await (handler as any).checkEpoch(mockData); // Calling the private method + registerMLSConversationVerificationStateHandler(undefined, conversationState, core); - expect(selfClientEntity.meta.isMLSVerified?.()).toBe(true); + triggerEpochChange({groupId}); + await new Promise(resolve => setTimeout(resolve, 0)); + expect(conversation.mlsVerificationState()).toBe(ConversationVerificationState.VERIFIED); }); }); }); diff --git a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts index a19b6203305..08b304ee4e1 100644 --- a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts +++ b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts @@ -17,32 +17,26 @@ * */ -import {X509Certificate} from '@peculiar/x509'; -import {QualifiedId} from '@wireapp/api-client/lib/user'; -import {WireIdentity} from '@wireapp/core/lib/messagingProtocols/mls'; +import {E2eiConversationState} from '@wireapp/core/lib/messagingProtocols/mls'; import {container} from 'tsyringe'; -import {ClientEntity} from 'src/script/client'; +import {getConversationState} from 'src/script/E2EIdentity'; import {VerificationMessageType} from 'src/script/message/VerificationMessageType'; import {Core} from 'src/script/service/CoreSingleton'; import {Logger, getLogger} from 'Util/Logger'; -import {MLSConversation, isMLSConversation} from '../../ConversationSelectors'; +import {MLSConversation} from '../../ConversationSelectors'; import {ConversationState} from '../../ConversationState'; -import { - getConversationByGroupId, - attemptChangeToDegraded, - attemptChangeToVerified, - OnConversationVerificationStateChange, -} from '../shared'; +import {ConversationVerificationState} from '../../ConversationVerificationState'; +import {getConversationByGroupId, OnConversationVerificationStateChange} from '../shared'; -export class MLSConversationVerificationStateHandler { +class MLSConversationVerificationStateHandler { private readonly logger: Logger; public constructor( private readonly onConversationVerificationStateChange: OnConversationVerificationStateChange, - private readonly conversationState = container.resolve(ConversationState), - private readonly core = container.resolve(Core), + private readonly conversationState: ConversationState, + private readonly core: Core, ) { this.logger = getLogger('MLSConversationVerificationStateHandler'); // We need to check if the core service is available and if the e2eIdentity is available @@ -51,129 +45,65 @@ export class MLSConversationVerificationStateHandler { } // We hook into the newEpoch event of the MLS service to check if the conversation needs to be verified or degraded - this.core.service.mls.on('newEpoch', this.checkEpoch); + this.core.service.mls.on('newEpoch', this.checkConversationVerificationState); } /** * This function checks if the conversation is verified and if it is, it will degrade it - * @param conversationEntity + * @param conversation * @param userIds */ - private degradeConversation = async (conversationEntity: MLSConversation, userIds: QualifiedId[]) => { - this.logger.log(`Conversation ${conversationEntity.name} will be degraded`); - const conversationVerificationState = attemptChangeToDegraded({ - conversationEntity, - logger: this.logger, + private async degradeConversation(conversation: MLSConversation) { + const state = ConversationVerificationState.DEGRADED; + conversation.mlsVerificationState(state); + this.onConversationVerificationStateChange({ + conversationEntity: conversation, + conversationVerificationState: state, + verificationMessageType: VerificationMessageType.UNVERIFIED, }); - if (conversationVerificationState) { - this.onConversationVerificationStateChange({ - conversationEntity, - conversationVerificationState, - verificationMessageType: VerificationMessageType.UNVERIFIED, - userIds, - }); - } - }; + } /** * This function checks if the conversation is degraded and if it is, it will verify it - * @param conversationEntity + * @param conversation * @param userIds */ - private verifyConversation = async (conversationEntity: MLSConversation) => { - this.logger.log(`Conversation ${conversationEntity.name} will be verified`); - - const conversationVerificationState = attemptChangeToVerified({conversationEntity, logger: this.logger}); - - if (conversationVerificationState) { - this.onConversationVerificationStateChange({ - conversationEntity, - conversationVerificationState, - }); - } - }; - - /** - * This function returns the WireIdentity of all userDeviceEntities in a conversation, as long as they have a certificate. - * If the conversation has userDeviceEntities without a certificate, it will not be included in the returned array - * - * It also updates the isMLSVerified observable of all the devices in the conversation - */ - private updateUserDevices = async (conversation: MLSConversation) => { - const userEntities = conversation.getAllUserEntities(); - const allClients: ClientEntity[] = []; - const allIdentities: WireIdentity[] = []; - userEntities.forEach(async userEntity => { - let devices = userEntity.devices(); - // Add the localClient to the devices array if it is the current user - if (userEntity.isMe && userEntity.localClient) { - devices = [...devices, userEntity.localClient]; - } - const deviceUserPairs = devices - .map(device => ({ - [device.id]: userEntity.qualifiedId, - })) - .reduce((acc, current) => { - return {...acc, ...current}; - }, {}); - const identities = await this.core.service!.e2eIdentity!.getUserDeviceEntities( - conversation.groupId, - deviceUserPairs, - ); - identities.forEach(async identity => { - const verified = await this.isCertificateActiveAndValid(identity.certificate); - if (verified) { - const device = devices.find(device => device.id === identity.clientId); - /** - * ToDo: Change the current implementation of isMLSVerified to be stored in Zustand instead of ko.observable - */ - device?.meta.isMLSVerified?.(true); - allIdentities.push(identity); - } - }); - allClients.push(...devices); + private async verifyConversation(conversation: MLSConversation) { + const state = ConversationVerificationState.VERIFIED; + conversation.mlsVerificationState(state); + this.onConversationVerificationStateChange({ + conversationEntity: conversation, + conversationVerificationState: state, }); - - return { - isResultComplete: allClients.length === allIdentities.length, - qualifiedIds: userEntities.map(userEntity => userEntity.qualifiedId), - }; - }; - - private async isCertificateActiveAndValid(certificateString: string): Promise { - const cert = new X509Certificate(certificateString); - const isValid = await cert.verify(); - const isActive = cert.notAfter.getTime() > Date.now(); - - return isValid && isActive; } - private async checkEpoch({groupId, epoch}: {groupId: string; epoch: number}): Promise { - this.logger.log(`Epoch changed to ${epoch} for groupId ${groupId}`); - const conversationEntity = getConversationByGroupId({conversationState: this.conversationState, groupId}); - if (!conversationEntity) { + private checkConversationVerificationState = async ({groupId}: {groupId: string}): Promise => { + const conversation = getConversationByGroupId({conversationState: this.conversationState, groupId}); + if (!conversation) { this.logger.error(`Epoch changed but conversationEntity can't be found`); return; } - if (isMLSConversation(conversationEntity)) { - const {isResultComplete, qualifiedIds} = await this.updateUserDevices(conversationEntity); - - // If the number of userDevicePairs is not equal to the number of identities, our Conversation is not secure - if (!isResultComplete) { - return this.degradeConversation(conversationEntity, qualifiedIds); - } - - // If we reach this point, all checks have passed and we can set the conversation to verified - return this.verifyConversation(conversationEntity); + const verificationState = await getConversationState(groupId); + + if ( + verificationState === E2eiConversationState.Degraded && + conversation.mlsVerificationState() !== ConversationVerificationState.DEGRADED + ) { + return this.degradeConversation(conversation); + } else if ( + verificationState === E2eiConversationState.Verified && + conversation.mlsVerificationState() !== ConversationVerificationState.VERIFIED + ) { + return this.verifyConversation(conversation); } - } + }; } export const registerMLSConversationVerificationStateHandler = ( - onConversationVerificationStateChange: OnConversationVerificationStateChange, - conversationState?: ConversationState, - core?: Core, + onConversationVerificationStateChange: OnConversationVerificationStateChange = () => {}, + conversationState: ConversationState = container.resolve(ConversationState), + core: Core = container.resolve(Core), ): void => { new MLSConversationVerificationStateHandler(onConversationVerificationStateChange, conversationState, core); }; diff --git a/src/script/conversation/ConversationVerificationStateHandler/shared/conversation/index.ts b/src/script/conversation/ConversationVerificationStateHandler/shared/conversation/index.ts index c52ceb56ce6..74bfcce5127 100644 --- a/src/script/conversation/ConversationVerificationStateHandler/shared/conversation/index.ts +++ b/src/script/conversation/ConversationVerificationStateHandler/shared/conversation/index.ts @@ -66,10 +66,7 @@ export const getConversationByGroupId = ({ groupId, }: GetConversationByGroupIdParams): MLSConversation | undefined => { const conversation = conversationState.filteredConversations().find(conversation => conversation.groupId === groupId); - if (conversation && isMLSConversation(conversation)) { - return conversation; - } - return undefined; + return conversation && isMLSConversation(conversation) ? conversation : undefined; }; /** diff --git a/src/script/entity/Conversation.ts b/src/script/entity/Conversation.ts index 059ff046402..b4c02aee90c 100644 --- a/src/script/entity/Conversation.ts +++ b/src/script/entity/Conversation.ts @@ -31,7 +31,7 @@ import ko from 'knockout'; import {container} from 'tsyringe'; import {Cancelable, debounce} from 'underscore'; -import {Availability, LegalHoldStatus} from '@wireapp/protocol-messaging'; +import {LegalHoldStatus} from '@wireapp/protocol-messaging'; import {WebAppEvents} from '@wireapp/webapp-events'; import {useLegalHoldModalState} from 'Components/Modals/LegalHoldModal/LegalHoldModal.state'; @@ -98,7 +98,6 @@ export class Conversation { public readonly accessCode: ko.Observable; public readonly accessState: ko.Observable; public readonly archivedTimestamp: ko.Observable; - public readonly availabilityOfUser: ko.PureComputed; public readonly call: ko.Observable; public readonly cleared_timestamp: ko.Observable; public readonly connection: ko.Observable; @@ -126,7 +125,6 @@ export class Conversation { public readonly is_loaded: ko.Observable; public readonly is_pending: ko.Observable; public readonly is_verified: ko.PureComputed; - public readonly isMLSVerified: ko.PureComputed; public readonly is1to1: ko.PureComputed; public readonly isActiveParticipant: ko.PureComputed; public readonly isClearable: ko.PureComputed; @@ -167,8 +165,8 @@ export class Conversation { public teamId: string; public readonly type: ko.Observable; public readonly unreadState: ko.PureComputed; - public readonly verification_state: ko.Observable; - public readonly mlsVerificationState: ko.Observable; + public readonly verification_state = ko.observable(ConversationVerificationState.UNVERIFIED); + public readonly mlsVerificationState = ko.observable(ConversationVerificationState.UNVERIFIED); public readonly withAllTeamMembers: ko.Observable; public readonly hasExternal: ko.PureComputed; public readonly hasFederatedUsers: ko.PureComputed; @@ -216,7 +214,6 @@ export class Conversation { this.hasCreationMessage = false; this.firstUserEntity = ko.pureComputed(() => this.participating_user_ets()[0]); - this.availabilityOfUser = ko.pureComputed(() => this.firstUserEntity()?.availability()); this.isGuest = ko.observable(false); @@ -279,8 +276,6 @@ export class Conversation { // E2EE conversation states this.archivedState = ko.observable(false).extend({notify: 'always'}); this.mutedState = ko.observable(NOTIFICATION_STATE.EVERYTHING); - this.verification_state = ko.observable(ConversationVerificationState.UNVERIFIED); - this.mlsVerificationState = ko.observable(ConversationVerificationState.UNVERIFIED); this.archivedTimestamp = ko.observable(0); this.cleared_timestamp = ko.observable(0); @@ -327,13 +322,6 @@ export class Conversation { return this.allUserEntities().every(userEntity => userEntity.is_verified()); }); - this.isMLSVerified = ko.pureComputed(() => { - if (!this.hasInitializedUsers()) { - return undefined; - } - - return this.allUserEntities().every(userEntity => userEntity.isMLSVerified()); - }); this.legalHoldStatus = ko.observable(LegalHoldStatus.DISABLED); @@ -970,13 +958,6 @@ export class Conversation { return userEntities.filter(userEntity => !userEntity.is_verified()); } - getUsersWithUnverifiedMLSClients(): User[] { - const userEntities = this.selfUser() - ? this.participating_user_ets().concat(this.selfUser()) - : this.participating_user_ets(); - return userEntities.filter(userEntity => !userEntity.isMLSVerified()); - } - getAllUserEntities(): User[] { return this.participating_user_ets(); } diff --git a/src/script/entity/User/User.ts b/src/script/entity/User/User.ts index fcb103bd1e0..7749d1c8cb8 100644 --- a/src/script/entity/User/User.ts +++ b/src/script/entity/User/User.ts @@ -66,7 +66,6 @@ export class User { // Manual Proteus verification public readonly is_verified: ko.PureComputed; // MLS certificate verification - public readonly isMLSVerified: ko.PureComputed; public readonly isBlocked: ko.PureComputed; public readonly isCanceled: ko.PureComputed; public readonly isConnected: ko.PureComputed; @@ -209,16 +208,6 @@ export class User { } return this.devices().every(client_et => client_et.meta.isVerified?.()); }); - this.isMLSVerified = ko.pureComputed(() => { - if (this.devices().length === 0) { - if (!this.isMe) { - return false; - } - - return this.localClient?.meta.isMLSVerified?.() ?? false; - } - return this.devices().every(client_et => client_et.meta.isMLSVerified?.() ?? false); - }); this.isOnLegalHold = ko.pureComputed(() => { return this.devices().some(client_et => client_et.isLegalHold()); }); diff --git a/src/script/integration/ServiceEntity.ts b/src/script/integration/ServiceEntity.ts index 3fd0d2b0489..307d65017ad 100644 --- a/src/script/integration/ServiceEntity.ts +++ b/src/script/integration/ServiceEntity.ts @@ -36,9 +36,9 @@ export interface ServiceData { export class ServiceEntity { description: string; id: string; - mediumPictureResource: ko.Observable; + mediumPictureResource = ko.observable(); name: ko.Observable; - previewPictureResource: ko.Observable; + previewPictureResource = ko.observable(); providerId: string; providerName: ko.Observable; summary: string; @@ -56,8 +56,6 @@ export class ServiceEntity { this.summary = summary; this.tags = tags; - this.mediumPictureResource = ko.observable(); - this.previewPictureResource = ko.observable(); this.isService = true; } } diff --git a/src/script/main/app.ts b/src/script/main/app.ts index ace9c58fed0..8d8f92a4e0d 100644 --- a/src/script/main/app.ts +++ b/src/script/main/app.ts @@ -58,6 +58,7 @@ import {ConnectionRepository} from '../connection/ConnectionRepository'; import {ConnectionService} from '../connection/ConnectionService'; import {ConversationRepository} from '../conversation/ConversationRepository'; import {ConversationService} from '../conversation/ConversationService'; +import {registerMLSConversationVerificationStateHandler} from '../conversation/ConversationVerificationStateHandler'; import {MessageRepository} from '../conversation/MessageRepository'; import {CryptographyRepository} from '../cryptography/CryptographyRepository'; import {User} from '../entity/User'; @@ -370,6 +371,9 @@ export class App { if (!localClient) { throw new ClientError(CLIENT_ERROR_TYPE.NO_VALID_CLIENT, 'Client has been deleted on backend'); } + if (supportsMLS()) { + registerMLSConversationVerificationStateHandler(); + } this.core.on(CoreEvents.NEW_SESSION, ({userId, clientId}) => { const newClient = {class: ClientClassification.UNKNOWN, id: clientId}; diff --git a/src/script/page/LeftSidebar/panels/Conversations/Conversations.tsx b/src/script/page/LeftSidebar/panels/Conversations/Conversations.tsx index cfa88541912..4d2ce09b613 100644 --- a/src/script/page/LeftSidebar/panels/Conversations/Conversations.tsx +++ b/src/script/page/LeftSidebar/panels/Conversations/Conversations.tsx @@ -30,6 +30,7 @@ import {AvailabilityState} from 'Components/AvailabilityState'; import {CallingCell} from 'Components/calling/CallingCell'; import {Icon} from 'Components/Icon'; import {LegalHoldDot} from 'Components/LegalHoldDot'; +import {UserVerificationBadges} from 'Components/VerificationBadge'; import {ListState} from 'src/script/page/useAppState'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; @@ -87,19 +88,9 @@ const Conversations: React.FC = ({ }) => { const { name: userName, - availability: userAvailability, isOnLegalHold, hasPendingLegalHold, - isMLSVerified, - is_verified: isProteusVerified, - } = useKoSubscribableChildren(selfUser, [ - 'hasPendingLegalHold', - 'isOnLegalHold', - 'name', - 'availability', - 'isMLSVerified', - 'is_verified', - ]); + } = useKoSubscribableChildren(selfUser, ['hasPendingLegalHold', 'isOnLegalHold', 'name']); const {classifiedDomains} = useKoSubscribableChildren(teamState, ['classifiedDomains']); const {connectRequests} = useKoSubscribableChildren(userState, ['connectRequests']); const {activeConversation} = useKoSubscribableChildren(conversationState, ['activeConversation']); @@ -192,15 +183,9 @@ const Conversations: React.FC = ({ css={{...(showLegalHold && {gridColumn: '2/3'})}} onClick={event => AvailabilityContextMenu.show(event.nativeEvent, 'left-list-availability-menu')} > - + + + {showLegalHold && ( diff --git a/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx b/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx index 731c49f3325..da8ffed0257 100644 --- a/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/AccountPreferences.tsx @@ -27,7 +27,8 @@ import {Runtime} from '@wireapp/commons'; import {ErrorFallback} from 'Components/ErrorFallback'; import {PrimaryModal} from 'Components/Modals/PrimaryModal'; import {useEnrichedFields} from 'Components/panel/EnrichedFields'; -import {VerificationBadges} from 'src/script/components/VerificationBadges'; +import {UserVerificationBadges} from 'Components/VerificationBadge'; +import {ConversationState} from 'src/script/conversation/ConversationState'; import {ContentState} from 'src/script/page/useAppState'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; @@ -74,6 +75,7 @@ interface AccountPreferencesProps { userRepository: UserRepository; selfUser: User; isActivatedAccount?: boolean; + conversationState?: ConversationState; } const logger = getLogger('AccountPreferences'); @@ -89,26 +91,16 @@ export const AccountPreferences = ({ isActivatedAccount = false, showDomain = false, teamState = container.resolve(TeamState), + conversationState = container.resolve(ConversationState), }: AccountPreferencesProps) => { const {isTeam, teamName} = useKoSubscribableChildren(teamState, ['isTeam', 'teamName']); - const { - name, - email, - availability, - username, - managedBy, - phone, - is_verified: isVerified, - isMLSVerified, - } = useKoSubscribableChildren(selfUser, [ + const {name, email, availability, username, managedBy, phone} = useKoSubscribableChildren(selfUser, [ 'name', 'email', 'availability', 'username', 'managedBy', 'phone', - 'is_verified', - 'isMLSVerified', ]); const canEditProfile = managedBy === User.CONFIG.MANAGED_BY.WIRE; @@ -155,7 +147,7 @@ export const AccountPreferences = ({ {name} - +
    diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.test.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.test.tsx similarity index 89% rename from src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.test.tsx rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.test.tsx index d5a202d31a3..d94d3044a6b 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.test.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.test.tsx @@ -22,6 +22,7 @@ import {CONVERSATION_TYPE, ConversationProtocol} from '@wireapp/api-client/lib/c import {randomUUID} from 'crypto'; +import {withTheme} from 'src/script/auth/util/test/TestUtil'; import {ClientEntity} from 'src/script/client/ClientEntity'; import {ClientState} from 'src/script/client/ClientState'; import {ConversationState} from 'src/script/conversation/ConversationState'; @@ -29,9 +30,8 @@ import {CryptographyRepository} from 'src/script/cryptography/CryptographyReposi import {User} from 'src/script/entity/User'; import {createUuid} from 'Util/uuid'; -import {DevicesPreferences} from './DevicesPreferences'; +import {DevicesPreferences} from './DevicesPreference'; -import {E2EIHandler} from '../../../../../E2EIdentity'; import {Conversation} from '../../../../../entity/Conversation'; function createDevice(): ClientEntity { @@ -54,8 +54,6 @@ function createConversation(protocol?: ConversationProtocol, type?: CONVERSATION } describe('DevicesPreferences', () => { - const params = {discoveryUrl: 'http://example.com', gracePeriodInSeconds: 30}; - const selfProteusConversation = createConversation(ConversationProtocol.PROTEUS, CONVERSATION_TYPE.SELF); const selfMLSConversation = createConversation(ConversationProtocol.MLS, CONVERSATION_TYPE.SELF); const regularConversation = createConversation(); @@ -81,10 +79,7 @@ describe('DevicesPreferences', () => { defaultParams.conversationState.conversations([selfProteusConversation, selfMLSConversation, regularConversation]); it('displays all devices', async () => { - const instance = E2EIHandler.getInstance(params); - expect(instance).toBeInstanceOf(E2EIHandler); - - const {getByText, getAllByText} = render(); + const {getByText, getAllByText} = render(withTheme()); await waitFor(() => getByText('preferencesDevicesCurrent')); expect(getByText('preferencesDevicesCurrent')).toBeDefined(); diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx similarity index 89% rename from src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx rename to src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx index 5da8710b708..0cdb7a2f11b 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx @@ -23,6 +23,7 @@ import {QualifiedId} from '@wireapp/api-client/lib/user'; import {WireIdentity} from '@wireapp/core-crypto/platforms/web/corecrypto'; import {container} from 'tsyringe'; +import {DeviceVerificationBadges} from 'Components/VerificationBadge'; import {ClientEntity} from 'src/script/client/ClientEntity'; import {CryptographyRepository} from 'src/script/cryptography/CryptographyRepository'; import {Conversation} from 'src/script/entity/Conversation'; @@ -35,9 +36,8 @@ import {Device} from './components/Device'; import {DeviceDetailsPreferences} from './components/DeviceDetailsPreferences'; import {ClientState} from '../../../../../client/ClientState'; -import {isMLSConversation} from '../../../../../conversation/ConversationSelectors'; import {ConversationState} from '../../../../../conversation/ConversationState'; -import {E2EIHandler} from '../../../../../E2EIdentity'; +import * as e2eIdentity from '../../../../../E2EIdentity'; import {PreferencesPage} from '../components/PreferencesPage'; interface DevicesPreferencesProps { @@ -65,12 +65,7 @@ export const DevicesPreferences: React.FC = ({ const {devices} = useKoSubscribableChildren(selfUser, ['devices']); const currentClient = clientState.currentClient; - const isSelfClientVerified = React.useMemo(() => { - if (!currentClient) { - return false; - } - return !!currentClient?.meta.isMLSVerified?.(); - }, [currentClient]); + const isSelfClientVerified = false; const isSSO = selfUser.isNoPasswordSSO; const getFingerprint = (device: ClientEntity) => @@ -80,9 +75,20 @@ export const DevicesPreferences: React.FC = ({ void cryptographyRepository.getLocalFingerprint().then(setLocalFingerprint); }, [cryptographyRepository]); + const renderDeviceBadges = (device: ClientEntity) => { + return ( + + ); + }; + if (selectedDevice) { return ( = ({ ); } - const e2eiIdentity = E2EIHandler.getInstance(); - const certificate = e2eiIdentity.getCertificateData(); + const certificate = e2eIdentity.getCertificateData(); const selectDevice = async (device: ClientEntity, deviceIdentity?: WireIdentity) => { setSelectedDevice(device); @@ -113,12 +118,12 @@ export const DevicesPreferences: React.FC = ({ const getDeviceIdentity = async (deviceId: string) => { const selfConversation = conversationState?.getSelfMLSConversation(); - if (!isMLSConversation(selfConversation)) { + if (!selfConversation) { return null; } const groupId = selfConversation.groupId; - return e2eiIdentity.getUserDeviceEntities(groupId, {[deviceId]: selfUser}); + return e2eIdentity.getUserDeviceEntities(groupId, {[deviceId]: selfUser}); }; return ( diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx index 2e1f510dc85..ac2bc15c6a3 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx @@ -20,13 +20,12 @@ import React from 'react'; import {ClientEntity, MLSPublicKeys} from 'src/script/client/ClientEntity'; -import {VerificationBadges} from 'src/script/components/VerificationBadges'; -import {getCertificateDetails, getCertificateState} from 'Util/certificateDetails'; import {MLSDeviceDetails} from './MLSDeviceDetails'; import {ProteusDeviceDetails} from './ProteusDeviceDetails'; export interface DeviceProps { + renderDeviceBadges?: (device: ClientEntity) => React.ReactNode; device: ClientEntity; fingerprint: string; showVerificationStatus?: boolean; @@ -36,6 +35,7 @@ export interface DeviceProps { } export const DetailedDevice: React.FC = ({ + renderDeviceBadges, device, fingerprint, showVerificationStatus = true, @@ -44,20 +44,12 @@ export const DetailedDevice: React.FC = ({ isProteusVerified = false, }) => { const mlsFingerprint = device.mlsPublicKeys?.[MLSPublicKeys.ED25519]; - const {isNotDownloaded, isValid, isExpireSoon} = getCertificateDetails(certificate); - const certificateState = getCertificateState({isNotDownloaded, isValid, isExpireSoon}); return ( <>

    {device.model} - - {/* Badges to display: None, Proteus, MLS (Valid), MLS (Not Activated), MLS (Expires Soon), MLS (Expired), , MLS (Revoked) */} - + {renderDeviceBadges?.(device)}

    {mlsFingerprint && ( diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx index b2950e8a7ab..7a82894dd56 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx @@ -24,7 +24,7 @@ import {TabIndex} from '@wireapp/react-ui-kit/lib/types/enums'; import {WireIdentity} from '@wireapp/core-crypto'; import {Icon} from 'Components/Icon'; -import {VerificationBadges} from 'Components/VerificationBadges'; +import {VerificationBadges} from 'Components/VerificationBadge'; import {getCertificateDetails, getCertificateState} from 'Util/certificateDetails'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {handleKeyDown} from 'Util/KeyboardUtil'; @@ -90,11 +90,7 @@ export const Device = ({device, isSSO, onSelect, onRemove, deviceNumber, getDevi > {device.getName()} - +
    {mlsFingerprint && ( diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.test.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.test.tsx index 153e662b0a5..161268dafb4 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.test.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.test.tsx @@ -35,7 +35,7 @@ describe('DeviceDetailsPreferences', () => { onClose: jest.fn(), onRemove: jest.fn(), onResetSession: jest.fn().mockResolvedValue(undefined), - onVerify: jest.fn((_, isVerified) => device.meta.isVerified(isVerified)), + onVerify: jest.fn((_, isVerified) => device.meta?.isVerified(isVerified)), }; it('shows device details', async () => { const {getByText, getAllByText} = render(withTheme()); diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx index c27211fb4c0..17c13c30607 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx @@ -33,6 +33,7 @@ import {DetailedDevice} from '../DetailedDevice'; interface DevicesPreferencesProps { device: ClientEntity; + renderDeviceBadges?: (device: ClientEntity) => React.ReactNode; getFingerprint: (device: ClientEntity) => Promise; onClose: () => void; onRemove: (device: ClientEntity) => void; @@ -49,6 +50,7 @@ enum SessionResetState { export const DeviceDetailsPreferences: React.FC = ({ device, + renderDeviceBadges, getFingerprint, onVerify, onRemove, @@ -93,12 +95,12 @@ export const DeviceDetailsPreferences: React.FC = ({
    diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts index ea2abdb020a..9fbf6d4dba2 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts @@ -19,7 +19,7 @@ import {CSSObject} from '@emotion/serialize'; -import {MLSStatuses} from 'Components/VerificationBadges'; +import {MLSStatuses} from 'Components/VerificationBadge'; const MLSStatusColor = { [MLSStatuses.VALID]: 'var(--green-500)', diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx index 9d97292e956..3a994573e5f 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx @@ -20,7 +20,7 @@ import * as x509 from '@peculiar/x509'; import {render} from '@testing-library/react'; -import {MLSStatuses} from 'Components/VerificationBadges'; +import {MLSStatuses} from 'Components/VerificationBadge'; import {withTheme} from 'src/script/auth/util/test/TestUtil'; import {E2EICertificateDetails} from './E2EICertificateDetails'; @@ -52,7 +52,6 @@ const certificateGenerator = async (notBefore: Date, notAfter: Date) => { }; describe('E2EICertificateDetails', () => { - const isMLSVerified = true; const currentDate = new Date(); it('is e2ei identity verified', async () => { @@ -61,16 +60,14 @@ describe('E2EICertificateDetails', () => { const generatedCertificate = await certificateGenerator(yesterday, followingDay); - const {getByTestId} = render( - withTheme(), - ); + const {getByTestId} = render(withTheme()); const E2EIdentityStatus = getByTestId('e2ei-identity-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.VALID); }); it('is e2ei identity not downloaded', async () => { - const {getByTestId} = render(withTheme()); + const {getByTestId} = render(withTheme()); const E2EIdentityStatus = getByTestId('e2ei-identity-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.NOT_DOWNLOADED); @@ -82,9 +79,7 @@ describe('E2EICertificateDetails', () => { const generatedCertificate = await certificateGenerator(yesterday, followingDay); - const {getByTestId} = render( - withTheme(), - ); + const {getByTestId} = render(withTheme()); const E2EIdentityStatus = getByTestId('e2ei-identity-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.EXPIRED); diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx index 0cf98c735c2..ead8b773f26 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx @@ -22,7 +22,7 @@ import {useState} from 'react'; import {Button, ButtonVariant} from '@wireapp/react-ui-kit'; import {CertificateDetailsModal} from 'Components/Modals/CertificateDetailsModal'; -import {VerificationBadges} from 'Components/VerificationBadges'; +import {VerificationBadges} from 'Components/VerificationBadge'; import {E2EIHandler} from 'src/script/E2EIdentity'; import {getCertificateDetails, getCertificateState} from 'Util/certificateDetails'; import {t} from 'Util/LocalizerUtil'; @@ -34,15 +34,10 @@ const logger = getLogger('E2EICertificateDetails'); interface E2EICertificateDetailsProps { certificate?: string; - isMLSVerified?: boolean; isOtherDevice?: boolean; } -export const E2EICertificateDetails = ({ - certificate, - isMLSVerified, - isOtherDevice = false, -}: E2EICertificateDetailsProps) => { +export const E2EICertificateDetails = ({certificate, isOtherDevice = false}: E2EICertificateDetailsProps) => { const [isCertificateDetailsModalOpen, setIsCertificateDetailsModalOpen] = useState(false); const {isNotDownloaded, isValid, isExpireSoon} = getCertificateDetails(certificate); @@ -57,7 +52,7 @@ export const E2EICertificateDetails = ({ try { const e2eHandler = E2EIHandler.getInstance(); - await e2eHandler.enrollE2EI(); + await e2eHandler.enrol(); } catch (error) { logger.error('Cannot get E2EI instance: ', error); } @@ -73,7 +68,7 @@ export const E2EICertificateDetails = ({ {t(`E2EI.${certificateState}`)}

    - +
    diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx index 20f9585b270..1032fb69f13 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx @@ -29,18 +29,12 @@ import {E2EICertificateDetails} from '../E2EICertificateDetails'; import {FormattedId} from '../FormattedId'; interface MLSDeviceDetailsProps { - isMLSVerified?: boolean; fingerprint: string; isOtherDevice?: boolean; certificate?: string; } -export const MLSDeviceDetails = ({ - fingerprint, - isMLSVerified = true, - isOtherDevice = false, - certificate, -}: MLSDeviceDetailsProps) => { +export const MLSDeviceDetails = ({fingerprint, isOtherDevice = false, certificate}: MLSDeviceDetailsProps) => { const isE2EIEnabled = supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; return ( @@ -53,9 +47,7 @@ export const MLSDeviceDetails = ({

    - {isE2EIEnabled && ( - - )} + {isE2EIEnabled && }
    ); }; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx index cee12cac36a..9c5c52d5cf9 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx @@ -17,7 +17,7 @@ * */ -import {VerificationBadges} from 'src/script/components/VerificationBadges'; +import {VerificationBadges} from 'Components/VerificationBadge'; import {t} from 'Util/LocalizerUtil'; import {splitFingerprint} from 'Util/StringUtil'; import {formatTimestamp} from 'Util/TimeUtil'; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/index.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/index.ts index 9a9777cafe3..5e56f57b0a3 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/index.ts +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/index.ts @@ -17,4 +17,4 @@ * */ -export * from './DevicesPreferences'; +export * from './DevicesPreference'; diff --git a/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx b/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx index 59666200084..40aca92a734 100644 --- a/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx +++ b/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx @@ -65,6 +65,7 @@ const CONFIG = { interface ConversationDetailsProps { onClose?: () => void; + renderParticipantBadges?: (user: User) => React.ReactNode; togglePanel?: (panel: PanelState, entity: PanelEntity, addMode?: boolean, direction?: 'left' | 'right') => void; actionsViewModel: ActionsViewModel; activeConversation: Conversation; @@ -82,6 +83,7 @@ const ConversationDetails = forwardRef { onClose = () => {}, togglePanel = () => {}, + renderParticipantBadges, actionsViewModel, activeConversation, conversationRepository, @@ -152,11 +154,7 @@ const ConversationDetails = forwardRef 'team', ]); - const { - is_verified: isSelfVerified, - teamRole, - isActivatedAccount, - } = useKoSubscribableChildren(selfUser, ['is_verified', 'teamRole', 'isActivatedAccount']); + const {teamRole, isActivatedAccount} = useKoSubscribableChildren(selfUser, ['teamRole', 'isActivatedAccount']); const isActiveGroupParticipant = isGroup && !removedFromConversation; @@ -308,9 +306,9 @@ const ConversationDetails = forwardRef {isSingleUserMode && !isServiceMode && firstParticipant && ( <> @@ -359,6 +357,7 @@ const ConversationDetails = forwardRef {isGroup && !!userParticipants.length && ( <> = ({ isTeam = false, conversation, }) => { - const { - isGroup, - display_name: displayName, - verification_state: verificationState, - mlsVerificationState, - } = useKoSubscribableChildren(conversation, [ - 'isGroup', - 'display_name', - 'verification_state', - 'mlsVerificationState', - ]); + const {isGroup, display_name: displayName} = useKoSubscribableChildren(conversation, ['isGroup', 'display_name']); const textAreaRef = useRef(null); const isEditGroupNameTouched = useRef(false); @@ -161,12 +150,7 @@ const ConversationDetailsHeader: FC = ({ /> )} - + ) : (
    diff --git a/src/script/page/RightSidebar/ConversationParticipants/ConversationParticipants.tsx b/src/script/page/RightSidebar/ConversationParticipants/ConversationParticipants.tsx index 65ded3f7d2b..581af6df9d0 100644 --- a/src/script/page/RightSidebar/ConversationParticipants/ConversationParticipants.tsx +++ b/src/script/page/RightSidebar/ConversationParticipants/ConversationParticipants.tsx @@ -37,6 +37,7 @@ import {PanelEntity, PanelState} from '../RightSidebar'; interface ConversationParticipantsProps { activeConversation: Conversation; + renderParticipantBadges?: (user: User) => React.ReactNode; conversationRepository: ConversationRepository; searchRepository: SearchRepository; teamRepository: TeamRepository; @@ -55,6 +56,7 @@ const ConversationParticipants: FC = ({ onClose, onBack, highlightedUsers, + renderParticipantBadges, }) => { const [searchInput, setSearchInput] = useState(''); @@ -102,6 +104,7 @@ const ConversationParticipants: FC = ({ void; showDevices: (entity: User) => void; goToRoot: () => void; + renderParticipantBadges?: (user: User) => React.ReactNode; currentUser: User; actionsViewModel: ActionsViewModel; activeConversation: Conversation; @@ -66,6 +67,7 @@ const GroupParticipantUser: FC = ({ onClose, goToRoot, showDevices, + renderParticipantBadges, currentUser, actionsViewModel, activeConversation, @@ -82,10 +84,7 @@ const GroupParticipantUser: FC = ({ 'isTeam', 'team', ]); - const {is_verified: isSelfVerified, isActivatedAccount} = useKoSubscribableChildren(selfUser, [ - 'is_verified', - 'isActivatedAccount', - ]); + const {isActivatedAccount} = useKoSubscribableChildren(selfUser, ['isActivatedAccount']); const canChangeRole = conversationRoleRepository.canChangeParticipantRoles(activeConversation) && !currentUser.isMe && !isTemporaryGuest; @@ -149,10 +148,10 @@ const GroupParticipantUser: FC = ({ diff --git a/src/script/page/RightSidebar/ParticipantDevices/ParticipantDevices.tsx b/src/script/page/RightSidebar/ParticipantDevices/ParticipantDevices.tsx index 221e1925c36..f50b8528b7f 100644 --- a/src/script/page/RightSidebar/ParticipantDevices/ParticipantDevices.tsx +++ b/src/script/page/RightSidebar/ParticipantDevices/ParticipantDevices.tsx @@ -19,8 +19,11 @@ import {FC} from 'react'; +import {QualifiedId} from '@wireapp/api-client/lib/user'; + import {FadingScrollbar} from 'Components/FadingScrollbar'; import {UserDevices, UserDevicesState, useUserDevicesHistory} from 'Components/UserDevices'; +import {ClientEntity} from 'src/script/client'; import {t} from 'Util/LocalizerUtil'; import type {User} from '../../../entity/User'; @@ -30,11 +33,18 @@ import {PanelHeader} from '../PanelHeader'; interface ParticipantDevicesProps { onClose: () => void; onGoBack: (userEntity: User) => void; + renderDeviceBadges: (device: ClientEntity, userId: QualifiedId) => React.ReactNode; repositories: ViewModelRepositories; user: User; } -const ParticipantDevices: FC = ({repositories, onClose, onGoBack, user}) => { +const ParticipantDevices: FC = ({ + repositories, + onClose, + onGoBack, + renderDeviceBadges, + user, +}) => { const history = useUserDevicesHistory(); return ( @@ -57,6 +67,7 @@ const ParticipantDevices: FC = ({repositories, onClose, = ({ const containerRef = useCallback((element: HTMLDivElement | null) => element?.focus(), [currentState]); + const renderParticipantsBadges = (participant: User) => { + return ; + }; + + const renderDeviceBadges = (device: ClientEntity, userId: QualifiedId) => { + return ; + }; + if (!activeConversation) { return null; } @@ -199,6 +210,7 @@ const RightSidebar: FC = ({ {currentState === PanelState.CONVERSATION_DETAILS && ( = ({ {currentState === PanelState.GROUP_PARTICIPANT_USER && userEntity && ( = ({ {currentState === PanelState.PARTICIPANT_DEVICES && userEntity && ( = ({ {currentState === PanelState.CONVERSATION_PARTICIPANTS && ( Date: Wed, 15 Nov 2023 15:15:45 +0100 Subject: [PATCH 54/95] fix spelling of enroll --- .../E2EIdentity/DelayTimer/DelayTimer.ts | 2 +- src/script/E2EIdentity/E2EIdentity.test.ts | 22 +++++++++---------- ...yEnrolment.ts => E2EIdentityEnrollment.ts} | 16 +++++++------- src/script/E2EIdentity/Modals/Modals.test.ts | 10 ++++----- src/script/E2EIdentity/Modals/Modals.ts | 4 ++-- src/script/E2EIdentity/index.ts | 2 +- .../E2EICertificateDetails.tsx | 2 +- 7 files changed, 29 insertions(+), 29 deletions(-) rename src/script/E2EIdentity/{E2EIdentityEnrolment.ts => E2EIdentityEnrollment.ts} (96%) diff --git a/src/script/E2EIdentity/DelayTimer/DelayTimer.ts b/src/script/E2EIdentity/DelayTimer/DelayTimer.ts index 723782bc326..6fd68e1a2fa 100644 --- a/src/script/E2EIdentity/DelayTimer/DelayTimer.ts +++ b/src/script/E2EIdentity/DelayTimer/DelayTimer.ts @@ -124,7 +124,7 @@ class DelayTimerService { } /** - * Prompt the user to delay the enrolment + * Prompt the user to delay the enrollment */ public delayPrompt() { if (this.isDelayTimerActive()) { diff --git a/src/script/E2EIdentity/E2EIdentity.test.ts b/src/script/E2EIdentity/E2EIdentity.test.ts index 112c45ffc38..3e5d426248e 100644 --- a/src/script/E2EIdentity/E2EIdentity.test.ts +++ b/src/script/E2EIdentity/E2EIdentity.test.ts @@ -26,7 +26,7 @@ import {Core} from 'src/script/service/CoreSingleton'; import {UserState} from 'src/script/user/UserState'; import * as util from 'Util/util'; -import {E2EIHandler, E2EIHandlerStep} from './E2EIdentityEnrolment'; +import {E2EIHandler, E2EIHandlerStep} from './E2EIdentityEnrollment'; import {getModalOptions, ModalType} from './Modals'; import {OIDCService} from './OIDCService/OIDCService'; @@ -45,7 +45,7 @@ jest.mock('./Modals', () => ({ LOADING: 'loading', SUCCESS: 'success', ERROR: 'error', - ENROL: 'enrol', + ENROLL: 'enroll', }, })); @@ -128,7 +128,7 @@ describe('E2EIHandler', () => { expect(instance['currentStep']).toBe(E2EIHandlerStep.INITIALIZED); }); - it('should set currentStep to SUCCESS when enrolE2EI is called and enrolment succeeds', async () => { + it('should set currentStep to SUCCESS when enrollE2EI is called and enrollment succeeds', async () => { jest .spyOn(container.resolve(UserState), 'self') .mockReturnValue({name: () => 'John Doe', username: () => 'johndoe'}); @@ -136,7 +136,7 @@ describe('E2EIHandler', () => { jest.spyOn(container.resolve(Core), 'enrollE2EI').mockResolvedValueOnce(true); const instance = E2EIHandler.getInstance(params); - await instance['enrol'](); + await instance['enroll'](); expect(instance['currentStep']).toBe(E2EIHandlerStep.SUCCESS); }); @@ -147,7 +147,7 @@ describe('E2EIHandler', () => { jest.spyOn(container.resolve(UserState), 'self').mockImplementationOnce(() => user); const instance = E2EIHandler.getInstance(params); - await instance['enrol'](); + await instance['enroll'](); expect(instance['currentStep']).toBe(E2EIHandlerStep.ERROR); }); @@ -156,14 +156,14 @@ describe('E2EIHandler', () => { await handler.initialize(); expect(getModalOptions).toHaveBeenCalledWith( expect.objectContaining({ - type: ModalType.ENROL, + type: ModalType.ENROLL, }), ); }); it('should display loading message when enroled', async () => { const handler = E2EIHandler.getInstance(params); - await handler['enrol'](); + await handler['enroll'](); expect(getModalOptions).toHaveBeenCalledWith( expect.objectContaining({ type: ModalType.LOADING, @@ -171,12 +171,12 @@ describe('E2EIHandler', () => { ); }); - it('should display success message when enrolment is done', async () => { + it('should display success message when enrollment is done', async () => { jest.spyOn(container.resolve(Core), 'enrollE2EI').mockResolvedValueOnce(true); const handler = E2EIHandler.getInstance(params); handler['showLoadingMessage'] = jest.fn(); - await handler['enrol'](); + await handler['enroll'](); expect(getModalOptions).toHaveBeenCalledWith( expect.objectContaining({ type: ModalType.SUCCESS, @@ -184,12 +184,12 @@ describe('E2EIHandler', () => { ); }); - it('should display error message when enrolment fails', async () => { + it('should display error message when enrollment fails', async () => { jest.spyOn(container.resolve(Core), 'enrollE2EI').mockRejectedValueOnce(false); const handler = E2EIHandler.getInstance(params); handler['showLoadingMessage'] = jest.fn(); - await handler['enrol'](); + await handler['enroll'](); expect(getModalOptions).toHaveBeenCalledWith( expect.objectContaining({ type: ModalType.ERROR, diff --git a/src/script/E2EIdentity/E2EIdentityEnrolment.ts b/src/script/E2EIdentity/E2EIdentityEnrollment.ts similarity index 96% rename from src/script/E2EIdentity/E2EIdentityEnrolment.ts rename to src/script/E2EIdentity/E2EIdentityEnrollment.ts index 3582a6eb3dc..e9860f3a666 100644 --- a/src/script/E2EIdentity/E2EIdentityEnrolment.ts +++ b/src/script/E2EIdentity/E2EIdentityEnrollment.ts @@ -36,7 +36,7 @@ import {OIDCServiceStore} from './OIDCService/OIDCServiceStorage'; export enum E2EIHandlerStep { UNINITIALIZED = 'uninitialized', INITIALIZED = 'initialized', - ENROL = 'enrol', + ENROLL = 'enroll', SUCCESS = 'success', ERROR = 'error', SNOOZE = 'snooze', @@ -134,10 +134,10 @@ export class E2EIHandler { await oidcService.authenticate(); } - public async enrol() { + public async enroll() { try { // Notify user about E2EI enrolment in progress - this.currentStep = E2EIHandlerStep.ENROL; + this.currentStep = E2EIHandlerStep.ENROLL; this.showLoadingMessage(); let oAuthIdToken: string | undefined; @@ -188,7 +188,7 @@ export class E2EIHandler { } private showLoadingMessage(): void { - if (this.currentStep !== E2EIHandlerStep.ENROL) { + if (this.currentStep !== E2EIHandlerStep.ENROLL) { return; } @@ -230,7 +230,7 @@ export class E2EIHandler { hideClose: true, primaryActionFn: () => { this.currentStep = E2EIHandlerStep.INITIALIZED; - void this.enrol(); + void this.enroll(); }, secondaryActionFn: () => { this.showE2EINotificationMessage(); @@ -244,7 +244,7 @@ export class E2EIHandler { // If the user has already started enrolment, don't show the notification. Instead, show the loading modal // This will occur after the redirect from the oauth provider if (this.coreE2EIService.isEnrollmentInProgress()) { - void this.enrol(); + void this.enroll(); return; } @@ -271,12 +271,12 @@ export class E2EIHandler { if (!this.timer.isDelayTimerActive()) { const {modalOptions, modalType} = getModalOptions({ hideSecondary: !this.timer.isSnoozeTimeAvailable(), - primaryActionFn: () => this.enrol(), + primaryActionFn: () => this.enroll(), secondaryActionFn: () => { this.currentStep = E2EIHandlerStep.SNOOZE; this.timer.delayPrompt(); }, - type: ModalType.ENROL, + type: ModalType.ENROLL, hideClose: true, }); PrimaryModal.show(modalType, modalOptions); diff --git a/src/script/E2EIdentity/Modals/Modals.test.ts b/src/script/E2EIdentity/Modals/Modals.test.ts index 8eb202fb599..f9f26971b61 100644 --- a/src/script/E2EIdentity/Modals/Modals.test.ts +++ b/src/script/E2EIdentity/Modals/Modals.test.ts @@ -23,34 +23,34 @@ import {getModalOptions, ModalType} from './Modals'; describe('getModalOptions', () => { it('should return modal options with hidden secondary action when hideSecondary is true', () => { - const options = getModalOptions({type: ModalType.ENROL, hideSecondary: true}); + const options = getModalOptions({type: ModalType.ENROLL, hideSecondary: true}); expect(options.modalOptions.secondaryAction).toBeUndefined(); expect(options.modalType).toEqual(PrimaryModal.type.ACKNOWLEDGE); }); it('should return modal options with hidden secondary action when secondaryActionFn is not provided', () => { - const options = getModalOptions({type: ModalType.ENROL, secondaryActionFn: undefined}); + const options = getModalOptions({type: ModalType.ENROLL, secondaryActionFn: undefined}); expect(options.modalOptions.secondaryAction).toBeUndefined(); expect(options.modalType).toEqual(PrimaryModal.type.ACKNOWLEDGE); }); it('should return modal options with hidden primary action when hidePrimary is true', () => { - const options = getModalOptions({type: ModalType.ENROL, hidePrimary: true}); + const options = getModalOptions({type: ModalType.ENROLL, hidePrimary: true}); expect(options.modalOptions.primaryAction).toBeUndefined(); }); it('should return modal options with hidden close button when hideClose is true', () => { - const options = getModalOptions({type: ModalType.ENROL, hideClose: true}); + const options = getModalOptions({type: ModalType.ENROLL, hideClose: true}); expect(options.modalOptions.hideCloseBtn).toBeTruthy(); expect(options.modalOptions.preventClose).toBeTruthy(); }); it('should return modal options with hidden secondary and primary actions when both hideSecondary and hidePrimary are true', () => { - const options = getModalOptions({type: ModalType.ENROL, hideSecondary: true, hidePrimary: true}); + const options = getModalOptions({type: ModalType.ENROLL, hideSecondary: true, hidePrimary: true}); expect(options.modalOptions.secondaryAction).toBeUndefined(); expect(options.modalOptions.primaryAction).toBeUndefined(); diff --git a/src/script/E2EIdentity/Modals/Modals.ts b/src/script/E2EIdentity/Modals/Modals.ts index 37720d068ac..d422b592466 100644 --- a/src/script/E2EIdentity/Modals/Modals.ts +++ b/src/script/E2EIdentity/Modals/Modals.ts @@ -25,7 +25,7 @@ const hideSecondaryBtn = {hideSecondary: true}; const hideCloseBtn = {hideCloseBtn: true, preventClose: true}; export enum ModalType { - ENROL = 'enrol', + ENROLL = 'enroll', ERROR = 'error', SUCCESS = 'success', LOADING = 'loading', @@ -53,7 +53,7 @@ export const getModalOptions = ({ let options: ModalOptions = {}; let modalType: PrimaryModalType = PrimaryModal.type.CONFIRM; switch (type) { - case ModalType.ENROL: + case ModalType.ENROLL: options = { text: { closeBtnLabel: t('acme.settingsChanged.button.close'), diff --git a/src/script/E2EIdentity/index.ts b/src/script/E2EIdentity/index.ts index 2d41de7f8da..d306feaa5c7 100644 --- a/src/script/E2EIdentity/index.ts +++ b/src/script/E2EIdentity/index.ts @@ -17,5 +17,5 @@ * */ -export * from './E2EIdentityEnrolment'; +export * from './E2EIdentityEnrollment'; export * from './E2EIdentity'; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx index ead8b773f26..b661c76a525 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx @@ -52,7 +52,7 @@ export const E2EICertificateDetails = ({certificate, isOtherDevice = false}: E2E try { const e2eHandler = E2EIHandler.getInstance(); - await e2eHandler.enrol(); + await e2eHandler.enroll(); } catch (error) { logger.error('Cannot get E2EI instance: ', error); } From b818705d8954beb072f8eaace740a916ecb11186 Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Wed, 15 Nov 2023 17:56:49 +0100 Subject: [PATCH 55/95] refactor: Use corecrypto to get devices verification state (#16220) --- src/script/E2EIdentity/E2EIdentity.ts | 15 ++++--- src/script/components/UserDevices.tsx | 4 +- .../VerificationBadge/VerificationBadges.tsx | 7 ++- .../components/userDevices/DeviceDetails.tsx | 23 +++++----- .../DevicesPreferences/DevicesPreference.tsx | 44 +++++++------------ .../components/DetailedDevice.tsx | 14 +++--- .../components/Device/Device.tsx | 26 +++-------- .../DeviceDetailsPreferences.test.tsx | 1 + .../DeviceDetailsPreferences.tsx | 9 ++-- .../E2EICertificateDetails.tsx | 32 +++++++------- .../MLSDeviceDetails/MLSDeviceDetails.tsx | 14 ++++-- .../components/ProteusDeviceDetails.tsx | 2 +- 12 files changed, 88 insertions(+), 103 deletions(-) diff --git a/src/script/E2EIdentity/E2EIdentity.ts b/src/script/E2EIdentity/E2EIdentity.ts index bc2379cf37f..17a6e922b13 100644 --- a/src/script/E2EIdentity/E2EIdentity.ts +++ b/src/script/E2EIdentity/E2EIdentity.ts @@ -27,16 +27,19 @@ export function getE2EIdentityService() { return container.resolve(Core).service?.e2eIdentity; } +export async function getDeviceIdentity(groupId: string, userId: QualifiedId, deviceId: string) { + const identities = await getE2EIdentityService()?.getUserDeviceEntities(groupId, {[deviceId]: userId}); + return identities?.[0]; +} /** * @param groupId id of the group * @param clientIdsWithUser client ids with user data * Returns devices E2EI certificates */ -export async function getUserDeviceEntities( - groupId: string | Uint8Array, - clientIdsWithUser: Record, -) { - return getE2EIdentityService()?.getUserDeviceEntities(groupId, clientIdsWithUser); +export async function getDeviceVerificationState(groupId: string, userId: QualifiedId, deviceId: string) { + const identity = await getDeviceIdentity(groupId, userId, deviceId); + // @fixme: soon coreCrypto will return a `isValid` property. Use this one to check for validity + return identity ? 'verified' : 'unverified'; } export async function getConversationState(groupId: string) { @@ -52,7 +55,7 @@ export function hasActiveCertificate() { /** * returns E2EI certificate data. */ -export function getCertificateData() { +export function getCurrentDeviceCertificateData() { if (!hasActiveCertificate()) { return undefined; } diff --git a/src/script/components/UserDevices.tsx b/src/script/components/UserDevices.tsx index f49eabe96ca..2db865e0e97 100644 --- a/src/script/components/UserDevices.tsx +++ b/src/script/components/UserDevices.tsx @@ -148,7 +148,7 @@ const UserDevices: React.FC = ({ {showDeviceList && deviceMode === FIND_MODE.NOT_FOUND && } - {current.state === UserDevicesState.DEVICE_DETAILS && ( + {current.state === UserDevicesState.DEVICE_DETAILS && selectedClient && ( = ({ logger, messageRepository, noPadding, - selectedClient, + device: selectedClient, user, }} /> diff --git a/src/script/components/VerificationBadge/VerificationBadges.tsx b/src/script/components/VerificationBadge/VerificationBadges.tsx index 0ee6af1ce7a..d90f92617eb 100644 --- a/src/script/components/VerificationBadge/VerificationBadges.tsx +++ b/src/script/components/VerificationBadge/VerificationBadges.tsx @@ -32,7 +32,7 @@ import { import {ClientEntity} from 'src/script/client'; import {ConversationVerificationState} from 'src/script/conversation/ConversationVerificationState'; -import {getUserDeviceEntities} from 'src/script/E2EIdentity'; +import {getDeviceVerificationState} from 'src/script/E2EIdentity'; import {Conversation} from 'src/script/entity/Conversation'; import {User} from 'src/script/entity/User'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; @@ -97,9 +97,8 @@ export const DeviceVerificationBadges = ({ useEffect(() => { if (groupId) { void (async () => { - const identities = await getUserDeviceEntities(groupId, {[device.id]: userId}); - // TODO, soon coreCrypto will return a `isValid` property. Use this one to check for validity - setIsMLSVerified(!!identities?.length); + const verificationState = await getDeviceVerificationState(groupId, userId, device.id); + setIsMLSVerified(verificationState === 'verified'); })(); } }); diff --git a/src/script/components/userDevices/DeviceDetails.tsx b/src/script/components/userDevices/DeviceDetails.tsx index bdb30b90a8b..a7439f3ec59 100644 --- a/src/script/components/userDevices/DeviceDetails.tsx +++ b/src/script/components/userDevices/DeviceDetails.tsx @@ -32,7 +32,6 @@ import type {Logger} from 'Util/Logger'; import {splitFingerprint} from 'Util/StringUtil'; import type {ClientRepository, ClientEntity} from '../../client'; -import {MLSPublicKeys} from '../../client'; import {Config} from '../../Config'; import {ConversationState} from '../../conversation/ConversationState'; import type {MessageRepository} from '../../conversation/MessageRepository'; @@ -40,7 +39,6 @@ import type {CryptographyRepository} from '../../cryptography/CryptographyReposi import type {User} from '../../entity/User'; import {MotionDuration} from '../../motion/MotionDuration'; import {FormattedId} from '../../page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId'; -import {MLSDeviceDetails} from '../../page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails'; interface DeviceDetailsProps { clickToShowSelfFingerprint: () => void; @@ -50,12 +48,12 @@ interface DeviceDetailsProps { logger: Logger; messageRepository: MessageRepository; noPadding: boolean; - selectedClient?: ClientEntity; + device: ClientEntity; user: User; } export const DeviceDetails = ({ - selectedClient, + device, cryptographyRepository, user, clickToShowSelfFingerprint, @@ -68,24 +66,24 @@ export const DeviceDetails = ({ const [fingerprintRemote, setFingerprintRemote] = useState(); const [isResettingSession, setIsResettingSession] = useState(false); - const clientMeta = useMemo(() => selectedClient?.meta, [selectedClient]); + const clientMeta = useMemo(() => device?.meta, [device]); const {isVerified} = useKoSubscribableChildren(clientMeta, ['isVerified']); const {name: userName} = useKoSubscribableChildren(user, ['name']); useEffect(() => { setFingerprintRemote(undefined); - if (selectedClient) { + if (device) { void cryptographyRepository - .getRemoteFingerprint(user.qualifiedId, selectedClient.id) + .getRemoteFingerprint(user.qualifiedId, device.id) .then(remoteFingerprint => setFingerprintRemote(remoteFingerprint)); } - }, [selectedClient]); + }, [device]); const clickToToggleDeviceVerification = () => { const toggleVerified = !isVerified; clientRepository - .verifyClient(user.qualifiedId, selectedClient, toggleVerified) + .verifyClient(user.qualifiedId, device, toggleVerified) .catch((error: DexieError) => logger.warn(`Failed to toggle client verification: ${error.message}`)); }; @@ -97,7 +95,7 @@ export const DeviceDetails = ({ setIsResettingSession(true); if (conversation) { messageRepository - .resetSession(user.qualifiedId, selectedClient.id, conversation) + .resetSession(user.qualifiedId, device.id, conversation) .then(_resetProgress) .catch(_resetProgress); } @@ -105,11 +103,12 @@ export const DeviceDetails = ({ const activeConversation = conversationState.activeConversation(); const isConversationMLS = activeConversation && isMLSConversation(activeConversation); - const mlsFingerprint = selectedClient.mlsPublicKeys?.[MLSPublicKeys.ED25519]; return (
    - {mlsFingerprint && } + {/* + TODO get the fingerprint from CoreCrypto (?) + mlsFingerprint && */}

    {t('participantDevicesProteusDeviceVerification')}

    diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx index 0cdb7a2f11b..ac7065fde9e 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx @@ -20,7 +20,6 @@ import React, {useEffect, useState} from 'react'; import {QualifiedId} from '@wireapp/api-client/lib/user'; -import {WireIdentity} from '@wireapp/core-crypto/platforms/web/corecrypto'; import {container} from 'tsyringe'; import {DeviceVerificationBadges} from 'Components/VerificationBadge'; @@ -60,7 +59,6 @@ export const DevicesPreferences: React.FC = ({ resetSession, }) => { const [selectedDevice, setSelectedDevice] = useState(); - const [selectedDeviceIdentity, setSelectedDeviceIdentity] = useState(); const [localFingerprint, setLocalFingerprint] = useState(''); const {devices} = useKoSubscribableChildren(selfUser, ['devices']); @@ -85,12 +83,24 @@ export const DevicesPreferences: React.FC = ({ ); }; + const getDeviceCertificate = async (deviceId: string) => { + if (deviceId === currentClient?.id) { + return e2eIdentity.getCurrentDeviceCertificateData(); + } + const selfConversation = conversationState.selfMLSConversation(); + if (!selfConversation) { + return undefined; + } + const identity = await e2eIdentity.getDeviceIdentity(selfConversation.groupId, selfUser.qualifiedId, deviceId); + return identity?.certificate; + }; + if (selectedDevice) { return ( { await removeDevice(device); @@ -105,36 +115,16 @@ export const DevicesPreferences: React.FC = ({ ); } - const certificate = e2eIdentity.getCertificateData(); - - const selectDevice = async (device: ClientEntity, deviceIdentity?: WireIdentity) => { - setSelectedDevice(device); - - if (deviceIdentity) { - setSelectedDeviceIdentity(deviceIdentity); - } - }; - - const getDeviceIdentity = async (deviceId: string) => { - const selfConversation = conversationState?.getSelfMLSConversation(); - - if (!selfConversation) { - return null; - } - - const groupId = selfConversation.groupId; - return e2eIdentity.getUserDeviceEntities(groupId, {[deviceId]: selfUser}); - }; - return (
    {t('preferencesDevicesCurrent')} {currentClient && ( )} @@ -150,10 +140,10 @@ export const DevicesPreferences: React.FC = ({ device={device} key={device.id} isSSO={isSSO} - onSelect={selectDevice} + onSelect={setSelectedDevice} onRemove={removeDevice} deviceNumber={++index} - getDeviceIdentity={getDeviceIdentity} + renderDeviceBadges={renderDeviceBadges} /> ))}

    {t('preferencesDevicesActiveDetail')}

    diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx index ac2bc15c6a3..8503bf43232 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx @@ -29,8 +29,8 @@ export interface DeviceProps { device: ClientEntity; fingerprint: string; showVerificationStatus?: boolean; - isOtherDevice?: boolean; - certificate?: string; + isCurrentDevice?: boolean; + getCertificate: (deviceId: string) => Promise; isProteusVerified?: boolean; } @@ -39,8 +39,8 @@ export const DetailedDevice: React.FC = ({ device, fingerprint, showVerificationStatus = true, - isOtherDevice = false, - certificate, + isCurrentDevice, + getCertificate, isProteusVerified = false, }) => { const mlsFingerprint = device.mlsPublicKeys?.[MLSPublicKeys.ED25519]; @@ -53,7 +53,11 @@ export const DetailedDevice: React.FC = ({ {mlsFingerprint && ( - + getCertificate(device.id)} + /> )} {/* Proteus */} diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx index 7a82894dd56..31307fcc9db 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx @@ -17,15 +17,13 @@ * */ -import {MouseEvent, KeyboardEvent, useEffect, useState, useCallback} from 'react'; +import {MouseEvent, KeyboardEvent} from 'react'; import {TabIndex} from '@wireapp/react-ui-kit/lib/types/enums'; import {WireIdentity} from '@wireapp/core-crypto'; import {Icon} from 'Components/Icon'; -import {VerificationBadges} from 'Components/VerificationBadge'; -import {getCertificateDetails, getCertificateState} from 'Util/certificateDetails'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {handleKeyDown} from 'Util/KeyboardUtil'; import {t} from 'Util/LocalizerUtil'; @@ -40,20 +38,16 @@ interface DeviceProps { onRemove: (device: ClientEntity) => void; onSelect: (device: ClientEntity, currentDeviceIdentity?: WireIdentity) => void; deviceNumber: number; - getDeviceIdentity: (deviceId: string) => Promise; + renderDeviceBadges: (device: ClientEntity) => React.ReactNode; } -export const Device = ({device, isSSO, onSelect, onRemove, deviceNumber, getDeviceIdentity}: DeviceProps) => { +export const Device = ({device, isSSO, onSelect, onRemove, deviceNumber, renderDeviceBadges}: DeviceProps) => { const {isVerified} = useKoSubscribableChildren(device.meta, ['isVerified']); const verifiedLabel = isVerified ? t('preferencesDevicesVerification') : t('preferencesDeviceNotVerified'); const deviceAriaLabel = `${t('preferencesDevice')} ${deviceNumber}, ${device.getName()}, ${verifiedLabel}`; - const [currentDeviceIdentity, setCurrentDeviceIdentity] = useState(); const mlsFingerprint = device.mlsPublicKeys?.[MLSPublicKeys.ED25519]; - const {isNotDownloaded, isValid, isExpireSoon} = getCertificateDetails(currentDeviceIdentity?.certificate); - const certificateState = getCertificateState({isNotDownloaded, isValid, isExpireSoon}); - const handleClick = (event: MouseEvent) => { event.stopPropagation(); onRemove(device); @@ -63,16 +57,7 @@ export const Device = ({device, isSSO, onSelect, onRemove, deviceNumber, getDevi event.stopPropagation(); }; - const handleGetDeviceIdentity = useCallback(async () => { - const deviceIdentity = await getDeviceIdentity(device.id); - setCurrentDeviceIdentity(deviceIdentity?.[0]); - }, [device.id, getDeviceIdentity]); - - useEffect(() => { - void handleGetDeviceIdentity(); - }, [handleGetDeviceIdentity]); - - const onDeviceSelect = () => onSelect(device, currentDeviceIdentity); + const onDeviceSelect = () => onSelect(device); return (
    {device.getName()} - - + {renderDeviceBadges(device)}
    {mlsFingerprint && ( diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.test.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.test.tsx index 161268dafb4..d2824309f36 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.test.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.test.tsx @@ -32,6 +32,7 @@ describe('DeviceDetailsPreferences', () => { const defaultParams = { device, getFingerprint: jest.fn().mockResolvedValue('00000000'), + getCertificate: jest.fn().mockResolvedValue('00000000'), onClose: jest.fn(), onRemove: jest.fn(), onResetSession: jest.fn().mockResolvedValue(undefined), diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx index 17c13c30607..6c2293936f7 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx @@ -19,8 +19,6 @@ import React, {useEffect, useState} from 'react'; -import {WireIdentity} from '@wireapp/core-crypto/platforms/web/corecrypto'; - import {Button, ButtonVariant} from '@wireapp/react-ui-kit'; import {ClientEntity} from 'src/script/client/ClientEntity'; @@ -35,11 +33,11 @@ interface DevicesPreferencesProps { device: ClientEntity; renderDeviceBadges?: (device: ClientEntity) => React.ReactNode; getFingerprint: (device: ClientEntity) => Promise; + getCertificate: (deviceId: string) => Promise; onClose: () => void; onRemove: (device: ClientEntity) => void; onResetSession: (device: ClientEntity) => Promise; onVerify: (device: ClientEntity, verified: boolean) => void; - deviceIdentity?: WireIdentity; } enum SessionResetState { @@ -52,11 +50,11 @@ export const DeviceDetailsPreferences: React.FC = ({ device, renderDeviceBadges, getFingerprint, + getCertificate, onVerify, onRemove, onClose, onResetSession, - deviceIdentity, }) => { const {isVerified} = useKoSubscribableChildren(device.meta, ['isVerified']); const [resetState, setResetState] = useState(SessionResetState.RESET); @@ -96,11 +94,10 @@ export const DeviceDetailsPreferences: React.FC = ({
    diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx index b661c76a525..bb2551840e2 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx @@ -34,10 +34,10 @@ const logger = getLogger('E2EICertificateDetails'); interface E2EICertificateDetailsProps { certificate?: string; - isOtherDevice?: boolean; + isCurrentDevice?: boolean; } -export const E2EICertificateDetails = ({certificate, isOtherDevice = false}: E2EICertificateDetailsProps) => { +export const E2EICertificateDetails = ({certificate, isCurrentDevice}: E2EICertificateDetailsProps) => { const [isCertificateDetailsModalOpen, setIsCertificateDetailsModalOpen] = useState(false); const {isNotDownloaded, isValid, isExpireSoon} = getCertificateDetails(certificate); @@ -50,9 +50,7 @@ export const E2EICertificateDetails = ({certificate, isOtherDevice = false}: E2E const getCertificate = async () => { try { - const e2eHandler = E2EIHandler.getInstance(); - - await e2eHandler.enroll(); + await E2EIHandler.getInstance().enroll(); } catch (error) { logger.error('Cannot get E2EI instance: ', error); } @@ -86,16 +84,20 @@ export const E2EICertificateDetails = ({certificate, isOtherDevice = false}: E2E setIsCertificateDetailsModalOpen(false)} /> )} - {!isOtherDevice && isNotDownloaded && ( - - )} - - {!isOtherDevice && certificate && !isValid && ( - + {isCurrentDevice && ( + <> + {isNotDownloaded && ( + + )} + + {certificate && !isValid && ( + + )} + )}
    diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx index 1032fb69f13..e5932da91b9 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx @@ -17,6 +17,8 @@ * */ +import {useEffect, useState} from 'react'; + import {Config} from 'src/script/Config'; import {t} from 'Util/LocalizerUtil'; import {splitFingerprint} from 'Util/StringUtil'; @@ -30,12 +32,16 @@ import {FormattedId} from '../FormattedId'; interface MLSDeviceDetailsProps { fingerprint: string; - isOtherDevice?: boolean; - certificate?: string; + isCurrentDevice?: boolean; + getCertificate: () => Promise; } -export const MLSDeviceDetails = ({fingerprint, isOtherDevice = false, certificate}: MLSDeviceDetailsProps) => { +export const MLSDeviceDetails = ({fingerprint, isCurrentDevice, getCertificate}: MLSDeviceDetailsProps) => { + const [certificate, setCertificate] = useState(); const isE2EIEnabled = supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; + useEffect(() => { + getCertificate?.().then(setCertificate); + }, []); return (
    @@ -47,7 +53,7 @@ export const MLSDeviceDetails = ({fingerprint, isOtherDevice = false, certificat

    - {isE2EIEnabled && } + {isE2EIEnabled && }
    ); }; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx index 9c5c52d5cf9..24f9e145e35 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx @@ -25,7 +25,7 @@ import {formatTimestamp} from 'Util/TimeUtil'; import {type DeviceProps} from './DetailedDevice'; import {FormattedId} from './FormattedId'; -interface ProteusDeviceDetailsProps extends DeviceProps { +interface ProteusDeviceDetailsProps extends Omit { isProteusVerified?: boolean; showVerificationStatus?: boolean; } From cea50dbd499ef95e2ff0e85bcfd98dfdecc0fcd4 Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Thu, 16 Nov 2023 14:37:13 +0100 Subject: [PATCH 56/95] feat: rely on CoreCrypto to get device full identity (#16221) --- src/script/E2EIdentity/E2EIdentity.test.ts | 19 ------ src/script/E2EIdentity/E2EIdentity.ts | 64 +++++++++++-------- .../E2EIdentity/E2EIdentityEnrollment.ts | 10 +-- .../VerificationBadge/VerificationBadges.tsx | 24 +++---- .../DevicesPreferences/DevicesPreference.tsx | 38 ++++------- .../components/DetailedDevice.tsx | 23 +++---- .../components/Device/Device.tsx | 8 ++- .../DeviceDetailsPreferences.tsx | 10 ++- .../E2EICertificateDetails.test.tsx | 48 +++----------- .../E2EICertificateDetails.tsx | 23 ++++--- .../MLSDeviceDetails/MLSDeviceDetails.tsx | 27 ++++---- .../components/ProteusDeviceDetails.tsx | 2 +- src/script/page/RightSidebar/RightSidebar.tsx | 9 ++- src/script/service/CoreSingleton.ts | 3 +- src/script/util/certificateDetails.ts | 32 ++-------- 15 files changed, 130 insertions(+), 210 deletions(-) diff --git a/src/script/E2EIdentity/E2EIdentity.test.ts b/src/script/E2EIdentity/E2EIdentity.test.ts index 3e5d426248e..ad79ba6407b 100644 --- a/src/script/E2EIdentity/E2EIdentity.test.ts +++ b/src/script/E2EIdentity/E2EIdentity.test.ts @@ -103,25 +103,6 @@ describe('E2EIHandler', () => { expect(instance['gracePeriodInMS']).toEqual(newParams.gracePeriodInSeconds * TimeInMillis.SECOND); }); - it('should return true when supportsMLS returns true and ENABLE_E2EI is true', () => { - const instance = E2EIHandler.getInstance(params); - expect(instance.isE2EIEnabled).toBe(true); - }); - - it('should return false when supportsMLS returns false', () => { - (util.supportsMLS as jest.Mock).mockReturnValue(false); - - const instance = E2EIHandler.getInstance(params); - expect(instance.isE2EIEnabled).toBe(false); - }); - - it('should return false when ENABLE_E2EI is false', () => { - Config.getConfig = jest.fn().mockReturnValue({FEATURE: {ENABLE_E2EI: false}}); - - const instance = E2EIHandler.getInstance(params); - expect(instance.isE2EIEnabled).toBe(false); - }); - it('should set currentStep to INITIALIZE after initialize is called', () => { const instance = E2EIHandler.getInstance(params); instance.initialize(); diff --git a/src/script/E2EIdentity/E2EIdentity.ts b/src/script/E2EIdentity/E2EIdentity.ts index 17a6e922b13..b00f7cfa5e1 100644 --- a/src/script/E2EIdentity/E2EIdentity.ts +++ b/src/script/E2EIdentity/E2EIdentity.ts @@ -18,47 +18,57 @@ */ import {QualifiedId} from '@wireapp/api-client/lib/user'; +import {WireIdentity} from '@wireapp/core/lib/messagingProtocols/mls'; import {container} from 'tsyringe'; +import {MLSStatuses} from 'Components/VerificationBadge'; import {Core} from 'src/script/service/CoreSingleton'; -import {base64ToArray} from 'Util/util'; +import {getCertificateState} from 'Util/certificateDetails'; +import {base64ToArray, supportsMLS} from 'Util/util'; +import {createUuid} from 'Util/uuid'; + +import {Config} from '../Config'; + +export type TMP_DecoratedWireIdentity = WireIdentity & { + state: MLSStatuses; + thumbprint: string; +}; export function getE2EIdentityService() { - return container.resolve(Core).service?.e2eIdentity; + const e2eIdentityService = container.resolve(Core).service?.e2eIdentity; + if (!e2eIdentityService) { + throw new Error('trying to query E2EIdentity data in an non-e2eidentity environment'); + } + return e2eIdentityService; } -export async function getDeviceIdentity(groupId: string, userId: QualifiedId, deviceId: string) { - const identities = await getE2EIdentityService()?.getUserDeviceEntities(groupId, {[deviceId]: userId}); - return identities?.[0]; +export function isE2EIEnabled(): boolean { + return supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; } -/** - * @param groupId id of the group - * @param clientIdsWithUser client ids with user data - * Returns devices E2EI certificates - */ -export async function getDeviceVerificationState(groupId: string, userId: QualifiedId, deviceId: string) { - const identity = await getDeviceIdentity(groupId, userId, deviceId); - // @fixme: soon coreCrypto will return a `isValid` property. Use this one to check for validity - return identity ? 'verified' : 'unverified'; + +export async function getDeviceIdentity( + groupId: string, + userId: QualifiedId, + deviceId: string, +): Promise { + const identities = await getE2EIdentityService().getUserDeviceEntities(groupId, {[deviceId]: userId}); + if (identities?.length) { + const extraData = { + state: getCertificateState(identities[0].certificate), + thumbprint: createUuid(), + }; + return {...identities[0], ...extraData}; + } + return undefined; } export async function getConversationState(groupId: string) { - return getE2EIdentityService()?.getConversationState(base64ToArray(groupId)); + return getE2EIdentityService().getConversationState(base64ToArray(groupId)); } + /** * Checks if E2EI has active certificate. */ export function hasActiveCertificate() { - return getE2EIdentityService()?.hasActiveCertificate(); -} - -/** - * returns E2EI certificate data. - */ -export function getCurrentDeviceCertificateData() { - if (!hasActiveCertificate()) { - return undefined; - } - - return getE2EIdentityService()?.getCertificateData(); + return getE2EIdentityService().hasActiveCertificate(); } diff --git a/src/script/E2EIdentity/E2EIdentityEnrollment.ts b/src/script/E2EIdentity/E2EIdentityEnrollment.ts index e9860f3a666..13bfc8ffe9f 100644 --- a/src/script/E2EIdentity/E2EIdentityEnrollment.ts +++ b/src/script/E2EIdentity/E2EIdentityEnrollment.ts @@ -20,15 +20,13 @@ import {container} from 'tsyringe'; import {PrimaryModal, removeCurrentModal} from 'Components/Modals/PrimaryModal'; -import {Config} from 'src/script/Config'; import {Core} from 'src/script/service/CoreSingleton'; import {UserState} from 'src/script/user/UserState'; import {TIME_IN_MILLIS} from 'Util/TimeUtil'; import {removeUrlParameters} from 'Util/UrlUtil'; -import {supportsMLS} from 'Util/util'; import {DelayTimerService} from './DelayTimer/DelayTimer'; -import {hasActiveCertificate} from './E2EIdentity'; +import {hasActiveCertificate, isE2EIEnabled} from './E2EIdentity'; import {getModalOptions, ModalType} from './Modals'; import {getOIDCServiceInstance} from './OIDCService'; import {OIDCServiceStore} from './OIDCService/OIDCServiceStorage'; @@ -116,17 +114,13 @@ export class E2EIHandler { } public initialize(): void { - if (this.isE2EIEnabled) { + if (isE2EIEnabled()) { if (!hasActiveCertificate()) { this.showE2EINotificationMessage(); } } } - get isE2EIEnabled(): boolean { - return supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; - } - private async storeRedirectTargetAndRedirect(targetURL: string): Promise { // store the target url in the persistent oidc service store, since the oidc service will be destroyed after the redirect OIDCServiceStore.store.targetURL(targetURL); diff --git a/src/script/components/VerificationBadge/VerificationBadges.tsx b/src/script/components/VerificationBadge/VerificationBadges.tsx index d90f92617eb..d75c465dc71 100644 --- a/src/script/components/VerificationBadge/VerificationBadges.tsx +++ b/src/script/components/VerificationBadge/VerificationBadges.tsx @@ -20,7 +20,6 @@ import {CSSProperties, useEffect, useState} from 'react'; import {ConversationProtocol} from '@wireapp/api-client/lib/conversation'; -import {QualifiedId} from '@wireapp/api-client/lib/user'; import { CertificateExpiredIcon, @@ -32,7 +31,7 @@ import { import {ClientEntity} from 'src/script/client'; import {ConversationVerificationState} from 'src/script/conversation/ConversationVerificationState'; -import {getDeviceVerificationState} from 'src/script/E2EIdentity'; +import {TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; import {Conversation} from 'src/script/entity/Conversation'; import {User} from 'src/script/entity/User'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; @@ -86,29 +85,22 @@ export const UserVerificationBadges = ({user, groupId}: {user: User; groupId?: s export const DeviceVerificationBadges = ({ device, - userId, - groupId, + getDeviceIdentity, }: { device: ClientEntity; - userId: QualifiedId; - groupId?: string; + getDeviceIdentity?: (deviceId: string) => Promise; }) => { - const [isMLSVerified, setIsMLSVerified] = useState(false); + const [MLSStatus, setMLSStatus] = useState(undefined); useEffect(() => { - if (groupId) { + if (getDeviceIdentity) { void (async () => { - const verificationState = await getDeviceVerificationState(groupId, userId, device.id); - setIsMLSVerified(verificationState === 'verified'); + const identity = await getDeviceIdentity(device.id); + setMLSStatus(identity?.state ?? MLSStatuses.NOT_DOWNLOADED); })(); } }); - return ( - - ); + return ; }; type ConversationVerificationBadgeProps = { diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx index ac7065fde9e..45627d64873 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx @@ -22,7 +22,6 @@ import React, {useEffect, useState} from 'react'; import {QualifiedId} from '@wireapp/api-client/lib/user'; import {container} from 'tsyringe'; -import {DeviceVerificationBadges} from 'Components/VerificationBadge'; import {ClientEntity} from 'src/script/client/ClientEntity'; import {CryptographyRepository} from 'src/script/cryptography/CryptographyRepository'; import {Conversation} from 'src/script/entity/Conversation'; @@ -73,33 +72,20 @@ export const DevicesPreferences: React.FC = ({ void cryptographyRepository.getLocalFingerprint().then(setLocalFingerprint); }, [cryptographyRepository]); - const renderDeviceBadges = (device: ClientEntity) => { - return ( - - ); - }; - - const getDeviceCertificate = async (deviceId: string) => { - if (deviceId === currentClient?.id) { - return e2eIdentity.getCurrentDeviceCertificateData(); - } - const selfConversation = conversationState.selfMLSConversation(); - if (!selfConversation) { - return undefined; - } - const identity = await e2eIdentity.getDeviceIdentity(selfConversation.groupId, selfUser.qualifiedId, deviceId); - return identity?.certificate; - }; + const getDeviceIdentity = e2eIdentity.isE2EIEnabled() + ? async (deviceId: string) => { + const selfConversation = conversationState.selfMLSConversation(); + if (!selfConversation) { + return undefined; + } + return e2eIdentity.getDeviceIdentity(selfConversation.groupId, selfUser.qualifiedId, deviceId); + } + : undefined; if (selectedDevice) { return ( { @@ -124,7 +110,7 @@ export const DevicesPreferences: React.FC = ({ isCurrentDevice device={currentClient} fingerprint={localFingerprint} - getCertificate={getDeviceCertificate} + getDeviceIdentity={getDeviceIdentity} isProteusVerified={isSelfClientVerified} /> )} @@ -143,7 +129,7 @@ export const DevicesPreferences: React.FC = ({ onSelect={setSelectedDevice} onRemove={removeDevice} deviceNumber={++index} - renderDeviceBadges={renderDeviceBadges} + getDeviceIdentity={getDeviceIdentity} /> ))}

    {t('preferencesDevicesActiveDetail')}

    diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx index 8503bf43232..f984fd671ae 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx @@ -19,48 +19,41 @@ import React from 'react'; -import {ClientEntity, MLSPublicKeys} from 'src/script/client/ClientEntity'; +import {DeviceVerificationBadges} from 'Components/VerificationBadge'; +import {ClientEntity} from 'src/script/client/ClientEntity'; +import {TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; import {MLSDeviceDetails} from './MLSDeviceDetails'; import {ProteusDeviceDetails} from './ProteusDeviceDetails'; export interface DeviceProps { - renderDeviceBadges?: (device: ClientEntity) => React.ReactNode; device: ClientEntity; fingerprint: string; showVerificationStatus?: boolean; isCurrentDevice?: boolean; - getCertificate: (deviceId: string) => Promise; + getDeviceIdentity?: (deviceId: string) => Promise; isProteusVerified?: boolean; } export const DetailedDevice: React.FC = ({ - renderDeviceBadges, device, fingerprint, showVerificationStatus = true, isCurrentDevice, - getCertificate, + getDeviceIdentity, isProteusVerified = false, }) => { - const mlsFingerprint = device.mlsPublicKeys?.[MLSPublicKeys.ED25519]; - return ( <>

    {device.model} - {renderDeviceBadges?.(device)} +

    - {mlsFingerprint && ( - getCertificate(device.id)} - /> + {getDeviceIdentity && ( + getDeviceIdentity(device.id)} /> )} - {/* Proteus */} Promise; onRemove: (device: ClientEntity) => void; onSelect: (device: ClientEntity, currentDeviceIdentity?: WireIdentity) => void; deviceNumber: number; - renderDeviceBadges: (device: ClientEntity) => React.ReactNode; } -export const Device = ({device, isSSO, onSelect, onRemove, deviceNumber, renderDeviceBadges}: DeviceProps) => { +export const Device = ({device, isSSO, onSelect, onRemove, getDeviceIdentity, deviceNumber}: DeviceProps) => { const {isVerified} = useKoSubscribableChildren(device.meta, ['isVerified']); const verifiedLabel = isVerified ? t('preferencesDevicesVerification') : t('preferencesDeviceNotVerified'); const deviceAriaLabel = `${t('preferencesDevice')} ${deviceNumber}, ${device.getName()}, ${verifiedLabel}`; @@ -74,7 +76,7 @@ export const Device = ({device, isSSO, onSelect, onRemove, deviceNumber, renderD aria-label={deviceAriaLabel} > {device.getName()} - {renderDeviceBadges(device)} +
    {mlsFingerprint && ( diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx index 6c2293936f7..3719b5d0f69 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx @@ -22,6 +22,7 @@ import React, {useEffect, useState} from 'react'; import {Button, ButtonVariant} from '@wireapp/react-ui-kit'; import {ClientEntity} from 'src/script/client/ClientEntity'; +import {TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; @@ -31,9 +32,8 @@ import {DetailedDevice} from '../DetailedDevice'; interface DevicesPreferencesProps { device: ClientEntity; - renderDeviceBadges?: (device: ClientEntity) => React.ReactNode; getFingerprint: (device: ClientEntity) => Promise; - getCertificate: (deviceId: string) => Promise; + getDeviceIdentity?: (deviceId: string) => Promise; onClose: () => void; onRemove: (device: ClientEntity) => void; onResetSession: (device: ClientEntity) => Promise; @@ -48,9 +48,8 @@ enum SessionResetState { export const DeviceDetailsPreferences: React.FC = ({ device, - renderDeviceBadges, getFingerprint, - getCertificate, + getDeviceIdentity, onVerify, onRemove, onClose, @@ -93,8 +92,7 @@ export const DeviceDetailsPreferences: React.FC = ({ { - const alg = { - name: 'RSASSA-PKCS1-v1_5', - hash: 'SHA-256', - publicExponent: new Uint8Array([1, 0, 1]), - modulusLength: 2048, - }; - const keys = await crypto.subtle.generateKey(alg, false, ['sign', 'verify']); - const cert = await x509.X509CertificateGenerator.createSelfSigned({ - serialNumber: '01', - name: 'CN=Test', - notBefore, - notAfter, - signingAlgorithm: alg, - keys, - extensions: [ - new x509.BasicConstraintsExtension(true, 2, true), - new x509.ExtendedKeyUsageExtension(['1.2.3.4.5.6.7', '2.3.4.5.6.7.8'], true), - new x509.KeyUsagesExtension(x509.KeyUsageFlags.keyCertSign | x509.KeyUsageFlags.cRLSign, true), - await x509.SubjectKeyIdentifierExtension.create(keys.publicKey), - ], - }); - - return cert.toString('pem'); -}; - describe('E2EICertificateDetails', () => { - const currentDate = new Date(); + const generateIdentity = (state: MLSStatuses) => + ({ + state, + certificate: 'certificate', + }) as TMP_DecoratedWireIdentity; it('is e2ei identity verified', async () => { - const yesterday = new Date(currentDate.getTime() - 86400000); - const followingDay = new Date(currentDate.getTime() + 86400000 * 2); + const identity = generateIdentity(MLSStatuses.VALID); - const generatedCertificate = await certificateGenerator(yesterday, followingDay); - - const {getByTestId} = render(withTheme()); + const {getByTestId} = render(withTheme()); const E2EIdentityStatus = getByTestId('e2ei-identity-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.VALID); @@ -74,12 +49,9 @@ describe('E2EICertificateDetails', () => { }); it('is e2ei identity expired', async () => { - const yesterday = new Date(currentDate.getTime() - 86400000); - const followingDay = new Date(currentDate.getTime() - 86400000 / 2); - - const generatedCertificate = await certificateGenerator(yesterday, followingDay); + const identity = generateIdentity(MLSStatuses.EXPIRED); - const {getByTestId} = render(withTheme()); + const {getByTestId} = render(withTheme()); const E2EIdentityStatus = getByTestId('e2ei-identity-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.EXPIRED); diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx index bb2551840e2..b6c0363d7c5 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx @@ -22,9 +22,8 @@ import {useState} from 'react'; import {Button, ButtonVariant} from '@wireapp/react-ui-kit'; import {CertificateDetailsModal} from 'Components/Modals/CertificateDetailsModal'; -import {VerificationBadges} from 'Components/VerificationBadge'; -import {E2EIHandler} from 'src/script/E2EIdentity'; -import {getCertificateDetails, getCertificateState} from 'Util/certificateDetails'; +import {MLSStatuses, VerificationBadges} from 'Components/VerificationBadge'; +import {E2EIHandler, TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; import {t} from 'Util/LocalizerUtil'; import {getLogger} from 'Util/Logger'; @@ -33,15 +32,16 @@ import {styles} from './E2EICertificateDetails.styles'; const logger = getLogger('E2EICertificateDetails'); interface E2EICertificateDetailsProps { - certificate?: string; + identity?: TMP_DecoratedWireIdentity; isCurrentDevice?: boolean; } -export const E2EICertificateDetails = ({certificate, isCurrentDevice}: E2EICertificateDetailsProps) => { +export const E2EICertificateDetails = ({identity, isCurrentDevice}: E2EICertificateDetailsProps) => { const [isCertificateDetailsModalOpen, setIsCertificateDetailsModalOpen] = useState(false); - const {isNotDownloaded, isValid, isExpireSoon} = getCertificateDetails(certificate); - const certificateState = getCertificateState({isNotDownloaded, isValid, isExpireSoon}); + const certificateState = identity?.state ?? MLSStatuses.NOT_DOWNLOADED; + const isNotDownloaded = certificateState === MLSStatuses.NOT_DOWNLOADED; + const isValid = certificateState === MLSStatuses.VALID; const updateCertificate = (): null => { // TODO: Waiting for update certificate implementation @@ -80,8 +80,11 @@ export const E2EICertificateDetails = ({certificate, isCurrentDevice}: E2EICerti )} - {isCertificateDetailsModalOpen && certificate && ( - setIsCertificateDetailsModalOpen(false)} /> + {isCertificateDetailsModalOpen && identity?.certificate && ( + setIsCertificateDetailsModalOpen(false)} + /> )} {isCurrentDevice && ( @@ -92,7 +95,7 @@ export const E2EICertificateDetails = ({certificate, isCurrentDevice}: E2EICerti )} - {certificate && !isValid && ( + {identity?.certificate && !isValid && ( diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx index e5932da91b9..6a7fd936f24 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx @@ -19,10 +19,9 @@ import {useEffect, useState} from 'react'; -import {Config} from 'src/script/Config'; +import {TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; import {t} from 'Util/LocalizerUtil'; import {splitFingerprint} from 'Util/StringUtil'; -import {supportsMLS} from 'Util/util'; import {styles} from './MLSDeviceDetails.styles'; @@ -31,29 +30,31 @@ import {E2EICertificateDetails} from '../E2EICertificateDetails'; import {FormattedId} from '../FormattedId'; interface MLSDeviceDetailsProps { - fingerprint: string; isCurrentDevice?: boolean; - getCertificate: () => Promise; + getDeviceIdentity: () => Promise; } -export const MLSDeviceDetails = ({fingerprint, isCurrentDevice, getCertificate}: MLSDeviceDetailsProps) => { - const [certificate, setCertificate] = useState(); - const isE2EIEnabled = supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; +export const MLSDeviceDetails = ({isCurrentDevice, getDeviceIdentity}: MLSDeviceDetailsProps) => { + const [identity, setIdentity] = useState(); useEffect(() => { - getCertificate?.().then(setCertificate); + getDeviceIdentity?.().then(setIdentity); }, []); return (

    {t('mlsSignature', MLSPublicKeys.ED25519.toUpperCase())}

    -

    {t('mlsThumbprint')}

    + {identity?.thumbprint && ( + <> +

    {t('mlsThumbprint')}

    -

    - -

    +

    + +

    + + )} - {isE2EIEnabled && } +
    ); }; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx index 24f9e145e35..21de058e798 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/ProteusDeviceDetails.tsx @@ -25,7 +25,7 @@ import {formatTimestamp} from 'Util/TimeUtil'; import {type DeviceProps} from './DetailedDevice'; import {FormattedId} from './FormattedId'; -interface ProteusDeviceDetailsProps extends Omit { +interface ProteusDeviceDetailsProps extends Omit { isProteusVerified?: boolean; showVerificationStatus?: boolean; } diff --git a/src/script/page/RightSidebar/RightSidebar.tsx b/src/script/page/RightSidebar/RightSidebar.tsx index 208ee0ddceb..73711a8ba59 100644 --- a/src/script/page/RightSidebar/RightSidebar.tsx +++ b/src/script/page/RightSidebar/RightSidebar.tsx @@ -28,6 +28,7 @@ import {WebAppEvents} from '@wireapp/webapp-events'; import {DeviceVerificationBadges, UserVerificationBadges} from 'Components/VerificationBadge'; import {ClientEntity} from 'src/script/client'; +import * as e2eIdentity from 'src/script/E2EIdentity'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {AddParticipants} from './AddParticipants'; @@ -186,7 +187,13 @@ const RightSidebar: FC = ({ }; const renderDeviceBadges = (device: ClientEntity, userId: QualifiedId) => { - return ; + const selfConversation = conversationState.selfMLSConversation(); + const getDeviceIdentity = + e2eIdentity.isE2EIEnabled() && selfConversation + ? () => e2eIdentity.getDeviceIdentity(selfConversation.groupId, userId, device.id) + : undefined; + + return ; }; if (!activeConversation) { diff --git a/src/script/service/CoreSingleton.ts b/src/script/service/CoreSingleton.ts index ff2f9bac0cc..00b29ad7acf 100644 --- a/src/script/service/CoreSingleton.ts +++ b/src/script/service/CoreSingleton.ts @@ -28,6 +28,7 @@ import {APIClient} from './APIClientSingleton'; import {createStorageEngine, DatabaseTypes} from './StoreEngineProvider'; import {Config} from '../Config'; +import {isE2EIEnabled} from '../E2EIdentity'; declare global { interface Window { @@ -62,7 +63,7 @@ export class Core extends Account { ? { keyingMaterialUpdateThreshold: Config.getConfig().FEATURE.MLS_CONFIG_KEYING_MATERIAL_UPDATE_THRESHOLD, defaultCiphersuite: Config.getConfig().FEATURE.MLS_CONFIG_DEFAULT_CIPHERSUITE, - useE2EI: Config.getConfig().FEATURE.ENABLE_E2EI, + useE2EI: isE2EIEnabled(), } : undefined, diff --git a/src/script/util/certificateDetails.ts b/src/script/util/certificateDetails.ts index db20336b1bb..7209c5604fd 100644 --- a/src/script/util/certificateDetails.ts +++ b/src/script/util/certificateDetails.ts @@ -33,34 +33,14 @@ const checkExpirationDate = (notAfter: Date) => { return currentDate > dateBeforeEnd; }; -export const getCertificateDetails = (certificate?: string) => { - const currentDate = new Date(); - const parsedCertificate = certificate ? new x509.X509Certificate(certificate) : null; - const isValid = - !!parsedCertificate && currentDate > parsedCertificate.notBefore && currentDate < parsedCertificate.notAfter; - const isExpireSoon = isValid && !!parsedCertificate?.notAfter && checkExpirationDate(parsedCertificate.notAfter); - - return { - isNotDownloaded: !certificate, - isValid, - isExpireSoon, - }; -}; - -interface GetCertificateState { - isNotDownloaded?: boolean; - isValid?: boolean; - isExpireSoon?: boolean; -} - -export const getCertificateState = ({ - isNotDownloaded = false, - isValid = false, - isExpireSoon = false, -}: GetCertificateState): MLSStatuses => { - if (isNotDownloaded) { +export const getCertificateState = (certificate?: string) => { + if (!certificate) { return MLSStatuses.NOT_DOWNLOADED; } + const currentDate = new Date(); + const parsedCertificate = new x509.X509Certificate(certificate); + const isValid = currentDate > parsedCertificate.notBefore && currentDate < parsedCertificate.notAfter; + const isExpireSoon = isValid && !!parsedCertificate?.notAfter && checkExpirationDate(parsedCertificate.notAfter); if (isValid && !isExpireSoon) { return MLSStatuses.VALID; From 81ad95bbe883f5092a5f36cfd543c5721f7b4a51 Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Thu, 16 Nov 2023 15:25:04 +0100 Subject: [PATCH 57/95] fix: Do not show current device proteus verification state (#16222) --- .../DevicesPreferences/DevicesPreference.tsx | 2 - .../components/DetailedDevice.tsx | 11 +----- .../DeviceDetailsPreferences.tsx | 11 +++--- .../components/ProteusDeviceDetails.tsx | 37 +++++++++---------- 4 files changed, 24 insertions(+), 37 deletions(-) diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx index 45627d64873..7556cd661bb 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx @@ -62,7 +62,6 @@ export const DevicesPreferences: React.FC = ({ const {devices} = useKoSubscribableChildren(selfUser, ['devices']); const currentClient = clientState.currentClient; - const isSelfClientVerified = false; const isSSO = selfUser.isNoPasswordSSO; const getFingerprint = (device: ClientEntity) => @@ -111,7 +110,6 @@ export const DevicesPreferences: React.FC = ({ device={currentClient} fingerprint={localFingerprint} getDeviceIdentity={getDeviceIdentity} - isProteusVerified={isSelfClientVerified} /> )} diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx index f984fd671ae..6638892020c 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx @@ -29,7 +29,6 @@ import {ProteusDeviceDetails} from './ProteusDeviceDetails'; export interface DeviceProps { device: ClientEntity; fingerprint: string; - showVerificationStatus?: boolean; isCurrentDevice?: boolean; getDeviceIdentity?: (deviceId: string) => Promise; isProteusVerified?: boolean; @@ -38,10 +37,9 @@ export interface DeviceProps { export const DetailedDevice: React.FC = ({ device, fingerprint, - showVerificationStatus = true, isCurrentDevice, getDeviceIdentity, - isProteusVerified = false, + isProteusVerified, }) => { return ( <> @@ -54,12 +52,7 @@ export const DetailedDevice: React.FC = ({ getDeviceIdentity(device.id)} /> )} - + ); }; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx index 3719b5d0f69..d71903026ab 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx @@ -91,12 +91,11 @@ export const DeviceDetailsPreferences: React.FC = ({ /> - + + +

    + {t('preferencesDeviceDetailsVerificationStatus')} +

    { +export const ProteusDeviceDetails = ({device, fingerprint, isProteusVerified}: ProteusDeviceDetailsProps) => { return (

    {t('proteusDeviceDetails')}

    @@ -66,21 +61,23 @@ export const ProteusDeviceDetails = ({

    -

    - {t('preferencesDeviceDetailsVerificationStatus')} -

    + {isProteusVerified !== undefined && ( + <> +

    + {t('preferencesDeviceDetailsVerificationStatus')} +

    - {showVerificationStatus && ( -

    - {isProteusVerified ? ( - <> - {t('proteusVerified')} - - - ) : ( - {t('proteusNotVerified')} - )} -

    +

    + {isProteusVerified ? ( + <> + {t('proteusVerified')} + + + ) : ( + {t('proteusNotVerified')} + )} +

    + )}
    ); From 1351a5d6f4444d283250238b102e3b0d912b56d5 Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Mon, 20 Nov 2023 12:25:59 +0100 Subject: [PATCH 58/95] chore: Setup user verification badges (#16226) --- ...ity.test.ts => E2EIdentityEnrollment.test.ts} | 0 src/script/E2EIdentity/E2EIdentityEnrollment.ts | 2 +- ...E2EIdentity.ts => E2EIdentityVerification.ts} | 15 ++++++++++++++- src/script/E2EIdentity/index.ts | 2 +- .../VerificationBadge/VerificationBadges.tsx | 16 +++++++++++++--- .../components/userDevices/DeviceDetails.tsx | 1 - .../MLS/MLSStateHandler.test.ts | 2 +- .../MLS/MLSStateHandler.ts | 10 ++++++++-- 8 files changed, 38 insertions(+), 10 deletions(-) rename src/script/E2EIdentity/{E2EIdentity.test.ts => E2EIdentityEnrollment.test.ts} (100%) rename src/script/E2EIdentity/{E2EIdentity.ts => E2EIdentityVerification.ts} (80%) diff --git a/src/script/E2EIdentity/E2EIdentity.test.ts b/src/script/E2EIdentity/E2EIdentityEnrollment.test.ts similarity index 100% rename from src/script/E2EIdentity/E2EIdentity.test.ts rename to src/script/E2EIdentity/E2EIdentityEnrollment.test.ts diff --git a/src/script/E2EIdentity/E2EIdentityEnrollment.ts b/src/script/E2EIdentity/E2EIdentityEnrollment.ts index 13bfc8ffe9f..4c2c76c9838 100644 --- a/src/script/E2EIdentity/E2EIdentityEnrollment.ts +++ b/src/script/E2EIdentity/E2EIdentityEnrollment.ts @@ -26,7 +26,7 @@ import {TIME_IN_MILLIS} from 'Util/TimeUtil'; import {removeUrlParameters} from 'Util/UrlUtil'; import {DelayTimerService} from './DelayTimer/DelayTimer'; -import {hasActiveCertificate, isE2EIEnabled} from './E2EIdentity'; +import {hasActiveCertificate, isE2EIEnabled} from './E2EIdentityVerification'; import {getModalOptions, ModalType} from './Modals'; import {getOIDCServiceInstance} from './OIDCService'; import {OIDCServiceStore} from './OIDCService/OIDCServiceStorage'; diff --git a/src/script/E2EIdentity/E2EIdentity.ts b/src/script/E2EIdentity/E2EIdentityVerification.ts similarity index 80% rename from src/script/E2EIdentity/E2EIdentity.ts rename to src/script/E2EIdentity/E2EIdentityVerification.ts index b00f7cfa5e1..81ce3efaa1e 100644 --- a/src/script/E2EIdentity/E2EIdentity.ts +++ b/src/script/E2EIdentity/E2EIdentityVerification.ts @@ -62,7 +62,20 @@ export async function getDeviceIdentity( return undefined; } -export async function getConversationState(groupId: string) { +// TODO: replace implementation with CoreCrypto once it has user verification method +export async function getUsersVerificationState(groupId: string, userIds: QualifiedId[]) { + return userIds.map(userId => ({ + userId, + state: Math.random() > 0.5 ? MLSStatuses.VALID : MLSStatuses.EXPIRED, + })); +} + +export async function getUserVerificationState(groupId: string, userId: QualifiedId) { + const usersVerifications = await getUsersVerificationState(groupId, [userId]); + return usersVerifications[0].state; +} + +export async function getConversationVerificationState(groupId: string) { return getE2EIdentityService().getConversationState(base64ToArray(groupId)); } diff --git a/src/script/E2EIdentity/index.ts b/src/script/E2EIdentity/index.ts index d306feaa5c7..ed5294a4610 100644 --- a/src/script/E2EIdentity/index.ts +++ b/src/script/E2EIdentity/index.ts @@ -18,4 +18,4 @@ */ export * from './E2EIdentityEnrollment'; -export * from './E2EIdentity'; +export * from './E2EIdentityVerification'; diff --git a/src/script/components/VerificationBadge/VerificationBadges.tsx b/src/script/components/VerificationBadge/VerificationBadges.tsx index d75c465dc71..e3e4a37b6ed 100644 --- a/src/script/components/VerificationBadge/VerificationBadges.tsx +++ b/src/script/components/VerificationBadge/VerificationBadges.tsx @@ -31,7 +31,7 @@ import { import {ClientEntity} from 'src/script/client'; import {ConversationVerificationState} from 'src/script/conversation/ConversationVerificationState'; -import {TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; +import {getUserVerificationState, isE2EIEnabled, TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; import {Conversation} from 'src/script/entity/Conversation'; import {User} from 'src/script/entity/User'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; @@ -78,9 +78,19 @@ const useConversationVerificationState = (conversation: Conversation) => { }; export const UserVerificationBadges = ({user, groupId}: {user: User; groupId?: string}) => { + const [MLSStatus, setMLSStatus] = useState(undefined); const {is_verified: isProteusVerified} = useKoSubscribableChildren(user, ['is_verified']); - return ; + useEffect(() => { + void (async () => { + if (groupId && isE2EIEnabled()) { + const status = await getUserVerificationState(groupId, user.qualifiedId); + setMLSStatus(status); + } + })(); + }, []); + + return ; }; export const DeviceVerificationBadges = ({ @@ -98,7 +108,7 @@ export const DeviceVerificationBadges = ({ setMLSStatus(identity?.state ?? MLSStatuses.NOT_DOWNLOADED); })(); } - }); + }, []); return ; }; diff --git a/src/script/components/userDevices/DeviceDetails.tsx b/src/script/components/userDevices/DeviceDetails.tsx index a7439f3ec59..5d655753874 100644 --- a/src/script/components/userDevices/DeviceDetails.tsx +++ b/src/script/components/userDevices/DeviceDetails.tsx @@ -144,7 +144,6 @@ export const DeviceDetails = ({

    {t('preferencesDeviceDetailsVerificationStatus')} - Verification Status

    diff --git a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts index 30f97299226..c134445c429 100644 --- a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts +++ b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts @@ -20,7 +20,7 @@ import {ConversationProtocol} from '@wireapp/api-client/lib/conversation/NewConversation'; import {E2eiConversationState} from '@wireapp/core/lib/messagingProtocols/mls'; -import * as e2eIdentity from 'src/script/E2EIdentity/E2EIdentity'; +import * as e2eIdentity from 'src/script/E2EIdentity/E2EIdentityVerification'; import {Conversation} from 'src/script/entity/Conversation'; import {Core} from 'src/script/service/CoreSingleton'; import {createUuid} from 'Util/uuid'; diff --git a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts index 08b304ee4e1..4538a475041 100644 --- a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts +++ b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts @@ -20,7 +20,8 @@ import {E2eiConversationState} from '@wireapp/core/lib/messagingProtocols/mls'; import {container} from 'tsyringe'; -import {getConversationState} from 'src/script/E2EIdentity'; +import {MLSStatuses} from 'Components/VerificationBadge'; +import {getConversationVerificationState, getUsersVerificationState} from 'src/script/E2EIdentity'; import {VerificationMessageType} from 'src/script/message/VerificationMessageType'; import {Core} from 'src/script/service/CoreSingleton'; import {Logger, getLogger} from 'Util/Logger'; @@ -56,10 +57,15 @@ class MLSConversationVerificationStateHandler { private async degradeConversation(conversation: MLSConversation) { const state = ConversationVerificationState.DEGRADED; conversation.mlsVerificationState(state); + const degradedUsers = (await getUsersVerificationState(conversation.groupId, conversation.participating_user_ids())) + .filter(user => user.state !== MLSStatuses.VALID) + .map(user => user.userId); + this.onConversationVerificationStateChange({ conversationEntity: conversation, conversationVerificationState: state, verificationMessageType: VerificationMessageType.UNVERIFIED, + userIds: degradedUsers, }); } @@ -84,7 +90,7 @@ class MLSConversationVerificationStateHandler { return; } - const verificationState = await getConversationState(groupId); + const verificationState = await getConversationVerificationState(groupId); if ( verificationState === E2eiConversationState.Degraded && From 394310235b0b194188b316c6e6f9d4813171ed3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20J=C3=B3=C5=BAwik?= Date: Tue, 21 Nov 2023 11:32:32 +0100 Subject: [PATCH 59/95] feat: Show E2EI Verification system message (#16224) * feat: Show E2EI Verification system message * Add second line message * render e2ei verification system message * remove unused code * show system message * fix for display verification message * fix for displaying cell state description * suggestion fix --- server/config/client.config.ts | 1 + server/config/env.ts | 1 + src/i18n/en-US.json | 5 ++- .../Message/SystemMessage/SystemMessage.tsx | 7 ++++ .../SystemMessage/SystemMessageBase.tsx | 2 +- .../conversation/ConversationCellState.ts | 6 +++ .../conversation/ConversationRepository.ts | 1 + src/script/conversation/EventBuilder.ts | 15 ++++++++ src/script/conversation/EventMapper.ts | 13 +++++++ src/script/entity/Conversation.ts | 11 +++++- .../entity/message/E2EIVerificationMessage.ts | 37 +++++++++++++++++++ src/script/event/Client.ts | 1 + src/script/event/EventTypeHandling.ts | 1 + src/script/main/app.ts | 20 +++++++++- src/script/message/SystemMessageType.ts | 1 + .../content/conversation/message-list.less | 10 ++++- 16 files changed, 127 insertions(+), 5 deletions(-) create mode 100644 src/script/entity/message/E2EIVerificationMessage.ts diff --git a/server/config/client.config.ts b/server/config/client.config.ts index d263900081c..619c4d33cc1 100644 --- a/server/config/client.config.ts +++ b/server/config/client.config.ts @@ -99,6 +99,7 @@ export function generateConfig(params: ConfigGeneratorParams, env: Env) { OAUTH_LEARN_MORE: env.URL_SUPPORT_OAUTH_LEARN_MORE, OFFLINE_BACKEND: env.URL_SUPPORT_OFFLINE_BACKEND, FEDERATION_STOP: env.URL_SUPPORT_FEDERATION_STOP, + E2EI_VERIFICATION: env.URL_SUPPORT_E2EI_VERIFICATION, }, TEAMS_BASE: env.URL_TEAMS_BASE, TEAMS_CREATE: env.URL_TEAMS_CREATE, diff --git a/server/config/env.ts b/server/config/env.ts index 5984ceb3ea7..b33b04b1322 100644 --- a/server/config/env.ts +++ b/server/config/env.ts @@ -253,6 +253,7 @@ export type Env = { URL_SUPPORT_OFFLINE_BACKEND: string; URL_SUPPORT_FEDERATION_STOP: string; + URL_SUPPORT_E2EI_VERIFICATION: string; URL_WHATS_NEW: string; diff --git a/src/i18n/en-US.json b/src/i18n/en-US.json index af5003cfc17..baacffc394d 100644 --- a/src/i18n/en-US.json +++ b/src/i18n/en-US.json @@ -1331,7 +1331,10 @@ "timedMessageDisclaimer": "Self-deleting messages will be turned on for all the participants in this conversation.", "timedMessagesTitle": "Self-deleting messages", "tooltipConversationAddImage": "Add picture", - "tooltipConversationAllVerified": "All fingerprints are verified", + "tooltipConversationAllVerified": "All fingerprints are verified (Proteus)", + "tooltipConversationAllDevicesVerified": "All device fingerprints verified (Proteus)", + "tooltipConversationAllE2EIVerified": "All devices are verified (end-to-end identity). [link]Learn more[/link]", + "tooltipConversationAllE2EIVerifiedShort": "All devices verified (end-to-end identity)", "tooltipConversationCall": "Call", "tooltipConversationDetailsAddPeople": "Add participants to conversation ({{shortcut}})", "tooltipConversationDetailsRename": "Change conversation name", diff --git a/src/script/components/MessagesList/Message/SystemMessage/SystemMessage.tsx b/src/script/components/MessagesList/Message/SystemMessage/SystemMessage.tsx index e7afe1fabb3..007e19d6bae 100644 --- a/src/script/components/MessagesList/Message/SystemMessage/SystemMessage.tsx +++ b/src/script/components/MessagesList/Message/SystemMessage/SystemMessage.tsx @@ -19,7 +19,10 @@ import React from 'react'; +import {MLSVerified} from '@wireapp/react-ui-kit'; + import {Icon} from 'Components/Icon'; +import {E2EIVerificationMessage} from 'src/script/entity/message/E2EIVerificationMessage'; import {MessageTimerUpdateMessage} from 'src/script/entity/message/MessageTimerUpdateMessage'; import {MLSConversationRecoveredMessage} from 'src/script/entity/message/MLSConversationRecoveredMessage'; import {ReceiptModeUpdateMessage} from 'src/script/entity/message/ReceiptModeUpdateMessage'; @@ -54,5 +57,9 @@ export const SystemMessage: React.FC = ({message}) => { return } />; } + if (message instanceof E2EIVerificationMessage) { + return } />; + } + return ; }; diff --git a/src/script/components/MessagesList/Message/SystemMessage/SystemMessageBase.tsx b/src/script/components/MessagesList/Message/SystemMessage/SystemMessageBase.tsx index 486642d0b99..ee514da4b63 100644 --- a/src/script/components/MessagesList/Message/SystemMessage/SystemMessageBase.tsx +++ b/src/script/components/MessagesList/Message/SystemMessage/SystemMessageBase.tsx @@ -39,7 +39,7 @@ export const SystemMessageBase: React.FC = ({message, isSend

    {isSenderNameVisible && {unsafeSenderName}} - {message.caption && {message.caption}} + {message.caption && }

    diff --git a/src/script/conversation/ConversationCellState.ts b/src/script/conversation/ConversationCellState.ts index 28d241e53ea..db2c3d118a4 100644 --- a/src/script/conversation/ConversationCellState.ts +++ b/src/script/conversation/ConversationCellState.ts @@ -30,6 +30,7 @@ import type {MemberMessage} from '../entity/message/MemberMessage'; import type {SystemMessage} from '../entity/message/SystemMessage'; import type {Text} from '../entity/message/Text'; import {ConversationError} from '../error/ConversationError'; +import {ClientEvent} from '../event/Client'; enum ACTIVITY_TYPE { CALL = 'ConversationCellState.ACTIVITY_TYPE.CALL', @@ -334,6 +335,10 @@ const _getStateUnreadMessage = { string = t('notificationSharedLocation'); } else if (messageEntity.hasAssetImage()) { string = t('notificationAssetAdd'); + } else if (messageEntity?.type === ClientEvent.CONVERSATION.E2EI_VERIFICATION) { + string = t('tooltipConversationAllDevicesVerified'); + } else if (messageEntity.isVerification()) { + string = t('tooltipConversationAllDevicesVerified'); } if (!!string) { @@ -388,6 +393,7 @@ export const generateCellState = ( _getStateUnreadMessage, _getStateUserName, ]; + const matchingState = states.find(state => state.match(conversationEntity)) || _getStateDefault; return { diff --git a/src/script/conversation/ConversationRepository.ts b/src/script/conversation/ConversationRepository.ts index d412b6910b4..81c59279a36 100644 --- a/src/script/conversation/ConversationRepository.ts +++ b/src/script/conversation/ConversationRepository.ts @@ -2881,6 +2881,7 @@ export class ConversationRepository { case ClientEvent.CONVERSATION.VERIFICATION: case ClientEvent.CONVERSATION.VOICE_CHANNEL_ACTIVATE: case ClientEvent.CONVERSATION.VOICE_CHANNEL_DEACTIVATE: + case ClientEvent.CONVERSATION.E2EI_VERIFICATION: return this.addEventToConversation(conversationEntity, eventJson); } } diff --git a/src/script/conversation/EventBuilder.ts b/src/script/conversation/EventBuilder.ts index 4f3383b7290..4cff0074089 100644 --- a/src/script/conversation/EventBuilder.ts +++ b/src/script/conversation/EventBuilder.ts @@ -238,8 +238,12 @@ export interface ErrorEvent id: string; } +// E2EI Verified Events +export type AllE2EIVerifiedEvent = ConversationEvent; + export type ClientConversationEvent = | AllVerifiedEvent + | AllE2EIVerifiedEvent | AssetAddEvent | ErrorEvent | CompositeMessageAddEvent @@ -309,6 +313,17 @@ export const EventBuilder = { }; }, + buildAllE2EIVerified(conversationEntity: Conversation): AllE2EIVerifiedEvent { + return { + ...buildQualifiedId(conversationEntity), + data: undefined, + from: '', + id: createUuid(), + time: conversationEntity.getNextIsoDate(), + type: ClientEvent.CONVERSATION.E2EI_VERIFICATION, + }; + }, + buildCallingTimeoutEvent( reason: AVS_REASON.NOONE_JOINED | AVS_REASON.EVERYONE_LEFT, conversation: Conversation, diff --git a/src/script/conversation/EventMapper.ts b/src/script/conversation/EventMapper.ts index 6a4fa92993a..232d11d17fe 100644 --- a/src/script/conversation/EventMapper.ts +++ b/src/script/conversation/EventMapper.ts @@ -50,6 +50,7 @@ import {CompositeMessage} from '../entity/message/CompositeMessage'; import {ContentMessage} from '../entity/message/ContentMessage'; import {DecryptErrorMessage} from '../entity/message/DecryptErrorMessage'; import {DeleteMessage} from '../entity/message/DeleteMessage'; +import {E2EIVerificationMessage} from '../entity/message/E2EIVerificationMessage'; import {FailedToAddUsersMessage} from '../entity/message/FailedToAddUsersMessage'; import {FederationStopMessage} from '../entity/message/FederationStopMessage'; import {FileAsset} from '../entity/message/FileAsset'; @@ -331,6 +332,11 @@ export class EventMapper { break; } + case ClientEvent.CONVERSATION.E2EI_VERIFICATION: { + messageEntity = this._mapEventE2EIVerificationMessage(); + break; + } + case ClientEvent.CONVERSATION.ONE2ONE_CREATION: { messageEntity = this._mapEvent1to1Creation(event); break; @@ -643,6 +649,13 @@ export class EventMapper { return new MLSConversationRecoveredMessage(); } + /** + * Maps JSON data of E2E Identity verification message event to message entity. + */ + private _mapEventE2EIVerificationMessage(): MissedMessage { + return new E2EIVerificationMessage(); + } + /** * Maps JSON data of `conversation.knock` message into message entity. */ diff --git a/src/script/entity/Conversation.ts b/src/script/entity/Conversation.ts index b4c02aee90c..0a0e2e9072c 100644 --- a/src/script/entity/Conversation.ts +++ b/src/script/entity/Conversation.ts @@ -44,6 +44,7 @@ import {CallMessage} from './message/CallMessage'; import type {ContentMessage} from './message/ContentMessage'; import type {Message} from './message/Message'; import {PingMessage} from './message/PingMessage'; +import {SystemMessage} from './message/SystemMessage'; import type {User} from './User'; import type {Call} from '../calling/Call'; @@ -57,6 +58,7 @@ import {ConversationStatus} from '../conversation/ConversationStatus'; import {ConversationVerificationState} from '../conversation/ConversationVerificationState'; import {NOTIFICATION_STATE} from '../conversation/NotificationSetting'; import {ConversationError} from '../error/ConversationError'; +import {ClientEvent} from '../event/Client'; import {isContentMessage, isDeleteMessage} from '../guards/Message'; import {StatusType} from '../message/StatusType'; import {ConversationRecord} from '../storage/record/ConversationRecord'; @@ -70,6 +72,7 @@ interface UnreadState { pings: PingMessage[]; selfMentions: ContentMessage[]; selfReplies: ContentMessage[]; + systemMessages: SystemMessage[]; } enum TIMESTAMP_TYPE { @@ -431,8 +434,10 @@ export class Conversation { pings: [], selfMentions: [], selfReplies: [], + systemMessages: [], }; const messages = [...this.messages(), ...this.incomingMessages()]; + for (let index = messages.length - 1; index >= 0; index--) { const messageEntity = messages[index]; if (messageEntity.visible()) { @@ -451,7 +456,11 @@ export class Conversation { const isSelfQuoted = isMessage && this.selfUser() && (messageEntity as ContentMessage).isUserQuoted(this.selfUser().id); - if (isMissedCall || isPing || isMessage) { + const isMLSProtocol = this.protocol === ConversationProtocol.MLS; + const isE2EIVerification = + isMLSProtocol && messageEntity?.type === ClientEvent.CONVERSATION.E2EI_VERIFICATION; + + if (isMissedCall || isPing || isMessage || isE2EIVerification) { unreadState.allMessages.push(messageEntity as ContentMessage); } diff --git a/src/script/entity/message/E2EIVerificationMessage.ts b/src/script/entity/message/E2EIVerificationMessage.ts new file mode 100644 index 00000000000..7aefd6aac4e --- /dev/null +++ b/src/script/entity/message/E2EIVerificationMessage.ts @@ -0,0 +1,37 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {replaceLink, t} from 'Util/LocalizerUtil'; + +import {SystemMessage} from './SystemMessage'; + +import {Config} from '../../Config'; +import {SystemMessageType} from '../../message/SystemMessageType'; + +export class E2EIVerificationMessage extends SystemMessage { + constructor() { + super(); + this.system_message_type = SystemMessageType.E2EI_VERIFIED; + this.caption = t( + 'tooltipConversationAllE2EIVerified', + {}, + replaceLink(Config.getConfig().URL.SUPPORT.E2EI_VERIFICATION), + ); + } +} diff --git a/src/script/event/Client.ts b/src/script/event/Client.ts index b06d78c95ec..cc3ae714555 100644 --- a/src/script/event/Client.ts +++ b/src/script/event/Client.ts @@ -48,6 +48,7 @@ export enum CONVERSATION { FEDERATION_STOP = 'conversation.federation-stop', VOICE_CHANNEL_ACTIVATE = 'conversation.voice-channel-activate', VOICE_CHANNEL_DEACTIVATE = 'conversation.voice-channel-deactivate', + E2EI_VERIFICATION = 'conversation.e2ei-verification', } export enum USER { diff --git a/src/script/event/EventTypeHandling.ts b/src/script/event/EventTypeHandling.ts index 3c65fe51c90..915aad61dc8 100644 --- a/src/script/event/EventTypeHandling.ts +++ b/src/script/event/EventTypeHandling.ts @@ -62,5 +62,6 @@ export const EventTypeHandling = { ClientEvent.CONVERSATION.VERIFICATION, ClientEvent.CONVERSATION.VOICE_CHANNEL_ACTIVATE, ClientEvent.CONVERSATION.VOICE_CHANNEL_DEACTIVATE, + ClientEvent.CONVERSATION.E2EI_VERIFICATION, ], }; diff --git a/src/script/main/app.ts b/src/script/main/app.ts index 8d8f92a4e0d..b5947b4018b 100644 --- a/src/script/main/app.ts +++ b/src/script/main/app.ts @@ -58,7 +58,10 @@ import {ConnectionRepository} from '../connection/ConnectionRepository'; import {ConnectionService} from '../connection/ConnectionService'; import {ConversationRepository} from '../conversation/ConversationRepository'; import {ConversationService} from '../conversation/ConversationService'; +import {ConversationVerificationState} from '../conversation/ConversationVerificationState'; import {registerMLSConversationVerificationStateHandler} from '../conversation/ConversationVerificationStateHandler'; +import {OnConversationVerificationStateChange} from '../conversation/ConversationVerificationStateHandler/shared'; +import {EventBuilder} from '../conversation/EventBuilder'; import {MessageRepository} from '../conversation/MessageRepository'; import {CryptographyRepository} from '../cryptography/CryptographyRepository'; import {User} from '../entity/User'; @@ -371,8 +374,9 @@ export class App { if (!localClient) { throw new ClientError(CLIENT_ERROR_TYPE.NO_VALID_CLIENT, 'Client has been deleted on backend'); } + if (supportsMLS()) { - registerMLSConversationVerificationStateHandler(); + registerMLSConversationVerificationStateHandler(this.updateConversationVerificationState); } this.core.on(CoreEvents.NEW_SESSION, ({userId, clientId}) => { @@ -802,4 +806,18 @@ export class App { doRedirect(signOutReason); } + + private updateConversationVerificationState: OnConversationVerificationStateChange = async ({ + conversationEntity, + conversationVerificationState, + }) => { + switch (conversationVerificationState) { + case ConversationVerificationState.VERIFIED: + const allVerifiedEvent = EventBuilder.buildAllE2EIVerified(conversationEntity); + await this.repository.event.injectEvent(allVerifiedEvent); + break; + default: + break; + } + }; } diff --git a/src/script/message/SystemMessageType.ts b/src/script/message/SystemMessageType.ts index 8a638ea4148..ccea1db3d59 100644 --- a/src/script/message/SystemMessageType.ts +++ b/src/script/message/SystemMessageType.ts @@ -34,4 +34,5 @@ export enum SystemMessageType { MEMBER_LEAVE = 'leave', NORMAL = 'normal', MLS_CONVERSATION_RECOVERED = 'mls-conversation-recovered', + E2EI_VERIFIED = 'e2ei-verified', } diff --git a/src/style/content/conversation/message-list.less b/src/style/content/conversation/message-list.less index d9f852192d4..e64075a97b2 100644 --- a/src/style/content/conversation/message-list.less +++ b/src/style/content/conversation/message-list.less @@ -156,7 +156,7 @@ &--svg { line-height: 0; - svg path { + svg:not(.filled) path { fill: var(--foreground); } } @@ -864,3 +864,11 @@ background-color: var(--message-actions-background-hover); } } + +.system-message-caption { + & > a { + color: inherit; + font-weight: @font-weight-bold; + text-decoration: underline; + } +} From 0de8ae36bd0a8008da6324aa7cb170bced5d0686 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 16:58:10 +0000 Subject: [PATCH 60/95] chore(deps): Bump crowdin/github-action from 1.15.1 to 1.15.2 (#16227) Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.15.1 to 1.15.2. - [Release notes](https://github.com/crowdin/github-action/releases) - [Commits](https://github.com/crowdin/github-action/compare/v1.15.1...v1.15.2) --- updated-dependencies: - dependency-name: crowdin/github-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/sync_translations.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_translations.yml b/.github/workflows/sync_translations.yml index 86b5b3cab1b..be880a6190c 100644 --- a/.github/workflows/sync_translations.yml +++ b/.github/workflows/sync_translations.yml @@ -37,7 +37,7 @@ jobs: run: yarn translate:merge - name: Download translations - uses: crowdin/github-action@v1.15.1 + uses: crowdin/github-action@v1.15.2 env: GITHUB_TOKEN: ${{secrets.OTTO_THE_BOT_GH_TOKEN}} CROWDIN_PROJECT_ID: 342359 From 1f988e5c0fd04a52e2b66c29450b8da2811df81e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 15:18:30 +0000 Subject: [PATCH 61/95] chore(deps): Bump @wireapp/commons from 5.2.2 to 5.2.3 in /server (#16229) Bumps [@wireapp/commons](https://github.com/wireapp/wire-web-packages) from 5.2.2 to 5.2.3. - [Commits](https://github.com/wireapp/wire-web-packages/compare/@wireapp/commons@5.2.2...@wireapp/commons@5.2.3) --- updated-dependencies: - dependency-name: "@wireapp/commons" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- server/package.json | 2 +- server/yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/server/package.json b/server/package.json index f8dc3c98f09..82c6888dd3b 100644 --- a/server/package.json +++ b/server/package.json @@ -4,7 +4,7 @@ "main": "dist/index.js", "license": "GPL-3.0", "dependencies": { - "@wireapp/commons": "5.2.2", + "@wireapp/commons": "5.2.3", "dotenv": "16.3.1", "dotenv-extended": "2.9.0", "express": "4.18.2", diff --git a/server/yarn.lock b/server/yarn.lock index d889826c82b..2ec3609de7c 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -1154,15 +1154,15 @@ __metadata: languageName: node linkType: hard -"@wireapp/commons@npm:5.2.2": - version: 5.2.2 - resolution: "@wireapp/commons@npm:5.2.2" +"@wireapp/commons@npm:5.2.3": + version: 5.2.3 + resolution: "@wireapp/commons@npm:5.2.3" dependencies: ansi-regex: 5.0.1 fs-extra: 11.1.0 logdown: 3.3.1 platform: 1.3.6 - checksum: ae78630f8299eaae9ee136136981dabdcb4c100c43ec1430882fc154ae21e9fdb17999c1b892140ca5547625e7f502ba83e85ecf62312c8525098865032b6928 + checksum: 3cc801e52318db7cb474dcc22809652a91d39916124ed88de7cd413006d62893b84ecb5700ac3f74953a26aea311a3895ebb53b20ab4508f503ca1151c82be9f languageName: node linkType: hard @@ -5564,7 +5564,7 @@ __metadata: "@types/hbs": 4.0.4 "@types/jest": ^29.5.8 "@types/node": 18.11.18 - "@wireapp/commons": 5.2.2 + "@wireapp/commons": 5.2.3 dotenv: 16.3.1 dotenv-extended: 2.9.0 express: 4.18.2 From e5cc93e5c1fa94732347cd8e89251e8af17698a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 15:53:28 +0000 Subject: [PATCH 62/95] chore(deps-dev): Bump the eslint group with 2 updates (#16230) Bumps the eslint group with 2 updates: [eslint](https://github.com/eslint/eslint) and [@types/eslint](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/eslint). Updates `eslint` from 8.53.0 to 8.54.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.53.0...v8.54.0) Updates `@types/eslint` from 8.44.4 to 8.44.7 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/eslint) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor dependency-group: eslint - dependency-name: "@types/eslint" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: eslint ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 3d549e276a5..3bc2ad50fce 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "dexie": "3.2.4", "dotenv": "16.3.1", "dpdm": "3.14.0", - "eslint": "^8.53.0", + "eslint": "^8.54.0", "eslint-plugin-prettier": "^5.0.1", "fake-indexeddb": "4.0.2", "generate-changelog": "1.8.0", diff --git a/yarn.lock b/yarn.lock index 1cd62a2608a..d28b8b6e081 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3446,10 +3446,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.53.0": - version: 8.53.0 - resolution: "@eslint/js@npm:8.53.0" - checksum: e0d5cfb0000aaee237c8e6d6d6e366faa60b1ef7f928ce17778373aa44d3b886368f6d5e1f97f913f0f16801aad016db8b8df78418c9d18825c15590328028af +"@eslint/js@npm:8.54.0": + version: 8.54.0 + resolution: "@eslint/js@npm:8.54.0" + checksum: 6d88a6f711ef0133566b5340e3178a178fbb297585766460f195d0a9db85688f1e5cf8559fd5748aeb3131e2096c66595b323d8edab22df015acda68f1ebde92 languageName: node linkType: hard @@ -9860,14 +9860,14 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.53.0": - version: 8.53.0 - resolution: "eslint@npm:8.53.0" +"eslint@npm:^8.54.0": + version: 8.54.0 + resolution: "eslint@npm:8.54.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.6.1 "@eslint/eslintrc": ^2.1.3 - "@eslint/js": 8.53.0 + "@eslint/js": 8.54.0 "@humanwhocodes/config-array": ^0.11.13 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -9904,7 +9904,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 2da808655c7aa4b33f8970ba30d96b453c3071cc4d6cd60d367163430677e32ff186b65270816b662d29139283138bff81f28dddeb2e73265495245a316ed02c + checksum: 7e876e9da2a18a017271cf3733d05a3dfbbe469272d75753408c6ea5b1646c71c6bb18cb91e10ca930144c32c1ce3701e222f1ae6784a3975a69f8f8aa68e49f languageName: node linkType: hard @@ -19380,7 +19380,7 @@ __metadata: dotenv: 16.3.1 dpdm: 3.14.0 emoji-picker-react: 4.5.15 - eslint: ^8.53.0 + eslint: ^8.54.0 eslint-plugin-prettier: ^5.0.1 fake-indexeddb: 4.0.2 generate-changelog: 1.8.0 From 447b3a6c874692c1269cc5217f799236055cc0f0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 15:54:54 +0000 Subject: [PATCH 63/95] chore(deps): Bump the datadog group with 2 updates (#16231) Bumps the datadog group with 2 updates: [@datadog/browser-logs](https://github.com/DataDog/browser-sdk/tree/HEAD/packages/logs) and [@datadog/browser-rum](https://github.com/DataDog/browser-sdk/tree/HEAD/packages/rum). Updates `@datadog/browser-logs` from 5.2.0 to 5.3.0 - [Changelog](https://github.com/DataDog/browser-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/DataDog/browser-sdk/commits/v5.3.0/packages/logs) Updates `@datadog/browser-rum` from 5.2.0 to 5.3.0 - [Changelog](https://github.com/DataDog/browser-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/DataDog/browser-sdk/commits/v5.3.0/packages/rum) --- updated-dependencies: - dependency-name: "@datadog/browser-logs" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: datadog - dependency-name: "@datadog/browser-rum" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: datadog ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 4 ++-- yarn.lock | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 3bc2ad50fce..6c0d2b16dc8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "@datadog/browser-logs": "^5.2.0", - "@datadog/browser-rum": "^5.2.0", + "@datadog/browser-logs": "^5.3.0", + "@datadog/browser-rum": "^5.3.0", "@emotion/react": "11.11.1", "@lexical/history": "0.12.2", "@lexical/react": "0.12.2", diff --git a/yarn.lock b/yarn.lock index d28b8b6e081..947421e11a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3198,48 +3198,48 @@ __metadata: languageName: node linkType: hard -"@datadog/browser-core@npm:5.2.0": - version: 5.2.0 - resolution: "@datadog/browser-core@npm:5.2.0" - checksum: a53643ef9466c97abfa90d6b74deb5d00a9272605c29f3e9b339bc9d8ed1ead66d0bf9059a0691c3ac3df23aff734c7d899bd4656c3f0736bdc2b5d299ccaeb4 +"@datadog/browser-core@npm:5.3.0": + version: 5.3.0 + resolution: "@datadog/browser-core@npm:5.3.0" + checksum: 800ae61ae07f95cea33b678cf54d176326e6dcb244d20412d28c7bd3e2c14cec06ec83159b8051a0f91bdbe4693d938c26ea3e599c4978ea8abbfcf0199e9aef languageName: node linkType: hard -"@datadog/browser-logs@npm:^5.2.0": - version: 5.2.0 - resolution: "@datadog/browser-logs@npm:5.2.0" +"@datadog/browser-logs@npm:^5.3.0": + version: 5.3.0 + resolution: "@datadog/browser-logs@npm:5.3.0" dependencies: - "@datadog/browser-core": 5.2.0 + "@datadog/browser-core": 5.3.0 peerDependencies: - "@datadog/browser-rum": 5.2.0 + "@datadog/browser-rum": 5.3.0 peerDependenciesMeta: "@datadog/browser-rum": optional: true - checksum: 3da7406c5185bfc74ce0368c436dc4b7161de8107e1c447171f9e8cfaeb64f7a5acea548227997cc05f23f7765468a8de83684c4d5c7e64e615b684e20d076ad + checksum: 66e677c629d1221f0512881da8fbd875977be47ebb1f8c469169966af29e5995a8e57c79ffcefa8239a09638f666d616eb1d20120d78ba3e99fe0df4cc85f8d6 languageName: node linkType: hard -"@datadog/browser-rum-core@npm:5.2.0": - version: 5.2.0 - resolution: "@datadog/browser-rum-core@npm:5.2.0" +"@datadog/browser-rum-core@npm:5.3.0": + version: 5.3.0 + resolution: "@datadog/browser-rum-core@npm:5.3.0" dependencies: - "@datadog/browser-core": 5.2.0 - checksum: d5b4c3579645810b623b0bacb3a816ff81df3138684a05ddf485d832c912db650529ae03670afd2961ba0abc3e233d1875f1de9508654b1a6532b65b1b7737ee + "@datadog/browser-core": 5.3.0 + checksum: 08dcc6d334c4ef663b7439d9e200b4698264406681d0d0b5ec0d37a67180efeddf25da6f7dc90d0de66047a7f9a8b97761599a0e6a2917455c2132c6e8f67171 languageName: node linkType: hard -"@datadog/browser-rum@npm:^5.2.0": - version: 5.2.0 - resolution: "@datadog/browser-rum@npm:5.2.0" +"@datadog/browser-rum@npm:^5.3.0": + version: 5.3.0 + resolution: "@datadog/browser-rum@npm:5.3.0" dependencies: - "@datadog/browser-core": 5.2.0 - "@datadog/browser-rum-core": 5.2.0 + "@datadog/browser-core": 5.3.0 + "@datadog/browser-rum-core": 5.3.0 peerDependencies: - "@datadog/browser-logs": 5.2.0 + "@datadog/browser-logs": 5.3.0 peerDependenciesMeta: "@datadog/browser-logs": optional: true - checksum: fd7266b71edda01d5d1ee183872e10fd68464f78b01156d2dcc65df1df693500986afbb6af0513ce6ba0b2c9e19a35aa264fa3c174eea3161bbc360badbdaaba + checksum: 68fbb3122a9ffbf5be56434b401266e1090578c2d0e03abeb44d80ad811417148207b2ca47f7c075573535791081798389f6db942513d8dd0b4f616be5ad1fbb languageName: node linkType: hard @@ -19312,8 +19312,8 @@ __metadata: "@babel/preset-env": 7.23.3 "@babel/preset-react": 7.23.3 "@babel/preset-typescript": 7.23.3 - "@datadog/browser-logs": ^5.2.0 - "@datadog/browser-rum": ^5.2.0 + "@datadog/browser-logs": ^5.3.0 + "@datadog/browser-rum": ^5.3.0 "@emotion/eslint-plugin": ^11.11.0 "@emotion/react": 11.11.1 "@faker-js/faker": 8.2.0 From cc0bdf1f9a90ee096645df4bf32dad036eb90a47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 15:55:40 +0000 Subject: [PATCH 64/95] chore(deps-dev): Bump @wireapp/copy-config from 2.1.10 to 2.1.11 (#16232) Bumps [@wireapp/copy-config](https://github.com/wireapp/wire-web-packages) from 2.1.10 to 2.1.11. - [Commits](https://github.com/wireapp/wire-web-packages/compare/@wireapp/copy-config@2.1.10...@wireapp/copy-config@2.1.11) --- updated-dependencies: - dependency-name: "@wireapp/copy-config" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 23 +++++++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 6c0d2b16dc8..2a1f0d87bd0 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "@types/speakingurl": "13.0.6", "@types/underscore": "1.11.14", "@types/webpack-env": "1.18.4", - "@wireapp/copy-config": "2.1.10", + "@wireapp/copy-config": "2.1.11", "@wireapp/eslint-config": "3.0.4", "@wireapp/prettier-config": "0.6.3", "@wireapp/store-engine": "^5.1.4", diff --git a/yarn.lock b/yarn.lock index 947421e11a1..ed3a92c8153 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6192,11 +6192,11 @@ __metadata: languageName: node linkType: hard -"@wireapp/copy-config@npm:2.1.10": - version: 2.1.10 - resolution: "@wireapp/copy-config@npm:2.1.10" +"@wireapp/copy-config@npm:2.1.11": + version: 2.1.11 + resolution: "@wireapp/copy-config@npm:2.1.11" dependencies: - axios: 1.5.1 + axios: 1.6.1 copy: 0.3.2 cosmiconfig: 8.3.6 fs-extra: 11.1.0 @@ -6204,7 +6204,7 @@ __metadata: logdown: 3.3.1 bin: copy-config: lib/cli.js - checksum: 5b7fa44b067c51dc567d29ebcb9e2fa87cd5464fb4bb5fcef93d4fa5596cf729d1549f0c52f2a9241f0e415678af56765925b8329f49c7efe6e93dcc97bdf1b2 + checksum: 60c20c894ba56eedef2d02e81a79756eaf0c9a9a5670d569cc51aef494fd38363ba441b1ea882e1d9919b4e4a97c086fc23ccd972cdc4c9360311a0e0180a565 languageName: node linkType: hard @@ -7108,6 +7108,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:1.6.1": + version: 1.6.1 + resolution: "axios@npm:1.6.1" + dependencies: + follow-redirects: ^1.15.0 + form-data: ^4.0.0 + proxy-from-env: ^1.1.0 + checksum: 573f03f59b7487d54551b16f5e155d1d130ad4864ed32d1da93d522b78a57123b34e3bde37f822a65ee297e79f1db840f9ad6514addff50d3cbf5caeed39e8dc + languageName: node + linkType: hard + "axobject-query@npm:^3.1.1": version: 3.2.1 resolution: "axobject-query@npm:3.2.1" @@ -19351,7 +19362,7 @@ __metadata: "@types/webpack-env": 1.18.4 "@wireapp/avs": 9.5.2 "@wireapp/commons": 5.2.2 - "@wireapp/copy-config": 2.1.10 + "@wireapp/copy-config": 2.1.11 "@wireapp/core": 42.19.2 "@wireapp/eslint-config": 3.0.4 "@wireapp/prettier-config": 0.6.3 From 03a0403aa8799b6e3c69e62673972ad6c623a872 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 15:58:56 +0000 Subject: [PATCH 65/95] chore(deps): Bump react-intl from 6.5.4 to 6.5.5 (#16233) Bumps [react-intl](https://github.com/formatjs/formatjs) from 6.5.4 to 6.5.5. - [Release notes](https://github.com/formatjs/formatjs/releases) - [Commits](https://github.com/formatjs/formatjs/compare/react-intl@6.5.4...react-intl@6.5.5) --- updated-dependencies: - dependency-name: react-intl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 116 +++++++++++++++++++++++++-------------------------- 2 files changed, 59 insertions(+), 59 deletions(-) diff --git a/package.json b/package.json index 2a1f0d87bd0..6bacfa9c06f 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-error-boundary": "4.0.11", - "react-intl": "6.5.4", + "react-intl": "6.5.5", "react-redux": "8.1.3", "react-router": "6.18.0", "react-router-dom": "6.18.0", diff --git a/yarn.lock b/yarn.lock index ed3a92c8153..fe9ea91ea40 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3500,13 +3500,13 @@ __metadata: languageName: node linkType: hard -"@formatjs/ecma402-abstract@npm:1.17.4": - version: 1.17.4 - resolution: "@formatjs/ecma402-abstract@npm:1.17.4" +"@formatjs/ecma402-abstract@npm:1.18.0": + version: 1.18.0 + resolution: "@formatjs/ecma402-abstract@npm:1.18.0" dependencies: - "@formatjs/intl-localematcher": 0.5.1 + "@formatjs/intl-localematcher": 0.5.2 tslib: ^2.4.0 - checksum: cd3c669e339252db61a2238d5852bba553935bb4bdf10216b9cbfe4691f439a77c72c7fc9d4f86713394c2c54ec8c703fb5cdadb71bfa186655431352b2e0e51 + checksum: 22be7f02397d565de621bba5d57135bf7a360b4f3f04e7d75194854f47c22fa8cc2e43ede2c6d1dea885d3cb5df6f58e82ea7ba457a7b3e208403372cd6b90f3 languageName: node linkType: hard @@ -3519,75 +3519,75 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-messageformat-parser@npm:2.7.2": - version: 2.7.2 - resolution: "@formatjs/icu-messageformat-parser@npm:2.7.2" +"@formatjs/icu-messageformat-parser@npm:2.7.3": + version: 2.7.3 + resolution: "@formatjs/icu-messageformat-parser@npm:2.7.3" dependencies: - "@formatjs/ecma402-abstract": 1.17.4 - "@formatjs/icu-skeleton-parser": 1.6.4 + "@formatjs/ecma402-abstract": 1.18.0 + "@formatjs/icu-skeleton-parser": 1.7.0 tslib: ^2.4.0 - checksum: b6b793573f22a78eded9b7c5731a058a97b0f2b7fb47536951d15018c4dbcec61cbde5203af287abe6205724cbdef757a067af701a6d99c38a6142df92d161a9 + checksum: 3efd07e26dfd768cfb4ebee72787f150eb7c65849610d0b08b09ffd26f127ce2a7027dc901a3a2ee536597a26bce289bff3f3d9de8247c274e364c0666f685d6 languageName: node linkType: hard -"@formatjs/icu-skeleton-parser@npm:1.6.4": - version: 1.6.4 - resolution: "@formatjs/icu-skeleton-parser@npm:1.6.4" +"@formatjs/icu-skeleton-parser@npm:1.7.0": + version: 1.7.0 + resolution: "@formatjs/icu-skeleton-parser@npm:1.7.0" dependencies: - "@formatjs/ecma402-abstract": 1.17.4 + "@formatjs/ecma402-abstract": 1.18.0 tslib: ^2.4.0 - checksum: 776b6cf73a8f5333c873e83b4c3a3f2aa63847c7c440af2fa6296db970a0d9524c3b5691a5d20327fbcf04cd5a0ea3ea3b829520cfa538019ab2576e9d96e026 + checksum: a461d95b0a39a52d2acb776cb60818188f32ca5d8be7d97440b892bb30564e852410c3fffe96c4c5e6793934f3f694958da8297bd7e3b0cbe114f11223a57013 languageName: node linkType: hard -"@formatjs/intl-displaynames@npm:6.6.3": - version: 6.6.3 - resolution: "@formatjs/intl-displaynames@npm:6.6.3" +"@formatjs/intl-displaynames@npm:6.6.4": + version: 6.6.4 + resolution: "@formatjs/intl-displaynames@npm:6.6.4" dependencies: - "@formatjs/ecma402-abstract": 1.17.4 - "@formatjs/intl-localematcher": 0.5.1 + "@formatjs/ecma402-abstract": 1.18.0 + "@formatjs/intl-localematcher": 0.5.2 tslib: ^2.4.0 - checksum: ac8d807c4b5287fedd057b60e84dc1bdeafdb25207c1286244ff1c21eceacb1c3882fa1e8c0631400d83509330979f3d3ae18f63883649f43856f0ef606f2ca7 + checksum: f1300ac7e7cc05041464a7f5a19ced83361fb7846d4c2727ede3c3bae836f0995565e44128b9de8182f07c13e8594d4c84c73c375824c9ad991031c96b1cd141 languageName: node linkType: hard -"@formatjs/intl-listformat@npm:7.5.2": - version: 7.5.2 - resolution: "@formatjs/intl-listformat@npm:7.5.2" +"@formatjs/intl-listformat@npm:7.5.3": + version: 7.5.3 + resolution: "@formatjs/intl-listformat@npm:7.5.3" dependencies: - "@formatjs/ecma402-abstract": 1.17.4 - "@formatjs/intl-localematcher": 0.5.1 + "@formatjs/ecma402-abstract": 1.18.0 + "@formatjs/intl-localematcher": 0.5.2 tslib: ^2.4.0 - checksum: 45e09f88fe92604c3705b62e1bc1b353c74c63b44784cfb20ad2017c0d01dde8737f53bab0fc60d133b964666cef09ba187e8972bb2bc2ec49678d25c971e768 + checksum: c3f9ba6b6bf400e3f86da652b303db093516cae85c4dafed7ae675e905bbbcd595db402e42601f50ea1feba9229848a63602ab39ac85553df622b7645f111969 languageName: node linkType: hard -"@formatjs/intl-localematcher@npm:0.5.1": - version: 0.5.1 - resolution: "@formatjs/intl-localematcher@npm:0.5.1" +"@formatjs/intl-localematcher@npm:0.5.2": + version: 0.5.2 + resolution: "@formatjs/intl-localematcher@npm:0.5.2" dependencies: tslib: ^2.4.0 - checksum: 8a2a00f6a794d9fb1a0e605e80e69e44271b8f34465e9436c198719338084ce71a0e8e73610d9c751eea15586c5a24ef539bd2b18d8bee94971cf920fc08cc2b + checksum: a741d69e9d3b71bee19726484de4a296711d96dc27f588d995b9e2079d3bc5d06370b6e84136003197d558d45f9faf507321627a78d8cd986705b78ec701c016 languageName: node linkType: hard -"@formatjs/intl@npm:2.9.8": - version: 2.9.8 - resolution: "@formatjs/intl@npm:2.9.8" +"@formatjs/intl@npm:2.9.9": + version: 2.9.9 + resolution: "@formatjs/intl@npm:2.9.9" dependencies: - "@formatjs/ecma402-abstract": 1.17.4 + "@formatjs/ecma402-abstract": 1.18.0 "@formatjs/fast-memoize": 2.2.0 - "@formatjs/icu-messageformat-parser": 2.7.2 - "@formatjs/intl-displaynames": 6.6.3 - "@formatjs/intl-listformat": 7.5.2 - intl-messageformat: 10.5.7 + "@formatjs/icu-messageformat-parser": 2.7.3 + "@formatjs/intl-displaynames": 6.6.4 + "@formatjs/intl-listformat": 7.5.3 + intl-messageformat: 10.5.8 tslib: ^2.4.0 peerDependencies: typescript: 5 peerDependenciesMeta: typescript: optional: true - checksum: 0da26f5f61307636e0d84c33bbb3e0cc03344b7896c9235b61ec1fc2e1a7af5de2316ed9115c92bc8da876ef159fa809298162b9edca567f12402808414aab64 + checksum: a235f5366834c751313763071036a321a24f429435de48a8f30289111ef96c4109ee65507e0aee82365629673744aaf9a017c38c2998d8e2df18514fd79811e4 languageName: node linkType: hard @@ -11510,15 +11510,15 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:10.5.7": - version: 10.5.7 - resolution: "intl-messageformat@npm:10.5.7" +"intl-messageformat@npm:10.5.8": + version: 10.5.8 + resolution: "intl-messageformat@npm:10.5.8" dependencies: - "@formatjs/ecma402-abstract": 1.17.4 + "@formatjs/ecma402-abstract": 1.18.0 "@formatjs/fast-memoize": 2.2.0 - "@formatjs/icu-messageformat-parser": 2.7.2 + "@formatjs/icu-messageformat-parser": 2.7.3 tslib: ^2.4.0 - checksum: 2f0bb4520b2e69f6ad83ba04ce907fc8b953e5d52a52414997ebb1da4af60123e50962f2c8687ce6e7f49eae7c81afca69769a35f70ef01fd18e24c2302e3c78 + checksum: f0fc0c4ce4f711ac46227e1b41e1494bfadfd047e4581299ef4fbf79dcbd85fcc9851e7051432a02239fab9673c212a50f03060b5f83a930c286d4ba6c2261de languageName: node linkType: hard @@ -16243,19 +16243,19 @@ __metadata: languageName: node linkType: hard -"react-intl@npm:6.5.4": - version: 6.5.4 - resolution: "react-intl@npm:6.5.4" +"react-intl@npm:6.5.5": + version: 6.5.5 + resolution: "react-intl@npm:6.5.5" dependencies: - "@formatjs/ecma402-abstract": 1.17.4 - "@formatjs/icu-messageformat-parser": 2.7.2 - "@formatjs/intl": 2.9.8 - "@formatjs/intl-displaynames": 6.6.3 - "@formatjs/intl-listformat": 7.5.2 + "@formatjs/ecma402-abstract": 1.18.0 + "@formatjs/icu-messageformat-parser": 2.7.3 + "@formatjs/intl": 2.9.9 + "@formatjs/intl-displaynames": 6.6.4 + "@formatjs/intl-listformat": 7.5.3 "@types/hoist-non-react-statics": ^3.3.1 "@types/react": 16 || 17 || 18 hoist-non-react-statics: ^3.3.2 - intl-messageformat: 10.5.7 + intl-messageformat: 10.5.8 tslib: ^2.4.0 peerDependencies: react: ^16.6.0 || 17 || 18 @@ -16263,7 +16263,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 61d7605078c921c437a57a92c5017cb4e845808c0692a1bfb75a72c5748de63fdb4e8057fe1ec2fce66eb41d3bec76bf0981e7fd16cf70a434c1dee03bd29f9e + checksum: 3413dc812f5a8723a9019905251eafae78fd3c2675291d97dd2ae0d105a52602c4be07b45e2ddeca7d42c5eb2b7b8bfe6b59719a9bdb0679fa497568b4e9d3e9 languageName: node linkType: hard @@ -19437,7 +19437,7 @@ __metadata: react: 18.2.0 react-dom: 18.2.0 react-error-boundary: 4.0.11 - react-intl: 6.5.4 + react-intl: 6.5.5 react-redux: 8.1.3 react-router: 6.18.0 react-router-dom: 6.18.0 From ccbe23b253f3255534afa7e2a3c0b2171b967e21 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:00:15 +0000 Subject: [PATCH 66/95] chore(deps): Bump @lexical/react from 0.12.2 to 0.12.4 (#16235) Bumps [@lexical/react](https://github.com/facebook/lexical/tree/HEAD/packages/lexical-react) from 0.12.2 to 0.12.4. - [Release notes](https://github.com/facebook/lexical/releases) - [Changelog](https://github.com/facebook/lexical/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/lexical/commits/v0.12.4/packages/lexical-react) --- updated-dependencies: - dependency-name: "@lexical/react" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 286 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 172 insertions(+), 116 deletions(-) diff --git a/package.json b/package.json index 6bacfa9c06f..712a87cb592 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "@datadog/browser-rum": "^5.3.0", "@emotion/react": "11.11.1", "@lexical/history": "0.12.2", - "@lexical/react": "0.12.2", + "@lexical/react": "0.12.4", "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.5.2", "@wireapp/commons": "5.2.2", diff --git a/yarn.lock b/yarn.lock index fe9ea91ea40..c0b3991a328 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4374,49 +4374,49 @@ __metadata: languageName: node linkType: hard -"@lexical/clipboard@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/clipboard@npm:0.12.2" +"@lexical/clipboard@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/clipboard@npm:0.12.4" dependencies: - "@lexical/html": 0.12.2 - "@lexical/list": 0.12.2 - "@lexical/selection": 0.12.2 - "@lexical/utils": 0.12.2 + "@lexical/html": 0.12.4 + "@lexical/list": 0.12.4 + "@lexical/selection": 0.12.4 + "@lexical/utils": 0.12.4 peerDependencies: - lexical: 0.12.2 - checksum: 15e529b9664b0777f52f5967b2ed59b6842f16442bd04195da8d5843369a69623a864854ae37e2d843af4d1a661194efac51b058f42ce680ace954200f731ab1 + lexical: 0.12.4 + checksum: bbd01c9901e03a56888f393499f44d7565a2f5c8f07cc37fb1b5fa92bc8eac483f8be7dc7cc6539ceba6066241559dacced4138913af36652b422ba3733fa18a languageName: node linkType: hard -"@lexical/code@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/code@npm:0.12.2" +"@lexical/code@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/code@npm:0.12.4" dependencies: - "@lexical/utils": 0.12.2 + "@lexical/utils": 0.12.4 prismjs: ^1.27.0 peerDependencies: - lexical: 0.12.2 - checksum: 3c99ac8fb19454f7d7317bc71690b10301df18d64ecc27c65ccd2ec4e999983952049f0c0713eb2000a1ddd60708e8eb4229dfd50bdd6601b9912570c986edb5 + lexical: 0.12.4 + checksum: 555315703f93bd0b4545f48547c4af3910fab6d367092fbe4dcacc7663ea886464ffda943d18c395cdcbeb6b32a6979d6e14512950042413525b7ebbf4b85213 languageName: node linkType: hard -"@lexical/dragon@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/dragon@npm:0.12.2" +"@lexical/dragon@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/dragon@npm:0.12.4" peerDependencies: - lexical: 0.12.2 - checksum: 0f7f3b6cf5727b93082c4a505c4784c85fce0ec2c80a97df2b78570d2589cbe6d42d6d3d1a098bfb191ae477fd78bb7b15c740254a9ee7c76bf988503b991b95 + lexical: 0.12.4 + checksum: 28e95c0669725751e34b27f2e31e21ed621a2de536918812c179ba478432d103bc9b3e1bfe828dc3990448068f42a34ae01ac48a685423dbe138982cff44c632 languageName: node linkType: hard -"@lexical/hashtag@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/hashtag@npm:0.12.2" +"@lexical/hashtag@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/hashtag@npm:0.12.4" dependencies: - "@lexical/utils": 0.12.2 + "@lexical/utils": 0.12.4 peerDependencies: - lexical: 0.12.2 - checksum: 185e8afd8277c60fe495bb02c5321636f1c2575dc3c276c0fa5174f55ec79357f30b3678fea24fe9109aa9308162f5555f5d8e1ede7b6df32dc2023701997630 + lexical: 0.12.4 + checksum: 25c403e2b1482834af20275fde081e803967cdee9d635c2d2eae19ce16cc5a27643829c533c544acad4eebf9763abf6f351c63c1d0b0b6e32fc321d1d5c0e39c languageName: node linkType: hard @@ -4431,25 +4431,37 @@ __metadata: languageName: node linkType: hard -"@lexical/html@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/html@npm:0.12.2" +"@lexical/history@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/history@npm:0.12.4" dependencies: - "@lexical/selection": 0.12.2 + "@lexical/utils": 0.12.4 peerDependencies: - lexical: 0.12.2 - checksum: a3538d923f2ffd5d0b5db186016d5cdeab21f42c55ac40d393b7cfbd59f1e42f12515b79ce291eafa57d67960995bbe90bc46a5042a177753f4acccfc1746fa1 + lexical: 0.12.4 + checksum: 101a94052ef4f129baa954826b1e4d5553ef65b52c9cf16e7004f5ba1b5fe51a76c6f9d5169cb4d3968fdcd088310c41e9d281a8adeaf2e0915d12d844ef861a languageName: node linkType: hard -"@lexical/link@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/link@npm:0.12.2" +"@lexical/html@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/html@npm:0.12.4" dependencies: - "@lexical/utils": 0.12.2 + "@lexical/selection": 0.12.4 + "@lexical/utils": 0.12.4 peerDependencies: - lexical: 0.12.2 - checksum: fab9b1a62deb7b232b67135696c4faf1a7738be415f8e993c56298a45cdbdbe0a04a8d2d71e3e7cc574c94b24aad8b93fb657d1553858c874c86d74916f16767 + lexical: 0.12.4 + checksum: 3dc05e459a54203682edb0443adcd21410a7f56f76c7c4c514fea84fdbe7c85267ce1d600425f01751c529ca7b84efde7ac82e472ac3f47a1d68da96faadef0b + languageName: node + linkType: hard + +"@lexical/link@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/link@npm:0.12.4" + dependencies: + "@lexical/utils": 0.12.4 + peerDependencies: + lexical: 0.12.4 + checksum: 206214255505d68e8d14e53dfcdf5fa71813cde94fa30b489440278df9560aab262385a7334b4b094384a0d316de50469a33133db606d2da23f33fec049107b4 languageName: node linkType: hard @@ -4464,102 +4476,113 @@ __metadata: languageName: node linkType: hard -"@lexical/mark@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/mark@npm:0.12.2" +"@lexical/list@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/list@npm:0.12.4" dependencies: - "@lexical/utils": 0.12.2 + "@lexical/utils": 0.12.4 peerDependencies: - lexical: 0.12.2 - checksum: aff24ec8ee4dc91e0ac9a3000cd2a7f6556f9755eb1af68aa3de94ef1a73405e4a90e0013d28d41c2887ef67d744154863d22a8b5bcc9b1ee1f9cac71f4af4b8 + lexical: 0.12.4 + checksum: 2a3e35b5c4304c03262d578b4e319444e7f52e785b60775d25d9a906e1227551a6dad06d6090ffd8fd96415b3e3201db16c9990579d598d6f94857fe51f914af languageName: node linkType: hard -"@lexical/markdown@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/markdown@npm:0.12.2" +"@lexical/mark@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/mark@npm:0.12.4" dependencies: - "@lexical/code": 0.12.2 - "@lexical/link": 0.12.2 - "@lexical/list": 0.12.2 - "@lexical/rich-text": 0.12.2 - "@lexical/text": 0.12.2 - "@lexical/utils": 0.12.2 + "@lexical/utils": 0.12.4 peerDependencies: - lexical: 0.12.2 - checksum: 8dd8b32fd00c43d0df2d5a5201c67cf5596083b2412319c0de882c67fe51c5cdafec709beb4ccac7aa80a650d1565b906087e985fb9e19530546e97a1b91282d + lexical: 0.12.4 + checksum: 6a7a5410a7dcd62facade8cf1c1aac463029ca1cbed0ab5a95c39ba5ffea682a438231dac2c6bd5e5a3229d0ff22619c33edc5670338f587c5614898d35a5ce9 languageName: node linkType: hard -"@lexical/offset@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/offset@npm:0.12.2" +"@lexical/markdown@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/markdown@npm:0.12.4" + dependencies: + "@lexical/code": 0.12.4 + "@lexical/link": 0.12.4 + "@lexical/list": 0.12.4 + "@lexical/rich-text": 0.12.4 + "@lexical/text": 0.12.4 + "@lexical/utils": 0.12.4 peerDependencies: - lexical: 0.12.2 - checksum: 4f3f609a6fc8f383279e491fa4a437060f49600ce8440ae381e896f5c67c9ad52d6264ba7c3ea6e86a66eb00ebcfe06e6bf122827242a6eb2d9c41c3f55d14c2 + lexical: 0.12.4 + checksum: a540a07c6fa0d3ffd7da2603376458463c106fe8f0e1e7f62535e23a77db27e253b8cce4bf6cb179ae810e8ee6bfff0bdd8eb03e6c3e0be5fc4f5ae6f96ace9f languageName: node linkType: hard -"@lexical/overflow@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/overflow@npm:0.12.2" +"@lexical/offset@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/offset@npm:0.12.4" peerDependencies: - lexical: 0.12.2 - checksum: ef0a8d517d22d9b13fe4a535e27be4be6a4e0f29056fe77d73b174ba1ce6e0b0af0a8f8dc401aee37ad4da65e4c15fd860f79dc3156c37aa3dee07c036ef9989 + lexical: 0.12.4 + checksum: a9f8c3d1bd43d927bafa1d7ba666d6d46982a0d285596bd23ff7eee679f74840f9e65f252937b1767bfc64dcaaee83a820f9c5662c295b74e3946173f520e322 languageName: node linkType: hard -"@lexical/plain-text@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/plain-text@npm:0.12.2" +"@lexical/overflow@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/overflow@npm:0.12.4" peerDependencies: - "@lexical/clipboard": 0.12.2 - "@lexical/selection": 0.12.2 - "@lexical/utils": 0.12.2 - lexical: 0.12.2 - checksum: f1142c075284bc7a654aa100585f3779575599a3b1305be26f2571dd98bc0eac0953a40eeea735da755a7fd0b9bb3d18e5dcfd3efae661c05abf52297039eaa4 + lexical: 0.12.4 + checksum: 559315fd8b31bbcaaf1ea7892debc71e52b9afd945c76fb02b271d4164014361db460398751ef355a74680886e131d1ef0e75d997d8973703b9584fe4cbaced3 languageName: node linkType: hard -"@lexical/react@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/react@npm:0.12.2" +"@lexical/plain-text@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/plain-text@npm:0.12.4" + peerDependencies: + "@lexical/clipboard": 0.12.4 + "@lexical/selection": 0.12.4 + "@lexical/utils": 0.12.4 + lexical: 0.12.4 + checksum: fb60d6a7b690c3d24830cbdff74652b27841253660b014e0d70ecd2bccb8208372024666a94211b366fd4db4a36adcf1d91edbede8ac84418846211ce29a5b5f + languageName: node + linkType: hard + +"@lexical/react@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/react@npm:0.12.4" dependencies: - "@lexical/clipboard": 0.12.2 - "@lexical/code": 0.12.2 - "@lexical/dragon": 0.12.2 - "@lexical/hashtag": 0.12.2 - "@lexical/history": 0.12.2 - "@lexical/link": 0.12.2 - "@lexical/list": 0.12.2 - "@lexical/mark": 0.12.2 - "@lexical/markdown": 0.12.2 - "@lexical/overflow": 0.12.2 - "@lexical/plain-text": 0.12.2 - "@lexical/rich-text": 0.12.2 - "@lexical/selection": 0.12.2 - "@lexical/table": 0.12.2 - "@lexical/text": 0.12.2 - "@lexical/utils": 0.12.2 - "@lexical/yjs": 0.12.2 + "@lexical/clipboard": 0.12.4 + "@lexical/code": 0.12.4 + "@lexical/dragon": 0.12.4 + "@lexical/hashtag": 0.12.4 + "@lexical/history": 0.12.4 + "@lexical/link": 0.12.4 + "@lexical/list": 0.12.4 + "@lexical/mark": 0.12.4 + "@lexical/markdown": 0.12.4 + "@lexical/overflow": 0.12.4 + "@lexical/plain-text": 0.12.4 + "@lexical/rich-text": 0.12.4 + "@lexical/selection": 0.12.4 + "@lexical/table": 0.12.4 + "@lexical/text": 0.12.4 + "@lexical/utils": 0.12.4 + "@lexical/yjs": 0.12.4 react-error-boundary: ^3.1.4 peerDependencies: - lexical: 0.12.2 + lexical: 0.12.4 react: ">=17.x" react-dom: ">=17.x" - checksum: 9a6a603116467f8ae477e4504c71a99a10148e18d64840f0835d527d653005f89bcc643e7d0dccfa07fc772b2158767620247f4b35c6dec403879ef91f2bf110 + checksum: 4b224a54619b60591cba118b75e415b4e48d1f528cd25f10e8f8928163aa9bb283a070a7813af9b6d573dcec97113d9e80c8de1edab0f3f8997bc2f979c7abdc languageName: node linkType: hard -"@lexical/rich-text@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/rich-text@npm:0.12.2" +"@lexical/rich-text@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/rich-text@npm:0.12.4" peerDependencies: - "@lexical/clipboard": 0.12.2 - "@lexical/selection": 0.12.2 - "@lexical/utils": 0.12.2 - lexical: 0.12.2 - checksum: b3ff3dbcb321cb1981de7f71c30fbf2ed643ac259fc360e1454af9e2f8c3567ef0ff157a7febc32c8cf3d133252d064b1c2ee5fa6e4ec83cd9bed9f7a236d5e3 + "@lexical/clipboard": 0.12.4 + "@lexical/selection": 0.12.4 + "@lexical/utils": 0.12.4 + lexical: 0.12.4 + checksum: 35829c744a3e5d633309981ee59576688f839589ecd3f492b3083ee25a9b118de719cf390771333a99df98b43e25abbc0d2c4ca94d81078106901527113c54e4 languageName: node linkType: hard @@ -4572,6 +4595,15 @@ __metadata: languageName: node linkType: hard +"@lexical/selection@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/selection@npm:0.12.4" + peerDependencies: + lexical: 0.12.4 + checksum: d3448e2510d4ab88ae6e99f0a4ae791f76b5a6a74664b48f0a1d29c0fdebdf9eed07c254a244cce87c912d87daffa444f351cb0600657422a07c3992991583cf + languageName: node + linkType: hard + "@lexical/table@npm:0.12.2": version: 0.12.2 resolution: "@lexical/table@npm:0.12.2" @@ -4583,12 +4615,23 @@ __metadata: languageName: node linkType: hard -"@lexical/text@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/text@npm:0.12.2" +"@lexical/table@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/table@npm:0.12.4" + dependencies: + "@lexical/utils": 0.12.4 peerDependencies: - lexical: 0.12.2 - checksum: 4ab65132a6bb804b73a58ab924a2a46e1e767cbd4a6cd671e082d951c381515981c44cece18e6b6d998dd9ef1e6cc8c1b6ff7740c3f125c3fc8f3284128c59be + lexical: 0.12.4 + checksum: 941c03f5f8c51ee87ec9b2666315465d1d98d7b1733c7f01fb2149933b70e73b22e6a22f5ab3fc1674949f875cd4f9ae676dab8791824219fe8f256cc04d7505 + languageName: node + linkType: hard + +"@lexical/text@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/text@npm:0.12.4" + peerDependencies: + lexical: 0.12.4 + checksum: 4de5404f6bbb7dc27dac31e893b1ff15a47712d32b5260d803bcdb43a850828e52ae2563ef69ba6b9213431e9ae27c030ee0748fc206e6a47707bfa167d65432 languageName: node linkType: hard @@ -4605,15 +4648,28 @@ __metadata: languageName: node linkType: hard -"@lexical/yjs@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/yjs@npm:0.12.2" +"@lexical/utils@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/utils@npm:0.12.4" dependencies: - "@lexical/offset": 0.12.2 + "@lexical/list": 0.12.4 + "@lexical/selection": 0.12.4 + "@lexical/table": 0.12.4 peerDependencies: - lexical: 0.12.2 + lexical: 0.12.4 + checksum: 85e47b9f62c8b0fc07607e170d34f476a9886d697be8b27358a0aed85b8ffe03eb151faeab6db1fa7d31de7ccdaba6cd88ff846fd812e8938a9fa2e866ba1e11 + languageName: node + linkType: hard + +"@lexical/yjs@npm:0.12.4": + version: 0.12.4 + resolution: "@lexical/yjs@npm:0.12.4" + dependencies: + "@lexical/offset": 0.12.4 + peerDependencies: + lexical: 0.12.4 yjs: ">=13.5.22" - checksum: 552e4b6eaca32e4eae7e7eb754ee8a5d927cc97eb5a4734d9f5a4ce810ed116b932f63c86e5e2c3084957c342da2cedad11dd53e8bcb8dd3ecec1cbd09789b0d + checksum: 75e2e5a24d6800b2b4316e0b02490ba9c2364a89b19097ffdd323cac84868b414b40d71f186e6e5b48814ee71c7e7af222240d5bdd280b2090609d5215e2a679 languageName: node linkType: hard @@ -19331,7 +19387,7 @@ __metadata: "@formatjs/cli": 6.2.3 "@koush/wrtc": 0.5.3 "@lexical/history": 0.12.2 - "@lexical/react": 0.12.2 + "@lexical/react": 0.12.4 "@peculiar/x509": 1.9.5 "@testing-library/react": 14.1.0 "@types/dexie-batch": 0.4.7 From c7e50d10c5facbf6c22907399c13e98a3fa9df42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:04:00 +0000 Subject: [PATCH 67/95] chore(deps): Bump @wireapp/core from 42.19.2 to 42.20.0 (#16234) Bumps [@wireapp/core](https://github.com/wireapp/wire-web-packages) from 42.19.2 to 42.20.0. - [Commits](https://github.com/wireapp/wire-web-packages/compare/@wireapp/core@42.19.2...@wireapp/core@42.20.0) --- updated-dependencies: - dependency-name: "@wireapp/core" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 73 ++++++++++++++++++++++++++-------------------------- 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index 712a87cb592..bd42a076ea5 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.5.2", "@wireapp/commons": "5.2.2", - "@wireapp/core": "42.19.2", + "@wireapp/core": "42.20.0", "@wireapp/react-ui-kit": "9.9.12", "@wireapp/store-engine-dexie": "2.1.6", "@wireapp/store-engine-sqleet": "1.8.9", diff --git a/yarn.lock b/yarn.lock index c0b3991a328..f9b6821bd1f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6201,14 +6201,14 @@ __metadata: languageName: node linkType: hard -"@wireapp/api-client@npm:^26.5.1": - version: 26.5.1 - resolution: "@wireapp/api-client@npm:26.5.1" +"@wireapp/api-client@npm:^26.5.2": + version: 26.5.2 + resolution: "@wireapp/api-client@npm:26.5.2" dependencies: - "@wireapp/commons": ^5.2.2 + "@wireapp/commons": ^5.2.3 "@wireapp/priority-queue": ^2.1.4 "@wireapp/protocol-messaging": 1.44.0 - axios: 1.5.1 + axios: 1.6.1 axios-retry: 3.8.1 http-status-codes: 2.3.0 logdown: 3.3.1 @@ -6218,7 +6218,7 @@ __metadata: tough-cookie: 4.1.3 ws: 8.14.2 zod: 3.22.4 - checksum: 71c27b4215532059e1357086e0a3f400ce3bfb78ac45d04e74aec79fe6ef70b241bab29d5bf970edc9e9e4ca52790c68e02ba9ecdf390bb965a44cdb3c8f4b10 + checksum: f118cc9ab64dc4a7ea07a61c506829784d92ecad5c9473c0b40701d32c9ce6171273291060119ba9bba86c13ebe9611030e73e0a93f764dabadd3ed7697b8395 languageName: node linkType: hard @@ -6236,7 +6236,7 @@ __metadata: languageName: node linkType: hard -"@wireapp/commons@npm:5.2.2, @wireapp/commons@npm:^5.2.2": +"@wireapp/commons@npm:5.2.2": version: 5.2.2 resolution: "@wireapp/commons@npm:5.2.2" dependencies: @@ -6248,6 +6248,18 @@ __metadata: languageName: node linkType: hard +"@wireapp/commons@npm:^5.2.3": + version: 5.2.3 + resolution: "@wireapp/commons@npm:5.2.3" + dependencies: + ansi-regex: 5.0.1 + fs-extra: 11.1.0 + logdown: 3.3.1 + platform: 1.3.6 + checksum: 3cc801e52318db7cb474dcc22809652a91d39916124ed88de7cd413006d62893b84ecb5700ac3f74953a26aea311a3895ebb53b20ab4508f503ca1151c82be9f + languageName: node + linkType: hard + "@wireapp/copy-config@npm:2.1.11": version: 2.1.11 resolution: "@wireapp/copy-config@npm:2.1.11" @@ -6271,20 +6283,20 @@ __metadata: languageName: node linkType: hard -"@wireapp/core@npm:42.19.2": - version: 42.19.2 - resolution: "@wireapp/core@npm:42.19.2" +"@wireapp/core@npm:42.20.0": + version: 42.20.0 + resolution: "@wireapp/core@npm:42.20.0" dependencies: - "@wireapp/api-client": ^26.5.1 - "@wireapp/commons": ^5.2.2 + "@wireapp/api-client": ^26.5.2 + "@wireapp/commons": ^5.2.3 "@wireapp/core-crypto": 1.0.0-rc.16 "@wireapp/cryptobox": 12.8.0 - "@wireapp/promise-queue": ^2.2.7 + "@wireapp/promise-queue": ^2.2.8 "@wireapp/protocol-messaging": 1.44.0 "@wireapp/store-engine": 5.1.4 "@wireapp/store-engine-dexie": ^2.1.6 - axios: 1.5.1 - bazinga64: ^6.3.2 + axios: 1.6.1 + bazinga64: ^6.3.3 deepmerge-ts: 5.1.0 hash.js: 1.1.7 http-status-codes: 2.3.0 @@ -6293,7 +6305,7 @@ __metadata: long: ^5.2.0 uuidjs: 4.2.13 zod: 3.22.4 - checksum: 24f4b254c7571d10928088db86723350bc73f015cf0b56aafa05892f4417ca098f7a0cc56be407a89ae69f3ff89a74949805f603757f3f6c91f665c97c7d5b69 + checksum: caeb5d03263b25c2de3013d22a6644dcc59ac079858808bc3094724d0bd1d23b47d076e9adeb4d24a1558ee7594c4ddbb78b505217d6709270a0c4c3fdf2f0ad languageName: node linkType: hard @@ -6376,10 +6388,10 @@ __metadata: languageName: node linkType: hard -"@wireapp/promise-queue@npm:^2.2.7": - version: 2.2.7 - resolution: "@wireapp/promise-queue@npm:2.2.7" - checksum: 0e607b00325fa702c9222da4e424e31d46ba456e0b8d6af795062f79e3c774581f2e9da9860a8123a7315c510e7da09850030336e356965a5429721a9bbc7976 +"@wireapp/promise-queue@npm:^2.2.8": + version: 2.2.8 + resolution: "@wireapp/promise-queue@npm:2.2.8" + checksum: d9497e1db2a12a4a0fcf2807242158c7e540bf172bbd8e9fb9f41ae87f94a26e10a9ac8398a5dc897f66b0a2251e8cb3f99912a98532ecd24c8cb3b29f35c9b9 languageName: node linkType: hard @@ -7153,17 +7165,6 @@ __metadata: languageName: node linkType: hard -"axios@npm:1.5.1": - version: 1.5.1 - resolution: "axios@npm:1.5.1" - dependencies: - follow-redirects: ^1.15.0 - form-data: ^4.0.0 - proxy-from-env: ^1.1.0 - checksum: 4444f06601f4ede154183767863d2b8e472b4a6bfc5253597ed6d21899887e1fd0ee2b3de792ac4f8459fe2e359d2aa07c216e45fd8b9e4e0688a6ebf48a5a8d - languageName: node - linkType: hard - "axios@npm:1.6.1": version: 1.6.1 resolution: "axios@npm:1.6.1" @@ -7381,10 +7382,10 @@ __metadata: languageName: node linkType: hard -"bazinga64@npm:^6.3.2": - version: 6.3.2 - resolution: "bazinga64@npm:6.3.2" - checksum: 5865c96c45120da1fc8728ef0c464b2cac85ecb955bd173912d6201ad3b96eaab9c4b1d81659e21a983c0fcaf6d6b91948499f917fc616258a032a0f31a7d16d +"bazinga64@npm:^6.3.3": + version: 6.3.3 + resolution: "bazinga64@npm:6.3.3" + checksum: 0bc0ab0e9c5027958a086967ab85ff28e4061ee681546090789a5bd45294e380653f482bd7608dc9aa34d7d7a85c455b5f4bc6577ea5e47796220377c9c50d9c languageName: node linkType: hard @@ -19419,7 +19420,7 @@ __metadata: "@wireapp/avs": 9.5.2 "@wireapp/commons": 5.2.2 "@wireapp/copy-config": 2.1.11 - "@wireapp/core": 42.19.2 + "@wireapp/core": 42.20.0 "@wireapp/eslint-config": 3.0.4 "@wireapp/prettier-config": 0.6.3 "@wireapp/react-ui-kit": 9.9.12 From c71c1696e38dae364e51f6fb1a081e8922f8796b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:04:48 +0000 Subject: [PATCH 68/95] chore(deps-dev): Bump @types/node from 20.9.0 to 20.9.2 (#16239) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.9.0 to 20.9.2. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index bd42a076ea5..0f76f2ddfa2 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "@types/linkify-it": "3.0.5", "@types/loadable__component": "^5", "@types/markdown-it": "13.0.6", - "@types/node": "^20.9.0", + "@types/node": "^20.9.2", "@types/open-graph": "0.2.5", "@types/platform": "1.3.6", "@types/react": "18.2.33", diff --git a/yarn.lock b/yarn.lock index f9b6821bd1f..3c2355d81f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5577,12 +5577,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.9.0": - version: 20.9.0 - resolution: "@types/node@npm:20.9.0" +"@types/node@npm:^20.9.2": + version: 20.9.2 + resolution: "@types/node@npm:20.9.2" dependencies: undici-types: ~5.26.4 - checksum: bfd927da6bff8a32051fa44bb47ca32a56d2c8bc8ba0170770f181cc1fa3c0b05863c9b930f0ba8604a48d5eb0d319166601709ca53bf2deae0025d8b6c6b8a3 + checksum: 5bbb8fb2248fc5c5c4071d9809fb9af85997677c07124d65665202b53283a3b7bdff26fb844e9ee407e3847dfce6399c2b01e3329ea44a4b720647b1b987c678 languageName: node linkType: hard @@ -19404,7 +19404,7 @@ __metadata: "@types/linkify-it": 3.0.5 "@types/loadable__component": ^5 "@types/markdown-it": 13.0.6 - "@types/node": ^20.9.0 + "@types/node": ^20.9.2 "@types/open-graph": 0.2.5 "@types/platform": 1.3.6 "@types/react": 18.2.33 From cf54302b36606412501f980d9b3a621273764c6d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:06:28 +0000 Subject: [PATCH 69/95] chore(deps): Bump react-router-dom from 6.18.0 to 6.19.0 (#16242) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.18.0 to 6.19.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.19.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 32 +++++++++++++++++++++++++------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 0f76f2ddfa2..1b4c7341265 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "react-intl": "6.5.5", "react-redux": "8.1.3", "react-router": "6.18.0", - "react-router-dom": "6.18.0", + "react-router-dom": "6.19.0", "react-transition-group": "4.4.5", "redux": "4.2.1", "redux-logdown": "1.0.4", diff --git a/yarn.lock b/yarn.lock index 3c2355d81f9..15c868221ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4984,6 +4984,13 @@ __metadata: languageName: node linkType: hard +"@remix-run/router@npm:1.12.0": + version: 1.12.0 + resolution: "@remix-run/router@npm:1.12.0" + checksum: 0528a5c9dac443f90aef30b65fed39c6654b5c2db1d01d700b212d783958935b4d800250530430d78eacf03f3baa104edeae75a29cfb13b3180cbfca3352e645 + languageName: node + linkType: hard + "@rollup/plugin-babel@npm:^5.2.0": version: 5.3.1 resolution: "@rollup/plugin-babel@npm:5.3.1" @@ -16377,16 +16384,16 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:6.18.0": - version: 6.18.0 - resolution: "react-router-dom@npm:6.18.0" +"react-router-dom@npm:6.19.0": + version: 6.19.0 + resolution: "react-router-dom@npm:6.19.0" dependencies: - "@remix-run/router": 1.11.0 - react-router: 6.18.0 + "@remix-run/router": 1.12.0 + react-router: 6.19.0 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: ca5c9a9f748f4ff9677d25762970fc59cb216568aad0ebc668b22398222a940f767680bc9a3e65a92e940d3fe05731eda8a4b352ccbf1054904b3b785a9f5e6f + checksum: 04453ca48eb900a4a6aa8b8e48368fa78d4ce8a9b69df108d9f53071a904349b18672a66c94252eb847ae4369e30bbe4ec7244bb6529b10fd474774e48f03669 languageName: node linkType: hard @@ -16401,6 +16408,17 @@ __metadata: languageName: node linkType: hard +"react-router@npm:6.19.0": + version: 6.19.0 + resolution: "react-router@npm:6.19.0" + dependencies: + "@remix-run/router": 1.12.0 + peerDependencies: + react: ">=16.8" + checksum: f7e3396b8f4299638029dc726cb02d9c05c8906dc5277e5f9d899ef113d8cec49dfab7d34cd496826f8c1a95666141f3eede446c4438ef56720fdb72c66473fb + languageName: node + linkType: hard + "react-select@npm:5.7.5": version: 5.7.5 resolution: "react-select@npm:5.7.5" @@ -19497,7 +19515,7 @@ __metadata: react-intl: 6.5.5 react-redux: 8.1.3 react-router: 6.18.0 - react-router-dom: 6.18.0 + react-router-dom: 6.19.0 react-transition-group: 4.4.5 redux: 4.2.1 redux-devtools-extension: 2.13.9 From 16e5288bc089f34334669f5be1c9f168ffe171be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:09:09 +0000 Subject: [PATCH 70/95] chore(deps-dev): Bump @formatjs/cli from 6.2.3 to 6.2.4 (#16243) Bumps [@formatjs/cli](https://github.com/formatjs/formatjs) from 6.2.3 to 6.2.4. - [Release notes](https://github.com/formatjs/formatjs/releases) - [Commits](https://github.com/formatjs/formatjs/compare/@formatjs/cli@6.2.3...@formatjs/cli@6.2.4) --- updated-dependencies: - dependency-name: "@formatjs/cli" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 1b4c7341265..a786c0923d7 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "@babel/preset-typescript": "7.23.3", "@emotion/eslint-plugin": "^11.11.0", "@faker-js/faker": "8.2.0", - "@formatjs/cli": "6.2.3", + "@formatjs/cli": "6.2.4", "@koush/wrtc": "0.5.3", "@testing-library/react": "14.1.0", "@types/dexie-batch": "0.4.7", diff --git a/yarn.lock b/yarn.lock index 15c868221ff..ae8f9a67d40 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3486,9 +3486,9 @@ __metadata: languageName: node linkType: hard -"@formatjs/cli@npm:6.2.3": - version: 6.2.3 - resolution: "@formatjs/cli@npm:6.2.3" +"@formatjs/cli@npm:6.2.4": + version: 6.2.4 + resolution: "@formatjs/cli@npm:6.2.4" peerDependencies: vue: ^3.3.4 peerDependenciesMeta: @@ -3496,7 +3496,7 @@ __metadata: optional: true bin: formatjs: bin/formatjs - checksum: 8f7e0846de6263230e286af67517568c42524c3d91faa877035c315989ebdcbb5e71e6ae8f7d1ac053ee1e992c3e0faa7cecfe799f4bbaf530a1164e3a174835 + checksum: 6ff9e07ae7ab23cd83be3ad7dca0dcd6529f3852a7e8d2b56121ac8410e1a072fdb3b40dd0c2d6ab4ac3158efc4047615d0f77629aec3259ba4884f4cd45073a languageName: node linkType: hard @@ -19403,7 +19403,7 @@ __metadata: "@emotion/eslint-plugin": ^11.11.0 "@emotion/react": 11.11.1 "@faker-js/faker": 8.2.0 - "@formatjs/cli": 6.2.3 + "@formatjs/cli": 6.2.4 "@koush/wrtc": 0.5.3 "@lexical/history": 0.12.2 "@lexical/react": 0.12.4 From 5bd868c7687d8be30e122845e65d5acd4a577fbb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:09:42 +0000 Subject: [PATCH 71/95] chore(deps-dev): Bump @testing-library/react from 14.1.0 to 14.1.2 (#16240) Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 14.1.0 to 14.1.2. - [Release notes](https://github.com/testing-library/react-testing-library/releases) - [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/react-testing-library/compare/v14.1.0...v14.1.2) --- updated-dependencies: - dependency-name: "@testing-library/react" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index a786c0923d7..4186dd30bd2 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "@faker-js/faker": "8.2.0", "@formatjs/cli": "6.2.4", "@koush/wrtc": "0.5.3", - "@testing-library/react": "14.1.0", + "@testing-library/react": "14.1.2", "@types/dexie-batch": "0.4.7", "@types/eslint": "^8", "@types/fs-extra": "11.0.4", diff --git a/yarn.lock b/yarn.lock index ae8f9a67d40..7e72fbefd24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5138,9 +5138,9 @@ __metadata: languageName: node linkType: hard -"@testing-library/react@npm:14.1.0": - version: 14.1.0 - resolution: "@testing-library/react@npm:14.1.0" +"@testing-library/react@npm:14.1.2": + version: 14.1.2 + resolution: "@testing-library/react@npm:14.1.2" dependencies: "@babel/runtime": ^7.12.5 "@testing-library/dom": ^9.0.0 @@ -5148,7 +5148,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: e76681911947f0981a1a72802ea01abeacdc4973c62deaf19c206cb9ff8d23eff5e3888c572303614686f029ee8a2a2dad6d0f0a9fb222944dbd9e0ea573b248 + checksum: 0269903e53412cf96fddb55c8a97a9987a89c3308d71fa1418fe61c47d275445e7044c5387f57cf39b8cda319a41623dbad2cce7a17016aed3a9e85185aac75a languageName: node linkType: hard @@ -19408,7 +19408,7 @@ __metadata: "@lexical/history": 0.12.2 "@lexical/react": 0.12.4 "@peculiar/x509": 1.9.5 - "@testing-library/react": 14.1.0 + "@testing-library/react": 14.1.2 "@types/dexie-batch": 0.4.7 "@types/eslint": ^8 "@types/fs-extra": 11.0.4 From d7623a386dfeb6fc7199bb7d3194b4cae5fc1294 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:13:05 +0000 Subject: [PATCH 72/95] chore(deps): Bump @wireapp/commons from 5.2.2 to 5.2.3 (#16241) Bumps [@wireapp/commons](https://github.com/wireapp/wire-web-packages) from 5.2.2 to 5.2.3. - [Commits](https://github.com/wireapp/wire-web-packages/compare/@wireapp/commons@5.2.2...@wireapp/commons@5.2.3) --- updated-dependencies: - dependency-name: "@wireapp/commons" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 16 ++-------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 4186dd30bd2..bac2e494207 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@lexical/react": "0.12.4", "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.5.2", - "@wireapp/commons": "5.2.2", + "@wireapp/commons": "5.2.3", "@wireapp/core": "42.20.0", "@wireapp/react-ui-kit": "9.9.12", "@wireapp/store-engine-dexie": "2.1.6", diff --git a/yarn.lock b/yarn.lock index 7e72fbefd24..eda14803ebf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6243,19 +6243,7 @@ __metadata: languageName: node linkType: hard -"@wireapp/commons@npm:5.2.2": - version: 5.2.2 - resolution: "@wireapp/commons@npm:5.2.2" - dependencies: - ansi-regex: 5.0.1 - fs-extra: 11.1.0 - logdown: 3.3.1 - platform: 1.3.6 - checksum: ae78630f8299eaae9ee136136981dabdcb4c100c43ec1430882fc154ae21e9fdb17999c1b892140ca5547625e7f502ba83e85ecf62312c8525098865032b6928 - languageName: node - linkType: hard - -"@wireapp/commons@npm:^5.2.3": +"@wireapp/commons@npm:5.2.3, @wireapp/commons@npm:^5.2.3": version: 5.2.3 resolution: "@wireapp/commons@npm:5.2.3" dependencies: @@ -19436,7 +19424,7 @@ __metadata: "@types/underscore": 1.11.14 "@types/webpack-env": 1.18.4 "@wireapp/avs": 9.5.2 - "@wireapp/commons": 5.2.2 + "@wireapp/commons": 5.2.3 "@wireapp/copy-config": 2.1.11 "@wireapp/core": 42.20.0 "@wireapp/eslint-config": 3.0.4 From fa7383478441921b6e5299ba4b8fae6a66b3d512 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:14:06 +0000 Subject: [PATCH 73/95] chore(deps): Bump @wireapp/react-ui-kit from 9.9.12 to 9.10.0 (#16245) Bumps [@wireapp/react-ui-kit](https://github.com/wireapp/wire-web-packages) from 9.9.12 to 9.10.0. - [Commits](https://github.com/wireapp/wire-web-packages/compare/@wireapp/react-ui-kit@9.9.12...@wireapp/react-ui-kit@9.10.0) --- updated-dependencies: - dependency-name: "@wireapp/react-ui-kit" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index bac2e494207..953403e3f13 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "@wireapp/avs": "9.5.2", "@wireapp/commons": "5.2.3", "@wireapp/core": "42.20.0", - "@wireapp/react-ui-kit": "9.9.12", + "@wireapp/react-ui-kit": "9.10.0", "@wireapp/store-engine-dexie": "2.1.6", "@wireapp/store-engine-sqleet": "1.8.9", "@wireapp/webapp-events": "0.18.3", diff --git a/yarn.lock b/yarn.lock index eda14803ebf..8f15b76236e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5274,12 +5274,12 @@ __metadata: languageName: node linkType: hard -"@types/color@npm:3.0.5": - version: 3.0.5 - resolution: "@types/color@npm:3.0.5" +"@types/color@npm:3.0.6": + version: 3.0.6 + resolution: "@types/color@npm:3.0.6" dependencies: "@types/color-convert": "*" - checksum: 82cce7cb132b5c0898dd69b92a4663e34ad8f19db6a009bef7ef79d4840ddb4d5f7e793e2e64e3b4a60da92dc2ae33d1aa498981d0fcf0562917c9550603a99d + checksum: 0f16dcf4e202896d5425019c44a1f99713fca998052ab2fd836cdd38048398a0caf5b79a2efe560e41fca4b9401e8d8f6f02ed541cfea30cca3a8cb1b50b80f7 languageName: node linkType: hard @@ -6414,11 +6414,11 @@ __metadata: languageName: node linkType: hard -"@wireapp/react-ui-kit@npm:9.9.12": - version: 9.9.12 - resolution: "@wireapp/react-ui-kit@npm:9.9.12" +"@wireapp/react-ui-kit@npm:9.10.0": + version: 9.10.0 + resolution: "@wireapp/react-ui-kit@npm:9.10.0" dependencies: - "@types/color": 3.0.5 + "@types/color": 3.0.6 color: 4.2.3 emotion-normalize: 11.0.1 react-select: 5.7.5 @@ -6431,7 +6431,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 4129c63b988ccd9471177f3cc2c73d7dff161e0a9f3ebe85e431adf982e5f2a3ddb0cb11f7b66821a39512cddafcb2a99b30b6ada9aedc74bd56e1da0dbf17b5 + checksum: 1fd513927d743ea60c6a3927f19bd879d45b3d86ad9f5facea70815840e0542b5acb31bcd3175971e54d5fecdd935feb239395b149689192c3714e162e778687 languageName: node linkType: hard @@ -19429,7 +19429,7 @@ __metadata: "@wireapp/core": 42.20.0 "@wireapp/eslint-config": 3.0.4 "@wireapp/prettier-config": 0.6.3 - "@wireapp/react-ui-kit": 9.9.12 + "@wireapp/react-ui-kit": 9.10.0 "@wireapp/store-engine": ^5.1.4 "@wireapp/store-engine-dexie": 2.1.6 "@wireapp/store-engine-sqleet": 1.8.9 From b9765286008f1117bea8fac6eda9e8b657948587 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:14:46 +0000 Subject: [PATCH 74/95] chore(deps): Bump react-router from 6.18.0 to 6.19.0 (#16236) Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 6.18.0 to 6.19.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router@6.19.0/packages/react-router) --- updated-dependencies: - dependency-name: react-router dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 20 +------------------- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 953403e3f13..ee18063cb39 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "react-error-boundary": "4.0.11", "react-intl": "6.5.5", "react-redux": "8.1.3", - "react-router": "6.18.0", + "react-router": "6.19.0", "react-router-dom": "6.19.0", "react-transition-group": "4.4.5", "redux": "4.2.1", diff --git a/yarn.lock b/yarn.lock index 8f15b76236e..84c1c79dbbf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4977,13 +4977,6 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.11.0": - version: 1.11.0 - resolution: "@remix-run/router@npm:1.11.0" - checksum: 1966436ab3ab982862195e4871790644ce21e01511aa3f4350436296224e4dec2e6ee35f1f4cb83db69f7aa0e8ad4a0a01928b05359ae654edc8e2aa82bf754b - languageName: node - linkType: hard - "@remix-run/router@npm:1.12.0": version: 1.12.0 resolution: "@remix-run/router@npm:1.12.0" @@ -16385,17 +16378,6 @@ __metadata: languageName: node linkType: hard -"react-router@npm:6.18.0": - version: 6.18.0 - resolution: "react-router@npm:6.18.0" - dependencies: - "@remix-run/router": 1.11.0 - peerDependencies: - react: ">=16.8" - checksum: 03e9a23c5b75d8813720745e2952bb9e62ec310d238cde4f19e0ce73582701fa5e04cf609ff9ced978e9e6c531b5e333b9aee35371e6c4743afc2829e32e926a - languageName: node - linkType: hard - "react-router@npm:6.19.0": version: 6.19.0 resolution: "react-router@npm:6.19.0" @@ -19502,7 +19484,7 @@ __metadata: react-error-boundary: 4.0.11 react-intl: 6.5.5 react-redux: 8.1.3 - react-router: 6.18.0 + react-router: 6.19.0 react-router-dom: 6.19.0 react-transition-group: 4.4.5 redux: 4.2.1 From 16ad25a9a1dc6470fb7f93cc8e45baef1cdd5bda Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:16:57 +0000 Subject: [PATCH 75/95] chore(deps-dev): Bump @faker-js/faker from 8.2.0 to 8.3.1 (#16246) Bumps [@faker-js/faker](https://github.com/faker-js/faker) from 8.2.0 to 8.3.1. - [Release notes](https://github.com/faker-js/faker/releases) - [Changelog](https://github.com/faker-js/faker/blob/next/CHANGELOG.md) - [Commits](https://github.com/faker-js/faker/compare/v8.2.0...v8.3.1) --- updated-dependencies: - dependency-name: "@faker-js/faker" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index ee18063cb39..c38ed1af9fd 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "@babel/preset-react": "7.23.3", "@babel/preset-typescript": "7.23.3", "@emotion/eslint-plugin": "^11.11.0", - "@faker-js/faker": "8.2.0", + "@faker-js/faker": "8.3.1", "@formatjs/cli": "6.2.4", "@koush/wrtc": "0.5.3", "@testing-library/react": "14.1.2", diff --git a/yarn.lock b/yarn.lock index 84c1c79dbbf..b943ef17cd8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3453,10 +3453,10 @@ __metadata: languageName: node linkType: hard -"@faker-js/faker@npm:8.2.0": - version: 8.2.0 - resolution: "@faker-js/faker@npm:8.2.0" - checksum: febc17018acfb841a348591bfe415e815ea981bf7fa0a12670ac2b449479ad7e9e7b130c42878ec30210da964c13a620a3303dc00d63cb13ded00c6fc701e2be +"@faker-js/faker@npm:8.3.1": + version: 8.3.1 + resolution: "@faker-js/faker@npm:8.3.1" + checksum: 33efe912411fe61f43b313784a9ce041dfbfb54bc3b2f7b923a547f97beb6b3763534f9c37af25ab330982e6b36e6f7b040dfb35c115deb8c789d8ada413bd94 languageName: node linkType: hard @@ -19372,7 +19372,7 @@ __metadata: "@datadog/browser-rum": ^5.3.0 "@emotion/eslint-plugin": ^11.11.0 "@emotion/react": 11.11.1 - "@faker-js/faker": 8.2.0 + "@faker-js/faker": 8.3.1 "@formatjs/cli": 6.2.4 "@koush/wrtc": 0.5.3 "@lexical/history": 0.12.2 From 5dbb959f7e70881f0c295c937f481bd62ed496f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:17:10 +0000 Subject: [PATCH 76/95] chore(deps): Bump @lexical/history from 0.12.2 to 0.12.4 (#16244) Bumps [@lexical/history](https://github.com/facebook/lexical/tree/HEAD/packages/lexical-history) from 0.12.2 to 0.12.4. - [Release notes](https://github.com/facebook/lexical/releases) - [Changelog](https://github.com/facebook/lexical/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/lexical/commits/v0.12.4/packages/lexical-history) --- updated-dependencies: - dependency-name: "@lexical/history" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 57 +--------------------------------------------------- 2 files changed, 2 insertions(+), 57 deletions(-) diff --git a/package.json b/package.json index c38ed1af9fd..632240650aa 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "@datadog/browser-logs": "^5.3.0", "@datadog/browser-rum": "^5.3.0", "@emotion/react": "11.11.1", - "@lexical/history": "0.12.2", + "@lexical/history": "0.12.4", "@lexical/react": "0.12.4", "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.5.2", diff --git a/yarn.lock b/yarn.lock index b943ef17cd8..3b09b1d7ab4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4420,17 +4420,6 @@ __metadata: languageName: node linkType: hard -"@lexical/history@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/history@npm:0.12.2" - dependencies: - "@lexical/utils": 0.12.2 - peerDependencies: - lexical: 0.12.2 - checksum: a813313e7d8d54f0c50a4a5114a5d04d095bb00aaaa8bf916d86cbe64434097fe3dcd10838fae50420987861b1cd9e52dc443077a8bd14e0073e92d60c944ed8 - languageName: node - linkType: hard - "@lexical/history@npm:0.12.4": version: 0.12.4 resolution: "@lexical/history@npm:0.12.4" @@ -4465,17 +4454,6 @@ __metadata: languageName: node linkType: hard -"@lexical/list@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/list@npm:0.12.2" - dependencies: - "@lexical/utils": 0.12.2 - peerDependencies: - lexical: 0.12.2 - checksum: 196e40c79613f21bcbdd035ea6b970460b10dde86c22674d6c2e009f093d56a48565e631416ac1d60c9bb84b6225d85ba182c9d1362a197b7f84abef817eced0 - languageName: node - linkType: hard - "@lexical/list@npm:0.12.4": version: 0.12.4 resolution: "@lexical/list@npm:0.12.4" @@ -4586,15 +4564,6 @@ __metadata: languageName: node linkType: hard -"@lexical/selection@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/selection@npm:0.12.2" - peerDependencies: - lexical: 0.12.2 - checksum: 4c35dc644c401c3782ed8a10e404a92b1f18c763332035e1f8707a1ac6143754b463bbb122b7cc82c99766e0b5650927025e2d081538ffbbd76386cf9cf4c66c - languageName: node - linkType: hard - "@lexical/selection@npm:0.12.4": version: 0.12.4 resolution: "@lexical/selection@npm:0.12.4" @@ -4604,17 +4573,6 @@ __metadata: languageName: node linkType: hard -"@lexical/table@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/table@npm:0.12.2" - dependencies: - "@lexical/utils": 0.12.2 - peerDependencies: - lexical: 0.12.2 - checksum: 051cd08a39b3ec86734db6ff2ff5c5fc1952890fa282696983c89a949ccea134131930d704eec98afa26c104ec05d1e26d705738b9f20aa90df1f341294a67b5 - languageName: node - linkType: hard - "@lexical/table@npm:0.12.4": version: 0.12.4 resolution: "@lexical/table@npm:0.12.4" @@ -4635,19 +4593,6 @@ __metadata: languageName: node linkType: hard -"@lexical/utils@npm:0.12.2": - version: 0.12.2 - resolution: "@lexical/utils@npm:0.12.2" - dependencies: - "@lexical/list": 0.12.2 - "@lexical/selection": 0.12.2 - "@lexical/table": 0.12.2 - peerDependencies: - lexical: 0.12.2 - checksum: 579fd0b5a5b085f4842721d23076aa43eb295497952c81239f211c4c50ce8b33c10734f72acce3107af4b391dcd5d399461a6ab63eab1d6cd7b57db27f7a1066 - languageName: node - linkType: hard - "@lexical/utils@npm:0.12.4": version: 0.12.4 resolution: "@lexical/utils@npm:0.12.4" @@ -19375,7 +19320,7 @@ __metadata: "@faker-js/faker": 8.3.1 "@formatjs/cli": 6.2.4 "@koush/wrtc": 0.5.3 - "@lexical/history": 0.12.2 + "@lexical/history": 0.12.4 "@lexical/react": 0.12.4 "@peculiar/x509": 1.9.5 "@testing-library/react": 14.1.2 From 3ed4c1864288ae8f1ef46cf7cffd97c1d2269df0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:24:09 +0000 Subject: [PATCH 77/95] chore(deps): Bump lexical from 0.12.2 to 0.12.4 (#16238) Bumps [lexical](https://github.com/facebook/lexical/tree/HEAD/packages/lexical) from 0.12.2 to 0.12.4. - [Release notes](https://github.com/facebook/lexical/releases) - [Changelog](https://github.com/facebook/lexical/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/lexical/commits/v0.12.4/packages/lexical) --- updated-dependencies: - dependency-name: lexical dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 632240650aa..af60aa1165e 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "jszip": "3.10.1", "keyboardjs": "2.7.0", "knockout": "3.5.1", - "lexical": "0.12.2", + "lexical": "0.12.4", "libsodium-wrappers": "0.7.13", "linkify-it": "4.0.1", "long": "5.2.3", diff --git a/yarn.lock b/yarn.lock index 3b09b1d7ab4..a46a961e15e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13267,10 +13267,10 @@ __metadata: languageName: node linkType: hard -"lexical@npm:0.12.2": - version: 0.12.2 - resolution: "lexical@npm:0.12.2" - checksum: f02cd11aa015f1babb960d39a31ada30060c3af5446dcc4a6d26e300af8b889bc307633cf77604cf7538e776efdf6ca19d919b82ad24e29c451f58939e91621f +"lexical@npm:0.12.4": + version: 0.12.4 + resolution: "lexical@npm:0.12.4" + checksum: c2af8fa2a6bf55dde453240b583b433abd5b6dac860598d33be54fc191005ff5ee8ba8af03d21717cc08c6c87f8a3e45a0bd969f436c765aded57eb9387c8972 languageName: node linkType: hard @@ -19404,7 +19404,7 @@ __metadata: knockout: 3.5.1 less: 4.2.0 less-loader: ^11.1.3 - lexical: 0.12.2 + lexical: 0.12.4 libsodium-wrappers: 0.7.13 linkify-it: 4.0.1 lint-staged: 15.1.0 From d1e8b3a1b28319de06f3878ee97b8db67526da8f Mon Sep 17 00:00:00 2001 From: Otto the Bot Date: Mon, 20 Nov 2023 09:33:43 +0100 Subject: [PATCH 78/95] chore: Update translations (#16228) --- src/i18n/de-DE.json | 2 +- src/i18n/ru-RU.json | 4 ++-- src/i18n/si-LK.json | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/i18n/de-DE.json b/src/i18n/de-DE.json index 6fc1ed312a3..34b2a9d4039 100644 --- a/src/i18n/de-DE.json +++ b/src/i18n/de-DE.json @@ -139,7 +139,7 @@ "acme.done.button": "Ok", "acme.done.button.close": "Close window 'Certificate Downloaded'", "acme.done.headline": "Certificate Downloaded", - "acme.done.paragraph": "The certificate is active now and your device is verified. You can find more details about this certificate in your Wire Settings under Devices.", + "acme.done.paragraph": "Das Zertifikat ist nun aktiv und Ihr Gerät ist verifiziert. Mehr Details zu diesem Zertifikat finden Sie in Ihren Wire-Einstellungen unter Geräte.", "acme.error.button.close": "Close window 'Something went wrong'", "acme.error.button.primary": "Wiederholen", "acme.error.button.secondary": "Abbrechen", diff --git a/src/i18n/ru-RU.json b/src/i18n/ru-RU.json index 5aa886148df..2aa0f5dc72a 100644 --- a/src/i18n/ru-RU.json +++ b/src/i18n/ru-RU.json @@ -704,7 +704,7 @@ "legalHoldMessageSendingMissingConsentTitle": "Сообщение не может быть отправлено", "legalHoldModalPrimaryAction": "Принять", "legalHoldModalSecondaryAction": "Не сейчас", - "legalHoldModalText": "Все будущие сообщения будут записываться устройством с отпечатком:[br][fingerprint][br]Сюда входят удаленные, отредактированные и самоудаляющиеся сообщения во всех беседах.", + "legalHoldModalText": "Все будущие сообщения будут записываться устройством с отпечатком:[br][fingerprint][br]К ним относятся удаленные, отредактированные и самоудаляющиеся сообщения во всех беседах.", "legalHoldModalTextPassword": "Введите пароль для подтверждения.", "legalHoldModalTitle": "Запрошены юридические ограничения", "legalHoldSubjects": "Субъекты юридических ограничений", @@ -942,7 +942,7 @@ "modalIntegrationUnavailableHeadline": "Боты в настоящее время недоступны", "modalIntegrationUnavailableMessage": "Благодарим вас за интерес к ботам. В настоящее время сервис приостановлен, пока мы работаем над следующей версией. Следите за обновлениями.", "modalLegalHoldConversationMissingConsentMessage": "Из-за юридических ограничений в эту беседу могут быть добавлены только члены команды. [link]Подробнее[/link]", - "modalLegalHoldDeactivatedMessage": "Будущие сообщения не будут сохраняться.", + "modalLegalHoldDeactivatedMessage": "Будущие сообщения записываться не будут.", "modalLegalHoldDeactivatedTitle": "Юридические ограничения деактивированы", "modalNewFolderCloseBtn": "Закрыть окно 'Создать новую папку'", "modalNoAudioCloseBtn": "Закрыть окно 'Микрофон отключен'", diff --git a/src/i18n/si-LK.json b/src/i18n/si-LK.json index 19afa0dc2b2..628f4115346 100644 --- a/src/i18n/si-LK.json +++ b/src/i18n/si-LK.json @@ -697,14 +697,14 @@ "legalHoldActivated": "මෙම සංවාදය නෛතික රැඳවුම යටතේ තිබේ", "legalHoldActivatedLearnMore": "තව දැනගන්න", "legalHoldDeactivated": "මෙම සංවාදය සඳහා නෛතික රැඳවුම අක්‍රිය කෙරිණි", - "legalHoldDescriptionOthers": "මෙම සංවාදයේ අවම වශයෙන් එක් පුද්ගලයෙක් සඳහා නෛතික රැඳවීම ක්‍රියාත්මක වී ඇත.
    මකා දැමූ, සංශෝධිත සහ ඉබේ මැකෙන පණිවිඩ ඇතුළුව සියළුම පණිවිඩ අනාගත ප්‍රවේශය සඳහා සුරැකෙනු ඇත.", - "legalHoldDescriptionSelf": "ඔබගේ ගිණුමට නෛතික රැඳවුම ක්‍රියාත්මක වී ඇත.
    මකා දැමූ, සංශෝධිත සහ ඉබේ මැකෙන පණිවිඩ ඇතුළුව සියළුම පණිවිඩ අනාගත ප්‍රවේශය සඳහා සුරැකෙනු ඇත.
    ඔබගේ සංවාදවල හවුල්කරුවන් පටිගත කිරීම පිළිබඳව දැනුවත් වනු ඇත.", + "legalHoldDescriptionOthers": "මෙම සංවාදයේ අවම වශයෙන් එක් පුද්ගලයෙක් සඳහා නෛතික රැඳවීම ක්‍රියාත්මක වී ඇත.
    මකන, සංශෝධිත සහ ඉබේ මැකෙන පණිවිඩ ඇතුළුව සියළුම පණිවිඩ අනාගත ප්‍රවේශය සඳහා සුරැකෙනු ඇත.", + "legalHoldDescriptionSelf": "ඔබගේ ගිණුමට නෛතික රැඳවුම ක්‍රියාත්මක වී ඇත.
    මකන, සංශෝධිත සහ ඉබේ මැකෙන පණිවිඩ ඇතුළුව සියළුම පණිවිඩ අනාගත ප්‍රවේශය සඳහා සුරැකෙනු ඇත.
    ඔබගේ සංවාදවල හවුල්කරුවන් පටිගත කිරීම පිළිබඳව දැනුවත් වනු ඇත.", "legalHoldHeadline": "නෛතික රැඳවුම", "legalHoldMessageSendingMissingConsentMessage": "නෛතික රැඳවීමට සහාය නොදක්වන අවම වශයෙන් එක් යල් පැන ගිය උපාංගයක් ඔබ සතු නිසා මෙම පණිවිඩය යැවීමට නොහැකිය. ඔබගේ සියළුම උපාංග යාවත්කාල කරන්න හෝ ඒවා යෙදුමේ සැකසුම් හරහා ඉවත් කරන්න. [link]තව දැනගන්න[/link]", "legalHoldMessageSendingMissingConsentTitle": "පණිවිඩය යැවීමට නොහැකියි", "legalHoldModalPrimaryAction": "පිළිගන්න", "legalHoldModalSecondaryAction": "දැන් නොවේ", - "legalHoldModalText": "සියළුම අනාගත පණිවිඩ ඇඟිලි සටහන සමඟ උපාංගය මගින් පටිගත කෙරේ:[br][ඇඟිලි සටහන][br]මෙයට සියළුම සංවාදවල මකා දැමූ, සංශෝධිත සහ ඉබේ මැකෙන පණිවිඩ ඇතුළත් වේ.", + "legalHoldModalText": "සියළුම අනාගත පණිවිඩ ඇඟිලි සටහන සමඟ උපාංගය මගින් පටිගත කෙරේ:[br][ඇඟිලි සටහන][br]මෙයට සියළුම සංවාදවල මකන, සංශෝධිත සහ ඉබේ මැකෙන පණිවිඩ ඇතුළත් වේ.", "legalHoldModalTextPassword": "තහවුරු කිරීමට මුරපදය ඇතුල් කරන්න.", "legalHoldModalTitle": "නෛතික රැඳවුමක් ඉල්ලා ඇත", "legalHoldSubjects": "නෛතික රැඳවුමට යටත් වේ", From f445587ccba5c4d0d2dc406d83c0c7adcc3f7dd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20G=C3=B3rka?= Date: Mon, 20 Nov 2023 17:42:12 +0100 Subject: [PATCH 79/95] fix: do not hide conversation when its content is cleared (#16247) --- .../ConversationRepository.test.ts | 34 +++++++++- .../conversation/ConversationRepository.ts | 64 ++++++++----------- src/script/conversation/ConversationState.ts | 1 - 3 files changed, 59 insertions(+), 40 deletions(-) diff --git a/src/script/conversation/ConversationRepository.test.ts b/src/script/conversation/ConversationRepository.test.ts index b3cce0861e9..884b9049c90 100644 --- a/src/script/conversation/ConversationRepository.test.ts +++ b/src/script/conversation/ConversationRepository.test.ts @@ -56,7 +56,7 @@ import {Conversation} from 'src/script/entity/Conversation'; import {Message} from 'src/script/entity/message/Message'; import {User} from 'src/script/entity/User'; import {ConversationError} from 'src/script/error/ConversationError'; -import {ClientEvent} from 'src/script/event/Client'; +import {ClientEvent, CONVERSATION} from 'src/script/event/Client'; import {EventRepository} from 'src/script/event/EventRepository'; import {NOTIFICATION_HANDLING_STATE} from 'src/script/event/NotificationHandlingState'; import {StorageSchemata} from 'src/script/storage/StorageSchemata'; @@ -895,6 +895,38 @@ describe('ConversationRepository', () => { }); }); + describe('clearConversation', () => { + it('clears all the messages from database and local state and re-applies creation message', async () => { + const conversationRepository = testFactory.conversation_repository!; + const messageRepository = testFactory.message_repository!; + const eventRepository = testFactory.event_repository!; + + const conversationEntity = _generateConversation({type: CONVERSATION_TYPE.REGULAR}); + const selfUser = generateUser(); + + conversationEntity.selfUser(selfUser); + + jest.spyOn(eventRepository, 'injectEvent').mockImplementationOnce(jest.fn()); + jest.spyOn(messageRepository, 'updateClearedTimestamp').mockImplementationOnce(jest.fn()); + jest.spyOn(conversationEntity, 'removeMessages').mockImplementationOnce(jest.fn()); + jest.spyOn(conversationRepository['eventService'], 'deleteEvents').mockImplementationOnce(jest.fn()); + + await conversationRepository.clearConversation(conversationEntity); + + expect(messageRepository.updateClearedTimestamp).toHaveBeenCalledWith(conversationEntity); + expect(conversationEntity.removeMessages).toHaveBeenCalled(); + expect(conversationRepository['eventService'].deleteEvents).toHaveBeenCalledWith( + conversationEntity.id, + undefined, + ); + + expect(eventRepository.injectEvent).toHaveBeenCalledWith( + expect.objectContaining({type: CONVERSATION.GROUP_CREATION, conversation: conversationEntity.id}), + undefined, + ); + }); + }); + describe('mapConnection', () => { let connectionEntity: ConnectionEntity; diff --git a/src/script/conversation/ConversationRepository.ts b/src/script/conversation/ConversationRepository.ts index 81c59279a36..09826fa3f8e 100644 --- a/src/script/conversation/ConversationRepository.ts +++ b/src/script/conversation/ConversationRepository.ts @@ -720,19 +720,19 @@ export class ConversationRepository { } const addCreationMessage = !conversationEntity.hasCreationMessage; if (addCreationMessage) { - this.addCreationMessage(conversationEntity, this.userState.self().isTemporaryGuest()); + await this.addCreationMessage(conversationEntity, this.userState.self().isTemporaryGuest()); } } return mappedMessageEntities; } - private addCreationMessage( + private async addCreationMessage( conversationEntity: Conversation, isTemporaryGuest: boolean, timestamp?: number, eventSource?: EventSource, - ): void { + ): Promise { conversationEntity.hasCreationMessage = true; if (conversationEntity.inTeam()) { @@ -752,7 +752,7 @@ export class ConversationRepository { ? EventBuilder.buildGroupCreation(conversationEntity, isTemporaryGuest, timestamp) : EventBuilder.build1to1Creation(conversationEntity); - this.eventRepository.injectEvent(creationEvent, eventSource); + await this.eventRepository.injectEvent(creationEvent, eventSource); } /** @@ -2123,24 +2123,27 @@ export class ConversationRepository { } /** - * Clear conversation content and archive the conversation. + * Clear conversation. + * It will update conversation's cleared timestamp on BE and clear all conversation content. * - * @note According to spec we archive a conversation when we clear it. - * It will be unarchived once it is opened through search. We use the archive flag to distinguish states. - * - * @param conversation Conversation to clear - * @param leaveConversation Should we leave the conversation before clearing the content? + * @param conversation Conversation to clear content from + * @param timestamp Timestamp of the event */ - public async clearConversation(conversation: Conversation) { - const isActiveConversation = this.conversationState.isActiveConversation(conversation); - const nextConversationEntity = this.getNextConversation(conversation); - + public async clearConversation(conversation: Conversation, timestamp?: number) { await this.messageRepository.updateClearedTimestamp(conversation); - await this._clearConversation(conversation); + return this.clearConversationContent(conversation, timestamp); + } - if (isActiveConversation) { - amplify.publish(WebAppEvents.CONVERSATION.SHOW, nextConversationEntity, {}); - } + /** + * Clears conversation content. + * It will clear all messages and events from the conversation and re-apply the conversation creation event. + * + * @param conversation Conversation to clear content from + * @param timestamp Timestamp of the event + */ + private async clearConversationContent(conversation: Conversation, timestamp?: number) { + await this.deleteMessages(conversation, timestamp); + return this.addCreationMessage(conversation, !!this.userState.self()?.isTemporaryGuest(), timestamp); } async leaveGuestRoom(): Promise { @@ -2195,9 +2198,8 @@ export class ConversationRepository { /** * Remove the current user from a conversation. * - * @param conversation Conversation to remove user from - * @param clearContent Should we clear the conversation content from the database? - * @returns Resolves when user was removed from the conversation + * @param conversation Conversation to remove the self user from + * @returns Resolves when the self user was removed from the conversation */ public async leaveConversation(conversation: Conversation) { const userQualifiedId = this.userState.self().qualifiedId; @@ -2449,21 +2451,6 @@ export class ConversationRepository { this.onMemberUpdate(conversationEntity, response); } - /** - * Clears conversation content from view and the database. - * - * @param conversationEntity Conversation entity to delete - * @param timestamp Optional timestamps for which messages to remove - */ - private async _clearConversation(conversationEntity: Conversation, timestamp?: number) { - await this.deleteMessages(conversationEntity, timestamp); - - if (conversationEntity.removed_from_conversation()) { - await this.conversationService.deleteConversationFromDb(conversationEntity.id); - this.deleteConversationFromRepository(conversationEntity); - } - } - private handleTooManyMembersError(participants = ConversationRepository.CONFIG.GROUP.MAX_SIZE) { const openSpots = ConversationRepository.CONFIG.GROUP.MAX_SIZE - participants; const substitutions = { @@ -3013,7 +3000,7 @@ export class ConversationRepository { const [conversationEntity] = this.mapConversations([conversationData], initialTimestamp); if (conversationEntity) { if (conversationEntity.participating_user_ids().length) { - this.addCreationMessage(conversationEntity, false, initialTimestamp, eventSource); + await this.addCreationMessage(conversationEntity, false, initialTimestamp, eventSource); } await this.updateParticipatingUserEntities(conversationEntity); this.proteusVerificationStateHandler.onConversationCreate(conversationEntity); @@ -3289,7 +3276,7 @@ export class ConversationRepository { } if (conversationEntity.is_cleared()) { - await this._clearConversation(conversationEntity, conversationEntity.cleared_timestamp()); + await this.clearConversationContent(conversationEntity, conversationEntity.cleared_timestamp()); } if (isActiveConversation && (conversationEntity.is_archived() || conversationEntity.is_cleared())) { @@ -3700,6 +3687,7 @@ export class ConversationRepository { conversationEntity.hasCreationMessage = false; const iso_date = timestamp ? new Date(timestamp).toISOString() : undefined; + conversationEntity.removeMessages(); return this.eventService.deleteEvents(conversationEntity.id, iso_date); } diff --git a/src/script/conversation/ConversationState.ts b/src/script/conversation/ConversationState.ts index 185bde1806a..545c7b598ac 100644 --- a/src/script/conversation/ConversationState.ts +++ b/src/script/conversation/ConversationState.ts @@ -87,7 +87,6 @@ export class ConversationState { this.visibleConversations = ko.pureComputed(() => { return this.sortedConversations().filter( conversation => - !conversation.is_cleared() && !conversation.is_archived() && // We filter out 1 on 1 conversation with unavailable users that don't have messages (!conversation.is1to1() || From db7474ef1ba178ed9b332e614d1ff1495e6909c7 Mon Sep 17 00:00:00 2001 From: Amir Ghezelbash Date: Mon, 20 Nov 2023 21:35:29 +0330 Subject: [PATCH 80/95] fix: show confirm modal when calling a conversation from wrapper top bar menu (WPB-5445) (#16248) * fix: show confirm modal when calling a conversation from wrapper top bar menu (WPB-5445) * change number * bring all implemenation to calling view model * use MAX_USERS_TO_PING_WITHOUT_ALERT env * change count to 4 --- server/config/client.config.ts | 2 +- src/script/calling/CallingRepository.ts | 14 ------------- src/script/view_model/CallingViewModel.ts | 24 +++++++++++++++++++++-- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/server/config/client.config.ts b/server/config/client.config.ts index 619c4d33cc1..89e28dffa88 100644 --- a/server/config/client.config.ts +++ b/server/config/client.config.ts @@ -71,7 +71,7 @@ export function generateConfig(params: ConfigGeneratorParams, env: Env) { SHOW_LOADING_INFORMATION: env.FEATURE_SHOW_LOADING_INFORMATION == 'true', USE_CORE_CRYPTO: env.FEATURE_USE_CORE_CRYPTO == 'true', MAX_USERS_TO_PING_WITHOUT_ALERT: - (env.FEATURE_MAX_USERS_TO_PING_WITHOUT_ALERT && Number(env.FEATURE_MAX_USERS_TO_PING_WITHOUT_ALERT)) || 3, + (env.FEATURE_MAX_USERS_TO_PING_WITHOUT_ALERT && Number(env.FEATURE_MAX_USERS_TO_PING_WITHOUT_ALERT)) || 4, }, MAX_GROUP_PARTICIPANTS: (env.MAX_GROUP_PARTICIPANTS && Number(env.MAX_GROUP_PARTICIPANTS)) || 500, MAX_VIDEO_PARTICIPANTS: (env.MAX_VIDEO_PARTICIPANTS && Number(env.MAX_VIDEO_PARTICIPANTS)) || 4, diff --git a/src/script/calling/CallingRepository.ts b/src/script/calling/CallingRepository.ts index 8b4ba2fb140..a172c3dc76d 100644 --- a/src/script/calling/CallingRepository.ts +++ b/src/script/calling/CallingRepository.ts @@ -512,7 +512,6 @@ export class CallingRepository { */ subscribeToEvents(): void { amplify.subscribe(WebAppEvents.CALL.EVENT_FROM_BACKEND, this.onCallEvent); - amplify.subscribe(WebAppEvents.CALL.STATE.TOGGLE, this.toggleState); // This event needs to be kept, it is sent by the wrapper amplify.subscribe(WebAppEvents.PROPERTIES.UPDATE.CALL.ENABLE_VBR_ENCODING, this.toggleCbrEncoding); amplify.subscribe(WebAppEvents.PROPERTIES.UPDATED, ({settings}: WebappProperties) => { this.toggleCbrEncoding(settings.call.enable_vbr_encoding); @@ -683,19 +682,6 @@ export class CallingRepository { // Call actions //############################################################################## - private readonly toggleState = (withVideo: boolean): void => { - const conversation = this.conversationState.activeConversation(); - if (conversation) { - const isActiveCall = this.findCall(conversation.qualifiedId); - const callType = withVideo ? CALL_TYPE.VIDEO : CALL_TYPE.NORMAL; - return ( - (isActiveCall - ? this.leaveCall(conversation.qualifiedId, LEAVE_CALL_REASON.ELECTRON_TRAY_MENU_MESSAGE) - : this.startCall(conversation, callType)) && undefined - ); - } - }; - private getConversationType(conversation: Conversation): CONV_TYPE { if (!conversation.isGroup()) { return CONV_TYPE.ONEONONE; diff --git a/src/script/view_model/CallingViewModel.ts b/src/script/view_model/CallingViewModel.ts index eed8e2965a7..6d387a3a0aa 100644 --- a/src/script/view_model/CallingViewModel.ts +++ b/src/script/view_model/CallingViewModel.ts @@ -18,11 +18,13 @@ */ import {QualifiedId} from '@wireapp/api-client/lib/user'; +import {amplify} from 'amplify'; import ko from 'knockout'; import {container} from 'tsyringe'; import {CALL_TYPE, REASON as CALL_REASON, STATE as CALL_STATE} from '@wireapp/avs'; import {Availability} from '@wireapp/protocol-messaging'; +import {WebAppEvents} from '@wireapp/webapp-events'; import {ButtonGroupTab} from 'Components/calling/ButtonGroup'; import 'Components/calling/ChooseScreen'; @@ -81,7 +83,8 @@ declare global { setSinkId?: (sinkId: string) => Promise; } } -const maxGroupSize = 4; +const MAX_USERS_TO_CALL_WITHOUT_CONFIRM = Config.getConfig().FEATURE.MAX_USERS_TO_PING_WITHOUT_ALERT; + export class CallingViewModel { readonly activeCalls: ko.PureComputed; readonly callActions: CallActions; @@ -113,6 +116,23 @@ export class CallingViewModel { }), ); + const toggleState = async (withVideo: boolean): Promise => { + const conversation = this.conversationState.activeConversation(); + if (conversation) { + const isActiveCall = this.callingRepository.findCall(conversation.qualifiedId); + const callType = withVideo ? CALL_TYPE.VIDEO : CALL_TYPE.NORMAL; + + if (isActiveCall) { + this.callingRepository.leaveCall(conversation.qualifiedId, LEAVE_CALL_REASON.ELECTRON_TRAY_MENU_MESSAGE); + return; + } + + await handleCallAction(conversation, callType); + } + }; + + amplify.subscribe(WebAppEvents.CALL.STATE.TOGGLE, toggleState); // This event needs to be kept, it is sent by the wrapper + const ring = (call: Call): void => { const sounds: Partial> = { [CALL_STATE.INCOMING]: AudioType.INCOMING_CALL, @@ -185,7 +205,7 @@ export class CallingViewModel { const handleCallAction = async (conversationEntity: Conversation, callType: CALL_TYPE): Promise => { const memberCount = conversationEntity.participating_user_ets().length; - if (memberCount > maxGroupSize) { + if (memberCount > MAX_USERS_TO_CALL_WITHOUT_CONFIRM) { PrimaryModal.show(PrimaryModal.type.WITHOUT_TITLE, { preventClose: true, primaryAction: { From 2943b901da3a93789cdedc700977e5bddfab9bd0 Mon Sep 17 00:00:00 2001 From: Otto the Bot Date: Tue, 21 Nov 2023 14:39:52 +0100 Subject: [PATCH 81/95] chore: Update translations (#16249) --- src/i18n/de-DE.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/i18n/de-DE.json b/src/i18n/de-DE.json index 34b2a9d4039..a8fba8b88e4 100644 --- a/src/i18n/de-DE.json +++ b/src/i18n/de-DE.json @@ -137,15 +137,15 @@ "accountForm.terms": "Ich akzeptiere die Nutzungsbedingungen", "accountForm.termsAndPrivacyPolicy": "Ich akzeptiere die Datenschutzerklärung und Nutzungsbedingungen", "acme.done.button": "Ok", - "acme.done.button.close": "Close window 'Certificate Downloaded'", - "acme.done.headline": "Certificate Downloaded", + "acme.done.button.close": "Fenster 'Zertifikat herunterladen' schließen", + "acme.done.headline": "Zertifikat heruntergeladen", "acme.done.paragraph": "Das Zertifikat ist nun aktiv und Ihr Gerät ist verifiziert. Mehr Details zu diesem Zertifikat finden Sie in Ihren Wire-Einstellungen unter Geräte.", - "acme.error.button.close": "Close window 'Something went wrong'", + "acme.error.button.close": "Fenster 'Es ist ein Fehler aufgetreten' schließen", "acme.error.button.primary": "Wiederholen", "acme.error.button.secondary": "Abbrechen", "acme.error.headline": "Ein Fehler ist aufgetreten", "acme.error.paragraph": "Certiticate could not no downloaded

    You can retry to get the certificate now. Or the system will try it automatically in the background during the next 24 hours.", - "acme.inProgress.button.close": "Close window 'Getting Certificate'", + "acme.inProgress.button.close": "Fenster 'Zertifikat erhalten' schließen", "acme.inProgress.headline": "Zertifikat erhalten", "acme.inProgress.paragraph.alt": "Herunterladen…", "acme.inProgress.paragraph.main": "Please navigate to your web browser and log in to the certiticate service.

    In case the website does not open. you can also navigate there manually by following this URL:

    {{url}}", From b1785e2d78458b6a8e830b38053dd14f12db3516 Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Tue, 21 Nov 2023 14:40:19 +0100 Subject: [PATCH 82/95] chore: cleanup applock extra observables (#16250) --- src/script/team/TeamState.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/script/team/TeamState.ts b/src/script/team/TeamState.ts index 26f76802467..12c451c89aa 100644 --- a/src/script/team/TeamState.ts +++ b/src/script/team/TeamState.ts @@ -49,9 +49,6 @@ export class TeamState { public readonly isSelfDeletingMessagesEnabled: ko.PureComputed; public readonly isSelfDeletingMessagesEnforced: ko.PureComputed; public readonly getEnforcedSelfDeletingMessagesTimeout: ko.PureComputed; - public readonly isAppLockEnabled: ko.PureComputed; - public readonly isAppLockEnforced: ko.PureComputed; - public readonly appLockInactivityTimeoutSecs: ko.PureComputed; /** all the members of the team */ readonly teamMembers: ko.PureComputed; /** all the members of the team + the users the selfUser is connected with */ @@ -123,11 +120,6 @@ export class TeamState { this.isConferenceCallingEnabled = ko.pureComputed( () => this.teamFeatures()?.conferenceCalling?.status === FeatureStatus.ENABLED, ); - this.isAppLockEnabled = ko.pureComputed(() => this.teamFeatures()?.appLock?.status === FeatureStatus.ENABLED); - this.isAppLockEnforced = ko.pureComputed(() => this.teamFeatures()?.appLock?.config?.enforceAppLock); - this.appLockInactivityTimeoutSecs = ko.pureComputed( - () => this.teamFeatures()?.appLock?.config?.inactivityTimeoutSecs, - ); this.isGuestLinkEnabled = ko.pureComputed( () => this.teamFeatures()?.conversationGuestLinks?.status === FeatureStatus.ENABLED, ); From d97738243bf2b682c91d822770b3b7b0221becf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20G=C3=B3rka?= Date: Tue, 21 Nov 2023 17:07:06 +0100 Subject: [PATCH 83/95] runfix: cleared conversation visible (#16252) * runfix: do not filter removed and cleared conversations * runfix: update cleared timestamp after clearing a conversation * runfix: update cleared timestamp on member leave event * runfix: clear content timestamp * runfix: do not delete left and cleared conversations from the store * test: update tests * runfix: do not change active conversation if update happend in cleared convo --- .../ConversationRepository.test.ts | 12 ++- .../conversation/ConversationRepository.ts | 98 ++++++++----------- src/script/conversation/ConversationState.ts | 14 +-- src/script/main/app.ts | 2 +- src/script/view_model/ContentViewModel.ts | 3 - 5 files changed, 58 insertions(+), 71 deletions(-) diff --git a/src/script/conversation/ConversationRepository.test.ts b/src/script/conversation/ConversationRepository.test.ts index 884b9049c90..6c0d9d90a58 100644 --- a/src/script/conversation/ConversationRepository.test.ts +++ b/src/script/conversation/ConversationRepository.test.ts @@ -896,6 +896,14 @@ describe('ConversationRepository', () => { }); describe('clearConversation', () => { + afterEach(() => { + jest.useRealTimers(); + }); + + beforeEach(() => { + jest.useFakeTimers(); + }); + it('clears all the messages from database and local state and re-applies creation message', async () => { const conversationRepository = testFactory.conversation_repository!; const messageRepository = testFactory.message_repository!; @@ -911,13 +919,15 @@ describe('ConversationRepository', () => { jest.spyOn(conversationEntity, 'removeMessages').mockImplementationOnce(jest.fn()); jest.spyOn(conversationRepository['eventService'], 'deleteEvents').mockImplementationOnce(jest.fn()); + const mockedCurrentDate = new Date(1000); + jest.setSystemTime(mockedCurrentDate); await conversationRepository.clearConversation(conversationEntity); expect(messageRepository.updateClearedTimestamp).toHaveBeenCalledWith(conversationEntity); expect(conversationEntity.removeMessages).toHaveBeenCalled(); expect(conversationRepository['eventService'].deleteEvents).toHaveBeenCalledWith( conversationEntity.id, - undefined, + mockedCurrentDate.toISOString(), ); expect(eventRepository.injectEvent).toHaveBeenCalledWith( diff --git a/src/script/conversation/ConversationRepository.ts b/src/script/conversation/ConversationRepository.ts index 09826fa3f8e..5c145f42bbd 100644 --- a/src/script/conversation/ConversationRepository.ts +++ b/src/script/conversation/ConversationRepository.ts @@ -360,24 +360,6 @@ export class ConversationRepository { } }; - /** - * Remove obsolete conversations locally. - */ - cleanupConversations(): void { - this.conversationState.conversations().forEach(conversationEntity => { - if ( - conversationEntity.isGroup() && - conversationEntity.is_cleared() && - conversationEntity.removed_from_conversation() - ) { - this.conversationService.deleteConversationFromDb(conversationEntity.id); - this.deleteConversationFromRepository(conversationEntity); - } - }); - - this.cleanupEphemeralMessages(); - } - //############################################################################## // Conversation service interactions //############################################################################## @@ -2129,9 +2111,9 @@ export class ConversationRepository { * @param conversation Conversation to clear content from * @param timestamp Timestamp of the event */ - public async clearConversation(conversation: Conversation, timestamp?: number) { + public async clearConversation(conversation: Conversation) { await this.messageRepository.updateClearedTimestamp(conversation); - return this.clearConversationContent(conversation, timestamp); + return this.clearConversationContent(conversation, new Date().getTime()); } /** @@ -2141,9 +2123,10 @@ export class ConversationRepository { * @param conversation Conversation to clear content from * @param timestamp Timestamp of the event */ - private async clearConversationContent(conversation: Conversation, timestamp?: number) { + private async clearConversationContent(conversation: Conversation, timestamp: number) { await this.deleteMessages(conversation, timestamp); - return this.addCreationMessage(conversation, !!this.userState.self()?.isTemporaryGuest(), timestamp); + await this.addCreationMessage(conversation, !!this.userState.self()?.isTemporaryGuest(), timestamp); + conversation.setTimestamp(timestamp, Conversation.TIMESTAMP_TYPE.CLEARED); } async leaveGuestRoom(): Promise { @@ -2657,11 +2640,9 @@ export class ConversationRepository { conversationEntity => this.reactToConversationEvent(conversationEntity, eventJson, eventSource) as Promise, ) - .then((entityObject = {} as EntityObject) => { - if (type !== CONVERSATION_EVENT.MEMBER_JOIN && type !== CONVERSATION_EVENT.MEMBER_LEAVE) { - this.handleConversationNotification(entityObject as EntityObject, eventSource); - } - }) + .then((entityObject = {} as EntityObject) => + this.handleConversationNotification(entityObject as EntityObject, eventSource, type), + ) .catch((error: BaseError) => { const ignoredErrorTypes: string[] = [ ConversationError.TYPE.MESSAGE_NOT_FOUND, @@ -2897,10 +2878,23 @@ export class ConversationRepository { * @param eventSource Source of event * @returns Resolves when the conversation was updated */ - private async handleConversationNotification(entityObject: EntityObject, eventSource: EventSource) { + private async handleConversationNotification( + entityObject: EntityObject, + eventSource: EventSource, + eventType: CLIENT_CONVERSATION_EVENT | CONVERSATION_EVENT, + ) { const {conversationEntity, messageEntity} = entityObject; - if (conversationEntity) { + if (!conversationEntity) { + return; + } + + const eventsToSkip: (CLIENT_CONVERSATION_EVENT | CONVERSATION_EVENT)[] = [ + CONVERSATION_EVENT.MEMBER_JOIN, + CONVERSATION_EVENT.MEMBER_LEAVE, + ]; + + if (!eventsToSkip.includes(eventType)) { const eventFromWebSocket = eventSource === EventRepository.SOURCE.WEB_SOCKET; const eventFromStream = eventSource === EventRepository.SOURCE.STREAM; @@ -2914,12 +2908,12 @@ export class ConversationRepository { if (!eventFromStream) { amplify.publish(WebAppEvents.NOTIFICATION.NOTIFY, messageEntity, undefined, conversationEntity); } - - if (conversationEntity.is_cleared()) { - conversationEntity.cleared_timestamp(0); - } } } + + if (conversationEntity.is_cleared()) { + conversationEntity.cleared_timestamp(0); + } } /** @@ -3167,10 +3161,8 @@ export class ConversationRepository { conversationEntity: Conversation, eventJson: ConversationMemberLeaveEvent | TeamMemberLeaveEvent | MemberLeaveEvent, ): Promise<{conversationEntity: Conversation; messageEntity: Message} | undefined> { - const {data: eventData, from} = eventJson; - const isFromSelf = from === this.userState.self().id; + const {data: eventData} = eventJson; const removesSelfUser = eventData.user_ids.includes(this.userState.self().id); - const selfLeavingClearedConversation = isFromSelf && removesSelfUser && conversationEntity.is_cleared(); if (removesSelfUser) { conversationEntity.status(ConversationStatus.PAST_MEMBER); @@ -3197,27 +3189,23 @@ export class ConversationRepository { await this.conversationRoleRepository.updateConversationRoles(conversationEntity); } - if (!selfLeavingClearedConversation) { - const {messageEntity} = await this.addEventToConversation(conversationEntity, eventJson); - (messageEntity as MemberMessage) - .userEntities() - .filter(userEntity => !userEntity.isMe) - .forEach(userEntity => { - conversationEntity.participating_user_ids.remove(userId => matchQualifiedIds(userId, userEntity)); - - if (userEntity.isTemporaryGuest()) { - userEntity.clearExpirationTimeout(); - } - }); - - await this.updateParticipatingUserEntities(conversationEntity); + const {messageEntity} = await this.addEventToConversation(conversationEntity, eventJson); + (messageEntity as MemberMessage) + .userEntities() + .filter(userEntity => !userEntity.isMe) + .forEach(userEntity => { + conversationEntity.participating_user_ids.remove(userId => matchQualifiedIds(userId, userEntity)); + + if (userEntity.isTemporaryGuest()) { + userEntity.clearExpirationTimeout(); + } + }); - this.proteusVerificationStateHandler.onMemberLeft(conversationEntity); + await this.updateParticipatingUserEntities(conversationEntity); - return {conversationEntity, messageEntity}; - } + this.proteusVerificationStateHandler.onMemberLeft(conversationEntity); - return undefined; + return {conversationEntity, messageEntity}; } /** @@ -3279,7 +3267,7 @@ export class ConversationRepository { await this.clearConversationContent(conversationEntity, conversationEntity.cleared_timestamp()); } - if (isActiveConversation && (conversationEntity.is_archived() || conversationEntity.is_cleared())) { + if (isActiveConversation && conversationEntity.is_archived()) { amplify.publish(WebAppEvents.CONVERSATION.SHOW, nextConversationEntity, {}); } } diff --git a/src/script/conversation/ConversationState.ts b/src/script/conversation/ConversationState.ts index 545c7b598ac..aed7930780a 100644 --- a/src/script/conversation/ConversationState.ts +++ b/src/script/conversation/ConversationState.ts @@ -111,17 +111,9 @@ export class ConversationState { ConnectionStatus.PENDING, ]; - const isCleared = conversationEntity.is_cleared(); - const isRemoved = conversationEntity.removed_from_conversation(); - - if ( - isSelfConversation(conversationEntity) || - states_to_filter.includes(conversationEntity.connection().status()) - ) { - return false; - } - - return !(isCleared && isRemoved); + return !( + isSelfConversation(conversationEntity) || states_to_filter.includes(conversationEntity.connection().status()) + ); }); }); diff --git a/src/script/main/app.ts b/src/script/main/app.ts index b5947b4018b..c3d24b64271 100644 --- a/src/script/main/app.ts +++ b/src/script/main/app.ts @@ -497,7 +497,7 @@ export class App { startNewVersionPolling(Environment.version(false), this.update); } audioRepository.init(true); - conversationRepository.cleanupConversations(); + await conversationRepository.cleanupEphemeralMessages(); callingRepository.setReady(); telemetry.timeStep(AppInitTimingsStep.APP_LOADED); diff --git a/src/script/view_model/ContentViewModel.ts b/src/script/view_model/ContentViewModel.ts index 023993473bb..d935483b25c 100644 --- a/src/script/view_model/ContentViewModel.ts +++ b/src/script/view_model/ContentViewModel.ts @@ -271,9 +271,6 @@ export class ContentViewModel { this.conversationState.activeConversation(conversationEntity); } - if (conversationEntity.is_cleared()) { - conversationEntity.cleared_timestamp(0); - } const messageEntity = openFirstSelfMention ? conversationEntity.getFirstUnreadSelfMention() : exposeMessageEntity; this.changeConversation(conversationEntity, messageEntity); this.showAndNavigate(conversationEntity, openNotificationSettings); From 55d65ce85b20b74727869f39a46789a6ed0b64f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= <77456193+aweiss-dev@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:17:39 +0100 Subject: [PATCH 84/95] feat: use backend provided idp (#16254) * feat: use backend provided idp * feat: Update Core --- package.json | 6 +- .../E2EIdentity/OIDCService/OIDCService.ts | 17 +++-- .../OIDCService/OIDCService.types.ts | 23 ++++++ .../OIDCService/OIDCServiceStorage.ts | 14 ++++ src/script/E2EIdentity/OIDCService/index.ts | 25 +++++-- yarn.lock | 74 +++++++++---------- 6 files changed, 107 insertions(+), 52 deletions(-) create mode 100644 src/script/E2EIdentity/OIDCService/OIDCService.types.ts diff --git a/package.json b/package.json index af60aa1165e..0d00c332f6b 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,8 @@ "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.5.2", "@wireapp/commons": "5.2.3", - "@wireapp/core": "42.20.0", - "@wireapp/react-ui-kit": "9.10.0", + "@wireapp/core": "42.21.0", + "@wireapp/react-ui-kit": "9.11.0", "@wireapp/store-engine-dexie": "2.1.6", "@wireapp/store-engine-sqleet": "1.8.9", "@wireapp/webapp-events": "0.18.3", @@ -95,7 +95,7 @@ "@types/speakingurl": "13.0.6", "@types/underscore": "1.11.14", "@types/webpack-env": "1.18.4", - "@wireapp/copy-config": "2.1.11", + "@wireapp/copy-config": "2.1.12", "@wireapp/eslint-config": "3.0.4", "@wireapp/prettier-config": "0.6.3", "@wireapp/store-engine": "^5.1.4", diff --git a/src/script/E2EIdentity/OIDCService/OIDCService.ts b/src/script/E2EIdentity/OIDCService/OIDCService.ts index 6f0aef805dd..c7fda519fb5 100644 --- a/src/script/E2EIdentity/OIDCService/OIDCService.ts +++ b/src/script/E2EIdentity/OIDCService/OIDCService.ts @@ -21,25 +21,30 @@ import {UserManager, User, UserManagerSettings} from 'oidc-client-ts'; import {clearKeysStartingWith} from 'Util/localStorage'; +import {OidcClientData} from './OIDCService.types'; + interface OIDCServiceConfig { authorityUrl: string; - audience: string; redirectUri: string; - clientSecret?: string; + oidcClient: OidcClientData; } export class OIDCService { private userManager: UserManager; constructor(config: OIDCServiceConfig) { - const {authorityUrl, audience, redirectUri, clientSecret = ''} = config; + const { + authorityUrl, + redirectUri, + oidcClient: {id, secret}, + } = config; const dexioConfig: UserManagerSettings = { authority: authorityUrl, - client_id: audience, + client_id: id, redirect_uri: redirectUri, response_type: 'code', - scope: 'openid profile email', - client_secret: clientSecret, + scope: 'openid profile email offline_access', + client_secret: secret, }; this.userManager = new UserManager(dexioConfig); diff --git a/src/script/E2EIdentity/OIDCService/OIDCService.types.ts b/src/script/E2EIdentity/OIDCService/OIDCService.types.ts new file mode 100644 index 00000000000..ace7b6191e7 --- /dev/null +++ b/src/script/E2EIdentity/OIDCService/OIDCService.types.ts @@ -0,0 +1,23 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +export type OidcClientData = { + id: string; + secret?: string; +}; diff --git a/src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts b/src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts index da41033ad67..13697def033 100644 --- a/src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts +++ b/src/script/E2EIdentity/OIDCService/OIDCServiceStorage.ts @@ -17,22 +17,36 @@ * */ +import {OidcClientData} from './OIDCService.types'; + const TargetURLKey = 'E2EIdentity_OIDCService_TargetURL'; +const clientDataKey = 'E2EIdentity_OIDCService_ClientData'; const OIDCServiceStore = { store: { + clientData: (data: OidcClientData) => localStorage.setItem(clientDataKey, JSON.stringify(data)), targetURL: (url: string) => localStorage.setItem(TargetURLKey, url), }, get: { + clientData: (): OidcClientData => { + const clientData = localStorage.getItem(clientDataKey); + if (!clientData) { + throw new Error('No client data found in OIDCServiceStore'); + } + return JSON.parse(clientData); + }, targetURL: () => localStorage.getItem(TargetURLKey), }, has: { + clientData: () => localStorage.getItem(clientDataKey) !== null, targetURL: () => localStorage.getItem(TargetURLKey) !== null, }, clear: { + clientData: () => localStorage.removeItem(clientDataKey), targetURL: () => localStorage.removeItem(TargetURLKey), all: () => { OIDCServiceStore.clear.targetURL(); + OIDCServiceStore.clear.clientData(); }, }, }; diff --git a/src/script/E2EIdentity/OIDCService/index.ts b/src/script/E2EIdentity/OIDCService/index.ts index 290e1343c8d..562c27304ea 100644 --- a/src/script/E2EIdentity/OIDCService/index.ts +++ b/src/script/E2EIdentity/OIDCService/index.ts @@ -20,18 +20,31 @@ import {OIDCService} from './OIDCService'; import {OIDCServiceStore} from './OIDCServiceStorage'; +// MOCK: store targetURL and clientData in OIDCServiceStore +// TODO: remove this once we have a proper OIDC service +OIDCServiceStore.store.clientData({ + id: 'wireapp', + secret: 'dUpVSGx2dVdFdGQ0dmsxWGhDalQ0SldU', +}); + // lots of hardcoded values here, but this is just for testing until we have a proper OIDC service export const getOIDCServiceInstance = (): OIDCService => { - // if there is no targetURL, we cannot create an OIDCService const targetURL = OIDCServiceStore.get.targetURL(); + const clientData = OIDCServiceStore.get.clientData(); + + // if there is no targetURL, we cannot create an OIDCService if (!targetURL) { - throw new Error('No targetURL found in OIDCServiceStore'); + throw new Error('No target URL found in OIDCServiceStore'); + } + // if there is no clientData ID, we cannot create an OIDCService + if (!clientData || !clientData.id) { + throw new Error('No client data found in OIDCServiceStore'); } + const oidcService = new OIDCService({ - audience: '338888153072-ktbh66pv3mr0ua0dn64sphgimeo0p7ss.apps.googleusercontent.com', - authorityUrl: 'https://accounts.google.com' || targetURL, - redirectUri: 'https://local.elna.wire.link:8081/oidc', - clientSecret: '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', + oidcClient: clientData, + authorityUrl: targetURL, + redirectUri: `${location.origin}/oidc`, }); return oidcService; }; diff --git a/yarn.lock b/yarn.lock index a46a961e15e..437e98eef55 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6146,15 +6146,15 @@ __metadata: languageName: node linkType: hard -"@wireapp/api-client@npm:^26.5.2": - version: 26.5.2 - resolution: "@wireapp/api-client@npm:26.5.2" +"@wireapp/api-client@npm:^26.5.3": + version: 26.5.3 + resolution: "@wireapp/api-client@npm:26.5.3" dependencies: "@wireapp/commons": ^5.2.3 "@wireapp/priority-queue": ^2.1.4 "@wireapp/protocol-messaging": 1.44.0 - axios: 1.6.1 - axios-retry: 3.8.1 + axios: 1.6.2 + axios-retry: 3.9.1 http-status-codes: 2.3.0 logdown: 3.3.1 pako: 2.1.0 @@ -6163,7 +6163,7 @@ __metadata: tough-cookie: 4.1.3 ws: 8.14.2 zod: 3.22.4 - checksum: f118cc9ab64dc4a7ea07a61c506829784d92ecad5c9473c0b40701d32c9ce6171273291060119ba9bba86c13ebe9611030e73e0a93f764dabadd3ed7697b8395 + checksum: 6520b95ebd8ccc59b576c890651bd20c782fa3054b303e857a428f09dbcc37ce6a661e3ee27cdc182b896481e1e7a610c796430fb9c40cffb3fb8fe4b74afe5d languageName: node linkType: hard @@ -6193,11 +6193,11 @@ __metadata: languageName: node linkType: hard -"@wireapp/copy-config@npm:2.1.11": - version: 2.1.11 - resolution: "@wireapp/copy-config@npm:2.1.11" +"@wireapp/copy-config@npm:2.1.12": + version: 2.1.12 + resolution: "@wireapp/copy-config@npm:2.1.12" dependencies: - axios: 1.6.1 + axios: 1.6.2 copy: 0.3.2 cosmiconfig: 8.3.6 fs-extra: 11.1.0 @@ -6205,30 +6205,30 @@ __metadata: logdown: 3.3.1 bin: copy-config: lib/cli.js - checksum: 60c20c894ba56eedef2d02e81a79756eaf0c9a9a5670d569cc51aef494fd38363ba441b1ea882e1d9919b4e4a97c086fc23ccd972cdc4c9360311a0e0180a565 + checksum: 7dc799cd8b80cdfc8b5dffcf07c53f2e6ebeecd03f8fe24eb5532c8318bdeb2f4f87e4e68a7cf4d54e4ac721243321fbda517215e72f609fce74d4c73967bd1f languageName: node linkType: hard -"@wireapp/core-crypto@npm:1.0.0-rc.16": - version: 1.0.0-rc.16 - resolution: "@wireapp/core-crypto@npm:1.0.0-rc.16" - checksum: 95061f0a0ee69205492ffb254a60c81be604b6a7d76e5f3e512129c2a5669adc39114e343f50002ff77db7302e1cfd39ac8dd684a87d28555b95c1e4fda7a4f3 +"@wireapp/core-crypto@npm:1.0.0-rc.19": + version: 1.0.0-rc.19 + resolution: "@wireapp/core-crypto@npm:1.0.0-rc.19" + checksum: f3773696da9907a0f1ef1712bf191b1d92ff7e8b4513b188f9672f5485d8a6a9bb5e12dd6a76654bf343c55da47e2854533ae716e120efc80722ef19c665cda0 languageName: node linkType: hard -"@wireapp/core@npm:42.20.0": - version: 42.20.0 - resolution: "@wireapp/core@npm:42.20.0" +"@wireapp/core@npm:42.21.0": + version: 42.21.0 + resolution: "@wireapp/core@npm:42.21.0" dependencies: - "@wireapp/api-client": ^26.5.2 + "@wireapp/api-client": ^26.5.3 "@wireapp/commons": ^5.2.3 - "@wireapp/core-crypto": 1.0.0-rc.16 + "@wireapp/core-crypto": 1.0.0-rc.19 "@wireapp/cryptobox": 12.8.0 "@wireapp/promise-queue": ^2.2.8 "@wireapp/protocol-messaging": 1.44.0 "@wireapp/store-engine": 5.1.4 "@wireapp/store-engine-dexie": ^2.1.6 - axios: 1.6.1 + axios: 1.6.2 bazinga64: ^6.3.3 deepmerge-ts: 5.1.0 hash.js: 1.1.7 @@ -6238,7 +6238,7 @@ __metadata: long: ^5.2.0 uuidjs: 4.2.13 zod: 3.22.4 - checksum: caeb5d03263b25c2de3013d22a6644dcc59ac079858808bc3094724d0bd1d23b47d076e9adeb4d24a1558ee7594c4ddbb78b505217d6709270a0c4c3fdf2f0ad + checksum: 0513c3e4387071cc4b432ce600572dbed139fe5ce96209c01b2b2e2ecc9d5670c8a81f0b2c23c9576cb537095ce2781cd0bb2856d41e8b9bcd4beb29c99ae708 languageName: node linkType: hard @@ -6352,9 +6352,9 @@ __metadata: languageName: node linkType: hard -"@wireapp/react-ui-kit@npm:9.10.0": - version: 9.10.0 - resolution: "@wireapp/react-ui-kit@npm:9.10.0" +"@wireapp/react-ui-kit@npm:9.11.0": + version: 9.11.0 + resolution: "@wireapp/react-ui-kit@npm:9.11.0" dependencies: "@types/color": 3.0.6 color: 4.2.3 @@ -6369,7 +6369,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 1fd513927d743ea60c6a3927f19bd879d45b3d86ad9f5facea70815840e0542b5acb31bcd3175971e54d5fecdd935feb239395b149689192c3714e162e778687 + checksum: a1ac982c85f98a73f59be5f8f705077356f261d608d8e00020a8d187a6130b20141a41ed56f0f17e37af006ccb2628eba797715ce3ec5e51f4f2a70288cbbd40 languageName: node linkType: hard @@ -7088,24 +7088,24 @@ __metadata: languageName: node linkType: hard -"axios-retry@npm:3.8.1": - version: 3.8.1 - resolution: "axios-retry@npm:3.8.1" +"axios-retry@npm:3.9.1": + version: 3.9.1 + resolution: "axios-retry@npm:3.9.1" dependencies: "@babel/runtime": ^7.15.4 is-retry-allowed: ^2.2.0 - checksum: 9233523d34987838504b1ea9d5f90025bf9d1210e10c3851c28d1e97be9f0c2dd401ddc9f0568759c79426533795de9c54bb8429720ace641032c51fef71cb0f + checksum: 44e574ad559e4ee638e735662e9b9fcb69a1da6652adc3a75ca4b060e0fd40bdd7ac718e7743f51c0dad54149a6f3c09109275bf90298042542e80a17740a4e5 languageName: node linkType: hard -"axios@npm:1.6.1": - version: 1.6.1 - resolution: "axios@npm:1.6.1" +"axios@npm:1.6.2": + version: 1.6.2 + resolution: "axios@npm:1.6.2" dependencies: follow-redirects: ^1.15.0 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: 573f03f59b7487d54551b16f5e155d1d130ad4864ed32d1da93d522b78a57123b34e3bde37f822a65ee297e79f1db840f9ad6514addff50d3cbf5caeed39e8dc + checksum: 4a7429e2b784be0f2902ca2680964391eae7236faa3967715f30ea45464b98ae3f1c6f631303b13dfe721b17126b01f486c7644b9ef276bfc63112db9fd379f8 languageName: node linkType: hard @@ -19352,11 +19352,11 @@ __metadata: "@types/webpack-env": 1.18.4 "@wireapp/avs": 9.5.2 "@wireapp/commons": 5.2.3 - "@wireapp/copy-config": 2.1.11 - "@wireapp/core": 42.20.0 + "@wireapp/copy-config": 2.1.12 + "@wireapp/core": 42.21.0 "@wireapp/eslint-config": 3.0.4 "@wireapp/prettier-config": 0.6.3 - "@wireapp/react-ui-kit": 9.10.0 + "@wireapp/react-ui-kit": 9.11.0 "@wireapp/store-engine": ^5.1.4 "@wireapp/store-engine-dexie": 2.1.6 "@wireapp/store-engine-sqleet": 1.8.9 From 9b324f45e248cce71caad4c3d43b119509b02a0f Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Mon, 27 Nov 2023 10:27:01 +0100 Subject: [PATCH 85/95] runfix: Correctly show user/devices verification state (#16253) --- package.json | 2 +- src/__mocks__/@wireapp/core.ts | 3 +- .../E2EIdentity/E2EIdentityVerification.ts | 57 +++++++++---------- src/script/E2EIdentity/certificateDetails.ts | 37 ++++++++++++ src/script/components/UserDevices.tsx | 17 ++---- src/script/components/UserSearchableList.tsx | 1 - .../VerificationBadges.test.tsx | 3 +- .../VerificationBadge/VerificationBadges.tsx | 28 +++------ .../components/userDevices/DeviceCard.tsx | 16 +++--- .../components/userDevices/DeviceList.tsx | 7 ++- .../MLS/MLSStateHandler.test.ts | 4 +- .../MLS/MLSStateHandler.ts | 14 +++-- src/script/hooks/useDeviceIdentities.ts | 47 +++++++++++++++ .../DevicesPreferences/DevicesPreference.tsx | 16 ++---- .../components/DetailedDevice.tsx | 11 ++-- .../components/Device/Device.tsx | 16 +++--- .../DeviceDetailsPreferences.tsx | 4 +- .../E2EICertificateDetails.styles.ts | 2 +- .../E2EICertificateDetails.test.tsx | 34 ++++++----- .../E2EICertificateDetails.tsx | 8 +-- .../MLSDeviceDetails/MLSDeviceDetails.tsx | 15 +---- .../ConversationDetails.tsx | 11 ++-- .../GroupParticipantUser.tsx | 7 ++- .../ParticipantDevices/ParticipantDevices.tsx | 15 +---- src/script/page/RightSidebar/RightSidebar.tsx | 23 +------- src/script/util/certificateDetails.ts | 54 ------------------ yarn.lock | 20 +++---- 27 files changed, 228 insertions(+), 244 deletions(-) create mode 100644 src/script/E2EIdentity/certificateDetails.ts create mode 100644 src/script/hooks/useDeviceIdentities.ts delete mode 100644 src/script/util/certificateDetails.ts diff --git a/package.json b/package.json index 0d00c332f6b..bb6de2c6f08 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.5.2", "@wireapp/commons": "5.2.3", - "@wireapp/core": "42.21.0", + "@wireapp/core": "42.23.0", "@wireapp/react-ui-kit": "9.11.0", "@wireapp/store-engine-dexie": "2.1.6", "@wireapp/store-engine-sqleet": "1.8.9", diff --git a/src/__mocks__/@wireapp/core.ts b/src/__mocks__/@wireapp/core.ts index f972009952d..90a67f08c5e 100644 --- a/src/__mocks__/@wireapp/core.ts +++ b/src/__mocks__/@wireapp/core.ts @@ -39,7 +39,8 @@ export class Account extends EventEmitter { clearAllProgress: jest.fn(), hasActiveCertificate: jest.fn(), getCertificateData: jest.fn(), - getUserDeviceEntities: jest.fn(), + getUsersIdentities: jest.fn(() => new Map()), + getDeviceIdentities: jest.fn(), getConversationState: jest.fn(), }, mls: { diff --git a/src/script/E2EIdentity/E2EIdentityVerification.ts b/src/script/E2EIdentity/E2EIdentityVerification.ts index 81ce3efaa1e..2b4de04ded3 100644 --- a/src/script/E2EIdentity/E2EIdentityVerification.ts +++ b/src/script/E2EIdentity/E2EIdentityVerification.ts @@ -18,20 +18,25 @@ */ import {QualifiedId} from '@wireapp/api-client/lib/user'; -import {WireIdentity} from '@wireapp/core/lib/messagingProtocols/mls'; +import {DeviceIdentity} from '@wireapp/core/lib/messagingProtocols/mls'; import {container} from 'tsyringe'; -import {MLSStatuses} from 'Components/VerificationBadge'; import {Core} from 'src/script/service/CoreSingleton'; -import {getCertificateState} from 'Util/certificateDetails'; import {base64ToArray, supportsMLS} from 'Util/util'; -import {createUuid} from 'Util/uuid'; + +import {mapMLSStatus} from './certificateDetails'; import {Config} from '../Config'; -export type TMP_DecoratedWireIdentity = WireIdentity & { - state: MLSStatuses; - thumbprint: string; +export enum MLSStatuses { + VALID = 'valid', + NOT_DOWNLOADED = 'not_downloaded', + EXPIRED = 'expired', + EXPIRES_SOON = 'expires_soon', +} + +export type WireIdentity = Omit & { + status: MLSStatuses; }; export function getE2EIdentityService() { @@ -46,33 +51,27 @@ export function isE2EIEnabled(): boolean { return supportsMLS() && Config.getConfig().FEATURE.ENABLE_E2EI; } -export async function getDeviceIdentity( - groupId: string, - userId: QualifiedId, - deviceId: string, -): Promise { - const identities = await getE2EIdentityService().getUserDeviceEntities(groupId, {[deviceId]: userId}); - if (identities?.length) { - const extraData = { - state: getCertificateState(identities[0].certificate), - thumbprint: createUuid(), - }; - return {...identities[0], ...extraData}; +export async function getUsersIdentities(groupId: string, userIds: QualifiedId[]) { + const userVerifications = await getE2EIdentityService().getUsersIdentities(groupId, userIds); + + const mappedUsers = new Map(); + + for (const [userId, identities] of userVerifications.entries()) { + mappedUsers.set( + userId, + identities.map(identity => ({...identity, status: mapMLSStatus(identity.status)})), + ); } - return undefined; -} -// TODO: replace implementation with CoreCrypto once it has user verification method -export async function getUsersVerificationState(groupId: string, userIds: QualifiedId[]) { - return userIds.map(userId => ({ - userId, - state: Math.random() > 0.5 ? MLSStatuses.VALID : MLSStatuses.EXPIRED, - })); + return mappedUsers; } export async function getUserVerificationState(groupId: string, userId: QualifiedId) { - const usersVerifications = await getUsersVerificationState(groupId, [userId]); - return usersVerifications[0].state; + const usersVerifications = await getUsersIdentities(groupId, [userId]); + const deviceIdentities = usersVerifications.get(userId.id); + return deviceIdentities?.length && deviceIdentities.every(identity => identity.status === MLSStatuses.VALID) + ? MLSStatuses.VALID + : MLSStatuses.NOT_DOWNLOADED; } export async function getConversationVerificationState(groupId: string) { diff --git a/src/script/E2EIdentity/certificateDetails.ts b/src/script/E2EIdentity/certificateDetails.ts new file mode 100644 index 00000000000..91496ea9be4 --- /dev/null +++ b/src/script/E2EIdentity/certificateDetails.ts @@ -0,0 +1,37 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {WireIdentity} from '@wireapp/core/lib/messagingProtocols/mls'; + +import {MLSStatuses} from './E2EIdentityVerification'; + +type CoreStatus = WireIdentity['status']; + +export const mapMLSStatus = (status?: CoreStatus) => { + const statusMap: Record = { + Valid: MLSStatuses.VALID, + Expired: MLSStatuses.EXPIRED, + Revoked: MLSStatuses.EXPIRED, + }; + + if (!status) { + return MLSStatuses.NOT_DOWNLOADED; + } + return statusMap[status]; +}; diff --git a/src/script/components/UserDevices.tsx b/src/script/components/UserDevices.tsx index 2db865e0e97..6924af7c8d2 100644 --- a/src/script/components/UserDevices.tsx +++ b/src/script/components/UserDevices.tsx @@ -20,7 +20,6 @@ import React, {useEffect, useMemo, useState} from 'react'; import {ClientClassification} from '@wireapp/api-client/lib/client/'; -import {QualifiedId} from '@wireapp/api-client/lib/user'; import {partition} from 'Util/ArrayUtil'; import {t} from 'Util/LocalizerUtil'; @@ -33,10 +32,10 @@ import {NoDevicesFound} from './userDevices/NoDevicesFound'; import {SelfFingerprint} from './userDevices/SelfFingerprint'; import {ClientRepository, ClientEntity} from '../client'; -import {ConversationState} from '../conversation/ConversationState'; import {MessageRepository} from '../conversation/MessageRepository'; import {CryptographyRepository} from '../cryptography/CryptographyRepository'; import {User} from '../entity/User'; +import {useDeviceIdentities} from '../hooks/useDeviceIdentities'; enum FIND_MODE { FOUND = 'UserDevices.MODE.FOUND', @@ -81,14 +80,13 @@ const sortUserDevices = (devices: ClientEntity[]): ClientEntity[] => { interface UserDevicesProps { clientRepository: ClientRepository; - conversationState?: ConversationState; cryptographyRepository: CryptographyRepository; current: UserDevicesHistoryEntry; goTo: (state: UserDevicesState, headline: string) => void; - renderDeviceBadges?: (device: ClientEntity, userId: QualifiedId) => React.ReactNode; messageRepository: MessageRepository; noPadding?: boolean; user: User; + groupId?: string; } const UserDevices: React.FC = ({ @@ -99,9 +97,10 @@ const UserDevices: React.FC = ({ goTo, messageRepository, cryptographyRepository, - renderDeviceBadges, + groupId, }) => { const [selectedClient, setSelectedClient] = useState(); + const {getDeviceIdentity} = useDeviceIdentities(user.qualifiedId, groupId); const [deviceMode, setDeviceMode] = useState(FIND_MODE.REQUESTING); const [clients, setClients] = useState([]); const logger = useMemo(() => getLogger('UserDevicesComponent'), []); @@ -124,10 +123,6 @@ const UserDevices: React.FC = ({ })(); }, [user]); - const renderBadges = (device: ClientEntity) => { - return renderDeviceBadges?.(device, user.qualifiedId); - }; - const clickOnDevice = (clientEntity: ClientEntity) => { setSelectedClient(clientEntity); const headline = user.isMe ? clientEntity.label || clientEntity.model : capitalizeFirstChar(clientEntity.class); @@ -143,7 +138,7 @@ const UserDevices: React.FC = ({ return (
    {showDeviceList && deviceMode === FIND_MODE.FOUND && ( - + )} {showDeviceList && deviceMode === FIND_MODE.NOT_FOUND && } @@ -151,7 +146,7 @@ const UserDevices: React.FC = ({ {current.state === UserDevicesState.DEVICE_DETAILS && selectedClient && ( & { users: User[]; filter?: string; selected?: User[]; - renderParticipantBadges?: (user: User) => React.ReactNode; onUpdateSelectedUsers?: (updatedUsers: User[]) => void; searchRepository: SearchRepository; selfFirst?: boolean; diff --git a/src/script/components/VerificationBadge/VerificationBadges.test.tsx b/src/script/components/VerificationBadge/VerificationBadges.test.tsx index 5071f621428..477aeb5df87 100644 --- a/src/script/components/VerificationBadge/VerificationBadges.test.tsx +++ b/src/script/components/VerificationBadge/VerificationBadges.test.tsx @@ -20,8 +20,9 @@ import {render} from '@testing-library/react'; import {withTheme} from 'src/script/auth/util/test/TestUtil'; +import {MLSStatuses} from 'src/script/E2EIdentity'; -import {VerificationBadges, MLSStatuses} from './VerificationBadges'; +import {VerificationBadges} from './VerificationBadges'; describe('VerificationBadges', () => { it('is mls verified', async () => { diff --git a/src/script/components/VerificationBadge/VerificationBadges.tsx b/src/script/components/VerificationBadge/VerificationBadges.tsx index e3e4a37b6ed..7da97d07d0d 100644 --- a/src/script/components/VerificationBadge/VerificationBadges.tsx +++ b/src/script/components/VerificationBadge/VerificationBadges.tsx @@ -31,19 +31,17 @@ import { import {ClientEntity} from 'src/script/client'; import {ConversationVerificationState} from 'src/script/conversation/ConversationVerificationState'; -import {getUserVerificationState, isE2EIEnabled, TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; +import { + getUserVerificationState, + isE2EIEnabled, + MLSStatuses, + WireIdentity, +} from 'src/script/E2EIdentity/E2EIdentityVerification'; import {Conversation} from 'src/script/entity/Conversation'; import {User} from 'src/script/entity/User'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; -export enum MLSStatuses { - VALID = 'valid', - NOT_DOWNLOADED = 'not_downloaded', - EXPIRED = 'expired', - EXPIRES_SOON = 'expires_soon', -} - interface VerificationBadgesProps { conversationProtocol?: ConversationProtocol; isProteusVerified?: boolean; @@ -95,20 +93,12 @@ export const UserVerificationBadges = ({user, groupId}: {user: User; groupId?: s export const DeviceVerificationBadges = ({ device, - getDeviceIdentity, + getIdentity, }: { device: ClientEntity; - getDeviceIdentity?: (deviceId: string) => Promise; + getIdentity?: (deviceId: string) => WireIdentity | undefined; }) => { - const [MLSStatus, setMLSStatus] = useState(undefined); - useEffect(() => { - if (getDeviceIdentity) { - void (async () => { - const identity = await getDeviceIdentity(device.id); - setMLSStatus(identity?.state ?? MLSStatuses.NOT_DOWNLOADED); - })(); - } - }, []); + const MLSStatus = getIdentity ? getIdentity(device.id)?.status ?? MLSStatuses.NOT_DOWNLOADED : undefined; return ; }; diff --git a/src/script/components/userDevices/DeviceCard.tsx b/src/script/components/userDevices/DeviceCard.tsx index c75c1cf01a1..c31c9a838e1 100644 --- a/src/script/components/userDevices/DeviceCard.tsx +++ b/src/script/components/userDevices/DeviceCard.tsx @@ -21,30 +21,32 @@ import {ClientClassification} from '@wireapp/api-client/lib/client'; import cx from 'classnames'; import {useMessageFocusedTabIndex} from 'Components/MessagesList/Message/util'; +import {DeviceVerificationBadges} from 'Components/VerificationBadge'; +import {WireIdentity} from 'src/script/E2EIdentity'; import {handleKeyDown} from 'Util/KeyboardUtil'; import {t} from 'Util/LocalizerUtil'; import {splitFingerprint} from 'Util/StringUtil'; -import {type ClientEntity, MLSPublicKeys} from '../../client/ClientEntity'; +import {type ClientEntity} from '../../client/ClientEntity'; import {FormattedId} from '../../page/MainContent/panels/preferences/DevicesPreferences/components/FormattedId'; import {Icon} from '../Icon'; import {LegalHoldDot} from '../LegalHoldDot'; export interface DeviceCardProps { click?: (device: ClientEntity) => void; - renderDeviceBadges?: (device: ClientEntity) => React.ReactNode; + getDeviceIdentity?: (deviceId: string) => WireIdentity | undefined; device: ClientEntity; showIcon?: boolean; showVerified?: boolean; } -const DeviceCard = ({click, renderDeviceBadges, device: clientEntity, showIcon = false}: DeviceCardProps) => { +const DeviceCard = ({click, getDeviceIdentity, device: clientEntity, showIcon = false}: DeviceCardProps) => { const messageFocusedTabIndex = useMessageFocusedTabIndex(!!click); const {class: deviceClass = '?', id = '', label = '?'} = clientEntity; const name = clientEntity.getName(); const clickable = !!click; - const mlsFingerprint = clientEntity.mlsPublicKeys?.[MLSPublicKeys.ED25519]; + const deviceIdentity = getDeviceIdentity?.(clientEntity.id); const showLegalHoldIcon = showIcon && deviceClass === ClientClassification.LEGAL_HOLD; @@ -74,15 +76,15 @@ const DeviceCard = ({click, renderDeviceBadges, device: clientEntity, showIcon =
    {name} - {renderDeviceBadges?.(clientEntity)} +
    - {mlsFingerprint && ( + {deviceIdentity?.thumbprint && (

    {t('preferencesMLSThumbprint')} - +

    )} diff --git a/src/script/components/userDevices/DeviceList.tsx b/src/script/components/userDevices/DeviceList.tsx index 0fdba970c41..dce2baf5e77 100644 --- a/src/script/components/userDevices/DeviceList.tsx +++ b/src/script/components/userDevices/DeviceList.tsx @@ -21,6 +21,7 @@ import React from 'react'; import cx from 'classnames'; +import {WireIdentity} from 'src/script/E2EIdentity'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; @@ -33,13 +34,13 @@ import {getPrivacyWhyUrl} from '../../externalRoute'; interface DeviceListProps { clickOnDevice: (client: ClientEntity) => void; - renderDeviceBadges: (device: ClientEntity) => React.ReactNode; + getDeviceIdentity?: (deviceId: string) => WireIdentity | undefined; clients: ClientEntity[]; noPadding: boolean; user: User; } -const DeviceList: React.FC = ({user, renderDeviceBadges, noPadding, clients, clickOnDevice}) => { +const DeviceList: React.FC = ({user, getDeviceIdentity, noPadding, clients, clickOnDevice}) => { const {name: userName} = useKoSubscribableChildren(user, ['name']); return ( @@ -69,7 +70,7 @@ const DeviceList: React.FC = ({user, renderDeviceBadges, noPadd data-uie-name="item-device" > clickOnDevice(client)} showIcon diff --git a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts index c134445c429..3e91dc8e5f0 100644 --- a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts +++ b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.test.ts @@ -63,7 +63,7 @@ describe('MLSConversationVerificationStateHandler', () => { it('should degrade conversation', async () => { let triggerEpochChange: Function = () => {}; conversation.mlsVerificationState(ConversationVerificationState.VERIFIED); - jest.spyOn(e2eIdentity, 'getConversationState').mockResolvedValue(E2eiConversationState.Degraded); + jest.spyOn(e2eIdentity, 'getConversationVerificationState').mockResolvedValue(E2eiConversationState.Degraded); jest .spyOn(core.service!.mls!, 'on') .mockImplementation((_event, listener) => (triggerEpochChange = listener) as any); @@ -78,7 +78,7 @@ describe('MLSConversationVerificationStateHandler', () => { it('should verify conversation', async () => { let triggerEpochChange: Function = () => {}; conversation.mlsVerificationState(ConversationVerificationState.DEGRADED); - jest.spyOn(e2eIdentity, 'getConversationState').mockResolvedValue(E2eiConversationState.Verified); + jest.spyOn(e2eIdentity, 'getConversationVerificationState').mockResolvedValue(E2eiConversationState.Verified); jest .spyOn(core.service!.mls!, 'on') .mockImplementation((_event, listener) => (triggerEpochChange = listener) as any); diff --git a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts index 4538a475041..324d08c3820 100644 --- a/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts +++ b/src/script/conversation/ConversationVerificationStateHandler/MLS/MLSStateHandler.ts @@ -17,11 +17,11 @@ * */ +import {QualifiedId} from '@wireapp/api-client/lib/user'; import {E2eiConversationState} from '@wireapp/core/lib/messagingProtocols/mls'; import {container} from 'tsyringe'; -import {MLSStatuses} from 'Components/VerificationBadge'; -import {getConversationVerificationState, getUsersVerificationState} from 'src/script/E2EIdentity'; +import {getConversationVerificationState, getUsersIdentities, MLSStatuses} from 'src/script/E2EIdentity'; import {VerificationMessageType} from 'src/script/message/VerificationMessageType'; import {Core} from 'src/script/service/CoreSingleton'; import {Logger, getLogger} from 'Util/Logger'; @@ -57,9 +57,13 @@ class MLSConversationVerificationStateHandler { private async degradeConversation(conversation: MLSConversation) { const state = ConversationVerificationState.DEGRADED; conversation.mlsVerificationState(state); - const degradedUsers = (await getUsersVerificationState(conversation.groupId, conversation.participating_user_ids())) - .filter(user => user.state !== MLSStatuses.VALID) - .map(user => user.userId); + const userIdentities = await getUsersIdentities(conversation.groupId, conversation.participating_user_ids()); + const degradedUsers: QualifiedId[] = []; + for (const [userId, identities] of userIdentities.entries()) { + if (identities.some(identity => identity.status !== MLSStatuses.VALID)) { + degradedUsers.push({id: userId, domain: ''}); + } + } this.onConversationVerificationStateChange({ conversationEntity: conversation, diff --git a/src/script/hooks/useDeviceIdentities.ts b/src/script/hooks/useDeviceIdentities.ts new file mode 100644 index 00000000000..1ae94b428f6 --- /dev/null +++ b/src/script/hooks/useDeviceIdentities.ts @@ -0,0 +1,47 @@ +/* + * Wire + * Copyright (C) 2021 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +import {useEffect, useState} from 'react'; + +import {QualifiedId} from '@wireapp/api-client/lib/user'; + +import {getUsersIdentities, isE2EIEnabled, WireIdentity} from '../E2EIdentity'; + +export const useDeviceIdentities = (userId: QualifiedId, groupId?: string) => { + const [deviceIdentities, setDeviceIdentities] = useState(); + + useEffect(() => { + if (isE2EIEnabled() && groupId) { + void (async () => { + const userIdentities = await getUsersIdentities(groupId, [userId]); + setDeviceIdentities(userIdentities.get(userId.id) ?? []); + })(); + } + }, [userId.id, groupId]); + + return { + deviceIdentities, + getDeviceIdentity: + deviceIdentities !== undefined + ? (deviceId: string) => { + return deviceIdentities.find(identity => identity.deviceId === deviceId); + } + : undefined, + }; +}; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx index 7556cd661bb..0305119196e 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx @@ -26,6 +26,7 @@ import {ClientEntity} from 'src/script/client/ClientEntity'; import {CryptographyRepository} from 'src/script/cryptography/CryptographyRepository'; import {Conversation} from 'src/script/entity/Conversation'; import {User} from 'src/script/entity/User'; +import {useDeviceIdentities} from 'src/script/hooks/useDeviceIdentities'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; @@ -35,7 +36,6 @@ import {DeviceDetailsPreferences} from './components/DeviceDetailsPreferences'; import {ClientState} from '../../../../../client/ClientState'; import {ConversationState} from '../../../../../conversation/ConversationState'; -import * as e2eIdentity from '../../../../../E2EIdentity'; import {PreferencesPage} from '../components/PreferencesPage'; interface DevicesPreferencesProps { @@ -61,6 +61,10 @@ export const DevicesPreferences: React.FC = ({ const [localFingerprint, setLocalFingerprint] = useState(''); const {devices} = useKoSubscribableChildren(selfUser, ['devices']); + const {getDeviceIdentity} = useDeviceIdentities( + selfUser.qualifiedId, + conversationState.selfMLSConversation()?.groupId, + ); const currentClient = clientState.currentClient; const isSSO = selfUser.isNoPasswordSSO; @@ -71,16 +75,6 @@ export const DevicesPreferences: React.FC = ({ void cryptographyRepository.getLocalFingerprint().then(setLocalFingerprint); }, [cryptographyRepository]); - const getDeviceIdentity = e2eIdentity.isE2EIEnabled() - ? async (deviceId: string) => { - const selfConversation = conversationState.selfMLSConversation(); - if (!selfConversation) { - return undefined; - } - return e2eIdentity.getDeviceIdentity(selfConversation.groupId, selfUser.qualifiedId, deviceId); - } - : undefined; - if (selectedDevice) { return ( Promise; + getDeviceIdentity?: (deviceId: string) => WireIdentity | undefined; isProteusVerified?: boolean; } @@ -41,16 +41,15 @@ export const DetailedDevice: React.FC = ({ getDeviceIdentity, isProteusVerified, }) => { + const identity = getDeviceIdentity?.(device.id); return ( <>

    {device.model} - + identity} />

    - {getDeviceIdentity && ( - getDeviceIdentity(device.id)} /> - )} + {getDeviceIdentity && } diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx index c6ce18a44ca..31f5c740b9c 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/Device/Device.tsx @@ -21,23 +21,21 @@ import {MouseEvent, KeyboardEvent} from 'react'; import {TabIndex} from '@wireapp/react-ui-kit/lib/types/enums'; -import {WireIdentity} from '@wireapp/core-crypto'; - import {Icon} from 'Components/Icon'; import {DeviceVerificationBadges} from 'Components/VerificationBadge'; -import {TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; +import {WireIdentity} from 'src/script/E2EIdentity'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {handleKeyDown} from 'Util/KeyboardUtil'; import {t} from 'Util/LocalizerUtil'; import {splitFingerprint} from 'Util/StringUtil'; -import {ClientEntity, MLSPublicKeys} from '../../../../../../../client'; +import {ClientEntity} from '../../../../../../../client'; import {FormattedId} from '../FormattedId'; interface DeviceProps { device: ClientEntity; isSSO: boolean; - getDeviceIdentity?: (deviceId: string) => Promise; + getDeviceIdentity?: (deviceId: string) => WireIdentity | undefined; onRemove: (device: ClientEntity) => void; onSelect: (device: ClientEntity, currentDeviceIdentity?: WireIdentity) => void; deviceNumber: number; @@ -48,7 +46,7 @@ export const Device = ({device, isSSO, onSelect, onRemove, getDeviceIdentity, de const verifiedLabel = isVerified ? t('preferencesDevicesVerification') : t('preferencesDeviceNotVerified'); const deviceAriaLabel = `${t('preferencesDevice')} ${deviceNumber}, ${device.getName()}, ${verifiedLabel}`; - const mlsFingerprint = device.mlsPublicKeys?.[MLSPublicKeys.ED25519]; + const deviceIdentity = getDeviceIdentity?.(device.id); const handleClick = (event: MouseEvent) => { event.stopPropagation(); @@ -76,15 +74,15 @@ export const Device = ({device, isSSO, onSelect, onRemove, getDeviceIdentity, de aria-label={deviceAriaLabel} > {device.getName()} - +
    - {mlsFingerprint && ( + {deviceIdentity && (

    {t('preferencesMLSThumbprint')} - +

    )} diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx index d71903026ab..fa056133a12 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DeviceDetailsPreferences/DeviceDetailsPreferences.tsx @@ -22,7 +22,7 @@ import React, {useEffect, useState} from 'react'; import {Button, ButtonVariant} from '@wireapp/react-ui-kit'; import {ClientEntity} from 'src/script/client/ClientEntity'; -import {TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; +import {WireIdentity} from 'src/script/E2EIdentity'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; @@ -33,7 +33,7 @@ import {DetailedDevice} from '../DetailedDevice'; interface DevicesPreferencesProps { device: ClientEntity; getFingerprint: (device: ClientEntity) => Promise; - getDeviceIdentity?: (deviceId: string) => Promise; + getDeviceIdentity?: (deviceId: string) => WireIdentity | undefined; onClose: () => void; onRemove: (device: ClientEntity) => void; onResetSession: (device: ClientEntity) => Promise; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts index 9fbf6d4dba2..fc56908a974 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.styles.ts @@ -19,7 +19,7 @@ import {CSSObject} from '@emotion/serialize'; -import {MLSStatuses} from 'Components/VerificationBadge'; +import {MLSStatuses} from 'src/script/E2EIdentity'; const MLSStatusColor = { [MLSStatuses.VALID]: 'var(--green-500)', diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx index 11dff7cce04..0623d02f89c 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.test.tsx @@ -19,26 +19,21 @@ import {render} from '@testing-library/react'; -import {MLSStatuses} from 'Components/VerificationBadge'; import {withTheme} from 'src/script/auth/util/test/TestUtil'; -import {TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; +import {MLSStatuses, WireIdentity} from 'src/script/E2EIdentity'; import {E2EICertificateDetails} from './E2EICertificateDetails'; describe('E2EICertificateDetails', () => { - const generateIdentity = (state: MLSStatuses) => - ({ - state, - certificate: 'certificate', - }) as TMP_DecoratedWireIdentity; - - it('is e2ei identity verified', async () => { - const identity = generateIdentity(MLSStatuses.VALID); - - const {getByTestId} = render(withTheme()); - - const E2EIdentityStatus = getByTestId('e2ei-identity-status'); - expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.VALID); + const generateIdentity = (status: MLSStatuses): WireIdentity => ({ + status, + certificate: 'certificate', + clientId: '', + displayName: '', + domain: '', + handle: '', + thumbprint: '', + deviceId: '', }); it('is e2ei identity not downloaded', async () => { @@ -56,4 +51,13 @@ describe('E2EICertificateDetails', () => { const E2EIdentityStatus = getByTestId('e2ei-identity-status'); expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.EXPIRED); }); + + it('is e2ei identity verified', async () => { + const identity = generateIdentity(MLSStatuses.VALID); + + const {getByTestId} = render(withTheme()); + + const E2EIdentityStatus = getByTestId('e2ei-identity-status'); + expect(E2EIdentityStatus.getAttribute('data-uie-value')).toEqual(MLSStatuses.VALID); + }); }); diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx index b6c0363d7c5..9fe5acb468f 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/E2EICertificateDetails/E2EICertificateDetails.tsx @@ -22,8 +22,8 @@ import {useState} from 'react'; import {Button, ButtonVariant} from '@wireapp/react-ui-kit'; import {CertificateDetailsModal} from 'Components/Modals/CertificateDetailsModal'; -import {MLSStatuses, VerificationBadges} from 'Components/VerificationBadge'; -import {E2EIHandler, TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; +import {VerificationBadges} from 'Components/VerificationBadge'; +import {E2EIHandler, MLSStatuses, WireIdentity} from 'src/script/E2EIdentity'; import {t} from 'Util/LocalizerUtil'; import {getLogger} from 'Util/Logger'; @@ -32,14 +32,14 @@ import {styles} from './E2EICertificateDetails.styles'; const logger = getLogger('E2EICertificateDetails'); interface E2EICertificateDetailsProps { - identity?: TMP_DecoratedWireIdentity; + identity?: WireIdentity; isCurrentDevice?: boolean; } export const E2EICertificateDetails = ({identity, isCurrentDevice}: E2EICertificateDetailsProps) => { const [isCertificateDetailsModalOpen, setIsCertificateDetailsModalOpen] = useState(false); - const certificateState = identity?.state ?? MLSStatuses.NOT_DOWNLOADED; + const certificateState = identity?.status ?? MLSStatuses.NOT_DOWNLOADED; const isNotDownloaded = certificateState === MLSStatuses.NOT_DOWNLOADED; const isValid = certificateState === MLSStatuses.VALID; diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx index 6a7fd936f24..52c9a24690a 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.tsx @@ -17,9 +17,7 @@ * */ -import {useEffect, useState} from 'react'; - -import {TMP_DecoratedWireIdentity} from 'src/script/E2EIdentity'; +import {WireIdentity} from 'src/script/E2EIdentity'; import {t} from 'Util/LocalizerUtil'; import {splitFingerprint} from 'Util/StringUtil'; @@ -31,19 +29,13 @@ import {FormattedId} from '../FormattedId'; interface MLSDeviceDetailsProps { isCurrentDevice?: boolean; - getDeviceIdentity: () => Promise; + identity: WireIdentity | undefined; } -export const MLSDeviceDetails = ({isCurrentDevice, getDeviceIdentity}: MLSDeviceDetailsProps) => { - const [identity, setIdentity] = useState(); - useEffect(() => { - getDeviceIdentity?.().then(setIdentity); - }, []); - +export const MLSDeviceDetails = ({isCurrentDevice, identity}: MLSDeviceDetailsProps) => { return (

    {t('mlsSignature', MLSPublicKeys.ED25519.toUpperCase())}

    - {identity?.thumbprint && ( <>

    {t('mlsThumbprint')}

    @@ -53,7 +45,6 @@ export const MLSDeviceDetails = ({isCurrentDevice, getDeviceIdentity}: MLSDevice

    )} -
    ); diff --git a/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx b/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx index 40aca92a734..8f7f4eae0f2 100644 --- a/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx +++ b/src/script/page/RightSidebar/ConversationDetails/ConversationDetails.tsx @@ -31,6 +31,7 @@ import {ServiceDetails} from 'Components/panel/ServiceDetails'; import {UserDetails} from 'Components/panel/UserDetails'; import {ServiceList} from 'Components/ServiceList/ServiceList'; import {UserSearchableList} from 'Components/UserSearchableList'; +import {UserVerificationBadges} from 'Components/VerificationBadge'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; import {sortUsersByPriority} from 'Util/StringUtil'; @@ -65,7 +66,6 @@ const CONFIG = { interface ConversationDetailsProps { onClose?: () => void; - renderParticipantBadges?: (user: User) => React.ReactNode; togglePanel?: (panel: PanelState, entity: PanelEntity, addMode?: boolean, direction?: 'left' | 'right') => void; actionsViewModel: ActionsViewModel; activeConversation: Conversation; @@ -83,7 +83,6 @@ const ConversationDetails = forwardRef { onClose = () => {}, togglePanel = () => {}, - renderParticipantBadges, actionsViewModel, activeConversation, conversationRepository, @@ -268,6 +267,10 @@ const ConversationDetails = forwardRef isTeam, ); + const renderParticipantsBadges = (participant: User) => { + return ; + }; + useEffect(() => { conversationRepository.refreshUnavailableParticipants(activeConversation); }, [activeConversation, conversationRepository]); @@ -306,7 +309,7 @@ const ConversationDetails = forwardRef {isSingleUserMode && !isServiceMode && firstParticipant && ( <> {isGroup && !!userParticipants.length && ( <> void; showDevices: (entity: User) => void; goToRoot: () => void; - renderParticipantBadges?: (user: User) => React.ReactNode; currentUser: User; actionsViewModel: ActionsViewModel; activeConversation: Conversation; @@ -67,7 +67,6 @@ const GroupParticipantUser: FC = ({ onClose, goToRoot, showDevices, - renderParticipantBadges, currentUser, actionsViewModel, activeConversation, @@ -137,6 +136,10 @@ const GroupParticipantUser: FC = ({ } }, [isTemporaryGuest, currentUser]); + const renderParticipantBadges = (participant: User) => { + return ; + }; + return (
    void; onGoBack: (userEntity: User) => void; - renderDeviceBadges: (device: ClientEntity, userId: QualifiedId) => React.ReactNode; + groupId?: string; repositories: ViewModelRepositories; user: User; } -const ParticipantDevices: FC = ({ - repositories, - onClose, - onGoBack, - renderDeviceBadges, - user, -}) => { +const ParticipantDevices: FC = ({repositories, onClose, onGoBack, groupId, user}) => { const history = useUserDevicesHistory(); return ( @@ -67,7 +58,7 @@ const ParticipantDevices: FC = ({ = ({ const containerRef = useCallback((element: HTMLDivElement | null) => element?.focus(), [currentState]); - const renderParticipantsBadges = (participant: User) => { - return ; - }; - - const renderDeviceBadges = (device: ClientEntity, userId: QualifiedId) => { - const selfConversation = conversationState.selfMLSConversation(); - const getDeviceIdentity = - e2eIdentity.isE2EIEnabled() && selfConversation - ? () => e2eIdentity.getDeviceIdentity(selfConversation.groupId, userId, device.id) - : undefined; - - return ; - }; - if (!activeConversation) { return null; } @@ -217,7 +199,6 @@ const RightSidebar: FC = ({ {currentState === PanelState.CONVERSATION_DETAILS && ( = ({ {currentState === PanelState.GROUP_PARTICIPANT_USER && userEntity && ( = ({ {currentState === PanelState.PARTICIPANT_DEVICES && userEntity && ( = ({ {currentState === PanelState.CONVERSATION_PARTICIPANTS && ( { - const endDate = new Date(notAfter); - const currentDate = new Date(); - const dateBeforeEnd = new Date(notAfter); - dateBeforeEnd.setHours(endDate.getHours() - EXPIRATION_HOURS); - - return currentDate > dateBeforeEnd; -}; - -export const getCertificateState = (certificate?: string) => { - if (!certificate) { - return MLSStatuses.NOT_DOWNLOADED; - } - const currentDate = new Date(); - const parsedCertificate = new x509.X509Certificate(certificate); - const isValid = currentDate > parsedCertificate.notBefore && currentDate < parsedCertificate.notAfter; - const isExpireSoon = isValid && !!parsedCertificate?.notAfter && checkExpirationDate(parsedCertificate.notAfter); - - if (isValid && !isExpireSoon) { - return MLSStatuses.VALID; - } - - if (isValid && isExpireSoon) { - return MLSStatuses.EXPIRES_SOON; - } - - return MLSStatuses.EXPIRED; -}; diff --git a/yarn.lock b/yarn.lock index 437e98eef55..0e0d9fd960d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6146,9 +6146,9 @@ __metadata: languageName: node linkType: hard -"@wireapp/api-client@npm:^26.5.3": - version: 26.5.3 - resolution: "@wireapp/api-client@npm:26.5.3" +"@wireapp/api-client@npm:^26.5.4": + version: 26.5.4 + resolution: "@wireapp/api-client@npm:26.5.4" dependencies: "@wireapp/commons": ^5.2.3 "@wireapp/priority-queue": ^2.1.4 @@ -6163,7 +6163,7 @@ __metadata: tough-cookie: 4.1.3 ws: 8.14.2 zod: 3.22.4 - checksum: 6520b95ebd8ccc59b576c890651bd20c782fa3054b303e857a428f09dbcc37ce6a661e3ee27cdc182b896481e1e7a610c796430fb9c40cffb3fb8fe4b74afe5d + checksum: c969a49d6ae5162e0901df204f777f3e9b18ec3e56f493cd454228c7124e97f2046fdf0e9e5d2b24c7cfbe7a510bd32a224ce575dca0263f6661fab004a2e35b languageName: node linkType: hard @@ -6216,11 +6216,11 @@ __metadata: languageName: node linkType: hard -"@wireapp/core@npm:42.21.0": - version: 42.21.0 - resolution: "@wireapp/core@npm:42.21.0" +"@wireapp/core@npm:42.23.0": + version: 42.23.0 + resolution: "@wireapp/core@npm:42.23.0" dependencies: - "@wireapp/api-client": ^26.5.3 + "@wireapp/api-client": ^26.5.4 "@wireapp/commons": ^5.2.3 "@wireapp/core-crypto": 1.0.0-rc.19 "@wireapp/cryptobox": 12.8.0 @@ -6238,7 +6238,7 @@ __metadata: long: ^5.2.0 uuidjs: 4.2.13 zod: 3.22.4 - checksum: 0513c3e4387071cc4b432ce600572dbed139fe5ce96209c01b2b2e2ecc9d5670c8a81f0b2c23c9576cb537095ce2781cd0bb2856d41e8b9bcd4beb29c99ae708 + checksum: dde016d78dc08143d6cf9223d3b98c8c9c375d5eafad901741455ab3e3f19ad1a1eab824fe7ab2f1afa3ebf5f279a59208f3122d3bbd10ac6652ba3fa0c052d9 languageName: node linkType: hard @@ -19353,7 +19353,7 @@ __metadata: "@wireapp/avs": 9.5.2 "@wireapp/commons": 5.2.3 "@wireapp/copy-config": 2.1.12 - "@wireapp/core": 42.21.0 + "@wireapp/core": 42.23.0 "@wireapp/eslint-config": 3.0.4 "@wireapp/prettier-config": 0.6.3 "@wireapp/react-ui-kit": 9.11.0 From 86c86c0dbf8a8b9af3910b5e201418ebdefdd1ee Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Mon, 27 Nov 2023 15:26:38 +0100 Subject: [PATCH 86/95] upgrade core --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index bb6de2c6f08..c2cdd8462f0 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.5.2", "@wireapp/commons": "5.2.3", - "@wireapp/core": "42.23.0", + "@wireapp/core": "42.23.1", "@wireapp/react-ui-kit": "9.11.0", "@wireapp/store-engine-dexie": "2.1.6", "@wireapp/store-engine-sqleet": "1.8.9", diff --git a/yarn.lock b/yarn.lock index 0e0d9fd960d..977fdb9460a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6216,9 +6216,9 @@ __metadata: languageName: node linkType: hard -"@wireapp/core@npm:42.23.0": - version: 42.23.0 - resolution: "@wireapp/core@npm:42.23.0" +"@wireapp/core@npm:42.23.1": + version: 42.23.1 + resolution: "@wireapp/core@npm:42.23.1" dependencies: "@wireapp/api-client": ^26.5.4 "@wireapp/commons": ^5.2.3 @@ -6238,7 +6238,7 @@ __metadata: long: ^5.2.0 uuidjs: 4.2.13 zod: 3.22.4 - checksum: dde016d78dc08143d6cf9223d3b98c8c9c375d5eafad901741455ab3e3f19ad1a1eab824fe7ab2f1afa3ebf5f279a59208f3122d3bbd10ac6652ba3fa0c052d9 + checksum: cad9993b78eceba9543468c8ff593b54b3022fc710f4374d922fbf31146bb76cc6ae680e03cfc299734adfdf01f7b6af31187c0a23c3eedbcf4ff5baf3887ae0 languageName: node linkType: hard @@ -19353,7 +19353,7 @@ __metadata: "@wireapp/avs": 9.5.2 "@wireapp/commons": 5.2.3 "@wireapp/copy-config": 2.1.12 - "@wireapp/core": 42.23.0 + "@wireapp/core": 42.23.1 "@wireapp/eslint-config": 3.0.4 "@wireapp/prettier-config": 0.6.3 "@wireapp/react-ui-kit": 9.11.0 From f8d89619bcb40a27f7ca5fdf6731274532c600c9 Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Mon, 27 Nov 2023 16:44:27 +0100 Subject: [PATCH 87/95] remove unused x509 certificate lib --- package.json | 1 - yarn.lock | 192 +-------------------------------------------------- 2 files changed, 2 insertions(+), 191 deletions(-) diff --git a/package.json b/package.json index c2cdd8462f0..f443dc0b1e2 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,6 @@ "@emotion/react": "11.11.1", "@lexical/history": "0.12.4", "@lexical/react": "0.12.4", - "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.5.2", "@wireapp/commons": "5.2.3", "@wireapp/core": "42.23.1", diff --git a/yarn.lock b/yarn.lock index 977fdb9460a..693525e533b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4682,152 +4682,6 @@ __metadata: languageName: node linkType: hard -"@peculiar/asn1-cms@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-cms@npm:2.3.6" - dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 - "@peculiar/asn1-x509-attr": ^2.3.6 - asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: caeb7fcb594b7158ecb31f2e0e3a85a79fb9a51b9204b3fbad398706f56f20dfb6478f37fc163b544ebe3fd6ade7606a71826684df040ae6870fe7a4d8286d8c - languageName: node - linkType: hard - -"@peculiar/asn1-csr@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-csr@npm:2.3.6" - dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 - asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 4989edc765476b02995fbee88ab3860cf657f0e62756fa0ec44cd95158e6276f58c2c8656e5f8bd2f6934650999b781f2ec7b65ec537fc41a1aeb387b2e32883 - languageName: node - linkType: hard - -"@peculiar/asn1-ecc@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-ecc@npm:2.3.6" - dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 - asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 4b9a383dd443fbb9699d79550e03d1185781885768d8c7b780e26a959344286a53539824fa4a3103e9e8393a7d062fe6820bf79abafb340dc18ee5ce81b1d470 - languageName: node - linkType: hard - -"@peculiar/asn1-pfx@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-pfx@npm:2.3.6" - dependencies: - "@peculiar/asn1-cms": ^2.3.6 - "@peculiar/asn1-pkcs8": ^2.3.6 - "@peculiar/asn1-rsa": ^2.3.6 - "@peculiar/asn1-schema": ^2.3.6 - asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: faa3abc62e4ba4e67f6377178df62c24146920475e4ddfee024b1e14b208947d9b136c1bb1b82d7a3a28b76a544687529338f6143f92bdf324db23bd6aa0c11a - languageName: node - linkType: hard - -"@peculiar/asn1-pkcs8@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-pkcs8@npm:2.3.6" - dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 - asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 17b2ea5f2350ba74d58084f95f4d739d30413112e85268fd55b308307bd6a6f006e06accaf3e181103a61bfb7efd2c21be7f914b48954845bef109b1b0a4bc46 - languageName: node - linkType: hard - -"@peculiar/asn1-pkcs9@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-pkcs9@npm:2.3.6" - dependencies: - "@peculiar/asn1-cms": ^2.3.6 - "@peculiar/asn1-pfx": ^2.3.6 - "@peculiar/asn1-pkcs8": ^2.3.6 - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 - "@peculiar/asn1-x509-attr": ^2.3.6 - asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 3b8ca25b46ce9afc51b8cc72afab6fd32bb1dbf501eef68f997b35591c16c321384224fe478fd03fa644f3d540d719568767c7bd8bd1f617a5d9f8d318be0d2c - languageName: node - linkType: hard - -"@peculiar/asn1-rsa@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-rsa@npm:2.3.6" - dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 - asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 120dda00af6e1b1e5568826ac8211d60d36b3cbe91b086cae6b5ba132f1670ba129284068110305b237550e402c0beeda45fd713d640f97ad11d8cf6c925b31a - languageName: node - linkType: hard - -"@peculiar/asn1-schema@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-schema@npm:2.3.6" - dependencies: - asn1js: ^3.0.5 - pvtsutils: ^1.3.2 - tslib: ^2.4.0 - checksum: fc09387c6e3dea07fca21b54ea8c71ce3ec0f8c92377237e51aef729f0c2df92781aa7a18a546a6fe809519faeaa222df576ec21a35c6095037a78677204a55b - languageName: node - linkType: hard - -"@peculiar/asn1-x509-attr@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-x509-attr@npm:2.3.6" - dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 - asn1js: ^3.0.5 - tslib: ^2.4.0 - checksum: 100a11aad2168a99b23d576869d27d569c34191d14311cf6fcbea126b737bcb42f23401ead45c2bc55074d164712c65e5541be23c0e5f92bf19005957a16a872 - languageName: node - linkType: hard - -"@peculiar/asn1-x509@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-x509@npm:2.3.6" - dependencies: - "@peculiar/asn1-schema": ^2.3.6 - asn1js: ^3.0.5 - ipaddr.js: ^2.0.1 - pvtsutils: ^1.3.2 - tslib: ^2.4.0 - checksum: 6e946bd44091fb88f617c3bbf54ed1113ed2b249675dd36004513444f409160f6d446bdb82d3cb6041b4d15c68fa4cf40ad452891a5f85dda2af89ee5b0590d2 - languageName: node - linkType: hard - -"@peculiar/x509@npm:1.9.5": - version: 1.9.5 - resolution: "@peculiar/x509@npm:1.9.5" - dependencies: - "@peculiar/asn1-cms": ^2.3.6 - "@peculiar/asn1-csr": ^2.3.6 - "@peculiar/asn1-ecc": ^2.3.6 - "@peculiar/asn1-pkcs9": ^2.3.6 - "@peculiar/asn1-rsa": ^2.3.6 - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/asn1-x509": ^2.3.6 - pvtsutils: ^1.3.5 - reflect-metadata: ^0.1.13 - tslib: ^2.6.1 - tsyringe: ^4.8.0 - checksum: 855342d71bb9cf4c19f5232106bd5f79f2ae7b5607568940d9bdb5bd528ccf4454a19bd47a7cb820397216a1bb7cf613e940c1778b8cf940ec082055bc373c56 - languageName: node - linkType: hard - "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -6987,17 +6841,6 @@ __metadata: languageName: node linkType: hard -"asn1js@npm:^3.0.5": - version: 3.0.5 - resolution: "asn1js@npm:3.0.5" - dependencies: - pvtsutils: ^1.3.2 - pvutils: ^1.1.3 - tslib: ^2.4.0 - checksum: 3b6af1bbadd5762ef8ead5daf2f6bda1bc9e23bc825c4dcc996aa1f9521ad7390a64028565d95d98090d69c8431f004c71cccb866004759169d7c203cf9075eb - languageName: node - linkType: hard - "ast-types-flow@npm:^0.0.7": version: 0.0.7 resolution: "ast-types-flow@npm:0.0.7" @@ -11526,13 +11369,6 @@ __metadata: languageName: node linkType: hard -"ipaddr.js@npm:^2.0.1": - version: 2.1.0 - resolution: "ipaddr.js@npm:2.1.0" - checksum: 807a054f2bd720c4d97ee479d6c9e865c233bea21f139fb8dabd5a35c4226d2621c42e07b4ad94ff3f82add926a607d8d9d37c625ad0319f0e08f9f2bd1968e2 - languageName: node - linkType: hard - "is-absolute@npm:^0.2.5": version: 0.2.6 resolution: "is-absolute@npm:0.2.6" @@ -16130,22 +15966,6 @@ __metadata: languageName: node linkType: hard -"pvtsutils@npm:^1.3.2, pvtsutils@npm:^1.3.5": - version: 1.3.5 - resolution: "pvtsutils@npm:1.3.5" - dependencies: - tslib: ^2.6.1 - checksum: e734516b3cb26086c18bd9c012fefe818928a5073178842ab7e62885a090f1dd7bda9c7bb8cd317167502cb8ec86c0b1b0ccd71dac7ab469382a4518157b0d12 - languageName: node - linkType: hard - -"pvutils@npm:^1.1.3": - version: 1.1.3 - resolution: "pvutils@npm:1.1.3" - checksum: 2ee26a9e5176c348977d6ec00d8ee80bff62f51743b1c5fe8abeeb4c5d29d9959cdfe0ce146707a9e6801bce88190fed3002d720b072dc87d031c692820b44c9 - languageName: node - linkType: hard - "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" @@ -16557,13 +16377,6 @@ __metadata: languageName: node linkType: hard -"reflect-metadata@npm:^0.1.13": - version: 0.1.13 - resolution: "reflect-metadata@npm:0.1.13" - checksum: 798d379a7b6f6455501145419505c97dd11cbc23857a386add2b9ef15963ccf15a48d9d15507afe01d4cd74116df8a213247200bac00320bd7c11ddeaa5e8fb4 - languageName: node - linkType: hard - "reflect.getprototypeof@npm:^1.0.4": version: 1.0.4 resolution: "reflect.getprototypeof@npm:1.0.4" @@ -18378,7 +18191,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.3, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2": +"tslib@npm:^2.0.3, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad @@ -18396,7 +18209,7 @@ __metadata: languageName: node linkType: hard -"tsyringe@npm:4.8.0, tsyringe@npm:^4.8.0": +"tsyringe@npm:4.8.0": version: 4.8.0 resolution: "tsyringe@npm:4.8.0" dependencies: @@ -19322,7 +19135,6 @@ __metadata: "@koush/wrtc": 0.5.3 "@lexical/history": 0.12.4 "@lexical/react": 0.12.4 - "@peculiar/x509": 1.9.5 "@testing-library/react": 14.1.2 "@types/dexie-batch": 0.4.7 "@types/eslint": ^8 From 14c72d7faf9710a0dbd5ce6d9558c865d6bfed69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wei=C3=9F?= <77456193+aweiss-dev@users.noreply.github.com> Date: Tue, 28 Nov 2023 15:43:22 +0100 Subject: [PATCH 88/95] feat(E2EI): add possibility to refresh a active certificate (#16288) --- package.json | 2 +- .../E2EIdentity/E2EIdentityEnrollment.ts | 19 ++++++++++++------ yarn.lock | 20 +++++++++---------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index f443dc0b1e2..8e3a9ec18b8 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@lexical/react": "0.12.4", "@wireapp/avs": "9.5.2", "@wireapp/commons": "5.2.3", - "@wireapp/core": "42.23.1", + "@wireapp/core": "42.25.0", "@wireapp/react-ui-kit": "9.11.0", "@wireapp/store-engine-dexie": "2.1.6", "@wireapp/store-engine-sqleet": "1.8.9", diff --git a/src/script/E2EIdentity/E2EIdentityEnrollment.ts b/src/script/E2EIdentity/E2EIdentityEnrollment.ts index 4c2c76c9838..24921a2862d 100644 --- a/src/script/E2EIdentity/E2EIdentityEnrollment.ts +++ b/src/script/E2EIdentity/E2EIdentityEnrollment.ts @@ -128,7 +128,7 @@ export class E2EIHandler { await oidcService.authenticate(); } - public async enroll() { + public async enroll(refreshActiveCertificate: boolean = false) { try { // Notify user about E2EI enrolment in progress this.currentStep = E2EIHandlerStep.ENROLL; @@ -145,12 +145,19 @@ export class E2EIHandler { oAuthIdToken = userData?.id_token; } - const data = await this.core.enrollE2EI( - this.userState.self().name(), - this.userState.self().username(), - this.discoveryUrl, + const displayName = this.userState.self()?.name(); + const handle = this.userState.self()?.username(); + // If the user has no username or handle, we cannot enroll + if (!displayName || !handle) { + throw new Error('Username or handle not found'); + } + const data = await this.core.enrollE2EI({ + discoveryUrl: this.discoveryUrl, + displayName, + handle, oAuthIdToken, - ); + refreshActiveCertificate, + }); // If the data is false or we dont get the ACMEChallenge, enrolment failed if (!data) { diff --git a/yarn.lock b/yarn.lock index 693525e533b..f97a96bee1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6000,9 +6000,9 @@ __metadata: languageName: node linkType: hard -"@wireapp/api-client@npm:^26.5.4": - version: 26.5.4 - resolution: "@wireapp/api-client@npm:26.5.4" +"@wireapp/api-client@npm:^26.6.0": + version: 26.6.0 + resolution: "@wireapp/api-client@npm:26.6.0" dependencies: "@wireapp/commons": ^5.2.3 "@wireapp/priority-queue": ^2.1.4 @@ -6017,7 +6017,7 @@ __metadata: tough-cookie: 4.1.3 ws: 8.14.2 zod: 3.22.4 - checksum: c969a49d6ae5162e0901df204f777f3e9b18ec3e56f493cd454228c7124e97f2046fdf0e9e5d2b24c7cfbe7a510bd32a224ce575dca0263f6661fab004a2e35b + checksum: 3bfe5c48c4f08b40fa254272be8be778b5a2909348876ba2690fb1dcda93ba89852d247a5895fcb534941960d0207c9eb7b0fc917f6f52fc3e1aaef65ab76fd3 languageName: node linkType: hard @@ -6070,11 +6070,11 @@ __metadata: languageName: node linkType: hard -"@wireapp/core@npm:42.23.1": - version: 42.23.1 - resolution: "@wireapp/core@npm:42.23.1" +"@wireapp/core@npm:42.25.0": + version: 42.25.0 + resolution: "@wireapp/core@npm:42.25.0" dependencies: - "@wireapp/api-client": ^26.5.4 + "@wireapp/api-client": ^26.6.0 "@wireapp/commons": ^5.2.3 "@wireapp/core-crypto": 1.0.0-rc.19 "@wireapp/cryptobox": 12.8.0 @@ -6092,7 +6092,7 @@ __metadata: long: ^5.2.0 uuidjs: 4.2.13 zod: 3.22.4 - checksum: cad9993b78eceba9543468c8ff593b54b3022fc710f4374d922fbf31146bb76cc6ae680e03cfc299734adfdf01f7b6af31187c0a23c3eedbcf4ff5baf3887ae0 + checksum: 3c519fa466cababe1e80adef01cd653ee088fa18f73cb2698b178c8685e261e9b66de926493f9312c113b696dd2e6e20fc321747f05ceb6d0733c9ec24bdc23d languageName: node linkType: hard @@ -19165,7 +19165,7 @@ __metadata: "@wireapp/avs": 9.5.2 "@wireapp/commons": 5.2.3 "@wireapp/copy-config": 2.1.12 - "@wireapp/core": 42.23.1 + "@wireapp/core": 42.25.0 "@wireapp/eslint-config": 3.0.4 "@wireapp/prettier-config": 0.6.3 "@wireapp/react-ui-kit": 9.11.0 From 19cf75bf1bbb8d96c7a133941aeab371cc3a8efe Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Tue, 28 Nov 2023 16:37:11 +0100 Subject: [PATCH 89/95] hide e2ei badges when not in an e2ei env --- .../DevicesPreferences/components/DetailedDevice.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx index bffdf688cf4..a6509685f1f 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/DetailedDevice.tsx @@ -41,15 +41,15 @@ export const DetailedDevice: React.FC = ({ getDeviceIdentity, isProteusVerified, }) => { - const identity = getDeviceIdentity?.(device.id); + const getIdentity = getDeviceIdentity ? () => getDeviceIdentity(device.id) : undefined; return ( <>

    {device.model} - identity} /> +

    - {getDeviceIdentity && } + {getDeviceIdentity && } From b4bb75333e4f88dde898d42f58c4c6e3d5e9014e Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Tue, 28 Nov 2023 16:41:58 +0100 Subject: [PATCH 90/95] fix: fix dark mode --- src/style/common/typing.less | 4 ---- src/style/content/preferences/devices.less | 1 - 2 files changed, 5 deletions(-) diff --git a/src/style/common/typing.less b/src/style/common/typing.less index 7d8fa6e81b8..92ad5d1fcf8 100644 --- a/src/style/common/typing.less +++ b/src/style/common/typing.less @@ -147,8 +147,6 @@ // NEW Typography .paragraph-body-1 { - color: var(--black); - font-size: var(--font-size-base); font-weight: var(--font-weight-medium); letter-spacing: 0.05px; @@ -163,8 +161,6 @@ } .label-1 { - color: var(--black); - //font-family: "SF Pro Text" font-size: var(--font-size-medium); font-weight: var(--font-weight-regular); line-height: var(--line-height-sm); diff --git a/src/style/content/preferences/devices.less b/src/style/content/preferences/devices.less index b55c89cb137..fd5d6c3619b 100644 --- a/src/style/content/preferences/devices.less +++ b/src/style/content/preferences/devices.less @@ -33,7 +33,6 @@ display: flex; align-items: center; - margin-bottom: 32px; font-size: var(--font-size-large); font-weight: var(--font-weight-medium); line-height: var(--line-height-lg); From bbcacfb86e74f2e6edcf1eb324f3f744e0f4d6d8 Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Tue, 28 Nov 2023 17:08:49 +0100 Subject: [PATCH 91/95] fix: fix mls envs --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 42298494345..e2eee26989c 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "@peculiar/x509": "1.9.5", "@wireapp/avs": "9.5.2", "@wireapp/commons": "5.2.3", - "@wireapp/core": "42.25.0", + "@wireapp/core": "42.25.2", "@wireapp/react-ui-kit": "9.11.0", "@wireapp/store-engine-dexie": "2.1.6", "@wireapp/webapp-events": "0.18.3", diff --git a/yarn.lock b/yarn.lock index 124246f9200..490029bf7a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6202,9 +6202,9 @@ __metadata: languageName: node linkType: hard -"@wireapp/core@npm:42.25.0": - version: 42.25.0 - resolution: "@wireapp/core@npm:42.25.0" +"@wireapp/core@npm:42.25.2": + version: 42.25.2 + resolution: "@wireapp/core@npm:42.25.2" dependencies: "@wireapp/api-client": ^26.6.0 "@wireapp/commons": ^5.2.3 @@ -6224,7 +6224,7 @@ __metadata: long: ^5.2.0 uuidjs: 4.2.13 zod: 3.22.4 - checksum: 3c519fa466cababe1e80adef01cd653ee088fa18f73cb2698b178c8685e261e9b66de926493f9312c113b696dd2e6e20fc321747f05ceb6d0733c9ec24bdc23d + checksum: f44a5c1eeea7e9c13c1a5bc01e19411229f8a1e067243927d604982eb910e0f6cd0489d38568301620e7b9604e68e0cc72fea8d9d0a125376fb556a8c0de6c68 languageName: node linkType: hard @@ -19268,7 +19268,7 @@ __metadata: "@wireapp/avs": 9.5.2 "@wireapp/commons": 5.2.3 "@wireapp/copy-config": 2.1.12 - "@wireapp/core": 42.25.0 + "@wireapp/core": 42.25.2 "@wireapp/eslint-config": 3.0.4 "@wireapp/prettier-config": 0.6.3 "@wireapp/react-ui-kit": 9.11.0 From 646b81487d83094b7e21572209cdc03b33e9ad20 Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Tue, 28 Nov 2023 17:20:52 +0100 Subject: [PATCH 92/95] fix types --- src/script/client/ClientEntity.ts | 2 +- src/script/util/DebugUtil.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/script/client/ClientEntity.ts b/src/script/client/ClientEntity.ts index 4a5659312a2..d3f61569510 100644 --- a/src/script/client/ClientEntity.ts +++ b/src/script/client/ClientEntity.ts @@ -51,7 +51,7 @@ export class ClientEntity { model?: string; time?: string; type?: ClientType.PERMANENT | ClientType.TEMPORARY; - mlsPublicKeys?: Record; + mlsPublicKeys?: Partial>; constructor(isSelfClient: boolean, domain: string | null, id = '') { this.isSelfClient = isSelfClient; diff --git a/src/script/util/DebugUtil.ts b/src/script/util/DebugUtil.ts index e1c9301a5a7..07e20579acc 100644 --- a/src/script/util/DebugUtil.ts +++ b/src/script/util/DebugUtil.ts @@ -186,7 +186,7 @@ export class DebugUtil { } async reconnectWebSocketWithLastNotificationIdFromBackend({dryRun} = {dryRun: false}) { - await this.core.service?.notification.initializeNotificationStream(); + await this.core.service?.notification.initializeNotificationStream(this.clientState.currentClient!.id); return this.reconnectWebSocket({dryRun}); } From 2436f5a934edaa97d0928b07ad3227dca577e49d Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Tue, 28 Nov 2023 17:37:40 +0100 Subject: [PATCH 93/95] refactor: use hook for identity computation --- .../E2EIdentity/E2EIdentityVerification.ts | 8 ------- src/script/components/UserDevices.tsx | 4 ++-- .../VerificationBadge/VerificationBadges.tsx | 21 ++++--------------- src/script/hooks/useDeviceIdentities.ts | 11 ++++++++-- .../DevicesPreferences/DevicesPreference.tsx | 7 ++----- 5 files changed, 17 insertions(+), 34 deletions(-) diff --git a/src/script/E2EIdentity/E2EIdentityVerification.ts b/src/script/E2EIdentity/E2EIdentityVerification.ts index 2b4de04ded3..ef1c4350903 100644 --- a/src/script/E2EIdentity/E2EIdentityVerification.ts +++ b/src/script/E2EIdentity/E2EIdentityVerification.ts @@ -66,14 +66,6 @@ export async function getUsersIdentities(groupId: string, userIds: QualifiedId[] return mappedUsers; } -export async function getUserVerificationState(groupId: string, userId: QualifiedId) { - const usersVerifications = await getUsersIdentities(groupId, [userId]); - const deviceIdentities = usersVerifications.get(userId.id); - return deviceIdentities?.length && deviceIdentities.every(identity => identity.status === MLSStatuses.VALID) - ? MLSStatuses.VALID - : MLSStatuses.NOT_DOWNLOADED; -} - export async function getConversationVerificationState(groupId: string) { return getE2EIdentityService().getConversationState(base64ToArray(groupId)); } diff --git a/src/script/components/UserDevices.tsx b/src/script/components/UserDevices.tsx index 6924af7c8d2..26ea277a512 100644 --- a/src/script/components/UserDevices.tsx +++ b/src/script/components/UserDevices.tsx @@ -35,7 +35,7 @@ import {ClientRepository, ClientEntity} from '../client'; import {MessageRepository} from '../conversation/MessageRepository'; import {CryptographyRepository} from '../cryptography/CryptographyRepository'; import {User} from '../entity/User'; -import {useDeviceIdentities} from '../hooks/useDeviceIdentities'; +import {useUserIdentity} from '../hooks/useDeviceIdentities'; enum FIND_MODE { FOUND = 'UserDevices.MODE.FOUND', @@ -100,7 +100,7 @@ const UserDevices: React.FC = ({ groupId, }) => { const [selectedClient, setSelectedClient] = useState(); - const {getDeviceIdentity} = useDeviceIdentities(user.qualifiedId, groupId); + const {getDeviceIdentity} = useUserIdentity(user.qualifiedId, groupId); const [deviceMode, setDeviceMode] = useState(FIND_MODE.REQUESTING); const [clients, setClients] = useState([]); const logger = useMemo(() => getLogger('UserDevicesComponent'), []); diff --git a/src/script/components/VerificationBadge/VerificationBadges.tsx b/src/script/components/VerificationBadge/VerificationBadges.tsx index 7da97d07d0d..9ce50731172 100644 --- a/src/script/components/VerificationBadge/VerificationBadges.tsx +++ b/src/script/components/VerificationBadge/VerificationBadges.tsx @@ -17,7 +17,7 @@ * */ -import {CSSProperties, useEffect, useState} from 'react'; +import {CSSProperties} from 'react'; import {ConversationProtocol} from '@wireapp/api-client/lib/conversation'; @@ -31,14 +31,10 @@ import { import {ClientEntity} from 'src/script/client'; import {ConversationVerificationState} from 'src/script/conversation/ConversationVerificationState'; -import { - getUserVerificationState, - isE2EIEnabled, - MLSStatuses, - WireIdentity, -} from 'src/script/E2EIdentity/E2EIdentityVerification'; +import {MLSStatuses, WireIdentity} from 'src/script/E2EIdentity/E2EIdentityVerification'; import {Conversation} from 'src/script/entity/Conversation'; import {User} from 'src/script/entity/User'; +import {useUserIdentity} from 'src/script/hooks/useDeviceIdentities'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; @@ -76,18 +72,9 @@ const useConversationVerificationState = (conversation: Conversation) => { }; export const UserVerificationBadges = ({user, groupId}: {user: User; groupId?: string}) => { - const [MLSStatus, setMLSStatus] = useState(undefined); + const {status: MLSStatus} = useUserIdentity(user.qualifiedId, groupId); const {is_verified: isProteusVerified} = useKoSubscribableChildren(user, ['is_verified']); - useEffect(() => { - void (async () => { - if (groupId && isE2EIEnabled()) { - const status = await getUserVerificationState(groupId, user.qualifiedId); - setMLSStatus(status); - } - })(); - }, []); - return ; }; diff --git a/src/script/hooks/useDeviceIdentities.ts b/src/script/hooks/useDeviceIdentities.ts index 1ae94b428f6..f3a3c8933cf 100644 --- a/src/script/hooks/useDeviceIdentities.ts +++ b/src/script/hooks/useDeviceIdentities.ts @@ -21,9 +21,9 @@ import {useEffect, useState} from 'react'; import {QualifiedId} from '@wireapp/api-client/lib/user'; -import {getUsersIdentities, isE2EIEnabled, WireIdentity} from '../E2EIdentity'; +import {getUsersIdentities, isE2EIEnabled, MLSStatuses, WireIdentity} from '../E2EIdentity'; -export const useDeviceIdentities = (userId: QualifiedId, groupId?: string) => { +export const useUserIdentity = (userId: QualifiedId, groupId?: string) => { const [deviceIdentities, setDeviceIdentities] = useState(); useEffect(() => { @@ -37,6 +37,13 @@ export const useDeviceIdentities = (userId: QualifiedId, groupId?: string) => { return { deviceIdentities, + + status: !deviceIdentities + ? undefined + : deviceIdentities.length > 0 && deviceIdentities.every(identity => identity.status === MLSStatuses.VALID) + ? MLSStatuses.VALID + : MLSStatuses.NOT_DOWNLOADED, + getDeviceIdentity: deviceIdentities !== undefined ? (deviceId: string) => { diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx index 0305119196e..9c54ee69054 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/DevicesPreference.tsx @@ -26,7 +26,7 @@ import {ClientEntity} from 'src/script/client/ClientEntity'; import {CryptographyRepository} from 'src/script/cryptography/CryptographyRepository'; import {Conversation} from 'src/script/entity/Conversation'; import {User} from 'src/script/entity/User'; -import {useDeviceIdentities} from 'src/script/hooks/useDeviceIdentities'; +import {useUserIdentity} from 'src/script/hooks/useDeviceIdentities'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; @@ -61,10 +61,7 @@ export const DevicesPreferences: React.FC = ({ const [localFingerprint, setLocalFingerprint] = useState(''); const {devices} = useKoSubscribableChildren(selfUser, ['devices']); - const {getDeviceIdentity} = useDeviceIdentities( - selfUser.qualifiedId, - conversationState.selfMLSConversation()?.groupId, - ); + const {getDeviceIdentity} = useUserIdentity(selfUser.qualifiedId, conversationState.selfMLSConversation()?.groupId); const currentClient = clientState.currentClient; const isSSO = selfUser.isNoPasswordSSO; From 9ffa14abd4d1311c595278eaf41c7b4872be0d21 Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Wed, 29 Nov 2023 10:59:51 +0100 Subject: [PATCH 94/95] style improvements --- .../components/MLSDeviceDetails/MLSDeviceDetails.styles.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.styles.ts b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.styles.ts index faf3692a659..862ddc25476 100644 --- a/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.styles.ts +++ b/src/script/page/MainContent/panels/preferences/DevicesPreferences/components/MLSDeviceDetails/MLSDeviceDetails.styles.ts @@ -27,7 +27,7 @@ export const styles: Styles = { width: '100%', '.preferences-devices &': { - paddingBottom: '32px', + marginTop: '32px', }, '.preferences-device-details &': { From 492227acc2dbf43111e363394fb5f9169ba52053 Mon Sep 17 00:00:00 2001 From: Thomas Belin Date: Wed, 29 Nov 2023 11:04:59 +0100 Subject: [PATCH 95/95] revert gitignore changes --- .gitignore | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 399fd5b98e7..6ebf8ad6394 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ !/.idea/codeStyleSettings.xml !/.idea/modules.xml .env -.env.* -!.env.localhost +.env.defaults .DS_Store .idea .vscode @@ -24,5 +23,4 @@ yarn-error.log !.yarn/plugins !.yarn/releases !.yarn/sdks -!.yarn/versions - +!.yarn/versions \ No newline at end of file