diff --git a/.circleci/config.yml b/.circleci/config.yml index b63f6ab54..82bc3ab81 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -111,7 +111,9 @@ commands: key: v2-npm-{{ checksum "package.json" }}-{{ arch }} - run: name: Getting JavaScript dependencies - command: NODE_ENV=development npm ci --ignore-scripts + command: | + NODE_ENV=development npm ci --ignore-scripts + node node_modules/\@sentry/cli/scripts/install.js - save_cache: name: Save npm cache key: v2-npm-{{ checksum "package.json" }}-{{ arch }} diff --git a/android/app/build.gradle b/android/app/build.gradle index 13ca33208..c4a6ecb56 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -145,7 +145,7 @@ android { applicationId "com.mattermost.rnbeta" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 432 + versionCode 438 versionName "2.0.0" testBuildType System.getProperty('testBuildType', 'debug') testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' diff --git a/app/actions/local/channel.ts b/app/actions/local/channel.ts index 5c2de684b..03ab9403f 100644 --- a/app/actions/local/channel.ts +++ b/app/actions/local/channel.ts @@ -15,7 +15,7 @@ import { getMyChannel, getChannelById, queryUsersOnChannel, queryUserChannelsByTypes, } from '@queries/servers/channel'; import {queryPreferencesByCategoryAndName} from '@queries/servers/preference'; -import {prepareCommonSystemValues, PrepareCommonSystemValuesArgs, getCommonSystemValues, getCurrentTeamId, setCurrentChannelId, getCurrentUserId} from '@queries/servers/system'; +import {prepareCommonSystemValues, PrepareCommonSystemValuesArgs, getCommonSystemValues, getCurrentTeamId, setCurrentChannelId, getCurrentUserId, getConfig, getLicense} from '@queries/servers/system'; import {addChannelToTeamHistory, addTeamToTeamHistory, getTeamById, removeChannelFromTeamHistory} from '@queries/servers/team'; import {getCurrentUser, queryUsersById} from '@queries/servers/user'; import {dismissAllModalsAndPopToRoot, dismissAllModalsAndPopToScreen} from '@screens/navigation'; @@ -365,9 +365,10 @@ export async function updateChannelsDisplayName(serverUrl: string, channels: Cha return {}; } - const {config, license} = await getCommonSystemValues(database); + const license = await getLicense(database); + const config = await getConfig(database); const preferences = await queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.NAME_NAME_FORMAT).fetch(); - const displaySettings = getTeammateNameDisplaySetting(preferences, config, license); + const displaySettings = getTeammateNameDisplaySetting(preferences, config.LockTeammateNameDisplay, config.TeammateNameDisplay, license); const models: Model[] = []; for await (const channel of channels) { let newDisplayName = ''; diff --git a/app/actions/local/systems.ts b/app/actions/local/systems.ts index 3a192d990..ea2f15f2b 100644 --- a/app/actions/local/systems.ts +++ b/app/actions/local/systems.ts @@ -6,7 +6,7 @@ import deepEqual from 'deep-equal'; import {SYSTEM_IDENTIFIERS} from '@constants/database'; import DatabaseManager from '@database/manager'; import {getServerCredentials} from '@init/credentials'; -import {getCommonSystemValues} from '@queries/servers/system'; +import {getConfig, getLicense} from '@queries/servers/system'; import {logError} from '@utils/log'; export async function storeConfigAndLicense(serverUrl: string, config: ClientConfig, license: ClientLicense) { @@ -14,17 +14,11 @@ export async function storeConfigAndLicense(serverUrl: string, config: ClientCon // If we have credentials for this server then update the values in the database const credentials = await getServerCredentials(serverUrl); if (credentials) { - const {operator} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); - const current = await getCommonSystemValues(operator.database); + const {operator, database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); + const currentLicense = await getLicense(database); const systems: IdValue[] = []; - if (!deepEqual(config, current.config)) { - systems.push({ - id: SYSTEM_IDENTIFIERS.CONFIG, - value: JSON.stringify(config), - }); - } - if (!deepEqual(license, current.license)) { + if (!deepEqual(license, currentLicense)) { systems.push({ id: SYSTEM_IDENTIFIERS.LICENSE, value: JSON.stringify(license), @@ -34,8 +28,43 @@ export async function storeConfigAndLicense(serverUrl: string, config: ClientCon if (systems.length) { await operator.handleSystem({systems, prepareRecordsOnly: false}); } + + await storeConfig(serverUrl, config); } } catch (error) { logError('An error occurred while saving config & license', error); } } + +export async function storeConfig(serverUrl: string, config: ClientConfig | undefined, prepareRecordsOnly = false) { + if (!config) { + return []; + } + const {operator, database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); + const currentConfig = await getConfig(database); + const configsToUpdate: IdValue[] = []; + const configsToDelete: IdValue[] = []; + + let k: keyof ClientConfig; + for (k in config) { + if (currentConfig?.[k] !== config[k]) { + configsToUpdate.push({ + id: k, + value: config[k], + }); + } + } + for (k in currentConfig) { + if (config[k] === undefined) { + configsToDelete.push({ + id: k, + value: currentConfig[k], + }); + } + } + + if (configsToDelete.length || configsToUpdate.length) { + return operator.handleConfigs({configs: configsToUpdate, configsToDelete, prepareRecordsOnly}); + } + return []; +} diff --git a/app/actions/local/thread.ts b/app/actions/local/thread.ts index a06549f9f..8f25bb9ae 100644 --- a/app/actions/local/thread.ts +++ b/app/actions/local/thread.ts @@ -8,7 +8,7 @@ import DatabaseManager from '@database/manager'; import {getTranslations, t} from '@i18n'; import {getChannelById} from '@queries/servers/channel'; import {getPostById} from '@queries/servers/post'; -import {getCommonSystemValues, getCurrentTeamId, getCurrentUserId, prepareCommonSystemValues, PrepareCommonSystemValuesArgs, setCurrentTeamAndChannelId} from '@queries/servers/system'; +import {getCurrentTeamId, getCurrentUserId, prepareCommonSystemValues, PrepareCommonSystemValuesArgs, setCurrentTeamAndChannelId} from '@queries/servers/system'; import {addChannelToTeamHistory, addTeamToTeamHistory} from '@queries/servers/team'; import {getIsCRTEnabled, getThreadById, prepareThreadsFromReceivedPosts, queryThreadsInTeam} from '@queries/servers/thread'; import {getCurrentUser} from '@queries/servers/user'; @@ -74,12 +74,12 @@ export const switchToThread = async (serverUrl: string, rootId: string, isFromNo throw new Error('Channel not found'); } - const system = await getCommonSystemValues(database); + const currentTeamId = await getCurrentTeamId(database); const isTabletDevice = await isTablet(); - const teamId = channel.teamId || system.currentTeamId; + const teamId = channel.teamId || currentTeamId; let switchingTeams = false; - if (system.currentTeamId !== teamId) { + if (currentTeamId !== teamId) { const modelPromises: Array> = []; switchingTeams = true; modelPromises.push(addTeamToTeamHistory(operator, teamId, true)); diff --git a/app/actions/remote/channel.ts b/app/actions/remote/channel.ts index f034b621e..73e65ac22 100644 --- a/app/actions/remote/channel.ts +++ b/app/actions/remote/channel.ts @@ -523,7 +523,7 @@ export async function fetchDirectChannelsInfo(serverUrl: string, directChannels: const preferences = await queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS).fetch(); const config = await getConfig(database); const license = await getLicense(database); - const teammateDisplayNameSetting = getTeammateNameDisplaySetting(preferences, config, license); + const teammateDisplayNameSetting = getTeammateNameDisplaySetting(preferences, config?.LockTeammateNameDisplay, config?.TeammateNameDisplay, license); const currentUser = await getCurrentUser(database); const channels = directChannels.map((d) => d.toApi()); return fetchMissingDirectChannelsInfo(serverUrl, channels, currentUser?.locale, teammateDisplayNameSetting, currentUser?.id); @@ -743,8 +743,9 @@ export async function createDirectChannel(serverUrl: string, userId: string, dis created.display_name = displayName; } else { const preferences = await queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.NAME_NAME_FORMAT).fetch(); - const system = await getCommonSystemValues(database); - const teammateDisplayNameSetting = getTeammateNameDisplaySetting(preferences || [], system.config, system.license); + const license = await getLicense(database); + const config = await getConfig(database); + const teammateDisplayNameSetting = getTeammateNameDisplaySetting(preferences || [], config.LockTeammateNameDisplay, config.TeammateNameDisplay, license); const {directChannels, users} = await fetchMissingDirectChannelsInfo(serverUrl, [created], currentUser.locale, teammateDisplayNameSetting, currentUser.id, true); created.display_name = directChannels?.[0].display_name || created.display_name; if (users?.length) { @@ -860,19 +861,16 @@ export async function fetchArchivedChannels(serverUrl: string, teamId: string, p } export async function createGroupChannel(serverUrl: string, userIds: string[]) { - const operator = DatabaseManager.serverDatabases[serverUrl]?.operator; - if (!operator) { - return {error: `${serverUrl} database not found`}; - } - let client: Client; try { client = NetworkManager.getClient(serverUrl); } catch (error) { return {error}; } + try { - const currentUser = await getCurrentUser(operator.database); + const {operator, database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); + const currentUser = await getCurrentUser(database); if (!currentUser) { return {error: 'Cannot get the current user'}; } @@ -886,9 +884,10 @@ export async function createGroupChannel(serverUrl: string, userIds: string[]) { return {data: created}; } - const preferences = await queryPreferencesByCategoryAndName(operator.database, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.NAME_NAME_FORMAT).fetch(); - const system = await getCommonSystemValues(operator.database); - const teammateDisplayNameSetting = getTeammateNameDisplaySetting(preferences || [], system.config, system.license); + const preferences = await queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.NAME_NAME_FORMAT).fetch(); + const license = await getLicense(database); + const config = await getConfig(database); + const teammateDisplayNameSetting = getTeammateNameDisplaySetting(preferences || [], config.LockTeammateNameDisplay, config.TeammateNameDisplay, license); const {directChannels, users} = await fetchMissingDirectChannelsInfo(serverUrl, [created], currentUser.locale, teammateDisplayNameSetting, currentUser.id, true); const member = { diff --git a/app/actions/remote/entry/app.ts b/app/actions/remote/entry/app.ts index 7040e45c0..2c8cdbe61 100644 --- a/app/actions/remote/entry/app.ts +++ b/app/actions/remote/entry/app.ts @@ -4,7 +4,7 @@ import {switchToChannelById} from '@actions/remote/channel'; import {fetchConfigAndLicense} from '@actions/remote/systems'; import DatabaseManager from '@database/manager'; -import {prepareCommonSystemValues, getCommonSystemValues, getCurrentTeamId, getWebSocketLastDisconnected, setCurrentTeamAndChannelId, getCurrentChannelId} from '@queries/servers/system'; +import {prepareCommonSystemValues, getCurrentTeamId, getWebSocketLastDisconnected, setCurrentTeamAndChannelId, getCurrentChannelId, getConfig, getLicense} from '@queries/servers/system'; import {getCurrentUser} from '@queries/servers/user'; import {deleteV1Data} from '@utils/file'; import {isTablet} from '@utils/helpers'; @@ -65,7 +65,8 @@ export async function appEntry(serverUrl: string, since = 0, isUpgrade = false) logInfo('ENTRY MODELS BATCHING TOOK', `${Date.now() - dt}ms`); const {id: currentUserId, locale: currentUserLocale} = meData?.user || (await getCurrentUser(database))!; - const {config, license} = await getCommonSystemValues(database); + const config = await getConfig(database); + const license = await getLicense(database); await deferredAppEntryActions(serverUrl, lastDisconnectedAt, currentUserId, currentUserLocale, prefData.preferences, config, license, teamData, chData, initialTeamId, switchToChannel ? initialChannelId : undefined); if (!since) { diff --git a/app/actions/remote/entry/common.ts b/app/actions/remote/entry/common.ts index e4f787ed6..dcf0de25c 100644 --- a/app/actions/remote/entry/common.ts +++ b/app/actions/remote/entry/common.ts @@ -145,7 +145,7 @@ export const fetchAppEntryData = async (serverUrl: string, sinceArg: number, ini const confReq = await fetchConfigAndLicense(serverUrl); const prefData = await fetchMyPreferences(serverUrl, fetchOnly); - const isCRTEnabled = Boolean(prefData.preferences && processIsCRTEnabled(prefData.preferences, confReq.config)); + const isCRTEnabled = Boolean(prefData.preferences && processIsCRTEnabled(prefData.preferences, confReq.config?.CollapsedThreads, confReq.config?.FeatureFlagCollapsedThreads)); if (prefData.preferences) { const crtToggled = await getHasCRTChanged(database, prefData.preferences); if (crtToggled) { @@ -306,7 +306,7 @@ export async function entryInitialChannelId(database: Database, requestedChannel export async function restDeferredAppEntryActions( serverUrl: string, since: number, currentUserId: string, currentUserLocale: string, preferences: PreferenceType[] | undefined, - config: ClientConfig, license: ClientLicense, teamData: MyTeamsRequest, chData: MyChannelsRequest | undefined, + config: ClientConfig, license: ClientLicense | undefined, teamData: MyTeamsRequest, chData: MyChannelsRequest | undefined, initialTeamId?: string, initialChannelId?: string) { // defer sidebar DM & GM profiles let channelsToFetchProfiles: Set|undefined; @@ -325,7 +325,7 @@ export async function restDeferredAppEntryActions( fetchTeamsChannelsAndUnreadPosts(serverUrl, since, teamData.teams, teamData.memberships, initialTeamId); } - if (preferences && processIsCRTEnabled(preferences, config)) { + if (preferences && processIsCRTEnabled(preferences, config.CollapsedThreads, config.FeatureFlagCollapsedThreads)) { if (initialTeamId) { await fetchNewThreads(serverUrl, initialTeamId, false); } @@ -348,7 +348,7 @@ export async function restDeferredAppEntryActions( setTimeout(async () => { if (channelsToFetchProfiles?.size) { - const teammateDisplayNameSetting = getTeammateNameDisplaySetting(preferences || [], config, license); + const teammateDisplayNameSetting = getTeammateNameDisplaySetting(preferences || [], config.LockTeammateNameDisplay, config.TeammateNameDisplay, license); fetchMissingDirectChannelsInfo(serverUrl, Array.from(channelsToFetchProfiles), currentUserLocale, teammateDisplayNameSetting, currentUserId); } }, FETCH_MISSING_DM_TIMEOUT); @@ -454,7 +454,7 @@ const restSyncAllChannelMembers = async (serverUrl: string) => { for (const myTeam of myTeams) { fetchMyChannelsForTeam(serverUrl, myTeam.id, false, 0, false, excludeDirect); excludeDirect = true; - if (preferences && processIsCRTEnabled(preferences, config)) { + if (preferences && processIsCRTEnabled(preferences, config.CollapsedThreads, config.FeatureFlagCollapsedThreads)) { fetchNewThreads(serverUrl, myTeam.id, false); } } diff --git a/app/actions/remote/entry/gql_common.ts b/app/actions/remote/entry/gql_common.ts index 3e0683531..3b70dc711 100644 --- a/app/actions/remote/entry/gql_common.ts +++ b/app/actions/remote/entry/gql_common.ts @@ -52,7 +52,7 @@ export async function deferredAppEntryGraphQLActions( } }, FETCH_UNREADS_TIMEOUT); - if (preferences && processIsCRTEnabled(preferences, config)) { + if (preferences && processIsCRTEnabled(preferences, config.CollapsedThreads, config.FeatureFlagCollapsedThreads)) { if (initialTeamId) { await fetchNewThreads(serverUrl, initialTeamId, false); } @@ -256,7 +256,7 @@ export const entry = async (serverUrl: string, teamId?: string, channelId?: stri export async function deferredAppEntryActions( serverUrl: string, since: number, currentUserId: string, currentUserLocale: string, preferences: PreferenceType[] | undefined, - config: ClientConfig, license: ClientLicense, teamData: MyTeamsRequest, chData: MyChannelsRequest | undefined, + config: ClientConfig, license: ClientLicense | undefined, teamData: MyTeamsRequest, chData: MyChannelsRequest | undefined, initialTeamId?: string, initialChannelId?: string) { let result; if (config?.FeatureFlagGraphQL === 'true') { diff --git a/app/actions/remote/entry/notification.ts b/app/actions/remote/entry/notification.ts index 5365afa8a..25eb4bb73 100644 --- a/app/actions/remote/entry/notification.ts +++ b/app/actions/remote/entry/notification.ts @@ -8,7 +8,7 @@ import {getDefaultThemeByAppearance} from '@context/theme'; import DatabaseManager from '@database/manager'; import {getMyChannel} from '@queries/servers/channel'; import {queryPreferencesByCategoryAndName} from '@queries/servers/preference'; -import {getCommonSystemValues, getCurrentTeamId, getWebSocketLastDisconnected, setCurrentTeamAndChannelId} from '@queries/servers/system'; +import {getConfig, getCurrentTeamId, getLicense, getWebSocketLastDisconnected, setCurrentTeamAndChannelId} from '@queries/servers/system'; import {getMyTeamById} from '@queries/servers/team'; import {getIsCRTEnabled} from '@queries/servers/thread'; import {getCurrentUser} from '@queries/servers/user'; @@ -136,7 +136,8 @@ export async function pushNotificationEntry(serverUrl: string, notification: Not await operator.batchRecords(models); const {id: currentUserId, locale: currentUserLocale} = (await getCurrentUser(operator.database))!; - const {config, license} = await getCommonSystemValues(operator.database); + const config = await getConfig(database); + const license = await getLicense(database); await deferredAppEntryActions(serverUrl, lastDisconnectedAt, currentUserId, currentUserLocale, prefData.preferences, config, license, teamData, chData, selectedTeamId, selectedChannelId); diff --git a/app/actions/remote/notifications.ts b/app/actions/remote/notifications.ts index f62f3758f..018c838ea 100644 --- a/app/actions/remote/notifications.ts +++ b/app/actions/remote/notifications.ts @@ -11,7 +11,7 @@ import {fetchMyTeam} from '@actions/remote/team'; import {fetchAndSwitchToThread} from '@actions/remote/thread'; import DatabaseManager from '@database/manager'; import {getMyChannel, getChannelById} from '@queries/servers/channel'; -import {getCommonSystemValues, getWebSocketLastDisconnected} from '@queries/servers/system'; +import {getCurrentTeamId, getWebSocketLastDisconnected} from '@queries/servers/system'; import {getMyTeamById} from '@queries/servers/team'; import {getIsCRTEnabled} from '@queries/servers/thread'; import {emitNotificationError} from '@utils/notification'; @@ -30,14 +30,14 @@ const fetchNotificationData = async (serverUrl: string, notification: Notificati } const {database} = operator; - const system = await getCommonSystemValues(database); + const currentTeamId = await getCurrentTeamId(database); let teamId = notification.payload?.team_id; let isDirectChannel = false; if (!teamId) { // If the notification payload does not have a teamId we assume is a DM/GM isDirectChannel = true; - teamId = system.currentTeamId; + teamId = currentTeamId; } // To make the switch faster we determine if we already have the team & channel @@ -129,13 +129,13 @@ export const openNotification = async (serverUrl: string, notification: Notifica const isCRTEnabled = await getIsCRTEnabled(database); const isThreadNotification = isCRTEnabled && Boolean(rootId); - const system = await getCommonSystemValues(database); + const currentTeamId = await getCurrentTeamId(database); const currentServerUrl = await DatabaseManager.getActiveServerUrl(); let teamId = notification.payload?.team_id; if (!teamId) { // If the notification payload does not have a teamId we assume is a DM/GM - teamId = system.currentTeamId; + teamId = currentTeamId; } if (currentServerUrl !== serverUrl) { diff --git a/app/actions/remote/preference.ts b/app/actions/remote/preference.ts index f8a2b8073..8d7c79f81 100644 --- a/app/actions/remote/preference.ts +++ b/app/actions/remote/preference.ts @@ -54,7 +54,6 @@ export const saveFavoriteChannel = async (serverUrl: string, channelId: string, } try { - // Todo: @shaz I think you'll need to add the category handler here so that the channel is added/removed from the favorites category const userId = await getCurrentUserId(operator.database); const favPref: PreferenceType = { category: CATEGORY_FAVORITE_CHANNEL, diff --git a/app/actions/remote/retry.ts b/app/actions/remote/retry.ts index 783a5e4ce..497f691f0 100644 --- a/app/actions/remote/retry.ts +++ b/app/actions/remote/retry.ts @@ -1,6 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. +import {storeConfig} from '@actions/local/systems'; import {Preferences} from '@constants'; import DatabaseManager from '@database/manager'; import {getPreferenceValue, getTeammateNameDisplaySetting} from '@helpers/api/preference'; @@ -9,7 +10,7 @@ import NetworkManager from '@managers/network_manager'; import {prepareCategories, prepareCategoryChannels} from '@queries/servers/categories'; import {prepareMyChannelsForTeam} from '@queries/servers/channel'; import {prepareMyPreferences, queryPreferencesByCategoryAndName} from '@queries/servers/preference'; -import {prepareCommonSystemValues, getCommonSystemValues} from '@queries/servers/system'; +import {prepareCommonSystemValues, getConfig, getLicense} from '@queries/servers/system'; import {prepareMyTeams} from '@queries/servers/team'; import {getCurrentUser} from '@queries/servers/user'; import {isDMorGM, selectDefaultChannelForTeam} from '@utils/channel'; @@ -101,14 +102,15 @@ export async function retryInitialTeamAndChannel(serverUrl: string) { const models: Model[] = (await Promise.all([ prepareMyPreferences(operator, prefData.preferences!), + storeConfig(serverUrl, clData.config, true), ...prepareMyTeams(operator, teamData.teams!, teamData.memberships!), ...await prepareMyChannelsForTeam(operator, initialTeam.id, chData!.channels!, chData!.memberships!), prepareCategories(operator, chData!.categories!), prepareCategoryChannels(operator, chData!.categories!), + prepareCommonSystemValues( operator, { - config: clData.config!, license: clData.license!, currentTeamId: initialTeam?.id, currentChannelId: initialChannel?.id, @@ -121,7 +123,7 @@ export async function retryInitialTeamAndChannel(serverUrl: string) { const directChannels = chData!.channels!.filter(isDMorGM); const channelsToFetchProfiles = new Set(directChannels); if (channelsToFetchProfiles.size) { - const teammateDisplayNameSetting = getTeammateNameDisplaySetting(prefData.preferences || [], clData.config, clData.license); + const teammateDisplayNameSetting = getTeammateNameDisplaySetting(prefData.preferences || [], clData.config?.LockTeammateNameDisplay, clData.config?.TeammateNameDisplay, clData.license); fetchMissingDirectChannelsInfo(serverUrl, Array.from(channelsToFetchProfiles), user.locale, teammateDisplayNameSetting, user.id); } @@ -163,7 +165,8 @@ export async function retryInitialChannel(serverUrl: string, teamId: string) { user_id: p.userId, value: p.value, })); - const {config, license} = await getCommonSystemValues(database); + const license = await getLicense(database); + const config = await getConfig(database); // fetch channels / channel membership for initial team const chData = await fetchMyChannelsForTeam(serverUrl, teamId, false, 0, true); @@ -200,7 +203,7 @@ export async function retryInitialChannel(serverUrl: string, teamId: string) { const directChannels = chData!.channels!.filter(isDMorGM); const channelsToFetchProfiles = new Set(directChannels); if (channelsToFetchProfiles.size) { - const teammateDisplayNameSetting = getTeammateNameDisplaySetting(preferences || [], config, license); + const teammateDisplayNameSetting = getTeammateNameDisplaySetting(preferences || [], config.LockTeammateNameDisplay, config.TeammateNameDisplay, license); fetchMissingDirectChannelsInfo(serverUrl, Array.from(channelsToFetchProfiles), user.locale, teammateDisplayNameSetting, user.id); } diff --git a/app/actions/remote/session.ts b/app/actions/remote/session.ts index b451a5503..d88728e79 100644 --- a/app/actions/remote/session.ts +++ b/app/actions/remote/session.ts @@ -13,7 +13,7 @@ import NetworkManager from '@managers/network_manager'; import WebsocketManager from '@managers/websocket_manager'; import {getDeviceToken} from '@queries/app/global'; import {queryServerName} from '@queries/app/servers'; -import {getCurrentUserId, getCommonSystemValues, getExpiredSession} from '@queries/servers/system'; +import {getCurrentUserId, getExpiredSession, getConfig, getLicense} from '@queries/servers/system'; import {getCurrentUser} from '@queries/servers/user'; import EphemeralStore from '@store/ephemeral_store'; import {logWarning, logError} from '@utils/log'; @@ -35,9 +35,10 @@ export const completeLogin = async (serverUrl: string) => { } const {database} = operator; - const {config, license}: { config: Partial; license: Partial } = await getCommonSystemValues(database); + const license = await getLicense(database); + const config = await getConfig(database); - if (!Object.keys(config)?.length || !Object.keys(license)?.length) { + if (!Object.keys(config)?.length || !license || !Object.keys(license)?.length) { return null; } diff --git a/app/actions/remote/thread.ts b/app/actions/remote/thread.ts index 0a1c57b67..6461ab6bf 100644 --- a/app/actions/remote/thread.ts +++ b/app/actions/remote/thread.ts @@ -9,7 +9,7 @@ import PushNotifications from '@init/push_notifications'; import AppsManager from '@managers/apps_manager'; import NetworkManager from '@managers/network_manager'; import {getPostById} from '@queries/servers/post'; -import {getCommonSystemValues, getCurrentChannelId, getCurrentTeamId} from '@queries/servers/system'; +import {getConfigValue, getCurrentChannelId, getCurrentTeamId} from '@queries/servers/system'; import {getIsCRTEnabled, getNewestThreadInTeam, getThreadById} from '@queries/servers/thread'; import {getCurrentUser} from '@queries/servers/user'; @@ -104,9 +104,8 @@ export const fetchThreads = async ( } try { - const {config} = await getCommonSystemValues(database); - - const data = await client.getThreads('me', teamId, before, after, perPage, deleted, unread, since, false, config.Version); + const version = await getConfigValue(database, 'Version'); + const data = await client.getThreads('me', teamId, before, after, perPage, deleted, unread, since, false, version); const {threads} = data; @@ -323,7 +322,7 @@ async function fetchBatchThreads( return {error: 'currentUser not found'}; } - const {config} = await getCommonSystemValues(operator.database); + const version = await getConfigValue(operator.database, 'Version'); const data: Thread[] = []; const fetchThreadsFunc = async (opts: FetchThreadsOptions) => { @@ -331,7 +330,7 @@ async function fetchBatchThreads( const {before, after, perPage = General.CRT_CHUNK_SIZE, deleted, unread, since} = opts; page += 1; - const {threads} = await client.getThreads(currentUser.id, teamId, before, after, perPage, deleted, unread, since, false, config.Version); + const {threads} = await client.getThreads(currentUser.id, teamId, before, after, perPage, deleted, unread, since, false, version); if (threads.length) { // Mark all fetched threads as following for (const thread of threads) { diff --git a/app/actions/websocket/group.ts b/app/actions/websocket/group.ts index 252227370..5b96117d5 100644 --- a/app/actions/websocket/group.ts +++ b/app/actions/websocket/group.ts @@ -2,9 +2,9 @@ // See LICENSE.txt for license information. import {fetchGroupsForChannel, fetchGroupsForMember, fetchGroupsForTeam} from '@actions/remote/groups'; -import {deleteGroupChannelById, deleteGroupMembershipById, deleteGroupTeamById} from '@app/queries/servers/group'; -import {generateGroupAssociationId} from '@app/utils/groups'; import DatabaseManager from '@database/manager'; +import {deleteGroupChannelById, deleteGroupMembershipById, deleteGroupTeamById} from '@queries/servers/group'; +import {generateGroupAssociationId} from '@utils/groups'; import {logError} from '@utils/log'; type WebsocketGroupMessage = WebSocketMessage<{ diff --git a/app/actions/websocket/index.ts b/app/actions/websocket/index.ts index 7d526d048..dc1062567 100644 --- a/app/actions/websocket/index.ts +++ b/app/actions/websocket/index.ts @@ -31,9 +31,9 @@ import AppsManager from '@managers/apps_manager'; import {getActiveServerUrl, queryActiveServer} from '@queries/app/servers'; import {getCurrentChannel} from '@queries/servers/channel'; import { - getCommonSystemValues, getConfig, getCurrentUserId, + getLicense, getWebSocketLastDisconnected, resetWebSocketLastDisconnected, setCurrentTeamAndChannelId, @@ -178,13 +178,15 @@ async function doReconnect(serverUrl: string) { logInfo('WEBSOCKET RECONNECT MODELS BATCHING TOOK', `${Date.now() - dt}ms`); const {id: currentUserId, locale: currentUserLocale} = (await getCurrentUser(database))!; - const {config, license} = await getCommonSystemValues(database); - await deferredAppEntryActions(serverUrl, lastDisconnectedAt, currentUserId, currentUserLocale, prefData.preferences, config, license, teamData, chData, initialTeamId, switchedToChannel ? initialChannelId : undefined); + const license = await getLicense(database); + const config = await getConfig(database); if (isSupportedServerCalls(config?.Version)) { loadConfigAndCalls(serverUrl, currentUserId); } + await deferredAppEntryActions(serverUrl, lastDisconnectedAt, currentUserId, currentUserLocale, prefData.preferences, config, license, teamData, chData, initialTeamId, switchedToChannel ? initialChannelId : undefined); + AppsManager.refreshAppBindings(serverUrl); } diff --git a/app/actions/websocket/posts.ts b/app/actions/websocket/posts.ts index d01ad8bd8..82976d110 100644 --- a/app/actions/websocket/posts.ts +++ b/app/actions/websocket/posts.ts @@ -128,10 +128,7 @@ export async function handleNewPostEvent(serverUrl: string, msg: WebSocketMessag ) { markAsViewed = true; markAsRead = false; - } else if ((post.channel_id === currentChannelId)) { // TODO: THREADS && !viewingGlobalThreads) { - // Don't mark as read if we're in global threads screen - // the currentChannelId still refers to previously viewed channel - + } else if ((post.channel_id === currentChannelId)) { const isChannelScreenMounted = NavigationStore.getNavigationComponents().includes(Screens.CHANNEL); const isTabletDevice = await isTablet(); diff --git a/app/actions/websocket/system.ts b/app/actions/websocket/system.ts index 565c8b45c..ed3bb8cb2 100644 --- a/app/actions/websocket/system.ts +++ b/app/actions/websocket/system.ts @@ -2,6 +2,7 @@ // See LICENSE.txt for license information. import {updateDmGmDisplayName} from '@actions/local/channel'; +import {storeConfig} from '@actions/local/systems'; import {SYSTEM_IDENTIFIERS} from '@constants/database'; import DatabaseManager from '@database/manager'; import {getConfig, getLicense} from '@queries/servers/system'; @@ -35,10 +36,8 @@ export async function handleConfigChangedEvent(serverUrl: string, msg: WebSocket try { const config = msg.data.config; - const systems: IdValue[] = [{id: SYSTEM_IDENTIFIERS.CONFIG, value: JSON.stringify(config)}]; - const prevConfig = await getConfig(operator.database); - await operator.handleSystem({systems, prepareRecordsOnly: false}); + await storeConfig(serverUrl, config); if (config?.LockTeammateNameDisplay && (prevConfig?.LockTeammateNameDisplay !== config.LockTeammateNameDisplay)) { updateDmGmDisplayName(serverUrl); } diff --git a/app/actions/websocket/users.ts b/app/actions/websocket/users.ts index 291462093..1cf23d41e 100644 --- a/app/actions/websocket/users.ts +++ b/app/actions/websocket/users.ts @@ -12,7 +12,7 @@ import {getTeammateNameDisplaySetting} from '@helpers/api/preference'; import WebsocketManager from '@managers/websocket_manager'; import {queryChannelsByTypes, queryUserChannelsByTypes} from '@queries/servers/channel'; import {queryPreferencesByCategoryAndName} from '@queries/servers/preference'; -import {getCommonSystemValues} from '@queries/servers/system'; +import {getConfig, getLicense} from '@queries/servers/system'; import {getCurrentUser} from '@queries/servers/user'; import {displayUsername} from '@utils/user'; @@ -84,13 +84,14 @@ export async function handleUserTypingEvent(serverUrl: string, msg: WebSocketMes return; } - const {config, license} = await getCommonSystemValues(database); + const license = await getLicense(database); + const config = await getConfig(database); const {users, existingUsers} = await fetchUsersByIds(serverUrl, [msg.data.user_id]); const user = users?.[0] || existingUsers?.[0]; const namePreference = await queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.NAME_NAME_FORMAT).fetch(); - const teammateDisplayNameSetting = getTeammateNameDisplaySetting(namePreference, config, license); + const teammateDisplayNameSetting = getTeammateNameDisplaySetting(namePreference, config.LockTeammateNameDisplay, config.TeammateNameDisplay, license); const currentUser = await getCurrentUser(database); const username = displayUsername(user, currentUser?.locale, teammateDisplayNameSetting); const data = { diff --git a/app/client/websocket/index.ts b/app/client/websocket/index.ts index 5274d68c8..b5fb3c560 100644 --- a/app/client/websocket/index.ts +++ b/app/client/websocket/index.ts @@ -6,7 +6,7 @@ import {Platform} from 'react-native'; import {WebsocketEvents} from '@constants'; import DatabaseManager from '@database/manager'; -import {getCommonSystemValues} from '@queries/servers/system'; +import {getConfig} from '@queries/servers/system'; import {logError, logInfo, logWarning} from '@utils/log'; const MAX_WEBSOCKET_FAILS = 7; @@ -75,8 +75,8 @@ export default class WebSocketClient { return; } - const system = await getCommonSystemValues(database); - const connectionUrl = (system.config.WebsocketURL || this.serverUrl) + '/api/v4/websocket'; + const config = await getConfig(database); + const connectionUrl = (config.WebsocketURL || this.serverUrl) + '/api/v4/websocket'; if (this.connectingCallback) { this.connectingCallback(); @@ -97,7 +97,7 @@ export default class WebSocketClient { this.url = connectionUrl; - const reliableWebSockets = system.config.EnableReliableWebSockets === 'true'; + const reliableWebSockets = config.EnableReliableWebSockets === 'true'; if (reliableWebSockets) { // Add connection id, and last_sequence_number to the query param. // We cannot also send it as part of the auth_challenge, because the session cookie is already sent with the request. diff --git a/app/components/channel_item/custom_status/index.ts b/app/components/channel_item/custom_status/index.ts index 797d8def5..13a19c450 100644 --- a/app/components/channel_item/custom_status/index.ts +++ b/app/components/channel_item/custom_status/index.ts @@ -4,9 +4,9 @@ import {withDatabase} from '@nozbe/watermelondb/DatabaseProvider'; import withObservables from '@nozbe/with-observables'; import {of as of$} from 'rxjs'; -import {map, switchMap} from 'rxjs/operators'; +import {switchMap} from 'rxjs/operators'; -import {observeConfig} from '@queries/servers/system'; +import {observeConfigBooleanValue} from '@queries/servers/system'; import {observeUser} from '@queries/servers/user'; import {getUserCustomStatus, isCustomStatusExpired} from '@utils/user'; @@ -21,9 +21,8 @@ type HeaderInputProps = { const enhanced = withObservables( ['userId'], ({userId, database}: WithDatabaseArgs & HeaderInputProps) => { - const config = observeConfig(database); const user = observeUser(database, userId); - const isCustomStatusEnabled = config.pipe(map((cfg) => cfg?.EnableCustomUserStatuses === 'true')); + const isCustomStatusEnabled = observeConfigBooleanValue(database, 'EnableCustomUserStatuses'); const customStatus = user.pipe(switchMap((u) => (u?.isBot ? of$(undefined) : of$(getUserCustomStatus(u))))); const customStatusExpired = user.pipe(switchMap((u) => (u?.isBot ? of$(false) : of$(isCustomStatusExpired(u))))); diff --git a/app/components/files/file.tsx b/app/components/files/file.tsx index bcd128795..72cf6af2f 100644 --- a/app/components/files/file.tsx +++ b/app/components/files/file.tsx @@ -25,7 +25,7 @@ type FileProps = { galleryIdentifier: string; index: number; inViewPort: boolean; - isSingleImage: boolean; + isSingleImage?: boolean; nonVisibleImagesCount: number; onPress: (index: number) => void; publicLinkEnabled: boolean; diff --git a/app/components/files/index.ts b/app/components/files/index.ts index 4f0b3da92..7a49560ca 100644 --- a/app/components/files/index.ts +++ b/app/components/files/index.ts @@ -6,7 +6,7 @@ import withObservables from '@nozbe/with-observables'; import {combineLatest, of as of$, from as from$} from 'rxjs'; import {map, switchMap} from 'rxjs/operators'; -import {observeConfig, observeLicense} from '@queries/servers/system'; +import {observeConfigBooleanValue, observeLicense} from '@queries/servers/system'; import {fileExists} from '@utils/file'; import Files from './files'; @@ -36,14 +36,8 @@ const filesLocalPathValidation = async (files: FileModel[], authorId: string) => }; const enhance = withObservables(['post'], ({database, post}: EnhanceProps) => { - const config = observeConfig(database); - const enableMobileFileDownload = config.pipe( - switchMap((cfg) => of$(cfg?.EnableMobileFileDownload !== 'false')), - ); - - const publicLinkEnabled = config.pipe( - switchMap((cfg) => of$(cfg?.EnablePublicLink !== 'false')), - ); + const enableMobileFileDownload = observeConfigBooleanValue(database, 'EnableMobileFileDownload'); + const publicLinkEnabled = observeConfigBooleanValue(database, 'EnablePublicLink'); const complianceDisabled = observeLicense(database).pipe( switchMap((lcs) => of$(lcs?.IsLicensed === 'false' || lcs?.Compliance === 'false')), diff --git a/app/components/floating_text_input_label/index.tsx b/app/components/floating_text_input_label/index.tsx index b2330ef70..202807896 100644 --- a/app/components/floating_text_input_label/index.tsx +++ b/app/components/floating_text_input_label/index.tsx @@ -45,6 +45,9 @@ const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => ({ zIndex: 10, maxWidth: 315, }, + readOnly: { + backgroundColor: changeOpacity(theme.centerChannelBg, 0.16), + }, smallLabel: { fontSize: 10, }, @@ -191,6 +194,9 @@ const FloatingTextInput = forwardRef { const res: StyleProp = [styles.textInput]; + if (!editable) { + res.push(styles.readOnly); + } res.push({ borderWidth: focusedLabel ? BORDER_FOCUSED_WIDTH : BORDER_DEFAULT_WIDTH, height: DEFAULT_INPUT_HEIGHT + ((focusedLabel ? BORDER_FOCUSED_WIDTH : BORDER_DEFAULT_WIDTH) * 2), @@ -209,7 +215,7 @@ const FloatingTextInput = forwardRef { const inputText = placeholder || value; diff --git a/app/components/illustrations/no_team.tsx b/app/components/illustrations/no_team.tsx index 3413082d1..f58437206 100644 --- a/app/components/illustrations/no_team.tsx +++ b/app/components/illustrations/no_team.tsx @@ -233,32 +233,24 @@ function SvgComponent({theme}: Props) { id='image0' width={356} height={353} - - // @ts-expect-error string source xlinkHref='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWQAAAFhCAYAAABH1tCTAAAgAElEQVR4Xu2de68ty3XVO0CAACHBGOOExI5JBAriIcT3/wbwTyQCQQRiEgR2giHEEB42Rr/jHjfz1KnqmtVdvVattUdLW+fevarrMar36LlGzcfPbL6MgBEwAkZgCQR+ZolZeBJGwAgYASOwmZD9EBgBI2AEFkHAhLzIRngaRsAIGAETsp8BI2AEjMAiCJiQF9kIT8MIGAEjYEL2M2AEjIARWAQBE/IiG+FpGAEjYARMyH4GjIARMAKLIGBCXmQjPA0jYASMgAnZz4ARMAJGYBEETMiLbISnYQSMgBEwIfsZMAJGwAgsgoAJeZGN8DSMgBEwAiZkPwNGwAgYgUUQMCEvshGehhEwAkbAhOxnwAgYASOwCAIm5EU2wtMwAkbACJiQ/QwYASNgBBZBwIS8yEZ4GkbACBgBE7KfASNgBIzAIgiYkBfZCE/DCBgBI2BC9jNgBIyAEVgEARPyIhvhaRgBI2AETMh+BoyAETACiyBgQl5kIzwNI2AEjIAJ2c+AETACRmARBEzIi2yEp2EEjIARMCH7GTACRsAILIKACXmRjfA0jIARMAImZD8DRsAIGIFFEDAhL7IRnoYRMAJGwITsZ8AIGAEjsAgCJuRFNsLTMAJGwAiYkP0MGAEjYAQWQcCEvMhGeBpGwAgYAROynwEjYASMwCIImJAX2QhPwwgYASNgQvYzYASMgBFYBAET8iIb4WkYASNgBEzIfgaMgBEwAosgYEJeZCM8DSNgBIyACdnPgBEwAkZgEQRMyItshKdhBIyAETAh+xkwAkbACCyCgAl5kY3wNIyAETACJmQ/A0bACBiBRRAwIS+yEZ6GETACRsCE7GfACBgBI7AIAibkRTbC0zACRsAImJD9DBgBI2AEFkHAhLzIRngaRsAIGAETsp8BI2AEjMAiCJiQF9kIT8MIGAEjYEL2M2AEjIARWAQBE/IiG+FpGAEjYARMyH4GjIARMAKLIGBCXmQjPA0jYASMgAnZz4ARMAJGYBEETMiLbISnYQSMgBEwIfsZMAJGwAgsgoAJeZGN8DSMgBEwAiZkPwNGwAgYgUUQMCEvshGehhEwAkbAhOxnwAgYASOwCAIm5EU2wtMwAkbACJiQ/QwYASNgBBZBwIS8yEZ4GkbACBgBE7KfASNgBIzAIgiYkBfZCE/DCBgBI2BC9jNgBIyAEVgEARPyIhvhaRgBI2AETMh+BoyAETACiyBgQl5kIzwNI2AEjIAJ2c+AETACRmARBEzIi2yEp2EEjIARMCH7GTACRsAILIKACXmRjfA0jIARMAImZD8DRsAIGIFFEDAhL7IRnoYRMAJGwITsZ8AIGAEjsAgCJuRFNsLTMAJGwAiYkP0MGAEjYAQWQcCEvMhGeBpGwAgYAROynwEjYASMwCIImJAX2QhPwwgYASNgQvYzYASMgBFYBAET8iIb4WkYASNgBEzIfgaMgBEwAosgYEJeZCM8DSNgBIyACdnPgBFYC4G/sG3b39yn9Ifbtv2/tab32WyY689v2/a/tm3704Xn+TJTMyG/zFZ5oh8EgV/Ytu0X97X+YNu2P1l43b+0bdtf3F8av7/wPF9maibkl9kqT/SDIADB/e1t2/7ctm3/Zdu2Hy68bub5l7dt+9G2bf9x4Xm+zNRMyC+zVZ7oB0IAMuYHortyISlgbf/vmyxt+ucHycLXBARMyBNAdBdGYFEEZMEyPSzYqwS/6DLfZ1om5PfZS6/ECJQI/PVt2/6GJYXXeTBMyK+zV56pETiDANLHyp4aZ9b0tveYkN92a70wI2AEXg0BE/Kr7ZjnawSMwNsiYEJ+2631woyAEXg1BEzIr7Zjnq8RMAJvi4AJ+W231gszAkbg1RAwIb/ajnm+RsAIvC0CJuS33VovzAgYgVdDwIT8ajvm+RqBdRAgERJ+zn9sX+c5m2JCnoOjezECHw0BkgoRms31R9u2/Y+PBsAd6zUh34Gq+zQC748AlvHf2Zf5n5wnY86Gm5Dn4OhejMBHRABS5nJo9qTdNyFPAtLdGIEXROAv7XMmPaevBRAwIS+wCZ7CyyPwc9u2fX3btv+5J5W/uiAytJGpLVMx5GzyIBLhU/GDi3zG/HA45+uJCJiQnwi+h34bBESgLGhG3mG0WRK//59t29BnWxdtOFjj3wx5x37ioZx+/90FdoSXGy+jD/mCMCEv8AR6Ci+PANYmhUnRUr83YTWQ5V/btu2/76Tc6jKSKm3/6+DYf2UvwYR0AflTMurZl+r0MY8VXhAPxcOE/FC4PZgRmIpAJOTV6+9lF/6hk+qbkLOPidsZgTURwMr9ybZtf7rm9E7NCgmGbxsfznvDhHzqefFNRuCtEPj5nfwc3PHkbTUhP3kDPLwReDICf3X3EGEamYg7VbKGvN/JKn/yNvx0eBPyEtvgSRiBpyHA4SEHklwZHVoeIMgJeJS0ZAXc8TgsNGkPbK0JeQAsNzUCb4oApPzjJHn+6p5Q6Ec7IbcgEXH/tyf6N/NS+Nlt214m8MWE/KZ/YV6WEbgJASQLDhIJgoGUW5eI+4dPdKfTSwGf5hnuiDdB+mfdmpBvh9gDGIGHI0BwxTcSgSV3TgzfbNzyIORneEtgHfNS4OpZ83fiMNS3CXkILjc2Ai+BwOzIwZdYdGWSv7htGy+nP9lfDMuvw4S8/BZ5gkZgGAF5QhB9RwTfyhcHiopKHI00XHldp+ZmQj4Fm28yAsshAAkfabp3TZhx/9beOfIE1ujIlc3bMdLny7Y1Ib/s1nniRuArBEayw82GLfoxnzk8I1SaPl5GVpgNYOzPhHwnuu7bCLQR4NALfZMAi9Kyxeokeo5DMbwDeodiWW8C+sU3GDewWdY0h2fKOEf6ztUlkqWfSRPy0tvjyb0xAkckGq3O/5zwo8UNjZ9edjiNicvaH74xti+7NBPyy26dJ/7iCBwRMlYnuixJgwhn7lnIWSjkG3xGWsiO4XYXEDAhXwDPtxqBCwhIPiC0eBbh9qbzjDF7c/LnAQETsh8HI2AEXhEBdGu+SZB/A/e+t7hMyG+xjV6EEXgKAhAiejcW/iNTd2LpI/lwPTNXxnTQTcjTIXWHRuDtECBBD3p26ZkRIwKp/fdISxWNHWLmcHKWx8jTN86E/PQt8ATeAAHV1MN74RUqN+P7i8sdX/d7ZHbk8aEoO7YwU9xVFjVjOi1n5cE3Ib8BG3gJT0dAxMRX998fmA2kiJU3Gt2mIbgXwsQyzRJc/LpfZmJTyDV9SYJQjTvGxBrlpRPHx1+a9nhuxKuW+lIW9ShOA5C+dlMT8mvvn2c/hgCEoyCG7w+QWG8UcjFANvgBZy1kZWSj7x+cJGXWQvBIL1l8SZRUdgYLckfEQI5o8ariM8T69W3b/u9gVetaPmQR8lH2NeZFO14yWSx7+/Myn5uQX2arPNEJCCAtQEZcz8zTy/gQHaTFv6XlmV0qOioBIWfSS9ZyX8ys+NzyeeYFAtm2XP30kgEDvm08yiUwi/mt7UzIt8LrzhdEACsQYl7hMAgy5rpCOhAyBNfTgrNbwZwy80Eq4Wr5UUtOqYWGH81l5kshu+Zl2pmQl9kKT8QIHCLwCztRHunNkCQ5gJEhzurSmW3AysWS5TortxyNk30pZOZatuFFgVzEi2TWS+zMPKr3mJCnQemOjMBtCHBw9rW996PcFsgxWP9nJIyRyUdCzhRGHen77raSRO7G6NQ6TMinYPNNRuChCMTDtiNCxjrGkn6EPo5UgrRRelc8FJgTg5mQT4DmW4yAEfgzBPiaDSmTNpPItEd+3UfTxUKH5N/F66F3sPi0Z88W8tOg98BG4KEIoJvivoZVS1RdeXDH58giJfFGrwe5wl2duKqMMAcOVzOHiFfHfIn7TcgvsU2e5GIIYDX++d1ivINM7jjUQspA0uCqudm1iBcfayzkkShEdGwwwsOiFrAS50J60UfmwVjsUfp8OibkpbfHk1sQgXigdTaxTS2KTUuVDpzNWUxfVAFpRerJ3zhapbWQabmb4UKHBd27GJeXEgEj5aWgkNbBGYSNDzV9MNZy3g69xd/1uQn5LmTd77siEAM6zngYQIx4Q9BPzWVMwR7g15MI4lxqLweRO4SHVdxL/pO1zI/WEOd0tTIJ85d+/SEqUpuQ35U2vK47EYCQIJ4ewdXmEKMF8RcuiUb5JLCQ0XOPLuZARBxXrS8sVX6YJ8l/ZpVt6q0BmYMMcRwCXpF0vh0W33s53bnfD+vbhPwwqD2QEfgKAQgL6QOrtvy6roxo2cAF3M8gcci7JL9vbdv2zf3zf1l4SShnBOOfsT5FugSg3CU5YCGrIvWHKJ5qQjZLGIG1EIiZ47BqS5LNygqsSgdyWNsl6cYsbq1ES5A2OjHudq1rZD6zkZakMZLUafYcpvZnQp4KpzszApcRiN4OZRCIsqXNCFfW4aTc4KKVK79n2nBpPLwjIHmFZuvlMWM+Z4DrHR6e6fOp95iQnwq/BzcCXyAAGXKQhfdCqSFLU816YNA5HhiKqisDO1rJjWJSevrgcA4LW2WT5IlxVDn7EVv7dpKGCfkRj43HMAJzEMBC5kANcswcKMYSS8wgW2YJAsfbgwsLGm8SSJnfYTVD7FjJtIO8o2yh9r0Vq2oJ/bRc9o7cA3v9v+TnJuSX3DZP+s0RUCJ9lplxV1MUHrJD9CFWTmL64bPvVQ7gWvXyIFsurPEjTwkl2seq//FO3Jk8xhlrv5bk/q233oT81tvrxT0IAaxWiGk0929relEyyASfxORDkQzRe/msRcaxgkctnDoDn14eSCNcWO8Zrw3GZn6ytjWWNHQsZ6xovRR4mbz9ZUJ++y32Ak8i0LIca93JkhsppaR+aonc+aouySBTiJQXAgTHV//SPezIC0LzZi4icrndoWE/I5NbtJxZj9wDMxJNb6uXzoXM5E3IvS305x8RAVmO2cOzKA0cpccssYT8VN+uFbJcK7U0a09qRC5rO7v2WXNRPxzUMS9eLLNfCHoBZcPDZ6+t258JuQuRG3xABETI2T9c9FY01Ex6zAhnjHirEaASzisEuVYVevb2aO21yL/aC4WXyl2BIa21nTnsiyHdSyant4U8+1F2f++CwNl6cGfWr8xxtYg3fX0XgUSvCYJGRIT4B3PJrQ3y4QVB362cGUdz5UXRkgjABmkGzfgbeycj3wrOYFTeoxfVqBXPi5MfXjYzJJAZa/msD1vI0yF1h0ZgGgJ8fVcmNx1yQcrRwpOXA4NCjHg6oD9DqvEqPR+4j8PDSE69THPx8BAyVOBItmq25pXxHDkCURLRspbu2SfAhHwWOd9nBJ6DQBnMIS8HpbJUodNydhAoP7KiRWqSQ7Cm+R2h0lz/qpJaM2rleFJA6lia0auipXnzewWWZAm8hfDylu7ZR8OEfBY532cE2gjceRBXGzWSdMzXjLRAtJ8SEHGvsqZF9zIIFbKFlGkLcf9epXI1n+GqBgmXpaQUVs3aW6HUyoGcqRKiwJFsEMxbPI8m5LfYRi9iIQSkb96R3wHihfggxF6VjVg3rpV8Pr44lIdZQSCKzhO0Cj5h7NInuAy1bmm79MHVisyL2yj9/GpO5YUejf5UTMh9jNzCCGQRiF/LRw+cMmPEQ71sGLT6HcnKpuRC3IM1i1Ybx5YejU6NxAH5k+YTouVFgVXLPejf9MHveZH8/d36/p1OBjnmLAs+ExiTwU5t8C+H93yoN4Ka2xqBF0VACW96B1dyYWvVnastX5F3fBa9LLJQQUaSN45SasaDQtW8E0kr+EQ+1JAuZAsJ4ymCZc0VX07IJvRJfmYs8H/RKP2kdUD09JnNi5Fdf1zX6AstO8aldraQL8Hnm43AaQRkAUI6WJy9C1kAEoWssD5bFp48GfCeoL1CulVVWuMcFRdljF/fx0BzrvkZi3DlrUF/0Xc5+lgzJmStUOky61y59pZ7Xw+j3udRWnm0q15vbp8+NyGnYHIjIzAdAem6WI+yKluDQFAQONbpUSmjaJVC2Fix/E4JgpQwiHGO6gHGnMxHliQEi2Qh3+TSlxopQwd56M7ZyDsdTEa3NjDg5dUj895GYXnDe+WhZO++h3xuQn4IzB7ECFQRyOq639lDrCHZf97BUq5ptJUvMkQIWSo/hrLCtbK4RQsVIiXIhLbIEqM18iBrrtFovohN6Wt9JLcwVivP8/KPoQl5+S3yBI3ApwO1jIUMVPLRxQLE0oQQkRIgUizan+yW9hGxQmjcq4g8dHGulszBGJA9pIvlrb7pZ0Zo9VF1k/LxYC54uqgSyugL5KmPmwn5qfB7cCOQQkAEidU7amnWBhjJZIeVLdkB+aI2PjJASdoiRuaekWV6QGSt3uV14qOFmpB7j4E/NwLvhcAZwuqRIaSNBY81qiT4cZxskqYZSMtXmxDyl6tUbUKe8Qi4DyPwOQJYoFiIENWspPVZjHXAltGHcc1DX4Y8ad8LNsnOQTouUguHfljIBHj46iBgQvYjYgTmIsAB2Nf2TGgQHgdQsaxSZrQRSSH2J6v06NCOBEHIC2i96MxKKEQ/Z3ybM+tptVEaTazZGVLMlbmUOJKg/+HBIybkWVvofozATxGQh8LXd68EXNVGCDmWVYIgexekRnAGBKKUmy1yjTKC3NlEyEfVTpRXQt4aNesbHZnDt0yFE63pbBrNHiZXPo8YPfoFZT/kKzvne41ABQFF4GH1YR33ioSWXYiksqklY3vGwpOCqxb40Kqxh2dG68AwJiui31puiRgEMnKAN7rWRzxw8QXVOsS8bR62kG+D1h0bgVMIiNAhtkwgRcwNjESCJKHDtZr0oUi/rDtYrLTBgmqEG0tRjaTWZK1Y9WjXCmTBQuVbRUvCiC52jNW66BdyRZbBB3vkiomZRu673NaEfBlCd2AEnoqA/I4jgSMxQGyQbzbJEaRKAAZWfUmGkCA/HNBBljUyr3licA99ZgumKgH+kVdGNsGSrO8Ri/2pG8ngJuSnb4En8EER0FfjXtTcKDwQI1azLvqHZJWJrdWfyPBM5exWnzEEu6xYwj1lpGKvwCovGpWrgrSP9GraYumSBnWlA8PD/TQhjz7ubm8E5iCgCsj0NvPwKMoH6L2K0GOcmAdDHg4KQ77jBSFCrunhNY8QLGqVrCqt8DJ7XC//x5xdenAvJuQHA+7hjMCOgGQF9NPZAQySGLAiOcjja34pXeiFoEO6K9GArAV5BL0WIkW7huhLjThufozuy6bClAwxolO/1ANnQn6p7fJkH4zAo0sxHX31hzCJgssexsW+akmMdBiY1Zhrc0MfxpsEouTCElb+iqP0nrRVfmWIe8nMaw9+1j4NZ0J+Buoe8xUQuKtixejao0uZLENIT+koY4HRkb7RV5EHzkYSSnJQ8iD+jRnmmNdsy39kfS/Z1oT8ktvmST8AAX2lf2QehtaylL1MxUF1+EX7mfoz/ansEpavvCrivJRsSGk1+QzJQYSM1wf/nSFjJSDCsj5r/fceBXmPPCXyrje58nMT8ihibv9REMCCRH+FWB4eQruTWssNTaQoIjvak/Lw7qitrF6VekJOKKWH+DLQCyLjL10bV0n6+awlcTAnrl6ejVYCpDjfmqeH5lWrI/jwZ92E/HDIPaARSCGgA6wRCx3rFmIRecUUmJlioYrkox+4AaKNZZmYOC8DSE5uZ6nFNBpJemGeNRe2GMZ8VMVb62QYLO34AlU1bVnyrZdrTIL/NN9lE/KVx8n3GoH7EBgNK44hziLfsq7dkYWolSj0mv9XLuMzB4kzkIlrOio5FT02Sg8MyBpiZ138d4vY+YxzA9bMWE/JTmdCnvHYuA8jMB8Bpe/MJqWP1mS0au8qGDprxdKsCVypXZAy15EsonBqhYzX+lnpTKCJnQl51mPlfoxAHgEFYWRkhGyvMUKv/Mr9d/dO/uBmPZyv/cyjpvfKAsXylGdItOC/v0cTZtc72g7MeWkx9lOs38yETcgZlNzGCMxFQNZaNqNbdnSsYbwcIunEr/01bVSpNbnnyuFl1GBr5FrzDImHem8b7JHdPNqZkEfQclsjMAcBSJNsZHxNz7iHXRlVodSlNloGdbQOsrgvU1EkEn9JruoDApaswL/8Ht32jmjFK5g97V4T8tOg98BG4GkISG+GFNFmlVi+9lVeFVCYrEKcsXapioIl/MdhFS29twzT7i38yHdY0gf/lh4gvX6X/9yEvPwWeYIfHAEdWAHDrOCJKBXUEtkzltJmQrIQMJeCUP7ZHkCCN8LvJPZnNEz7KEtctMR5oeA58jaXCfltttILeREEankljqYu8iRqjkTraL1H6SQ5KMMNDGu3FUzBHGjzk0YeieixAeFBgrKmmetv7pIL0sS/T+CORIM3BfPPpMKMZaywypWxjjnL2wI8WCP/jxWP/t0LHklM9blNTMjPxd+jfywEsDqptQd5YO1mLgVPcB/k0zsIjNZlTLeZGUtteha0kuLjJZIhWPXLywIMMvkzGCOWv5JfNn3FdWUT1nPfKsmimnthQh55TN3WCFxDQJ4GPVKtjRJLNR0VP20RV9nnUYUQPoMQyWdR+gePkKryG6sKybd2+QPt93f3CWVJksAOlXuKB6F6eSiMvPWCEHFfyW53bfcTd5uQEyC5iRGYhABkhj8sX7Xxahi5FHEGQR65p6kmH2Mc+dvGCiHSYeUCR/81eQGi5oBOiYTKatpIHbKAmacO86T1/sNt2xiDtf9WqNDd0rGz+JB7Ay47wqWcS7bvh7YzIT8Ubg9mBJ6GgFzPmACSAYSMFRyt9W+H2ZVBK8oX8c1dx8a7IhYZjdKBykCJvDUGZExuCQgZyUZW/5UAmej/fJToHgtbBVRHXQ3BTgebHGTeFkpuQn7a34cHNgIPRQDCxDr/xu4uRtQekkQMzY6JeMrcETro4zCNr/1YtZGYIpmLkPUSaGnGzIdvDVfq3h35P88COJJ+L/H+pTFNyJfg881GYAkEMp4bkB8HgxAynhoQai25vTwqal//IXUIuXaYp8NEBX5cifobBRXrXTLK6L2Z9gquYZxsualMv1+0MSGfgs03fRAE+ENURYxVl1wrFtqaK1/bkSkgTZGqvo7zr/Ibn10r1u4ZIlawB+Myh7KPMq3o0fyUJ+QoXeeZ9bXyLZ/pq3mPCXkqnO7szRDQQdDsP+6ZMGUTsLfGjF/HFfKs4qSQEFb0bZrpPqmYZKiUBGK16Yx1+hJZ3VqbYUKe+afhvt4JgUgEz3aVkocFh2Nl8IPIkxJFo54b7Fe0Tjlog4TRklWiqfSAaFmzcofDOwOLFmuc+ZRuc9yveoDo1LoI+mBsDgvjCyCSdaZclQ7vwOkMHk99hk3IT4Xfgy+OgA6d+Hp/5qv4rOUdhRL3xoCgIDs8CyDL3hUP9mq+vTGKLyYkkv8z3ybAreUaF70xsu5uklnOlorqrXmZz03Iy2yFJ2IEmgjUQomzcIkoa3kfysAN+oTAGU/Z4Uors1VZQy8NZA8CODgchED1A0nzO1WmZj5IEJA+FjWf87uaW9lREEsGB+bGvJFDCFJZ9jIhL7s1ntgbIaCQ6dHqytxHVjWsW1zUYihxFh5FstV8fUXWBJBEn+KW1wLzgVRrQSPlPVHywcJVkAr/cj/EDAFHi5s11fIiX4lwjPOopRjVi2SJcwITcvaxdjsjcB6BePCWOZjSSFeIKM62FZ4sQi6JSpp16T8sX+MasTFX9F6IX7qxDth4mfAjTw7JP4zz90IlD4haxU5l1ULgvATo+0zIOTgocX/Ng0NrKl9K53f7wp0m5Avg+VYjsCOgcGWIqJZxDDKBFCCimu9vC0ilvoSoMtFlCsTgPmm4R+Mxb+ZWWt6titeKrIOQITARbwzOiMRG/3oZIGNAqFHHRtsm8g+ZBAtVmePK4qzKXJf5hkAYNVnsskmPZCEvkVvZhGxOMQLXEYiHbhlPgOsj1nvQ13+ITh4Z2YOz2OOv7S8QiJAkQCI3ESwHfxC+ZBAFTkh3LnNoxKrQ+oYAQROogiSDtltKFdyjStFZslQyfeartJ0ZrM/6T2f6HmpjQh6Cy42NQBUBBSMoZPhuv90ji5qXA5otbnD8jL4gtBZZtlilWK+yOiFdLGWuFlGWkocs6EiUGf9pvQDQrkvruoZB9OAgYdLVfRjJbDflT8OEPAVGd2IEvoqAe7ZrFiQGEUEm6LaQMpcS1zM/yQbRpxiLEm8HQqtrVyRTLFeIGemiRnotySP2KxmnV1ewZl23Hje9CFj3DB9krSNroV/+MzAhX4bQHRiBpyGANYv1iE5cvgjKKMNa4vro4YBkgP5Kn7ogIkgOi5sra3VqLDTzMkVnCywImjwZuKVFkpd1Hd3kHgW41lEmWrptfBPybdC6YyNwKwKtgzQGja5eIkW5v8WoQ5Vy4h4i5BSlx7+0g4j4b7TZrNXJ2Fi1ah/159ZBW8yzXPN26OWRGD3Iy24M47KehwUFmZCzW+N2RuAeBPijh1CQFkY0z0jINQsOPVU+w/r6nskKd7RKBWhAUq2UmjHrG/o1a4pRfLVoQenSWMhY41jV2RwaMWjmqJLKPbs3uVcT8mRA3Z0RGERA0sKoZwDDQF4ctpX5IgankGoerW5uaPnt1g7WMlWn0aWlX2Nd1wJEahPNlqyK97byZqSASDTKFJqtdmNCTqDrJkbgRgREVgyRJaGz04FUVfkik2pTcgUvC6xXubvxFb4WHMK8uEeVSKRr8/8QLm5yWMytKtHMjzEUQp3xJZYPOPPJHKjG7HZ3Reedzj1iQj77aPs+IzAHAbRdBU1kK1EfjUxfEFotQCV6LGQqX8RDPyzi74ScEL93Uls9cneDXFtkPQftn3qbQJi8OLJRk9yj0lNo7b3rdISlCbkHrT83AuMISBd+dCKbSKA162/UY0EHgSCAdQvR4BrXqjaSQUp+zrUw6Ch3ZMkyM2bZpndIWLaPL5HvJgdUIqWRc4FPlVp9GQEjMA8BRa1h7Z2JkrsyE2SBWIyzlqlNBJEhimyM6jAAAB7PSURBVFJ+kP8x7nCqUM3hW8xNcSQzQOZYm/zUDu1igI0ywV3BQ/eOEnA5ZtZn+vJcTciXIXQHRuAzBGIk28P8V8MMIE0OxcqDPlmfM5Ltx1wTOtxT/7LMlVeDeUDSZVa3ln6L3hwLrx49XuUYtbaa67OjKFN/JibkFExuZASGEIBUIAIsyYwlWnauwzNlPmsNzgEVlqpSWh5NUonnJRXIBxnyq+nNPSLEu4FvAXrplJ4UImgRofIsq98ZL6voYkfQSu2Kssujv7EMPTQ0NiEPQ+YbjMCtCEQvgF7Irly+MmkpFVaMxQoJxwO+M0QFofMjiaKsrlIe3gEaBMoVU3ReAbP2ksGnO2r3evHwrSGTMe/KfC7fa0K+DKE7MAJTEYgadM+KlIcGWnHm9D9OtKfXQthc2X4hYFnMkDTrwCqG/JFJYiBL1t2M9eFuV0uIz9wYD11aBMwLinGz/bc27lmHsraQp/4puTMjMAcBiIYr44d7ZcSWJ0CtEvXROBmrPoZH9140jBUJvPdNgfZRu8+2jxZ+XN/Tqo3bQr7yOPteI/B+CEBS8tVldTq0Owq7zlr1vGhoW8sNQW5kPv/+rrvz37J4swEzzBsib2Whq5FuWdpqlNinPgEm5KlwujMj8NIISJOGpJALICf+G1kAvRatGeu2dpWa8ggQeGD8k/2Gf7snrMdKRa6AoMuE9yN919rGMPCaNc2hLFo0UsmZQ9nT8zMhn4bONxqBl0Agm1AoSgQx0xuL/M3dbQ3L87caq0a24DqTVwOC/Me7dQshowFDyFy14qwzgEffjqSrStlo5pkQ7KtzqGaoMyFfhdX3G4F1ERipqAxxczAHMWMFyyqFGLGQsRoJt8ZKLq/oY3zGY4P+kBvgIx3QQZj0i4XKi+AM0Wd3pgwRjxW4s32MtFOpqS98o03IIzC6rRF4HQTi1/IrwSAi9SPXuhghOBryrAPBMttd1KUhrpqfcRmMcnZ34reDI72aOfFy4iJd6tlD1+gS+FmJLRPy2S30fUbgMQhAAPjQnvnjL32Dz8y4VZm67AsLGuKMX/eVXQ7CQwuuWbmRnKJ1Hf2kW14TMXXp1VzImfBqxvvlfZ1/sG3b2WRQ8gmH1D/Tx03IZx5R32MEHoOAvtoy2qjlWZvhlcoaIlf+xYqseUpAali8yA68QKLl2UrXqUxqzBeC04sHgucg8ShPNG3AqFWX78p6a/h9e6+UDW+yH1dfAl+MYUJ+zB+WRzECZxCI2c9Gq0eX40Vf4TM6b1l/r+b5ECPnIG3INAaMjJZCylitcZ2QO94hhIJjfepg8Mx6a/uFNMNLgG8seGCMrqf7DJiQuxC5gRF4GgIK+4VcelWURUZYi7XcFLI4WcwZgmIuEC4VSvCCQJ4oXcKi/HDWO0Lh1b08HnFTsNohf7ntMS+sbf6fKxOI8rRNjgObkJfYBk/CCFxGQHoqHbWqQysTHLo0Gu2ZEONewAb9wiu1xEpYr3wOWddq68UscjWJQ6WRoteFQsClXSOTSHOO6UIvA/yIDkzIj0DZYxiB+xEYOeBS21ZdvHK20Zc5Zk8bTWkZs7OhwSKjKD2nxkSn5ar1HS1geV1IJoGssfzL/u5HfuIIJuSJYLorI/BEBLLeEEwR8sKyxFLlgmSxKmuaaJnXAXImzFmBIC1rXIVESUSvS/XvGAdNmnmULm0x6ZGqVuv+mgsefeD5QH9YzjMOP5+2jSbkp0HvgY3AEgjUrM5IoFiskDCEHd28am5uui8eIBJMggZOGDTeF9KdI7lyAMjncotT3yJ1NGC9LCBg9OKoX0c/6Hj4GYu6jmjST9sYE/LToPfARmAJBI6kDvTYf7SHGGNN/5ukPzSk+Ss7EWOxQr6QY+lPDPGi/SrZfQxgiaTecpmLADJXSDpa+eoDnkOe4eWQzU0x6uExZTNNyFNgdCdG4DQCEBXubRBJNvcwg82q0CzvjJpkgQzwrX1+EPJvJ1cpkpenhf6f9UkmUVcxLSdWMhKHkvoo21sM5U5O4VMzeYbQj14GUUJp9RUPLnseKfg6M86UgrYm5JHtdVsjMB+BGJE2on/O9FE+WhXzw/rEIwPpoXfF9JWyeI/SbtIfljLj4DaHJQtxt7LK9cavfa4XQsbS5v7oc33kvhcDX1qRiEPzNSEPweXGRmA6AtE/eISQpZvyFTxToVl6LGSX/dp+drHMDbKCzNB7FSrMt4BWkiBq8kGckP7vhuCOzBx6FT5UWYSxs2vn5QA/ag21eURCnuLrbELObLfbGIF7EThbISSrc2YqesxeYZxbWV+vRorKKgeBI1ng+ZFJihTlBTTi0YKtrBu/bMkOWcIWXrxQ4dEz436BuQl59mPo/oxAGwHIQ5FoWLWjf/w9bCEVpayMBDFaDqk3Tu9zkSTt8HpQQIj+v5YoSfUBIWOl+4wZ5ljb1/awZXRg+UZHv+gzgS4jFUJm58YwIfeeJH9uBG5EIJJHtizRyHSi9lnKH2e+tmtsSQ6QfCvrHGMjNyBLxHVyKMbvsSS5N5P8XeOpQjbziH1KBqEv2qCnc52RDeKhYu3QURhI689U+B7Zs8/a2kI+DZ1vNALDCES/WAh5toU8qivHBRxZf0e+yvQRXwSKoFPYMhqsssCx3rOJ5mXlK4eG8lfw4oGQ8dAYcWuLa8fThPUfacySXUzIw4+9bzACHxcBiKqW+OcIkZJQyxeFCLlFRtF6rUXucT8EjfWc9UaAxEmtyZiSX7Q2yPko7eYdu69vGPoWcMcYn8RoX0bACHxsBKILXc3vVmSkPMdovPwuWpRHkXv/dA+1xheYbwZlYveadR5JPkviR7vY88RY4gkwIS+xDZ6EEXgqApArB2ZYsGXgRm1iZeBHjwj/wa4B4wcMISMzcGHlQuRY6OQYhngVXh0PIkfcAVtz+Y1t276x+1NjxY+4wD1sc0zID4PaAxmBl0dAVibExn9nAy2wdrkH6QEPCR3skScD6xhiVsJ7CJnDtZieUweJSjx0VEWkBTJVrZFNuBcLvVUW6tGb9Jnrogn50fB7PCPwmgjEoqMQsTwcot6MlIFlq9Dn3kohWHyksY5VQBTihiz5kSWtfpSQiP8fraAC6ZOqk/mSZP+MR8aZ5PlHGHzhQ21C7j0y/twIGAEQiO5hNesSclHJpKzlHJFV3gm8GSD7Wvh0LBEFIUPmyB2t1KGtncOrQkmIsN55kWC5HxWSjcnzz1ZDKecTZZlPfZqQ/cdmBIxAFgFICRKBcEtPjEjIkBskeeaiH35q/srl4eJIUv7aXOKcS5KVPBMrfmMhgwE6eMafOrN+XkDq80cm5AxkbmMEXgcB/rhjbmFmLu31bt2Usbl6xT+xSElyj0V6xR9bvsE1i7wVtRhJnZdKK6PcQ/yOy8fKhPw6f2ieqRHoIRBlhRhGHOvtfbfXyeTPcanjMC3W0Yu5LWL+CeQDZAheHNkAEgWIlNOOrnzRSyNrVUseod9eCs5pkJmQp0HpjozA0xGIOmc8tHqUhVwDQDXysJp1SMc8+fqv6tDSbtW2Fw2nHNLcjzxSi3hsRS2SVY4XV28M2vCCUP6Ms4mLhh4KE/IQXG5sBJZGIFqFrVp3Zxcg6xXXNSQCXfwe1zUO4WqHYsxJnhfxvto8NP+o59bIN5tQiHF5EUTC5mWg4qo9aSXmqj46yFNIPP1lEuA398CEfPbx9H1GYD0EdGrfs/5qM0fXjQdYsU3MiBb7jl4CZzwrMghGUpT/sSxs7p8RNNKah4gWN7mjPBnTigWYkDOPhNsYgfdGINaeQ7uV21lctXTfeDAYCRnLED7hd/x3z/o8QjTqwpGQIwEroILfqSZfVus9k+/jaL6sGXwUdHL6aTEhn4bONxqBt0FAxIrWjPSARZgNvJCbmjwWAOWKtSxrU8npy7SbRNlFaWTUP1gEz3xZ4+yMe5ceChPyJfh8sxF4GwQ4BEO2UHjxaAL9GMmnoqRoy7H4J4RPxBxWdq2ga+wjHgIyJ1z5WvmYVZ6KzYBgW8ViY+UU2mYt6uwmK2l+q71c8VhbtSiqCTkLtdsZgY+BQLYsVA0N7pUHgySOSKzRlaz0iZYnCP1iHUfZQ0QqDVnEF61btZFkQqKi8ppRA0/h4TEtKONk8mx0C9qakD/GH5lXaQQeiUA8BGRc+T7LFU1z0e9p/61dKuGzshRTJDIIHpmiTDAE2f7a7qaGhY71W7OUaQeRn9W45ZrHPOOBYsZvOcovVUnIhPzIx9RjGYE+Anylx9pCh73kQtUf6rYWUXrAEkZqgFQhUdJtojtHNzKsadJj0k6JiaK+GyutqEQUky9JDaL+ld1bhM/BsOWOd3bxsXpKrPbNutC/ewd7koSqodcm5LPb4vuMwD0IREvrzqg6AjMgTqzJs9biEQI1+YL2HMqVFipWJy8iiFcvoZa+S7+QO5U7IFysToWLQ/5ICnyulJ60Kw/vSEjEWGjcvASyUYHMn/sYD0KdfiBoQr7nj8q9GoGzCGBpQSiQJGRZXrIWr5Bp9Ey44hHB3DKVmPVVveUfzZohUoiSwzuubGBLlBDUP1aoAlbKvsqDPT6/88U39ByYkIfgcmMj8HQEIqFcIVO+XkOEkP7ZzGU6uMu4kPU8EGR9Qsp4IGTnFPN0xINCXlysj37iN4B4sMeY8dDx6ZtrQn76FngCRmAIgdK9rBeOPNT5YOOYMD5r0TIE1iuSgjReDYuVzFV1CTuYG+RLf1xo0Ed5jWkDKfMtgSolvbaDkFxrbkK+hp/vNgLPQiBjcY7MDTKE1Dhsy5IURNiyaJkf8gMabnnVMq7Fytej4dDRq+NOi/eKS2BqL0zIKZjcyAi8PQIiSaxGchS3LkgJ4u7JCuqvdGGjX6QE+uAwTYns+R0HmlzZKEHNMX5r6M3/7EbGckuzA0q+mpMJ+ez2+D4jsC4CMUgBQsx4EUh+OEpiDyl9ZydOLOl/3fA0iBbrSFJ8SBk9Oqsfxx1Q4vmymrSyu7Wi/Mo+VDevxC1a8LNKOH3xBJmQ1/2j8syMwFkERK54G5CX4j8UKTPP9ov2CiFzIIj++9sH8gZj014SiNJ3nk08JHc35JRYkbq3FvkN16QMZBqIHLLmOspeRzvlcOYbRE/WoT0WP/NOh6GbkHvb6c+NwOshABkiCZCMncAIyBMZYMYFsdI/xJqxvDWm3NNakkJNn4Uw+T3jxBSXI5KBXk4lIUfylWYdpY+a1NLCD88XvpWwNkUHRov6aL6frduEPOMRdR9GYE0EREa3fcUeWDYuctTRq4U0y/rkX5FXWYAUSx9S5hrRmFuBHJGQS8KU/p11KxTOyC14m3BBtFjIaO3gX7t44Xxjl2k+WdEm5IEnyk2NwAsi0Ko59+ilxAjE0kWulkIz/k7Z4QiYUb7mkfm3PFIYg8+iZn3GY4NvDcwNC7kWzNOa6xdWvwl5ZFvd1ggYgRIBhS5DlNJiayjFbG41CxdyIuoPqYCv+xAjFUy4sFSxQuU7jIarqiG9nB/ICVjmWK9ZLRdJhgNG+oZkexfyEP0frb/WBy9LiBz3wE/Z6UzIPaj9uREwAi0EyqxuPSkhk2ktaq9Rx9XhnBLXx8rVR+NmtdyzuxwjJ0e07ep4JuSz2+D7jIARiIdgZTrMEXSwdrEUsTLpB2uaK1bOLt3aevkx4viHGdZGJlppKwz4qKxmMty1CXkYMt9gBIxAgUCtunMPJA60OKjD+yGGYGNl0h/c1DoMU9+zoxUVgs2cRuWH3npTn5uQUzC5kRH4MAhASlzys70jXLj8mg85x1zCPR/fcjOYI33i0cC9PZ9hPscKL3XveMg2Gr599ICgjTPHbo4OE/KH+TvzQj8QAiWpZpcuotQBGPdhvdLfiF+uwqvLMkeaRxn1hjWq3MJncgyLSJV1Tgd5jFdz+YvEG/XnKINkDwAZ48iTJXqL/FHP8jYhZx9VtzMC9yMww0VNZJdJiVmzNPHBhVCRDpAUOEzjGgmBLgmX/sosbOi6X9uliexc6QdrmoRF0YqWBwfeCkQl0p9CoGtRdUfEyx5wf/bFEMPUa8E3MUdH1x/chHz/H5lHMAI9BOLhmLwIeve0Po9128587Ua/hZSU1lNubSNZ4BR0AaHTF+5rtQi96AqXSd95lAAJP2csX6ztTP6OEd1b1VV4qZTpTmOC/Faie14+yBZE8R0R/c+akM8+9r7PCMxDIH6tnZE+EgLgemauZNYkSxVSblnYIwmFCAVXIAceDfGKbnBXX2qx3xgxWHupyD+aUPIreH+SUUzI8/6o3JMRuIKAKnjwh50JRrgy1iPvhdD4aWVww1LF5Y3Pa1WiS3JEsigzutGGFwBWMmPVpIGzwRv0zd7wksMN7669+eRnbUJ+5KPpsYyAESgRiC5vpcTC13wluI//fYSidHiRMxoyJE60HhcRcSNJkR61Y588P0zIj4Lb4xiB90BALmOj1Zpbq4+ad4x0I+kO3hJYu4yJhZqVIso0msw1HvJFKxepA/JG50YukjcJY3M4idTC75U+lP+/jdBNyO/xR+JVGIFZCEB+fEWHhGoSQixsqsxmrbEzFaklN5RJfnRYJqlDh3BY0a2LuSsPBto0/48EBIlyP1eUTvj8N3ZvD0iatnyOVY1ezaVK1jpQzL4UTu2HCfkUbL7JCLwtAlFCqOWIkEXbc4Mb8b+tBZ/ggSE9GLAh2qOqH9G3WNKErN6jzfqVbdt+ebeMkUeUWQ5NV94maMfMBx1an8dczb2HgfXx0w14MSH3oPTnRuBjISDCxULGk6HmppXxl86WPBohbnZCQR/KnaHdkQUrq7aWV6I1bw4VlQhfFjRt+R04lFdc24i7Xu8l5mxvH+tvzas1AikEjghXlmiXXHbvCUjtyP82S9yaeHRvi2QYgz1qZNwL4EgBszcajehrueuBM7LOV5q0LeSRbXBbI/B+CGBxEjEHwWZq1cVAiNHAEw7mdFAWD8awUOEi5tCLkIPEIOVYsVq7cpR3I1rQkcizOne582jUWNO9+XKftO1ScvmiMokJ+f3+wLwiIzCCgCp5ZANSYrkiCLmri+6TgZTQZaWllmHGZYKgkTVk2qrOIKQI8XOhCfMyypZqyowz0uaLg0IT8gh8bmsE3g8BLD1kCKxjEVVvlSNhx9F6ledCLXCjDItWjuSWt0dvjpnPJX88i5B5SX0W6GJCzmyb2xgBIzADgVbUXgxPlltZ9PaQxIAVjbyBVR7lFX6ncHFc1moHcbX5f0GIjUVKJkGewOMiI1OcwsuEfAo232QEjMBkBCBULO8YiIHlHv1+Yx5lpcdEckF2wKLm8BDXtdI/GiuUvqOGKz27FbINyfPtgQuCF+F3U2ju94y4xX0FpQl58lPl7oyAEZiGAN4M6LxICpCt8lVgKUPIkCY/39xHxO+YaD+IV5GEse5fTA6kGn3cWsvSFg8vIW0IHcs8U6YpWvxDdfZMyNOeHXdkBD4cAnhMQD5HARtXQImeEZE0VbpJ7mdKj6lDRuaErIClTFvleI6uenKDa0XeKaEQ1nGUKegX6xfrmRcE0X2SSBgXix3yxnuDCiG9wq/C59OaTMhXHhffawQ+LgJlvghI6+xV83uG7L61kx5Waat/2kF+kCJyRQxsUZh1K8ijVZOPPumnlq8j+k2z3nggGPNyYK0jb7Sy3EWsZK3/wIR89hHyfUbgYyPQsjxHUdHhXWmp9kK4j8aRhZw5fGMdaNCQuXJ3RNe+Uo+OpMscOERUsiLGVRIjJSHquQVGeeOHJuTRx8ftjcD6CEAyWHIQ0szqyQpbVgIeeSn0xkAeUEBI9I6IVnap5V6NrFNhUYj2iJjRoBmLS4EuIl1ZvyJa/sXqlUWvvMySKkTQ8vrI+nYzPla5LeT1/7Y8QyMwjECriOdwR8UNseRSVhulC2nBJUHF0lXSd2NUG//NPRlLF0Kjph4kWSYaOjpYw3sCf+SjA7uePBNlDObKnDPZ6b7YD1vIVx9R328E1kNAxKnq0b2vzdkVqJo0+uhIuSLlEsaSrt0XNWTJBVnrkrnHKECCTiBZfqcrygq1tfYCXVj3UdFUWci8FLh4AfByyIZWfzUnE3L2UXQ7I/BaCPRIZtXVjIZys45owWJpU1wV2YCrVgevtXZJPXhHZINL1JeCVhibl8Kpy4R8CjbfZASMQAcByRRDfrh7n1iaWPUZqULTkFUc81RAjljk2X5ameTiUluJgqY8ECbkKTC6EyNgBAIC0XMgk6bzTvCOUomW40apB428RuSxYkqrzen1mJBPQ+cbjYAROECAgzU8HahRN0vDHgU8emoo1LrXBwEfzLclWUQreuRgszfup89NyCmY3MgIGIEKAsrIhk7bc327A8Ce9VsmKGIOuO6hEZ99SShNKAebmaCPoXWbkIfgcmMjYAQCAr18ED2wakl/evfoc7m2HRUdxdrlcE85kGXdjnhwZOczpZ0JeQqM7sQIfEgEvr4HfJypxNxK+nMEpHyNsXBVhFRVoXsbwHi/HgqntqpX41PMdWRFY2WjL9Mme8n1L+a++OJeE3IWTrczAkaghsBZ97oYep1JEB99jZFIIGf5GteytZVzhWiRMLCa/10Id47tyjwVNQ+R2CbrQRIPOQ/d8EzI/iMzAkbgWQgo9JrwZiWex4KsXWUSeyLyIEcFmxCIQT+tS77KR8EyMRKRfjiQLOsMxlwWWUKmL7kBsr5mZRYT8rMeRY9rBD4OAljD6MUQZu0wLRvqja8xnhuQpPpR3gjlmTg6XMwkHdIY7E6tWrYCQFjLSLQi/fUOIe1l8XH+JrxSI/AUBKI00dKakR8gZTTZkSi3WEGExZGic5QknwJKa1BbyEtthydjBN4OgXh4d+bw7wiQMmS6JXe8DKgm5JfZKk/UCLwsAsgAaLxIDdkw5uxikQH4afkEx8PAEc03O/7UdibkqXC6MyPwcghgweKfy79kRZtNmCOAKN8yfsJUCZlxRSsaOURJ6K/2DdEjs6BlT7PMTchXt8X3G4HXRiDqsNmKynetOOaJKCt1XBnzahi3Dh2j18UtIdQm5Cvb7HuNwOsjoCTxrCRTUfnOFWN1QnS4tDVdwyZOoOv1sI8ll7WogePPLAs5Y80r5PowbNuEPHF33ZURMAJPRQCXOFJuZvJUZEKvtRg0cAiYl8TZ/BXKq3EYWWhCfurz48GNgBE4gYASyeMLLIL8+b1YKRp4Ji2mrF6Gz0T6nZjmZ7eYkK8i6PuNgBFoIkDEGpFy+P2W0Wx3w1bLSRyDSzJVQvB9JjIPQn+EPAImvdSeDgy5+8lx/0bgTRH49r6uXnIfIvSQEUZLIh3BpjJPtOHwD6s4Fkyd7e/8sC20ZPEwqD2QEXgrBGSlHrmSRZezmT7AMZ8EWdtE9reWVxrYPYWKczg5dJmQh+ByYyNgBAYQiIQ8M6xZVZ6xjLO+06qYjUV/dzJ96dPDfs8m5IGny02NgBEYRgDdFAJ9lE7bmmBMmxmt6rJ91hXuCIhf3SWUTFrRz/oxIQ8/X77BCBiBF0QA1zVkFizkVn09Wba1tJsjSz4tnZiQR2B2WyNgBF4ZAWQLrlZ4uA4qn3YoaEJ+5cfLczcC74mAktXfrfWW6CkABO13pldIepdMyGmo3NAIGIEHIBC13mfn1njAcj8fwoT8cMg9oBEwAgcISOulCR4UBHlcvZAqCKseKUrKmCOh2OUcGZOfTBj3V/eakK9ute83AkZgNgJ4ZqDzns0bEecTa/F9f09clJlvtNQVfJK5jzanczCbkLMQu50RMAKviAAh0r+0T3zEFxodm9BqrtGgFl4oRBMOW/km5Fd8xDxnI2AERhBABkE+GPGFxsr92n64N1LnT/M6M6ZzWYzsqtsaASNgBO5EwBbynei6byNgBFZCAPmCPBhYvEOHbRMXgeVNwqVqonoT8kSk3ZURMALLIhCrX2fSc961EPRsXgzVOZiQ74Ld/RoBI7ASAjE958jhXm8No65xSlSPnv1FcVQTcg9uf24EjMC7IHDKN/hg8XKNy1YpoSskC+ZRjQQ0Ib/Lo+Z1GAEj8GgEYpWSUde46lxNyI/eQo9nBIxAiYACKbA0W5nYHo0aUgQ1+44uLF38lWlHqs3Llwn5MoTuwAh8KAR6GdPOgBGDN6ZYmmcmEe5RNZSHZ30zIV/cOd9uBD4QAiJOLNnvTcyIBsnz9f/Hu0vaCKRYqMyLA7JZrmyq2derFzgyz1RbE3IKJjcyAkZg9+GFOLmuJnGfAejPbdv2jb2jqtfCyUGQUAibps+HpuE0IZ/cMd9mBD4gAliyuG1xkYltlkV6Fsq7avadnc/l+0zIlyF0B0bACDwRgUM3sifO69TQJuRTsPkmI2AEjMB8BEzI8zF1j0bACBiBUwiYkE/B5puMgBEwAvMRMCHPx9Q9GgEjYAROIWBCPgWbbzICRsAIzEfAhDwfU/doBIyAETiFgAn5FGy+yQgYASMwHwET8nxM3aMRMAJG4BQCJuRTsPkmI2AEjMB8BEzI8zF1j0bACHwcBEhsRDj5lNShJuSP8+B4pUbACMxHQKk66fly6lAT8vwNco9GwAh8HASwkEnXSaIlUpJeuv4/w4vHoCVTgwAAAAAASUVORK5CYII=' /> diff --git a/app/components/markdown/index.ts b/app/components/markdown/index.ts index 5bad76742..cf0209521 100644 --- a/app/components/markdown/index.ts +++ b/app/components/markdown/index.ts @@ -4,19 +4,16 @@ import {withDatabase} from '@nozbe/watermelondb/DatabaseProvider'; import withObservables from '@nozbe/with-observables'; import React from 'react'; -import {of as of$} from 'rxjs'; -import {switchMap} from 'rxjs/operators'; -import {observeConfig} from '@queries/servers/system'; +import {observeConfigBooleanValue} from '@queries/servers/system'; import Markdown from './markdown'; import type {WithDatabaseArgs} from '@typings/database/database'; const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { - const config = observeConfig(database); - const enableLatex = config.pipe(switchMap((c) => of$(c?.EnableLatex === 'true'))); - const enableInlineLatex = config.pipe(switchMap((c) => of$(c?.EnableInlineLatex === 'true'))); + const enableLatex = observeConfigBooleanValue(database, 'EnableLatex'); + const enableInlineLatex = observeConfigBooleanValue(database, 'EnableInlineLatex'); return { enableLatex, diff --git a/app/components/markdown/markdown_link/index.ts b/app/components/markdown/markdown_link/index.ts index c18ff2661..3c5747856 100644 --- a/app/components/markdown/markdown_link/index.ts +++ b/app/components/markdown/markdown_link/index.ts @@ -3,23 +3,16 @@ import {withDatabase} from '@nozbe/watermelondb/DatabaseProvider'; import withObservables from '@nozbe/with-observables'; -import {of as of$} from 'rxjs'; -import {switchMap} from 'rxjs/operators'; -import {observeConfig} from '@queries/servers/system'; +import {observeConfigValue} from '@queries/servers/system'; import MarkdownLink from './markdown_link'; import type {WithDatabaseArgs} from '@typings/database/database'; const enhance = withObservables([], ({database}: WithDatabaseArgs) => { - const config = observeConfig(database); - const experimentalNormalizeMarkdownLinks = config.pipe( - switchMap((cfg) => of$(cfg?.ExperimentalNormalizeMarkdownLinks)), - ); - const siteURL = config.pipe( - switchMap((cfg) => of$(cfg?.SiteURL)), - ); + const experimentalNormalizeMarkdownLinks = observeConfigValue(database, 'ExperimentalNormalizeMarkdownLinks'); + const siteURL = observeConfigValue(database, 'SiteURL'); return { experimentalNormalizeMarkdownLinks, diff --git a/app/components/no_results_with_term/index.tsx b/app/components/no_results_with_term/index.tsx index b5ee725e6..82f15986c 100644 --- a/app/components/no_results_with_term/index.tsx +++ b/app/components/no_results_with_term/index.tsx @@ -23,11 +23,13 @@ const getStyleFromTheme = makeStyleSheetFromTheme((theme: Theme) => { return { container: { flexGrow: 1, + paddingHorizontal: 32, height: '100%', alignItems: 'center' as const, justifyContent: 'center' as const, }, result: { + textAlign: 'center', color: theme.centerChannelColor, ...typography('Heading', 400, 'SemiBold'), }, diff --git a/app/components/post_draft/draft_handler/draft_handler.tsx b/app/components/post_draft/draft_handler/draft_handler.tsx index 342ae2132..1ac994c29 100644 --- a/app/components/post_draft/draft_handler/draft_handler.tsx +++ b/app/components/post_draft/draft_handler/draft_handler.tsx @@ -17,8 +17,8 @@ type Props = { cursorPosition: number; rootId?: string; files?: FileInfo[]; - maxFileSize: number; maxFileCount: number; + maxFileSize: number; canUploadFiles: boolean; updateCursorPosition: React.Dispatch>; updatePostInputTop: (top: number) => void; @@ -41,8 +41,8 @@ export default function DraftHandler(props: Props) { cursorPosition, rootId = '', files, - maxFileSize, maxFileCount, + maxFileSize, canUploadFiles, updateCursorPosition, updatePostInputTop, @@ -106,7 +106,7 @@ export default function DraftHandler(props: Props) { } newUploadError(null); - }, [intl, newUploadError, maxFileCount, maxFileSize, serverUrl, files?.length, channelId, rootId]); + }, [intl, newUploadError, maxFileSize, serverUrl, files?.length, channelId, rootId]); // This effect mainly handles keeping clean the uploadErrorHandlers, and // reinstantiate them on component mount and file retry. diff --git a/app/components/post_draft/draft_handler/index.ts b/app/components/post_draft/draft_handler/index.ts index 1dc3bdc8a..0f465286e 100644 --- a/app/components/post_draft/draft_handler/index.ts +++ b/app/components/post_draft/draft_handler/index.ts @@ -4,42 +4,23 @@ import {withDatabase} from '@nozbe/watermelondb/DatabaseProvider'; import withObservables from '@nozbe/with-observables'; import React from 'react'; -import {combineLatest, of as of$} from 'rxjs'; -import {switchMap} from 'rxjs/operators'; import {DEFAULT_SERVER_MAX_FILE_SIZE} from '@constants/post_draft'; -import {observeConfig, observeLicense} from '@queries/servers/system'; -import {isMinimumServerVersion} from '@utils/helpers'; +import {observeCanUploadFiles, observeConfigIntValue, observeMaxFileCount} from '@queries/servers/system'; import DraftHandler from './draft_handler'; import type {WithDatabaseArgs} from '@typings/database/database'; const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { - const config = observeConfig(database); - - const license = observeLicense(database); - - const canUploadFiles = combineLatest([config, license]).pipe( - switchMap(([c, l]) => of$( - c?.EnableFileAttachments === 'true' || - (l?.IsLicensed !== 'true' && l?.Compliance !== 'true' && c?.EnableMobileFileUpload === 'true'), - ), - ), - ); - - const maxFileSize = config.pipe( - switchMap((cfg) => of$(parseInt(cfg?.MaxFileSize || '0', 10) || DEFAULT_SERVER_MAX_FILE_SIZE)), - ); - - const maxFileCount = config.pipe( - switchMap((cfg) => of$(isMinimumServerVersion(cfg?.Version || '', 6, 0) ? 10 : 5)), - ); + const canUploadFiles = observeCanUploadFiles(database); + const maxFileSize = observeConfigIntValue(database, 'MaxFileSize', DEFAULT_SERVER_MAX_FILE_SIZE); + const maxFileCount = observeMaxFileCount(database); return { maxFileSize, - maxFileCount, canUploadFiles, + maxFileCount, }; }); diff --git a/app/components/post_draft/post_input/index.ts b/app/components/post_draft/post_input/index.ts index 8485f4809..e78482e6f 100644 --- a/app/components/post_draft/post_input/index.ts +++ b/app/components/post_draft/post_input/index.ts @@ -8,7 +8,7 @@ import {of as of$} from 'rxjs'; import {switchMap, distinctUntilChanged} from 'rxjs/operators'; import {observeChannel} from '@queries/servers/channel'; -import {observeConfig} from '@queries/servers/system'; +import {observeConfigBooleanValue, observeConfigIntValue} from '@queries/servers/system'; import PostInput from './post_input'; @@ -20,18 +20,9 @@ type OwnProps = { } const enhanced = withObservables(['channelId'], ({database, channelId}: WithDatabaseArgs & OwnProps) => { - const config = observeConfig(database); - const timeBetweenUserTypingUpdatesMilliseconds = config.pipe( - switchMap((cfg) => of$(parseInt(cfg?.TimeBetweenUserTypingUpdatesMilliseconds || '0', 10))), - ); - - const enableUserTypingMessage = config.pipe( - switchMap((cfg) => of$(cfg?.EnableUserTypingMessages === 'true')), - ); - - const maxNotificationsPerChannel = config.pipe( - switchMap((cfg) => of$(parseInt(cfg?.MaxNotificationsPerChannel || '0', 10))), - ); + const timeBetweenUserTypingUpdatesMilliseconds = observeConfigIntValue(database, 'TimeBetweenUserTypingUpdatesMilliseconds'); + const enableUserTypingMessage = observeConfigBooleanValue(database, 'EnableUserTypingMessages'); + const maxNotificationsPerChannel = observeConfigIntValue(database, 'MaxNotificationsPerChannel'); const channel = observeChannel(database, channelId); diff --git a/app/components/post_draft/quick_actions/index.ts b/app/components/post_draft/quick_actions/index.ts index e23f63773..b5c7111f0 100644 --- a/app/components/post_draft/quick_actions/index.ts +++ b/app/components/post_draft/quick_actions/index.ts @@ -4,31 +4,16 @@ import {withDatabase} from '@nozbe/watermelondb/DatabaseProvider'; import withObservables from '@nozbe/with-observables'; import React from 'react'; -import {combineLatest, of as of$} from 'rxjs'; -import {switchMap} from 'rxjs/operators'; -import {observeConfig, observeLicense} from '@queries/servers/system'; -import {isMinimumServerVersion} from '@utils/helpers'; +import {observeCanUploadFiles, observeMaxFileCount} from '@queries/servers/system'; import QuickActions from './quick_actions'; import type {WithDatabaseArgs} from '@typings/database/database'; const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { - const config = observeConfig(database); - const license = observeLicense(database); - - const canUploadFiles = combineLatest([config, license]).pipe( - switchMap(([c, l]) => of$( - c?.EnableFileAttachments === 'true' || - (l?.IsLicensed !== 'true' && l?.Compliance !== 'true' && c?.EnableMobileFileUpload === 'true'), - ), - ), - ); - - const maxFileCount = config.pipe( - switchMap((cfg) => of$(isMinimumServerVersion(cfg?.Version || '', 6, 0) ? 10 : 5)), - ); + const canUploadFiles = observeCanUploadFiles(database); + const maxFileCount = observeMaxFileCount(database); return { canUploadFiles, diff --git a/app/components/post_draft/send_handler/index.ts b/app/components/post_draft/send_handler/index.ts index bbb23e536..590ac7f7d 100644 --- a/app/components/post_draft/send_handler/index.ts +++ b/app/components/post_draft/send_handler/index.ts @@ -11,7 +11,7 @@ import {MAX_MESSAGE_LENGTH_FALLBACK} from '@constants/post_draft'; import {observeChannel, observeCurrentChannel} from '@queries/servers/channel'; import {queryAllCustomEmojis} from '@queries/servers/custom_emoji'; import {observePermissionForChannel} from '@queries/servers/role'; -import {observeConfig, observeCurrentUserId} from '@queries/servers/system'; +import {observeConfigBooleanValue, observeConfigIntValue, observeCurrentUserId} from '@queries/servers/system'; import {observeUser} from '@queries/servers/user'; import SendHandler from './send_handler'; @@ -42,16 +42,9 @@ const enhanced = withObservables([], (ownProps: WithDatabaseArgs & OwnProps) => switchMap((u) => of$(u?.status === General.OUT_OF_OFFICE)), ); - const config = observeConfig(database); - const enableConfirmNotificationsToChannel = config.pipe( - switchMap((cfg) => of$(Boolean(cfg?.EnableConfirmNotificationsToChannel === 'true'))), - ); - const isTimezoneEnabled = config.pipe( - switchMap((cfg) => of$(Boolean(cfg?.ExperimentalTimezone === 'true'))), - ); - const maxMessageLength = config.pipe( - switchMap((cfg) => of$(parseInt(cfg?.MaxPostSize || '0', 10) || MAX_MESSAGE_LENGTH_FALLBACK)), - ); + const enableConfirmNotificationsToChannel = observeConfigBooleanValue(database, 'EnableConfirmNotificationsToChannel'); + const isTimezoneEnabled = observeConfigBooleanValue(database, 'ExperimentalTimezone'); + const maxMessageLength = observeConfigIntValue(database, 'MaxPostSize', MAX_MESSAGE_LENGTH_FALLBACK); const useChannelMentions = combineLatest([channel, currentUser]).pipe( switchMap(([c, u]) => { diff --git a/app/components/post_list/more_messages/more_messages.tsx b/app/components/post_list/more_messages/more_messages.tsx index 20e4b7938..cd99bc1c2 100644 --- a/app/components/post_list/more_messages/more_messages.tsx +++ b/app/components/post_list/more_messages/more_messages.tsx @@ -2,8 +2,9 @@ // See LICENSE.txt for license information. import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; -import {ActivityIndicator, DeviceEventEmitter, Platform, View, ViewToken} from 'react-native'; +import {ActivityIndicator, DeviceEventEmitter, View, ViewToken} from 'react-native'; import Animated, {interpolate, useAnimatedStyle, useSharedValue, withSpring} from 'react-native-reanimated'; +import {useSafeAreaInsets} from 'react-native-safe-area-context'; import {resetMessageCount} from '@actions/local/channel'; import CompassIcon from '@components/compass_icon'; @@ -36,7 +37,7 @@ type Props = { } const HIDDEN_TOP = -60; -const SHOWN_TOP = Platform.select({ios: 50, default: 5}); +const SHOWN_TOP = 5; const MIN_INPUT = 0; const MAX_INPUT = 1; @@ -112,6 +113,7 @@ const MoreMessages = ({ }: Props) => { const serverUrl = useServerUrl(); const isTablet = useIsTablet(); + const insets = useSafeAreaInsets(); const pressed = useRef(false); const resetting = useRef(false); const initialScroll = useRef(false); @@ -120,9 +122,11 @@ const MoreMessages = ({ const underlayColor = useMemo(() => `hsl(${hexToHue(theme.buttonBg)}, 50%, 38%)`, [theme]); const top = useSharedValue(0); const adjustedShownTop = SHOWN_TOP + (currentCallBarVisible ? CURRENT_CALL_BAR_HEIGHT : 0) + (joinCallBannerVisible ? JOIN_CALL_BAR_HEIGHT : 0); - const shownTop = isTablet || (isCRTEnabled && rootId) ? 5 : adjustedShownTop; + const adjustTop = isTablet || (isCRTEnabled && rootId); + const shownTop = adjustTop ? SHOWN_TOP : adjustedShownTop; const BARS_FACTOR = Math.abs((1) / (HIDDEN_TOP - SHOWN_TOP)); const styles = getStyleSheet(theme); + const animatedStyle = useAnimatedStyle(() => ({ transform: [{ translateY: withSpring(interpolate( @@ -136,13 +140,13 @@ const MoreMessages = ({ [ HIDDEN_TOP, HIDDEN_TOP, - shownTop, - shownTop, + shownTop + (adjustTop ? 0 : insets.top), + shownTop + (adjustTop ? 0 : insets.top), ], Animated.Extrapolate.CLAMP, ), {damping: 15}), }], - }), [isTablet, shownTop]); + }), [shownTop, insets.top, adjustTop]); // Due to the implementation differences "unreadCount" gets updated for a channel on reset but not for a thread. // So we maintain a localUnreadCount to hide the indicator when the count is reset. diff --git a/app/components/post_list/post/body/content/opengraph/index.ts b/app/components/post_list/post/body/content/opengraph/index.ts index 061899af5..d11cafa46 100644 --- a/app/components/post_list/post/body/content/opengraph/index.ts +++ b/app/components/post_list/post/body/content/opengraph/index.ts @@ -8,7 +8,7 @@ import {of as of$, combineLatest} from 'rxjs'; import {Preferences} from '@constants'; import {getPreferenceAsBool} from '@helpers/api/preference'; import {queryPreferencesByCategoryAndName} from '@queries/servers/preference'; -import {observeConfig} from '@queries/servers/system'; +import {observeConfigBooleanValue} from '@queries/servers/system'; import Opengraph from './opengraph'; @@ -21,12 +21,12 @@ const enhance = withObservables( return {showLinkPreviews: of$(false)}; } - const config = observeConfig(database); + const linkPreviewsConfig = observeConfigBooleanValue(database, 'EnableLinkPreviews'); const linkPreviewPreference = queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.LINK_PREVIEW_DISPLAY). observeWithColumns(['value']); - const showLinkPreviews = combineLatest([config, linkPreviewPreference], (cfg, pref) => { + const showLinkPreviews = combineLatest([linkPreviewsConfig, linkPreviewPreference], (cfg, pref) => { const previewsEnabled = getPreferenceAsBool(pref, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.LINK_PREVIEW_DISPLAY, true); - return of$(previewsEnabled && cfg?.EnableLinkPreviews === 'true'); + return of$(previewsEnabled && cfg); }); return {showLinkPreviews}; diff --git a/app/components/progressive_image/index.tsx b/app/components/progressive_image/index.tsx index e96952ef7..a568148d5 100644 --- a/app/components/progressive_image/index.tsx +++ b/app/components/progressive_image/index.tsx @@ -157,9 +157,10 @@ const ProgressiveImage = ({ opacity={defaultOpacity} source={{uri: thumbnailUri}} style={[ - thumbnailUri ? StyleSheet.absoluteFill : {tintColor: theme.centerChannelColor}, + thumbnailUri ? StyleSheet.absoluteFill : undefined, imageStyle, ]} + tintColor={thumbnailUri ? undefined : theme.centerChannelColor} /> {image} diff --git a/app/components/progressive_image/thumbnail.tsx b/app/components/progressive_image/thumbnail.tsx index 1161006d6..6ace4800f 100644 --- a/app/components/progressive_image/thumbnail.tsx +++ b/app/components/progressive_image/thumbnail.tsx @@ -2,7 +2,7 @@ // See LICENSE.txt for license information. import React from 'react'; -import {StyleProp, StyleSheet} from 'react-native'; +import {ColorValue, StyleProp} from 'react-native'; import FastImage, {ImageStyle, Source} from 'react-native-fast-image'; import Animated, {SharedValue} from 'react-native-reanimated'; @@ -14,9 +14,10 @@ type ThumbnailProps = { opacity?: SharedValue; source?: Source; style: StyleProp; + tintColor?: ColorValue; } -const Thumbnail = ({onError, opacity, style, source}: ThumbnailProps) => { +const Thumbnail = ({onError, opacity, style, source, tintColor}: ThumbnailProps) => { if (source?.uri) { return ( { ); } - const tintColor = StyleSheet.flatten(style).tintColor; - return ( ; + textStyle?: StyleProp; value: string; }; diff --git a/app/components/settings/radio_setting/index.tsx b/app/components/settings/radio_setting/index.tsx index afacc404b..94ec377fe 100644 --- a/app/components/settings/radio_setting/index.tsx +++ b/app/components/settings/radio_setting/index.tsx @@ -58,7 +58,7 @@ function RadioSetting({ isSelected={value === entryValue} text={text} value={entryValue} - key={value} + key={entryValue} />, ); } diff --git a/app/components/system_header/index.tsx b/app/components/system_header/index.tsx index e9c98fb76..a33209e05 100644 --- a/app/components/system_header/index.tsx +++ b/app/components/system_header/index.tsx @@ -12,7 +12,7 @@ import FormattedTime from '@components/formatted_time'; import {Preferences} from '@constants'; import {getPreferenceAsBool} from '@helpers/api/preference'; import {queryPreferencesByCategoryAndName} from '@queries/servers/preference'; -import {observeConfig} from '@queries/servers/system'; +import {observeConfigBooleanValue} from '@queries/servers/system'; import {observeCurrentUser} from '@queries/servers/user'; import {makeStyleSheetFromTheme} from '@utils/theme'; import {typography} from '@utils/typography'; @@ -80,10 +80,9 @@ const SystemHeader = ({isMilitaryTime, isTimezoneEnabled, createAt, theme, user} }; const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { - const config = observeConfig(database); const preferences = queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS, 'use_military_time'). observeWithColumns(['value']); - const isTimezoneEnabled = config.pipe(map((cfg) => cfg?.ExperimentalTimezone === 'true')); + const isTimezoneEnabled = observeConfigBooleanValue(database, 'ExperimentalTimezone'); const isMilitaryTime = preferences.pipe( map((prefs) => getPreferenceAsBool(prefs, Preferences.CATEGORY_DISPLAY_SETTINGS, 'use_military_time', false)), ); diff --git a/app/components/toast/index.tsx b/app/components/toast/index.tsx index b9ac62d25..a05968b4f 100644 --- a/app/components/toast/index.tsx +++ b/app/components/toast/index.tsx @@ -5,9 +5,9 @@ import React, {useMemo} from 'react'; import {StyleProp, Text, TextStyle, useWindowDimensions, View, ViewStyle} from 'react-native'; import Animated, {AnimatedStyleProp} from 'react-native-reanimated'; -import {useIsTablet} from '@app/hooks/device'; import CompassIcon from '@components/compass_icon'; import {useTheme} from '@context/theme'; +import {useIsTablet} from '@hooks/device'; import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; import {typography} from '@utils/typography'; diff --git a/app/components/user_item/index.ts b/app/components/user_item/index.ts index 0b3d5285f..fa9f73386 100644 --- a/app/components/user_item/index.ts +++ b/app/components/user_item/index.ts @@ -3,23 +3,16 @@ import {withDatabase} from '@nozbe/watermelondb/DatabaseProvider'; import withObservables from '@nozbe/with-observables'; -import {of as of$} from 'rxjs'; -import {switchMap} from 'rxjs/operators'; -import {observeConfig, observeCurrentUserId} from '@queries/servers/system'; +import {observeConfigBooleanValue, observeCurrentUserId} from '@queries/servers/system'; import UserItem from './user_item'; import type {WithDatabaseArgs} from '@typings/database/database'; const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { - const config = observeConfig(database); - const isCustomStatusEnabled = config.pipe( - switchMap((cfg) => of$(cfg?.EnableCustomUserStatuses === 'true')), - ); - const showFullName = config.pipe( - switchMap((cfg) => of$(cfg?.ShowFullName === 'true')), - ); + const isCustomStatusEnabled = observeConfigBooleanValue(database, 'EnableCustomUserStatuses'); + const showFullName = observeConfigBooleanValue(database, 'ShowFullName'); const currentUserId = observeCurrentUserId(database); return { isCustomStatusEnabled, diff --git a/app/constants/database.ts b/app/constants/database.ts index 44946ab45..acf20ad51 100644 --- a/app/constants/database.ts +++ b/app/constants/database.ts @@ -15,6 +15,7 @@ export const MM_TABLES = { CHANNEL: 'Channel', CHANNEL_INFO: 'ChannelInfo', CHANNEL_MEMBERSHIP: 'ChannelMembership', + CONFIG: 'Config', CUSTOM_EMOJI: 'CustomEmoji', DRAFT: 'Draft', FILE: 'File', diff --git a/app/constants/events.ts b/app/constants/events.ts index 4a994433a..aece21528 100644 --- a/app/constants/events.ts +++ b/app/constants/events.ts @@ -31,5 +31,4 @@ export default keyMirror({ SEND_TO_POST_DRAFT: null, CRT_TOGGLED: null, JOIN_CALL_BAR_VISIBLE: null, - CURRENT_CALL_BAR_VISIBLE: null, }); diff --git a/app/constants/view.ts b/app/constants/view.ts index e4a3a9f98..c1ef40d8a 100644 --- a/app/constants/view.ts +++ b/app/constants/view.ts @@ -23,6 +23,7 @@ export const SEARCH_INPUT_MARGIN = 5; export const JOIN_CALL_BAR_HEIGHT = 38; export const CURRENT_CALL_BAR_HEIGHT = 74; +export const CALL_ERROR_BAR_HEIGHT = 62; export const QUICK_OPTIONS_HEIGHT = 270; diff --git a/app/database/manager/__mocks__/index.ts b/app/database/manager/__mocks__/index.ts index 03085aa68..3d1baf3ec 100644 --- a/app/database/manager/__mocks__/index.ts +++ b/app/database/manager/__mocks__/index.ts @@ -11,7 +11,7 @@ import {DatabaseType, MIGRATION_EVENTS, MM_TABLES} from '@constants/database'; import AppDatabaseMigrations from '@database/migration/app'; import ServerDatabaseMigrations from '@database/migration/server'; import {InfoModel, GlobalModel, ServersModel} from '@database/models/app'; -import {CategoryModel, CategoryChannelModel, ChannelModel, ChannelInfoModel, ChannelMembershipModel, CustomEmojiModel, DraftModel, FileModel, +import {CategoryModel, CategoryChannelModel, ChannelModel, ChannelInfoModel, ChannelMembershipModel, ConfigModel, CustomEmojiModel, DraftModel, FileModel, GroupModel, GroupChannelModel, GroupTeamModel, GroupMembershipModel, MyChannelModel, MyChannelSettingsModel, MyTeamModel, PostModel, PostsInChannelModel, PostsInThreadModel, PreferenceModel, ReactionModel, RoleModel, SystemModel, TeamModel, TeamChannelHistoryModel, TeamMembershipModel, TeamSearchHistoryModel, @@ -47,7 +47,7 @@ class DatabaseManager { constructor() { this.appModels = [InfoModel, GlobalModel, ServersModel]; this.serverModels = [ - CategoryModel, CategoryChannelModel, ChannelModel, ChannelInfoModel, ChannelMembershipModel, CustomEmojiModel, DraftModel, FileModel, + CategoryModel, CategoryChannelModel, ChannelModel, ChannelInfoModel, ChannelMembershipModel, ConfigModel, CustomEmojiModel, DraftModel, FileModel, GroupModel, GroupChannelModel, GroupTeamModel, GroupMembershipModel, MyChannelModel, MyChannelSettingsModel, MyTeamModel, PostModel, PostsInChannelModel, PostsInThreadModel, PreferenceModel, ReactionModel, RoleModel, SystemModel, TeamModel, TeamChannelHistoryModel, TeamMembershipModel, TeamSearchHistoryModel, diff --git a/app/database/manager/index.ts b/app/database/manager/index.ts index 7599a09f9..c1d2819c1 100644 --- a/app/database/manager/index.ts +++ b/app/database/manager/index.ts @@ -8,7 +8,7 @@ import {DeviceEventEmitter, Platform} from 'react-native'; import DeviceInfo from 'react-native-device-info'; import FileSystem from 'react-native-fs'; -import {DatabaseType, MIGRATION_EVENTS, MM_TABLES} from '@constants/database'; +import {DatabaseType, MIGRATION_EVENTS, MM_TABLES, SYSTEM_IDENTIFIERS} from '@constants/database'; import AppDatabaseMigrations from '@database/migration/app'; import ServerDatabaseMigrations from '@database/migration/server'; import {InfoModel, GlobalModel, ServersModel} from '@database/models/app'; @@ -16,13 +16,14 @@ import {CategoryModel, CategoryChannelModel, ChannelModel, ChannelInfoModel, Cha GroupModel, GroupChannelModel, GroupTeamModel, GroupMembershipModel, MyChannelModel, MyChannelSettingsModel, MyTeamModel, PostModel, PostsInChannelModel, PostsInThreadModel, PreferenceModel, ReactionModel, RoleModel, SystemModel, TeamModel, TeamChannelHistoryModel, TeamMembershipModel, TeamSearchHistoryModel, - ThreadModel, ThreadParticipantModel, ThreadInTeamModel, UserModel, + ThreadModel, ThreadParticipantModel, ThreadInTeamModel, UserModel, ConfigModel, } from '@database/models/server'; import AppDataOperator from '@database/operator/app_data_operator'; import ServerDataOperator from '@database/operator/server_data_operator'; import {schema as appSchema} from '@database/schema/app'; import {serverSchema} from '@database/schema/server'; import {queryActiveServer, queryServer, queryServerByIdentifier} from '@queries/app/servers'; +import {querySystemValue} from '@queries/servers/system'; import {deleteLegacyFileCache} from '@utils/file'; import {emptyFunction} from '@utils/general'; import {logDebug, logError} from '@utils/log'; @@ -45,7 +46,7 @@ class DatabaseManager { constructor() { this.appModels = [InfoModel, GlobalModel, ServersModel]; this.serverModels = [ - CategoryModel, CategoryChannelModel, ChannelModel, ChannelInfoModel, ChannelMembershipModel, CustomEmojiModel, DraftModel, FileModel, + CategoryModel, CategoryChannelModel, ChannelModel, ChannelInfoModel, ChannelMembershipModel, ConfigModel, CustomEmojiModel, DraftModel, FileModel, GroupModel, GroupChannelModel, GroupTeamModel, GroupMembershipModel, MyChannelModel, MyChannelSettingsModel, MyTeamModel, PostModel, PostsInChannelModel, PostsInThreadModel, PreferenceModel, ReactionModel, RoleModel, SystemModel, TeamModel, TeamChannelHistoryModel, TeamMembershipModel, TeamSearchHistoryModel, @@ -109,7 +110,7 @@ class DatabaseManager { return this.appDatabase; } catch (e) { - // TODO : report to sentry? Show something on the UI ? + logError('Unable to create the App Database!!', e); } return undefined; @@ -163,8 +164,6 @@ class DatabaseManager { return serverDatabase; } catch (e) { - // TODO : report to sentry? Show something on the UI ? - logError('Error initializing database', e); } } @@ -178,13 +177,38 @@ class DatabaseManager { * @returns {Promise} */ private initServerDatabase = async (serverUrl: string): Promise => { - await this.createServerDatabase({ + const serverDatabase = await this.createServerDatabase({ config: { dbName: serverUrl, dbType: DatabaseType.SERVER, serverUrl, }, }); + + // Migration for config + if (serverDatabase) { + const {database, operator} = serverDatabase; + const oldConfigList = await querySystemValue(database, SYSTEM_IDENTIFIERS.CONFIG).fetch(); + if (oldConfigList.length) { + const oldConfigModel = oldConfigList[0]; + const oldConfig = oldConfigModel.value as ClientConfig; + + const configs = []; + let k: keyof ClientConfig; + for (k in oldConfig) { + // Check to silence eslint (guard-for-in) + if (Object.prototype.hasOwnProperty.call(oldConfig, k)) { + configs.push({ + id: k, + value: oldConfig[k], + }); + } + } + const models = await operator.handleConfigs({configs, configsToDelete: [], prepareRecordsOnly: true}); + + operator.batchRecords([...models, oldConfigModel.prepareDestroyPermanently()]); + } + } }; /** @@ -223,7 +247,7 @@ class DatabaseManager { } } } catch (e) { - // TODO : report to sentry? Show something on the UI ? + logError('Error adding server to App database', e); } }; diff --git a/app/database/migration/server/index.ts b/app/database/migration/server/index.ts index 11f715c9d..3ff742d00 100644 --- a/app/database/migration/server/index.ts +++ b/app/database/migration/server/index.ts @@ -4,17 +4,36 @@ // NOTE : To implement migration, please follow this document // https://nozbe.github.io/WatermelonDB/Advanced/Migrations.html -import {schemaMigrations, addColumns} from '@nozbe/watermelondb/Schema/migrations'; +import {schemaMigrations, addColumns, createTable} from '@nozbe/watermelondb/Schema/migrations'; import {MM_TABLES} from '@constants/database'; +import {tableSchemaSpec as configSpec} from '@database/schema/server/table_schemas/config'; const {SERVER: { GROUP, MY_CHANNEL, + TEAM, THREAD, }} = MM_TABLES; export default schemaMigrations({migrations: [ + { + toVersion: 5, + steps: [ + createTable(configSpec), + ], + }, + { + toVersion: 4, + steps: [ + addColumns({ + table: TEAM, + columns: [ + {name: 'invite_id', type: 'string'}, + ], + }), + ], + }, { toVersion: 3, steps: [ diff --git a/app/database/models/server/config.ts b/app/database/models/server/config.ts new file mode 100644 index 000000000..dfa919659 --- /dev/null +++ b/app/database/models/server/config.ts @@ -0,0 +1,23 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import {Model} from '@nozbe/watermelondb'; +import {field} from '@nozbe/watermelondb/decorators'; + +import {MM_TABLES} from '@constants/database'; + +import type ConfigModelInterface from '@typings/database/models/servers/config'; + +const {CONFIG} = MM_TABLES.SERVER; + +/** + * The Config model is another set of key-value pair combination but this one + * will hold the server configuration. + */ +export default class ConfigModel extends Model implements ConfigModelInterface { + /** table (name) : Config */ + static table = CONFIG; + + /** value : The value for that config/information and whose key will be the id column */ + @field('value') value!: string; +} diff --git a/app/database/models/server/index.ts b/app/database/models/server/index.ts index a940587af..d371e48fb 100644 --- a/app/database/models/server/index.ts +++ b/app/database/models/server/index.ts @@ -6,6 +6,7 @@ export {default as CategoryChannelModel} from './category_channel'; export {default as ChannelInfoModel} from './channel_info'; export {default as ChannelMembershipModel} from './channel_membership'; export {default as ChannelModel} from './channel'; +export {default as ConfigModel} from './config'; export {default as CustomEmojiModel} from './custom_emoji'; export {default as DraftModel} from './draft'; export {default as FileModel} from './file'; diff --git a/app/database/models/server/team.ts b/app/database/models/server/team.ts index 9d4dabc72..11efd6b60 100644 --- a/app/database/models/server/team.ts +++ b/app/database/models/server/team.ts @@ -87,6 +87,9 @@ export default class TeamModel extends Model implements TeamModelInterface { /** allowed_domains : List of domains that can join this team */ @field('allowed_domains') allowedDomains!: string; + /** invite_id : The token id to use in invites to the team */ + @field('invite_id') inviteId!: string; + /** categories : All the categories associated with this team */ @children(CATEGORY) categories!: Query; diff --git a/app/database/operator/server_data_operator/handlers/index.test.ts b/app/database/operator/server_data_operator/handlers/index.test.ts index 3b1fccc9a..d7330dc87 100644 --- a/app/database/operator/server_data_operator/handlers/index.test.ts +++ b/app/database/operator/server_data_operator/handlers/index.test.ts @@ -3,6 +3,7 @@ import DatabaseManager from '@database/manager'; import { + transformConfigRecord, transformCustomEmojiRecord, transformRoleRecord, transformSystemRecord, @@ -95,6 +96,30 @@ describe('*** DataOperator: Base Handlers tests ***', () => { }); }); + it('=> HandleConfig: should write to the CONFIG table', async () => { + expect.assertions(1); + + const spyOnHandleRecords = jest.spyOn(operator, 'handleRecords'); + + const configs = [{id: 'config-1', value: 'config-1'}]; + const configsToDelete = [{id: 'toDelete', value: 'toDelete'}]; + + await operator.handleConfigs({ + configs, + configsToDelete, + prepareRecordsOnly: false, + }); + + expect(spyOnHandleRecords).toHaveBeenCalledWith({ + fieldName: 'id', + transformer: transformConfigRecord, + createOrUpdateRawValues: configs, + tableName: 'Config', + prepareRecordsOnly: false, + deleteRawValues: configsToDelete, + }); + }); + it('=> No table name: should not call execute if tableName is invalid', async () => { expect.assertions(3); diff --git a/app/database/operator/server_data_operator/handlers/index.ts b/app/database/operator/server_data_operator/handlers/index.ts index 9fc5e5b3d..b3a5a9356 100644 --- a/app/database/operator/server_data_operator/handlers/index.ts +++ b/app/database/operator/server_data_operator/handlers/index.ts @@ -4,6 +4,7 @@ import {MM_TABLES} from '@constants/database'; import BaseDataOperator from '@database/operator/base_data_operator'; import { + transformConfigRecord, transformCustomEmojiRecord, transformRoleRecord, transformSystemRecord, @@ -12,12 +13,12 @@ import {getUniqueRawsBy} from '@database/operator/utils/general'; import {logWarning} from '@utils/log'; import type {Model} from '@nozbe/watermelondb'; -import type {HandleCustomEmojiArgs, HandleRoleArgs, HandleSystemArgs, OperationArgs} from '@typings/database/database'; +import type {HandleConfigArgs, HandleCustomEmojiArgs, HandleRoleArgs, HandleSystemArgs, OperationArgs} from '@typings/database/database'; import type CustomEmojiModel from '@typings/database/models/servers/custom_emoji'; import type RoleModel from '@typings/database/models/servers/role'; import type SystemModel from '@typings/database/models/servers/system'; -const {SERVER: {CUSTOM_EMOJI, ROLE, SYSTEM}} = MM_TABLES; +const {SERVER: {CONFIG, CUSTOM_EMOJI, ROLE, SYSTEM}} = MM_TABLES; export default class ServerDataOperatorBase extends BaseDataOperator { handleRole = async ({roles, prepareRecordsOnly = true}: HandleRoleArgs) => { @@ -71,6 +72,24 @@ export default class ServerDataOperatorBase extends BaseDataOperator { }) as Promise; }; + handleConfigs = async ({configs, configsToDelete, prepareRecordsOnly = true}: HandleConfigArgs) => { + if (!configs?.length && !configsToDelete?.length) { + logWarning( + 'An empty or undefined "configs" and "configsToDelete" arrays has been passed to the handleConfigs', + ); + return []; + } + + return this.handleRecords({ + fieldName: 'id', + transformer: transformConfigRecord, + prepareRecordsOnly, + createOrUpdateRawValues: getUniqueRawsBy({raws: configs, key: 'id'}), + tableName: CONFIG, + deleteRawValues: configsToDelete, + }); + }; + /** * execute: Handles the Create/Update operations on an table. * @param {OperationArgs} execute diff --git a/app/database/operator/server_data_operator/transformers/general.ts b/app/database/operator/server_data_operator/transformers/general.ts index 1cefd4f1d..d15778076 100644 --- a/app/database/operator/server_data_operator/transformers/general.ts +++ b/app/database/operator/server_data_operator/transformers/general.ts @@ -5,6 +5,7 @@ import {MM_TABLES, OperationType} from '@constants/database'; import {prepareBaseRecord} from '@database/operator/server_data_operator/transformers/index'; import type {TransformerArgs} from '@typings/database/database'; +import type ConfigModel from '@typings/database/models/servers/config'; import type CustomEmojiModel from '@typings/database/models/servers/custom_emoji'; import type RoleModel from '@typings/database/models/servers/role'; import type SystemModel from '@typings/database/models/servers/system'; @@ -13,6 +14,7 @@ const { CUSTOM_EMOJI, ROLE, SYSTEM, + CONFIG, } = MM_TABLES.SERVER; /** @@ -94,3 +96,28 @@ export const transformSystemRecord = ({action, database, value}: TransformerArgs fieldsMapper, }) as Promise; }; + +/** + * transformConfigRecord: Prepares a record of the SERVER database 'Config' table for update or create actions. + * @param {TransformerArgs} operator + * @param {Database} operator.database + * @param {RecordPair} operator.value + * @returns {Promise} + */ +export const transformConfigRecord = ({action, database, value}: TransformerArgs): Promise => { + const raw = value.raw as IdValue; + + // If isCreateAction is true, we will use the id (API response) from the RAW, else we shall use the existing record id from the database + const fieldsMapper = (config: ConfigModel) => { + config._raw.id = raw?.id; + config.value = raw?.value as string; + }; + + return prepareBaseRecord({ + action, + database, + tableName: CONFIG, + value, + fieldsMapper, + }) as Promise; +}; diff --git a/app/database/operator/server_data_operator/transformers/team.ts b/app/database/operator/server_data_operator/transformers/team.ts index f9945558a..24a6be3ef 100644 --- a/app/database/operator/server_data_operator/transformers/team.ts +++ b/app/database/operator/server_data_operator/transformers/team.ts @@ -72,6 +72,7 @@ export const transformTeamRecord = ({action, database, value}: TransformerArgs): team.allowedDomains = raw.allowed_domains; team.isGroupConstrained = Boolean(raw.group_constrained); team.lastTeamIconUpdatedAt = raw.last_team_icon_update; + team.inviteId = raw.invite_id; }; return prepareBaseRecord({ diff --git a/app/database/schema/server/index.ts b/app/database/schema/server/index.ts index 48c9a8d5a..b6d0d06aa 100644 --- a/app/database/schema/server/index.ts +++ b/app/database/schema/server/index.ts @@ -9,6 +9,7 @@ import { ChannelInfoSchema, ChannelMembershipSchema, ChannelSchema, + ConfigSchema, CustomEmojiSchema, DraftSchema, FileSchema, @@ -37,13 +38,14 @@ import { } from './table_schemas'; export const serverSchema: AppSchema = appSchema({ - version: 3, + version: 5, tables: [ CategorySchema, CategoryChannelSchema, ChannelInfoSchema, ChannelMembershipSchema, ChannelSchema, + ConfigSchema, CustomEmojiSchema, DraftSchema, FileSchema, diff --git a/app/database/schema/server/table_schemas/config.ts b/app/database/schema/server/table_schemas/config.ts new file mode 100644 index 000000000..1ddc50153 --- /dev/null +++ b/app/database/schema/server/table_schemas/config.ts @@ -0,0 +1,19 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import {tableSchema} from '@nozbe/watermelondb'; + +import {MM_TABLES} from '@constants/database'; + +import type {TableSchemaSpec} from '@nozbe/watermelondb/Schema'; + +const {CONFIG} = MM_TABLES.SERVER; + +export const tableSchemaSpec: TableSchemaSpec = { + name: CONFIG, + columns: [ + {name: 'value', type: 'string'}, + ], +}; + +export default tableSchema(tableSchemaSpec); diff --git a/app/database/schema/server/table_schemas/index.ts b/app/database/schema/server/table_schemas/index.ts index fac977d29..a388e5151 100644 --- a/app/database/schema/server/table_schemas/index.ts +++ b/app/database/schema/server/table_schemas/index.ts @@ -31,3 +31,4 @@ export {default as ThreadSchema} from './thread'; export {default as ThreadParticipantSchema} from './thread_participant'; export {default as ThreadInTeamSchema} from './thread_in_team'; export {default as UserSchema} from './user'; +export {default as ConfigSchema} from './config'; diff --git a/app/database/schema/server/table_schemas/team.ts b/app/database/schema/server/table_schemas/team.ts index 17a127b00..26ad4bf98 100644 --- a/app/database/schema/server/table_schemas/team.ts +++ b/app/database/schema/server/table_schemas/team.ts @@ -19,5 +19,6 @@ export default tableSchema({ {name: 'name', type: 'string'}, {name: 'type', type: 'string'}, {name: 'update_at', type: 'number'}, + {name: 'invite_id', type: 'string'}, ], }); diff --git a/app/database/schema/server/test.ts b/app/database/schema/server/test.ts index 0b6fd6e29..efa7bb8f9 100644 --- a/app/database/schema/server/test.ts +++ b/app/database/schema/server/test.ts @@ -13,6 +13,7 @@ const { CHANNEL, CHANNEL_INFO, CHANNEL_MEMBERSHIP, + CONFIG, CUSTOM_EMOJI, DRAFT, FILE, @@ -43,7 +44,8 @@ const { describe('*** Test schema for SERVER database ***', () => { it('=> The SERVER SCHEMA should strictly match', () => { expect(serverSchema).toEqual({ - version: 3, + version: 5, + unsafeSql: undefined, tables: { [CATEGORY]: { name: CATEGORY, @@ -145,6 +147,16 @@ describe('*** Test schema for SERVER database ***', () => { {name: 'scheme_admin', type: 'boolean'}, ], }, + [CONFIG]: { + name: CONFIG, + unsafeSql: undefined, + columns: { + value: {name: 'value', type: 'string'}, + }, + columnArray: [ + {name: 'value', type: 'string'}, + ], + }, [CUSTOM_EMOJI]: { name: CUSTOM_EMOJI, unsafeSql: undefined, @@ -463,6 +475,7 @@ describe('*** Test schema for SERVER database ***', () => { name: {name: 'name', type: 'string'}, type: {name: 'type', type: 'string'}, update_at: {name: 'update_at', type: 'number'}, + invite_id: {name: 'invite_id', type: 'string'}, }, columnArray: [ {name: 'allowed_domains', type: 'string'}, @@ -474,6 +487,7 @@ describe('*** Test schema for SERVER database ***', () => { {name: 'name', type: 'string'}, {name: 'type', type: 'string'}, {name: 'update_at', type: 'number'}, + {name: 'invite_id', type: 'string'}, ], }, [TEAM_CHANNEL_HISTORY]: { diff --git a/app/helpers/api/preference.ts b/app/helpers/api/preference.ts index 59188d583..f55478f6e 100644 --- a/app/helpers/api/preference.ts +++ b/app/helpers/api/preference.ts @@ -29,13 +29,13 @@ export function getPreferenceAsInt(preferences: PreferenceType[] | PreferenceMod return defaultValue; } -export function getTeammateNameDisplaySetting(preferences: PreferenceType[] | PreferenceModel[], config?: ClientConfig, license?: ClientLicense) { - const useAdminTeammateNameDisplaySetting = license?.LockTeammateNameDisplay === 'true' && config?.LockTeammateNameDisplay === 'true'; +export function getTeammateNameDisplaySetting(preferences: PreferenceType[] | PreferenceModel[], lockTeammateNameDisplay?: string, teammateNameDisplay?: string, license?: ClientLicense) { + const useAdminTeammateNameDisplaySetting = license?.LockTeammateNameDisplay === 'true' && lockTeammateNameDisplay === 'true'; const preference = getPreferenceValue(preferences, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.NAME_NAME_FORMAT, '') as string; if (preference && !useAdminTeammateNameDisplaySetting) { return preference; - } else if (config?.TeammateNameDisplay) { - return config.TeammateNameDisplay; + } else if (teammateNameDisplay) { + return teammateNameDisplay; } return General.TEAMMATE_NAME_DISPLAY.SHOW_USERNAME; diff --git a/app/init/managed_app.ts b/app/init/managed_app.ts index 4ecaedc34..ffe6d6197 100644 --- a/app/init/managed_app.ts +++ b/app/init/managed_app.ts @@ -2,6 +2,7 @@ // See LICENSE.txt for license information. import Emm from '@mattermost/react-native-emm'; +import deepEqual from 'deep-equal'; import JailMonkey from 'jail-monkey'; import {Alert, AlertButton, AppState, AppStateStatus, Platform} from 'react-native'; @@ -18,9 +19,15 @@ class ManagedApp { previousAppState?: AppStateStatus; processConfigTimeout?: NodeJS.Timeout; vendor = 'Mattermost'; + cacheConfig?: ManagedConfig = undefined; constructor() { - Emm.addListener(this.processConfig); + Emm.addListener((cfg: ManagedConfig) => { + if (!deepEqual(cfg, this.cacheConfig)) { + this.processConfig(cfg); + this.cacheConfig = cfg; + } + }); this.setIOSAppGroupIdentifier(); @@ -28,7 +35,8 @@ class ManagedApp { } init() { - this.processConfig(Emm.getManagedConfig()); + this.cacheConfig = Emm.getManagedConfig(); + this.processConfig(this.cacheConfig); } setIOSAppGroupIdentifier = () => { @@ -72,9 +80,9 @@ class ManagedApp { return; } - const inAppPinCode = config!.inAppPinCode === 'true'; - if (inAppPinCode) { - this.handleDeviceAuthentication(); + this.inAppPinCode = config!.inAppPinCode === 'true'; + if (this.inAppPinCode && !this.performingAuthentication) { + await this.handleDeviceAuthentication(); } }; @@ -111,11 +119,14 @@ class ManagedApp { if (authExpired) { try { - await Emm.authenticate({ + const auth = await Emm.authenticate({ reason: translations[t('mobile.managed.secured_by')].replace('{vendor}', this.vendor), fallback: true, supressEnterPassword: true, }); + if (!auth) { + throw new Error('Authorization cancelled'); + } } catch (err) { Emm.exitApp(); return; @@ -133,7 +144,7 @@ class ManagedApp { const isActive = appState === 'active'; const isBackground = appState === 'background'; - if (isActive && this.previousAppState === 'background') { + if (isActive && this.previousAppState === 'background' && !this.performingAuthentication) { if (this.enabled && this.inAppPinCode) { const authExpired = this.backgroundSince > 0 && (Date.now() - this.backgroundSince) >= PROMPT_IN_APP_PIN_CODE_AFTER; await this.handleDeviceAuthentication(authExpired); diff --git a/app/managers/network_manager.ts b/app/managers/network_manager.ts index ae38185e7..7bd5cd04f 100644 --- a/app/managers/network_manager.ts +++ b/app/managers/network_manager.ts @@ -96,6 +96,7 @@ class NetworkManager { private buildConfig = async () => { const userAgent = UserAgent.getUserAgent(); + const managedConfig = ManagedApp.enabled ? Emm.getManagedConfig() : undefined; const headers: Record = { ...this.DEFAULT_CONFIG.headers, [ClientConstants.HEADER_USER_AGENT]: userAgent, @@ -103,20 +104,15 @@ class NetworkManager { const config = { ...this.DEFAULT_CONFIG, + sessionConfiguration: { + ...this.DEFAULT_CONFIG.sessionConfiguration, + timeoutIntervalForRequest: managedConfig?.timeout ? parseInt(managedConfig.timeout, 10) : this.DEFAULT_CONFIG.sessionConfiguration.timeoutIntervalForRequest, + timeoutIntervalForResource: managedConfig?.timeoutVPN ? parseInt(managedConfig.timeoutVPN, 10) : this.DEFAULT_CONFIG.sessionConfiguration.timeoutIntervalForResource, + waitsForConnectivity: managedConfig?.useVPN === 'true', + }, headers, }; - if (ManagedApp.enabled) { - const managedConfig = Emm.getManagedConfig(); - if (managedConfig?.useVPN === 'true') { - config.sessionConfiguration.waitsForConnectivity = true; - } - - if (managedConfig?.timeoutVPN) { - config.sessionConfiguration.timeoutIntervalForResource = parseInt(managedConfig.timeoutVPN, 10); - } - } - return config; }; diff --git a/app/managers/session_manager.ts b/app/managers/session_manager.ts index 335a1349c..a9779900e 100644 --- a/app/managers/session_manager.ts +++ b/app/managers/session_manager.ts @@ -6,10 +6,9 @@ import {AppState, AppStateStatus, DeviceEventEmitter, Platform} from 'react-nati import FastImage from 'react-native-fast-image'; import {cancelSessionNotification, logout, scheduleSessionNotification} from '@actions/remote/session'; -import {resetMomentLocale} from '@app/i18n'; -import {deleteFileCache, deleteFileCacheByDir} from '@app/utils/file'; import {Events, Launch} from '@constants'; import DatabaseManager from '@database/manager'; +import {resetMomentLocale} from '@i18n'; import {getAllServerCredentials, removeServerCredentials} from '@init/credentials'; import {relaunchApp} from '@init/launch'; import PushNotifications from '@init/push_notifications'; @@ -20,6 +19,7 @@ import {queryServerName} from '@queries/app/servers'; import {getCurrentUser} from '@queries/servers/user'; import {getThemeFromState, resetToOnboarding} from '@screens/navigation'; import EphemeralStore from '@store/ephemeral_store'; +import {deleteFileCache, deleteFileCacheByDir} from '@utils/file'; import {addNewServer} from '@utils/server'; import type {LaunchType} from '@typings/launch'; diff --git a/app/products/calls/actions/calls.test.ts b/app/products/calls/actions/calls.test.ts index 0222f9b1c..8d1d20406 100644 --- a/app/products/calls/actions/calls.test.ts +++ b/app/products/calls/actions/calls.test.ts @@ -11,6 +11,8 @@ import {getConnectionForTesting} from '@calls/actions/calls'; import * as Permissions from '@calls/actions/permissions'; import * as State from '@calls/state'; import { + myselfLeftCall, + newCurrentCall, setCallsConfig, setCallsState, setChannelsWithCalls, @@ -139,7 +141,10 @@ describe('Actions.Calls', () => { let response: { data?: string }; await act(async () => { - response = await CallsActions.joinCall('server1', 'channel-id'); + response = await CallsActions.joinCall('server1', 'channel-id', 'myUserId', true); + + // manually call newCurrentConnection because newConnection is mocked + newCurrentCall('server1', 'channel-id', 'myUserId'); userJoinedCall('server1', 'channel-id', 'myUserId'); }); @@ -163,7 +168,10 @@ describe('Actions.Calls', () => { let response: { data?: string }; await act(async () => { - response = await CallsActions.joinCall('server1', 'channel-id'); + response = await CallsActions.joinCall('server1', 'channel-id', 'myUserId', true); + + // manually call newCurrentConnection because newConnection is mocked + newCurrentCall('server1', 'channel-id', 'myUserId'); userJoinedCall('server1', 'channel-id', 'myUserId'); }); assert.equal(response!.data, 'channel-id'); @@ -174,6 +182,9 @@ describe('Actions.Calls', () => { await act(async () => { CallsActions.leaveCall(); + + // because disconnect is mocked + myselfLeftCall(); }); expect(disconnectMock).toBeCalled(); @@ -191,7 +202,10 @@ describe('Actions.Calls', () => { let response: { data?: string }; await act(async () => { - response = await CallsActions.joinCall('server1', 'channel-id'); + response = await CallsActions.joinCall('server1', 'channel-id', 'myUserId', true); + + // manually call newCurrentConnection because newConnection is mocked + newCurrentCall('server1', 'channel-id', 'myUserId'); userJoinedCall('server1', 'channel-id', 'myUserId'); }); assert.equal(response!.data, 'channel-id'); @@ -218,7 +232,10 @@ describe('Actions.Calls', () => { let response: { data?: string }; await act(async () => { - response = await CallsActions.joinCall('server1', 'channel-id'); + response = await CallsActions.joinCall('server1', 'channel-id', 'mysUserId', true); + + // manually call newCurrentConnection because newConnection is mocked + newCurrentCall('server1', 'channel-id', 'myUserId'); userJoinedCall('server1', 'channel-id', 'myUserId'); }); assert.equal(response!.data, 'channel-id'); diff --git a/app/products/calls/actions/calls.ts b/app/products/calls/actions/calls.ts index 29080d781..fb3dfc336 100644 --- a/app/products/calls/actions/calls.ts +++ b/app/products/calls/actions/calls.ts @@ -8,7 +8,6 @@ import {fetchUsersByIds} from '@actions/remote/user'; import { getCallsConfig, getCallsState, - myselfLeftCall, setCalls, setChannelEnabled, setConfig, @@ -16,6 +15,8 @@ import { setScreenShareURL, setSpeakerPhone, setCallForChannel, + newCurrentCall, + myselfLeftCall, } from '@calls/state'; import {General, Preferences} from '@constants'; import Calls from '@constants/calls'; @@ -24,7 +25,7 @@ import {getTeammateNameDisplaySetting} from '@helpers/api/preference'; import NetworkManager from '@managers/network_manager'; import {getChannelById} from '@queries/servers/channel'; import {queryPreferencesByCategoryAndName} from '@queries/servers/preference'; -import {getCommonSystemValues} from '@queries/servers/system'; +import {getConfig, getLicense} from '@queries/servers/system'; import {getCurrentUser, getUserById} from '@queries/servers/user'; import {displayUsername, getUserIdFromChannelName, isSystemAdmin} from '@utils/user'; @@ -218,7 +219,7 @@ export const enableChannelCalls = async (serverUrl: string, channelId: string, e return {}; }; -export const joinCall = async (serverUrl: string, channelId: string): Promise<{ error?: string | Error; data?: string }> => { +export const joinCall = async (serverUrl: string, channelId: string, userId: string, hasMicPermission: boolean): Promise<{ error?: string | Error; data?: string }> => { // Edge case: calls was disabled when app loaded, and then enabled, but app hasn't // reconnected its websocket since then (i.e., hasn't called batchLoadCalls yet) const {data: enabled} = await checkIsCallsPluginEnabled(serverUrl); @@ -231,9 +232,12 @@ export const joinCall = async (serverUrl: string, channelId: string): Promise<{ connection = null; } setSpeakerphoneOn(false); + newCurrentCall(serverUrl, channelId, userId); try { - connection = await newConnection(serverUrl, channelId, () => null, setScreenShareURL); + connection = await newConnection(serverUrl, channelId, () => { + myselfLeftCall(); + }, setScreenShareURL, hasMicPermission); } catch (error: unknown) { await forceLogoutIfNecessary(serverUrl, error as ClientError); return {error: error as Error}; @@ -255,7 +259,6 @@ export const leaveCall = () => { connection = null; } setSpeakerphoneOn(false); - myselfLeftCall(); }; export const muteMyself = () => { @@ -270,6 +273,12 @@ export const unmuteMyself = () => { } }; +export const initializeVoiceTrack = () => { + if (connection) { + connection.initializeVoiceTrack(); + } +}; + export const raiseHand = () => { if (connection) { connection.raiseHand(); @@ -337,9 +346,10 @@ export const getEndCallMessage = async (serverUrl: string, channelId: string, cu if (channel.type === General.DM_CHANNEL) { const otherID = getUserIdFromChannelName(currentUserId, channel.name); const otherUser = await getUserById(database, otherID); - const {config, license} = await getCommonSystemValues(database); + const license = await getLicense(database); + const config = await getConfig(database); const preferences = await queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.NAME_NAME_FORMAT).fetch(); - const displaySetting = getTeammateNameDisplaySetting(preferences, config, license); + const displaySetting = getTeammateNameDisplaySetting(preferences, config.LockTeammateNameDisplay, config.TeammateNameDisplay, license); msg = intl.formatMessage({ id: 'mobile.calls_end_msg_dm', defaultMessage: 'Are you sure you want to end the call with {displayName}?', diff --git a/app/products/calls/actions/permissions.ts b/app/products/calls/actions/permissions.ts index 9789d0071..a4ac3709d 100644 --- a/app/products/calls/actions/permissions.ts +++ b/app/products/calls/actions/permissions.ts @@ -1,28 +1,10 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {Alert, Platform} from 'react-native'; -import DeviceInfo from 'react-native-device-info'; +import {Platform} from 'react-native'; import Permissions from 'react-native-permissions'; -import type {IntlShape} from 'react-intl'; - -const getMicrophonePermissionDeniedMessage = (intl: IntlShape) => { - const {formatMessage} = intl; - const applicationName = DeviceInfo.getApplicationName(); - return { - title: formatMessage({ - id: 'mobile.microphone_permission_denied_title', - defaultMessage: '{applicationName} would like to access your microphone', - }, {applicationName}), - text: formatMessage({ - id: 'mobile.microphone_permission_denied_description', - defaultMessage: 'To participate in this call, open Settings to grant Mattermost access to your microphone.', - }), - }; -}; - -export const hasMicrophonePermission = async (intl: IntlShape) => { +export const hasMicrophonePermission = async () => { const targetSource = Platform.select({ ios: Permissions.PERMISSIONS.IOS.MICROPHONE, default: Permissions.PERMISSIONS.ANDROID.RECORD_AUDIO, @@ -36,32 +18,8 @@ export const hasMicrophonePermission = async (intl: IntlShape) => { return permissionRequest === Permissions.RESULTS.GRANTED; } - case Permissions.RESULTS.BLOCKED: { - const grantOption = { - text: intl.formatMessage({ - id: 'mobile.permission_denied_retry', - defaultMessage: 'Settings', - }), - onPress: () => Permissions.openSettings(), - }; - - const {title, text} = getMicrophonePermissionDeniedMessage(intl); - - Alert.alert( - title, - text, - [ - grantOption, - { - text: intl.formatMessage({ - id: 'mobile.permission_denied_dismiss', - defaultMessage: 'Don\'t Allow', - }), - }, - ], - ); + case Permissions.RESULTS.BLOCKED: return false; - } } return true; diff --git a/app/products/calls/alerts.ts b/app/products/calls/alerts.ts index 2d1ebd23c..986fc0af3 100644 --- a/app/products/calls/alerts.ts +++ b/app/products/calls/alerts.ts @@ -4,7 +4,11 @@ import {Alert} from 'react-native'; import {hasMicrophonePermission, joinCall, unmuteMyself} from '@calls/actions'; +import {setMicPermissionsGranted} from '@calls/state'; import {errorAlert} from '@calls/utils'; +import DatabaseManager from '@database/manager'; +import {getCurrentUser} from '@queries/servers/user'; +import {logError} from '@utils/log'; import type {IntlShape} from 'react-intl'; @@ -89,16 +93,24 @@ export const leaveAndJoinWithAlert = ( const doJoinCall = async (serverUrl: string, channelId: string, isDMorGM: boolean, intl: IntlShape) => { const {formatMessage} = intl; - const hasPermission = await hasMicrophonePermission(intl); - if (!hasPermission) { - errorAlert(formatMessage({ - id: 'mobile.calls_error_permissions', - defaultMessage: 'No permissions to microphone, unable to start call', - }), intl); + let user; + try { + const {database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); + + user = await getCurrentUser(database); + if (!user) { + // This shouldn't happen, so don't bother localizing and displaying an alert. + return; + } + } catch (error) { + logError('failed to getServerDatabaseAndOperator in doJoinCall', error); return; } - const res = await joinCall(serverUrl, channelId); + const hasPermission = await hasMicrophonePermission(); + setMicPermissionsGranted(hasPermission); + + const res = await joinCall(serverUrl, channelId, user.id, hasPermission); if (res.error) { const seeLogs = formatMessage({id: 'mobile.calls_see_logs', defaultMessage: 'See server logs'}); errorAlert(res.error?.toString() || seeLogs, intl); diff --git a/app/products/calls/components/channel_info_start/index.ts b/app/products/calls/components/channel_info_start/index.ts index 77fd3a2f9..62abb3001 100644 --- a/app/products/calls/components/channel_info_start/index.ts +++ b/app/products/calls/components/channel_info_start/index.ts @@ -34,13 +34,12 @@ const enhanced = withObservables([], ({serverUrl, channelId, database}: EnhanceP switchMap((calls) => of$(Boolean(calls[channelId]))), distinctUntilChanged(), ); - const currentCall = observeCurrentCall(); - const ccDatabase = currentCall.pipe( + const ccDatabase = observeCurrentCall().pipe( switchMap((call) => of$(call?.serverUrl || '')), distinctUntilChanged(), switchMap((url) => of$(DatabaseManager.serverDatabases[url]?.database)), ); - const ccChannelId = currentCall.pipe( + const ccChannelId = observeCurrentCall().pipe( switchMap((call) => of$(call?.channelId)), distinctUntilChanged(), ); @@ -58,7 +57,6 @@ const enhanced = withObservables([], ({serverUrl, channelId, database}: EnhanceP isACallInCurrentChannel, confirmToJoin, alreadyInCall, - currentCall, currentCallChannelName, limitRestrictedInfo: observeIsCallLimitRestricted(serverUrl, channelId), }; diff --git a/app/products/calls/components/current_call_bar/current_call_bar.tsx b/app/products/calls/components/current_call_bar/current_call_bar.tsx index 5c296f03f..3a6bb1f78 100644 --- a/app/products/calls/components/current_call_bar/current_call_bar.tsx +++ b/app/products/calls/components/current_call_bar/current_call_bar.tsx @@ -1,16 +1,19 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import React, {useCallback, useEffect, useState} from 'react'; +import React, {useCallback} from 'react'; import {useIntl} from 'react-intl'; -import {View, Text, TouchableOpacity, Pressable, Platform, DeviceEventEmitter} from 'react-native'; +import {View, Text, TouchableOpacity, Pressable, Platform} from 'react-native'; import {Options} from 'react-native-navigation'; import {muteMyself, unmuteMyself} from '@calls/actions'; import CallAvatar from '@calls/components/call_avatar'; -import {CurrentCall, VoiceEventData} from '@calls/types/calls'; +import PermissionErrorBar from '@calls/components/permission_error_bar'; +import UnavailableIconWrapper from '@calls/components/unavailable_icon_wrapper'; +import {usePermissionsChecker} from '@calls/hooks'; +import {CurrentCall} from '@calls/types/calls'; import CompassIcon from '@components/compass_icon'; -import {Events, Screens, WebsocketEvents} from '@constants'; +import {Screens} from '@constants'; import {CURRENT_CALL_BAR_HEIGHT} from '@constants/view'; import {useTheme} from '@context/theme'; import {dismissAllModalsAndPopToScreen} from '@screens/navigation'; @@ -24,6 +27,7 @@ type Props = { currentCall: CurrentCall | null; userModelsDict: Dictionary; teammateNameDisplay: string; + micPermissionsGranted: boolean; threadScreen?: boolean; } @@ -57,18 +61,18 @@ const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => { color: theme.sidebarText, opacity: 0.64, }, - micIcon: { - color: theme.sidebarText, + micIconContainer: { width: 42, height: 42, - textAlign: 'center', - textAlignVertical: 'center', justifyContent: 'center', - backgroundColor: '#3DB887', + alignItems: 'center', + backgroundColor: theme.onlineIndicator, borderRadius: 4, margin: 4, padding: 9, - overflow: 'hidden', + }, + micIcon: { + color: theme.sidebarText, }, muted: { backgroundColor: 'transparent', @@ -86,49 +90,13 @@ const CurrentCallBar = ({ currentCall, userModelsDict, teammateNameDisplay, + micPermissionsGranted, threadScreen, }: Props) => { const theme = useTheme(); + const style = getStyleSheet(theme); const {formatMessage} = useIntl(); - const [speaker, setSpeaker] = useState(null); - const [talkingMessage, setTalkingMessage] = useState(''); - - const isCurrentCall = Boolean(currentCall); - const handleVoiceOn = (data: VoiceEventData) => { - if (data.channelId === currentCall?.channelId) { - setSpeaker(data.userId); - } - }; - const handleVoiceOff = (data: VoiceEventData) => { - if (data.channelId === currentCall?.channelId && ((speaker === data.userId) || !speaker)) { - setSpeaker(null); - } - }; - - useEffect(() => { - const onVoiceOn = DeviceEventEmitter.addListener(WebsocketEvents.CALLS_USER_VOICE_ON, handleVoiceOn); - const onVoiceOff = DeviceEventEmitter.addListener(WebsocketEvents.CALLS_USER_VOICE_OFF, handleVoiceOff); - DeviceEventEmitter.emit(Events.CURRENT_CALL_BAR_VISIBLE, isCurrentCall); - return () => { - DeviceEventEmitter.emit(Events.CURRENT_CALL_BAR_VISIBLE, Boolean(false)); - onVoiceOn.remove(); - onVoiceOff.remove(); - }; - }, [isCurrentCall]); - - useEffect(() => { - if (speaker) { - setTalkingMessage(formatMessage({ - id: 'mobile.calls_name_is_talking', - defaultMessage: '{name} is talking', - }, {name: displayUsername(userModelsDict[speaker], teammateNameDisplay)})); - } else { - setTalkingMessage(formatMessage({ - id: 'mobile.calls_noone_talking', - defaultMessage: 'No one is talking', - })); - } - }, [speaker, setTalkingMessage]); + usePermissionsChecker(micPermissionsGranted); const goToCallScreen = useCallback(async () => { const options: Options = { @@ -150,6 +118,21 @@ const CurrentCallBar = ({ const myParticipant = currentCall?.participants[currentCall.myUserId]; + // Since we can only see one user talking, it doesn't really matter who we show here (e.g., we can't + // tell who is speaking louder). + const talkingUsers = Object.keys(currentCall?.voiceOn || {}); + const speaker = talkingUsers.length > 0 ? talkingUsers[0] : ''; + let talkingMessage = formatMessage({ + id: 'mobile.calls_noone_talking', + defaultMessage: 'No one is talking', + }); + if (speaker) { + talkingMessage = formatMessage({ + id: 'mobile.calls_name_is_talking', + defaultMessage: '{name} is talking', + }, {name: displayUsername(userModelsDict[speaker], teammateNameDisplay)}); + } + const muteUnmute = () => { if (myParticipant?.muted) { unmuteMyself(); @@ -158,42 +141,48 @@ const CurrentCallBar = ({ } }; - const style = getStyleSheet(theme); + const micPermissionsError = !micPermissionsGranted && !currentCall?.micPermissionsErrorDismissed; return ( - - - - - {talkingMessage} - {`~${displayName}`} + <> + + + + + {talkingMessage} + {`~${displayName}`} + + + + + + + - - - - - - - + {micPermissionsError && } + ); }; + export default CurrentCallBar; diff --git a/app/products/calls/components/current_call_bar/index.ts b/app/products/calls/components/current_call_bar/index.ts index 1ddce1122..925110f5a 100644 --- a/app/products/calls/components/current_call_bar/index.ts +++ b/app/products/calls/components/current_call_bar/index.ts @@ -5,7 +5,7 @@ import withObservables from '@nozbe/with-observables'; import {combineLatest, of as of$} from 'rxjs'; import {distinctUntilChanged, switchMap} from 'rxjs/operators'; -import {observeCurrentCall} from '@calls/state'; +import {observeCurrentCall, observeGlobalCallsState} from '@calls/state'; import {idsAreEqual} from '@calls/utils'; import DatabaseManager from '@database/manager'; import {observeChannel} from '@queries/servers/channel'; @@ -45,12 +45,17 @@ const enhanced = withObservables([], () => { const teammateNameDisplay = database.pipe( switchMap((db) => (db ? observeTeammateNameDisplay(db) : of$(''))), ); + const micPermissionsGranted = observeGlobalCallsState().pipe( + switchMap((gs) => of$(gs.micPermissionsGranted)), + distinctUntilChanged(), + ); return { displayName, currentCall, userModelsDict, teammateNameDisplay, + micPermissionsGranted, }; }); diff --git a/app/products/calls/components/permission_error_bar.tsx b/app/products/calls/components/permission_error_bar.tsx new file mode 100644 index 000000000..66a0ba567 --- /dev/null +++ b/app/products/calls/components/permission_error_bar.tsx @@ -0,0 +1,104 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import React from 'react'; +import {Pressable, View} from 'react-native'; +import Permissions from 'react-native-permissions'; + +import {setMicPermissionsErrorDismissed} from '@calls/state'; +import CompassIcon from '@components/compass_icon'; +import FormattedText from '@components/formatted_text'; +import {CALL_ERROR_BAR_HEIGHT} from '@constants/view'; +import {useTheme} from '@context/theme'; +import {makeStyleSheetFromTheme} from '@utils/theme'; +import {typography} from '@utils/typography'; + +const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => ( + { + pressable: { + zIndex: 10, + }, + errorWrapper: { + padding: 10, + paddingTop: 0, + }, + errorBar: { + flexDirection: 'row', + backgroundColor: theme.dndIndicator, + minHeight: CALL_ERROR_BAR_HEIGHT, + width: '100%', + borderRadius: 5, + padding: 10, + alignItems: 'center', + }, + errorText: { + flex: 1, + ...typography('Body', 100, 'SemiBold'), + color: theme.buttonColor, + }, + errorIconContainer: { + width: 42, + height: 42, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 4, + margin: 0, + padding: 9, + }, + pressedErrorIconContainer: { + backgroundColor: theme.buttonColor, + }, + errorIcon: { + color: theme.buttonColor, + fontSize: 18, + }, + pressedErrorIcon: { + color: theme.dndIndicator, + }, + paddingRight: { + paddingRight: 9, + }, + } +)); + +const PermissionErrorBar = () => { + const theme = useTheme(); + const style = getStyleSheet(theme); + + return ( + + + + + [ + style.pressable, + style.errorIconContainer, + pressed && style.pressedErrorIconContainer, + ]} + > + {({pressed}) => ( + + )} + + + + ); +}; + +export default PermissionErrorBar; diff --git a/app/products/calls/components/unavailable_icon_wrapper.tsx b/app/products/calls/components/unavailable_icon_wrapper.tsx new file mode 100644 index 000000000..077dcf03f --- /dev/null +++ b/app/products/calls/components/unavailable_icon_wrapper.tsx @@ -0,0 +1,68 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import React from 'react'; +import {StyleProp, TextStyle, View} from 'react-native'; + +import CompassIcon from '@components/compass_icon'; +import {useTheme} from '@context/theme'; +import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; + +type Props = { + name: string; + size: number; + style: StyleProp; + unavailable: boolean; +} + +const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => { + return { + container: { + position: 'relative', + }, + unavailable: { + color: changeOpacity(theme.sidebarText, 0.32), + }, + errorContainer: { + position: 'absolute', + right: 0, + backgroundColor: '#3F4350', + justifyContent: 'center', + alignItems: 'center', + borderWidth: 0.5, + borderColor: '#3F4350', + }, + errorIcon: { + color: theme.dndIndicator, + }, + }; +}); + +const UnavailableIconWrapper = ({name, size, style: providedStyle, unavailable}: Props) => { + const theme = useTheme(); + const style = getStyleSheet(theme); + const errorIconSize = size / 2; + + return ( + + + {unavailable && + + + + } + + ); +}; + +export default UnavailableIconWrapper; diff --git a/app/products/calls/connection/connection.ts b/app/products/calls/connection/connection.ts index 692a1809a..f0a71f04a 100644 --- a/app/products/calls/connection/connection.ts +++ b/app/products/calls/connection/connection.ts @@ -25,7 +25,13 @@ import type {CallsConnection} from '@calls/types/calls'; const peerConnectTimeout = 5000; -export async function newConnection(serverUrl: string, channelID: string, closeCb: () => void, setScreenShareURL: (url: string) => void) { +export async function newConnection( + serverUrl: string, + channelID: string, + closeCb: () => void, + setScreenShareURL: (url: string) => void, + hasMicPermission: boolean, +) { let peer: Peer | null = null; let stream: MediaStream; let voiceTrackAdded = false; @@ -34,21 +40,26 @@ export async function newConnection(serverUrl: string, channelID: string, closeC let onCallEnd: EmitterSubscription | null = null; const streams: MediaStream[] = []; - try { - stream = await mediaDevices.getUserMedia({ - video: false, - audio: true, - }) as MediaStream; - voiceTrack = stream.getAudioTracks()[0]; - voiceTrack.enabled = false; - streams.push(stream); - } catch (err) { - logError('Unable to get media device:', err); - } + const initializeVoiceTrack = async () => { + if (voiceTrack) { + return; + } + + try { + stream = await mediaDevices.getUserMedia({ + video: false, + audio: true, + }) as MediaStream; + voiceTrack = stream.getAudioTracks()[0]; + voiceTrack.enabled = false; + streams.push(stream); + } catch (err) { + logError('Unable to get media device:', err); + } + }; // getClient can throw an error, which will be handled by the caller. const client = NetworkManager.getClient(serverUrl); - const credentials = await getServerCredentials(serverUrl); const ws = new WebSocketClient(serverUrl, client.getWebSocketUrl(), credentials?.token); @@ -56,6 +67,10 @@ export async function newConnection(serverUrl: string, channelID: string, closeC // Throws an error, to be caught by caller. await ws.initialize(); + if (hasMicPermission) { + initializeVoiceTrack(); + } + const disconnect = () => { if (isClosed) { return; @@ -182,6 +197,7 @@ export async function newConnection(serverUrl: string, channelID: string, closeC InCallManager.start({media: 'audio'}); InCallManager.stopProximitySensor(); + peer = new Peer(null, iceConfigs); peer.on('signal', (data: any) => { if (data.type === 'offer' || data.type === 'answer') { @@ -265,6 +281,7 @@ export async function newConnection(serverUrl: string, channelID: string, closeC waitForPeerConnection, raiseHand, unraiseHand, + initializeVoiceTrack, }; return connection; diff --git a/app/products/calls/connection/websocket_client.ts b/app/products/calls/connection/websocket_client.ts index f632348f1..e72fc847c 100644 --- a/app/products/calls/connection/websocket_client.ts +++ b/app/products/calls/connection/websocket_client.ts @@ -7,8 +7,8 @@ import {encode} from '@msgpack/msgpack/dist'; import Calls from '@constants/calls'; import DatabaseManager from '@database/manager'; -import {getCommonSystemValues} from '@queries/servers/system'; -import {logError} from '@utils/log'; +import {getConfigValue} from '@queries/servers/system'; +import {logError, logDebug} from '@utils/log'; const wsMinReconnectRetryTimeMs = 1000; // 1 second const wsReconnectionTimeout = 30000; // 30 seconds @@ -42,8 +42,8 @@ export class WebSocketClient extends EventEmitter { return; } - const system = await getCommonSystemValues(database); - const connectionUrl = (system.config.WebsocketURL || this.serverUrl) + this.wsPath; + const websocketURL = await getConfigValue(database, 'WebsocketURL'); + const connectionUrl = (websocketURL || this.serverUrl) + this.wsPath; this.ws = new WebSocket(`${connectionUrl}?connection_id=${this.connID}&sequence_number=${this.serverSeqNo}`, [], {headers: {authorization: `Bearer ${this.authToken}`}}); @@ -88,9 +88,11 @@ export class WebSocketClient extends EventEmitter { if (msg.event === 'hello') { if (msg.data.connection_id !== this.connID) { + logDebug('calls: ws new conn id from server'); this.connID = msg.data.connection_id; this.serverSeqNo = 0; if (this.originalConnID === '') { + logDebug('calls: ws setting original conn id'); this.originalConnID = this.connID; } } @@ -99,6 +101,7 @@ export class WebSocketClient extends EventEmitter { } return; } else if (!this.connID) { + logDebug('calls: ws message received while waiting for hello'); return; } diff --git a/app/products/calls/connection/websocket_event_handlers.ts b/app/products/calls/connection/websocket_event_handlers.ts index eef5ff4f3..a74d57d08 100644 --- a/app/products/calls/connection/websocket_event_handlers.ts +++ b/app/products/calls/connection/websocket_event_handlers.ts @@ -12,6 +12,7 @@ import { setChannelEnabled, setRaisedHand, setUserMuted, + setUserVoiceOn, userJoinedCall, userLeftCall, } from '@calls/state'; @@ -38,17 +39,11 @@ export const handleCallUserUnmuted = (serverUrl: string, msg: WebSocketMessage) }; export const handleCallUserVoiceOn = (msg: WebSocketMessage) => { - DeviceEventEmitter.emit(WebsocketEvents.CALLS_USER_VOICE_ON, { - channelId: msg.broadcast.channel_id, - userId: msg.data.userID, - }); + setUserVoiceOn(msg.broadcast.channel_id, msg.data.userID, true); }; export const handleCallUserVoiceOff = (msg: WebSocketMessage) => { - DeviceEventEmitter.emit(WebsocketEvents.CALLS_USER_VOICE_OFF, { - channelId: msg.broadcast.channel_id, - userId: msg.data.userID, - }); + setUserVoiceOn(msg.broadcast.channel_id, msg.data.userID, false); }; export const handleCallStarted = (serverUrl: string, msg: WebSocketMessage) => { diff --git a/app/products/calls/hooks.ts b/app/products/calls/hooks.ts index 99f6e9749..cc2b88f7f 100644 --- a/app/products/calls/hooks.ts +++ b/app/products/calls/hooks.ts @@ -3,14 +3,18 @@ // Check if calls is enabled. If it is, then run fn; if it isn't, show an alert and set // msgPostfix to ' (Not Available)'. -import {useCallback, useState} from 'react'; +import {useCallback, useEffect, useState} from 'react'; import {useIntl} from 'react-intl'; -import {Alert} from 'react-native'; +import {Alert, Platform} from 'react-native'; +import Permissions from 'react-native-permissions'; +import {initializeVoiceTrack} from '@calls/actions/calls'; +import {setMicPermissionsGranted} from '@calls/state'; import {errorAlert} from '@calls/utils'; import {Client} from '@client/rest'; import ClientError from '@client/rest/error'; import {useServerUrl} from '@context/server'; +import {useAppState} from '@hooks/device'; import NetworkManager from '@managers/network_manager'; export const useTryCallsFunction = (fn: () => void) => { @@ -71,3 +75,27 @@ export const useTryCallsFunction = (fn: () => void) => { return [tryFn, msgPostfix] as [() => Promise, string]; }; + +const micPermission = Platform.select({ + ios: Permissions.PERMISSIONS.IOS.MICROPHONE, + default: Permissions.PERMISSIONS.ANDROID.RECORD_AUDIO, +}); + +export const usePermissionsChecker = (micPermissionsGranted: boolean) => { + const appState = useAppState(); + + useEffect(() => { + const asyncFn = async () => { + if (appState === 'active') { + const hasPermission = (await Permissions.check(micPermission)) === Permissions.RESULTS.GRANTED; + if (hasPermission) { + initializeVoiceTrack(); + setMicPermissionsGranted(hasPermission); + } + } + }; + if (!micPermissionsGranted) { + asyncFn(); + } + }, [appState]); +}; diff --git a/app/products/calls/screens/call_screen/call_screen.tsx b/app/products/calls/screens/call_screen/call_screen.tsx index 3f983b189..b89fce9a6 100644 --- a/app/products/calls/screens/call_screen/call_screen.tsx +++ b/app/products/calls/screens/call_screen/call_screen.tsx @@ -28,9 +28,12 @@ import { } from '@calls/actions'; import CallAvatar from '@calls/components/call_avatar'; import CallDuration from '@calls/components/call_duration'; +import PermissionErrorBar from '@calls/components/permission_error_bar'; +import UnavailableIconWrapper from '@calls/components/unavailable_icon_wrapper'; +import {usePermissionsChecker} from '@calls/hooks'; import RaisedHandIcon from '@calls/icons/raised_hand_icon'; import UnraisedHandIcon from '@calls/icons/unraised_hand_icon'; -import {CallParticipant, CurrentCall, VoiceEventData} from '@calls/types/calls'; +import {CallParticipant, CurrentCall} from '@calls/types/calls'; import {sortParticipants} from '@calls/utils'; import CompassIcon from '@components/compass_icon'; import FormattedText from '@components/formatted_text'; @@ -48,13 +51,14 @@ import { import NavigationStore from '@store/navigation_store'; import {bottomSheetSnapPoint} from '@utils/helpers'; import {mergeNavigationOptions} from '@utils/navigation'; -import {makeStyleSheetFromTheme} from '@utils/theme'; +import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; import {displayUsername} from '@utils/user'; export type Props = { componentId: string; currentCall: CurrentCall | null; participantsDict: Dictionary; + micPermissionsGranted: boolean; teammateNameDisplay: string; fromThreadScreen?: boolean; } @@ -252,20 +256,31 @@ const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => ({ color: 'white', margin: 3, }, + unavailableText: { + color: changeOpacity(theme.sidebarText, 0.32), + }, })); -const CallScreen = ({componentId, currentCall, participantsDict, teammateNameDisplay, fromThreadScreen}: Props) => { +const CallScreen = ({ + componentId, + currentCall, + participantsDict, + micPermissionsGranted, + teammateNameDisplay, + fromThreadScreen, +}: Props) => { const intl = useIntl(); const theme = useTheme(); const insets = useSafeAreaInsets(); const {width, height} = useWindowDimensions(); + usePermissionsChecker(micPermissionsGranted); const [showControlsInLandscape, setShowControlsInLandscape] = useState(false); - const [speakers, setSpeakers] = useState>({}); const style = getStyleSheet(theme); const isLandscape = width > height; const showControls = !isLandscape || showControlsInLandscape; const myParticipant = currentCall?.participants[currentCall.myUserId]; + const micPermissionsError = !micPermissionsGranted && !currentCall?.micPermissionsErrorDismissed; const chatThreadTitle = intl.formatMessage({id: 'mobile.calls_chat_thread', defaultMessage: 'Chat thread'}); useEffect(() => { @@ -279,30 +294,6 @@ const CallScreen = ({componentId, currentCall, participantsDict, teammateNameDis }); }, []); - useEffect(() => { - const handleVoiceOn = (data: VoiceEventData) => { - if (data.channelId === currentCall?.channelId) { - setSpeakers((prev) => ({...prev, [data.userId]: true})); - } - }; - const handleVoiceOff = (data: VoiceEventData) => { - if (data.channelId === currentCall?.channelId && speakers.hasOwnProperty(data.userId)) { - setSpeakers((prev) => { - const next = {...prev}; - delete next[data.userId]; - return next; - }); - } - }; - - const onVoiceOn = DeviceEventEmitter.addListener(WebsocketEvents.CALLS_USER_VOICE_ON, handleVoiceOn); - const onVoiceOff = DeviceEventEmitter.addListener(WebsocketEvents.CALLS_USER_VOICE_OFF, handleVoiceOff); - return () => { - onVoiceOn.remove(); - onVoiceOff.remove(); - }; - }, [speakers, currentCall?.channelId]); - const leaveCallHandler = useCallback(() => { popTopScreen(); leaveCall(); @@ -325,6 +316,10 @@ const CallScreen = ({componentId, currentCall, participantsDict, teammateNameDis } }, [myParticipant?.raisedHand]); + const toggleSpeakerPhone = useCallback(() => { + setSpeakerphoneOn(!currentCall?.speakerphoneOn); + }, [currentCall?.speakerphoneOn]); + const toggleControlsInLandscape = useCallback(() => { setShowControlsInLandscape(!showControlsInLandscape); }, [showControlsInLandscape]); @@ -424,8 +419,8 @@ const CallScreen = ({componentId, currentCall, participantsDict, teammateNameDis usersList = ( { return ( ); return ( @@ -508,6 +503,7 @@ const CallScreen = ({componentId, currentCall, participantsDict, teammateNameDis {usersList} {screenShareView} + {micPermissionsError && } @@ -516,10 +512,12 @@ const CallScreen = ({componentId, currentCall, participantsDict, teammateNameDis testID='mute-unmute' style={[style.mute, myParticipant.muted && style.muteMuted]} onPress={muteUnmuteHandler} + disabled={!micPermissionsGranted} > - {myParticipant.muted ? UnmuteText : MuteText} @@ -544,12 +542,12 @@ const CallScreen = ({componentId, currentCall, participantsDict, teammateNameDis setSpeakerphoneOn(!currentCall?.speakerphoneOn)} + onPress={toggleSpeakerPhone} > { }, {} as Dictionary))), )), ); + const micPermissionsGranted = observeGlobalCallsState().pipe( + switchMap((gs) => of$(gs.micPermissionsGranted)), + distinctUntilChanged(), + ); const teammateNameDisplay = database.pipe( switchMap((db) => (db ? observeTeammateNameDisplay(db) : of$(''))), distinctUntilChanged(), @@ -42,6 +46,7 @@ const enhanced = withObservables([], () => { return { currentCall, participantsDict, + micPermissionsGranted, teammateNameDisplay, }; }); diff --git a/app/products/calls/state/actions.test.ts b/app/products/calls/state/actions.test.ts index 30721001b..5de034c7e 100644 --- a/app/products/calls/state/actions.test.ts +++ b/app/products/calls/state/actions.test.ts @@ -6,13 +6,17 @@ import assert from 'assert'; import {act, renderHook} from '@testing-library/react-hooks'; import { + newCurrentCall, setCallsState, setChannelsWithCalls, setCurrentCall, + setMicPermissionsErrorDismissed, + setMicPermissionsGranted, useCallsConfig, useCallsState, useChannelsWithCalls, useCurrentCall, + useGlobalCallsState, } from '@calls/state'; import { setCalls, @@ -30,12 +34,22 @@ import { setSpeakerPhone, setConfig, setPluginEnabled, + setUserVoiceOn, } from '@calls/state/actions'; import {License} from '@constants'; -import {CallsState, CurrentCall, DefaultCallsConfig, DefaultCallsState} from '../types/calls'; +import { + Call, + CallsState, + CurrentCall, + DefaultCallsConfig, + DefaultCallsState, + DefaultCurrentCall, + DefaultGlobalCallsState, + GlobalCallsState, +} from '../types/calls'; -const call1 = { +const call1: Call = { participants: { 'user-1': {id: 'user-1', muted: false, raisedHand: 0}, 'user-2': {id: 'user-2', muted: true, raisedHand: 0}, @@ -46,7 +60,7 @@ const call1 = { threadId: 'thread-1', ownerId: 'user-1', }; -const call2 = { +const call2: Call = { participants: { 'user-3': {id: 'user-3', muted: false, raisedHand: 0}, 'user-4': {id: 'user-4', muted: true, raisedHand: 0}, @@ -57,7 +71,7 @@ const call2 = { threadId: 'thread-2', ownerId: 'user-3', }; -const call3 = { +const call3: Call = { participants: { 'user-5': {id: 'user-5', muted: false, raisedHand: 0}, 'user-6': {id: 'user-6', muted: true, raisedHand: 0}, @@ -107,39 +121,67 @@ describe('useCallsState', () => { const initialChannelsWithCallsState = { 'channel-1': true, }; + const initialCurrentCallState: CurrentCall = { + ...DefaultCurrentCall, + serverUrl: 'server1', + myUserId: 'myUserId', + ...call1, + }; + const testNewCall1 = { + ...call1, + participants: { + 'user-1': {id: 'user-1', muted: false, raisedHand: 0}, + 'user-2': {id: 'user-2', muted: true, raisedHand: 0}, + 'user-3': {id: 'user-3', muted: false, raisedHand: 123}, + }, + }; const test = { - calls: {'channel-1': call2, 'channel-2': call3}, + calls: {'channel-1': testNewCall1, 'channel-2': call2, 'channel-3': call3}, enabled: {'channel-2': true}, }; + const expectedCallsState = { ...initialCallsState, serverUrl: 'server1', myUserId: 'myId', - calls: {'channel-1': call2, 'channel-2': call3}, + calls: {'channel-1': testNewCall1, 'channel-2': call2, 'channel-3': call3}, enabled: {'channel-2': true}, }; const expectedChannelsWithCallsState = { ...initialChannelsWithCallsState, 'channel-2': true, + 'channel-3': true, + }; + const expectedCurrentCallState = { + ...initialCurrentCallState, + ...testNewCall1, }; // setup const {result} = renderHook(() => { - return [useCallsState('server1'), useCallsState('server1'), useChannelsWithCalls('server1')]; + return [ + useCallsState('server1'), + useCallsState('server1'), + useChannelsWithCalls('server1'), + useCurrentCall(), + ]; }); act(() => { setCallsState('server1', initialCallsState); setChannelsWithCalls('server1', initialChannelsWithCallsState); + setCurrentCall(initialCurrentCallState); }); assert.deepEqual(result.current[0], initialCallsState); assert.deepEqual(result.current[1], initialCallsState); assert.deepEqual(result.current[2], initialChannelsWithCallsState); + assert.deepEqual(result.current[3], initialCurrentCallState); // test act(() => setCalls('server1', 'myId', test.calls, test.enabled)); assert.deepEqual(result.current[0], expectedCallsState); assert.deepEqual(result.current[1], expectedCallsState); assert.deepEqual(result.current[2], expectedChannelsWithCallsState); + assert.deepEqual(result.current[3], expectedCurrentCallState); }); it('joinedCall', () => { @@ -150,13 +192,14 @@ describe('useCallsState', () => { const initialChannelsWithCallsState = { 'channel-1': true, }; - const initialCurrentCallState = { + + const initialCurrentCallState: CurrentCall = { + ...DefaultCurrentCall, + connected: true, serverUrl: 'server1', myUserId: 'myUserId', ...call1, - screenShareURL: '', - speakerphoneOn: false, - } as CurrentCall; + }; const expectedCallsState = { 'channel-1': { participants: { @@ -209,13 +252,13 @@ describe('useCallsState', () => { const initialChannelsWithCallsState = { 'channel-1': true, }; - const initialCurrentCallState = { + const initialCurrentCallState: CurrentCall = { + ...DefaultCurrentCall, + connected: true, serverUrl: 'server1', myUserId: 'myUserId', ...call1, - screenShareURL: '', - speakerphoneOn: false, - } as CurrentCall; + }; const expectedCallsState = { 'channel-1': { participants: { @@ -311,13 +354,13 @@ describe('useCallsState', () => { calls: {'channel-1': call1, 'channel-2': call2}, }; const initialChannelsWithCallsState = {'channel-1': true, 'channel-2': true}; - const initialCurrentCallState = { + const initialCurrentCallState: CurrentCall = { + ...DefaultCurrentCall, + connected: true, serverUrl: 'server1', myUserId: 'myUserId', ...call1, - screenShareURL: '', - speakerphoneOn: false, - } as CurrentCall; + }; // setup const {result} = renderHook(() => { @@ -358,13 +401,12 @@ describe('useCallsState', () => { calls: {'channel-1': call1, 'channel-2': call2}, }; const initialChannelsWithCallsState = {'channel-1': true, 'channel-2': true}; - const initialCurrentCallState = { + const initialCurrentCallState: CurrentCall = { + ...DefaultCurrentCall, serverUrl: 'server1', myUserId: 'myUserId', ...call1, - screenShareURL: '', - speakerphoneOn: false, - } as CurrentCall; + }; // setup const {result} = renderHook(() => { @@ -416,13 +458,13 @@ describe('useCallsState', () => { ownerId: 'user-1', }, }; - const initialCurrentCallState = { + const initialCurrentCallState: CurrentCall = { + ...DefaultCurrentCall, + connected: true, serverUrl: 'server1', myUserId: 'myUserId', ...call1, - screenShareURL: '', - speakerphoneOn: false, - } as CurrentCall; + }; const expectedCurrentCallState = { ...initialCurrentCallState, ...expectedCalls['channel-1'], @@ -469,17 +511,18 @@ describe('useCallsState', () => { }; const expectedCallsState = { ...initialCallsState, - calls: {...initialCallsState.calls, + calls: { + ...initialCallsState.calls, 'channel-1': newCall1, }, }; - const expectedCurrentCallState = { + const expectedCurrentCallState: CurrentCall = { + ...DefaultCurrentCall, + connected: true, serverUrl: 'server1', myUserId: 'myUserId', - screenShareURL: '', - speakerphoneOn: false, ...newCall1, - } as CurrentCall; + }; // setup const {result} = renderHook(() => { @@ -490,7 +533,10 @@ describe('useCallsState', () => { assert.deepEqual(result.current[1], null); // test - act(() => userJoinedCall('server1', 'channel-1', 'myUserId')); + act(() => { + newCurrentCall('server1', 'channel-1', 'myUserId'); + userJoinedCall('server1', 'channel-1', 'myUserId'); + }); assert.deepEqual(result.current[0], expectedCallsState); assert.deepEqual(result.current[1], expectedCurrentCallState); @@ -560,6 +606,7 @@ describe('useCallsState', () => { assert.deepEqual(result.current[1], null); // test joining a call and setting url: + act(() => newCurrentCall('server1', 'channel-1', 'myUserId')); act(() => userJoinedCall('server1', 'channel-1', 'myUserId')); assert.deepEqual((result.current[1] as CurrentCall | null)?.screenShareURL, ''); act(() => setScreenShareURL('testUrl')); @@ -589,7 +636,8 @@ describe('useCallsState', () => { }; const expectedCallsState = { ...initialCallsState, - calls: {...initialCallsState.calls, + calls: { + ...initialCallsState.calls, 'channel-1': newCall1, }, }; @@ -603,6 +651,7 @@ describe('useCallsState', () => { assert.deepEqual(result.current[1], null); // test + act(() => newCurrentCall('server1', 'channel-1', 'myUserId')); act(() => userJoinedCall('server1', 'channel-1', 'myUserId')); assert.deepEqual((result.current[1] as CurrentCall | null)?.speakerphoneOn, false); act(() => setSpeakerPhone(true)); @@ -618,6 +667,123 @@ describe('useCallsState', () => { assert.deepEqual(result.current[1], null); }); + it('MicPermissions', () => { + const initialGlobalState = DefaultGlobalCallsState; + const initialCallsState: CallsState = { + ...DefaultCallsState, + myUserId: 'myUserId', + calls: {'channel-1': call1, 'channel-2': call2}, + }; + const newCall1: Call = { + ...call1, + participants: { + ...call1.participants, + myUserId: {id: 'myUserId', muted: true, raisedHand: 0}, + }, + }; + const expectedCallsState: CallsState = { + ...initialCallsState, + calls: { + ...initialCallsState.calls, + 'channel-1': newCall1, + }, + }; + const expectedCurrentCallState: CurrentCall = { + ...DefaultCurrentCall, + serverUrl: 'server1', + myUserId: 'myUserId', + connected: true, + ...newCall1, + }; + const secondExpectedCurrentCallState: CurrentCall = { + ...expectedCurrentCallState, + micPermissionsErrorDismissed: true, + }; + const expectedGlobalState: GlobalCallsState = { + micPermissionsGranted: true, + }; + + // setup + const {result} = renderHook(() => { + return [useCallsState('server1'), useCurrentCall(), useGlobalCallsState()]; + }); + act(() => setCallsState('server1', initialCallsState)); + assert.deepEqual(result.current[0], initialCallsState); + assert.deepEqual(result.current[1], null); + assert.deepEqual(result.current[2], initialGlobalState); + + // join call + act(() => { + setMicPermissionsGranted(false); + newCurrentCall('server1', 'channel-1', 'myUserId'); + userJoinedCall('server1', 'channel-1', 'myUserId'); + }); + assert.deepEqual(result.current[0], expectedCallsState); + assert.deepEqual(result.current[1], expectedCurrentCallState); + assert.deepEqual(result.current[2], initialGlobalState); + + // dismiss mic error + act(() => setMicPermissionsErrorDismissed()); + assert.deepEqual(result.current[0], expectedCallsState); + assert.deepEqual(result.current[1], secondExpectedCurrentCallState); + assert.deepEqual(result.current[2], initialGlobalState); + + // grant permissions + act(() => setMicPermissionsGranted(true)); + assert.deepEqual(result.current[0], expectedCallsState); + assert.deepEqual(result.current[1], secondExpectedCurrentCallState); + assert.deepEqual(result.current[2], expectedGlobalState); + + act(() => { + myselfLeftCall(); + userLeftCall('server1', 'channel-1', 'myUserId'); + }); + assert.deepEqual(result.current[0], initialCallsState); + assert.deepEqual(result.current[1], null); + }); + + it('voiceOn and Off', () => { + const initialCallsState = { + ...DefaultCallsState, + serverUrl: 'server1', + myUserId: 'myUserId', + calls: {'channel-1': call1, 'channel-2': call2}, + }; + const initialCurrentCallState: CurrentCall = { + ...DefaultCurrentCall, + serverUrl: 'server1', + myUserId: 'myUserId', + ...call1, + }; + + // setup + const {result} = renderHook(() => { + return [useCallsState('server1'), useCurrentCall()]; + }); + act(() => { + setCallsState('server1', initialCallsState); + setCurrentCall(initialCurrentCallState); + }); + assert.deepEqual(result.current[0], initialCallsState); + assert.deepEqual(result.current[1], initialCurrentCallState); + + // test + act(() => setUserVoiceOn('channel-1', 'user-1', true)); + assert.deepEqual(result.current[1], {...initialCurrentCallState, voiceOn: {'user-1': true}}); + assert.deepEqual(result.current[0], initialCallsState); + act(() => setUserVoiceOn('channel-1', 'user-2', true)); + assert.deepEqual(result.current[1], {...initialCurrentCallState, voiceOn: {'user-1': true, 'user-2': true}}); + assert.deepEqual(result.current[0], initialCallsState); + act(() => setUserVoiceOn('channel-1', 'user-1', false)); + assert.deepEqual(result.current[1], {...initialCurrentCallState, voiceOn: {'user-2': true}}); + assert.deepEqual(result.current[0], initialCallsState); + + // test that voice state is cleared on reconnect + act(() => setCalls('server1', 'myUserId', initialCallsState.calls, {})); + assert.deepEqual(result.current[1], initialCurrentCallState); + assert.deepEqual(result.current[0], initialCallsState); + }); + it('config', () => { const newConfig = { ICEServers: [], diff --git a/app/products/calls/state/actions.ts b/app/products/calls/state/actions.ts index 4bfe8976b..3b58e2f4b 100644 --- a/app/products/calls/state/actions.ts +++ b/app/products/calls/state/actions.ts @@ -6,12 +6,14 @@ import { getCallsState, getChannelsWithCalls, getCurrentCall, + getGlobalCallsState, setCallsConfig, setCallsState, setChannelsWithCalls, setCurrentCall, + setGlobalCallsState, } from '@calls/state'; -import {Call, CallsConfig, ChannelsWithCalls} from '@calls/types/calls'; +import {Call, CallsConfig, ChannelsWithCalls, DefaultCall, DefaultCurrentCall} from '@calls/types/calls'; export const setCalls = (serverUrl: string, myUserId: string, calls: Dictionary, enabled: Dictionary) => { const channelsWithCalls = Object.keys(calls).reduce( @@ -22,6 +24,21 @@ export const setCalls = (serverUrl: string, myUserId: string, calls: Dictionary< setChannelsWithCalls(serverUrl, channelsWithCalls); setCallsState(serverUrl, {serverUrl, myUserId, calls, enabled}); + + // Does the current call need to be updated? + const currentCall = getCurrentCall(); + if (!currentCall || !calls[currentCall.channelId]) { + return; + } + + // Edge case: if the app went into the background and lost the main ws connection, we don't know who is currently + // talking. Instead of guessing, erase voiceOn state (same state as when joining an ongoing call). + const nextCall = { + ...currentCall, + ...calls[currentCall.channelId], + voiceOn: {}, + }; + setCurrentCall(nextCall); }; export const setCallForChannel = (serverUrl: string, channelId: string, enabled: boolean, call?: Call) => { @@ -80,23 +97,21 @@ export const userJoinedCall = (serverUrl: string, channelId: string, userId: str // Did the user join the current call? If so, update that too. const currentCall = getCurrentCall(); if (currentCall && currentCall.channelId === channelId) { + const voiceOn = {...currentCall.voiceOn}; + delete voiceOn[userId]; + const nextCurrentCall = { ...currentCall, participants: {...currentCall.participants, [userId]: nextCall.participants[userId]}, + voiceOn, }; - setCurrentCall(nextCurrentCall); - } - // Was it me that joined the call? - if (callsState.myUserId === userId) { - setCurrentCall({ - ...nextCall, - participants: {...nextCall.participants}, - serverUrl, - myUserId: userId, - screenShareURL: '', - speakerphoneOn: false, - }); + // If this is the currentUser, that means we've connected to the call we created. + if (userId === nextCurrentCall.myUserId) { + nextCurrentCall.connected = true; + } + + setCurrentCall(nextCurrentCall); } }; @@ -137,14 +152,35 @@ export const userLeftCall = (serverUrl: string, channelId: string, userId: strin return; } + // Clear them from the voice list + const voiceOn = {...currentCall.voiceOn}; + delete voiceOn[userId]; + const nextCurrentCall = { ...currentCall, participants: {...currentCall.participants}, + voiceOn, }; delete nextCurrentCall.participants[userId]; setCurrentCall(nextCurrentCall); }; +export const newCurrentCall = (serverUrl: string, channelId: string, myUserId: string) => { + let existingCall: Call = DefaultCall; + const callsState = getCallsState(serverUrl); + if (callsState.calls[channelId]) { + existingCall = callsState.calls[channelId]; + } + + setCurrentCall({ + ...DefaultCurrentCall, + ...existingCall, + serverUrl, + channelId, + myUserId, + }); +}; + export const myselfLeftCall = () => { setCurrentCall(null); }; @@ -157,6 +193,21 @@ export const callStarted = (serverUrl: string, call: Call) => { const nextChannelsWithCalls = {...getChannelsWithCalls(serverUrl), [call.channelId]: true}; setChannelsWithCalls(serverUrl, nextChannelsWithCalls); + + // If we started a call, we will get a callStarted event with the 'official' data from the server. + // Save that in our currentCall. + const currentCall = getCurrentCall(); + if (!currentCall || currentCall.channelId !== call.channelId) { + return; + } + + const nextCurrentCall = { + ...currentCall, + startTime: call.startTime, + threadId: call.threadId, + ownerId: call.ownerId, + }; + setCurrentCall(nextCurrentCall); }; export const callEnded = (serverUrl: string, channelId: string) => { @@ -170,10 +221,7 @@ export const callEnded = (serverUrl: string, channelId: string) => { delete nextChannelsWithCalls[channelId]; setChannelsWithCalls(serverUrl, nextChannelsWithCalls); - const currentCall = getCurrentCall(); - if (currentCall?.channelId === channelId) { - setCurrentCall(null); - } + // currentCall is set to null by the disconnect. }; export const setUserMuted = (serverUrl: string, channelId: string, userId: string, muted: boolean) => { @@ -208,6 +256,26 @@ export const setUserMuted = (serverUrl: string, channelId: string, userId: strin setCurrentCall(nextCurrentCall); }; +export const setUserVoiceOn = (channelId: string, userId: string, voiceOn: boolean) => { + const currentCall = getCurrentCall(); + if (!currentCall || currentCall.channelId !== channelId) { + return; + } + + const nextVoiceOn = {...currentCall.voiceOn}; + if (voiceOn) { + nextVoiceOn[userId] = true; + } else { + delete nextVoiceOn[userId]; + } + + const nextCurrentCall = { + ...currentCall, + voiceOn: nextVoiceOn, + }; + setCurrentCall(nextCurrentCall); +}; + export const setRaisedHand = (serverUrl: string, channelId: string, userId: string, timestamp: number) => { const callsState = getCallsState(serverUrl); if (!callsState.calls[channelId] || !callsState.calls[channelId].participants[userId]) { @@ -318,3 +386,26 @@ export const setPluginEnabled = (serverUrl: string, pluginEnabled: boolean) => { const callsConfig = getCallsConfig(serverUrl); setCallsConfig(serverUrl, {...callsConfig, pluginEnabled}); }; + +export const setMicPermissionsGranted = (granted: boolean) => { + const globalState = getGlobalCallsState(); + + const nextGlobalState = { + ...globalState, + micPermissionsGranted: granted, + }; + setGlobalCallsState(nextGlobalState); +}; + +export const setMicPermissionsErrorDismissed = () => { + const currentCall = getCurrentCall(); + if (!currentCall) { + return; + } + + const nextCurrentCall = { + ...currentCall, + micPermissionsErrorDismissed: true, + }; + setCurrentCall(nextCurrentCall); +}; diff --git a/app/products/calls/state/global_calls_state.ts b/app/products/calls/state/global_calls_state.ts new file mode 100644 index 000000000..94ae637d5 --- /dev/null +++ b/app/products/calls/state/global_calls_state.ts @@ -0,0 +1,38 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import {useEffect, useState} from 'react'; +import {BehaviorSubject} from 'rxjs'; + +import {DefaultGlobalCallsState, GlobalCallsState} from '@calls/types/calls'; + +const globalStateSubject = new BehaviorSubject(DefaultGlobalCallsState); + +export const getGlobalCallsState = () => { + return globalStateSubject.value; +}; + +export const setGlobalCallsState = (globalState: GlobalCallsState) => { + globalStateSubject.next(globalState); +}; + +export const observeGlobalCallsState = () => { + return globalStateSubject.asObservable(); +}; + +export const useGlobalCallsState = () => { + const [state, setState] = useState(DefaultGlobalCallsState); + + useEffect(() => { + const subscription = globalStateSubject.subscribe((globalState) => { + setState(globalState); + }); + + return () => { + subscription?.unsubscribe(); + }; + }, []); + + return state; +}; + diff --git a/app/products/calls/state/index.ts b/app/products/calls/state/index.ts index b44d4f8eb..ae83ecc61 100644 --- a/app/products/calls/state/index.ts +++ b/app/products/calls/state/index.ts @@ -6,3 +6,4 @@ export * from './calls_state'; export * from './calls_config'; export * from './current_call'; export * from './channels_with_calls'; +export * from './global_calls_state'; diff --git a/app/products/calls/types/calls.ts b/app/products/calls/types/calls.ts index 760683a52..e32714490 100644 --- a/app/products/calls/types/calls.ts +++ b/app/products/calls/types/calls.ts @@ -4,6 +4,14 @@ import type UserModel from '@typings/database/models/servers/user'; import type {ConfigurationParamWithUrls, ConfigurationParamWithUrl} from 'react-native-webrtc'; +export type GlobalCallsState = { + micPermissionsGranted: boolean; +} + +export const DefaultGlobalCallsState: GlobalCallsState = { + micPermissionsGranted: false, +}; + export type CallsState = { serverUrl: string; myUserId: string; @@ -11,12 +19,12 @@ export type CallsState = { enabled: Dictionary; } -export const DefaultCallsState = { +export const DefaultCallsState: CallsState = { serverUrl: '', myUserId: '', calls: {} as Dictionary, enabled: {} as Dictionary, -} as CallsState; +}; export type Call = { participants: Dictionary; @@ -27,26 +35,41 @@ export type Call = { ownerId: string; } -export const DefaultCall = { +export const DefaultCall: Call = { participants: {} as Dictionary, channelId: '', startTime: 0, screenOn: '', threadId: '', + ownerId: '', }; -export type CurrentCall = { +export type CurrentCall = Call & { + connected: boolean; serverUrl: string; myUserId: string; - participants: Dictionary; - channelId: string; - startTime: number; - screenOn: string; - threadId: string; screenShareURL: string; speakerphoneOn: boolean; + voiceOn: Dictionary; + micPermissionsErrorDismissed: boolean; } +export const DefaultCurrentCall: CurrentCall = { + connected: false, + serverUrl: '', + myUserId: '', + participants: {}, + channelId: '', + startTime: 0, + screenOn: '', + threadId: '', + ownerId: '', + screenShareURL: '', + speakerphoneOn: false, + voiceOn: {}, + micPermissionsErrorDismissed: false, +}; + export type CallParticipant = { id: string; muted: boolean; @@ -89,6 +112,7 @@ export type CallsConnection = { waitForPeerConnection: () => Promise; raiseHand: () => void; unraiseHand: () => void; + initializeVoiceTrack: () => void; } export type ServerCallsConfig = { @@ -106,7 +130,7 @@ export type CallsConfig = ServerCallsConfig & { last_retrieved_at: number; } -export const DefaultCallsConfig = { +export const DefaultCallsConfig: CallsConfig = { pluginEnabled: false, ICEServers: [], // deprecated ICEServersConfigs: [], @@ -116,7 +140,7 @@ export const DefaultCallsConfig = { last_retrieved_at: 0, sku_short_name: '', MaxCallParticipants: 0, -} as CallsConfig; +}; export type ICEServersConfigs = Array; diff --git a/app/queries/servers/system.ts b/app/queries/servers/system.ts index a6216b027..562ed9ed1 100644 --- a/app/queries/servers/system.ts +++ b/app/queries/servers/system.ts @@ -2,18 +2,19 @@ // See LICENSE.txt for license information. import {Database, Q} from '@nozbe/watermelondb'; -import {of as of$, Observable} from 'rxjs'; -import {switchMap} from 'rxjs/operators'; +import {of as of$, Observable, combineLatest} from 'rxjs'; +import {switchMap, distinctUntilChanged} from 'rxjs/operators'; import {Config, Preferences} from '@constants'; import {MM_TABLES, SYSTEM_IDENTIFIERS} from '@constants/database'; import {PUSH_PROXY_STATUS_UNKNOWN} from '@constants/push_proxy'; +import {isMinimumServerVersion} from '@utils/helpers'; import type ServerDataOperator from '@database/operator/server_data_operator'; +import type ConfigModel from '@typings/database/models/servers/config'; import type SystemModel from '@typings/database/models/servers/system'; export type PrepareCommonSystemValuesArgs = { - config?: ClientConfig; lastUnreadChannelId?: string; currentChannelId?: string; currentTeamId?: string; @@ -22,7 +23,7 @@ export type PrepareCommonSystemValuesArgs = { teamHistory?: string; } -const {SERVER: {SYSTEM}} = MM_TABLES; +const {SERVER: {SYSTEM, CONFIG}} = MM_TABLES; export const getCurrentChannelId = async (serverDatabase: Database): Promise => { try { @@ -94,7 +95,6 @@ export const observePushVerificationStatus = (database: Database): Observable { const systemRecords = (await serverDatabase.collections.get(SYSTEM).query().fetch()); - let config: ClientConfig = {} as ClientConfig; let license: ClientLicense = {} as ClientLicense; let currentChannelId = ''; let currentTeamId = ''; @@ -102,9 +102,6 @@ export const getCommonSystemValues = async (serverDatabase: Database) => { let lastUnreadChannelId = ''; systemRecords.forEach((systemRecord) => { switch (systemRecord.id) { - case SYSTEM_IDENTIFIERS.CONFIG: - config = systemRecord.value; - break; case SYSTEM_IDENTIFIERS.CURRENT_CHANNEL_ID: currentChannelId = systemRecord.value; break; @@ -128,51 +125,75 @@ export const getCommonSystemValues = async (serverDatabase: Database) => { currentTeamId, currentUserId, lastUnreadChannelId, - config, license, }; }; -export const getConfig = async (serverDatabase: Database) => { - try { - const config = await serverDatabase.get(SYSTEM).find(SYSTEM_IDENTIFIERS.CONFIG); - return (config?.value || {}) as ClientConfig; - } catch { - return undefined; - } +const fromModelToClientConfig = (list: ConfigModel[]) => { + const config: {[key: string]: any} = {}; + list.forEach((v) => { + config[v.id] = v.value; + }); + return config as ClientConfig; +}; + +export const getConfig = async (database: Database) => { + const configList = await database.get(CONFIG).query().fetch(); + return fromModelToClientConfig(configList); +}; + +export const queryConfigValue = (database: Database, key: keyof ClientConfig) => { + return database.get(CONFIG).query(Q.where('id', Q.eq(key))); +}; + +export const getConfigValue = async (database: Database, key: keyof ClientConfig) => { + const list = await queryConfigValue(database, key).fetch(); + return list.length ? list[0].value : undefined; }; export const observeConfig = (database: Database): Observable => { - return querySystemValue(database, SYSTEM_IDENTIFIERS.CONFIG).observe().pipe( - switchMap((result) => (result.length ? result[0].observe() : of$({value: undefined}))), - switchMap((model) => of$(model.value)), + return database.get(CONFIG).query().observeWithColumns(['value']).pipe( + switchMap((result) => of$(fromModelToClientConfig(result))), ); }; export const observeConfigValue = (database: Database, key: keyof ClientConfig) => { - return observeConfig(database).pipe( - switchMap((cfg) => of$(cfg?.[key])), + return queryConfigValue(database, key).observeWithColumns(['value']).pipe( + switchMap((result) => of$(result.length ? result[0].value : undefined)), + ); +}; + +export const observeMaxFileCount = (database: Database) => { + return observeConfigValue(database, 'Version').pipe( + switchMap((v) => of$(isMinimumServerVersion(v || '', 6, 0) ? 10 : 5)), + ); +}; + +export const observeIsCustomStatusExpirySupported = (database: Database) => { + return observeConfigValue(database, 'Version').pipe( + switchMap((v) => of$(isMinimumServerVersion(v || '', 5, 37))), ); }; export const observeConfigBooleanValue = (database: Database, key: keyof ClientConfig) => { - return observeConfig(database).pipe( - switchMap((cfg) => of$(cfg?.[key] === 'true')), + return observeConfigValue(database, key).pipe( + switchMap((v) => of$(v === 'true')), + distinctUntilChanged(), ); }; export const observeConfigIntValue = (database: Database, key: keyof ClientConfig, defaultValue = 0) => { - return observeConfig(database).pipe( - switchMap((cfg) => of$((parseInt(cfg?.[key] || '0', 10) || defaultValue))), + return observeConfigValue(database, key).pipe( + switchMap((v) => of$((parseInt(v || '0', 10) || defaultValue))), ); }; export const observeIsPostPriorityEnabled = (database: Database) => { - const config = observeConfig(database); - return config.pipe( - switchMap( - (cfg) => of$(cfg?.FeatureFlagPostPriority === Config.TRUE && cfg?.PostPriority === Config.TRUE), - ), + const featureFlag = observeConfigValue(database, 'FeatureFlagPostPriority'); + const cfg = observeConfigValue(database, 'PostPriority'); + return combineLatest([featureFlag, cfg]).pipe( + switchMap(([ff, c]) => of$(ff === Config.TRUE && c === Config.TRUE)), + distinctUntilChanged(), ); }; @@ -297,14 +318,8 @@ export const patchTeamHistory = (operator: ServerDataOperator, value: string[], export async function prepareCommonSystemValues( operator: ServerDataOperator, values: PrepareCommonSystemValuesArgs): Promise { try { - const {config, lastUnreadChannelId, currentChannelId, currentTeamId, currentUserId, license} = values; + const {lastUnreadChannelId, currentChannelId, currentTeamId, currentUserId, license} = values; const systems: IdValue[] = []; - if (config !== undefined) { - systems.push({ - id: SYSTEM_IDENTIFIERS.CONFIG, - value: JSON.stringify(config), - }); - } if (license !== undefined) { systems.push({ @@ -431,3 +446,17 @@ export const getExpiredSession = async (database: Database) => { return undefined; } }; + +export const observeCanUploadFiles = (database: Database) => { + const enableFileAttachments = observeConfigBooleanValue(database, 'EnableFileAttachments'); + const enableMobileFileUpload = observeConfigBooleanValue(database, 'EnableMobileFileUpload'); + const license = observeLicense(database); + + return combineLatest([enableFileAttachments, enableMobileFileUpload, license]).pipe( + switchMap(([efa, emfu, l]) => of$( + efa || + (l?.IsLicensed !== 'true' && l?.Compliance !== 'true' && emfu), + ), + ), + ); +}; diff --git a/app/queries/servers/thread.ts b/app/queries/servers/thread.ts index 2df721da3..3aae03cfd 100644 --- a/app/queries/servers/thread.ts +++ b/app/queries/servers/thread.ts @@ -10,7 +10,7 @@ import {MM_TABLES} from '@constants/database'; import {processIsCRTEnabled} from '@utils/thread'; import {queryPreferencesByCategoryAndName} from './preference'; -import {getConfig, observeConfig} from './system'; +import {getConfig, observeConfigValue} from './system'; import type ServerDataOperator from '@database/operator/server_data_operator'; import type Model from '@nozbe/watermelondb/Model'; @@ -22,7 +22,7 @@ const {SERVER: {CHANNEL, POST, THREAD, THREADS_IN_TEAM, THREAD_PARTICIPANT, USER export const getIsCRTEnabled = async (database: Database): Promise => { const config = await getConfig(database); const preferences = await queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS).fetch(); - return processIsCRTEnabled(preferences, config); + return processIsCRTEnabled(preferences, config?.CollapsedThreads, config?.FeatureFlagCollapsedThreads); }; export const getThreadById = async (database: Database, threadId: string) => { @@ -35,11 +35,12 @@ export const getThreadById = async (database: Database, threadId: string) => { }; export const observeIsCRTEnabled = (database: Database) => { - const config = observeConfig(database); + const cfgValue = observeConfigValue(database, 'CollapsedThreads'); + const featureFlag = observeConfigValue(database, 'FeatureFlagCollapsedThreads'); const preferences = queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS).observeWithColumns(['value']); - return combineLatest([config, preferences]).pipe( + return combineLatest([cfgValue, featureFlag, preferences]).pipe( map( - ([cfg, prefs]) => processIsCRTEnabled(prefs, cfg), + ([cfgV, ff, prefs]) => processIsCRTEnabled(prefs, cfgV, ff), ), distinctUntilChanged(), ); diff --git a/app/queries/servers/user.ts b/app/queries/servers/user.ts index 784f516d3..3279ec117 100644 --- a/app/queries/servers/user.ts +++ b/app/queries/servers/user.ts @@ -12,7 +12,7 @@ import {observeMyChannel} from '@queries/servers/channel'; import {isChannelAdmin} from '@utils/user'; import {queryPreferencesByCategoryAndName} from './preference'; -import {observeConfig, observeCurrentUserId, observeLicense, getCurrentUserId, getConfig, getLicense} from './system'; +import {observeCurrentUserId, observeLicense, getCurrentUserId, getConfig, getLicense, observeConfigValue} from './system'; import type ServerDataOperator from '@database/operator/server_data_operator'; import type ChannelMembershipModel from '@typings/database/models/servers/channel_membership'; @@ -67,13 +67,14 @@ export async function prepareUsers(operator: ServerDataOperator, users: UserProf } export const observeTeammateNameDisplay = (database: Database) => { - const config = observeConfig(database); + const lockTeammateNameDisplay = observeConfigValue(database, 'LockTeammateNameDisplay'); + const teammateNameDisplay = observeConfigValue(database, 'TeammateNameDisplay'); const license = observeLicense(database); const preferences = queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS). observeWithColumns(['value']); - return combineLatest([config, license, preferences]).pipe( + return combineLatest([lockTeammateNameDisplay, teammateNameDisplay, license, preferences]).pipe( switchMap( - ([cfg, lcs, prefs]) => of$(getTeammateNameDisplaySetting(prefs, cfg, lcs)), + ([ltnd, tnd, lcs, prefs]) => of$(getTeammateNameDisplaySetting(prefs, ltnd, tnd, lcs)), ), ); }; @@ -82,7 +83,7 @@ export async function getTeammateNameDisplay(database: Database) { const config = await getConfig(database); const license = await getLicense(database); const preferences = await queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS).fetch(); - return getTeammateNameDisplaySetting(preferences, config, license); + return getTeammateNameDisplaySetting(preferences, config?.LockTeammateNameDisplay, config?.TeammateNameDisplay, license); } export const queryUsersLike = (database: Database, likeUsername: string) => { diff --git a/app/screens/browse_channels/index.ts b/app/screens/browse_channels/index.ts index 4d85c3628..e0b0ab9d6 100644 --- a/app/screens/browse_channels/index.ts +++ b/app/screens/browse_channels/index.ts @@ -9,7 +9,7 @@ import {switchMap} from 'rxjs/operators'; import {Permissions} from '@constants'; import {queryAllMyChannel} from '@queries/servers/channel'; import {queryRolesByNames} from '@queries/servers/role'; -import {observeConfig, observeCurrentTeamId, observeCurrentUserId} from '@queries/servers/system'; +import {observeConfigBooleanValue, observeCurrentTeamId, observeCurrentUserId} from '@queries/servers/system'; import {observeUser} from '@queries/servers/user'; import {hasPermission} from '@utils/role'; @@ -18,15 +18,8 @@ import SearchHandler from './search_handler'; import type {WithDatabaseArgs} from '@typings/database/database'; const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { - const config = observeConfig(database); - - const sharedChannelsEnabled = config.pipe( - switchMap((v) => of$(v?.ExperimentalSharedChannels === 'true')), - ); - - const canShowArchivedChannels = config.pipe( - switchMap((v) => of$(v?.ExperimentalViewArchivedChannels === 'true')), - ); + const sharedChannelsEnabled = observeConfigBooleanValue(database, 'ExperimentalSharedChannels'); + const canShowArchivedChannels = observeConfigBooleanValue(database, 'ExperimentalViewArchivedChannels'); const currentTeamId = observeCurrentTeamId(database); const currentUserId = observeCurrentUserId(database); diff --git a/app/screens/channel/channel_post_list/intro/illustration/private.tsx b/app/screens/channel/channel_post_list/intro/illustration/private.tsx index 416a8cabe..96708e99b 100644 --- a/app/screens/channel/channel_post_list/intro/illustration/private.tsx +++ b/app/screens/channel/channel_post_list/intro/illustration/private.tsx @@ -271,16 +271,12 @@ const PrivateChannelIllustration = ({theme}: Props) => ( id='image0_640_9311' width={89} height={248} - - // @ts-expect-error string source xlinkHref='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAAD4CAYAAACHS0rkAAAgAElEQVR4Xu19z3Mcx5Xmy6wCCNOOIbx/wLC9EbYAOtZs7V4niGbDZxGjvROwYg4aDdCA9AeIlPZsEgDpmTmsKVL3lUjt1QSbijlujKiJMAHZMWFw/oA1GLEiQXRV5saXWa87O1HVVQ02qrvp5kUKdP386uXL9+N77wma/Dt1BMSp32FyA5qAXIIQTECegFwCAiXcYiLJE5BLQKCEW0wkeQJyCQiUcIuJJE9ALgGBEm4xkeQJyCUgUMItJpI8AbkEBEq4xUSSJyCXgEAJt5hI8gTkEhAo4RYTSZ6AXAICJdxiIskTkEtAoIRbTCR5AnIJCJRwi4kkT0AuAYESbjGR5AnIJSBQwi0mkjwBuQQESrjFRJInIJeAQAm3mEjyBOQSECjhFhNJnoBcAgIl3GIiyROQS0CghFtMJHkCcgkIlHCLiSRPQC4BgRJuMZHkCcglIFDCLSaSPAG5BARKuMVEkicgl4BACbcYqiTP1TYqRFFlr3m7WcK7Du0WQwW5WtuYPaKjytPmPz4ZGgIl3HioIJfwfiNxi5EE2aoRquw1N98INXKqIM/VNmonAepNUyOnDPJq7bQ2tfnLa492H926PBL6IOchThXk0wRgrvZ+Za/5z/uneY9BXXsoIEMdvKKottu8fX9QLzLK1xkKyD4gF2ofVF/Q9P5+c/NglME66bONBMjz9bUNrVr33eU/98vVGkXy/F5z+95JX25UzusbZGteqYXTfvms+8zVVmskRWVv59bdUQEx7zn6Bvkk5tWF2ka1RUf0xzfcs8sCu2+Q874aJFAE0ZXdh7e3+Fj87ZDoADp3rr62kiaFF+qNa0od3WOVMVdbWyES+rRXTN77DOL3gYPc70PN1VevH6pwE+f12viwOSpSB+Nitrk4nDrIUC+HUm3s7Wxfz/sAldrG7AwdzqYB+dPaB9UgB+SfLa4uHcVhc9SslIGBPFdrLGctbWxWRTy/oqFPs/kRkX/N+drqkqboyahJ+8BAxnLuJ2Rpl7+cLQK+o9tPFAvJW0Gn/fvAQE570PnaxtJuc7PLq5uvNzZ3d7Y3cDxcYyuR1j0G8FEgK394mO4JQmX4FgqkPyaa/WNz8wkkXATy4u7D7fame9oAFrn+iUA2brGMV3Z3bpkNK+sfANhrbu7jvyqIqj54WZuZVRuHJILpKzo+eoCPwNfy74VneRFEtawPUwSE0z7mRCCz1LnqAVJ0SOGTIptOWrzYD/jYTZBm8ZFwv/n62pe7O7f+tl9AigpEv9ft5/gTg+zfpIhO5o2NKNxnrxFgzhIRVkYs9H6eRALslyr4VZYVkvbyuEeRj98PcP0cOzCQU3XyYmMd+nF+sbGuY/UtjlFEs39wom/WIqADbIBWfQRVolZTyunlpzvbn7jXdVXDXH3ts72dW7/y79vLDOwHmEEeOzCQff1q7GNSV2DW+b/BnoXE2r9PQyU08SFexvJevxLng3oSq2WQgKZda2Ag99wATUSNiAJ5fu9hJ6oGKRak9qHb3SXNaSt8qJbU136/s/VhloT2sxecNphZ1z8VkE2YUncANaaVlEsw3eYXV5d0bNWD+1DsSEiSs0oG60LpB1AjvJmyxXFIMwczFFV9tcPXGrb+PTVJhmWAl89a6njxMzJeeaWCu3wMVIYkeQ6SzcC4ph67yNNBVIOrzBtdnleHwNIhBffTnsVEEGV882mKLj9NKR+IJOe5zQjKv3QA5hfiv/9AqutnlLz+KlDLrJfZLrYxC2yGQZPNORcQ+3u252idlaPZYYZZ+wI5a6mnSQEv76w4wly9cZ2UbBId7rseH/Tz3GJjWRDNktY13za2oVR1pR+vbtgqpC+Qiywpjhdjl8fxWfEMLHuSskaC/hSTegZrAxZGFMvHgYyrhyq4fzaDwsWOig/2XH39s72drWNmXZHnPs1jBg9ybW1lr3k8NQQJlHQ0q4LwIlsY1n62bjNeEuBBdbxU8voPArWsNf3YSDTp/TMquHso45uHKvjQBP8h0VJtaHW06Z7PujgrOXCaYJZqXfDN3A3R2s1RFWYcxUePAQxAhbRyptrq13Bpr7l93Y1VADBSrSYsDy3DFQ4w8X042z0j1Oahlhv2I4wOL2Ngkpxmx9oUUqvJgNr0E3Tx0d1Omgmx4aitl9ub4uXGXS3pEaSe7Wk3MwLgldAHMqYDIlHh+4yiKTcwkPN0MACPKX7i7vI/rW1UEaJ0rI0vhQzvPv3dzQdIvr4g6uJiAFghxDnW4XOXG3eljjbT9P7PaqtLrvuOe+CaURClhlJx7Vh1P9+gVMvAQM57oPaSTtJLsCCkpp88ddJSkNiXZNNH4Lq91MHfso5mPYz7tCNztdUlsJDg/ChNs3nBJdb7aTa0m+zNe5d+fy8N5Pn6+k2tXm0pCqtHCZB42DxHBrr8JcUrmvR+KIJrTx9tvZ1wL5bdAJHnlo8Ug//UQIbHpmO1n+cEuHrbgL7YWKZYPhMUzbJU4+9pwXnf/uXNji2ZXukwWDb92Nr9Sq97/KmB7AKQ5gxgicdReBCE0axQYh0xYl7Glraln/hJAEjwDIVPYKUg9uF/II7u4QXTPrIb+M/zUl8HVP/cvkHGso+UuOduWHkPhA0q1tGmL9UMvquLLQdOVEgSBrjOcoqLzbiOdwhWEhE/h/972ocdlufXN8i5gCZ5vV7H+UsVIEcU7gMwlwbGzomJ3l1ee6QF7UMPX6ivfRkJfU/GnfS/CS5RVPUtiqzgft57DPL3wYNcb1w/VHKzV/DdT4pi6cYUHrirgx0VLcIvX2r59ozj7bFbzcnZ182GwHbPe+bXAX3gIBd5GLyU1ME3Tx/dfMCbGrIoJLVAzMKaa6s1xIwDIsIG6Of02uHReuM61EqsVFMSHJNon2iGiOKaDOT604dbb7vPZBKrgbq++9DSEsr4d+ogG1dZButY5vj/UAY1rYL7ICAiG+0WS/JmZOO+akORhnowFFmOE8/IeAkutpBTS8c4zQmVAHo7jX1qPlxQzJ4eJPinDrLvALibD4B4AsdjcXWJSJ53Taos9r2laHWy3bBE0vgf84trj3Qc/AqOC6wKrVofwkaXQ6BxlQKyLxUWKBuv8DMdfmTOxKUDtUAxrA31PA6Igjikl0RdxEK4zDpQK6wG7KaZT8AZpMRmXWtIIFuGUFra3zgSUi2/UHLLhDtj+QAbHFsSJhstwyVSqglb2XykwKax8pif87W1jd1mNuvptNJTpYBsnQa9z8lTk99zzC9XAjhODLONdTT4cwjuI6BvOG/1tRXeICGxON9ulp2oX56E+nY1H38aIdJSQD6uLjrMe/4tWwdvVATi0FIss1fIzstMoK64FAN3g2QT0qdpnQaIeR90KCCnPZTLn7hQX/tMqdYnRDNgfe4jESpIVnjTYktjmqKau5G50unSxrqDR41lKbujf1mEyDzwiv4+cJCzHIM8h+Gt+tqGUOLPYBxBt/6QpveZOQq7mpn6AFKSOA8Kl5+s5c0OcQ/jkjdv309zpX3eXpGKLnz4k1IJBg5yFls+jz5lNjAprvj8NgT2W37wPmH1m/ApqW9J6X1J6sDGMmzvDFgbiqJZIcW6IDpQQjQN8CfkLhchVI6UdZEXoXMflu3gxKmpZtXvuWYhn29INRSvBBQ3kUfkDZIzMlmc56JqoOhxA5fkIjfmTe6HUl+LlX7Sq4yMWZ9M8+Lrs1fYlVkp2DkA1goy4ki8Cknf+ETHQRPLhwKyK2mwAtgFBm1WivDPJOK3XfC6TDzk+Uhe3N3Z+pBd9ljFWyKQlSAmgh5mB0dQWC1aqHOaVkepIAPM7+mo4seV/TiDq/+YdksUVohkbYbk5mHCwPc3NTdR6u4Nri2dtdLeGJCLqpK0MgkEk8AYMoTxh9v3mOOGa4YiuKl161eGEZrw4tzsM0w+SfETHYQrWutzvLkiLv30BCUSRd7DPaZUSe734dqOSr1xfVrJzUMZLwklqi9JmsJLN/xpvb2giTiH+QgJv0PI6Y1YqGagZU0rdT+rpC0va/I66aqRBrm9QZmQ6KEpReNlPQ/yi5bXuWbb1fOIebibmbHRkxBpFgEyLZpnU2G2KDOtvK2o0AwNZMMQTfjJ/LA+xdblLYMqh+Ng+3KKybrM6roW9A3F8jFJtUJK3kXAXki64jJCfXON+c8zYVSVNHUOhBp+Dpd000vCi5qAQwMZL+S/QK80vc1gg6F/666bePU3NXhmL5iUeLlxVwg6wHlE8q4MxUUGs1Nj2F1C3I+LXTRtNVSQiyy3tMDRW7W1DUH6CegBr2T8GZFYIk33tFZ3TRVVfe2zaRV8iOwKTEH3Q7ANLGN5Dva565q/denvfvLd1//zT2nPlaeze73LUEDOC3W6jPoi4UsU8hwSGXeaGZ1cXgELQim9xWmnrKYoSSwZq6DN/+jyPGvrN3ebWx8WEQz/mKGA3OtBmSjo1mB3OSPIlMgYXQIWYIpxUAjlEh232VJwD0l29dGYqzeugQEaq9ZWO8aBZiagGiTs0aLOSz9gjxzI/sMzV44BbG+SSQFmTOpgSpw5H+mWkFJWYxXdZwCNGWf+6fP4IGklFtxCwv3NZSL1A2bWsSMLsu0ggNS+WiDSIot/nFZ4A5BCLS8iHJpZFOSw/GGqyUgdZHSGAUb6dcAeOZB5d5exrIJx775cWkzaqgt97aUSn7S5dE4pMet0CsPKYWQL7ItuYlZ/6y9a1Poojzg5chuf+0AmyyxjVDn1bOuAc0yuD2Il6BvEhlGvXbQpSVd5RFLrh+TgYUoKqxdgRT+Qe42RkOR+Hpxb4yBI73ZF5HoTIWkWYUxrZTSWJclvSaorXAzvs/tN4pbiJTeLzcekMUOzkhIjLclFdF0WgYXPzcrn8e+GFqai+8icgMHkrpoknVVxQ6sX6uufPd3ZMpaLv+EWed6RN+HSXiIv9eMGb9haMNVWjir4eX39JgrhmSpmStYCdSWOo2/9Ll18v0EF70dCXbjU2SyQ/conTkOxlHO2e4biJa4jdNJMNSHVEtSIbWBiy4xNyZsUFeZwpN27H1U2kiZcP42m3Y3Lley2nZt0TmQLRAVhVcZi1sQ66qtfaBV+BE+S9SzqsUnKq6TU53BQXkTRg//4l3/6cwZQr2XGjYQkp72YyyRKc1DadYAOmwjHZZLBk9bv+Ago0PRtYpQMx0psBUQHbsE7TMBAyotQNW0dX7DPHR8/siD32mBcIowfTHc7wEANmRK02vsVQWfWtVTfQjXMEKHuG9nrClFccXuC+pE11ssoMsrrsDiS6iJvp/YBtJtWuIIMh5CiylYClxSzzXyh3rieWAuiWts4x7NMOqA3lonkY1PrTdMHQsZLfK3544Gg11IVeMexlGRWC9CxYB6hWQn+hgA8ZzKMJyjUZqTlJpMUsVn65iDOD1TczOxmUF+/8VKJT7OalBRxZsYK5AJ2a1vqPGK5mLdgdVzvDPJ4TzVlyuLUgetiF8mOjBXIaS/kqhRYEbs7t9/1gYJzoVR8DwQZTfoJqWAfutiv9fbjJL4jUqQIM+0jjQ3IWfZqWhYZQXyiiLvSGr2Ml0fxzyHJB2CDcp6wU8WKCiwrpWyhaMJmZ1tD5OwfPfX2SIHcy7Nz83p+/IEBMCpCiwoKf0yP0HrjWkBils0vfCg4I25vzy5v0WSnu9pCtMF769LqT777+vax1FQRdv7YgOxKEncQYIqXCxpLfMfb6+7dzOmnIzUjfiTVnzgPaDZTr9Xaz+urX/w+UT8Xams7ilrvpVEK8thHIwVynkmX9XubOpC0ZECphJDhDSLxNXfx+tnixtIfHm6aPkda6+dS0NWnD2/V/ToTF7BBuNTjbcItNpYR3Emr10ZzvsRmFj+tfXDR6tnG8gzJB67UIzstw7PrWtE3yFy3M9laVmeU3HTbF8Pz83sr9Qp72ipbq+PHQpLTcnOQkO4YhqnvI2StO82eGncQm3AD+4kaQXNWbeq1Nd3zm/XZ++WPqsvKfFs7vlNGNxYgGwlzLILMWAfp9ZfUsYXTjkM2PJDBAjodhFJf3d3Z+siw8gPV7vI1qBDnWMcu8nS3r0vduYBp3ccBKoZO+V5dAZ1cyOUeC0nOA9V3IpBY1Qr5P1uXDXLi7qPtFX8ZW5JNCFKMmWLpmolGHXViIEY1+ZE7JkTmtSMeO5AxWUcIrY/i+Ktk0+uSJqNPpfp4b2f7PTc0if/3kq7mPIAXq6PnLj3LBJykWidFgh0RXNdnkBal044dyAxcspSfz9dX/9dLFb4HJ4NZ/C51AOAEUq/HKn5gy4TtxAib+db7SqGtMy34ZPAsVeFKd48V1vXhxxbktBfsUG27y3/tTm/HznU4z/EXlDgXnTYPagMJ19cdf4RgVKTE59wkZWRBLhLdcqXabzqCrlyHsXzQNucSb05qWlfq6N00z80SZdR1n5F/0sDQyFsXaca/K71sMdhgELIcUQXdt1ywuxpIJcxPDg5Z+m3rPupMwN8AE18oeTGi1r02l84pvE9TH0U5GCMryXkWhWFoKnkPbRrOxmHze6IK8nOc7XA7wtjMiR1i4Ol004ZHyOAd2Mu+g8PH+i0puUvBDyiqxUTkNhMc61BnHuju7708MWvGgcw4hZKHWdRh7zVvP2ZSocvozCLV+Kosb9WNrST3A/pf/83f//jsdHgFvYvAFEXfZfTT4EzLjNQ3pZT3TSPWS++//fTrf/7GlXj8f54t3Ot5xhJkQxcI9aXd3219jpdjk43kVM2vvTY6W6o2v4IHxfy/o9b22VCfc+dKWbUSf7HXvFXHdaG3pSQqQoZ800A2mQ7XDfa9MZ+z7G5aTFgkIVckBV+ibRrMOnQUdydM9HI0+iWJj5ski/na+o28IBAHlHhDQuTtVfTq2X/8yz9ho1uwUicqMQVP0ObhBzL+LFLBJwHFVTecmcaHTtsc0z6I+2HHDWR/VRrPyg0AubqUu2mBsCKI3iHSz1Dbxxsa1wGiYjWt97LbR85vsu3270hLm7n8jZEHmZe3T/Y2RBeaWkZFUpok5TQxEZUkuWobANrG19wuDZYHJPp4NK8zojQrcvcXYcK5nbbcF+bxGpLiWiDpIql4C0MImDBuNrpLqz95JUNDOjxLBL7cRbat7aaIDxLXoGb66bo78pJcxFRz6wLdZepKIv+/bZsTV6UUl5RSn8NLtARE0LXUF7s72//V2tKrtRdR/C0zPYtG3P4iJNnVyczeVMFMFUnUFNv3+YXaBxd1EC5g3on5XU6vdJpKNe5wyLRXIiBPEMZektNiCmZDC9QyN3Vyu3El/D9TMmZNN/3ELV/zA/fgchjX2Qz5oiqC+yzpRYuCxhLk+cXV9d2Ht7eYzQlzjE2vJGjflkZjcqHqVB3dM47H5cZdDHyBlKOGBG113IHi/obZ7rKYEGfgmPSrOsYS5LzlybYs9CzPYuVzoL8DLSqoGUFZA5H4ay30A7RycDuJIwC1t7P9SZpeN5LskQ+zNlxjkRd54HE8JpG2xx3ehR3rHMZqPyJZAReOAz2GkEjqMSmh/c5evZKp3Z6kHR/9Rm98adwMn9DNGRJF6vlhFD/uWA52+BdzlFkvw4BmAnmW91dEAMdWkn++uPYxJ1OZrTMtp5aZXNhr+UJyifRFLegeRhy5kysBGqJ2nQ9gHRAAjw3wD83bsEL6qrUeW5BTs8fJtLO01JJb8sDnshTOSLUhlD7QFNyHSgmUvLH7aPs/43dXJVg3XN/Z3dk6xoHuJdFjC3KRZeomUNOOtw2vA4z//MXvDZPog2oUyNQBXIXu98vVGrp9+aHRNxpkYwsvNtZFHD02Y0FrKMhRz8zUHanWYxU96OTzGssvotZXZ8PgIs6DDQzJfSnjFUFilh0UH2y/fU/aRjm2IL/1y3+48t3vftPugOW9fC/6lP9bQnJZ2yFJz/z2vYW65eYMIxhbkHstX9+qYOmyOjW6A94yxmcgFSVJ33lB4l0eRQczLLt04mSTg8cCZJNRDugivLwiutE9BnFgNFDV9GqrM80SNIK47SXy8caCCIhgSyfm3HEKWNIEsJ/nGAuQi74QdwZQJJ8jIGQl9/gYDC6aZJcb5EQeS8eboWl8LcUyq4+snvtFnm1sQfZ1ZadbAAjcasH33JjDhvO4Y7ixPqSouMlXDH7hAQU8VQJAShksv1DCTBpmYNP6H71RHp+fmUhrceZWSblBnU5s2dJhiaYXeJgAGve1VNxuaeaD5kfperndCalmY2wl2X95pl05erdCUn+8t7PVptCawE69ce3FUWsbHp3R14bgIv6M+j5QtTBB2I3K8X1YXYA1hKJ4/nsBovibGyBib83m8GzHWgMyeilLuaBIP+PxcH6NCAguOpxasGHNTl7P/7Bp9C8+xmRrkoav4yrJvexgvGf7d0jaFFHFz8l1R9CsRANUn+DiA5tVqOkfN+6UAAHidyzocz+NbyJlYVQViD0kuTrj9SV9L7pMuyQe3KLp/amkBTz3/GzTbVOkOK/p1Buz8VnLYnqWU0Gd3d6Sv61bnKgHDBpQ+iCJoLV1KSJtMjyj2QnB6CMt4T7bOhO/h4a/4fmNpHqZcuOqLnqap0g3cR84jrhxuUOQfBzbSdy2AkbRZBD+8GM20cDpwBgkBPZtHDmq+pOHe+lj/+HeFJCPeWYpWQpzjEmeSnVfqKDxUon3oCpCGVzTKviQ++E7IHVd16ygIGzX+7mbXJpFwr+PNci8uaS0tDHRNwTkobctXzn+YpqCd19JtePqa1fq/E3SnffUa8M7zld+v+LGtEceZNPLM9S/YJqsCwoY8F1TzDqlts/A/GR2va9P7WZoByBCN/+n8Izmmmv3g6HuxE56gK5H/7jeU4xZl/uu/MiDzPZuFgk7zRlA24SnCccY5x+n1nZsX55rnU4atN24sjaArB4Yb5ROtpvP4ayfburlhXFXF5JywQwViPVzcDastKJd8/GMtcsa5dbDUEMXFtd20M6h5y48jpQA2ylFrfM8Pi5NcFsfuDUc7sQyeH6gYWHZcyZahXIWKSMifUkr+W+dCtRO6wXfNu6n/I09o7wPMXK/u40/DIU2CBfS5uxBF5Okq6hYtbw4aWiy9p9tg8MmGg9sIZomeIdMAUA7yjTucj+gjIVO9l8oJygj5mob57taQfIGVlutoe+yNgPK7cwSrADEjVsq2HJdb6vHwzZ1th9Qx0onpxFKnF6cqfyH+XrjX18qafSk8ebqaytK6QNYIaZHvoyvYbTclAyX0AWRrxdQsFBkxEW/9SIjry6ypMnO4QsbbicAV3q6R8bZDiokp03nAOYyxyRnA5o2xZU4t3ty2kZN0tEBOx742O2P5jVDzVhVXU7MyKuLucW1j+M4+KoXsz2NouUDk7jFz21hTrRvByLSAQ95cTczfMQpM2dq+sC0A/bscfeDpjlC3BB7bDy+FPK1md7OZhs2N0FqH4CYSe1azMYqfmJBkrPY0NqeYae5CAtXm27Fo47QaNVyli33wo2DuCHUtGIgBtVvYTbykuxtImKutrbsTnN36Vo9u1vVG9eVUE9kTAfY6LSSB1k62GyGYuocavzcj5z0+/zUTHXwarV7bYxjBTK7ub28QDe5aUBPhiB26+wPqtDBbq6vlZhuOM5UvAbqyknHL4+VdZFmusHetZSr1RqHH7mxnpFAwuSboKoCfYDuAehbzz3i3HiGAdMQFPU+4hJYHdYSCGc10ROoHt8+Lti15ZhQj5Ukpy1Jt70YT/k1gz2JDjjekXiJN5Q6+hT9LexHSidtpwWT3GG4RetE3Gcde5Bd1eGnmfwhim7cwcwe0cE3kWwJV2KTer2qCqLZ5O9ivrZ6peB0s9Tc49BBLpqYTJNirutw+9jzrKcXkXjeJnIngPobmdW/71fslGB1AIulU+wjz6Pt5KFUN3x7HBbHCyW3fKKLDOI7aQGjoYPsbmZ4aUNXDVsLPmPTlo1Fy2l8OExW2NvZSkbBRRVLjdU3XM4FUvvgViTAiLna++etmYbhtqZ7yxUMHC/iPqclZnttxkMHuchLFTmGa7AlhQdKxlUkRJNxc6axHn/AQ4qXYAtjo4MzYruCR+2Akbey2svfLyvzagN7PuJIg4wX06E+50s1B9hdHZuqTpI2OOY3w3nbvv5f/ubvfxyF0x/DRmYqrVa0zRtap26vsS40YaZfFwOpyAcfKxMuvavgRkXI6AZ61/Nk9bTJCrCBz0q1EUcv7gXyR+d4HF1W3/teTKGTAPvGWBe+GcZVSzYIJGYxGMBmosV9Znmyy2uKJkmeJ62FGbbllPSm2ed+37l+gB85dcFDu9Nyei7tlV+yi7lZX79DpL4WhOKY7Q12OIQQ53Yfbm+b3pxmUoP4BC3NzAaZ4h4jiteiI3IbYBchFmYBP3Igp6kIfniYbFJFDxz1IObqjd92Nz81DVE7lf6mI3d4MCX1Os/Y6za9Op4jB4CYlsvSa1uy22BTuu631a5ZGZShg8wucT/Lr8exJisCErgK1HN+aTdHZzpkERFPknQZRhg0LnR4F/Y07oFjFcVNlmieXllgJEbXIw4d5PnL61d3H9nWY8m/Y17TW4ur698l9SLt9pFJSgnnwBlRLfWVDOTN3UfbS/hbWvkBZ1rYPmaPkFvtkFToUZQ7q7VfgRg6yN4Diwv1xm+zzCYLhlzYbd7ecnkSiSWxo5T6CEF4HYf7Zt6TE0Ri4NFAJImumaEC7jhPNyqH47lwMs9UzAN95EBGS7IiuTZkTCjWX0NPdsUkEKaU8VLSHjJDh66tSKKrLQo+Qssyf5PlaB4Puu21T+QBjN9HBmTjGJC+RhQ/7sHaYVVinvtCff2OXyzjvrSdwxeaEZ2OGjB62+/qnQaWm8IqAuZYWBc+J9hsPour6yKmb+Eua6mvhkdH/6M1FX6x9+jWZbaTra6lqqC4qql1H/EI235MPpghOmAzDcdLGV9D2Zi/4SK2jFnYXZOAU1qsnwTskZHkvIe3qaVuq6Ft2tnfVtz+825rXz6O24bkvAoAAAeqSURBVI6ZuVBe1rkfldCvzVwGyKkx1mKgRhWrc23GA+d01eAh1Z/8YzYQD9AyPSxkvIROsyIIr7jROzc0mvccab9zODWt5UPa8acKspEcLx6bWbfst0d3lqpjSQi0GMOGhJexpQidfvVMDXAbm+I4t3TBmHzt2alJ+YOcqsWqu6Gez/JEDLml5IN+mu65NulJPuaJz+m3ExXfCO5zINUV1OCdDafeITp6PBWJ5/H0FMiHZl4e62EkQXUMGpad53Qk1U5LRe/5c6KYo+y/jMuP499OwhwaGsjeC6WpEvdvTjzXsteZaCJpZhaRNVxvd+cWCts1rAlIMWr3wAyCTYxeFzgmyevV3NlQ3bq6nXBNHdyS1+27l9SdqrrIEXfTptezicWF+vpvXyjx0X5z8/l8fe3/7O7c+m9Z10Fs+NWZYGFK09VY0Tay1+g0y+Ph/KIaV1W9zvLvdxkPE+TUZ+1khmcMhSRjcxHzi40GwpToqtJS0X3U452heMWNNXD2gnNyrMfx3zRmfb/gFT2+dJDzaK9ZnarcBKcIhUYNCRMSOXfncuLQBVFqWvhehe+1a/U686m71FQ3kx4b6bERRkXxTD2ubJDTVIR5MMNpk/LXLSX/O+/gcBDAa7NDC1driEvIWJ5jUC8srjVUHPybomgWNXe8CuDl2cnrhlvxzP9wTBLkECbMw6y51Qlqzt6QzkoaVZ3c9VxpEg4QoAac2IKYv9z490jLd90PgdH1LK3shEBFoFkIyeASzxDhrEjiIXYVtvtgupvikVQ3OGhly9Usi6moeJ+qJGNHDsTU//39oxtfZT1QGtHbPdZnSOL46SCqcaQNH6LTEavTqdD9aEnWmtxx9mnc5zQabFEgR0aSrePQNbLY8Cx8yWAXGnauiTfQ0axXS22CPDpsXXQz2S6Hw6oa62CgjIxIPMtqO+ZSYgcBqn+NU5Vk/2aQbEX6gAdzZ72QF7+FWXdHa3qktfiapFoWQh2cicN7/jRIHh8ED+9MKM4HMqiCUMgDYfl+CA6Ba8GZk5/X12+g+d5pAIxrlgqydSTgiaXnyvglO9JrqVO+vmbzywTrPf1oz43vRKS33c3QNQX99H+/AZ9+P0apIPuZCqtfqYbOVx1vLapC8vAiAYUYivUJ/j8ltivm6mvLaGfD+tlZ9nmeZNr1+sWu8PGlguw/lct7QyY6VvJBQNGs3/aAo3CxEOe/e/SbB9zlirMi3BEAFaIqbr0n6EzX1F8bv4hv+t0LC6P0mgcOE2TPIUD7MHmV0/t+5I1Zl2ag99TMOxy6dJc6/3/a8u/Hwxu0+igF5BQzTczX13/N9mtbFzvhTpxzRkU/DqbEb5mOyq3SEZtAnwr0o8e5Lt8Bjf41yXOYKnkS1o/bUOQ1Bbh9+kBBTjPRcCfeyHoZ8OwSz9DMAVNkEd50E522liNCAN6wgXBtt6G0q7t5GAu6zOLv7mbrb3zoTy+VrHHIdFDg8nUGCvJJH86WIWB+tA0IsTs8v7jaYLXAH1CrUMiQfh0p9ekfm//47YXa2kNknf1geq/QpM+hQyCpSC+Lk77fMEAulI7CsicR/BUCQez1uSsCOjYOxflX0dRjuNRpSdiOSdip+Dcrq9647jomWaTuk4I6ZGdkoyJIr+fxKhjMWMnnQoZai9bFV3rqMefsXNs5LWNhVobTGWtQYJ30OsOQ5NxnNbqXoipJ+XGk5HtQBW6Vk0lFkbpoWj9SVFXIhATyHFrZ8B6QNo4iL06S+2AnPKA0kNPMoq4gDqb3kn7Gfdn8PJsBPtSXvj88+t/I8R3rKluzBZDdpbmW3MJkGS55yPM4T4hl5mmlgJxmXRhem5j6hUs2hNutiXlsx1v0wpL40ZS89PRRu836Mf2OSBoaUsNKQesc1PRlDVnxUTEfshPYHxjWpYBc9GlNF1ghFQPv1owAgEDqBgI5dma1euw6L35I1K+q6kVFYDVzklhxkXcbFZCLWBxmGuQxcmAyW8Sf9HvMFq6trRySDe4XAWaQxwwFZM+BaNNlWfpSavlMFlupV59y3Z0W+tx3j37zFfpXmI0ve0JCkQ84SEyPXWtgIBdt7o80fjw1/bunj7ZMqt+1b3sRwtmBMJ5hUvlvbGndxdg0L8ijOmGVXKg37gyiTOx1vsLAQH6dh0g7F8UxJFXDB8hQbIV+h/V2XjAn7/dBP3fa9coEudCyhaRyJywXIID7fdLn2H+RNCBfh1Y1aODLArlnmYLzUma6elrXQnYyQJ8FD87NdPTqETRowE5yvbJA7poGlvWgXr8fyhk9dJL3LfQcJ7pwj5NKA7nIg/vLPiXldOwy/ehc22mgM6C2yDMN4pihgYyhhXHc+txZ9sfYRX63WH5hrkJN68btr4ZBgPS61xgayEUkMKvE4MLlf7jiuNZdGPjXTWt387qg9Xv+0EDu90FPerzlu1lqwUmv8brnjSTI8PyQo3M5cJxu8jqwvO77l3L+SILsLXkzVwT9LXohgnPShraUgmLOTUYS5CLAuERDHI9NEi17c2qjCzlERe7fzzFjC7KfDM17aRsr1utFmznlXa+f38cW5H5eEscWoSX0e82ix//FgFwUkNM4bmRBHlbS8y8KZDgRSmgNguFpvHiZ1/z/acEnILQ1wrcAAAAASUVORK5CYII=' /> diff --git a/app/screens/channel/channel_post_list/intro/illustration/public.tsx b/app/screens/channel/channel_post_list/intro/illustration/public.tsx index c5b28047b..3d6cfa440 100644 --- a/app/screens/channel/channel_post_list/intro/illustration/public.tsx +++ b/app/screens/channel/channel_post_list/intro/illustration/public.tsx @@ -234,8 +234,6 @@ const PublicChannelIllustration = ({theme}: Props) => ( id='image0_516_33521' width={72} height={77} - - // @ts-expect-error string source xlinkHref='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABNCAYAAAAFICL0AAALM0lEQVR4XtWce68URRDFq8Uo8YHGBz5QfBCNGvnH7/8tNBolIgqIGlExgmgwbX6Vqk51T/fM7GXv3tmbkMvd2Z2drqk6darq9CTZw0/O+bWU0s+jU+WcnxSRJ1NKD+e+Luf8gojcTyk92sNl7eUU6XHOYgt6lFK6z3lyzk+nlP5Zc06MtiVDjK55ZwNhlJTSvd4Jewby13LOV1JK3/K3iPwnIpznrhl27px4H4bXm3Don1UGshB5eS6M/MI93DxcRKT6XM6Zv9Uwx/CzykALuFGFlYdOzvn8HOaY0YsXbdVYlYEiLsRQ4q6LCMD5sMWYnPOzLG4UAhyPx6IHRSM2r2/Gy1oDkUVY7L3m4s+LyDkR+ceBdRQqOec3U0o/+nE3UAy9EYYZHoE5XMMmMlnaZzaxsDnX8bJuxuImmGdilLw2Ax4yHDHQ6tRsd5hF8RnNZLZIPA+OgyHuNqH6oYgAyhjhDwPtH8Nnsx3js+q5IkJYbgLIuyBtnlC5uV043lHSbXyfg66I3CM8QmiBUQD2ZME97+2RypFnHsKTRgbiLnZd3gAb4+Epb5p3PGd/l8wF5ojIX24cS/vqYYESXE0pfW7eNAT73s05hHEUC5e+qJOFHLApL647sLrXAOR2ToyHt7lHOVFUUmjZb+JZc0R06VpP4/jEQHbhmq2M9ZJyFTPMGFdE5FcR+UBErtnL3H0w6XX7+xZs2c6BoTj2nB27a6/P1m+nsdiTnLNN8+odobYakr1ACMtC3bgi8o6IfG+GAMDxKgVee8+LKaXbay649eA1n9nne9aEmKdiLRlaYG0JnoUVBWzFY4JByWaXPTzNKzfrTYsGsgUUKtAwbBbbLRcMlPFAbYMYuHuRO1vXLbU9cs7vpJS+36enjM41ymIV1W+MUoVhPLFX7AGv8JQflrzE0vjFiHVzi98nuV0ycotBXiYsFZq0LKjPfrEvALB/E5GnROQBeGPpv9RoXroEnIrtjjNtacwZaW2IVQZzjzJ+MiwRQlhNyo/gZXNlyJmXH70sNrmoQAi10QUB9Lqpx1tyzs+IyL+Wxd4TkT8tg03AeGRkM275nqVQOK3jk3YHXxQq9pjCy53OObPom+GiNFxyzhdE5HnYM6GWUroTa72Yspf62Ke14F3POwLpqofTnjTgiVKAYNBJVmsbZ4P6azP9n3atIwNRR+FJnqLLwq3GguPwmrNiiCF1Fz+8TmOtrfY5DtOGhWvB2+FKszdm17u/j/f3QszD5ZOU0pdtZR85SiB/4FIpRGPLosUoMzDGuwTbNua+ahKyjwXveg76QaTk0inshBPe5PMs7rwbkFSP51CwkvKp0uk6au0WSxF73SlB4Tv23ZvsA7kdhh1F85yqJDDCF8Ea43qLlAr9sogQlrzmBe+kJ23eNhk0HpIArvUk7Sh65R24yYcppW9swXgGlTi/MQjegpE4rov3xr29D3zykuKi4VQVQls0xLDUmAuxECYsFMNci0370Ot5iTYsbBp+ZIZNa+ulLRtMQdqb5zFdxwzjk4rgYT4GKnN0C0k8yvvKbXsWLNOsF+9WmLRuZpIRr69ksZmZGFwHD+EHJu2pHZzRcLNM9INnPPOmV6IHdTqT3lmshgDhJmxidh8NNOxDN3e8ynqNYfESJhd4g+JObwDQgn0v/nPOioNrwfS03jdbrFoNxkK1JjIO40TQhQd6p5uSwr0DfkRIcQ6v2LvCh9Na4OOet/KgJf1OhyN5+MFxtGKnJyQiP1l220SYPI6RZsc+zmcCOSycJuANGQ4CWY10LIzck6oaLSg/dGx0VtKWNYbrTTUms/HOpJR6isqdtP7nltP0GiPMvac79pm7oz5qtga+i6H47cy525LNOb+UUqLreFQ/EYOKyitOMoNKY4InUfrSFLGlqW7ADqC/JSJ3zDowc9okBbDtXJe2kLm6PGiQajX1G//xgtR5DyWGZzAvaDXDGR6NZHpHBdyRScNvAGGdQhjIKmOOeqHQj45ED7ClB+SqjVjQfiYiX3tWMxI57B5sLf5WpfmoZh0INaNBkLvQ5/HR80Rec5ZqjV1vwJz8pRoINuEEcSTEVNfsQk37O14DzXvC9OaSYmxpWLjrwvb1/l5HsZLc+oTUWhhFhmcs27VCOkHtzbwG2KZ13JJqNuf8fhxR72vRu5ynZ6Ayw4rzdCsnYMmED+QQEKZ41ao95/xxSumrBr9URxReq8Y+W5O69AzXnayGBXGnMQb8Rb3Hjjn/AdhLurY+EHqgSko3EkAdA8GcqFzDNAKwxSB4yPWQvWi2w6QxHviiAinLehGswacLKaWbjVRv0sHcxeUP/V5P86VmCottBeI6t28v0CagvmhwCGrAZ6NQU2dnI031WWuAdio1Yng17VWAeJXoqcEhuo5Lu3y6xj+0t6zBoGrUbLhTNb+C0XQWFk7alg6TaWmv/x1btVswSHsNi+oOWxQq1pjGXW1WJL5hAgJGqbgzGHNzE9O1NyMyabCD8TD6wWpmZVkInIH38BtQ5rP8roRPYW4/krVEtdpOIva1i9rn+6KBNLxGjNaMxHfTwP/FQJcQ0+Gh66RdX22hQ432s3UaY7dgU/sxTgTSnrZF5F0RudGEjHYI8TYRuRX3WLR1Vi9DubBqqfzYpyec9FzV2CeGS8NdyiTDhU3GovV7g6YaZj2cb7XztZNe9CE/NypWwRnSOoy4wpJ2yBhSOp+hEUYJQtp28abWU1HguWXeM8liAwmd7t4x7Hjb2PSN4D0fWdjBbwB3PAcD8YOB4sR10oIl48W+k4XzJkVUzqRZ8Hdh2BenFzHreO3FeGey+aTjbdU277n9qlvdyzopVm1SoczXcOiqiFClA8hMTVXk6U00GwmhB8JgKooKhu5J9Dj1UPV6SHxZ813uQT1vIHRI/ZXKLIgNXBukbdqcM4b0UTHGLBvs2gtZkg+vufBDvccN1CrrwROOaUgZQeT/EEWqfAglfR6qfcKIpv11ai5XjZmBtO26tJgtgzYCKt2NY4tzWQuhgRFehee0IWEy4CfsQQEuonImDmDz/z8aAcPmt4D3bqRK8Dr8R8sJwxomqEjr7sQnJTSZqmwlCC3a1kBtK3fpeR9n3m5VTmdg3N3bHprwLvsFXHU6aqHE66V2yzm7Mta3UKmgKt6ZY2izxuvFg1wEVTSIo0Z5u42y3aHczPCrxry3XW0cNNsfWsKsQx7vijjNQ8AmKvVroZqnUAWoX4EoppQesP0AAUPjJVqaLD2U5Ch60iHr+BMX8CjCwvWG3hgrbdRQXuAlAPnvsYrvKeh7WmzGOiJye4sPFPA1lp50KC08tbNtAGIIzpDaqa18BzMYAzXQFmxohfDeuA9sUw8JOEloutI+qt0Z7+AZ/NN+chBLuTfxHn44TkGr5UhUznfI4fAZQSe58EN9ZsKkgzhcZbtxrOzVvYdfKEeURMYWaxtSYQg5u/XhUAtf+z1uIO0MmgE+TSl9EVL85Jli7R4wA21mZVFEBcAXpcjaC9ra+5woVsWjiZ7AnzdSSrQ5fO87oeUFaMtvXCukID+3h2xrRpi7Hscgwsnvtg/+ok4ID0OpQbX+N0brYAz9Z+1Vd44dlWiqIoqGI97s0papNb98WgoIe+rvKjJ6ou9eU+yYPKek+ZmHjET5HcqNz8N8HuNBFplYMFIeeojJZLqedQwGKw9Y6nX0mvSNwWjDInXxJ8CQummWud55szsHT3ozqn6QgTHhhGfoPrD4u2HQOz3b8NiK1BhirWTFSw7nQTr8Y0Nuu//LwlO9KBivSwh3fRTYSe/4vj8X52K+m7CahIYHselYJ46ljWG3WsZqu8KajuK+F7XP8/0Pwx3exhMOW2YAAAAASUVORK5CYII=' /> diff --git a/app/screens/channel/channel_post_list/intro/illustration/town_square.tsx b/app/screens/channel/channel_post_list/intro/illustration/town_square.tsx index c00f633eb..4623cbc5a 100644 --- a/app/screens/channel/channel_post_list/intro/illustration/town_square.tsx +++ b/app/screens/channel/channel_post_list/intro/illustration/town_square.tsx @@ -318,24 +318,18 @@ const TownSquareIllustration = ({theme}: Props) => ( id='image0_653_17815' width={82} height={250} - - // @ts-expect-error string source xlinkHref='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAAD6CAYAAAAyYxAYAAAdAUlEQVR4Xu2da5PsRpGGSws2YGzuGLPc/WH3//8dILgZe3EYA8ZesMFrbTwZmRVZqSpVdY+mpe7RiXAcnxmNpvUqK69vZk7p/LMJAtMmdzlvkk4gNxKCE8gTyI0Q2Og2p0SeQG6EwEa3OSXyBHIjBDa6zSmRJ5AbIbDRbU6JPIHcCIGNbnNK5AnkRghsdJtTIk8gN0Jgo9ucEnkCuRECG93mlMgTyI0Q2Og2p0SeQG6EwEa3OSXyBHIjBDa6zSmRJ5AbIbDRbU6JPIHcCIGNbnNK5AnkRghsdJtTIk8gN0Jgo9ucEnkCuRECG93mlMgTyI0Q2Og2p0SeQG6EwEa3OSXyBHIjBDa6zSmRJ5AbIbDRbU6JPIHcCIGNbnNK5AnkRghsdJtTIk8gN0Jgo9ucEnkCuRECG93mISVynufvTdP0540wGrrNQwI59OQbX3QCuRGgJ5AnkBshsNFt7lYi53n+Tkrpf6dp+uxaLOZ5/o9pmr649uf9z90tkFs8/DzP304pfTZN0z+eer/DAYmUpJS+NE3Tvy99uOj2zPP8Wkrp062kbu3zHBHIL6WUXp+m6aMrgCyO6jzPbyiQF7+US3/34YC85AFU4v59jfRe8ntGrr13IF85AogAfZdAzvP8nymlP91C941a9rsAcp7n19W6iq4bfTi99jWs8jzPX0kpIcGfjBxVu2ae569O0/Rp72duDuQlILiHeUWOT8eSz/PMdQAnhmqeZwzXN6dp+ssaEEj4NE3v9cA6lNWe5/nHKaUPnuJIP+WBMVDRb7zm5cbPcHOJfAoITkK/P03TByp1vJiPpmn62H1/AZaX7p5kX/MZDwekHscvm8TO8/yDaZre7xzNwomvSd014FzyM4cDMhqT3rHTSIi4+4uoC+d5/mZK6R89CVR/FEN0cRBgYB8SyJokqCH5lh1pd1QB6/+wxhrJkMgoEhHxZXAvD67em7B0YZ31e0RMq8mRwwKpD/CVmrtiMTTuDHG5AvkZsbbqyyIkRD2ogROAkdRR6VNV0w1ZjwwkAM0pJeLl4ngqkIBC9obaDBKZpVCPNKEj/iNgF99XMPn6Gz3XaFRP7gokTnLvyMRj2Dj2SAxHu+bafJUX0vs9o4C1rtsbyB9P0/THoO9EkhqAVYEfjT56YHGfa0HfFcjeg/nvr0Upli1PKX2eUsJdeo+vcWxrVj/qSLtGdSyJ3uyTjn7GQwMZj766Oui1jzT+/hxLO8/z2ymlf07T9D/+eKsuJVaWELHlk25RBz8skGokOPq/jVJhlhQjgiFSg/RxMDiLFFuMxUelbeS6wwCpPiBGIWdnVGdxRBcJBc3m4Ih/wlHUf7+qOg7DYwYoZ82fM+LZFUh1U8jqVCMKlaCFixJ9O/03PiSuEMBlP9LryKcaJVUVuFIL53xvIIfLoSqxHFcMCL5lEcGozuQU4k8KkAaouVAKuBijirooyrt6P/xX759WfVL5XSPn/9bXuAevAl0J8Uj8oiupGmK5+YOzDghIO0kQURlrUtmL69dwOCqQkpU2a9qQQKRDYuB5nnNazfmkoiMb/qjXm0gihupJlcabAtnTUZW6tAFaRCzqBmFYSJ/xH5JnIZ84+M6PNKODs80fLD0GTFJzW9W+bw1kM+EaohuK+tVsi4L49jRNv1YgJBepP8/RFjdIARKdqdLd1G8e+GvV2E2BbH1Ic1UqBqDI0qixALiYpABAgEJP2nH36bXsU6qn0HxR9w5kVVKj3xeiFimIpZQ4suQR0XV/cZYaIE06f5ZSekcl9Vlq4UeRyIKmoscScAv6stexRoByABaJjpqUu5gaCcY9ejJ5yiT4EEBWjjTONdLlfTgkD0ORs9U+Fjfj4nTtIlPkkxXRUdf7ZmAvdYWeDUgN79BlXbdCdR8P7h9EgLDoRv3Bn6aUsMoAihST+X5PjyxOOl/nbzniAeha7N1kvl2ayHhOIHGIyS362HmVaaYWmSOH1c25SnckzZUR0Ax4owIqkCKUeg8km89AtigzJtz9CkLBtYZGft9TfvjSn1XJIzFhtRMkgofBRUGCMBAUoRbMCOc7Un4AHH/sCy5QMEoLysmWBNNddaQC+jX4PGoscEcWiQtvMFRVoCYAXxIZmtDFYhextfqFSP+b5Cj1389irY8AZJGlqUm3SiEWFinleKITAeSP+j1OFP/OZVTzE/W08TtE747Ufi49Yf76mx7t0Q+qEksY94EaG8nkWCFf/UY+ezZmTso58gBr0Y6wdlsUaCMRuLJu1zjWnmN3IBWAb1d8RolqVPK+bnUUZygWTDNvad11FkLCOPv9SnSF5F/N/r05kJaErfF5fBbH3CfVoUYCyBygWH/R+2LpBax5nolm/raSNEZNkG8sCl2jVMD4Qm4C5IhPZkX/SBupuSpKDQQArD1lBiz/txQ4I6OuSliLOKAvoZtc2QvIbia8V09Rl+Xr5oDrAwtJStNobyqr1yqGiyz6qI6+5rqbSGQlBKwyaQPVxCIbST6klAARNwmjQ7gouUhlWAg1OlJQNCH8L42Qru7fGQF2FyBNmlb0Fw/9lq+tWLgXE7FaPfyJZndyDjNS+mIYOprQHXWbdgNy7S1H8r0CL8Up/TlLYPDPf6aUcO5zoWpN/1VOx6ra6amcXR3ykaOi4BXxsW+ti3xJlTCO/4cppZ+nlH7nQtFqVPMUrs8uxmbFd4tdCL1yAIkQYVaY3xkSHVLI0gwQzrp1N/wwpfS+JjKQZvTmJl2xh5HIXt6v17rhj3GF68OLQRp9eg7DhON9dXvyISKbSqUwNxLVOmMbbDJJ/KaUXtXClug5ZZPhR1qJYSHhW/DFbw5kzWio7sMqS87QfyifDF6hq0iXgwJCPE4Cg6MLsFbHEcPjs0ORMz6ScB7V5fIsl1y81bWWYAhJ36E6ivHBXZLB5zbRf0ik7/6qZcaFO7nV89wESJWKVSaDSt9bKaV3Q8K20GeuVr1oZleA+T3wxoWusuKnDvUXXgL0LhJZ8eXo3sKqehYZTva7Wpf5s0Y0WZIUOEkI1yh8oyCEbHo3lG3dd1cgkZxpmv5qDxNCRDMghIgc38g+k9YQb2yCvo3TBKotIQHIqydY7QpkRTJbrRxSxLJ6Tqujy/fTWPFsNDIZleCbSWSt5ePSCKLlW1qHljnU+m/zFTniNcNCYYzyrJQjFGyc9U1np20ukZpQpdbs9V0RTWhWhqNnkUdu3HTgkCESYqmFi8p/5J/4j39SyRQeuQ8Hg9XGG5As0VOlbu3nNwdy9MO2siqtov5aBKRSZqQAJBRdJ9XDivoQwtVIC90lamEXICsJh1w6DYV8HhqJy3VsdYGksKXZcY7u3x0jV4C02NqA7IWiDdCHS7i7AOkeLjdhVjpY+R7xMFGQ9RWS9Qaov1FacHxy1Ii0ybnWEYioAMzXeCHmrGeGxujpGbluVyAdoAUFRXViTjjo0cWJ/r1rAxF3SP8Nbzxyh3p5xqsHNdWAvSmQ0cis+X0tKYgtGmrcMEjZeI1I0NbXPDuQo7qpkfkhM4TTTdhnrNxFh1etjdhJO5JnZAP+/2vPYcFvAWQ3WlAQpaDljAbHXQxKTXI1hkd3yvetJq4uEbqVl4DLY8zdXKbtEUz1HsUL60nwswOpD4nhwNfzCVaxiACgDZme/kfhCz+xVSKwn8UQ8QKE3auO/78oNUzT9Ju1h9cXAYFgk0z5rYCMcS9HTCapNKIRAOKzZQNi+UctgGFcrDSbi/lWGVRJ9rS/Rc/NSNN9Twr9928C5CUfSCW4xmm0egzWnGObSayqGswdkgqjSjvX8nOoCE93efLkqfhMuwPpMj9Zl3odpeWDgk+uYAMmKgCXiPwjz0I8naMWayeJ2fC1WvWocTwUkPqgBb8xGhYFxhf+ZfKUOur8bE4+OGofhuW7ygVqjXUQya5Qswt/dPQ07S6RHYNA+IfjXbB5Q20n99OEl1B0Naj+9F5Bkz9uXkTPuu+qI/WBqjzEta5YK1mozkPiiMGtWUk6Y8OUvh9N0/QH508WoxM7L3Boyt+uQKp+a7UPG7l0MQ/NUZ0BZOHjDc76uV+HPL75eZ5/0ZhTsQDXOdmSBfJFfWs+qrTZcdT5k4cueRLqtcakpytvriNXst/FDCBzg/A3tWZTVA59SOmYas20V6vF+RLC1RqYNwFyZCYuCY3avJ2aTrWRCsrxeSelBM35l63ppQoWakMsfGifg1zA/Mkn9SXeBMjesXAGAUvKNAAGIHGccXtsdKHVXNCRRC1YdEoaJDSsQZ7v4fagQ5uzftTv/Ib6oMPJ290l8gIgM6vWxtdood/H6FbvNoudp+g3RjY8qVth9LPfXCJ7mRX9PuFe0cqhPCIkkawQGXL+X0ByFGib8Owb3S3BsYnktYDdA8g89r9G2Qs0PT/Eo5j8bKXZShdEscjCqYjcTjcqZapPh17AzYEM0Qf6byF9TmfK0gqNo3/q3SYFCH0IHZqcpPXiWHOouD8tVpuCVGSFGpmoauR0qFjbLKjR8TStVh0z48nzLqVmvdo8LEdcBspZXlJrOgBcjZ+jp3BJ+fVQQKq05MSBAmRJ2ua053is9d/ozGYZIbg8pNagP29GGtj7aA9V8jyf0tJqGnMDHlbbZpKby1QAqpVG+hnNJRqaBn2JLt0VyNEPqkcV5hrzIaVdznXOUqqQBRiOhGoTBApWRaV/sTmtavSz2XWHA9K1/eZhSMFAic5TR53P/6EjAQAy/iXukbDXNEtkfYpWB0eXrs4cH21U2hVI39IRohoccuoxwjHXPz49hvQBknwtTE0x/ril1wg5/diui8bTtIY6HcaPdMkIKotidc1f4+8aSV6dcTq8CAH5YwPckVpxzHuccK1WIr2+KFaMa7j0OPvrD3G0ffEqPkxrYIjqSiQUQ4M01njlmbgaj+ro+oFRcA8BZAU8JGUxVaByHW4MDjuAMlxT5gG5sV5IPVLeJZU+tf9mdyBHUmxOHVRb31yJQmo82mKX55ub499SI9GfHZXCXY72SkK32huoD4dTbvMgbciHWea8pVMblpA6+152tjVlhoUmPeeNT64bje5jWAP4ZhK5lvVx7R2LcE4B9fNymUVBIpaJp1Kk0vIshoiXYr02mSgQ3KfNe2xEfVwjxs/1M2FgEoBZd5aEka4lToZr6pElP2mJC7Po+ItkzQsu+3N97kMB6Y+XhnTF2C7nIuGM4yPahCmOPH6nzfqRI7tGwNKShJUduos3Rl7AzSVSAcPv8zu6hJ3r9tJYgtbnI4vB7Aocje7G3MXQsJRtsfLPx9pxpAMlC794YwS02jXPCqS1b6xlWWoNnk76pH7jrLaRo4y2IjVuDQeRTJvMJ+SpxmwhW4YhqsMNG4lTrbprAHex2te+6ZD+WiRi7b6hrycTAXqTpvUlFXXzFvnqEFb7UiBdJ4J3ZeIYbenqSin9MGTP/bo/rxJW9WEtBzD6uZ/1aI9+iNZ1jekBmUVmvqayKsiMU6OWyc/KAvZT/JA6qIOZD1SJlBbDQ0efYVcgg+JfZGesP9uNLiQUZIoKkump0t5y4z9SD/drBTjqAAktGmMkjnsvlTYK4u7uD75ebYKe6+6S5iQX2tkYBouxbRLVf+sR55hLdtyPQXQvAsCRysWOnF4Y2gN1b4lc4+qs8RcBkrBP1uxp+YHsT1GDUcIAVro57rAHkH2/R77aHUhrXu89UKXFzid/rRQbh42s0vhGCfkjsfgRgIwE0eoyxxA+WvOSEU4lqz46OcXRBa3fEWtOe4kMaLpmJtBNgPRLfXqSp7qqKMoHcr40drqKYE502MYmTfIK79za9qypcy2T3ju+h/AjO2m0bGEtqgkOtqXQZB2VRiMAyIB33JksjeoLIrHfrfCHhugnIy87XnMTiVz7YC0Oj1PyfrLKYl6PAgfQqAjKtSQ1cKVohhIKYI37qL/Xq5WCY36pdO4OZA3kFl+nFu65o1vtHazUajJjzbeH+OtqKw96UnpIIPV4N/ut53mWXsWOpOOYY0RsboaVcm2cbDEzowdU7/uHALIxmaU5Vc+OnSPk+y4wACL29jtpqwNCVPKsJ/JJM3mPAiQOdp736PQjVD6JjS077qKUmMAodmh7CVK9+Q0NL/Nwu5BMznygtRHaLd/zJkCucRQVJDtmxcb1QM/LBFVza1yvtuUYczSkYFBuwNe0UoTVcVaJ9+pGQboq9ifqPQtptxd2EyB7+qX1fc9fdMdZ5k2GckOtm1aiGqtLNTom4hA7aX9W2kyzR7L2eW8GZI87PuAiFZNJw9HN61tcHpPMuRXNLJzMWSOTLk+bMSPnFmYM7224JZAXO8OajMCt8d2xfkaQLQqyHm4bwGn7GQxIgEYPY4CE5aYvQnYlNvzMiyb33QzIjsQtWuTi9aHk4KdBS6NTYKZJIcxN88MQWVxuawkubhtZY6gdAsgRHeqa25EyI5zC9TG/kJHZSC/NTh5oyXn6MsJah25PxbQSI4cBUjlAQhqtSKPMkFTJk6GdbuAckpY3LLn1A/nIVqbiY825H+138setB7TJV4SYtUbTQkXp73vtMEA6Nyjzv32zZmU7JzqvmJKiHEjKCcKfDAZJ9ovZ0l6th9v2paKfx9XGZUty4FQuxu8I4CPH6rmuaQxN8lNT8iD2ipQudNw8z5QcfqUrWWQXWBw3ixTGo/0Uj+IQfmRrvLZKZ9EGVxnM/hN/NIP0GSvN5y0BXsZt2/0bO2hFJbS6dVtCtatEdhR7XMCbewqZrqIkfN/suWCfOScelymPZtCQEbCLFFtoivIvsusKHRbIlWgn9yTaEXWGxxi7eVJqYx3VYnCxhrHVAZ6RDBvLxOKLPpf+u+S+l+T/1ErGjLqtZQFI67HxJQgvXXkKlh5xQk5SbDjptpogZ4JG2+oOAaSFZpWVAzXJGeraCovYPJDVTFPUsaOFtEMYm57Uhqz1Yh1qa7OIHkVco7gq2mab1/xDW2RZTAfsfca7ADJIiT9ukv3Rowip1NJoSJuFgmZ9OfZG/5O9YUppicnfPKZWT0jrNFS3xR/maI++eReJ1KRK2o3DeMU8dMSNd1gsWlPw/Abl1sjFKqPt0ECujJhZRBwKRJGXdHPKIRBYXA6RHykWCWemuZKr3k4p/SZEMbWqZeYredVzGCBrWfQKTcVXAH2ng+m+2A1rX8dSA0AezmkujS7VwF2SPvFLToZfcnQYIFuWe+TBfPuwX+DrIyS4k35FtGsMNf3a3M5Zc7ni5zoUkCOgVWJujjkNn8L59rRlP9VPQfXHEuNia1NtDkZzrm6v7fiugKw5x254ks/gFGMcnFWXWrdj9TJESaYPmKXWPRD5a8FzaIaKhwCylgW6RjrDQ1sZwRqb8p4xi6TUhSo2GusUAnRq4YeqTsX1qa64OgqQq/u+1sI0tcxYYEn2OmZFwQe3hG+jPpMJBLFlr+NuZb16CCB70tcCUiVrdtvdbeOSLzUgmdJkHxeuOZBstpo5+hzhqgVv1W3uBUjTbWS9CzcmHGerKhowFL0Y3UBEw9/0LfI3oSOgEQUVjU0qubhWBVmh97LvBciiPc5JkqgEDfkID4k6fOKWqMYsOUfdhhwDLD+bR0G0gNKjXu0i8z9zL0B2N7CHcu1qL6P3WV3TPOFljqNXiLEi5bFId2gga2MMvTSGmDqPhFVdCPUEnTk0lsZcJO8KaceEkLP4um3/rFnuowO5xpGsSqkbEI9elWVBQY8COFa+e6wdqM0ZGybRhwayp+AtH6kGIpNKLTT0BTOt0wAILSQy1SoccbLkSLFw1EcccU//u2sgg8QIYVTBWaS6lF+J820jHISJVhniibRi1fOYxXme/0s7yyRzFF+wRFe9t36E78eYecXC5u2eqt+a/B61xguGm9W41S2yKQPN+rq+uGMxLVYAkqVBNvestYNGjVNejlap/nG0ZduSAoC+zEvWoi6trDYwHlHedWtG6i4kMlrqeZ5JwjKhj0J+7s2uHLkikaFlhkxn8Qw2A9Yv9W3dr+YaHQbIkZxfTWLjBvlgQGyWWk6zBamzSIiMEFgAfB7HPaLWzEs4DJAjH3r0GjdHEkZGzuL4+rk/9kpoxcBErlBeIDTPc6bI1Aj5dwOkGgckJvqFPkERexgJC3HK/c4bM0iEnUVaTE+FDR6hnmOVyKLlOaoEuW70Le99XSu9FY5qbchH7raN+tT367jJ0dzSj5j969qz586LvQHa8vfX+qrjKFmtICJ1jKpBHxo5KxfObDe36tvV/WC2Z+duJLJhaHLWe8V1kqVrlWjFil5SFLO2PM3WW4rNj1C0RAj38wPu5D73DmR1kFw47l6H4keS5CXX6PONhIfvu3q3sHv1BVi0BKhC0nJ94XxNSg93DWRHCpvLI9VxF9fIEfsttwnw71sbsi0Y8oM6rTXaNs/fDZAqAVXOjXPWkSArNbQyQ56VViOmSoyuCQ6+jwRjvWXqfnSP3O++j1i7Z5Dcgt4FCV+Pos0FkuZ49zVbaI7RwXUCLAbVMTbRL6rEOAHo567/EQkmV4lr9elDHe2QJV9sbFJHPWe34xSBoFsBCaOyWENg5WO9npf3xaMBiZTY4ouijWNktAKL3VQ9/HqtyyuQsySsfAggaTaapqnpOGszEkdVIhy1zkWNxsfo+v+e4re41ulHiZQeAsgLdCjxNA52dTJVT2q9ox6d9ZcCJMYGIgFZoKIP27JHGhW9qdlxyFWWKffsjdiygr/JcqIPHxbI3rguF2e32udk9bTG3bwAG4Pje3sAG6P23l0DGUuoNZ9yxWkn+yPrW/SY4jNSdcT1iXxyLLiR9JFCwEQSrU3vvt2fHmdRIxisuJUWAEh2dTs6oPF9/HhFzwVCEj9z+8MAFSAJELJ03pVE1jaA9AxNI9mR5wZZH7c2gsILAhPZEaYRDq13Qpl2KwU58tRvcJMkO3RvQK5OtddoZEEKcEdeWpPVBYojEjnqrX7xTIHRYlmeEG1JjLsCsid9LplQtNh53el8yKKNRAHxY2/wOwkL+VvSapa/1A4Jqo8kPh43+xPTaFbUahzz3EDvs/C2r1s7aCEV4JQTLhpXHV1JWg3SwWNENmuS2iIXqL7DWLzq9j7YuisMTG5BdtfmKVYqwVwn2+0e6mivuDp501K8Rh1x4nJb0SI9OSmld9xIBqFG62ClQj/a/V4KkLV2u7xHR7NCBSnf+ZbQVaBNy1osdZ1itfL1hweyMSkF/YYzbftlfcdDDgONH6TGBknFKednpSzhjNgbdw+k6a8VPpBfN2AZ8DhyRhYMubm9efq+uTfG5g05TyO3fvwIQA6PCrMpLC4stAhGiKQpJUYjvqu6sLq4V4EFaKQ47/u+eyB7vmXPoitfUphu6ifm0dyVxnmbwYYPWZR4XzSQTsfZ7jDb8kkCeLEZWY0SutUWXGaj89BAtmoya8slXXqt6Ak3agqjctyyIkm1PXyGvEb5q/iRHFeTLD9esdoIEGYJ8XPE7m89tESO6E/jZdoMtDBFtfAX1dD45ntpZLobDvkIIFtco1FOXrXq6+Wag/TrpT3Z4P79yFEAe0lgF8n4cNFi71x5VGo0rtInRSZp9IPc+3W+LKHlWZISi66wGom0E8OTPXoZSYtGosKWCjV33lQSGjK+wW2Yp/hFPvKVF29sVqRNenTCoCYZguzqN/y4+J4PBaTG3fh1i/GynQjHLzSXGoz6oH5onU2S9nXuPDnwoYBUg7HWCJofPGTRu/Mh/RTUChf9+w8HZEUfxrSYzCZ34WFrdFf2IeMg5TjtdPcZu7fwBNbcnrW5lWFSoBH2MUx+mxPGh6+9TKvdKIIVu8TC0c87HRqTCk6r3dKVYeudNJW6FTB5Lrrq5e88vI68VH3UVIEyLnDgZcpfbRPJiwXST3j2hkf/X0j97ut5vZUmghdk/5cOZNHE6YCrUmNcl5jNOZdt8/zciwVy9Mjbljsfl9usS1txwNH/f58RJPZm1Ts3AAAAAElFTkSuQmCC' /> diff --git a/app/screens/channel/channel_post_list/intro/public_or_private_channel/index.ts b/app/screens/channel/channel_post_list/intro/public_or_private_channel/index.ts index e3a18ee76..79715c3e1 100644 --- a/app/screens/channel/channel_post_list/intro/public_or_private_channel/index.ts +++ b/app/screens/channel/channel_post_list/intro/public_or_private_channel/index.ts @@ -6,11 +6,7 @@ import withObservables from '@nozbe/with-observables'; import {combineLatest, of as of$} from 'rxjs'; import {map} from 'rxjs/operators'; -import {Preferences} from '@constants'; -import {getTeammateNameDisplaySetting} from '@helpers/api/preference'; -import {queryPreferencesByCategoryAndName} from '@queries/servers/preference'; -import {observeConfig, observeLicense} from '@queries/servers/system'; -import {observeCurrentUser, observeUser} from '@queries/servers/user'; +import {observeCurrentUser, observeTeammateNameDisplay, observeUser} from '@queries/servers/user'; import {displayUsername} from '@utils/user'; import PublicOrPrivateChannel from './public_or_private_channel'; @@ -21,16 +17,10 @@ import type ChannelModel from '@typings/database/models/servers/channel'; const enhanced = withObservables([], ({channel, database}: {channel: ChannelModel} & WithDatabaseArgs) => { let creator; if (channel.creatorId) { - const config = observeConfig(database); - const license = observeLicense(database); - const preferences = queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_DISPLAY_SETTINGS). - observeWithColumns(['value']); const me = observeCurrentUser(database); const profile = observeUser(database, channel.creatorId); - const teammateNameDisplay = combineLatest([preferences, config, license]).pipe( - map(([prefs, cfg, lcs]) => getTeammateNameDisplaySetting(prefs, cfg, lcs)), - ); + const teammateNameDisplay = observeTeammateNameDisplay(database); creator = combineLatest([profile, teammateNameDisplay, me]).pipe( map(([user, displaySetting, currentUser]) => (user ? displayUsername(user, currentUser?.locale, displaySetting, true) : '')), diff --git a/app/screens/channel/index.tsx b/app/screens/channel/index.tsx index 7ed6ba6e9..f911ca0e4 100644 --- a/app/screens/channel/index.tsx +++ b/app/screens/channel/index.tsx @@ -30,7 +30,7 @@ const enhanced = withObservables([], ({database, serverUrl}: EnhanceProps) => { distinctUntilChanged(), ); const isInACall = currentCall.pipe( - switchMap((call) => of$(Boolean(call))), + switchMap((call) => of$(Boolean(call?.connected))), distinctUntilChanged(), ); const isInCurrentChannelCall = combineLatest([channelId, ccChannelId]).pipe( diff --git a/app/screens/create_direct_message/index.ts b/app/screens/create_direct_message/index.ts index 4e8c607d2..8403c4454 100644 --- a/app/screens/create_direct_message/index.ts +++ b/app/screens/create_direct_message/index.ts @@ -8,7 +8,7 @@ import {switchMap} from 'rxjs/operators'; import {General} from '@constants'; import {observeProfileLongPresTutorial} from '@queries/app/global'; -import {observeConfig, observeCurrentTeamId, observeCurrentUserId} from '@queries/servers/system'; +import {observeConfigValue, observeCurrentTeamId, observeCurrentUserId} from '@queries/servers/system'; import {observeTeammateNameDisplay} from '@queries/servers/user'; import CreateDirectMessage from './create_direct_message'; @@ -16,8 +16,8 @@ import CreateDirectMessage from './create_direct_message'; import type {WithDatabaseArgs} from '@typings/database/database'; const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { - const restrictDirectMessage = observeConfig(database).pipe( - switchMap((cfg) => of$(cfg?.RestrictDirectMessage !== General.RESTRICT_DIRECT_MESSAGE_ANY)), + const restrictDirectMessage = observeConfigValue(database, 'RestrictDirectMessage').pipe( + switchMap((v) => of$(v !== General.RESTRICT_DIRECT_MESSAGE_ANY)), ); return { diff --git a/app/screens/custom_status/components/custom_status_suggestion.tsx b/app/screens/custom_status/components/custom_status_suggestion/custom_status_suggestion.tsx similarity index 100% rename from app/screens/custom_status/components/custom_status_suggestion.tsx rename to app/screens/custom_status/components/custom_status_suggestion/custom_status_suggestion.tsx diff --git a/app/screens/custom_status/components/custom_status_suggestion/index.ts b/app/screens/custom_status/components/custom_status_suggestion/index.ts new file mode 100644 index 000000000..911e4d312 --- /dev/null +++ b/app/screens/custom_status/components/custom_status_suggestion/index.ts @@ -0,0 +1,19 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import {withDatabase} from '@nozbe/watermelondb/DatabaseProvider'; +import withObservables from '@nozbe/with-observables'; + +import {observeIsCustomStatusExpirySupported} from '@queries/servers/system'; + +import CustomStatusSuggestion from './custom_status_suggestion'; + +import type {WithDatabaseArgs} from '@typings/database/database'; + +const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { + return { + isExpirySupported: observeIsCustomStatusExpirySupported(database), + }; +}); + +export default withDatabase(enhanced(CustomStatusSuggestion)); diff --git a/app/screens/custom_status/components/custom_status_suggestions.tsx b/app/screens/custom_status/components/custom_status_suggestions.tsx index 58513b4b3..6eb6a962f 100644 --- a/app/screens/custom_status/components/custom_status_suggestions.tsx +++ b/app/screens/custom_status/components/custom_status_suggestions.tsx @@ -13,7 +13,6 @@ import CustomStatusSuggestion from './custom_status_suggestion'; type Props = { intl: IntlShape; - isExpirySupported: boolean; onHandleCustomStatusSuggestionClick: (status: UserCustomStatus) => void; recentCustomStatuses: UserCustomStatus[]; theme: Theme; @@ -57,7 +56,6 @@ const defaultCustomStatusSuggestions: DefaultUserCustomStatus[] = [ const CustomStatusSuggestions = ({ intl, - isExpirySupported, onHandleCustomStatusSuggestionClick, recentCustomStatuses, theme, @@ -81,7 +79,6 @@ const CustomStatusSuggestions = ({ theme={theme} separator={index !== arr.length - 1} duration={status.duration} - isExpirySupported={isExpirySupported} /> )); diff --git a/app/screens/custom_status/components/recent_custom_statuses.tsx b/app/screens/custom_status/components/recent_custom_statuses.tsx index ef028e784..3a19f5498 100644 --- a/app/screens/custom_status/components/recent_custom_statuses.tsx +++ b/app/screens/custom_status/components/recent_custom_statuses.tsx @@ -10,7 +10,6 @@ import CustomStatusSuggestion from '@screens/custom_status/components/custom_sta import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; type Props = { - isExpirySupported: boolean; onHandleClear: (status: UserCustomStatus) => void; onHandleSuggestionClick: (status: UserCustomStatus) => void; recentCustomStatuses: UserCustomStatus[]; @@ -38,7 +37,7 @@ const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => { }; }); -const RecentCustomStatuses = ({isExpirySupported, onHandleClear, onHandleSuggestionClick, recentCustomStatuses, theme}: Props) => { +const RecentCustomStatuses = ({onHandleClear, onHandleSuggestionClick, recentCustomStatuses, theme}: Props) => { const style = getStyleSheet(theme); if (recentCustomStatuses.length === 0) { @@ -66,7 +65,6 @@ const RecentCustomStatuses = ({isExpirySupported, onHandleClear, onHandleSuggest separator={index !== recentCustomStatuses.length - 1} duration={status.duration} expires_at={status.expires_at} - isExpirySupported={isExpirySupported} /> ))} diff --git a/app/screens/custom_status/index.tsx b/app/screens/custom_status/index.tsx index 5aec63c5b..e923a0526 100644 --- a/app/screens/custom_status/index.tsx +++ b/app/screens/custom_status/index.tsx @@ -9,8 +9,6 @@ import {injectIntl, IntlShape} from 'react-intl'; import {BackHandler, DeviceEventEmitter, Keyboard, KeyboardAvoidingView, Platform, ScrollView, View} from 'react-native'; import {EventSubscription, Navigation, NavigationButtonPressedEvent, NavigationComponent, NavigationComponentProps} from 'react-native-navigation'; import {Edge, SafeAreaView} from 'react-native-safe-area-context'; -import {of as of$} from 'rxjs'; -import {switchMap} from 'rxjs/operators'; import {updateLocalCustomStatus} from '@actions/local/user'; import {removeRecentCustomStatus, updateCustomStatus, unsetCustomStatus} from '@actions/remote/user'; @@ -20,11 +18,11 @@ import {Events, Screens} from '@constants'; import {CustomStatusDurationEnum, SET_CUSTOM_STATUS_FAILURE} from '@constants/custom_status'; import {withServerUrl} from '@context/server'; import {withTheme} from '@context/theme'; -import {observeConfig, observeRecentCustomStatus} from '@queries/servers/system'; +import {observeIsCustomStatusExpirySupported, observeRecentCustomStatus} from '@queries/servers/system'; import {observeCurrentUser} from '@queries/servers/user'; import {dismissModal, goToScreen, showModal} from '@screens/navigation'; import NavigationStore from '@store/navigation_store'; -import {getCurrentMomentForTimezone, getRoundedTime, isCustomStatusExpirySupported} from '@utils/helpers'; +import {getCurrentMomentForTimezone, getRoundedTime} from '@utils/helpers'; import {logDebug} from '@utils/log'; import {mergeNavigationOptions} from '@utils/navigation'; import {preventDoubleTap} from '@utils/tap'; @@ -376,7 +374,6 @@ class CustomStatusModal extends NavigationComponent { {recentCustomStatuses.length > 0 && ( { } { const augmentCSM = injectIntl(withTheme(withServerUrl(CustomStatusModal))); const enhancedCSM = withObservables([], ({database}: WithDatabaseArgs) => { - const config = observeConfig(database); return { currentUser: observeCurrentUser(database), - customStatusExpirySupported: config.pipe( - switchMap((cfg) => of$(isCustomStatusExpirySupported(cfg?.Version || ''))), - ), recentCustomStatuses: observeRecentCustomStatus(database), + customStatusExpirySupported: observeIsCustomStatusExpirySupported(database), }; }); diff --git a/app/screens/edit_profile/index.ts b/app/screens/edit_profile/index.ts index f16f08a79..bbc7c338e 100644 --- a/app/screens/edit_profile/index.ts +++ b/app/screens/edit_profile/index.ts @@ -3,10 +3,10 @@ import {withDatabase} from '@nozbe/watermelondb/DatabaseProvider'; import withObservables from '@nozbe/with-observables'; -import {of as of$} from 'rxjs'; +import {of as of$, combineLatest} from 'rxjs'; import {switchMap} from 'rxjs/operators'; -import {observeConfig} from '@queries/servers/system'; +import {observeConfigBooleanValue} from '@queries/servers/system'; import {observeCurrentUser} from '@queries/servers/user'; import EditProfile from './edit_profile'; @@ -14,35 +14,31 @@ import EditProfile from './edit_profile'; import type {WithDatabaseArgs} from '@typings/database/database'; const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { - const config = observeConfig(database); + const ldapFirstNameAttributeSet = observeConfigBooleanValue(database, 'LdapFirstNameAttributeSet'); + const ldapLastNameAttributeSet = observeConfigBooleanValue(database, 'LdapLastNameAttributeSet'); + const ldapNicknameAttributeSet = observeConfigBooleanValue(database, 'LdapNicknameAttributeSet'); + const ldapPositionAttributeSet = observeConfigBooleanValue(database, 'LdapPositionAttributeSet'); + + const samlFirstNameAttributeSet = observeConfigBooleanValue(database, 'SamlFirstNameAttributeSet'); + const samlLastNameAttributeSet = observeConfigBooleanValue(database, 'SamlLastNameAttributeSet'); + const samlNicknameAttributeSet = observeConfigBooleanValue(database, 'SamlNicknameAttributeSet'); + const samlPositionAttributeSet = observeConfigBooleanValue(database, 'SamlPositionAttributeSet'); return { currentUser: observeCurrentUser(database), - lockedFirstName: config.pipe( - switchMap( - (cfg) => of$(cfg?.LdapFirstNameAttributeSet === 'true' || cfg?.SamlFirstNameAttributeSet === 'true'), - ), + lockedFirstName: combineLatest([ldapFirstNameAttributeSet, samlFirstNameAttributeSet]).pipe( + switchMap(([ldap, saml]) => of$(ldap || saml)), ), - lockedLastName: config.pipe( - switchMap( - (cfg) => of$(cfg?.LdapLastNameAttributeSet === 'true' || cfg?.SamlLastNameAttributeSet === 'true'), - ), + lockedLastName: combineLatest([ldapLastNameAttributeSet, samlLastNameAttributeSet]).pipe( + switchMap(([ldap, saml]) => of$(ldap || saml)), ), - lockedNickname: config.pipe( - switchMap( - (cfg) => of$(cfg?.LdapNicknameAttributeSet === 'true' || cfg?.SamlNicknameAttributeSet === 'true'), - ), + lockedNickname: combineLatest([ldapNicknameAttributeSet, samlNicknameAttributeSet]).pipe( + switchMap(([ldap, saml]) => of$(ldap || saml)), ), - lockedPosition: config.pipe( - switchMap( - (cfg) => of$(cfg?.LdapPositionAttributeSet === 'true' || cfg?.SamlPositionAttributeSet === 'true'), - ), - ), - lockedPicture: config.pipe( - switchMap( - (cfg) => of$(cfg?.LdapPictureAttributeSet === 'true'), - ), + lockedPosition: combineLatest([ldapPositionAttributeSet, samlPositionAttributeSet]).pipe( + switchMap(([ldap, saml]) => of$(ldap || saml)), ), + lockedPicture: observeConfigBooleanValue(database, 'LdapPictureAttributeSet'), }; }); diff --git a/app/screens/find_channels/filtered_list/index.ts b/app/screens/find_channels/filtered_list/index.ts index 0007efa2d..c12c9d15c 100644 --- a/app/screens/find_channels/filtered_list/index.ts +++ b/app/screens/find_channels/filtered_list/index.ts @@ -8,7 +8,7 @@ import {combineLatestWith, switchMap} from 'rxjs/operators'; import {General} from '@constants'; import {observeArchiveChannelsByTerm, observeDirectChannelsByTerm, observeJoinedChannelsByTerm, observeNotDirectChannelsByTerm} from '@queries/servers/channel'; -import {observeConfig, observeCurrentTeamId} from '@queries/servers/system'; +import {observeConfigValue, observeCurrentTeamId} from '@queries/servers/system'; import {queryJoinedTeams} from '@queries/servers/team'; import {observeTeammateNameDisplay} from '@queries/servers/user'; import {retrieveChannels} from '@screens/find_channels/utils'; @@ -50,8 +50,8 @@ const enhanced = withObservables(['term'], ({database, term}: EnhanceProps) => { const usersMatchStart = observeNotDirectChannelsByTerm(database, term, MAX_RESULTS, true); const usersMatch = observeNotDirectChannelsByTerm(database, term, MAX_RESULTS); - const restrictDirectMessage = observeConfig(database).pipe( - switchMap((cfg) => of$(cfg?.RestrictDirectMessage !== General.RESTRICT_DIRECT_MESSAGE_ANY)), + const restrictDirectMessage = observeConfigValue(database, 'RestrictDirectMessage').pipe( + switchMap((v) => of$(v !== General.RESTRICT_DIRECT_MESSAGE_ANY)), ); const teammateDisplayNameSetting = observeTeammateNameDisplay(database); diff --git a/app/screens/gallery/footer/index.ts b/app/screens/gallery/footer/index.ts index a030a9905..4b64fdab2 100644 --- a/app/screens/gallery/footer/index.ts +++ b/app/screens/gallery/footer/index.ts @@ -9,7 +9,7 @@ import {switchMap} from 'rxjs/operators'; import {General} from '@constants'; import {observeChannel} from '@queries/servers/channel'; import {observePost} from '@queries/servers/post'; -import {observeConfig, observeCurrentChannelId, observeCurrentUserId, observeLicense} from '@queries/servers/system'; +import {observeConfigBooleanValue, observeCurrentChannelId, observeCurrentUserId, observeLicense} from '@queries/servers/system'; import {observeTeammateNameDisplay, observeUser} from '@queries/servers/user'; import Footer from './footer'; @@ -27,7 +27,6 @@ const enhanced = withObservables(['item'], ({database, item}: FooterProps) => { const currentChannelId = observeCurrentChannelId(database); const currentUserId = observeCurrentUserId(database); - const config = observeConfig(database); const license = observeLicense(database); const teammateNameDisplay = observeTeammateNameDisplay(database); @@ -47,10 +46,10 @@ const enhanced = withObservables(['item'], ({database, item}: FooterProps) => { return p?.channel.observe() || observeChannel(database, cId); }), ); - const enablePostUsernameOverride = config.pipe(switchMap((c) => of$(c?.EnablePostUsernameOverride === 'true'))); - const enablePostIconOverride = config.pipe(switchMap((c) => of$(c?.EnablePostIconOverride === 'true'))); - const enablePublicLink = config.pipe(switchMap((c) => of$(c?.EnablePublicLink === 'true'))); - const enableMobileFileDownload = config.pipe(switchMap((c) => of$(c?.EnableMobileFileDownload !== 'false'))); + const enablePostUsernameOverride = observeConfigBooleanValue(database, 'EnablePostUsernameOverride'); + const enablePostIconOverride = observeConfigBooleanValue(database, 'EnablePostIconOverride'); + const enablePublicLink = observeConfigBooleanValue(database, 'EnablePublicLink'); + const enableMobileFileDownload = observeConfigBooleanValue(database, 'EnableMobileFileDownload'); const complianceDisabled = license.pipe(switchMap((l) => of$(l?.IsLicensed === 'false' || l?.Compliance === 'false'))); const canDownloadFiles = combineLatest([enableMobileFileDownload, complianceDisabled]).pipe( switchMap(([download, compliance]) => of$(compliance || download)), diff --git a/app/screens/home/account/account.tsx b/app/screens/home/account/account.tsx index 61a3d65fb..e18841311 100644 --- a/app/screens/home/account/account.tsx +++ b/app/screens/home/account/account.tsx @@ -20,7 +20,6 @@ import type UserModel from '@typings/database/models/servers/user'; type AccountScreenProps = { currentUser: UserModel; - customStatusExpirySupported: boolean; enableCustomUserStatuses: boolean; showFullName: boolean; }; @@ -57,7 +56,7 @@ const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => { }; }); -const AccountScreen = ({currentUser, enableCustomUserStatuses, customStatusExpirySupported, showFullName}: AccountScreenProps) => { +const AccountScreen = ({currentUser, enableCustomUserStatuses, showFullName}: AccountScreenProps) => { const theme = useTheme(); const [start, setStart] = useState(false); const route = useRoute(); @@ -119,7 +118,6 @@ const AccountScreen = ({currentUser, enableCustomUserStatuses, customStatusExpir /> { - const teams = queryJoinedTeams(database).observe(); return { - teams, + isCustomStatusExpirySupported: observeIsCustomStatusExpirySupported(database), }; }); -export default withDatabase(enhanced(TeamPickerIcon)); +export default withDatabase(enhanced(CustomLabel)); diff --git a/app/screens/home/account/components/options/custom_status/index.tsx b/app/screens/home/account/components/options/custom_status/index.tsx index ae775ac80..8d3cc9a68 100644 --- a/app/screens/home/account/components/options/custom_status/index.tsx +++ b/app/screens/home/account/components/options/custom_status/index.tsx @@ -38,12 +38,11 @@ const getStyleSheet = makeStyleSheetFromTheme((theme) => { }); type CustomStatusProps = { - isCustomStatusExpirySupported: boolean; isTablet: boolean; currentUser: UserModel; } -const CustomStatus = ({isCustomStatusExpirySupported, isTablet, currentUser}: CustomStatusProps) => { +const CustomStatus = ({isTablet, currentUser}: CustomStatusProps) => { const theme = useTheme(); const intl = useIntl(); const serverUrl = useServerUrl(); @@ -96,7 +95,6 @@ const CustomStatus = ({isCustomStatusExpirySupported, isTablet, currentUser}: Cu /> { }; }); -const AccountOptions = ({user, enableCustomUserStatuses, isCustomStatusExpirySupported, isTablet, theme}: AccountScreenProps) => { +const AccountOptions = ({user, enableCustomUserStatuses, isTablet, theme}: AccountScreenProps) => { const styles = getStyleSheet(theme); return ( @@ -59,7 +58,6 @@ const AccountOptions = ({user, enableCustomUserStatuses, isCustomStatusExpirySup /> {enableCustomUserStatuses && } diff --git a/app/screens/home/account/index.ts b/app/screens/home/account/index.ts index bcd2b8b97..fe44aeb0f 100644 --- a/app/screens/home/account/index.ts +++ b/app/screens/home/account/index.ts @@ -4,35 +4,28 @@ import {withDatabase} from '@nozbe/watermelondb/DatabaseProvider'; import withObservables from '@nozbe/with-observables'; import {of as of$} from 'rxjs'; -import {switchMap} from 'rxjs/operators'; +import {combineLatestWith, switchMap} from 'rxjs/operators'; -import {observeConfig} from '@queries/servers/system'; +import {observeConfigBooleanValue, observeConfigValue} from '@queries/servers/system'; import {observeCurrentUser} from '@queries/servers/user'; -import {isCustomStatusExpirySupported, isMinimumServerVersion} from '@utils/helpers'; +import {isMinimumServerVersion} from '@utils/helpers'; import AccountScreen from './account'; import type {WithDatabaseArgs} from '@typings/database/database'; const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { - const config = observeConfig(database); - const showFullName = config.pipe((switchMap((cfg) => of$(cfg?.ShowFullName === 'true')))); - const enableCustomUserStatuses = config.pipe((switchMap((cfg) => { - return of$(cfg?.EnableCustomUserStatuses === 'true' && isMinimumServerVersion(cfg?.Version || '', 5, 36)); - }))); - const version = config.pipe( - switchMap((cfg) => of$(cfg?.Version || '')), - ); - const customStatusExpirySupported = config.pipe( - switchMap((cfg) => of$(isCustomStatusExpirySupported(cfg?.Version || ''))), + const showFullName = observeConfigBooleanValue(database, 'ShowFullName'); + const version = observeConfigValue(database, 'Version'); + const enableCustomUserStatuses = observeConfigBooleanValue(database, 'EnableCustomUserStatuses').pipe( + combineLatestWith(version), + switchMap(([cfg, v]) => of$(cfg && isMinimumServerVersion(v || '', 5, 36))), ); return { currentUser: observeCurrentUser(database), enableCustomUserStatuses, - customStatusExpirySupported, showFullName, - version, }; }); diff --git a/app/screens/home/channel_list/categories_list/categories/body/index.ts b/app/screens/home/channel_list/categories_list/categories/body/index.ts index 0c966852a..4ec32b9a5 100644 --- a/app/screens/home/channel_list/categories_list/categories/body/index.ts +++ b/app/screens/home/channel_list/categories_list/categories/body/index.ts @@ -7,9 +7,9 @@ import withObservables from '@nozbe/with-observables'; import {combineLatest, of as of$} from 'rxjs'; import {map, switchMap, combineLatestWith} from 'rxjs/operators'; -import {MyChannelModel} from '@app/database/models/server'; import {General, Preferences} from '@constants'; import {DMS_CATEGORY} from '@constants/categories'; +import {MyChannelModel} from '@database/models/server'; import {getPreferenceAsBool} from '@helpers/api/preference'; import {observeChannelsByCategoryChannelSortOrder, observeChannelsByLastPostAtInCategory} from '@queries/servers/categories'; import {observeNotifyPropsByChannels, queryChannelsByNames, queryEmptyDirectAndGroupChannels} from '@queries/servers/channel'; diff --git a/app/screens/home/channel_list/categories_list/header/header.test.tsx b/app/screens/home/channel_list/categories_list/header/header.test.tsx index 2b425144e..2832e7f3d 100644 --- a/app/screens/home/channel_list/categories_list/header/header.test.tsx +++ b/app/screens/home/channel_list/categories_list/header/header.test.tsx @@ -15,6 +15,7 @@ describe('components/channel_list/header', () => { pushProxyStatus={PUSH_PROXY_STATUS_VERIFIED} canCreateChannels={true} canJoinChannels={true} + canInvitePeople={true} displayName={'Test!'} />, ); diff --git a/app/screens/home/channel_list/categories_list/header/header.tsx b/app/screens/home/channel_list/categories_list/header/header.tsx index d10796715..13b88d143 100644 --- a/app/screens/home/channel_list/categories_list/header/header.tsx +++ b/app/screens/home/channel_list/categories_list/header/header.tsx @@ -24,11 +24,14 @@ import {typography} from '@utils/typography'; import LoadingUnreads from './loading_unreads'; import PlusMenu from './plus_menu'; +import {SEPARATOR_HEIGHT} from './plus_menu/separator'; type Props = { canCreateChannels: boolean; canJoinChannels: boolean; - displayName: string; + canInvitePeople: boolean; + displayName?: string; + inviteId?: string; iconPad?: boolean; onHeaderPress?: () => void; pushProxyStatus: string; @@ -92,7 +95,9 @@ const hitSlop: Insets = {top: 10, bottom: 30, left: 20, right: 20}; const ChannelListHeader = ({ canCreateChannels, canJoinChannels, + canInvitePeople, displayName, + inviteId, iconPad, onHeaderPress, pushProxyStatus, @@ -118,12 +123,17 @@ const ChannelListHeader = ({ ); }; const closeButtonId = 'close-plus-menu'; let items = 1; + let separators = 0; + if (canCreateChannels) { items += 1; } @@ -132,10 +142,15 @@ const ChannelListHeader = ({ items += 1; } + if (canInvitePeople) { + items += 1; + separators += 1; + } + bottomSheet({ closeButtonId, renderContent, - snapPoints: [bottomSheetSnapPoint(items, ITEM_HEIGHT, insets.bottom), 10], + snapPoints: [bottomSheetSnapPoint(items, ITEM_HEIGHT, insets.bottom) + (separators * SEPARATOR_HEIGHT), 10], theme, title: intl.formatMessage({id: 'home.header.plus_menu', defaultMessage: 'Options'}), }); diff --git a/app/screens/home/channel_list/categories_list/header/index.ts b/app/screens/home/channel_list/categories_list/header/index.ts index 82a25f25d..4d638cf3d 100644 --- a/app/screens/home/channel_list/categories_list/header/index.ts +++ b/app/screens/home/channel_list/categories_list/header/index.ts @@ -8,7 +8,7 @@ import {switchMap} from 'rxjs/operators'; import {Permissions} from '@constants'; import {observePermissionForTeam} from '@queries/servers/role'; -import {observePushVerificationStatus} from '@queries/servers/system'; +import {observeConfigBooleanValue, observePushVerificationStatus} from '@queries/servers/system'; import {observeCurrentTeam} from '@queries/servers/team'; import {observeCurrentUser} from '@queries/servers/user'; @@ -21,6 +21,8 @@ const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { const currentUser = observeCurrentUser(database); + const enableOpenServer = observeConfigBooleanValue(database, 'EnableOpenServer'); + const canJoinChannels = combineLatest([currentUser, team]).pipe( switchMap(([u, t]) => observePermissionForTeam(database, t, u, Permissions.JOIN_PUBLIC_CHANNELS, true)), ); @@ -37,12 +39,22 @@ const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { switchMap(([open, priv]) => of$(open || priv)), ); + const canAddUserToTeam = combineLatest([currentUser, team]).pipe( + switchMap(([u, t]) => observePermissionForTeam(database, t, u, Permissions.ADD_USER_TO_TEAM, false)), + ); + return { canCreateChannels, canJoinChannels, + canInvitePeople: combineLatest([enableOpenServer, canAddUserToTeam]).pipe( + switchMap(([openServer, addUser]) => of$(openServer && addUser)), + ), displayName: team.pipe( switchMap((t) => of$(t?.displayName)), ), + inviteId: team.pipe( + switchMap((t) => of$(t?.inviteId)), + ), pushProxyStatus: observePushVerificationStatus(database), }; }); diff --git a/app/screens/home/channel_list/categories_list/header/plus_menu/index.tsx b/app/screens/home/channel_list/categories_list/header/plus_menu/index.tsx index 40b854e74..4fabba5a9 100644 --- a/app/screens/home/channel_list/categories_list/header/plus_menu/index.tsx +++ b/app/screens/home/channel_list/categories_list/header/plus_menu/index.tsx @@ -3,22 +3,31 @@ import React, {useCallback} from 'react'; import {useIntl} from 'react-intl'; +import {Platform} from 'react-native'; +import Share from 'react-native-share'; +import {ShareOptions} from 'react-native-share/lib/typescript/types'; import CompassIcon from '@components/compass_icon'; import {Screens} from '@constants'; +import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; import {dismissBottomSheet, showModal} from '@screens/navigation'; import PlusMenuItem from './item'; +import PlusMenuSeparator from './separator'; type Props = { canCreateChannels: boolean; canJoinChannels: boolean; + canInvitePeople: boolean; + displayName?: string; + inviteId?: string; } -const PlusMenuList = ({canCreateChannels, canJoinChannels}: Props) => { +const PlusMenuList = ({canCreateChannels, canJoinChannels, canInvitePeople, displayName, inviteId}: Props) => { const intl = useIntl(); const theme = useTheme(); + const serverUrl = useServerUrl(); const browseChannels = useCallback(async () => { await dismissBottomSheet(); @@ -48,6 +57,59 @@ const PlusMenuList = ({canCreateChannels, canJoinChannels}: Props) => { }); }, [intl, theme]); + const invitePeopleToTeam = async () => { + await dismissBottomSheet(); + + const url = `${serverUrl}/signup_user_complete/?id=${inviteId}`; + const title = intl.formatMessage({id: 'invite_people_to_team.title', defaultMessage: 'Join the {team} team'}, {team: displayName}); + const message = intl.formatMessage({id: 'invite_people_to_team.message', defaultMessage: 'Here’s a link to collaborate and communicate with us on Mattermost.'}); + const icon = 'data:/;base64,'; + + const options: ShareOptions = Platform.select({ + ios: { + activityItemSources: [ + { + placeholderItem: { + type: 'url', + content: url, + }, + item: { + default: { + type: 'text', + content: `${message} ${url}`, + }, + copyToPasteBoard: { + type: 'url', + content: url, + }, + }, + subject: { + default: title, + }, + linkMetadata: { + originalUrl: url, + url, + title, + icon, + }, + }, + ], + }, + default: { + title, + subject: title, + url, + showAppsToView: true, + }, + }); + + Share.open( + options, + ).catch(() => { + // do nothing + }); + }; + return ( <> {canJoinChannels && @@ -66,6 +128,15 @@ const PlusMenuList = ({canCreateChannels, canJoinChannels}: Props) => { pickerAction='openDirectMessage' onPress={openDirectMessage} /> + {canInvitePeople && + <> + + + + } ); }; diff --git a/app/screens/home/channel_list/categories_list/header/plus_menu/item.tsx b/app/screens/home/channel_list/categories_list/header/plus_menu/item.tsx index e46b285eb..34c61a2a3 100644 --- a/app/screens/home/channel_list/categories_list/header/plus_menu/item.tsx +++ b/app/screens/home/channel_list/categories_list/header/plus_menu/item.tsx @@ -7,7 +7,7 @@ import {useIntl} from 'react-intl'; import SlideUpPanelItem from '@components/slide_up_panel_item'; type PlusMenuItemProps = { - pickerAction: 'browseChannels' | 'createNewChannel' | 'openDirectMessage'; + pickerAction: 'browseChannels' | 'createNewChannel' | 'openDirectMessage' | 'invitePeopleToTeam'; onPress: () => void; }; @@ -32,14 +32,19 @@ const PlusMenuItem = ({pickerAction, onPress}: PlusMenuItemProps) => { text: intl.formatMessage({id: 'plus_menu.open_direct_message.title', defaultMessage: 'Open a Direct Message'}), testID: 'plus_menu_item.open_direct_message', }, + invitePeopleToTeam: { + icon: 'account-plus-outline', + text: intl.formatMessage({id: 'plus_menu.invite_people_to_team.title', defaultMessage: 'Invite people to the team'}), + testID: 'plus_menu_item.invite_people_to_team', + }, }; + const itemType = menuItems[pickerAction]; + return ( ); }; diff --git a/app/screens/home/channel_list/categories_list/header/plus_menu/separator.tsx b/app/screens/home/channel_list/categories_list/header/plus_menu/separator.tsx new file mode 100644 index 000000000..2bed13b13 --- /dev/null +++ b/app/screens/home/channel_list/categories_list/header/plus_menu/separator.tsx @@ -0,0 +1,33 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import React from 'react'; +import {View} from 'react-native'; + +import {useTheme} from '@context/theme'; +import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; + +const MARGIN_VERTICAL = 8; +const BORDER = 1; +export const SEPARATOR_HEIGHT = (MARGIN_VERTICAL * 2) + BORDER; + +const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => ({ + separator: { + marginTop: MARGIN_VERTICAL, + marginBottom: MARGIN_VERTICAL, + borderTopWidth: BORDER, + borderStyle: 'solid', + borderColor: changeOpacity(theme.centerChannelColor, 0.08), + }, +})); + +const PlusMenuSeparator = () => { + const theme = useTheme(); + const style = getStyleSheet(theme); + + return ( + + ); +}; + +export default PlusMenuSeparator; diff --git a/app/screens/home/channel_list/categories_list/threads_button/index.ts b/app/screens/home/channel_list/categories_list/threads_button/index.ts index 657eb1f10..87c0c696d 100644 --- a/app/screens/home/channel_list/categories_list/threads_button/index.ts +++ b/app/screens/home/channel_list/categories_list/threads_button/index.ts @@ -6,10 +6,10 @@ import withObservables from '@nozbe/with-observables'; import {of as of$} from 'rxjs'; import {switchMap} from 'rxjs/operators'; -import Preferences from '@app/constants/preferences'; -import {PreferenceModel} from '@app/database/models/server'; -import {queryPreferencesByCategoryAndName} from '@app/queries/servers/preference'; +import Preferences from '@constants/preferences'; +import {PreferenceModel} from '@database/models/server'; import {getPreferenceAsBool} from '@helpers/api/preference'; +import {queryPreferencesByCategoryAndName} from '@queries/servers/preference'; import {observeCurrentChannelId, observeCurrentTeamId, observeOnlyUnreads} from '@queries/servers/system'; import {observeUnreadsAndMentionsInTeam} from '@queries/servers/thread'; diff --git a/app/screens/home/channel_list/channel_list.tsx b/app/screens/home/channel_list/channel_list.tsx index ca19b8f08..e82543506 100644 --- a/app/screens/home/channel_list/channel_list.tsx +++ b/app/screens/home/channel_list/channel_list.tsx @@ -12,10 +12,12 @@ import {Edge, SafeAreaView, useSafeAreaInsets} from 'react-native-safe-area-cont import FreezeScreen from '@components/freeze_screen'; import TeamSidebar from '@components/team_sidebar'; import {Navigation as NavigationConstants, Screens} from '@constants'; +import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; import {useIsTablet} from '@hooks/device'; import {resetToTeams} from '@screens/navigation'; import NavigationStore from '@store/navigation_store'; +import {addSentryContext} from '@utils/sentry'; import AdditionalTabletView from './additional_tablet_view'; import CategoriesList from './categories_list'; @@ -50,6 +52,7 @@ const ChannelListScreen = (props: ChannelProps) => { const isFocused = useIsFocused(); const navigation = useNavigation(); const insets = useSafeAreaInsets(); + const serverUrl = useServerUrl(); const params = route.params as {direction: string}; const canAddOtherServers = managedConfig?.allowOtherServers !== 'false'; @@ -111,6 +114,10 @@ const ChannelListScreen = (props: ChannelProps) => { return () => back.remove(); }, [handleBackPress]); + useEffect(() => { + addSentryContext(serverUrl); + }, [serverUrl]); + return ( {} diff --git a/app/screens/home/search/index.tsx b/app/screens/home/search/index.tsx index 7357169a1..6282403ad 100644 --- a/app/screens/home/search/index.tsx +++ b/app/screens/home/search/index.tsx @@ -6,6 +6,7 @@ import withObservables from '@nozbe/with-observables'; import compose from 'lodash/fp/compose'; import {observeCurrentTeamId} from '@queries/servers/system'; +import {queryJoinedTeams} from '@queries/servers/team'; import SearchScreen from './search'; @@ -15,6 +16,7 @@ const enhance = withObservables([], ({database}: WithDatabaseArgs) => { const currentTeamId = observeCurrentTeamId(database); return { teamId: currentTeamId, + teams: queryJoinedTeams(database).observe(), }; }); diff --git a/app/screens/home/search/initial/initial.tsx b/app/screens/home/search/initial/initial.tsx index 8f0b1630a..65c94bf62 100644 --- a/app/screens/home/search/initial/initial.tsx +++ b/app/screens/home/search/initial/initial.tsx @@ -4,6 +4,8 @@ import React from 'react'; import Animated from 'react-native-reanimated'; +import {TeamModel} from '@database/models/server'; + import Modifiers from './modifiers'; import RecentSearches from './recent_searches'; @@ -18,9 +20,10 @@ type Props = { setTeamId: (value: string) => void; teamId: string; teamName: string; + teams: TeamModel[]; } -const Initial = ({recentSearches, scrollEnabled, searchValue, setRecentValue, teamId, teamName, setTeamId, setSearchValue}: Props) => { +const Initial = ({recentSearches, scrollEnabled, searchValue, setRecentValue, teamId, teamName, teams, setTeamId, setSearchValue}: Props) => { return ( <> {Boolean(recentSearches.length) && diff --git a/app/screens/home/search/initial/modifiers/index.tsx b/app/screens/home/search/initial/modifiers/index.tsx index 8f87d6c8c..348151c51 100644 --- a/app/screens/home/search/initial/modifiers/index.tsx +++ b/app/screens/home/search/initial/modifiers/index.tsx @@ -8,6 +8,7 @@ import Animated, {useSharedValue, useAnimatedStyle, withTiming} from 'react-nati import FormattedText from '@components/formatted_text'; import {useTheme} from '@context/theme'; +import {TeamModel} from '@database/models/server'; import TeamPickerIcon from '@screens/home/search/team_picker_icon'; import {makeStyleSheetFromTheme} from '@utils/theme'; import {typography} from '@utils/typography'; @@ -83,8 +84,9 @@ type Props = { searchValue?: string; setTeamId: (id: string) => void; teamId: string; + teams: TeamModel[]; } -const Modifiers = ({scrollEnabled, searchValue, setSearchValue, setTeamId, teamId}: Props) => { +const Modifiers = ({scrollEnabled, searchValue, setSearchValue, setTeamId, teamId, teams}: Props) => { const theme = useTheme(); const intl = useIntl(); @@ -142,11 +144,14 @@ const Modifiers = ({scrollEnabled, searchValue, setSearchValue, setTeamId, teamI id={'screen.search.modifier.header'} defaultMessage='Search options' /> + {teams.length > 1 && + } {data.map((item) => renderModifier(item))} diff --git a/app/screens/home/search/results/file_result.tsx b/app/screens/home/search/results/file_result.tsx index 9125c504d..119612f8c 100644 --- a/app/screens/home/search/results/file_result.tsx +++ b/app/screens/home/search/results/file_result.tsx @@ -25,7 +25,6 @@ type Props = { channelName: string | undefined; fileInfo: FileInfo; index: number; - isSingleImage: boolean; numOptions: number; onOptionsPress: (finfo: FileInfo) => void; onPress: (idx: number) => void; @@ -41,7 +40,6 @@ const FileResult = ({ channelName, fileInfo, index, - isSingleImage, numOptions, onOptionsPress, onPress, @@ -94,7 +92,6 @@ const FileResult = ({ galleryIdentifier={galleryIdentifier} inViewPort={true} index={index} - isSingleImage={isSingleImage} nonVisibleImagesCount={0} onOptionsPress={handleOptionsPress} onPress={onPress} diff --git a/app/screens/home/search/results/file_results.tsx b/app/screens/home/search/results/file_results.tsx index 5e22bf3d2..fdf6950fb 100644 --- a/app/screens/home/search/results/file_results.tsx +++ b/app/screens/home/search/results/file_results.tsx @@ -5,12 +5,11 @@ import React, {useCallback, useMemo, useState} from 'react'; import {FlatList, ListRenderItemInfo, StyleProp, ViewStyle} from 'react-native'; import {useSafeAreaInsets} from 'react-native-safe-area-context'; -import {useIsTablet} from '@app/hooks/device'; -import {useImageAttachments} from '@app/hooks/files'; import NoResultsWithTerm from '@components/no_results_with_term'; import {useTheme} from '@context/theme'; +import {useIsTablet} from '@hooks/device'; +import {useImageAttachments} from '@hooks/files'; import {GalleryAction} from '@typings/screens/gallery'; -import {isImage, isVideo} from '@utils/file'; import { getChannelNamesWithID, getFileInfosIndexes, @@ -89,14 +88,12 @@ const FileResults = ({ }, [insets, isTablet, numOptions, theme]); const renderItem = useCallback(({item}: ListRenderItemInfo) => { - const isSingleImage = orderedFileInfos.length === 1 && (isImage(orderedFileInfos[0]) || isVideo(orderedFileInfos[0])); return ( void; teamId: string; + teams: TeamModel[]; } const getStyleFromTheme = makeStyleSheetFromTheme((theme: Theme) => { @@ -50,7 +51,7 @@ const getStyleFromTheme = makeStyleSheetFromTheme((theme: Theme) => { paddingHorizontal: 12, flexDirection: 'row', }, - filter: { + iconsContainer: { alignItems: 'center', flexDirection: 'row', marginLeft: 'auto', @@ -67,6 +68,7 @@ const Header = ({ numberFiles, selectedTab, selectedFilter, + teams, }: Props) => { const theme = useTheme(); const styles = getStyleFromTheme(theme); @@ -118,6 +120,8 @@ const Header = ({ }); }, [selectedFilter]); + const filterStyle = useMemo(() => ({marginRight: teams.length > 1 ? 0 : 10}), [teams.length > 1]); + return ( @@ -131,11 +135,9 @@ const Header = ({ onPress={handleFilesPress} text={`${filesText} (${numberFiles})`} /> - + {showFilterIcon && - <> + - + } + {teams.length > 1 && + } diff --git a/app/screens/home/search/results/results.tsx b/app/screens/home/search/results/results.tsx index 5971ec699..b3f42023d 100644 --- a/app/screens/home/search/results/results.tsx +++ b/app/screens/home/search/results/results.tsx @@ -5,7 +5,7 @@ import React, {useMemo} from 'react'; import {ScaledSize, StyleSheet, useWindowDimensions, View} from 'react-native'; import Animated, {useAnimatedStyle, withTiming} from 'react-native-reanimated'; -import Loading from '@app/components/loading'; +import Loading from '@components/loading'; import {useTheme} from '@context/theme'; import {TabTypes, TabType} from '@utils/search'; diff --git a/app/screens/home/search/search.tsx b/app/screens/home/search/search.tsx index 512cbbf83..a18af2302 100644 --- a/app/screens/home/search/search.tsx +++ b/app/screens/home/search/search.tsx @@ -11,7 +11,6 @@ import {Edge, SafeAreaView, useSafeAreaInsets} from 'react-native-safe-area-cont import {getPosts} from '@actions/local/post'; import {addSearchToTeamSearchHistory} from '@actions/local/team'; import {searchPosts, searchFiles} from '@actions/remote/search'; -import useDidUpdate from '@app/hooks/did_update'; import Autocomplete from '@components/autocomplete'; import FreezeScreen from '@components/freeze_screen'; import Loading from '@components/loading'; @@ -21,7 +20,9 @@ import {SearchRef} from '@components/search'; import {BOTTOM_TAB_HEIGHT} from '@constants/view'; import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; +import {TeamModel} from '@database/models/server'; import {useKeyboardHeight} from '@hooks/device'; +import useDidUpdate from '@hooks/did_update'; import {useCollapsibleHeader} from '@hooks/header'; import {FileFilter, FileFilters, filterFileExtensions} from '@utils/file'; import {TabTypes, TabType} from '@utils/search'; @@ -45,6 +46,7 @@ const AutocompletePaddingTop = 4; type Props = { teamId: string; + teams: TeamModel[]; } const styles = StyleSheet.create({ @@ -71,7 +73,7 @@ const getSearchParams = (terms: string, filterValue?: FileFilter) => { const searchScreenIndex = 1; -const SearchScreen = ({teamId}: Props) => { +const SearchScreen = ({teamId, teams}: Props) => { const nav = useNavigation(); const isFocused = useIsFocused(); const intl = useIntl(); @@ -229,6 +231,7 @@ const SearchScreen = ({teamId}: Props) => { setSearchValue={handleModifierTextChange} setTeamId={setSearchTeamId} teamId={searchTeamId} + teams={teams} /> ); }, [handleRecentSearch, handleTextChange, loading, @@ -346,6 +349,7 @@ const SearchScreen = ({teamId}: Props) => { selectedTab={selectedTab} numberFiles={fileInfos.length} selectedFilter={filter} + teams={teams} /> } diff --git a/app/screens/home/search/team_picker_icon/search_team_slideup.tsx b/app/screens/home/search/select_team_slideup.tsx similarity index 100% rename from app/screens/home/search/team_picker_icon/search_team_slideup.tsx rename to app/screens/home/search/select_team_slideup.tsx diff --git a/app/screens/home/search/team_picker_icon/team_picker_icon.tsx b/app/screens/home/search/team_picker_icon.tsx similarity index 98% rename from app/screens/home/search/team_picker_icon/team_picker_icon.tsx rename to app/screens/home/search/team_picker_icon.tsx index 7119819b8..794dedc3d 100644 --- a/app/screens/home/search/team_picker_icon/team_picker_icon.tsx +++ b/app/screens/home/search/team_picker_icon.tsx @@ -15,7 +15,7 @@ import {preventDoubleTap} from '@utils/tap'; import {getTeamsSnapHeight} from '@utils/team_list'; import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; -import SelectTeamSlideUp from './search_team_slideup'; +import SelectTeamSlideUp from './select_team_slideup'; import type TeamModel from '@typings/database/models/servers/team'; diff --git a/app/screens/in_app_notification/icon.tsx b/app/screens/in_app_notification/icon.tsx index f20893dd2..17c039149 100644 --- a/app/screens/in_app_notification/icon.tsx +++ b/app/screens/in_app_notification/icon.tsx @@ -5,12 +5,10 @@ import withObservables from '@nozbe/with-observables'; import React from 'react'; import {StyleSheet, View} from 'react-native'; import FastImage, {Source} from 'react-native-fast-image'; -import {of as of$} from 'rxjs'; -import {switchMap} from 'rxjs/operators'; import CompassIcon from '@components/compass_icon'; import NetworkManager from '@managers/network_manager'; -import {observeConfig} from '@queries/servers/system'; +import {observeConfigBooleanValue} from '@queries/servers/system'; import {observeUser} from '@queries/servers/user'; import type {Client} from '@client/rest'; @@ -89,14 +87,11 @@ const NotificationIcon = ({author, enablePostIconOverride, fromWebhook, override }; const enhanced = withObservables([], ({database, senderId}: WithDatabaseArgs & {senderId: string}) => { - const config = observeConfig(database); const author = observeUser(database, senderId); return { author, - enablePostIconOverride: config.pipe( - switchMap((cfg) => of$(cfg?.EnablePostIconOverride === 'true')), - ), + enablePostIconOverride: observeConfigBooleanValue(database, 'EnablePostIconOverride'), }; }); diff --git a/app/screens/index.tsx b/app/screens/index.tsx index 68b7f3798..ce45775bf 100644 --- a/app/screens/index.tsx +++ b/app/screens/index.tsx @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {withManagedConfig} from '@mattermost/react-native-emm'; +import {Provider as EMMProvider} from '@mattermost/react-native-emm'; import React, {ComponentType} from 'react'; import {IntlProvider} from 'react-intl'; import {Platform, StyleProp, ViewStyle} from 'react-native'; @@ -50,6 +50,16 @@ const withSafeAreaInsets = (Screen: React.ComponentType) => { }; }; +const withManagedConfig = (Screen: React.ComponentType) => { + return function EmmProvider(props: any) { + return ( + + + + ); + }; +}; + Navigation.setLazyComponentRegistrator((screenName) => { let screen: any|undefined; let extraStyles: StyleProp; @@ -220,7 +230,7 @@ Navigation.setLazyComponentRegistrator((screenName) => { } if (screen) { - Navigation.registerComponent(screenName, () => withGestures(withSafeAreaInsets(withManagedConfig(screen)), extraStyles)); + Navigation.registerComponent(screenName, () => withGestures(withSafeAreaInsets(withManagedConfig(screen)), extraStyles)); } }); @@ -228,7 +238,7 @@ export function registerScreens() { const homeScreen = require('@screens/home').default; const serverScreen = require('@screens/server').default; const onboardingScreen = require('@screens/onboarding').default; - Navigation.registerComponent(Screens.ONBOARDING, () => withGestures(withIntl(withManagedConfig(onboardingScreen)), undefined)); - Navigation.registerComponent(Screens.SERVER, () => withGestures(withIntl(withManagedConfig(serverScreen)), undefined)); - Navigation.registerComponent(Screens.HOME, () => withGestures(withSafeAreaInsets(withServerDatabase(withManagedConfig(homeScreen))), undefined)); + Navigation.registerComponent(Screens.ONBOARDING, () => withGestures(withIntl(withManagedConfig(onboardingScreen)), undefined)); + Navigation.registerComponent(Screens.SERVER, () => withGestures(withIntl(withManagedConfig(serverScreen)), undefined)); + Navigation.registerComponent(Screens.HOME, () => withGestures(withSafeAreaInsets(withServerDatabase(withManagedConfig(homeScreen))), undefined)); } diff --git a/app/screens/login/form.tsx b/app/screens/login/form.tsx index 6ae3f8265..b5528ea7e 100644 --- a/app/screens/login/form.tsx +++ b/app/screens/login/form.tsx @@ -268,14 +268,13 @@ const LoginForm = ({config, extra, keyboardAwareRef, numberSSOs, serverDisplayNa // useEffect to set userName for EMM useEffect(() => { const setEmmUsernameIfAvailable = async () => { - if (managedConfig?.username && loginRef.current) { - loginRef.current.setNativeProps({text: managedConfig.username}); + if (managedConfig?.username) { setLoginId(managedConfig.username); } }; setEmmUsernameIfAvailable(); - }, []); + }, [managedConfig?.username]); useEffect(() => { if (loginId && password) { diff --git a/app/screens/post_options/index.ts b/app/screens/post_options/index.ts index 57c2be72a..cf33174ca 100644 --- a/app/screens/post_options/index.ts +++ b/app/screens/post_options/index.ts @@ -10,7 +10,7 @@ import {General, Permissions, Post, Screens} from '@constants'; import {MAX_ALLOWED_REACTIONS} from '@constants/emoji'; import {observePost, observePostSaved} from '@queries/servers/post'; import {observePermissionForChannel, observePermissionForPost} from '@queries/servers/role'; -import {observeConfig, observeLicense} from '@queries/servers/system'; +import {observeConfigBooleanValue, observeConfigIntValue, observeConfigValue, observeLicense} from '@queries/servers/system'; import {observeIsCRTEnabled, observeThreadById} from '@queries/servers/thread'; import {observeCurrentUser} from '@queries/servers/user'; import {isMinimumServerVersion} from '@utils/helpers'; @@ -73,11 +73,10 @@ const enhanced = withObservables([], ({combinedPost, post, showAddReaction, loca const channel = post.channel.observe(); const channelIsArchived = channel.pipe(switchMap((ch: ChannelModel) => of$(ch.deleteAt !== 0))); const currentUser = observeCurrentUser(database); - const config = observeConfig(database); const isLicensed = observeLicense(database).pipe(switchMap((lcs) => of$(lcs?.IsLicensed === 'true'))); - const allowEditPost = config.pipe(switchMap((cfg) => of$(cfg?.AllowEditPost))); - const serverVersion = config.pipe(switchMap((cfg) => of$(cfg?.Version || ''))); - const postEditTimeLimit = config.pipe(switchMap((cfg) => of$(parseInt(cfg?.PostEditTimeLimit || '-1', 10)))); + const allowEditPost = observeConfigValue(database, 'AllowEditPost'); + const serverVersion = observeConfigValue(database, 'Version'); + const postEditTimeLimit = observeConfigIntValue(database, 'PostEditTimeLimit', -1); const canPostPermission = combineLatest([channel, currentUser]).pipe(switchMap(([c, u]) => observePermissionForChannel(database, c, u, Permissions.CREATE_POST, false))); const hasAddReactionPermission = currentUser.pipe(switchMap((u) => observePermissionForPost(database, post, u, Permissions.ADD_REACTION, true))); @@ -86,7 +85,7 @@ const enhanced = withObservables([], ({combinedPost, post, showAddReaction, loca return observePermissionForPost(database, post, u, isOwner ? Permissions.DELETE_POST : Permissions.DELETE_OTHERS_POSTS, false); })); - const experimentalTownSquareIsReadOnly = config.pipe(switchMap((value) => of$(value?.ExperimentalTownSquareIsReadOnly === 'true'))); + const experimentalTownSquareIsReadOnly = observeConfigBooleanValue(database, 'ExperimentalTownSquareIsReadOnly'); const channelIsReadOnly = combineLatest([currentUser, channel, experimentalTownSquareIsReadOnly]).pipe(switchMap(([u, c, readOnly]) => { return of$(c?.name === General.DEFAULT_CHANNEL && (u && !isSystemAdmin(u.roles)) && readOnly); })); @@ -98,7 +97,7 @@ const enhanced = withObservables([], ({combinedPost, post, showAddReaction, loca const canEditUntil = combineLatest([isLicensed, allowEditPost, postEditTimeLimit, serverVersion, channelIsArchived, channelIsReadOnly]).pipe( switchMap(([ls, alw, limit, semVer, isArchived, isReadOnly]) => { - if (!isArchived && !isReadOnly && ls && ((alw === Permissions.ALLOW_EDIT_POST_TIME_LIMIT && !isMinimumServerVersion(semVer, 6)) || (limit !== -1))) { + if (!isArchived && !isReadOnly && ls && ((alw === Permissions.ALLOW_EDIT_POST_TIME_LIMIT && !isMinimumServerVersion(semVer || '', 6)) || (limit !== -1))) { return of$(post.createAt + (limit * (1000))); } return of$(-1); diff --git a/app/screens/server/form.tsx b/app/screens/server/form.tsx index 9285a8c65..c14e4c425 100644 --- a/app/screens/server/form.tsx +++ b/app/screens/server/form.tsx @@ -22,6 +22,7 @@ type Props = { connecting: boolean; displayName?: string; displayNameError?: string; + disableServerUrl: boolean; handleConnect: () => void; handleDisplayNameTextChanged: (text: string) => void; handleUrlTextChanged: (text: string) => void; @@ -77,6 +78,7 @@ const ServerForm = ({ connecting, displayName = '', displayNameError, + disableServerUrl, handleConnect, handleDisplayNameTextChanged, handleUrlTextChanged, @@ -169,6 +171,7 @@ const ServerForm = ({ blurOnSubmit={false} containerStyle={styles.enterServer} enablesReturnKeyAutomatically={true} + editable={!disableServerUrl} error={urlError} keyboardType='url' label={formatMessage({ diff --git a/app/screens/server/index.tsx b/app/screens/server/index.tsx index 26a719542..ec6a44c99 100644 --- a/app/screens/server/index.tsx +++ b/app/screens/server/index.tsx @@ -73,6 +73,7 @@ const Server = ({ const [urlError, setUrlError] = useState(); const styles = getStyleSheet(theme); const {formatMessage} = intl; + const disableServerUrl = Boolean(managedConfig?.allowOtherServers === 'false' && managedConfig?.serverUrl); useEffect(() => { let serverName: string | undefined = defaultDisplayName || managedConfig?.serverName || LocalConfig.DefaultServerName; @@ -111,7 +112,7 @@ const Server = ({ // If no other servers are allowed or the local config for AutoSelectServerUrl is set, attempt to connect handleConnect(managedConfig?.serverUrl || LocalConfig.DefaultServerUrl); } - }, []); + }, [managedConfig?.allowOtherServers, managedConfig?.serverUrl, managedConfig?.serverName]); useEffect(() => { if (url && displayName) { @@ -251,7 +252,7 @@ const Server = ({ }; const serverUrl = await getServerUrlAfterRedirect(pingUrl, !retryWithHttp); - const result = await doPing(serverUrl, true); + const result = await doPing(serverUrl, true, managedConfig?.timeout ? parseInt(managedConfig?.timeout, 10) : undefined); if (canceled) { return; @@ -345,6 +346,7 @@ const Server = ({ connecting={connecting} displayName={displayName} displayNameError={displayNameError} + disableServerUrl={disableServerUrl} handleConnect={handleConnect} handleDisplayNameTextChanged={handleDisplayNameTextChanged} handleUrlTextChanged={handleUrlTextChanged} diff --git a/app/screens/sso/sso_with_redirect_url.tsx b/app/screens/sso/sso_with_redirect_url.tsx index 3dfe53b64..30867c24d 100644 --- a/app/screens/sso/sso_with_redirect_url.tsx +++ b/app/screens/sso/sso_with_redirect_url.tsx @@ -1,8 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import qs from 'querystring'; - +import qs from 'querystringify'; import React, {useEffect, useState} from 'react'; import {useIntl} from 'react-intl'; import {Linking, Platform, Text, View} from 'react-native'; diff --git a/app/screens/thread/index.tsx b/app/screens/thread/index.tsx index 5d635cfbb..1c0a367b9 100644 --- a/app/screens/thread/index.tsx +++ b/app/screens/thread/index.tsx @@ -15,7 +15,7 @@ import type {WithDatabaseArgs} from '@typings/database/database'; const enhanced = withObservables(['rootId'], ({database, rootId}: WithDatabaseArgs & {rootId: string}) => { const isInACall = observeCurrentCall().pipe( - switchMap((call) => of$(Boolean(call))), + switchMap((call) => of$(Boolean(call?.connected))), distinctUntilChanged(), ); diff --git a/app/utils/files.tsx b/app/utils/files.tsx index 8c625ee6d..d8375da91 100644 --- a/app/utils/files.tsx +++ b/app/utils/files.tsx @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {ChannelModel} from '@app/database/models/server'; +import {ChannelModel} from '@database/models/server'; import {fileToGalleryItem} from '@utils/gallery'; export const getNumberFileMenuOptions = (canDownloadFiles: boolean, publicLinkEnabled: boolean) => { diff --git a/app/utils/helpers.ts b/app/utils/helpers.ts index 7f55e26ec..a3019c199 100644 --- a/app/utils/helpers.ts +++ b/app/utils/helpers.ts @@ -111,10 +111,6 @@ export function getUtcOffsetForTimeZone(timezone: string) { return moment.tz(timezone).utcOffset(); } -export function isCustomStatusExpirySupported(version: string) { - return isMinimumServerVersion(version, 5, 37); -} - export function toTitleCase(str: string) { function doTitleCase(txt: string) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); diff --git a/app/utils/log.ts b/app/utils/log.ts index fb325a685..38acd662a 100644 --- a/app/utils/log.ts +++ b/app/utils/log.ts @@ -1,22 +1,39 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. +import keyMirror from '@utils/key_mirror'; + +const SentryLevels = keyMirror({debug: null, info: null, warning: null, error: null}); + export function logError(...args: any[]) { // eslint-disable-next-line no-console console.error(...args); + addBreadcrumb(SentryLevels.error, ...args); } export function logWarning(...args: any[]) { // eslint-disable-next-line no-console console.warn(...args); + addBreadcrumb(SentryLevels.warning, ...args); } export function logInfo(...args: any[]) { // eslint-disable-next-line no-console console.log(...args); + addBreadcrumb(SentryLevels.info, ...args); } export function logDebug(...args: any[]) { // eslint-disable-next-line no-console console.debug(...args); + addBreadcrumb(SentryLevels.debug, ...args); } + +const addBreadcrumb = (logLevel: keyof typeof SentryLevels, ...args: any[]) => { + const Sentry = require('@sentry/react-native'); + Sentry.addBreadcrumb({ + level: logLevel, + message: args.join(','), + type: 'console-log', + }); +}; diff --git a/app/utils/sentry.ts b/app/utils/sentry.ts index 49ebeb7fa..cf071c10b 100644 --- a/app/utils/sentry.ts +++ b/app/utils/sentry.ts @@ -1,10 +1,15 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. +import {Database} from '@nozbe/watermelondb'; import {Breadcrumb} from '@sentry/types'; import {Platform} from 'react-native'; +import {Navigation} from 'react-native-navigation'; import Config from '@assets/config.json'; +import DatabaseManager from '@database/manager'; +import {getConfig} from '@queries/servers/system'; +import {getCurrentUser} from '@queries/servers/user'; import {ClientError} from './client_error'; import {logError, logWarning} from './log'; @@ -17,6 +22,7 @@ export const LOGGER_JAVASCRIPT_WARNING = 'javascript_warning'; export const LOGGER_NATIVE = 'native'; let Sentry: any; + export function initializeSentry() { if (!Config.SentryEnabled) { return; @@ -33,7 +39,21 @@ export function initializeSentry() { return; } - Sentry.init({dsn, ...Config.SentryOptions}); + Sentry.init({ + dsn, + tracesSampleRate: 0.2, + integrations: [ + new Sentry.ReactNativeTracing({ + + // Pass instrumentation to be used as `routingInstrumentation` + routingInstrumentation: new Sentry.ReactNativeNavigationInstrumentation( + Navigation, + ), + }), + ], + sendDefaultPii: false, + ...Config.SentryOptions, + }); } function getDsn() { @@ -55,12 +75,7 @@ export function captureException(error: Error | string, logger: string) { logWarning('captureException called with missing arguments', error, logger); return; } - - // TODO: Get current server config and other relevant data - - capture(() => { - Sentry.captureException(error, {logger}); - }); + Sentry.captureException(error, {logger}); } export function captureJSException(error: Error | ClientError, isFatal: boolean) { @@ -120,128 +135,76 @@ function captureClientErrorAsBreadcrumb(error: ClientError, isFatal: boolean) { } } -// Wrapper function to any calls to Sentry so that we can gather any necessary extra data -// before sending. -function capture(captureFunc: () => void, config?: ClientConfig) { - if (config?.EnableDiagnostics !== 'true') { - return; - } - - try { - let hasUserContext = false; - const userContext = getUserContext(); - if (userContext) { - hasUserContext = true; - Sentry.setUserContext(userContext); - } - - const extraContext = getExtraContext(); - if (Object.keys(extraContext).length) { - Sentry.setExtraContext(extraContext); - } - - const buildTags = getBuildTags(); - if (buildTags) { - Sentry.setTagsContext(buildTags); - } - - if (hasUserContext) { - logWarning('Capturing with Sentry at ' + getDsn() + '...'); - - captureFunc(); - } else { - logWarning('No user context, skipping capture'); - } - } catch (e) { - // Don't want this to get into an infinite loop again... - logError('Exception occurred while sending to Sentry'); - logError(e); - } -} - -function getUserContext() { - // TODO: Get current user data from active database +const getUserContext = async (database: Database) => { const currentUser = { id: 'currentUserId', locale: 'en', roles: 'multi-server-test-role', }; - if (!currentUser) { - return null; - } + const user = await getCurrentUser(database); return { - userID: currentUser.id, // This can be changed to id after we upgrade to Sentry >= 0.14.10, + userID: user?.id ?? currentUser.id, email: '', username: '', - extra: { - locale: currentUser.locale, - roles: currentUser.roles, - }, + locale: user?.locale ?? currentUser.locale, + roles: user?.roles ?? currentUser.roles, }; -} +}; -function getExtraContext() { - const context = {}; +const getExtraContext = async (database: Database) => { + const context = { + config: {}, + currentChannel: {}, + currentTeam: {}, + }; - // TODO: Add context based on the active database - - // const currentTeam = getCurrentTeam(state); - // if (currentTeam) { - // context.currentTeam = { - // id: currentTeam.id, - // }; - // } - - // const currentTeamMember = getCurrentTeamMembership(state); - // if (currentTeamMember) { - // context.currentTeamMember = { - // roles: currentTeamMember.roles, - // }; - // } - - // const currentChannel = getCurrentChannel(state); - // if (currentChannel) { - // context.currentChannel = { - // id: currentChannel.id, - // type: currentChannel.type, - // }; - // } - - // const currentChannelMember = getMyCurrentChannelMembership(state); - // if (currentChannelMember) { - // context.currentChannelMember = { - // roles: currentChannelMember.roles, - // }; - // } - - // const config = getConfig(state); - // if (config) { - // context.config = { - // BuildDate: config.BuildDate, - // BuildEnterpriseReady: config.BuildEnterpriseReady, - // BuildHash: config.BuildHash, - // BuildHashEnterprise: config.BuildHashEnterprise, - // BuildNumber: config.BuildNumber, - // }; - // } + const config = await getConfig(database); + if (config) { + context.config = { + BuildDate: config.BuildDate, + BuildEnterpriseReady: config.BuildEnterpriseReady, + BuildHash: config.BuildHash, + BuildHashEnterprise: config.BuildHashEnterprise, + BuildNumber: config.BuildNumber, + }; + } return context; -} +}; -function getBuildTags() { - let tags; +const getBuildTags = async (database: Database) => { + const tags = { + serverBuildHash: '', + serverBuildNumber: '', + }; - // TODO: Add context based on the active database - - // const config = getConfig(state); - // if (config) { - // tags = { - // serverBuildHash: config.BuildHash, - // serverBuildNumber: config.BuildNumber, - // }; - // } + const config = await getConfig(database); + if (config) { + tags.serverBuildHash = config.BuildHash; + tags.serverBuildNumber = config.BuildNumber; + } return tags; -} +}; + +export const addSentryContext = async (serverUrl: string) => { + if (!Config.SentryEnabled || !Sentry) { + return; + } + + try { + const {database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); + const userContext = await getUserContext(database); + Sentry.setContext('User-Information', userContext); + + const buildContext = await getBuildTags(database); + Sentry.setContext('App-Build Information', buildContext); + + const extraContext = await getExtraContext(database); + Sentry.setContext('Server-Information', extraContext); + } catch (e) { + logError(`addSentryContext for serverUrl ${serverUrl}`, e); + } +}; diff --git a/app/utils/thread/index.ts b/app/utils/thread/index.ts index 2f2c86687..a279fb236 100644 --- a/app/utils/thread/index.ts +++ b/app/utils/thread/index.ts @@ -6,21 +6,20 @@ import {getPreferenceValue} from '@helpers/api/preference'; import type PreferenceModel from '@typings/database/models/servers/preference'; -export function processIsCRTEnabled(preferences: PreferenceModel[]|PreferenceType[], config?: ClientConfig): boolean { +export function processIsCRTEnabled(preferences: PreferenceModel[]|PreferenceType[], configValue?: string, featureFlag?: string): boolean { let preferenceDefault = Preferences.COLLAPSED_REPLY_THREADS_OFF; - const configValue = config?.CollapsedThreads; if (configValue === Config.DEFAULT_ON) { preferenceDefault = Preferences.COLLAPSED_REPLY_THREADS_ON; } const preference = getPreferenceValue(preferences, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.COLLAPSED_REPLY_THREADS, preferenceDefault); const isAllowed = ( - config?.FeatureFlagCollapsedThreads === Config.TRUE && - config?.CollapsedThreads !== Config.DISABLED + featureFlag === Config.TRUE && + configValue !== Config.DISABLED ); return isAllowed && ( preference === Preferences.COLLAPSED_REPLY_THREADS_ON || - config?.CollapsedThreads === Config.ALWAYS_ON + configValue === Config.ALWAYS_ON ); } diff --git a/app/utils/url/test.ts b/app/utils/url/test.ts index 8c2500eaa..f1f5ee48d 100644 --- a/app/utils/url/test.ts +++ b/app/utils/url/test.ts @@ -4,6 +4,7 @@ import {Linking} from 'react-native'; import DeepLinkType from '@constants/deep_linking'; +import TestHelper from '@test/test_helper'; import * as UrlUtils from '@utils/url'; /* eslint-disable max-nested-callbacks */ @@ -279,7 +280,8 @@ describe('UrlUtils', () => { const onError = jest.fn(); const onSuccess = jest.fn(); - await UrlUtils.tryOpenURL(url, onError, onSuccess); + UrlUtils.tryOpenURL(url, onError, onSuccess); + await TestHelper.wait(200); expect(onError).toHaveBeenCalledTimes(1); expect(onSuccess).not.toHaveBeenCalled(); }); diff --git a/assets/base/i18n/de.json b/assets/base/i18n/de.json index fac422be5..b9ef84a60 100644 --- a/assets/base/i18n/de.json +++ b/assets/base/i18n/de.json @@ -239,8 +239,6 @@ "mobile.message_length.message": "Die Nachricht ist zu lang. Anzahl der Zeichen: {count}/{max}", "mobile.message_length.message_split_left": "Nachricht überschreitet maximale Schriftzeichenanzahl", "mobile.message_length.title": "Länge der Nachricht", - "mobile.microphone_permission_denied_description": "Um an diesem Call teilzunehmen, öffne die Einstellungen um Mattermost den Zugriff auf dein Mikrofon zu erlauben.", - "mobile.microphone_permission_denied_title": "{applicationName} möchte auf dein Mikrofon zugreifen", "mobile.oauth.failed_to_login": "Dein Anmeldeversuch ist fehlgeschlagen. Bitte nochmal versuchen.", "mobile.oauth.failed_to_open_link": "Der Link konnte nicht geöffnet werden. Bitte nochmal versuchen.", "mobile.oauth.something_wrong": "Etwas ist schief gelaufen", @@ -598,7 +596,6 @@ "mobile.calls_lasted": "Dauer {duration}", "mobile.calls_join_call": "Am Anruf teilnehmen", "mobile.calls_error_title": "Fehler", - "mobile.calls_error_permissions": "Keine Berechtigung für das Mikrofon, Anruf kann nicht gestartet werden", "mobile.calls_error_message": "Fehler: {error}", "mobile.calls_ended_at": "Beendet am", "mobile.calls_end_permission_title": "Fehler", @@ -820,11 +817,8 @@ "mobile.search.show_more": "Mehr anzeigen", "mobile.search.show_less": "Weniger anzeigen", "mobile.search.modifier.phrases": "Nachrichten mit Phrasen", - "mobile.search.modifier.on": "Ein bestimmtes Datum", "mobile.search.modifier.in": "Ein bestimmter Kanal", "mobile.search.modifier.from": "Ein bestimmter Benutzer", - "mobile.search.modifier.before": "Vor einem Datum", - "mobile.search.modifier.after": "Nach einem Datum", "mobile.search.modifier.exclude": "Suchbegriffe ausschließen", "mobile.screen.your_profile": "Dein Profil", "mobile.screen.settings": "Einstellungen", @@ -845,5 +839,9 @@ "mobile.write_storage_permission_denied_description": "Speichere Dateien auf deinem Gerät. Öffne die Einstellungen, um {applicationName} Schreibzugriff auf Dateien auf diesem Gerät zu gewähren.", "mobile.storage_permission_denied_description": "Lade Dateien auf deinen Server hoch. Öffne die Einstellungen, um {applicationName} Lese- und Schreibzugriff auf Dateien auf diesem Gerät zu gewähren.", "mobile.session_expired": "Bitte melde dich an, um weiter Benachrichtigungen zu erhalten. Sitzungen für {siteName} sind so konfiguriert, dass sie alle {daysCount, number} {daysCount, plural, one {Tag} other {Tage}} ablaufen.", - "mobile.post_pre_header.pinned_saved": "Angeheftet und gespeichert" + "mobile.post_pre_header.pinned_saved": "Angeheftet und gespeichert", + "plus_menu.invite_people_to_team.title": "Lade Benutzer zum Team ein", + "mobile.calls_mic_error": "Um teilzunehmen, öffne die Einstellungen, um Mattermost Zugriff auf dein Mikrofon zu gewähren.", + "invite_people_to_team.title": "Werde Mitglied des {team} Teams", + "invite_people_to_team.message": "Hier ist ein Link, um mit uns auf Mattermost zusammenzuarbeiten und zu kommunizieren." } diff --git a/assets/base/i18n/en.json b/assets/base/i18n/en.json index de610b01a..8d38f01d8 100644 --- a/assets/base/i18n/en.json +++ b/assets/base/i18n/en.json @@ -315,6 +315,8 @@ "intro.welcome": "Welcome to {displayName} channel.", "intro.welcome.private": "Only invited members can see messages posted in this private channel.", "intro.welcome.public": "Add some more team members to the channel or start a conversation below.", + "invite_people_to_team.message": "Here’s a link to collaborate and communicate with us on Mattermost.", + "invite_people_to_team.title": "Join the {team} team", "last_users_message.added_to_channel.type": "were **added to the channel** by {actor}.", "last_users_message.added_to_team.type": "were **added to the team** by {actor}.", "last_users_message.first": "{firstUser} and ", @@ -368,7 +370,6 @@ "mobile.calls_end_permission_title": "Error", "mobile.calls_ended_at": "Ended at", "mobile.calls_error_message": "Error: {error}", - "mobile.calls_error_permissions": "No permissions to microphone, unable to start call", "mobile.calls_error_title": "Error", "mobile.calls_join_call": "Join call", "mobile.calls_lasted": "Lasted {duration}", @@ -377,6 +378,7 @@ "mobile.calls_limit_msg": "The maximum number of participants per call is {maxParticipants}. Contact your System Admin to increase the limit.", "mobile.calls_limit_reached": "Participant limit reached", "mobile.calls_lower_hand": "Lower hand", + "mobile.calls_mic_error": "To participate, open Settings to grant Mattermost access to your microphone.", "mobile.calls_more": "More", "mobile.calls_mute": "Mute", "mobile.calls_name_is_talking": "{name} is talking", @@ -482,8 +484,6 @@ "mobile.message_length.message": "Your current message is too long. Current character count: {count}/{max}", "mobile.message_length.message_split_left": "Message exceeds the character limit", "mobile.message_length.title": "Message Length", - "mobile.microphone_permission_denied_description": "To participate in this call, open Settings to grant Mattermost access to your microphone.", - "mobile.microphone_permission_denied_title": "{applicationName} would like to access your microphone", "mobile.no_results_with_term": "No results for “{term}”", "mobile.no_results_with_term.files": "No files matching “{term}”", "mobile.no_results_with_term.messages": "No matches found for “{term}”", @@ -548,12 +548,9 @@ "mobile.screen.settings": "Settings", "mobile.screen.your_profile": "Your Profile", "mobile.search.jump": "Jump to recent messages", - "mobile.search.modifier.after": "after a date", - "mobile.search.modifier.before": "before a date", "mobile.search.modifier.exclude": "exclude search terms", "mobile.search.modifier.from": "a specific user", "mobile.search.modifier.in": "a specific channel", - "mobile.search.modifier.on": "a specific date", "mobile.search.modifier.phrases": "messages with phrases", "mobile.search.show_less": "Show less", "mobile.search.show_more": "Show more", @@ -684,6 +681,7 @@ "pinned_messages.empty.title": "No pinned messages yet", "plus_menu.browse_channels.title": "Browse Channels", "plus_menu.create_new_channel.title": "Create New Channel", + "plus_menu.invite_people_to_team.title": "Invite people to the team", "plus_menu.open_direct_message.title": "Open a Direct Message", "post_body.check_for_out_of_channel_groups_mentions.message": "did not get notified by this mention because they are not in the channel. They are also not a member of the groups linked to this channel.", "post_body.check_for_out_of_channel_mentions.link.and": " and ", diff --git a/assets/base/i18n/en_AU.json b/assets/base/i18n/en_AU.json index 829404efc..5f4291899 100644 --- a/assets/base/i18n/en_AU.json +++ b/assets/base/i18n/en_AU.json @@ -239,8 +239,6 @@ "mobile.message_length.message": "Your current message is too long. Current character count: {count}/{max}", "mobile.message_length.message_split_left": "Message exceeds the character limit", "mobile.message_length.title": "Message Length", - "mobile.microphone_permission_denied_description": "To participate in this call, open Settings and grant Mattermost access to your microphone.", - "mobile.microphone_permission_denied_title": "{applicationName} would like to access your microphone.", "mobile.oauth.failed_to_login": "Your login attempt failed. Please try again.", "mobile.oauth.failed_to_open_link": "The link failed to open. Please try again.", "mobile.oauth.something_wrong": "An error occurred", @@ -572,12 +570,9 @@ "mobile.search.show_more": "Show more", "mobile.search.show_less": "Show less", "mobile.search.modifier.phrases": "messages with phrases", - "mobile.search.modifier.on": "a specific date", "mobile.search.modifier.in": "a specific channel", "mobile.search.modifier.from": "a specific user", "mobile.search.modifier.exclude": "exclude search terms", - "mobile.search.modifier.before": "before a date", - "mobile.search.modifier.after": "after a date", "mobile.screen.your_profile": "Your Profile", "mobile.screen.settings": "Settings", "mobile.reset_status.alert_ok": "OK", @@ -747,7 +742,6 @@ "mobile.calls_lasted": "Lasted {duration}", "mobile.calls_join_call": "Join call", "mobile.calls_error_title": "Error", - "mobile.calls_error_permissions": "Unable to initiate a call. Please check your microphone permissions.", "mobile.calls_error_message": "Error: {error}", "mobile.calls_ended_at": "Ended at", "mobile.calls_end_permission_title": "Error", @@ -843,5 +837,7 @@ "channel_intro.createdOn": "Created on {date}", "channel_intro.createdBy": "Created by {user} on {date}", "channel_info.unarchive_title": "Unarchive {term}", - "channel_info.unarchive_failed": "An error occurred while unarchiving the channel {displayName}" + "channel_info.unarchive_failed": "An error occurred while unarchiving the channel {displayName}", + "mobile.login_options.office365": "Office 365", + "alert.push_proxy_unknown.description": "This server was unable to receive push notifications for an unknown reason and will be reattempted next time you connect." } diff --git a/assets/base/i18n/es.json b/assets/base/i18n/es.json index 681da9639..2b9adf9bf 100644 --- a/assets/base/i18n/es.json +++ b/assets/base/i18n/es.json @@ -239,8 +239,6 @@ "mobile.message_length.message": "El mensaje es demasiado largo. Actual número de caracteres: {max}/{count}", "mobile.message_length.message_split_left": "El mensaje excede el límite de caracteres", "mobile.message_length.title": "Longitud del Mensaje", - "mobile.microphone_permission_denied_description": "Para participar en esta llamada, abre la Configuración para conceder a Mattermost acceso a tu micrófono.", - "mobile.microphone_permission_denied_title": "{applicationName} desea acceder a su micrófono", "mobile.oauth.failed_to_login": "Su intento de acceso falló. Por favor, inténtelo de nuevo.", "mobile.oauth.failed_to_open_link": "El enlace no se abrió. Por favor, inténtelo de nuevo.", "mobile.oauth.something_wrong": "Algo salió mal", @@ -427,7 +425,7 @@ "channel_info.pinned_messages": "Mensajes Anclados", "channel_info.notification.none": "Nunca", "channel_info.notification.mention": "Menciones", - "channel_info.notification.default": "Default", + "channel_info.notification.default": "Predeterminado", "channel_info.muted": "Silenciar", "channel_info.mobile_notifications": "Notificaciones Móvil", "channel_info.mention": "Mención", @@ -492,9 +490,9 @@ "notification_settings.mentions.sensitiveName": "Tu nombre, sensible a mayúsculas y minúsculas", "notification_settings.mentions.sensitiveUsername": "Tu nombre de usuario no sensible a mayúsculas y minúsculas", "notification_settings.mobile": "Notificaciones Push", - "notification_settings.mobile.away": "No disponible o fuera de línea", + "notification_settings.mobile.away": "No disponible o desconectado", "notification_settings.mobile.offline": "Fuera de línea", - "notification_settings.mobile.online": "En lína, no disponible o fuera de línea", + "notification_settings.mobile.online": "En línea, no disponible o desconectado", "notification_settings.mobile.trigger_push": "Lanzar notificaciones push cuando...", "notification_settings.ooo_auto_responder": "Respuestas automáticas", "notification_settings.push_notification": "Notificaciones Push", @@ -502,7 +500,7 @@ "notification_settings.push_threads.replies": "Respuestas del hilo", "notification_settings.pushNotification.all_new_messages": "Todos los mensajes nuevos", "notification_settings.pushNotification.disabled_long": "Las notificaciones Push para los dispositivos móviles han sido deshabilitadas por tu Administrador del Sistema.", - "notification_settings.pushNotification.mentions_only": "Menciones, sólo mensajes directos (defecto)", + "notification_settings.pushNotification.mentions_only": "Menciones, sólo mensajes directos (predeterminado)", "notification_settings.pushNotification.nothing": "Nada", "notification_settings.send_notification.about": "Notificarme sobre...", "notification_settings.threads_mentions": "Menciones en hilos", @@ -566,7 +564,7 @@ "select_team.title": "Selecciona un equipo", "server_list.push_proxy_unknown": "No se pudieron recibir las notificaciones de este servidor debido a su configuración. Reintenta cerrando sesión y volviendo a iniciar sesión.", "server.logout.alert_description": "Todos los datos asociados serán eliminados", - "server.logout.alert_title": "¿Realmente quieres cerrar la sesión en {displayName}?", + "server.logout.alert_title": "¿Realmente quieres cerrar la sesión de {displayName}?", "server.remove.alert_description": "Esto lo eliminará de tu lista de servidores. Todos los datos asociados serán eliminados", "server.remove.alert_title": "¿Realmente quieres eliminar {displayName}?", "server.tutorial.swipe": "Desliza a la izquierda para ver más acciones", @@ -620,7 +618,7 @@ "thread.header.thread_in": "en {channelName}", "thread.noReplies": "Aún no hay respuestas", "thread.options.title": "Acciones de Hilos", - "thread.repliesCount": "{repliesCount, number} {repliesCount, plural, one {reply} other {replies}}", + "thread.repliesCount": "{repliesCount, number} {repliesCount, plural, one {respuesta} other {respuestas}}", "threads.end_of_list.subtitle": "Si quieres ver las conversaciones antiguas, intenta buscar en su lugar", "threads.end_of_list.title": "¡Ese es el final de la lista!", "unreads.empty.paragraph": "Apaga el filto de no leído para mostrar todos tus canales.", @@ -638,17 +636,14 @@ "permalink.error.public_channel_and_team.title": "Unirse al canal y equipo", "server.websocket.unreachable": "El servidor no es alcanzable.", "channel_info.convert_private_description": "Cuando conviertes {displayName} a un canal privado, el historial y la afiliación se preservan. Los archivos compartidos públicamente permanecen accesibles a cualquiera que tenga el enlace. La afiliación en un canal privado es sólo por invitación.\n\nEl cambio es permanente y no puede deshacerse.\n\n¿Realmente quieres convertir a {displayName} en un canal privado?", - "channel_header.member_count": "{count, plural, one {# member} other {# members}}", + "channel_header.member_count": "{count, plural, one {# miembro} other {# miembros}}", "mobile.search.team.select": "Selecciona un equipo a buscar", "mobile.search.show_more": "Mostrar más", "mobile.search.show_less": "Mostrar menos", "mobile.search.modifier.phrases": "mensajes con frases", - "mobile.search.modifier.on": "una fecha específica", "mobile.search.modifier.in": "un canal específico", "mobile.search.modifier.from": "un usuario específico", "mobile.search.modifier.exclude": "excluir términos de búsqueda", - "mobile.search.modifier.before": "antes de una fecha", - "mobile.search.modifier.after": "después de una fecha", "mobile.screen.your_profile": "Tu perfil", "mobile.screen.settings": "Ajustes", "mobile.reset_status.alert_ok": "OK", @@ -726,7 +721,6 @@ "mobile.calls_lasted": "Duró {duration}", "mobile.calls_join_call": "Unirse a llamada", "mobile.calls_error_title": "Error", - "mobile.calls_error_permissions": "Sin permisos para el micrófono, no es posible iniciar la llamada", "mobile.calls_error_message": "Error: {error}", "mobile.calls_ended_at": "Terminada a", "mobile.calls_end_permission_title": "Error", @@ -773,7 +767,7 @@ "global_threads.options.title": "Acciones de hilo", "general_settings.notifications": "Notificaciones", "general_settings.help": "Ayuda", - "general_settings.display": "Mostrar", + "general_settings.display": "Pantalla", "general_settings.advanced_settings": "Ajustes avanzados", "general_settings.about": "Acerca de {appTitle}", "gallery.video_saved": "Video guardado", @@ -798,7 +792,7 @@ "display_settings.tz.auto": "Automático", "display_settings.timezone": "Zona horaria", "display_settings.theme": "Tema", - "display_settings.clockDisplay": "Visualización del Reloj", + "display_settings.clockDisplay": "Pantalla del Reloj", "display_settings.clock.standard": "12 horas", "display_settings.clock.military": "24 horas", "custom_status.suggestions.title": "Sugerencias", @@ -806,5 +800,45 @@ "custom_status.set_status": "Asignar un estado", "create_post.thread_reply": "Responder a este hilo...", "create_direct_message.title": "Crear Mensaje Directo", - "channel_modal.makePrivate.label": "Hacer privado" + "channel_modal.makePrivate.label": "Hacer privado", + "mobile.session_expired.title": "Sesión Vencida", + "mobile.ios.photos_permission_denied_description": "Sube fotos y videos a tu servidor o guárdalos en tu dispositivo. Abre Ajustes para otorgar a {applicationName} permisos de Lectura y escritura en tu biblioteca de fotos y videos.", + "mobile.components.select_server_view.msg_description": "Un servidor es el centro de comunicación de tu equipo al que se accede a través de una URL única", + "mobile.camera_photo_permission_denied_description": "Toma fotos y súbelas a tu servidor o guárdalas en tu dispositivo. Abre Ajustes para otorgar permisos de lectura y escritura a {applicationName} a tu cámara.", + "mentions.empty.paragraph": "Aquí verás mensajes cuando alguien te mencione o use términos que estás monitoreando.", + "login_mfa.enterToken": "Para completar el proceso de registro, por favor ingresa el código desde la app authenticator de tu dispositivo móvil.", + "gallery.unsupported": "La previsualización no está soportada para este tipo de archivo. Intenta descargarlo y abrirlo con otra aplicación.", + "channel_modal.purposeEx": "Un canal para presentar errores y mejoras", + "channel_modal.nameEx": "Bugs, Marketing", + "channel_modal.makePrivate.description": "Cuando un canal es privado, sólo los miembros del equipo invitados pueden acceder y participar en ese canal", + "channel_modal.headerHelp": "Especifica el texto a mostrar en el encabezado del canal debajo del nombre del canal. Por ejemplo, incluye enlaces usados frecuentemente al escribir el texto del enlace [Título de Enlace](http://example.com).", + "notification_settings.auto_responder.footer.message": "Asigna un mensaje personalizado para que sea enviado automáticamente en respuesta a los mensajes directos, tal como fuera de la oficina o de vacaciones. Habilitar esta configuración cambia tu estado de Fuera de la Oficina y deshabilita las notificaciones.", + "mobile.session_expired": "Por favor inicia sesión para continuar recibiendo notificaciones. Las sesiones para {siteName} están configuradas para vencer cada {daysCount, number}{daysCount, plural, one {día} other {días}}.", + "mobile.server_url.deeplink.emm.denied": "Esta app es controlada por un EMM y la url del servidor DeepLink no coincide con el servidor EMM permitido", + "mobile.server_upgrade.description": "\nSe requiere una actualización de servidor para usar la app Mattermost. Por favor solicita más detalles a tu Administrador del Sistema.\n", + "mobile.server_requires_client_certificate": "El servidor requiere el certificado del cliente para la autenticación.", + "mobile.server_ping_failed": "No se puede conectar al servidor.", + "mobile.server_name.exists": "Estás usando este nombre para otro servidor.", + "mobile.server_link.unreachable_user.error": "No podemos redirigirte a los Mensajes Directos. El usuario especificado es desconocido.", + "mobile.server_identifier.exists": "Ya estás conectado a este servidor.", + "mobile.login_options.none": "Aún no puedes iniciar sesión en tu cuenta. Se debe configurar al menos una opción de inicio. Contacta a tu Administrador del Sistema para ayuda.", + "mobile.leave_and_join_message": "Ya estás en una llamada de canal en ~{leaveChannelName}- ¿Quieres abandonar la llamada actual y unirte a la llamada en ~{joinChannelName}?", + "mobile.calls_lower_hand": "Bajar la mano", + "user.edit_profile.email.auth_service": "El inicio de sesión se realiza a través de {service}. El correo no puede ser actualizado. La dirección de correo usara para las notificaciones es {email}.", + "permalink.error.public_channel.text": "El mensaje que intentas ver está en un canal al cual no perteneces. ¿Quieres unirte a **{channelName}** para verlo?", + "permalink.error.public_channel_and_team.text": "El mensaje que intentas ver está en un canal al cual no perteneces y en un equipo del cual no eres miembro. ¿Quieres unirte a **{channelName}** y el equipo **{teamName}** para verlo?", + "permalink.error.private_channel.text": "El mensaje que intentas ver está en un canal privado al cual no has sido invitado, pero tienes acceso como administrador. ¿Aún quieres unirte a **{channelName}**?", + "permalink.error.private_channel_and_team.text": "El mensaje que intentas ver está en un canal privado en un equipo del cual no eres miembro. Tienes acceso como administrador. ¿Quieres unirte a **{channelName}** y el equipo **{teamName}** para verlo?", + "notification_settings.email.emailInfo": "Las notificaciones por correo son enviadas para menciones y mensajes directo cuando estás desconectado o no disponible for más de 5 minutos.", + "notification_settings.email.emailHelp2": "El correo electrónico ha sido deshabilitado por tu Administrador del Sistema. No se enviarán notificaciones por correo hasta que se habilite.", + "notification_settings.email.crt.send": "Notificaciones de respuesta de hilos", + "notification_settings.email.crt.emailInfo": "Cuando está habilitado, cualquier respuesta a un hilo que estés siguiendo enviará una notificación por correo", + "notification_settings.email": "Notificaciones por correo", + "notification_settings.auto_responder.to.enable": "Habilitar respuestas automáticas", + "notification_settings.auto_responder.default_message": "Hola, estoy fuera de la oficina y no puedo responder a los mensajes.", + "notification_settings.auto_responder": "Respuestas automáticas", + "more_messages.text": "{count} nuevos {count, plural, one {mensaje} other {mensajes}}", + "mobile.write_storage_permission_denied_description": "Guarda archivos en tu dispositivo. Abre Ajustes para otorgar a {applicationName} permisos de escritura de archivos en este dispositivo.", + "mobile.storage_permission_denied_description": "Sube archivos a tu servidor. Abre Ajustes para otorgar a {applicationName} permisos de Lectura y Escritura a los archivos en este dispositivo.", + "mobile.calls_mic_error": "Para participar, aber Ajustes para otorgar a Mattermost acceso a tu micrófono." } diff --git a/assets/base/i18n/fr.json b/assets/base/i18n/fr.json index b0a4412cd..fd95560b0 100644 --- a/assets/base/i18n/fr.json +++ b/assets/base/i18n/fr.json @@ -1,382 +1,380 @@ { - "about.date": "Date de compilation :", - "about.enterpriseEditione1": "Édition Entreprise", - "about.enterpriseEditionLearn": "Pour en savoir plus sur l’Enterprise Edition : ", - "about.enterpriseEditionSt": "Communication moderne derrière votre pare-feu.", - "about.hash": "Hash de version :", - "about.hashee": "Hash de version EE :", - "about.teamEditionLearn": "Rejoignez la communauté Mattermost sur ", - "about.teamEditionSt": "Toute la communication de votre équipe en un seul endroit, consultable instantanément et accessible de partout.", - "about.teamEditiont0": "Édition Team", - "about.teamEditiont1": "Édition Entreprise", - "api.channel.add_guest.added": "{addedUsername} ajouté au canal en tant qu'invité par {username}.", - "api.channel.add_member.added": "{addedUsername} a été ajouté au canal par {username}.", - "api.channel.guest_join_channel.post_and_forget": "{username} a rejoint le canal en tant qu'invité.", - "apps.error": "Erreur : {error}", - "apps.error.command.field_missing": "Champs obligatoires manquants : `{fieldName}`.", - "apps.error.command.same_channel": "Canal répété pour le champ `{fieldName}` : `{option}`.", - "apps.error.command.same_option": "Option répétée pour le champ `{fieldName}` : `{option}`.", - "apps.error.command.same_user": "Utilisateur répété pour le champ `{fieldName}` : `{option}`.", - "apps.error.command.unknown_channel": "Canal inconnu pour le champ `{fieldName}` : `{option}`.", - "apps.error.command.unknown_option": "Option inconnue pour le champ `{fieldName}` : `{option}`.", - "apps.error.command.unknown_user": "Utilisateur inconnu pour le champ `{fieldName}` : `{option}`.", - "apps.error.form.no_form": "`form` n'est pas défini.", - "apps.error.form.no_lookup": "`lookup` n'est pas défini.", - "apps.error.form.no_source": "`source` n'est pas défini.", - "apps.error.form.no_submit": "`submit` n'est pas défini", - "apps.error.form.refresh": "Une erreur s'est produite lors de la récupération des champs sélectionnés. Veuillez contacter le développeur de l'application. Détails : {details}", - "apps.error.form.refresh_no_refresh": "Un rafraîchissement a été appelé sur un champ qui ne prend pas en charge le rafraîchissement.", - "apps.error.form.submit.pretext": "Une erreur s'est produite lors de l'envoi du formulaire. Veuillez contacter le développeur de l'application. Détails : {details}", - "apps.error.lookup.error_preparing_request": "Une erreur s'est produite lors de la préparation de la requête de recherche : {errorMessage}", - "apps.error.malformed_binding": "La connexion n'est pas correctement mise en forme. Contactez le développeur de l'App.", - "apps.error.parser": "Erreur d'interprétation : {error}", - "apps.error.parser.execute_non_leaf": "Vous devez choisir une sous-commande.", - "apps.error.parser.missing_binding": "Liens de commande manquants.", - "apps.error.parser.missing_field_value": "La valeur du champ est manquante.", - "apps.error.parser.missing_list_end": "Marqeur de fin de liste attendu.", - "apps.error.parser.missing_quote": "Les doubles guillemets doivent être fermés avant la fin du champ de saisie.", - "apps.error.parser.missing_source": "Le formulaire n'a ni `submit` ni `source`.", - "apps.error.parser.missing_submit": "Aucun appel dans le lien ou le formulaire.", - "apps.error.parser.missing_tick": "Une marqueur de citation correspondant est attendu avant la fin du champ de saisie.", - "apps.error.parser.multiple_equal": "Les signes `=` multiples ne sont pas autorisés.", - "apps.error.parser.no_argument_pos_x": "Impossible d'identifier l'argument.", - "apps.error.parser.no_bindings": "Aucun lien de commande.", - "apps.error.parser.no_form": "Aucun formulaire trouvé.", - "apps.error.parser.no_match": "`{command}` : Aucune commande correspondante trouvée dans cet espace de travail.", - "apps.error.parser.no_slash_start": "La commande doit commencer par un `/`.", - "apps.error.parser.unexpected_character": "Caractère non attendu.", - "apps.error.parser.unexpected_comma": "Virgule non attendue.", - "apps.error.parser.unexpected_error": "Erreur inattendue.", - "apps.error.parser.unexpected_flag": "La commande n'accepte pas l'indicateur `{flagName}`.", - "apps.error.parser.unexpected_squared_bracket": "Ouverture de liste non attendue.", - "apps.error.parser.unexpected_state": "Inaccessible : Statut inattendu dans matchBinding : `{state}`.", - "apps.error.parser.unexpected_whitespace": "Inaccessible : Espace blanc inattendu.", - "apps.error.responses.navigate.no_url": "Le type de réponse est `navigate`, mais aucune URL n'a été incluse dans la réponse.", - "apps.error.responses.unexpected_error": "Une erreur inattendue a été reçue.", - "apps.error.responses.unknown_field_error": "Erreur reçue pour un champ inconnu. Nom du champ : `{field}`. Erreur : `{error}`.", - "apps.error.responses.unknown_type": "Le type de réponse de l'application n'est pas pris en charge. Type de réponse : {type}.", - "apps.error.unknown": "Une erreur inconnue s'est produite.", - "apps.suggestion.dynamic.error": "Erreur de sélection dynamique", - "apps.suggestion.errors.parser_error": "Erreur d'interprétation", - "apps.suggestion.no_dynamic": "Aucune donnée n'a été renvoyée pour les suggestions dynamiques", - "apps.suggestion.no_static": "Aucune option correspondante.", - "apps.suggestion.no_suggestion": "Aucune suggestion correspondante.", - "archivedChannelMessage": "Vous consultez un **canal archivé**. Vous ne pouvez pas publier de nouveaux messages.", - "camera_type.photo.option": "Prendre une photo", - "camera_type.title": "Choix d'une action", - "camera_type.video.option": "Enregistrer une vidéo", - "center_panel.archived.closeChannel": "Fermer le canal", - "channel_info.header": "Entête :", - "channel_loader.someone": "Quelqu'un", - "channel_modal.descriptionHelp": "Décrit comment ce canal doit être utilisé.", - "channel_modal.header": "Entête", - "channel_modal.name": "Nom", - "channel_modal.optional": "(facultatif)", - "channel_modal.purpose": "Description", - "combined_system_message.added_to_channel.many_expanded": "{users} et {lastUser} ont été **ajoutés au canal** par {actor}.", - "combined_system_message.added_to_channel.one": "{firstUser} **ajouté au canal** par {actor}.", - "combined_system_message.added_to_channel.one_you": "Vous avez été **ajouté au canal** par {actor}.", - "combined_system_message.added_to_channel.two": "{firstUser} et {secondUser} ont été **ajoutés au canal** par {actor}.", - "combined_system_message.added_to_team.many_expanded": "{users} et {lastUser} ont été **ajoutés à l'équipe** par {actor}.", - "combined_system_message.added_to_team.one": "{firstUser} a été **ajouté à l'équipe** par {actor}.", - "combined_system_message.added_to_team.one_you": "Vous avez été **ajouté à l'équipe** par {actor}.", - "combined_system_message.added_to_team.two": "{firstUser} et {secondUser} ont été **ajoutés à l'équipe** par {actor}.", - "combined_system_message.joined_channel.many_expanded": "{users} et {lastUser} ont **rejoint le canal**.", - "combined_system_message.joined_channel.one": "{firstUser} a **rejoint le canal**.", - "combined_system_message.joined_channel.one_you": "Vous avez **rejoint le canal**.", - "combined_system_message.joined_channel.two": "{firstUser} et {secondUser} ont **rejoint le canal**.", - "combined_system_message.joined_team.many_expanded": "{users} et {lastUser} ont **rejoint l'équipe**.", - "combined_system_message.joined_team.one": "{firstUser} a **rejoint l'équipe**.", - "combined_system_message.joined_team.one_you": "Vous avez **rejoint l'équipe**.", - "combined_system_message.joined_team.two": "{firstUser} et {secondUser} ont **rejoint l'équipe**.", - "combined_system_message.left_channel.many_expanded": "{users} et {lastUser} ont **quitté le canal**.", - "combined_system_message.left_channel.one": "{firstUser} a **quitté le canal**.", - "combined_system_message.left_channel.one_you": "Vous avez **quitté le canal**.", - "combined_system_message.left_channel.two": "{firstUser} et {secondUser} ont **quitté le canal**.", - "combined_system_message.left_team.many_expanded": "{users} et {lastUser} ont **quitté l'équipe**.", - "combined_system_message.left_team.one": "{firstUser} a **quitté l'équipe**.", - "combined_system_message.left_team.one_you": "Vous avez **quitté l'équipe**.", - "combined_system_message.left_team.two": "{firstUser} et {secondUser} ont **quitté l'équipe**.", - "combined_system_message.removed_from_channel.many_expanded": "{users} et {lastUser} ont été **retirés du canal**.", - "combined_system_message.removed_from_channel.one": "{firstUser} a été **retiré du canal**.", - "combined_system_message.removed_from_channel.one_you": "Vous avez été **retiré du canal**.", - "combined_system_message.removed_from_channel.two": "{firstUser} et {secondUser} ont été **retirés du canal**.", - "combined_system_message.removed_from_team.many_expanded": "{users} et {lastUser} ont été **retirés de l'équipe**.", - "combined_system_message.removed_from_team.one": "{firstUser} a été **retiré de l'équipe**.", - "combined_system_message.removed_from_team.one_you": "Vous avez été **retiré de l'équipe**.", - "combined_system_message.removed_from_team.two": "{firstUser} et {secondUser} ont été **retirés de l'équipe**.", - "combined_system_message.you": "Vous", - "create_post.deactivated": "Ceci est un canal de messages personnels archivé contenant une discussion avec un utilisateur désactivé.", - "create_post.write": "Écrire à {channelDisplayName}", - "custom_status.expiry_dropdown.custom": "Personnalisé", - "custom_status.expiry_dropdown.date_and_time": "Date et heure", - "custom_status.expiry_dropdown.dont_clear": "Ne pas expirer", - "custom_status.expiry_dropdown.four_hours": "4 heures", - "custom_status.expiry_dropdown.one_hour": "1 heure", - "custom_status.expiry_dropdown.thirty_minutes": "30 minutes", - "custom_status.expiry_dropdown.this_week": "Cette semaine", - "custom_status.expiry_dropdown.today": "Aujourd'hui", - "custom_status.expiry_time.today": "Aujourd'hui", - "custom_status.expiry_time.tomorrow": "Demain", - "custom_status.expiry.at": "à", - "custom_status.expiry.until": "Jusqu'à", - "custom_status.failure_message": "Impossible de mettre à jour le statut. Essayez à nouveau", - "custom_status.suggestions.in_a_meeting": "En réunion", - "custom_status.suggestions.on_a_vacation": "En vacance", - "custom_status.suggestions.out_for_lunch": "Parti déjeuner", - "custom_status.suggestions.out_sick": "Malade", - "custom_status.suggestions.working_from_home": "En télétravail", - "date_separator.today": "Aujourd'hui", - "date_separator.yesterday": "Hier", - "edit_post.editPost": "Modifier le message...", - "edit_post.save": "Enregistrer", - "emoji_picker.activities": "Activités", - "emoji_picker.animals-nature": "Animaux et nature", - "emoji_picker.custom": "Personnalisé", - "emoji_picker.flags": "Drapeaux", - "emoji_picker.food-drink": "Nourriture et boissons", - "emoji_picker.objects": "Objets", - "emoji_picker.people-body": "Personnes et corps", - "emoji_picker.searchResults": "Résultats de la recherche", - "emoji_picker.smileys-emotion": "Smileys et émotions", - "emoji_picker.symbols": "Symboles", - "emoji_picker.travel-places": "Voyages et lieux", - "emoji_skin.dark_skin_tone": "couleur de peau foncée", - "emoji_skin.default": "couleur de peau par défaut", - "emoji_skin.light_skin_tone": "couleur de peau claire", - "emoji_skin.medium_dark_skin_tone": "couleur de peau moyennement foncée", - "emoji_skin.medium_light_skin_tone": "couleur de peau moyennement foncée", - "emoji_skin.medium_skin_tone": "couleur de peau moyenne", - "file_upload.fileAbove": "Les fichiers doivent être inférieurs à {max}", - "friendly_date.daysAgo": "il y a {count} {count, plural, one {jour} other {jours}}", - "friendly_date.hoursAgo": "il y a {count} {count, plural, one {heure} other {heures}}", - "friendly_date.minsAgo": "il y a {count} {count, plural, one {minute} other {minutes}}", - "friendly_date.monthsAgo": "il y a {count} {count, plural, one {mois} other {mois}}", - "friendly_date.now": "Maintenant", - "friendly_date.yearsAgo": "il y a {count} {count, plural, one {an} other {ans}}", - "friendly_date.yesterday": "Hier", - "gallery.footer.channel_name": "Partagé dans {channelName}", - "gallery.open_file": "Ouvrir le fichier", - "get_post_link_modal.title": "Copier le lien", - "global_threads.allThreads": "Tous vos fils", - "global_threads.emptyThreads.message": "Tous les fils dans lesquels vous avez été mentionnés ou auxquels vous avez participé seront ici avec tous les fils que vous suivez.", - "global_threads.emptyThreads.title": "Aucun fil suivi pour le moment", - "global_threads.emptyUnreads.message": "Il semblerait que vous soyez à jour.", - "global_threads.emptyUnreads.title": "Pas de fil non lu", - "global_threads.markAllRead.cancel": "Annuler", - "global_threads.markAllRead.markRead": "Marquer comme lu", - "global_threads.markAllRead.message": "Ceci va marquer comme lu tous les fils présents ici", - "global_threads.markAllRead.title": "Êtes-vous sûr de vouloir marquer tous les fils comme lus ?", - "global_threads.options.mark_as_read": "Marquer comme lu", - "global_threads.options.open_in_channel": "Ouvrir dans le canal", - "global_threads.unreads": "Non lus", - "last_users_message.added_to_channel.type": "a été **ajouté au canal** par {actor}.", - "last_users_message.added_to_team.type": "a été **ajouté à l'équipe** par {actor}.", - "last_users_message.first": "{firstUser} et ", - "last_users_message.joined_channel.type": "a **rejoint le canal**.", - "last_users_message.joined_team.type": "a **rejoint l'équipe**.", - "last_users_message.left_channel.type": "a **quitté le canal**.", - "last_users_message.left_team.type": "a **quitté l'équipe**.", - "last_users_message.others": "{numOthers} autres ", - "last_users_message.removed_from_channel.type": "ont été **retirés de ce canal**.", - "last_users_message.removed_from_team.type": "ont été **retirés de cette équipe**.", - "login_mfa.tokenReq": "Veuillez spécifier un jeton d'authentification multi-facteurs (MFA)", - "login.email": "E-mail", - "login.ldapUsername": "Nom d’utilisateur AD/LDAP", - "login.or": "ou", - "login.password": "Mot de passe", - "login.username": "Nom d'utilisateur", - "mobile.about.appVersion": "Version de l'App : {version} (Build {number})", - "mobile.account.settings.save": "Enregistrer", - "mobile.action_menu.select": "Sélectionnez une option", - "mobile.android.back_handler_exit": "Appuyez à nouveau sur la touche retour pour quitter", - "mobile.android.photos_permission_denied_title": "L'accès à la bibliothèque de photos est requis", - "mobile.camera_photo_permission_denied_title": "{applicationName} aimerait accéder à votre appareil photo", - "mobile.channel_info.alertNo": "Non", - "mobile.channel_info.alertYes": "Oui", - "mobile.commands.error_title": "Une erreur s'est produite durant l'exécution de la commande", - "mobile.components.select_server_view.connect": "Se connecter", - "mobile.components.select_server_view.enterServerUrl": "Spécifiez l'URL du serveur", - "mobile.components.select_server_view.proceed": "Continuer", - "mobile.create_channel": "Créer", - "mobile.custom_status.choose_emoji": "Choisissez une émoticône", - "mobile.custom_status.clear_after": "Supprimer après", - "mobile.custom_status.modal_confirm": "Terminé", - "mobile.display_settings.theme": "Thème", - "mobile.document_preview.failed_description": "Une erreur s'est produite lors de l'ouverture du document. Veuillez vous assurer que vous ayez un lecteur de {fileType} installé et réessayez.\n", - "mobile.document_preview.failed_title": "L'ouverture du document a échoué", - "mobile.downloader.disabled_description": "Le téléchargement de fichiers est désactivé sur ce serveur. Veuillez contacter votre administrateur système pour en savoir plus.\n", - "mobile.downloader.disabled_title": "Téléchargement désactivé", - "mobile.downloader.failed_description": "Une erreur s'est produite lors du téléchargement du fichier. Veuillez vérifier votre connexion internet et réessayez.\n", - "mobile.downloader.failed_title": "Échec du téléchargement", - "mobile.edit_channel": "Enregistrer", - "mobile.edit_post.title": "Edition du message", - "mobile.error_handler.button": "Relancer", - "mobile.error_handler.description": "\nCliquez sur relancer pour ouvrir l'application à nouveau. Après le redémarrage, vous pouvez signaler le problème à partir du menu paramètres.\n", - "mobile.error_handler.title": "Une erreur inattendue s'est produite", - "mobile.file_upload.disabled2": "Les envois de fichiers depuis un périphérique mobile sont désactivés.", - "mobile.file_upload.max_warning": "Envois limités à maximum {count} fichiers.", - "mobile.files_paste.error_description": "Une erreur s'est produite lors de l'opération de collage du(des) fichier(s). Veuillez réessayer.", - "mobile.files_paste.error_dismiss": "Rejeter", - "mobile.files_paste.error_title": "L'opération de collage a échoué", - "mobile.gallery.title": "{index} de {total}", - "mobile.ios.photos_permission_denied_title": "L'accès à la bibliothèque de photos est requis", - "mobile.link.error.text": "Impossible d'ouvrir le lien.", - "mobile.link.error.title": "Erreur", - "mobile.managed.blocked_by": "Bloqué par {vendor}", - "mobile.managed.exit": "Quitter", - "mobile.managed.jailbreak": "Les dispositifs jailbreakés ne sont pas approuvés par {vendor}, veuillez quitter l'application.", - "mobile.managed.not_secured.android": "Cet appareil doit être sécurisé avec un verrouillage d'écran pour pouvoir utiliser Mattermost.", - "mobile.managed.not_secured.ios": "Cet appareil doit être sécurisé avec un code pour pouvoir utiliser Mattermost.\n\nAllez dans Réglages > Face ID et code.", - "mobile.managed.not_secured.ios.touchId": "Cet appareil doit être sécurisé avec un code pour pouvoir utiliser Mattermost.\n\nAllez dans Réglages > Touch ID et code.", - "mobile.managed.secured_by": "Sécurisé par {vendor}", - "mobile.managed.settings": "Aller dans les paramètres", - "mobile.markdown.code.copy_code": "Copier le code", - "mobile.markdown.code.plusMoreLines": "+{count, number} other {count, plural, one {ligne} other {lignes}}", - "mobile.markdown.image.too_large": "L'image dépasse les dimensions maximales de {maxWidth} par {maxHeight} :", - "mobile.markdown.link.copy_url": "Copier l'URL", - "mobile.mention.copy_mention": "Copier la mention", - "mobile.message_length.message": "Votre message courant est trop long. Nombre actuel de caractères : {max}/{count}", - "mobile.message_length.message_split_left": "Le message dépasse la limite de nombre de caractères", - "mobile.message_length.title": "Longueur de message", - "mobile.microphone_permission_denied_description": "Pour participer à cet appel, ouvrez les paramètres et autorisez Mattermost à accéder à votre microphone.", - "mobile.microphone_permission_denied_title": "{applicationName} voudrait accéder à votre microphone", - "mobile.oauth.failed_to_login": "Votre tentative de connexion a échoué. Veuillez réessayer.", - "mobile.oauth.failed_to_open_link": "Impossible d'ouvrir le lien. Veuillez réessayer.", - "mobile.oauth.something_wrong": "Une erreur s'est produite", - "mobile.oauth.try_again": "Réessayer", - "mobile.open_gm.error": "Impossible d'ouvrir un message de groupe avec ces utilisateurs. Veuillez vérifier votre connexion et essayer à nouveau.", - "mobile.permission_denied_dismiss": "Ne pas autoriser", - "mobile.permission_denied_retry": "Paramètres", - "mobile.post_info.add_reaction": "Ajouter une réaction", - "mobile.post_info.copy_text": "Copier le texte", - "mobile.post_info.mark_unread": "Marquer comme non lu", - "mobile.post_info.pin": "Épingler au canal", - "mobile.post_info.reply": "Répondre", - "mobile.post_info.unpin": "Désépingler du canal", - "mobile.post_pre_header.pinned": "Epinglé", - "mobile.post_textbox.entire_channel_here.message": "En utilisant @here, vous êtes sur le point d'envoyer des notifications à {totalMembers, number} {totalMembers, plural, one {utilisateur} other {utilisateurs}}. Voulez-vous vraiment continuer ?", - "mobile.post_textbox.entire_channel_here.message.with_timezones": "En utilisant @here, vous êtes sur le point d'envoyer des notifications à {totalMembers, number} {totalMembers, plural, one {utilisateur} other {utilisateurs}} dans {timezones, number} {timezones, plural, one {fuseau horaire} other {fuseaux horaires}}. Voulez-vous vraiment continuer ?", - "mobile.post_textbox.entire_channel.cancel": "Annuler", - "mobile.post_textbox.entire_channel.confirm": "Confirmer", - "mobile.post_textbox.entire_channel.message": "En utilisant @all ou @channel, vous êtes sur le point d'envoyer des notifications à {totalMembers, number} {totalMembers, plural, one {utilisateur} other {utilisateurs}}. Voulez-vous vraiment continuer ?", - "mobile.post_textbox.entire_channel.message.with_timezones": "En utilisant @all ou @channel, vous êtes sur le point d'envoyer des notifications à {totalMembers, number} {totalMembers, plural, one {utilisateur} other {utilisateurs}} dans {timezones, number} {timezones, plural, one {fuseau horaire} other {fuseaux horaires}}. Voulez-vous vraiment continuer ?", - "mobile.post_textbox.entire_channel.title": "Confirmez l'envoi de notifications au canal en entier", - "mobile.post_textbox.groups.title": "Confirmer l'envoi de notifications aux groupes", - "mobile.post_textbox.uploadFailedDesc": "Certains fichiers joints n'ont pas pu être envoyés au serveur. Voulez-vous vraiment envoyer votre message ?", - "mobile.post_textbox.uploadFailedTitle": "Erreur de pièces jointes", - "mobile.post.cancel": "Annuler", - "mobile.post.delete_question": "Voulez-vous vraiment supprimer ce message ?", - "mobile.post.delete_title": "Supprimer le message", - "mobile.post.failed_delete": "Supprimer le message", - "mobile.post.failed_retry": "Essayer à nouveau", - "mobile.posts_view.moreMsg": "Plus de nouveaux messages au-dessus", - "mobile.privacy_link": "Politique de respect de la vie privée", - "mobile.push_notification_reply.button": "Envoyer", - "mobile.push_notification_reply.placeholder": "Écrire une réponse...", - "mobile.push_notification_reply.title": "Répondre", - "mobile.rename_channel.display_name_maxLength": "Ce champ doit faire moins de {maxLength, number} caractères", - "mobile.rename_channel.display_name_minLength": "Le nom de canal doit faire au moins {minLength, number} caractères", - "mobile.rename_channel.display_name_required": "Un nom de canal est requis", - "mobile.request.invalid_response": "Réponse invalide reçue du serveur.", - "mobile.reset_status.alert_cancel": "Annuler", - "mobile.reset_status.title_ooo": "Désactiver « Absent du bureau » ?", - "mobile.routes.code": "Code {language}", - "mobile.routes.code.noLanguage": "Code", - "mobile.routes.custom_status": "Définir un statut", - "mobile.routes.table": "Tableau", - "mobile.routes.user_profile": "Profil", - "mobile.search.jump": "Aller aux messages récents", - "mobile.server_link.error.text": "Le lien n'a pas pu être trouvé sur ce serveur.", - "mobile.server_link.error.title": "Erreur de lien", - "mobile.server_link.unreachable_channel.error": "Ce lien correspond à un canal supprimé ou appartenant à un canal auquel vous n'avez pas accès.", - "mobile.server_link.unreachable_team.error": "Ce lien correspond à une équipe supprimée ou appartenant à une équipe à laquelle vous n'avez pas accès.", - "mobile.server_upgrade.alert_description": "Cette version du serveur n'est pas prise en charge. Les utilisateurs pourraient être exposés à de potentiels problèmes de compatibilité qui pourraient causer des plantages ou des bogues graves pouvant casser les fonctionnalités de base de l'application. La mise à niveau du serveur vers la version {serverVersion} ou ultérieure est requise.", - "mobile.server_upgrade.button": "OK", - "mobile.server_upgrade.dismiss": "Rejeter", - "mobile.server_upgrade.learn_more": "En savoir plus", - "mobile.server_upgrade.title": "Mise à jour du serveur requise", - "mobile.server_url.empty": "Veuillez spécifier une URL de serveur valide", - "mobile.server_url.invalid_format": "L'URL doit commencer par http:// ou https://", - "mobile.set_status.away": "Absent", - "mobile.set_status.dnd": "Ne pas déranger", - "mobile.set_status.offline": "Hors ligne", - "mobile.set_status.online": "En ligne", - "mobile.storage_permission_denied_title": "{applicationName} aimerait accéder à vos fichiers", - "mobile.suggestion.members": "Membres", - "mobile.system_message.channel_archived_message": "{username} a archivé le canal", - "mobile.system_message.channel_unarchived_message": "{username} a archivé le canal", - "mobile.system_message.update_channel_displayname_message_and_forget.updated_from": "{username} à modifié le nom d'affichage du canal de : {oldDisplayName} en : {newDisplayName}", - "mobile.system_message.update_channel_header_message_and_forget.removed": "{username} a supprimé l'entête du canal (précédemment : {oldHeader})", - "mobile.system_message.update_channel_header_message_and_forget.updated_from": "{username} a mis à jour l'entête du canal de : {oldHeader} en : {newHeader}", - "mobile.system_message.update_channel_header_message_and_forget.updated_to": "{username} a mis à jour l'entête du canal en : {newHeader}", - "mobile.system_message.update_channel_purpose_message.removed": "{username} a supprimé la description du canal (précédemment : {oldPurpose})", - "mobile.system_message.update_channel_purpose_message.updated_from": "{username} a mis à jour la description du canal de : {oldPurpose} en : {newPurpose}", - "mobile.system_message.update_channel_purpose_message.updated_to": "{username} a mis à jour la description du canal en : {newPurpose}", - "mobile.tos_link": "Conditions d'utilisation", - "mobile.unsupported_server.message": "Les pièces jointes, les aperçus de liens, les réactions et les données intégrées peuvent ne pas s'afficher correctement. Si ce problème persiste, contactez votre administrateur système pour mettre à jour votre serveur Mattermost.", - "mobile.unsupported_server.ok": "OK", - "mobile.unsupported_server.title": "Version du serveur non prise en charge", - "mobile.user_list.deactivated": "Désactivé", - "modal.manual_status.auto_responder.message_": "Voulez-vous changer votre statut sur « {status} » et désactiver les Réponses Automatiques ?", - "modal.manual_status.auto_responder.message_away": "Voulez-vous changer votre statut sur « Absent » et désactiver les Réponses Automatiques ?", - "modal.manual_status.auto_responder.message_dnd": "Voulez-vous changer votre statut sur « Ne pas déranger » et désactiver les Réponses Automatiques ?", - "modal.manual_status.auto_responder.message_offline": "Voulez-vous changer votre statut sur « Hors ligne » et désactiver les Réponses Automatiques ?", - "modal.manual_status.auto_responder.message_online": "Voulez-vous changer votre statut sur « En ligne » et désactiver les Réponses Automatiques ?", - "msg_typing.areTyping": "{users} et {last} sont en train d'écrire...", - "msg_typing.isTyping": "{user} est en train d'écrire...", - "password_send.description": "Pour réinitialiser votre mot de passe, veuillez spécifier l'adresse e-mail que vous avez utilisée pour vous inscrire", - "password_send.error": "Veuillez spécifier une adresse e-mail valide.", - "password_send.link": "Si le compte existe, un e-mail de redéfinition de mot de passe sera envoyé à :", - "permalink.show_dialog_warn.cancel": "Annuler", - "permalink.show_dialog_warn.join": "Rejoindre", - "permalink.show_dialog_warn.title": "Rejoindre le canal privé", - "post_body.check_for_out_of_channel_groups_mentions.message": "n'a pas été notifié par cette mention. L'utilisateur n'est pas dans le canal et ne peut pas être ajouté à ce canal, car il ne fait pas partie des groupes liés. Pour l'ajouter à ce canal, l'utilisateur doit être ajouté aux groupes liés.", - "post_body.check_for_out_of_channel_mentions.link.and": " et ", - "post_body.check_for_out_of_channel_mentions.link.private": "ajouter à ce canal privé", - "post_body.check_for_out_of_channel_mentions.link.public": "ajouter à ce canal", - "post_body.check_for_out_of_channel_mentions.message_last": "? Ils auront alors accès à tout l'historique de messages pour ce canal.", - "post_body.check_for_out_of_channel_mentions.message.multiple": "ont été mentionnés, mais ne sont pas dans le canal. Voulez-vous ", - "post_body.check_for_out_of_channel_mentions.message.one": "a été mentionné, mais n'est pas dans le canal. Voulez-vous ", - "post_body.commentedOn": "a commenté le message de {name} : ", - "post_body.deleted": "(message supprimé)", - "post_info.del": "Supprimer", - "post_info.edit": "Modifier", - "post_info.system": "Système", - "post_message_view.edited": "(édité)", - "posts_view.newMsg": "Nouveaux messages", - "search_bar.search": "Rechercher", - "status_dropdown.set_away": "Absent", - "status_dropdown.set_dnd": "Ne pas déranger", - "status_dropdown.set_offline": "Hors ligne", - "status_dropdown.set_online": "En ligne", - "suggestion.mention.all": "Envoie une notification à tous les membres de ce canal", - "suggestion.mention.channel": "Envoie une notification à tous les membres de ce canal", - "suggestion.mention.channels": "Mes canaux", - "suggestion.mention.groups": "Mentions de groupe", - "suggestion.mention.here": "Envoie une notification à tous les membres considérés comme en ligne de ce canal", - "suggestion.mention.members": "Membres du canal", - "suggestion.mention.morechannels": "Autres canaux", - "suggestion.mention.nonmembers": "Pas dans le canal", - "suggestion.mention.special": "Mentions spéciales", - "suggestion.mention.you": " (vous)", - "suggestion.search.direct": "Messages personnels", - "suggestion.search.private": "Canaux privés", - "suggestion.search.public": "Canaux publics", - "threads": "Fils", - "threads.deleted": "Message original supprimé", - "threads.follow": "Suivre", - "threads.following": "Suivi", - "threads.followMessage": "Suivre le message", - "threads.followThread": "Suivre le fil", - "threads.newReplies": "{count} {count, plural, one {nouvelle} other {nouvelles}} {count, plural, one {réponse} other {réponses}}", - "threads.replies": "{count} {count, plural, one {réponse} other {réponses}}", - "threads.unfollowMessage": "Arrêter de suivre le message", - "threads.unfollowThread": "Arrêter de suivre le fil", - "user.settings.general.email": "E-mail", - "user.settings.general.firstName": "Prénom", - "user.settings.general.lastName": "Nom", - "user.settings.general.nickname": "Pseudo", - "user.settings.general.position": "Rôle", - "user.settings.general.username": "Nom d'utilisateur" -} \ No newline at end of file + "about.date": "Date de compilation :", + "about.enterpriseEditione1": "Édition Entreprise", + "about.enterpriseEditionLearn": "Pour en savoir plus sur l’Enterprise Edition : ", + "about.enterpriseEditionSt": "Communication moderne derrière votre pare-feu.", + "about.hash": "Hash de version :", + "about.hashee": "Hash de version EE :", + "about.teamEditionLearn": "Rejoignez la communauté Mattermost sur ", + "about.teamEditionSt": "Toute la communication de votre équipe en un seul endroit, consultable instantanément et accessible de partout.", + "about.teamEditiont0": "Édition Team", + "about.teamEditiont1": "Édition Entreprise", + "api.channel.add_guest.added": "{addedUsername} ajouté au canal en tant qu'invité par {username}.", + "api.channel.add_member.added": "{addedUsername} a été ajouté au canal par {username}.", + "api.channel.guest_join_channel.post_and_forget": "{username} a rejoint le canal en tant qu'invité.", + "apps.error": "Erreur : {error}", + "apps.error.command.field_missing": "Champs obligatoires manquants : `{fieldName}`.", + "apps.error.command.same_channel": "Canal répété pour le champ `{fieldName}` : `{option}`.", + "apps.error.command.same_option": "Option répétée pour le champ `{fieldName}` : `{option}`.", + "apps.error.command.same_user": "Utilisateur répété pour le champ `{fieldName}` : `{option}`.", + "apps.error.command.unknown_channel": "Canal inconnu pour le champ `{fieldName}` : `{option}`.", + "apps.error.command.unknown_option": "Option inconnue pour le champ `{fieldName}` : `{option}`.", + "apps.error.command.unknown_user": "Utilisateur inconnu pour le champ `{fieldName}` : `{option}`.", + "apps.error.form.no_form": "`form` n'est pas défini.", + "apps.error.form.no_lookup": "`lookup` n'est pas défini.", + "apps.error.form.no_source": "`source` n'est pas défini.", + "apps.error.form.no_submit": "`submit` n'est pas défini", + "apps.error.form.refresh": "Une erreur s'est produite lors de la récupération des champs sélectionnés. Veuillez contacter le développeur de l'application. Détails : {details}", + "apps.error.form.refresh_no_refresh": "Un rafraîchissement a été appelé sur un champ qui ne prend pas en charge le rafraîchissement.", + "apps.error.form.submit.pretext": "Une erreur s'est produite lors de l'envoi du formulaire. Veuillez contacter le développeur de l'application. Détails : {details}", + "apps.error.lookup.error_preparing_request": "Une erreur s'est produite lors de la préparation de la requête de recherche : {errorMessage}", + "apps.error.malformed_binding": "La connexion n'est pas correctement mise en forme. Contactez le développeur de l'App.", + "apps.error.parser": "Erreur d'interprétation : {error}", + "apps.error.parser.execute_non_leaf": "Vous devez choisir une sous-commande.", + "apps.error.parser.missing_binding": "Liens de commande manquants.", + "apps.error.parser.missing_field_value": "La valeur du champ est manquante.", + "apps.error.parser.missing_list_end": "Marqeur de fin de liste attendu.", + "apps.error.parser.missing_quote": "Les doubles guillemets doivent être fermés avant la fin du champ de saisie.", + "apps.error.parser.missing_source": "Le formulaire n'a ni `submit` ni `source`.", + "apps.error.parser.missing_submit": "Aucun appel dans le lien ou le formulaire.", + "apps.error.parser.missing_tick": "Une marqueur de citation correspondant est attendu avant la fin du champ de saisie.", + "apps.error.parser.multiple_equal": "Les signes `=` multiples ne sont pas autorisés.", + "apps.error.parser.no_argument_pos_x": "Impossible d'identifier l'argument.", + "apps.error.parser.no_bindings": "Aucun lien de commande.", + "apps.error.parser.no_form": "Aucun formulaire trouvé.", + "apps.error.parser.no_match": "`{command}` : Aucune commande correspondante trouvée dans cet espace de travail.", + "apps.error.parser.no_slash_start": "La commande doit commencer par un `/`.", + "apps.error.parser.unexpected_character": "Caractère non attendu.", + "apps.error.parser.unexpected_comma": "Virgule non attendue.", + "apps.error.parser.unexpected_error": "Erreur inattendue.", + "apps.error.parser.unexpected_flag": "La commande n'accepte pas l'indicateur `{flagName}`.", + "apps.error.parser.unexpected_squared_bracket": "Ouverture de liste non attendue.", + "apps.error.parser.unexpected_state": "Inaccessible : Statut inattendu dans matchBinding : `{state}`.", + "apps.error.parser.unexpected_whitespace": "Inaccessible : Espace blanc inattendu.", + "apps.error.responses.navigate.no_url": "Le type de réponse est `navigate`, mais aucune URL n'a été incluse dans la réponse.", + "apps.error.responses.unexpected_error": "Une erreur inattendue a été reçue.", + "apps.error.responses.unknown_field_error": "Erreur reçue pour un champ inconnu. Nom du champ : `{field}`. Erreur : `{error}`.", + "apps.error.responses.unknown_type": "Le type de réponse de l'application n'est pas pris en charge. Type de réponse : {type}.", + "apps.error.unknown": "Une erreur inconnue s'est produite.", + "apps.suggestion.dynamic.error": "Erreur de sélection dynamique", + "apps.suggestion.errors.parser_error": "Erreur d'interprétation", + "apps.suggestion.no_dynamic": "Aucune donnée n'a été renvoyée pour les suggestions dynamiques", + "apps.suggestion.no_static": "Aucune option correspondante.", + "apps.suggestion.no_suggestion": "Aucune suggestion correspondante.", + "archivedChannelMessage": "Vous consultez un **canal archivé**. Vous ne pouvez pas publier de nouveaux messages.", + "camera_type.photo.option": "Prendre une photo", + "camera_type.title": "Choix d'une action", + "camera_type.video.option": "Enregistrer une vidéo", + "center_panel.archived.closeChannel": "Fermer le canal", + "channel_info.header": "Entête :", + "channel_loader.someone": "Quelqu'un", + "channel_modal.descriptionHelp": "Décrit comment ce canal doit être utilisé.", + "channel_modal.header": "Entête", + "channel_modal.name": "Nom", + "channel_modal.optional": "(facultatif)", + "channel_modal.purpose": "Description", + "combined_system_message.added_to_channel.many_expanded": "{users} et {lastUser} ont été **ajoutés au canal** par {actor}.", + "combined_system_message.added_to_channel.one": "{firstUser} **ajouté au canal** par {actor}.", + "combined_system_message.added_to_channel.one_you": "Vous avez été **ajouté au canal** par {actor}.", + "combined_system_message.added_to_channel.two": "{firstUser} et {secondUser} ont été **ajoutés au canal** par {actor}.", + "combined_system_message.added_to_team.many_expanded": "{users} et {lastUser} ont été **ajoutés à l'équipe** par {actor}.", + "combined_system_message.added_to_team.one": "{firstUser} a été **ajouté à l'équipe** par {actor}.", + "combined_system_message.added_to_team.one_you": "Vous avez été **ajouté à l'équipe** par {actor}.", + "combined_system_message.added_to_team.two": "{firstUser} et {secondUser} ont été **ajoutés à l'équipe** par {actor}.", + "combined_system_message.joined_channel.many_expanded": "{users} et {lastUser} ont **rejoint le canal**.", + "combined_system_message.joined_channel.one": "{firstUser} a **rejoint le canal**.", + "combined_system_message.joined_channel.one_you": "Vous avez **rejoint le canal**.", + "combined_system_message.joined_channel.two": "{firstUser} et {secondUser} ont **rejoint le canal**.", + "combined_system_message.joined_team.many_expanded": "{users} et {lastUser} ont **rejoint l'équipe**.", + "combined_system_message.joined_team.one": "{firstUser} a **rejoint l'équipe**.", + "combined_system_message.joined_team.one_you": "Vous avez **rejoint l'équipe**.", + "combined_system_message.joined_team.two": "{firstUser} et {secondUser} ont **rejoint l'équipe**.", + "combined_system_message.left_channel.many_expanded": "{users} et {lastUser} ont **quitté le canal**.", + "combined_system_message.left_channel.one": "{firstUser} a **quitté le canal**.", + "combined_system_message.left_channel.one_you": "Vous avez **quitté le canal**.", + "combined_system_message.left_channel.two": "{firstUser} et {secondUser} ont **quitté le canal**.", + "combined_system_message.left_team.many_expanded": "{users} et {lastUser} ont **quitté l'équipe**.", + "combined_system_message.left_team.one": "{firstUser} a **quitté l'équipe**.", + "combined_system_message.left_team.one_you": "Vous avez **quitté l'équipe**.", + "combined_system_message.left_team.two": "{firstUser} et {secondUser} ont **quitté l'équipe**.", + "combined_system_message.removed_from_channel.many_expanded": "{users} et {lastUser} ont été **retirés du canal**.", + "combined_system_message.removed_from_channel.one": "{firstUser} a été **retiré du canal**.", + "combined_system_message.removed_from_channel.one_you": "Vous avez été **retiré du canal**.", + "combined_system_message.removed_from_channel.two": "{firstUser} et {secondUser} ont été **retirés du canal**.", + "combined_system_message.removed_from_team.many_expanded": "{users} et {lastUser} ont été **retirés de l'équipe**.", + "combined_system_message.removed_from_team.one": "{firstUser} a été **retiré de l'équipe**.", + "combined_system_message.removed_from_team.one_you": "Vous avez été **retiré de l'équipe**.", + "combined_system_message.removed_from_team.two": "{firstUser} et {secondUser} ont été **retirés de l'équipe**.", + "combined_system_message.you": "Vous", + "create_post.deactivated": "Ceci est un canal de messages personnels archivé contenant une discussion avec un utilisateur désactivé.", + "create_post.write": "Écrire à {channelDisplayName}", + "custom_status.expiry_dropdown.custom": "Personnalisé", + "custom_status.expiry_dropdown.date_and_time": "Date et heure", + "custom_status.expiry_dropdown.dont_clear": "Ne pas expirer", + "custom_status.expiry_dropdown.four_hours": "4 heures", + "custom_status.expiry_dropdown.one_hour": "1 heure", + "custom_status.expiry_dropdown.thirty_minutes": "30 minutes", + "custom_status.expiry_dropdown.this_week": "Cette semaine", + "custom_status.expiry_dropdown.today": "Aujourd'hui", + "custom_status.expiry_time.today": "Aujourd'hui", + "custom_status.expiry_time.tomorrow": "Demain", + "custom_status.expiry.at": "à", + "custom_status.expiry.until": "Jusqu'à", + "custom_status.failure_message": "Impossible de mettre à jour le statut. Essayez à nouveau", + "custom_status.suggestions.in_a_meeting": "En réunion", + "custom_status.suggestions.on_a_vacation": "En vacance", + "custom_status.suggestions.out_for_lunch": "Parti déjeuner", + "custom_status.suggestions.out_sick": "Malade", + "custom_status.suggestions.working_from_home": "En télétravail", + "date_separator.today": "Aujourd'hui", + "date_separator.yesterday": "Hier", + "edit_post.editPost": "Modifier le message...", + "edit_post.save": "Enregistrer", + "emoji_picker.activities": "Activités", + "emoji_picker.animals-nature": "Animaux et nature", + "emoji_picker.custom": "Personnalisé", + "emoji_picker.flags": "Drapeaux", + "emoji_picker.food-drink": "Nourriture et boissons", + "emoji_picker.objects": "Objets", + "emoji_picker.people-body": "Personnes et corps", + "emoji_picker.searchResults": "Résultats de la recherche", + "emoji_picker.smileys-emotion": "Smileys et émotions", + "emoji_picker.symbols": "Symboles", + "emoji_picker.travel-places": "Voyages et lieux", + "emoji_skin.dark_skin_tone": "couleur de peau foncée", + "emoji_skin.default": "couleur de peau par défaut", + "emoji_skin.light_skin_tone": "couleur de peau claire", + "emoji_skin.medium_dark_skin_tone": "couleur de peau moyennement foncée", + "emoji_skin.medium_light_skin_tone": "couleur de peau moyennement foncée", + "emoji_skin.medium_skin_tone": "couleur de peau moyenne", + "file_upload.fileAbove": "Les fichiers doivent être inférieurs à {max}", + "friendly_date.daysAgo": "il y a {count} {count, plural, one {jour} other {jours}}", + "friendly_date.hoursAgo": "il y a {count} {count, plural, one {heure} other {heures}}", + "friendly_date.minsAgo": "il y a {count} {count, plural, one {minute} other {minutes}}", + "friendly_date.monthsAgo": "il y a {count} {count, plural, one {mois} other {mois}}", + "friendly_date.now": "Maintenant", + "friendly_date.yearsAgo": "il y a {count} {count, plural, one {an} other {ans}}", + "friendly_date.yesterday": "Hier", + "gallery.footer.channel_name": "Partagé dans {channelName}", + "gallery.open_file": "Ouvrir le fichier", + "get_post_link_modal.title": "Copier le lien", + "global_threads.allThreads": "Tous vos fils", + "global_threads.emptyThreads.message": "Tous les fils dans lesquels vous avez été mentionnés ou auxquels vous avez participé seront ici avec tous les fils que vous suivez.", + "global_threads.emptyThreads.title": "Aucun fil suivi pour le moment", + "global_threads.emptyUnreads.message": "Il semblerait que vous soyez à jour.", + "global_threads.emptyUnreads.title": "Pas de fil non lu", + "global_threads.markAllRead.cancel": "Annuler", + "global_threads.markAllRead.markRead": "Marquer comme lu", + "global_threads.markAllRead.message": "Ceci va marquer comme lu tous les fils présents ici", + "global_threads.markAllRead.title": "Êtes-vous sûr de vouloir marquer tous les fils comme lus ?", + "global_threads.options.mark_as_read": "Marquer comme lu", + "global_threads.options.open_in_channel": "Ouvrir dans le canal", + "global_threads.unreads": "Non lus", + "last_users_message.added_to_channel.type": "a été **ajouté au canal** par {actor}.", + "last_users_message.added_to_team.type": "a été **ajouté à l'équipe** par {actor}.", + "last_users_message.first": "{firstUser} et ", + "last_users_message.joined_channel.type": "a **rejoint le canal**.", + "last_users_message.joined_team.type": "a **rejoint l'équipe**.", + "last_users_message.left_channel.type": "a **quitté le canal**.", + "last_users_message.left_team.type": "a **quitté l'équipe**.", + "last_users_message.others": "{numOthers} autres ", + "last_users_message.removed_from_channel.type": "ont été **retirés de ce canal**.", + "last_users_message.removed_from_team.type": "ont été **retirés de cette équipe**.", + "login_mfa.tokenReq": "Veuillez spécifier un jeton d'authentification multi-facteurs (MFA)", + "login.email": "E-mail", + "login.ldapUsername": "Nom d’utilisateur AD/LDAP", + "login.or": "ou", + "login.password": "Mot de passe", + "login.username": "Nom d'utilisateur", + "mobile.about.appVersion": "Version de l'App : {version} (Build {number})", + "mobile.account.settings.save": "Enregistrer", + "mobile.action_menu.select": "Sélectionnez une option", + "mobile.android.back_handler_exit": "Appuyez à nouveau sur la touche retour pour quitter", + "mobile.android.photos_permission_denied_title": "L'accès à la bibliothèque de photos est requis", + "mobile.camera_photo_permission_denied_title": "{applicationName} aimerait accéder à votre appareil photo", + "mobile.channel_info.alertNo": "Non", + "mobile.channel_info.alertYes": "Oui", + "mobile.commands.error_title": "Une erreur s'est produite durant l'exécution de la commande", + "mobile.components.select_server_view.connect": "Se connecter", + "mobile.components.select_server_view.enterServerUrl": "Spécifiez l'URL du serveur", + "mobile.components.select_server_view.proceed": "Continuer", + "mobile.create_channel": "Créer", + "mobile.custom_status.choose_emoji": "Choisissez une émoticône", + "mobile.custom_status.clear_after": "Supprimer après", + "mobile.custom_status.modal_confirm": "Terminé", + "mobile.display_settings.theme": "Thème", + "mobile.document_preview.failed_description": "Une erreur s'est produite lors de l'ouverture du document. Veuillez vous assurer que vous ayez un lecteur de {fileType} installé et réessayez.\n", + "mobile.document_preview.failed_title": "L'ouverture du document a échoué", + "mobile.downloader.disabled_description": "Le téléchargement de fichiers est désactivé sur ce serveur. Veuillez contacter votre administrateur système pour en savoir plus.\n", + "mobile.downloader.disabled_title": "Téléchargement désactivé", + "mobile.downloader.failed_description": "Une erreur s'est produite lors du téléchargement du fichier. Veuillez vérifier votre connexion internet et réessayez.\n", + "mobile.downloader.failed_title": "Échec du téléchargement", + "mobile.edit_channel": "Enregistrer", + "mobile.edit_post.title": "Edition du message", + "mobile.error_handler.button": "Relancer", + "mobile.error_handler.description": "\nCliquez sur relancer pour ouvrir l'application à nouveau. Après le redémarrage, vous pouvez signaler le problème à partir du menu paramètres.\n", + "mobile.error_handler.title": "Une erreur inattendue s'est produite", + "mobile.file_upload.disabled2": "Les envois de fichiers depuis un périphérique mobile sont désactivés.", + "mobile.file_upload.max_warning": "Envois limités à maximum {count} fichiers.", + "mobile.files_paste.error_description": "Une erreur s'est produite lors de l'opération de collage du(des) fichier(s). Veuillez réessayer.", + "mobile.files_paste.error_dismiss": "Rejeter", + "mobile.files_paste.error_title": "L'opération de collage a échoué", + "mobile.gallery.title": "{index} de {total}", + "mobile.ios.photos_permission_denied_title": "L'accès à la bibliothèque de photos est requis", + "mobile.link.error.text": "Impossible d'ouvrir le lien.", + "mobile.link.error.title": "Erreur", + "mobile.managed.blocked_by": "Bloqué par {vendor}", + "mobile.managed.exit": "Quitter", + "mobile.managed.jailbreak": "Les dispositifs jailbreakés ne sont pas approuvés par {vendor}, veuillez quitter l'application.", + "mobile.managed.not_secured.android": "Cet appareil doit être sécurisé avec un verrouillage d'écran pour pouvoir utiliser Mattermost.", + "mobile.managed.not_secured.ios": "Cet appareil doit être sécurisé avec un code pour pouvoir utiliser Mattermost.\n\nAllez dans Réglages > Face ID et code.", + "mobile.managed.not_secured.ios.touchId": "Cet appareil doit être sécurisé avec un code pour pouvoir utiliser Mattermost.\n\nAllez dans Réglages > Touch ID et code.", + "mobile.managed.secured_by": "Sécurisé par {vendor}", + "mobile.managed.settings": "Aller dans les paramètres", + "mobile.markdown.code.copy_code": "Copier le code", + "mobile.markdown.code.plusMoreLines": "+{count, number} other {count, plural, one {ligne} other {lignes}}", + "mobile.markdown.image.too_large": "L'image dépasse les dimensions maximales de {maxWidth} par {maxHeight} :", + "mobile.markdown.link.copy_url": "Copier l'URL", + "mobile.mention.copy_mention": "Copier la mention", + "mobile.message_length.message": "Votre message courant est trop long. Nombre actuel de caractères : {max}/{count}", + "mobile.message_length.message_split_left": "Le message dépasse la limite de nombre de caractères", + "mobile.message_length.title": "Longueur de message", + "mobile.oauth.failed_to_login": "Votre tentative de connexion a échoué. Veuillez réessayer.", + "mobile.oauth.failed_to_open_link": "Impossible d'ouvrir le lien. Veuillez réessayer.", + "mobile.oauth.something_wrong": "Une erreur s'est produite", + "mobile.oauth.try_again": "Réessayer", + "mobile.open_gm.error": "Impossible d'ouvrir un message de groupe avec ces utilisateurs. Veuillez vérifier votre connexion et essayer à nouveau.", + "mobile.permission_denied_dismiss": "Ne pas autoriser", + "mobile.permission_denied_retry": "Paramètres", + "mobile.post_info.add_reaction": "Ajouter une réaction", + "mobile.post_info.copy_text": "Copier le texte", + "mobile.post_info.mark_unread": "Marquer comme non lu", + "mobile.post_info.pin": "Épingler au canal", + "mobile.post_info.reply": "Répondre", + "mobile.post_info.unpin": "Désépingler du canal", + "mobile.post_pre_header.pinned": "Epinglé", + "mobile.post_textbox.entire_channel_here.message": "En utilisant @here, vous êtes sur le point d'envoyer des notifications à {totalMembers, number} {totalMembers, plural, one {utilisateur} other {utilisateurs}}. Voulez-vous vraiment continuer ?", + "mobile.post_textbox.entire_channel_here.message.with_timezones": "En utilisant @here, vous êtes sur le point d'envoyer des notifications à {totalMembers, number} {totalMembers, plural, one {utilisateur} other {utilisateurs}} dans {timezones, number} {timezones, plural, one {fuseau horaire} other {fuseaux horaires}}. Voulez-vous vraiment continuer ?", + "mobile.post_textbox.entire_channel.cancel": "Annuler", + "mobile.post_textbox.entire_channel.confirm": "Confirmer", + "mobile.post_textbox.entire_channel.message": "En utilisant @all ou @channel, vous êtes sur le point d'envoyer des notifications à {totalMembers, number} {totalMembers, plural, one {utilisateur} other {utilisateurs}}. Voulez-vous vraiment continuer ?", + "mobile.post_textbox.entire_channel.message.with_timezones": "En utilisant @all ou @channel, vous êtes sur le point d'envoyer des notifications à {totalMembers, number} {totalMembers, plural, one {utilisateur} other {utilisateurs}} dans {timezones, number} {timezones, plural, one {fuseau horaire} other {fuseaux horaires}}. Voulez-vous vraiment continuer ?", + "mobile.post_textbox.entire_channel.title": "Confirmez l'envoi de notifications au canal en entier", + "mobile.post_textbox.groups.title": "Confirmer l'envoi de notifications aux groupes", + "mobile.post_textbox.uploadFailedDesc": "Certains fichiers joints n'ont pas pu être envoyés au serveur. Voulez-vous vraiment envoyer votre message ?", + "mobile.post_textbox.uploadFailedTitle": "Erreur de pièces jointes", + "mobile.post.cancel": "Annuler", + "mobile.post.delete_question": "Voulez-vous vraiment supprimer ce message ?", + "mobile.post.delete_title": "Supprimer le message", + "mobile.post.failed_delete": "Supprimer le message", + "mobile.post.failed_retry": "Essayer à nouveau", + "mobile.posts_view.moreMsg": "Plus de nouveaux messages au-dessus", + "mobile.privacy_link": "Politique de respect de la vie privée", + "mobile.push_notification_reply.button": "Envoyer", + "mobile.push_notification_reply.placeholder": "Écrire une réponse...", + "mobile.push_notification_reply.title": "Répondre", + "mobile.rename_channel.display_name_maxLength": "Ce champ doit faire moins de {maxLength, number} caractères", + "mobile.rename_channel.display_name_minLength": "Le nom de canal doit faire au moins {minLength, number} caractères", + "mobile.rename_channel.display_name_required": "Un nom de canal est requis", + "mobile.request.invalid_response": "Réponse invalide reçue du serveur.", + "mobile.reset_status.alert_cancel": "Annuler", + "mobile.reset_status.title_ooo": "Désactiver « Absent du bureau » ?", + "mobile.routes.code": "Code {language}", + "mobile.routes.code.noLanguage": "Code", + "mobile.routes.custom_status": "Définir un statut", + "mobile.routes.table": "Tableau", + "mobile.routes.user_profile": "Profil", + "mobile.search.jump": "Aller aux messages récents", + "mobile.server_link.error.text": "Le lien n'a pas pu être trouvé sur ce serveur.", + "mobile.server_link.error.title": "Erreur de lien", + "mobile.server_link.unreachable_channel.error": "Ce lien correspond à un canal supprimé ou appartenant à un canal auquel vous n'avez pas accès.", + "mobile.server_link.unreachable_team.error": "Ce lien correspond à une équipe supprimée ou appartenant à une équipe à laquelle vous n'avez pas accès.", + "mobile.server_upgrade.alert_description": "Cette version du serveur n'est pas prise en charge. Les utilisateurs pourraient être exposés à de potentiels problèmes de compatibilité qui pourraient causer des plantages ou des bogues graves pouvant casser les fonctionnalités de base de l'application. La mise à niveau du serveur vers la version {serverVersion} ou ultérieure est requise.", + "mobile.server_upgrade.button": "OK", + "mobile.server_upgrade.dismiss": "Rejeter", + "mobile.server_upgrade.learn_more": "En savoir plus", + "mobile.server_upgrade.title": "Mise à jour du serveur requise", + "mobile.server_url.empty": "Veuillez spécifier une URL de serveur valide", + "mobile.server_url.invalid_format": "L'URL doit commencer par http:// ou https://", + "mobile.set_status.away": "Absent", + "mobile.set_status.dnd": "Ne pas déranger", + "mobile.set_status.offline": "Hors ligne", + "mobile.set_status.online": "En ligne", + "mobile.storage_permission_denied_title": "{applicationName} aimerait accéder à vos fichiers", + "mobile.suggestion.members": "Membres", + "mobile.system_message.channel_archived_message": "{username} a archivé le canal", + "mobile.system_message.channel_unarchived_message": "{username} a archivé le canal", + "mobile.system_message.update_channel_displayname_message_and_forget.updated_from": "{username} à modifié le nom d'affichage du canal de : {oldDisplayName} en : {newDisplayName}", + "mobile.system_message.update_channel_header_message_and_forget.removed": "{username} a supprimé l'entête du canal (précédemment : {oldHeader})", + "mobile.system_message.update_channel_header_message_and_forget.updated_from": "{username} a mis à jour l'entête du canal de : {oldHeader} en : {newHeader}", + "mobile.system_message.update_channel_header_message_and_forget.updated_to": "{username} a mis à jour l'entête du canal en : {newHeader}", + "mobile.system_message.update_channel_purpose_message.removed": "{username} a supprimé la description du canal (précédemment : {oldPurpose})", + "mobile.system_message.update_channel_purpose_message.updated_from": "{username} a mis à jour la description du canal de : {oldPurpose} en : {newPurpose}", + "mobile.system_message.update_channel_purpose_message.updated_to": "{username} a mis à jour la description du canal en : {newPurpose}", + "mobile.tos_link": "Conditions d'utilisation", + "mobile.unsupported_server.message": "Les pièces jointes, les aperçus de liens, les réactions et les données intégrées peuvent ne pas s'afficher correctement. Si ce problème persiste, contactez votre administrateur système pour mettre à jour votre serveur Mattermost.", + "mobile.unsupported_server.ok": "OK", + "mobile.unsupported_server.title": "Version du serveur non prise en charge", + "mobile.user_list.deactivated": "Désactivé", + "modal.manual_status.auto_responder.message_": "Voulez-vous changer votre statut sur « {status} » et désactiver les Réponses Automatiques ?", + "modal.manual_status.auto_responder.message_away": "Voulez-vous changer votre statut sur « Absent » et désactiver les Réponses Automatiques ?", + "modal.manual_status.auto_responder.message_dnd": "Voulez-vous changer votre statut sur « Ne pas déranger » et désactiver les Réponses Automatiques ?", + "modal.manual_status.auto_responder.message_offline": "Voulez-vous changer votre statut sur « Hors ligne » et désactiver les Réponses Automatiques ?", + "modal.manual_status.auto_responder.message_online": "Voulez-vous changer votre statut sur « En ligne » et désactiver les Réponses Automatiques ?", + "msg_typing.areTyping": "{users} et {last} sont en train d'écrire...", + "msg_typing.isTyping": "{user} est en train d'écrire...", + "password_send.description": "Pour réinitialiser votre mot de passe, veuillez spécifier l'adresse e-mail que vous avez utilisée pour vous inscrire", + "password_send.error": "Veuillez spécifier une adresse e-mail valide.", + "password_send.link": "Si le compte existe, un e-mail de redéfinition de mot de passe sera envoyé à :", + "permalink.show_dialog_warn.cancel": "Annuler", + "permalink.show_dialog_warn.join": "Rejoindre", + "permalink.show_dialog_warn.title": "Rejoindre le canal privé", + "post_body.check_for_out_of_channel_groups_mentions.message": "n'a pas été notifié par cette mention. L'utilisateur n'est pas dans le canal et ne peut pas être ajouté à ce canal, car il ne fait pas partie des groupes liés. Pour l'ajouter à ce canal, l'utilisateur doit être ajouté aux groupes liés.", + "post_body.check_for_out_of_channel_mentions.link.and": " et ", + "post_body.check_for_out_of_channel_mentions.link.private": "ajouter à ce canal privé", + "post_body.check_for_out_of_channel_mentions.link.public": "ajouter à ce canal", + "post_body.check_for_out_of_channel_mentions.message_last": "? Ils auront alors accès à tout l'historique de messages pour ce canal.", + "post_body.check_for_out_of_channel_mentions.message.multiple": "ont été mentionnés, mais ne sont pas dans le canal. Voulez-vous ", + "post_body.check_for_out_of_channel_mentions.message.one": "a été mentionné, mais n'est pas dans le canal. Voulez-vous ", + "post_body.commentedOn": "a commenté le message de {name} : ", + "post_body.deleted": "(message supprimé)", + "post_info.del": "Supprimer", + "post_info.edit": "Modifier", + "post_info.system": "Système", + "post_message_view.edited": "(édité)", + "posts_view.newMsg": "Nouveaux messages", + "search_bar.search": "Rechercher", + "status_dropdown.set_away": "Absent", + "status_dropdown.set_dnd": "Ne pas déranger", + "status_dropdown.set_offline": "Hors ligne", + "status_dropdown.set_online": "En ligne", + "suggestion.mention.all": "Envoie une notification à tous les membres de ce canal", + "suggestion.mention.channel": "Envoie une notification à tous les membres de ce canal", + "suggestion.mention.channels": "Mes canaux", + "suggestion.mention.groups": "Mentions de groupe", + "suggestion.mention.here": "Envoie une notification à tous les membres considérés comme en ligne de ce canal", + "suggestion.mention.members": "Membres du canal", + "suggestion.mention.morechannels": "Autres canaux", + "suggestion.mention.nonmembers": "Pas dans le canal", + "suggestion.mention.special": "Mentions spéciales", + "suggestion.mention.you": " (vous)", + "suggestion.search.direct": "Messages personnels", + "suggestion.search.private": "Canaux privés", + "suggestion.search.public": "Canaux publics", + "threads": "Fils", + "threads.deleted": "Message original supprimé", + "threads.follow": "Suivre", + "threads.following": "Suivi", + "threads.followMessage": "Suivre le message", + "threads.followThread": "Suivre le fil", + "threads.newReplies": "{count} {count, plural, one {nouvelle} other {nouvelles}} {count, plural, one {réponse} other {réponses}}", + "threads.replies": "{count} {count, plural, one {réponse} other {réponses}}", + "threads.unfollowMessage": "Arrêter de suivre le message", + "threads.unfollowThread": "Arrêter de suivre le fil", + "user.settings.general.email": "E-mail", + "user.settings.general.firstName": "Prénom", + "user.settings.general.lastName": "Nom", + "user.settings.general.nickname": "Pseudo", + "user.settings.general.position": "Rôle", + "user.settings.general.username": "Nom d'utilisateur" +} diff --git a/assets/base/i18n/hr.json b/assets/base/i18n/hr.json deleted file mode 100644 index 0967ef424..000000000 --- a/assets/base/i18n/hr.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/assets/base/i18n/hu.json b/assets/base/i18n/hu.json index cb5913ca2..1906168b4 100644 --- a/assets/base/i18n/hu.json +++ b/assets/base/i18n/hu.json @@ -1,382 +1,380 @@ { - "about.date": "Kiadás dátuma:", - "about.enterpriseEditione1": "Enterprise Kiadás", - "about.enterpriseEditionLearn": "Tudjon meg többet az Enterprise kiadásról: ", - "about.enterpriseEditionSt": "Modern kommunikáció a tűzfalad mögül.", - "about.hash": "Kiadás ujjlenyomata:", - "about.hashee": "EE kiadás ujjlenyomata:", - "about.teamEditionLearn": "Csatlakozz a Mattermost közösséghez itt: ", - "about.teamEditionSt": "Az összes csapaton belüli kommunikáció egy helyen, azonnal kereshetően és bárhonnan hozzáférhetően.", - "about.teamEditiont0": "Team kiadás", - "about.teamEditiont1": "Enterprise kiadás", - "api.channel.add_guest.added": "{addedUsername} hozzá lett adva a beszélgetéshez vendégként {username} által.", - "api.channel.add_member.added": "{addedUsername} felhasználót {username} hozzáadta a beszélgetéshez.", - "api.channel.guest_join_channel.post_and_forget": "{username} csatlakozott a beszélgetéshez vendégként.", - "apps.error": "Hiba: {error}", - "apps.error.command.field_missing": "Hiányzó kötelező mezők: `{fieldName}`.", - "apps.error.command.same_channel": "Ismételt csatorna lett megdva a `{fieldName}` mezőhöz: `{option}`.", - "apps.error.command.same_option": "Ismételt opció lett megadva a `{fieldName}` mezőhöz: `{option}`.", - "apps.error.command.same_user": "Ismételt felhasználó lett megadva a `{fieldName}` mezőhöz: `{option}`.", - "apps.error.command.unknown_channel": "Ismeretlen csatorna a `{fieldName}` mezőhöz: `{option}`.", - "apps.error.command.unknown_option": "Ismeretlen opció a `{fieldName}`mezőhöz: `{option}`.", - "apps.error.command.unknown_user": "Ismeretlen felhasználó a `{fieldName}`mezőhöz: `{option}`.", - "apps.error.form.no_form": "`form` nincs megadva.", - "apps.error.form.no_lookup": "`lookup` nincs megadva.", - "apps.error.form.no_source": "`source` nincs megadva.", - "apps.error.form.no_submit": "`submit` nincs megadva", - "apps.error.form.refresh": "Hiba történt a kiválasztás mezők letöltésekor. Lépjen kapcsolatba az alkalmazás fejlesztőjével. Részletek: {details}", - "apps.error.form.refresh_no_refresh": "Frissítést hívott egy frissítés nélküli mezőn.", - "apps.error.form.submit.pretext": "Hiba történt az adatok elküldése során. Lépjen kapcsolatba az alkalmazás fejlesztőjével. Részletek: {details}", - "apps.error.lookup.error_preparing_request": "Hiba a keresési kérelem előkészítése során: {errorMessage}", - "apps.error.malformed_binding": "Ez a kapcsolódás nincs jól formázva. Lépjen kapcsolatba az App fejlesztőjével.", - "apps.error.parser": "Feldolgozási hiba: {error}", - "apps.error.parser.execute_non_leaf": "Ki kell választania egy alparancsot.", - "apps.error.parser.missing_binding": "Hiányzó parancs hozzárendelés.", - "apps.error.parser.missing_field_value": "Mező értéke hiányzik.", - "apps.error.parser.missing_list_end": "Az elvárt a lista záró token.", - "apps.error.parser.missing_quote": "Egyező idézőjel elvárt a bemenet vége előtt.", - "apps.error.parser.missing_source": "Az űrlapnak nincs sem submit sem source mezője.", - "apps.error.parser.missing_submit": "Nincs submit meghívás az összekötőben vagy az űrlapban.", - "apps.error.parser.missing_tick": "Azonos idézőjelel kell használni a bemenet vége előtt.", - "apps.error.parser.multiple_equal": "Többszörös `=` jel nem engedélyezett.", - "apps.error.parser.no_argument_pos_x": "Nem sikerült azonosítani az argumentumot.", - "apps.error.parser.no_bindings": "Nincsenek parancs összekötők.", - "apps.error.parser.no_form": "Nem található űrlap.", - "apps.error.parser.no_match": "`{command}`: Nem található egyező parancs ebben a munkaterületben.", - "apps.error.parser.no_slash_start": "A parancsnak `/` jellel kell kezdődnie.", - "apps.error.parser.unexpected_character": "Nem várt karakter.", - "apps.error.parser.unexpected_comma": "Nem várt vessző.", - "apps.error.parser.unexpected_error": "Váratlan hiba.", - "apps.error.parser.unexpected_flag": "Parancs nem fogad el `{flagName}`jelölőt.", - "apps.error.parser.unexpected_squared_bracket": "Nem várt lista nyitás.", - "apps.error.parser.unexpected_state": "Nem elérhető: Váratlan állapot a matchBinding-ben: `{state}`.", - "apps.error.parser.unexpected_whitespace": "Nem elérhető: Váratlan szóköz.", - "apps.error.responses.navigate.no_url": "Válasz típusa `navigate`, de nem volt url megadva a válaszban.", - "apps.error.responses.unexpected_error": "Váratlan hiba érkezett.", - "apps.error.responses.unknown_field_error": "Hiba érkezett egy ismeretlen mezőhöz. Mező neve: `{field}`. Hiba: `{error}`.", - "apps.error.responses.unknown_type": "Az alkalmazás válasz típusa nem támogatott. Válasz típusa: {type}.", - "apps.error.unknown": "Ismeretlen hiba történt.", - "apps.suggestion.dynamic.error": "Dinamikus kiválasztás hiba", - "apps.suggestion.errors.parser_error": "Értelmezés hiba", - "apps.suggestion.no_dynamic": "A dinamikus javaslatokhoz nem érkezett adat", - "apps.suggestion.no_static": "Nincsenek egyező opciók.", - "apps.suggestion.no_suggestion": "Nincsenek egyező javaslatok.", - "archivedChannelMessage": "Ön egy **archivált beszélgetést** néz. Új üzenetet nem tud elküldeni.", - "camera_type.photo.option": "Fotó készítése", - "camera_type.title": "Válasszon egy műveletet", - "camera_type.video.option": "Videó rögzítése", - "center_panel.archived.closeChannel": "Beszélgetés bezárása", - "channel_info.header": "Fejléc:", - "channel_loader.someone": "Valaki", - "channel_modal.descriptionHelp": "Írja le hogyan kell ezt a beszélgetést használni.", - "channel_modal.header": "Fejléc", - "channel_modal.name": "Név", - "channel_modal.optional": "(nem kötelező)", - "channel_modal.purpose": "Cél", - "combined_system_message.added_to_channel.many_expanded": "{users} és {lastUser} **hozzá lett adva a beszélgetéshez** {actor} által.", - "combined_system_message.added_to_channel.one": "{firstUser} **hozzá lett adva a beszélgetészhez** {actor} által.", - "combined_system_message.added_to_channel.one_you": "Ön **hozzá lett adva a beszélgetéshez** {actor} által.", - "combined_system_message.added_to_channel.two": "{firstUser} és {secondUser} **hozzá lett adva a beszélgetéshez** {actor} által.", - "combined_system_message.added_to_team.many_expanded": "{users} és {lastUser} **hozzá lettek adva a csapathoz** {actor} által.", - "combined_system_message.added_to_team.one": "{firstUser} **hozzá lett adva a csapathoz** {actor} által.", - "combined_system_message.added_to_team.one_you": "Ön **hozzá lett adva a csapathoz** {actor} által.", - "combined_system_message.added_to_team.two": "{firstUser} és {secondUser} **hozzá lettek adva a csapathoz** {actor} által.", - "combined_system_message.joined_channel.many_expanded": "{users} és {lastUser} **csatlakozott a beszélgetésbe**.", - "combined_system_message.joined_channel.one": "{firstUser} **csatlakozott a beszélgetéshez**.", - "combined_system_message.joined_channel.one_you": "Ön **csatlakozott a beszélgetéshez**.", - "combined_system_message.joined_channel.two": "{firstUser} és {secondUser} **csatlakozott a beszélgetéshez**.", - "combined_system_message.joined_team.many_expanded": "{users} és {lastUser} **csatlakozott a csapathoz**.", - "combined_system_message.joined_team.one": "{firstUser} **csatlakozott a csapathoz**.", - "combined_system_message.joined_team.one_you": "Ön **csatlakozott a csapathoz**.", - "combined_system_message.joined_team.two": "{firstUser} és {secondUser} **csatlakozott a csapathoz**.", - "combined_system_message.left_channel.many_expanded": "{users} és {lastUser} **kilépett a beszélgetésből**.", - "combined_system_message.left_channel.one": "{firstUser} **kilépett a beszélgetésből**.", - "combined_system_message.left_channel.one_you": "Ön **kilépett a beszélgetésből**.", - "combined_system_message.left_channel.two": "{firstUser} és {secondUser} **kilépett a beszélgetésből**.", - "combined_system_message.left_team.many_expanded": "{users} és {lastUser} **kilépett a csapatból**.", - "combined_system_message.left_team.one": "{firstUser} **kilépett a csapatból**.", - "combined_system_message.left_team.one_you": "Ön **kilépett a csapatból**.", - "combined_system_message.left_team.two": "{firstUser} és {secondUser} **kilépet a csapatból**.", - "combined_system_message.removed_from_channel.many_expanded": "{users} és {lastUser} **el lett távolítva a beszélgetésből**.", - "combined_system_message.removed_from_channel.one": "{firstUser} **el lett távolítva a beszélgetésből**.", - "combined_system_message.removed_from_channel.one_you": "Önt **eltávolították a beszélgetésből**.", - "combined_system_message.removed_from_channel.two": "{firstUser} és {secondUser} **el lett távolítva a beszélgetésből**.", - "combined_system_message.removed_from_team.many_expanded": "{users} és {lastUser} **el lett távolítva a csapatból**.", - "combined_system_message.removed_from_team.one": "{firstUser} **el lett távolítva a csapatból**.", - "combined_system_message.removed_from_team.one_you": "Önt **eltávolították a csapatból**.", - "combined_system_message.removed_from_team.two": "{firstUser} és {secondUser} **el lett távolítva a csapatból**.", - "combined_system_message.you": "Ön", - "create_post.deactivated": "Letiltott felhasználóval archivált beszélgetést néz.", - "create_post.write": "Írjon a {channelDisplayName} beszélgetésbe", - "custom_status.expiry_dropdown.custom": "Egyéni", - "custom_status.expiry_dropdown.date_and_time": "Időpont", - "custom_status.expiry_dropdown.dont_clear": "Ne törölje", - "custom_status.expiry_dropdown.four_hours": "4 óra", - "custom_status.expiry_dropdown.one_hour": "1 óra", - "custom_status.expiry_dropdown.thirty_minutes": "30 perc", - "custom_status.expiry_dropdown.this_week": "Ezen a héten", - "custom_status.expiry_dropdown.today": "Ma", - "custom_status.expiry_time.today": "Ma", - "custom_status.expiry_time.tomorrow": "Holnap", - "custom_status.expiry.at": "ekkor", - "custom_status.expiry.until": "Eddig:", - "custom_status.failure_message": "Nem sikerült frissíteni az állapotot. Próbálja újra", - "custom_status.suggestions.in_a_meeting": "Megbeszélésben", - "custom_status.suggestions.on_a_vacation": "Szabadságon van", - "custom_status.suggestions.out_for_lunch": "Ebédszüneten van", - "custom_status.suggestions.out_sick": "Betegszabadságon van", - "custom_status.suggestions.working_from_home": "Otthonról dolgozik", - "date_separator.today": "Ma", - "date_separator.yesterday": "Tegnap", - "edit_post.editPost": "Bejegyzés szerkesztése...", - "edit_post.save": "Mentés", - "emoji_picker.activities": "Tevékenységek", - "emoji_picker.animals-nature": "Állatok és természet", - "emoji_picker.custom": "Egyéni", - "emoji_picker.flags": "Jelölők", - "emoji_picker.food-drink": "Étel és ital", - "emoji_picker.objects": "Tárgyak", - "emoji_picker.people-body": "Emberek és test", - "emoji_picker.searchResults": "Keresési eredmények", - "emoji_picker.smileys-emotion": "Emojik és érzelmek", - "emoji_picker.symbols": "Szimbólumok", - "emoji_picker.travel-places": "Utazás és helyek", - "emoji_skin.dark_skin_tone": "sötét bőrszín", - "emoji_skin.default": "alapértelmezett bőrszín", - "emoji_skin.light_skin_tone": "világos bőrszín", - "emoji_skin.medium_dark_skin_tone": "közepesen sötét bőrszín", - "emoji_skin.medium_light_skin_tone": "közepesen világos bőrszín", - "emoji_skin.medium_skin_tone": "közepes bőrszín", - "file_upload.fileAbove": "A fájloknak kisebbnek kell lenniük, mint {max}", - "friendly_date.daysAgo": "{count} {count, plural, one {nappal} other {nappal}} ezelőtt", - "friendly_date.hoursAgo": "{count} {count, plural, one {órával} other {órával}} ezelőtt", - "friendly_date.minsAgo": "{count} {count, plural, one {perccel} other {perccel}} ezelőtt", - "friendly_date.monthsAgo": "{count} {count, plural, one {hónappal} other {hónappal}} ezelőtt", - "friendly_date.now": "Most", - "friendly_date.yearsAgo": "{count} {count, plural, one {évvel} other {évvel}} ezelőtt", - "friendly_date.yesterday": "Tegnap", - "gallery.footer.channel_name": "Megosztva a {channelName} beszélgetésben", - "gallery.open_file": "File megnyitása", - "get_post_link_modal.title": "Link másolása", - "global_threads.allThreads": "Összes üzenetszál", - "global_threads.emptyThreads.message": "Minden olyan üzenetszál, amiben részt vettél vagy említésre kerültél fel lesz itt tüntetve azokkal együtt, amiket követsz.", - "global_threads.emptyThreads.title": "Nincsen követett üzenetszál", - "global_threads.emptyUnreads.message": "Úgy néz ki, mindent elolvastál.", - "global_threads.emptyUnreads.title": "Nincsen olvasatlan üzenetszál", - "global_threads.markAllRead.cancel": "Mégsem", - "global_threads.markAllRead.markRead": "Olvasottnak jelöl", - "global_threads.markAllRead.message": "Ez törölni fog minden olvasatlan állapotot az itt mutatott üzetszálakhoz", - "global_threads.markAllRead.title": "Biztosan minden üzenetszálat olvasottnak szeretne megjelölni?", - "global_threads.options.mark_as_read": "Megjelölés olvasottként", - "global_threads.options.open_in_channel": "Megnyitás a beszélgetésben", - "global_threads.unreads": "Olvasatlanok", - "last_users_message.added_to_channel.type": "**hozzá lett adva a beszélgetéshez** {actor} által.", - "last_users_message.added_to_team.type": "**hozzá lettek adva a csapathoz** {actor} által.", - "last_users_message.first": "{firstUser} és ", - "last_users_message.joined_channel.type": "**csatlakozott a beszélgetéshez**.", - "last_users_message.joined_team.type": "**csatlakozott a csapathoz**.", - "last_users_message.left_channel.type": "**kilépett a beszélgetésből**.", - "last_users_message.left_team.type": "**kilépett a csapatból**.", - "last_users_message.others": "{numOthers} másik ", - "last_users_message.removed_from_channel.type": "**el lett távolítva a beszélgetésből**.", - "last_users_message.removed_from_team.type": "**el lett távolítva a csapatból**.", - "login_mfa.tokenReq": "Kérem adja meg az MFA tokent", - "login.email": "E-mail", - "login.ldapUsername": "AD/LDAP Felhasználónév", - "login.or": "vagy", - "login.password": "Jelszó", - "login.username": "Felhasználónév", - "mobile.about.appVersion": "Alkalmazás verzió: {version} (Kiadás {number})", - "mobile.account.settings.save": "Mentés", - "mobile.action_menu.select": "Válassz egy opciót", - "mobile.android.back_handler_exit": "A kilépéshez nyomja meg újra a vissza gombot", - "mobile.android.photos_permission_denied_title": "{applicationName} szeretné elérni a fotóit", - "mobile.camera_photo_permission_denied_title": "{applicationName} szeretne hozzáférni a kamerához", - "mobile.channel_info.alertNo": "Nem", - "mobile.channel_info.alertYes": "Igen", - "mobile.commands.error_title": "Hiba a parancs végrehajtása során", - "mobile.components.select_server_view.connect": "Csatlakozás", - "mobile.components.select_server_view.enterServerUrl": "Szerver URL", - "mobile.components.select_server_view.proceed": "Folytatás", - "mobile.create_channel": "Létrehozás", - "mobile.custom_status.choose_emoji": "Válasszon egy emojit", - "mobile.custom_status.clear_after": "Törlés ennyi után", - "mobile.custom_status.modal_confirm": "Kész", - "mobile.display_settings.theme": "Téma", - "mobile.document_preview.failed_description": "Hiba történt a dokumentum megnyitásakor. Győződjön meg róla, hogy telepítve van egy {fileType} megtekintő, és próbálja újra.\n", - "mobile.document_preview.failed_title": "A dokumentum megnyitása nem sikerült", - "mobile.downloader.disabled_description": "A fájl letöltések le vannak tiltva ezen a szerveren. További részletekért forduljon a rendszergazdához.\n", - "mobile.downloader.disabled_title": "Letöltés letiltva", - "mobile.downloader.failed_description": "Hiba történt a fájl letöltése közben. Kérjük, ellenőrizze internetkapcsolatát, és próbálja újra.\n", - "mobile.downloader.failed_title": "Letöltés sikertelen", - "mobile.edit_channel": "Mentés", - "mobile.edit_post.title": "Üzenet szerkesztése", - "mobile.error_handler.button": "Újraindítás", - "mobile.error_handler.description": "\nKoppintson az Újraindítás gombra az alkalmazás újbóli megnyitásához. Az újraindítás után a beállítások menüben jelentheti a problémát.\n", - "mobile.error_handler.title": "Váratlan hiba történt", - "mobile.file_upload.disabled2": "A fájlok mobilról történő feltöltése le van tiltva.", - "mobile.file_upload.max_warning": "Legfeljebb {count} fájl feltöltése lehetséges.", - "mobile.files_paste.error_description": "Hiba történt a fájl(ok) beillesztésekor. Kérem próbálja újra.", - "mobile.files_paste.error_dismiss": "Elvetés", - "mobile.files_paste.error_title": "Beillesztés nem sikerült", - "mobile.gallery.title": "{index} / {total}", - "mobile.ios.photos_permission_denied_title": "{applicationName} szeretne hozzáférni a fényképeidhez", - "mobile.link.error.text": "Nem sikerült megnyitni a linket.", - "mobile.link.error.title": "Hiba", - "mobile.managed.blocked_by": "{vendor} letiltotta", - "mobile.managed.exit": "Kilépés", - "mobile.managed.jailbreak": "A {vendor} nem bízik a rootolt eszközökben, kérjük lépjen ki az alkalmazásból.", - "mobile.managed.not_secured.android": "A Mattermost használatához a készüléket képernyőzárral kell beállítani.", - "mobile.managed.not_secured.ios": "A Mattermost használatához ezt az eszközt zárolási mintával kell védeni.\n\nLépjen a Beállítások > Face ID és jelkód menüpontba.", - "mobile.managed.not_secured.ios.touchId": "A Mattermost használatához ezt az eszközt zárolási mintával kell védeni.\n\nLépjen a Beállítások > Face ID és jelkód menüpontba.", - "mobile.managed.secured_by": "{vendor} által biztosítva", - "mobile.managed.settings": "Ugrás a beállításokhoz", - "mobile.markdown.code.copy_code": "Kód másolása", - "mobile.markdown.code.plusMoreLines": "+{count, number} további {count, plural, one {sor} other {sorok}}", - "mobile.markdown.image.too_large": "A kép meghaladja a maximális méretet ({maxWidth} x {maxHeight}):", - "mobile.markdown.link.copy_url": "URL másolása", - "mobile.mention.copy_mention": "Említés másolása", - "mobile.message_length.message": "A jelenlegi üzenete túl hosszú. Jelenlegi karakterek száma: {count}/{max}", - "mobile.message_length.message_split_left": "Az üzenet meghaladja a karakter korlátot", - "mobile.message_length.title": "Üzenet hossza", - "mobile.microphone_permission_denied_description": "A hívásban való részvételhez nyissa meg a Beállításokat, hogy a Mattermost hozzáférhessen a mikrofonjához.", - "mobile.microphone_permission_denied_title": "{applicationName} szeretne hozzáférni a mikrofonjához", - "mobile.oauth.failed_to_login": "A bejelentkezési kísérlet nem sikerült. Kérlek próbáld újra.", - "mobile.oauth.failed_to_open_link": "A linket nem sikerült megnyitni. Kérlek próbáld újra.", - "mobile.oauth.something_wrong": "Valami elromlott", - "mobile.oauth.try_again": "Próbálkozzon újra", - "mobile.open_gm.error": "Nem tudtunk csoportos üzenetet megnyitni ezekkel a felhasználókkal. Kérjük ellenőrizze a kapcsolatot, és próbálja újra.", - "mobile.permission_denied_dismiss": "Ne engedje", - "mobile.permission_denied_retry": "Beállítások", - "mobile.post_info.add_reaction": "Reakció hozzáadása", - "mobile.post_info.copy_text": "Szöveg másolása", - "mobile.post_info.mark_unread": "Megjelölés olvasatlanként", - "mobile.post_info.pin": "Kitűzés a csatornára", - "mobile.post_info.reply": "Válasz", - "mobile.post_info.unpin": "Feloldás a beszélgetésben", - "mobile.post_pre_header.pinned": "Kitűzött", - "mobile.post_textbox.entire_channel_here.message": "A @here használatával értesítést fog küldeni legfeljebb {totalMembers, number} személynek. Biztosan ezt akarja tenni?", - "mobile.post_textbox.entire_channel_here.message.with_timezones": "A @here használatával értesítést fog küldeni legfeljebb {totalMembers, number} személynek {timezones, number} {timezones, plural, one {időzónába} other {különböző időzónákba}}. Biztosan ezt akarja tenni?", - "mobile.post_textbox.entire_channel.cancel": "Mégsem", - "mobile.post_textbox.entire_channel.confirm": "Megerősítés", - "mobile.post_textbox.entire_channel.message": "Az @all vagy a @channel használatával értesítést fog küldeni {totalMembers, number} személynek. Biztosan ezt akarja tenni?", - "mobile.post_textbox.entire_channel.message.with_timezones": "A @all vagy @channel használatával értesítést fog küldeni {totalMembers, number} személynek {timezones, number} {timezones, plural, one {időzónába} other {különböző időzónákba}}. Biztosan ezt akarja tenni?", - "mobile.post_textbox.entire_channel.title": "Erősítse meg az értesítések küldését a teljes beszélgetésnek", - "mobile.post_textbox.groups.title": "Erősítse meg az értesítések küldését a csoportoknak", - "mobile.post_textbox.uploadFailedDesc": "Néhány mellékletet nem sikerült feltölteni a szerverre. Biztosan el akarja küldeni az üzenetet?", - "mobile.post_textbox.uploadFailedTitle": "Csatolmány hiba", - "mobile.post.cancel": "Mégsem", - "mobile.post.delete_question": "Biztosan törli ezt a bejegyzést?", - "mobile.post.delete_title": "Bejegyzés törlése", - "mobile.post.failed_delete": "Üzenet törlése", - "mobile.post.failed_retry": "Próbálja újra", - "mobile.posts_view.moreMsg": "További új üzenetek vannak fent", - "mobile.privacy_link": "Adatvédelmi irányelvek", - "mobile.push_notification_reply.button": "Küldés", - "mobile.push_notification_reply.placeholder": "Válasz írása...", - "mobile.push_notification_reply.title": "Válasz", - "mobile.rename_channel.display_name_maxLength": "A beszélgetés nevének kevesebbnek kell lennie, mint {maxLength, number} karakter", - "mobile.rename_channel.display_name_minLength": "A beszélgetés nevének legalább {minLength, number} karakternek kell lennie", - "mobile.rename_channel.display_name_required": "Beszélgetés név kötelező", - "mobile.request.invalid_response": "Érvénytelen választ kapott a szervertől.", - "mobile.reset_status.alert_cancel": "Mégsem", - "mobile.reset_status.title_ooo": "Letiltja az „Irodán kívül” funkciót?", - "mobile.routes.code": "{language} kód", - "mobile.routes.code.noLanguage": "Kód", - "mobile.routes.custom_status": "Állapot beállítása", - "mobile.routes.table": "Táblázat", - "mobile.routes.user_profile": "Profil", - "mobile.search.jump": "Ugrás a legutóbbi üzenetekre", - "mobile.server_link.error.text": "A link nem található ezen a szerveren.", - "mobile.server_link.error.title": "Link hiba", - "mobile.server_link.unreachable_channel.error": "Ez a link vagy egy törölt beszélgetéshez vagy egy olyan beszélgetéshez tartozik, amelyikhez nincs hozzáférése.", - "mobile.server_link.unreachable_team.error": "Ez a link vagy egy törölt csapathoz vagy egy olyan csapathoz tartozik, amelyhez nincs hozzáférése.", - "mobile.server_upgrade.alert_description": "Ez a szerver verzió nem támogatott, és a felhasználók kompatibilitási problémáknak vannak kitéve, amelyek összeomlást vagy súlyos hibákat okoznak az alkalmazás alapvető funkcióiban. Frissítés szükséges a {serverVersion} vagy újabb szerver verzióra.", - "mobile.server_upgrade.button": "OK", - "mobile.server_upgrade.dismiss": "Elvetés", - "mobile.server_upgrade.learn_more": "Tudjon meg többet", - "mobile.server_upgrade.title": "Szerver frissítés szükséges", - "mobile.server_url.empty": "Kérem adjon meg érvényes szerver URL-t", - "mobile.server_url.invalid_format": "Az URL-nek http:// vagy https:// -el kell kezdődnie", - "mobile.set_status.away": "Nincs a gépnél", - "mobile.set_status.dnd": "Ne zavarj", - "mobile.set_status.offline": "Nem elérhető", - "mobile.set_status.online": "Elérhető", - "mobile.storage_permission_denied_title": "{applicationName} szeretne hozzáférni a fájljaihoz", - "mobile.suggestion.members": "Tagok", - "mobile.system_message.channel_archived_message": "{username} archiválta a beszélgetést", - "mobile.system_message.channel_unarchived_message": "{username} visszaállította a beszélgetést", - "mobile.system_message.update_channel_displayname_message_and_forget.updated_from": "{username} frissítette a beszélgetés megjelenített nevét erről: {oldDisplayName} erre: {newDisplayName}", - "mobile.system_message.update_channel_header_message_and_forget.removed": "{username} eltávolította a beszélgetés fejlécét (ez volt: {oldHeader})", - "mobile.system_message.update_channel_header_message_and_forget.updated_from": "{username} frissítette a beszélgetés fejlécét erről: {oldHeader} erre: {newHeader}", - "mobile.system_message.update_channel_header_message_and_forget.updated_to": "{username} frissítette a beszélgetés fejlécét erre: {newHeader}", - "mobile.system_message.update_channel_purpose_message.removed": "{username} eltávolította a beszélgetés célját (ez volt: {oldPurpose})", - "mobile.system_message.update_channel_purpose_message.updated_from": "{username} frissítette a beszélgetés célját erről: {oldPurpose} erre: {newPurpose}", - "mobile.system_message.update_channel_purpose_message.updated_to": "{username} frissítette a beszélgetés célját erre: {newPurpose}", - "mobile.tos_link": "Felhasználási feltételek", - "mobile.unsupported_server.message": "Előfordulhat, hogy a mellékletek, a linkek előnézete, a reakciók és a beágyazott adatok nem megfelelően jelennek meg. Ha ez a probléma továbbra is fennáll, forduljon a rendszergazdához a Mattermost szerver frissítéséhez.", - "mobile.unsupported_server.ok": "OK", - "mobile.unsupported_server.title": "Nem támogatott szerver verzió", - "mobile.user_list.deactivated": "Kikapcsolt", - "modal.manual_status.auto_responder.message_": "Szeretné állapotát \"{status}\" -ra váltani és letiltani az Automatikus válaszokat?", - "modal.manual_status.auto_responder.message_away": "Szeretné állapotát \"Nincs a gépnél\"-re váltani és letiltani az Automatikus válaszokat?", - "modal.manual_status.auto_responder.message_dnd": "Szeretné állapotát \"Ne zavarj\"-ra váltani és letiltani az Automatikus válaszokat?", - "modal.manual_status.auto_responder.message_offline": "Szeretné állapotát \"Nem elérhető\"-re váltani és letiltani az Automatikus válaszokat?", - "modal.manual_status.auto_responder.message_online": "Szeretné állapotát \"Elérhető\"-re váltani és letiltani az Automatikus válaszokat?", - "msg_typing.areTyping": "{users} és {last} épp gépel...", - "msg_typing.isTyping": "{user} épp gépel...", - "password_send.description": "A jelszó visszaállításához írja be a regisztrációhoz használt e-mail címet", - "password_send.error": "Kérjük egy érvényes e-mail címet adjon meg.", - "password_send.link": "Ha létezik a fiók, akkor jelszó visszaállító e-mailt küldünk a következő címre:", - "permalink.show_dialog_warn.cancel": "Mégsem", - "permalink.show_dialog_warn.join": "Csatlakozás", - "permalink.show_dialog_warn.title": "Csatlakozás a privát beszélgetéshez", - "post_body.check_for_out_of_channel_groups_mentions.message": "nem kaptak értesítést erről az említésről, mert nem vesznek részt a beszélgetésben. Továbbá ők nem tagjai az ehhez a beszélgetéshez kapcsolódó csoportoknak.", - "post_body.check_for_out_of_channel_mentions.link.and": " és ", - "post_body.check_for_out_of_channel_mentions.link.private": "hozzáadni őket ehhez a privát beszélgetéshez", - "post_body.check_for_out_of_channel_mentions.link.public": "hozzáadni őket a beszélgetéshez", - "post_body.check_for_out_of_channel_mentions.message_last": "? Hozzáférhetnek az összes korábbi üzenetekhez.", - "post_body.check_for_out_of_channel_mentions.message.multiple": "említették, de nem résztvevői a beszélgetésnek. Szeretné ", - "post_body.check_for_out_of_channel_mentions.message.one": "említették, de nem résztvevői a beszélgetésnek. Szeretné ", - "post_body.commentedOn": "Hozzászólt {name} üzenetéhez: ", - "post_body.deleted": "(üzenet törölve)", - "post_info.del": "Törlés", - "post_info.edit": "Szerkesztés", - "post_info.system": "Rendszer", - "post_message_view.edited": "(szerkesztett)", - "posts_view.newMsg": "Új üzenetek", - "search_bar.search": "Keresés", - "status_dropdown.set_away": "Nincs a gépnél", - "status_dropdown.set_dnd": "Ne zavarj", - "status_dropdown.set_offline": "Nem elérhető", - "status_dropdown.set_online": "Elérhető", - "suggestion.mention.all": "Értesít mindenkit ebben a beszélgetésben", - "suggestion.mention.channel": "Értesít mindenkit ebben a beszélgetésben", - "suggestion.mention.channels": "Beszélgetéseim", - "suggestion.mention.groups": "Csoportemlítések", - "suggestion.mention.here": "Értesít mindenkit aki elérhető ebben a beszélgetésben", - "suggestion.mention.members": "Beszélgetés résztvevői", - "suggestion.mention.morechannels": "Egyéb beszélgetések", - "suggestion.mention.nonmembers": "Nincs a beszélgetésben", - "suggestion.mention.special": "Különleges említések", - "suggestion.mention.you": " (ön)", - "suggestion.search.direct": "Közvetlen üzenetek", - "suggestion.search.private": "Privát beszélgetések", - "suggestion.search.public": "Nyilvános beszélgetések", - "threads": "Üzenetszálak", - "threads.deleted": "Eredeti üzenet törlésre került", - "threads.follow": "Követés", - "threads.following": "Követve", - "threads.followMessage": "Üzenet követése", - "threads.followThread": "Üzenetszál követése", - "threads.newReplies": "{count} új {count, plural, one {válasz} other {válasz}}", - "threads.replies": "{count} {count, plural, one {válasz} other {válasz}}", - "threads.unfollowMessage": "Üzenet követésének visszavonása", - "threads.unfollowThread": "Üzenetszál követésének visszavonása", - "user.settings.general.email": "E-mail", - "user.settings.general.firstName": "Keresztnév", - "user.settings.general.lastName": "Vezetéknév", - "user.settings.general.nickname": "Becenév", - "user.settings.general.position": "Beosztás", - "user.settings.general.username": "Felhasználónév" -} \ No newline at end of file + "about.date": "Kiadás dátuma:", + "about.enterpriseEditione1": "Enterprise Kiadás", + "about.enterpriseEditionLearn": "Tudjon meg többet az Enterprise kiadásról: ", + "about.enterpriseEditionSt": "Modern kommunikáció a tűzfalad mögül.", + "about.hash": "Kiadás ujjlenyomata:", + "about.hashee": "EE kiadás ujjlenyomata:", + "about.teamEditionLearn": "Csatlakozz a Mattermost közösséghez itt: ", + "about.teamEditionSt": "Az összes csapaton belüli kommunikáció egy helyen, azonnal kereshetően és bárhonnan hozzáférhetően.", + "about.teamEditiont0": "Team kiadás", + "about.teamEditiont1": "Enterprise kiadás", + "api.channel.add_guest.added": "{addedUsername} hozzá lett adva a beszélgetéshez vendégként {username} által.", + "api.channel.add_member.added": "{addedUsername} felhasználót {username} hozzáadta a beszélgetéshez.", + "api.channel.guest_join_channel.post_and_forget": "{username} csatlakozott a beszélgetéshez vendégként.", + "apps.error": "Hiba: {error}", + "apps.error.command.field_missing": "Hiányzó kötelező mezők: `{fieldName}`.", + "apps.error.command.same_channel": "Ismételt csatorna lett megdva a `{fieldName}` mezőhöz: `{option}`.", + "apps.error.command.same_option": "Ismételt opció lett megadva a `{fieldName}` mezőhöz: `{option}`.", + "apps.error.command.same_user": "Ismételt felhasználó lett megadva a `{fieldName}` mezőhöz: `{option}`.", + "apps.error.command.unknown_channel": "Ismeretlen csatorna a `{fieldName}` mezőhöz: `{option}`.", + "apps.error.command.unknown_option": "Ismeretlen opció a `{fieldName}`mezőhöz: `{option}`.", + "apps.error.command.unknown_user": "Ismeretlen felhasználó a `{fieldName}`mezőhöz: `{option}`.", + "apps.error.form.no_form": "`form` nincs megadva.", + "apps.error.form.no_lookup": "`lookup` nincs megadva.", + "apps.error.form.no_source": "`source` nincs megadva.", + "apps.error.form.no_submit": "`submit` nincs megadva", + "apps.error.form.refresh": "Hiba történt a kiválasztás mezők letöltésekor. Lépjen kapcsolatba az alkalmazás fejlesztőjével. Részletek: {details}", + "apps.error.form.refresh_no_refresh": "Frissítést hívott egy frissítés nélküli mezőn.", + "apps.error.form.submit.pretext": "Hiba történt az adatok elküldése során. Lépjen kapcsolatba az alkalmazás fejlesztőjével. Részletek: {details}", + "apps.error.lookup.error_preparing_request": "Hiba a keresési kérelem előkészítése során: {errorMessage}", + "apps.error.malformed_binding": "Ez a kapcsolódás nincs jól formázva. Lépjen kapcsolatba az App fejlesztőjével.", + "apps.error.parser": "Feldolgozási hiba: {error}", + "apps.error.parser.execute_non_leaf": "Ki kell választania egy alparancsot.", + "apps.error.parser.missing_binding": "Hiányzó parancs hozzárendelés.", + "apps.error.parser.missing_field_value": "Mező értéke hiányzik.", + "apps.error.parser.missing_list_end": "Az elvárt a lista záró token.", + "apps.error.parser.missing_quote": "Egyező idézőjel elvárt a bemenet vége előtt.", + "apps.error.parser.missing_source": "Az űrlapnak nincs sem submit sem source mezője.", + "apps.error.parser.missing_submit": "Nincs submit meghívás az összekötőben vagy az űrlapban.", + "apps.error.parser.missing_tick": "Azonos idézőjelel kell használni a bemenet vége előtt.", + "apps.error.parser.multiple_equal": "Többszörös `=` jel nem engedélyezett.", + "apps.error.parser.no_argument_pos_x": "Nem sikerült azonosítani az argumentumot.", + "apps.error.parser.no_bindings": "Nincsenek parancs összekötők.", + "apps.error.parser.no_form": "Nem található űrlap.", + "apps.error.parser.no_match": "`{command}`: Nem található egyező parancs ebben a munkaterületben.", + "apps.error.parser.no_slash_start": "A parancsnak `/` jellel kell kezdődnie.", + "apps.error.parser.unexpected_character": "Nem várt karakter.", + "apps.error.parser.unexpected_comma": "Nem várt vessző.", + "apps.error.parser.unexpected_error": "Váratlan hiba.", + "apps.error.parser.unexpected_flag": "Parancs nem fogad el `{flagName}`jelölőt.", + "apps.error.parser.unexpected_squared_bracket": "Nem várt lista nyitás.", + "apps.error.parser.unexpected_state": "Nem elérhető: Váratlan állapot a matchBinding-ben: `{state}`.", + "apps.error.parser.unexpected_whitespace": "Nem elérhető: Váratlan szóköz.", + "apps.error.responses.navigate.no_url": "Válasz típusa `navigate`, de nem volt url megadva a válaszban.", + "apps.error.responses.unexpected_error": "Váratlan hiba érkezett.", + "apps.error.responses.unknown_field_error": "Hiba érkezett egy ismeretlen mezőhöz. Mező neve: `{field}`. Hiba: `{error}`.", + "apps.error.responses.unknown_type": "Az alkalmazás válasz típusa nem támogatott. Válasz típusa: {type}.", + "apps.error.unknown": "Ismeretlen hiba történt.", + "apps.suggestion.dynamic.error": "Dinamikus kiválasztás hiba", + "apps.suggestion.errors.parser_error": "Értelmezés hiba", + "apps.suggestion.no_dynamic": "A dinamikus javaslatokhoz nem érkezett adat", + "apps.suggestion.no_static": "Nincsenek egyező opciók.", + "apps.suggestion.no_suggestion": "Nincsenek egyező javaslatok.", + "archivedChannelMessage": "Ön egy **archivált beszélgetést** néz. Új üzenetet nem tud elküldeni.", + "camera_type.photo.option": "Fotó készítése", + "camera_type.title": "Válasszon egy műveletet", + "camera_type.video.option": "Videó rögzítése", + "center_panel.archived.closeChannel": "Beszélgetés bezárása", + "channel_info.header": "Fejléc:", + "channel_loader.someone": "Valaki", + "channel_modal.descriptionHelp": "Írja le hogyan kell ezt a beszélgetést használni.", + "channel_modal.header": "Fejléc", + "channel_modal.name": "Név", + "channel_modal.optional": "(nem kötelező)", + "channel_modal.purpose": "Cél", + "combined_system_message.added_to_channel.many_expanded": "{users} és {lastUser} **hozzá lett adva a beszélgetéshez** {actor} által.", + "combined_system_message.added_to_channel.one": "{firstUser} **hozzá lett adva a beszélgetészhez** {actor} által.", + "combined_system_message.added_to_channel.one_you": "Ön **hozzá lett adva a beszélgetéshez** {actor} által.", + "combined_system_message.added_to_channel.two": "{firstUser} és {secondUser} **hozzá lett adva a beszélgetéshez** {actor} által.", + "combined_system_message.added_to_team.many_expanded": "{users} és {lastUser} **hozzá lettek adva a csapathoz** {actor} által.", + "combined_system_message.added_to_team.one": "{firstUser} **hozzá lett adva a csapathoz** {actor} által.", + "combined_system_message.added_to_team.one_you": "Ön **hozzá lett adva a csapathoz** {actor} által.", + "combined_system_message.added_to_team.two": "{firstUser} és {secondUser} **hozzá lettek adva a csapathoz** {actor} által.", + "combined_system_message.joined_channel.many_expanded": "{users} és {lastUser} **csatlakozott a beszélgetésbe**.", + "combined_system_message.joined_channel.one": "{firstUser} **csatlakozott a beszélgetéshez**.", + "combined_system_message.joined_channel.one_you": "Ön **csatlakozott a beszélgetéshez**.", + "combined_system_message.joined_channel.two": "{firstUser} és {secondUser} **csatlakozott a beszélgetéshez**.", + "combined_system_message.joined_team.many_expanded": "{users} és {lastUser} **csatlakozott a csapathoz**.", + "combined_system_message.joined_team.one": "{firstUser} **csatlakozott a csapathoz**.", + "combined_system_message.joined_team.one_you": "Ön **csatlakozott a csapathoz**.", + "combined_system_message.joined_team.two": "{firstUser} és {secondUser} **csatlakozott a csapathoz**.", + "combined_system_message.left_channel.many_expanded": "{users} és {lastUser} **kilépett a beszélgetésből**.", + "combined_system_message.left_channel.one": "{firstUser} **kilépett a beszélgetésből**.", + "combined_system_message.left_channel.one_you": "Ön **kilépett a beszélgetésből**.", + "combined_system_message.left_channel.two": "{firstUser} és {secondUser} **kilépett a beszélgetésből**.", + "combined_system_message.left_team.many_expanded": "{users} és {lastUser} **kilépett a csapatból**.", + "combined_system_message.left_team.one": "{firstUser} **kilépett a csapatból**.", + "combined_system_message.left_team.one_you": "Ön **kilépett a csapatból**.", + "combined_system_message.left_team.two": "{firstUser} és {secondUser} **kilépet a csapatból**.", + "combined_system_message.removed_from_channel.many_expanded": "{users} és {lastUser} **el lett távolítva a beszélgetésből**.", + "combined_system_message.removed_from_channel.one": "{firstUser} **el lett távolítva a beszélgetésből**.", + "combined_system_message.removed_from_channel.one_you": "Önt **eltávolították a beszélgetésből**.", + "combined_system_message.removed_from_channel.two": "{firstUser} és {secondUser} **el lett távolítva a beszélgetésből**.", + "combined_system_message.removed_from_team.many_expanded": "{users} és {lastUser} **el lett távolítva a csapatból**.", + "combined_system_message.removed_from_team.one": "{firstUser} **el lett távolítva a csapatból**.", + "combined_system_message.removed_from_team.one_you": "Önt **eltávolították a csapatból**.", + "combined_system_message.removed_from_team.two": "{firstUser} és {secondUser} **el lett távolítva a csapatból**.", + "combined_system_message.you": "Ön", + "create_post.deactivated": "Letiltott felhasználóval archivált beszélgetést néz.", + "create_post.write": "Írjon a {channelDisplayName} beszélgetésbe", + "custom_status.expiry_dropdown.custom": "Egyéni", + "custom_status.expiry_dropdown.date_and_time": "Időpont", + "custom_status.expiry_dropdown.dont_clear": "Ne törölje", + "custom_status.expiry_dropdown.four_hours": "4 óra", + "custom_status.expiry_dropdown.one_hour": "1 óra", + "custom_status.expiry_dropdown.thirty_minutes": "30 perc", + "custom_status.expiry_dropdown.this_week": "Ezen a héten", + "custom_status.expiry_dropdown.today": "Ma", + "custom_status.expiry_time.today": "Ma", + "custom_status.expiry_time.tomorrow": "Holnap", + "custom_status.expiry.at": "ekkor", + "custom_status.expiry.until": "Eddig:", + "custom_status.failure_message": "Nem sikerült frissíteni az állapotot. Próbálja újra", + "custom_status.suggestions.in_a_meeting": "Megbeszélésben", + "custom_status.suggestions.on_a_vacation": "Szabadságon van", + "custom_status.suggestions.out_for_lunch": "Ebédszüneten van", + "custom_status.suggestions.out_sick": "Betegszabadságon van", + "custom_status.suggestions.working_from_home": "Otthonról dolgozik", + "date_separator.today": "Ma", + "date_separator.yesterday": "Tegnap", + "edit_post.editPost": "Bejegyzés szerkesztése...", + "edit_post.save": "Mentés", + "emoji_picker.activities": "Tevékenységek", + "emoji_picker.animals-nature": "Állatok és természet", + "emoji_picker.custom": "Egyéni", + "emoji_picker.flags": "Jelölők", + "emoji_picker.food-drink": "Étel és ital", + "emoji_picker.objects": "Tárgyak", + "emoji_picker.people-body": "Emberek és test", + "emoji_picker.searchResults": "Keresési eredmények", + "emoji_picker.smileys-emotion": "Emojik és érzelmek", + "emoji_picker.symbols": "Szimbólumok", + "emoji_picker.travel-places": "Utazás és helyek", + "emoji_skin.dark_skin_tone": "sötét bőrszín", + "emoji_skin.default": "alapértelmezett bőrszín", + "emoji_skin.light_skin_tone": "világos bőrszín", + "emoji_skin.medium_dark_skin_tone": "közepesen sötét bőrszín", + "emoji_skin.medium_light_skin_tone": "közepesen világos bőrszín", + "emoji_skin.medium_skin_tone": "közepes bőrszín", + "file_upload.fileAbove": "A fájloknak kisebbnek kell lenniük, mint {max}", + "friendly_date.daysAgo": "{count} {count, plural, one {nappal} other {nappal}} ezelőtt", + "friendly_date.hoursAgo": "{count} {count, plural, one {órával} other {órával}} ezelőtt", + "friendly_date.minsAgo": "{count} {count, plural, one {perccel} other {perccel}} ezelőtt", + "friendly_date.monthsAgo": "{count} {count, plural, one {hónappal} other {hónappal}} ezelőtt", + "friendly_date.now": "Most", + "friendly_date.yearsAgo": "{count} {count, plural, one {évvel} other {évvel}} ezelőtt", + "friendly_date.yesterday": "Tegnap", + "gallery.footer.channel_name": "Megosztva a {channelName} beszélgetésben", + "gallery.open_file": "File megnyitása", + "get_post_link_modal.title": "Link másolása", + "global_threads.allThreads": "Összes üzenetszál", + "global_threads.emptyThreads.message": "Minden olyan üzenetszál, amiben részt vettél vagy említésre kerültél fel lesz itt tüntetve azokkal együtt, amiket követsz.", + "global_threads.emptyThreads.title": "Nincsen követett üzenetszál", + "global_threads.emptyUnreads.message": "Úgy néz ki, mindent elolvastál.", + "global_threads.emptyUnreads.title": "Nincsen olvasatlan üzenetszál", + "global_threads.markAllRead.cancel": "Mégsem", + "global_threads.markAllRead.markRead": "Olvasottnak jelöl", + "global_threads.markAllRead.message": "Ez törölni fog minden olvasatlan állapotot az itt mutatott üzetszálakhoz", + "global_threads.markAllRead.title": "Biztosan minden üzenetszálat olvasottnak szeretne megjelölni?", + "global_threads.options.mark_as_read": "Megjelölés olvasottként", + "global_threads.options.open_in_channel": "Megnyitás a beszélgetésben", + "global_threads.unreads": "Olvasatlanok", + "last_users_message.added_to_channel.type": "**hozzá lett adva a beszélgetéshez** {actor} által.", + "last_users_message.added_to_team.type": "**hozzá lettek adva a csapathoz** {actor} által.", + "last_users_message.first": "{firstUser} és ", + "last_users_message.joined_channel.type": "**csatlakozott a beszélgetéshez**.", + "last_users_message.joined_team.type": "**csatlakozott a csapathoz**.", + "last_users_message.left_channel.type": "**kilépett a beszélgetésből**.", + "last_users_message.left_team.type": "**kilépett a csapatból**.", + "last_users_message.others": "{numOthers} másik ", + "last_users_message.removed_from_channel.type": "**el lett távolítva a beszélgetésből**.", + "last_users_message.removed_from_team.type": "**el lett távolítva a csapatból**.", + "login_mfa.tokenReq": "Kérem adja meg az MFA tokent", + "login.email": "E-mail", + "login.ldapUsername": "AD/LDAP Felhasználónév", + "login.or": "vagy", + "login.password": "Jelszó", + "login.username": "Felhasználónév", + "mobile.about.appVersion": "Alkalmazás verzió: {version} (Kiadás {number})", + "mobile.account.settings.save": "Mentés", + "mobile.action_menu.select": "Válassz egy opciót", + "mobile.android.back_handler_exit": "A kilépéshez nyomja meg újra a vissza gombot", + "mobile.android.photos_permission_denied_title": "{applicationName} szeretné elérni a fotóit", + "mobile.camera_photo_permission_denied_title": "{applicationName} szeretne hozzáférni a kamerához", + "mobile.channel_info.alertNo": "Nem", + "mobile.channel_info.alertYes": "Igen", + "mobile.commands.error_title": "Hiba a parancs végrehajtása során", + "mobile.components.select_server_view.connect": "Csatlakozás", + "mobile.components.select_server_view.enterServerUrl": "Szerver URL", + "mobile.components.select_server_view.proceed": "Folytatás", + "mobile.create_channel": "Létrehozás", + "mobile.custom_status.choose_emoji": "Válasszon egy emojit", + "mobile.custom_status.clear_after": "Törlés ennyi után", + "mobile.custom_status.modal_confirm": "Kész", + "mobile.display_settings.theme": "Téma", + "mobile.document_preview.failed_description": "Hiba történt a dokumentum megnyitásakor. Győződjön meg róla, hogy telepítve van egy {fileType} megtekintő, és próbálja újra.\n", + "mobile.document_preview.failed_title": "A dokumentum megnyitása nem sikerült", + "mobile.downloader.disabled_description": "A fájl letöltések le vannak tiltva ezen a szerveren. További részletekért forduljon a rendszergazdához.\n", + "mobile.downloader.disabled_title": "Letöltés letiltva", + "mobile.downloader.failed_description": "Hiba történt a fájl letöltése közben. Kérjük, ellenőrizze internetkapcsolatát, és próbálja újra.\n", + "mobile.downloader.failed_title": "Letöltés sikertelen", + "mobile.edit_channel": "Mentés", + "mobile.edit_post.title": "Üzenet szerkesztése", + "mobile.error_handler.button": "Újraindítás", + "mobile.error_handler.description": "\nKoppintson az Újraindítás gombra az alkalmazás újbóli megnyitásához. Az újraindítás után a beállítások menüben jelentheti a problémát.\n", + "mobile.error_handler.title": "Váratlan hiba történt", + "mobile.file_upload.disabled2": "A fájlok mobilról történő feltöltése le van tiltva.", + "mobile.file_upload.max_warning": "Legfeljebb {count} fájl feltöltése lehetséges.", + "mobile.files_paste.error_description": "Hiba történt a fájl(ok) beillesztésekor. Kérem próbálja újra.", + "mobile.files_paste.error_dismiss": "Elvetés", + "mobile.files_paste.error_title": "Beillesztés nem sikerült", + "mobile.gallery.title": "{index} / {total}", + "mobile.ios.photos_permission_denied_title": "{applicationName} szeretne hozzáférni a fényképeidhez", + "mobile.link.error.text": "Nem sikerült megnyitni a linket.", + "mobile.link.error.title": "Hiba", + "mobile.managed.blocked_by": "{vendor} letiltotta", + "mobile.managed.exit": "Kilépés", + "mobile.managed.jailbreak": "A {vendor} nem bízik a rootolt eszközökben, kérjük lépjen ki az alkalmazásból.", + "mobile.managed.not_secured.android": "A Mattermost használatához a készüléket képernyőzárral kell beállítani.", + "mobile.managed.not_secured.ios": "A Mattermost használatához ezt az eszközt zárolási mintával kell védeni.\n\nLépjen a Beállítások > Face ID és jelkód menüpontba.", + "mobile.managed.not_secured.ios.touchId": "A Mattermost használatához ezt az eszközt zárolási mintával kell védeni.\n\nLépjen a Beállítások > Face ID és jelkód menüpontba.", + "mobile.managed.secured_by": "{vendor} által biztosítva", + "mobile.managed.settings": "Ugrás a beállításokhoz", + "mobile.markdown.code.copy_code": "Kód másolása", + "mobile.markdown.code.plusMoreLines": "+{count, number} további {count, plural, one {sor} other {sorok}}", + "mobile.markdown.image.too_large": "A kép meghaladja a maximális méretet ({maxWidth} x {maxHeight}):", + "mobile.markdown.link.copy_url": "URL másolása", + "mobile.mention.copy_mention": "Említés másolása", + "mobile.message_length.message": "A jelenlegi üzenete túl hosszú. Jelenlegi karakterek száma: {count}/{max}", + "mobile.message_length.message_split_left": "Az üzenet meghaladja a karakter korlátot", + "mobile.message_length.title": "Üzenet hossza", + "mobile.oauth.failed_to_login": "A bejelentkezési kísérlet nem sikerült. Kérlek próbáld újra.", + "mobile.oauth.failed_to_open_link": "A linket nem sikerült megnyitni. Kérlek próbáld újra.", + "mobile.oauth.something_wrong": "Valami elromlott", + "mobile.oauth.try_again": "Próbálkozzon újra", + "mobile.open_gm.error": "Nem tudtunk csoportos üzenetet megnyitni ezekkel a felhasználókkal. Kérjük ellenőrizze a kapcsolatot, és próbálja újra.", + "mobile.permission_denied_dismiss": "Ne engedje", + "mobile.permission_denied_retry": "Beállítások", + "mobile.post_info.add_reaction": "Reakció hozzáadása", + "mobile.post_info.copy_text": "Szöveg másolása", + "mobile.post_info.mark_unread": "Megjelölés olvasatlanként", + "mobile.post_info.pin": "Kitűzés a csatornára", + "mobile.post_info.reply": "Válasz", + "mobile.post_info.unpin": "Feloldás a beszélgetésben", + "mobile.post_pre_header.pinned": "Kitűzött", + "mobile.post_textbox.entire_channel_here.message": "A @here használatával értesítést fog küldeni legfeljebb {totalMembers, number} személynek. Biztosan ezt akarja tenni?", + "mobile.post_textbox.entire_channel_here.message.with_timezones": "A @here használatával értesítést fog küldeni legfeljebb {totalMembers, number} személynek {timezones, number} {timezones, plural, one {időzónába} other {különböző időzónákba}}. Biztosan ezt akarja tenni?", + "mobile.post_textbox.entire_channel.cancel": "Mégsem", + "mobile.post_textbox.entire_channel.confirm": "Megerősítés", + "mobile.post_textbox.entire_channel.message": "Az @all vagy a @channel használatával értesítést fog küldeni {totalMembers, number} személynek. Biztosan ezt akarja tenni?", + "mobile.post_textbox.entire_channel.message.with_timezones": "A @all vagy @channel használatával értesítést fog küldeni {totalMembers, number} személynek {timezones, number} {timezones, plural, one {időzónába} other {különböző időzónákba}}. Biztosan ezt akarja tenni?", + "mobile.post_textbox.entire_channel.title": "Erősítse meg az értesítések küldését a teljes beszélgetésnek", + "mobile.post_textbox.groups.title": "Erősítse meg az értesítések küldését a csoportoknak", + "mobile.post_textbox.uploadFailedDesc": "Néhány mellékletet nem sikerült feltölteni a szerverre. Biztosan el akarja küldeni az üzenetet?", + "mobile.post_textbox.uploadFailedTitle": "Csatolmány hiba", + "mobile.post.cancel": "Mégsem", + "mobile.post.delete_question": "Biztosan törli ezt a bejegyzést?", + "mobile.post.delete_title": "Bejegyzés törlése", + "mobile.post.failed_delete": "Üzenet törlése", + "mobile.post.failed_retry": "Próbálja újra", + "mobile.posts_view.moreMsg": "További új üzenetek vannak fent", + "mobile.privacy_link": "Adatvédelmi irányelvek", + "mobile.push_notification_reply.button": "Küldés", + "mobile.push_notification_reply.placeholder": "Válasz írása...", + "mobile.push_notification_reply.title": "Válasz", + "mobile.rename_channel.display_name_maxLength": "A beszélgetés nevének kevesebbnek kell lennie, mint {maxLength, number} karakter", + "mobile.rename_channel.display_name_minLength": "A beszélgetés nevének legalább {minLength, number} karakternek kell lennie", + "mobile.rename_channel.display_name_required": "Beszélgetés név kötelező", + "mobile.request.invalid_response": "Érvénytelen választ kapott a szervertől.", + "mobile.reset_status.alert_cancel": "Mégsem", + "mobile.reset_status.title_ooo": "Letiltja az „Irodán kívül” funkciót?", + "mobile.routes.code": "{language} kód", + "mobile.routes.code.noLanguage": "Kód", + "mobile.routes.custom_status": "Állapot beállítása", + "mobile.routes.table": "Táblázat", + "mobile.routes.user_profile": "Profil", + "mobile.search.jump": "Ugrás a legutóbbi üzenetekre", + "mobile.server_link.error.text": "A link nem található ezen a szerveren.", + "mobile.server_link.error.title": "Link hiba", + "mobile.server_link.unreachable_channel.error": "Ez a link vagy egy törölt beszélgetéshez vagy egy olyan beszélgetéshez tartozik, amelyikhez nincs hozzáférése.", + "mobile.server_link.unreachable_team.error": "Ez a link vagy egy törölt csapathoz vagy egy olyan csapathoz tartozik, amelyhez nincs hozzáférése.", + "mobile.server_upgrade.alert_description": "Ez a szerver verzió nem támogatott, és a felhasználók kompatibilitási problémáknak vannak kitéve, amelyek összeomlást vagy súlyos hibákat okoznak az alkalmazás alapvető funkcióiban. Frissítés szükséges a {serverVersion} vagy újabb szerver verzióra.", + "mobile.server_upgrade.button": "OK", + "mobile.server_upgrade.dismiss": "Elvetés", + "mobile.server_upgrade.learn_more": "Tudjon meg többet", + "mobile.server_upgrade.title": "Szerver frissítés szükséges", + "mobile.server_url.empty": "Kérem adjon meg érvényes szerver URL-t", + "mobile.server_url.invalid_format": "Az URL-nek http:// vagy https:// -el kell kezdődnie", + "mobile.set_status.away": "Nincs a gépnél", + "mobile.set_status.dnd": "Ne zavarj", + "mobile.set_status.offline": "Nem elérhető", + "mobile.set_status.online": "Elérhető", + "mobile.storage_permission_denied_title": "{applicationName} szeretne hozzáférni a fájljaihoz", + "mobile.suggestion.members": "Tagok", + "mobile.system_message.channel_archived_message": "{username} archiválta a beszélgetést", + "mobile.system_message.channel_unarchived_message": "{username} visszaállította a beszélgetést", + "mobile.system_message.update_channel_displayname_message_and_forget.updated_from": "{username} frissítette a beszélgetés megjelenített nevét erről: {oldDisplayName} erre: {newDisplayName}", + "mobile.system_message.update_channel_header_message_and_forget.removed": "{username} eltávolította a beszélgetés fejlécét (ez volt: {oldHeader})", + "mobile.system_message.update_channel_header_message_and_forget.updated_from": "{username} frissítette a beszélgetés fejlécét erről: {oldHeader} erre: {newHeader}", + "mobile.system_message.update_channel_header_message_and_forget.updated_to": "{username} frissítette a beszélgetés fejlécét erre: {newHeader}", + "mobile.system_message.update_channel_purpose_message.removed": "{username} eltávolította a beszélgetés célját (ez volt: {oldPurpose})", + "mobile.system_message.update_channel_purpose_message.updated_from": "{username} frissítette a beszélgetés célját erről: {oldPurpose} erre: {newPurpose}", + "mobile.system_message.update_channel_purpose_message.updated_to": "{username} frissítette a beszélgetés célját erre: {newPurpose}", + "mobile.tos_link": "Felhasználási feltételek", + "mobile.unsupported_server.message": "Előfordulhat, hogy a mellékletek, a linkek előnézete, a reakciók és a beágyazott adatok nem megfelelően jelennek meg. Ha ez a probléma továbbra is fennáll, forduljon a rendszergazdához a Mattermost szerver frissítéséhez.", + "mobile.unsupported_server.ok": "OK", + "mobile.unsupported_server.title": "Nem támogatott szerver verzió", + "mobile.user_list.deactivated": "Kikapcsolt", + "modal.manual_status.auto_responder.message_": "Szeretné állapotát \"{status}\" -ra váltani és letiltani az Automatikus válaszokat?", + "modal.manual_status.auto_responder.message_away": "Szeretné állapotát \"Nincs a gépnél\"-re váltani és letiltani az Automatikus válaszokat?", + "modal.manual_status.auto_responder.message_dnd": "Szeretné állapotát \"Ne zavarj\"-ra váltani és letiltani az Automatikus válaszokat?", + "modal.manual_status.auto_responder.message_offline": "Szeretné állapotát \"Nem elérhető\"-re váltani és letiltani az Automatikus válaszokat?", + "modal.manual_status.auto_responder.message_online": "Szeretné állapotát \"Elérhető\"-re váltani és letiltani az Automatikus válaszokat?", + "msg_typing.areTyping": "{users} és {last} épp gépel...", + "msg_typing.isTyping": "{user} épp gépel...", + "password_send.description": "A jelszó visszaállításához írja be a regisztrációhoz használt e-mail címet", + "password_send.error": "Kérjük egy érvényes e-mail címet adjon meg.", + "password_send.link": "Ha létezik a fiók, akkor jelszó visszaállító e-mailt küldünk a következő címre:", + "permalink.show_dialog_warn.cancel": "Mégsem", + "permalink.show_dialog_warn.join": "Csatlakozás", + "permalink.show_dialog_warn.title": "Csatlakozás a privát beszélgetéshez", + "post_body.check_for_out_of_channel_groups_mentions.message": "nem kaptak értesítést erről az említésről, mert nem vesznek részt a beszélgetésben. Továbbá ők nem tagjai az ehhez a beszélgetéshez kapcsolódó csoportoknak.", + "post_body.check_for_out_of_channel_mentions.link.and": " és ", + "post_body.check_for_out_of_channel_mentions.link.private": "hozzáadni őket ehhez a privát beszélgetéshez", + "post_body.check_for_out_of_channel_mentions.link.public": "hozzáadni őket a beszélgetéshez", + "post_body.check_for_out_of_channel_mentions.message_last": "? Hozzáférhetnek az összes korábbi üzenetekhez.", + "post_body.check_for_out_of_channel_mentions.message.multiple": "említették, de nem résztvevői a beszélgetésnek. Szeretné ", + "post_body.check_for_out_of_channel_mentions.message.one": "említették, de nem résztvevői a beszélgetésnek. Szeretné ", + "post_body.commentedOn": "Hozzászólt {name} üzenetéhez: ", + "post_body.deleted": "(üzenet törölve)", + "post_info.del": "Törlés", + "post_info.edit": "Szerkesztés", + "post_info.system": "Rendszer", + "post_message_view.edited": "(szerkesztett)", + "posts_view.newMsg": "Új üzenetek", + "search_bar.search": "Keresés", + "status_dropdown.set_away": "Nincs a gépnél", + "status_dropdown.set_dnd": "Ne zavarj", + "status_dropdown.set_offline": "Nem elérhető", + "status_dropdown.set_online": "Elérhető", + "suggestion.mention.all": "Értesít mindenkit ebben a beszélgetésben", + "suggestion.mention.channel": "Értesít mindenkit ebben a beszélgetésben", + "suggestion.mention.channels": "Beszélgetéseim", + "suggestion.mention.groups": "Csoportemlítések", + "suggestion.mention.here": "Értesít mindenkit aki elérhető ebben a beszélgetésben", + "suggestion.mention.members": "Beszélgetés résztvevői", + "suggestion.mention.morechannels": "Egyéb beszélgetések", + "suggestion.mention.nonmembers": "Nincs a beszélgetésben", + "suggestion.mention.special": "Különleges említések", + "suggestion.mention.you": " (ön)", + "suggestion.search.direct": "Közvetlen üzenetek", + "suggestion.search.private": "Privát beszélgetések", + "suggestion.search.public": "Nyilvános beszélgetések", + "threads": "Üzenetszálak", + "threads.deleted": "Eredeti üzenet törlésre került", + "threads.follow": "Követés", + "threads.following": "Követve", + "threads.followMessage": "Üzenet követése", + "threads.followThread": "Üzenetszál követése", + "threads.newReplies": "{count} új {count, plural, one {válasz} other {válasz}}", + "threads.replies": "{count} {count, plural, one {válasz} other {válasz}}", + "threads.unfollowMessage": "Üzenet követésének visszavonása", + "threads.unfollowThread": "Üzenetszál követésének visszavonása", + "user.settings.general.email": "E-mail", + "user.settings.general.firstName": "Keresztnév", + "user.settings.general.lastName": "Vezetéknév", + "user.settings.general.nickname": "Becenév", + "user.settings.general.position": "Beosztás", + "user.settings.general.username": "Felhasználónév" +} diff --git a/assets/base/i18n/ja.json b/assets/base/i18n/ja.json index 8971b8b43..4e7708c21 100644 --- a/assets/base/i18n/ja.json +++ b/assets/base/i18n/ja.json @@ -239,8 +239,6 @@ "mobile.message_length.message": "メッセージが長すぎます。現在の文字数: {max}/{count}", "mobile.message_length.message_split_left": "メッセージが文字数制限を超えています", "mobile.message_length.title": "メッセージの長さ", - "mobile.microphone_permission_denied_description": "この通話に参加するには、設定を開いて、Mattermost にマイクへのアクセスを許可してください。", - "mobile.microphone_permission_denied_title": "{applicationName} がマイクへのアクセスを要求しています", "mobile.oauth.failed_to_login": "ログインできませんでした。再度試してみてください。", "mobile.oauth.failed_to_open_link": "リンクを開けませんでした。再度試してみてください。", "mobile.oauth.something_wrong": "問題が発生しました", @@ -502,12 +500,9 @@ "mobile.search.show_more": "さらに表示", "mobile.search.show_less": "表示を少なくする", "mobile.search.modifier.phrases": "フレーズを含むメッセージ", - "mobile.search.modifier.on": "特定の日付", "mobile.search.modifier.in": "特定のチャンネル", "mobile.search.modifier.from": "特定のユーザー", "mobile.search.modifier.exclude": "検索除外ワード", - "mobile.search.modifier.before": "以前", - "mobile.search.modifier.after": "以降", "mobile.screen.your_profile": "あなたのプロフィール", "mobile.screen.settings": "設定", "mobile.reset_status.alert_ok": "OK", @@ -590,7 +585,6 @@ "mobile.calls_lasted": "通話時間 {duration}", "mobile.calls_join_call": "通話に参加する", "mobile.calls_error_title": "エラー", - "mobile.calls_error_permissions": "マイクが許可されていないため、通話を開始できませんでした", "mobile.calls_error_message": "エラー: {error}", "mobile.calls_ended_at": "終了時刻", "mobile.calls_end_permission_title": "エラー", diff --git a/assets/base/i18n/ko.json b/assets/base/i18n/ko.json index bad052d94..cef07acc4 100644 --- a/assets/base/i18n/ko.json +++ b/assets/base/i18n/ko.json @@ -1,382 +1,380 @@ { - "about.date": "빌드 일자:", - "about.enterpriseEditione1": "엔터프라이즈 에디션", - "about.enterpriseEditionLearn": "엔터프라이즈 에디션에 대한 자세한 정보 ", - "about.enterpriseEditionSt": "보안 네트워크에 구축하는 현대적인 커뮤니케이션 플랫폼.", - "about.hash": "빌드 해시:", - "about.hashee": "EE 빌드 해시:", - "about.teamEditionLearn": "Mattermost 커뮤니티에 참여 ", - "about.teamEditionSt": "모든 팀 커뮤니케이션을 한 곳에 모아 빠르게 찾고, 공유하세요.", - "about.teamEditiont0": "팀 에디션", - "about.teamEditiont1": "엔터프라이즈 에디션", - "api.channel.add_guest.added": "{addedUsername}님이 {username}님을 통해 채널에 게스트로 추가되었습니다.", - "api.channel.add_member.added": "{username}님이 {addedUsername}님을 채널에 초대했습니다.", - "api.channel.guest_join_channel.post_and_forget": "{username}님이 게스트로 채널에 참여했습니다.", - "apps.error": "오류: {error}", - "apps.error.command.field_missing": "필수 항목 누락: `{fieldName}`.", - "apps.error.command.same_channel": "`{fieldName}` 항목에서 채널이 반복 지정되었습니다: `{option}`.", - "apps.error.command.same_option": "`{fieldName}` 항목에서 옵션이 반복 지정되었습니다: `{option}`.", - "apps.error.command.same_user": "`{fieldName}` 항목에서 사용자가 반복 지정되었습니다: `{option}`.", - "apps.error.command.unknown_channel": "`{fieldName}` 항목에 대한 알 수 없는 채널이 지정되었습니다: `{option}`.", - "apps.error.command.unknown_option": "`{fieldName}` 항목에 알 수 없는 옵션이 지정되었습니다: `{option}`.", - "apps.error.command.unknown_user": "`{fieldName}` 항목에 알 수 없는 사용자가 지정되었습니다: `{option}`.", - "apps.error.form.no_form": "`form`이 정의되어 있지 않습니다.", - "apps.error.form.no_lookup": "`lookup` 이 정의되어 있지 않습니다.", - "apps.error.form.no_source": "`source` 가 정의되어 있지 않습니다.", - "apps.error.form.no_submit": "`submit`이 정의되어 있지 않습니다", - "apps.error.form.refresh": "선택한 항목을 가져오는 동안 오류가 발생했습니다. 앱 개발자에게 문의하세요. 세부정보: {details}", - "apps.error.form.refresh_no_refresh": "새로고침이 불가능한 항목에 대해 새로고침을 실행합니다.", - "apps.error.form.submit.pretext": "모달을 제출하는 중에 오류가 발생했습니다. 앱 개발자에게 문의하세요. 세부정보: {details}", - "apps.error.lookup.error_preparing_request": "조회 요청을 준비하는 중 오류가 발생했습니다: {errorMessage}", - "apps.error.malformed_binding": "바인딩이 제대로 형성되지 않았습니다. 앱 개발자에게 문의하십시오.", - "apps.error.parser": "파싱 오류: {error}", - "apps.error.parser.execute_non_leaf": "하위 명령을 선택해야 합니다.", - "apps.error.parser.missing_binding": "연결된 명령을 찾을 수 없습니다.", - "apps.error.parser.missing_field_value": "항목 값이 누락되었습니다.", - "apps.error.parser.missing_list_end": "목록을 닫는 토큰이 필요합니다.", - "apps.error.parser.missing_quote": "큰따옴표(\")로 인용 처리가 필요합니다.", - "apps.error.parser.missing_source": "양식이 제출되지 않았거나 원본이 없습니다.", - "apps.error.parser.missing_submit": "바인딩 또는 양식에 제출 호출이 없습니다.", - "apps.error.parser.missing_tick": "역따옴표(`)로 인용 처리가 필요합니다.", - "apps.error.parser.multiple_equal": "`=` 기호는 여러 개 사용할 수 없습니다.", - "apps.error.parser.no_argument_pos_x": "인수를 식별할 수 없습니다.", - "apps.error.parser.no_bindings": "명령 바인딩이 없습니다.", - "apps.error.parser.no_form": "양식을 찾을 수 없습니다.", - "apps.error.parser.no_match": "`{command}`: 이 작업 공간에서 일치하는 명령어를 찾을 수 없습니다.", - "apps.error.parser.no_slash_start": "명령어는 슬래시 기호(`/`)로 시작해야 합니다.", - "apps.error.parser.unexpected_character": "예기치 않은 문자.", - "apps.error.parser.unexpected_comma": "예기치 않은 쉼표(,)입니다.", - "apps.error.parser.unexpected_error": "예기치 않은 오류입니다.", - "apps.error.parser.unexpected_flag": "명령어에서`{flagName}`플래그를 허용하지 않습니다.", - "apps.error.parser.unexpected_squared_bracket": "예기치 않은 목록이 열립니다.", - "apps.error.parser.unexpected_state": "연결할 수 없음: matchBinding에서 예기치 않은 상태: `{state}`.", - "apps.error.parser.unexpected_whitespace": "연결할 수 없음: 예기치 않은 공백입니다.", - "apps.error.responses.navigate.no_url": "응답 유형은 `navigate`이지만, URL이 포함되지 않았습니다.", - "apps.error.responses.unexpected_error": "예기치 않은 오류를 수신했습니다.", - "apps.error.responses.unknown_field_error": "알 수 없는 항목 오류를 수신했습니다. 항목 이름: `{field}`. 오류: `{error}`.", - "apps.error.responses.unknown_type": "지원되지 않는 앱 응답 유형입니다. 응답 유형: {type}.", - "apps.error.unknown": "알 수 없는 오류가 발생했습니다.", - "apps.suggestion.dynamic.error": "동적 선택 오류", - "apps.suggestion.errors.parser_error": "파싱 오류", - "apps.suggestion.no_dynamic": "동적 제안에 대해 반환된 데이터가 없습니다", - "apps.suggestion.no_static": "일치하는 옵션이 없습니다.", - "apps.suggestion.no_suggestion": "일치하는 제안이 없습니다.", - "archivedChannelMessage": "**보존 처리 된 채널**을 보고 있습니다. 새 메시지를 게시할 수 없습니다.", - "camera_type.photo.option": "사진 캡처", - "camera_type.title": "작업 선택", - "camera_type.video.option": "영상 녹화", - "center_panel.archived.closeChannel": "채널 닫기", - "channel_info.header": "헤더:", - "channel_loader.someone": "누군가", - "channel_modal.descriptionHelp": "이 채널이 어떤 목적으로 사용되는지 설명해주세요.", - "channel_modal.header": "헤더", - "channel_modal.name": "이름", - "channel_modal.optional": "(선택 사항)", - "channel_modal.purpose": "설명", - "combined_system_message.added_to_channel.many_expanded": "{users}님과 {lastUser}님이 {actor}님에 의해 **채널에 추가되었습니다**.", - "combined_system_message.added_to_channel.one": "{firstUser}님이 {actor}님에 의해 **채널에 추가되었습니다**.", - "combined_system_message.added_to_channel.one_you": "{actor}님이 당신을 **채널에 추가하였습니다**.", - "combined_system_message.added_to_channel.two": "{actor}님이 {firstUser}님과 {secondUser}님을 **채널에 추가하였습니다**.", - "combined_system_message.added_to_team.many_expanded": "{actor}님이 {users}님과 {lastUser}님을 **팀에 추가하였습니다**.", - "combined_system_message.added_to_team.one": "{actor}님이 {firstUser}님을 **팀에 추가하였습니다**.", - "combined_system_message.added_to_team.one_you": "{actor}님이 당신을 **팀에 추가하였습니다**.", - "combined_system_message.added_to_team.two": "{actor}님이 {firstUser}님과 {secondUser}님을 **팀에 추가하였습니다**.", - "combined_system_message.joined_channel.many_expanded": "{users}님과 {lastUser}님이 **채널에 들어왔습니다**.", - "combined_system_message.joined_channel.one": "{firstUser}님이 **채널에 들어왔습니다**.", - "combined_system_message.joined_channel.one_you": "**채널에 들어왔습니다**.", - "combined_system_message.joined_channel.two": "{firstUser}님과 {secondUser}님이 **채널에 들어왔습니다**.", - "combined_system_message.joined_team.many_expanded": "{users}님과 {lastUser}님이 **팀에 들어왔습니다**.", - "combined_system_message.joined_team.one": "{firstUser}님이 **팀에 들어왔습니다**.", - "combined_system_message.joined_team.one_you": "**팀에 들어왔습니다**.", - "combined_system_message.joined_team.two": "{firstUser}님과 {secondUser}님이 **팀에 들어왔습니다**.", - "combined_system_message.left_channel.many_expanded": "{users}님과 {lastUser}님이 **채널에서 나갔습니다**.", - "combined_system_message.left_channel.one": "{firstUser}님이 **채널에서 나갔습니다**.", - "combined_system_message.left_channel.one_you": "**채널에서 나갔습니다**.", - "combined_system_message.left_channel.two": "{firstUser}님과 {secondUser}님이 **채널에서 나갔습니다**.", - "combined_system_message.left_team.many_expanded": "{users}님과 {lastUser}님이 **팀에서 나갔습니다**.", - "combined_system_message.left_team.one": "{firstUser}님이 **팀에서 나갔습니다**.", - "combined_system_message.left_team.one_you": "**팀에서 나갔습니다**.", - "combined_system_message.left_team.two": "{firstUser}님과 {secondUser}님이 **팀에서 나갔습니다**.", - "combined_system_message.removed_from_channel.many_expanded": "{users}님과 {lastUser}님이 **채널에서 제외되었습니다**.", - "combined_system_message.removed_from_channel.one": "{firstUser}님이 **채널에서 제외되었습니다**.", - "combined_system_message.removed_from_channel.one_you": "당신은 **채널에서 제외되었습니다.**.", - "combined_system_message.removed_from_channel.two": "{firstUser}님과 {secondUser}님이 **채널에서 제외되었습니다**.", - "combined_system_message.removed_from_team.many_expanded": "{users}님과 {lastUser}님이 **팀에서 제외되었습니다**.", - "combined_system_message.removed_from_team.one": "{firstUser}님이 **팀에서 제외되었습니다**.", - "combined_system_message.removed_from_team.one_you": "당신은 **팀에서 제외되었습니다**.", - "combined_system_message.removed_from_team.two": "{firstUser}님과 {secondUser}님이 **팀에서 제외되었습니다**.", - "combined_system_message.you": "당신", - "create_post.deactivated": "비활성화된 사용자와 함께 보관된 채널을 보고 계십니다.", - "create_post.write": "{channelDisplayName}에 글쓰기", - "custom_status.expiry_dropdown.custom": "사용자 정의", - "custom_status.expiry_dropdown.date_and_time": "날짜 및 시간", - "custom_status.expiry_dropdown.dont_clear": "삭제 금지", - "custom_status.expiry_dropdown.four_hours": "4 시간", - "custom_status.expiry_dropdown.one_hour": "1 시간", - "custom_status.expiry_dropdown.thirty_minutes": "30 분", - "custom_status.expiry_dropdown.this_week": "이번 주", - "custom_status.expiry_dropdown.today": "오늘", - "custom_status.expiry_time.today": "오늘", - "custom_status.expiry_time.tomorrow": "내일", - "custom_status.expiry.at": "에", - "custom_status.expiry.until": "까지", - "custom_status.failure_message": "상태를 갱신하지 못했습니다. 다시 시도하세요", - "custom_status.suggestions.in_a_meeting": "회의 중", - "custom_status.suggestions.on_a_vacation": "휴가 중", - "custom_status.suggestions.out_for_lunch": "점심 식사", - "custom_status.suggestions.out_sick": "병가", - "custom_status.suggestions.working_from_home": "재택 근무", - "date_separator.today": "오늘", - "date_separator.yesterday": "어제", - "edit_post.editPost": "글 편집하기...", - "edit_post.save": "저장", - "emoji_picker.activities": "활동", - "emoji_picker.animals-nature": "동물과 자연", - "emoji_picker.custom": "사용자 정의", - "emoji_picker.flags": "플래그", - "emoji_picker.food-drink": "음식 & 음료", - "emoji_picker.objects": "물건", - "emoji_picker.people-body": "사람 & 몸", - "emoji_picker.searchResults": "검색 결과", - "emoji_picker.smileys-emotion": "이모티콘 & 표정", - "emoji_picker.symbols": "심볼", - "emoji_picker.travel-places": "여행 & 장소", - "emoji_skin.dark_skin_tone": "어두운 피부색", - "emoji_skin.default": "기본 피부색", - "emoji_skin.light_skin_tone": "밝은 피부색", - "emoji_skin.medium_dark_skin_tone": "중간 정도의 어두운 피부색", - "emoji_skin.medium_light_skin_tone": "중간 정도의 밝은 피부색", - "emoji_skin.medium_skin_tone": "중간 피부색", - "file_upload.fileAbove": "파일들은 {max}개보다 작아야 합니다", - "friendly_date.daysAgo": "{count} {count, plural, one {일} other {일}} 전", - "friendly_date.hoursAgo": "{count} {count, plural, one {시간} other {시간}} 전", - "friendly_date.minsAgo": "{count} {count, plural, one {분} other {분}} 전", - "friendly_date.monthsAgo": "{count} {count, plural, one {달} other {달}} 전", - "friendly_date.now": "지금", - "friendly_date.yearsAgo": "{count} {count, plural, one {년} other {년}} 전", - "friendly_date.yesterday": "어제", - "gallery.footer.channel_name": "{channelName}에서 공유", - "gallery.open_file": "파일 열기", - "get_post_link_modal.title": "링크 복사", - "global_threads.allThreads": "모든 글타래", - "global_threads.emptyThreads.message": "언급되거나 참여한 모든 글타래는 여기에 지켜보는 중인 글타래와 함께 표시됩니다.", - "global_threads.emptyThreads.title": "아직 지켜보는 중인 글타래가 없습니다", - "global_threads.emptyUnreads.message": "볼 건 다 본 것 같네요.", - "global_threads.emptyUnreads.title": "읽지 않은 글타래 없음", - "global_threads.markAllRead.cancel": "취소", - "global_threads.markAllRead.markRead": "읽음으로 표시", - "global_threads.markAllRead.message": "여기에 표시된 모든 글타래를 읽음으로 표시", - "global_threads.markAllRead.title": "모든 글타래를 읽음으로 표시하시겠어요?", - "global_threads.options.mark_as_read": "읽음 표시", - "global_threads.options.open_in_channel": "채널에서 열기", - "global_threads.unreads": "읽지않음", - "last_users_message.added_to_channel.type": "{actor}님을 통해 **채널에 추가되었습니다**.", - "last_users_message.added_to_team.type": "{actor}님이 **팀에 추가했습니다**.", - "last_users_message.first": "{firstUser}님과 ", - "last_users_message.joined_channel.type": "**채널에 들어왔습니다**.", - "last_users_message.joined_team.type": "**팀에 들어왔습니다**.", - "last_users_message.left_channel.type": "**채널에서 나갔습니다**.", - "last_users_message.left_team.type": "**팀에서 나갔습니다**.", - "last_users_message.others": "{numOthers} 명이 ", - "last_users_message.removed_from_channel.type": "**채널에서 삭제되었습니다**.", - "last_users_message.removed_from_team.type": "**팀에서 삭제되었습니다**.", - "login_mfa.tokenReq": "MFA 토큰을 입력하세요", - "login.email": "전자우편", - "login.ldapUsername": "AD/LDAP 사용자명", - "login.or": "또는", - "login.password": "패스워드", - "login.username": "사용자 이름", - "mobile.about.appVersion": "애플리케이션 버전: {version} (빌드 {number})", - "mobile.account.settings.save": "저장", - "mobile.action_menu.select": "옵션을 선택하세요", - "mobile.android.back_handler_exit": "종료하려면 뒤로 가기를 다시 눌러주세요", - "mobile.android.photos_permission_denied_title": "{applicationName} 앱이 이 장치의 사진에 접근하려고 합니다", - "mobile.camera_photo_permission_denied_title": "{applicationName} 앱이 이 장치의 카메라에 접근하려고 합니다", - "mobile.channel_info.alertNo": "아니요", - "mobile.channel_info.alertYes": "네", - "mobile.commands.error_title": "명령 실행 오류", - "mobile.components.select_server_view.connect": "연결", - "mobile.components.select_server_view.enterServerUrl": "서버 URL 입력", - "mobile.components.select_server_view.proceed": "진행", - "mobile.create_channel": "생성", - "mobile.custom_status.choose_emoji": "이모지 선택", - "mobile.custom_status.clear_after": "이후에 지우기", - "mobile.custom_status.modal_confirm": "완료", - "mobile.display_settings.theme": "테마", - "mobile.document_preview.failed_description": "문서를 여는 동안 오류가 발생했습니다. {fileType} 뷰어가 설치되어 있는지 확인하고 다시 시도해주세요.\n", - "mobile.document_preview.failed_title": "문서 열기 실패", - "mobile.downloader.disabled_description": "이 서버에서는 파일 다운로드가 비활성화되어 있습니다. 자세한 내용은 시스템 관리자에게 문의하세요\n", - "mobile.downloader.disabled_title": "다운로드 비활성화됨", - "mobile.downloader.failed_description": "파일은 다운로드하는 동안 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해주세요.\n", - "mobile.downloader.failed_title": "다운로드 실패", - "mobile.edit_channel": "저장", - "mobile.edit_post.title": "메시지 편집", - "mobile.error_handler.button": "재실행", - "mobile.error_handler.description": "\n재실행을 클릭하여 앱을 다시 엽니다. 다시 시작한 후 설정 메뉴에서 문제를 보고할 수 있습니다.\n", - "mobile.error_handler.title": "예기치 않은 오류가 발생했습니다", - "mobile.file_upload.disabled2": "모바일에서 파일 업로드는 비활성화되어 있습니다.", - "mobile.file_upload.max_warning": "파일 업로드는 최대 {count}개로 제한됩니다.", - "mobile.files_paste.error_description": "파일을 붙여넣는 동안 오류가 발생했습니다. 다시 시도해주세요.", - "mobile.files_paste.error_dismiss": "닫기", - "mobile.files_paste.error_title": "붙여넣기 실패", - "mobile.gallery.title": "{total}개 중 {index}번째", - "mobile.ios.photos_permission_denied_title": "{applicationName} 앱이 이 장치의 사진에 접근하려고 합니다", - "mobile.link.error.text": "링크를 열 수 없습니다.", - "mobile.link.error.title": "오류", - "mobile.managed.blocked_by": "{vendor}에 의해 차단됨", - "mobile.managed.exit": "종료", - "mobile.managed.jailbreak": "탈옥된 기기는 {vendor}에서 신뢰하지 않습니다. 앱을 종료해주세요.", - "mobile.managed.not_secured.android": "Mattermost를 사용하려면 이 장치를 화면 잠금으로 보호해야 합니다.", - "mobile.managed.not_secured.ios": "Matttermost를 사용하려면 이 장치를 암호로 보호해야 합니다.\n\n설정 > Face ID 및 암호.", - "mobile.managed.not_secured.ios.touchId": "Matttermost를 사용하려면 이 장치를 암호로 보호해야 합니다.\n\n설정 > Touch ID 및 암호.", - "mobile.managed.secured_by": "{vendor}에 의해 보호됨", - "mobile.managed.settings": "설정으로 이동", - "mobile.markdown.code.copy_code": "코드 복사", - "mobile.markdown.code.plusMoreLines": "+{count, number} more {count, plural, one {line} other {lines}}", - "mobile.markdown.image.too_large": "Image exceeds max dimensions of {maxWidth} by {maxHeight}:", - "mobile.markdown.link.copy_url": "URL 복사", - "mobile.mention.copy_mention": "멘션 복사", - "mobile.message_length.message": "메시지가 너무 깁니다. 현재 문자 수: {max}/{count}", - "mobile.message_length.message_split_left": "메시지가 문자 제한을 초과합니다", - "mobile.message_length.title": "메시지 길이", - "mobile.microphone_permission_denied_description": "이 통화에 참여하려면 설정을 열어서 마이크 접근 권한을 부여해주세요.", - "mobile.microphone_permission_denied_title": "{applicationName} 앱이 마이크에 접근하려고 합니다", - "mobile.oauth.failed_to_login": "로그인 시도에 실패했습니다. 다시 시도해주세요.", - "mobile.oauth.failed_to_open_link": "링크를 열지 못했습니다. 다시 시도해주세요.", - "mobile.oauth.something_wrong": "문제가 발생했습니다", - "mobile.oauth.try_again": "다시 시도", - "mobile.open_gm.error": "그룹 메시지를 열 수 없습니다. 연결을 확인하고 다시 시도해주세요.", - "mobile.permission_denied_dismiss": "허용 안함", - "mobile.permission_denied_retry": "설정", - "mobile.post_info.add_reaction": "반응 추가", - "mobile.post_info.copy_text": "텍스트 복사", - "mobile.post_info.mark_unread": "읽지 않음으로 표시", - "mobile.post_info.pin": "채널에 고정", - "mobile.post_info.reply": "답글", - "mobile.post_info.unpin": "채널에 고정 해제하기", - "mobile.post_pre_header.pinned": "고정됨", - "mobile.post_textbox.entire_channel_here.message": "@here을 사용하여 {totalMembers, number} {totalMembers, plural, one {명} other {명}}에게 알림을 보냅니다. 진행할까요?", - "mobile.post_textbox.entire_channel_here.message.with_timezones": "@here을 사용하여 새로 다른 {timezones, number}개의 {timezones, plural, one {표준시간대} other {표준시간대}}에 있는 {totalMembers, number} {totalMembers, plural, one {명} other {명}}에게 알림을 보냅니다. 진행할까요?", - "mobile.post_textbox.entire_channel.cancel": "취소", - "mobile.post_textbox.entire_channel.confirm": "확인", - "mobile.post_textbox.entire_channel.message": "@all 또는 @channel을 사용하여 {totalMembers, number} {totalMembers, plural, one {명} other {명}}에게 알림을 보내려고 합니다. 진행할까요?", - "mobile.post_textbox.entire_channel.message.with_timezones": "@all 또는 @channel을 사용하여 서로 다른 {timezones, number}개의 {timezones, plural, one {표준시간대} other {표준시간대}}에 있는 {totalMembers, number} {totalMembers, plural, one {명} other {명}}에게 알림을 보내려고 합니다. 진행할까요?", - "mobile.post_textbox.entire_channel.title": "전체 채널에 알림 보내기 확인", - "mobile.post_textbox.groups.title": "그룹에 알림 보내기 확인", - "mobile.post_textbox.uploadFailedDesc": "일부 첨부 파일을 업로드하지 못했습니다. 메시지를 보내시겠어요?", - "mobile.post_textbox.uploadFailedTitle": "첨부 실패", - "mobile.post.cancel": "취소", - "mobile.post.delete_question": "정말 게시글을 삭제하시겠어요?", - "mobile.post.delete_title": "게시글 삭제", - "mobile.post.failed_delete": "메시지 삭제", - "mobile.post.failed_retry": "다시 시도", - "mobile.posts_view.moreMsg": "새로운 메시지가 더 있습니다", - "mobile.privacy_link": "개인정보 처리 방침", - "mobile.push_notification_reply.button": "보내기", - "mobile.push_notification_reply.placeholder": "답글을 쓰세요...", - "mobile.push_notification_reply.title": "답글", - "mobile.rename_channel.display_name_maxLength": "채널 이름은 {maxLength, number} 글자 미만이어야 합니다", - "mobile.rename_channel.display_name_minLength": "채널 이름은 {minLength, number} 글자 이상이어야 합니다", - "mobile.rename_channel.display_name_required": "채널 이름이 필요합니다", - "mobile.request.invalid_response": "서버로부터 잘못된 응답을 받았습니다.", - "mobile.reset_status.alert_cancel": "취소", - "mobile.reset_status.title_ooo": "\"부재 중\" 상태를 비활성화 하시겠어요?", - "mobile.routes.code": "{language} 코드", - "mobile.routes.code.noLanguage": "코드", - "mobile.routes.custom_status": "상태 설정하기", - "mobile.routes.table": "표", - "mobile.routes.user_profile": "프로필", - "mobile.search.jump": "최근 메시지로 이동", - "mobile.server_link.error.text": "서버에서 링크를 찾을 수 없습니다.", - "mobile.server_link.error.title": "링크 오류", - "mobile.server_link.unreachable_channel.error": "이 링크는 삭제되었거나 접근 권한이 없는 채널에 속해있습니다.", - "mobile.server_link.unreachable_team.error": "이 링크는 삭제되었거나 접근 권한이 없는 팀에 속해있습니다.", - "mobile.server_upgrade.alert_description": "이 서버 버전은 지원되지 않으며, 사용자는 충돌이나 앱의 핵심 기능을 손상시키는 심각한 버그를 일으키는 호환성 문제에 노출이 될 수 있습니다. {serverVersion} 이상의 버전으로 업그레이드해야 합니다.", - "mobile.server_upgrade.button": "확인", - "mobile.server_upgrade.dismiss": "닫기", - "mobile.server_upgrade.learn_more": "더 알아보기", - "mobile.server_upgrade.title": "서버 업그레이드 필요", - "mobile.server_url.empty": "유효한 서버 URL을 입력해주세요", - "mobile.server_url.invalid_format": "URL은 http:// 또는 https://로 시작해야 합니다", - "mobile.set_status.away": "다른 용무 중", - "mobile.set_status.dnd": "방해 금지", - "mobile.set_status.offline": "오프라인", - "mobile.set_status.online": "온라인", - "mobile.storage_permission_denied_title": "{applicationName} 앱이 이 장치의 파일에 접근하려고 합니다", - "mobile.suggestion.members": "구성원", - "mobile.system_message.channel_archived_message": "{username}님이 채널을 보관했습니다", - "mobile.system_message.channel_unarchived_message": "{username}님이 채널을 보관 해제했습니다", - "mobile.system_message.update_channel_displayname_message_and_forget.updated_from": "{username}님이 채널 표시 이름을 {oldDisplayName}에서 {newDisplayName}(으)로 변경했습니다", - "mobile.system_message.update_channel_header_message_and_forget.removed": "{username}님이 채널 헤더를 제거했습니다. (이전: {oldHeader})", - "mobile.system_message.update_channel_header_message_and_forget.updated_from": "{username}님이 채널 헤더를 {oldHeader}에서 {newHeader}(으)로 변경했습니다", - "mobile.system_message.update_channel_header_message_and_forget.updated_to": "{username}님이 채널 헤더를 {newHeader}(으)로 변경했습니다", - "mobile.system_message.update_channel_purpose_message.removed": "{username}님이 채널 설명을 제거했습니다. (이전: {oldPurpose})", - "mobile.system_message.update_channel_purpose_message.updated_from": "{username}님이 채널 설명을 {oldPurpose}에서 {newPurpose}(으)로 변경했습니다", - "mobile.system_message.update_channel_purpose_message.updated_to": "{username}님이 채널 목적을 {newPurpose}(으)로 변경했습니다", - "mobile.tos_link": "이용약관", - "mobile.unsupported_server.message": "첨부 파일, 링크 미리보기, 반응 및 포함 데이터가 올바르게 표시되지 않을 수 있습니다. 이 문제가 지속되면 Mattermost 서버를 업그레이드하기 위해 시스템 관리자에게 문의해주세요.", - "mobile.unsupported_server.ok": "확인", - "mobile.unsupported_server.title": "지원되지 않는 서버 버전", - "mobile.user_list.deactivated": "비활성화", - "modal.manual_status.auto_responder.message_": "상태를 \"{status}\"(으)로 전환하고 자동 회신을 비활성화하시겠어요?", - "modal.manual_status.auto_responder.message_away": "상태를 \"방해 금지\"로 전환하고 자동 회신을 비활성화하시겠에요?", - "modal.manual_status.auto_responder.message_dnd": "상태를 \"방해 금지\"로 전환하고 자동 회신을 비활성화하시겠어요?", - "modal.manual_status.auto_responder.message_offline": "상태를 \"방해 금지\"로 전환하고 자동 회신을 비활성화하시겠어요?", - "modal.manual_status.auto_responder.message_online": "상태를 \"방해 금지\"로 전환하고 자동 회신을 비활성화하시겠어요?", - "msg_typing.areTyping": "{users}, {last}님이 입력 중입니다...", - "msg_typing.isTyping": "{user}님이 입력 중입니다...", - "password_send.description": "비밀번호 재설정을 위해 등록한 전자우편 주소를 입력하세요", - "password_send.error": "유효한 전자우편 주소를 입력하세요.", - "password_send.link": "계정이 있는 경우, 비밀번호 재설정 전자우편이 다음 주소로 전송됩니다:", - "permalink.show_dialog_warn.cancel": "취소", - "permalink.show_dialog_warn.join": "참여", - "permalink.show_dialog_warn.title": "비공개 채널에 참여하기", - "post_body.check_for_out_of_channel_groups_mentions.message": "이 채널에 없기 때문에 이 멘션으로 알림을 받지 못했습니다. 또한 이 채널에 연결된 그룹의 구성원이 아닙니다.", - "post_body.check_for_out_of_channel_mentions.link.and": " 그리고 ", - "post_body.check_for_out_of_channel_mentions.link.private": "비공개 채널에 사용자 초대하기", - "post_body.check_for_out_of_channel_mentions.link.public": "이 채널에 추가하기", - "post_body.check_for_out_of_channel_mentions.message_last": "? 모든 메시지 기록에 접근할 수 있습니다.", - "post_body.check_for_out_of_channel_mentions.message.multiple": "멘션되었지만 채널에 없습니다. ", - "post_body.check_for_out_of_channel_mentions.message.one": "멘션되었지만 채널에 없습니다. ", - "post_body.commentedOn": "{name}{apostrophe}님의 메시지에 대한 답글: ", - "post_body.deleted": "(삭제된 메시지)", - "post_info.del": "삭제", - "post_info.edit": "편집", - "post_info.system": "시스템", - "post_message_view.edited": "(수정됨)", - "posts_view.newMsg": "새로운 메시지", - "search_bar.search": "검색", - "status_dropdown.set_away": "다른 용무 중", - "status_dropdown.set_dnd": "방해 금지", - "status_dropdown.set_offline": "오프라인", - "status_dropdown.set_online": "온라인", - "suggestion.mention.all": "모든 채널 구성원들에게 알림을 보냅니다", - "suggestion.mention.channel": "모든 채널 구성원들에게 알림을 보냅니다", - "suggestion.mention.channels": "내 채널", - "suggestion.mention.groups": "그룹 멘션", - "suggestion.mention.here": "이 채널의 온라인 상태인 모든 구성원들에게 알림을 보냅니다", - "suggestion.mention.members": "채널 구성원", - "suggestion.mention.morechannels": "기타 채널", - "suggestion.mention.nonmembers": "채널에 없음", - "suggestion.mention.special": "특별 멘션", - "suggestion.mention.you": " (당신)", - "suggestion.search.direct": "개인 메시지", - "suggestion.search.private": "비공개 채널", - "suggestion.search.public": "공개 채널", - "threads": "글타래", - "threads.deleted": "원본 메세지가 삭제되었습니다", - "threads.follow": "지켜보기", - "threads.following": "지켜보는 중", - "threads.followMessage": "메시지 지켜보기", - "threads.followThread": "글타래 지켜보기", - "threads.newReplies": "{count}개의 새 {count, plural, one {답장} other {답장}}", - "threads.replies": "{count}개의 {count, plural, one {답장} other {답장}}", - "threads.unfollowMessage": "메세지 지켜보기 해제", - "threads.unfollowThread": "글타래 지켜보기 해제", - "user.settings.general.email": "전자우편", - "user.settings.general.firstName": "이름", - "user.settings.general.lastName": "성", - "user.settings.general.nickname": "별명", - "user.settings.general.position": "직책", - "user.settings.general.username": "사용자 이름" -} \ No newline at end of file + "about.date": "빌드 일자:", + "about.enterpriseEditione1": "엔터프라이즈 에디션", + "about.enterpriseEditionLearn": "엔터프라이즈 에디션에 대한 자세한 정보 ", + "about.enterpriseEditionSt": "보안 네트워크에 구축하는 현대적인 커뮤니케이션 플랫폼.", + "about.hash": "빌드 해시:", + "about.hashee": "EE 빌드 해시:", + "about.teamEditionLearn": "Mattermost 커뮤니티에 참여 ", + "about.teamEditionSt": "모든 팀 커뮤니케이션을 한 곳에 모아 빠르게 찾고, 공유하세요.", + "about.teamEditiont0": "팀 에디션", + "about.teamEditiont1": "엔터프라이즈 에디션", + "api.channel.add_guest.added": "{addedUsername}님이 {username}님을 통해 채널에 게스트로 추가되었습니다.", + "api.channel.add_member.added": "{username}님이 {addedUsername}님을 채널에 초대했습니다.", + "api.channel.guest_join_channel.post_and_forget": "{username}님이 게스트로 채널에 참여했습니다.", + "apps.error": "오류: {error}", + "apps.error.command.field_missing": "필수 항목 누락: `{fieldName}`.", + "apps.error.command.same_channel": "`{fieldName}` 항목에서 채널이 반복 지정되었습니다: `{option}`.", + "apps.error.command.same_option": "`{fieldName}` 항목에서 옵션이 반복 지정되었습니다: `{option}`.", + "apps.error.command.same_user": "`{fieldName}` 항목에서 사용자가 반복 지정되었습니다: `{option}`.", + "apps.error.command.unknown_channel": "`{fieldName}` 항목에 대한 알 수 없는 채널이 지정되었습니다: `{option}`.", + "apps.error.command.unknown_option": "`{fieldName}` 항목에 알 수 없는 옵션이 지정되었습니다: `{option}`.", + "apps.error.command.unknown_user": "`{fieldName}` 항목에 알 수 없는 사용자가 지정되었습니다: `{option}`.", + "apps.error.form.no_form": "`form`이 정의되어 있지 않습니다.", + "apps.error.form.no_lookup": "`lookup` 이 정의되어 있지 않습니다.", + "apps.error.form.no_source": "`source` 가 정의되어 있지 않습니다.", + "apps.error.form.no_submit": "`submit`이 정의되어 있지 않습니다", + "apps.error.form.refresh": "선택한 항목을 가져오는 동안 오류가 발생했습니다. 앱 개발자에게 문의하세요. 세부정보: {details}", + "apps.error.form.refresh_no_refresh": "새로고침이 불가능한 항목에 대해 새로고침을 실행합니다.", + "apps.error.form.submit.pretext": "모달을 제출하는 중에 오류가 발생했습니다. 앱 개발자에게 문의하세요. 세부정보: {details}", + "apps.error.lookup.error_preparing_request": "조회 요청을 준비하는 중 오류가 발생했습니다: {errorMessage}", + "apps.error.malformed_binding": "바인딩이 제대로 형성되지 않았습니다. 앱 개발자에게 문의하십시오.", + "apps.error.parser": "파싱 오류: {error}", + "apps.error.parser.execute_non_leaf": "하위 명령을 선택해야 합니다.", + "apps.error.parser.missing_binding": "연결된 명령을 찾을 수 없습니다.", + "apps.error.parser.missing_field_value": "항목 값이 누락되었습니다.", + "apps.error.parser.missing_list_end": "목록을 닫는 토큰이 필요합니다.", + "apps.error.parser.missing_quote": "큰따옴표(\")로 인용 처리가 필요합니다.", + "apps.error.parser.missing_source": "양식이 제출되지 않았거나 원본이 없습니다.", + "apps.error.parser.missing_submit": "바인딩 또는 양식에 제출 호출이 없습니다.", + "apps.error.parser.missing_tick": "역따옴표(`)로 인용 처리가 필요합니다.", + "apps.error.parser.multiple_equal": "`=` 기호는 여러 개 사용할 수 없습니다.", + "apps.error.parser.no_argument_pos_x": "인수를 식별할 수 없습니다.", + "apps.error.parser.no_bindings": "명령 바인딩이 없습니다.", + "apps.error.parser.no_form": "양식을 찾을 수 없습니다.", + "apps.error.parser.no_match": "`{command}`: 이 작업 공간에서 일치하는 명령어를 찾을 수 없습니다.", + "apps.error.parser.no_slash_start": "명령어는 슬래시 기호(`/`)로 시작해야 합니다.", + "apps.error.parser.unexpected_character": "예기치 않은 문자.", + "apps.error.parser.unexpected_comma": "예기치 않은 쉼표(,)입니다.", + "apps.error.parser.unexpected_error": "예기치 않은 오류입니다.", + "apps.error.parser.unexpected_flag": "명령어에서`{flagName}`플래그를 허용하지 않습니다.", + "apps.error.parser.unexpected_squared_bracket": "예기치 않은 목록이 열립니다.", + "apps.error.parser.unexpected_state": "연결할 수 없음: matchBinding에서 예기치 않은 상태: `{state}`.", + "apps.error.parser.unexpected_whitespace": "연결할 수 없음: 예기치 않은 공백입니다.", + "apps.error.responses.navigate.no_url": "응답 유형은 `navigate`이지만, URL이 포함되지 않았습니다.", + "apps.error.responses.unexpected_error": "예기치 않은 오류를 수신했습니다.", + "apps.error.responses.unknown_field_error": "알 수 없는 항목 오류를 수신했습니다. 항목 이름: `{field}`. 오류: `{error}`.", + "apps.error.responses.unknown_type": "지원되지 않는 앱 응답 유형입니다. 응답 유형: {type}.", + "apps.error.unknown": "알 수 없는 오류가 발생했습니다.", + "apps.suggestion.dynamic.error": "동적 선택 오류", + "apps.suggestion.errors.parser_error": "파싱 오류", + "apps.suggestion.no_dynamic": "동적 제안에 대해 반환된 데이터가 없습니다", + "apps.suggestion.no_static": "일치하는 옵션이 없습니다.", + "apps.suggestion.no_suggestion": "일치하는 제안이 없습니다.", + "archivedChannelMessage": "**보존 처리 된 채널**을 보고 있습니다. 새 메시지를 게시할 수 없습니다.", + "camera_type.photo.option": "사진 캡처", + "camera_type.title": "작업 선택", + "camera_type.video.option": "영상 녹화", + "center_panel.archived.closeChannel": "채널 닫기", + "channel_info.header": "헤더:", + "channel_loader.someone": "누군가", + "channel_modal.descriptionHelp": "이 채널이 어떤 목적으로 사용되는지 설명해주세요.", + "channel_modal.header": "헤더", + "channel_modal.name": "이름", + "channel_modal.optional": "(선택 사항)", + "channel_modal.purpose": "설명", + "combined_system_message.added_to_channel.many_expanded": "{users}님과 {lastUser}님이 {actor}님에 의해 **채널에 추가되었습니다**.", + "combined_system_message.added_to_channel.one": "{firstUser}님이 {actor}님에 의해 **채널에 추가되었습니다**.", + "combined_system_message.added_to_channel.one_you": "{actor}님이 당신을 **채널에 추가하였습니다**.", + "combined_system_message.added_to_channel.two": "{actor}님이 {firstUser}님과 {secondUser}님을 **채널에 추가하였습니다**.", + "combined_system_message.added_to_team.many_expanded": "{actor}님이 {users}님과 {lastUser}님을 **팀에 추가하였습니다**.", + "combined_system_message.added_to_team.one": "{actor}님이 {firstUser}님을 **팀에 추가하였습니다**.", + "combined_system_message.added_to_team.one_you": "{actor}님이 당신을 **팀에 추가하였습니다**.", + "combined_system_message.added_to_team.two": "{actor}님이 {firstUser}님과 {secondUser}님을 **팀에 추가하였습니다**.", + "combined_system_message.joined_channel.many_expanded": "{users}님과 {lastUser}님이 **채널에 들어왔습니다**.", + "combined_system_message.joined_channel.one": "{firstUser}님이 **채널에 들어왔습니다**.", + "combined_system_message.joined_channel.one_you": "**채널에 들어왔습니다**.", + "combined_system_message.joined_channel.two": "{firstUser}님과 {secondUser}님이 **채널에 들어왔습니다**.", + "combined_system_message.joined_team.many_expanded": "{users}님과 {lastUser}님이 **팀에 들어왔습니다**.", + "combined_system_message.joined_team.one": "{firstUser}님이 **팀에 들어왔습니다**.", + "combined_system_message.joined_team.one_you": "**팀에 들어왔습니다**.", + "combined_system_message.joined_team.two": "{firstUser}님과 {secondUser}님이 **팀에 들어왔습니다**.", + "combined_system_message.left_channel.many_expanded": "{users}님과 {lastUser}님이 **채널에서 나갔습니다**.", + "combined_system_message.left_channel.one": "{firstUser}님이 **채널에서 나갔습니다**.", + "combined_system_message.left_channel.one_you": "**채널에서 나갔습니다**.", + "combined_system_message.left_channel.two": "{firstUser}님과 {secondUser}님이 **채널에서 나갔습니다**.", + "combined_system_message.left_team.many_expanded": "{users}님과 {lastUser}님이 **팀에서 나갔습니다**.", + "combined_system_message.left_team.one": "{firstUser}님이 **팀에서 나갔습니다**.", + "combined_system_message.left_team.one_you": "**팀에서 나갔습니다**.", + "combined_system_message.left_team.two": "{firstUser}님과 {secondUser}님이 **팀에서 나갔습니다**.", + "combined_system_message.removed_from_channel.many_expanded": "{users}님과 {lastUser}님이 **채널에서 제외되었습니다**.", + "combined_system_message.removed_from_channel.one": "{firstUser}님이 **채널에서 제외되었습니다**.", + "combined_system_message.removed_from_channel.one_you": "당신은 **채널에서 제외되었습니다.**.", + "combined_system_message.removed_from_channel.two": "{firstUser}님과 {secondUser}님이 **채널에서 제외되었습니다**.", + "combined_system_message.removed_from_team.many_expanded": "{users}님과 {lastUser}님이 **팀에서 제외되었습니다**.", + "combined_system_message.removed_from_team.one": "{firstUser}님이 **팀에서 제외되었습니다**.", + "combined_system_message.removed_from_team.one_you": "당신은 **팀에서 제외되었습니다**.", + "combined_system_message.removed_from_team.two": "{firstUser}님과 {secondUser}님이 **팀에서 제외되었습니다**.", + "combined_system_message.you": "당신", + "create_post.deactivated": "비활성화된 사용자와 함께 보관된 채널을 보고 계십니다.", + "create_post.write": "{channelDisplayName}에 글쓰기", + "custom_status.expiry_dropdown.custom": "사용자 정의", + "custom_status.expiry_dropdown.date_and_time": "날짜 및 시간", + "custom_status.expiry_dropdown.dont_clear": "삭제 금지", + "custom_status.expiry_dropdown.four_hours": "4 시간", + "custom_status.expiry_dropdown.one_hour": "1 시간", + "custom_status.expiry_dropdown.thirty_minutes": "30 분", + "custom_status.expiry_dropdown.this_week": "이번 주", + "custom_status.expiry_dropdown.today": "오늘", + "custom_status.expiry_time.today": "오늘", + "custom_status.expiry_time.tomorrow": "내일", + "custom_status.expiry.at": "에", + "custom_status.expiry.until": "까지", + "custom_status.failure_message": "상태를 갱신하지 못했습니다. 다시 시도하세요", + "custom_status.suggestions.in_a_meeting": "회의 중", + "custom_status.suggestions.on_a_vacation": "휴가 중", + "custom_status.suggestions.out_for_lunch": "점심 식사", + "custom_status.suggestions.out_sick": "병가", + "custom_status.suggestions.working_from_home": "재택 근무", + "date_separator.today": "오늘", + "date_separator.yesterday": "어제", + "edit_post.editPost": "글 편집하기...", + "edit_post.save": "저장", + "emoji_picker.activities": "활동", + "emoji_picker.animals-nature": "동물과 자연", + "emoji_picker.custom": "사용자 정의", + "emoji_picker.flags": "플래그", + "emoji_picker.food-drink": "음식 & 음료", + "emoji_picker.objects": "물건", + "emoji_picker.people-body": "사람 & 몸", + "emoji_picker.searchResults": "검색 결과", + "emoji_picker.smileys-emotion": "이모티콘 & 표정", + "emoji_picker.symbols": "심볼", + "emoji_picker.travel-places": "여행 & 장소", + "emoji_skin.dark_skin_tone": "어두운 피부색", + "emoji_skin.default": "기본 피부색", + "emoji_skin.light_skin_tone": "밝은 피부색", + "emoji_skin.medium_dark_skin_tone": "중간 정도의 어두운 피부색", + "emoji_skin.medium_light_skin_tone": "중간 정도의 밝은 피부색", + "emoji_skin.medium_skin_tone": "중간 피부색", + "file_upload.fileAbove": "파일들은 {max}개보다 작아야 합니다", + "friendly_date.daysAgo": "{count} {count, plural, one {일} other {일}} 전", + "friendly_date.hoursAgo": "{count} {count, plural, one {시간} other {시간}} 전", + "friendly_date.minsAgo": "{count} {count, plural, one {분} other {분}} 전", + "friendly_date.monthsAgo": "{count} {count, plural, one {달} other {달}} 전", + "friendly_date.now": "지금", + "friendly_date.yearsAgo": "{count} {count, plural, one {년} other {년}} 전", + "friendly_date.yesterday": "어제", + "gallery.footer.channel_name": "{channelName}에서 공유", + "gallery.open_file": "파일 열기", + "get_post_link_modal.title": "링크 복사", + "global_threads.allThreads": "모든 글타래", + "global_threads.emptyThreads.message": "언급되거나 참여한 모든 글타래는 여기에 지켜보는 중인 글타래와 함께 표시됩니다.", + "global_threads.emptyThreads.title": "아직 지켜보는 중인 글타래가 없습니다", + "global_threads.emptyUnreads.message": "볼 건 다 본 것 같네요.", + "global_threads.emptyUnreads.title": "읽지 않은 글타래 없음", + "global_threads.markAllRead.cancel": "취소", + "global_threads.markAllRead.markRead": "읽음으로 표시", + "global_threads.markAllRead.message": "여기에 표시된 모든 글타래를 읽음으로 표시", + "global_threads.markAllRead.title": "모든 글타래를 읽음으로 표시하시겠어요?", + "global_threads.options.mark_as_read": "읽음 표시", + "global_threads.options.open_in_channel": "채널에서 열기", + "global_threads.unreads": "읽지않음", + "last_users_message.added_to_channel.type": "{actor}님을 통해 **채널에 추가되었습니다**.", + "last_users_message.added_to_team.type": "{actor}님이 **팀에 추가했습니다**.", + "last_users_message.first": "{firstUser}님과 ", + "last_users_message.joined_channel.type": "**채널에 들어왔습니다**.", + "last_users_message.joined_team.type": "**팀에 들어왔습니다**.", + "last_users_message.left_channel.type": "**채널에서 나갔습니다**.", + "last_users_message.left_team.type": "**팀에서 나갔습니다**.", + "last_users_message.others": "{numOthers} 명이 ", + "last_users_message.removed_from_channel.type": "**채널에서 삭제되었습니다**.", + "last_users_message.removed_from_team.type": "**팀에서 삭제되었습니다**.", + "login_mfa.tokenReq": "MFA 토큰을 입력하세요", + "login.email": "전자우편", + "login.ldapUsername": "AD/LDAP 사용자명", + "login.or": "또는", + "login.password": "패스워드", + "login.username": "사용자 이름", + "mobile.about.appVersion": "애플리케이션 버전: {version} (빌드 {number})", + "mobile.account.settings.save": "저장", + "mobile.action_menu.select": "옵션을 선택하세요", + "mobile.android.back_handler_exit": "종료하려면 뒤로 가기를 다시 눌러주세요", + "mobile.android.photos_permission_denied_title": "{applicationName} 앱이 이 장치의 사진에 접근하려고 합니다", + "mobile.camera_photo_permission_denied_title": "{applicationName} 앱이 이 장치의 카메라에 접근하려고 합니다", + "mobile.channel_info.alertNo": "아니요", + "mobile.channel_info.alertYes": "네", + "mobile.commands.error_title": "명령 실행 오류", + "mobile.components.select_server_view.connect": "연결", + "mobile.components.select_server_view.enterServerUrl": "서버 URL 입력", + "mobile.components.select_server_view.proceed": "진행", + "mobile.create_channel": "생성", + "mobile.custom_status.choose_emoji": "이모지 선택", + "mobile.custom_status.clear_after": "이후에 지우기", + "mobile.custom_status.modal_confirm": "완료", + "mobile.display_settings.theme": "테마", + "mobile.document_preview.failed_description": "문서를 여는 동안 오류가 발생했습니다. {fileType} 뷰어가 설치되어 있는지 확인하고 다시 시도해주세요.\n", + "mobile.document_preview.failed_title": "문서 열기 실패", + "mobile.downloader.disabled_description": "이 서버에서는 파일 다운로드가 비활성화되어 있습니다. 자세한 내용은 시스템 관리자에게 문의하세요\n", + "mobile.downloader.disabled_title": "다운로드 비활성화됨", + "mobile.downloader.failed_description": "파일은 다운로드하는 동안 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해주세요.\n", + "mobile.downloader.failed_title": "다운로드 실패", + "mobile.edit_channel": "저장", + "mobile.edit_post.title": "메시지 편집", + "mobile.error_handler.button": "재실행", + "mobile.error_handler.description": "\n재실행을 클릭하여 앱을 다시 엽니다. 다시 시작한 후 설정 메뉴에서 문제를 보고할 수 있습니다.\n", + "mobile.error_handler.title": "예기치 않은 오류가 발생했습니다", + "mobile.file_upload.disabled2": "모바일에서 파일 업로드는 비활성화되어 있습니다.", + "mobile.file_upload.max_warning": "파일 업로드는 최대 {count}개로 제한됩니다.", + "mobile.files_paste.error_description": "파일을 붙여넣는 동안 오류가 발생했습니다. 다시 시도해주세요.", + "mobile.files_paste.error_dismiss": "닫기", + "mobile.files_paste.error_title": "붙여넣기 실패", + "mobile.gallery.title": "{total}개 중 {index}번째", + "mobile.ios.photos_permission_denied_title": "{applicationName} 앱이 이 장치의 사진에 접근하려고 합니다", + "mobile.link.error.text": "링크를 열 수 없습니다.", + "mobile.link.error.title": "오류", + "mobile.managed.blocked_by": "{vendor}에 의해 차단됨", + "mobile.managed.exit": "종료", + "mobile.managed.jailbreak": "탈옥된 기기는 {vendor}에서 신뢰하지 않습니다. 앱을 종료해주세요.", + "mobile.managed.not_secured.android": "Mattermost를 사용하려면 이 장치를 화면 잠금으로 보호해야 합니다.", + "mobile.managed.not_secured.ios": "Matttermost를 사용하려면 이 장치를 암호로 보호해야 합니다.\n\n설정 > Face ID 및 암호.", + "mobile.managed.not_secured.ios.touchId": "Matttermost를 사용하려면 이 장치를 암호로 보호해야 합니다.\n\n설정 > Touch ID 및 암호.", + "mobile.managed.secured_by": "{vendor}에 의해 보호됨", + "mobile.managed.settings": "설정으로 이동", + "mobile.markdown.code.copy_code": "코드 복사", + "mobile.markdown.code.plusMoreLines": "+{count, number} more {count, plural, one {line} other {lines}}", + "mobile.markdown.image.too_large": "Image exceeds max dimensions of {maxWidth} by {maxHeight}:", + "mobile.markdown.link.copy_url": "URL 복사", + "mobile.mention.copy_mention": "멘션 복사", + "mobile.message_length.message": "메시지가 너무 깁니다. 현재 문자 수: {max}/{count}", + "mobile.message_length.message_split_left": "메시지가 문자 제한을 초과합니다", + "mobile.message_length.title": "메시지 길이", + "mobile.oauth.failed_to_login": "로그인 시도에 실패했습니다. 다시 시도해주세요.", + "mobile.oauth.failed_to_open_link": "링크를 열지 못했습니다. 다시 시도해주세요.", + "mobile.oauth.something_wrong": "문제가 발생했습니다", + "mobile.oauth.try_again": "다시 시도", + "mobile.open_gm.error": "그룹 메시지를 열 수 없습니다. 연결을 확인하고 다시 시도해주세요.", + "mobile.permission_denied_dismiss": "허용 안함", + "mobile.permission_denied_retry": "설정", + "mobile.post_info.add_reaction": "반응 추가", + "mobile.post_info.copy_text": "텍스트 복사", + "mobile.post_info.mark_unread": "읽지 않음으로 표시", + "mobile.post_info.pin": "채널에 고정", + "mobile.post_info.reply": "답글", + "mobile.post_info.unpin": "채널에 고정 해제하기", + "mobile.post_pre_header.pinned": "고정됨", + "mobile.post_textbox.entire_channel_here.message": "@here을 사용하여 {totalMembers, number} {totalMembers, plural, one {명} other {명}}에게 알림을 보냅니다. 진행할까요?", + "mobile.post_textbox.entire_channel_here.message.with_timezones": "@here을 사용하여 새로 다른 {timezones, number}개의 {timezones, plural, one {표준시간대} other {표준시간대}}에 있는 {totalMembers, number} {totalMembers, plural, one {명} other {명}}에게 알림을 보냅니다. 진행할까요?", + "mobile.post_textbox.entire_channel.cancel": "취소", + "mobile.post_textbox.entire_channel.confirm": "확인", + "mobile.post_textbox.entire_channel.message": "@all 또는 @channel을 사용하여 {totalMembers, number} {totalMembers, plural, one {명} other {명}}에게 알림을 보내려고 합니다. 진행할까요?", + "mobile.post_textbox.entire_channel.message.with_timezones": "@all 또는 @channel을 사용하여 서로 다른 {timezones, number}개의 {timezones, plural, one {표준시간대} other {표준시간대}}에 있는 {totalMembers, number} {totalMembers, plural, one {명} other {명}}에게 알림을 보내려고 합니다. 진행할까요?", + "mobile.post_textbox.entire_channel.title": "전체 채널에 알림 보내기 확인", + "mobile.post_textbox.groups.title": "그룹에 알림 보내기 확인", + "mobile.post_textbox.uploadFailedDesc": "일부 첨부 파일을 업로드하지 못했습니다. 메시지를 보내시겠어요?", + "mobile.post_textbox.uploadFailedTitle": "첨부 실패", + "mobile.post.cancel": "취소", + "mobile.post.delete_question": "정말 게시글을 삭제하시겠어요?", + "mobile.post.delete_title": "게시글 삭제", + "mobile.post.failed_delete": "메시지 삭제", + "mobile.post.failed_retry": "다시 시도", + "mobile.posts_view.moreMsg": "새로운 메시지가 더 있습니다", + "mobile.privacy_link": "개인정보 처리 방침", + "mobile.push_notification_reply.button": "보내기", + "mobile.push_notification_reply.placeholder": "답글을 쓰세요...", + "mobile.push_notification_reply.title": "답글", + "mobile.rename_channel.display_name_maxLength": "채널 이름은 {maxLength, number} 글자 미만이어야 합니다", + "mobile.rename_channel.display_name_minLength": "채널 이름은 {minLength, number} 글자 이상이어야 합니다", + "mobile.rename_channel.display_name_required": "채널 이름이 필요합니다", + "mobile.request.invalid_response": "서버로부터 잘못된 응답을 받았습니다.", + "mobile.reset_status.alert_cancel": "취소", + "mobile.reset_status.title_ooo": "\"부재 중\" 상태를 비활성화 하시겠어요?", + "mobile.routes.code": "{language} 코드", + "mobile.routes.code.noLanguage": "코드", + "mobile.routes.custom_status": "상태 설정하기", + "mobile.routes.table": "표", + "mobile.routes.user_profile": "프로필", + "mobile.search.jump": "최근 메시지로 이동", + "mobile.server_link.error.text": "서버에서 링크를 찾을 수 없습니다.", + "mobile.server_link.error.title": "링크 오류", + "mobile.server_link.unreachable_channel.error": "이 링크는 삭제되었거나 접근 권한이 없는 채널에 속해있습니다.", + "mobile.server_link.unreachable_team.error": "이 링크는 삭제되었거나 접근 권한이 없는 팀에 속해있습니다.", + "mobile.server_upgrade.alert_description": "이 서버 버전은 지원되지 않으며, 사용자는 충돌이나 앱의 핵심 기능을 손상시키는 심각한 버그를 일으키는 호환성 문제에 노출이 될 수 있습니다. {serverVersion} 이상의 버전으로 업그레이드해야 합니다.", + "mobile.server_upgrade.button": "확인", + "mobile.server_upgrade.dismiss": "닫기", + "mobile.server_upgrade.learn_more": "더 알아보기", + "mobile.server_upgrade.title": "서버 업그레이드 필요", + "mobile.server_url.empty": "유효한 서버 URL을 입력해주세요", + "mobile.server_url.invalid_format": "URL은 http:// 또는 https://로 시작해야 합니다", + "mobile.set_status.away": "다른 용무 중", + "mobile.set_status.dnd": "방해 금지", + "mobile.set_status.offline": "오프라인", + "mobile.set_status.online": "온라인", + "mobile.storage_permission_denied_title": "{applicationName} 앱이 이 장치의 파일에 접근하려고 합니다", + "mobile.suggestion.members": "구성원", + "mobile.system_message.channel_archived_message": "{username}님이 채널을 보관했습니다", + "mobile.system_message.channel_unarchived_message": "{username}님이 채널을 보관 해제했습니다", + "mobile.system_message.update_channel_displayname_message_and_forget.updated_from": "{username}님이 채널 표시 이름을 {oldDisplayName}에서 {newDisplayName}(으)로 변경했습니다", + "mobile.system_message.update_channel_header_message_and_forget.removed": "{username}님이 채널 헤더를 제거했습니다. (이전: {oldHeader})", + "mobile.system_message.update_channel_header_message_and_forget.updated_from": "{username}님이 채널 헤더를 {oldHeader}에서 {newHeader}(으)로 변경했습니다", + "mobile.system_message.update_channel_header_message_and_forget.updated_to": "{username}님이 채널 헤더를 {newHeader}(으)로 변경했습니다", + "mobile.system_message.update_channel_purpose_message.removed": "{username}님이 채널 설명을 제거했습니다. (이전: {oldPurpose})", + "mobile.system_message.update_channel_purpose_message.updated_from": "{username}님이 채널 설명을 {oldPurpose}에서 {newPurpose}(으)로 변경했습니다", + "mobile.system_message.update_channel_purpose_message.updated_to": "{username}님이 채널 목적을 {newPurpose}(으)로 변경했습니다", + "mobile.tos_link": "이용약관", + "mobile.unsupported_server.message": "첨부 파일, 링크 미리보기, 반응 및 포함 데이터가 올바르게 표시되지 않을 수 있습니다. 이 문제가 지속되면 Mattermost 서버를 업그레이드하기 위해 시스템 관리자에게 문의해주세요.", + "mobile.unsupported_server.ok": "확인", + "mobile.unsupported_server.title": "지원되지 않는 서버 버전", + "mobile.user_list.deactivated": "비활성화", + "modal.manual_status.auto_responder.message_": "상태를 \"{status}\"(으)로 전환하고 자동 회신을 비활성화하시겠어요?", + "modal.manual_status.auto_responder.message_away": "상태를 \"방해 금지\"로 전환하고 자동 회신을 비활성화하시겠에요?", + "modal.manual_status.auto_responder.message_dnd": "상태를 \"방해 금지\"로 전환하고 자동 회신을 비활성화하시겠어요?", + "modal.manual_status.auto_responder.message_offline": "상태를 \"방해 금지\"로 전환하고 자동 회신을 비활성화하시겠어요?", + "modal.manual_status.auto_responder.message_online": "상태를 \"방해 금지\"로 전환하고 자동 회신을 비활성화하시겠어요?", + "msg_typing.areTyping": "{users}, {last}님이 입력 중입니다...", + "msg_typing.isTyping": "{user}님이 입력 중입니다...", + "password_send.description": "비밀번호 재설정을 위해 등록한 전자우편 주소를 입력하세요", + "password_send.error": "유효한 전자우편 주소를 입력하세요.", + "password_send.link": "계정이 있는 경우, 비밀번호 재설정 전자우편이 다음 주소로 전송됩니다:", + "permalink.show_dialog_warn.cancel": "취소", + "permalink.show_dialog_warn.join": "참여", + "permalink.show_dialog_warn.title": "비공개 채널에 참여하기", + "post_body.check_for_out_of_channel_groups_mentions.message": "이 채널에 없기 때문에 이 멘션으로 알림을 받지 못했습니다. 또한 이 채널에 연결된 그룹의 구성원이 아닙니다.", + "post_body.check_for_out_of_channel_mentions.link.and": " 그리고 ", + "post_body.check_for_out_of_channel_mentions.link.private": "비공개 채널에 사용자 초대하기", + "post_body.check_for_out_of_channel_mentions.link.public": "이 채널에 추가하기", + "post_body.check_for_out_of_channel_mentions.message_last": "? 모든 메시지 기록에 접근할 수 있습니다.", + "post_body.check_for_out_of_channel_mentions.message.multiple": "멘션되었지만 채널에 없습니다. ", + "post_body.check_for_out_of_channel_mentions.message.one": "멘션되었지만 채널에 없습니다. ", + "post_body.commentedOn": "{name}{apostrophe}님의 메시지에 대한 답글: ", + "post_body.deleted": "(삭제된 메시지)", + "post_info.del": "삭제", + "post_info.edit": "편집", + "post_info.system": "시스템", + "post_message_view.edited": "(수정됨)", + "posts_view.newMsg": "새로운 메시지", + "search_bar.search": "검색", + "status_dropdown.set_away": "다른 용무 중", + "status_dropdown.set_dnd": "방해 금지", + "status_dropdown.set_offline": "오프라인", + "status_dropdown.set_online": "온라인", + "suggestion.mention.all": "모든 채널 구성원들에게 알림을 보냅니다", + "suggestion.mention.channel": "모든 채널 구성원들에게 알림을 보냅니다", + "suggestion.mention.channels": "내 채널", + "suggestion.mention.groups": "그룹 멘션", + "suggestion.mention.here": "이 채널의 온라인 상태인 모든 구성원들에게 알림을 보냅니다", + "suggestion.mention.members": "채널 구성원", + "suggestion.mention.morechannels": "기타 채널", + "suggestion.mention.nonmembers": "채널에 없음", + "suggestion.mention.special": "특별 멘션", + "suggestion.mention.you": " (당신)", + "suggestion.search.direct": "개인 메시지", + "suggestion.search.private": "비공개 채널", + "suggestion.search.public": "공개 채널", + "threads": "글타래", + "threads.deleted": "원본 메세지가 삭제되었습니다", + "threads.follow": "지켜보기", + "threads.following": "지켜보는 중", + "threads.followMessage": "메시지 지켜보기", + "threads.followThread": "글타래 지켜보기", + "threads.newReplies": "{count}개의 새 {count, plural, one {답장} other {답장}}", + "threads.replies": "{count}개의 {count, plural, one {답장} other {답장}}", + "threads.unfollowMessage": "메세지 지켜보기 해제", + "threads.unfollowThread": "글타래 지켜보기 해제", + "user.settings.general.email": "전자우편", + "user.settings.general.firstName": "이름", + "user.settings.general.lastName": "성", + "user.settings.general.nickname": "별명", + "user.settings.general.position": "직책", + "user.settings.general.username": "사용자 이름" +} diff --git a/assets/base/i18n/nl.json b/assets/base/i18n/nl.json index 7dcea0fa5..71a2886e2 100644 --- a/assets/base/i18n/nl.json +++ b/assets/base/i18n/nl.json @@ -239,8 +239,6 @@ "mobile.message_length.message": "Je huidige bericht is te lang. Huidige aantal tekens: {count}/{max}", "mobile.message_length.message_split_left": "Bericht overschrijdt het maximum aantal karakters", "mobile.message_length.title": "Berichtlengte", - "mobile.microphone_permission_denied_description": "Om deel te nemen aan dit gesprek, open je Instellingen om Mattermost toegang te geven tot jouw microfoon.", - "mobile.microphone_permission_denied_title": "{applicationName} wil graag toegang tot jouw microfoon", "mobile.oauth.failed_to_login": "Jouw aanmeldingspoging is mislukt. Probeer het opnieuw.", "mobile.oauth.failed_to_open_link": "De link is niet geopend. Probeer het opnieuw.", "mobile.oauth.something_wrong": "Er ging iets mis", @@ -338,7 +336,7 @@ "post_body.check_for_out_of_channel_mentions.message_last": "? Ze zullen toegang hebben tot de volledige berichtgeschiedenis.", "post_body.check_for_out_of_channel_mentions.message.multiple": "niet door deze vermelding op de hoogte zijn gebracht omdat ze niet in het kanaal aanwezig zijn. Wil je ", "post_body.check_for_out_of_channel_mentions.message.one": "niet door deze vermelding op de hoogte zijn gebracht omdat ze niet in het kanaal aanwezig zijn. Wil je ", - "post_body.commentedOn": "Gaf commentaaar op het bericht van {name}{apostrophe}: ", + "post_body.commentedOn": "Gaf commentaar op het bericht van {name}{apostrophe}: ", "post_body.deleted": "(bericht verwijderd)", "post_info.del": "Verwijderen", "post_info.edit": "Bewerken", @@ -443,7 +441,6 @@ "mobile.calls_lasted": "Duurde {duration}", "mobile.calls_join_call": "Deelnemen aan oproep", "mobile.calls_error_title": "Fout", - "mobile.calls_error_permissions": "Geen machtiging om microfoon te gebruiken, kan het gesprek niet starten", "mobile.calls_error_message": "Fout: {error}", "mobile.calls_ended_at": "Beëindigd op", "mobile.calls_end_permission_title": "Fout", @@ -635,5 +632,212 @@ "mobile.login_options.heading": "Aanmelden op jouw account", "mobile.login_options.google": "Google", "mobile.login_options.gitlab": "Gitlab", - "mobile.login_options.enter_credentials": "Vul hieronder jouw aanmeldgegevens in." + "mobile.login_options.enter_credentials": "Vul hieronder jouw aanmeldgegevens in.", + "notification_settings.mentions.keywords": "Trefwoorden", + "notification_settings.mentions.channelWide": "Kanaalbrede vermeldingen", + "notification_settings.mentions..keywordsDescription": "Andere woorden die een vermelding activeren", + "notification_settings.mentions_replies": "Vermeldingen en antwoorden", + "notification_settings.mentions": "@Vermeldingen", + "notification_settings.mention.reply": "Antwoordmeldingen versturen voor", + "notification_settings.email.send": "E-mailmeldingen versturen", + "notification_settings.email.never": "Nooit", + "notification_settings.email.immediately": "Onmiddellijk", + "notification_settings.email.fifteenMinutes": "Elke 15 minuten", + "notification_settings.email.everyHour": "Elk uur", + "notification_settings.email.emailInfo": "E-mailmeldingen worden verzonden voor vermeldingen en rechtstreekse berichten als je bent offline bent of weg voor meer dan 5 minuten.", + "notification_settings.email.emailHelp2": "E-mail is uitgeschakeld door de systeembeheerder. Geen e-mails rond meldingen worden verzonden totdat deze optie is ingeschakeld.", + "notification_settings.email.crt.send": "Meldingen bij reacties op draadjes", + "notification_settings.email.crt.emailInfo": "Indien ingeschakeld, zal elk antwoord op een draadje dat je volgt een e-mailnotificatie sturen", + "notification_settings.email": "E-mailmeldingen", + "notification_settings.auto_responder.to.enable": "Automatische antwoorden inschakelen", + "notification_settings.auto_responder.footer.message": "Stel een aangepast bericht in dat automatisch wordt verzonden in antwoord op privé-berichten, zoals een antwoord wegens afwezigheid of vakantie. Als u deze instelling inschakelt, verandert jouw status in Out of Office en worden meldingen uitgeschakeld.", + "notification_settings.auto_responder.default_message": "Hallo, ik ben niet op kantoor en kan niet reageren op berichten.", + "notification_settings.auto_responder": "Automatisch antwoorden", + "more_messages.text": "{count} nieuw {count, plural, one {bericht} other {berichten}}", + "mobile.write_storage_permission_denied_description": "Sla bestanden op jouw apparaat op. Open Instellingen om {applicationName} schrijftoegang te verlenen tot bestanden op dit apparaat.", + "mobile.storage_permission_denied_description": "Upload bestanden naar jouw server. Open Instellingen om {applicationName} Lees- en Schrijftoegang te verlenen tot bestanden op dit apparaat.", + "mobile.session_expired.title": "Sessie verlopen", + "mobile.session_expired": "Log in om meldingen te blijven ontvangen. Sessies voor {siteName} zijn geconfigureerd om elke {daysCount, number} {daysCount, plural, one {dag} other {dagen}} te verlopen.", + "mobile.server_url.deeplink.emm.denied": "Deze app wordt gecontroleerd door een EMM en de DeepLink server-url komt niet overeen met de door de EMM toegestane server", + "mobile.server_upgrade.description": "\nEen server upgrade is vereist om de Mattermost app te gebruiken. Vraag jouw systeembeheerder voor details.\n", + "mobile.server_requires_client_certificate": "Server heeft client-certificaat nodig voor authenticatie.", + "mobile.server_ping_failed": "Kan geen verbinding maken met de server.", + "mobile.server_name.exists": "Je gebruikt deze naam voor een andere server.", + "mobile.server_link.unreachable_user.error": "We kunnen je niet doorverwijzen naar het prive-bericht. De opgegeven gebruiker is onbekend.", + "mobile.server_identifier.exists": "Je bent reeds verbonden met deze server.", + "mobile.search.team.select": "Selecteer een team om te zoeken", + "mobile.search.show_more": "Meer weergeven", + "mobile.search.show_less": "Minder weergeven", + "mobile.search.modifier.phrases": "berichten met woordcombinaties", + "mobile.search.modifier.in": "een specifiek kanaal", + "mobile.search.modifier.from": "een specifieke gebruiker", + "mobile.search.modifier.exclude": "zoektermen uitsluiten", + "mobile.screen.your_profile": "Jouw profiel", + "mobile.screen.settings": "Instellingen", + "mobile.reset_status.alert_ok": "OK", + "mobile.request.invalid_request_method": "Ongeldige verzoeksmethode", + "your.servers": "Jouw servers", + "video.failed_title": "Afspelen van video is mislukt", + "video.failed_description": "Er is een fout opgetreden tijdens het proberen van het afspelen van de video.\n", + "video.download": "Video downloaden", + "user.tutorial.long_press": "Druk lang op een item om het profiel van een gebruiker te bekijken", + "user.settings.notifications.email_threads.description": "Verwittig mij over alle reacties op draadjes die ik volg", + "user.settings.general.field_handled_externally": "Sommige onderstaande velden worden afgehandeld via jouw aanmeldingsprovider. Als je ze wil wijzigen, moet je dat doen via jouw aanmeldingsprovider.", + "user.edit_profile.email.web_client": "E-mail moet worden bijgewerkt met behulp van een webclient of desktoptoepassing.", + "user.edit_profile.email.auth_service": "Inloggen gebeurt via {service}. E-mail kan niet worden bijgewerkt. Het voor meldingen gebruikte e-mailadres is {email}.", + "user_profile.custom_status": "Aangepaste status", + "unreads.empty.title": "Geen verdere ongelezen berichten", + "unreads.empty.show_all": "Alles tonen", + "unreads.empty.paragraph": "Schakel de ongelezen filter uit om al je kanalen te tonen.", + "threads.end_of_list.title": "Dit is het einde van de lijst!", + "threads.end_of_list.subtitle": "Als je op zoek bent naar oudere gesprekken, probeer dan te zoeken op", + "thread.repliesCount": "{repliesCount, number} {repliesCount, plural, one {antwoord} other {antwoorden}}", + "thread.options.title": "Acties voor draadjes", + "thread.noReplies": "Nog geen antwoorden", + "thread.header.thread_in": "in {channelName}", + "thread.header.thread": "Draadje", + "team_list.no_other_teams.title": "Geen extra teams om bij aan te sluiten", + "team_list.no_other_teams.description": "Om lid te worden van een ander team, vraag een Teambeheerder om een uitnodiging, of maak je eigen team.", + "status_dropdown.set_ooo": "Out of Office", + "snack.bar.unmute.channel": "Dit kanaal was niet langer gedempt", + "snack.bar.unfavorite.channel": "Dit kanaal was niet langer gemarkeerd als favoriet", + "snack.bar.undo": "Ongedaan maken", + "snack.bar.mute.channel": "Dit kanaal was gedempt", + "snack.bar.message.copied": "Tekst gekopieerd naar klembord", + "snack.bar.link.copied": "Link gekopieerd naar klembord", + "snack.bar.favorited.channel": "Dit kanaal was gemarkeerd als favoriet", + "smobile.search.recent_title": "Recente zoekopdrachten in {teamName}", + "settings.save": "Bewaren", + "settings.notifications": "Meldingen", + "settings.notice_text": "Mattermost wordt mogelijk gemaakt door de open source software die gebruikt wordt in ons {platform} en {mobile}.", + "settings.notice_platform_link": "server", + "settings.notice_mobile_link": "mobiele apps", + "settings.link.error.title": "Fout", + "settings.link.error.text": "Fout bij het openen van de link.", + "settings.display": "Weergave", + "settings.advanced_settings": "Geavanceerde instellingen", + "settings.about.version": "App versie:", + "settings.about.serverVersionNoBuild": "{version}", + "settings.about.server.version.value": "{version} (Build {number})", + "settings.about.server.version.desc": "Serverversie:", + "settings.about.powered_by": "{site} wordt aangedreven door Mattermost", + "settings.about.licensed": "Licentie verleend aan: {company}", + "settings.about.database.schema": "Databaseschema-versie:", + "settings.about.database": "Database:", + "settings.about.copyright": "Copyright 2015-{currentYear} Mattermost, Inc. Alle rechten voorbehouden", + "settings.about.build": "{version} (Build {number})", + "settings.about": "Over {appTitle}", + "settings_display.timezone.select": "Tijdzone Selecteren", + "settings_display.timezone.off": "Uit", + "settings_display.timezone.manual": "Tijdzone wijzigen", + "settings_display.timezone.automatically": "Automatisch instellen", + "settings_display.custom_theme": "Aangepast thema", + "settings_display.clock.standard": "12-uurs klok", + "settings_display.clock.normal.desc": "Voorbeeld: 4:00 PM", + "settings_display.clock.mz.desc": "Voorbeeld: 16:00", + "settings_display.clock.mz": "24-uurs klok", + "servers.remove": "Verwijderen", + "servers.logout": "Afmelden", + "servers.login": "Aanmelden", + "servers.edit": "Bewerken", + "servers.default": "Standaardserver", + "servers.create_button": "Een server toevoegen", + "server.websocket.unreachable": "Server is onbereikbaar.", + "server.tutorial.swipe": "Veeg naar links op een server om meer acties te zien", + "server.remove.alert_title": "Weet je zeker dat je {displayName} wilt verwijderen?", + "server.remove.alert_description": "Dit zal de server verwijderen uit jouw lijst van servers. Alle bijbehorende gegevens worden verwijderd", + "server.logout.alert_title": "Weet je zeker dat je je wilt afmelden bij {displayName}?", + "server.logout.alert_description": "Alle bijbehorende gegevens worden verwijderd", + "server_list.push_proxy_unknown": "Meldingen konden niet worden ontvangen van deze server vanwege de configuratie. Log uit en log opnieuw in om het opnieuw te proberen.", + "server_list.push_proxy_error": "Meldingen kunnen niet worden ontvangen van deze server vanwege de configuratie. Neem contact op met jouw systeembeheerder.", + "select_team.title": "Selecteer een team", + "select_team.no_team.title": "Er zijn geen teams beschikbaar om lid van te worden", + "select_team.no_team.description": "Om lid te worden van een team, vraag een teambeheerder om een uitnodiging, of maak je eigen team aan. Je kunt ook je e-mail checken voor een uitnodiging.", + "select_team.description": "Je bent nog geen lid van een team. Selecteer er hieronder één om te kunnen beginnen.", + "search_bar.search.placeholder": "Tijdzone zoeken", + "screens.channel_info.dm": "Info over direct bericht", + "screens.channel_info.gm": "Info over groepsbericht", + "screens.channel_info": "Kanaalinfo", + "screens.channel_edit_header": "Kanaalhoofding bewerken", + "screens.channel_edit": "Kanaal bewerken", + "screen.search.title": "Zoeken", + "screen.search.results.filter.videos": "Video's", + "screen.search.results.filter.title": "Filteren op bestandstype", + "screen.search.results.filter.spreadsheets": "Rekenbladen", + "screen.search.results.filter.presentations": "Presentaties", + "screen.search.results.filter.images": "Afbeeldingen", + "screen.search.results.filter.documents": "Documenten", + "screen.search.results.filter.code": "Code", + "screen.search.results.filter.audio": "Audio", + "screen.search.results.filter.all_file_types": "Alle bestandstypen", + "screen.search.results.file_options.open_in_channel": "Openen in kanaal", + "screen.search.results.file_options.download": "Downloaden", + "screen.search.results.file_options.copy_link": "Link kopiëren", + "screen.search.placeholder": "Berichten en bestanden zoeken", + "screen.search.modifier.header": "Zoekopties", + "screen.search.header.messages": "Berichten", + "screen.search.header.files": "Bestanden", + "screen.saved_messages.title": "Bewaarde berichten", + "screen.saved_messages.subtitle": "Alle berichten die je hebt opgeslagen ter opvolging", + "screen.mentions.title": "Recente vermeldingen", + "screen.mentions.subtitle": "Berichten waarin je wordt genoemd in", + "saved_messages.empty.title": "Nog geen bewaarde berichten", + "saved_messages.empty.paragraph": "Om iets op te slaan voor later, druk lang op een bericht en kies Opslaan uit het menu. Opgeslagen berichten zijn alleen voor jou zichtbaar.", + "public_link_copied": "Link gekopieerd naar klembord", + "post.reactions.title": "Reacties", + "post.options.title": "Opties", + "post_priority.label.urgent": "DRINGEND", + "post_priority.label.important": "BELANGRIJK", + "post_info.guest": "Gast", + "post_info.bot": "Bot", + "post_info.auto_responder": "Automatisch antwoord", + "plus_menu.open_direct_message.title": "Open een direct bericht", + "plus_menu.create_new_channel.title": "Maak een nieuw kanaal", + "plus_menu.browse_channels.title": "Kanalen doorbladeren", + "pinned_messages.empty.title": "Nog geen vastgemaakte berichten", + "pinned_messages.empty.paragraph": "Om belangrijke berichten vast te zetten, druk je lang op een bericht en kiest je Vastmaken aan kanaal. Vastgemaakte berichten zijn zichtbaar voor iedereen in dit kanaal.", + "permalink.show_dialog_warn.description": "Je staat op het punt om lid te worden van \"{channel}\" zonder expliciet toegevoegd te zijn door de kanaalbeheerder. Weet je zeker dat je lid wil worden van dit privé-kanaal?", + "permalink.error.public_channel.title": "Lid worden van kanaal", + "permalink.error.public_channel_and_team.text": "Het bericht dat je probeert te bekijken is in een kanaal waartoe je niet behoort en een team waar je geen lid van bent. Wil je lid worden van **{channelName}** en het **{teamName}** team om het te bekijken?", + "permalink.error.public_channel.text": "Het bericht dat je probeert te bekijken is in een kanaal waartoe je niet behoort. Wil je lid worden **{channelName}** om het te bekijken?", + "permalink.error.public_channel.button": "Lid worden van kanaal", + "permalink.error.private_channel_and_team.button": "Lid worden van kanaal en team", + "permalink.error.public_channel_and_team.title": "Lid worden van kanaal en team", + "permalink.error.public_channel_and_team.button": "Lid worden van kanaal en team", + "permalink.error.private_channel.title": "Word lid van het privé-kanaal", + "permalink.error.private_channel.text": "Het bericht dat je probeert te bekijken bevindt zich in een privé-kanaal waarvoor je niet bent uitgenodigd, maar waartoe je als beheerder toegang hebt. Wil je nog steeds lid worden van **{channelName}**?", + "permalink.error.private_channel.button": "Word lid van kanaal", + "permalink.error.private_channel_and_team.title": "Word lid van privékanaal en team", + "permalink.error.private_channel_and_team.text": "Het bericht dat je probeert te bekijken staat in een privé kanaal in een team waar je geen lid van bent. Je hebt toegang als admin. Wil je lid worden van **{channelName}** en het **{teamName}** team om het te bekijken?", + "permalink.error.okay": "Oké", + "permalink.error.cancel": "Annuleren", + "permalink.error.access.title": "Bericht niet zichtbaar", + "permalink.error.access.text": "Het bericht dat je probeert te bekijken staat in een kanaal waar je geen toegang toe heeft of het bericht is verwijderd.", + "password_send.return": "Terug naar aanmelden", + "password_send.reset": "Jouw wachtwoord opnieuw instellen", + "password_send.link.title": "Reset-link verzonden", + "password_send.generic_error": "We konden je geen link voor een nieuw wachtwoord sturen. Neem contact op met jouw systeembeheerder voor hulp.", + "notification.not_team_member": "Dit bericht hoort bij een team waar je geen lid van bent.", + "notification.not_channel_member": "Dit bericht hoort tot een kanaal waar je geen lid van bent.", + "notification.message_not_found": "Bericht niet gevonden", + "notification_settings.threads_start_participate": "Draadjes die ik start of waar ik aan deelneem", + "notification_settings.threads_start": "Draadjes die ik begin", + "notification_settings.threads_mentions": "Vermeldingen in draadjes", + "notification_settings.send_notification.about": "Breng me op de hoogte van...", + "notification_settings.pushNotification.nothing": "Niets", + "notification_settings.pushNotification.mentions_only": "Vermeldingen, alleen directe berichten (standaard)", + "notification_settings.pushNotification.disabled_long": "Push-meldingen voor mobiele apparaten zijn uitgeschakeld door jouw systeembeheerder.", + "notification_settings.pushNotification.all_new_messages": "Alle nieuwe berichten", + "notification_settings.push_threads.replies": "Reacties op draadjes", + "notification_settings.push_threads.following": "Hou me op de hoogte van antwoorden op onderwerpen die ik volg in dit kanaal", + "notification_settings.mobile": "Pushberichten", + "notification_settings.push_notification": "Pushberichten", + "notification_settings.ooo_auto_responder": "Automatisch antwoorden", + "notification_settings.mobile.trigger_push": "Push-berichten activeren als...", + "notification_settings.mobile.online": "Online, afwezig of offline", + "notification_settings.mobile.offline": "Offline", + "notification_settings.mobile.away": "Afwezig of offline", + "notification_settings.mentions.sensitiveUsername": "Jouw niet-hoofdlettergevoelige gebruikersnaam", + "notification_settings.mentions.sensitiveName": "Jouw hoofdlettergevoelige voornaam", + "notification_settings.mentions.keywordsLabel": "Trefwoorden zijn niet hoofdlettergevoelig. Scheid trefwoorden met komma's." } diff --git a/assets/base/i18n/pl.json b/assets/base/i18n/pl.json index 87486b833..912367ea3 100644 --- a/assets/base/i18n/pl.json +++ b/assets/base/i18n/pl.json @@ -239,8 +239,6 @@ "mobile.message_length.message": "Twoja aktualna wiadomość jest za długa. Aktualna liczba znaków: {max}/{count}", "mobile.message_length.message_split_left": "Wiadomość przekracza limit znaków", "mobile.message_length.title": "Długość Wiadomości", - "mobile.microphone_permission_denied_description": "Aby wziąć udział w tym połączeniu, otwórz Ustawienia, aby umożliwić Mattermost dostęp do mikrofonu.", - "mobile.microphone_permission_denied_title": "{applicationName} chce uzyskać dostęp do swojego mikrofonu", "mobile.oauth.failed_to_login": "Twoja próba logowania nie powiodła się. Proszę spróbować ponownie.", "mobile.oauth.failed_to_open_link": "Nie udało się otworzyć linku. Proszę spróbować ponownie.", "mobile.oauth.something_wrong": "Coś poszło nie tak", @@ -386,5 +384,390 @@ "account.user_status.title": "Obecność użytkownika", "account.settings": "Ustawienia", "account.logout_from": "Wyloguj się z {serverName}", - "account.logout": "Wyloguj się" + "account.logout": "Wyloguj się", + "channel_modal.headerEx": "Wykorzystanie Markdown do formatowania tekstu nagłówka", + "channel_list.find_channels": "Znajdź kanały...", + "channel_list.favorites_category": "Ulubione", + "channel_list.dms_category": "Wiadomości bezpośrednie", + "channel_list.channels_category": "Kanały", + "channel_intro.createdOn": "Utworzony {date}", + "channel_intro.createdBy": "Utworzony przez {user} w dniu {date}", + "channel_info.unarchive_title": "Zdearchiwizuj {term}", + "channel_info.unarchive_failed": "Wystąpił błąd podczas próby zdearchiwizowania kanału {displayName}", + "channel_info.unarchive_description": "Jesteś pewien, że chcesz zdearchiwizować {term} {name}?", + "channel_info.unarchive": "Zdearchiwizuj Kanał", + "channel_info.set_header": "Ustaw Nagłówek", + "channel_info.send_mesasge": "Wyślij wiadomość", + "channel_info.send_a_mesasge": "Wyślij wiadomość", + "channel_info.public_channel": "Kanał Publiczny", + "channel_info.private_channel": "Kanał Prywatny", + "channel_info.position": "Stanowisko", + "channel_info.pinned_messages": "Przypięte Wiadomości", + "channel_info.notification.none": "Nigdy", + "channel_info.notification.mention": "Wzmianki", + "browse_channels.title": "Przeglądaj kanały", + "browse_channels.showSharedChannels": "Pokaż: Kanały Udostępnione", + "browse_channels.showPublicChannels": "Pokaż: Publiczne Kanały", + "browse_channels.showArchivedChannels": "Pokaż: Zarchiwizowane Kanały", + "browse_channels.sharedChannels": "Kanały Udostępnione", + "browse_channels.publicChannels": "Kanały Publiczne", + "browse_channels.noMore": "Nie ma więcej kanałów do dołączenia", + "browse_channels.dropdownTitle": "Pokaż", + "browse_channels.archivedChannels": "Zarchiwizowane kanały", + "autocomplete_selector.unknown_channel": "Nieznany kanał", + "apps.error.responses.unexpected_type": "Typ odpowiedzi aplikacji nie był oczekiwany. Typ odpowiedzi: {type}", + "apps.error.responses.form.no_form": "Typ odpowiedzi to `form`, ale żaden formularz nie został zawarty w odpowiedzi.", + "apps.error.parser.empty_value": "Puste wartości nie są dozwolone.", + "alert.removed_from_team.title": "Usunięty z zespołu", + "alert.removed_from_team.description": "Zostałeś usunięty z zespołu {displayName}.", + "alert.removed_from_channel.title": "Usunięty z kanału", + "alert.removed_from_channel.description": "Zostałeś usunięty z kanału {displayName}.", + "alert.push_proxy.button": "Okej", + "alert.push_proxy_unknown.title": "Powiadomienia nie mogły być odebrane z tego serwera", + "alert.push_proxy_unknown.description": "Ten serwer nie był w stanie odebrać powiadomień push z nieznanego powodu. Zostanie podjęta próba ponownego połączenia przy następnym połączeniu.", + "alert.push_proxy_error.title": "Nie można odbierać powiadomień z tego serwera", + "alert.push_proxy_error.description": "Ze względu na konfigurację dla tego serwera, powiadomienia nie mogą być odbierane w aplikacji mobilnej. Skontaktuj się z administratorem systemu, aby uzyskać więcej informacji.", + "channel_info.notification.default": "Domyślne", + "channel_info.notification.all": "Wszystko", + "channel_info.nickname": "Pseudonim", + "channel_info.muted": "Wycisz", + "channel_info.mobile_notifications": "Powiadomienia Mobilne", + "channel_info.mention": "Wzmianka", + "channel_info.members": "Użytkownicy", + "channel_info.local_time": "Czas Lokalny", + "channel_info.leave_public_channel": "Jesteś pewien, że chcesz opuścić publiczny kanał {displayName}? Zawsze możesz dołączyć ponownie.", + "channel_info.leave_private_channel": "Czy na pewno chcesz opuścić kanał prywatny {displayName}? Nie możesz ponownie dołączyć do kanału, chyba że zostaniesz ponownie zaproszony.", + "channel_info.leave_channel": "Opuść kanał", + "channel_info.leave": "Opuść", + "channel_info.ignore_mentions": "Ignoruj @channel, @here, @all", + "channel_info.favorited": "Ulubiony", + "channel_info.favorite": "Ulubiony", + "channel_info.error_close": "Zamknij", + "channel_info.edit_header": "Edytuj Nagłówek", + "channel_info.custom_status": "Stan niestandardowy:", + "channel_info.copy_link": "Kopiuj Odnośnik", + "channel_info.copied": "Skopiowane", + "channel_info.convert_private_title": "Wykonać konwersję kanału {displayName} do kanału prywatnego?", + "channel_info.convert_private_success": "{displayName} jest teraz prywatnym kanałem.", + "channel_info.convert_private_description": "Kiedy konwertujesz {displayName} na kanał prywatny, historia i członkostwo są zachowane. Publicznie udostępniane pliki pozostają dostępne dla każdego, kto posiada link. Członkostwo w kanale prywatnym odbywa się wyłącznie na podstawie zaproszenia.\n\nZmiana jest trwała i nie może zostać cofnięta.\n\nJesteś pewien, że chcesz przekonwertować {displayName} na kanał prywatny?", + "channel_info.convert_private": "Konwersja na kanał prywatny", + "channel_info.convert_failed": "Nie byliśmy w stanie przekonwertować {displayName} na kanał prywatny.", + "channel_info.close_gm_channel": "Czy na pewno chcesz zamknąć tę wiadomość grupową? To spowoduje usunięcie jej z ekranu głównego, ale zawsze możesz ją ponownie otworzyć.", + "channel_info.close_gm": "Zamknij wiadomość grupową", + "channel_info.close_dm_channel": "Czy na pewno chcesz zamknąć tą bezpośrednią wiadomość? To usunie ją z ekranu głównego, ale zawsze możesz ją ponownie otworzyć.", + "channel_info.close_dm": "Zamknij wiadomość bezpośrednią", + "channel_info.close": "Zamknij", + "channel_info.archive_title": "Archiwizuj {term}", + "channel_info.archive_failed": "Wystąpił błąd podczas próby archiwizacji kanału {displayName}", + "channel_info.archive_description": "Jesteś pewien, że chcesz zarchiwizować {term} {name}?", + "channel_info.archive": "Archiwizuj Kanał", + "channel_info.alertYes": "Tak", + "channel_info.alertNo": "Nie", + "channel_info.alert_retry": "Spróbuj Ponownie", + "channel_header.member_count": "{count, plural, one {# członek} other {# członkowie}}", + "channel_header.info": "Wyświetl informacje", + "channel_header.directchannel.you": "{displayName} (ty)", + "intro.welcome": "Witamy na kanale {displayName}.", + "intro.townsquare": "Witamy na {name}. Każdy automatycznie staje się członkiem tego kanału, gdy dołącza do zespołu.", + "intro.public_channel": "Kanał Publiczny", + "intro.private_channel": "Kanał Prywatny", + "intro.group_message": "To jest początek Twojej rozmowy z tą grupą. Wiadomości i pliki udostępniane tutaj nie są pokazywane nikomu spoza grupy.", + "intro.direct_message": "To jest początek Twojej rozmowy z {teammate}. Wiadomości i pliki udostępnione tutaj nie są pokazywane nikomu innemu.", + "intro.created_by": "stworzony przez {creator} w dniu {date}.", + "intro.channel_info": "Informacje", + "intro.add_people": "Dodaj Osoby", + "interactive_dialog.submit": "Wyślij", + "home.header.plus_menu": "Opcje", + "global_threads.options.title": "Wątek Akcji", + "general_settings.notifications": "Powiadomienia", + "general_settings.help": "Pomoc", + "general_settings.display": "Wygląd", + "general_settings.advanced_settings": "Zaawansowane Ustawienia", + "general_settings.about": "O {appTitle}", + "gallery.video_saved": "Wideo zapisane", + "gallery.unsupported": "Podgląd nie jest obsługiwany dla tego typu pliku. Spróbuj pobrać lub udostępnić plik, aby otworzyć go w innej aplikacji.", + "gallery.save_failed": "Nie można zapisać pliku", + "gallery.preparing": "Przygotowywanie...", + "gallery.opening": "Otwieranie...", + "gallery.image_saved": "Obraz Zapisany", + "gallery.downloading": "Pobieranie...", + "gallery.copy_link.failed": "Nie udało się skopiować linku do schowka", + "find_channels.title": "Znajdź Kanały", + "find_channels.open_dm": "Otwórz DM", + "find_channels.new_channel": "Nowy Kanał", + "find_channels.directory": "Katalog", + "emoji_picker.recent": "Ostatnio Używane", + "edit_server.title": "Edytuj nazwę serwera", + "edit_server.saving": "Zapisywanie", + "edit_server.save": "Zapisz", + "edit_server.display_help": "Serwer: {url}", + "edit_server.description": "Określenie nazwy wyświetlanej dla tego serwera", + "download.error": "Nie można pobrać pliku. Spróbuj ponownie później", + "display_settings.tz.manual": "Manual", + "display_settings.tz.auto": "Auto", + "display_settings.timezone": "Strefa czasowa", + "display_settings.theme": "Motyw", + "display_settings.clockDisplay": "Wyświetlanie Czasu", + "display_settings.clock.standard": "12-godzinny", + "display_settings.clock.military": "24-godzinny", + "custom_status.suggestions.title": "Propozycje", + "custom_status.suggestions.recent_title": "Ostatnie", + "custom_status.set_status": "Ustaw Status", + "create_post.thread_reply": "Odpowiedz w tym wątku...", + "create_direct_message.title": "Utwórz Wiadomość Bezpośrednią", + "channel_modal.purposeEx": "Kanał do zgłaszania błędów i poprawek", + "channel_modal.nameEx": "Bugi, Marketing", + "channel_modal.makePrivate.label": "Zamień na Prywatny", + "channel_modal.makePrivate.description": "Gdy kanał jest ustawiony jako prywatny, tylko zaproszeni członkowie zespołu mają dostęp do tego kanału i mogą w nim uczestniczyć", + "channel_modal.headerHelp": "Określ tekst, który ma się pojawić w nagłówku kanału obok jego nazwy. Na przykład, aby uwzględnić często używane łącza, wpisz tekst łącza [Link Title](http://example.com).", + "mobile.calls_end_msg_dm": "Czy na pewno chcesz zakończyć połączenie z {displayName}?", + "mobile.calls_end_msg_channel_default": "Czy na pewno chcesz zakończyć połączenie?", + "mobile.calls_end_msg_channel": "Czy na pewno chcesz zakończyć połączenie z {numParticipants} uczestnikami w {displayName}?", + "mobile.calls_end_call_title": "Zakończ połączenie", + "mobile.calls_enable": "Włącz połączenia", + "mobile.calls_disable": "Wyłącz połączenia", + "mobile.calls_current_call": "Aktualne połączenie", + "mobile.calls_chat_thread": "Wątek czatu", + "mobile.calls_call_screen": "Połączenie", + "mobile.calls_call_ended": "Połączenie zakończone", + "mobile.android.photos_permission_denied_description": "Prześlij zdjęcia na swój serwer lub zapisz je w urządzeniu. Otwórz Ustawienia, aby przyznać {applicationName} dostęp do odczytu i zapisu do biblioteki zdjęć.", + "mobile.add_team.join_team": "Dołącz do Innego Zespołu", + "mobile.add_team.create_team": "Utwórz nowy zespół", + "mentions.empty.title": "Nie ma jeszcze wzmianek", + "mentions.empty.paragraph": "Zobaczysz tutaj wiadomości, gdy ktoś wspomni o Tobie lub użyje terminów, które monitorujesz.", + "markdown.latex.error": "Błąd renderowania Latex", + "login.signingIn": "Loguje się", + "login.signIn": "Zaloguj się", + "login.invalid_credentials": "Kombinacja adresu e-mail i hasła jest nieprawidłowa", + "login.forgot": "Zapomniałeś hasła?", + "login_mfa.token": "Wprowadź token MFA", + "login_mfa.enterToken": "Aby zakończyć proces logowania, wprowadź kod z aplikacji uwierzytelniającej urządzenia mobilnego.", + "load_teams_error.title": "Nie można załadować {serverName}", + "load_teams_error.message": "Wystąpił problem z załadowaniem treści dla tego serwera.", + "load_channels_error.title": "Nie można załadować {teamDisplayName}", + "load_channels_error.message": "Wystąpił problem z załadowaniem treści dla tego zespołu.", + "load_categories_error.title": "Nie można załadować kategorii dla {serverName}", + "load_categories_error.message": "Wystąpił problem z załadowaniem treści dla tego serwera.", + "intro.welcome.public": "Dodaj jeszcze kilku członków zespołu do kanału lub rozpocznij rozmowę poniżej.", + "intro.welcome.private": "Tylko zaproszeni członkowie mogą zobaczyć wiadomości wysłane na tym prywatnym kanale.", + "mobile.edit_post.error": "Wystąpił problem z edycją tej wiadomości. Proszę spróbować ponownie.", + "mobile.edit_post.delete_title": "Potwierdź Usunięcie Wiadomości", + "mobile.edit_post.delete_question": "Czy na pewno chcesz usunąć tą wiadomość?", + "mobile.display_settings.timezone": "Strefa czasowa", + "mobile.display_settings.clockDisplay": "Wyświetlanie Czasu", + "mobile.direct_message.error": "Nie mogliśmy otworzyć DM z {displayName}.", + "mobile.custom_status.clear_after.title": "Wyczyść stan niestandardowy po", + "mobile.create_post.read_only": "Ten kanał jest tylko-do-odczytu.", + "mobile.create_direct_message.you": "@{username} - ty", + "mobile.create_direct_message.start": "Start", + "mobile.create_direct_message.one_more": "Możesz dodać jeszcze jednego użytkownika", + "mobile.create_direct_message.cannot_add_more": "Nie możesz dodać więcej użytkowników", + "mobile.create_direct_message.add_more": "Możesz dodać {remaining, number} użytkowników więcej", + "mobile.create_channel.title": "Nowy kanał", + "mobile.components.select_server_view.msg_welcome": "Witamy", + "mobile.components.select_server_view.msg_description": "Serwer jest węzłem komunikacyjnym Twojego zespołu, do którego dostęp uzyskuje się poprzez unikalny adres URL", + "mobile.components.select_server_view.msg_connect": "Połączmy się z serwerem", + "mobile.components.select_server_view.displayName": "Nazwa Wyświetlana", + "mobile.components.select_server_view.displayHelp": "Wybierz nazwę wyświetlaną dla swojego serwera", + "mobile.components.select_server_view.connecting": "Łączenie", + "mobile.channel_list.unreads": "Nieprzeczytane", + "mobile.channel_list.recent": "Ostatnie", + "mobile.camera_photo_permission_denied_description": "Zrób zdjęcia i prześlij je na swój serwer lub zapisz w swoim urządzeniu. Otwórz Ustawienia, aby przyznać {applicationName} dostęp do odczytu i zapisu do aparatu.", + "mobile.calls_you": "(ty)", + "mobile.calls_viewing_screen": "Przeglądasz ekran {name}", + "mobile.calls_unmute": "Wyłącz wyciszenie", + "mobile.calls_start_call": "Rozpocznij Połączenie", + "mobile.calls_speaker": "Mówca", + "mobile.calls_see_logs": "Zobacz logi serwera", + "mobile.calls_raise_hand": "Zgłoś się", + "mobile.calls_participant_limit_title": "Osiągnięty limit uczestników", + "mobile.calls_ok": "OK", + "mobile.calls_not_available_title": "Połączenia nie są włączone", + "mobile.calls_not_available_option": "(Niedostępne)", + "mobile.calls_not_available_msg": "Skontaktuj się z Administratorem Systemu, aby włączyć tą funkcję.", + "mobile.calls_noone_talking": "Nikt nie mówi", + "mobile.calls_name_started_call": "{name} rozpoczął połączenie", + "mobile.calls_name_is_talking": "{name} rozmawia", + "mobile.calls_mute": "Wycisz", + "mobile.calls_more": "Więcej", + "mobile.calls_lower_hand": "Dolna ręka", + "mobile.calls_limit_reached": "Osiągnięty limit uczestników", + "mobile.calls_limit_msg": "Maksymalna liczba uczestników jednego połączenia to {maxParticipants}. Skontaktuj się z administratorem systemu, aby zwiększyć ten limit.", + "mobile.calls_leave_call": "Opuść połączenie", + "mobile.calls_leave": "Opuść", + "mobile.calls_lasted": "Trwało {duration}", + "mobile.calls_join_call": "Dołącz do rozmowy", + "mobile.calls_error_title": "Błąd", + "mobile.calls_error_message": "Błąd: {error}", + "mobile.calls_ended_at": "Zakończone", + "mobile.calls_end_permission_title": "Błąd", + "mobile.calls_end_permission_msg": "Nie masz uprawnień do zakończenia połączenia. Poproś twórcę połączenia o jego zakończenie.", + "mobile.search.modifier.phrases": "wiadomości z frazami", + "mobile.search.modifier.in": "określony kanał", + "mobile.search.modifier.from": "określony użytkownik", + "mobile.search.modifier.exclude": "Wyklucz wyszukiwane hasła", + "mobile.screen.your_profile": "Twój Profil", + "mobile.screen.settings": "Ustawienia", + "mobile.reset_status.alert_ok": "OK", + "mobile.request.invalid_request_method": "Nieważna metoda żądania", + "mobile.post_pre_header.saved": "Zapisane", + "mobile.post_pre_header.pinned_saved": "Przypięte i zapisane", + "mobile.post_info.unsave": "Anuluj zapis", + "mobile.post_info.save": "Zapisz", + "mobile.participants.header": "Uczestnicy Wątku", + "mobile.oauth.switch_to_browser.title": "Przekierowanie...", + "mobile.oauth.switch_to_browser.error_title": "Błąd w podpisie", + "mobile.oauth.switch_to_browser": "Zostaniesz przekierowany do swojego dostawcy usług logowania", + "mobile.oauth.something_wrong.okButton": "OK", + "mobile.oauth.failed_to_open_link_no_browser": "Nie udało się otworzyć linku. Proszę sprawdzić, czy na urządzeniu jest zainstalowana przeglądarka.", + "mobile.no_results.spelling": "Sprawdź pisownię lub spróbuj innego wyszukiwania.", + "mobile.no_results_with_term.messages": "Nie znaleziono dopasowań dla \"{term}\"", + "mobile.no_results_with_term.files": "Brak plików pasujących do \"{term}\"", + "mobile.no_results_with_term": "Brak wyników dla \"{term}\"", + "mobile.login_options.sso_continue": "Kontynuuj z", + "mobile.login_options.separator_text": "lub zaloguj się za pomocą", + "mobile.login_options.select_option": "Wybierz poniżej opcję logowania.", + "mobile.login_options.saml": "SAML", + "mobile.login_options.openid": "Open ID", + "mobile.login_options.office365": "Office 365", + "mobile.login_options.none": "Nie możesz jeszcze zalogować się na swoje konto. Musi być skonfigurowana co najmniej jedna opcja logowania. Skontaktuj się z administratorem systemu, aby uzyskać pomoc.", + "mobile.login_options.heading": "Zaloguj się na Swoje Konto", + "mobile.login_options.google": "Google", + "mobile.login_options.gitlab": "GitLab", + "mobile.login_options.enter_credentials": "Wpisz poniżej swoje dane do logowania.", + "mobile.login_options.cant_heading": "Nie można się zalogować", + "mobile.leave_and_join_title": "Czy na pewno chcesz przełączyć się na inne połączenie?", + "mobile.leave_and_join_message": "Jesteś już w trakcie rozmowy na kanale w ~{leaveChannelName}. Czy chcesz opuścić swoje obecne połączenie i dołączyć do połączenia w ~{joinChannelName}?", + "mobile.leave_and_join_confirmation": "Odejdź i Dołącz", + "mobile.join_channel.error": "Nie mogliśmy dołączyć do kanału {displayName}.", + "mobile.ios.photos_permission_denied_description": "Prześlij zdjęcia i filmy na serwer lub zapisz je w swoim urządzeniu. Otwórz Ustawienia, aby przyznać {applicationName} dostęp do odczytu i zapisu do biblioteki zdjęć i filmów.", + "mobile.search.show_more": "Pokaż więcej", + "mobile.search.show_less": "Pokaż mniej", + "mobile.storage_permission_denied_description": "Prześlij pliki na swój serwer. Otwórz Ustawienia, aby przyznać {applicationName} dostęp do odczytu i zapisu plików na tym urządzeniu.", + "mobile.session_expired.title": "Sesja Wygasła", + "mobile.session_expired": "Zaloguj się, aby nadal otrzymywać powiadomienia. Sesje dla {siteName} są skonfigurowane tak, aby wygasały co {daysCount, number} {daysCount, plural, one {dzień} other {dni}}.", + "mobile.server_url.deeplink.emm.denied": "Ta aplikacja jest kontrolowana przez EMM, a adres url serwera DeepLink nie pasuje do dozwolonego serwera EMM", + "mobile.server_upgrade.description": "\nDo korzystania z aplikacji Mattermost wymagane jest uaktualnienie serwera. Proszę zapytać administratora systemu o szczegóły.\n", + "mobile.server_requires_client_certificate": "Serwer wymaga certyfikatu klienta do uwierzytelnienia.", + "mobile.server_ping_failed": "Nie można połączyć się z serwerem.", + "mobile.server_name.exists": "Używasz tej nazwy dla innego serwera.", + "mobile.server_link.unreachable_user.error": "Nie możemy przekierować Cię na DM. Podany użytkownik jest nieznany.", + "mobile.server_identifier.exists": "Jesteś już podłączony do tego serwera.", + "mobile.search.team.select": "Wybierz zespół do przeszukania", + "notification.not_team_member": "Ta wiadomość należy do zespołu, którego nie jesteś członkiem.", + "notification.not_channel_member": "Ta wiadomość należy do kanału, którego nie jesteś członkiem.", + "notification.message_not_found": "Nie odnaleziono wiadomości", + "notification_settings.threads_start_participate": "Wątki, które rozpocząłem lub w których uczestniczę", + "notification_settings.threads_start": "Wątki, które rozpocząłem", + "notification_settings.threads_mentions": "Wzmianki w wątkach", + "notification_settings.send_notification.about": "Powiadom mnie o...", + "notification_settings.pushNotification.nothing": "Nic", + "notification_settings.pushNotification.mentions_only": "Wzmianki, tylko bezpośrednie wiadomości (domyślnie)", + "notification_settings.pushNotification.disabled_long": "Powiadomienia push dla urządzeń mobilnych zostały wyłączone przez Administratora Systemu.", + "notification_settings.pushNotification.all_new_messages": "Wszystkie nowe wiadomości", + "notification_settings.push_threads.replies": "Odpowiedzi na wątki", + "notification_settings.push_threads.following": "Powiadom mnie o odpowiedziach na wątki, które śledzę na tym kanale", + "notification_settings.push_notification": "Powiadomienia Push", + "notification_settings.ooo_auto_responder": "Automatyczne odpowiedzi", + "notification_settings.mobile.trigger_push": "Wyzwalaj powiadomienia push, gdy...", + "notification_settings.mobile.online": "Online, zaraz wracam lub offline", + "notification_settings.mobile.offline": "Offline", + "notification_settings.mobile.away": "Zaraz wracam lub offline", + "notification_settings.mobile": "Powiadomienia Push", + "notification_settings.mentions.sensitiveUsername": "Twoja nazwa użytkownika bez rozróżniania wielkości liter", + "notification_settings.mentions.sensitiveName": "Twoje imię z rozróżnianiem wielkich i małych liter", + "notification_settings.mentions.keywordsLabel": "W słowach kluczowych nie jest rozróżniana wielkość liter. Słowa kluczowe należy oddzielać przecinkami.", + "notification_settings.mentions.keywords": "Słowa kluczowe", + "notification_settings.mentions.channelWide": "Wzmianki na kanale", + "notification_settings.mentions..keywordsDescription": "Inne słowa, które uruchamiają wzmianki", + "notification_settings.mentions_replies": "Wzmianki i Odpowiedzi", + "notification_settings.mentions": "Wzmianki", + "notification_settings.mention.reply": "Wyślij powiadomienia o odpowiedzi do", + "notification_settings.email.send": "Wysyłanie powiadomień e-mail", + "notification_settings.email.never": "Nigdy", + "notification_settings.email.immediately": "Natychmiast", + "notification_settings.email.fifteenMinutes": "Co 15 minut", + "notification_settings.email.everyHour": "Co godzinę", + "notification_settings.email.emailInfo": "Powiadomienia e-mail dla wzmianek i wiadomości, są wysyłane gry jesteś offline lub zaraz wracasz dłużej niż 5 minut.", + "notification_settings.email.emailHelp2": "Email został wyłączony przez administratora systemu. Żadne powiadomienia nie są wysyłane, dopóki nie zostanie włączony.", + "notification_settings.email.crt.send": "Powiadomienia o odpowiedziach w wątku", + "notification_settings.email.crt.emailInfo": "Po włączeniu każda odpowiedź na wątek, który obserwujesz, wyśle powiadomienie e-mail", + "notification_settings.email": "Powiadomienia Email", + "notification_settings.auto_responder.to.enable": "Włącz automatyczne odpowiedzi", + "notification_settings.auto_responder.footer.message": "Ustaw niestandardową wiadomość, która jest automatycznie wysyłana w odpowiedzi na wiadomości bezpośrednie, takie jak spoza biura lub z urlopu. Włączenie tego ustawienia powoduje zmianę statusu użytkownika na Poza biurem i wyłączy powiadomienia.", + "notification_settings.auto_responder.default_message": "Witaj, jestem niedostępny i nie mogę obecnie odpowiadać na wiadomości.", + "notification_settings.auto_responder": "Automatyczne Odpowiedzi", + "more_messages.text": "{count} {count, plural, one {nowa wiadomość} other {nowych wiadomości}}", + "mobile.write_storage_permission_denied_description": "Zapisz pliki w urządzeniu. Otwórz Ustawienia, aby przyznać {applicationName} dostęp do zapisu plików na tym urządzeniu.", + "mobile.calls_mic_error": "Aby wziąć udział, otwórz Ustawienia, aby przyznać Mattermost dostęp do swojego mikrofonu.", + "invite_people_to_team.title": "Dołącz do zespołu {team}", + "invite_people_to_team.message": "Oto link do współpracy i komunikacji z nami na Mattermost.", + "select_team.title": "Wybierz zespół", + "select_team.no_team.title": "Nie ma dostępnych zespołów, do których można dołączyć", + "select_team.no_team.description": "Aby dołączyć do zespołu, poproś administratora zespołu o zaproszenie lub utwórz własny zespół. Możesz również sprawdzić swoją skrzynkę mailową w poszukiwaniu zaproszenia.", + "select_team.description": "Nie jesteś jeszcze członkiem żadnego zespołu. Wybierz jeden z poniższych, aby rozpocząć.", + "search_bar.search.placeholder": "Wyszukaj strefę czasową", + "screens.channel_info.gm": "Informacja o wiadomości grupowej", + "screens.channel_info.dm": "Informacja o bezpośredniej wiadomości", + "screens.channel_info": "Informacje o kanale", + "screens.channel_edit_header": "Edycja nagłówka kanału", + "screens.channel_edit": "Edytuj Kanał", + "screen.search.title": "Szukaj", + "screen.search.results.filter.videos": "Wideo", + "screen.search.results.filter.title": "Filtrowanie według typu pliku", + "screen.search.results.filter.spreadsheets": "Arkusze kalkulacyjne", + "screen.search.results.filter.presentations": "Prezentacje", + "screen.search.results.filter.images": "Zdjęcia", + "screen.search.results.filter.documents": "Dokumenty", + "screen.search.results.filter.code": "Kod", + "screen.search.results.filter.audio": "Audio", + "screen.search.results.filter.all_file_types": "Wszystkie typy plików", + "screen.search.results.file_options.open_in_channel": "Otwórz na kanale", + "screen.search.results.file_options.download": "Pobierz", + "screen.search.results.file_options.copy_link": "Skopiuj link", + "screen.search.placeholder": "Wyszukiwanie wiadomości i plików", + "screen.search.modifier.header": "Opcje wyszukiwania", + "screen.search.header.messages": "Wiadomości", + "screen.search.header.files": "Pliki", + "screen.saved_messages.title": "Zapisane wiadomości", + "screen.saved_messages.subtitle": "Wszystkie wiadomości, które zostały zapisane do dalszych działań", + "screen.mentions.title": "Ostatnie Wzmianki", + "screen.mentions.subtitle": "Wiadomości, w których zostałeś wspomniany", + "saved_messages.empty.title": "Nie ma jeszcze zapisanych wiadomości", + "saved_messages.empty.paragraph": "Aby zapisać coś na później, naciśnij długo na wiadomość i wybierz z menu opcję Zapisz. Zapisane wiadomości są widoczne tylko dla Ciebie.", + "public_link_copied": "Link skopiowany do schowka", + "post.reactions.title": "Reakcje", + "post.options.title": "Opcje", + "post_priority.label.urgent": "PILNE", + "post_priority.label.important": "WAŻNE", + "post_info.guest": "Gość", + "post_info.bot": "Bot", + "post_info.auto_responder": "Automatyczna odpowiedź", + "plus_menu.open_direct_message.title": "Otwórz Wiadomość Bezpośrednią", + "plus_menu.invite_people_to_team.title": "Zapraszaj ludzi do zespołu", + "plus_menu.create_new_channel.title": "Utwórz Nowy Kanał", + "plus_menu.browse_channels.title": "Przeglądaj Kanały", + "pinned_messages.empty.title": "Nie ma jeszcze żadnych przypiętych wiadomości", + "pinned_messages.empty.paragraph": "Aby przypiąć ważne wiadomości, naciśnij długo na wiadomość i wybierz opcję Przypnij do kanału. Przypięte wiadomości będą widoczne dla wszystkich w tym kanale.", + "permalink.show_dialog_warn.description": "Zamierzasz dołączyć do {channel} bez wyraźnego dodania przez administratora kanału. Czy na pewno chcesz dołączyć do tego kanału prywatnego?", + "permalink.error.public_channel.title": "Dołącz do kanału", + "permalink.error.public_channel.text": "Wiadomość, którą próbujesz obejrzeć, znajduje się na kanale, do którego nie należysz. Czy chcesz dołączyć do **{channelName}**, aby ją obejrzeć?", + "permalink.error.public_channel.button": "Dołącz do kanału", + "permalink.error.public_channel_and_team.title": "Dołącz do kanału i zespołu", + "permalink.error.public_channel_and_team.text": "Wiadomość, którą próbujesz obejrzeć znajduje się na kanale, do którego nie należysz i w zespole, którego nie jesteś członkiem. Czy chcesz dołączyć do **{channelName}** i zespołu **{teamName}**, aby ją obejrzeć?", + "permalink.error.public_channel_and_team.button": "Dołącz do kanału i zespołu", + "permalink.error.private_channel.title": "Dołącz do kanału prywatnego", + "permalink.error.private_channel.text": "Wiadomość, którą próbujesz wyświetlić, znajduje się na prywatnym kanale, na który nie zostałeś zaproszony, ale masz do niego dostęp jako administrator. Czy nadal chcesz dołączyć do **{channelName}**?", + "permalink.error.private_channel.button": "Dołącz do kanału", + "permalink.error.private_channel_and_team.title": "Dołącz do prywatnego kanału i zespołu", + "permalink.error.private_channel_and_team.text": "Wiadomość, którą próbujesz wyświetlić, znajduje się na prywatnym kanale w zespole, którego nie jesteś członkiem. Masz dostęp jako administrator. Czy chcesz dołączyć do **{channelName}** i zespołu **{teamName}**, aby ją zobaczyć?", + "permalink.error.private_channel_and_team.button": "Dołącz do kanału i zespołu", + "permalink.error.okay": "Okej", + "permalink.error.cancel": "Anuluj", + "permalink.error.access.title": "Wiadomość nie jest widoczna", + "permalink.error.access.text": "Wiadomość, którą próbujesz wyświetlić, znajduje się na kanale, do którego nie masz dostępu lub została usunięta.", + "password_send.return": "Wróć do logowania", + "password_send.reset": "Zmień swoje hasło", + "password_send.link.title": "Link resetujący wysłany", + "password_send.generic_error": "Nie udało nam się wysłać do Ciebie linku resetującego hasło. Prosimy o kontakt z Administratorem Systemu w celu uzyskania pomocy." } diff --git a/assets/base/i18n/pt-BR.json b/assets/base/i18n/pt-BR.json index c150466e5..ab46e05d9 100644 --- a/assets/base/i18n/pt-BR.json +++ b/assets/base/i18n/pt-BR.json @@ -1,382 +1,380 @@ { - "about.date": "Data De Criação:", - "about.enterpriseEditione1": "Enterprise Edition", - "about.enterpriseEditionLearn": "Saiba mais sobre Enterprise Edition em ", - "about.enterpriseEditionSt": "Comunicação empresarial moderna atrás do seu firewall.", - "about.hash": "Hash de Compilação:", - "about.hashee": "Hash de Compilação EE:", - "about.teamEditionLearn": "Entre na comunidade Mattermost em ", - "about.teamEditionSt": "Toda comunicação da sua equipe em um só lugar, instantaneamente pesquisável e acessível em qualquer lugar.", - "about.teamEditiont0": "Team Edition", - "about.teamEditiont1": "Enterprise Edition", - "api.channel.add_guest.added": "{addedUsername} adicionado ao canal como convidado por {username}.", - "api.channel.add_member.added": "{addedUsername} foi adicionado ao canal por {username}.", - "api.channel.guest_join_channel.post_and_forget": "{username} entrou no canal como convidado.", - "apps.error": "Erro: {error}", - "apps.error.command.field_missing": "Campos obrigatórios ausentes: `{fieldName}`.", - "apps.error.command.same_channel": "Canal repetido para o campo `{fieldName}`: `{option}`.", - "apps.error.command.same_option": "Opção repetida para o campo `{fieldName}`: `{option}`.", - "apps.error.command.same_user": "Usuário repetido para o campo `{fieldName}`: `{option}`.", - "apps.error.command.unknown_channel": "Canal desconhecido para o campo `{fieldName}`: `{option}`.", - "apps.error.command.unknown_option": "Opção desconhecida para o campo `{fieldName}`: `{option}`.", - "apps.error.command.unknown_user": "Usuário desconhecido para o campo `{fieldName}`: `{opção}`.", - "apps.error.form.no_form": "`form` não está definido.", - "apps.error.form.no_lookup": "`procurar` não está definido.", - "apps.error.form.no_source": "`fonte` não está definida.", - "apps.error.form.no_submit": "`enviar ` não está definido", - "apps.error.form.refresh": "Ocorreu um erro ao buscar os campos selecionados. Entre em contato com o desenvolvedor do aplicativo. Detalhes: {details}", - "apps.error.form.refresh_no_refresh": "Atualização chamada no campo sem atualização.", - "apps.error.form.submit.pretext": "Ocorreu um erro ao enviar o modal. Entre em contato com o desenvolvedor do aplicativo. Detalhes: {details}", - "apps.error.lookup.error_preparing_request": "Erro ao preparar solicitação de pesquisa: {errorMessage}", - "apps.error.malformed_binding": "Esta ligação não está formada corretamente. Entre em contato com o desenvolvedor do aplicativo.", - "apps.error.parser": "Erro de análise: {error}", - "apps.error.parser.execute_non_leaf": "Você deve selecionar um subcomando.", - "apps.error.parser.missing_binding": "Ligações de comando ausentes.", - "apps.error.parser.missing_field_value": "Falta o valor do campo.", - "apps.error.parser.missing_list_end": "Token de fechamento de lista esperado.", - "apps.error.parser.missing_quote": "Aspas duplas correspondentes são esperadas antes do final da entrada.", - "apps.error.parser.missing_source": "O formulário não tem envio nem fonte.", - "apps.error.parser.missing_submit": "Nenhuma chamada de envio em forma ou vinculação.", - "apps.error.parser.missing_tick": "Crase correspondente é esperada antes do final de entrada.", - "apps.error.parser.multiple_equal": "Vários sinais `=` não são permitidos.", - "apps.error.parser.no_argument_pos_x": "Incapaz de identificar o argumento.", - "apps.error.parser.no_bindings": "Sem ligações de comando.", - "apps.error.parser.no_form": "Nenhum formulário encontrado.", - "apps.error.parser.no_match": "`{command}`: Nenhum comando correspondente encontrado neste espaço de trabalho.", - "apps.error.parser.no_slash_start": "O comando deve começar com `/`.", - "apps.error.parser.unexpected_character": "Caracter inesperado.", - "apps.error.parser.unexpected_comma": "Vírgula inesperada.", - "apps.error.parser.unexpected_error": "Erro inesperado.", - "apps.error.parser.unexpected_flag": "O comando não aceita o sinalizador `{flagName}`.", - "apps.error.parser.unexpected_squared_bracket": "Abertura de lista inesperada.", - "apps.error.parser.unexpected_state": "Inacessível: Estado inesperado em matchBinding: `{state}`.", - "apps.error.parser.unexpected_whitespace": "Inacessível: espaço em branco inesperado.", - "apps.error.responses.navigate.no_url": "O tipo de resposta é `navigate`, mas nenhuma url foi incluído na resposta.", - "apps.error.responses.unexpected_error": "Recebeu um erro inesperado.", - "apps.error.responses.unknown_field_error": "Recebeu um erro para um campo desconhecido. Nome do campo: `{field}`. Erro: `{error}`.", - "apps.error.responses.unknown_type": "O tipo de resposta do aplicativo não é compatível. Tipo de resposta: {type}.", - "apps.error.unknown": "Ocorreu um erro desconhecido.", - "apps.suggestion.dynamic.error": "Erro de seleção dinâmica", - "apps.suggestion.errors.parser_error": "Erro de análise", - "apps.suggestion.no_dynamic": "Nenhum dado foi retornado para sugestões dinâmicas", - "apps.suggestion.no_static": "Sem opções correspondentes.", - "apps.suggestion.no_suggestion": "Sem sugestões correspondentes.", - "archivedChannelMessage": "Você está vendo um **canal arquivado**. Novas mensagens não podem ser publicadas.", - "camera_type.photo.option": "Capturar foto", - "camera_type.title": "Escolha uma ação", - "camera_type.video.option": "Record Video", - "center_panel.archived.closeChannel": "Fechar Canal", - "channel_info.header": "Cabeçalho:", - "channel_loader.someone": "Alguém", - "channel_modal.descriptionHelp": "Descreva como este canal deve ser utilizado.", - "channel_modal.header": "Cabeçalho", - "channel_modal.name": "Nome", - "channel_modal.optional": "(opcional)", - "channel_modal.purpose": "Propósito", - "combined_system_message.added_to_channel.many_expanded": "{users} e {lastUser} foram **adicionados ao canal** por {actor}.", - "combined_system_message.added_to_channel.one": "{firstUser} **adicionado ao canal** por {actor}.", - "combined_system_message.added_to_channel.one_you": "Você foi **adicionado ao canal** por {actor}.", - "combined_system_message.added_to_channel.two": "{firstUser} e {secondUser} **adicionado ao canal** por {actor}.", - "combined_system_message.added_to_team.many_expanded": "{users} e {lastUser} foram **adicionado a equipe** por {actor}.", - "combined_system_message.added_to_team.one": "{firstUser} **adicionado a equipe** por {actor}.", - "combined_system_message.added_to_team.one_you": "Você foi **adicionado a equipe** por {actor}.", - "combined_system_message.added_to_team.two": "{firstUser} e {secondUser} **adicionado a equipe** por {actor}.", - "combined_system_message.joined_channel.many_expanded": "{users} e {lastUser} **entraram no canal**.", - "combined_system_message.joined_channel.one": "{firstUser} **entrou no canal**.", - "combined_system_message.joined_channel.one_you": "Você **entrou no canal**.", - "combined_system_message.joined_channel.two": "{firstUser} e {secondUser} **entraram no canal**.", - "combined_system_message.joined_team.many_expanded": "{users} e {lastUser} **entraram na equipe**.", - "combined_system_message.joined_team.one": "{firstUser} **entraram na equipe**.", - "combined_system_message.joined_team.one_you": "Você **entrou na equipe**.", - "combined_system_message.joined_team.two": "{firstUser} e {secondUser} **entraram na equipe**.", - "combined_system_message.left_channel.many_expanded": "{users} e {lastUser} **deixaram o canal**.", - "combined_system_message.left_channel.one": "{firstUser} **deixou o canal**.", - "combined_system_message.left_channel.one_you": "Você **deixou o canal**.", - "combined_system_message.left_channel.two": "{firstUser} e {secondUser} **deixaram o canal**.", - "combined_system_message.left_team.many_expanded": "{users} e {lastUser} **deixaram a equipe**.", - "combined_system_message.left_team.one": "{firstUser} **deixou a equipe**.", - "combined_system_message.left_team.one_you": "Você **deixou a equipe**.", - "combined_system_message.left_team.two": "{firstUser} e {secondUser} **deixaram a equipe**.", - "combined_system_message.removed_from_channel.many_expanded": "{users} e {lastUser} foram **removidos do canal**.", - "combined_system_message.removed_from_channel.one": "{firstUser} foi **removido do canal**.", - "combined_system_message.removed_from_channel.one_you": "Você foi **removido do canal**.", - "combined_system_message.removed_from_channel.two": "{firstUser} e {secondUser} foram **removidos do canal**.", - "combined_system_message.removed_from_team.many_expanded": "{users} e {lastUser} foram **removidos da equipe**.", - "combined_system_message.removed_from_team.one": "{firstUser} foi **removido da equipe**.", - "combined_system_message.removed_from_team.one_you": "Você foi **removido da equipe**.", - "combined_system_message.removed_from_team.two": "{firstUser} e {secondUser} foram **removidos da equipe**.", - "combined_system_message.you": "Você", - "create_post.deactivated": "Você está vendo um canal arquivado com um usuário inativo.", - "create_post.write": "Escrever para {channelDisplayName}", - "custom_status.expiry_dropdown.custom": "Personalizado", - "custom_status.expiry_dropdown.date_and_time": "Data e hora", - "custom_status.expiry_dropdown.dont_clear": "Não limpe", - "custom_status.expiry_dropdown.four_hours": "4 horas", - "custom_status.expiry_dropdown.one_hour": "1 hora", - "custom_status.expiry_dropdown.thirty_minutes": "30 minutos", - "custom_status.expiry_dropdown.this_week": "Essa semana", - "custom_status.expiry_dropdown.today": "Hoje", - "custom_status.expiry_time.today": "Hoje", - "custom_status.expiry_time.tomorrow": "Amanhã", - "custom_status.expiry.at": "no", - "custom_status.expiry.until": "Até", - "custom_status.failure_message": "Falha ao atualizar o status. Tente novamente", - "custom_status.suggestions.in_a_meeting": "Em uma reunião", - "custom_status.suggestions.on_a_vacation": "De férias", - "custom_status.suggestions.out_for_lunch": "Almoçando", - "custom_status.suggestions.out_sick": "Doente", - "custom_status.suggestions.working_from_home": "Trabalhando em casa", - "date_separator.today": "Hoje", - "date_separator.yesterday": "Ontem", - "edit_post.editPost": "Editar o post...", - "edit_post.save": "Salvar", - "emoji_picker.activities": "Atividades", - "emoji_picker.animals-nature": "Animais e Natureza", - "emoji_picker.custom": "Personalizado", - "emoji_picker.flags": "Bandeiras", - "emoji_picker.food-drink": "Comida e bebida", - "emoji_picker.objects": "Objetos", - "emoji_picker.people-body": "Pessoas e Corpo", - "emoji_picker.searchResults": "Resultados da Pesquisa", - "emoji_picker.smileys-emotion": "Sorrisos e Emoções", - "emoji_picker.symbols": "Símbolos", - "emoji_picker.travel-places": "Viagens e lugares", - "emoji_skin.dark_skin_tone": "tom de pele escuro", - "emoji_skin.default": "tom de pele padrão", - "emoji_skin.light_skin_tone": "tom de pele claro", - "emoji_skin.medium_dark_skin_tone": "pele morena escura", - "emoji_skin.medium_light_skin_tone": "tom de pele claro médio", - "emoji_skin.medium_skin_tone": "tom de pele médio", - "file_upload.fileAbove": "Arquivos devem ter menos de {max}", - "friendly_date.daysAgo": "{count} {count, plural, one {day} other {days}} atrás", - "friendly_date.hoursAgo": "{count} {count, plural, one {hour} other {hours}} atrás", - "friendly_date.minsAgo": "{count} {count, plural, one {min} other {mins}} atrás", - "friendly_date.monthsAgo": "{count} {count, plural, one {month} other {months}} atrás", - "friendly_date.now": "Agora", - "friendly_date.yearsAgo": "{count} {count, plural, one {year} other {years}} atrás", - "friendly_date.yesterday": "Ontem", - "gallery.footer.channel_name": "Compartilhado em {channelName}", - "gallery.open_file": "Abrir arquivo", - "get_post_link_modal.title": "Copiar Link", - "global_threads.allThreads": "Todos os seus tópicos", - "global_threads.emptyThreads.message": "Todos os tópicos nos quais você é mencionado ou dos quais participou serão exibidos aqui junto com todos os tópicos que você seguiu.", - "global_threads.emptyThreads.title": "Nenhum tópico seguido ainda", - "global_threads.emptyUnreads.message": "Parece que você está todo preso.", - "global_threads.emptyUnreads.title": "Nenhum tópico não lido", - "global_threads.markAllRead.cancel": "Cancelar", - "global_threads.markAllRead.markRead": "Marcar como lido", - "global_threads.markAllRead.message": "Isso limpará qualquer status não lido de todos os seus tópicos mostrados aqui", - "global_threads.markAllRead.title": "Tem certeza de que deseja marcar todos os tópicos como lidos?", - "global_threads.options.mark_as_read": "Marcar como Lido", - "global_threads.options.open_in_channel": "Abrir no canal", - "global_threads.unreads": "Não lidos", - "last_users_message.added_to_channel.type": "foram **adicionado ao canal** por {actor}.", - "last_users_message.added_to_team.type": "foram **adicionados a equipe** por {actor}.", - "last_users_message.first": "{firstUser} e ", - "last_users_message.joined_channel.type": "**entraram no canal**.", - "last_users_message.joined_team.type": "**entrou na equipe**.", - "last_users_message.left_channel.type": "**deixou o canal**.", - "last_users_message.left_team.type": "**deixou a equipe**.", - "last_users_message.others": "{numOthers} outros ", - "last_users_message.removed_from_channel.type": "foram **removidos do canal**.", - "last_users_message.removed_from_team.type": "foram **removidos do canal**.", - "login_mfa.tokenReq": "Por favor entre um token MFA", - "login.email": "E-mail", - "login.ldapUsername": "Usuário AD/LDAP", - "login.or": "ou", - "login.password": "Senha", - "login.username": "Usuário", - "mobile.about.appVersion": "Versão do App: {version} (Build {number})", - "mobile.account.settings.save": "Salvar", - "mobile.action_menu.select": "Selecione uma opção", - "mobile.android.back_handler_exit": "Pressione voltar novamente para sair", - "mobile.android.photos_permission_denied_title": "Acesso a galeria de fotos é necessário", - "mobile.camera_photo_permission_denied_title": "{applicationName} gostaria de acessar sua camera", - "mobile.channel_info.alertNo": "Não", - "mobile.channel_info.alertYes": "Sim", - "mobile.commands.error_title": "Erro ao Executar o Comando", - "mobile.components.select_server_view.connect": "Conectar", - "mobile.components.select_server_view.enterServerUrl": "Informe a URL do servidor", - "mobile.components.select_server_view.proceed": "Prosseguir", - "mobile.create_channel": "Criar", - "mobile.custom_status.choose_emoji": "Escolha um emoji", - "mobile.custom_status.clear_after": "Limpar depois", - "mobile.custom_status.modal_confirm": "Feito", - "mobile.display_settings.theme": "Tema", - "mobile.document_preview.failed_description": "Um erro aconteceu durante a abertura do documento. Por favor verifique que você tem o visualizador para {fileType} instalado e tente novamente.\n", - "mobile.document_preview.failed_title": "Falha ao Abrir o Documento", - "mobile.downloader.disabled_description": "Download de arquivos está desativado neste servidor. Por favor contate o Administrador do Sistema para mais detalhes.\n", - "mobile.downloader.disabled_title": "Download desativado", - "mobile.downloader.failed_description": "Ocorreu um erro ao fazer o download do arquivo. Verifique sua conexão com a internet e tente novamente.\n", - "mobile.downloader.failed_title": "Download falhou", - "mobile.edit_channel": "Salvar", - "mobile.edit_post.title": "Editando a Mensagem", - "mobile.error_handler.button": "Relançar", - "mobile.error_handler.description": "\nClique relançar para abrir a app novamente. Após o reinício, você pode relatar o problema no menu the configuração.\n", - "mobile.error_handler.title": "Ocorreu um erro inesperado", - "mobile.file_upload.disabled2": "Os envios de arquivos do celular estão desabilitados.", - "mobile.file_upload.max_warning": "Uploads limitados a {count} máximo de arquivos.", - "mobile.files_paste.error_description": "Ocorreu um erro enquanto colava o arquivo. Por favor tente novamente.", - "mobile.files_paste.error_dismiss": "Ignorar", - "mobile.files_paste.error_title": "Colar falhou", - "mobile.gallery.title": "{index} de {total}", - "mobile.ios.photos_permission_denied_title": "Acesso a galeria de fotos é necessário", - "mobile.link.error.text": "Não é possível abrir o link.", - "mobile.link.error.title": "Erro", - "mobile.managed.blocked_by": "Bloqueado por {vendor}", - "mobile.managed.exit": "Editar", - "mobile.managed.jailbreak": "Os dispositivos com Jailbroken não são confiáveis para {vendor}, por favor saia do aplicativo.", - "mobile.managed.not_secured.android": "Este dispositivo deve ser protegido com um bloqueio de tela para usar o Mattermost.", - "mobile.managed.not_secured.ios": "Este dispositivo deve ser protegido por uma senha para usar o Mattermost.\n\nVá para Configurações > Face ID & Passcode.", - "mobile.managed.not_secured.ios.touchId": "Este dispositivo deve ser protegido por uma senha para usar o Mattermost.\n\nVá em Ajustes > Touch ID & Código.", - "mobile.managed.secured_by": "Garantido por {vendor}", - "mobile.managed.settings": "Vá para configurações", - "mobile.markdown.code.copy_code": "Copiar Código", - "mobile.markdown.code.plusMoreLines": "+{count, number} mais {count, plural, one {linha} other {linhas}}", - "mobile.markdown.image.too_large": "A imagem excede as dimensões máximas de {maxWidth} por {maxHeight}:", - "mobile.markdown.link.copy_url": "Copiar URL", - "mobile.mention.copy_mention": "Copiar Menção", - "mobile.message_length.message": "Sua mensagem atual é muito grande. Contagem corrente de caracters: {max}/{count}", - "mobile.message_length.message_split_left": "Mensagem excede o limite de caracteres", - "mobile.message_length.title": "Tamanho da Mensagem", - "mobile.microphone_permission_denied_description": "Para participar desta chamada, abra Configurações para conceder ao Mattermost acesso ao seu microfone.", - "mobile.microphone_permission_denied_title": "{applicationName} gostaria de acessar seu microfone", - "mobile.oauth.failed_to_login": "Sua tentativa de login falhou. Por favor, tente novamente.", - "mobile.oauth.failed_to_open_link": "O link falhou ao abrir. Por favor, tente novamente.", - "mobile.oauth.something_wrong": "Algo deu errado", - "mobile.oauth.try_again": "Tentar novamente", - "mobile.open_gm.error": "Não foi possível abrir uma mensagem em grupo com esses usuários. Por favor verifique sua conexão e tente novamente.", - "mobile.permission_denied_dismiss": "Não Permitir", - "mobile.permission_denied_retry": "Configurações", - "mobile.post_info.add_reaction": "Adicionar Reação", - "mobile.post_info.copy_text": "Copiar Texto", - "mobile.post_info.mark_unread": "Marcar como Não Lido", - "mobile.post_info.pin": "Fixar no Canal", - "mobile.post_info.reply": "Responder", - "mobile.post_info.unpin": "Desafixar do Canal", - "mobile.post_pre_header.pinned": "Fixado", - "mobile.post_textbox.entire_channel_here.message": "Ao usar @here você está prestes a enviar notificações para {totalMembers, number} {totalMembers, plural, one {person} other {people}}. Você tem certeza de que quer fazer isso?", - "mobile.post_textbox.entire_channel_here.message.with_timezones": "Ao usar @here, você está prestes a enviar notificações para {totalMembers, number} {totalMembers, plural, one {person} other {people}} em {timezones, number} {timezones, plural, one {timezone} other {timezones} }. Você tem certeza de que quer fazer isso?", - "mobile.post_textbox.entire_channel.cancel": "Cancelar", - "mobile.post_textbox.entire_channel.confirm": "Confirmar", - "mobile.post_textbox.entire_channel.message": "Usando @all ou @channel você está enviando notificações para {totalMembers, number} {totalMembers, plural, one {pessoa} other {pessoas}}. Você tem certeza que quer fazer isso?", - "mobile.post_textbox.entire_channel.message.with_timezones": "Usando @all ou @channel você está enviando notificações para {totalMembers, number} {totalMembers, plural, one {pessoa} other {pessoas}} em {timezones, number} {timezones, plural, one {fuso horário} other {fusos horários}}. Você tem certeza que quer fazer isso?", - "mobile.post_textbox.entire_channel.title": "Confirmar o envio de notificações para o canal todo", - "mobile.post_textbox.groups.title": "Confirmar envio de notificações para grupos", - "mobile.post_textbox.uploadFailedDesc": "Alguns anexos não foram enviados para o servidor. Tem certeza de que deseja publicar a mensagem?", - "mobile.post_textbox.uploadFailedTitle": "Falha no anexo", - "mobile.post.cancel": "Cancelar", - "mobile.post.delete_question": "Tem certeza de que deseja excluir este post?", - "mobile.post.delete_title": "Deletar Post", - "mobile.post.failed_delete": "Excluir mensagem", - "mobile.post.failed_retry": "Tentar Novamente", - "mobile.posts_view.moreMsg": "Acima Mais Mensagens Novas", - "mobile.privacy_link": "Política de Privacidade", - "mobile.push_notification_reply.button": "Enviar", - "mobile.push_notification_reply.placeholder": "Escrever uma resposta...", - "mobile.push_notification_reply.title": "Responder", - "mobile.rename_channel.display_name_maxLength": "Nome do canal precisa ter menos de {maxLength, number} caracteres", - "mobile.rename_channel.display_name_minLength": "Nome do canal deve ter {minLength, number} caracteres ou mais", - "mobile.rename_channel.display_name_required": "Nome do canal é obrigatório", - "mobile.request.invalid_response": "Recebido uma resposta inválida do servidor.", - "mobile.reset_status.alert_cancel": "Cancelar", - "mobile.reset_status.title_ooo": "Desativar \"Fora Do Escritório\"?", - "mobile.routes.code": "{language} Código", - "mobile.routes.code.noLanguage": "Código", - "mobile.routes.custom_status": "Definir um status", - "mobile.routes.table": "Tabela", - "mobile.routes.user_profile": "Perfil", - "mobile.search.jump": "Ir para as mensagens recentes", - "mobile.server_link.error.text": "O link não pôde ser encontrado neste servidor.", - "mobile.server_link.error.title": "Erro Link", - "mobile.server_link.unreachable_channel.error": "Este link pertence a uma mensagem apagada ou a um canal do qual você não tem acesso.", - "mobile.server_link.unreachable_team.error": "Este link pertence a uma mensagem apagada ou a um canal do qual você não tem acesso.", - "mobile.server_upgrade.alert_description": "Esta versão do servidor não é suportada e os usuários serão expostos a problemas de compatibilidade que causam falhas ou erros graves que quebram a funcionalidade principal do aplicativo. É necessário atualizar para a versão do servidor {serverVersion} ou posterior.", - "mobile.server_upgrade.button": "OK", - "mobile.server_upgrade.dismiss": "Ignorar", - "mobile.server_upgrade.learn_more": "Saiba Mais", - "mobile.server_upgrade.title": "Atualização do servidor necessária", - "mobile.server_url.empty": "Insira um URL de servidor válido", - "mobile.server_url.invalid_format": "URL deve começar com http:// ou https://", - "mobile.set_status.away": "Ausente", - "mobile.set_status.dnd": "Não Perturbe", - "mobile.set_status.offline": "Desconectado", - "mobile.set_status.online": "Conectado", - "mobile.storage_permission_denied_title": "{applicationName} gostaria de acessar seus arquivos", - "mobile.suggestion.members": "Membros", - "mobile.system_message.channel_archived_message": "{username} arquivou o canal", - "mobile.system_message.channel_unarchived_message": "{username} desarquivou o canal", - "mobile.system_message.update_channel_displayname_message_and_forget.updated_from": "{username} atualizou o nome de exibição do canal de: {oldDisplayName} para: {newDisplayName}", - "mobile.system_message.update_channel_header_message_and_forget.removed": "{username} removeu o cabeçalho do canal (era: {oldHeader})", - "mobile.system_message.update_channel_header_message_and_forget.updated_from": "{username} atualizou o cabeçalho do canal de: {oldHeader} para: {newHeader}", - "mobile.system_message.update_channel_header_message_and_forget.updated_to": "{username} atualizou o cabeçalho do canal para: {newHeader}", - "mobile.system_message.update_channel_purpose_message.removed": "{username} removeu o propósito do canal (era: {oldPurpose})", - "mobile.system_message.update_channel_purpose_message.updated_from": "{username} atualizou o propósito do canal de: {oldPurpose} para: {newPurpose}", - "mobile.system_message.update_channel_purpose_message.updated_to": "{username} atualizou o propósito do canal para: {newPurpose}", - "mobile.tos_link": "Termos de Serviço", - "mobile.unsupported_server.message": "Anexos, visualizações de links, reações e dados incorporados podem não ser exibidos corretamente. Se esse problema persistir, entre em contato com o administrador do sistema para atualizar o servidor Mattermost.", - "mobile.unsupported_server.ok": "OK", - "mobile.unsupported_server.title": "Versão do servidor não suportada", - "mobile.user_list.deactivated": "Desativado", - "modal.manual_status.auto_responder.message_": "Você gostaria de trocar o seu status para \"{status}\" e desativar as Respostas Automáticas?", - "modal.manual_status.auto_responder.message_away": "Você gostaria de trocar o seu status para \"Ausente\" e desativar as Respostas Automáticas?", - "modal.manual_status.auto_responder.message_dnd": "Você gostaria de trocar o seu status para \"Não Perturbe\" e desativar as Respostas Automáticas?", - "modal.manual_status.auto_responder.message_offline": "Você gostaria de trocar o seu status para \"Desconectado\" e desativar as Respostas Automáticas?", - "modal.manual_status.auto_responder.message_online": "Você gostaria de trocar o seu status para \"Conectado\" e desativar as Respostas Automáticas?", - "msg_typing.areTyping": "{users} e {last} estão digitando...", - "msg_typing.isTyping": "{user} está digitando...", - "password_send.description": "Para redefinir sua senha, digite o endereço de email que você usou para se inscrever", - "password_send.error": "Por favor entre um endereço de e-mail válido.", - "password_send.link": "Se a conta existir, um email de redefinição de senha será enviado para:", - "permalink.show_dialog_warn.cancel": "Cancelar", - "permalink.show_dialog_warn.join": "Juntar", - "permalink.show_dialog_warn.title": "Junte-se ao canal privado", - "post_body.check_for_out_of_channel_groups_mentions.message": "não foi notificado por esta menção porque não estão no canal. Eles não podem ser adicionados ao canal porque não são membros dos grupos vinculados. Para adicioná-los a este canal, eles devem ser adicionados aos grupos vinculados.", - "post_body.check_for_out_of_channel_mentions.link.and": " e ", - "post_body.check_for_out_of_channel_mentions.link.private": "adicionar a este canal privado", - "post_body.check_for_out_of_channel_mentions.link.public": "adicionar ao canal", - "post_body.check_for_out_of_channel_mentions.message_last": "? Terão acesso a todo o histórico de mensagens.", - "post_body.check_for_out_of_channel_mentions.message.multiple": "foram mencionados mas eles não estão no canal. Você gostaria de ", - "post_body.check_for_out_of_channel_mentions.message.one": "foi mencionado mas não está no canal. Você gostaria de ", - "post_body.commentedOn": "Comentou a mensagem de {name}: ", - "post_body.deleted": "(mensagem deletada)", - "post_info.del": "Deletar", - "post_info.edit": "Editar", - "post_info.system": "Sistema", - "post_message_view.edited": "(editado)", - "posts_view.newMsg": "Novas Mensagens", - "search_bar.search": "Procurar", - "status_dropdown.set_away": "Ausente", - "status_dropdown.set_dnd": "Não Perturbe", - "status_dropdown.set_offline": "Desconectado", - "status_dropdown.set_online": "Conectado", - "suggestion.mention.all": "Notifica a todos no canal", - "suggestion.mention.channel": "Notifica a todos no canal", - "suggestion.mention.channels": "Meus Canais", - "suggestion.mention.groups": "Menção de Grupo", - "suggestion.mention.here": "Notifica a todos online no canal", - "suggestion.mention.members": "Membros do Canal", - "suggestion.mention.morechannels": "Outros Canais", - "suggestion.mention.nonmembers": "Não no Canal", - "suggestion.mention.special": "Menções Especiais", - "suggestion.mention.you": " (você)", - "suggestion.search.direct": "Mensagens Diretas", - "suggestion.search.private": "Canais Privados", - "suggestion.search.public": "Canais Públicos", - "threads": "Tópicos", - "threads.deleted": "Mensagem original excluída", - "threads.follow": "Seguir", - "threads.following": "Seguindo", - "threads.followMessage": "Seguir mensagem", - "threads.followThread": "Seguir Tópico", - "threads.newReplies": "{count} novo {count, plural, one {reply} other {replies}}", - "threads.replies": "{count} {count, plural, one {reply} other {replies}}", - "threads.unfollowMessage": "Deixar de seguir a mensagem", - "threads.unfollowThread": "Deixar de seguir o tópico", - "user.settings.general.email": "E-mail", - "user.settings.general.firstName": "Primeiro nome", - "user.settings.general.lastName": "Último Nome", - "user.settings.general.nickname": "Apelido", - "user.settings.general.position": "Cargo", - "user.settings.general.username": "Usuário" -} \ No newline at end of file + "about.date": "Data De Criação:", + "about.enterpriseEditione1": "Enterprise Edition", + "about.enterpriseEditionLearn": "Saiba mais sobre Enterprise Edition em ", + "about.enterpriseEditionSt": "Comunicação empresarial moderna atrás do seu firewall.", + "about.hash": "Hash de Compilação:", + "about.hashee": "Hash de Compilação EE:", + "about.teamEditionLearn": "Entre na comunidade Mattermost em ", + "about.teamEditionSt": "Toda comunicação da sua equipe em um só lugar, instantaneamente pesquisável e acessível em qualquer lugar.", + "about.teamEditiont0": "Team Edition", + "about.teamEditiont1": "Enterprise Edition", + "api.channel.add_guest.added": "{addedUsername} adicionado ao canal como convidado por {username}.", + "api.channel.add_member.added": "{addedUsername} foi adicionado ao canal por {username}.", + "api.channel.guest_join_channel.post_and_forget": "{username} entrou no canal como convidado.", + "apps.error": "Erro: {error}", + "apps.error.command.field_missing": "Campos obrigatórios ausentes: `{fieldName}`.", + "apps.error.command.same_channel": "Canal repetido para o campo `{fieldName}`: `{option}`.", + "apps.error.command.same_option": "Opção repetida para o campo `{fieldName}`: `{option}`.", + "apps.error.command.same_user": "Usuário repetido para o campo `{fieldName}`: `{option}`.", + "apps.error.command.unknown_channel": "Canal desconhecido para o campo `{fieldName}`: `{option}`.", + "apps.error.command.unknown_option": "Opção desconhecida para o campo `{fieldName}`: `{option}`.", + "apps.error.command.unknown_user": "Usuário desconhecido para o campo `{fieldName}`: `{opção}`.", + "apps.error.form.no_form": "`form` não está definido.", + "apps.error.form.no_lookup": "`procurar` não está definido.", + "apps.error.form.no_source": "`fonte` não está definida.", + "apps.error.form.no_submit": "`enviar ` não está definido", + "apps.error.form.refresh": "Ocorreu um erro ao buscar os campos selecionados. Entre em contato com o desenvolvedor do aplicativo. Detalhes: {details}", + "apps.error.form.refresh_no_refresh": "Atualização chamada no campo sem atualização.", + "apps.error.form.submit.pretext": "Ocorreu um erro ao enviar o modal. Entre em contato com o desenvolvedor do aplicativo. Detalhes: {details}", + "apps.error.lookup.error_preparing_request": "Erro ao preparar solicitação de pesquisa: {errorMessage}", + "apps.error.malformed_binding": "Esta ligação não está formada corretamente. Entre em contato com o desenvolvedor do aplicativo.", + "apps.error.parser": "Erro de análise: {error}", + "apps.error.parser.execute_non_leaf": "Você deve selecionar um subcomando.", + "apps.error.parser.missing_binding": "Ligações de comando ausentes.", + "apps.error.parser.missing_field_value": "Falta o valor do campo.", + "apps.error.parser.missing_list_end": "Token de fechamento de lista esperado.", + "apps.error.parser.missing_quote": "Aspas duplas correspondentes são esperadas antes do final da entrada.", + "apps.error.parser.missing_source": "O formulário não tem envio nem fonte.", + "apps.error.parser.missing_submit": "Nenhuma chamada de envio em forma ou vinculação.", + "apps.error.parser.missing_tick": "Crase correspondente é esperada antes do final de entrada.", + "apps.error.parser.multiple_equal": "Vários sinais `=` não são permitidos.", + "apps.error.parser.no_argument_pos_x": "Incapaz de identificar o argumento.", + "apps.error.parser.no_bindings": "Sem ligações de comando.", + "apps.error.parser.no_form": "Nenhum formulário encontrado.", + "apps.error.parser.no_match": "`{command}`: Nenhum comando correspondente encontrado neste espaço de trabalho.", + "apps.error.parser.no_slash_start": "O comando deve começar com `/`.", + "apps.error.parser.unexpected_character": "Caracter inesperado.", + "apps.error.parser.unexpected_comma": "Vírgula inesperada.", + "apps.error.parser.unexpected_error": "Erro inesperado.", + "apps.error.parser.unexpected_flag": "O comando não aceita o sinalizador `{flagName}`.", + "apps.error.parser.unexpected_squared_bracket": "Abertura de lista inesperada.", + "apps.error.parser.unexpected_state": "Inacessível: Estado inesperado em matchBinding: `{state}`.", + "apps.error.parser.unexpected_whitespace": "Inacessível: espaço em branco inesperado.", + "apps.error.responses.navigate.no_url": "O tipo de resposta é `navigate`, mas nenhuma url foi incluído na resposta.", + "apps.error.responses.unexpected_error": "Recebeu um erro inesperado.", + "apps.error.responses.unknown_field_error": "Recebeu um erro para um campo desconhecido. Nome do campo: `{field}`. Erro: `{error}`.", + "apps.error.responses.unknown_type": "O tipo de resposta do aplicativo não é compatível. Tipo de resposta: {type}.", + "apps.error.unknown": "Ocorreu um erro desconhecido.", + "apps.suggestion.dynamic.error": "Erro de seleção dinâmica", + "apps.suggestion.errors.parser_error": "Erro de análise", + "apps.suggestion.no_dynamic": "Nenhum dado foi retornado para sugestões dinâmicas", + "apps.suggestion.no_static": "Sem opções correspondentes.", + "apps.suggestion.no_suggestion": "Sem sugestões correspondentes.", + "archivedChannelMessage": "Você está vendo um **canal arquivado**. Novas mensagens não podem ser publicadas.", + "camera_type.photo.option": "Capturar foto", + "camera_type.title": "Escolha uma ação", + "camera_type.video.option": "Record Video", + "center_panel.archived.closeChannel": "Fechar Canal", + "channel_info.header": "Cabeçalho:", + "channel_loader.someone": "Alguém", + "channel_modal.descriptionHelp": "Descreva como este canal deve ser utilizado.", + "channel_modal.header": "Cabeçalho", + "channel_modal.name": "Nome", + "channel_modal.optional": "(opcional)", + "channel_modal.purpose": "Propósito", + "combined_system_message.added_to_channel.many_expanded": "{users} e {lastUser} foram **adicionados ao canal** por {actor}.", + "combined_system_message.added_to_channel.one": "{firstUser} **adicionado ao canal** por {actor}.", + "combined_system_message.added_to_channel.one_you": "Você foi **adicionado ao canal** por {actor}.", + "combined_system_message.added_to_channel.two": "{firstUser} e {secondUser} **adicionado ao canal** por {actor}.", + "combined_system_message.added_to_team.many_expanded": "{users} e {lastUser} foram **adicionado a equipe** por {actor}.", + "combined_system_message.added_to_team.one": "{firstUser} **adicionado a equipe** por {actor}.", + "combined_system_message.added_to_team.one_you": "Você foi **adicionado a equipe** por {actor}.", + "combined_system_message.added_to_team.two": "{firstUser} e {secondUser} **adicionado a equipe** por {actor}.", + "combined_system_message.joined_channel.many_expanded": "{users} e {lastUser} **entraram no canal**.", + "combined_system_message.joined_channel.one": "{firstUser} **entrou no canal**.", + "combined_system_message.joined_channel.one_you": "Você **entrou no canal**.", + "combined_system_message.joined_channel.two": "{firstUser} e {secondUser} **entraram no canal**.", + "combined_system_message.joined_team.many_expanded": "{users} e {lastUser} **entraram na equipe**.", + "combined_system_message.joined_team.one": "{firstUser} **entraram na equipe**.", + "combined_system_message.joined_team.one_you": "Você **entrou na equipe**.", + "combined_system_message.joined_team.two": "{firstUser} e {secondUser} **entraram na equipe**.", + "combined_system_message.left_channel.many_expanded": "{users} e {lastUser} **deixaram o canal**.", + "combined_system_message.left_channel.one": "{firstUser} **deixou o canal**.", + "combined_system_message.left_channel.one_you": "Você **deixou o canal**.", + "combined_system_message.left_channel.two": "{firstUser} e {secondUser} **deixaram o canal**.", + "combined_system_message.left_team.many_expanded": "{users} e {lastUser} **deixaram a equipe**.", + "combined_system_message.left_team.one": "{firstUser} **deixou a equipe**.", + "combined_system_message.left_team.one_you": "Você **deixou a equipe**.", + "combined_system_message.left_team.two": "{firstUser} e {secondUser} **deixaram a equipe**.", + "combined_system_message.removed_from_channel.many_expanded": "{users} e {lastUser} foram **removidos do canal**.", + "combined_system_message.removed_from_channel.one": "{firstUser} foi **removido do canal**.", + "combined_system_message.removed_from_channel.one_you": "Você foi **removido do canal**.", + "combined_system_message.removed_from_channel.two": "{firstUser} e {secondUser} foram **removidos do canal**.", + "combined_system_message.removed_from_team.many_expanded": "{users} e {lastUser} foram **removidos da equipe**.", + "combined_system_message.removed_from_team.one": "{firstUser} foi **removido da equipe**.", + "combined_system_message.removed_from_team.one_you": "Você foi **removido da equipe**.", + "combined_system_message.removed_from_team.two": "{firstUser} e {secondUser} foram **removidos da equipe**.", + "combined_system_message.you": "Você", + "create_post.deactivated": "Você está vendo um canal arquivado com um usuário inativo.", + "create_post.write": "Escrever para {channelDisplayName}", + "custom_status.expiry_dropdown.custom": "Personalizado", + "custom_status.expiry_dropdown.date_and_time": "Data e hora", + "custom_status.expiry_dropdown.dont_clear": "Não limpe", + "custom_status.expiry_dropdown.four_hours": "4 horas", + "custom_status.expiry_dropdown.one_hour": "1 hora", + "custom_status.expiry_dropdown.thirty_minutes": "30 minutos", + "custom_status.expiry_dropdown.this_week": "Essa semana", + "custom_status.expiry_dropdown.today": "Hoje", + "custom_status.expiry_time.today": "Hoje", + "custom_status.expiry_time.tomorrow": "Amanhã", + "custom_status.expiry.at": "no", + "custom_status.expiry.until": "Até", + "custom_status.failure_message": "Falha ao atualizar o status. Tente novamente", + "custom_status.suggestions.in_a_meeting": "Em uma reunião", + "custom_status.suggestions.on_a_vacation": "De férias", + "custom_status.suggestions.out_for_lunch": "Almoçando", + "custom_status.suggestions.out_sick": "Doente", + "custom_status.suggestions.working_from_home": "Trabalhando em casa", + "date_separator.today": "Hoje", + "date_separator.yesterday": "Ontem", + "edit_post.editPost": "Editar o post...", + "edit_post.save": "Salvar", + "emoji_picker.activities": "Atividades", + "emoji_picker.animals-nature": "Animais e Natureza", + "emoji_picker.custom": "Personalizado", + "emoji_picker.flags": "Bandeiras", + "emoji_picker.food-drink": "Comida e bebida", + "emoji_picker.objects": "Objetos", + "emoji_picker.people-body": "Pessoas e Corpo", + "emoji_picker.searchResults": "Resultados da Pesquisa", + "emoji_picker.smileys-emotion": "Sorrisos e Emoções", + "emoji_picker.symbols": "Símbolos", + "emoji_picker.travel-places": "Viagens e lugares", + "emoji_skin.dark_skin_tone": "tom de pele escuro", + "emoji_skin.default": "tom de pele padrão", + "emoji_skin.light_skin_tone": "tom de pele claro", + "emoji_skin.medium_dark_skin_tone": "pele morena escura", + "emoji_skin.medium_light_skin_tone": "tom de pele claro médio", + "emoji_skin.medium_skin_tone": "tom de pele médio", + "file_upload.fileAbove": "Arquivos devem ter menos de {max}", + "friendly_date.daysAgo": "{count} {count, plural, one {day} other {days}} atrás", + "friendly_date.hoursAgo": "{count} {count, plural, one {hour} other {hours}} atrás", + "friendly_date.minsAgo": "{count} {count, plural, one {min} other {mins}} atrás", + "friendly_date.monthsAgo": "{count} {count, plural, one {month} other {months}} atrás", + "friendly_date.now": "Agora", + "friendly_date.yearsAgo": "{count} {count, plural, one {year} other {years}} atrás", + "friendly_date.yesterday": "Ontem", + "gallery.footer.channel_name": "Compartilhado em {channelName}", + "gallery.open_file": "Abrir arquivo", + "get_post_link_modal.title": "Copiar Link", + "global_threads.allThreads": "Todos os seus tópicos", + "global_threads.emptyThreads.message": "Todos os tópicos nos quais você é mencionado ou dos quais participou serão exibidos aqui junto com todos os tópicos que você seguiu.", + "global_threads.emptyThreads.title": "Nenhum tópico seguido ainda", + "global_threads.emptyUnreads.message": "Parece que você está todo preso.", + "global_threads.emptyUnreads.title": "Nenhum tópico não lido", + "global_threads.markAllRead.cancel": "Cancelar", + "global_threads.markAllRead.markRead": "Marcar como lido", + "global_threads.markAllRead.message": "Isso limpará qualquer status não lido de todos os seus tópicos mostrados aqui", + "global_threads.markAllRead.title": "Tem certeza de que deseja marcar todos os tópicos como lidos?", + "global_threads.options.mark_as_read": "Marcar como Lido", + "global_threads.options.open_in_channel": "Abrir no canal", + "global_threads.unreads": "Não lidos", + "last_users_message.added_to_channel.type": "foram **adicionado ao canal** por {actor}.", + "last_users_message.added_to_team.type": "foram **adicionados a equipe** por {actor}.", + "last_users_message.first": "{firstUser} e ", + "last_users_message.joined_channel.type": "**entraram no canal**.", + "last_users_message.joined_team.type": "**entrou na equipe**.", + "last_users_message.left_channel.type": "**deixou o canal**.", + "last_users_message.left_team.type": "**deixou a equipe**.", + "last_users_message.others": "{numOthers} outros ", + "last_users_message.removed_from_channel.type": "foram **removidos do canal**.", + "last_users_message.removed_from_team.type": "foram **removidos do canal**.", + "login_mfa.tokenReq": "Por favor entre um token MFA", + "login.email": "E-mail", + "login.ldapUsername": "Usuário AD/LDAP", + "login.or": "ou", + "login.password": "Senha", + "login.username": "Usuário", + "mobile.about.appVersion": "Versão do App: {version} (Build {number})", + "mobile.account.settings.save": "Salvar", + "mobile.action_menu.select": "Selecione uma opção", + "mobile.android.back_handler_exit": "Pressione voltar novamente para sair", + "mobile.android.photos_permission_denied_title": "Acesso a galeria de fotos é necessário", + "mobile.camera_photo_permission_denied_title": "{applicationName} gostaria de acessar sua camera", + "mobile.channel_info.alertNo": "Não", + "mobile.channel_info.alertYes": "Sim", + "mobile.commands.error_title": "Erro ao Executar o Comando", + "mobile.components.select_server_view.connect": "Conectar", + "mobile.components.select_server_view.enterServerUrl": "Informe a URL do servidor", + "mobile.components.select_server_view.proceed": "Prosseguir", + "mobile.create_channel": "Criar", + "mobile.custom_status.choose_emoji": "Escolha um emoji", + "mobile.custom_status.clear_after": "Limpar depois", + "mobile.custom_status.modal_confirm": "Feito", + "mobile.display_settings.theme": "Tema", + "mobile.document_preview.failed_description": "Um erro aconteceu durante a abertura do documento. Por favor verifique que você tem o visualizador para {fileType} instalado e tente novamente.\n", + "mobile.document_preview.failed_title": "Falha ao Abrir o Documento", + "mobile.downloader.disabled_description": "Download de arquivos está desativado neste servidor. Por favor contate o Administrador do Sistema para mais detalhes.\n", + "mobile.downloader.disabled_title": "Download desativado", + "mobile.downloader.failed_description": "Ocorreu um erro ao fazer o download do arquivo. Verifique sua conexão com a internet e tente novamente.\n", + "mobile.downloader.failed_title": "Download falhou", + "mobile.edit_channel": "Salvar", + "mobile.edit_post.title": "Editando a Mensagem", + "mobile.error_handler.button": "Relançar", + "mobile.error_handler.description": "\nClique relançar para abrir a app novamente. Após o reinício, você pode relatar o problema no menu the configuração.\n", + "mobile.error_handler.title": "Ocorreu um erro inesperado", + "mobile.file_upload.disabled2": "Os envios de arquivos do celular estão desabilitados.", + "mobile.file_upload.max_warning": "Uploads limitados a {count} máximo de arquivos.", + "mobile.files_paste.error_description": "Ocorreu um erro enquanto colava o arquivo. Por favor tente novamente.", + "mobile.files_paste.error_dismiss": "Ignorar", + "mobile.files_paste.error_title": "Colar falhou", + "mobile.gallery.title": "{index} de {total}", + "mobile.ios.photos_permission_denied_title": "Acesso a galeria de fotos é necessário", + "mobile.link.error.text": "Não é possível abrir o link.", + "mobile.link.error.title": "Erro", + "mobile.managed.blocked_by": "Bloqueado por {vendor}", + "mobile.managed.exit": "Editar", + "mobile.managed.jailbreak": "Os dispositivos com Jailbroken não são confiáveis para {vendor}, por favor saia do aplicativo.", + "mobile.managed.not_secured.android": "Este dispositivo deve ser protegido com um bloqueio de tela para usar o Mattermost.", + "mobile.managed.not_secured.ios": "Este dispositivo deve ser protegido por uma senha para usar o Mattermost.\n\nVá para Configurações > Face ID & Passcode.", + "mobile.managed.not_secured.ios.touchId": "Este dispositivo deve ser protegido por uma senha para usar o Mattermost.\n\nVá em Ajustes > Touch ID & Código.", + "mobile.managed.secured_by": "Garantido por {vendor}", + "mobile.managed.settings": "Vá para configurações", + "mobile.markdown.code.copy_code": "Copiar Código", + "mobile.markdown.code.plusMoreLines": "+{count, number} mais {count, plural, one {linha} other {linhas}}", + "mobile.markdown.image.too_large": "A imagem excede as dimensões máximas de {maxWidth} por {maxHeight}:", + "mobile.markdown.link.copy_url": "Copiar URL", + "mobile.mention.copy_mention": "Copiar Menção", + "mobile.message_length.message": "Sua mensagem atual é muito grande. Contagem corrente de caracters: {max}/{count}", + "mobile.message_length.message_split_left": "Mensagem excede o limite de caracteres", + "mobile.message_length.title": "Tamanho da Mensagem", + "mobile.oauth.failed_to_login": "Sua tentativa de login falhou. Por favor, tente novamente.", + "mobile.oauth.failed_to_open_link": "O link falhou ao abrir. Por favor, tente novamente.", + "mobile.oauth.something_wrong": "Algo deu errado", + "mobile.oauth.try_again": "Tentar novamente", + "mobile.open_gm.error": "Não foi possível abrir uma mensagem em grupo com esses usuários. Por favor verifique sua conexão e tente novamente.", + "mobile.permission_denied_dismiss": "Não Permitir", + "mobile.permission_denied_retry": "Configurações", + "mobile.post_info.add_reaction": "Adicionar Reação", + "mobile.post_info.copy_text": "Copiar Texto", + "mobile.post_info.mark_unread": "Marcar como Não Lido", + "mobile.post_info.pin": "Fixar no Canal", + "mobile.post_info.reply": "Responder", + "mobile.post_info.unpin": "Desafixar do Canal", + "mobile.post_pre_header.pinned": "Fixado", + "mobile.post_textbox.entire_channel_here.message": "Ao usar @here você está prestes a enviar notificações para {totalMembers, number} {totalMembers, plural, one {person} other {people}}. Você tem certeza de que quer fazer isso?", + "mobile.post_textbox.entire_channel_here.message.with_timezones": "Ao usar @here, você está prestes a enviar notificações para {totalMembers, number} {totalMembers, plural, one {person} other {people}} em {timezones, number} {timezones, plural, one {timezone} other {timezones} }. Você tem certeza de que quer fazer isso?", + "mobile.post_textbox.entire_channel.cancel": "Cancelar", + "mobile.post_textbox.entire_channel.confirm": "Confirmar", + "mobile.post_textbox.entire_channel.message": "Usando @all ou @channel você está enviando notificações para {totalMembers, number} {totalMembers, plural, one {pessoa} other {pessoas}}. Você tem certeza que quer fazer isso?", + "mobile.post_textbox.entire_channel.message.with_timezones": "Usando @all ou @channel você está enviando notificações para {totalMembers, number} {totalMembers, plural, one {pessoa} other {pessoas}} em {timezones, number} {timezones, plural, one {fuso horário} other {fusos horários}}. Você tem certeza que quer fazer isso?", + "mobile.post_textbox.entire_channel.title": "Confirmar o envio de notificações para o canal todo", + "mobile.post_textbox.groups.title": "Confirmar envio de notificações para grupos", + "mobile.post_textbox.uploadFailedDesc": "Alguns anexos não foram enviados para o servidor. Tem certeza de que deseja publicar a mensagem?", + "mobile.post_textbox.uploadFailedTitle": "Falha no anexo", + "mobile.post.cancel": "Cancelar", + "mobile.post.delete_question": "Tem certeza de que deseja excluir este post?", + "mobile.post.delete_title": "Deletar Post", + "mobile.post.failed_delete": "Excluir mensagem", + "mobile.post.failed_retry": "Tentar Novamente", + "mobile.posts_view.moreMsg": "Acima Mais Mensagens Novas", + "mobile.privacy_link": "Política de Privacidade", + "mobile.push_notification_reply.button": "Enviar", + "mobile.push_notification_reply.placeholder": "Escrever uma resposta...", + "mobile.push_notification_reply.title": "Responder", + "mobile.rename_channel.display_name_maxLength": "Nome do canal precisa ter menos de {maxLength, number} caracteres", + "mobile.rename_channel.display_name_minLength": "Nome do canal deve ter {minLength, number} caracteres ou mais", + "mobile.rename_channel.display_name_required": "Nome do canal é obrigatório", + "mobile.request.invalid_response": "Recebido uma resposta inválida do servidor.", + "mobile.reset_status.alert_cancel": "Cancelar", + "mobile.reset_status.title_ooo": "Desativar \"Fora Do Escritório\"?", + "mobile.routes.code": "{language} Código", + "mobile.routes.code.noLanguage": "Código", + "mobile.routes.custom_status": "Definir um status", + "mobile.routes.table": "Tabela", + "mobile.routes.user_profile": "Perfil", + "mobile.search.jump": "Ir para as mensagens recentes", + "mobile.server_link.error.text": "O link não pôde ser encontrado neste servidor.", + "mobile.server_link.error.title": "Erro Link", + "mobile.server_link.unreachable_channel.error": "Este link pertence a uma mensagem apagada ou a um canal do qual você não tem acesso.", + "mobile.server_link.unreachable_team.error": "Este link pertence a uma mensagem apagada ou a um canal do qual você não tem acesso.", + "mobile.server_upgrade.alert_description": "Esta versão do servidor não é suportada e os usuários serão expostos a problemas de compatibilidade que causam falhas ou erros graves que quebram a funcionalidade principal do aplicativo. É necessário atualizar para a versão do servidor {serverVersion} ou posterior.", + "mobile.server_upgrade.button": "OK", + "mobile.server_upgrade.dismiss": "Ignorar", + "mobile.server_upgrade.learn_more": "Saiba Mais", + "mobile.server_upgrade.title": "Atualização do servidor necessária", + "mobile.server_url.empty": "Insira um URL de servidor válido", + "mobile.server_url.invalid_format": "URL deve começar com http:// ou https://", + "mobile.set_status.away": "Ausente", + "mobile.set_status.dnd": "Não Perturbe", + "mobile.set_status.offline": "Desconectado", + "mobile.set_status.online": "Conectado", + "mobile.storage_permission_denied_title": "{applicationName} gostaria de acessar seus arquivos", + "mobile.suggestion.members": "Membros", + "mobile.system_message.channel_archived_message": "{username} arquivou o canal", + "mobile.system_message.channel_unarchived_message": "{username} desarquivou o canal", + "mobile.system_message.update_channel_displayname_message_and_forget.updated_from": "{username} atualizou o nome de exibição do canal de: {oldDisplayName} para: {newDisplayName}", + "mobile.system_message.update_channel_header_message_and_forget.removed": "{username} removeu o cabeçalho do canal (era: {oldHeader})", + "mobile.system_message.update_channel_header_message_and_forget.updated_from": "{username} atualizou o cabeçalho do canal de: {oldHeader} para: {newHeader}", + "mobile.system_message.update_channel_header_message_and_forget.updated_to": "{username} atualizou o cabeçalho do canal para: {newHeader}", + "mobile.system_message.update_channel_purpose_message.removed": "{username} removeu o propósito do canal (era: {oldPurpose})", + "mobile.system_message.update_channel_purpose_message.updated_from": "{username} atualizou o propósito do canal de: {oldPurpose} para: {newPurpose}", + "mobile.system_message.update_channel_purpose_message.updated_to": "{username} atualizou o propósito do canal para: {newPurpose}", + "mobile.tos_link": "Termos de Serviço", + "mobile.unsupported_server.message": "Anexos, visualizações de links, reações e dados incorporados podem não ser exibidos corretamente. Se esse problema persistir, entre em contato com o administrador do sistema para atualizar o servidor Mattermost.", + "mobile.unsupported_server.ok": "OK", + "mobile.unsupported_server.title": "Versão do servidor não suportada", + "mobile.user_list.deactivated": "Desativado", + "modal.manual_status.auto_responder.message_": "Você gostaria de trocar o seu status para \"{status}\" e desativar as Respostas Automáticas?", + "modal.manual_status.auto_responder.message_away": "Você gostaria de trocar o seu status para \"Ausente\" e desativar as Respostas Automáticas?", + "modal.manual_status.auto_responder.message_dnd": "Você gostaria de trocar o seu status para \"Não Perturbe\" e desativar as Respostas Automáticas?", + "modal.manual_status.auto_responder.message_offline": "Você gostaria de trocar o seu status para \"Desconectado\" e desativar as Respostas Automáticas?", + "modal.manual_status.auto_responder.message_online": "Você gostaria de trocar o seu status para \"Conectado\" e desativar as Respostas Automáticas?", + "msg_typing.areTyping": "{users} e {last} estão digitando...", + "msg_typing.isTyping": "{user} está digitando...", + "password_send.description": "Para redefinir sua senha, digite o endereço de email que você usou para se inscrever", + "password_send.error": "Por favor entre um endereço de e-mail válido.", + "password_send.link": "Se a conta existir, um email de redefinição de senha será enviado para:", + "permalink.show_dialog_warn.cancel": "Cancelar", + "permalink.show_dialog_warn.join": "Juntar", + "permalink.show_dialog_warn.title": "Junte-se ao canal privado", + "post_body.check_for_out_of_channel_groups_mentions.message": "não foi notificado por esta menção porque não estão no canal. Eles não podem ser adicionados ao canal porque não são membros dos grupos vinculados. Para adicioná-los a este canal, eles devem ser adicionados aos grupos vinculados.", + "post_body.check_for_out_of_channel_mentions.link.and": " e ", + "post_body.check_for_out_of_channel_mentions.link.private": "adicionar a este canal privado", + "post_body.check_for_out_of_channel_mentions.link.public": "adicionar ao canal", + "post_body.check_for_out_of_channel_mentions.message_last": "? Terão acesso a todo o histórico de mensagens.", + "post_body.check_for_out_of_channel_mentions.message.multiple": "foram mencionados mas eles não estão no canal. Você gostaria de ", + "post_body.check_for_out_of_channel_mentions.message.one": "foi mencionado mas não está no canal. Você gostaria de ", + "post_body.commentedOn": "Comentou a mensagem de {name}: ", + "post_body.deleted": "(mensagem deletada)", + "post_info.del": "Deletar", + "post_info.edit": "Editar", + "post_info.system": "Sistema", + "post_message_view.edited": "(editado)", + "posts_view.newMsg": "Novas Mensagens", + "search_bar.search": "Procurar", + "status_dropdown.set_away": "Ausente", + "status_dropdown.set_dnd": "Não Perturbe", + "status_dropdown.set_offline": "Desconectado", + "status_dropdown.set_online": "Conectado", + "suggestion.mention.all": "Notifica a todos no canal", + "suggestion.mention.channel": "Notifica a todos no canal", + "suggestion.mention.channels": "Meus Canais", + "suggestion.mention.groups": "Menção de Grupo", + "suggestion.mention.here": "Notifica a todos online no canal", + "suggestion.mention.members": "Membros do Canal", + "suggestion.mention.morechannels": "Outros Canais", + "suggestion.mention.nonmembers": "Não no Canal", + "suggestion.mention.special": "Menções Especiais", + "suggestion.mention.you": " (você)", + "suggestion.search.direct": "Mensagens Diretas", + "suggestion.search.private": "Canais Privados", + "suggestion.search.public": "Canais Públicos", + "threads": "Tópicos", + "threads.deleted": "Mensagem original excluída", + "threads.follow": "Seguir", + "threads.following": "Seguindo", + "threads.followMessage": "Seguir mensagem", + "threads.followThread": "Seguir Tópico", + "threads.newReplies": "{count} novo {count, plural, one {reply} other {replies}}", + "threads.replies": "{count} {count, plural, one {reply} other {replies}}", + "threads.unfollowMessage": "Deixar de seguir a mensagem", + "threads.unfollowThread": "Deixar de seguir o tópico", + "user.settings.general.email": "E-mail", + "user.settings.general.firstName": "Primeiro nome", + "user.settings.general.lastName": "Último Nome", + "user.settings.general.nickname": "Apelido", + "user.settings.general.position": "Cargo", + "user.settings.general.username": "Usuário" +} diff --git a/assets/base/i18n/ru.json b/assets/base/i18n/ru.json index 36f0bccc5..37bd81832 100644 --- a/assets/base/i18n/ru.json +++ b/assets/base/i18n/ru.json @@ -239,8 +239,6 @@ "mobile.message_length.message": "Слишком длинное сообщение. Текущее количество знаков: {count}/{max}", "mobile.message_length.message_split_left": "Сообщение превышает лимит символов", "mobile.message_length.title": "Длина сообщения", - "mobile.microphone_permission_denied_description": "Чтобы принять участие в этом вызове, откройте «Настройки», чтобы предоставить Mattermost доступ к вашему микрофону.", - "mobile.microphone_permission_denied_title": "{applicationName} хочет получить доступ к вашему микрофону", "mobile.oauth.failed_to_login": "Ваша попытка входа не удалась. Пожалуйста, попробуйте ещё раз.", "mobile.oauth.failed_to_open_link": "Ссылка не открылась. Пожалуйста, попробуйте еще раз.", "mobile.oauth.something_wrong": "Что-то пошло не так", diff --git a/assets/base/i18n/sv.json b/assets/base/i18n/sv.json index 00fe50525..30ab1d1f3 100644 --- a/assets/base/i18n/sv.json +++ b/assets/base/i18n/sv.json @@ -239,8 +239,6 @@ "mobile.message_length.message": "Ditt meddelande är för långt. Nuvarande antal tecken: {max}/{count}", "mobile.message_length.message_split_left": "Meddelandet överskrider teckenbegränsningen", "mobile.message_length.title": "Meddelandelängd", - "mobile.microphone_permission_denied_description": "För att delta i samtalet, öppna Inställningar och ge Mattermost tillåtelse att använda mikrofonen.", - "mobile.microphone_permission_denied_title": "{applicationName} behöver åtkomst till din mikrofon", "mobile.oauth.failed_to_login": "Inloggningen misslyckades. Försök igen.", "mobile.oauth.failed_to_open_link": "Länken gick inte att öppna. Försök igen.", "mobile.oauth.something_wrong": "Något gick fel", @@ -389,7 +387,7 @@ "alert.removed_from_channel.description": "Du har tagits bort från kanalen {displayName}.", "alert.push_proxy.button": "Okej", "alert.push_proxy_unknown.title": "Notifieringar kunde inte tas emot från den här servern", - "alert.push_proxy_unknown.description": "Den här servern kunde inte ta emot push-notiser av okänd anledning. Detta kommer att försöka igen nästa gång du ansluter.", + "alert.push_proxy_unknown.description": "Den här servern kunde inte ta emot push-notiser av okänd anledning. Nya försök sker nästa gång du ansluter.", "alert.push_proxy_error.title": "Notifieringar kan inte tas emot från den här servern", "alert.push_proxy_error.description": "På grund av serverns konfiguration kan notifieringar inte tas emot i mobilappen. Kontakta din systemadministratör för mer information.", "alert.channel_deleted.title": "Arkiverad kanal", @@ -399,5 +397,257 @@ "account.user_status.title": "Användarnärvaro", "account.settings": "Inställningar", "account.logout_from": "Logga ut från {serverName}", - "account.logout": "Logga ut" + "account.logout": "Logga ut", + "mobile.search.show_more": "Visa mer", + "mobile.search.show_less": "Visa mindre", + "mobile.search.modifier.phrases": "meddelanden med fraser", + "mobile.search.modifier.in": "en viss kanal", + "mobile.search.modifier.from": "en specifik användare", + "mobile.search.modifier.exclude": "sökterm att utesluta", + "mobile.screen.your_profile": "Din profil", + "mobile.screen.settings": "Inställningar", + "mobile.reset_status.alert_ok": "OK", + "mobile.request.invalid_request_method": "Ogiltig förfrågningsmetod", + "mobile.post_pre_header.saved": "Sparad", + "mobile.post_pre_header.pinned_saved": "Nålad och sparad", + "mobile.post_info.unsave": "Ångra spara", + "mobile.post_info.save": "Spara", + "mobile.participants.header": "Deltagare i tråden", + "mobile.oauth.switch_to_browser.title": "Omdirigeras...", + "mobile.oauth.switch_to_browser.error_title": "Fel vid inloggning", + "mobile.oauth.switch_to_browser": "Du omdirigeras till din inloggningsleverantör", + "mobile.oauth.something_wrong.okButton": "OK", + "mobile.oauth.failed_to_open_link_no_browser": "Länken kunde inte öppnas. Kontrollera att en webbläsare är installerad.", + "mobile.no_results.spelling": "Kontrollera stavningen eller sök igen.", + "mobile.no_results_with_term.messages": "Inga träffar hittades för “{term}”", + "mobile.no_results_with_term.files": "Inga filer som matchar “{term}”", + "mobile.no_results_with_term": "Inga resultat för “{term}”", + "mobile.login_options.sso_continue": "Fortsätt med", + "mobile.login_options.separator_text": "eller logga in med", + "mobile.login_options.select_option": "Välj ett inloggningsalternativ nedan.", + "mobile.login_options.saml": "SAML", + "mobile.login_options.openid": "Open ID", + "mobile.login_options.office365": "Office 365", + "mobile.login_options.none": "Du kan inte logga in på ditt konto ännu. Minst ett inloggningsalternativ måste vara konfigurerat. Kontakta din systemadministratör för att få hjälp.", + "mobile.login_options.heading": "Logga in på ditt konto", + "mobile.login_options.google": "Google", + "mobile.login_options.gitlab": "GitLab", + "mobile.login_options.enter_credentials": "Ange dina inloggningsuppgifter nedan.", + "mobile.login_options.cant_heading": "Kan inte logga in", + "mobile.leave_and_join_title": "Är du säker på att du vill byta till ett annat samtal?", + "mobile.leave_and_join_message": "Du är redan i ett kanalsamtal i ~{leaveChannelName}. Vill du lämna det samtalet och ansluta till samtalet i ~{joinChannelName}?", + "mobile.leave_and_join_confirmation": "Lämna & Anslut", + "mobile.join_channel.error": "Vi kunde inte ansluta till kanalen {displayName}.", + "mobile.ios.photos_permission_denied_description": "Ladda upp foton och videor till din server eller spara dem på din enhet. Öppna Inställningar för att ge {applicationName} läs- och skrivbehörighet till ditt foto- och videobibliotek.", + "mobile.edit_post.error": "Det uppstod ett problem att redigera detta meddelande. Försök igen.", + "mobile.edit_post.delete_title": "Bekräfta radera inlägg", + "mobile.edit_post.delete_question": "Är du säker på att du vill radera det här inlägget?", + "mobile.display_settings.timezone": "Tidszon", + "mobile.display_settings.clockDisplay": "Tidsvisning", + "mobile.direct_message.error": "Vi kunde inte öppna ett direktmeddelande med {displayName}.", + "mobile.custom_status.clear_after.title": "Rensa anpassad status efter", + "mobile.create_post.read_only": "Denna kanal är skrivskyddad.", + "mobile.create_direct_message.you": "@{username} - du", + "mobile.create_direct_message.start": "Start", + "mobile.create_direct_message.one_more": "Du kan lägga till ytterligare 1 användare", + "mobile.create_direct_message.cannot_add_more": "Du kan inte lägga till fler användare", + "mobile.create_direct_message.add_more": "Du kan lägga till {remaining, number} användare", + "mobile.create_channel.title": "Ny kanal", + "mobile.components.select_server_view.msg_welcome": "Välkommen", + "mobile.components.select_server_view.msg_description": "En server är teamets kommunikationscentral som nås via en unik URL-adress", + "mobile.components.select_server_view.msg_connect": "Låt oss ansluta till en server", + "mobile.components.select_server_view.displayName": "Visningsnamn", + "mobile.components.select_server_view.displayHelp": "Välj ett visningsnamn för din server", + "mobile.components.select_server_view.connecting": "Ansluter", + "mobile.channel_list.recent": "Senast", + "mobile.channel_list.unreads": "Olästa", + "mobile.camera_photo_permission_denied_description": "Ta foton och ladda upp dem till servern eller spara dem på din enhet. Öppna Inställningar för att ge {applicationName} läs och skriv-behörigheter till kameran.", + "mobile.calls_you": "(du)", + "mobile.calls_viewing_screen": "Du ser {name}'s skärm", + "mobile.calls_unmute": "Avmjuta", + "mobile.calls_start_call": "Starta ett samtal", + "mobile.calls_speaker": "Högtalare", + "mobile.calls_see_logs": "Se serverloggar", + "mobile.calls_raise_hand": "Räck upp handen", + "mobile.calls_participant_limit_title": "Gränsen för antal deltagare har uppnåtts", + "mobile.calls_ok": "OK", + "mobile.calls_not_available_title": "Calls är inte aktiverat", + "mobile.calls_not_available_option": "(Ej tillgänglig)", + "mobile.calls_not_available_msg": "Kontakta din systemadministratör för att aktivera funktionen.", + "mobile.calls_noone_talking": "Ingen pratar", + "mobile.calls_name_started_call": "{name} startade ett samtal", + "mobile.calls_name_is_talking": "{name} pratar", + "mobile.calls_mute": "Mjuta", + "mobile.calls_more": "Mer", + "mobile.calls_lower_hand": "Ta ner handen", + "mobile.calls_limit_reached": "Gränsen för antal deltagare har uppnåtts", + "mobile.calls_limit_msg": "Det maximala antalet deltagare per samtal är {maxParticipants}. Kontakta din systemadministratör för att öka gränsen.", + "mobile.calls_leave_call": "Lämna samtalet", + "mobile.calls_leave": "Lämna", + "mobile.calls_lasted": "Varade i {duration}", + "mobile.calls_join_call": "Anslut till samtalet", + "mobile.calls_error_title": "Fel", + "mobile.calls_error_message": "Fel: {error}", + "mobile.calls_ended_at": "Avslutades den", + "mobile.calls_end_permission_title": "Fel", + "mobile.calls_end_permission_msg": "Du har inte behörighet att avsluta samtalet. Be den som skapat samtalet att avsluta samtalet.", + "channel_info.public_channel": "Publik kanal", + "channel_info.private_channel": "Privat kanal", + "channel_info.position": "Position", + "channel_info.pinned_messages": "Nålade meddelanden", + "channel_info.notification.none": "Aldrig", + "channel_info.notification.mention": "Omnämnanden", + "channel_info.notification.default": "Standard", + "channel_info.notification.all": "Alla", + "channel_info.nickname": "Alias", + "channel_info.muted": "Mjuta", + "channel_info.mobile_notifications": "Mobilnotifieringar", + "channel_info.mention": "Omnämnande", + "channel_info.members": "Medlemmar", + "channel_info.local_time": "Lokal tid", + "channel_info.leave_public_channel": "Är du säker på att du vill lämna den publika kanalen {displayName}? Du kan alltid ansluta dig igen.", + "channel_info.leave_private_channel": "Är du säker på att du vill lämna den privata kanalen {displayName}? Du kan inte gå med i kanalen om du inte blir inbjuden igen.", + "channel_info.leave_channel": "Lämna kanalen", + "channel_info.leave": "Lämna", + "channel_info.ignore_mentions": "Ignorera @channel, @here, @all", + "channel_info.favorited": "Markerad som favorit", + "channel_info.favorite": "Favorit", + "channel_info.error_close": "Stäng", + "channel_info.edit_header": "Redigera rubrik", + "channel_info.custom_status": "Anpassad status:", + "channel_info.copy_link": "Kopiera länken", + "channel_info.copied": "Kopierad", + "channel_info.convert_private_title": "Konvertera {displayName} till en privat kanal?", + "channel_info.convert_private_success": "{displayName} är nu en privat kanal.", + "channel_info.convert_private_description": "När du konverterar {displayName} till en privat kanal och historik och medlemskap bevaras. Publikt tillgängliga delningar kommer fortfarande vara tillgängliga med alla som kan länken. Medlemskap i en privat kanal kan endast ske via inbjudan.\n\nÄndringen är permanent och kan inte ångras.\n\nÄr du säker på att du vill konvertera {displayName} till en privat kanal?", + "channel_info.convert_private": "Konvertera till privat kanal", + "channel_info.convert_failed": "Det gick inte att konvertera {displayName} till en privat kanal.", + "channel_info.close_gm_channel": "Är du säker på att du vill stänga gruppmeddelandet? Det försvinner från startskärmen, men du kan alltid öppna det igen.", + "channel_info.close_gm": "Stäng gruppmeddelande", + "channel_info.close_dm_channel": "Är du säker på att du vill stänga direktmeddelandet? Det försvinner från startskärmen, men du kan alltid öppna det igen.", + "channel_info.close_dm": "Stäng direktmeddelande", + "channel_info.close": "Stäng", + "channel_info.archive_title": "Arkivera {term}", + "channel_info.archive_failed": "Ett fel inträffade när kanalen {displayName} skulle arkiveras", + "channel_info.archive_description": "Är du säker på att du vill arkivera {term} {name}?", + "channel_info.archive": "Arkivera kanalen", + "channel_info.alertYes": "Ja", + "channel_info.alertNo": "Nej", + "channel_info.alert_retry": "Försök igen", + "channel_header.member_count": "{count, plural, one {# medlem} other {# medlemmar}}", + "channel_header.info": "Visa info", + "channel_header.directchannel.you": "{displayName} (du)", + "browse_channels.title": "Bläddra bland kanaler", + "browse_channels.showSharedChannels": "Visa: Delade kanaler", + "browse_channels.showPublicChannels": "Visa: Publika kanaler", + "browse_channels.showArchivedChannels": "Visa: Arkiverade kanaler", + "browse_channels.sharedChannels": "Delade kanaler", + "browse_channels.publicChannels": "Publika kanaler", + "browse_channels.noMore": "Det finns inga fler kanaler att ansluta till", + "browse_channels.dropdownTitle": "Visa", + "browse_channels.archivedChannels": "Arkiverade kanaler", + "mobile.calls_end_msg_dm": "Är du säker på att du vill avsluta samtalet med {displayName}?", + "mobile.calls_end_msg_channel_default": "Är du säker att du vill avsluta samtalet?", + "mobile.calls_end_msg_channel": "Är du säker att samtalet med {numParticipants} deltagare i {displayName} ska avslutas?", + "mobile.calls_end_call_title": "Avsluta samtal", + "mobile.calls_enable": "Aktivera samtal", + "mobile.calls_disable": "Inaktivera samtal", + "mobile.calls_current_call": "Aktuellt samtal", + "mobile.calls_chat_thread": "Chatt-tråd", + "mobile.calls_call_screen": "Samtal", + "mobile.calls_call_ended": "Samtalet avslutades", + "mobile.android.photos_permission_denied_description": "Ladda upp foton till servern eller spara dem på din enhet. Öppna Inställningar för att ge {applicationName} läs och skriv-rättigheter till fotobiblioteket.", + "mobile.add_team.join_team": "Gå med i ett annat team", + "mobile.add_team.create_team": "Skapa ett nytt team", + "mentions.empty.title": "Inga omnämnanden ännu", + "mentions.empty.paragraph": "Här visas meddelanden när någon nämner dig eller använder termer som du bevakar.", + "markdown.latex.error": "Fel i Latex-återgivning", + "login.signingIn": "Loggar in", + "login.signIn": "Logga in", + "login.invalid_credentials": "Kombinationen av mejladress och lösenord är felaktig", + "login.forgot": "Har du glömt ditt lösenord?", + "login_mfa.token": "Ange MFA-token", + "login_mfa.enterToken": "För att slutföra inloggningen, ange engångskoden från autentiserings-appen.", + "load_teams_error.title": "Kunde inte ladda {serverName}", + "load_teams_error.message": "Det är problem att ladda innehåll från den här servern.", + "load_channels_error.title": "Kunde inte ladda {teamDisplayName}", + "load_channels_error.message": "Det är problem att ladda innehåll för teamet.", + "load_categories_error.title": "Kunde inte läsa in kategorier för {serverName}", + "load_categories_error.message": "Det är problem att ladda innehåll från den här servern.", + "intro.welcome.public": "Lägg till fler teammedlemmar i kanalen eller starta en konversation nedan.", + "intro.welcome.private": "Endast inbjudna medlemmar kan se meddelanden som skickas i denna privata kanal.", + "intro.welcome": "Välkommen till kanalen {displayName}.", + "intro.townsquare": "Välkommen till {name}. Alla blir automatiskt medlemmar i den här kanalen när de går med i teamet.", + "intro.public_channel": "Publik kanal", + "intro.private_channel": "Privat kanal", + "intro.group_message": "Detta är början på ditt samtal med gruppen. Meddelanden och filer som delas här visas inte för någon annan utanför gruppen.", + "intro.direct_message": "Detta är början på ditt samtal med {teammate}. Meddelanden och filer som delas här visas inte för någon annan.", + "intro.created_by": "Skapad av {creator} den {date}.", + "intro.channel_info": "Info", + "intro.add_people": "Lägg till personer", + "interactive_dialog.submit": "Skicka", + "home.header.plus_menu": "Alternativ", + "global_threads.options.title": "Åtgärder i tråden", + "general_settings.notifications": "Notifieringar", + "general_settings.help": "Hjälp", + "general_settings.display": "Visa", + "general_settings.advanced_settings": "Avancerade inställningar", + "general_settings.about": "Om {appTitle}", + "gallery.video_saved": "Video sparad", + "gallery.unsupported": "Förhandsgranskning stöds inte för den här filtypen. Försök att ladda ner eller dela för att öppna i en annan app.", + "gallery.save_failed": "Kunde inte spara filen", + "gallery.preparing": "Förbereder...", + "gallery.opening": "Öppnar...", + "gallery.image_saved": "Bild sparad", + "gallery.downloading": "Laddar ner...", + "gallery.copy_link.failed": "Kunde inte kopiera länken till klippbordet", + "find_channels.title": "Sök kanaler", + "find_channels.open_dm": "Öppna ett direktmeddelande", + "find_channels.new_channel": "Ny kanal", + "find_channels.directory": "Katalog", + "emoji_picker.recent": "Nyligen använda", + "edit_server.title": "Redigera servernamnet", + "edit_server.saving": "Sparar", + "edit_server.save": "Spara", + "edit_server.display_help": "Server: {url}", + "edit_server.description": "Ange ett visningsnamn för den här servern", + "download.error": "Det går inte att ladda ner filen. Försök igen senare", + "display_settings.tz.manual": "Manuell", + "display_settings.tz.auto": "Auto", + "display_settings.timezone": "Tidszon", + "display_settings.theme": "Tema", + "display_settings.clockDisplay": "Tidsvisning", + "display_settings.clock.standard": "12-timmars", + "display_settings.clock.military": "24-timmars", + "custom_status.suggestions.title": "Förslag", + "custom_status.suggestions.recent_title": "Nyligen", + "custom_status.set_status": "Ange status", + "create_post.thread_reply": "Svara på tråden...", + "create_direct_message.title": "Skapa ett direktmeddelande", + "channel_modal.purposeEx": "En kanal att rapportera buggar och förbättringar", + "channel_modal.nameEx": "Buggar, Marknadsföring", + "channel_modal.makePrivate.label": "Gör privat", + "channel_modal.makePrivate.description": "När en kanal är inställd på privat kan endast inbjudna teammedlemmar få tillgång till och delta i kanalen", + "channel_modal.headerHelp": "Ange den text som ska visas i sidhuvudet jämte kanalens namn. Den kan exempelvis innehålla ofta använda länkar genom att ange dem som [Länktitel](http://example.com).", + "channel_modal.headerEx": "Använd Markdown för att formatera rubriktext", + "channel_list.find_channels": "Hitta kanaler...", + "channel_list.favorites_category": "Favoriter", + "channel_list.dms_category": "Direktmeddelanden", + "channel_list.channels_category": "Kanaler", + "channel_intro.createdOn": "Skapad den {date}", + "channel_intro.createdBy": "Skapad av {user} den {date}", + "channel_info.unarchive_title": "Återställ {term} från arkiv", + "channel_info.unarchive_failed": "Ett fel inträffade när den arkiverade kanalen {displayName} skulle återställas", + "channel_info.unarchive_description": "Är du säker på att du vi återställa den arkiverade {term} {name}?", + "channel_info.unarchive": "Återställ arkiverad kanal", + "channel_info.set_header": "Ange rubrik", + "channel_info.send_mesasge": "Skicka meddelande", + "channel_info.send_a_mesasge": "Skicka ett meddelande", + "mobile.server_upgrade.description": "\nEn uppgradering av serverprogramvaran är nödvändig för att kunna använda Mattermost appen. Prata med din Systemadministratör för detaljer.\n", + "mobile.server_requires_client_certificate": "Servern kräver klientcertifikat för autentisering.", + "mobile.server_ping_failed": "Det går inte att ansluta till servern.", + "mobile.server_name.exists": "Du använder det här namnet för en annan server.", + "mobile.server_link.unreachable_user.error": "Vi kan inte omdirigera dig till direktmeddelandet. Den angivna användaren är okänd.", + "mobile.server_identifier.exists": "Du är redan ansluten till den här servern.", + "mobile.search.team.select": "Välj ett team att söka i" } diff --git a/assets/base/i18n/tr.json b/assets/base/i18n/tr.json index a3ccdce79..36d69c9f5 100644 --- a/assets/base/i18n/tr.json +++ b/assets/base/i18n/tr.json @@ -1,382 +1,658 @@ { - "about.date": "Yapım tarihi:", - "about.enterpriseEditione1": "Enterprise paketi", - "about.enterpriseEditionLearn": "Enterprise paketi hakkında ayrıntılı bilgiyi şuradan alabilirsiniz ", - "about.enterpriseEditionSt": "Güvenlik duvarının arkasından modern iletişim.", - "about.hash": "Yapım karması:", - "about.hashee": "Enterprise tarifesi yapım karması:", - "about.teamEditionLearn": "Mattermost topluluğuna katılın: ", - "about.teamEditionSt": "Tüm takım iletişimi tek bir yerde, anında aranabilir ve her yerden erişilebilir.", - "about.teamEditiont0": "Team paketi", - "about.teamEditiont1": "Enterprise paketi", - "api.channel.add_guest.added": "{addedUsername}, {username} tarafından konuk olarak kanala eklendi.", - "api.channel.add_member.added": "{addedUsername} kullanıcısı {username} tarafından kanala eklendi.", - "api.channel.guest_join_channel.post_and_forget": "{username} konuk olarak kanala katıldı.", - "apps.error": "Hata: {error}", - "apps.error.command.field_missing": "Zorunlu alan eksik: `{fieldName}`.", - "apps.error.command.same_channel": "`{fieldName}`alanı için yinelenen kanal: `{option}`.", - "apps.error.command.same_option": "`{fieldName}` alanı için yinelenen seçenek: `{option}`.", - "apps.error.command.same_user": "`{fieldName}` alanı için yinelenen kullanıcı: `{option}`.", - "apps.error.command.unknown_channel": "`{fieldName}` alanı için kanal bilinmiyor: `{option}`.", - "apps.error.command.unknown_option": "`{fieldName}` alanı için seçenek bilinmiyor: `{option}`.", - "apps.error.command.unknown_user": "`{fieldName}` alanı için kullanıcı bilinmiyor: `{option}`.", - "apps.error.form.no_form": "`form` tanımlanmamış.", - "apps.error.form.no_lookup": "`lookup` tanımlanmamış.", - "apps.error.form.no_source": "`source` tanımlanmamış.", - "apps.error.form.no_submit": "`submit` tanımlanmamış", - "apps.error.form.refresh": "Seçilmiş alanlar alınırken bir sorun çıktı. Uygulama geliştiricisi ile görüşün. Ayrıntılar: {details}", - "apps.error.form.refresh_no_refresh": "Yenilenmeyen bir alan için yenileme isteği yapıldı.", - "apps.error.form.submit.pretext": "Üste açılan pencere gönderilirken bir sorun çıktı. Uygulama geliştiricisi ile görüşün. Ayrıntılar: {details}", - "apps.error.lookup.error_preparing_request": "Arama isteği hazırlanırken sorun çıktı: {errorMessage}", - "apps.error.malformed_binding": "Bağlantı biçimi doğru değil. Uygulama geliştirici ile görüşün.", - "apps.error.parser": "İşleme sorunu: {error}", - "apps.error.parser.execute_non_leaf": "Bir alt komut seçmelisiniz.", - "apps.error.parser.missing_binding": "Komut bağlantıları eksik.", - "apps.error.parser.missing_field_value": "Alan değeri eksik.", - "apps.error.parser.missing_list_end": "Liste sonu kod imi bekleniyordu.", - "apps.error.parser.missing_quote": "Girişin sonundan önce bir çift tırnak olmalı.", - "apps.error.parser.missing_source": "Formda submit ya da source tanımlanmamış.", - "apps.error.parser.missing_submit": "Bağlantı ya da formda submit çağrısı yok.", - "apps.error.parser.missing_tick": "Girişin sonundan önce bir tek tırnak olmalı.", - "apps.error.parser.multiple_equal": "Birden çok `=` işareti kullanılamaz.", - "apps.error.parser.no_argument_pos_x": "Değişken belirlenemedi.", - "apps.error.parser.no_bindings": "Herhangi bir komut bağlantısı yok.", - "apps.error.parser.no_form": "Herhangi bir form bulunamadı.", - "apps.error.parser.no_match": "`{command}`: Bu çalışma alanında eşleşen bir komut bulunamadı.", - "apps.error.parser.no_slash_start": "Komutlar `/` karakteri ile başlamalıdır.", - "apps.error.parser.unexpected_character": "Beklenmeyen karakter.", - "apps.error.parser.unexpected_comma": "Beklenmeyen virgül.", - "apps.error.parser.unexpected_error": "Beklenmeyen sorun.", - "apps.error.parser.unexpected_flag": "Komut `{flagName}` seçeneğini kabul etmiyor.", - "apps.error.parser.unexpected_squared_bracket": "Beklenmeyen liste başlangıcı.", - "apps.error.parser.unexpected_state": "Erişilemiyor: matchBinding içinde beklenmeyen durum: `{state}`.", - "apps.error.parser.unexpected_whitespace": "Erişilemiyor: Beklenmeyen beyaz boşluk.", - "apps.error.responses.navigate.no_url": "Yanıt türü `navigate`, ancak yanıtta bir adres bulunmuyor.", - "apps.error.responses.unexpected_error": "Beklenmeyen bir hata iletisi alındı.", - "apps.error.responses.unknown_field_error": "Bilinmeyen bir alan ile ilgili bir sorun çıktı. Alan adı: `{field}`. Hata: {error}.", - "apps.error.responses.unknown_type": "Uygulama yanıtı türü desteklenmiyor. Yanıt türü: {type}.", - "apps.error.unknown": "Bilinmeyen bir sorun çıktı.", - "apps.suggestion.dynamic.error": "Devingen seçim hatası", - "apps.suggestion.errors.parser_error": "İşleme sorunu", - "apps.suggestion.no_dynamic": "Devingen öneri olarak herhangi bir veri döndürülmedi", - "apps.suggestion.no_static": "Uygun bir seçenek yok.", - "apps.suggestion.no_suggestion": "Uygun bir öneri bulunamadı.", - "archivedChannelMessage": "**Arşivlenmiş bir kanala** bakıyorsunuz. Yeni ileti gönderilemez.", - "camera_type.photo.option": "Fotoğraf çek", - "camera_type.title": "Bir işlem seçin", - "camera_type.video.option": "Görüntü kaydet", - "center_panel.archived.closeChannel": "Kanalı kapat", - "channel_info.header": "Başlık:", - "channel_loader.someone": "Biri", - "channel_modal.descriptionHelp": "Bu kanalın ne amaçla kullanılacağını açıklayın.", - "channel_modal.header": "Başlık", - "channel_modal.name": "Ad", - "channel_modal.optional": "(isteğe bağlı)", - "channel_modal.purpose": "Amaç", - "combined_system_message.added_to_channel.many_expanded": "{users} ve {lastUser} {actor} tarafından **kanala eklendi**.", - "combined_system_message.added_to_channel.one": "{firstUser} {actor} tarafından **kanala eklendi**.", - "combined_system_message.added_to_channel.one_you": "{actor} tarafından **kanala eklendiniz**.", - "combined_system_message.added_to_channel.two": "{firstUser} ve {secondUser} {actor} tarafından **kanala eklendi**.", - "combined_system_message.added_to_team.many_expanded": "{users} ve {lastUser} {actor} tarafından **takıma eklendi**.", - "combined_system_message.added_to_team.one": "{firstUser} {actor} tarafından **takıma eklendi**.", - "combined_system_message.added_to_team.one_you": "{actor} tarafından **takıma eklendiniz**.", - "combined_system_message.added_to_team.two": "{firstUser} ve {secondUser} {actor} tarafından **takıma eklendi**.", - "combined_system_message.joined_channel.many_expanded": "{users} ve {lastUser} **kanala katıldı**.", - "combined_system_message.joined_channel.one": "{firstUser} **kanala katıldı**.", - "combined_system_message.joined_channel.one_you": "**Kanala katıldınız**.", - "combined_system_message.joined_channel.two": "{firstUser} ve {secondUser} **kanala katıldı**.", - "combined_system_message.joined_team.many_expanded": "{users} ve {lastUser} **takıma katıldı**.", - "combined_system_message.joined_team.one": "{firstUser} **takıma katıldı**.", - "combined_system_message.joined_team.one_you": "**Takıma katıldınız**.", - "combined_system_message.joined_team.two": "{firstUser} ve {secondUser} **takıma katıldı**.", - "combined_system_message.left_channel.many_expanded": "{users} ve {lastUser} **kanaldan ayrıldı**.", - "combined_system_message.left_channel.one": "{firstUser} **kanaldan ayrıldı**.", - "combined_system_message.left_channel.one_you": "**Kanaldan ayrıldınız**.", - "combined_system_message.left_channel.two": "{firstUser} ve {secondUser} **kanaldan ayrıldı**.", - "combined_system_message.left_team.many_expanded": "{users} ve {lastUser} **takımdan ayrıldı**.", - "combined_system_message.left_team.one": "{firstUser} **takımdan ayrıldı**.", - "combined_system_message.left_team.one_you": "**Takımdan ayrıldınız**.", - "combined_system_message.left_team.two": "{firstUser} ve {secondUser} **takımdan ayrıldı**.", - "combined_system_message.removed_from_channel.many_expanded": "{users} ve {lastUser} **kanaldan çıkarıldı**.", - "combined_system_message.removed_from_channel.one": "{firstUser} **kanaldan çıkarıldı**.", - "combined_system_message.removed_from_channel.one_you": "**Kanaldan çıkarıldınız**.", - "combined_system_message.removed_from_channel.two": "{firstUser} ve {secondUser} **kanaldan çıkarıldı**.", - "combined_system_message.removed_from_team.many_expanded": "{users} ve {lastUser} **takımdan çıkarıldı**.", - "combined_system_message.removed_from_team.one": "{firstUser} **takımdan çıkarıldı**.", - "combined_system_message.removed_from_team.one_you": "**Takımdan çıkarıldınız**.", - "combined_system_message.removed_from_team.two": "{firstUser} ve {secondUser} **takımdan çıkarıldı**.", - "combined_system_message.you": "Siz", - "create_post.deactivated": "Devre dışı bırakılmış bir kullanıcı ile arşivlenmiş bir kanala bakıyorsunuz.", - "create_post.write": "{channelDisplayName} kanalına yazın", - "custom_status.expiry_dropdown.custom": "Özel", - "custom_status.expiry_dropdown.date_and_time": "Tarih ve saat", - "custom_status.expiry_dropdown.dont_clear": "Temizlenmesin", - "custom_status.expiry_dropdown.four_hours": "4 saat", - "custom_status.expiry_dropdown.one_hour": "1 saat", - "custom_status.expiry_dropdown.thirty_minutes": "30 dakika", - "custom_status.expiry_dropdown.this_week": "Bu hafta", - "custom_status.expiry_dropdown.today": "Bugün", - "custom_status.expiry_time.today": "Bugün", - "custom_status.expiry_time.tomorrow": "Yarın", - "custom_status.expiry.at": "şu zamanda", - "custom_status.expiry.until": "Şu zamana kadar", - "custom_status.failure_message": "Durum güncellenemedi. Yeniden deneyin", - "custom_status.suggestions.in_a_meeting": "Toplantıda", - "custom_status.suggestions.on_a_vacation": "Tatilde", - "custom_status.suggestions.out_for_lunch": "Öğle yemeğinde", - "custom_status.suggestions.out_sick": "Hasta", - "custom_status.suggestions.working_from_home": "Evden çalışıyor", - "date_separator.today": "Bugün", - "date_separator.yesterday": "Dün", - "edit_post.editPost": "İletiyi düzenle...", - "edit_post.save": "Kaydet", - "emoji_picker.activities": "Etkinlikler", - "emoji_picker.animals-nature": "Hayvanlar ve doğa", - "emoji_picker.custom": "Özel", - "emoji_picker.flags": "İşaretler", - "emoji_picker.food-drink": "Yeme içme", - "emoji_picker.objects": "Nesneler", - "emoji_picker.people-body": "Kişiler ve beden", - "emoji_picker.searchResults": "Arama sonuçları", - "emoji_picker.smileys-emotion": "Duygu ifadeleri", - "emoji_picker.symbols": "Simgeler", - "emoji_picker.travel-places": "Gezilecek yerler", - "emoji_skin.dark_skin_tone": "koyu deri rengi", - "emoji_skin.default": "varsayılan deri rengi", - "emoji_skin.light_skin_tone": "açık deri rengi", - "emoji_skin.medium_dark_skin_tone": "orta koyu deri rengi", - "emoji_skin.medium_light_skin_tone": "orta açık deri rengi", - "emoji_skin.medium_skin_tone": "orta deri rengi", - "file_upload.fileAbove": "Dosyalar {max} boyutundan küçük olmalıdır", - "friendly_date.daysAgo": "{count} {count, plural, one {gün} other {gün}} önce", - "friendly_date.hoursAgo": "{count} {count, plural, one {saat} other {saat}} önce", - "friendly_date.minsAgo": "{count} {count, plural, one {dakika} other {dakika}} önce", - "friendly_date.monthsAgo": "{count} {count, plural, one {ay} other {ay}} önce", - "friendly_date.now": "Şimdi", - "friendly_date.yearsAgo": "{count} {count, plural, one {yıl} other {yıl}} önce", - "friendly_date.yesterday": "Dün", - "gallery.footer.channel_name": "{channelName} kanalında paylaşılmış", - "gallery.open_file": "Dosyayı aç", - "get_post_link_modal.title": "Bağlantıyı kopyala", - "global_threads.allThreads": "Tüm konularınız", - "global_threads.emptyThreads.message": "Bahsettiğiniz veya katıldığınız tüm konular, izlediğiniz tüm konularla birlikte burada görüntülenir.", - "global_threads.emptyThreads.title": "İzlenen bir konu yok", - "global_threads.emptyUnreads.message": "Tüm konulara bakmışsınız gibi görünüyor.", - "global_threads.emptyUnreads.title": "Okunmamış bir konu yok", - "global_threads.markAllRead.cancel": "İptal", - "global_threads.markAllRead.markRead": "Okunmuş olarak işaretle", - "global_threads.markAllRead.message": "Bu işlem, burada görüntülenen tüm konularınız için okunmamış durumlarını temizler", - "global_threads.markAllRead.title": "Tüm konuları okundu olarak işaretlemek istediğinize emin misiniz?", - "global_threads.options.mark_as_read": "Okunmuş olarak işaretle", - "global_threads.options.open_in_channel": "Kanalda aç", - "global_threads.unreads": "Okunmamışlar", - "last_users_message.added_to_channel.type": "{actor} tarafından **kanala eklendiniz**.", - "last_users_message.added_to_team.type": "{actor} tarafından **takıma eklendiniz**.", - "last_users_message.first": "{firstUser} ve ", - "last_users_message.joined_channel.type": "**kanala katıldı**.", - "last_users_message.joined_team.type": "**takıma katıldı**.", - "last_users_message.left_channel.type": "**kanaldan ayrıldı**.", - "last_users_message.left_team.type": "**takımdan ayrıldı**.", - "last_users_message.others": "{numOthers} diğer kullanıcı ", - "last_users_message.removed_from_channel.type": "**kanaldan çıkarıldı**.", - "last_users_message.removed_from_team.type": "**takımdan çıkarıldı**.", - "login_mfa.tokenReq": "Lütfen bir ÇAKD kodu yazın", - "login.email": "E-posta", - "login.ldapUsername": "AD/LDAP kullanıcı adı", - "login.or": "ya da", - "login.password": "Parola", - "login.username": "Kullanıcı adı", - "mobile.about.appVersion": "Uygulama sürümü: {version} (Build {number})", - "mobile.account.settings.save": "Kaydet", - "mobile.action_menu.select": "Bir seçim yapın", - "mobile.android.back_handler_exit": "Çıkmak için yeniden geri üzerine tıklayın", - "mobile.android.photos_permission_denied_title": "{applicationName} fotoğraflarınıza erişmek istiyor", - "mobile.camera_photo_permission_denied_title": "{applicationName} kameranıza erişmek istiyor", - "mobile.channel_info.alertNo": "Hayır", - "mobile.channel_info.alertYes": "Evet", - "mobile.commands.error_title": "Komut yürütülürken sorun çıktı", - "mobile.components.select_server_view.connect": "Bağlan", - "mobile.components.select_server_view.enterServerUrl": "Sunucu adresini yazın", - "mobile.components.select_server_view.proceed": "İlerle", - "mobile.create_channel": "Ekle", - "mobile.custom_status.choose_emoji": "Bir emoji seçin", - "mobile.custom_status.clear_after": "Şu kadar zaman sonra temizlensin", - "mobile.custom_status.modal_confirm": "Tamam", - "mobile.display_settings.theme": "Tema", - "mobile.document_preview.failed_description": "Belge açılırken bir sorun çıktı. Lütfen {fileType} türündeki dosyalar için bir görüntüleyicinin kurulmuş olduğundan emin olun ve yeniden deneyin.\n", - "mobile.document_preview.failed_title": "Belge açılamadı", - "mobile.downloader.disabled_description": "Bu sunucu üzerinde dosya indirme özelliği devre dışı bırakılmış. Ayrıntılı bilgi almak için Sistem Yöneticisi ile görüşebilirsiniz.\n", - "mobile.downloader.disabled_title": "İndirme devre dışı", - "mobile.downloader.failed_description": "Dosya indirilirken bir sorun çıktı. Lütfen İnternet bağlantınızı denetleyip yeniden deneyin.\n", - "mobile.downloader.failed_title": "İndirilemedi", - "mobile.edit_channel": "Kaydet", - "mobile.edit_post.title": "İleti düzenleniyor", - "mobile.error_handler.button": "Yeniden başlat", - "mobile.error_handler.description": "\nUygulamayı açmak için yeniden başlat üzerine tıklayın. Yeniden başlatıldıktan sonra ayarlar menüsünden sorunu bildirebilirsiniz.\n", - "mobile.error_handler.title": "Beklenmeyen bir sorun çıktı", - "mobile.file_upload.disabled2": "Mobil uygulamadan dosya yüklemek devre dışı bırakılmış.", - "mobile.file_upload.max_warning": "En fazla {count} dosya yüklenebilir.", - "mobile.files_paste.error_description": "Dosyalar yapıştırılırken bir sorun çıktı. Lütfen yeniden deneyin.", - "mobile.files_paste.error_dismiss": "Yok say", - "mobile.files_paste.error_title": "Yapıştırılamadı", - "mobile.gallery.title": "{index} / {total}", - "mobile.ios.photos_permission_denied_title": "{applicationName} fotoğraflarınıza erişmek istiyor", - "mobile.link.error.text": "Bağlantı açılamadı.", - "mobile.link.error.title": "Hata", - "mobile.managed.blocked_by": "{vendor} tarafından engellenmiş", - "mobile.managed.exit": "Çık", - "mobile.managed.jailbreak": "Jailbreak uygulanmış aygıtlara {vendor} tarafından güvenilmiyor, lütfen uygulamadan çıkın.", - "mobile.managed.not_secured.android": "Bu aygıtta Mattermost kullanılabilmesi için ekran kilidi güvenliğinin etkinleştirilmesi gerekir.", - "mobile.managed.not_secured.ios": "Bu aygıtta Mattermost kullanılabilmesi için parola güvenliğinin etkinleştirilmesi gerekir.\n\nAyarlar > Face ID ve Parola bölümünden ayarlayabilirsiniz.", - "mobile.managed.not_secured.ios.touchId": "Bu aygıtta Mattermost kullanılabilmesi için parola güvenliğinin etkinleştirilmesi gerekir.\n\nAyarlar > Touch ID ve Parola bölümünden ayarlayabilirsiniz.", - "mobile.managed.secured_by": "{vendor} tarafından korunuyor", - "mobile.managed.settings": "Ayarlara git", - "mobile.markdown.code.copy_code": "Kodu Kopyala", - "mobile.markdown.code.plusMoreLines": "+ {count, number} diğer {count, plural, one {satır} other {satır}}", - "mobile.markdown.image.too_large": "Görsel {maxWidth} x {maxHeight} boyutundan büyük:", - "mobile.markdown.link.copy_url": "Adresi kopyala", - "mobile.mention.copy_mention": "Anmayı kopyala", - "mobile.message_length.message": "Yazdığınız ileti çok uzun. Şu andaki karakter sayısı: {count}/{max}", - "mobile.message_length.message_split_left": "İletinin uzunluğu karakter sınırını aşıyor", - "mobile.message_length.title": "İleti uzunluğu", - "mobile.microphone_permission_denied_description": "Bu çağrıya katılmak için, Ayarlar bölümüne giderek Mattermost için mikrofona erişme izni verin.", - "mobile.microphone_permission_denied_title": "{applicationName} mikrofonunuza erişmek istiyor", - "mobile.oauth.failed_to_login": "Oturum açma girişimi başarısız oldu. Lütfen yeniden deneyin.", - "mobile.oauth.failed_to_open_link": "Bağlantı açılamadı. Lütfen yeniden deneyin.", - "mobile.oauth.something_wrong": "Bir şeyler ters gitti", - "mobile.oauth.try_again": "Yeniden dene", - "mobile.open_gm.error": "Bu kullanıcılar ile bir grup iletisi açılamadı. Lütfen bağlantınızı denetleyip yeniden deneyin.", - "mobile.permission_denied_dismiss": "İzin verme", - "mobile.permission_denied_retry": "Ayarlar", - "mobile.post_info.add_reaction": "Tepki ekle", - "mobile.post_info.copy_text": "Metni kopyala", - "mobile.post_info.mark_unread": "Okunmamış olarak işaretle", - "mobile.post_info.pin": "Kanala sabitle", - "mobile.post_info.reply": "Yanıtla", - "mobile.post_info.unpin": "Kanal sabitlemesini kaldır", - "mobile.post_pre_header.pinned": "Sabitlenmiş", - "mobile.post_textbox.entire_channel_here.message": "@here kullanıldığında bildirimler {totalMembers, number} {totalMembers, plural, one {kişiye} other {kişiye}} gönderilir. Bunu yapmak istediğinize emin misiniz?", - "mobile.post_textbox.entire_channel_here.message.with_timezones": "@here kullanıldığında bildirimler {totalMembers, number} {totalMembers, plural, one {person} other {people}} kişiye ve {timezones, number} {timezones, plural, one {saat dilimine} other {saat dilimine}} gönderilir. Bunu yapmak istediğinize emin misiniz?", - "mobile.post_textbox.entire_channel.cancel": "İptal", - "mobile.post_textbox.entire_channel.confirm": "Onayla", - "mobile.post_textbox.entire_channel.message": "@all ya da @channel kullanıldığında bildirimler {totalMembers, number} {totalMembers, plural, one {kişiye} other {kişiye}} gönderilir. Bunu yapmak istediğinize emin misiniz?", - "mobile.post_textbox.entire_channel.message.with_timezones": "@all ya da @channel kullanıldığında bildirimler {totalMembers, number} {totalMembers, plural, one {person} other {people}} kişiye ve {timezones, number} {timezones, plural, one {saat dilimine} other {saat dilimine}} gönderilir. Bunu yapmak istediğinize emin misiniz?", - "mobile.post_textbox.entire_channel.title": "Bildirimlerin tüm kanala gönderilmesini onayla", - "mobile.post_textbox.groups.title": "Gruplara bildirim gönderilmesini onaylayın", - "mobile.post_textbox.uploadFailedDesc": "Bazı ek dosyaları sunucuya yüklenemedi. İletiyi göndermek istediğinize emin misiniz?", - "mobile.post_textbox.uploadFailedTitle": "Ek dosya yüklenemedi", - "mobile.post.cancel": "İptal", - "mobile.post.delete_question": "Bu iletiyi silmek istediğinize emin misiniz?", - "mobile.post.delete_title": "İletiyi sil", - "mobile.post.failed_delete": "İletiyi sil", - "mobile.post.failed_retry": "Yeniden dene", - "mobile.posts_view.moreMsg": "Yukarıdaki diğer yeni iletiler", - "mobile.privacy_link": "Kişisel verilerin gizliliği ilkesi", - "mobile.push_notification_reply.button": "Gönder", - "mobile.push_notification_reply.placeholder": "Yanıt yazın...", - "mobile.push_notification_reply.title": "Yanıtla", - "mobile.rename_channel.display_name_maxLength": "Kanal adı en fazla {maxLength, number} karakter uzunluğunda olmalıdır", - "mobile.rename_channel.display_name_minLength": "Kanal adı en az {minLength, number} karakter uzunluğunda olmalıdır", - "mobile.rename_channel.display_name_required": "Kanal adının yazılması zorunludur", - "mobile.request.invalid_response": "Sunucudan geçersiz bir yanıt alındı.", - "mobile.reset_status.alert_cancel": "İptal", - "mobile.reset_status.title_ooo": "\"Ofis dışında\" devre dışı bırakılsın mı?", - "mobile.routes.code": "{language} kodu", - "mobile.routes.code.noLanguage": "Kod", - "mobile.routes.custom_status": "Bir durum ayarlayın", - "mobile.routes.table": "Tablo", - "mobile.routes.user_profile": "Profil", - "mobile.search.jump": "Son iletilere git", - "mobile.server_link.error.text": "Bağlantı bu sunucu üzerinde bulunamadı.", - "mobile.server_link.error.title": "Bağlantı sorunu", - "mobile.server_link.unreachable_channel.error": "Bu bağlantı silinmiş ya da erişiminiz olmayan bir kanala ait.", - "mobile.server_link.unreachable_team.error": "Bu bağlantı silinmiş ya da erişiminiz olmayan bir takıma ait.", - "mobile.server_upgrade.alert_description": "Bu sunucu sürümü desteklenmediğinden, kullanıcılar uyumluluk sorunlarından kaynaklanan çökmeler ya da uygulamanın temel işlevselliğini bozan ciddi sorunlar ile karşılaşacak. Sunucunun {serverVersion} ya da üzerindeki bir sürüme güncellenmesi gerekli.", - "mobile.server_upgrade.button": "Tamam", - "mobile.server_upgrade.dismiss": "Kapat", - "mobile.server_upgrade.learn_more": "Ayrıntılı bilgi alın", - "mobile.server_upgrade.title": "Sunucunun güncellenmesi gerekli", - "mobile.server_url.empty": "Lütfen geçerli bir sunucu adresi yazın", - "mobile.server_url.invalid_format": "Adres http:// yada https:// ile başlamalıdır", - "mobile.set_status.away": "Uzakta", - "mobile.set_status.dnd": "Rahatsız etmeyin", - "mobile.set_status.offline": "Çevrimdışı", - "mobile.set_status.online": "Çevrimiçi", - "mobile.storage_permission_denied_title": "{applicationName} dosyalarınıza erişmek istiyor", - "mobile.suggestion.members": "Üyeler", - "mobile.system_message.channel_archived_message": "{username} kanalı arşivledi", - "mobile.system_message.channel_unarchived_message": "{username} kanalı arşivden çıkardı", - "mobile.system_message.update_channel_displayname_message_and_forget.updated_from": "{username}, {oldDisplayName} olarak görüntülenen kanal adını {newDisplayName} olarak değiştirdi", - "mobile.system_message.update_channel_header_message_and_forget.removed": "{username} kanal başlığını kaldırdı ({oldHeader} idi)", - "mobile.system_message.update_channel_header_message_and_forget.updated_from": "{username}, {oldHeader} olan eski kanal başlığını {newHeader} olarak değiştirdi", - "mobile.system_message.update_channel_header_message_and_forget.updated_to": "{username} kanal başlığını {newHeader} olarak değiştirdi", - "mobile.system_message.update_channel_purpose_message.removed": "{username} kanal amacını kaldırdı ({oldPurpose} idi)", - "mobile.system_message.update_channel_purpose_message.updated_from": "{username}, {oldPurpose} olan eski kanal amacını {newPurpose} olarak değiştirdi", - "mobile.system_message.update_channel_purpose_message.updated_to": "{username} kanal amacını {newPurpose} olarak değiştirdi", - "mobile.tos_link": "Hizmet koşulları", - "mobile.unsupported_server.message": "Ek dosyalar, bağlantı ön izlemeleri, tepkiler ve gömülü veriler doğru görüntülenmeyebilir. Bu sorun sürerse sistem yöneticinize Mattermost sunucusunu güncellemesi gerektiğini bildirin.", - "mobile.unsupported_server.ok": "Tamam", - "mobile.unsupported_server.title": "Sunucu sürümü desteklenmiyor", - "mobile.user_list.deactivated": "Devre Dışı", - "modal.manual_status.auto_responder.message_": "Durumunuzu \"{status}\" olarak değiştirmek ve otomatik yanıtları devre dışı bırakmak istediğinize emin misiniz?", - "modal.manual_status.auto_responder.message_away": "Durumunuzu \"Uzakta\" olarak değiştirmek ve otomatik yanıtları devre dışı bırakmak istediğinize emin misiniz?", - "modal.manual_status.auto_responder.message_dnd": "Durumunuzu \"Rahatsız etmeyin\" olarak değiştirmek ve otomatik yanıtları devre dışı bırakmak istediğinize emin misiniz?", - "modal.manual_status.auto_responder.message_offline": "Durumunuzu \"Çevrimdışı\" olarak değiştirmek ve otomatik yanıtları devre dışı bırakmak istediğinize emin misiniz?", - "modal.manual_status.auto_responder.message_online": "Durumunuzu \"Çevrimiçi\" olarak değiştirmek ve otomatik yanıtları devre dışı bırakmak istediğinize emin misiniz?", - "msg_typing.areTyping": "{users} ve {last} yazıyor...", - "msg_typing.isTyping": "{user} yazıyor...", - "password_send.description": "Parolanızı sıfırlamak için hesabınızı açarken kullandığınız e-posta adresini yazın", - "password_send.error": "Lütfen geçerli bir e-posta adresi yazın.", - "password_send.link": "Hesap varsa şuraya bir parola sıfırlama e-postası gönderilecek:", - "permalink.show_dialog_warn.cancel": "İptal", - "permalink.show_dialog_warn.join": "Katıl", - "permalink.show_dialog_warn.title": "Özel kanala katıl", - "post_body.check_for_out_of_channel_groups_mentions.message": "kanalda bulunmadıkları için bu anma nedeniyle bildirim gönderilmeyecek. İlişkilendirilmiş grupların üyesi olmadıklarından bu kanala eklenemezler. Onları bu kanala eklemek için ilişkilendirilmiş gruplara eklenmeleri gerekir.", - "post_body.check_for_out_of_channel_mentions.link.and": " ve ", - "post_body.check_for_out_of_channel_mentions.link.private": "bu özel kanala eklemek ister misiniz", - "post_body.check_for_out_of_channel_mentions.link.public": "kanala eklemek ister misiniz", - "post_body.check_for_out_of_channel_mentions.message_last": "? Tüm ileti geçmişini görebilirler.", - "post_body.check_for_out_of_channel_mentions.message.multiple": "anılmış ancak kanalda değiller. Şunu yapmak ister misiniz ", - "post_body.check_for_out_of_channel_mentions.message.one": "anılmış ancak kanalda değil. Şunu yapmak ister misiniz ", - "post_body.commentedOn": "{name}{apostrophe} iletisine yorum yapıldı: ", - "post_body.deleted": "(ileti silindi)", - "post_info.del": "Sil", - "post_info.edit": "Düzenle", - "post_info.system": "Sistem", - "post_message_view.edited": "(düzenlendi)", - "posts_view.newMsg": "Yeni iletiler", - "search_bar.search": "Arama", - "status_dropdown.set_away": "Uzakta", - "status_dropdown.set_dnd": "Rahatsız etmeyin", - "status_dropdown.set_offline": "Çevrimdışı", - "status_dropdown.set_online": "Çevrimiçi", - "suggestion.mention.all": "Bu kanaldaki herkese bildirilir", - "suggestion.mention.channel": "Bu kanaldaki herkese bildirilir", - "suggestion.mention.channels": "Kanallarım", - "suggestion.mention.groups": "Grup anmaları", - "suggestion.mention.here": "Bu kanalda çevrimiçi olan herkese bildirilir", - "suggestion.mention.members": "Kanal üyeleri", - "suggestion.mention.morechannels": "Diğer kanallar", - "suggestion.mention.nonmembers": "Kanalda değil", - "suggestion.mention.special": "Özel anmalar", - "suggestion.mention.you": " (siz)", - "suggestion.search.direct": "Doğrudan iletiler", - "suggestion.search.private": "Özel kanallar", - "suggestion.search.public": "Herkese açık kanallar", - "threads": "Konular", - "threads.deleted": "Özgün ileti silindi", - "threads.follow": "İzle", - "threads.following": "İzleniyor", - "threads.followMessage": "İletiyi izle", - "threads.followThread": "Konuyu izle", - "threads.newReplies": "{count} yeni {count, plural, one {yanıt} other {yanıt}}", - "threads.replies": "{count} {count, plural, one {yanıt} other {yanıt}}", - "threads.unfollowMessage": "İletiyi takibi bırak", - "threads.unfollowThread": "Konuyu takibi bırak", - "user.settings.general.email": "E-posta", - "user.settings.general.firstName": "Ad", - "user.settings.general.lastName": "Soyad", - "user.settings.general.nickname": "Takma ad", - "user.settings.general.position": "Unvan", - "user.settings.general.username": "Kullanıcı adı" -} \ No newline at end of file + "about.date": "Yapım tarihi:", + "about.enterpriseEditione1": "Enterprise paketi", + "about.enterpriseEditionLearn": "Enterprise paketi hakkında ayrıntılı bilgiyi şuradan alabilirsiniz ", + "about.enterpriseEditionSt": "Güvenlik duvarının arkasından modern iletişim.", + "about.hash": "Yapım karması:", + "about.hashee": "Enterprise paketi yapım karması:", + "about.teamEditionLearn": "Mattermost topluluğuna katılın: ", + "about.teamEditionSt": "Tüm takım iletişimi tek bir yerde, anında aranabilir ve her yerden erişilebilir.", + "about.teamEditiont0": "Team paketi", + "about.teamEditiont1": "Enterprise paketi", + "api.channel.add_guest.added": "{addedUsername}, {username} tarafından konuk olarak kanala eklendi.", + "api.channel.add_member.added": "{addedUsername} kullanıcısı {username} tarafından kanala eklendi.", + "api.channel.guest_join_channel.post_and_forget": "{username} konuk olarak kanala katıldı.", + "apps.error": "Hata: {error}", + "apps.error.command.field_missing": "Zorunlu alan eksik: `{fieldName}`.", + "apps.error.command.same_channel": "`{fieldName}`alanında kanal yineleniyor: `{option}`.", + "apps.error.command.same_option": "`{fieldName}` alanında seçenek yineleniyor: `{option}`.", + "apps.error.command.same_user": "`{fieldName}` alanında kullanıcı yineleniyor: `{option}`.", + "apps.error.command.unknown_channel": "`{fieldName}` alanı için kanal bilinmiyor: `{option}`.", + "apps.error.command.unknown_option": "`{fieldName}` alanındaki seçenek bilinmiyor: `{option}`.", + "apps.error.command.unknown_user": "`{fieldName}` alanındaki kullanıcı bilinmiyor: `{option}`.", + "apps.error.form.no_form": "`form` tanımlanmamış.", + "apps.error.form.no_lookup": "`lookup` tanımlanmamış.", + "apps.error.form.no_source": "`source` tanımlanmamış.", + "apps.error.form.no_submit": "`submit` tanımlanmamış", + "apps.error.form.refresh": "Seçilmiş alanlar alınırken bir sorun çıktı. Uygulama geliştiricisi ile görüşün. Ayrıntılar: {details}", + "apps.error.form.refresh_no_refresh": "Yenilenmeyen bir alan için yenileme isteği yapıldı.", + "apps.error.form.submit.pretext": "Üste açılan pencere gönderilirken bir sorun çıktı. Uygulama geliştiricisi ile görüşün. Ayrıntılar: {details}", + "apps.error.lookup.error_preparing_request": "Arama isteği hazırlanırken sorun çıktı: {errorMessage}", + "apps.error.malformed_binding": "Bağlantı biçimi doğru değil. Uygulama geliştiricisi ile görüşün.", + "apps.error.parser": "İşleme sorunu: {error}", + "apps.error.parser.execute_non_leaf": "Bir alt komut seçmelisiniz.", + "apps.error.parser.missing_binding": "Komut bağlantıları eksik.", + "apps.error.parser.missing_field_value": "Alan değeri eksik.", + "apps.error.parser.missing_list_end": "Liste sonu kod imi bekleniyordu.", + "apps.error.parser.missing_quote": "Girişin sonundan önce bir çift tırnak olmalı.", + "apps.error.parser.missing_source": "Formda submit ya da source tanımlanmamış.", + "apps.error.parser.missing_submit": "Bağlantı ya da formda submit çağrısı yok.", + "apps.error.parser.missing_tick": "Girişin sonundan önce bir tek tırnak olmalı.", + "apps.error.parser.multiple_equal": "Birden çok `=` işareti kullanılamaz.", + "apps.error.parser.no_argument_pos_x": "Değişken belirlenemedi.", + "apps.error.parser.no_bindings": "Herhangi bir komut bağlantısı yok.", + "apps.error.parser.no_form": "Herhangi bir form bulunamadı.", + "apps.error.parser.no_match": "`{command}`: Bu çalışma alanında eşleşen bir komut bulunamadı.", + "apps.error.parser.no_slash_start": "Komutlar `/` karakteri ile başlamalıdır.", + "apps.error.parser.unexpected_character": "Beklenmeyen karakter.", + "apps.error.parser.unexpected_comma": "Beklenmeyen virgül.", + "apps.error.parser.unexpected_error": "Beklenmeyen sorun.", + "apps.error.parser.unexpected_flag": "Komut `{flagName}` seçeneğini kabul etmiyor.", + "apps.error.parser.unexpected_squared_bracket": "Beklenmeyen liste başlangıcı.", + "apps.error.parser.unexpected_state": "Erişilemiyor: matchBinding içinde beklenmeyen durum: `{state}`.", + "apps.error.parser.unexpected_whitespace": "Erişilemiyor: Beklenmeyen beyaz boşluk.", + "apps.error.responses.navigate.no_url": "Yanıt türü `navigate`, ancak yanıtta bir adres bulunmuyor.", + "apps.error.responses.unexpected_error": "Beklenmeyen bir hata iletisi alındı.", + "apps.error.responses.unknown_field_error": "Bilinmeyen bir alan ile ilgili bir sorun çıktı. Alan adı: `{field}`. Hata: {error}.", + "apps.error.responses.unknown_type": "Uygulama yanıtı türü desteklenmiyor. Yanıt türü: {type}.", + "apps.error.unknown": "Bilinmeyen bir sorun çıktı.", + "apps.suggestion.dynamic.error": "Devingen seçim hatası", + "apps.suggestion.errors.parser_error": "İşleme sorunu", + "apps.suggestion.no_dynamic": "Devingen öneri olarak herhangi bir veri döndürülmedi", + "apps.suggestion.no_static": "Uygun bir seçenek yok.", + "apps.suggestion.no_suggestion": "Uygun bir öneri bulunamadı.", + "archivedChannelMessage": "**Arşivlenmiş bir kanala** bakıyorsunuz. Yeni ileti gönderilemez.", + "camera_type.photo.option": "Fotoğraf çek", + "camera_type.title": "Bir işlem seçin", + "camera_type.video.option": "Görüntü kaydet", + "center_panel.archived.closeChannel": "Kanalı kapat", + "channel_info.header": "Başlık:", + "channel_loader.someone": "Biri", + "channel_modal.descriptionHelp": "Bu kanalın ne amaçla kullanılacağını açıklayın.", + "channel_modal.header": "Başlık", + "channel_modal.name": "Ad", + "channel_modal.optional": "(isteğe bağlı)", + "channel_modal.purpose": "Amaç", + "combined_system_message.added_to_channel.many_expanded": "{users} ve {lastUser} {actor} tarafından **kanala eklendi**.", + "combined_system_message.added_to_channel.one": "{firstUser} {actor} tarafından **kanala eklendi**.", + "combined_system_message.added_to_channel.one_you": "{actor} tarafından **kanala eklendiniz**.", + "combined_system_message.added_to_channel.two": "{firstUser} ve {secondUser} {actor} tarafından **kanala eklendi**.", + "combined_system_message.added_to_team.many_expanded": "{users} ve {lastUser} {actor} tarafından **takıma eklendi**.", + "combined_system_message.added_to_team.one": "{firstUser} {actor} tarafından **takıma eklendi**.", + "combined_system_message.added_to_team.one_you": "{actor} tarafından **takıma eklendiniz**.", + "combined_system_message.added_to_team.two": "{firstUser} ve {secondUser} {actor} tarafından **takıma eklendi**.", + "combined_system_message.joined_channel.many_expanded": "{users} ve {lastUser} **kanala katıldı**.", + "combined_system_message.joined_channel.one": "{firstUser} **kanala katıldı**.", + "combined_system_message.joined_channel.one_you": "**Kanala katıldınız**.", + "combined_system_message.joined_channel.two": "{firstUser} ve {secondUser} **kanala katıldı**.", + "combined_system_message.joined_team.many_expanded": "{users} ve {lastUser} **takıma katıldı**.", + "combined_system_message.joined_team.one": "{firstUser} **takıma katıldı**.", + "combined_system_message.joined_team.one_you": "**Takıma katıldınız**.", + "combined_system_message.joined_team.two": "{firstUser} ve {secondUser} **takıma katıldı**.", + "combined_system_message.left_channel.many_expanded": "{users} ve {lastUser} **kanaldan ayrıldı**.", + "combined_system_message.left_channel.one": "{firstUser} **kanaldan ayrıldı**.", + "combined_system_message.left_channel.one_you": "**Kanaldan ayrıldınız**.", + "combined_system_message.left_channel.two": "{firstUser} ve {secondUser} **kanaldan ayrıldı**.", + "combined_system_message.left_team.many_expanded": "{users} ve {lastUser} **takımdan ayrıldı**.", + "combined_system_message.left_team.one": "{firstUser} **takımdan ayrıldı**.", + "combined_system_message.left_team.one_you": "**Takımdan ayrıldınız**.", + "combined_system_message.left_team.two": "{firstUser} ve {secondUser} **takımdan ayrıldı**.", + "combined_system_message.removed_from_channel.many_expanded": "{users} ve {lastUser} **kanaldan çıkarıldı**.", + "combined_system_message.removed_from_channel.one": "{firstUser} **kanaldan çıkarıldı**.", + "combined_system_message.removed_from_channel.one_you": "**Kanaldan çıkarıldınız**.", + "combined_system_message.removed_from_channel.two": "{firstUser} ve {secondUser} **kanaldan çıkarıldı**.", + "combined_system_message.removed_from_team.many_expanded": "{users} ve {lastUser} **takımdan çıkarıldı**.", + "combined_system_message.removed_from_team.one": "{firstUser} **takımdan çıkarıldı**.", + "combined_system_message.removed_from_team.one_you": "**Takımdan çıkarıldınız**.", + "combined_system_message.removed_from_team.two": "{firstUser} ve {secondUser} **takımdan çıkarıldı**.", + "combined_system_message.you": "Siz", + "create_post.deactivated": "Devre dışı bırakılmış bir kullanıcı ile arşivlenmiş bir kanala bakıyorsunuz.", + "create_post.write": "{channelDisplayName} kanalına yazın", + "custom_status.expiry_dropdown.custom": "Özel", + "custom_status.expiry_dropdown.date_and_time": "Tarih ve saat", + "custom_status.expiry_dropdown.dont_clear": "Temizlenmesin", + "custom_status.expiry_dropdown.four_hours": "4 saat", + "custom_status.expiry_dropdown.one_hour": "1 saat", + "custom_status.expiry_dropdown.thirty_minutes": "30 dakika", + "custom_status.expiry_dropdown.this_week": "Bu hafta", + "custom_status.expiry_dropdown.today": "Bugün", + "custom_status.expiry_time.today": "Bugün", + "custom_status.expiry_time.tomorrow": "Yarın", + "custom_status.expiry.at": "şu zamanda", + "custom_status.expiry.until": "Şu zamana kadar", + "custom_status.failure_message": "Durum güncellenemedi. Yeniden deneyin", + "custom_status.suggestions.in_a_meeting": "Toplantıda", + "custom_status.suggestions.on_a_vacation": "Tatilde", + "custom_status.suggestions.out_for_lunch": "Öğle yemeğinde", + "custom_status.suggestions.out_sick": "Hasta", + "custom_status.suggestions.working_from_home": "Evden çalışıyor", + "date_separator.today": "Bugün", + "date_separator.yesterday": "Dün", + "edit_post.editPost": "İletiyi düzenle...", + "edit_post.save": "Kaydet", + "emoji_picker.activities": "Etkinlikler", + "emoji_picker.animals-nature": "Hayvanlar ve doğa", + "emoji_picker.custom": "Özel", + "emoji_picker.flags": "İşaretler", + "emoji_picker.food-drink": "Yeme içme", + "emoji_picker.objects": "Nesneler", + "emoji_picker.people-body": "Kişiler ve beden", + "emoji_picker.searchResults": "Arama sonuçları", + "emoji_picker.smileys-emotion": "Duygu ifadeleri", + "emoji_picker.symbols": "Simgeler", + "emoji_picker.travel-places": "Gezilecek yerler", + "emoji_skin.dark_skin_tone": "koyu deri rengi", + "emoji_skin.default": "varsayılan deri rengi", + "emoji_skin.light_skin_tone": "açık deri rengi", + "emoji_skin.medium_dark_skin_tone": "orta koyu deri rengi", + "emoji_skin.medium_light_skin_tone": "orta açık deri rengi", + "emoji_skin.medium_skin_tone": "orta deri rengi", + "file_upload.fileAbove": "Dosyalar {max} boyutundan küçük olmalıdır", + "friendly_date.daysAgo": "{count} {count, plural, one {gün} other {gün}} önce", + "friendly_date.hoursAgo": "{count} {count, plural, one {saat} other {saat}} önce", + "friendly_date.minsAgo": "{count} {count, plural, one {dakika} other {dakika}} önce", + "friendly_date.monthsAgo": "{count} {count, plural, one {ay} other {ay}} önce", + "friendly_date.now": "Şimdi", + "friendly_date.yearsAgo": "{count} {count, plural, one {yıl} other {yıl}} önce", + "friendly_date.yesterday": "Dün", + "gallery.footer.channel_name": "{channelName} kanalında paylaşılmış", + "gallery.open_file": "Dosyayı aç", + "get_post_link_modal.title": "Bağlantıyı kopyala", + "global_threads.allThreads": "Tüm konularınız", + "global_threads.emptyThreads.message": "Andığınız veya katıldığınız tüm konular, izlediğiniz tüm konularla birlikte burada görüntülenir.", + "global_threads.emptyThreads.title": "İzlenen bir konu yok", + "global_threads.emptyUnreads.message": "Tüm konulara bakmışsınız gibi görünüyor.", + "global_threads.emptyUnreads.title": "Okunmamış bir konu yok", + "global_threads.markAllRead.cancel": "İptal", + "global_threads.markAllRead.markRead": "Okunmuş olarak işaretle", + "global_threads.markAllRead.message": "Bu işlem, burada görüntülenen tüm konularınız için okunmamış durumlarını temizler", + "global_threads.markAllRead.title": "Tüm konuları okunmuş olarak işaretlemek istediğinize emin misiniz?", + "global_threads.options.mark_as_read": "Okunmuş olarak işaretle", + "global_threads.options.open_in_channel": "Kanalda aç", + "global_threads.unreads": "Okunmamışlar", + "last_users_message.added_to_channel.type": "{actor} tarafından **kanala eklendiniz**.", + "last_users_message.added_to_team.type": "{actor} tarafından **takıma eklendiniz**.", + "last_users_message.first": "{firstUser} ve ", + "last_users_message.joined_channel.type": "**kanala katıldı**.", + "last_users_message.joined_team.type": "**takıma katıldı**.", + "last_users_message.left_channel.type": "**kanaldan ayrıldı**.", + "last_users_message.left_team.type": "**takımdan ayrıldı**.", + "last_users_message.others": "{numOthers} diğer kullanıcı ", + "last_users_message.removed_from_channel.type": "**kanaldan çıkarıldı**.", + "last_users_message.removed_from_team.type": "**takımdan çıkarıldı**.", + "login_mfa.tokenReq": "Lütfen bir ÇAKD kodu yazın", + "login.email": "E-posta", + "login.ldapUsername": "AD/LDAP kullanıcı adı", + "login.or": "ya da", + "login.password": "Parola", + "login.username": "Kullanıcı adı", + "mobile.about.appVersion": "Uygulama sürümü: {version} (Build {number})", + "mobile.account.settings.save": "Kaydet", + "mobile.action_menu.select": "Bir seçim yapın", + "mobile.android.back_handler_exit": "Çıkmak için yeniden geri üzerine tıklayın", + "mobile.android.photos_permission_denied_title": "{applicationName} fotoğraflarınıza erişmek istiyor", + "mobile.camera_photo_permission_denied_title": "{applicationName} kameranıza erişmek istiyor", + "mobile.channel_info.alertNo": "Hayır", + "mobile.channel_info.alertYes": "Evet", + "mobile.commands.error_title": "Komut yürütülürken sorun çıktı", + "mobile.components.select_server_view.connect": "Bağlan", + "mobile.components.select_server_view.enterServerUrl": "Sunucu adresini yazın", + "mobile.components.select_server_view.proceed": "İlerle", + "mobile.create_channel": "Ekle", + "mobile.custom_status.choose_emoji": "Bir emoji seçin", + "mobile.custom_status.clear_after": "Şu kadar zaman sonra temizlensin", + "mobile.custom_status.modal_confirm": "Tamam", + "mobile.display_settings.theme": "Tema", + "mobile.document_preview.failed_description": "Belge açılırken bir sorun çıktı. Lütfen {fileType} türündeki dosyalar için bir görüntüleyicinin kurulmuş olduğundan emin olun ve yeniden deneyin.\n", + "mobile.document_preview.failed_title": "Belge açılamadı", + "mobile.downloader.disabled_description": "Bu sunucu üzerinde dosya indirme özelliği devre dışı bırakılmış. Ayrıntılı bilgi almak için sistem yöneticisi ile görüşebilirsiniz.\n", + "mobile.downloader.disabled_title": "İndirme devre dışı", + "mobile.downloader.failed_description": "Dosya indirilirken bir sorun çıktı. Lütfen İnternet bağlantınızı denetleyip yeniden deneyin.\n", + "mobile.downloader.failed_title": "İndirilemedi", + "mobile.edit_channel": "Kaydet", + "mobile.edit_post.title": "İleti düzenleniyor", + "mobile.error_handler.button": "Yeniden başlat", + "mobile.error_handler.description": "\nUygulamayı açmak için yeniden başlat üzerine tıklayın. Yeniden başlatıldıktan sonra ayarlar menüsünden sorunu bildirebilirsiniz.\n", + "mobile.error_handler.title": "Beklenmeyen bir sorun çıktı", + "mobile.file_upload.disabled2": "Mobil uygulamadan dosya yüklemek devre dışı bırakılmış.", + "mobile.file_upload.max_warning": "En fazla {count} dosya yüklenebilir.", + "mobile.files_paste.error_description": "Dosyalar yapıştırılırken bir sorun çıktı. Lütfen yeniden deneyin.", + "mobile.files_paste.error_dismiss": "Yok say", + "mobile.files_paste.error_title": "Yapıştırılamadı", + "mobile.gallery.title": "{index} / {total}", + "mobile.ios.photos_permission_denied_title": "{applicationName} fotoğraflarınıza erişmek istiyor", + "mobile.link.error.text": "Bağlantı açılamadı.", + "mobile.link.error.title": "Hata", + "mobile.managed.blocked_by": "{vendor} tarafından engellenmiş", + "mobile.managed.exit": "Çık", + "mobile.managed.jailbreak": "Jailbreak uygulanmış aygıtlara {vendor} tarafından güvenilmiyor. Lütfen uygulamadan çıkın.", + "mobile.managed.not_secured.android": "Bu aygıtta Mattermost kullanılabilmesi için ekran kilidi güvenliğinin etkinleştirilmesi gerekir.", + "mobile.managed.not_secured.ios": "Bu aygıtta Mattermost kullanılabilmesi için parola güvenliğinin etkinleştirilmesi gerekir.\n\nAyarlar > Face ID ve Parola bölümünden ayarlayabilirsiniz.", + "mobile.managed.not_secured.ios.touchId": "Bu aygıtta Mattermost kullanılabilmesi için parola güvenliğinin etkinleştirilmesi gerekir.\n\nAyarlar > Touch ID ve Parola bölümünden ayarlayabilirsiniz.", + "mobile.managed.secured_by": "{vendor} tarafından korunuyor", + "mobile.managed.settings": "Ayarlara git", + "mobile.markdown.code.copy_code": "Kodu kopyala", + "mobile.markdown.code.plusMoreLines": "+ {count, number} diğer {count, plural, one {satır} other {satır}}", + "mobile.markdown.image.too_large": "Görsel {maxWidth} x {maxHeight} boyutundan büyük:", + "mobile.markdown.link.copy_url": "Adresi kopyala", + "mobile.mention.copy_mention": "Anmayı kopyala", + "mobile.message_length.message": "Yazdığınız ileti çok uzun. Şu andaki karakter sayısı: {count}/{max}", + "mobile.message_length.message_split_left": "İletinin uzunluğu karakter sınırını aşıyor", + "mobile.message_length.title": "İleti uzunluğu", + "mobile.oauth.failed_to_login": "Oturum açma girişimi başarısız oldu. Lütfen yeniden deneyin.", + "mobile.oauth.failed_to_open_link": "Bağlantı açılamadı. Lütfen yeniden deneyin.", + "mobile.oauth.something_wrong": "Bir şeyler ters gitti", + "mobile.oauth.try_again": "Yeniden dene", + "mobile.open_gm.error": "Bu kullanıcılar ile bir grup iletisi açılamadı. Lütfen bağlantınızı denetleyip yeniden deneyin.", + "mobile.permission_denied_dismiss": "İzin verme", + "mobile.permission_denied_retry": "Ayarlar", + "mobile.post_info.add_reaction": "Tepki ekle", + "mobile.post_info.copy_text": "Metni kopyala", + "mobile.post_info.mark_unread": "Okunmamış olarak işaretle", + "mobile.post_info.pin": "Kanala sabitle", + "mobile.post_info.reply": "Yanıtla", + "mobile.post_info.unpin": "Kanal sabitlemesini kaldır", + "mobile.post_pre_header.pinned": "Sabitlenmiş", + "mobile.post_textbox.entire_channel_here.message": "@here kullanıldığında bildirimler {totalMembers, number} {totalMembers, plural, one {kişiye} other {kişiye}} gönderilir. Bunu yapmak istediğinize emin misiniz?", + "mobile.post_textbox.entire_channel_here.message.with_timezones": "@here kullanıldığında bildirimler {totalMembers, number} {totalMembers, plural, one {person} other {people}} kişiye ve {timezones, number} {timezones, plural, one {saat dilimine} other {saat dilimine}} gönderilir. Bunu yapmak istediğinize emin misiniz?", + "mobile.post_textbox.entire_channel.cancel": "İptal", + "mobile.post_textbox.entire_channel.confirm": "Onayla", + "mobile.post_textbox.entire_channel.message": "@all ya da @channel kullanıldığında bildirimler {totalMembers, number} {totalMembers, plural, one {kişiye} other {kişiye}} gönderilir. Bunu yapmak istediğinize emin misiniz?", + "mobile.post_textbox.entire_channel.message.with_timezones": "@all ya da @channel kullanıldığında bildirimler {totalMembers, number} {totalMembers, plural, one {person} other {people}} kişiye ve {timezones, number} {timezones, plural, one {saat dilimine} other {saat dilimine}} gönderilir. Bunu yapmak istediğinize emin misiniz?", + "mobile.post_textbox.entire_channel.title": "Bildirimlerin tüm kanala gönderilmesini onaylayın", + "mobile.post_textbox.groups.title": "Gruplara bildirim gönderilmesini onaylayın", + "mobile.post_textbox.uploadFailedDesc": "Bazı ek dosyalar sunucuya yüklenemedi. İletiyi göndermek istediğinize emin misiniz?", + "mobile.post_textbox.uploadFailedTitle": "Ek dosya sorunu", + "mobile.post.cancel": "İptal", + "mobile.post.delete_question": "Bu iletiyi silmek istediğinize emin misiniz?", + "mobile.post.delete_title": "İletiyi sil", + "mobile.post.failed_delete": "İletiyi sil", + "mobile.post.failed_retry": "Yeniden dene", + "mobile.posts_view.moreMsg": "Yukarıdaki diğer yeni iletiler", + "mobile.privacy_link": "Kişisel verilerin gizliliği ilkesi", + "mobile.push_notification_reply.button": "Gönder", + "mobile.push_notification_reply.placeholder": "Yanıt yazın...", + "mobile.push_notification_reply.title": "Yanıtla", + "mobile.rename_channel.display_name_maxLength": "Kanal adı en fazla {maxLength, number} karakter uzunluğunda olmalıdır", + "mobile.rename_channel.display_name_minLength": "Kanal adı en az {minLength, number} karakter uzunluğunda olmalıdır", + "mobile.rename_channel.display_name_required": "Kanal adının yazılması zorunludur", + "mobile.request.invalid_response": "Sunucudan alınan yanıt geçersiz.", + "mobile.reset_status.alert_cancel": "İptal", + "mobile.reset_status.title_ooo": "\"Ofis dışında\" devre dışı bırakılsın mı?", + "mobile.routes.code": "{language} kodu", + "mobile.routes.code.noLanguage": "Kod", + "mobile.routes.custom_status": "Bir durum ayarlayın", + "mobile.routes.table": "Tablo", + "mobile.routes.user_profile": "Profil", + "mobile.search.jump": "Son iletilere git", + "mobile.server_link.error.text": "Bağlantı bu sunucu üzerinde bulunamadı.", + "mobile.server_link.error.title": "Bağlantı sorunu", + "mobile.server_link.unreachable_channel.error": "Bu bağlantı silinmiş ya da erişiminiz olmayan bir kanala ait.", + "mobile.server_link.unreachable_team.error": "Bu bağlantı silinmiş ya da erişiminiz olmayan bir takıma ait.", + "mobile.server_upgrade.alert_description": "Bu sunucu sürümü desteklenmediğinden, kullanıcılar uyumluluk sorunlarından kaynaklanan çökmeler ya da uygulamanın temel işlevselliğini bozan ciddi sorunlar ile karşılaşacak. Sunucunun {serverVersion} ya da üzerindeki bir sürüme güncellenmesi gerekli.", + "mobile.server_upgrade.button": "Tamam", + "mobile.server_upgrade.dismiss": "Kapat", + "mobile.server_upgrade.learn_more": "Ayrıntılı bilgi alın", + "mobile.server_upgrade.title": "Sunucunun güncellenmesi gerekli", + "mobile.server_url.empty": "Lütfen geçerli bir sunucu adresi yazın", + "mobile.server_url.invalid_format": "Adres http:// ya da https:// ile başlamalıdır", + "mobile.set_status.away": "Uzakta", + "mobile.set_status.dnd": "Rahatsız etmeyin", + "mobile.set_status.offline": "Çevrimdışı", + "mobile.set_status.online": "Çevrimiçi", + "mobile.storage_permission_denied_title": "{applicationName} dosyalarınıza erişmek istiyor", + "mobile.suggestion.members": "Üyeler", + "mobile.system_message.channel_archived_message": "{username} kanalı arşivledi", + "mobile.system_message.channel_unarchived_message": "{username} kanalı arşivden çıkardı", + "mobile.system_message.update_channel_displayname_message_and_forget.updated_from": "{username}, {oldDisplayName} olarak görüntülenen kanal adını {newDisplayName} olarak değiştirdi", + "mobile.system_message.update_channel_header_message_and_forget.removed": "{username} kanal başlığını kaldırdı ({oldHeader} idi)", + "mobile.system_message.update_channel_header_message_and_forget.updated_from": "{username}, {oldHeader} olan eski kanal başlığını {newHeader} olarak değiştirdi", + "mobile.system_message.update_channel_header_message_and_forget.updated_to": "{username} kanal başlığını {newHeader} olarak değiştirdi", + "mobile.system_message.update_channel_purpose_message.removed": "{username} kanal amacını kaldırdı ({oldPurpose} idi)", + "mobile.system_message.update_channel_purpose_message.updated_from": "{username}, {oldPurpose} olan eski kanal amacını {newPurpose} olarak değiştirdi", + "mobile.system_message.update_channel_purpose_message.updated_to": "{username} kanal amacını {newPurpose} olarak değiştirdi", + "mobile.tos_link": "Hizmet koşulları", + "mobile.unsupported_server.message": "Ek dosyalar, bağlantı ön izlemeleri, tepkiler ve gömülü veriler doğru görüntülenmeyebilir. Bu sorun sürerse, sistem yöneticinize Mattermost sunucusunu güncellemesi gerektiğini bildirin.", + "mobile.unsupported_server.ok": "Tamam", + "mobile.unsupported_server.title": "Sunucu sürümü desteklenmiyor", + "mobile.user_list.deactivated": "Devre Dışı", + "modal.manual_status.auto_responder.message_": "Durumunuzu \"{status}\" olarak değiştirmek ve otomatik yanıtları devre dışı bırakmak istediğinize emin misiniz?", + "modal.manual_status.auto_responder.message_away": "Durumunuzu \"Uzakta\" olarak değiştirmek ve otomatik yanıtları devre dışı bırakmak istediğinize emin misiniz?", + "modal.manual_status.auto_responder.message_dnd": "Durumunuzu \"Rahatsız etmeyin\" olarak değiştirmek ve otomatik yanıtları devre dışı bırakmak istediğinize emin misiniz?", + "modal.manual_status.auto_responder.message_offline": "Durumunuzu \"Çevrimdışı\" olarak değiştirmek ve otomatik yanıtları devre dışı bırakmak istediğinize emin misiniz?", + "modal.manual_status.auto_responder.message_online": "Durumunuzu \"Çevrimiçi\" olarak değiştirmek ve otomatik yanıtları devre dışı bırakmak istediğinize emin misiniz?", + "msg_typing.areTyping": "{users} ve {last} yazıyor...", + "msg_typing.isTyping": "{user} yazıyor...", + "password_send.description": "Parolanızı sıfırlamak için hesabınızı açarken kullandığınız e-posta adresini yazın", + "password_send.error": "Lütfen geçerli bir e-posta adresi yazın.", + "password_send.link": "Hesap varsa şuraya bir parola sıfırlama e-postası gönderilecek:", + "permalink.show_dialog_warn.cancel": "İptal", + "permalink.show_dialog_warn.join": "Katıl", + "permalink.show_dialog_warn.title": "Özel kanala katıl", + "post_body.check_for_out_of_channel_groups_mentions.message": "kanalda bulunmadıkları için bu anma nedeniyle bildirim gönderilmeyecek. İlişkilendirilmiş grupların üyesi olmadıklarından bu kanala eklenemezler. Onları bu kanala eklemek için ilişkilendirilmiş gruplara eklenmeleri gerekir.", + "post_body.check_for_out_of_channel_mentions.link.and": " ve ", + "post_body.check_for_out_of_channel_mentions.link.private": "bu özel kanala eklemek ister misiniz", + "post_body.check_for_out_of_channel_mentions.link.public": "kanala eklemek ister misiniz", + "post_body.check_for_out_of_channel_mentions.message_last": "? Tüm ileti geçmişini görebilirler.", + "post_body.check_for_out_of_channel_mentions.message.multiple": "anılmış ancak kanalda değiller. Şunu yapmak ister misiniz ", + "post_body.check_for_out_of_channel_mentions.message.one": "anılmış ancak kanalda değil. Şunu yapmak ister misiniz ", + "post_body.commentedOn": "{name}{apostrophe} iletisine yorum yapıldı: ", + "post_body.deleted": "(ileti silindi)", + "post_info.del": "Sil", + "post_info.edit": "Düzenle", + "post_info.system": "Sistem", + "post_message_view.edited": "(düzenlendi)", + "posts_view.newMsg": "Yeni iletiler", + "search_bar.search": "Arama", + "status_dropdown.set_away": "Uzakta", + "status_dropdown.set_dnd": "Rahatsız etmeyin", + "status_dropdown.set_offline": "Çevrimdışı", + "status_dropdown.set_online": "Çevrimiçi", + "suggestion.mention.all": "Bu kanaldaki herkese bildirilir", + "suggestion.mention.channel": "Bu kanaldaki herkese bildirilir", + "suggestion.mention.channels": "Kanallarım", + "suggestion.mention.groups": "Grup anmaları", + "suggestion.mention.here": "Bu kanalda çevrimiçi olan herkese bildirilir", + "suggestion.mention.members": "Kanal üyeleri", + "suggestion.mention.morechannels": "Diğer kanallar", + "suggestion.mention.nonmembers": "Kanalda değil", + "suggestion.mention.special": "Özel anmalar", + "suggestion.mention.you": " (siz)", + "suggestion.search.direct": "Doğrudan iletiler", + "suggestion.search.private": "Özel kanallar", + "suggestion.search.public": "Herkese açık kanallar", + "threads": "Konular", + "threads.deleted": "Özgün ileti silindi", + "threads.follow": "İzle", + "threads.following": "İzleniyor", + "threads.followMessage": "İletiyi izle", + "threads.followThread": "Konuyu izle", + "threads.newReplies": "{count} yeni {count, plural, one {yanıt} other {yanıt}}", + "threads.replies": "{count} {count, plural, one {yanıt} other {yanıt}}", + "threads.unfollowMessage": "İletiyi takibi bırak", + "threads.unfollowThread": "Konuyu takibi bırak", + "user.settings.general.email": "E-posta", + "user.settings.general.firstName": "Ad", + "user.settings.general.lastName": "Soyad", + "user.settings.general.nickname": "Takma ad", + "user.settings.general.position": "Unvan", + "user.settings.general.username": "Kullanıcı adı", + "alert.channel_deleted.title": "Kanal arşivlenmiş", + "alert.channel_deleted.description": "{displayName} kanalı arşivlendi.", + "advanced_settings.delete_data": "Belge ve verileri sil", + "account.your_profile": "Profiliniz", + "account.user_status.title": "Kullanıcı varoluşu", + "account.settings": "Ayarlar", + "account.logout_from": "{serverName} oturumunu kapat", + "account.logout": "Oturumu kapat", + "alert.push_proxy.button": "Tamam", + "alert.push_proxy_unknown.title": "Bu sunucudan bildirimler alınamadı", + "alert.push_proxy_unknown.description": "Bu sunucu bilinmeyen bir nedenle anlık bildirimleri alamadı. Bir sonraki kez bağlandığınızda yeniden denenecek.", + "alert.push_proxy_error.title": "Bu sunucudan bildirimler alınamaz", + "alert.push_proxy_error.description": "Bu sunucunun yapılandırması nedeniyle, bildirimler mobil uygulamada alınamaz. Ayrıntılı bilgi almak için sistem yöneticinizle görüşün.", + "channel_info.mobile_notifications": "Mobil bildirimler", + "channel_info.mention": "Anma", + "channel_info.members": "Üyeler", + "channel_info.local_time": "Yerel saat", + "channel_info.leave_public_channel": "{displayName} herkese açık kanalından ayrılmak istediğinize emin misiniz? İstediğiniz zaman yeniden katılabilirsiniz.", + "channel_info.leave_private_channel": "{displayName} özel kanalından ayrılmak istediğinize emin misiniz? Yeniden çağrılmadığınız sürece kanala yeniden katılamazsınız.", + "channel_info.leave_channel": "Kanaldan ayrıl", + "channel_info.leave": "Ayrıl", + "channel_info.ignore_mentions": "@channel, @here, @all yok sayılsın", + "snack.bar.unfavorite.channel": "Bu kanal beğendiklerimden çıkarıldı", + "snack.bar.favorited.channel": "Bu kanal beğendiklerime eklendi", + "channel_list.favorites_category": "Beğendiklerim", + "channel_info.favorited": "Beğendiklerime eklendi", + "channel_info.favorite": "Beğendiklerime ekle", + "channel_info.error_close": "Kapat", + "channel_info.edit_header": "Başlığı düzenle", + "channel_info.custom_status": "Özel durum:", + "channel_info.copy_link": "Bağlantıyı kopyala", + "channel_info.copied": "Kopyalandı", + "channel_info.convert_private_title": "{displayName} kanalı özel kanala dönüştürülsün mü?", + "channel_info.convert_private_success": "{displayName} özel bir kanala dönüştürüldü.", + "channel_info.convert_private_description": "{displayName} özel bir kanala dönüştürüldüğünde, geçmiş iletiler ve üyelikler korunur. Herkese açık olarak paylaşılmış dosyalara bağlantıya sahip olan herkes erişmeye devam edebilir. Özel kanallara yalnız çağrı ile üye olunabilir. \n \nBu değişiklik kalıcıdır ve geri alınamaz.\n\n{displayName} kanalını özel kanala dönüştürmek istediğinize emin misiniz?", + "channel_info.convert_private": "Özel kanala dönüştür", + "channel_info.convert_failed": "{displayName} özel kanala dönüştürülemedi.", + "channel_info.close_dm_channel": "Bu doğrudan iletiyi kapatmak istediğinize emin misiniz? Bu işlem iletiyi giriş sayfanızdan kaldıracak, ancak istediğiniz zaman yeniden açabilirsiniz.", + "channel_info.close_gm_channel": "Bu grup iletisini kapatmak istediğinize emin misiniz? Bu işlem iletiyi giriş sayfanızdan kaldıracak, ancak istediğiniz zaman yeniden açabilirsiniz.", + "channel_info.close_gm": "Grup iletisini kapat", + "channel_info.close_dm": "Doğrudan iletiyi kapat", + "channel_info.close": "Kapat", + "channel_info.archive_title": "{term} kanalını arşivle", + "channel_info.archive_failed": "{displayName} kanalı arşivlenmeye çalışılırken bir sorun çıktı", + "channel_info.archive_description": "{term} {name} kanalını arşivlemek istediğinize emin misiniz?", + "channel_info.archive": "Kanalı arşivle", + "channel_info.alertYes": "Evet", + "channel_info.alertNo": "Hayır", + "channel_info.alert_retry": "Yeniden dene", + "channel_header.member_count": "{count, plural, one {üye} other {üye}}", + "channel_header.info": "Bilgileri görüntüle", + "channel_header.directchannel.you": "{displayName} (siz)", + "browse_channels.title": "Kanallara göz at", + "browse_channels.showSharedChannels": "Görüntüle: Paylaşılmış kanallar", + "browse_channels.showPublicChannels": "Görüntüle: Herkese açık kanallar", + "browse_channels.showArchivedChannels": "Görüntüle: Arşivlenmiş kanallar", + "browse_channels.sharedChannels": "Paylaşılmış kanallar", + "browse_channels.publicChannels": "Herkese açık kanallar", + "browse_channels.noMore": "Katılabileceğiniz başka bir kanal yok", + "browse_channels.dropdownTitle": "Görüntüle", + "browse_channels.archivedChannels": "Arşivlenmiş kanallar", + "autocomplete_selector.unknown_channel": "Kanal bilinmiyor", + "apps.error.responses.unexpected_type": "Uygulama yanıtı türü beklenmiyordu. Yanıt türü: {type}", + "apps.error.responses.form.no_form": "Yanıt türü `form`, ancak yanıtta bir form bulunmuyor.", + "apps.error.parser.empty_value": "Boş değerlere izin verilmiyor.", + "alert.removed_from_team.title": "Takımdan çıkarıldı", + "alert.removed_from_team.description": "{displayName} takımından çıkarıldınız.", + "alert.removed_from_channel.title": "Kanaldan çıkarıldı", + "alert.removed_from_channel.description": "{displayName} kanalından çıkarıldınız.", + "channel_list.find_channels": "Kanalları bul...", + "channel_list.dms_category": "Doğrudan iletiler", + "channel_list.channels_category": "Kanallar", + "channel_intro.createdOn": "{date} tarihinde oluşturuldu", + "channel_intro.createdBy": "{user} tarafından {date} tarihinde oluşturuldu", + "channel_info.unarchive_title": "{term} kanalını arşivden çıkar", + "channel_info.unarchive_failed": "{displayName} kanalı arşivden çıkarılmaya çalışılırken bir sorun çıktı", + "channel_info.unarchive_description": "{term} {name} kanalını arşivden çıkarmak istediğinize emin misiniz?", + "channel_info.unarchive": "Kanalı arşivden çıkar", + "channel_info.set_header": "Başlığı ayarla", + "channel_info.send_mesasge": "İleti gönder", + "channel_info.send_a_mesasge": "İleti gönder", + "channel_info.public_channel": "Herkese açık kanal", + "channel_info.private_channel": "Özel kanal", + "channel_info.position": "Konum", + "channel_info.pinned_messages": "Sabitlenmiş iletiler", + "channel_info.notification.none": "Asla", + "channel_info.notification.mention": "Anmalar", + "channel_info.notification.default": "Varsayılan", + "channel_info.notification.all": "Tümü", + "channel_info.nickname": "Takma ad", + "channel_info.muted": "Bildirimleri kapat", + "channel_modal.headerHelp": "Kanal adının yanında kanal başlığında görüntülenecek metni yazın. Örnek: [Bağlantı başlığı](http://kurulus.com) gibi sık kullanılan bağlantıları yazabilirsiniz.", + "channel_modal.headerEx": "Başlık metnini biçimlendirmek için Markdown kullanılsın", + "display_settings.tz.manual": "El ile", + "display_settings.tz.auto": "Otomatik", + "display_settings.timezone": "Saat dilimi", + "display_settings.theme": "Tema", + "display_settings.clockDisplay": "Saat görünümü", + "display_settings.clock.standard": "12 saat", + "display_settings.clock.military": "24 saat", + "custom_status.suggestions.title": "Öneriler", + "custom_status.suggestions.recent_title": "Son kullanılanlar", + "custom_status.set_status": "Bir durum ayarlayın", + "create_post.thread_reply": "Bu konuyu yanıtla...", + "create_direct_message.title": "Doğrudan ileti oluştur", + "channel_modal.purposeEx": "Hataların ve geliştirmelerin bildirileceği bir kanal", + "channel_modal.nameEx": "Hatalar, pazarlama", + "channel_modal.makePrivate.label": "Özel yap", + "channel_modal.makePrivate.description": "Bir kanal özel olarak ayarlandığında, yalnızca çağrılan takım üyeleri bu kanala erişebilir ve katılabilir", + "find_channels.new_channel": "Yeni kanal", + "find_channels.directory": "Dizin", + "emoji_picker.recent": "Son kullanılanlar", + "edit_server.title": "Sunucu adını düzenle", + "edit_server.saving": "Kaydediliyor", + "edit_server.save": "Kaydet", + "edit_server.display_help": "Sunucu: {url}", + "edit_server.description": "Bu sunucunun görüntülenecek adını belirtin", + "download.error": "Dosya indirilemedi. Bir süre sonra yeniden deneyin", + "intro.created_by": "{creator} tarafından {date} tarihinde oluşturuldu.", + "intro.channel_info": "Bilgiler", + "intro.add_people": "Kişi ekle", + "interactive_dialog.submit": "Gönder", + "home.header.plus_menu": "Seçenekler", + "global_threads.options.title": "Konu işlemleri", + "general_settings.notifications": "Bildirimler", + "general_settings.help": "Yardım", + "general_settings.display": "Görünüm", + "general_settings.advanced_settings": "Gelişmiş ayarlar", + "general_settings.about": "{appTitle} hakkında", + "gallery.video_saved": "Görüntü kaydedildi", + "gallery.unsupported": "Bu dosya türü için ön izleme desteklenmiyor. Dosyayı başka bir uygulamada açmak için indirmeyi ya da paylaşmayı deneyin.", + "gallery.save_failed": "Dosya kaydedilemedi", + "gallery.preparing": "Hazırlanıyor...", + "gallery.opening": "Açılıyor...", + "gallery.image_saved": "Görsel kaydedildi", + "gallery.downloading": "İndiriliyor...", + "gallery.copy_link.failed": "Bağlantı panoya kopyalanamadı", + "find_channels.title": "Kanal ara", + "find_channels.open_dm": "Bir doğrudan ileti aç", + "mobile.calls_join_call": "Çağrıya katıl", + "mobile.calls_error_title": "Hata", + "mobile.calls_error_message": "Hata: {error}", + "mobile.calls_ended_at": "Sonlandırılma zamanı", + "mobile.calls_end_permission_title": "Hata", + "mobile.calls_end_permission_msg": "Çağrıyı sonlandırma izniniz yok. Lütfen çağrıyı başlatan kişiden çağrıyı sonlandırmasını isteyin.", + "mobile.calls_call_ended": "Çağrı sonlandırıldı", + "mobile.calls_end_msg_dm": "{displayName} çağrısını sonlandırmak istediğinize emin misiniz?", + "mobile.calls_end_msg_channel_default": "Çağrıyı sonlandırmak istediğinize emin misiniz?", + "mobile.calls_end_msg_channel": "{displayName} kanalında {numParticipants} katılımcının bulunduğu bir çağrıyı sonlandırmak istediğinize emin misiniz?", + "mobile.calls_end_call_title": "Çağrıyı sonlandır", + "mobile.calls_enable": "Çağrıları etkinleştir", + "mobile.calls_disable": "Çağrıları devre dışı bırak", + "mobile.calls_current_call": "Geçerli çağrı", + "mobile.calls_chat_thread": "Sohbet konusu", + "mobile.calls_call_screen": "Ara", + "mobile.add_team.join_team": "Başka bir takıma katıl", + "mobile.add_team.create_team": "Yeni takım ekle", + "mentions.empty.title": "Henüz bir anma yok", + "mentions.empty.paragraph": "Birisi sizi andığında ya da izlediğiniz terimleri kullandığında burada iletiler görürsünüz.", + "markdown.latex.error": "Latex oluşturma hatası", + "login.signingIn": "Oturum açılıyor", + "login.signIn": "Oturum aç", + "login.invalid_credentials": "E-posta ve parola kombinasyonu yanlış", + "login.forgot": "Parolanızı mı unuttunuz?", + "login_mfa.token": "Çok aşamalı kimlik doğrulama kodunu yazın", + "login_mfa.enterToken": "Oturum açma işlemini tamamlamak için lütfen mobil aygıtınızdaki kimlik doğrulayıcı uygulamasından alacağınız kodu yazın.", + "load_teams_error.title": "{serverName} yüklenemedi", + "load_teams_error.message": "Bu sunucunun içeriği yüklenirken bir sorun çıktı.", + "load_channels_error.title": "{teamDisplayName} yüklenemedi", + "load_categories_error.message": "Bu sunucunun içeriği yüklenirken bir sorun çıktı.", + "invite_people_to_team.message": "Mattermost üzerine bizimle işbirliği yapmak ve iletişim kurmak için bağlantı.", + "load_channels_error.message": "Bu takımın içeriği yüklenirken bir sorun çıktı.", + "load_categories_error.title": "{serverName} kategorileri yüklenemedi", + "invite_people_to_team.title": "{team} takımına katılın", + "intro.welcome.public": "Kanala birkaç takım üyesi daha ekleyin ya da aşağıdan bir konuşma başlatın.", + "intro.welcome.private": "Bu özel kanala gönderilen iletileri yalnızca çağrılmış üyeler görebilir.", + "intro.welcome": "{displayName} kanalına hoş geldiniz.", + "intro.townsquare": "{name} ortamına hoş geldiniz. Ekibe katılan herkes otomatik olarak bu kanalın bir üyesi olur.", + "intro.public_channel": "Herkese açık kanal", + "intro.private_channel": "Özel kanal", + "intro.group_message": "Bu grupla konuşmanızın başlangıcı. Burada paylaşılan iletiler ve dosyalar grup dışında kimseye gösterilmez.", + "intro.direct_message": "{teammate} ile yaptığınız görüşmenin başlangıcı. Burada paylaşılan iletiler ve dosyalar başka kimseye gösterilmez.", + "mobile.create_post.read_only": "Bu kanal salt okunur.", + "mobile.create_direct_message.you": "@{username} - siz", + "mobile.create_direct_message.start": "Başlat", + "mobile.create_direct_message.one_more": "1 kullanıcı daha ekleyebilirsiniz", + "mobile.create_direct_message.cannot_add_more": "Daha fazla kullanıcı ekleyemezsiniz", + "mobile.create_direct_message.add_more": "{remaining, number} kullanıcı daha ekleyebilirsiniz", + "mobile.create_channel.title": "Yeni kanal", + "mobile.components.select_server_view.msg_welcome": "Hoş geldiniz", + "mobile.components.select_server_view.msg_description": "Bir sunucuya benzersiz bir adres üzerinden erişilir ve takımınızın iletişim merkezidir", + "mobile.components.select_server_view.msg_connect": "Bir sunucu ile bağlantı kuralım", + "mobile.components.select_server_view.displayName": "Görüntülenecek ad", + "mobile.components.select_server_view.displayHelp": "Sunucunuzun görüntülenecek adını seçin", + "mobile.components.select_server_view.connecting": "Bağlantı kuruluyor", + "mobile.channel_list.unreads": "Okunmamışlar", + "mobile.channel_list.recent": "Son kullanılanlar", + "mobile.camera_photo_permission_denied_description": "Fotoğraf çekin ve sunucunuza yükleyin ya da aygıtınıza kaydedin. {applicationName} uygulamasına kameranızı okuma ve yazma izni vermek için ayarları açın.", + "mobile.calls_you": "(siz)", + "mobile.calls_viewing_screen": "{name} katılımcısının ekranını görüntülüyorsunuz", + "mobile.calls_unmute": "Sesi aç", + "mobile.calls_start_call": "Çağrı başlat", + "mobile.calls_speaker": "Konuşmacı", + "mobile.calls_see_logs": "Sunucu günlüklerine bakın", + "mobile.calls_raise_hand": "El kaldır", + "mobile.calls_participant_limit_title": "Katılımcı sayısı sınırına ulaşıldı", + "mobile.calls_ok": "Tamam", + "mobile.calls_not_available_title": "Çağrılar etkinleştirilmemiş", + "mobile.calls_not_available_option": "(Kullanılamaz)", + "mobile.calls_not_available_msg": "Lütfen bu özelliği etkinleştirmesi sistem yöneticinizle görüşün.", + "mobile.calls_noone_talking": "Kimse konuşmuyor", + "mobile.calls_name_started_call": "{name} bir çağrı başlattı", + "mobile.calls_name_is_talking": "{name} konuşuyor", + "mobile.calls_mute": "Sesi kapat", + "mobile.calls_more": "Diğer", + "mobile.calls_mic_error": "Katılmak için, Ayarlar bölümüne giderek Mattermost için mikrofona erişme izni verin.", + "mobile.calls_lower_hand": "Eli indir", + "mobile.calls_limit_reached": "Katılımcı sayısı sınırına ulaşıldı", + "mobile.calls_limit_msg": "Bir çağrıda en fazla {maxParticipants} katılımcı olabilir. Sınırı artırmak için sistem yöneticinizle görüşün.", + "mobile.calls_leave_call": "Çağrıdan ayrıl", + "mobile.calls_leave": "Ayrıl", + "mobile.calls_lasted": "{duration} sürdü", + "mobile.android.photos_permission_denied_description": "Fotoğrafları sunucunuza yükleyin ya da aygtınıza kaydedin. Ayarlar bölümünden, fotoğraf kitaplığınıza {applicationName} için okuma ve yazma erişimi verin.", + "mobile.login_options.heading": "Hesabınızda oturum açın", + "mobile.login_options.google": "Google", + "mobile.login_options.gitlab": "GitLab", + "mobile.login_options.enter_credentials": "Oturum açma bilgilerinizi aşağıya yazın.", + "mobile.login_options.cant_heading": "Oturum açılamadı", + "mobile.leave_and_join_title": "Başka bir çağrıya geçmek istediğinize emin misiniz?", + "mobile.leave_and_join_message": "Zaten ~{leaveChannelName} kanalındaki bir çağrıdasınız. Bu çağrıdan ayrılıp ~{joinChannelName} kanalındaki çağrıya katılmak ister misiniz?", + "mobile.leave_and_join_confirmation": "Ayrıl ve katıl", + "mobile.join_channel.error": "{displayName} kanalına katılamadık.", + "mobile.ios.photos_permission_denied_description": "Fotoğrafları ve görüntüleri sunucunuza yükleyin ya da aygıtınıza kaydedin. Ayarlar bölümünden, fotoğraf ve görüntü kitaplığınıza {applicationName} için okuma ve yazma izni verin.", + "mobile.edit_post.error": "Bu ileti düzenirken bir sorun çıktı. Lütfen yeniden deneyin.", + "mobile.edit_post.delete_title": "İletiyi silmeyi onayla", + "mobile.edit_post.delete_question": "Bu iletiyi silmek istediğinize emin misiniz?", + "mobile.display_settings.timezone": "Saat dilimi", + "mobile.display_settings.clockDisplay": "Saat görünümü", + "mobile.direct_message.error": "{displayName} ile doğrudan ileti açılamadı.", + "mobile.custom_status.clear_after.title": "Özel durumun temizlenme süresi", + "mobile.search.modifier.in": "Belirli bir kanal", + "mobile.search.modifier.from": "Belirli bir kullanıcı", + "mobile.search.modifier.exclude": "Katılmayacak arama ifadeleri", + "mobile.screen.your_profile": "Profiliniz", + "mobile.screen.settings": "Ayarlar", + "mobile.reset_status.alert_ok": "Tamam", + "mobile.request.invalid_request_method": "İstek yöntemi geçersiz", + "mobile.post_pre_header.saved": "Kaydedildi", + "mobile.post_pre_header.pinned_saved": "Sabitlenmiş ve kaydedilmiş", + "mobile.post_info.unsave": "Kaydedilmişlerden çıkar", + "mobile.post_info.save": "Kaydet", + "mobile.participants.header": "Konu katılımcıları", + "mobile.oauth.switch_to_browser.title": "Yönlendiriliyor...", + "mobile.oauth.switch_to_browser.error_title": "Oturum açma hatası", + "mobile.oauth.switch_to_browser": "Oturum açma hizmeti sağlayıcınıza yönlendiriliyorsunuz", + "mobile.oauth.something_wrong.okButton": "Tamam", + "mobile.oauth.failed_to_open_link_no_browser": "Bağlantı açılamadı. Lütfen aygıt üzerinde bir web tarayıcısının kurulu olduğundan emin olun.", + "mobile.no_results.spelling": "Yazımı denetleyin ya da başka bir arama yapmayı deneyin.", + "mobile.no_results_with_term.messages": "\"{term}\" için bir eşleşme bulunamadı", + "mobile.no_results_with_term.files": "\"{term}\" ile eşleşen bir dosya bulunamadı", + "mobile.no_results_with_term": "\"{term}\" için sonuç bulunamadı", + "mobile.login_options.sso_continue": "Şununla ilerleyin", + "mobile.login_options.separator_text": "ya da şununla oturum açın", + "mobile.login_options.select_option": "Aşağıdan bir oturum açma seçeneği seçin.", + "mobile.login_options.saml": "SAML", + "mobile.login_options.openid": "Open ID", + "mobile.login_options.office365": "Office 365", + "mobile.login_options.none": "Henüz hesabınızda oturum açamazsınız. En az bir oturum açma seçeneği yapılandırılmış olmalıdır. Yardım için sistem yöneticinizle görüşün.", + "mobile.search.modifier.phrases": "Belirli ifadeler geçen iletiler", + "mobile.server_upgrade.description": "\nMattermost uygulamasını kullanmak için sunucunun güncellenmesi gerekiyor. Lütfen ayrıntılı bilgi almak için sistem yöneticiniz ile görüşün.\n", + "mobile.server_requires_client_certificate": "Sunucu kimlik doğrulaması için istemci sertifikasına gerek duyuyor.", + "mobile.server_ping_failed": "Sunucu ile bağlantı kurulamadı.", + "mobile.server_name.exists": "Bu adı başka bir sunucu için kullanıyorsunuz.", + "mobile.server_link.unreachable_user.error": "Sizi doğrudan iletiye yönlendiremiyoruz. Belirtilen kullanıcı bilinmiyor.", + "mobile.server_identifier.exists": "Bu sunucuya zaten bağlısınız.", + "mobile.search.team.select": "Aranacak bir takım seçin", + "mobile.search.show_more": "Daha çok ayrıntı", + "mobile.search.show_less": "Daha az ayrıntı" +} diff --git a/assets/base/i18n/zh-CN.json b/assets/base/i18n/zh-CN.json index ef0de907a..d49dc61f5 100644 --- a/assets/base/i18n/zh-CN.json +++ b/assets/base/i18n/zh-CN.json @@ -239,8 +239,6 @@ "mobile.message_length.message": "您的消息过长。目前字数:{max}/{count}", "mobile.message_length.message_split_left": "消息超过字数限制", "mobile.message_length.title": "消息长度", - "mobile.microphone_permission_denied_description": "若要参与此呼叫,请打开“设置”以授予对您的麦克风“授权使用”的权限。", - "mobile.microphone_permission_denied_title": "{applicationName} 想使用您的麦克风", "mobile.oauth.failed_to_login": "登入失败。请重试。", "mobile.oauth.failed_to_open_link": "打开链接失败。请重试。", "mobile.oauth.something_wrong": "出现了故障", diff --git a/detox/e2e/support/ui/component/plus_menu.ts b/detox/e2e/support/ui/component/plus_menu.ts index 713e2d39c..ef23c34fa 100644 --- a/detox/e2e/support/ui/component/plus_menu.ts +++ b/detox/e2e/support/ui/component/plus_menu.ts @@ -6,11 +6,13 @@ class PlusMenu { browseChannelsItem: 'plus_menu_item.browse_channels', createNewChannelItem: 'plus_menu_item.create_new_channel', openDirectMessageItem: 'plus_menu_item.open_direct_message', + invitePeopleToTeamItem: 'plus_menu_item.invite_people_to_team', }; browseChannelsItem = element(by.id(this.testID.browseChannelsItem)); createNewChannelItem = element(by.id(this.testID.createNewChannelItem)); openDirectMessageItem = element(by.id(this.testID.openDirectMessageItem)); + invitePeopleToTeamItem = element(by.id(this.testID.invitePeopleToTeamItem)); } const plusMenu = new PlusMenu(); diff --git a/detox/e2e/support/ui/screen/channel_list.ts b/detox/e2e/support/ui/screen/channel_list.ts index 413555ae6..869950e25 100644 --- a/detox/e2e/support/ui/screen/channel_list.ts +++ b/detox/e2e/support/ui/screen/channel_list.ts @@ -39,6 +39,7 @@ class ChannelListScreen { browseChannelsItem = PlusMenu.browseChannelsItem; createNewChannelItem = PlusMenu.createNewChannelItem; openDirectMessageItem = PlusMenu.openDirectMessageItem; + invitePeopleToTeamItem = PlusMenu.invitePeopleToTeamItem; getCategoryCollapsed = (categoryKey: string) => { return element(by.id(`${this.testID.categoryHeaderPrefix}${categoryKey}.collapsed.true`)); diff --git a/detox/e2e/test/teams/invite_people.e2e.ts b/detox/e2e/test/teams/invite_people.e2e.ts new file mode 100644 index 000000000..3423006fd --- /dev/null +++ b/detox/e2e/test/teams/invite_people.e2e.ts @@ -0,0 +1,76 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +// ******************************************************************* +// - [#] indicates a test step (e.g. # Go to a screen) +// - [*] indicates an assertion (e.g. * Check the title) +// - Use element testID when selecting an element. Create one if none. +// ******************************************************************* + +import {Setup} from '@support/server_api'; +import { + serverOneUrl, + siteOneUrl, +} from '@support/test_config'; +import { + ChannelListScreen, + HomeScreen, + LoginScreen, + ServerScreen, +} from '@support/ui/screen'; +import {isIos} from '@support/utils'; +import {expect} from 'detox'; + +function systemDialog(label: string) { + if (device.getPlatform() === 'ios') { + return element(by.label(label)).atIndex(0); + } + return element(by.text(label)); +} + +describe('Teams - Invite people', () => { + const serverOneDisplayName = 'Server 1'; + + let testTeam: any; + let testUser: any; + + beforeAll(async () => { + const {team, user} = await Setup.apiInit(siteOneUrl); + + testTeam = team; + testUser = user; + + // # Log in to server + await ServerScreen.connectToServer(serverOneUrl, serverOneDisplayName); + await LoginScreen.login(testUser); + }); + + beforeEach(async () => { + // * Verify on channel list screen + await ChannelListScreen.toBeVisible(); + }); + + afterAll(async () => { + // # Close share dialog + await ChannelListScreen.headerTeamDisplayName.tap(); + + // # Log out + await HomeScreen.logout(); + }); + + it('MM-T5221 - should be able to share a URL invite to the team', async () => { + // # Open plus menu + await ChannelListScreen.headerPlusButton.tap(); + + // * Verify invite people to team item is available + await expect(ChannelListScreen.invitePeopleToTeamItem).toExist(); + + // # Tap on invite people to team item + await ChannelListScreen.invitePeopleToTeamItem.tap(); + + if (isIos()) { + // * Verify share dialog is open + await expect(systemDialog(`Join the ${testTeam.display_name} team`)).toExist(); + } + }); +}); diff --git a/fastlane/Gemfile.lock b/fastlane/Gemfile.lock index 097c20743..03320b28e 100644 --- a/fastlane/Gemfile.lock +++ b/fastlane/Gemfile.lock @@ -8,17 +8,17 @@ GEM artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.643.0) - aws-sdk-core (3.158.1) + aws-partitions (1.660.0) + aws-sdk-core (3.167.0) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.525.0) - aws-sigv4 (~> 1.1) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.58.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kms (1.59.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.114.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-s3 (1.117.1) + aws-sdk-core (~> 3, >= 3.165.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) aws-sigv4 (1.5.2) @@ -36,7 +36,7 @@ GEM unf (>= 0.0.5, < 1.0.0) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.93.0) + excon (0.94.0) faraday (1.10.2) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -66,7 +66,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.6) - fastlane (2.210.1) + fastlane (2.211.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -111,9 +111,9 @@ GEM fastlane-plugin-find_replace_string (0.1.0) fastlane-plugin-versioning_android (0.1.0) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.29.0) - google-apis-core (>= 0.9.0, < 2.a) - google-apis-core (0.9.0) + google-apis-androidpublisher_v3 (0.31.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-core (0.9.1) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -122,10 +122,10 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.15.0) - google-apis-core (>= 0.9.0, < 2.a) - google-apis-playcustomapp_v1 (0.11.0) - google-apis-core (>= 0.9.0, < 2.a) + google-apis-iamcredentials_v1 (0.16.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-playcustomapp_v1 (0.12.0) + google-apis-core (>= 0.9.1, < 2.a) google-apis-storage_v1 (0.19.0) google-apis-core (>= 0.9.0, < 2.a) google-cloud-core (1.6.0) @@ -134,7 +134,7 @@ GEM google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) google-cloud-errors (1.3.0) - google-cloud-storage (1.43.0) + google-cloud-storage (1.44.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) @@ -142,7 +142,7 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.2.0) + googleauth (1.3.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) @@ -164,7 +164,7 @@ GEM multipart-post (2.0.0) nanaimo (0.3.0) naturally (2.2.1) - nokogiri (1.13.8) + nokogiri (1.13.9) mini_portile2 (~> 2.8.0) racc (~> 1.4) optparse (0.1.1) diff --git a/ios/Gekidou/Sources/Gekidou/Storage/Database+System.swift b/ios/Gekidou/Sources/Gekidou/Storage/Database+System.swift index cc1f331c9..b5796c751 100644 --- a/ios/Gekidou/Sources/Gekidou/Storage/Database+System.swift +++ b/ios/Gekidou/Sources/Gekidou/Storage/Database+System.swift @@ -10,19 +10,18 @@ import Foundation import SQLite extension Database { - public func getConfig(_ serverUrl: String) -> [String: Any]? { + public func getConfig(_ serverUrl: String, _ key: String) -> String? { do { let db = try getDatabaseForServer(serverUrl) let id = Expression("id") let value = Expression("value") - let query = systemTable.select(value).filter(id == "config") - var json: [String: Any]? = nil + let query = configTable.select(value).filter(id == key) if let result = try db.pluck(query) { let val = try result.get(value) - json = try? JSONSerialization.jsonObject(with: val.data(using: .utf8)!, options: []) as? [String: Any] + return val } - return json + return nil } catch { return nil } diff --git a/ios/Gekidou/Sources/Gekidou/Storage/Database.swift b/ios/Gekidou/Sources/Gekidou/Storage/Database.swift index 4955a759d..e649d022b 100644 --- a/ios/Gekidou/Sources/Gekidou/Storage/Database.swift +++ b/ios/Gekidou/Sources/Gekidou/Storage/Database.swift @@ -60,6 +60,7 @@ public class Database: NSObject { internal var userTable = Table("User") internal var threadTable = Table("Thread") internal var threadParticipantTable = Table("ThreadParticipant") + internal var configTable = Table("Config") @objc public static let `default` = Database() diff --git a/ios/Mattermost.xcodeproj/project.pbxproj b/ios/Mattermost.xcodeproj/project.pbxproj index 9740cd0ed..527e88edb 100644 --- a/ios/Mattermost.xcodeproj/project.pbxproj +++ b/ios/Mattermost.xcodeproj/project.pbxproj @@ -1095,7 +1095,7 @@ CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 432; + CURRENT_PROJECT_VERSION = 438; DEVELOPMENT_TEAM = UQ8HT4Q2XM; ENABLE_BITCODE = NO; HEADER_SEARCH_PATHS = ( @@ -1139,7 +1139,7 @@ CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 432; + CURRENT_PROJECT_VERSION = 438; DEVELOPMENT_TEAM = UQ8HT4Q2XM; ENABLE_BITCODE = NO; HEADER_SEARCH_PATHS = ( @@ -1282,7 +1282,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 432; + CURRENT_PROJECT_VERSION = 438; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = UQ8HT4Q2XM; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -1333,7 +1333,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 432; + CURRENT_PROJECT_VERSION = 438; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = UQ8HT4Q2XM; GCC_C_LANGUAGE_STANDARD = gnu11; diff --git a/ios/Mattermost/Info.plist b/ios/Mattermost/Info.plist index 79ced4d86..e5b495d67 100644 --- a/ios/Mattermost/Info.plist +++ b/ios/Mattermost/Info.plist @@ -37,7 +37,7 @@ CFBundleVersion - 432 + 438 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/ios/MattermostShare/Info.plist b/ios/MattermostShare/Info.plist index 2353922be..163390481 100644 --- a/ios/MattermostShare/Info.plist +++ b/ios/MattermostShare/Info.plist @@ -21,7 +21,7 @@ CFBundleShortVersionString 2.0.0 CFBundleVersion - 432 + 438 UIAppFonts OpenSans-Bold.ttf diff --git a/ios/MattermostShare/Services/ServerService.swift b/ios/MattermostShare/Services/ServerService.swift index 965286476..8c59b2cf0 100644 --- a/ios/MattermostShare/Services/ServerService.swift +++ b/ios/MattermostShare/Services/ServerService.swift @@ -31,23 +31,25 @@ class ServerService: ObservableObject { private func updateServerSettings(_ server: ServerModel?) -> ServerModel? { if var s = server { - if let config = Gekidou.Database.default.getConfig(s.url) { + let fileSize = Gekidou.Database.default.getConfig(s.url, "MaxFileSize") + let postSize = Gekidou.Database.default.getConfig(s.url, "MaxPostSize") + let mobileFileUpload = Gekidou.Database.default.getConfig(s.url, "EnableMobileFileUpload") + let hasChannels = Gekidou.Database.default.serverHasChannels(s.url) var maxFileSize: Int64? = nil - if let fileSize = config["MaxFileSize"] as? String { - maxFileSize = Int64(fileSize) + if let value = fileSize { + maxFileSize = Int64(value) } var maxPostSize: Int64? = nil - if let length = config["MaxPostSize"] as? String { - maxPostSize = Int64(length) + if let value = postSize { + maxPostSize = Int64(value) } - let uploadsEnabled = config["EnableMobileFileUpload"] as? String == "true" + let uploadsEnabled = mobileFileUpload == "true" s.updateSettings(hasChannels, maxPostSize, maxFileSize, uploadsEnabled) return s - } } return nil } diff --git a/ios/NotificationService/Info.plist b/ios/NotificationService/Info.plist index 20e1c0bb2..87aaa6883 100644 --- a/ios/NotificationService/Info.plist +++ b/ios/NotificationService/Info.plist @@ -21,7 +21,7 @@ CFBundleShortVersionString 2.0.0 CFBundleVersion - 432 + 438 NSExtension NSExtensionPointIdentifier diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 4514c7db1..a6d3b6e10 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -4,18 +4,18 @@ PODS: - BVLinearGradient (2.6.2): - React-Core - CocoaAsyncSocket (7.6.5) - - CocoaLumberjack (3.7.4): - - CocoaLumberjack/Core (= 3.7.4) - - CocoaLumberjack/Core (3.7.4) + - CocoaLumberjack (3.8.0): + - CocoaLumberjack/Core (= 3.8.0) + - CocoaLumberjack/Core (3.8.0) - DoubleConversion (1.1.6) - - FBLazyVector (0.70.3) - - FBReactNativeSpec (0.70.3): + - FBLazyVector (0.70.5) + - FBReactNativeSpec (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.3) - - RCTTypeSafety (= 0.70.3) - - React-Core (= 0.70.3) - - React-jsi (= 0.70.3) - - ReactCommon/turbomodule/core (= 0.70.3) + - RCTRequired (= 0.70.5) + - RCTTypeSafety (= 0.70.5) + - React-Core (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) - Flipper (0.125.0): - Flipper-Folly (~> 2.6) - Flipper-RSocket (~> 1.4) @@ -79,7 +79,7 @@ PODS: - FlipperKit/FlipperKitNetworkPlugin - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.70.3) + - hermes-engine (0.70.5) - HMSegmentedControl (1.5.6) - jail-monkey (2.7.0): - React-Core @@ -120,214 +120,214 @@ PODS: - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.70.3) - - RCTTypeSafety (0.70.3): - - FBLazyVector (= 0.70.3) - - RCTRequired (= 0.70.3) - - React-Core (= 0.70.3) - - React (0.70.3): - - React-Core (= 0.70.3) - - React-Core/DevSupport (= 0.70.3) - - React-Core/RCTWebSocket (= 0.70.3) - - React-RCTActionSheet (= 0.70.3) - - React-RCTAnimation (= 0.70.3) - - React-RCTBlob (= 0.70.3) - - React-RCTImage (= 0.70.3) - - React-RCTLinking (= 0.70.3) - - React-RCTNetwork (= 0.70.3) - - React-RCTSettings (= 0.70.3) - - React-RCTText (= 0.70.3) - - React-RCTVibration (= 0.70.3) - - React-bridging (0.70.3): + - RCTRequired (0.70.5) + - RCTTypeSafety (0.70.5): + - FBLazyVector (= 0.70.5) + - RCTRequired (= 0.70.5) + - React-Core (= 0.70.5) + - React (0.70.5): + - React-Core (= 0.70.5) + - React-Core/DevSupport (= 0.70.5) + - React-Core/RCTWebSocket (= 0.70.5) + - React-RCTActionSheet (= 0.70.5) + - React-RCTAnimation (= 0.70.5) + - React-RCTBlob (= 0.70.5) + - React-RCTImage (= 0.70.5) + - React-RCTLinking (= 0.70.5) + - React-RCTNetwork (= 0.70.5) + - React-RCTSettings (= 0.70.5) + - React-RCTText (= 0.70.5) + - React-RCTVibration (= 0.70.5) + - React-bridging (0.70.5): - RCT-Folly (= 2021.07.22.00) - - React-jsi (= 0.70.3) - - React-callinvoker (0.70.3) - - React-Codegen (0.70.3): - - FBReactNativeSpec (= 0.70.3) + - React-jsi (= 0.70.5) + - React-callinvoker (0.70.5) + - React-Codegen (0.70.5): + - FBReactNativeSpec (= 0.70.5) - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.3) - - RCTTypeSafety (= 0.70.3) - - React-Core (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - ReactCommon/turbomodule/core (= 0.70.3) - - React-Core (0.70.3): + - RCTRequired (= 0.70.5) + - RCTTypeSafety (= 0.70.5) + - React-Core (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-Core (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.3) - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-Core/Default (= 0.70.5) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/CoreModulesHeaders (0.70.3): + - React-Core/CoreModulesHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/Default (0.70.3): + - React-Core/Default (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/DevSupport (0.70.3): + - React-Core/DevSupport (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.3) - - React-Core/RCTWebSocket (= 0.70.3) - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-jsinspector (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-Core/Default (= 0.70.5) + - React-Core/RCTWebSocket (= 0.70.5) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-jsinspector (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTActionSheetHeaders (0.70.3): + - React-Core/RCTActionSheetHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTAnimationHeaders (0.70.3): + - React-Core/RCTAnimationHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTBlobHeaders (0.70.3): + - React-Core/RCTBlobHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTImageHeaders (0.70.3): + - React-Core/RCTImageHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTLinkingHeaders (0.70.3): + - React-Core/RCTLinkingHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTNetworkHeaders (0.70.3): + - React-Core/RCTNetworkHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTSettingsHeaders (0.70.3): + - React-Core/RCTSettingsHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTTextHeaders (0.70.3): + - React-Core/RCTTextHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTVibrationHeaders (0.70.3): + - React-Core/RCTVibrationHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTWebSocket (0.70.3): + - React-Core/RCTWebSocket (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.3) - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-Core/Default (= 0.70.5) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-CoreModules (0.70.3): + - React-CoreModules (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.3) - - React-Codegen (= 0.70.3) - - React-Core/CoreModulesHeaders (= 0.70.3) - - React-jsi (= 0.70.3) - - React-RCTImage (= 0.70.3) - - ReactCommon/turbomodule/core (= 0.70.3) - - React-cxxreact (0.70.3): + - RCTTypeSafety (= 0.70.5) + - React-Codegen (= 0.70.5) + - React-Core/CoreModulesHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - React-RCTImage (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-cxxreact (0.70.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsinspector (= 0.70.3) - - React-logger (= 0.70.3) - - React-perflogger (= 0.70.3) - - React-runtimeexecutor (= 0.70.3) - - React-hermes (0.70.3): + - React-callinvoker (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsinspector (= 0.70.5) + - React-logger (= 0.70.5) + - React-perflogger (= 0.70.5) + - React-runtimeexecutor (= 0.70.5) + - React-hermes (0.70.5): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-jsiexecutor (= 0.70.3) - - React-jsinspector (= 0.70.3) - - React-perflogger (= 0.70.3) - - React-jsi (0.70.3): + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-jsinspector (= 0.70.5) + - React-perflogger (= 0.70.5) + - React-jsi (0.70.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-jsi/Default (= 0.70.3) - - React-jsi/Default (0.70.3): + - React-jsi/Default (= 0.70.5) + - React-jsi/Default (0.70.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.70.3): + - React-jsiexecutor (0.70.5): - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-perflogger (= 0.70.3) - - React-jsinspector (0.70.3) - - React-logger (0.70.3): + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-perflogger (= 0.70.5) + - React-jsinspector (0.70.5) + - React-logger (0.70.5): - glog - react-native-background-timer (2.4.1): - React-Core @@ -339,20 +339,20 @@ PODS: - React-Core - react-native-document-picker (8.1.2): - React-Core - - react-native-emm (1.3.2): + - react-native-emm (1.3.3): - React-Core - react-native-hw-keyboard-event (0.0.4): - React - react-native-image-picker (4.10.0): - React-Core - - react-native-netinfo (9.3.5): + - react-native-netinfo (9.3.6): - React-Core - react-native-network-client (1.0.0): - Alamofire (~> 5.4) - React-Core - Starscream (~> 4.0.4) - SwiftyJSON (~> 5.0) - - react-native-notifications (4.3.1): + - react-native-notifications (4.3.3): - React-Core - react-native-paste-input (0.5.1): - React-Core @@ -374,98 +374,96 @@ PODS: - React - react-native-webview (11.23.1): - React-Core - - React-perflogger (0.70.3) - - React-RCTActionSheet (0.70.3): - - React-Core/RCTActionSheetHeaders (= 0.70.3) - - React-RCTAnimation (0.70.3): + - React-perflogger (0.70.5) + - React-RCTActionSheet (0.70.5): + - React-Core/RCTActionSheetHeaders (= 0.70.5) + - React-RCTAnimation (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.3) - - React-Codegen (= 0.70.3) - - React-Core/RCTAnimationHeaders (= 0.70.3) - - React-jsi (= 0.70.3) - - ReactCommon/turbomodule/core (= 0.70.3) - - React-RCTBlob (0.70.3): + - RCTTypeSafety (= 0.70.5) + - React-Codegen (= 0.70.5) + - React-Core/RCTAnimationHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTBlob (0.70.5): - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.3) - - React-Core/RCTBlobHeaders (= 0.70.3) - - React-Core/RCTWebSocket (= 0.70.3) - - React-jsi (= 0.70.3) - - React-RCTNetwork (= 0.70.3) - - ReactCommon/turbomodule/core (= 0.70.3) - - React-RCTImage (0.70.3): + - React-Codegen (= 0.70.5) + - React-Core/RCTBlobHeaders (= 0.70.5) + - React-Core/RCTWebSocket (= 0.70.5) + - React-jsi (= 0.70.5) + - React-RCTNetwork (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTImage (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.3) - - React-Codegen (= 0.70.3) - - React-Core/RCTImageHeaders (= 0.70.3) - - React-jsi (= 0.70.3) - - React-RCTNetwork (= 0.70.3) - - ReactCommon/turbomodule/core (= 0.70.3) - - React-RCTLinking (0.70.3): - - React-Codegen (= 0.70.3) - - React-Core/RCTLinkingHeaders (= 0.70.3) - - React-jsi (= 0.70.3) - - ReactCommon/turbomodule/core (= 0.70.3) - - React-RCTNetwork (0.70.3): + - RCTTypeSafety (= 0.70.5) + - React-Codegen (= 0.70.5) + - React-Core/RCTImageHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - React-RCTNetwork (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTLinking (0.70.5): + - React-Codegen (= 0.70.5) + - React-Core/RCTLinkingHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTNetwork (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.3) - - React-Codegen (= 0.70.3) - - React-Core/RCTNetworkHeaders (= 0.70.3) - - React-jsi (= 0.70.3) - - ReactCommon/turbomodule/core (= 0.70.3) - - React-RCTSettings (0.70.3): + - RCTTypeSafety (= 0.70.5) + - React-Codegen (= 0.70.5) + - React-Core/RCTNetworkHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTSettings (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.3) - - React-Codegen (= 0.70.3) - - React-Core/RCTSettingsHeaders (= 0.70.3) - - React-jsi (= 0.70.3) - - ReactCommon/turbomodule/core (= 0.70.3) - - React-RCTText (0.70.3): - - React-Core/RCTTextHeaders (= 0.70.3) - - React-RCTVibration (0.70.3): + - RCTTypeSafety (= 0.70.5) + - React-Codegen (= 0.70.5) + - React-Core/RCTSettingsHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTText (0.70.5): + - React-Core/RCTTextHeaders (= 0.70.5) + - React-RCTVibration (0.70.5): - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.3) - - React-Core/RCTVibrationHeaders (= 0.70.3) - - React-jsi (= 0.70.3) - - ReactCommon/turbomodule/core (= 0.70.3) - - React-runtimeexecutor (0.70.3): - - React-jsi (= 0.70.3) - - ReactCommon/turbomodule/core (0.70.3): + - React-Codegen (= 0.70.5) + - React-Core/RCTVibrationHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-runtimeexecutor (0.70.5): + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (0.70.5): - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-bridging (= 0.70.3) - - React-callinvoker (= 0.70.3) - - React-Core (= 0.70.3) - - React-cxxreact (= 0.70.3) - - React-jsi (= 0.70.3) - - React-logger (= 0.70.3) - - React-perflogger (= 0.70.3) + - React-bridging (= 0.70.5) + - React-callinvoker (= 0.70.5) + - React-Core (= 0.70.5) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-logger (= 0.70.5) + - React-perflogger (= 0.70.5) - ReactNativeExceptionHandler (2.10.10): - React-Core - ReactNativeIncallManager (4.0.0): - React-Core - ReactNativeKeyboardTrackingView (5.7.0): - React - - ReactNativeNavigation (7.29.0): + - ReactNativeNavigation (7.30.1): - HMSegmentedControl - - RCT-Folly - React-Core - React-RCTImage - React-RCTText - - ReactNativeNavigation/Core (= 7.29.0) - - ReactNativeNavigation/Core (7.29.0): + - ReactNativeNavigation/Core (= 7.30.1) + - ReactNativeNavigation/Core (7.30.1): - HMSegmentedControl - - RCT-Folly - React-Core - React-RCTImage - React-RCTText - RNCClipboard (1.11.1): - React-Core - - RNDateTimePicker (6.5.2): + - RNDateTimePicker (6.5.4): - React-Core - - RNDeviceInfo (10.2.1): + - RNDeviceInfo (10.3.0): - React-Core - - RNFastImage (8.6.1): + - RNFastImage (8.6.3): - React-Core - SDWebImage (~> 5.12.3) - SDWebImageWebPCoder (~> 0.8.4) @@ -473,7 +471,7 @@ PODS: - React-Core - RNFS (2.20.0): - React-Core - - RNGestureHandler (2.7.1): + - RNGestureHandler (2.8.0): - React-Core - RNKeychain (8.1.1): - React-Core @@ -483,7 +481,7 @@ PODS: - React-Core - RNReactNativeHapticFeedback (1.14.0): - React-Core - - RNReanimated (2.10.0): + - RNReanimated (2.12.0): - DoubleConversion - FBLazyVector - FBReactNativeSpec @@ -516,12 +514,12 @@ PODS: - RNScreens (3.18.2): - React-Core - React-RCTImage - - RNSentry (4.6.1): + - RNSentry (4.8.0): - React-Core - - Sentry (= 7.27.1) - - RNShare (7.9.1): + - Sentry (= 7.29.0) + - RNShare (8.0.0): - React-Core - - RNSVG (13.4.0): + - RNSVG (13.5.0): - React-Core - RNVectorIcons (9.2.0): - React-Core @@ -532,9 +530,9 @@ PODS: - SDWebImageWebPCoder (0.8.5): - libwebp (~> 1.0) - SDWebImage/Core (~> 5.10) - - Sentry (7.27.1): - - Sentry/Core (= 7.27.1) - - Sentry/Core (7.27.1) + - Sentry (7.29.0): + - Sentry/Core (= 7.29.0) + - Sentry/Core (7.29.0) - simdjson (1.0.0) - SocketRocket (0.6.0) - Starscream (4.0.4) @@ -861,10 +859,10 @@ SPEC CHECKSUMS: boost: a7c83b31436843459a1961bfd74b96033dc77234 BVLinearGradient: 34a999fda29036898a09c6a6b728b0b4189e1a44 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 - CocoaLumberjack: 543c79c114dadc3b1aba95641d8738b06b05b646 + CocoaLumberjack: 78abfb691154e2a9df8ded4350d504ee19d90732 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 - FBLazyVector: 3b313c3fb52b597f7a9b430798e6367d2b9f07e5 - FBReactNativeSpec: 99a7ecb7e9665d96f2fea706b0844e2f3117f381 + FBLazyVector: affa4ba1bfdaac110a789192f4d452b053a86624 + FBReactNativeSpec: fe8b5f1429cfe83a8d72dc8ed61dc7704cac8745 Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 @@ -876,7 +874,7 @@ SPEC CHECKSUMS: FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - hermes-engine: bb344d89a0d14c2c91ad357480a79698bb80e186 + hermes-engine: 7fe5fc6ef707b7fdcb161b63898ec500e285653d HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352 jail-monkey: de7eab0c9cbe4e7cdd2f80d04f812337ae94b2e0 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 @@ -887,82 +885,82 @@ SPEC CHECKSUMS: Permission-Microphone: 48212dd4d28025d9930d583e3c7a56da7268665c Permission-PhotoLibrary: 5b34ca67279f7201ae109cef36f9806a6596002d RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda - RCTRequired: 5cf7e7d2f12699724b59f90350257a422eaa9492 - RCTTypeSafety: 3f3ead9673d1ab8bb1aea85b0894ab3220f8f06e - React: 30a333798d1fcf595e8a4108bbaa0f125a655f4a - React-bridging: 92396c03ab446756ddfb7a8e2baff3bcf19eec7d - React-callinvoker: bb66a41b41fa0b7c5f3cc626693a63c9ea0d6252 - React-Codegen: a2a944a9688fae870be0a2ecdca37284034b25c2 - React-Core: a689b4d1bd13e15915a05c9918c2b01df96cd811 - React-CoreModules: d262214db6b704b042bc5c0735b06c346a371d7f - React-cxxreact: 81d5bf256313bf96cb925eb0e654103291161a17 - React-hermes: 1c35cbfbdc7a888c3a1aa05e6d0ca004d92c923c - React-jsi: 7f99dc3055bec9a0eeb4230f8b6ac873514c8421 - React-jsiexecutor: 7e2e1772ef7b97168c880eeaf3749d8c145ffd6e - React-jsinspector: 0553c9fe7218e1f127be070bd5a4d2fc19fb8190 - React-logger: cffcc09e8aba8a3014be8d18da7f922802e9f19e + RCTRequired: 21229f84411088e5d8538f21212de49e46cc83e2 + RCTTypeSafety: 62eed57a32924b09edaaf170a548d1fc96223086 + React: f0254ccddeeef1defe66c6b1bb9133a4f040792b + React-bridging: e46911666b7ec19538a620a221d6396cd293d687 + React-callinvoker: 66b62e2c34546546b2f21ab0b7670346410a2b53 + React-Codegen: b6999435966df3bdf82afa3f319ba0d6f9a8532a + React-Core: dabbc9d1fe0a11d884e6ee1599789cf8eb1058a5 + React-CoreModules: 5b6b7668f156f73a56420df9ec68ca2ec8f2e818 + React-cxxreact: c7ca2baee46db22a30fce9e639277add3c3f6ad1 + React-hermes: c93e1d759ad5560dfea54d233013d7d2c725c286 + React-jsi: a565dcb49130ed20877a9bb1105ffeecbb93d02d + React-jsiexecutor: 31564fa6912459921568e8b0e49024285a4d584b + React-jsinspector: badd81696361249893a80477983e697aab3c1a34 + React-logger: fdda34dd285bdb0232e059b19d9606fa0ec3bb9c react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe react-native-cameraroll: 38b40d9033e4077b6c603f92f95c6d05fa7907df react-native-cookies: f54fcded06bb0cda05c11d86788020b43528a26c react-native-create-thumbnail: 94e68f6cc050a870f830352d1a924c1e8d38b52f react-native-document-picker: f5ec1a712ca2a975c233117f044817bb8393cad4 - react-native-emm: aefc8a2ff2063b4356212711dcfc2d29cf2a4491 + react-native-emm: c5b7dcffde34ce345fd0c16d66b587e611a3d31f react-native-hw-keyboard-event: b517cefb8d5c659a38049c582de85ff43337dc53 react-native-image-picker: 4bc9ed38c8be255b515d8c88babbaf74973f91a8 - react-native-netinfo: 85b2a435c4d3705c08b0c42ff2d6ef6b9622ea0a + react-native-netinfo: f80db8cac2151405633324cb645c60af098ee461 react-native-network-client: 2b1370725abbbc1a7bfb1845d44bd3d4e73041b2 - react-native-notifications: 33ec77006f7987bb22de8f1665889abc633b9196 + react-native-notifications: 83b4fd4a127a6c918fc846cae90da60f84819e44 react-native-paste-input: 183ad7dc224e192719616f4258dde5b548627d08 react-native-safe-area-context: 99b24a0c5acd0d5dcac2b1a7f18c49ea317be99a react-native-user-agent: a90a1e839b99801baad67a73dd6f361a52aa3cf1 react-native-video: c26780b224543c62d5e1b2a7244a5cd1b50e8253 react-native-webrtc: 86d841823e66d68cc1f86712db1c2956056bf0c2 react-native-webview: d33e2db8925d090871ffeb232dfa50cb3a727581 - React-perflogger: 082b4293f0b3914ff41da35a6c06ac4490fcbcc8 - React-RCTActionSheet: 83da3030deb5dea54b398129f56540a44e64d3ae - React-RCTAnimation: bac3a4f4c0436554d9f7fbb1352a0cdcb1fb0f1c - React-RCTBlob: d2c8830ac6b4d55d5624469829fe6d0ef1d534d1 - React-RCTImage: 26ad032b09f90ae5d2283ec19f0c455c444c8189 - React-RCTLinking: 4a8d16586df11fff515a6c52ff51a02c47a20499 - React-RCTNetwork: 843fc75a70f0b5760de0bf59468585f41209bcf0 - React-RCTSettings: 54e59255f94462951b45f84c3f81aedc27cf8615 - React-RCTText: c32e2a60827bd232b2bc95941b9926ccf1c2be4c - React-RCTVibration: b9a58ffdd18446f43d493a4b0ecd603ee86be847 - React-runtimeexecutor: e9b1f9310158a1e265bcdfdfd8c62d6174b947a2 - ReactCommon: 01064177e66d652192c661de899b1076da962fd9 + React-perflogger: e68d3795cf5d247a0379735cbac7309adf2fb931 + React-RCTActionSheet: 05452c3b281edb27850253db13ecd4c5a65bc247 + React-RCTAnimation: 578eebac706428e68466118e84aeacf3a282b4da + React-RCTBlob: f47a0aa61e7d1fb1a0e13da832b0da934939d71a + React-RCTImage: 60f54b66eed65d86b6dffaf4733d09161d44929d + React-RCTLinking: 91073205aeec4b29450ca79b709277319368ac9e + React-RCTNetwork: ca91f2c9465a7e335c8a5fae731fd7f10572213b + React-RCTSettings: 1a9a5d01337d55c18168c1abe0f4a589167d134a + React-RCTText: c591e8bd9347a294d8416357ca12d779afec01d5 + React-RCTVibration: 8e5c8c5d17af641f306d7380d8d0fe9b3c142c48 + React-runtimeexecutor: 7401c4a40f8728fd89df4a56104541b760876117 + ReactCommon: c9246996e73bf75a2c6c3ff15f1e16707cdc2da9 ReactNativeExceptionHandler: b11ff67c78802b2f62eed0e10e75cb1ef7947c60 ReactNativeIncallManager: b169b57d3064d8f62478f8fc3c485da6c75045d1 ReactNativeKeyboardTrackingView: 02137fac3b2ebd330d74fa54ead48b14750a2306 - ReactNativeNavigation: 7037343e18e1fbdf6e22c24a80e455a83ac7d65c + ReactNativeNavigation: 92cfdca69ce2b1047fbbb55beeb78e91e1925809 RNCClipboard: 2834e1c4af68697089cdd455ee4a4cdd198fa7dd - RNDateTimePicker: 3f32aa2247836c12618d346113e5e82ea60ddd9c - RNDeviceInfo: c31137f22ee779fe3931d1a8d60cc1af80ef4077 - RNFastImage: 7ef39e3f1987edefc0b546a8637bd469de0709fa + RNDateTimePicker: 93b9659fbd0fd91a4fb568bf8f5c00b0175aa1ba + RNDeviceInfo: 4701f0bf2a06b34654745053db0ce4cb0c53ada7 + RNFastImage: 0ee8f7e39df8190d3ca3a5b0c4ea0109c0ff132e RNFileViewer: ce7ca3ac370e18554d35d6355cffd7c30437c592 RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 - RNGestureHandler: b7a872907ee289ada902127f2554fa1d2c076122 + RNGestureHandler: 62232ba8f562f7dea5ba1b3383494eb5bf97a4d3 RNKeychain: ff836453cba46938e0e9e4c22e43d43fa2c90333 RNLocalize: 0df7970cfc60389f00eb62fd7c097dc75af3fb4f RNPermissions: dcdb7b99796bbeda6975a6e79ad519c41b251b1c RNReactNativeHapticFeedback: 1e3efeca9628ff9876ee7cdd9edec1b336913f8c - RNReanimated: 60e291d42c77752a0f6d6f358387bdf225a87c6e + RNReanimated: 2a91e85fcd343f8af3c58d3425b99fdd285590a5 RNRudderSdk: 14c176adb1557f3832cb385fcd14250f76a7e268 RNScreens: 34cc502acf1b916c582c60003dc3089fa01dc66d - RNSentry: f8591057d48d4f6d64196a76cbca67895667b033 - RNShare: a5dc3b9c53ddc73e155b8cd9a94c70c91913c43c - RNSVG: 07dbd870b0dcdecc99b3a202fa37c8ca163caec2 + RNSentry: db7fd7b66efda28885e4e904a8b5e7349aec61c1 + RNShare: 36aa3e6958373a0ad1c95a1c960adef589da3794 + RNSVG: 38ca962c970dbce1ca38991a5aebf26d163f9efb RNVectorIcons: fcc2f6cb32f5735b586e66d14103a74ce6ad61f8 Rudder: 7c080303528ea612f58c9f9e8fcfab92b5dbcca8 SDWebImage: a47aea9e3d8816015db4e523daff50cfd294499d SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d - Sentry: bc644307e2eb6a4c9c55cf117a80b895bb2a25a7 + Sentry: 4272663eb0eda312024d795ca3f5a562a8ce5e18 simdjson: c96317b3a50dff3468a42f586ab7ed22c6ab2fd9 SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 Starscream: 5178aed56b316f13fa3bc55694e583d35dd414d9 SwiftyJSON: 2f33a42c6fbc52764d96f13368585094bfd8aa5e Swime: d7b2c277503b6cea317774aedc2dce05613f8b0b WatermelonDB: baec390a1039dcebeee959218900c978af3407c9 - Yoga: 2ed968a4f060a92834227c036279f2736de0fce3 + Yoga: eca980a5771bf114c41a754098cd85e6e0d90ed7 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a PODFILE CHECKSUM: 62c761c9aec9bb4ef459a75ab630937696026291 diff --git a/ios/bundleReactNative.sh b/ios/bundleReactNative.sh index 63ec1bcd0..250ef1d5d 100755 --- a/ios/bundleReactNative.sh +++ b/ios/bundleReactNative.sh @@ -12,7 +12,8 @@ if [[ "${SENTRY_ENABLED}" = "true" ]]; then ./makeSentryProperties.sh export SENTRY_PROPERTIES=sentry.properties - ../node_modules/@sentry/cli/bin/sentry-cli react-native xcode ./react-native-xcode.sh + ../node_modules/@sentry/cli/bin/sentry-cli react-native xcode \ + ../node_modules/react-native/scripts/react-native-xcode.sh else echo "Sentry native integration is not enabled" ../node_modules/react-native/scripts/react-native-xcode.sh diff --git a/ios/uploadDebugSymbols.sh b/ios/uploadDebugSymbols.sh index f72ff2443..348deb8d9 100755 --- a/ios/uploadDebugSymbols.sh +++ b/ios/uploadDebugSymbols.sh @@ -6,7 +6,8 @@ if [[ "${SENTRY_ENABLED}" = "true" ]]; then ./makeSentryProperties.sh export SENTRY_PROPERTIES=sentry.properties - ../node_modules/@sentry/cli/bin/sentry-cli upload-dsym +../node_modules/@sentry/cli/bin/sentry-cli upload-dif "$DWARF_DSYM_FOLDER_PATH" + else echo "Not uploading debugging symbols to Sentry because Sentry is disabled" fi diff --git a/package-lock.json b/package-lock.json index 43a312bba..d43b72559 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,8 +16,8 @@ "@formatjs/intl-numberformat": "8.2.0", "@formatjs/intl-pluralrules": "5.1.4", "@formatjs/intl-relativetimeformat": "11.1.4", - "@mattermost/compass-icons": "0.1.28", - "@mattermost/react-native-emm": "1.3.2", + "@mattermost/compass-icons": "0.1.30", + "@mattermost/react-native-emm": "1.3.3", "@mattermost/react-native-network-client": "1.0.0", "@mattermost/react-native-paste-input": "0.5.1", "@mattermost/react-native-turbo-log": "0.2.0", @@ -26,44 +26,44 @@ "@nozbe/with-observables": "1.4.1", "@react-native-camera-roll/camera-roll": "5.0.4", "@react-native-clipboard/clipboard": "1.11.1", - "@react-native-community/datetimepicker": "6.5.2", - "@react-native-community/netinfo": "9.3.5", + "@react-native-community/datetimepicker": "6.5.4", + "@react-native-community/netinfo": "9.3.6", "@react-native-cookies/cookies": "6.2.1", "@react-navigation/bottom-tabs": "6.4.0", "@react-navigation/native": "6.0.13", "@rudderstack/rudder-sdk-react-native": "1.5.1", - "@sentry/react-native": "4.6.1", + "@sentry/react-native": "4.8.0", "@stream-io/flat-list-mvcp": "0.10.2", "base-64": "1.0.0", "commonmark": "npm:@mattermost/commonmark@0.30.1-0", "commonmark-react-renderer": "github:mattermost/commonmark-react-renderer#2c660491041f7595f6ce5a05f6dc2e30ca769d3a", - "deep-equal": "2.0.5", + "deep-equal": "2.1.0", "deepmerge": "4.2.2", "emoji-regex": "10.2.1", "fuse.js": "6.6.2", "jail-monkey": "2.7.0", "mime-db": "1.52.0", "moment-timezone": "0.5.38", - "pako": "2.0.4", + "pako": "2.1.0", "react": "18.2.0", "react-freeze": "1.0.3", "react-intl": "6.2.1", - "react-native": "0.70.3", + "react-native": "0.70.5", "react-native-android-open-settings": "1.3.0", "react-native-animated-numbers": "0.4.1", "react-native-background-timer": "2.4.1", "react-native-button": "3.0.1", - "react-native-calendars": "1.1289.0", + "react-native-calendars": "1.1291.1", "react-native-create-thumbnail": "1.6.3", - "react-native-device-info": "10.2.1", + "react-native-device-info": "10.3.0", "react-native-document-picker": "8.1.2", - "react-native-dotenv": "3.4.0", + "react-native-dotenv": "3.4.2", "react-native-elements": "3.4.2", "react-native-exception-handler": "2.10.10", - "react-native-fast-image": "8.6.1", + "react-native-fast-image": "8.6.3", "react-native-file-viewer": "2.1.5", "react-native-fs": "2.20.0", - "react-native-gesture-handler": "2.7.1", + "react-native-gesture-handler": "2.8.0", "react-native-haptic-feedback": "1.14.0", "react-native-hw-keyboard-event": "0.0.4", "react-native-image-picker": "4.10.0", @@ -74,16 +74,16 @@ "react-native-linear-gradient": "2.6.2", "react-native-localize": "2.2.4", "react-native-math-view": "3.9.5", - "react-native-navigation": "7.29.0", - "react-native-notifications": "4.3.1", + "react-native-navigation": "7.30.1", + "react-native-notifications": "4.3.3", "react-native-permissions": "3.6.1", - "react-native-reanimated": "2.10.0", + "react-native-reanimated": "2.12.0", "react-native-safe-area-context": "4.4.1", "react-native-screens": "3.18.2", "react-native-section-list-get-item-layout": "2.2.3", "react-native-shadow-2": "7.0.6", - "react-native-share": "7.9.1", - "react-native-svg": "13.4.0", + "react-native-share": "8.0.0", + "react-native-svg": "13.5.0", "react-native-user-agent": "2.3.1", "react-native-vector-icons": "9.2.0", "react-native-video": "5.2.1", @@ -100,28 +100,29 @@ }, "devDependencies": { "@babel/cli": "7.19.3", - "@babel/core": "7.19.3", + "@babel/core": "7.20.2", "@babel/eslint-parser": "7.19.1", "@babel/plugin-proposal-class-properties": "7.18.6", - "@babel/plugin-proposal-decorators": "7.19.3", + "@babel/plugin-proposal-decorators": "7.20.2", "@babel/plugin-transform-flow-strip-types": "7.19.0", - "@babel/plugin-transform-runtime": "7.19.1", - "@babel/preset-env": "7.19.4", + "@babel/plugin-transform-runtime": "7.19.6", + "@babel/preset-env": "7.20.2", "@babel/preset-typescript": "7.18.6", "@babel/register": "7.18.9", - "@babel/runtime": "7.19.4", - "@react-native-community/eslint-config": "3.1.0", + "@babel/runtime": "7.20.1", + "@react-native-community/eslint-config": "3.2.0", "@testing-library/react-hooks": "8.0.1", - "@testing-library/react-native": "11.3.0", + "@testing-library/react-native": "11.4.0", "@types/base-64": "1.0.0", "@types/commonmark": "0.27.5", "@types/commonmark-react-renderer": "4.3.1", "@types/deep-equal": "1.0.1", - "@types/jest": "29.2.0", - "@types/lodash": "4.14.186", + "@types/jest": "29.2.2", + "@types/lodash": "4.14.188", "@types/mime-db": "1.43.1", - "@types/react": "18.0.21", - "@types/react-native": "0.70.5", + "@types/querystringify": "2.0.0", + "@types/react": "18.0.25", + "@types/react-native": "0.70.6", "@types/react-native-background-timer": "2.0.0", "@types/react-native-button": "3.0.1", "@types/react-native-dotenv": "0.2.0", @@ -129,38 +130,38 @@ "@types/react-native-video": "5.0.14", "@types/react-syntax-highlighter": "15.5.5", "@types/react-test-renderer": "18.0.0", - "@types/readable-stream": "2.3.14", - "@types/semver": "7.3.12", + "@types/readable-stream": "2.3.15", + "@types/semver": "7.3.13", "@types/shallow-equals": "1.0.0", "@types/tinycolor2": "1.4.3", "@types/tough-cookie": "4.0.2", "@types/url-parse": "1.4.8", "@types/uuid": "8.3.4", - "@typescript-eslint/eslint-plugin": "5.40.1", - "@typescript-eslint/parser": "5.40.1", + "@typescript-eslint/eslint-plugin": "5.42.1", + "@typescript-eslint/parser": "5.42.1", "axios": "1.1.3", "axios-cookiejar-support": "4.0.3", - "babel-jest": "29.2.0", - "babel-loader": "8.2.5", + "babel-jest": "29.3.0", + "babel-loader": "9.1.0", "babel-plugin-module-resolver": "4.1.0", "deep-freeze": "0.0.1", - "detox": "19.12.6", - "eslint": "8.25.0", + "detox": "19.13.0", + "eslint": "8.27.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.26.0", - "eslint-plugin-jest": "27.1.2", + "eslint-plugin-jest": "27.1.4", "eslint-plugin-react": "7.31.10", "eslint-plugin-react-hooks": "4.6.0", - "husky": "8.0.1", + "husky": "8.0.2", "isomorphic-fetch": "3.0.0", - "jest": "29.2.0", - "jest-cli": "29.2.0", + "jest": "29.3.0", + "jest-cli": "29.3.0", "jetifier": "2.0.0", - "metro-react-native-babel-preset": "0.73.2", + "metro-react-native-babel-preset": "0.73.3", "mmjstool": "github:mattermost/mattermost-utilities#010f456ea8be5beebafdb8776177cba515c1969e", "mock-async-storage": "2.2.0", "nock": "13.2.9", - "patch-package": "6.4.7", + "patch-package": "6.5.0", "react-devtools-core": "4.26.1", "react-native-svg-transformer": "1.0.0", "react-test-renderer": "18.2.0", @@ -224,28 +225,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.3", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.3", - "@babel/types": "^7.19.3", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -296,11 +297,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz", - "integrity": "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.3.tgz", + "integrity": "sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A==", "dependencies": { - "@babel/types": "^7.19.3", + "@babel/types": "^7.20.2", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -332,11 +333,11 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "dependencies": { - "@babel/compat-data": "^7.19.3", + "@babel/compat-data": "^7.20.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", "semver": "^6.3.0" @@ -357,16 +358,16 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-replace-supers": "^7.19.1", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -480,18 +481,18 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -509,9 +510,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "engines": { "node": ">=6.9.0" } @@ -549,11 +550,11 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -590,9 +591,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "engines": { "node": ">=6.9.0" } @@ -620,13 +621,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", - "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", "dependencies": { "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -646,9 +647,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz", - "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -687,12 +688,12 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", - "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -735,13 +736,13 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz", - "integrity": "sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.2.tgz", + "integrity": "sha512-nkBH96IBmgKnbHQ5gXFrcmez+Z9S2EIDKDQGp005ROqBigc88Tky4rzCnlP/lnlj245dCEQl4/YyV0V1kYh5dw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-create-class-features-plugin": "^7.20.2", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-replace-supers": "^7.19.1", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/plugin-syntax-decorators": "^7.19.0" @@ -859,15 +860,15 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", "dependencies": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" + "@babel/plugin-transform-parameters": "^7.20.1" }, "engines": { "node": ">=6.9.0" @@ -1068,11 +1069,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1271,11 +1272,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1285,16 +1286,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, @@ -1320,11 +1322,11 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1451,13 +1453,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1467,14 +1468,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" }, "engines": { "node": ">=6.9.0" @@ -1484,15 +1484,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-module-transforms": "^7.19.6", "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-validator-identifier": "^7.19.1" }, "engines": { "node": ">=6.9.0" @@ -1575,11 +1574,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1692,9 +1691,9 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz", - "integrity": "sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.19.0", @@ -1835,17 +1834,17 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", "dependencies": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.19.1", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", @@ -1854,7 +1853,7 @@ "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.19.4", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", @@ -1865,7 +1864,7 @@ "@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.18.6", + "@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", @@ -1878,10 +1877,10 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.19.4", - "@babel/plugin-transform-classes": "^7.19.0", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.19.4", + "@babel/plugin-transform-destructuring": "^7.20.2", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", @@ -1889,14 +1888,14 @@ "@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.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.0", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", "@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-parameters": "^7.20.1", "@babel/plugin-transform-property-literals": "^7.18.6", "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", @@ -1908,7 +1907,7 @@ "@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.19.4", + "@babel/types": "^7.20.2", "babel-plugin-polyfill-corejs2": "^0.3.3", "babel-plugin-polyfill-corejs3": "^0.6.0", "babel-plugin-polyfill-regenerator": "^0.4.1", @@ -1922,45 +1921,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/preset-env/node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", @@ -2065,11 +2025,11 @@ } }, "node_modules/@babel/runtime": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", - "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.10" }, "engines": { "node": ">=6.9.0" @@ -2087,6 +2047,11 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + }, "node_modules/@babel/template": { "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", @@ -2101,18 +2066,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz", - "integrity": "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", + "@babel/generator": "^7.20.1", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.3", - "@babel/types": "^7.19.3", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2121,9 +2086,9 @@ } }, "node_modules/@babel/types": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", - "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", "dependencies": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -2133,14 +2098,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/types/node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -2223,18 +2180,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -2405,9 +2350,9 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", - "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", + "integrity": "sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -2463,16 +2408,16 @@ } }, "node_modules/@jest/console": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.2.0.tgz", - "integrity": "sha512-Xz1Wu+ZZxcB3RS8U3HdkFxlRJ7kLXI/by9X7d2/gvseIWPwYu/c1EsYy77cB5iyyHGOy3whS2HycjcuzIF4Jow==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.2.1.tgz", + "integrity": "sha512-MF8Adcw+WPLZGBiNxn76DOuczG3BhODTcMlDCA4+cFi41OkaY/lyI0XUUhi73F88Y+7IHoGmD80pN5CtxQUdSw==", "dev": true, "dependencies": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.2.0", - "jest-util": "^29.2.0", + "jest-message-util": "^29.2.1", + "jest-util": "^29.2.1", "slash": "^3.0.0" }, "engines": { @@ -2537,23 +2482,6 @@ "node": ">=8" } }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -2576,16 +2504,16 @@ } }, "node_modules/@jest/core": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.2.0.tgz", - "integrity": "sha512-+gyJ3bX+kGEW/eqt/0kI7fLjqiFr3AN8O+rlEl1fYRf7D8h4Sj4tBGo9YOSirvWgvemoH2EPRya35bgvcPFzHQ==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.3.0.tgz", + "integrity": "sha512-5DyNvV8452bwqcYyXHCYaAD8UrTiWosrhBY+rc0MBMyXyDzcIL+w5gdlCYhlHbNsHoWnf4nUbRmg++LWfWVtMQ==", "dev": true, "dependencies": { - "@jest/console": "^29.2.0", - "@jest/reporters": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/transform": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/console": "^29.2.1", + "@jest/reporters": "^29.3.0", + "@jest/test-result": "^29.2.1", + "@jest/transform": "^29.3.0", + "@jest/types": "^29.2.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", @@ -2593,20 +2521,20 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.9", "jest-changed-files": "^29.2.0", - "jest-config": "^29.2.0", - "jest-haste-map": "^29.2.0", - "jest-message-util": "^29.2.0", + "jest-config": "^29.3.0", + "jest-haste-map": "^29.3.0", + "jest-message-util": "^29.2.1", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.2.0", - "jest-resolve-dependencies": "^29.2.0", - "jest-runner": "^29.2.0", - "jest-runtime": "^29.2.0", - "jest-snapshot": "^29.2.0", - "jest-util": "^29.2.0", - "jest-validate": "^29.2.0", - "jest-watcher": "^29.2.0", + "jest-resolve": "^29.3.0", + "jest-resolve-dependencies": "^29.3.0", + "jest-runner": "^29.3.0", + "jest-runtime": "^29.3.0", + "jest-snapshot": "^29.3.0", + "jest-util": "^29.2.1", + "jest-validate": "^29.2.2", + "jest-watcher": "^29.2.2", "micromatch": "^4.0.4", - "pretty-format": "^29.2.0", + "pretty-format": "^29.2.1", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -2680,32 +2608,6 @@ "node": ">=8" } }, - "node_modules/@jest/core/node_modules/jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jest/core/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -2728,135 +2630,48 @@ } }, "node_modules/@jest/create-cache-key-function": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.3.1.tgz", - "integrity": "sha512-21lx0HRgkznc5Tc2WGiXVYQQ6Vdfohs6CkLV2FLogLRb52f6v9SiSIjTNflu23lzEmY4EalLgQLxCfhgvREV6w==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.2.1.tgz", + "integrity": "sha512-///wxGQUyP0GCr3L1OcqIzhsKvN2gOyqWsRxs56XGCdD8EEuoKg857G9nC+zcWIpIsG+3J5UnEbhe3LJw8CNmQ==", "dependencies": { - "@jest/types": "^27.2.5" + "@jest/types": "^29.2.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/create-cache-key-function/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/create-cache-key-function/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/create-cache-key-function/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/create-cache-key-function/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@jest/create-cache-key-function/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/create-cache-key-function/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/environment": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.2.0.tgz", - "integrity": "sha512-foaVv1QVPB31Mno3LlL58PxEQQOLZd9zQfCpyQQCQIpUAtdFP1INBjkphxrCfKT13VxpA0z5jFGIkmZk0DAg2Q==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.0.tgz", + "integrity": "sha512-8wgn3br51bx+7rgC8FOKmAD62Q39iswdiy5/p6acoekp/9Bb/IQbh3zydOrnGp74LwStSrKgpQSKBlOKlAQq0g==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/fake-timers": "^29.3.0", + "@jest/types": "^29.2.1", "@types/node": "*", - "jest-mock": "^29.2.0" + "jest-mock": "^29.3.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.2.0.tgz", - "integrity": "sha512-+3lxcYL9e0xPJGOR33utxxejn+Mulz40kY0oy0FVsmIESW87NZDJ7B1ovaIqeX0xIgPX4laS5SGlqD2uSoBMcw==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.3.0.tgz", + "integrity": "sha512-Lz/3x4Se5g6nBuLjTO+xE8D4OXY9fFmosZPwkXXZUJUsp9r9seN81cJa54wOGr1QjCQnhngMqclblhM4X/hcCg==", "dev": true, "dependencies": { - "expect": "^29.2.0", - "jest-snapshot": "^29.2.0" + "expect": "^29.3.0", + "jest-snapshot": "^29.3.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.2.0.tgz", - "integrity": "sha512-nz2IDF7nb1qmj9hx8Ja3MFab2q9Ml8QbOaaeJNyX5JQJHU8QUvEDiMctmhGEkk3Kzr8w8vAqz4hPk/ogJSrUhg==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.2.2.tgz", + "integrity": "sha512-vwnVmrVhTmGgQzyvcpze08br91OL61t9O0lJMDyb6Y/D8EKQ9V7rGUb/p7PDt0GPzK0zFYqXWFo4EO2legXmkg==", "dev": true, "dependencies": { "jest-get-type": "^29.2.0" @@ -2866,135 +2681,48 @@ } }, "node_modules/@jest/fake-timers": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.2.0.tgz", - "integrity": "sha512-mX0V0uQsgeSLTt0yTqanAhhpeUKMGd2uq+PSLAfO40h72bvfNNQ7pIEl9vIwNMFxRih1ENveEjSBsLjxGGDPSw==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.0.tgz", + "integrity": "sha512-SzmWtN6Rld+xebMRGuWeMGhytc7qHnYfFk1Zd/1QavQWsFOmA9SgtvGHCBue1wXQhdDMaSIm1aPGj2Zmyrr1Zg==", "dev": true, "dependencies": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^29.2.0", - "jest-mock": "^29.2.0", - "jest-util": "^29.2.0" + "jest-message-util": "^29.2.1", + "jest-mock": "^29.3.0", + "jest-util": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/fake-timers/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/fake-timers/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/fake-timers/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/fake-timers/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/globals": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.2.0.tgz", - "integrity": "sha512-JQxtEVNWiai1p3PIzAJZSyEqQdAJGvNKvinZDPfu0mhiYEVx6E+PiBuDWj1sVUW8hzu+R3DVqaWC9K2xcLRIAA==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.3.0.tgz", + "integrity": "sha512-okYDVzYNrt/4ysR8XnX6u0I1bGG4kmfdXtUu7kwWHZ9OP13RCjmphgve0tfOrNluwksWvOPYS1f/HOrFTHLygQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.2.0", - "@jest/expect": "^29.2.0", - "@jest/types": "^29.2.0", - "jest-mock": "^29.2.0" + "@jest/environment": "^29.3.0", + "@jest/expect": "^29.3.0", + "@jest/types": "^29.2.1", + "jest-mock": "^29.3.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.2.0.tgz", - "integrity": "sha512-BXoAJatxTZ18U0cwD7C8qBo8V6vef8AXYRBZdhqE5DF9CmpqmhMfw9c7OUvYqMTnBBK9A0NgXGO4Lc9EJzdHvw==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.3.0.tgz", + "integrity": "sha512-MV76tB3Kd80vcv2yMDZfQpMkwkHaY9hlvVhCtHXkVRCWwN+SX3EOmCdX8pT/X4Xh+NusA7l2Rc3yhx4q5p3+Fg==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/transform": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/console": "^29.2.1", + "@jest/test-result": "^29.2.1", + "@jest/transform": "^29.3.0", + "@jest/types": "^29.2.1", "@jridgewell/trace-mapping": "^0.3.15", "@types/node": "*", "chalk": "^4.0.0", @@ -3007,9 +2735,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.2.0", - "jest-util": "^29.2.0", - "jest-worker": "^29.2.0", + "jest-message-util": "^29.2.1", + "jest-util": "^29.2.1", + "jest-worker": "^29.3.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -3085,53 +2813,6 @@ "node": ">=8" } }, - "node_modules/@jest/reporters/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.2.0.tgz", - "integrity": "sha512-mluOlMbRX1H59vGVzPcVg2ALfCausbBpxC8a2KWOzInhYHZibbHH8CB0C1JkmkpfurrkOYgF7FPmypuom1OM9A==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/@jest/reporters/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3157,7 +2838,6 @@ "version": "29.0.0", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", - "dev": true, "dependencies": { "@sinclair/typebox": "^0.24.1" }, @@ -3180,13 +2860,13 @@ } }, "node_modules/@jest/test-result": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.2.0.tgz", - "integrity": "sha512-l76EPJ6QqtzsCLS4aimJqWO53pxZ82o3aE+Brcmo1HJ/phb9+MR7gPhyDdN6VSGaLJCRVJBZgWEhAEz+qON0Fw==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.2.1.tgz", + "integrity": "sha512-lS4+H+VkhbX6z64tZP7PAUwPqhwj3kbuEHcaLuaBuB+riyaX7oa1txe0tXgrFj5hRWvZKvqO7LZDlNWeJ7VTPA==", "dev": true, "dependencies": { - "@jest/console": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/console": "^29.2.1", + "@jest/types": "^29.2.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -3195,14 +2875,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.2.0.tgz", - "integrity": "sha512-NCnjZcGnVdva6IDqF7TCuFsXs2F1tohiNF9sasSJNzD7VfN5ic9XgcS/oPDalGiPLxCmGKj4kewqqrKAqBACcQ==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.3.0.tgz", + "integrity": "sha512-XQlTP/S6Yf6NKV0Mt4oopFKyDxiEkDMD7hIFcCTeltKQszE0Z+LI5KLukwNW6Qxr1YzaZ/s6PlKJusiCLJNTcw==", "dev": true, "dependencies": { - "@jest/test-result": "^29.2.0", + "@jest/test-result": "^29.2.1", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.2.0", + "jest-haste-map": "^29.3.0", "slash": "^3.0.0" }, "engines": { @@ -3219,22 +2899,22 @@ } }, "node_modules/@jest/transform": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.2.0.tgz", - "integrity": "sha512-NXMujGHy+B4DAj4dGnVPD0SIXlR2Z/N8Gp9h3mF66kcIRult1WWqY3/CEIrJcKviNWaFPYhZjCG2L3fteWzcUw==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.0.tgz", + "integrity": "sha512-4T8h61ItCakAlJkdYa7XVWP3r39QldlCeOSNmRpiJisi5PrrlzwZdpJDIH13ZZjh+MlSPQ2cq8YbUs3TuH+tRA==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", + "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.2.0", + "jest-haste-map": "^29.3.0", "jest-regex-util": "^29.2.0", - "jest-util": "^29.2.0", + "jest-util": "^29.2.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -3293,6 +2973,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3302,32 +2988,6 @@ "node": ">=8" } }, - "node_modules/@jest/transform/node_modules/jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jest/transform/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3350,10 +3010,9 @@ } }, "node_modules/@jest/types": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.2.0.tgz", - "integrity": "sha512-mfgpQz4Z2xGo37m6KD8xEpKelaVzvYVRijmLPePn9pxgaPEtX+SqIyPNzzoeCPXKYbB4L/wYSgXDL8o3Gop78Q==", - "dev": true, + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.2.1.tgz", + "integrity": "sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==", "dependencies": { "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", @@ -3370,7 +3029,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -3385,7 +3043,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3401,7 +3058,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3412,14 +3068,12 @@ "node_modules/@jest/types/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@jest/types/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -3428,7 +3082,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -3465,6 +3118,17 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -3511,65 +3175,14 @@ } }, "node_modules/@mattermost/compass-icons": { - "version": "0.1.28", - "resolved": "https://registry.npmjs.org/@mattermost/compass-icons/-/compass-icons-0.1.28.tgz", - "integrity": "sha512-pcb//GGAZWZjC+oaLRPBpB+6FS6ixMDsmbLimMcJ6D7SqxtyhPDx6+JRi3umAtrHR/Ab5GBAz8+BzQDwYVuC7g==", - "dependencies": { - "esm": "3.2.25", - "fontello-batch-cli": "4.0.0", - "fontello-cli": "0.6.2", - "lodash": "4.17.21", - "needle": "3.0.0", - "open": "8.4.0", - "svgpath": "2.5.0", - "unzip": "0.1.11", - "xmldom": "0.6.0" - } - }, - "node_modules/@mattermost/compass-icons/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@mattermost/compass-icons/node_modules/needle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.0.0.tgz", - "integrity": "sha512-eGr0qnfHxAjr+Eptl1zr2lgUQUPC1SZfTkg2kFi0kxr1ChJonHUVYobkug8siBKMlyUVVp56MSkp6CSeXH/jgw==", - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/@mattermost/compass-icons/node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "version": "0.1.30", + "resolved": "https://registry.npmjs.org/@mattermost/compass-icons/-/compass-icons-0.1.30.tgz", + "integrity": "sha512-PmY0ak1IySORkBMgXqUMjdOjEF935FVo8/d42m1pz2CVt4oz02PQHoMsnlfU3Cf+w4J83fbA4JCywIGz7LZnLg==" }, "node_modules/@mattermost/react-native-emm": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@mattermost/react-native-emm/-/react-native-emm-1.3.2.tgz", - "integrity": "sha512-bahCFzGSK5ZlPO45QmIY7fL4fsjYlyqszuBjP76mURR04QGg0C9RIolH0wAFkNrvsxEmtv9ePpZdumfm9iHbPA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@mattermost/react-native-emm/-/react-native-emm-1.3.3.tgz", + "integrity": "sha512-mOPlp3C0ba1XOANTYi3i2dL9gBdQLoJZ4zvOzhqYeg5FQXBXXoJomPKAzxJH27aX3k92bu+U0BmEbnKIitKKEA==", "peerDependencies": { "react": "*", "react-native": "*" @@ -3737,18 +3350,18 @@ } }, "node_modules/@react-native-community/cli": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.1.3.tgz", - "integrity": "sha512-dfiBxNvqSwxkMduH0eAEJNS+LBbwxm1rOlTO7bN+FZvUwZNCCgIYrixfRo+ifqDUv8N5AbpQB5umnLbs0AjPaA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.2.1.tgz", + "integrity": "sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ==", "dependencies": { - "@react-native-community/cli-clean": "^9.1.0", - "@react-native-community/cli-config": "^9.1.0", + "@react-native-community/cli-clean": "^9.2.1", + "@react-native-community/cli-config": "^9.2.1", "@react-native-community/cli-debugger-ui": "^9.0.0", - "@react-native-community/cli-doctor": "^9.1.2", - "@react-native-community/cli-hermes": "^9.1.0", - "@react-native-community/cli-plugin-metro": "^9.1.3", - "@react-native-community/cli-server-api": "^9.1.0", - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-doctor": "^9.2.1", + "@react-native-community/cli-hermes": "^9.2.1", + "@react-native-community/cli-plugin-metro": "^9.2.1", + "@react-native-community/cli-server-api": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", "@react-native-community/cli-types": "^9.1.0", "chalk": "^4.1.2", "commander": "^9.4.0", @@ -3767,11 +3380,11 @@ } }, "node_modules/@react-native-community/cli-clean": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.1.0.tgz", - "integrity": "sha512-3HznNw8EBQtLsVyV8b8+h76M9EeJcJgYn5wZVGQ5mghAOhqnSWVbwRvpDdb8ITXaiTIXFGNOxXnGKMXsu0CYTw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz", + "integrity": "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==", "dependencies": { - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "prompts": "^2.4.0" @@ -3920,11 +3533,11 @@ } }, "node_modules/@react-native-community/cli-config": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.1.0.tgz", - "integrity": "sha512-6G9d5weedQ6EMz37ZYXrFHCU2DG3yqvdLs4Jo2383cSxal+oO+kggaTgqLBKoMETz/S80KsMeC/l+MoRjc1pzw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz", + "integrity": "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==", "dependencies": { - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-tools": "^9.2.1", "cosmiconfig": "^5.1.0", "deepmerge": "^3.2.0", "glob": "^7.1.3", @@ -3948,13 +3561,13 @@ } }, "node_modules/@react-native-community/cli-doctor": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.1.2.tgz", - "integrity": "sha512-BmacbikyaxR4s54kq17LE0bBK7g8bcjc679ee36DqkX+Xij2VHHynLzTpuDJ8y6iHI2v13vauEMjnh4j612u5w==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.2.1.tgz", + "integrity": "sha512-RpUax0pkKumXJ5hcRG0Qd+oYWsA2RFeMWKY+Npg8q05Cwd1rqDQfWGprkHC576vz26+FPuvwEagoAf6fR2bvJA==", "dependencies": { - "@react-native-community/cli-config": "^9.1.0", - "@react-native-community/cli-platform-ios": "^9.1.2", - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-config": "^9.2.1", + "@react-native-community/cli-platform-ios": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "command-exists": "^1.2.8", "envinfo": "^7.7.2", @@ -4140,12 +3753,12 @@ } }, "node_modules/@react-native-community/cli-hermes": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.1.0.tgz", - "integrity": "sha512-Ly4dnlRZZ7FckFfSWnaD5BxszuEe9/WcJ6A7srW5UobqnnmEznDv1IY0oBTq1ggnmzIquM9dJQZ0UbcZeQjkoA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.2.1.tgz", + "integrity": "sha512-723/NMb7egXzJrbWT1uEkN2hOpw+OOtWTG2zKJ3j7KKgUd8u/pP+/z5jO8xVrq+eYJEMjDK0FBEo1Xj7maR4Sw==", "dependencies": { - "@react-native-community/cli-platform-android": "^9.1.0", - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-platform-android": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "hermes-profile-transformer": "^0.0.6", "ip": "^1.1.5" @@ -4216,11 +3829,11 @@ } }, "node_modules/@react-native-community/cli-platform-android": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.1.0.tgz", - "integrity": "sha512-OZ/Krq0wH6T7LuAvwFdJYe47RrHG8IOcoab47H4QQdYGTmJgTS3SlVkr6gn79pZyBGyp7xVizD30QJrIIyDjnw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz", + "integrity": "sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg==", "dependencies": { - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "fs-extra": "^8.1.0", @@ -4393,11 +4006,11 @@ } }, "node_modules/@react-native-community/cli-platform-ios": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.1.2.tgz", - "integrity": "sha512-XpgA9ymm76yjvtYPByqFF1LP7eM/lH5K3zpkZkV9MJLStOIo3mrzN2ywRDZ/xVOheh5LafS4YMmrjIajf11oIQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz", + "integrity": "sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg==", "dependencies": { - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "glob": "^7.1.3", @@ -4547,12 +4160,12 @@ } }, "node_modules/@react-native-community/cli-plugin-metro": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.1.3.tgz", - "integrity": "sha512-eLZiGIMybNwkbfKRd8wfNP1u5pnsGYLD3YHlNQyRlfS7AMG7NCQN8bk2uWWJJmWAv632KFLConwJGcLhk6ZNMQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz", + "integrity": "sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ==", "dependencies": { - "@react-native-community/cli-server-api": "^9.1.0", - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-server-api": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "metro": "0.72.3", "metro-config": "0.72.3", @@ -4628,12 +4241,12 @@ } }, "node_modules/@react-native-community/cli-server-api": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.1.0.tgz", - "integrity": "sha512-Xf3hUqUc99hVmWOsmfNqUQ+sxhut9MIHlINzlo7Azxlmg9v9U/vtwJVJSIPD6iwPzvaPH1qeshzwy/r0GUR7fg==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", + "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==", "dependencies": { "@react-native-community/cli-debugger-ui": "^9.0.0", - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-tools": "^9.2.1", "compression": "^1.7.1", "connect": "^3.6.5", "errorhandler": "^1.5.0", @@ -4750,9 +4363,9 @@ } }, "node_modules/@react-native-community/cli-tools": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.1.0.tgz", - "integrity": "sha512-07Z1hyy4cYty84P9cGq+Xf8Vb0S/0ffxLVdVQEMmLjU71sC9YTUv1anJdZyt6f9uUPvA9+e/YIXw5Bu0rvuXIw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz", + "integrity": "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==", "dependencies": { "appdirsjs": "^1.2.4", "chalk": "^4.1.2", @@ -5101,17 +4714,17 @@ } }, "node_modules/@react-native-community/datetimepicker": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-6.5.2.tgz", - "integrity": "sha512-9K3zhIH1zmpIGSG3GJTWLIoAx+sR4kJ1wqpGKMwWJ5IYXBsFxMdvGw023t0pz2CQStlnNbbNhnZY/HMYFBCsCg==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-6.5.4.tgz", + "integrity": "sha512-6YUz6d6bEh409eG6HcL/oHmqElWtQgeHmVoVIfuJusf54ZsHr14NqHvrux0P1vBv5vcYrn9Qi8OwZZiFVyp9vw==", "dependencies": { "invariant": "^2.2.4" } }, "node_modules/@react-native-community/eslint-config": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/eslint-config/-/eslint-config-3.1.0.tgz", - "integrity": "sha512-LCN0QkMNIHoXp2B/uedxQI2GMLbupkIDKSb/6Q7e+pHp4fHrGIkmixSDR5sbjzeqNIf7a1+VcRxRp9u6qv10Ng==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/eslint-config/-/eslint-config-3.2.0.tgz", + "integrity": "sha512-ZjGvoeiBtCbd506hQqwjKmkWPgynGUoJspG8/MuV/EfKnkjCtBmeJvq2n+sWbWEvL9LWXDp2GJmPzmvU5RSvKQ==", "dev": true, "dependencies": { "@babel/core": "^7.14.0", @@ -5164,9 +4777,9 @@ "dev": true }, "node_modules/@react-native-community/netinfo": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-9.3.5.tgz", - "integrity": "sha512-Mqbh/J8YCfc+EqSjq5OJn2USmcD8On4048pKEfyCsCDty3lQs1SNcmHqJdu9idNU2v//aM73T8F+re59cf78Ig==", + "version": "9.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-9.3.6.tgz", + "integrity": "sha512-SwbBnHZuXcCUpYdL6ebt4HPAZEugPASl+RPxIyNe91Y+boZptzAFLywYW6yU93DYAhiHHFQBL6x6LxwF/K/tOQ==", "peerDependencies": { "react-native": ">=0.59" } @@ -5315,13 +4928,13 @@ } }, "node_modules/@sentry/browser": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.14.2.tgz", - "integrity": "sha512-KGAZ+5lK7gIO2CM3/MAQGY8JtNVCWXRi807lAxndJ3E1oIQb9A0x7b+AJNr1+6jlwf6QESblr92MCLKPHDpNbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.16.0.tgz", + "integrity": "sha512-tJ063zvoF8Raw7mzQEXupOFPSN6v36WIbsDVGeFdToPCwViaBuATaxvWCrudGzsnBkMyItmTLJkzn9SEIXUOiw==", "dependencies": { - "@sentry/core": "7.14.2", - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/core": "7.16.0", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "tslib": "^1.9.3" }, "engines": { @@ -5369,13 +4982,12 @@ } }, "node_modules/@sentry/core": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.14.2.tgz", - "integrity": "sha512-AXcH6nROugziO5KsKSQ9TmAXq6HJa8Fn+kDqAL/sNY65w6YYlHifMO2xHkSXVJxGw7vx9DYh/5SF+KnLn6NDNA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.16.0.tgz", + "integrity": "sha512-vq6H1b/IPTvzDD9coQ3wIudvSjkAYuUlXb1dv69dRlq4v3st9dcKBps1Zf0lQ1i4TVlDLoe1iGMmNFglMF1Q5w==", "dependencies": { - "@sentry/hub": "7.14.2", - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "tslib": "^1.9.3" }, "engines": { @@ -5388,12 +5000,13 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/hub": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.14.2.tgz", - "integrity": "sha512-18cuSesTn9VAF0JC107flLmtCRt/6DBn38uz0G9cPThKtTSNwjGvGZ/ag4J1iq+IDjVS5MA6iTncXOsSpVP2Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.16.0.tgz", + "integrity": "sha512-eCM66JPS2nw+fQK3vpJhs6Lxf4FqOwPqIpFbJ2TivQ8kgJyolHOyeH/LsmJbcw97P4sc3O3LHt5v93vTKmlDrw==", "dependencies": { - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/core": "7.16.0", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "tslib": "^1.9.3" }, "engines": { @@ -5406,12 +5019,12 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/integrations": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.14.2.tgz", - "integrity": "sha512-vxS6ZDgPOxmbfEV6mynu7gouFSnq5LjlnEQYe2D7+/aRPzcgXzwPiqLt/Qd0OG+8LR2UjX+ziBTJOyARZcHxRA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.16.0.tgz", + "integrity": "sha512-PJRmFUHOKMf1APOlwxGB7Z6LHzJP4xL6OLSoiwnruRuHaGvdyILA53fr/A6wRMSPyTxJDJpNkcN36cA56mLxYA==", "dependencies": { - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "localforage": "^1.8.1", "tslib": "^1.9.3" }, @@ -5425,13 +5038,13 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/react": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.14.2.tgz", - "integrity": "sha512-gWPSxOYcAEG/c7Ubuv0yAGMhOvHwMHQ47fEhYa8Be5e/kzXMzc/lQAaoKLNr73BZGvBvY7ghdC53ATGQXLGxpg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.16.0.tgz", + "integrity": "sha512-tJH5zO4MPopzqZgi7Yd4iIB9Am5uGVefgkHaoeCGXffveEVWqEdjj8TqPL36SBb76gCmtpa01NBDsUSDZ1w/yw==", "dependencies": { - "@sentry/browser": "7.14.2", - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/browser": "7.16.0", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "hoist-non-react-statics": "^3.3.2", "tslib": "^1.9.3" }, @@ -5443,19 +5056,19 @@ } }, "node_modules/@sentry/react-native": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-4.6.1.tgz", - "integrity": "sha512-P92DqyfqYURpHmaO2yqgqnmB4TW4id1HXe1JrwBvatSpCsinzVtySkmadxQMkIYKhCSEVSfhjGpz5zEosVRpQw==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-4.8.0.tgz", + "integrity": "sha512-+8js5kRGw8XurRqIVI+IT4tWdBlK6SVEEP6zHTMYB6u4NNzSXc5gKCheSZ1SeKAl30e1ZFw4t4Ace6kO+TlVdQ==", "dependencies": { - "@sentry/browser": "7.14.2", + "@sentry/browser": "7.16.0", "@sentry/cli": "1.74.4", - "@sentry/core": "7.14.2", - "@sentry/hub": "7.14.2", - "@sentry/integrations": "7.14.2", - "@sentry/react": "7.14.2", - "@sentry/tracing": "7.14.2", - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/core": "7.16.0", + "@sentry/hub": "7.16.0", + "@sentry/integrations": "7.16.0", + "@sentry/react": "7.16.0", + "@sentry/tracing": "7.16.0", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "@sentry/wizard": "1.2.17" }, "peerDependencies": { @@ -5469,13 +5082,13 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/tracing": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.14.2.tgz", - "integrity": "sha512-KCZogsvqUYiR9vNPWXVgSM00CF+yfYJaBd363fN3HUbjya4j96cHJg65zf6oy85Igr6IGclYaTkoEbiZ6xdNDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.16.0.tgz", + "integrity": "sha512-8a9bViUY7oS35msBMouxkgz5OGd9NGutuKF7SQ8hPZwTcQPOxOwPyHccykgr56k6OmaDjGCLZMqZowaysJj+4g==", "dependencies": { - "@sentry/hub": "7.14.2", - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/core": "7.16.0", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "tslib": "^1.9.3" }, "engines": { @@ -5488,19 +5101,19 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/types": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.14.2.tgz", - "integrity": "sha512-JzkOtenArOXmJBAk/FBbxKKX7XC650HqkhGL4ugT/f+RyxfiDZ0X1TAYMrvKIe+qpn5Nh7JUBfR+BARKAiu2wQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.16.0.tgz", + "integrity": "sha512-i6D+OK6d0l/k+VQvRp/Pt21WkDEgVBUIZq+sOkEZJczbcfexVdXKeXXoYTD2vYuFq8Yy28fzlsZaKI+NoH94yQ==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.14.2.tgz", - "integrity": "sha512-vpZolN+k1IoxWXhKyOVcRl7V1bgww+96gHqTJdcMzOB83x/ofels7L0kqxb03WukKTYcnc7Ep+yBiKi/OYX9og==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.16.0.tgz", + "integrity": "sha512-3Zh1txg7IRp4kZAdG27YF7K6lD1IZyuAo9KjoPg1Xzqa4DOZyASJuEkbf+rK2a9T4HrtVHHXJUsNbKg8WM3VHg==", "dependencies": { - "@sentry/types": "7.14.2", + "@sentry/types": "7.16.0", "tslib": "^1.9.3" }, "engines": { @@ -5559,13 +5172,12 @@ "node_modules/@sinclair/typebox": { "version": "0.24.44", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.44.tgz", - "integrity": "sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg==", - "dev": true + "integrity": "sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg==" }, "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz", + "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -5789,24 +5401,6 @@ "node": ">=10" } }, - "node_modules/@svgr/core/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@svgr/hast-util-to-babel-ast": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.0.0.tgz", @@ -5895,24 +5489,6 @@ "node": ">=10" } }, - "node_modules/@svgr/plugin-svgo/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@testing-library/react-hooks": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-8.0.1.tgz", @@ -5944,12 +5520,12 @@ } }, "node_modules/@testing-library/react-native": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/@testing-library/react-native/-/react-native-11.3.0.tgz", - "integrity": "sha512-wCbH7TJ2uVwtkQPRQTZbM3Y/mzwK5zxwkOPKfR2UdVdz/RtCC2UVyDnJMaBNwG/cNle5tc92sQDfp3Gn2oyftg==", + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react-native/-/react-native-11.4.0.tgz", + "integrity": "sha512-Pw1T3QoRyoPlnbDPI7pJCRChX/HquEVk6b9XfUuO/LrLJpqAOtZQDYz67eVJfVlhIlTu7hesm57ikIabOWKSlg==", "dev": true, "dependencies": { - "pretty-format": "^29.0.3" + "pretty-format": "^29.0.0" }, "peerDependencies": { "jest": ">=28.0.0", @@ -6046,6 +5622,35 @@ "integrity": "sha512-mMUu4nWHLBlHtxXY17Fg6+ucS/MnndyOWyOe7MmwkoMYxvfQU2ajtRaEvqSUv+aVkMqH/C0NCI8UoVfRNQ10yg==", "dev": true }, + "node_modules/@types/eslint": { + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.8.tgz", + "integrity": "sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==", + "dev": true, + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true, + "peer": true + }, "node_modules/@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -6104,9 +5709,9 @@ } }, "node_modules/@types/jest": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.0.tgz", - "integrity": "sha512-KO7bPV21d65PKwv3LLsD8Jn3E05pjNjRZvkm+YTacWhVmykAb07wW6IkZUmQAltwQafNcDUEUrMO2h3jeBSisg==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.2.tgz", + "integrity": "sha512-og1wAmdxKoS71K2ZwSVqWPX6OVn3ihZ6ZT2qvZvZQm90lJVDyXIjYcu4Khx2CNIeaFv12rOU/YObOsI3VOkzog==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -6126,9 +5731,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.14.186", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz", - "integrity": "sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==", + "version": "4.14.188", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.188.tgz", + "integrity": "sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==", "dev": true }, "node_modules/@types/mime-db": { @@ -6159,10 +5764,16 @@ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" }, + "node_modules/@types/querystringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-9WgEGTevECrXJC2LSWPqiPYWq8BRmeaOyZn47js/3V6UF0PWtcVfvvR43YjeO8BzBsthTz98jMczujOwTw+WYg==", + "dev": true + }, "node_modules/@types/react": { - "version": "18.0.21", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz", - "integrity": "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==", + "version": "18.0.25", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz", + "integrity": "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -6170,9 +5781,9 @@ } }, "node_modules/@types/react-native": { - "version": "0.70.5", - "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.5.tgz", - "integrity": "sha512-Z+NdP5EB1qGSHPSOcsrXqxXrxlFyp/GBllajUIEQ0+XVSFd1l/B+nmHBvACiZvDwRVE/l2hL2pBWeOUPi2C1JA==", + "version": "0.70.6", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.6.tgz", + "integrity": "sha512-ynQ2jj0km9d7dbnyKqVdQ6Nti7VQ8SLTA/KKkkS5+FnvGyvij2AOo1/xnkBR/jnSNXuzrvGVzw2n0VWfppmfKw==", "dependencies": { "@types/react": "*" } @@ -6247,13 +5858,13 @@ } }, "node_modules/@types/readable-stream": { - "version": "2.3.14", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.14.tgz", - "integrity": "sha512-8jQ5Mp7bsDJEnW/69i6nAaQMoLwAVJVc7ZRAVTrdh/o6XueQsX38TEvKuYyoQj76/mg7WdlRfMrtl9pDLCJWsg==", + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", "dev": true, "dependencies": { "@types/node": "*", - "safe-buffer": "*" + "safe-buffer": "~5.1.1" } }, "node_modules/@types/scheduler": { @@ -6262,9 +5873,9 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "node_modules/@types/semver": { - "version": "7.3.12", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", - "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==", + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", "dev": true }, "node_modules/@types/shallow-equals": { @@ -6312,7 +5923,6 @@ "version": "17.0.13", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", - "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -6323,16 +5933,17 @@ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz", - "integrity": "sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz", + "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/type-utils": "5.40.1", - "@typescript-eslint/utils": "5.40.1", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/type-utils": "5.42.1", + "@typescript-eslint/utils": "5.42.1", "debug": "^4.3.4", "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" @@ -6354,32 +5965,15 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/parser": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.40.1.tgz", - "integrity": "sha512-IK6x55va5w4YvXd4b3VrXQPldV9vQTxi5ov+g4pMANsXPTXOcfjx08CRR1Dfrcc51syPtXHF5bgLlMHYFrvQtg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz", + "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", "debug": "^4.3.4" }, "engines": { @@ -6399,9 +5993,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -6412,13 +6006,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -6439,12 +6033,12 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -6455,23 +6049,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -6482,13 +6059,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", - "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", + "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1" + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -6499,9 +6076,9 @@ } }, "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -6512,12 +6089,12 @@ } }, "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -6538,13 +6115,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz", - "integrity": "sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz", + "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.40.1", - "@typescript-eslint/utils": "5.40.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/utils": "5.42.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -6565,9 +6142,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -6578,13 +6155,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -6605,12 +6182,12 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -6621,23 +6198,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -6688,16 +6248,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz", - "integrity": "sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz", + "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -6714,9 +6274,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -6727,13 +6287,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -6754,12 +6314,12 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -6770,23 +6330,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -6822,98 +6365,74 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true, "peer": true }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0" + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "peer": true, "dependencies": { @@ -6921,9 +6440,9 @@ } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "peer": true, "dependencies": { @@ -6931,95 +6450,79 @@ } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", + "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" } }, @@ -7119,6 +6622,16 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peer": true, + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -7155,21 +6668,51 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "peer": true, + "dependencies": { + "ajv": "^8.0.0" + }, "peerDependencies": { - "ajv": ">=5.0.0" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "peer": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -7314,7 +6857,7 @@ "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "engines": { "node": ">=0.10.0" } @@ -7330,7 +6873,7 @@ "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "engines": { "node": ">=0.10.0" } @@ -7366,7 +6909,7 @@ "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "engines": { "node": ">=0.10.0" } @@ -7411,58 +6954,10 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "peer": true, - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true, - "peer": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "2.0.1" - } - }, "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "engines": { "node": ">=0.10.0" } @@ -7491,14 +6986,6 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -7573,12 +7060,12 @@ } }, "node_modules/babel-jest": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.2.0.tgz", - "integrity": "sha512-c8FkrW1chgcbyBqOo7jFGpQYfVnb43JqjQGV+C2r94k2rZJOukYOZ6+csAqKE4ms+PHc+yevnONxs27jQIxylw==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.0.tgz", + "integrity": "sha512-LzQWdGm6hUugVeyGpIKI/T4SVT+PgAA5WFPqBDbneK7C/PqfckNb0tc4KvcKXq/PLA1yY6wTvB8Bc/REQdUxFg==", "dev": true, "dependencies": { - "@jest/transform": "^29.2.0", + "@jest/transform": "^29.3.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^29.2.0", @@ -7673,22 +7160,20 @@ } }, "node_modules/babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.0.tgz", + "integrity": "sha512-Antt61KJPinUMwHwIIz9T5zfMgevnfZkEVWYDWlG888fgdvRRGD0JTuf/fFozQnfT+uq64sk1bmdHDy/mOEWnA==", "dev": true, "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" + "find-cache-dir": "^3.3.2", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 8.9" + "node": ">= 14.15.0" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, "node_modules/babel-loader/node_modules/find-cache-dir": { @@ -7708,20 +7193,6 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/babel-loader/node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -7758,14 +7229,6 @@ "semver": "bin/semver.js" } }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dependencies": { - "object.assign": "^4.1.0" - } - }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -7968,7 +7431,7 @@ "node_modules/base/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -8003,27 +7466,6 @@ "node": ">=0.6" } }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -8034,17 +7476,6 @@ "node": ">=8" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -8055,42 +7486,12 @@ "readable-stream": "^3.4.0" } }, - "node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true, - "peer": true - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -8135,13 +7536,6 @@ "node": ">=8" } }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true, - "peer": true - }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -8150,113 +7544,6 @@ "optional": true, "peer": true }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "peer": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "peer": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "peer": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "peer": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserify-zlib/node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "peer": true - }, "node_modules/browserslist": { "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", @@ -8305,15 +7592,26 @@ } }, "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "peer": true, + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "node_modules/buffer-from": { @@ -8321,43 +7619,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true, - "peer": true - }, - "node_modules/buffer/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "peer": true - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true, - "peer": true - }, "node_modules/bunyan": { "version": "1.8.15", "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", @@ -8400,60 +7661,6 @@ "node": ">= 0.8" } }, - "node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "peer": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/cacache/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/cacache/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true - }, "node_modules/cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -8552,17 +7759,6 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -8637,10 +7833,16 @@ } }, "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "optional": true, "dependencies": { "anymatch": "~3.1.2", @@ -8658,13 +7860,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "peer": true - }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -8680,17 +7875,6 @@ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "node_modules/cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -8714,7 +7898,7 @@ "node_modules/class-utils/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -8725,7 +7909,7 @@ "node_modules/class-utils/node_modules/is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dependencies": { "kind-of": "^3.0.2" }, @@ -8736,7 +7920,7 @@ "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -8747,7 +7931,7 @@ "node_modules/class-utils/node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -8758,7 +7942,7 @@ "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -8898,7 +8082,7 @@ "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dependencies": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -8952,6 +8136,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, "engines": { "node": ">=0.1.90" } @@ -9093,45 +8278,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -9159,25 +8305,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true, - "peer": true - }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true, - "peer": true - }, "node_modules/convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -9186,38 +8318,10 @@ "safe-buffer": "~5.1.1" } }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "peer": true, - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-concurrently/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "engines": { "node": ">=0.10.0" } @@ -9281,6 +8385,18 @@ "node": ">=4" } }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/cosmiconfig/node_modules/resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -9289,53 +8405,6 @@ "node": ">=4" } }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "peer": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "peer": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "node_modules/cross-spawn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", @@ -9346,29 +8415,6 @@ "which": "^1.2.9" } }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "peer": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, "node_modules/css-select": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", @@ -9402,14 +8448,6 @@ "node": ">=8.0.0" } }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/css-what": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", @@ -9439,22 +8477,15 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" }, - "node_modules/cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true, - "peer": true - }, "node_modules/dayjs": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz", - "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", + "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==" }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -9494,25 +8525,25 @@ "dev": true }, "node_modules/deep-equal": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", - "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz", + "integrity": "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==", "dependencies": { - "call-bind": "^1.0.0", - "es-get-iterator": "^1.1.1", - "get-intrinsic": "^1.0.1", - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.2", - "is-regex": "^1.1.1", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", "isarray": "^2.0.5", - "object-is": "^1.1.4", + "object-is": "^1.1.5", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.3", - "which-boxed-primitive": "^1.0.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", "which-collection": "^1.0.1", - "which-typed-array": "^1.1.2" + "which-typed-array": "^1.1.8" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9549,14 +8580,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "engines": { - "node": ">=8" - } - }, "node_modules/define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -9621,17 +8644,6 @@ "prop-types": "*" } }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -9660,9 +8672,9 @@ } }, "node_modules/detox": { - "version": "19.12.6", - "resolved": "https://registry.npmjs.org/detox/-/detox-19.12.6.tgz", - "integrity": "sha512-Mf9ZaJLHsgCDLJnFZg50h/HwqZHXnc+yRQkqU1Rw7ZNdICkeg8mJDJY/mN+A2GkA8zdFRARrZ3PoAKtQpVPEFg==", + "version": "19.13.0", + "resolved": "https://registry.npmjs.org/detox/-/detox-19.13.0.tgz", + "integrity": "sha512-tKg0m5wlb4r1MISFtqPFXwdLncXWQhWaoAV6nuC3MmBGcJnTSrSa7wNZG26HhfEeR8c6eRUqMFHKefiZnWoO1Q==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -9781,25 +8793,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -9838,17 +8831,6 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -9890,9 +8872,9 @@ } }, "node_modules/dotenv": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", - "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", "engines": { "node": ">=12" } @@ -9911,69 +8893,6 @@ "node": ">=0.10" } }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "peer": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -9984,38 +8903,15 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.270.tgz", "integrity": "sha512-KNhIzgLiJmDDC444dj9vEOpZEgsV96ult9Iff98Vanumn+ShJHd5se8aX6KeVxdc0YQeqdrezBZv89rleDbvSg==" }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, "node_modules/eme-encryption-scheme-polyfill": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.0.3.tgz", "integrity": "sha512-44CNFMsqzHdKHrzWxlS7xZ8KUHn5XutBqpmCuWzNIynmAyFInHrrD3ozv/RvK9ZhgV6QY6Easx8EWAmxteNodg==" }, "node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "engines": { "node": ">=12" @@ -10029,15 +8925,6 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==" }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -10078,55 +8965,17 @@ } }, "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, "peer": true, "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/enhanced-resolve/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "peer": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/enhanced-resolve/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "node": ">=10.13.0" } }, "node_modules/entities": { @@ -10152,19 +9001,6 @@ "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", "dev": true }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "peer": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -10247,6 +9083,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true, + "peer": true + }, "node_modules/es-shim-unscopables": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", @@ -10297,14 +9140,15 @@ } }, "node_modules/eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", - "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/config-array": "^0.11.6", "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -10320,14 +9164,14 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "glob-parent": "^6.0.1", + "glob-parent": "^6.0.2", "globals": "^13.15.0", - "globby": "^11.1.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", @@ -10564,18 +9408,6 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -10583,9 +9415,9 @@ "dev": true }, "node_modules/eslint-plugin-jest": { - "version": "27.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.1.2.tgz", - "integrity": "sha512-+nLOn5jvQKLUywXxXKsLuuENsB/FhygXOLI+l5QlF+ACGe0DM14FlpYrGZ4nEiTo0BGlL5MymG73XA/tC3v3fA==", + "version": "27.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.1.4.tgz", + "integrity": "sha512-evJ9E9id/z2Fu6LR+ncNySJ6UMs5RiJiv4JsmdA3gPWoq0AR+uZyva738+Y9Uln+3WaYX+3OYP9HJoau94Iurg==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^5.10.0" @@ -10698,18 +9530,6 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", @@ -10951,18 +9771,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -11184,17 +9992,6 @@ "node": ">=0.8.x" } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "peer": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "node_modules/exception-formatter": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/exception-formatter/-/exception-formatter-1.0.7.tgz", @@ -11292,7 +10089,7 @@ "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dependencies": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -11317,7 +10114,7 @@ "node_modules/expand-brackets/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -11328,7 +10125,7 @@ "node_modules/expand-brackets/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dependencies": { "is-extendable": "^0.1.0" }, @@ -11339,7 +10136,7 @@ "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dependencies": { "kind-of": "^3.0.2" }, @@ -11350,7 +10147,7 @@ "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -11361,7 +10158,7 @@ "node_modules/expand-brackets/node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -11372,7 +10169,7 @@ "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -11396,7 +10193,7 @@ "node_modules/expand-brackets/node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { "node": ">=0.10.0" } @@ -11412,111 +10209,24 @@ "node_modules/expand-brackets/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/expect": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.2.0.tgz", - "integrity": "sha512-03ClF3GWwUqd9Grgkr9ZSdaCJGMRA69PQ8jT7o+Bx100VlGiAFf9/8oIm9Qve7ZVJhuJxFftqFhviZJRxxNfvg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.0.tgz", + "integrity": "sha512-bms139btnQNZh4uxCPmzbWz46YOjtEpYIZ847OfY9GCeSBEfzedHWH0CkdR20Sy+XBs8/FI2lFJPZiuH0NGv+w==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.2.0", + "@jest/expect-utils": "^29.2.2", "jest-get-type": "^29.2.0", - "jest-matcher-utils": "^29.2.0", - "jest-message-util": "^29.2.0", - "jest-util": "^29.2.0" + "jest-matcher-utils": "^29.2.2", + "jest-message-util": "^29.2.1", + "jest-util": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/expect/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/expect/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/expect/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/expect/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/expect/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -11526,7 +10236,7 @@ "node_modules/extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -11569,7 +10279,7 @@ "node_modules/extglob/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -11580,7 +10290,7 @@ "node_modules/extglob/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dependencies": { "is-extendable": "^0.1.0" }, @@ -11591,7 +10301,7 @@ "node_modules/extglob/node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { "node": ">=0.10.0" } @@ -11663,9 +10373,9 @@ } }, "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dependencies": { "bser": "2.1.1" } @@ -11701,13 +10411,6 @@ "asap": "~2.0.3" } }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true, - "peer": true - }, "node_modules/figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -11771,14 +10474,6 @@ "node": "*" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/filehound": { "version": "1.17.5", "resolved": "https://registry.npmjs.org/filehound/-/filehound-1.17.5.tgz", @@ -11987,40 +10682,6 @@ "node": ">=0.4.0" } }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/flush-write-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/flush-write-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", @@ -12041,99 +10702,22 @@ } } }, - "node_modules/fontello-batch-cli": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fontello-batch-cli/-/fontello-batch-cli-4.0.0.tgz", - "integrity": "sha512-8LHFhHFNKpEkvT06YtiKPVJyUH+/I+qlOtXUgD1J/f+nXrjZNWUb0I9P13Nv81X64e8eXV43DuOfU8UXXNoiBQ==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dependencies": { - "argparse": "^1.0.10", - "lodash": "^4.17.15", - "needle": "^2.4.0", - "open": "^6.4.0", - "svgpath": "^2.2.2", - "unzip": "^0.1.11", - "xmldom": "^0.1.27" - }, - "bin": { - "fontello-batch-cli": "fontello-batch-cli.js" - } - }, - "node_modules/fontello-batch-cli/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/fontello-batch-cli/node_modules/open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fontello-batch-cli/node_modules/xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", - "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", - "engines": { - "node": ">=0.1" - } - }, - "node_modules/fontello-cli": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/fontello-cli/-/fontello-cli-0.6.2.tgz", - "integrity": "sha512-/85DkJNgbGOu0sh7sUAxWLbzq0cytWQtvn7WuRzpn6mcla6TEQz1JbYmpkAjX/PJiW867ujgoaFqm4CUoBBgwA==", - "dependencies": { - "colors": "^1.4.0", - "commander": "^3.0.0", - "mkdirp": "^1.0.4", - "needle": "^2.4.0", - "open": "^7.0.0", - "unzipper": "^0.10.5" - }, - "bin": { - "fontello-cli": "bin/fontello-cli" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fontello-cli/node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" - }, - "node_modules/fontello-cli/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" + "is-callable": "^1.1.3" } }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "engines": { "node": ">=0.10.0" } }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -12159,7 +10743,7 @@ "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dependencies": { "map-cache": "^0.2.2" }, @@ -12175,40 +10759,6 @@ "node": ">= 0.6" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/from2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/fs-extra": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", @@ -12226,42 +10776,6 @@ "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "dev": true }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs-write-stream-atomic/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/fs-write-stream-atomic/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -12394,13 +10908,13 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12445,7 +10959,7 @@ "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "engines": { "node": ">=0.10.0" } @@ -12481,6 +10995,13 @@ "node": ">= 6" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -12518,6 +11039,17 @@ "node": ">=8" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", @@ -12529,17 +11061,6 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4.x" - } - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -12611,7 +11132,7 @@ "node_modules/has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dependencies": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -12624,7 +11145,7 @@ "node_modules/has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dependencies": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -12636,7 +11157,7 @@ "node_modules/has-values/node_modules/is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -12647,7 +11168,7 @@ "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -12658,7 +11179,7 @@ "node_modules/has-values/node_modules/kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -12666,53 +11187,6 @@ "node": ">=0.10.0" } }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "node_modules/hast-util-from-selector": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hast-util-from-selector/-/hast-util-from-selector-2.0.0.tgz", @@ -12859,18 +11333,6 @@ "node": "*" } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "peer": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -12933,13 +11395,6 @@ "node": ">= 0.8" } }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true, - "peer": true - }, "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -12962,9 +11417,9 @@ } }, "node_modules/husky": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", - "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz", + "integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==", "dev": true, "bin": { "husky": "lib/bin.js" @@ -13006,13 +11461,6 @@ } ] }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true, - "peer": true - }, "node_modules/ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -13104,13 +11552,6 @@ "node": ">=0.8.19" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true, - "peer": true - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -13431,6 +11872,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, "bin": { "is-docker": "cli.js" }, @@ -13563,6 +12005,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -13658,14 +12109,14 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" }, "engines": { @@ -13730,6 +12181,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, "dependencies": { "is-docker": "^2.0.0" }, @@ -13872,15 +12324,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/istanbul-reports": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", @@ -13900,15 +12343,15 @@ "integrity": "sha512-QSdIGPxSzTuAdGhu2M5DOi8jIQtDAYgHh11oqy5siwsYe/wyPb0MudZJXTmnDOhdp9YVpo++wzH+HsPABeXErg==" }, "node_modules/jest": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.2.0.tgz", - "integrity": "sha512-6krPemKUXCEu5Fh3j6ZVoLMjpTQVm0OCU+7f3K/9gllX8wNIE6NSCQ6s0q2RDoiKLRaQlVRHyscjSPRPqCI0Fg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.3.0.tgz", + "integrity": "sha512-lWmHtOcJSjR6FYRw+4oo7456QUe6LN73Lw6HLwOWKTPLcyQF60cMh0EoIHi67dV74SY5tw/kL+jYC+Ji43ScUg==", "dev": true, "dependencies": { - "@jest/core": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/core": "^29.3.0", + "@jest/types": "^29.2.1", "import-local": "^3.0.2", - "jest-cli": "^29.2.0" + "jest-cli": "^29.3.0" }, "bin": { "jest": "bin/jest.js" @@ -13954,28 +12397,28 @@ } }, "node_modules/jest-circus": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.2.0.tgz", - "integrity": "sha512-bpJRMe+VtvYlF3q8JNx+/cAo4FYvNCiR5s7Z0Scf8aC+KJ2ineSjZKtw1cIZbythlplkiro0My8nc65pfCqJ3A==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.3.0.tgz", + "integrity": "sha512-xL1cmbUGBGy923KBZpZ2LRKspHlIhrltrwGaefJ677HXCPY5rTF758BtweamBype2ogcSEK/oqcp1SmYZ/ATig==", "dev": true, "dependencies": { - "@jest/environment": "^29.2.0", - "@jest/expect": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/environment": "^29.3.0", + "@jest/expect": "^29.3.0", + "@jest/test-result": "^29.2.1", + "@jest/types": "^29.2.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.2.0", - "jest-matcher-utils": "^29.2.0", - "jest-message-util": "^29.2.0", - "jest-runtime": "^29.2.0", - "jest-snapshot": "^29.2.0", - "jest-util": "^29.2.0", + "jest-each": "^29.2.1", + "jest-matcher-utils": "^29.2.2", + "jest-message-util": "^29.2.1", + "jest-runtime": "^29.3.0", + "jest-snapshot": "^29.3.0", + "jest-util": "^29.2.1", "p-limit": "^3.1.0", - "pretty-format": "^29.2.0", + "pretty-format": "^29.2.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -14041,23 +12484,6 @@ "node": ">=8" } }, - "node_modules/jest-circus/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-circus/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -14095,21 +12521,21 @@ } }, "node_modules/jest-cli": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.2.0.tgz", - "integrity": "sha512-/581TzbXeO+5kbtSlhXEthGiVJCC8AP0jgT0iZINAAMW+tTFj2uWU7z+HNUH5yIYdHV7AvRr0fWLrmHJGIruHg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.3.0.tgz", + "integrity": "sha512-rDb9iasZvqTkgrlwzVGemR5i20T0/XN1ug46Ch2vxTRa0zS5PHaVXQXYzYbuLFHs1xpc+XsB9xPfEkkwbnLJBg==", "dev": true, "dependencies": { - "@jest/core": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/core": "^29.3.0", + "@jest/test-result": "^29.2.1", + "@jest/types": "^29.2.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.2.0", - "jest-util": "^29.2.0", - "jest-validate": "^29.2.0", + "jest-config": "^29.3.0", + "jest-util": "^29.2.1", + "jest-validate": "^29.2.2", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -14215,23 +12641,6 @@ "node": ">=8" } }, - "node_modules/jest-cli/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-cli/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -14258,19 +12667,10 @@ "node": ">=8" } }, - "node_modules/jest-cli/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/jest-cli/node_modules/yargs": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", - "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "dev": true, "dependencies": { "cliui": "^8.0.1", @@ -14279,7 +12679,7 @@ "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" + "yargs-parser": "^21.1.1" }, "engines": { "node": ">=12" @@ -14295,31 +12695,31 @@ } }, "node_modules/jest-config": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.2.0.tgz", - "integrity": "sha512-IkdCsrHIoxDPZAyFcdtQrCQ3uftLqns6Joj0tlbxiAQW4k/zTXmIygqWBmPNxO9FbFkDrhtYZiLHXjaJh9rS+Q==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.3.0.tgz", + "integrity": "sha512-sTSDs/M+//njznsytxiBxwfDnSWRb6OqiNSlO/B2iw1HUaa1YLsdWmV4AWLXss1XKzv1F0yVK+kA4XOhZ0I1qQ==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.2.0", - "@jest/types": "^29.2.0", - "babel-jest": "^29.2.0", + "@jest/test-sequencer": "^29.3.0", + "@jest/types": "^29.2.1", + "babel-jest": "^29.3.0", "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.2.0", - "jest-environment-node": "^29.2.0", + "jest-circus": "^29.3.0", + "jest-environment-node": "^29.3.0", "jest-get-type": "^29.2.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.2.0", - "jest-runner": "^29.2.0", - "jest-util": "^29.2.0", - "jest-validate": "^29.2.0", + "jest-resolve": "^29.3.0", + "jest-runner": "^29.3.0", + "jest-util": "^29.2.1", + "jest-validate": "^29.2.2", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.2.0", + "pretty-format": "^29.2.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -14397,50 +12797,6 @@ "node": ">=8" } }, - "node_modules/jest-config/node_modules/jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-config/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -14463,15 +12819,15 @@ } }, "node_modules/jest-diff": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.2.0.tgz", - "integrity": "sha512-GsH07qQL+/D/GxlnU+sSg9GL3fBOcuTlmtr3qr2pnkiODCwubNN2/7slW4m3CvxDsEus/VEOfQKRFLyXsUlnZw==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.2.1.tgz", + "integrity": "sha512-gfh/SMNlQmP3MOUgdzxPOd4XETDJifADpT937fN1iUGz+9DgOu2eUPHH25JDkLVcLwwqxv3GzVyK4VBUr9fjfA==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.2.0", "jest-get-type": "^29.2.0", - "pretty-format": "^29.2.0" + "pretty-format": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14560,16 +12916,16 @@ } }, "node_modules/jest-each": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.2.0.tgz", - "integrity": "sha512-h4LeC3L/R7jIMfTdYowevPIssvcPYQ7Qzs+pCSYsJgPztIizXwKmnfhZXBA4WVqdmvMcpmseYEXb67JT7IJ2eg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.2.1.tgz", + "integrity": "sha512-sGP86H/CpWHMyK3qGIGFCgP6mt+o5tu9qG4+tobl0LNdgny0aitLXs9/EBacLy3Bwqy+v4uXClqJgASJWcruYw==", "dev": true, "dependencies": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", - "jest-util": "^29.2.0", - "pretty-format": "^29.2.0" + "jest-util": "^29.2.1", + "pretty-format": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14633,23 +12989,6 @@ "node": ">=8" } }, - "node_modules/jest-each/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -14663,109 +13002,22 @@ } }, "node_modules/jest-environment-node": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.2.0.tgz", - "integrity": "sha512-b4qQGVStPMvtZG97Ac0rvnmSIjCZturFU7MQRMp4JDFl7zoaDLTtXmFjFP1tNmi9te6kR8d+Htbv3nYeoaIz6g==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.3.0.tgz", + "integrity": "sha512-oikVE5pyiBUMrqi7J/kFGd1zeT14+EnJulyqzopDNijLX13ygwjiOF/GVpVKSGyBrrAwSkaj/ohEQJCcjkCtOA==", "dev": true, "dependencies": { - "@jest/environment": "^29.2.0", - "@jest/fake-timers": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/environment": "^29.3.0", + "@jest/fake-timers": "^29.3.0", + "@jest/types": "^29.2.1", "@types/node": "*", - "jest-mock": "^29.2.0", - "jest-util": "^29.2.0" + "jest-mock": "^29.3.0", + "jest-util": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-node/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-environment-node/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-environment-node/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-environment-node/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-node/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-get-type": { "version": "29.2.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz", @@ -14776,20 +13028,20 @@ } }, "node_modules/jest-haste-map": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.2.0.tgz", - "integrity": "sha512-qu9lGFi7qJ8v37egS1phZZUJYiMyWnKwu83NlNT1qs50TbedIX2hFl+9ztsJ7U/ENaHwk1/Bs8fqOIQsScIRwg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.0.tgz", + "integrity": "sha512-ugdLIreycMRRg3+6AjiExECmuFI2D9PS+BmNU7eGvBt3fzVMKybb9USAZXN6kw4Q6Mn8DSK+7OFCloY2rN820Q==", "dev": true, "dependencies": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.2.0", - "jest-util": "^29.2.0", - "jest-worker": "^29.2.0", + "jest-util": "^29.2.1", + "jest-worker": "^29.3.0", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -14800,155 +13052,29 @@ "fsevents": "^2.3.2" } }, - "node_modules/jest-haste-map/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-haste-map/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-haste-map/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-haste-map/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/jest-worker": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.2.0.tgz", - "integrity": "sha512-mluOlMbRX1H59vGVzPcVg2ALfCausbBpxC8a2KWOzInhYHZibbHH8CB0C1JkmkpfurrkOYgF7FPmypuom1OM9A==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-haste-map/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-leak-detector": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.2.0.tgz", - "integrity": "sha512-FXT9sCFdct42+oOqGIr/9kmUw3RbhvpkwidCBT5ySHHoWNGd3c9n7HXpFKjEz9UnUITRCGdn0q2s6Sxrq36kwg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.2.1.tgz", + "integrity": "sha512-1YvSqYoiurxKOJtySc+CGVmw/e1v4yNY27BjWTVzp0aTduQeA7pdieLiW05wTYG/twlKOp2xS/pWuikQEmklug==", "dev": true, "dependencies": { "jest-get-type": "^29.2.0", - "pretty-format": "^29.2.0" + "pretty-format": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.2.0.tgz", - "integrity": "sha512-FcEfKZ4vm28yCdBsvC69EkrEhcfex+IYlRctNJXsRG9+WC3WxgBNORnECIgqUtj7o/h1d8o7xB/dFUiLi4bqtw==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz", + "integrity": "sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.2.0", + "jest-diff": "^29.2.1", "jest-get-type": "^29.2.0", - "pretty-format": "^29.2.0" + "pretty-format": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -15025,18 +13151,18 @@ } }, "node_modules/jest-message-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.2.0.tgz", - "integrity": "sha512-arBfk5yMFMTnMB22GyG601xGSGthA02vWSewPaxoFo0F9wBqDOyxccPbCcYu8uibw3kduSHXdCOd1PsLSgdomg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.2.1.tgz", + "integrity": "sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.2.0", + "pretty-format": "^29.2.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -15124,106 +13250,19 @@ } }, "node_modules/jest-mock": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.2.0.tgz", - "integrity": "sha512-aiWGR0P8ivssIO17xkehLGFtCcef2ZwQFNPwEer1jQLHxPctDlIg3Hs6QMq1KpPz5dkCcgM7mwGif4a9IPznlg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.0.tgz", + "integrity": "sha512-BRKfsAaeP3pTWeog+1D0ILeJF96SzB6y3k0JDxY63kssxiUy9nDLHmNUoVkBGILjMbpHULhbzVTsb3harPXuUQ==", "dev": true, "dependencies": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@types/node": "*", - "jest-util": "^29.2.0" + "jest-util": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-mock/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-mock/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-mock/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-mock/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-mock/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-mock/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-pnp-resolver": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", @@ -15242,25 +13281,26 @@ } }, "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", + "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", + "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.2.0.tgz", - "integrity": "sha512-f5c0ljNg2guDBCC7wi92vAhNuA0BtAG5vkY7Fob0c7sUMU1g87mTXqRmjrVFe2XvdwP5m5T/e5KJsCKu9hRvBA==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.3.0.tgz", + "integrity": "sha512-xH6C6loDlOWEWHdCgioLDlbpmsolNdNsV/UR35ChuK217x0ttHuhyEPdh5wa6CTQ/Eq4OGW2/EZTlh0ay5aojQ==", "dev": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.2.0", + "jest-haste-map": "^29.3.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.2.0", - "jest-validate": "^29.2.0", + "jest-util": "^29.2.1", + "jest-validate": "^29.2.2", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -15270,27 +13310,18 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.2.0.tgz", - "integrity": "sha512-Cd0Z39sDntEnfR9PoUdFHUAGDvtKI0/7Wt73l3lt03A3yQ+A6Qi3XmBuqGjdFl2QbXaPa937oLhilG612P8HGQ==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.0.tgz", + "integrity": "sha512-ykSbDbWmIaHprOBig57AExw7i6Fj0y69M6baiAd75Ivx1UMQt4wsM6A+SNqIhycV6Zy8XV3L40Ac3HYSrDSq7w==", "dev": true, "dependencies": { "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.2.0" + "jest-snapshot": "^29.3.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-resolve/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -15349,23 +13380,6 @@ "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-resolve/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -15388,30 +13402,30 @@ } }, "node_modules/jest-runner": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.2.0.tgz", - "integrity": "sha512-VPBrCwl9fM2mc5yk6yZhNrgXzRJMD5jfLmntkMLlrVq4hQPWbRK998iJlR+DOGCO04TC9PPYLntOJ001Vnf28g==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.3.0.tgz", + "integrity": "sha512-E/ROzAVj7gy44FvIe+Tbz0xGWG1sa8WLkhUg/hsXHewPC0Z48kqWySdfYRtXkB7RmMn4OcWE+hIBfsRAMVV+sQ==", "dev": true, "dependencies": { - "@jest/console": "^29.2.0", - "@jest/environment": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/transform": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/console": "^29.2.1", + "@jest/environment": "^29.3.0", + "@jest/test-result": "^29.2.1", + "@jest/transform": "^29.3.0", + "@jest/types": "^29.2.1", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.10.2", + "emittery": "^0.13.1", "graceful-fs": "^4.2.9", "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.2.0", - "jest-haste-map": "^29.2.0", - "jest-leak-detector": "^29.2.0", - "jest-message-util": "^29.2.0", - "jest-resolve": "^29.2.0", - "jest-runtime": "^29.2.0", - "jest-util": "^29.2.0", - "jest-watcher": "^29.2.0", - "jest-worker": "^29.2.0", + "jest-environment-node": "^29.3.0", + "jest-haste-map": "^29.3.0", + "jest-leak-detector": "^29.2.1", + "jest-message-util": "^29.2.1", + "jest-resolve": "^29.3.0", + "jest-runtime": "^29.3.0", + "jest-util": "^29.2.1", + "jest-watcher": "^29.2.2", + "jest-worker": "^29.3.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -15477,53 +13491,6 @@ "node": ">=8" } }, - "node_modules/jest-runner/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.2.0.tgz", - "integrity": "sha512-mluOlMbRX1H59vGVzPcVg2ALfCausbBpxC8a2KWOzInhYHZibbHH8CB0C1JkmkpfurrkOYgF7FPmypuom1OM9A==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/jest-runner/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -15539,15 +13506,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runner/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", @@ -15571,31 +13529,31 @@ } }, "node_modules/jest-runtime": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.2.0.tgz", - "integrity": "sha512-+GDmzCrswQF+mvI0upTYMe/OPYnlRRNLLDHM9AFLp2y7zxWoDoYgb8DL3WwJ8d9m743AzrnvBV9JQHi/0ed7dg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.3.0.tgz", + "integrity": "sha512-ufgX/hbpa7MLnjWRW82T5mVF73FBk3W38dGCLPXWtYZ5Zr1ZFh8QnaAtITKJt0p3kGXR8ZqlIjadSiBTk/QJ/A==", "dev": true, "dependencies": { - "@jest/environment": "^29.2.0", - "@jest/fake-timers": "^29.2.0", - "@jest/globals": "^29.2.0", + "@jest/environment": "^29.3.0", + "@jest/fake-timers": "^29.3.0", + "@jest/globals": "^29.3.0", "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/transform": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/test-result": "^29.2.1", + "@jest/transform": "^29.3.0", + "@jest/types": "^29.2.1", "@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.2.0", - "jest-message-util": "^29.2.0", - "jest-mock": "^29.2.0", + "jest-haste-map": "^29.3.0", + "jest-message-util": "^29.2.1", + "jest-mock": "^29.3.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.2.0", - "jest-snapshot": "^29.2.0", - "jest-util": "^29.2.0", + "jest-resolve": "^29.3.0", + "jest-snapshot": "^29.3.0", + "jest-util": "^29.2.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -15661,32 +13619,6 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -15721,9 +13653,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.2.0.tgz", - "integrity": "sha512-YCKrOR0PLRXROmww73fHO9oeY4tL+LPQXWR3yml1+hKbQDR8j1VUrVzB65hKSJJgxBOr1vWx+hmz2by8JjAU5w==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.3.0.tgz", + "integrity": "sha512-+4mX3T8XI3ABbZFzBd/AM74mfwOb6gMpYVFNTc0Cgg2F2fGYvHii8D6jWWka99a3wyNFmni3ov8meEVTF8n13Q==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -15732,23 +13664,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.2.0", - "@jest/transform": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/expect-utils": "^29.2.2", + "@jest/transform": "^29.3.0", + "@jest/types": "^29.2.1", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.2.0", + "expect": "^29.3.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.2.0", + "jest-diff": "^29.2.1", "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.2.0", - "jest-matcher-utils": "^29.2.0", - "jest-message-util": "^29.2.0", - "jest-util": "^29.2.0", + "jest-haste-map": "^29.3.0", + "jest-matcher-utils": "^29.2.2", + "jest-message-util": "^29.2.1", + "jest-util": "^29.2.1", "natural-compare": "^1.4.0", - "pretty-format": "^29.2.0", + "pretty-format": "^29.2.1", "semver": "^7.3.5" }, "engines": { @@ -15813,23 +13745,6 @@ "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15843,11 +13758,12 @@ } }, "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.1.tgz", + "integrity": "sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g==", + "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.2.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -15855,36 +13771,14 @@ "picomatch": "^2.2.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-util/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-util/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -15899,6 +13793,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -15914,6 +13809,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -15924,12 +13820,14 @@ "node_modules/jest-util/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jest-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -15938,6 +13836,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -15946,17 +13845,17 @@ } }, "node_modules/jest-validate": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.2.0.tgz", - "integrity": "sha512-4Vl51bPNeFeDok9aJiOnrC6tqJbOp4iMCYlewoC2ZzYJZ5+6pfr3KObAdx5wP8auHcg2MRaguiqj5OdScZa72g==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.2.2.tgz", + "integrity": "sha512-eJXATaKaSnOuxNfs8CLHgdABFgUrd0TtWS8QckiJ4L/QVDF4KVbZFBBOwCBZHOS0Rc5fOxqngXeGXE3nGQkpQA==", "dev": true, "dependencies": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", "leven": "^3.1.0", - "pretty-format": "^29.2.0" + "pretty-format": "^29.2.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -16045,18 +13944,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.2.0.tgz", - "integrity": "sha512-bRh0JdUeN+cl9XfK7tMnXLm4Mv70hG2SZlqbkFe5CTs7oeCkbwlGBk/mEfEJ63mrxZ8LPbnfaMpfSmkhEQBEGA==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.2.2.tgz", + "integrity": "sha512-j2otfqh7mOvMgN2WlJ0n7gIx9XCMWntheYGlBK7+5g3b1Su13/UAK7pdKGyd4kDlrLwtH2QPvRv5oNIxWvsJ1w==", "dev": true, "dependencies": { - "@jest/test-result": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/test-result": "^29.2.1", + "@jest/types": "^29.2.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^29.2.0", + "emittery": "^0.13.1", + "jest-util": "^29.2.1", "string-length": "^4.0.1" }, "engines": { @@ -16121,23 +14020,6 @@ "node": ">=8" } }, - "node_modules/jest-watcher/node_modules/jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -16151,22 +14033,25 @@ } }, "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.0.tgz", + "integrity": "sha512-rP8LYClB5NCWW0p8GdQT9vRmZNrDmjypklEYZuGCIU5iNviVWCZK5MILS3rQwD0FY1u96bY7b+KoU17DdZy6Ww==", + "dev": true, "dependencies": { "@types/node": "*", + "jest-util": "^29.2.1", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -16175,6 +14060,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -16197,9 +14083,9 @@ } }, "node_modules/joi": { - "version": "17.6.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.3.tgz", - "integrity": "sha512-YlQsIaS9MHYekzf1Qe11LjTkNzx9qhYluK3172z38RxYoAUf82XMX1p1DG1H4Wtk2ED/vPdSn9OggqtDu+aTow==", + "version": "17.6.4", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.4.tgz", + "integrity": "sha512-tPzkTJHZQjSFCc842QpdVpOZ9LI2txApboNUbW70qgnRB14Lzl+oWQOPdF2N4yqyiY14wBGe8lc7f/2hZxbGmw==", "dependencies": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", @@ -16630,47 +14516,14 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" - }, "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "peer": true, "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "peer": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "peer": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" + "node": ">=6.11.5" } }, "node_modules/localforage": { @@ -16913,6 +14766,11 @@ "node": ">=8" } }, + "node_modules/logkitty/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, "node_modules/logkitty/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -17023,7 +14881,7 @@ "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "engines": { "node": ">=0.10.0" } @@ -17031,7 +14889,7 @@ "node_modules/map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dependencies": { "object-visit": "^1.0.0" }, @@ -17039,36 +14897,6 @@ "node": ">=0.10.0" } }, - "node_modules/match-stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", - "integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=", - "dependencies": { - "buffers": "~0.1.1", - "readable-stream": "~1.0.0" - } - }, - "node_modules/match-stream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/match-stream/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/match-stream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "node_modules/mathjax-full": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.0.tgz", @@ -17080,18 +14908,6 @@ "speech-rule-engine": "^3.3.3" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "peer": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "node_modules/mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", @@ -17107,40 +14923,6 @@ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "peer": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/memory-fs/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/memory-fs/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -17436,6 +15218,74 @@ "fsevents": "^2.1.2" } }, + "node_modules/metro-file-map/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/metro-file-map/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/metro-file-map/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro-file-map/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro-file-map/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-file-map/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/metro-file-map/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -17444,11 +15294,81 @@ "ms": "2.0.0" } }, + "node_modules/metro-file-map/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-file-map/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/metro-file-map/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/metro-file-map/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/metro-file-map/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/metro-file-map/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/metro-file-map/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/metro-hermes-compiler": { "version": "0.72.3", "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz", @@ -17568,6 +15488,11 @@ "node": ">=8" } }, + "node_modules/metro-inspector-proxy/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, "node_modules/metro-inspector-proxy/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -17610,9 +15535,9 @@ } }, "node_modules/metro-react-native-babel-preset": { - "version": "0.73.2", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.73.2.tgz", - "integrity": "sha512-Wb7nPaJRHpikZII565oLKylxmiyMFlTA/wSnCkJ7LDo6ICh0jSshfNk9+w5V5xAxSnpsEnvXPaGP5QFk4ZHXrg==", + "version": "0.73.3", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.73.3.tgz", + "integrity": "sha512-JJ22lR4CVaw3OKTz9YAY/ckymr3DbO+qy/x5kLaF4g0LcvZmhhKfDK+fml577AZU6sKb/CTd0SBwt+VAz+Hu7Q==", "dev": true, "dependencies": { "@babel/core": "^7.14.0", @@ -17756,6 +15681,14 @@ "vlq": "^1.0.0" } }, + "node_modules/metro-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/metro-symbolicate": { "version": "0.72.3", "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz", @@ -17775,6 +15708,14 @@ "node": ">=8.3" } }, + "node_modules/metro-symbolicate/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/metro-transform-plugins": { "version": "0.72.3", "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz", @@ -17914,6 +15855,33 @@ "node": ">=8" } }, + "node_modules/metro/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/metro/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/metro/node_modules/jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", @@ -17995,6 +15963,14 @@ "node": ">=0.10.0" } }, + "node_modules/metro/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/metro/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -18032,6 +16008,11 @@ "node": ">=8" } }, + "node_modules/metro/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, "node_modules/metro/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -18082,27 +16063,6 @@ "node": ">=8.6" } }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, "node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -18141,24 +16101,10 @@ "node": ">=6" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true, - "peer": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true, - "peer": true - }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -18170,28 +16116,6 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "peer": true, - "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -18265,15 +16189,6 @@ "node": ">=8" } }, - "node_modules/mmjstool/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/mmjstool/node_modules/yargs": { "version": "17.3.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", @@ -18302,44 +16217,41 @@ } }, "node_modules/mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.1.0.tgz", + "integrity": "sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==", "dev": true, "optional": true, "peer": true, "dependencies": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", - "growl": "1.10.5", + "glob": "7.2.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "3.0.4", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14.0.0" }, "funding": { "type": "opencollective", @@ -18354,6 +16266,17 @@ "optional": true, "peer": true }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/mocha/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -18372,28 +16295,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -18436,6 +16337,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -18506,23 +16421,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/mocha/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/mock-async-storage": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/mock-async-storage/-/mock-async-storage-2.2.0.tgz", @@ -18563,34 +16461,6 @@ "node": "*" } }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "peer": true, - "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "node_modules/move-concurrently/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -18654,9 +16524,9 @@ "optional": true }, "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -18691,6 +16561,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", @@ -18701,30 +16577,6 @@ "ncp": "bin/ncp" } }, - "node_modules/needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -18818,93 +16670,7 @@ "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "peer": true, - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "peer": true - }, - "node_modules/node-libs-browser/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/node-libs-browser/node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true, - "peer": true - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "peer": true - }, - "node_modules/node-libs-browser/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "2.0.3" - } + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" }, "node_modules/node-releases": { "version": "2.0.6", @@ -19003,7 +16769,7 @@ "node_modules/object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dependencies": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -19016,7 +16782,7 @@ "node_modules/object-copy/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -19027,7 +16793,7 @@ "node_modules/object-copy/node_modules/is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dependencies": { "kind-of": "^3.0.2" }, @@ -19038,7 +16804,7 @@ "node_modules/object-copy/node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -19070,7 +16836,7 @@ "node_modules/object-copy/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -19112,7 +16878,7 @@ "node_modules/object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dependencies": { "isobject": "^3.0.0" }, @@ -19121,13 +16887,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { @@ -19184,7 +16950,7 @@ "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dependencies": { "isobject": "^3.0.1" }, @@ -19254,6 +17020,7 @@ "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, "dependencies": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" @@ -19418,13 +17185,6 @@ "node": ">=8" } }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true, - "peer": true - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -19433,14 +17193,6 @@ "node": ">=0.10.0" } }, - "node_modules/over": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", - "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=", - "engines": { - "node": "*" - } - }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -19483,44 +17235,9 @@ } }, "node_modules/pako": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", - "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" - }, - "node_modules/parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "peer": true, - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "node_modules/parallel-transform/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/parallel-transform/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, "node_modules/parent-module": { "version": "1.0.1", @@ -19534,20 +17251,6 @@ "node": ">=6" } }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "peer": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, "node_modules/parse-entities": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", @@ -19566,15 +17269,21 @@ } }, "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "dependencies": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/parseurl": { @@ -19594,32 +17303,83 @@ } }, "node_modules/patch-package": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz", - "integrity": "sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.0.tgz", + "integrity": "sha512-tC3EqJmo74yKqfsMzELaFwxOAu6FH6t+FzFOsnWAuARm7/n2xB5AOeOueE221eM9gtMuIKMKpF9tBy/X2mNP0Q==", "dev": true, "dependencies": { "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^2.4.2", + "chalk": "^4.1.2", "cross-spawn": "^6.0.5", "find-yarn-workspace-root": "^2.0.0", "fs-extra": "^7.0.1", "is-ci": "^2.0.0", "klaw-sync": "^6.0.0", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "open": "^7.4.2", "rimraf": "^2.6.3", "semver": "^5.6.0", "slash": "^2.0.0", - "tmp": "^0.0.33" + "tmp": "^0.0.33", + "yaml": "^1.10.2" }, "bin": { "patch-package": "index.js" }, "engines": { + "node": ">=10", "npm": ">5" } }, + "node_modules/patch-package/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/patch-package/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/patch-package/node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -19650,6 +17410,15 @@ "node": ">=6 <7 || >=8" } }, + "node_modules/patch-package/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/patch-package/node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -19680,6 +17449,18 @@ "semver": "bin/semver" } }, + "node_modules/patch-package/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -19725,23 +17506,6 @@ "node": ">=8" } }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "peer": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -19838,7 +17602,7 @@ "node_modules/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "engines": { "node": ">=0.10.0" } @@ -19881,9 +17645,9 @@ } }, "node_modules/pretty-format": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.0.tgz", - "integrity": "sha512-QCSUFdwOi924g24czhOH5eTkXxUCqlLGZBRCySlwDYHIXRJkdGyjJc9nZaqhlFBZws8dq5Dvk0lCilsmlfsPxw==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz", + "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==", "dev": true, "dependencies": { "@jest/schemas": "^29.0.0", @@ -19920,16 +17684,6 @@ "node": ">=6" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -19951,13 +17705,6 @@ "asap": "~2.0.6" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true, - "peer": true - }, "node_modules/promise-polyfill": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", @@ -20023,13 +17770,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true, - "peer": true - }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -20042,60 +17782,6 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, - "node_modules/pullstream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", - "integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=", - "dependencies": { - "over": ">= 0.0.5 < 1", - "readable-stream": "~1.0.31", - "setimmediate": ">= 1.0.2 < 2", - "slice-stream": ">= 1.0.0 < 2" - } - }, - "node_modules/pullstream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/pullstream/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/pullstream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -20105,29 +17791,6 @@ "once": "^1.3.1" } }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "peer": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "peer": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -20154,27 +17817,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -20220,17 +17862,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "peer": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -20324,14 +17955,14 @@ "integrity": "sha512-txfpPCQYiazVdcbMRhatqWKcAxJweUu2wDXvts5/7Wyp6+Y9cHojqXHsLPEckzutfHlxZhG8Oiundbmp8Fd6eQ==" }, "node_modules/react-native": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.3.tgz", - "integrity": "sha512-EiJxOonyvpSWa3Eik7a6YAD6QU8lK2W9M/DDdYlpWmIlGLCd5110rIpEZjxttsyrohxlRJAYRgJ9Tx2mMXqtfw==", + "version": "0.70.5", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz", + "integrity": "sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw==", "dependencies": { - "@jest/create-cache-key-function": "^27.0.1", - "@react-native-community/cli": "9.1.3", - "@react-native-community/cli-platform-android": "9.1.0", - "@react-native-community/cli-platform-ios": "9.1.2", + "@jest/create-cache-key-function": "^29.0.3", + "@react-native-community/cli": "9.2.1", + "@react-native-community/cli-platform-android": "9.2.1", + "@react-native-community/cli-platform-ios": "9.2.1", "@react-native/assets": "1.0.0", "@react-native/normalize-color": "2.0.0", "@react-native/polyfills": "2.0.0", @@ -20350,7 +17981,7 @@ "pretty-format": "^26.5.2", "promise": "^8.0.3", "react-devtools-core": "4.24.0", - "react-native-codegen": "^0.70.5", + "react-native-codegen": "^0.70.6", "react-native-gradle-plugin": "^0.70.3", "react-refresh": "^0.4.0", "react-shallow-renderer": "^16.15.0", @@ -20409,9 +18040,9 @@ } }, "node_modules/react-native-calendars": { - "version": "1.1289.0", - "resolved": "https://registry.npmjs.org/react-native-calendars/-/react-native-calendars-1.1289.0.tgz", - "integrity": "sha512-qaqRliQxM+05kCPd04d7xryRxpFC/XHgxyOThSeZRdEXP29AQLrWDHZNhUUXALe2pVWNTJIzt6jnWsgs2gAmYg==", + "version": "1.1291.1", + "resolved": "https://registry.npmjs.org/react-native-calendars/-/react-native-calendars-1.1291.1.tgz", + "integrity": "sha512-L2MK2t3kbnDg2RoU12UAoQyNrUpDYdj2MyIfg13YrwVb8BuI/gc0q/VpEinY3iz5ETHiFsTLkCsAFwSj7xbZWw==", "dependencies": { "hoist-non-react-statics": "^3.3.1", "immutable": "^4.0.0-rc.12", @@ -20427,9 +18058,9 @@ } }, "node_modules/react-native-codegen": { - "version": "0.70.5", - "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.5.tgz", - "integrity": "sha512-vXqgCWWIWlzsCtwD6hbmwmCleGNJYm+n4xO9VMfzzlF3xt9gjC7/USSMTf/YZlCK/hDwQU412QrNS6A9OH+mag==", + "version": "0.70.6", + "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.6.tgz", + "integrity": "sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw==", "dependencies": { "@babel/parser": "^7.14.0", "flow-parser": "^0.121.0", @@ -20446,9 +18077,9 @@ } }, "node_modules/react-native-device-info": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-10.2.1.tgz", - "integrity": "sha512-vXmcLThnCnrdhiJr7O4jaDY/xouFRshhGAU4HYkiSi5ShSXE+QqFQwKqICdHtw06VeX3ydZg3j0puG0lbTKVEA==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-10.3.0.tgz", + "integrity": "sha512-/ziZN1sA1REbJTv5mQZ4tXggcTvSbct+u5kCaze8BmN//lbxcTvWsU6NQd4IihLt89VkbX+14IGc9sVApSxd/w==", "peerDependencies": { "react-native": "*" } @@ -20472,11 +18103,11 @@ } }, "node_modules/react-native-dotenv": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/react-native-dotenv/-/react-native-dotenv-3.4.0.tgz", - "integrity": "sha512-Z/pvS0QGSDHcxnUmJ/uHLgC1/DZL/UpKSOHp3mCKyV3vQd385CBahrEBca8pD3eabrsDjg8xO0uRxnRG3s1lbw==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/react-native-dotenv/-/react-native-dotenv-3.4.2.tgz", + "integrity": "sha512-O3ta0vSUmOp2hRG1uSiSz+mpagTMKzQ9LAzBDKDO0Zbd0BCBsE+p3PLTkVBzl0XGqExdCGyh/VwQeSsxpTiITA==", "dependencies": { - "dotenv": "^16.0.0" + "dotenv": "^16.0.3" } }, "node_modules/react-native-elements": { @@ -20509,9 +18140,9 @@ } }, "node_modules/react-native-fast-image": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/react-native-fast-image/-/react-native-fast-image-8.6.1.tgz", - "integrity": "sha512-ILuP7EuakqHNzTr8ZbumhuxG4tE/wGQ66z4nEEuzc0FlqY6rYaPsnq/UD2ahoyFj6QP1WvA2RIK3odib+VcqWg==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/react-native-fast-image/-/react-native-fast-image-8.6.3.tgz", + "integrity": "sha512-Sdw4ESidXCXOmQ9EcYguNY2swyoWmx53kym2zRsvi+VeFCHEdkO+WG1DK+6W81juot40bbfLNhkc63QnWtesNg==", "peerDependencies": { "react": "^17 || ^18", "react-native": ">=0.60.0" @@ -20549,9 +18180,9 @@ "integrity": "sha1-eAqZyE59YAJgNhURxId2E78k9rs=" }, "node_modules/react-native-gesture-handler": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.7.1.tgz", - "integrity": "sha512-Rnak7U4v3ZB+vjVghv5CvAGS+UfRLsXUq7Nq+FycloxZ7jUZjBo+7rPnt+EdTIE2zc2pKhQHIQKcD+IAPg2Scg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.8.0.tgz", + "integrity": "sha512-poOSfz/w0IyD6Qwq7aaIRRfEaVTl1ecQFoyiIbpOpfNTjm2B1niY2FLrdVQIOtIOe+K9nH55Qal04nr4jGkHdQ==", "dependencies": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", @@ -20680,9 +18311,9 @@ } }, "node_modules/react-native-navigation": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/react-native-navigation/-/react-native-navigation-7.29.0.tgz", - "integrity": "sha512-kDNaS54VBTlcUWfBmBRzk71Mau47mwktzoxGw3Pb2KPHCfwoEI5SyOAsx22PIgCzBXCK8vOxKrHCHYw/TnnQvQ==", + "version": "7.30.1", + "resolved": "https://registry.npmjs.org/react-native-navigation/-/react-native-navigation-7.30.1.tgz", + "integrity": "sha512-664HzxnRKVUfqwOq0uM0tisgfNpPKIrx/y1ElCsk1PRuj3umjZlFyfV5sM3JKhpwIWPWyOXrDK3Qb23fLG2TSg==", "dependencies": { "hoist-non-react-statics": "3.x.x", "lodash": "4.17.x", @@ -20710,9 +18341,9 @@ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "node_modules/react-native-notifications": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-native-notifications/-/react-native-notifications-4.3.1.tgz", - "integrity": "sha512-A668d+Q0/VQRjmrh+LvDpc/REA8GXgwCijXDCIlDHGMK8enmrtdxY5OANQf1VM3hecf+fD0wYFw2uqL/ZR8jgg==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/react-native-notifications/-/react-native-notifications-4.3.3.tgz", + "integrity": "sha512-t7uPgpC93A4L41Jea2zet3BUqgh45gpN/ATS9gxejNH3r6kWgMdGeeZJhuMpl1gSXw1gcvgzdjzIjN7YZSOP0A==", "peerDependencies": { "react": "*", "react-native": "*" @@ -20746,9 +18377,9 @@ } }, "node_modules/react-native-reanimated": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.10.0.tgz", - "integrity": "sha512-jKm3xz5nX7ABtHzzuuLmawP0pFWP77lXNdIC6AWOceBs23OHUaJ29p4prxr/7Sb588GwTbkPsYkDqVFaE3ezNQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.12.0.tgz", + "integrity": "sha512-nrlPyw+Hx9u4iJhZk9PoTvDo/QmVAd+bo7OK9Tv3hveNEF9++5oig/g3Uv9V93shy9avTYGsUprUvAEt/xdzeQ==", "dependencies": { "@babel/plugin-transform-object-assign": "^7.16.7", "@babel/preset-typescript": "^7.16.7", @@ -20804,9 +18435,9 @@ } }, "node_modules/react-native-share": { - "version": "7.9.1", - "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-7.9.1.tgz", - "integrity": "sha512-v4b6lD4YsiCJB14kjXons+d5cvvxgLv8OdBF0aP58X8Qqbcj81QNv1icAxiNmhxFx5OFYsu/E6v+o8S0GSaneQ==" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-8.0.0.tgz", + "integrity": "sha512-IFUKcWQ1/VgtsQmuC3EKaIPMhKqssTblwCojtTB4dehWJ2ZUPsIstPXJGqcmWqg7/S3cLNfCLvxf/tVaZvptxw==" }, "node_modules/react-native-size-matters": { "version": "0.3.1", @@ -20817,9 +18448,9 @@ } }, "node_modules/react-native-svg": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.4.0.tgz", - "integrity": "sha512-B3TwK+H0+JuRhYPzF21AgqMt4fjhCwDZ9QUtwNstT5XcslJBXC0FoTkdZo8IEb1Sv4suSqhZwlAY6lwOv3tHag==", + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.5.0.tgz", + "integrity": "sha512-JWou/k4zfXRY6TsVgM4i30D0z54McqQ64D5cAfOzX17ThZwFjOheN24owmbAs7Y+naD0Bk5j409kT/6FZEop4g==", "dependencies": { "css-select": "^5.1.0", "css-tree": "^1.1.3" @@ -21285,14 +18916,6 @@ "node": ">= 4" } }, - "node_modules/recast/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/rechoir": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", @@ -21450,14 +19073,6 @@ "jsesc": "bin/jsesc" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/repeat-element": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", @@ -21469,7 +19084,7 @@ "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "engines": { "node": ">=0.10" } @@ -21547,7 +19162,7 @@ "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "deprecated": "https://github.com/lydell/resolve-url#deprecated" }, "node_modules/resolve.exports": { @@ -21632,17 +19247,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "peer": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -21674,16 +19278,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "peer": true, - "dependencies": { - "aproba": "^1.1.1" - } - }, "node_modules/rxjs": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", @@ -21712,7 +19306,7 @@ "node_modules/safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dependencies": { "ret": "~0.1.10" } @@ -21731,11 +19325,6 @@ "truncate-utf8-bytes": "^1.0.0" } }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "node_modules/scheduler": { "version": "0.22.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", @@ -21745,23 +19334,58 @@ } }, "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" }, "engines": { - "node": ">= 8.9.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -21893,7 +19517,6 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "optional": true, "peer": true, "dependencies": { "randombytes": "^2.1.0" @@ -21935,7 +19558,7 @@ "node_modules/set-value/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dependencies": { "is-extendable": "^0.1.0" }, @@ -21946,7 +19569,7 @@ "node_modules/set-value/node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { "node": ">=0.10.0" } @@ -21961,20 +19584,6 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, "node_modules/shaka-player": { "version": "2.5.23", "resolved": "https://registry.npmjs.org/shaka-player/-/shaka-player-2.5.23.tgz", @@ -22091,35 +19700,6 @@ "node": ">=6" } }, - "node_modules/slice-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", - "integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=", - "dependencies": { - "readable-stream": "~1.0.31" - } - }, - "node_modules/slice-stream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/slice-stream/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/slice-stream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -22154,7 +19734,7 @@ "node_modules/snapdragon-node/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -22176,7 +19756,7 @@ "node_modules/snapdragon-util/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -22195,7 +19775,7 @@ "node_modules/snapdragon/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -22206,7 +19786,7 @@ "node_modules/snapdragon/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dependencies": { "is-extendable": "^0.1.0" }, @@ -22217,7 +19797,7 @@ "node_modules/snapdragon/node_modules/is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dependencies": { "kind-of": "^3.0.2" }, @@ -22228,7 +19808,7 @@ "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -22239,7 +19819,7 @@ "node_modules/snapdragon/node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -22250,7 +19830,7 @@ "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -22274,7 +19854,7 @@ "node_modules/snapdragon/node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { "node": ">=0.10.0" } @@ -22290,7 +19870,15 @@ "node_modules/snapdragon/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/sort-json": { "version": "2.0.0", @@ -22315,17 +19903,10 @@ "node": ">=0.10.0" } }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true, - "peer": true - }, "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "engines": { "node": ">=0.10.0" } @@ -22352,14 +19933,6 @@ "source-map": "^0.6.0" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-url": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", @@ -22425,16 +19998,6 @@ "resolved": "https://registry.npmjs.org/sql-escape-string/-/sql-escape-string-1.1.0.tgz", "integrity": "sha1-/nRLhRSGjA60v7nkqYknHUDzDrk=" }, - "node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "peer": true, - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, "node_modules/stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -22489,7 +20052,7 @@ "node_modules/static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dependencies": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -22501,7 +20064,7 @@ "node_modules/static-extend/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -22512,7 +20075,7 @@ "node_modules/static-extend/node_modules/is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dependencies": { "kind-of": "^3.0.2" }, @@ -22523,7 +20086,7 @@ "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -22534,7 +20097,7 @@ "node_modules/static-extend/node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -22545,7 +20108,7 @@ "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -22582,40 +20145,6 @@ "node": ">= 0.6" } }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-browserify/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/stream-browserify/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/stream-buffers": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", @@ -22624,61 +20153,6 @@ "node": ">= 0.10.0" } }, - "node_modules/stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "peer": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "peer": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-http/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "node_modules/stream-http/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true, - "peer": true - }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -22908,11 +20382,6 @@ "node": ">= 10" } }, - "node_modules/svgpath": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.5.0.tgz", - "integrity": "sha512-o/vohwqjUO9nDAh4rcjE3KaW/v//At8UJu2LJMybXidf5QLQLVA4bxH0//4YCsr+1H4Gw1Wi/Jc62ynzSBYidw==" - }, "node_modules/tail": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/tail/-/tail-2.2.4.tgz", @@ -22923,9 +20392,9 @@ } }, "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, "peer": true, "engines": { @@ -22998,90 +20467,117 @@ } }, "node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, "peer": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" } }, "node_modules/terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "peer": true, "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0" + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } } }, - "node_modules/terser-webpack-plugin/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "node_modules/terser-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "peer": true, "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "peer": true, "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 4" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "peer": true, "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/terser/node_modules/commander": { @@ -23091,16 +20587,6 @@ "dev": true, "peer": true }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -23159,19 +20645,6 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "peer": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tinycolor2": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", @@ -23196,13 +20669,6 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true, - "peer": true - }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -23214,7 +20680,7 @@ "node_modules/to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -23225,7 +20691,7 @@ "node_modules/to-object-path/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -23298,14 +20764,6 @@ "url": "https://www.paypal.me/chrvadala/25" } }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "engines": { - "node": "*" - } - }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -23358,93 +20816,6 @@ } } }, - "node_modules/ts-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ts-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ts-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ts-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/ts-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-jest/node_modules/jest-util": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.1.2.tgz", - "integrity": "sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.1.2", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/ts-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ts-jest/node_modules/yargs-parser": { "version": "21.0.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", @@ -23518,13 +20889,6 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true, - "peer": true - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -23558,13 +20922,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true, - "peer": true - }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -23625,14 +20982,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" }, - "node_modules/uglify-es/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -23706,31 +21055,11 @@ "node_modules/union-value/node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { "node": ">=0.10.0" } }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "peer": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, "node_modules/unit-compare": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unit-compare/-/unit-compare-1.0.1.tgz", @@ -23759,7 +21088,7 @@ "node_modules/unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dependencies": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -23771,7 +21100,7 @@ "node_modules/unset-value/node_modules/has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dependencies": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -23784,7 +21113,7 @@ "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dependencies": { "isarray": "1.0.0" }, @@ -23795,127 +21124,16 @@ "node_modules/unset-value/node_modules/has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/unset-value/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/unzip": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/unzip/-/unzip-0.1.11.tgz", - "integrity": "sha1-iXScY7BY19kNYZ+GuYqhU107l/A=", - "dependencies": { - "binary": ">= 0.3.0 < 1", - "match-stream": ">= 0.0.2 < 1", - "pullstream": ">= 0.4.1 < 1", - "readable-stream": "~1.0.31", - "setimmediate": ">= 1.0.1 < 2" - } - }, - "node_modules/unzip/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/unzip/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/unzip/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "node_modules/unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "node_modules/unzipper/node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" - }, - "node_modules/unzipper/node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/unzipper/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, - "node_modules/unzipper/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/unzipper/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, "node_modules/update-browserslist-db": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", @@ -23953,20 +21171,9 @@ "node_modules/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "deprecated": "Please see https://github.com/lydell/urix#deprecated" }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "peer": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, "node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", @@ -23976,13 +21183,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true, - "peer": true - }, "node_modules/use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -24085,13 +21285,6 @@ "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==" }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true, - "peer": true - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -24106,313 +21299,17 @@ "integrity": "sha512-recZTSvuaH/On5ZU5ywq66y99lImWqzP93+AiUo9LUwG8gXHW+LJjhOd6REJHm7qb0niYqrEQJvbHSQfuJtTqA==" }, "node_modules/watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "peer": true, "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" - } - }, - "node_modules/watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/watchpack-chokidar2/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/watchpack-chokidar2/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, "node_modules/wcwidth": { @@ -24424,41 +21321,42 @@ } }, "node_modules/webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" }, "engines": { - "node": ">=6.11.5" + "node": ">=10.13.0" }, "funding": { "type": "opencollective", @@ -24467,9 +21365,6 @@ "peerDependenciesMeta": { "webpack-cli": { "optional": true - }, - "webpack-command": { - "optional": true } } }, @@ -24545,215 +21440,32 @@ } }, "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "peer": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, "peer": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "peer": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "peer": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "peer": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "peer": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, "node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "peer": true, "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "peer": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "node": ">= 10.13.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/whatwg-fetch": { @@ -24807,16 +21519,16 @@ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" }, "node_modules/which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" + "is-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" @@ -24853,20 +21565,10 @@ "node": ">=0.10.0" } }, - "node_modules/worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "peer": true, - "dependencies": { - "errno": "~0.1.7" - } - }, "node_modules/workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true, "optional": true, "peer": true @@ -25014,14 +21716,6 @@ "node": ">=4.0" } }, - "node_modules/xmldom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz", - "integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/xmldom-sre": { "version": "0.1.31", "resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz", @@ -25052,9 +21746,12 @@ } }, "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } }, "node_modules/yallist": { "version": "2.1.2", @@ -25149,14 +21846,6 @@ "node": ">=8" } }, - "node_modules/yargs/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -25221,25 +21910,25 @@ } }, "@babel/compat-data": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==" }, "@babel/core": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.3", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.3", - "@babel/types": "^7.19.3", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -25274,11 +21963,11 @@ } }, "@babel/generator": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz", - "integrity": "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.3.tgz", + "integrity": "sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A==", "requires": { - "@babel/types": "^7.19.3", + "@babel/types": "^7.20.2", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } @@ -25301,11 +21990,11 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "requires": { - "@babel/compat-data": "^7.19.3", + "@babel/compat-data": "^7.20.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", "semver": "^6.3.0" @@ -25319,16 +22008,16 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-replace-supers": "^7.19.1", "@babel/helper-split-export-declaration": "^7.18.6" } }, @@ -25408,18 +22097,18 @@ } }, "@babel/helper-module-transforms": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" } }, "@babel/helper-optimise-call-expression": { @@ -25431,9 +22120,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==" + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" }, "@babel/helper-remap-async-to-generator": { "version": "7.18.9", @@ -25459,11 +22148,11 @@ } }, "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.20.2" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -25488,9 +22177,9 @@ "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" }, "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" }, "@babel/helper-validator-option": { "version": "7.18.6", @@ -25509,13 +22198,13 @@ } }, "@babel/helpers": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", - "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", "requires": { "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" } }, "@babel/highlight": { @@ -25529,9 +22218,9 @@ } }, "@babel/parser": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz", - "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==" + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", @@ -25552,12 +22241,12 @@ } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", - "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", "requires": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } @@ -25582,13 +22271,13 @@ } }, "@babel/plugin-proposal-decorators": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz", - "integrity": "sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.2.tgz", + "integrity": "sha512-nkBH96IBmgKnbHQ5gXFrcmez+Z9S2EIDKDQGp005ROqBigc88Tky4rzCnlP/lnlj245dCEQl4/YyV0V1kYh5dw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-create-class-features-plugin": "^7.20.2", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-replace-supers": "^7.19.1", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/plugin-syntax-decorators": "^7.19.0" @@ -25658,15 +22347,15 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", "requires": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" + "@babel/plugin-transform-parameters": "^7.20.1" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -25792,11 +22481,11 @@ } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-syntax-import-meta": { @@ -25923,24 +22612,25 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } @@ -25954,11 +22644,11 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-dotall-regex": { @@ -26031,36 +22721,33 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-module-transforms": "^7.19.6", "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-validator-identifier": "^7.19.1" } }, "@babel/plugin-transform-modules-umd": { @@ -26107,11 +22794,11 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-property-literals": { @@ -26176,9 +22863,9 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz", - "integrity": "sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", "requires": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.19.0", @@ -26264,17 +22951,17 @@ } }, "@babel/preset-env": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", "requires": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.19.1", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", @@ -26283,7 +22970,7 @@ "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.19.4", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", @@ -26294,7 +22981,7 @@ "@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.18.6", + "@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", @@ -26307,10 +22994,10 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.19.4", - "@babel/plugin-transform-classes": "^7.19.0", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.19.4", + "@babel/plugin-transform-destructuring": "^7.20.2", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", @@ -26318,14 +23005,14 @@ "@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.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.0", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", "@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-parameters": "^7.20.1", "@babel/plugin-transform-property-literals": "^7.18.6", "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", @@ -26337,7 +23024,7 @@ "@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.19.4", + "@babel/types": "^7.20.2", "babel-plugin-polyfill-corejs2": "^0.3.3", "babel-plugin-polyfill-corejs3": "^0.6.0", "babel-plugin-polyfill-regenerator": "^0.4.1", @@ -26345,33 +23032,6 @@ "semver": "^6.3.0" }, "dependencies": { - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - } - }, "@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", @@ -26442,11 +23102,18 @@ } }, "@babel/runtime": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", - "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.10" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + } } }, "@babel/runtime-corejs3": { @@ -26469,37 +23136,30 @@ } }, "@babel/traverse": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz", - "integrity": "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", + "@babel/generator": "^7.20.1", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.3", - "@babel/types": "^7.19.3", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", - "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", "requires": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - } } }, "@bcoe/v8-coverage": { @@ -26563,15 +23223,6 @@ "argparse": "^2.0.1" } }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, "type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -26730,9 +23381,9 @@ } }, "@humanwhocodes/config-array": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", - "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", + "integrity": "sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -26772,16 +23423,16 @@ "dev": true }, "@jest/console": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.2.0.tgz", - "integrity": "sha512-Xz1Wu+ZZxcB3RS8U3HdkFxlRJ7kLXI/by9X7d2/gvseIWPwYu/c1EsYy77cB5iyyHGOy3whS2HycjcuzIF4Jow==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.2.1.tgz", + "integrity": "sha512-MF8Adcw+WPLZGBiNxn76DOuczG3BhODTcMlDCA4+cFi41OkaY/lyI0XUUhi73F88Y+7IHoGmD80pN5CtxQUdSw==", "dev": true, "requires": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.2.0", - "jest-util": "^29.2.0", + "jest-message-util": "^29.2.1", + "jest-util": "^29.2.1", "slash": "^3.0.0" }, "dependencies": { @@ -26825,20 +23476,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -26857,16 +23494,16 @@ } }, "@jest/core": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.2.0.tgz", - "integrity": "sha512-+gyJ3bX+kGEW/eqt/0kI7fLjqiFr3AN8O+rlEl1fYRf7D8h4Sj4tBGo9YOSirvWgvemoH2EPRya35bgvcPFzHQ==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.3.0.tgz", + "integrity": "sha512-5DyNvV8452bwqcYyXHCYaAD8UrTiWosrhBY+rc0MBMyXyDzcIL+w5gdlCYhlHbNsHoWnf4nUbRmg++LWfWVtMQ==", "dev": true, "requires": { - "@jest/console": "^29.2.0", - "@jest/reporters": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/transform": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/console": "^29.2.1", + "@jest/reporters": "^29.3.0", + "@jest/test-result": "^29.2.1", + "@jest/transform": "^29.3.0", + "@jest/types": "^29.2.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", @@ -26874,20 +23511,20 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.9", "jest-changed-files": "^29.2.0", - "jest-config": "^29.2.0", - "jest-haste-map": "^29.2.0", - "jest-message-util": "^29.2.0", + "jest-config": "^29.3.0", + "jest-haste-map": "^29.3.0", + "jest-message-util": "^29.2.1", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.2.0", - "jest-resolve-dependencies": "^29.2.0", - "jest-runner": "^29.2.0", - "jest-runtime": "^29.2.0", - "jest-snapshot": "^29.2.0", - "jest-util": "^29.2.0", - "jest-validate": "^29.2.0", - "jest-watcher": "^29.2.0", + "jest-resolve": "^29.3.0", + "jest-resolve-dependencies": "^29.3.0", + "jest-runner": "^29.3.0", + "jest-runtime": "^29.3.0", + "jest-snapshot": "^29.3.0", + "jest-util": "^29.2.1", + "jest-validate": "^29.2.2", + "jest-watcher": "^29.2.2", "micromatch": "^4.0.4", - "pretty-format": "^29.2.0", + "pretty-format": "^29.2.1", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -26932,26 +23569,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true - }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -26970,211 +23587,81 @@ } }, "@jest/create-cache-key-function": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.3.1.tgz", - "integrity": "sha512-21lx0HRgkznc5Tc2WGiXVYQQ6Vdfohs6CkLV2FLogLRb52f6v9SiSIjTNflu23lzEmY4EalLgQLxCfhgvREV6w==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.2.1.tgz", + "integrity": "sha512-///wxGQUyP0GCr3L1OcqIzhsKvN2gOyqWsRxs56XGCdD8EEuoKg857G9nC+zcWIpIsG+3J5UnEbhe3LJw8CNmQ==", "requires": { - "@jest/types": "^27.2.5" - }, - "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } + "@jest/types": "^29.2.1" } }, "@jest/environment": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.2.0.tgz", - "integrity": "sha512-foaVv1QVPB31Mno3LlL58PxEQQOLZd9zQfCpyQQCQIpUAtdFP1INBjkphxrCfKT13VxpA0z5jFGIkmZk0DAg2Q==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.0.tgz", + "integrity": "sha512-8wgn3br51bx+7rgC8FOKmAD62Q39iswdiy5/p6acoekp/9Bb/IQbh3zydOrnGp74LwStSrKgpQSKBlOKlAQq0g==", "dev": true, "requires": { - "@jest/fake-timers": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/fake-timers": "^29.3.0", + "@jest/types": "^29.2.1", "@types/node": "*", - "jest-mock": "^29.2.0" + "jest-mock": "^29.3.0" } }, "@jest/expect": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.2.0.tgz", - "integrity": "sha512-+3lxcYL9e0xPJGOR33utxxejn+Mulz40kY0oy0FVsmIESW87NZDJ7B1ovaIqeX0xIgPX4laS5SGlqD2uSoBMcw==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.3.0.tgz", + "integrity": "sha512-Lz/3x4Se5g6nBuLjTO+xE8D4OXY9fFmosZPwkXXZUJUsp9r9seN81cJa54wOGr1QjCQnhngMqclblhM4X/hcCg==", "dev": true, "requires": { - "expect": "^29.2.0", - "jest-snapshot": "^29.2.0" + "expect": "^29.3.0", + "jest-snapshot": "^29.3.0" } }, "@jest/expect-utils": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.2.0.tgz", - "integrity": "sha512-nz2IDF7nb1qmj9hx8Ja3MFab2q9Ml8QbOaaeJNyX5JQJHU8QUvEDiMctmhGEkk3Kzr8w8vAqz4hPk/ogJSrUhg==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.2.2.tgz", + "integrity": "sha512-vwnVmrVhTmGgQzyvcpze08br91OL61t9O0lJMDyb6Y/D8EKQ9V7rGUb/p7PDt0GPzK0zFYqXWFo4EO2legXmkg==", "dev": true, "requires": { "jest-get-type": "^29.2.0" } }, "@jest/fake-timers": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.2.0.tgz", - "integrity": "sha512-mX0V0uQsgeSLTt0yTqanAhhpeUKMGd2uq+PSLAfO40h72bvfNNQ7pIEl9vIwNMFxRih1ENveEjSBsLjxGGDPSw==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.0.tgz", + "integrity": "sha512-SzmWtN6Rld+xebMRGuWeMGhytc7qHnYfFk1Zd/1QavQWsFOmA9SgtvGHCBue1wXQhdDMaSIm1aPGj2Zmyrr1Zg==", "dev": true, "requires": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^29.2.0", - "jest-mock": "^29.2.0", - "jest-util": "^29.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "jest-message-util": "^29.2.1", + "jest-mock": "^29.3.0", + "jest-util": "^29.2.1" } }, "@jest/globals": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.2.0.tgz", - "integrity": "sha512-JQxtEVNWiai1p3PIzAJZSyEqQdAJGvNKvinZDPfu0mhiYEVx6E+PiBuDWj1sVUW8hzu+R3DVqaWC9K2xcLRIAA==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.3.0.tgz", + "integrity": "sha512-okYDVzYNrt/4ysR8XnX6u0I1bGG4kmfdXtUu7kwWHZ9OP13RCjmphgve0tfOrNluwksWvOPYS1f/HOrFTHLygQ==", "dev": true, "requires": { - "@jest/environment": "^29.2.0", - "@jest/expect": "^29.2.0", - "@jest/types": "^29.2.0", - "jest-mock": "^29.2.0" + "@jest/environment": "^29.3.0", + "@jest/expect": "^29.3.0", + "@jest/types": "^29.2.1", + "jest-mock": "^29.3.0" } }, "@jest/reporters": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.2.0.tgz", - "integrity": "sha512-BXoAJatxTZ18U0cwD7C8qBo8V6vef8AXYRBZdhqE5DF9CmpqmhMfw9c7OUvYqMTnBBK9A0NgXGO4Lc9EJzdHvw==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.3.0.tgz", + "integrity": "sha512-MV76tB3Kd80vcv2yMDZfQpMkwkHaY9hlvVhCtHXkVRCWwN+SX3EOmCdX8pT/X4Xh+NusA7l2Rc3yhx4q5p3+Fg==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/transform": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/console": "^29.2.1", + "@jest/test-result": "^29.2.1", + "@jest/transform": "^29.3.0", + "@jest/types": "^29.2.1", "@jridgewell/trace-mapping": "^0.3.15", "@types/node": "*", "chalk": "^4.0.0", @@ -27187,9 +23674,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.2.0", - "jest-util": "^29.2.0", - "jest-worker": "^29.2.0", + "jest-message-util": "^29.2.1", + "jest-util": "^29.2.1", + "jest-worker": "^29.3.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -27236,43 +23723,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.2.0.tgz", - "integrity": "sha512-mluOlMbRX1H59vGVzPcVg2ALfCausbBpxC8a2KWOzInhYHZibbHH8CB0C1JkmkpfurrkOYgF7FPmypuom1OM9A==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -27294,7 +23744,6 @@ "version": "29.0.0", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", - "dev": true, "requires": { "@sinclair/typebox": "^0.24.1" } @@ -27311,26 +23760,26 @@ } }, "@jest/test-result": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.2.0.tgz", - "integrity": "sha512-l76EPJ6QqtzsCLS4aimJqWO53pxZ82o3aE+Brcmo1HJ/phb9+MR7gPhyDdN6VSGaLJCRVJBZgWEhAEz+qON0Fw==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.2.1.tgz", + "integrity": "sha512-lS4+H+VkhbX6z64tZP7PAUwPqhwj3kbuEHcaLuaBuB+riyaX7oa1txe0tXgrFj5hRWvZKvqO7LZDlNWeJ7VTPA==", "dev": true, "requires": { - "@jest/console": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/console": "^29.2.1", + "@jest/types": "^29.2.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.2.0.tgz", - "integrity": "sha512-NCnjZcGnVdva6IDqF7TCuFsXs2F1tohiNF9sasSJNzD7VfN5ic9XgcS/oPDalGiPLxCmGKj4kewqqrKAqBACcQ==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.3.0.tgz", + "integrity": "sha512-XQlTP/S6Yf6NKV0Mt4oopFKyDxiEkDMD7hIFcCTeltKQszE0Z+LI5KLukwNW6Qxr1YzaZ/s6PlKJusiCLJNTcw==", "dev": true, "requires": { - "@jest/test-result": "^29.2.0", + "@jest/test-result": "^29.2.1", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.2.0", + "jest-haste-map": "^29.3.0", "slash": "^3.0.0" }, "dependencies": { @@ -27343,22 +23792,22 @@ } }, "@jest/transform": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.2.0.tgz", - "integrity": "sha512-NXMujGHy+B4DAj4dGnVPD0SIXlR2Z/N8Gp9h3mF66kcIRult1WWqY3/CEIrJcKviNWaFPYhZjCG2L3fteWzcUw==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.0.tgz", + "integrity": "sha512-4T8h61ItCakAlJkdYa7XVWP3r39QldlCeOSNmRpiJisi5PrrlzwZdpJDIH13ZZjh+MlSPQ2cq8YbUs3TuH+tRA==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", + "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.2.0", + "jest-haste-map": "^29.3.0", "jest-regex-util": "^29.2.0", - "jest-util": "^29.2.0", + "jest-util": "^29.2.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -27399,32 +23848,18 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true - }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -27443,10 +23878,9 @@ } }, "@jest/types": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.2.0.tgz", - "integrity": "sha512-mfgpQz4Z2xGo37m6KD8xEpKelaVzvYVRijmLPePn9pxgaPEtX+SqIyPNzzoeCPXKYbB4L/wYSgXDL8o3Gop78Q==", - "dev": true, + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.2.1.tgz", + "integrity": "sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==", "requires": { "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", @@ -27460,7 +23894,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -27469,7 +23902,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -27479,7 +23911,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -27487,20 +23918,17 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -27527,6 +23955,17 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -27563,55 +24002,14 @@ } }, "@mattermost/compass-icons": { - "version": "0.1.28", - "resolved": "https://registry.npmjs.org/@mattermost/compass-icons/-/compass-icons-0.1.28.tgz", - "integrity": "sha512-pcb//GGAZWZjC+oaLRPBpB+6FS6ixMDsmbLimMcJ6D7SqxtyhPDx6+JRi3umAtrHR/Ab5GBAz8+BzQDwYVuC7g==", - "requires": { - "esm": "3.2.25", - "fontello-batch-cli": "4.0.0", - "fontello-cli": "0.6.2", - "lodash": "4.17.21", - "needle": "3.0.0", - "open": "8.4.0", - "svgpath": "2.5.0", - "unzip": "0.1.11", - "xmldom": "0.6.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "needle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.0.0.tgz", - "integrity": "sha512-eGr0qnfHxAjr+Eptl1zr2lgUQUPC1SZfTkg2kFi0kxr1ChJonHUVYobkug8siBKMlyUVVp56MSkp6CSeXH/jgw==", - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - } - } + "version": "0.1.30", + "resolved": "https://registry.npmjs.org/@mattermost/compass-icons/-/compass-icons-0.1.30.tgz", + "integrity": "sha512-PmY0ak1IySORkBMgXqUMjdOjEF935FVo8/d42m1pz2CVt4oz02PQHoMsnlfU3Cf+w4J83fbA4JCywIGz7LZnLg==" }, "@mattermost/react-native-emm": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@mattermost/react-native-emm/-/react-native-emm-1.3.2.tgz", - "integrity": "sha512-bahCFzGSK5ZlPO45QmIY7fL4fsjYlyqszuBjP76mURR04QGg0C9RIolH0wAFkNrvsxEmtv9ePpZdumfm9iHbPA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@mattermost/react-native-emm/-/react-native-emm-1.3.3.tgz", + "integrity": "sha512-mOPlp3C0ba1XOANTYi3i2dL9gBdQLoJZ4zvOzhqYeg5FQXBXXoJomPKAzxJH27aX3k92bu+U0BmEbnKIitKKEA==", "requires": {} }, "@mattermost/react-native-network-client": { @@ -27740,18 +24138,18 @@ "requires": {} }, "@react-native-community/cli": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.1.3.tgz", - "integrity": "sha512-dfiBxNvqSwxkMduH0eAEJNS+LBbwxm1rOlTO7bN+FZvUwZNCCgIYrixfRo+ifqDUv8N5AbpQB5umnLbs0AjPaA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.2.1.tgz", + "integrity": "sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ==", "requires": { - "@react-native-community/cli-clean": "^9.1.0", - "@react-native-community/cli-config": "^9.1.0", + "@react-native-community/cli-clean": "^9.2.1", + "@react-native-community/cli-config": "^9.2.1", "@react-native-community/cli-debugger-ui": "^9.0.0", - "@react-native-community/cli-doctor": "^9.1.2", - "@react-native-community/cli-hermes": "^9.1.0", - "@react-native-community/cli-plugin-metro": "^9.1.3", - "@react-native-community/cli-server-api": "^9.1.0", - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-doctor": "^9.2.1", + "@react-native-community/cli-hermes": "^9.2.1", + "@react-native-community/cli-plugin-metro": "^9.2.1", + "@react-native-community/cli-server-api": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", "@react-native-community/cli-types": "^9.1.0", "chalk": "^4.1.2", "commander": "^9.4.0", @@ -27888,11 +24286,11 @@ } }, "@react-native-community/cli-clean": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.1.0.tgz", - "integrity": "sha512-3HznNw8EBQtLsVyV8b8+h76M9EeJcJgYn5wZVGQ5mghAOhqnSWVbwRvpDdb8ITXaiTIXFGNOxXnGKMXsu0CYTw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz", + "integrity": "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==", "requires": { - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "prompts": "^2.4.0" @@ -28001,11 +24399,11 @@ } }, "@react-native-community/cli-config": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.1.0.tgz", - "integrity": "sha512-6G9d5weedQ6EMz37ZYXrFHCU2DG3yqvdLs4Jo2383cSxal+oO+kggaTgqLBKoMETz/S80KsMeC/l+MoRjc1pzw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz", + "integrity": "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==", "requires": { - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-tools": "^9.2.1", "cosmiconfig": "^5.1.0", "deepmerge": "^3.2.0", "glob": "^7.1.3", @@ -28028,13 +24426,13 @@ } }, "@react-native-community/cli-doctor": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.1.2.tgz", - "integrity": "sha512-BmacbikyaxR4s54kq17LE0bBK7g8bcjc679ee36DqkX+Xij2VHHynLzTpuDJ8y6iHI2v13vauEMjnh4j612u5w==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.2.1.tgz", + "integrity": "sha512-RpUax0pkKumXJ5hcRG0Qd+oYWsA2RFeMWKY+Npg8q05Cwd1rqDQfWGprkHC576vz26+FPuvwEagoAf6fR2bvJA==", "requires": { - "@react-native-community/cli-config": "^9.1.0", - "@react-native-community/cli-platform-ios": "^9.1.2", - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-config": "^9.2.1", + "@react-native-community/cli-platform-ios": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "command-exists": "^1.2.8", "envinfo": "^7.7.2", @@ -28173,12 +24571,12 @@ } }, "@react-native-community/cli-hermes": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.1.0.tgz", - "integrity": "sha512-Ly4dnlRZZ7FckFfSWnaD5BxszuEe9/WcJ6A7srW5UobqnnmEznDv1IY0oBTq1ggnmzIquM9dJQZ0UbcZeQjkoA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.2.1.tgz", + "integrity": "sha512-723/NMb7egXzJrbWT1uEkN2hOpw+OOtWTG2zKJ3j7KKgUd8u/pP+/z5jO8xVrq+eYJEMjDK0FBEo1Xj7maR4Sw==", "requires": { - "@react-native-community/cli-platform-android": "^9.1.0", - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-platform-android": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "hermes-profile-transformer": "^0.0.6", "ip": "^1.1.5" @@ -28230,11 +24628,11 @@ } }, "@react-native-community/cli-platform-android": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.1.0.tgz", - "integrity": "sha512-OZ/Krq0wH6T7LuAvwFdJYe47RrHG8IOcoab47H4QQdYGTmJgTS3SlVkr6gn79pZyBGyp7xVizD30QJrIIyDjnw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz", + "integrity": "sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg==", "requires": { - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "fs-extra": "^8.1.0", @@ -28361,11 +24759,11 @@ } }, "@react-native-community/cli-platform-ios": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.1.2.tgz", - "integrity": "sha512-XpgA9ymm76yjvtYPByqFF1LP7eM/lH5K3zpkZkV9MJLStOIo3mrzN2ywRDZ/xVOheh5LafS4YMmrjIajf11oIQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz", + "integrity": "sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg==", "requires": { - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "glob": "^7.1.3", @@ -28475,12 +24873,12 @@ } }, "@react-native-community/cli-plugin-metro": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.1.3.tgz", - "integrity": "sha512-eLZiGIMybNwkbfKRd8wfNP1u5pnsGYLD3YHlNQyRlfS7AMG7NCQN8bk2uWWJJmWAv632KFLConwJGcLhk6ZNMQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz", + "integrity": "sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ==", "requires": { - "@react-native-community/cli-server-api": "^9.1.0", - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-server-api": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "metro": "0.72.3", "metro-config": "0.72.3", @@ -28537,12 +24935,12 @@ } }, "@react-native-community/cli-server-api": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.1.0.tgz", - "integrity": "sha512-Xf3hUqUc99hVmWOsmfNqUQ+sxhut9MIHlINzlo7Azxlmg9v9U/vtwJVJSIPD6iwPzvaPH1qeshzwy/r0GUR7fg==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", + "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==", "requires": { "@react-native-community/cli-debugger-ui": "^9.0.0", - "@react-native-community/cli-tools": "^9.1.0", + "@react-native-community/cli-tools": "^9.2.1", "compression": "^1.7.1", "connect": "^3.6.5", "errorhandler": "^1.5.0", @@ -28634,9 +25032,9 @@ } }, "@react-native-community/cli-tools": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.1.0.tgz", - "integrity": "sha512-07Z1hyy4cYty84P9cGq+Xf8Vb0S/0ffxLVdVQEMmLjU71sC9YTUv1anJdZyt6f9uUPvA9+e/YIXw5Bu0rvuXIw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz", + "integrity": "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==", "requires": { "appdirsjs": "^1.2.4", "chalk": "^4.1.2", @@ -28759,17 +25157,17 @@ } }, "@react-native-community/datetimepicker": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-6.5.2.tgz", - "integrity": "sha512-9K3zhIH1zmpIGSG3GJTWLIoAx+sR4kJ1wqpGKMwWJ5IYXBsFxMdvGw023t0pz2CQStlnNbbNhnZY/HMYFBCsCg==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-6.5.4.tgz", + "integrity": "sha512-6YUz6d6bEh409eG6HcL/oHmqElWtQgeHmVoVIfuJusf54ZsHr14NqHvrux0P1vBv5vcYrn9Qi8OwZZiFVyp9vw==", "requires": { "invariant": "^2.2.4" } }, "@react-native-community/eslint-config": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/eslint-config/-/eslint-config-3.1.0.tgz", - "integrity": "sha512-LCN0QkMNIHoXp2B/uedxQI2GMLbupkIDKSb/6Q7e+pHp4fHrGIkmixSDR5sbjzeqNIf7a1+VcRxRp9u6qv10Ng==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@react-native-community/eslint-config/-/eslint-config-3.2.0.tgz", + "integrity": "sha512-ZjGvoeiBtCbd506hQqwjKmkWPgynGUoJspG8/MuV/EfKnkjCtBmeJvq2n+sWbWEvL9LWXDp2GJmPzmvU5RSvKQ==", "dev": true, "requires": { "@babel/core": "^7.14.0", @@ -28805,9 +25203,9 @@ "dev": true }, "@react-native-community/netinfo": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-9.3.5.tgz", - "integrity": "sha512-Mqbh/J8YCfc+EqSjq5OJn2USmcD8On4048pKEfyCsCDty3lQs1SNcmHqJdu9idNU2v//aM73T8F+re59cf78Ig==", + "version": "9.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-9.3.6.tgz", + "integrity": "sha512-SwbBnHZuXcCUpYdL6ebt4HPAZEugPASl+RPxIyNe91Y+boZptzAFLywYW6yU93DYAhiHHFQBL6x6LxwF/K/tOQ==", "requires": {} }, "@react-native-cookies/cookies": { @@ -28927,13 +25325,13 @@ } }, "@sentry/browser": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.14.2.tgz", - "integrity": "sha512-KGAZ+5lK7gIO2CM3/MAQGY8JtNVCWXRi807lAxndJ3E1oIQb9A0x7b+AJNr1+6jlwf6QESblr92MCLKPHDpNbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.16.0.tgz", + "integrity": "sha512-tJ063zvoF8Raw7mzQEXupOFPSN6v36WIbsDVGeFdToPCwViaBuATaxvWCrudGzsnBkMyItmTLJkzn9SEIXUOiw==", "requires": { - "@sentry/core": "7.14.2", - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/core": "7.16.0", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "tslib": "^1.9.3" }, "dependencies": { @@ -28969,13 +25367,12 @@ } }, "@sentry/core": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.14.2.tgz", - "integrity": "sha512-AXcH6nROugziO5KsKSQ9TmAXq6HJa8Fn+kDqAL/sNY65w6YYlHifMO2xHkSXVJxGw7vx9DYh/5SF+KnLn6NDNA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.16.0.tgz", + "integrity": "sha512-vq6H1b/IPTvzDD9coQ3wIudvSjkAYuUlXb1dv69dRlq4v3st9dcKBps1Zf0lQ1i4TVlDLoe1iGMmNFglMF1Q5w==", "requires": { - "@sentry/hub": "7.14.2", - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "tslib": "^1.9.3" }, "dependencies": { @@ -28987,12 +25384,13 @@ } }, "@sentry/hub": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.14.2.tgz", - "integrity": "sha512-18cuSesTn9VAF0JC107flLmtCRt/6DBn38uz0G9cPThKtTSNwjGvGZ/ag4J1iq+IDjVS5MA6iTncXOsSpVP2Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.16.0.tgz", + "integrity": "sha512-eCM66JPS2nw+fQK3vpJhs6Lxf4FqOwPqIpFbJ2TivQ8kgJyolHOyeH/LsmJbcw97P4sc3O3LHt5v93vTKmlDrw==", "requires": { - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/core": "7.16.0", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "tslib": "^1.9.3" }, "dependencies": { @@ -29004,12 +25402,12 @@ } }, "@sentry/integrations": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.14.2.tgz", - "integrity": "sha512-vxS6ZDgPOxmbfEV6mynu7gouFSnq5LjlnEQYe2D7+/aRPzcgXzwPiqLt/Qd0OG+8LR2UjX+ziBTJOyARZcHxRA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.16.0.tgz", + "integrity": "sha512-PJRmFUHOKMf1APOlwxGB7Z6LHzJP4xL6OLSoiwnruRuHaGvdyILA53fr/A6wRMSPyTxJDJpNkcN36cA56mLxYA==", "requires": { - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "localforage": "^1.8.1", "tslib": "^1.9.3" }, @@ -29022,13 +25420,13 @@ } }, "@sentry/react": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.14.2.tgz", - "integrity": "sha512-gWPSxOYcAEG/c7Ubuv0yAGMhOvHwMHQ47fEhYa8Be5e/kzXMzc/lQAaoKLNr73BZGvBvY7ghdC53ATGQXLGxpg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.16.0.tgz", + "integrity": "sha512-tJH5zO4MPopzqZgi7Yd4iIB9Am5uGVefgkHaoeCGXffveEVWqEdjj8TqPL36SBb76gCmtpa01NBDsUSDZ1w/yw==", "requires": { - "@sentry/browser": "7.14.2", - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/browser": "7.16.0", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "hoist-non-react-statics": "^3.3.2", "tslib": "^1.9.3" }, @@ -29041,30 +25439,30 @@ } }, "@sentry/react-native": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-4.6.1.tgz", - "integrity": "sha512-P92DqyfqYURpHmaO2yqgqnmB4TW4id1HXe1JrwBvatSpCsinzVtySkmadxQMkIYKhCSEVSfhjGpz5zEosVRpQw==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-4.8.0.tgz", + "integrity": "sha512-+8js5kRGw8XurRqIVI+IT4tWdBlK6SVEEP6zHTMYB6u4NNzSXc5gKCheSZ1SeKAl30e1ZFw4t4Ace6kO+TlVdQ==", "requires": { - "@sentry/browser": "7.14.2", + "@sentry/browser": "7.16.0", "@sentry/cli": "1.74.4", - "@sentry/core": "7.14.2", - "@sentry/hub": "7.14.2", - "@sentry/integrations": "7.14.2", - "@sentry/react": "7.14.2", - "@sentry/tracing": "7.14.2", - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/core": "7.16.0", + "@sentry/hub": "7.16.0", + "@sentry/integrations": "7.16.0", + "@sentry/react": "7.16.0", + "@sentry/tracing": "7.16.0", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "@sentry/wizard": "1.2.17" } }, "@sentry/tracing": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.14.2.tgz", - "integrity": "sha512-KCZogsvqUYiR9vNPWXVgSM00CF+yfYJaBd363fN3HUbjya4j96cHJg65zf6oy85Igr6IGclYaTkoEbiZ6xdNDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.16.0.tgz", + "integrity": "sha512-8a9bViUY7oS35msBMouxkgz5OGd9NGutuKF7SQ8hPZwTcQPOxOwPyHccykgr56k6OmaDjGCLZMqZowaysJj+4g==", "requires": { - "@sentry/hub": "7.14.2", - "@sentry/types": "7.14.2", - "@sentry/utils": "7.14.2", + "@sentry/core": "7.16.0", + "@sentry/types": "7.16.0", + "@sentry/utils": "7.16.0", "tslib": "^1.9.3" }, "dependencies": { @@ -29076,16 +25474,16 @@ } }, "@sentry/types": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.14.2.tgz", - "integrity": "sha512-JzkOtenArOXmJBAk/FBbxKKX7XC650HqkhGL4ugT/f+RyxfiDZ0X1TAYMrvKIe+qpn5Nh7JUBfR+BARKAiu2wQ==" + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.16.0.tgz", + "integrity": "sha512-i6D+OK6d0l/k+VQvRp/Pt21WkDEgVBUIZq+sOkEZJczbcfexVdXKeXXoYTD2vYuFq8Yy28fzlsZaKI+NoH94yQ==" }, "@sentry/utils": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.14.2.tgz", - "integrity": "sha512-vpZolN+k1IoxWXhKyOVcRl7V1bgww+96gHqTJdcMzOB83x/ofels7L0kqxb03WukKTYcnc7Ep+yBiKi/OYX9og==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.16.0.tgz", + "integrity": "sha512-3Zh1txg7IRp4kZAdG27YF7K6lD1IZyuAo9KjoPg1Xzqa4DOZyASJuEkbf+rK2a9T4HrtVHHXJUsNbKg8WM3VHg==", "requires": { - "@sentry/types": "7.14.2", + "@sentry/types": "7.16.0", "tslib": "^1.9.3" }, "dependencies": { @@ -29135,13 +25533,12 @@ "@sinclair/typebox": { "version": "0.24.44", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.44.tgz", - "integrity": "sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg==", - "dev": true + "integrity": "sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg==" }, "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz", + "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -29263,18 +25660,6 @@ "path-type": "^4.0.0", "yaml": "^1.10.0" } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } } } }, @@ -29331,18 +25716,6 @@ "path-type": "^4.0.0", "yaml": "^1.10.0" } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } } } }, @@ -29357,12 +25730,12 @@ } }, "@testing-library/react-native": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/@testing-library/react-native/-/react-native-11.3.0.tgz", - "integrity": "sha512-wCbH7TJ2uVwtkQPRQTZbM3Y/mzwK5zxwkOPKfR2UdVdz/RtCC2UVyDnJMaBNwG/cNle5tc92sQDfp3Gn2oyftg==", + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react-native/-/react-native-11.4.0.tgz", + "integrity": "sha512-Pw1T3QoRyoPlnbDPI7pJCRChX/HquEVk6b9XfUuO/LrLJpqAOtZQDYz67eVJfVlhIlTu7hesm57ikIabOWKSlg==", "dev": true, "requires": { - "pretty-format": "^29.0.3" + "pretty-format": "^29.0.0" } }, "@trysound/sax": { @@ -29445,6 +25818,35 @@ "integrity": "sha512-mMUu4nWHLBlHtxXY17Fg6+ucS/MnndyOWyOe7MmwkoMYxvfQU2ajtRaEvqSUv+aVkMqH/C0NCI8UoVfRNQ10yg==", "dev": true }, + "@types/eslint": { + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.8.tgz", + "integrity": "sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==", + "dev": true, + "peer": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "peer": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true, + "peer": true + }, "@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -29503,9 +25905,9 @@ } }, "@types/jest": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.0.tgz", - "integrity": "sha512-KO7bPV21d65PKwv3LLsD8Jn3E05pjNjRZvkm+YTacWhVmykAb07wW6IkZUmQAltwQafNcDUEUrMO2h3jeBSisg==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.2.tgz", + "integrity": "sha512-og1wAmdxKoS71K2ZwSVqWPX6OVn3ihZ6ZT2qvZvZQm90lJVDyXIjYcu4Khx2CNIeaFv12rOU/YObOsI3VOkzog==", "dev": true, "requires": { "expect": "^29.0.0", @@ -29525,9 +25927,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.186", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz", - "integrity": "sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==", + "version": "4.14.188", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.188.tgz", + "integrity": "sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==", "dev": true }, "@types/mime-db": { @@ -29558,10 +25960,16 @@ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" }, + "@types/querystringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-9WgEGTevECrXJC2LSWPqiPYWq8BRmeaOyZn47js/3V6UF0PWtcVfvvR43YjeO8BzBsthTz98jMczujOwTw+WYg==", + "dev": true + }, "@types/react": { - "version": "18.0.21", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz", - "integrity": "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==", + "version": "18.0.25", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz", + "integrity": "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -29569,9 +25977,9 @@ } }, "@types/react-native": { - "version": "0.70.5", - "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.5.tgz", - "integrity": "sha512-Z+NdP5EB1qGSHPSOcsrXqxXrxlFyp/GBllajUIEQ0+XVSFd1l/B+nmHBvACiZvDwRVE/l2hL2pBWeOUPi2C1JA==", + "version": "0.70.6", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.6.tgz", + "integrity": "sha512-ynQ2jj0km9d7dbnyKqVdQ6Nti7VQ8SLTA/KKkkS5+FnvGyvij2AOo1/xnkBR/jnSNXuzrvGVzw2n0VWfppmfKw==", "requires": { "@types/react": "*" } @@ -29646,13 +26054,13 @@ } }, "@types/readable-stream": { - "version": "2.3.14", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.14.tgz", - "integrity": "sha512-8jQ5Mp7bsDJEnW/69i6nAaQMoLwAVJVc7ZRAVTrdh/o6XueQsX38TEvKuYyoQj76/mg7WdlRfMrtl9pDLCJWsg==", + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", "dev": true, "requires": { "@types/node": "*", - "safe-buffer": "*" + "safe-buffer": "~5.1.1" } }, "@types/scheduler": { @@ -29661,9 +26069,9 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "@types/semver": { - "version": "7.3.12", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", - "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==", + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", "dev": true }, "@types/shallow-equals": { @@ -29711,7 +26119,6 @@ "version": "17.0.13", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", - "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -29722,58 +26129,48 @@ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz", - "integrity": "sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz", + "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/type-utils": "5.40.1", - "@typescript-eslint/utils": "5.40.1", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/type-utils": "5.42.1", + "@typescript-eslint/utils": "5.42.1", "debug": "^4.3.4", "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } } }, "@typescript-eslint/parser": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.40.1.tgz", - "integrity": "sha512-IK6x55va5w4YvXd4b3VrXQPldV9vQTxi5ov+g4pMANsXPTXOcfjx08CRR1Dfrcc51syPtXHF5bgLlMHYFrvQtg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz", + "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", "debug": "^4.3.4" }, "dependencies": { "@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -29782,24 +26179,15 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" } }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -29809,28 +26197,28 @@ } }, "@typescript-eslint/scope-manager": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", - "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", + "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1" + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" }, "dependencies": { "@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true }, "@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -29843,31 +26231,31 @@ } }, "@typescript-eslint/type-utils": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz", - "integrity": "sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz", + "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.40.1", - "@typescript-eslint/utils": "5.40.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/utils": "5.42.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "dependencies": { "@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -29876,24 +26264,15 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" } }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -29924,35 +26303,35 @@ } }, "@typescript-eslint/utils": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz", - "integrity": "sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz", + "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" }, "dependencies": { "@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -29961,24 +26340,15 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" } }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -30005,98 +26375,74 @@ } } }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true, - "optional": true, - "peer": true - }, "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true, "peer": true }, "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true, "peer": true }, "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true, "peer": true }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true, - "peer": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true, "peer": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "peer": true, "requires": { @@ -30104,9 +26450,9 @@ } }, "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "peer": true, "requires": { @@ -30114,95 +26460,79 @@ } }, "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true, "peer": true }, "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", + "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" } }, @@ -30277,6 +26607,14 @@ "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peer": true, + "requires": {} + }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -30304,19 +26642,41 @@ "uri-js": "^4.2.2" } }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "peer": true, - "requires": {} + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "peer": true, "requires": {} }, "anser": { @@ -30439,7 +26799,7 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" }, "arr-flatten": { "version": "1.1.0", @@ -30449,7 +26809,7 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" }, "array-includes": { "version": "3.1.5", @@ -30473,7 +26833,7 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" }, "array.prototype.flat": { "version": "1.2.5", @@ -30503,62 +26863,10 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "peer": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true, - "peer": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "peer": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" }, "ast-types": { "version": "0.14.2", @@ -30578,14 +26886,6 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true, - "optional": true, - "peer": true - }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -30639,12 +26939,12 @@ "requires": {} }, "babel-jest": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.2.0.tgz", - "integrity": "sha512-c8FkrW1chgcbyBqOo7jFGpQYfVnb43JqjQGV+C2r94k2rZJOukYOZ6+csAqKE4ms+PHc+yevnONxs27jQIxylw==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.0.tgz", + "integrity": "sha512-LzQWdGm6hUugVeyGpIKI/T4SVT+PgAA5WFPqBDbneK7C/PqfckNb0tc4KvcKXq/PLA1yY6wTvB8Bc/REQdUxFg==", "dev": true, "requires": { - "@jest/transform": "^29.2.0", + "@jest/transform": "^29.3.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^29.2.0", @@ -30711,15 +27011,13 @@ } }, "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.0.tgz", + "integrity": "sha512-Antt61KJPinUMwHwIIz9T5zfMgevnfZkEVWYDWlG888fgdvRRGD0JTuf/fFozQnfT+uq64sk1bmdHDy/mOEWnA==", "dev": true, "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" + "find-cache-dir": "^3.3.2", + "schema-utils": "^4.0.0" }, "dependencies": { "find-cache-dir": { @@ -30733,17 +27031,6 @@ "pkg-dir": "^4.1.0" } }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -30770,14 +27057,6 @@ } } }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - }, "babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -30941,7 +27220,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -30963,21 +27242,6 @@ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.50.tgz", "integrity": "sha512-+O2uoQWFRo8ysZNo/rjtri2jIwjr3XfeAgRjAUADRqGG+ZITvyn8J1kvXLTaKVr3hhGXk+f23tKfdzmklVM9vQ==" }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -30985,17 +27249,6 @@ "dev": true, "optional": true }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -31004,17 +27257,6 @@ "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - } } }, "bluebird": { @@ -31023,13 +27265,6 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true, - "peer": true - }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -31068,13 +27303,6 @@ "fill-range": "^7.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true, - "peer": true - }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -31083,103 +27311,6 @@ "optional": true, "peer": true }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "peer": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "peer": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "peer": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "peer": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "peer": true, - "requires": { - "pako": "~1.0.5" - }, - "dependencies": { - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "peer": true - } - } - }, "browserslist": { "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", @@ -31209,24 +27340,12 @@ } }, "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "peer": true, + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "peer": true - } + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "buffer-from": { @@ -31234,30 +27353,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true, - "peer": true - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true, - "peer": true - }, "bunyan": { "version": "1.8.15", "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", @@ -31285,59 +27380,6 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "peer": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "peer": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "requires": { - "glob": "^7.1.3" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true - } - } - }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -31407,14 +27449,6 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -31470,9 +27504,9 @@ } }, "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "optional": true, "requires": { @@ -31486,13 +27520,6 @@ "readdirp": "~3.6.0" } }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "peer": true - }, "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -31505,17 +27532,6 @@ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -31536,7 +27552,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -31544,7 +27560,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" }, @@ -31552,7 +27568,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -31562,7 +27578,7 @@ "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" }, @@ -31570,7 +27586,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -31679,7 +27695,7 @@ "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -31729,7 +27745,8 @@ "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true }, "combined-stream": { "version": "1.0.8", @@ -31838,44 +27855,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "peer": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -31902,25 +27881,11 @@ } } }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true, - "peer": true - }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true, - "peer": true - }, "convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -31929,37 +27894,10 @@ "safe-buffer": "~5.1.1" } }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "peer": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" }, "core-js": { "version": "1.2.7", @@ -32004,6 +27942,15 @@ "resolve-from": "^3.0.0" } }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -32011,55 +27958,6 @@ } } }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "peer": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "peer": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "cross-spawn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", @@ -32070,26 +27968,6 @@ "which": "^1.2.9" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "peer": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, "css-select": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", @@ -32115,13 +27993,6 @@ "requires": { "mdn-data": "2.0.14", "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } } }, "css-what": { @@ -32144,22 +28015,15 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true, - "peer": true - }, "dayjs": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz", - "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", + "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==" }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" } @@ -32182,25 +28046,25 @@ "dev": true }, "deep-equal": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", - "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz", + "integrity": "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==", "requires": { - "call-bind": "^1.0.0", - "es-get-iterator": "^1.1.1", - "get-intrinsic": "^1.0.1", - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.2", - "is-regex": "^1.1.1", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", "isarray": "^2.0.5", - "object-is": "^1.1.4", + "object-is": "^1.1.5", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.3", - "which-boxed-primitive": "^1.0.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", "which-collection": "^1.0.1", - "which-typed-array": "^1.1.2" + "which-typed-array": "^1.1.8" } }, "deep-freeze": { @@ -32228,11 +28092,6 @@ "clone": "^1.0.2" } }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -32282,17 +28141,6 @@ "prop-types": "*" } }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -32311,9 +28159,9 @@ "dev": true }, "detox": { - "version": "19.12.6", - "resolved": "https://registry.npmjs.org/detox/-/detox-19.12.6.tgz", - "integrity": "sha512-Mf9ZaJLHsgCDLJnFZg50h/HwqZHXnc+yRQkqU1Rw7ZNdICkeg8mJDJY/mN+A2GkA8zdFRARrZ3PoAKtQpVPEFg==", + "version": "19.13.0", + "resolved": "https://registry.npmjs.org/detox/-/detox-19.13.0.tgz", + "integrity": "sha512-tKg0m5wlb4r1MISFtqPFXwdLncXWQhWaoAV6nuC3MmBGcJnTSrSa7wNZG26HhfEeR8c6eRUqMFHKefiZnWoO1Q==", "dev": true, "requires": { "ajv": "^8.6.3", @@ -32393,27 +28241,6 @@ "integrity": "sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw==", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - } - } - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -32443,13 +28270,6 @@ "entities": "^2.0.0" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "peer": true - }, "domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -32476,9 +28296,9 @@ } }, "dotenv": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", - "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==" + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" }, "dtrace-provider": { "version": "0.8.8", @@ -32490,73 +28310,6 @@ "nan": "^2.14.0" } }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "peer": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -32567,40 +28320,15 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.270.tgz", "integrity": "sha512-KNhIzgLiJmDDC444dj9vEOpZEgsV96ult9Iff98Vanumn+ShJHd5se8aX6KeVxdc0YQeqdrezBZv89rleDbvSg==" }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - } - } - }, "eme-encryption-scheme-polyfill": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.0.3.tgz", "integrity": "sha512-44CNFMsqzHdKHrzWxlS7xZ8KUHn5XutBqpmCuWzNIynmAyFInHrrD3ozv/RvK9ZhgV6QY6Easx8EWAmxteNodg==" }, "emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true }, "emoji-regex": { @@ -32608,12 +28336,6 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==" }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -32650,51 +28372,14 @@ } }, "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, "peer": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "peer": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" } }, "entities": { @@ -32714,16 +28399,6 @@ "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", "dev": true }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "peer": true, - "requires": { - "prr": "~1.0.1" - } - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -32794,6 +28469,13 @@ "isarray": "^2.0.5" } }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true, + "peer": true + }, "es-shim-unscopables": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", @@ -32829,14 +28511,15 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", - "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/config-array": "^0.11.6", "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -32852,14 +28535,14 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "glob-parent": "^6.0.1", + "glob-parent": "^6.0.2", "globals": "^13.15.0", - "globby": "^11.1.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", @@ -32993,15 +28676,6 @@ "p-locate": "^5.0.0" } }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -33233,15 +28907,6 @@ "esutils": "^2.0.2" } }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -33251,9 +28916,9 @@ } }, "eslint-plugin-jest": { - "version": "27.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.1.2.tgz", - "integrity": "sha512-+nLOn5jvQKLUywXxXKsLuuENsB/FhygXOLI+l5QlF+ACGe0DM14FlpYrGZ4nEiTo0BGlL5MymG73XA/tC3v3fA==", + "version": "27.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.1.4.tgz", + "integrity": "sha512-evJ9E9id/z2Fu6LR+ncNySJ6UMs5RiJiv4JsmdA3gPWoq0AR+uZyva738+Y9Uln+3WaYX+3OYP9HJoau94Iurg==", "dev": true, "requires": { "@typescript-eslint/utils": "^5.10.0" @@ -33299,15 +28964,6 @@ "esutils": "^2.0.2" } }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, "resolve": { "version": "2.0.0-next.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", @@ -33463,17 +29119,6 @@ "dev": true, "peer": true }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "peer": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "exception-formatter": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/exception-formatter/-/exception-formatter-1.0.7.tgz", @@ -33546,7 +29191,7 @@ "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -33568,7 +29213,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -33576,7 +29221,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -33584,7 +29229,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" }, @@ -33592,7 +29237,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -33602,7 +29247,7 @@ "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" }, @@ -33610,7 +29255,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -33630,7 +29275,7 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" }, "kind-of": { "version": "5.1.0", @@ -33640,86 +29285,21 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, "expect": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.2.0.tgz", - "integrity": "sha512-03ClF3GWwUqd9Grgkr9ZSdaCJGMRA69PQ8jT7o+Bx100VlGiAFf9/8oIm9Qve7ZVJhuJxFftqFhviZJRxxNfvg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.0.tgz", + "integrity": "sha512-bms139btnQNZh4uxCPmzbWz46YOjtEpYIZ847OfY9GCeSBEfzedHWH0CkdR20Sy+XBs8/FI2lFJPZiuH0NGv+w==", "dev": true, "requires": { - "@jest/expect-utils": "^29.2.0", + "@jest/expect-utils": "^29.2.2", "jest-get-type": "^29.2.0", - "jest-matcher-utils": "^29.2.0", - "jest-message-util": "^29.2.0", - "jest-util": "^29.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "jest-matcher-utils": "^29.2.2", + "jest-message-util": "^29.2.1", + "jest-util": "^29.2.1" } }, "extend": { @@ -33731,7 +29311,7 @@ "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -33765,7 +29345,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -33773,7 +29353,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -33781,7 +29361,7 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" } } }, @@ -33845,9 +29425,9 @@ } }, "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "requires": { "bser": "2.1.1" } @@ -33885,13 +29465,6 @@ } } }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true, - "peer": true - }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -33947,14 +29520,6 @@ } } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true, - "peer": true - }, "filehound": { "version": "1.17.5", "resolved": "https://registry.npmjs.org/filehound/-/filehound-1.17.5.tgz", @@ -34126,116 +29691,24 @@ "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==" }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, - "fontello-batch-cli": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fontello-batch-cli/-/fontello-batch-cli-4.0.0.tgz", - "integrity": "sha512-8LHFhHFNKpEkvT06YtiKPVJyUH+/I+qlOtXUgD1J/f+nXrjZNWUb0I9P13Nv81X64e8eXV43DuOfU8UXXNoiBQ==", + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "requires": { - "argparse": "^1.0.10", - "lodash": "^4.17.15", - "needle": "^2.4.0", - "open": "^6.4.0", - "svgpath": "^2.2.2", - "unzip": "^0.1.11", - "xmldom": "^0.1.27" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "requires": { - "is-wsl": "^1.1.0" - } - }, - "xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" - } - } - }, - "fontello-cli": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/fontello-cli/-/fontello-cli-0.6.2.tgz", - "integrity": "sha512-/85DkJNgbGOu0sh7sUAxWLbzq0cytWQtvn7WuRzpn6mcla6TEQz1JbYmpkAjX/PJiW867ujgoaFqm4CUoBBgwA==", - "requires": { - "colors": "^1.4.0", - "commander": "^3.0.0", - "mkdirp": "^1.0.4", - "needle": "^2.4.0", - "open": "^7.0.0", - "unzipper": "^0.10.5" - }, - "dependencies": { - "commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - } + "is-callable": "^1.1.3" } }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" }, "form-data": { "version": "4.0.0", @@ -34256,7 +29729,7 @@ "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "requires": { "map-cache": "^0.2.2" } @@ -34266,42 +29739,6 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "fs-extra": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", @@ -34319,44 +29756,6 @@ "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "dev": true }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -34454,13 +29853,13 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, "get-package-type": { @@ -34487,7 +29886,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" }, "glob": { "version": "7.2.0", @@ -34511,6 +29910,13 @@ "is-glob": "^4.0.1" } }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -34538,6 +29944,14 @@ } } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", @@ -34549,14 +29963,6 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "optional": true, - "peer": true - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -34604,7 +30010,7 @@ "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -34614,7 +30020,7 @@ "has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -34623,7 +30029,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "requires": { "kind-of": "^3.0.2" }, @@ -34631,7 +30037,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -34641,45 +30047,13 @@ "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "requires": { "is-buffer": "^1.1.5" } } } }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "peer": true - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "hast-util-from-selector": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hast-util-from-selector/-/hast-util-from-selector-2.0.0.tgz", @@ -34786,18 +30160,6 @@ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "peer": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -34840,13 +30202,6 @@ } } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true, - "peer": true - }, "https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -34863,9 +30218,9 @@ "dev": true }, "husky": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", - "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz", + "integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==", "dev": true }, "iconv-lite": { @@ -34881,13 +30236,6 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true, - "peer": true - }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -34953,13 +30301,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true, - "peer": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -35205,7 +30546,8 @@ "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true }, "is-extendable": { "version": "1.0.1", @@ -35283,6 +30625,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, "is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -35342,14 +30690,14 @@ } }, "is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" } }, @@ -35390,6 +30738,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, "requires": { "is-docker": "^2.0.0" } @@ -35498,14 +30847,6 @@ "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "istanbul-reports": { @@ -35524,15 +30865,15 @@ "integrity": "sha512-QSdIGPxSzTuAdGhu2M5DOi8jIQtDAYgHh11oqy5siwsYe/wyPb0MudZJXTmnDOhdp9YVpo++wzH+HsPABeXErg==" }, "jest": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.2.0.tgz", - "integrity": "sha512-6krPemKUXCEu5Fh3j6ZVoLMjpTQVm0OCU+7f3K/9gllX8wNIE6NSCQ6s0q2RDoiKLRaQlVRHyscjSPRPqCI0Fg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.3.0.tgz", + "integrity": "sha512-lWmHtOcJSjR6FYRw+4oo7456QUe6LN73Lw6HLwOWKTPLcyQF60cMh0EoIHi67dV74SY5tw/kL+jYC+Ji43ScUg==", "dev": true, "requires": { - "@jest/core": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/core": "^29.3.0", + "@jest/types": "^29.2.1", "import-local": "^3.0.2", - "jest-cli": "^29.2.0" + "jest-cli": "^29.3.0" } }, "jest-changed-files": { @@ -35557,28 +30898,28 @@ } }, "jest-circus": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.2.0.tgz", - "integrity": "sha512-bpJRMe+VtvYlF3q8JNx+/cAo4FYvNCiR5s7Z0Scf8aC+KJ2ineSjZKtw1cIZbythlplkiro0My8nc65pfCqJ3A==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.3.0.tgz", + "integrity": "sha512-xL1cmbUGBGy923KBZpZ2LRKspHlIhrltrwGaefJ677HXCPY5rTF758BtweamBype2ogcSEK/oqcp1SmYZ/ATig==", "dev": true, "requires": { - "@jest/environment": "^29.2.0", - "@jest/expect": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/environment": "^29.3.0", + "@jest/expect": "^29.3.0", + "@jest/test-result": "^29.2.1", + "@jest/types": "^29.2.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.2.0", - "jest-matcher-utils": "^29.2.0", - "jest-message-util": "^29.2.0", - "jest-runtime": "^29.2.0", - "jest-snapshot": "^29.2.0", - "jest-util": "^29.2.0", + "jest-each": "^29.2.1", + "jest-matcher-utils": "^29.2.2", + "jest-message-util": "^29.2.1", + "jest-runtime": "^29.3.0", + "jest-snapshot": "^29.3.0", + "jest-util": "^29.2.1", "p-limit": "^3.1.0", - "pretty-format": "^29.2.0", + "pretty-format": "^29.2.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -35623,20 +30964,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -35664,21 +30991,21 @@ } }, "jest-cli": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.2.0.tgz", - "integrity": "sha512-/581TzbXeO+5kbtSlhXEthGiVJCC8AP0jgT0iZINAAMW+tTFj2uWU7z+HNUH5yIYdHV7AvRr0fWLrmHJGIruHg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.3.0.tgz", + "integrity": "sha512-rDb9iasZvqTkgrlwzVGemR5i20T0/XN1ug46Ch2vxTRa0zS5PHaVXQXYzYbuLFHs1xpc+XsB9xPfEkkwbnLJBg==", "dev": true, "requires": { - "@jest/core": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/core": "^29.3.0", + "@jest/test-result": "^29.2.1", + "@jest/types": "^29.2.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.2.0", - "jest-util": "^29.2.0", - "jest-validate": "^29.2.0", + "jest-config": "^29.3.0", + "jest-util": "^29.2.1", + "jest-validate": "^29.2.2", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -35746,20 +31073,6 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -35780,16 +31093,10 @@ "has-flag": "^4.0.0" } }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, "yargs": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", - "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "dev": true, "requires": { "cliui": "^8.0.1", @@ -35798,7 +31105,7 @@ "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" + "yargs-parser": "^21.1.1" } }, "yargs-parser": { @@ -35810,31 +31117,31 @@ } }, "jest-config": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.2.0.tgz", - "integrity": "sha512-IkdCsrHIoxDPZAyFcdtQrCQ3uftLqns6Joj0tlbxiAQW4k/zTXmIygqWBmPNxO9FbFkDrhtYZiLHXjaJh9rS+Q==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.3.0.tgz", + "integrity": "sha512-sTSDs/M+//njznsytxiBxwfDnSWRb6OqiNSlO/B2iw1HUaa1YLsdWmV4AWLXss1XKzv1F0yVK+kA4XOhZ0I1qQ==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.2.0", - "@jest/types": "^29.2.0", - "babel-jest": "^29.2.0", + "@jest/test-sequencer": "^29.3.0", + "@jest/types": "^29.2.1", + "babel-jest": "^29.3.0", "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.2.0", - "jest-environment-node": "^29.2.0", + "jest-circus": "^29.3.0", + "jest-environment-node": "^29.3.0", "jest-get-type": "^29.2.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.2.0", - "jest-runner": "^29.2.0", - "jest-util": "^29.2.0", - "jest-validate": "^29.2.0", + "jest-resolve": "^29.3.0", + "jest-runner": "^29.3.0", + "jest-util": "^29.2.1", + "jest-validate": "^29.2.2", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.2.0", + "pretty-format": "^29.2.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -35879,38 +31186,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true - }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -35929,15 +31204,15 @@ } }, "jest-diff": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.2.0.tgz", - "integrity": "sha512-GsH07qQL+/D/GxlnU+sSg9GL3fBOcuTlmtr3qr2pnkiODCwubNN2/7slW4m3CvxDsEus/VEOfQKRFLyXsUlnZw==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.2.1.tgz", + "integrity": "sha512-gfh/SMNlQmP3MOUgdzxPOd4XETDJifADpT937fN1iUGz+9DgOu2eUPHH25JDkLVcLwwqxv3GzVyK4VBUr9fjfA==", "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^29.2.0", "jest-get-type": "^29.2.0", - "pretty-format": "^29.2.0" + "pretty-format": "^29.2.1" }, "dependencies": { "ansi-styles": { @@ -36001,16 +31276,16 @@ } }, "jest-each": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.2.0.tgz", - "integrity": "sha512-h4LeC3L/R7jIMfTdYowevPIssvcPYQ7Qzs+pCSYsJgPztIizXwKmnfhZXBA4WVqdmvMcpmseYEXb67JT7IJ2eg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.2.1.tgz", + "integrity": "sha512-sGP86H/CpWHMyK3qGIGFCgP6mt+o5tu9qG4+tobl0LNdgny0aitLXs9/EBacLy3Bwqy+v4uXClqJgASJWcruYw==", "dev": true, "requires": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", - "jest-util": "^29.2.0", - "pretty-format": "^29.2.0" + "jest-util": "^29.2.1", + "pretty-format": "^29.2.1" }, "dependencies": { "ansi-styles": { @@ -36053,20 +31328,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -36079,82 +31340,17 @@ } }, "jest-environment-node": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.2.0.tgz", - "integrity": "sha512-b4qQGVStPMvtZG97Ac0rvnmSIjCZturFU7MQRMp4JDFl7zoaDLTtXmFjFP1tNmi9te6kR8d+Htbv3nYeoaIz6g==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.3.0.tgz", + "integrity": "sha512-oikVE5pyiBUMrqi7J/kFGd1zeT14+EnJulyqzopDNijLX13ygwjiOF/GVpVKSGyBrrAwSkaj/ohEQJCcjkCtOA==", "dev": true, "requires": { - "@jest/environment": "^29.2.0", - "@jest/fake-timers": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/environment": "^29.3.0", + "@jest/fake-timers": "^29.3.0", + "@jest/types": "^29.2.1", "@types/node": "*", - "jest-mock": "^29.2.0", - "jest-util": "^29.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "jest-mock": "^29.3.0", + "jest-util": "^29.2.1" } }, "jest-get-type": { @@ -36164,12 +31360,12 @@ "dev": true }, "jest-haste-map": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.2.0.tgz", - "integrity": "sha512-qu9lGFi7qJ8v37egS1phZZUJYiMyWnKwu83NlNT1qs50TbedIX2hFl+9ztsJ7U/ENaHwk1/Bs8fqOIQsScIRwg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.0.tgz", + "integrity": "sha512-ugdLIreycMRRg3+6AjiExECmuFI2D9PS+BmNU7eGvBt3fzVMKybb9USAZXN6kw4Q6Mn8DSK+7OFCloY2rN820Q==", "dev": true, "requires": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", @@ -36177,126 +31373,32 @@ "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.2.0", - "jest-util": "^29.2.0", - "jest-worker": "^29.2.0", + "jest-util": "^29.2.1", + "jest-worker": "^29.3.0", "micromatch": "^4.0.4", "walker": "^1.0.8" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true - }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.2.0.tgz", - "integrity": "sha512-mluOlMbRX1H59vGVzPcVg2ALfCausbBpxC8a2KWOzInhYHZibbHH8CB0C1JkmkpfurrkOYgF7FPmypuom1OM9A==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "jest-leak-detector": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.2.0.tgz", - "integrity": "sha512-FXT9sCFdct42+oOqGIr/9kmUw3RbhvpkwidCBT5ySHHoWNGd3c9n7HXpFKjEz9UnUITRCGdn0q2s6Sxrq36kwg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.2.1.tgz", + "integrity": "sha512-1YvSqYoiurxKOJtySc+CGVmw/e1v4yNY27BjWTVzp0aTduQeA7pdieLiW05wTYG/twlKOp2xS/pWuikQEmklug==", "dev": true, "requires": { "jest-get-type": "^29.2.0", - "pretty-format": "^29.2.0" + "pretty-format": "^29.2.1" } }, "jest-matcher-utils": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.2.0.tgz", - "integrity": "sha512-FcEfKZ4vm28yCdBsvC69EkrEhcfex+IYlRctNJXsRG9+WC3WxgBNORnECIgqUtj7o/h1d8o7xB/dFUiLi4bqtw==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz", + "integrity": "sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^29.2.0", + "jest-diff": "^29.2.1", "jest-get-type": "^29.2.0", - "pretty-format": "^29.2.0" + "pretty-format": "^29.2.1" }, "dependencies": { "ansi-styles": { @@ -36351,18 +31453,18 @@ } }, "jest-message-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.2.0.tgz", - "integrity": "sha512-arBfk5yMFMTnMB22GyG601xGSGthA02vWSewPaxoFo0F9wBqDOyxccPbCcYu8uibw3kduSHXdCOd1PsLSgdomg==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.2.1.tgz", + "integrity": "sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.2.0", + "pretty-format": "^29.2.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -36425,79 +31527,14 @@ } }, "jest-mock": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.2.0.tgz", - "integrity": "sha512-aiWGR0P8ivssIO17xkehLGFtCcef2ZwQFNPwEer1jQLHxPctDlIg3Hs6QMq1KpPz5dkCcgM7mwGif4a9IPznlg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.0.tgz", + "integrity": "sha512-BRKfsAaeP3pTWeog+1D0ILeJF96SzB6y3k0JDxY63kssxiUy9nDLHmNUoVkBGILjMbpHULhbzVTsb3harPXuUQ==", "dev": true, "requires": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "@types/node": "*", - "jest-util": "^29.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "jest-util": "^29.2.1" } }, "jest-pnp-resolver": { @@ -36508,22 +31545,23 @@ "requires": {} }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==" + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", + "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", + "dev": true }, "jest-resolve": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.2.0.tgz", - "integrity": "sha512-f5c0ljNg2guDBCC7wi92vAhNuA0BtAG5vkY7Fob0c7sUMU1g87mTXqRmjrVFe2XvdwP5m5T/e5KJsCKu9hRvBA==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.3.0.tgz", + "integrity": "sha512-xH6C6loDlOWEWHdCgioLDlbpmsolNdNsV/UR35ChuK217x0ttHuhyEPdh5wa6CTQ/Eq4OGW2/EZTlh0ay5aojQ==", "dev": true, "requires": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.2.0", + "jest-haste-map": "^29.3.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.2.0", - "jest-validate": "^29.2.0", + "jest-util": "^29.2.1", + "jest-validate": "^29.2.2", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -36569,20 +31607,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -36601,48 +31625,40 @@ } }, "jest-resolve-dependencies": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.2.0.tgz", - "integrity": "sha512-Cd0Z39sDntEnfR9PoUdFHUAGDvtKI0/7Wt73l3lt03A3yQ+A6Qi3XmBuqGjdFl2QbXaPa937oLhilG612P8HGQ==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.0.tgz", + "integrity": "sha512-ykSbDbWmIaHprOBig57AExw7i6Fj0y69M6baiAd75Ivx1UMQt4wsM6A+SNqIhycV6Zy8XV3L40Ac3HYSrDSq7w==", "dev": true, "requires": { "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.2.0" - }, - "dependencies": { - "jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true - } + "jest-snapshot": "^29.3.0" } }, "jest-runner": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.2.0.tgz", - "integrity": "sha512-VPBrCwl9fM2mc5yk6yZhNrgXzRJMD5jfLmntkMLlrVq4hQPWbRK998iJlR+DOGCO04TC9PPYLntOJ001Vnf28g==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.3.0.tgz", + "integrity": "sha512-E/ROzAVj7gy44FvIe+Tbz0xGWG1sa8WLkhUg/hsXHewPC0Z48kqWySdfYRtXkB7RmMn4OcWE+hIBfsRAMVV+sQ==", "dev": true, "requires": { - "@jest/console": "^29.2.0", - "@jest/environment": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/transform": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/console": "^29.2.1", + "@jest/environment": "^29.3.0", + "@jest/test-result": "^29.2.1", + "@jest/transform": "^29.3.0", + "@jest/types": "^29.2.1", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.10.2", + "emittery": "^0.13.1", "graceful-fs": "^4.2.9", "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.2.0", - "jest-haste-map": "^29.2.0", - "jest-leak-detector": "^29.2.0", - "jest-message-util": "^29.2.0", - "jest-resolve": "^29.2.0", - "jest-runtime": "^29.2.0", - "jest-util": "^29.2.0", - "jest-watcher": "^29.2.0", - "jest-worker": "^29.2.0", + "jest-environment-node": "^29.3.0", + "jest-haste-map": "^29.3.0", + "jest-leak-detector": "^29.2.1", + "jest-message-util": "^29.2.1", + "jest-resolve": "^29.3.0", + "jest-runtime": "^29.3.0", + "jest-util": "^29.2.1", + "jest-watcher": "^29.2.2", + "jest-worker": "^29.3.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -36687,43 +31703,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.2.0.tgz", - "integrity": "sha512-mluOlMbRX1H59vGVzPcVg2ALfCausbBpxC8a2KWOzInhYHZibbHH8CB0C1JkmkpfurrkOYgF7FPmypuom1OM9A==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -36733,12 +31712,6 @@ "yocto-queue": "^0.1.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "source-map-support": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", @@ -36761,31 +31734,31 @@ } }, "jest-runtime": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.2.0.tgz", - "integrity": "sha512-+GDmzCrswQF+mvI0upTYMe/OPYnlRRNLLDHM9AFLp2y7zxWoDoYgb8DL3WwJ8d9m743AzrnvBV9JQHi/0ed7dg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.3.0.tgz", + "integrity": "sha512-ufgX/hbpa7MLnjWRW82T5mVF73FBk3W38dGCLPXWtYZ5Zr1ZFh8QnaAtITKJt0p3kGXR8ZqlIjadSiBTk/QJ/A==", "dev": true, "requires": { - "@jest/environment": "^29.2.0", - "@jest/fake-timers": "^29.2.0", - "@jest/globals": "^29.2.0", + "@jest/environment": "^29.3.0", + "@jest/fake-timers": "^29.3.0", + "@jest/globals": "^29.3.0", "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.2.0", - "@jest/transform": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/test-result": "^29.2.1", + "@jest/transform": "^29.3.0", + "@jest/types": "^29.2.1", "@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.2.0", - "jest-message-util": "^29.2.0", - "jest-mock": "^29.2.0", + "jest-haste-map": "^29.3.0", + "jest-message-util": "^29.2.1", + "jest-mock": "^29.3.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.2.0", - "jest-snapshot": "^29.2.0", - "jest-util": "^29.2.0", + "jest-resolve": "^29.3.0", + "jest-snapshot": "^29.3.0", + "jest-util": "^29.2.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -36830,26 +31803,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-regex-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", - "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", - "dev": true - }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -36877,9 +31830,9 @@ } }, "jest-snapshot": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.2.0.tgz", - "integrity": "sha512-YCKrOR0PLRXROmww73fHO9oeY4tL+LPQXWR3yml1+hKbQDR8j1VUrVzB65hKSJJgxBOr1vWx+hmz2by8JjAU5w==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.3.0.tgz", + "integrity": "sha512-+4mX3T8XI3ABbZFzBd/AM74mfwOb6gMpYVFNTc0Cgg2F2fGYvHii8D6jWWka99a3wyNFmni3ov8meEVTF8n13Q==", "dev": true, "requires": { "@babel/core": "^7.11.6", @@ -36888,23 +31841,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.2.0", - "@jest/transform": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/expect-utils": "^29.2.2", + "@jest/transform": "^29.3.0", + "@jest/types": "^29.2.1", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.2.0", + "expect": "^29.3.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.2.0", + "jest-diff": "^29.2.1", "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.2.0", - "jest-matcher-utils": "^29.2.0", - "jest-message-util": "^29.2.0", - "jest-util": "^29.2.0", + "jest-haste-map": "^29.3.0", + "jest-matcher-utils": "^29.2.2", + "jest-message-util": "^29.2.1", + "jest-util": "^29.2.1", "natural-compare": "^1.4.0", - "pretty-format": "^29.2.0", + "pretty-format": "^29.2.1", "semver": "^7.3.5" }, "dependencies": { @@ -36948,20 +31901,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -36974,11 +31913,12 @@ } }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.1.tgz", + "integrity": "sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g==", + "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.2.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -36986,30 +31926,11 @@ "picomatch": "^2.2.3" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -37018,6 +31939,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -37027,6 +31949,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -37034,17 +31957,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -37052,17 +31978,17 @@ } }, "jest-validate": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.2.0.tgz", - "integrity": "sha512-4Vl51bPNeFeDok9aJiOnrC6tqJbOp4iMCYlewoC2ZzYJZ5+6pfr3KObAdx5wP8auHcg2MRaguiqj5OdScZa72g==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.2.2.tgz", + "integrity": "sha512-eJXATaKaSnOuxNfs8CLHgdABFgUrd0TtWS8QckiJ4L/QVDF4KVbZFBBOwCBZHOS0Rc5fOxqngXeGXE3nGQkpQA==", "dev": true, "requires": { - "@jest/types": "^29.2.0", + "@jest/types": "^29.2.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", "leven": "^3.1.0", - "pretty-format": "^29.2.0" + "pretty-format": "^29.2.1" }, "dependencies": { "ansi-styles": { @@ -37123,18 +32049,18 @@ } }, "jest-watcher": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.2.0.tgz", - "integrity": "sha512-bRh0JdUeN+cl9XfK7tMnXLm4Mv70hG2SZlqbkFe5CTs7oeCkbwlGBk/mEfEJ63mrxZ8LPbnfaMpfSmkhEQBEGA==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.2.2.tgz", + "integrity": "sha512-j2otfqh7mOvMgN2WlJ0n7gIx9XCMWntheYGlBK7+5g3b1Su13/UAK7pdKGyd4kDlrLwtH2QPvRv5oNIxWvsJ1w==", "dev": true, "requires": { - "@jest/test-result": "^29.2.0", - "@jest/types": "^29.2.0", + "@jest/test-result": "^29.2.1", + "@jest/types": "^29.2.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^29.2.0", + "emittery": "^0.13.1", + "jest-util": "^29.2.1", "string-length": "^4.0.1" }, "dependencies": { @@ -37178,20 +32104,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.0.tgz", - "integrity": "sha512-8M1dx12ujkBbnhwytrezWY0Ut79hbflwodE+qZKjxSRz5qt4xDp6dQQJaOCFvCmE0QJqp9KyEK33lpPNjnhevw==", - "dev": true, - "requires": { - "@jest/types": "^29.2.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -37204,11 +32116,13 @@ } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.0.tgz", + "integrity": "sha512-rP8LYClB5NCWW0p8GdQT9vRmZNrDmjypklEYZuGCIU5iNviVWCZK5MILS3rQwD0FY1u96bY7b+KoU17DdZy6Ww==", + "dev": true, "requires": { "@types/node": "*", + "jest-util": "^29.2.1", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -37216,12 +32130,14 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -37235,9 +32151,9 @@ "dev": true }, "joi": { - "version": "17.6.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.3.tgz", - "integrity": "sha512-YlQsIaS9MHYekzf1Qe11LjTkNzx9qhYluK3172z38RxYoAUf82XMX1p1DG1H4Wtk2ED/vPdSn9OggqtDu+aTow==", + "version": "17.6.4", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.4.tgz", + "integrity": "sha512-tPzkTJHZQjSFCc842QpdVpOZ9LI2txApboNUbW70qgnRB14Lzl+oWQOPdF2N4yqyiY14wBGe8lc7f/2hZxbGmw==", "requires": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", @@ -37586,42 +32502,13 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" - }, "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "peer": true }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "peer": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "peer": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, "localforage": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", @@ -37810,6 +32697,11 @@ "strip-ansi": "^6.0.0" } }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -37904,48 +32796,16 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "requires": { "object-visit": "^1.0.0" } }, - "match-stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", - "integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=", - "requires": { - "buffers": "~0.1.1", - "readable-stream": "~1.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, "mathjax-full": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.0.tgz", @@ -37957,18 +32817,6 @@ "speech-rule-engine": "^3.3.3" } }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "peer": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", @@ -37984,42 +32832,6 @@ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "peer": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -38171,6 +32983,26 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", @@ -38243,6 +33075,11 @@ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==" }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -38271,6 +33108,11 @@ "strip-ansi": "^6.0.0" } }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -38481,6 +33323,56 @@ "walker": "^1.0.7" }, "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -38489,10 +33381,61 @@ "ms": "2.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==" + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -38591,6 +33534,11 @@ "strip-ansi": "^6.0.0" } }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -38629,9 +33577,9 @@ } }, "metro-react-native-babel-preset": { - "version": "0.73.2", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.73.2.tgz", - "integrity": "sha512-Wb7nPaJRHpikZII565oLKylxmiyMFlTA/wSnCkJ7LDo6ICh0jSshfNk9+w5V5xAxSnpsEnvXPaGP5QFk4ZHXrg==", + "version": "0.73.3", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.73.3.tgz", + "integrity": "sha512-JJ22lR4CVaw3OKTz9YAY/ckymr3DbO+qy/x5kLaF4g0LcvZmhhKfDK+fml577AZU6sKb/CTd0SBwt+VAz+Hu7Q==", "dev": true, "requires": { "@babel/core": "^7.14.0", @@ -38766,6 +33714,13 @@ "ob1": "0.72.3", "source-map": "^0.5.6", "vlq": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + } } }, "metro-symbolicate": { @@ -38779,6 +33734,13 @@ "source-map": "^0.5.6", "through2": "^2.0.1", "vlq": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + } } }, "metro-transform-plugins": { @@ -38827,26 +33789,6 @@ "picomatch": "^2.2.3" } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - } - } - }, "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -38870,24 +33812,10 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true, - "peer": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true, - "peer": true - }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } @@ -38896,25 +33824,6 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "peer": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -38973,12 +33882,6 @@ "strip-ansi": "^6.0.1" } }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, "yargs": { "version": "17.3.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", @@ -39003,34 +33906,31 @@ } }, "mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.1.0.tgz", + "integrity": "sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==", "dev": true, "optional": true, "peer": true, "requires": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", - "growl": "1.10.5", + "glob": "7.2.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "3.0.4", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -39044,6 +33944,17 @@ "optional": true, "peer": true }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -39056,22 +33967,6 @@ "path-exists": "^4.0.0" } }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -39102,6 +33997,17 @@ "p-locate": "^5.0.0" } }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -39150,17 +34056,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -39194,33 +34089,6 @@ "moment": ">= 2.9.0" } }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "peer": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -39277,9 +34145,9 @@ "optional": true }, "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" }, "nanomatch": { "version": "1.2.13", @@ -39305,6 +34173,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", @@ -39312,26 +34186,6 @@ "dev": true, "optional": true }, - "needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -39404,95 +34258,7 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "peer": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "peer": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true, - "peer": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "peer": true, - "requires": { - "inherits": "2.0.3" - } - } - } + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" }, "node-releases": { "version": "2.0.6", @@ -39566,7 +34332,7 @@ "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -39576,7 +34342,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -39584,7 +34350,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" } @@ -39592,7 +34358,7 @@ "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" } @@ -39617,7 +34383,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -39646,19 +34412,19 @@ "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "requires": { "isobject": "^3.0.0" } }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, @@ -39697,7 +34463,7 @@ "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "requires": { "isobject": "^3.0.1" } @@ -39746,6 +34512,7 @@ "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, "requires": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" @@ -39863,23 +34630,11 @@ } } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true, - "peer": true - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "over": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", - "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=" - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -39907,46 +34662,9 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "pako": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", - "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "peer": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, "parent-module": { "version": "1.0.1", @@ -39957,20 +34675,6 @@ "callsites": "^3.0.0" } }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "peer": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, "parse-entities": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", @@ -39985,12 +34689,15 @@ } }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "requires": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, "parseurl": { @@ -40004,26 +34711,61 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, "patch-package": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz", - "integrity": "sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.0.tgz", + "integrity": "sha512-tC3EqJmo74yKqfsMzELaFwxOAu6FH6t+FzFOsnWAuARm7/n2xB5AOeOueE221eM9gtMuIKMKpF9tBy/X2mNP0Q==", "dev": true, "requires": { "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^2.4.2", + "chalk": "^4.1.2", "cross-spawn": "^6.0.5", "find-yarn-workspace-root": "^2.0.0", "fs-extra": "^7.0.1", "is-ci": "^2.0.0", "klaw-sync": "^6.0.0", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "open": "^7.4.2", "rimraf": "^2.6.3", "semver": "^5.6.0", "slash": "^2.0.0", - "tmp": "^0.0.33" + "tmp": "^0.0.33", + "yaml": "^1.10.2" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -40048,6 +34790,12 @@ "universalify": "^0.1.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -40068,6 +34816,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -40104,20 +34861,6 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "peer": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -40189,7 +34932,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" }, "prelude-ls": { "version": "1.2.1", @@ -40214,9 +34957,9 @@ } }, "pretty-format": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.0.tgz", - "integrity": "sha512-QCSUFdwOi924g24czhOH5eTkXxUCqlLGZBRCySlwDYHIXRJkdGyjJc9nZaqhlFBZws8dq5Dvk0lCilsmlfsPxw==", + "version": "29.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz", + "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==", "dev": true, "requires": { "@jest/schemas": "^29.0.0", @@ -40243,13 +34986,6 @@ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==" }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true, - "peer": true - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -40268,13 +35004,6 @@ "asap": "~2.0.6" } }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true, - "peer": true - }, "promise-polyfill": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", @@ -40330,13 +35059,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true, - "peer": true - }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -40349,64 +35071,6 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - } - } - }, - "pullstream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", - "integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=", - "requires": { - "over": ">= 0.0.5 < 1", - "readable-stream": "~1.0.31", - "setimmediate": ">= 1.0.2 < 2", - "slice-stream": ">= 1.0.0 < 2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -40416,31 +35080,6 @@ "once": "^1.3.1" } }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "peer": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "peer": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -40458,20 +35097,6 @@ "strict-uri-encode": "^2.0.0" } }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true, - "peer": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true, - "peer": true - }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -40503,17 +35128,6 @@ "safe-buffer": "^5.1.0" } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "peer": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -40580,14 +35194,14 @@ "integrity": "sha512-txfpPCQYiazVdcbMRhatqWKcAxJweUu2wDXvts5/7Wyp6+Y9cHojqXHsLPEckzutfHlxZhG8Oiundbmp8Fd6eQ==" }, "react-native": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.3.tgz", - "integrity": "sha512-EiJxOonyvpSWa3Eik7a6YAD6QU8lK2W9M/DDdYlpWmIlGLCd5110rIpEZjxttsyrohxlRJAYRgJ9Tx2mMXqtfw==", + "version": "0.70.5", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz", + "integrity": "sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw==", "requires": { - "@jest/create-cache-key-function": "^27.0.1", - "@react-native-community/cli": "9.1.3", - "@react-native-community/cli-platform-android": "9.1.0", - "@react-native-community/cli-platform-ios": "9.1.2", + "@jest/create-cache-key-function": "^29.0.3", + "@react-native-community/cli": "9.2.1", + "@react-native-community/cli-platform-android": "9.2.1", + "@react-native-community/cli-platform-ios": "9.2.1", "@react-native/assets": "1.0.0", "@react-native/normalize-color": "2.0.0", "@react-native/polyfills": "2.0.0", @@ -40606,7 +35220,7 @@ "pretty-format": "^26.5.2", "promise": "^8.0.3", "react-devtools-core": "4.24.0", - "react-native-codegen": "^0.70.5", + "react-native-codegen": "^0.70.6", "react-native-gradle-plugin": "^0.70.3", "react-refresh": "^0.4.0", "react-shallow-renderer": "^16.15.0", @@ -40752,9 +35366,9 @@ } }, "react-native-calendars": { - "version": "1.1289.0", - "resolved": "https://registry.npmjs.org/react-native-calendars/-/react-native-calendars-1.1289.0.tgz", - "integrity": "sha512-qaqRliQxM+05kCPd04d7xryRxpFC/XHgxyOThSeZRdEXP29AQLrWDHZNhUUXALe2pVWNTJIzt6jnWsgs2gAmYg==", + "version": "1.1291.1", + "resolved": "https://registry.npmjs.org/react-native-calendars/-/react-native-calendars-1.1291.1.tgz", + "integrity": "sha512-L2MK2t3kbnDg2RoU12UAoQyNrUpDYdj2MyIfg13YrwVb8BuI/gc0q/VpEinY3iz5ETHiFsTLkCsAFwSj7xbZWw==", "requires": { "hoist-non-react-statics": "^3.3.1", "immutable": "^4.0.0-rc.12", @@ -40768,9 +35382,9 @@ } }, "react-native-codegen": { - "version": "0.70.5", - "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.5.tgz", - "integrity": "sha512-vXqgCWWIWlzsCtwD6hbmwmCleGNJYm+n4xO9VMfzzlF3xt9gjC7/USSMTf/YZlCK/hDwQU412QrNS6A9OH+mag==", + "version": "0.70.6", + "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.6.tgz", + "integrity": "sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw==", "requires": { "@babel/parser": "^7.14.0", "flow-parser": "^0.121.0", @@ -40785,9 +35399,9 @@ "requires": {} }, "react-native-device-info": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-10.2.1.tgz", - "integrity": "sha512-vXmcLThnCnrdhiJr7O4jaDY/xouFRshhGAU4HYkiSi5ShSXE+QqFQwKqICdHtw06VeX3ydZg3j0puG0lbTKVEA==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-10.3.0.tgz", + "integrity": "sha512-/ziZN1sA1REbJTv5mQZ4tXggcTvSbct+u5kCaze8BmN//lbxcTvWsU6NQd4IihLt89VkbX+14IGc9sVApSxd/w==", "requires": {} }, "react-native-document-picker": { @@ -40799,11 +35413,11 @@ } }, "react-native-dotenv": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/react-native-dotenv/-/react-native-dotenv-3.4.0.tgz", - "integrity": "sha512-Z/pvS0QGSDHcxnUmJ/uHLgC1/DZL/UpKSOHp3mCKyV3vQd385CBahrEBca8pD3eabrsDjg8xO0uRxnRG3s1lbw==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/react-native-dotenv/-/react-native-dotenv-3.4.2.tgz", + "integrity": "sha512-O3ta0vSUmOp2hRG1uSiSz+mpagTMKzQ9LAzBDKDO0Zbd0BCBsE+p3PLTkVBzl0XGqExdCGyh/VwQeSsxpTiITA==", "requires": { - "dotenv": "^16.0.0" + "dotenv": "^16.0.3" } }, "react-native-elements": { @@ -40828,9 +35442,9 @@ "requires": {} }, "react-native-fast-image": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/react-native-fast-image/-/react-native-fast-image-8.6.1.tgz", - "integrity": "sha512-ILuP7EuakqHNzTr8ZbumhuxG4tE/wGQ66z4nEEuzc0FlqY6rYaPsnq/UD2ahoyFj6QP1WvA2RIK3odib+VcqWg==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/react-native-fast-image/-/react-native-fast-image-8.6.3.tgz", + "integrity": "sha512-Sdw4ESidXCXOmQ9EcYguNY2swyoWmx53kym2zRsvi+VeFCHEdkO+WG1DK+6W81juot40bbfLNhkc63QnWtesNg==", "requires": {} }, "react-native-file-viewer": { @@ -40856,9 +35470,9 @@ } }, "react-native-gesture-handler": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.7.1.tgz", - "integrity": "sha512-Rnak7U4v3ZB+vjVghv5CvAGS+UfRLsXUq7Nq+FycloxZ7jUZjBo+7rPnt+EdTIE2zc2pKhQHIQKcD+IAPg2Scg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.8.0.tgz", + "integrity": "sha512-poOSfz/w0IyD6Qwq7aaIRRfEaVTl1ecQFoyiIbpOpfNTjm2B1niY2FLrdVQIOtIOe+K9nH55Qal04nr4jGkHdQ==", "requires": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", @@ -40945,9 +35559,9 @@ } }, "react-native-navigation": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/react-native-navigation/-/react-native-navigation-7.29.0.tgz", - "integrity": "sha512-kDNaS54VBTlcUWfBmBRzk71Mau47mwktzoxGw3Pb2KPHCfwoEI5SyOAsx22PIgCzBXCK8vOxKrHCHYw/TnnQvQ==", + "version": "7.30.1", + "resolved": "https://registry.npmjs.org/react-native-navigation/-/react-native-navigation-7.30.1.tgz", + "integrity": "sha512-664HzxnRKVUfqwOq0uM0tisgfNpPKIrx/y1ElCsk1PRuj3umjZlFyfV5sM3JKhpwIWPWyOXrDK3Qb23fLG2TSg==", "requires": { "hoist-non-react-statics": "3.x.x", "lodash": "4.17.x", @@ -40964,9 +35578,9 @@ } }, "react-native-notifications": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-native-notifications/-/react-native-notifications-4.3.1.tgz", - "integrity": "sha512-A668d+Q0/VQRjmrh+LvDpc/REA8GXgwCijXDCIlDHGMK8enmrtdxY5OANQf1VM3hecf+fD0wYFw2uqL/ZR8jgg==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/react-native-notifications/-/react-native-notifications-4.3.3.tgz", + "integrity": "sha512-t7uPgpC93A4L41Jea2zet3BUqgh45gpN/ATS9gxejNH3r6kWgMdGeeZJhuMpl1gSXw1gcvgzdjzIjN7YZSOP0A==", "requires": {} }, "react-native-permissions": { @@ -40984,9 +35598,9 @@ } }, "react-native-reanimated": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.10.0.tgz", - "integrity": "sha512-jKm3xz5nX7ABtHzzuuLmawP0pFWP77lXNdIC6AWOceBs23OHUaJ29p4prxr/7Sb588GwTbkPsYkDqVFaE3ezNQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.12.0.tgz", + "integrity": "sha512-nrlPyw+Hx9u4iJhZk9PoTvDo/QmVAd+bo7OK9Tv3hveNEF9++5oig/g3Uv9V93shy9avTYGsUprUvAEt/xdzeQ==", "requires": { "@babel/plugin-transform-object-assign": "^7.16.7", "@babel/preset-typescript": "^7.16.7", @@ -41026,9 +35640,9 @@ } }, "react-native-share": { - "version": "7.9.1", - "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-7.9.1.tgz", - "integrity": "sha512-v4b6lD4YsiCJB14kjXons+d5cvvxgLv8OdBF0aP58X8Qqbcj81QNv1icAxiNmhxFx5OFYsu/E6v+o8S0GSaneQ==" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-8.0.0.tgz", + "integrity": "sha512-IFUKcWQ1/VgtsQmuC3EKaIPMhKqssTblwCojtTB4dehWJ2ZUPsIstPXJGqcmWqg7/S3cLNfCLvxf/tVaZvptxw==" }, "react-native-size-matters": { "version": "0.3.1", @@ -41037,9 +35651,9 @@ "requires": {} }, "react-native-svg": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.4.0.tgz", - "integrity": "sha512-B3TwK+H0+JuRhYPzF21AgqMt4fjhCwDZ9QUtwNstT5XcslJBXC0FoTkdZo8IEb1Sv4suSqhZwlAY6lwOv3tHag==", + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.5.0.tgz", + "integrity": "sha512-JWou/k4zfXRY6TsVgM4i30D0z54McqQ64D5cAfOzX17ThZwFjOheN24owmbAs7Y+naD0Bk5j409kT/6FZEop4g==", "requires": { "css-select": "^5.1.0", "css-tree": "^1.1.3" @@ -41286,13 +35900,6 @@ "esprima": "~4.0.0", "source-map": "~0.6.1", "tslib": "^2.0.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } } }, "rechoir": { @@ -41418,14 +36025,6 @@ } } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true, - "optional": true, - "peer": true - }, "repeat-element": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", @@ -41434,7 +36033,7 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" }, "require-directory": { "version": "2.1.1", @@ -41491,7 +36090,7 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" }, "resolve.exports": { "version": "1.1.0", @@ -41549,17 +36148,6 @@ "glob": "^7.1.3" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "peer": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -41574,16 +36162,6 @@ "queue-microtask": "^1.2.2" } }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "peer": true, - "requires": { - "aproba": "^1.1.1" - } - }, "rxjs": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", @@ -41614,7 +36192,7 @@ "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "requires": { "ret": "~0.1.10" } @@ -41633,11 +36211,6 @@ "truncate-utf8-bytes": "^1.0.0" } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "scheduler": { "version": "0.22.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", @@ -41647,14 +36220,44 @@ } }, "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, "semver": { @@ -41760,7 +36363,6 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "optional": true, "peer": true, "requires": { "randombytes": "^2.1.0" @@ -41796,7 +36398,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -41804,7 +36406,7 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" } } }, @@ -41818,17 +36420,6 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "shaka-player": { "version": "2.5.23", "resolved": "https://registry.npmjs.org/shaka-player/-/shaka-player-2.5.23.tgz", @@ -41929,37 +36520,6 @@ "is-fullwidth-code-point": "^2.0.0" } }, - "slice-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", - "integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=", - "requires": { - "readable-stream": "~1.0.31" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -41986,7 +36546,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -41994,7 +36554,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -42002,7 +36562,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" }, @@ -42010,7 +36570,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -42020,7 +36580,7 @@ "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" }, @@ -42028,7 +36588,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -42048,7 +36608,7 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" }, "kind-of": { "version": "5.1.0", @@ -42058,7 +36618,12 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" } } }, @@ -42075,7 +36640,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -42093,7 +36658,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -42119,17 +36684,10 @@ } } }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true, - "peer": true - }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-resolve": { "version": "0.5.3", @@ -42150,13 +36708,6 @@ "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } } }, "source-map-url": { @@ -42209,16 +36760,6 @@ "resolved": "https://registry.npmjs.org/sql-escape-string/-/sql-escape-string-1.1.0.tgz", "integrity": "sha1-/nRLhRSGjA60v7nkqYknHUDzDrk=" }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "peer": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -42265,7 +36806,7 @@ "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -42274,7 +36815,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -42282,7 +36823,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" }, @@ -42290,7 +36831,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -42300,7 +36841,7 @@ "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" }, @@ -42308,7 +36849,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -42337,104 +36878,11 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "peer": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "stream-buffers": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=" }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "peer": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "peer": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true, - "peer": true - }, "strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -42611,11 +37059,6 @@ } } }, - "svgpath": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.5.0.tgz", - "integrity": "sha512-o/vohwqjUO9nDAh4rcjE3KaW/v//At8UJu2LJMybXidf5QLQLVA4bxH0//4YCsr+1H4Gw1Wi/Jc62ynzSBYidw==" - }, "tail": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/tail/-/tail-2.2.4.tgz", @@ -42623,9 +37066,9 @@ "dev": true }, "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, "peer": true }, @@ -42679,15 +37122,16 @@ } }, "terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, "peer": true, "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map-support": "~0.5.20" }, "dependencies": { "commander": { @@ -42696,69 +37140,63 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "peer": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true } } }, "terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "peer": true, "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" }, "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "peer": true }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "peer": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "peer": true, "requires": { - "randombytes": "^2.1.0" + "has-flag": "^4.0.0" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true } } }, @@ -42819,16 +37257,6 @@ } } }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "peer": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, "tinycolor2": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", @@ -42847,13 +37275,6 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true, - "peer": true - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -42862,7 +37283,7 @@ "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "requires": { "kind-of": "^3.0.2" }, @@ -42870,7 +37291,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -42926,11 +37347,6 @@ "resolved": "https://registry.npmjs.org/transformation-matrix/-/transformation-matrix-2.11.1.tgz", "integrity": "sha512-srlkTrmetYwTBJ1RHdukkwJ8S8D+2JjgSb1DbvmTwj+DsIpCpRYHbWgOXe/Ql2rX37WqlKLIgidpYlHPGsrwgA==" }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" - }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -42956,69 +37372,6 @@ "yargs-parser": "^21.0.1" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-util": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.1.2.tgz", - "integrity": "sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ==", - "dev": true, - "requires": { - "@jest/types": "^29.1.2", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "yargs-parser": { "version": "21.0.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", @@ -43083,13 +37436,6 @@ } } }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true, - "peer": true - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -43111,13 +37457,6 @@ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true, - "peer": true - }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -43150,11 +37489,6 @@ "version": "2.13.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -43213,30 +37547,10 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" } } }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "peer": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "peer": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, "unit-compare": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unit-compare/-/unit-compare-1.0.1.tgz", @@ -43259,7 +37573,7 @@ "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "requires": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -43268,7 +37582,7 @@ "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -43278,7 +37592,7 @@ "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "requires": { "isarray": "1.0.0" } @@ -43288,120 +37602,15 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - } - } - }, - "unzip": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/unzip/-/unzip-0.1.11.tgz", - "integrity": "sha1-iXScY7BY19kNYZ+GuYqhU107l/A=", - "requires": { - "binary": ">= 0.3.0 < 1", - "match-stream": ">= 0.0.2 < 1", - "pullstream": ">= 0.4.1 < 1", - "readable-stream": "~1.0.31", - "setimmediate": ">= 1.0.1 < 2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - }, - "dependencies": { - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } } } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "optional": true, - "peer": true - }, "update-browserslist-db": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", @@ -43423,27 +37632,7 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "peer": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true, - "peer": true - } - } + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" }, "url-parse": { "version": "1.5.10", @@ -43536,13 +37725,6 @@ "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==" }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true, - "peer": true - }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -43557,271 +37739,14 @@ "integrity": "sha512-recZTSvuaH/On5ZU5ywq66y99lImWqzP93+AiUo9LUwG8gXHW+LJjhOd6REJHm7qb0niYqrEQJvbHSQfuJtTqA==" }, "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "peer": true, "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - } - }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "chokidar": "^2.1.8" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true, - "peer": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "optional": true, - "peer": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "optional": true, - "peer": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" } }, "wcwidth": { @@ -43833,190 +37758,48 @@ } }, "webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" }, "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "peer": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "peer": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "peer": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "peer": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "peer": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "peer": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "peer": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "peer": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "peer": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "peer": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "peer": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "peer": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "peer": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } } } @@ -44066,24 +37849,11 @@ } }, "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, - "peer": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true - } - } + "peer": true }, "whatwg-fetch": { "version": "3.6.2", @@ -44127,16 +37897,16 @@ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" }, "which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" + "is-typed-array": "^1.1.10" } }, "wicked-good-xpath": { @@ -44164,20 +37934,10 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "peer": true, - "requires": { - "errno": "~0.1.7" - } - }, "workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true, "optional": true, "peer": true @@ -44282,11 +38042,6 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, - "xmldom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz", - "integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==" - }, "xmldom-sre": { "version": "0.1.31", "resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz", @@ -44311,9 +38066,9 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yallist": { "version": "2.1.2", @@ -44360,11 +38115,6 @@ "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" } } }, diff --git a/package.json b/package.json index b5636dd4e..e793dfa26 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "@formatjs/intl-numberformat": "8.2.0", "@formatjs/intl-pluralrules": "5.1.4", "@formatjs/intl-relativetimeformat": "11.1.4", - "@mattermost/compass-icons": "0.1.28", - "@mattermost/react-native-emm": "1.3.2", + "@mattermost/compass-icons": "0.1.30", + "@mattermost/react-native-emm": "1.3.3", "@mattermost/react-native-network-client": "1.0.0", "@mattermost/react-native-paste-input": "0.5.1", "@mattermost/react-native-turbo-log": "0.2.0", @@ -23,44 +23,44 @@ "@nozbe/with-observables": "1.4.1", "@react-native-camera-roll/camera-roll": "5.0.4", "@react-native-clipboard/clipboard": "1.11.1", - "@react-native-community/datetimepicker": "6.5.2", - "@react-native-community/netinfo": "9.3.5", + "@react-native-community/datetimepicker": "6.5.4", + "@react-native-community/netinfo": "9.3.6", "@react-native-cookies/cookies": "6.2.1", "@react-navigation/bottom-tabs": "6.4.0", "@react-navigation/native": "6.0.13", "@rudderstack/rudder-sdk-react-native": "1.5.1", - "@sentry/react-native": "4.6.1", + "@sentry/react-native": "4.8.0", "@stream-io/flat-list-mvcp": "0.10.2", "base-64": "1.0.0", "commonmark": "npm:@mattermost/commonmark@0.30.1-0", "commonmark-react-renderer": "github:mattermost/commonmark-react-renderer#2c660491041f7595f6ce5a05f6dc2e30ca769d3a", - "deep-equal": "2.0.5", + "deep-equal": "2.1.0", "deepmerge": "4.2.2", "emoji-regex": "10.2.1", "fuse.js": "6.6.2", "jail-monkey": "2.7.0", "mime-db": "1.52.0", "moment-timezone": "0.5.38", - "pako": "2.0.4", + "pako": "2.1.0", "react": "18.2.0", "react-freeze": "1.0.3", "react-intl": "6.2.1", - "react-native": "0.70.3", + "react-native": "0.70.5", "react-native-android-open-settings": "1.3.0", "react-native-animated-numbers": "0.4.1", "react-native-background-timer": "2.4.1", "react-native-button": "3.0.1", - "react-native-calendars": "1.1289.0", + "react-native-calendars": "1.1291.1", "react-native-create-thumbnail": "1.6.3", - "react-native-device-info": "10.2.1", + "react-native-device-info": "10.3.0", "react-native-document-picker": "8.1.2", - "react-native-dotenv": "3.4.0", + "react-native-dotenv": "3.4.2", "react-native-elements": "3.4.2", "react-native-exception-handler": "2.10.10", - "react-native-fast-image": "8.6.1", + "react-native-fast-image": "8.6.3", "react-native-file-viewer": "2.1.5", "react-native-fs": "2.20.0", - "react-native-gesture-handler": "2.7.1", + "react-native-gesture-handler": "2.8.0", "react-native-haptic-feedback": "1.14.0", "react-native-hw-keyboard-event": "0.0.4", "react-native-image-picker": "4.10.0", @@ -71,16 +71,16 @@ "react-native-linear-gradient": "2.6.2", "react-native-localize": "2.2.4", "react-native-math-view": "3.9.5", - "react-native-navigation": "7.29.0", - "react-native-notifications": "4.3.1", + "react-native-navigation": "7.30.1", + "react-native-notifications": "4.3.3", "react-native-permissions": "3.6.1", - "react-native-reanimated": "2.10.0", + "react-native-reanimated": "2.12.0", "react-native-safe-area-context": "4.4.1", "react-native-screens": "3.18.2", "react-native-section-list-get-item-layout": "2.2.3", "react-native-shadow-2": "7.0.6", - "react-native-share": "7.9.1", - "react-native-svg": "13.4.0", + "react-native-share": "8.0.0", + "react-native-svg": "13.5.0", "react-native-user-agent": "2.3.1", "react-native-vector-icons": "9.2.0", "react-native-video": "5.2.1", @@ -97,28 +97,29 @@ }, "devDependencies": { "@babel/cli": "7.19.3", - "@babel/core": "7.19.3", + "@babel/core": "7.20.2", "@babel/eslint-parser": "7.19.1", "@babel/plugin-proposal-class-properties": "7.18.6", - "@babel/plugin-proposal-decorators": "7.19.3", + "@babel/plugin-proposal-decorators": "7.20.2", "@babel/plugin-transform-flow-strip-types": "7.19.0", - "@babel/plugin-transform-runtime": "7.19.1", - "@babel/preset-env": "7.19.4", + "@babel/plugin-transform-runtime": "7.19.6", + "@babel/preset-env": "7.20.2", "@babel/preset-typescript": "7.18.6", "@babel/register": "7.18.9", - "@babel/runtime": "7.19.4", - "@react-native-community/eslint-config": "3.1.0", + "@babel/runtime": "7.20.1", + "@react-native-community/eslint-config": "3.2.0", "@testing-library/react-hooks": "8.0.1", - "@testing-library/react-native": "11.3.0", + "@testing-library/react-native": "11.4.0", "@types/base-64": "1.0.0", "@types/commonmark": "0.27.5", "@types/commonmark-react-renderer": "4.3.1", "@types/deep-equal": "1.0.1", - "@types/jest": "29.2.0", - "@types/lodash": "4.14.186", + "@types/jest": "29.2.2", + "@types/lodash": "4.14.188", "@types/mime-db": "1.43.1", - "@types/react": "18.0.21", - "@types/react-native": "0.70.5", + "@types/querystringify": "2.0.0", + "@types/react": "18.0.25", + "@types/react-native": "0.70.6", "@types/react-native-background-timer": "2.0.0", "@types/react-native-button": "3.0.1", "@types/react-native-dotenv": "0.2.0", @@ -126,38 +127,38 @@ "@types/react-native-video": "5.0.14", "@types/react-syntax-highlighter": "15.5.5", "@types/react-test-renderer": "18.0.0", - "@types/readable-stream": "2.3.14", - "@types/semver": "7.3.12", + "@types/readable-stream": "2.3.15", + "@types/semver": "7.3.13", "@types/shallow-equals": "1.0.0", "@types/tinycolor2": "1.4.3", "@types/tough-cookie": "4.0.2", "@types/url-parse": "1.4.8", "@types/uuid": "8.3.4", - "@typescript-eslint/eslint-plugin": "5.40.1", - "@typescript-eslint/parser": "5.40.1", + "@typescript-eslint/eslint-plugin": "5.42.1", + "@typescript-eslint/parser": "5.42.1", "axios": "1.1.3", "axios-cookiejar-support": "4.0.3", - "babel-jest": "29.2.0", - "babel-loader": "8.2.5", + "babel-jest": "29.3.0", + "babel-loader": "9.1.0", "babel-plugin-module-resolver": "4.1.0", "deep-freeze": "0.0.1", - "detox": "19.12.6", - "eslint": "8.25.0", + "detox": "19.13.0", + "eslint": "8.27.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.26.0", - "eslint-plugin-jest": "27.1.2", + "eslint-plugin-jest": "27.1.4", "eslint-plugin-react": "7.31.10", "eslint-plugin-react-hooks": "4.6.0", - "husky": "8.0.1", + "husky": "8.0.2", "isomorphic-fetch": "3.0.0", - "jest": "29.2.0", - "jest-cli": "29.2.0", + "jest": "29.3.0", + "jest-cli": "29.3.0", "jetifier": "2.0.0", - "metro-react-native-babel-preset": "0.73.2", + "metro-react-native-babel-preset": "0.73.3", "mmjstool": "github:mattermost/mattermost-utilities#010f456ea8be5beebafdb8776177cba515c1969e", "mock-async-storage": "2.2.0", "nock": "13.2.9", - "patch-package": "6.4.7", + "patch-package": "6.5.0", "react-devtools-core": "4.26.1", "react-native-svg-transformer": "1.0.0", "react-test-renderer": "18.2.0", diff --git a/patches/@react-native-community+netinfo+9.3.5.patch b/patches/@react-native-community+netinfo+9.3.6.patch similarity index 100% rename from patches/@react-native-community+netinfo+9.3.5.patch rename to patches/@react-native-community+netinfo+9.3.6.patch diff --git a/patches/react-native+0.70.3.patch b/patches/react-native+0.70.5.patch similarity index 100% rename from patches/react-native+0.70.3.patch rename to patches/react-native+0.70.5.patch diff --git a/patches/react-native-device-info+10.2.1.patch b/patches/react-native-device-info+10.3.0.patch similarity index 100% rename from patches/react-native-device-info+10.2.1.patch rename to patches/react-native-device-info+10.3.0.patch diff --git a/patches/react-native-fast-image+8.6.1.patch b/patches/react-native-fast-image+8.6.3.patch similarity index 100% rename from patches/react-native-fast-image+8.6.1.patch rename to patches/react-native-fast-image+8.6.3.patch diff --git a/patches/react-native-navigation+7.29.0.patch b/patches/react-native-navigation+7.30.1.patch similarity index 67% rename from patches/react-native-navigation+7.29.0.patch rename to patches/react-native-navigation+7.30.1.patch index e29c9dd52..e303b90e2 100644 --- a/patches/react-native-navigation+7.29.0.patch +++ b/patches/react-native-navigation+7.30.1.patch @@ -1,80 +1,3 @@ -diff --git a/node_modules/react-native-navigation/ReactNativeNavigation.podspec b/node_modules/react-native-navigation/ReactNativeNavigation.podspec -index fab147d..3c66b80 100644 ---- a/node_modules/react-native-navigation/ReactNativeNavigation.podspec -+++ b/node_modules/react-native-navigation/ReactNativeNavigation.podspec -@@ -17,18 +17,65 @@ Pod::Spec.new do |s| - - s.subspec 'Core' do |ss| - s.source = { :git => "https://github.com/wix/react-native-navigation.git", :tag => "#{s.version}" } -- s.source_files = "lib/ios/**/*.{h,m,mm}" -+ # s.source_files = "lib/ios/**/*.{h,m,mm}" - s.exclude_files = "lib/ios/ReactNativeNavigationTests/**/*.*", "lib/ios/OCMock/**/*.*" - end - -- s.subspec 'Fabric' do |ss| -- ss.xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost-for-react-native\" \"$(PODS_ROOT)/RCT-Folly\"", -- "OTHER_CFLAGS" => "$(inherited) -DRN_FABRIC_ENABLED -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1" } -- ss.dependency 'React-RCTFabric' -- ss.dependency 'React-Fabric' -- ss.dependency 'RCT-Folly/Fabric' -+ reactJson = JSON.parse(File.read(File.join(__dir__, "..", "react-native", "package.json"))) -+ reactVersion = reactJson["version"] -+ rnVersion = reactVersion.split('.')[1] -+ -+ fabric_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1' -+ -+ folly_prefix = "" -+ if rnVersion.to_i >= 64 -+ folly_prefix = "RCT-" -+ end -+ -+ folly_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -DRNVERSION=' + rnVersion -+ folly_compiler_flags = folly_flags + ' ' + '-Wno-comma -Wno-shorten-64-to-32' -+ boost_compiler_flags = '-Wno-documentation' -+ fabric_flags = '' -+ if fabric_enabled -+ fabric_flags = '-DRN_FABRIC_ENABLED -DRCT_NEW_ARCH_ENABLED' -+ end -+ # s.subspec 'Fabric' do |ss| -+ # ss.xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost-for-react-native\" \"$(PODS_ROOT)/RCT-Folly\"", -+ # "OTHER_CFLAGS" => "$(inherited) -DRN_FABRIC_ENABLED -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1" } -+ # ss.dependency 'React-RCTFabric' -+ # ss.dependency 'React-Fabric' -+ # ss.dependency 'RCT-Folly/Fabric' -+ # end -+ s.source_files = [ -+ "lib/ios/**/*.{mm,h,m}", -+ "Common/cpp/**/*.cpp", -+ "Common/cpp/headers/**/*.h" -+ ] -+ -+ s.preserve_paths = [ -+ "Common/cpp/hidden_headers/**" -+ ] -+ -+ s.pod_target_xcconfig = { -+ "USE_HEADERMAP" => "YES", -+ "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_TARGET_SRCROOT)\" \"$(PODS_ROOT)/#{folly_prefix}Folly\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/boost-for-react-native\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/Headers/Private/React-Core\"", -+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++17", -+ } -+ -+ s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags -+ s.xcconfig = { -+ "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/boost-for-react-native\" \"$(PODS_ROOT)/glog\" \"$(PODS_ROOT)/#{folly_prefix}Folly\" \"$(PODS_ROOT)/RCT-Folly\" \"${PODS_ROOT}/Headers/Public/React-hermes\" \"${PODS_ROOT}/Headers/Public/hermes-engine\"", -+ "OTHER_CFLAGS" => "$(inherited)" + " " + folly_flags + " " + fabric_flags } -+ -+ if fabric_enabled -+ s.dependency "React-RCTFabric" -+ s.dependency "React-Codegen" -+ s.dependency "RCT-Folly" -+ else -+ s.dependency "#{folly_prefix}Folly" - end - -+ - s.dependency 'React-Core' - s.dependency 'React-RCTImage' - s.dependency 'React-RCTText' diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java index a34598c..b035a76 100644 --- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java diff --git a/patches/react-native-notifications+4.3.1.patch b/patches/react-native-notifications+4.3.3.patch similarity index 93% rename from patches/react-native-notifications+4.3.1.patch rename to patches/react-native-notifications+4.3.3.patch index 196b2d1a1..78a8b20ee 100644 --- a/patches/react-native-notifications+4.3.1.patch +++ b/patches/react-native-notifications+4.3.3.patch @@ -48,7 +48,7 @@ index 90969b2..3420045 100644 @ReactMethod diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java -index eadf41e..3279431 100644 +index a249c6a..1c9ec28 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java @@ -15,6 +15,7 @@ import com.wix.reactnativenotifications.core.AppLifecycleFacade; @@ -58,8 +58,8 @@ index eadf41e..3279431 100644 +import com.wix.reactnativenotifications.core.ReactAppLifecycleFacade; import com.wix.reactnativenotifications.core.notification.IPushNotification; import com.wix.reactnativenotifications.core.notification.PushNotification; - import com.wix.reactnativenotifications.core.notification.PushNotificationProps; -@@ -67,7 +68,12 @@ public class RNNotificationsPackage implements ReactPackage, AppLifecycleFacade. + import com.wix.reactnativenotifications.core.notificationdrawer.IPushNotificationsDrawer; +@@ -66,7 +67,11 @@ public class RNNotificationsPackage implements ReactPackage, AppLifecycleFacade. @Override public void onActivityStarted(Activity activity) { @@ -68,49 +68,48 @@ index eadf41e..3279431 100644 + if (AppLifecycleFacadeHolder.get() instanceof ReactAppLifecycleFacade) { + isInitialized = AppLifecycleFacadeHolder.get().isReactInitialized(); + } -+ + if (!isInitialized && InitialNotificationHolder.getInstance().get() == null) { callOnOpenedIfNeed(activity); } } -@@ -96,8 +102,7 @@ public class RNNotificationsPackage implements ReactPackage, AppLifecycleFacade. +@@ -95,8 +100,7 @@ public class RNNotificationsPackage implements ReactPackage, AppLifecycleFacade. Intent intent = activity.getIntent(); if (NotificationIntentAdapter.canHandleIntent(intent)) { Context appContext = mApplication.getApplicationContext(); -- Bundle notificationData = NotificationIntentAdapter.cannotHandleTrampolineActivity(appContext) ? -- NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent) : intent.getExtras(); +- Bundle notificationData = NotificationIntentAdapter.canHandleTrampolineActivity(appContext) ? +- intent.getExtras() : NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent); + Bundle notificationData = NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent); final IPushNotification pushNotification = PushNotification.get(appContext, notificationData); if (pushNotification != null) { pushNotification.onOpened(); diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java -index 41b4824..4285ac5 100644 +index 70f609a..4484808 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java @@ -14,17 +14,9 @@ public class NotificationIntentAdapter { @SuppressLint("UnspecifiedImmutableFlag") public static PendingIntent createPendingNotificationIntent(Context appContext, PushNotificationProps notification) { -- if (cannotHandleTrampolineActivity(appContext)) { +- if (canHandleTrampolineActivity(appContext)) { +- Intent intent = new Intent(appContext, ProxyService.class); +- intent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle()); +- return PendingIntent.getService(appContext, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT); +- } else { - Intent mainActivityIntent = appContext.getPackageManager().getLaunchIntentForPackage(appContext.getPackageName()); - mainActivityIntent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle()); - TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(appContext); - taskStackBuilder.addNextIntentWithParentStack(mainActivityIntent); - return taskStackBuilder.getPendingIntent((int) System.currentTimeMillis(), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE); -- } else { -- Intent intent = new Intent(appContext, ProxyService.class); -- intent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle()); -- return PendingIntent.getService(appContext, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT); - } + Intent intent = appContext.getPackageManager().getLaunchIntentForPackage(appContext.getPackageName()); + intent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle()); + return PendingIntent.getActivity(appContext, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE); } - public static boolean cannotHandleTrampolineActivity(Context appContext) { + public static boolean canHandleTrampolineActivity(Context appContext) { diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/helpers/ScheduleNotificationHelper.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/helpers/ScheduleNotificationHelper.java new file mode 100644 -index 0000000..433c754 +index 0000000..3b8818e --- /dev/null +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/helpers/ScheduleNotificationHelper.java @@ -0,0 +1,91 @@ @@ -205,11 +204,12 @@ index 0000000..433c754 + } + } +} +\ No newline at end of file diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/IPushNotification.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/IPushNotification.java -index 0d70024..b9e6c88 100644 +index 0d70024..47b962e 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/IPushNotification.java +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/IPushNotification.java -@@ -26,5 +26,21 @@ public interface IPushNotification { +@@ -26,5 +26,20 @@ public interface IPushNotification { */ int onPostRequest(Integer notificationId); @@ -227,12 +227,11 @@ index 0d70024..b9e6c88 100644 + * @return The ID assigned to the notification. + */ + int onPostScheduledRequest(Integer notificationId); -+ + PushNotificationProps asProps(); } diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java -index 54a5fb8..f38881e 100644 +index eade08d..91d42ee 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java @@ -8,6 +8,10 @@ import android.content.Context; @@ -274,7 +273,7 @@ index 54a5fb8..f38881e 100644 if (!mAppLifecycleFacade.isAppVisible()) { postNotification(null); notifyReceivedBackgroundToJS(); -@@ -70,6 +76,41 @@ public class PushNotification implements IPushNotification { +@@ -70,6 +76,42 @@ public class PushNotification implements IPushNotification { } } @@ -312,11 +311,12 @@ index 54a5fb8..f38881e 100644 + + return postNotification(notificationId); + } ++ + @Override public void onOpened() { digestNotification(); -@@ -140,15 +181,16 @@ public class PushNotification implements IPushNotification { +@@ -140,21 +182,22 @@ public class PushNotification implements IPushNotification { } protected Notification buildNotification(PendingIntent intent) { @@ -337,7 +337,14 @@ index 54a5fb8..f38881e 100644 .setAutoCancel(true); setUpIcon(notification); -@@ -163,7 +205,7 @@ public class PushNotification implements IPushNotification { + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { +- final NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); ++ final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mContext); + String channelId = mNotificationProps.getChannelId(); + NotificationChannel channel = notificationManager.getNotificationChannel(channelId); + notification.setChannelId(channel != null ? channelId : DEFAULT_CHANNEL_ID); +@@ -163,7 +206,7 @@ public class PushNotification implements IPushNotification { return notification; } @@ -346,16 +353,16 @@ index 54a5fb8..f38881e 100644 int iconResId = getAppResourceId("notification_icon", "drawable"); if (iconResId != 0) { notification.setSmallIcon(iconResId); -@@ -174,7 +216,7 @@ public class PushNotification implements IPushNotification { +@@ -174,7 +217,7 @@ public class PushNotification implements IPushNotification { setUpIconColor(notification); } - private void setUpIconColor(Notification.Builder notification) { + private void setUpIconColor(NotificationCompat.Builder notification) { int colorResID = getAppResourceId("colorAccent", "color"); - if (colorResID != 0 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + if (colorResID != 0) { int color = mContext.getResources().getColor(colorResID); -@@ -189,7 +231,7 @@ public class PushNotification implements IPushNotification { +@@ -189,7 +232,7 @@ public class PushNotification implements IPushNotification { } protected void postNotification(int id, Notification notification) { @@ -366,7 +373,7 @@ index 54a5fb8..f38881e 100644 diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotificationPublisher.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotificationPublisher.java new file mode 100644 -index 0000000..58ff887 +index 0000000..5b64593 --- /dev/null +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotificationPublisher.java @@ -0,0 +1,27 @@ @@ -397,8 +404,9 @@ index 0000000..58ff887 + pushNotification.onPostScheduledRequest(notificationId); + } +} +\ No newline at end of file diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java -index a14089f..5238c75 100644 +index a14089f..89590e3 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java @@ -2,9 +2,15 @@ package com.wix.reactnativenotifications.core.notificationdrawer; @@ -436,7 +444,7 @@ index a14089f..5238c75 100644 final NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancelAll(); + cancelAllScheduledNotifications(); -+ } + } + + protected void cancelAllScheduledNotifications() { + Log.i(LOGTAG, "Cancelling all scheduled notifications"); @@ -445,7 +453,7 @@ index a14089f..5238c75 100644 + for (String notificationId : helper.getPreferencesKeys()) { + cancelScheduledNotification(notificationId); + } -+ } ++ } + + protected void cancelScheduledNotification(String notificationId) { + Log.i(LOGTAG, "Cancelling scheduled notification: " + notificationId); @@ -466,7 +474,7 @@ index a14089f..5238c75 100644 + // Remove it from the notification center + final NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); + notificationManager.cancel(Integer.parseInt(notificationId)); - } ++ } } diff --git a/node_modules/react-native-notifications/lib/dist/DTO/Notification.d.ts b/node_modules/react-native-notifications/lib/dist/DTO/Notification.d.ts index 7b2b3b1..3a2f872 100644 @@ -479,10 +487,10 @@ index 7b2b3b1..3a2f872 100644 payload: any; constructor(payload: object); diff --git a/node_modules/react-native-notifications/lib/dist/DTO/Notification.js b/node_modules/react-native-notifications/lib/dist/DTO/Notification.js -index ad7fc1a..a04ec6b 100644 +index 54874f4..a6c55ce 100644 --- a/node_modules/react-native-notifications/lib/dist/DTO/Notification.js +++ b/node_modules/react-native-notifications/lib/dist/DTO/Notification.js -@@ -5,6 +5,7 @@ class Notification { +@@ -7,6 +7,7 @@ class Notification { constructor(payload) { this.payload = payload; this.identifier = this.payload.identifier; diff --git a/patches/react-native-reanimated+2.10.0.patch b/patches/react-native-reanimated+2.12.0.patch similarity index 82% rename from patches/react-native-reanimated+2.10.0.patch rename to patches/react-native-reanimated+2.12.0.patch index 1d1ad487b..d8932e52e 100644 --- a/patches/react-native-reanimated+2.10.0.patch +++ b/patches/react-native-reanimated+2.12.0.patch @@ -1,15 +1,3 @@ -diff --git a/node_modules/react-native-reanimated/android/build.gradle b/node_modules/react-native-reanimated/android/build.gradle -index 6b5e3fc..d419b5e 100644 ---- a/node_modules/react-native-reanimated/android/build.gradle -+++ b/node_modules/react-native-reanimated/android/build.gradle -@@ -301,6 +301,7 @@ android { - "**/libreactnativejni.so", - "**/libjscexecutor.so", - "**/libv8executor.so", -+ "META-INF/MANIFEST.MF", - ] - } - tasks.withType(JavaCompile) { diff --git a/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js b/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js index d8befd8..6357426 100644 --- a/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js @@ -35,7 +23,7 @@ index d8befd8..6357426 100644 export const getAnimatedStyle = (received) => { return getCurrentStyle(received); diff --git a/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx b/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx -index 1cf0c3f..a242e4b 100644 +index 23a65fa..704cb69 100644 --- a/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx +++ b/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx @@ -195,6 +195,7 @@ export default function createAnimatedComponent( @@ -46,7 +34,7 @@ index 1cf0c3f..a242e4b 100644 sv: SharedValue> | null; _propsAnimated?: PropsAnimated; _component: ComponentRef | null = null; -@@ -580,16 +581,33 @@ export default function createAnimatedComponent( +@@ -579,16 +580,33 @@ export default function createAnimatedComponent( _filterNonAnimatedStyle(inputStyle: StyleProps) { const style: StyleProps = {}; diff --git a/patches/react-native-svg+13.4.0.patch b/patches/react-native-svg+13.5.0.patch similarity index 100% rename from patches/react-native-svg+13.4.0.patch rename to patches/react-native-svg+13.5.0.patch diff --git a/test/setup.ts b/test/setup.ts index f19657af8..0ee8bf871 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -128,6 +128,10 @@ jest.doMock('react-native', () => { }, }), }, + WebRTCModule: { + senderGetCapabilities: jest.fn().mockReturnValue(null), + receiverGetCapabilities: jest.fn().mockReturnValue(null), + }, }; const Linking = { @@ -349,7 +353,21 @@ jest.mock('@screens/navigation', () => ({ dismissOverlay: jest.fn(() => Promise.resolve()), })); -jest.mock('@mattermost/react-native-emm'); +jest.mock('@mattermost/react-native-emm', () => ({ + addListener: jest.fn(), + authenticate: async () => { + return true; + }, + getManagedConfig: () => ({} as T), + isDeviceSecured: async () => { + return true; + }, + openSecuritySettings: () => jest.fn(), + setAppGroupId: () => { + return ''; + }, + useManagedConfig: () => ({}), +})); jest.mock('react-native-safe-area-context', () => mockSafeAreaContext); diff --git a/test/test_helper.ts b/test/test_helper.ts index 2e1dff952..f31928fb4 100644 --- a/test/test_helper.ts +++ b/test/test_helper.ts @@ -98,7 +98,6 @@ class TestHelper { }); const systems = await prepareCommonSystemValues(operator, { - config: {} as ClientConfig, license: {} as ClientLicense, currentChannelId: '', currentTeamId: this.basicTeam!.id, diff --git a/types/database/database.ts b/types/database/database.ts index b2ea93aea..24deead0f 100644 --- a/types/database/database.ts +++ b/types/database/database.ts @@ -194,6 +194,11 @@ export type HandleSystemArgs = PrepareOnly & { systems?: IdValue[]; } +export type HandleConfigArgs = PrepareOnly & { + configs: IdValue[]; + configsToDelete: IdValue[]; +} + export type HandleMyChannelArgs = PrepareOnly & { channels?: Channel[]; myChannels?: ChannelMembership[]; diff --git a/types/database/models/servers/config.ts b/types/database/models/servers/config.ts new file mode 100644 index 000000000..64d70529c --- /dev/null +++ b/types/database/models/servers/config.ts @@ -0,0 +1,18 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import type {Model} from '@nozbe/watermelondb'; + +/** + * The Config model is another set of key-value pair combination but this one + * will hold the server configuration. + */ +declare class ConfigModel extends Model { + /** table (name) : Config */ + static table: string; + + /** value : The value for that config/information and whose key will be the id column */ + value: string; +} + +export default ConfigModel; diff --git a/types/database/models/servers/team.ts b/types/database/models/servers/team.ts index 4e8cce42a..7599f0eb4 100644 --- a/types/database/models/servers/team.ts +++ b/types/database/models/servers/team.ts @@ -47,6 +47,9 @@ declare class TeamModel extends Model { /** allowed_domains : List of domains that can join this team */ allowedDomains: string; + /** invite_id : The token id to use in invites to the team */ + inviteId: string; + /** categories : All the categories associated with this team */ categories: Query;