diff --git a/android/app/build.gradle b/android/app/build.gradle index b135678b06..a2e3195a22 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -206,6 +206,10 @@ dependencies { } implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2' + implementation 'io.reactivex.rxjava3:rxjava:3.1.6' + implementation 'io.reactivex.rxjava3:rxandroid:3.0.2' + implementation 'androidx.window:window-rxjava3:1.0.0' + implementation 'androidx.window:window:1.0.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' diff --git a/android/app/src/main/java/com/mattermost/rnbeta/FoldableObserver.kt b/android/app/src/main/java/com/mattermost/rnbeta/FoldableObserver.kt new file mode 100644 index 0000000000..dee8c46d59 --- /dev/null +++ b/android/app/src/main/java/com/mattermost/rnbeta/FoldableObserver.kt @@ -0,0 +1,58 @@ +package com.mattermost.rnbeta + +import android.app.Activity +import androidx.window.layout.FoldingFeature +import androidx.window.layout.WindowInfoTracker +import androidx.window.layout.WindowLayoutInfo +import androidx.window.rxjava3.layout.windowLayoutInfoObservable +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.disposables.Disposable + +class FoldableObserver(private val activity: Activity) { + private var disposable: Disposable? = null + private lateinit var observable: Observable + + public fun onCreate() { + observable = WindowInfoTracker.getOrCreate(activity) + .windowLayoutInfoObservable(activity) + } + + public fun onStart() { + if (disposable?.isDisposed == true) { + onCreate() + } + disposable = observable.observeOn(AndroidSchedulers.mainThread()) + .subscribe { layoutInfo -> + val splitViewModule = SplitViewModule.getInstance() + val foldingFeature = layoutInfo.displayFeatures + .filterIsInstance() + .firstOrNull() + when { + foldingFeature?.state === FoldingFeature.State.FLAT -> + splitViewModule?.setDeviceFolded(false) + isTableTopPosture(foldingFeature) -> + splitViewModule?.setDeviceFolded(false) + isBookPosture(foldingFeature) -> + splitViewModule?.setDeviceFolded(false) + else -> { + splitViewModule?.setDeviceFolded(true) + } + } + } + } + + public fun onStop() { + disposable?.dispose() + } + + private fun isTableTopPosture(foldFeature : FoldingFeature?) : Boolean { + return foldFeature?.state == FoldingFeature.State.HALF_OPENED && + foldFeature.orientation == FoldingFeature.Orientation.HORIZONTAL + } + + private fun isBookPosture(foldFeature : FoldingFeature?) : Boolean { + return foldFeature?.state == FoldingFeature.State.HALF_OPENED && + foldFeature.orientation == FoldingFeature.Orientation.VERTICAL + } +} diff --git a/android/app/src/main/java/com/mattermost/rnbeta/MainActivity.java b/android/app/src/main/java/com/mattermost/rnbeta/MainActivity.java index 1a2772b09a..87fa0a8d3e 100644 --- a/android/app/src/main/java/com/mattermost/rnbeta/MainActivity.java +++ b/android/app/src/main/java/com/mattermost/rnbeta/MainActivity.java @@ -12,9 +12,9 @@ import com.github.emilioicai.hwkeyboardevent.HWKeyboardEventModule; import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; import com.facebook.react.defaults.DefaultReactActivityDelegate; - public class MainActivity extends NavigationActivity { private boolean HWKeyboardConnected = false; + private FoldableObserver foldableObserver = new FoldableObserver(this); @Override protected String getMainComponentName() { @@ -43,6 +43,19 @@ public class MainActivity extends NavigationActivity { super.onCreate(null); setContentView(R.layout.launch_screen); setHWKeyboardConnected(); + foldableObserver.onCreate(); + } + + @Override + protected void onStart() { + super.onStart(); + foldableObserver.onStart(); + } + + @Override + protected void onStop() { + super.onStop(); + foldableObserver.onStop(); } @Override diff --git a/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java b/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java index 6892c087f6..cd817a0e80 100644 --- a/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java +++ b/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java @@ -1,7 +1,9 @@ package com.mattermost.rnbeta; + import android.content.Context; import android.os.Bundle; import android.util.Log; + import java.io.File; import java.util.Collections; import java.util.HashMap; @@ -42,7 +44,6 @@ public class MainApplication extends NavigationApplication implements INotificat public static MainApplication instance; public Boolean sharedExtensionIsOpened = false; - private final ReactNativeHost mReactNativeHost = new DefaultReactNativeHost(this) { @Override @@ -69,6 +70,8 @@ public class MainApplication extends NavigationApplication implements INotificat return ShareModule.getInstance(reactContext); case "Notifications": return NotificationsModule.getInstance(instance, reactContext); + case "SplitView": + return SplitViewModule.Companion.getInstance(reactContext); default: throw new IllegalArgumentException("Could not find module " + name); } @@ -81,6 +84,7 @@ public class MainApplication extends NavigationApplication implements INotificat map.put("MattermostManaged", new ReactModuleInfo("MattermostManaged", "com.mattermost.rnbeta.MattermostManagedModule", false, false, false, false, false)); map.put("MattermostShare", new ReactModuleInfo("MattermostShare", "com.mattermost.share.ShareModule", false, false, true, false, false)); map.put("Notifications", new ReactModuleInfo("Notifications", "com.mattermost.rnbeta.NotificationsModule", false, false, false, false, false)); + map.put("SplitView", new ReactModuleInfo("SplitView", "com.mattermost.rnbeta.SplitViewModule", false, false, false, false, false)); return map; }; } diff --git a/android/app/src/main/java/com/mattermost/rnbeta/MattermostManagedModule.java b/android/app/src/main/java/com/mattermost/rnbeta/MattermostManagedModule.java index 30c7fb2861..8b793c3dba 100644 --- a/android/app/src/main/java/com/mattermost/rnbeta/MattermostManagedModule.java +++ b/android/app/src/main/java/com/mattermost/rnbeta/MattermostManagedModule.java @@ -133,19 +133,6 @@ public class MattermostManagedModule extends ReactContextBaseJavaModule { promise.resolve(map); } - @ReactMethod - public void isRunningInSplitView(final Promise promise) { - WritableMap result = Arguments.createMap(); - Activity current = getCurrentActivity(); - if (current != null) { - result.putBoolean("isSplitView", current.isInMultiWindowMode()); - } else { - result.putBoolean("isSplitView", false); - } - - promise.resolve(result); - } - @ReactMethod public void saveFile(String path, final Promise promise) { Uri contentUri; diff --git a/android/app/src/main/java/com/mattermost/rnbeta/SplitViewModule.kt b/android/app/src/main/java/com/mattermost/rnbeta/SplitViewModule.kt new file mode 100644 index 0000000000..a42a61792a --- /dev/null +++ b/android/app/src/main/java/com/mattermost/rnbeta/SplitViewModule.kt @@ -0,0 +1,73 @@ +package com.mattermost.rnbeta + +import com.facebook.react.bridge.* +import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter +import com.learnium.RNDeviceInfo.resolver.DeviceTypeResolver + +class SplitViewModule(private var reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { + private var isDeviceFolded: Boolean = false + private var listenerCount = 0 + + companion object { + private var instance: SplitViewModule? = null + + fun getInstance(reactContext: ReactApplicationContext): SplitViewModule { + if (instance == null) { + instance = SplitViewModule(reactContext) + } else { + instance!!.reactContext = reactContext + } + + return instance!! + } + + fun getInstance(): SplitViewModule? { + return instance + } + } + + + override fun getName() = "SplitView" + + fun sendEvent(eventName: String, + params: WritableMap?) { + reactContext + .getJSModule(RCTDeviceEventEmitter::class.java) + .emit(eventName, params) + } + + private fun getSplitViewResults(folded: Boolean) : WritableMap? { + if (currentActivity != null) { + val deviceResolver = DeviceTypeResolver(this.reactContext) + val map = Arguments.createMap() + map.putBoolean("isSplitView", currentActivity!!.isInMultiWindowMode || folded) + map.putBoolean("isTablet", deviceResolver.isTablet) + return map + } + + return null + } + + fun setDeviceFolded(folded: Boolean) { + val map = getSplitViewResults(folded) + if (listenerCount > 0 && isDeviceFolded != folded) { + sendEvent("SplitViewChanged", map) + } + isDeviceFolded = folded + } + + @ReactMethod + fun isRunningInSplitView(promise: Promise) { + promise.resolve(getSplitViewResults(isDeviceFolded)) + } + + @ReactMethod + fun addListener(eventName: String) { + listenerCount += 1 + } + + @ReactMethod + fun removeListeners(count: Int) { + listenerCount -= count + } +} diff --git a/app/constants/device.ts b/app/constants/device.ts index a3dde7d87b..2e06d7b86f 100644 --- a/app/constants/device.ts +++ b/app/constants/device.ts @@ -1,13 +1,12 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {Platform} from 'react-native'; import DeviceInfo from 'react-native-device-info'; import FileSystem from 'react-native-fs'; export default { DOCUMENTS_PATH: `${FileSystem.CachesDirectoryPath}/Documents`, - IS_TABLET: Platform.select({android: false, default: DeviceInfo.isTablet()}), + IS_TABLET: DeviceInfo.isTablet(), PUSH_NOTIFY_ANDROID_REACT_NATIVE: 'android_rn', PUSH_NOTIFY_APPLE_REACT_NATIVE: 'apple_rn', }; diff --git a/app/hooks/device.ts b/app/hooks/device.ts index 0c6b29da7d..a90c99195e 100644 --- a/app/hooks/device.ts +++ b/app/hooks/device.ts @@ -2,27 +2,36 @@ // See LICENSE.txt for license information. import React, {RefObject, useEffect, useRef, useState} from 'react'; -import {AppState, Keyboard, NativeModules, Platform, useWindowDimensions, View} from 'react-native'; +import {AppState, Keyboard, NativeEventEmitter, NativeModules, Platform, View} from 'react-native'; import {useSafeAreaInsets} from 'react-native-safe-area-context'; import {Device} from '@constants'; import type {KeyboardTrackingViewRef} from 'react-native-keyboard-tracking-view'; -const {MattermostManaged} = NativeModules; -const isRunningInSplitView = MattermostManaged.isRunningInSplitView; +const {SplitView} = NativeModules; +const {isRunningInSplitView} = SplitView; +const emitter = new NativeEventEmitter(SplitView); export function useSplitView() { const [isSplitView, setIsSplitView] = useState(false); - const dimensions = useWindowDimensions(); useEffect(() => { if (Device.IS_TABLET) { - isRunningInSplitView().then((result: {isSplitView: boolean}) => { - setIsSplitView(result.isSplitView); + isRunningInSplitView().then((result: SplitViewResult) => { + if (result.isSplitView != null) { + setIsSplitView(result.isSplitView); + } }); } - }, [dimensions]); + const listener = emitter.addListener('SplitViewChanged', (result: SplitViewResult) => { + if (result.isSplitView != null) { + setIsSplitView(result.isSplitView); + } + }); + + return () => listener.remove(); + }, []); return isSplitView; } diff --git a/app/managers/global_event_handler.ts b/app/managers/global_event_handler.ts index 30f1f78b2a..e743c7be75 100644 --- a/app/managers/global_event_handler.ts +++ b/app/managers/global_event_handler.ts @@ -1,18 +1,24 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {Alert, DeviceEventEmitter, Linking} from 'react-native'; +import {Alert, DeviceEventEmitter, Linking, NativeEventEmitter, NativeModules} from 'react-native'; import RNLocalize from 'react-native-localize'; import semver from 'semver'; +import {switchToChannelById} from '@actions/remote/channel'; import {autoUpdateTimezone} from '@actions/remote/user'; import LocalConfig from '@assets/config.json'; -import {Events, Sso} from '@constants'; +import {Device, Events, Sso} from '@constants'; import {MIN_REQUIRED_VERSION} from '@constants/supported_server'; +import DatabaseManager from '@database/manager'; import {DEFAULT_LOCALE, getTranslations, t} from '@i18n'; import {getServerCredentials} from '@init/credentials'; import * as analytics from '@managers/analytics'; -import {getAllServers} from '@queries/app/servers'; +import {getAllServers, getActiveServerUrl} from '@queries/app/servers'; +import {queryTeamDefaultChannel} from '@queries/servers/channel'; +import {getCommonSystemValues} from '@queries/servers/system'; +import {getTeamChannelHistory} from '@queries/servers/team'; +import {setScreensOrientation} from '@screens/navigation'; import {handleDeepLink} from '@utils/deep_link'; import {logError} from '@utils/log'; @@ -20,6 +26,9 @@ import type {jsAndNativeErrorHandler} from '@typings/global/error_handling'; type LinkingCallbackArg = {url: string}; +const {SplitView} = NativeModules; +const splitViewEmitter = new NativeEventEmitter(SplitView); + class GlobalEventHandler { JavascriptAndNativeErrorHandler: jsAndNativeErrorHandler | undefined; @@ -39,6 +48,7 @@ class GlobalEventHandler { } }); + splitViewEmitter.addListener('SplitViewChanged', this.onSplitViewChanged); Linking.addEventListener('url', this.onDeepLink); } @@ -93,6 +103,38 @@ class GlobalEventHandler { } }; + onSplitViewChanged = async (result: SplitViewResult) => { + if (result.isTablet != null && Device.IS_TABLET !== result.isTablet) { + Device.IS_TABLET = result.isTablet; + const serverUrl = await getActiveServerUrl(); + if (serverUrl && result.isTablet) { + try { + const {database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); + const {currentChannelId, currentTeamId} = await getCommonSystemValues(database); + if (currentTeamId && !currentChannelId) { + let channelId = ''; + const teamChannelHistory = await getTeamChannelHistory(database, currentTeamId); + if (teamChannelHistory.length) { + channelId = teamChannelHistory[0]; + } else { + const defaultChannel = await queryTeamDefaultChannel(database, currentTeamId).fetch(); + if (defaultChannel.length) { + channelId = defaultChannel[0].id; + } + } + + if (channelId) { + switchToChannelById(serverUrl, channelId); + } + } + } catch { + // do nothing, the UI will not show a channel but that is fixed when the user picks one. + } + } + setScreensOrientation(result.isTablet); + } + }; + serverUpgradeNeeded = async (serverUrl: string) => { const credentials = await getServerCredentials(serverUrl); 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 1cc2096745..0e9d9a4a03 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 @@ -15,7 +15,7 @@ import CompassIcon from '@components/compass_icon'; import {Screens} from '@constants'; import {CURRENT_CALL_BAR_HEIGHT} from '@constants/view'; import {useTheme} from '@context/theme'; -import {dismissAllModalsAndPopToScreen} from '@screens/navigation'; +import {allOrientations, dismissAllModalsAndPopToScreen} from '@screens/navigation'; import {makeStyleSheetFromTheme} from '@utils/theme'; import {displayUsername} from '@utils/user'; @@ -105,7 +105,7 @@ const CurrentCallBar = ({ layout: { backgroundColor: '#000', componentBackgroundColor: '#000', - orientation: ['portrait', 'landscape'], + orientation: allOrientations, }, topBar: { background: { diff --git a/app/products/calls/screens/call_screen/call_screen.tsx b/app/products/calls/screens/call_screen/call_screen.tsx index b1d0d47d60..6fc1128490 100644 --- a/app/products/calls/screens/call_screen/call_screen.tsx +++ b/app/products/calls/screens/call_screen/call_screen.tsx @@ -40,12 +40,14 @@ import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; import DatabaseManager from '@database/manager'; import useAndroidHardwareBackHandler from '@hooks/android_back_handler'; +import {useIsTablet} from '@hooks/device'; import { bottomSheet, dismissAllModalsAndPopToScreen, dismissBottomSheet, goToScreen, popTopScreen, + setScreensOrientation, } from '@screens/navigation'; import NavigationStore from '@store/navigation_store'; import {bottomSheetSnapPoint} from '@utils/helpers'; @@ -261,6 +263,7 @@ const CallScreen = ({ const theme = useTheme(); const {bottom} = useSafeAreaInsets(); const {width, height} = useWindowDimensions(); + const isTablet = useIsTablet(); const serverUrl = useServerUrl(); const {EnableRecordings} = useCallsConfig(serverUrl); usePermissionsChecker(micPermissionsGranted); @@ -432,6 +435,16 @@ const CallScreen = ({ return () => listener.remove(); }, []); + useEffect(() => { + const didDismissListener = Navigation.events().registerComponentDidDisappearListener(async ({componentId: screen}) => { + if (componentId === screen) { + setScreensOrientation(isTablet); + } + }); + + return () => didDismissListener.remove(); + }, [isTablet]); + if (!currentCall || !myParticipant) { // Note: this happens because the screen is "rendered", even after the screen has been popped, and the // currentCall will have already been set to null when those extra renders run. We probably don't ever need diff --git a/app/queries/servers/channel.ts b/app/queries/servers/channel.ts index e27eaf98df..3e04b0aba6 100644 --- a/app/queries/servers/channel.ts +++ b/app/queries/servers/channel.ts @@ -187,7 +187,7 @@ export const queryAllMyChannel = (database: Database) => { }; export const queryAllMyChannelsForTeam = (database: Database, teamId: string) => { - return database.get(MY_CHANNEL).query( + return database.get(MY_CHANNEL).query( Q.on(CHANNEL, Q.where('team_id', Q.oneOf([teamId, '']))), ); }; diff --git a/app/screens/gallery/index.tsx b/app/screens/gallery/index.tsx index 6cc1ef0f0d..a433467699 100644 --- a/app/screens/gallery/index.tsx +++ b/app/screens/gallery/index.tsx @@ -3,12 +3,11 @@ import React, {useCallback, useMemo, useRef, useState} from 'react'; import {NativeModules, useWindowDimensions, Platform} from 'react-native'; -import {Navigation} from 'react-native-navigation'; import useAndroidHardwareBackHandler from '@hooks/android_back_handler'; import {useIsTablet} from '@hooks/device'; import {useGalleryControls} from '@hooks/gallery'; -import {dismissOverlay} from '@screens/navigation'; +import {dismissOverlay, setScreensOrientation} from '@screens/navigation'; import {freezeOtherScreens} from '@utils/gallery'; import Footer from './footer'; @@ -46,14 +45,10 @@ const GalleryScreen = ({componentId, galleryIdentifier, hideActions, initialInde }, []); const close = useCallback(() => { + setScreensOrientation(isTablet); if (Platform.OS === 'ios' && !isTablet) { // We need both the navigation & the module - Navigation.setDefaultOptions({ - layout: { - orientation: ['portrait'], - }, - }); - NativeModules.MattermostManaged.lockPortrait(); + NativeModules.SplitView.lockPortrait(); } freezeOtherScreens(false); requestAnimationFrame(async () => { diff --git a/app/screens/home/channel_list/categories_list/__snapshots__/index.test.tsx.snap b/app/screens/home/channel_list/categories_list/__snapshots__/index.test.tsx.snap index 5abfa64941..0c36ae6be6 100644 --- a/app/screens/home/channel_list/categories_list/__snapshots__/index.test.tsx.snap +++ b/app/screens/home/channel_list/categories_list/__snapshots__/index.test.tsx.snap @@ -5,7 +5,7 @@ exports[`components/categories_list should render channels error 1`] = ` animatedStyle={ { "value": { - "maxWidth": "100%", + "maxWidth": 750, }, } } @@ -14,7 +14,7 @@ exports[`components/categories_list should render channels error 1`] = ` { "backgroundColor": "#1e325c", "flex": 1, - "maxWidth": "100%", + "maxWidth": 750, "paddingLeft": 18, "paddingRight": 20, "paddingTop": 10, @@ -340,7 +340,7 @@ exports[`components/categories_list should render team error 1`] = ` animatedStyle={ { "value": { - "maxWidth": "100%", + "maxWidth": 750, }, } } @@ -349,7 +349,7 @@ exports[`components/categories_list should render team error 1`] = ` { "backgroundColor": "#1e325c", "flex": 1, - "maxWidth": "100%", + "maxWidth": 750, "paddingLeft": 18, "paddingRight": 20, "paddingTop": 10, diff --git a/app/screens/home/channel_list/categories_list/categories/categories.test.tsx b/app/screens/home/channel_list/categories_list/categories/categories.test.tsx index 630c439b73..851539b13e 100644 --- a/app/screens/home/channel_list/categories_list/categories/categories.test.tsx +++ b/app/screens/home/channel_list/categories_list/categories/categories.test.tsx @@ -2,7 +2,6 @@ // See LICENSE.txt for license information. import React from 'react'; -import {act} from 'react-test-renderer'; import {renderWithEverything} from '@test/intl-test-helper'; import TestHelper from '@test/test_helper'; @@ -19,15 +18,11 @@ describe('components/channel_list/categories', () => { }); it('render without error', () => { - jest.useFakeTimers(); const wrapper = renderWithEverything( , {database}, ); - act(() => jest.runAllTimers()); - expect(wrapper.toJSON()).toBeTruthy(); - jest.useRealTimers(); }); }); diff --git a/app/screens/home/channel_list/categories_list/categories/categories.tsx b/app/screens/home/channel_list/categories_list/categories/categories.tsx index a27043dc7f..a347b35aee 100644 --- a/app/screens/home/channel_list/categories_list/categories/categories.tsx +++ b/app/screens/home/channel_list/categories_list/categories/categories.tsx @@ -46,7 +46,19 @@ const Categories = ({categories, onlyUnreads, unreadsOnTop}: Props) => { const isTablet = useIsTablet(); const switchingTeam = useTeamSwitch(); const teamId = categories[0]?.teamId; - const [initiaLoad, setInitialLoad] = useState(true); + const categoriesToShow = useMemo(() => { + if (onlyUnreads && !unreadsOnTop) { + return ['UNREADS' as const]; + } + const orderedCategories = [...categories]; + orderedCategories.sort((a, b) => a.sortOrder - b.sortOrder); + if (unreadsOnTop) { + return ['UNREADS' as const, ...orderedCategories]; + } + return orderedCategories; + }, [categories, onlyUnreads, unreadsOnTop]); + + const [initiaLoad, setInitialLoad] = useState(!categoriesToShow.length); const onChannelSwitch = useCallback(async (channelId: string) => { switchToChannelById(serverUrl, channelId); @@ -76,18 +88,6 @@ const Categories = ({categories, onlyUnreads, unreadsOnTop}: Props) => { ); }, [teamId, intl.locale, isTablet, onChannelSwitch, onlyUnreads]); - const categoriesToShow = useMemo(() => { - if (onlyUnreads && !unreadsOnTop) { - return ['UNREADS' as const]; - } - const orderedCategories = [...categories]; - orderedCategories.sort((a, b) => a.sortOrder - b.sortOrder); - if (unreadsOnTop) { - return ['UNREADS' as const, ...orderedCategories]; - } - return orderedCategories; - }, [categories, onlyUnreads, unreadsOnTop]); - useEffect(() => { const t = setTimeout(() => { setInitialLoad(false); diff --git a/app/screens/home/channel_list/categories_list/index.test.tsx b/app/screens/home/channel_list/categories_list/index.test.tsx index e6d8f3586a..77bfff1555 100644 --- a/app/screens/home/channel_list/categories_list/index.test.tsx +++ b/app/screens/home/channel_list/categories_list/index.test.tsx @@ -33,7 +33,6 @@ describe('components/categories_list', () => { it('should render', () => { const wrapper = renderWithEverything( , @@ -47,7 +46,6 @@ describe('components/categories_list', () => { const wrapper = renderWithEverything( , @@ -69,7 +67,6 @@ describe('components/categories_list', () => { jest.useFakeTimers(); const wrapper = renderWithEverything( , @@ -92,7 +89,6 @@ describe('components/categories_list', () => { jest.useFakeTimers(); const wrapper = renderWithEverything( , diff --git a/app/screens/home/channel_list/categories_list/index.tsx b/app/screens/home/channel_list/categories_list/index.tsx index 409c31f99e..d2eb97ca91 100644 --- a/app/screens/home/channel_list/categories_list/index.tsx +++ b/app/screens/home/channel_list/categories_list/index.tsx @@ -2,11 +2,13 @@ // See LICENSE.txt for license information. import React, {useEffect} from 'react'; +import {useWindowDimensions} from 'react-native'; import Animated, {useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'; import ThreadsButton from '@components/threads_button'; import {TABLET_SIDEBAR_WIDTH, TEAM_SIDEBAR_WIDTH} from '@constants/view'; import {useTheme} from '@context/theme'; +import {useIsTablet} from '@hooks/device'; import {makeStyleSheetFromTheme} from '@utils/theme'; import Categories from './categories'; @@ -28,7 +30,6 @@ type ChannelListProps = { channelsCount: number; iconPad?: boolean; isCRTEnabled?: boolean; - isTablet: boolean; teamsCount: number; }; @@ -36,9 +37,11 @@ const getTabletWidth = (teamsCount: number) => { return TABLET_SIDEBAR_WIDTH - (teamsCount > 1 ? TEAM_SIDEBAR_WIDTH : 0); }; -const CategoriesList = ({channelsCount, iconPad, isCRTEnabled, isTablet, teamsCount}: ChannelListProps) => { +const CategoriesList = ({channelsCount, iconPad, isCRTEnabled, teamsCount}: ChannelListProps) => { const theme = useTheme(); const styles = getStyleSheet(theme); + const {width} = useWindowDimensions(); + const isTablet = useIsTablet(); const tabletWidth = useSharedValue(isTablet ? getTabletWidth(teamsCount) : 0); useEffect(() => { @@ -50,12 +53,12 @@ const CategoriesList = ({channelsCount, iconPad, isCRTEnabled, isTablet, teamsCo const tabletStyle = useAnimatedStyle(() => { if (!isTablet) { return { - maxWidth: '100%', + maxWidth: width, }; } return {maxWidth: withTiming(tabletWidth.value, {duration: 350})}; - }, [isTablet]); + }, [isTablet, width]); let content; diff --git a/app/screens/home/channel_list/channel_list.tsx b/app/screens/home/channel_list/channel_list.tsx index 8bce92d23b..0cf61900cf 100644 --- a/app/screens/home/channel_list/channel_list.tsx +++ b/app/screens/home/channel_list/channel_list.tsx @@ -183,7 +183,6 @@ const ChannelListScreen = (props: ChannelProps) => { diff --git a/app/screens/navigation.ts b/app/screens/navigation.ts index ed23cffa2d..58c73e01ee 100644 --- a/app/screens/navigation.ts +++ b/app/screens/navigation.ts @@ -5,7 +5,7 @@ import merge from 'deepmerge'; import {Appearance, DeviceEventEmitter, NativeModules, StatusBar, Platform, Alert} from 'react-native'; -import {ComponentWillAppearEvent, ImageResource, Navigation, Options, OptionsModalPresentationStyle, OptionsTopBarButton, ScreenPoppedEvent} from 'react-native-navigation'; +import {ComponentWillAppearEvent, ImageResource, LayoutOrientation, Navigation, Options, OptionsModalPresentationStyle, OptionsTopBarButton, ScreenPoppedEvent} from 'react-native-navigation'; import tinyColor from 'tinycolor2'; import CompassIcon from '@components/compass_icon'; @@ -21,8 +21,8 @@ import type {BottomSheetFooterProps} from '@gorhom/bottom-sheet'; import type {LaunchProps} from '@typings/launch'; import type {AvailableScreens, NavButtons} from '@typings/screens/navigation'; -const {MattermostManaged} = NativeModules; -const isRunningInSplitView = MattermostManaged.isRunningInSplitView; +const {SplitView} = NativeModules; +const {isRunningInSplitView} = SplitView; const alpha = { from: 0, @@ -30,6 +30,9 @@ const alpha = { duration: 150, }; +export const allOrientations: LayoutOrientation[] = ['sensor', 'sensorLandscape', 'sensorPortrait', 'landscape', 'portrait']; +export const portraitOrientation: LayoutOrientation[] = ['portrait']; + export function registerNavigationListeners() { Navigation.events().registerScreenPoppedListener(onPoppedListener); Navigation.events().registerCommandListener(onCommandListener); @@ -185,7 +188,7 @@ Navigation.setDefaultOptions({ }, }, layout: { - orientation: Device.IS_TABLET ? undefined : ['portrait'], + orientation: Device.IS_TABLET ? allOrientations : portraitOrientation, }, topBar: { title: { @@ -218,6 +221,19 @@ Appearance.addChangeListener(() => { } }); +export function setScreensOrientation(allowRotation: boolean) { + const options: Options = { + layout: { + orientation: allowRotation ? allOrientations : portraitOrientation, + }, + }; + Navigation.setDefaultOptions(options); + const screens = NavigationStore.getScreensInStack(); + for (const s of screens) { + Navigation.mergeOptions(s, options); + } +} + export function getThemeFromState(): Theme { return EphemeralStore.theme || getDefaultThemeByAppearance(); } diff --git a/app/utils/gallery/index.ts b/app/utils/gallery/index.ts index 94f04f662d..41a931d6f1 100644 --- a/app/utils/gallery/index.ts +++ b/app/utils/gallery/index.ts @@ -7,7 +7,7 @@ import {Navigation, Options, OptionsLayout} from 'react-native-navigation'; import {measure} from 'react-native-reanimated'; import {Events, Screens} from '@constants'; -import {showOverlay} from '@screens/navigation'; +import {allOrientations, showOverlay} from '@screens/navigation'; import {isImage, isVideo} from '@utils/file'; import {generateId} from '@utils/general'; @@ -127,7 +127,7 @@ export function openGalleryAtIndex(galleryIdentifier: string, initialIndex: numb items, }; const layout: OptionsLayout = { - orientation: ['portrait', 'landscape'], + orientation: allOrientations, }; const options: Options = { layout, @@ -155,7 +155,7 @@ export function openGalleryAtIndex(galleryIdentifier: string, initialIndex: numb if (Platform.OS === 'ios') { // on iOS we need both the navigation & the module Navigation.setDefaultOptions({layout}); - NativeModules.MattermostManaged.unlockOrientation(); + NativeModules.SplitView.unlockOrientation(); } showOverlay(Screens.GALLERY, props, options); diff --git a/app/utils/helpers.ts b/app/utils/helpers.ts index 82031fd198..3201bfcb04 100644 --- a/app/utils/helpers.ts +++ b/app/utils/helpers.ts @@ -8,8 +8,8 @@ import {Device} from '@constants'; import {CUSTOM_STATUS_TIME_PICKER_INTERVALS_IN_MINUTES} from '@constants/custom_status'; import {STATUS_BAR_HEIGHT} from '@constants/view'; -const {MattermostManaged} = NativeModules; -const isRunningInSplitView = MattermostManaged.isRunningInSplitView; +const {SplitView} = NativeModules; +const {isRunningInSplitView} = SplitView; const ShareModule: NativeShareExtension|undefined = Platform.select({android: NativeModules.MattermostShare}); // isMinimumServerVersion will return true if currentVersion is equal to higher or than diff --git a/ios/Mattermost.xcodeproj/project.pbxproj b/ios/Mattermost.xcodeproj/project.pbxproj index 638d652ec1..cdefa8d91c 100644 --- a/ios/Mattermost.xcodeproj/project.pbxproj +++ b/ios/Mattermost.xcodeproj/project.pbxproj @@ -31,6 +31,8 @@ 7F537B2928A517580086D6B3 /* NotificationHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F537B2828A517580086D6B3 /* NotificationHelper.swift */; }; 7F581D35221ED5C60099E66B /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F581D34221ED5C60099E66B /* NotificationService.swift */; }; 7F581D39221ED5C60099E66B /* NotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 7F581D32221ED5C60099E66B /* NotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 7F59882B29827F2200C8C108 /* SplitViewModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F59882A29827F2200C8C108 /* SplitViewModule.swift */; }; + 7F59882E2982850000C8C108 /* SplitViewModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F59882D2982850000C8C108 /* SplitViewModule.m */; }; 7F7E9F462864E6C60064BFAF /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F7E9F442864E6C60064BFAF /* Color.swift */; }; 7F7E9F472864E6C60064BFAF /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F7E9F452864E6C60064BFAF /* View.swift */; }; 7F7E9F4C2864E6EC0064BFAF /* AttachmentModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F7E9F492864E6EB0064BFAF /* AttachmentModel.swift */; }; @@ -196,6 +198,8 @@ 7F581D34221ED5C60099E66B /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; 7F581D36221ED5C60099E66B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 7F581F77221EEA5A0099E66B /* NotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationService.entitlements; sourceTree = ""; }; + 7F59882A29827F2200C8C108 /* SplitViewModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SplitViewModule.swift; path = Mattermost/Modules/SplitViewModule.swift; sourceTree = ""; }; + 7F59882D2982850000C8C108 /* SplitViewModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SplitViewModule.m; path = Mattermost/Modules/SplitViewModule.m; sourceTree = ""; }; 7F63D2C21E6DD98A001FAE12 /* Mattermost.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = Mattermost.entitlements; path = Mattermost/Mattermost.entitlements; sourceTree = ""; }; 7F7E9F442864E6C60064BFAF /* Color.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Color.swift; sourceTree = ""; }; 7F7E9F452864E6C60064BFAF /* View.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = View.swift; sourceTree = ""; }; @@ -465,6 +469,8 @@ 7FEB109A1F61019C0039A015 /* MattermostManaged.m */, 7FEC870428A44A7B00DE96CB /* NotificationsModule.h */, 7FEC870028A4325D00DE96CB /* NotificationsModule.m */, + 7F59882A29827F2200C8C108 /* SplitViewModule.swift */, + 7F59882D2982850000C8C108 /* SplitViewModule.m */, ); name = Modules; sourceTree = ""; @@ -800,8 +806,8 @@ ); mainGroup = 83CBB9F61A601CBA00E9B192; packageReferences = ( - 7FD4822A2864D73300A5B18B /* XCRemoteSwiftPackageReference "OpenGraph.git" */, - 27C667A129523ECA00E590D5 /* XCRemoteSwiftPackageReference "sentry-cocoa.git" */, + 7FD4822A2864D73300A5B18B /* XCRemoteSwiftPackageReference "OpenGraph" */, + 27C667A129523ECA00E590D5 /* XCRemoteSwiftPackageReference "sentry-cocoa" */, ); productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; projectDirPath = ""; @@ -1008,12 +1014,14 @@ buildActionMask = 2147483647; files = ( 7FEC870128A4325D00DE96CB /* NotificationsModule.m in Sources */, + 7F59882E2982850000C8C108 /* SplitViewModule.m in Sources */, 7F1EB88527FDE361002E7EEC /* GekidouWrapper.swift in Sources */, 7FCEFB9326B7934F006DC1DE /* SDWebImageDownloaderOperation+Swizzle.m in Sources */, 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 7F151D3E221B062700FAD8F3 /* RuntimeUtils.swift in Sources */, 7F537B2928A517580086D6B3 /* NotificationHelper.swift in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, + 7F59882B29827F2200C8C108 /* SplitViewModule.swift in Sources */, 7FEB109D1F61019C0039A015 /* MattermostManaged.m in Sources */, 536CC6C323E79287002C478C /* RNNotificationEventHandler+HandleReplyAction.m in Sources */, ); @@ -1523,7 +1531,7 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 27C667A129523ECA00E590D5 /* XCRemoteSwiftPackageReference "sentry-cocoa.git" */ = { + 27C667A129523ECA00E590D5 /* XCRemoteSwiftPackageReference "sentry-cocoa" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/getsentry/sentry-cocoa.git"; requirement = { @@ -1531,7 +1539,7 @@ kind = branch; }; }; - 7FD4822A2864D73300A5B18B /* XCRemoteSwiftPackageReference "OpenGraph.git" */ = { + 7FD4822A2864D73300A5B18B /* XCRemoteSwiftPackageReference "OpenGraph" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/satoshi-takano/OpenGraph.git"; requirement = { @@ -1544,12 +1552,12 @@ /* Begin XCSwiftPackageProductDependency section */ 27C667A229523ECA00E590D5 /* Sentry */ = { isa = XCSwiftPackageProductDependency; - package = 27C667A129523ECA00E590D5 /* XCRemoteSwiftPackageReference "sentry-cocoa.git" */; + package = 27C667A129523ECA00E590D5 /* XCRemoteSwiftPackageReference "sentry-cocoa" */; productName = Sentry; }; 27C667A429523F0A00E590D5 /* Sentry */ = { isa = XCSwiftPackageProductDependency; - package = 27C667A129523ECA00E590D5 /* XCRemoteSwiftPackageReference "sentry-cocoa.git" */; + package = 27C667A129523ECA00E590D5 /* XCRemoteSwiftPackageReference "sentry-cocoa" */; productName = Sentry; }; 49AE370026D4455D00EF4E52 /* Gekidou */ = { @@ -1566,7 +1574,7 @@ }; 7FD4822B2864D73300A5B18B /* OpenGraph */ = { isa = XCSwiftPackageProductDependency; - package = 7FD4822A2864D73300A5B18B /* XCRemoteSwiftPackageReference "OpenGraph.git" */; + package = 7FD4822A2864D73300A5B18B /* XCRemoteSwiftPackageReference "OpenGraph" */; productName = OpenGraph; }; /* End XCSwiftPackageProductDependency section */ diff --git a/ios/Mattermost/Mattermost-Bridging-Header.h b/ios/Mattermost/Mattermost-Bridging-Header.h index e11d920b12..2e4705bc9b 100644 --- a/ios/Mattermost/Mattermost-Bridging-Header.h +++ b/ios/Mattermost/Mattermost-Bridging-Header.h @@ -1,3 +1,7 @@ // // Use this file to import your target's public headers that you would like to expose to Swift. // +#import +#import +#import +#import "AppDelegate.h" diff --git a/ios/Mattermost/MattermostManaged.m b/ios/Mattermost/MattermostManaged.m index a56f97968b..89bb75381a 100644 --- a/ios/Mattermost/MattermostManaged.m +++ b/ios/Mattermost/MattermostManaged.m @@ -6,7 +6,6 @@ // See License.txt for license information. // -#import "AppDelegate.h" #import "MattermostManaged.h" #import "CreateThumbnail.h" #import "Mattermost-Swift.h" @@ -52,21 +51,6 @@ RCT_EXPORT_MODULE(); }; } -RCT_EXPORT_METHOD(isRunningInSplitView:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { - dispatch_block_t splitViewCheck = ^{ - BOOL isRunningInFullScreen = CGRectEqualToRect( - [UIApplication sharedApplication].delegate.window.frame, - [UIApplication sharedApplication].delegate.window.screen.bounds); - resolve(@{ - @"isSplitView": @(!isRunningInFullScreen) - }); - }; - if (dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL) == dispatch_queue_get_label(dispatch_get_main_queue())) { - splitViewCheck(); - } else { - dispatch_async(dispatch_get_main_queue(), splitViewCheck); - } -} RCT_EXPORT_METHOD(deleteDatabaseDirectory: (NSString *)databaseName shouldRemoveDirectory: (BOOL) shouldRemoveDirectory callback: (RCTResponseSenderBlock)callback){ @try { @@ -169,37 +153,6 @@ RCT_EXPORT_METHOD(removeListeners:(double)count) { // Keep: Required for RN built in Event Emitter Calls. } -RCT_EXPORT_METHOD(unlockOrientation) -{ - dispatch_async(dispatch_get_main_queue(), ^{ - AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; - - appDelegate.allowRotation = YES; - NSNumber *resetOrientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationUnknown]; - - [[UIDevice currentDevice] setValue:resetOrientationTarget forKey:@"orientation"]; - }); - -} - -RCT_EXPORT_METHOD(lockPortrait) -{ - dispatch_async(dispatch_get_main_queue(), ^{ - AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; - - appDelegate.allowRotation = NO; - NSNumber *resetOrientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationUnknown]; - - [[UIDevice currentDevice] setValue:resetOrientationTarget forKey:@"orientation"]; - - - - NSNumber *orientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationPortrait]; - - [[UIDevice currentDevice] setValue:orientationTarget forKey:@"orientation"]; - }); - -} RCT_EXPORT_METHOD(createThumbnail:(NSDictionary *)config findEventsWithResolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { diff --git a/ios/Mattermost/Modules/SplitViewModule.m b/ios/Mattermost/Modules/SplitViewModule.m new file mode 100644 index 0000000000..64b1256c89 --- /dev/null +++ b/ios/Mattermost/Modules/SplitViewModule.m @@ -0,0 +1,13 @@ +#import +#import + +@interface RCT_EXTERN_REMAP_MODULE(SplitView, SplitViewModule, RCTEventEmitter) +RCT_EXTERN_METHOD(supportedEvents) +RCT_EXTERN_METHOD(startObserving) +RCT_EXTERN_METHOD(stopObserving) +RCT_EXTERN_METHOD(isRunningInSplitView: + (RCTPromiseResolveBlock)resolve + withRejecter:(RCTPromiseRejectBlock)reject) +RCT_EXTERN_METHOD(unlockOrientation) +RCT_EXTERN_METHOD(lockPortrait) +@end diff --git a/ios/Mattermost/Modules/SplitViewModule.swift b/ios/Mattermost/Modules/SplitViewModule.swift new file mode 100644 index 0000000000..4edf3ae29b --- /dev/null +++ b/ios/Mattermost/Modules/SplitViewModule.swift @@ -0,0 +1,75 @@ +import Foundation + +@objc(SplitViewModule) +class SplitViewModule: RCTEventEmitter { + var hasListeners = false + + @objc + override static func requiresMainQueueSetup() -> Bool { + return true + } + + @objc + override func supportedEvents() -> [String]! { + return ["SplitViewChanged"] + } + + @objc + override func startObserving() { + hasListeners = true + NotificationCenter.default.addObserver(self, + selector: #selector(isSplitView), name: NSNotification.Name.RCTUserInterfaceStyleDidChange, + object: nil) + } + + @objc + override func stopObserving() { + hasListeners = false + NotificationCenter.default.removeObserver(self, + name: NSNotification.Name.RCTUserInterfaceStyleDidChange, + object: nil) + } + + @objc func isRunningInFullScreen() -> Bool { + guard let w = UIApplication.shared.delegate?.window, let window = w else { return false } + return window.frame.equalTo(window.screen.bounds) + } + + @objc func isSplitView() { + if hasListeners && UIDevice.current.userInterfaceIdiom == .pad { + sendEvent(withName: "SplitViewChanged", body: [ + "isSplitView": !isRunningInFullScreen(), + "isTablet": UIDevice.current.userInterfaceIdiom == .pad, + ]) + } + } + + @objc(isRunningInSplitView:withRejecter:) + func isRunningInSplitView(resolve:@escaping RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) -> Void { + DispatchQueue.main.async { [weak self] in + resolve([ + "isSplitView": !(self?.isRunningInFullScreen() ?? false), + "isTablet": UIDevice.current.userInterfaceIdiom == .pad, + ]) + } + } + + @objc(unlockOrientation) + func unlockOrientation() { + DispatchQueue.main.async { + let appDelegate = UIApplication.shared.delegate as! AppDelegate + appDelegate.allowRotation = true + UIDevice.current.setValue(UIInterfaceOrientation.unknown, forKey: "orientation") + } + } + + @objc(lockPortrait) + func lockPortrait() { + DispatchQueue.main.async { + let appDelegate = UIApplication.shared.delegate as! AppDelegate + appDelegate.allowRotation = false + UIDevice.current.setValue(UIInterfaceOrientation.unknown, forKey: "orientation") + UIDevice.current.setValue(UIInterfaceOrientation.portrait, forKey: "orientation") + } + } +} diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 28a3a4b73f..36c803bb25 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -334,7 +334,7 @@ PODS: - glog - react-native-background-timer (2.4.1): - React-Core - - react-native-cameraroll (5.2.2): + - react-native-cameraroll (5.2.3): - React-Core - react-native-cookies (6.2.1): - React-Core @@ -535,7 +535,7 @@ PODS: - RNScreens (3.19.0): - React-Core - React-RCTImage - - RNSentry (4.13.0): + - RNSentry (4.14.0): - React-Core - Sentry/HybridSDK (= 7.31.5) - RNShare (8.1.0): @@ -929,7 +929,7 @@ SPEC CHECKSUMS: React-jsinspector: ff56004b0c974b688a6548c156d5830ad751ae07 React-logger: 60a0b5f8bed667ecf9e24fecca1f30d125de6d75 react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe - react-native-cameraroll: 71d68167beb6fc7216aa564abb6d86f1d666a2c6 + react-native-cameraroll: 5b25d0be40185d02e522bf2abf8a1ba4e8faa107 react-native-cookies: f54fcded06bb0cda05c11d86788020b43528a26c react-native-create-thumbnail: e022bcdcba8a0b4529a50d3fa1a832ec921be39d react-native-document-picker: 958e2bc82e128be69055be261aeac8d872c8d34c @@ -977,7 +977,7 @@ SPEC CHECKSUMS: RNReanimated: cc5e3aa479cb9170bcccf8204291a6950a3be128 RNRudderSdk: 07f732edfe473ef67b8cc6ad1800ddb81b78286f RNScreens: ea4cd3a853063cda19a4e3c28d2e52180c80f4eb - RNSentry: acebe4104a6f5915ae871eb59dc73f13dcc92ef7 + RNSentry: 7e90aec2633d2fdad8aeb839c9915e4376fd27d1 RNShare: 48b3113cd089a2be8ff0515c3ae7a46a4db8a76b RNSVG: d787d64ca06b9158e763ad2638a8c4edce00782a RNVectorIcons: fcc2f6cb32f5735b586e66d14103a74ce6ad61f8 diff --git a/package-lock.json b/package-lock.json index 96813a4582..6423d5042a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "@msgpack/msgpack": "2.8.0", "@nozbe/watermelondb": "0.25.1", "@nozbe/with-observables": "1.4.1", - "@react-native-camera-roll/camera-roll": "5.2.2", + "@react-native-camera-roll/camera-roll": "5.2.3", "@react-native-clipboard/clipboard": "1.11.1", "@react-native-community/datetimepicker": "6.7.3", "@react-native-community/netinfo": "9.3.7", @@ -35,7 +35,7 @@ "@react-navigation/native": "6.1.2", "@react-navigation/stack": "6.3.11", "@rudderstack/rudder-sdk-react-native": "1.5.2", - "@sentry/react-native": "4.13.0", + "@sentry/react-native": "4.14.0", "@stream-io/flat-list-mvcp": "0.10.2", "base-64": "1.0.0", "commonmark": "npm:@mattermost/commonmark@0.30.1-0", @@ -121,7 +121,7 @@ "@types/commonmark": "0.27.5", "@types/commonmark-react-renderer": "4.3.1", "@types/deep-equal": "1.0.1", - "@types/jest": "29.2.6", + "@types/jest": "29.4.0", "@types/lodash": "4.14.191", "@types/mime-db": "1.43.1", "@types/querystringify": "2.0.0", @@ -142,9 +142,9 @@ "@types/uuid": "9.0.0", "@typescript-eslint/eslint-plugin": "5.49.0", "@typescript-eslint/parser": "5.49.0", - "axios": "1.2.3", + "axios": "1.2.4", "axios-cookiejar-support": "4.0.6", - "babel-jest": "29.3.1", + "babel-jest": "29.4.0", "babel-loader": "9.1.2", "babel-plugin-module-resolver": "5.0.0", "deep-freeze": "0.0.1", @@ -157,8 +157,8 @@ "eslint-plugin-react-hooks": "4.6.0", "husky": "8.0.3", "isomorphic-fetch": "3.0.0", - "jest": "29.3.1", - "jest-cli": "29.3.1", + "jest": "29.4.0", + "jest-cli": "29.4.0", "jetifier": "2.0.0", "metro-react-native-babel-preset": "0.74.1", "mmjstool": "github:mattermost/mattermost-utilities#010f456ea8be5beebafdb8776177cba515c1969e", @@ -2449,16 +2449,16 @@ } }, "node_modules/@jest/console": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.3.1.tgz", - "integrity": "sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.4.0.tgz", + "integrity": "sha512-xpXud7e/8zo4syxQlAMDz+EQiFsf8/zXDPslBYm+UaSJ5uGTKQHhbSHfECp7Fw1trQtopjYumeved0n3waijhQ==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-message-util": "^29.4.0", + "jest-util": "^29.4.0", "slash": "^3.0.0" }, "engines": { @@ -2545,37 +2545,37 @@ } }, "node_modules/@jest/core": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.3.1.tgz", - "integrity": "sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.4.0.tgz", + "integrity": "sha512-E7oCMcENobBFwQXYjnN2IsuUSpRo5jSv7VYk6O9GyQ5kVAfVSS8819I4W5iCCYvqD6+1TzyzLpeEdZEik81kNw==", "dev": true, "dependencies": { - "@jest/console": "^29.3.1", - "@jest/reporters": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.0", + "@jest/reporters": "^29.4.0", + "@jest/test-result": "^29.4.0", + "@jest/transform": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.2.0", - "jest-config": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", + "jest-changed-files": "^29.4.0", + "jest-config": "^29.4.0", + "jest-haste-map": "^29.4.0", + "jest-message-util": "^29.4.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-resolve-dependencies": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "jest-watcher": "^29.3.1", + "jest-resolve": "^29.4.0", + "jest-resolve-dependencies": "^29.4.0", + "jest-runner": "^29.4.0", + "jest-runtime": "^29.4.0", + "jest-snapshot": "^29.4.0", + "jest-util": "^29.4.0", + "jest-validate": "^29.4.0", + "jest-watcher": "^29.4.0", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -2697,36 +2697,36 @@ } }, "node_modules/@jest/environment": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.1.tgz", - "integrity": "sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.0.tgz", + "integrity": "sha512-ocl1VGDcZHfHnYLTqkBY7yXme1bF4x0BevJ9wb6y0sLOSyBCpp8L5fEASChB+wU53WMrIK6kBfGt+ZYoM2kcdw==", "dependencies": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/fake-timers": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", - "jest-mock": "^29.3.1" + "jest-mock": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.3.1.tgz", - "integrity": "sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.4.0.tgz", + "integrity": "sha512-IiDZYQ/Oi94aBT0nKKKRvNsB5JTyHoGb+G3SiGoDxz90JfL7SLx/z5IjB0fzBRzy7aLFQOCbVJlaC2fIgU6Y9Q==", "dev": true, "dependencies": { - "expect": "^29.3.1", - "jest-snapshot": "^29.3.1" + "expect": "^29.4.0", + "jest-snapshot": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz", - "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.4.0.tgz", + "integrity": "sha512-w/JzTYIqjmPFIM5OOQHF9CawFx2daw1256Nzj4ZqWX96qRKbCq9WYRVqdySBKHHzuvsXLyTDIF6y61FUyrhmwg==", "dev": true, "dependencies": { "jest-get-type": "^29.2.0" @@ -2736,47 +2736,47 @@ } }, "node_modules/@jest/fake-timers": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.1.tgz", - "integrity": "sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.0.tgz", + "integrity": "sha512-8sitzN2QrhDwEwH3kKcMMgrv/UIkmm9AUgHixmn4L++GQ0CqVTIztm3YmaIQooLmW3O4GhizNTTCyq3iLbWcMw==", "dependencies": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", + "@jest/types": "^29.4.0", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-message-util": "^29.4.0", + "jest-mock": "^29.4.0", + "jest-util": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.3.1.tgz", - "integrity": "sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.4.0.tgz", + "integrity": "sha512-Q64ZRgGMVL40RcYTfD2GvyjK7vJLPSIvi8Yp3usGPNPQ3SCW+UCY9KEH6+sVtBo8LzhcjtCXuZEd7avnj/T0mQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/types": "^29.3.1", - "jest-mock": "^29.3.1" + "@jest/environment": "^29.4.0", + "@jest/expect": "^29.4.0", + "@jest/types": "^29.4.0", + "jest-mock": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.3.1.tgz", - "integrity": "sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.4.0.tgz", + "integrity": "sha512-FjJwrD1XOQq/AXKrvnOSf0RgAs6ziUuGKx8+/R53Jscc629JIhg7/m241gf1shUm/fKKxoHd7aCexcg7kxvkWQ==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.0", + "@jest/test-result": "^29.4.0", + "@jest/transform": "^29.4.0", + "@jest/types": "^29.4.0", "@jridgewell/trace-mapping": "^0.3.15", "@types/node": "*", "chalk": "^4.0.0", @@ -2789,9 +2789,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-message-util": "^29.4.0", + "jest-util": "^29.4.0", + "jest-worker": "^29.4.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -2889,11 +2889,11 @@ } }, "node_modules/@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.0.tgz", + "integrity": "sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ==", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.25.16" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2914,13 +2914,13 @@ } }, "node_modules/@jest/test-result": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.3.1.tgz", - "integrity": "sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.4.0.tgz", + "integrity": "sha512-EtRklzjpddZU/aBVxJqqejfzfOcnehmjNXufs6u6qwd05kkhXpAPhZdt8bLlQd7cA2nD+JqZQ5Dx9NX5Jh6mjA==", "dev": true, "dependencies": { - "@jest/console": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.0", + "@jest/types": "^29.4.0", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -2929,14 +2929,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz", - "integrity": "sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.4.0.tgz", + "integrity": "sha512-pEwIgdfvEgF2lBOYX3DVn3SrvsAZ9FXCHw7+C6Qz87HnoDGQwbAselhWLhpgbxDjs6RC9QUJpFnrLmM5uwZV+g==", "dev": true, "dependencies": { - "@jest/test-result": "^29.3.1", + "@jest/test-result": "^29.4.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.0", "slash": "^3.0.0" }, "engines": { @@ -2953,26 +2953,26 @@ } }, "node_modules/@jest/transform": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.1.tgz", - "integrity": "sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.4.0.tgz", + "integrity": "sha512-hDjw3jz4GnvbyLMgcFpC9/34QcUhVIzJkBqz7o+3AhgfhGRzGuQppuLf5r/q7lDAAyJ6jzL+SFG7JGsScHOcLQ==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.0", "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", + "jest-util": "^29.4.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "write-file-atomic": "^5.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3064,11 +3064,11 @@ } }, "node_modules/@jest/types": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", - "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.0.tgz", + "integrity": "sha512-1S2Dt5uQp7R0bGY/L2BpuwCSji7v12kY3o8zqwlkbYBmOY956SKk+zOWqmfhHSINegiAVqOXydAYuWpzX6TYsQ==", "dependencies": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.4.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -3384,9 +3384,9 @@ } }, "node_modules/@react-native-camera-roll/camera-roll": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@react-native-camera-roll/camera-roll/-/camera-roll-5.2.2.tgz", - "integrity": "sha512-LVzUX1KdKvOXJGiV/9tlkDyDSOEjvAzuiV8OkSUD13TXN/Tk5u2KVHTYRYJz5pmXanLN2dmEamctJcqKCeXYxg==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@react-native-camera-roll/camera-roll/-/camera-roll-5.2.3.tgz", + "integrity": "sha512-GNdFJj5F2pPQw6RH/BxbT0Ner+WPCm6olmjLn8JBlaRQ0IBX4K9l44YKJLJZsMJ54uqiKK0fDiRzT90Eg0iuIg==", "peerDependencies": { "react-native": ">=0.59" } @@ -5134,14 +5134,14 @@ } }, "node_modules/@sentry/browser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.29.0.tgz", - "integrity": "sha512-Af+dIcntaw405Wt7myDOMGDxiszfy4aBdshrEKYbGgcfHjgXBIdF3iKlNatvl6nrOm+IOVuKgSpCLOr2hiCwzw==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.32.1.tgz", + "integrity": "sha512-w2Ay8Y28maboyA/pgNRhNxCth0pCYsJ7co5oLVAGptjOFudeihD4Bx2wthz6sfk9DpxzqtUIGa54edcniyk14g==", "dependencies": { - "@sentry/core": "7.29.0", - "@sentry/replay": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/core": "7.32.1", + "@sentry/replay": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "tslib": "^1.9.3" }, "engines": { @@ -5189,12 +5189,12 @@ } }, "node_modules/@sentry/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.29.0.tgz", - "integrity": "sha512-+e9aIp2ljtT4EJq3901z6TfEVEeqZd5cWzbKEuQzPn2UO6If9+Utd7kY2Y31eQYb4QnJgZfiIEz1HonuYY6zqQ==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.32.1.tgz", + "integrity": "sha512-WHCFdlvK+YiGPjjmwLLvueH7zMYxLgNl0esCQUrqoTHhZ4asIV8k3/5OXgUi4kV2DW+NjzhmtK3qKeWZxgitfw==", "dependencies": { - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "tslib": "^1.9.3" }, "engines": { @@ -5207,13 +5207,13 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/hub": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.29.0.tgz", - "integrity": "sha512-nIV2NtTn16VukTtWFhROHJ35NyUIXgEGtesG8a1i7D4iRSvkfLkLrQ9i6D0BAE2huqKqQemO3zGEPR00szqsiA==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.32.1.tgz", + "integrity": "sha512-DDBuikefmsXH0a4yI0HSbBA9I+VZ6cJi+Bp2oTpkzo7soy1ClzYVamd/tTDpBH5R8u8mmHQUQgIJGRm63Mnk+Q==", "dependencies": { - "@sentry/core": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/core": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "tslib": "^1.9.3" }, "engines": { @@ -5226,12 +5226,12 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/integrations": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.29.0.tgz", - "integrity": "sha512-BkZe3ALij320VtC5bNkeSz3OUhT9oxZsj2lf5rCuRFqcqw4tvVNADF/Y98mf0L4VCy582M9MlNXmwfewJjxGOA==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.32.1.tgz", + "integrity": "sha512-FYu+wQc6sjKQelqgfGA1NFB+lnOmvY64I2MiygYVQZSMQ35wzg2MlJnzJcbGNmJEIvveyv0N2CFMS5m4K8YPYw==", "dependencies": { - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "localforage": "^1.8.1", "tslib": "^1.9.3" }, @@ -5245,13 +5245,13 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/react": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.29.0.tgz", - "integrity": "sha512-pJ138QTChfAiYzFrCgycBgXrAVARV6TdVvLB8z/HsqbHzPq17RhyF9M1xPE4ffeLDQAEuSudwED9CLOpJqKnAw==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.32.1.tgz", + "integrity": "sha512-DeI5N0nTn4tc1/4+ZeiSyGoMBYsYTqoRBn8F/UBMNIMseBh4/6d85QX6HyyrZi0o/N9jzMq0mnxJNJlNaicHfQ==", "dependencies": { - "@sentry/browser": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/browser": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "hoist-non-react-statics": "^3.3.2", "tslib": "^1.9.3" }, @@ -5263,19 +5263,19 @@ } }, "node_modules/@sentry/react-native": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-4.13.0.tgz", - "integrity": "sha512-CxQd5jWPKEPgR1SH5ppf555h7DMhSBZMU3eSZ/VNT+BocgzxxBnf/tcJj92+gpwrzt2m7MiZ3uDfyfQOgyMc8Q==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-4.14.0.tgz", + "integrity": "sha512-wX6dWrikEYjPzuRPLr3kpa2h6cXpjouB3DgxF1TKMLBnhtuVlPsZn7RpDrMMnNqAHRiNTYBnr+37Qhs55+EGwg==", "dependencies": { - "@sentry/browser": "7.29.0", + "@sentry/browser": "7.32.1", "@sentry/cli": "1.74.4", - "@sentry/core": "7.29.0", - "@sentry/hub": "7.29.0", - "@sentry/integrations": "7.29.0", - "@sentry/react": "7.29.0", - "@sentry/tracing": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/core": "7.32.1", + "@sentry/hub": "7.32.1", + "@sentry/integrations": "7.32.1", + "@sentry/react": "7.32.1", + "@sentry/tracing": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "@sentry/wizard": "1.4.0" }, "peerDependencies": { @@ -5289,29 +5289,26 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/replay": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.29.0.tgz", - "integrity": "sha512-Gw7HgviJQu6pX5RFQGVY38Av4qFn9otrZdwSSl/QK5hIyg6yhlh5h7U0ydZkrYYGiW6Z6SYYRpEWCJc/Wbh+ZQ==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.32.1.tgz", + "integrity": "sha512-nRy2upcZecRveMCatyeukNQQH39/9lSF/j6PhWTRyHcam5bvOb2d2mM0TiIfvYxNM1ePb+9SvX1W0qqpmvqyGA==", "dependencies": { - "@sentry/core": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0" + "@sentry/core": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1" }, "engines": { "node": ">=12" - }, - "peerDependencies": { - "@sentry/browser": ">=7.24.0" } }, "node_modules/@sentry/tracing": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.29.0.tgz", - "integrity": "sha512-MAN/G6XROtRhzo/KDjddb6VJn/Q1TaPLwdyj9vvfkUkBNtlt5k16oXp+u7eHWX0uujER9wnZtj2ivXaPeqq0VA==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.32.1.tgz", + "integrity": "sha512-MG67+DzsbEM0p7+g/H5DQqsjFCXkvF50gK2+8EpfO6N2uqYpELPMIeTkERtMiqjhkDZ11bokWKE33CvA/TEF5Q==", "dependencies": { - "@sentry/core": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/core": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "tslib": "^1.9.3" }, "engines": { @@ -5324,19 +5321,19 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sentry/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.29.0.tgz", - "integrity": "sha512-DmoEpoqHPty3VxqubS/5gxarwebHRlcBd/yuno+PS3xy++/i9YPjOWLZhU2jYs1cW68M9R6CcCOiC9f2ckJjdw==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.32.1.tgz", + "integrity": "sha512-yWS5no9Xxftgb6IGjj7iK6TvOk6rfy2H5gKcj4DrPqSWKmh0jfszUoX4B+olkt7H75sTSQqv3yiuMsySsMh+6Q==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.29.0.tgz", - "integrity": "sha512-ICcBwTiBGK8NQA8H2BJo0JcMN6yCeKLqNKNMVampRgS6wSfSk1edvcTdhRkW3bSktIGrIPZrKskBHyMwDGF2XQ==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.32.1.tgz", + "integrity": "sha512-kZVpqRTC+UiI/PlSxEuv0G5G0lZeTZTL/pyRb8sptLhFo7QxEaGO/XCDNzWC4vQdm5PrpCVZ6w/XCYCHEhx4Tw==", "dependencies": { - "@sentry/types": "7.29.0", + "@sentry/types": "7.32.1", "tslib": "^1.9.3" }, "engines": { @@ -5393,24 +5390,24 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, "node_modules/@sinclair/typebox": { - "version": "0.24.44", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.44.tgz", - "integrity": "sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg==" + "version": "0.25.21", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", + "integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==" }, "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^2.0.0" } }, "node_modules/@stream-io/flat-list-mvcp": { @@ -5770,13 +5767,13 @@ } }, "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -5802,9 +5799,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", "dev": true, "dependencies": { "@babel/types": "^7.3.0" @@ -5868,9 +5865,9 @@ "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", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, "dependencies": { "@types/node": "*" @@ -5920,9 +5917,9 @@ } }, "node_modules/@types/jest": { - "version": "29.2.6", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.6.tgz", - "integrity": "sha512-XEUC/Tgw3uMh6Ho8GkUtQ2lPhY5Fmgyp3TdlkTJs1W9VgNxs+Ow/x3Elh8lHQKqCbZL0AubQuqWjHVT033Hhrw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.0.tgz", + "integrity": "sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -5965,9 +5962,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "node_modules/@types/prop-types": { @@ -7240,9 +7237,9 @@ } }, "node_modules/axios": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.3.tgz", - "integrity": "sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.4.tgz", + "integrity": "sha512-lIQuCfBJvZB/Bv7+RWUqEJqNShGOVpk9v7P0ZWx5Ip0qY6u7JBAU6dzQPMLasU9vHL2uD8av/1FDJXj7n6c39w==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -7278,15 +7275,15 @@ } }, "node_modules/babel-jest": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.1.tgz", - "integrity": "sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.0.tgz", + "integrity": "sha512-M61cGPg4JBashDvIzKoIV/y95mSF6x3ome7CMEaszUTHD4uo6dtC6Nln+fvRTspYNtwy8lDHl5lmoTBSNY/a+g==", "dev": true, "dependencies": { - "@jest/transform": "^29.3.1", + "@jest/transform": "^29.4.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.2.0", + "babel-preset-jest": "^29.4.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -7464,9 +7461,9 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz", - "integrity": "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.0.tgz", + "integrity": "sha512-a/sZRLQJEmsmejQ2rPEUe35nO1+C9dc9O1gplH1SXmJxveQSRUYdBk8yGZG/VOUuZs1u2aHZJusEGoRMbhhwCg==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", @@ -7661,12 +7658,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz", - "integrity": "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.0.tgz", + "integrity": "sha512-fUB9vZflUSM3dO/6M2TCAepTzvA4VkOvl67PjErcrQMGt9Eve7uazaeyCZ2th3UtI7ljpiBJES0F7A1vBRsLZA==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^29.2.0", + "babel-plugin-jest-hoist": "^29.4.0", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -10613,16 +10610,16 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/expect": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz", - "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.4.0.tgz", + "integrity": "sha512-pzaAwjBgLEVxBh6ZHiqb9Wv3JYuv6m8ntgtY7a48nS+2KbX0EJkPS3FQlKiTZNcqzqJHNyQsfjqN60w1hPUBfQ==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.3.1", + "@jest/expect-utils": "^29.4.0", "jest-get-type": "^29.2.0", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1" + "jest-matcher-utils": "^29.4.0", + "jest-message-util": "^29.4.0", + "jest-util": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -12762,15 +12759,15 @@ "integrity": "sha512-mz0sldKOEnt7qpqLLYM9Rwq9zGuGtj5nihz87KWBSy6PR9eu0cmyPkW3b+Exw4iVivcb2bFf6uVq0Q9aNgdIhw==" }, "node_modules/jest": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.3.1.tgz", - "integrity": "sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.0.tgz", + "integrity": "sha512-Zfd4UzNxPkSoHRBkg225rBjQNa6pVqbh20MGniAzwaOzYLd+pQUcAwH+WPxSXxKFs+QWYfPYIq9hIVSmdVQmPA==", "dev": true, "dependencies": { - "@jest/core": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.4.0", + "@jest/types": "^29.4.0", "import-local": "^3.0.2", - "jest-cli": "^29.3.1" + "jest-cli": "^29.4.0" }, "bin": { "jest": "bin/jest.js" @@ -12788,9 +12785,9 @@ } }, "node_modules/jest-changed-files": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.2.0.tgz", - "integrity": "sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.4.0.tgz", + "integrity": "sha512-rnI1oPxgFghoz32Y8eZsGJMjW54UlqT17ycQeCEktcxxwqqKdlj9afl8LNeO0Pbu+h2JQHThQP0BzS67eTRx4w==", "dev": true, "dependencies": { "execa": "^5.0.0", @@ -12816,28 +12813,28 @@ } }, "node_modules/jest-circus": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.3.1.tgz", - "integrity": "sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.0.tgz", + "integrity": "sha512-/pFBaCeLzCavRWyz14JwFgpZgPpEZdS6nPnREhczbHl2wy2UezvYcVp5akVFfUmBaA4ThAUp0I8cpgkbuNOm3g==", "dev": true, "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.4.0", + "@jest/expect": "^29.4.0", + "@jest/test-result": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-each": "^29.4.0", + "jest-matcher-utils": "^29.4.0", + "jest-message-util": "^29.4.0", + "jest-runtime": "^29.4.0", + "jest-snapshot": "^29.4.0", + "jest-util": "^29.4.0", "p-limit": "^3.1.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -12940,21 +12937,21 @@ } }, "node_modules/jest-cli": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.3.1.tgz", - "integrity": "sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.0.tgz", + "integrity": "sha512-YUkICcxjUd864VOzbfQEi2qd2hIIOd9bRF7LJUNyhWb3Khh3YKrbY0LWwoZZ4WkvukiNdvQu0Z4s6zLsY4hYfg==", "dev": true, "dependencies": { - "@jest/core": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.4.0", + "@jest/test-result": "^29.4.0", + "@jest/types": "^29.4.0", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-config": "^29.4.0", + "jest-util": "^29.4.0", + "jest-validate": "^29.4.0", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -13114,31 +13111,31 @@ } }, "node_modules/jest-config": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.3.1.tgz", - "integrity": "sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.4.0.tgz", + "integrity": "sha512-jtgd72nN4Mob4Oego3N/pLRVfR2ui1hv+yO6xR/SUi5G7NtZ/grr95BJ1qRSDYZshuA0Jw57fnttZHZKb04+CA==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.3.1", - "@jest/types": "^29.3.1", - "babel-jest": "^29.3.1", + "@jest/test-sequencer": "^29.4.0", + "@jest/types": "^29.4.0", + "babel-jest": "^29.4.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.3.1", - "jest-environment-node": "^29.3.1", + "jest-circus": "^29.4.0", + "jest-environment-node": "^29.4.0", "jest-get-type": "^29.2.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-resolve": "^29.4.0", + "jest-runner": "^29.4.0", + "jest-util": "^29.4.0", + "jest-validate": "^29.4.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -13238,15 +13235,15 @@ } }, "node_modules/jest-diff": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz", - "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.0.tgz", + "integrity": "sha512-s8KNvFx8YgdQ4fn2YLDQ7N6kmVOP68dUDVJrCHNsTc3UM5jcmyyFeYKL8EPWBQbJ0o0VvDGbWp8oYQ1nsnqnWw==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.3.1", "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13335,16 +13332,16 @@ } }, "node_modules/jest-each": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.3.1.tgz", - "integrity": "sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.4.0.tgz", + "integrity": "sha512-LTOvB8JDVFjrwXItyQiyLuDYy5PMApGLLzbfIYR79QLpeohS0bcS6j2HjlWuRGSM8QQQyp+ico59Blv+Jx3fMw==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", - "jest-util": "^29.3.1", - "pretty-format": "^29.3.1" + "jest-util": "^29.4.0", + "pretty-format": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13421,16 +13418,16 @@ } }, "node_modules/jest-environment-node": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.3.1.tgz", - "integrity": "sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.0.tgz", + "integrity": "sha512-WVveE3fYSH6FhDtZdvXhFKeLsDRItlQgnij+HQv6ZKxTdT1DB5O0sHXKCEC3K5mHraMs1Kzn4ch9jXC7H4L4wA==", "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.4.0", + "@jest/fake-timers": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-mock": "^29.4.0", + "jest-util": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13446,20 +13443,20 @@ } }, "node_modules/jest-haste-map": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.1.tgz", - "integrity": "sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.0.tgz", + "integrity": "sha512-m/pIEfoK0HoJz4c9bkgS5F9CXN2AM22eaSmUcmqTpadRlNVBOJE2CwkgaUzbrNn5MuAqTV1IPVYwWwjHNnk8eA==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@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.3.1", - "jest-worker": "^29.3.1", + "jest-util": "^29.4.0", + "jest-worker": "^29.4.0", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -13471,28 +13468,28 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz", - "integrity": "sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.4.0.tgz", + "integrity": "sha512-fEGHS6ijzgSv5exABkCecMHNmyHcV52+l39ZsxuwfxmQMp43KBWJn2/Fwg8/l4jTI9uOY9jv8z1dXGgL0PHFjA==", "dev": true, "dependencies": { "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz", - "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.4.0.tgz", + "integrity": "sha512-pU4OjBn96rDdRIaPUImbPiO2ETyRVzkA1EZVu9AxBDv/XPDJ7JWfkb6IiDT5jwgicaPHMrB/fhVa6qjG6potfA==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.3.1", + "jest-diff": "^29.4.0", "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13569,17 +13566,17 @@ } }, "node_modules/jest-message-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", - "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.0.tgz", + "integrity": "sha512-0FvobqymmhE9pDEifvIcni9GeoKLol8eZspzH5u41g1wxYtLS60a9joT95dzzoCgrKRidNz64eaAXyzaULV8og==", "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -13660,13 +13657,13 @@ } }, "node_modules/jest-mock": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.1.tgz", - "integrity": "sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.0.tgz", + "integrity": "sha512-+ShT5i+hcu/OFQRV0f/V/YtwpdFcHg64JZ9A8b40JueP+X9HNrZAYGdkupGIzsUK8AucecxCt4wKauMchxubLQ==", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@types/node": "*", - "jest-util": "^29.3.1" + "jest-util": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13699,19 +13696,19 @@ } }, "node_modules/jest-resolve": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.3.1.tgz", - "integrity": "sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.4.0.tgz", + "integrity": "sha512-g7k7l53T+uC9Dp1mbHyDNkcCt0PMku6Wcfpr1kcMLwOHmM3vucKjSM5+DSa1r4vlDZojh8XH039J3z4FKmtTSw==", "dev": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-util": "^29.4.0", + "jest-validate": "^29.4.0", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" }, "engines": { @@ -13719,13 +13716,13 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz", - "integrity": "sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.0.tgz", + "integrity": "sha512-hxfC84trREyULSj1Cm+fMjnudrrI2dVQ04COjZRcjCZ97boJlPtfJ+qrl/pN7YXS2fnu3wTHEc3LO094pngL6A==", "dev": true, "dependencies": { "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.3.1" + "jest-snapshot": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13811,30 +13808,30 @@ } }, "node_modules/jest-runner": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.3.1.tgz", - "integrity": "sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.4.0.tgz", + "integrity": "sha512-4zpcv0NOiJleqT0NAs8YcVbK8MhVRc58CBBn9b0Exc8VPU9GKI+DbzDUZqJYdkJhJSZFy2862l/F6hAqIow1hg==", "dev": true, "dependencies": { - "@jest/console": "^29.3.1", - "@jest/environment": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.0", + "@jest/environment": "^29.4.0", + "@jest/test-result": "^29.4.0", + "@jest/transform": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-leak-detector": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-resolve": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-util": "^29.3.1", - "jest-watcher": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-environment-node": "^29.4.0", + "jest-haste-map": "^29.4.0", + "jest-leak-detector": "^29.4.0", + "jest-message-util": "^29.4.0", + "jest-resolve": "^29.4.0", + "jest-runtime": "^29.4.0", + "jest-util": "^29.4.0", + "jest-watcher": "^29.4.0", + "jest-worker": "^29.4.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -13938,31 +13935,32 @@ } }, "node_modules/jest-runtime": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.3.1.tgz", - "integrity": "sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.4.0.tgz", + "integrity": "sha512-2zumwaGXsIuSF92Ui5Pn5hZV9r7AHMclfBLikrXSq87/lHea9anQ+mC+Cjz/DYTbf/JMjlK1sjZRh8K3yYNvWg==", "dev": true, "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/globals": "^29.3.1", + "@jest/environment": "^29.4.0", + "@jest/fake-timers": "^29.4.0", + "@jest/globals": "^29.4.0", "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.4.0", + "@jest/transform": "^29.4.0", + "@jest/types": "^29.4.0", "@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.3.1", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", + "jest-haste-map": "^29.4.0", + "jest-message-util": "^29.4.0", + "jest-mock": "^29.4.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-resolve": "^29.4.0", + "jest-snapshot": "^29.4.0", + "jest-util": "^29.4.0", + "semver": "^7.3.5", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -14062,9 +14060,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.3.1.tgz", - "integrity": "sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.4.0.tgz", + "integrity": "sha512-UnK3MhdEWrQ2J6MnlKe51tvN5FjRUBQnO4m1LPlDx61or3w9+cP/U0x9eicutgunu/QzE4WC82jj6CiGIAFYzw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -14073,23 +14071,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/expect-utils": "^29.4.0", + "@jest/transform": "^29.4.0", + "@jest/types": "^29.4.0", "@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.3.1", + "expect": "^29.4.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.3.1", + "jest-diff": "^29.4.0", "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.4.0", + "jest-matcher-utils": "^29.4.0", + "jest-message-util": "^29.4.0", + "jest-util": "^29.4.0", "natural-compare": "^1.4.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.0", "semver": "^7.3.5" }, "engines": { @@ -14167,11 +14165,11 @@ } }, "node_modules/jest-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", - "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.0.tgz", + "integrity": "sha512-lCCwlze7UEV8TpR9ArS8w0cTbcMry5tlBkg7QSc5og5kNyV59dnY2aKHu5fY2k5aDJMQpCUGpvL2w6ZU44lveA==", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -14247,17 +14245,17 @@ } }, "node_modules/jest-validate": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.3.1.tgz", - "integrity": "sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.4.0.tgz", + "integrity": "sha512-EXS7u594nX3aAPBnARxBdJ1eZ1cByV6MWrK0Qpt9lt/BcY0p0yYGp/EGJ8GhdLDQh+RFf8qMt2wzbbVzpj5+Vg==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", "leven": "^3.1.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -14346,18 +14344,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.3.1.tgz", - "integrity": "sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.4.0.tgz", + "integrity": "sha512-PnnfLygNKelWOJwpAYlcsQjB+OxRRdckD0qiGmYng4Hkz1ZwK3jvCaJJYiywz2msQn4rBNLdriasJtv7YpWHpA==", "dev": true, "dependencies": { - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.3.1", + "jest-util": "^29.4.0", "string-length": "^4.0.1" }, "engines": { @@ -14450,13 +14448,13 @@ } }, "node_modules/jest-worker": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", - "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.0.tgz", + "integrity": "sha512-dICMQ+Q4W0QVMsaQzWlA1FVQhKNz7QcDCOGtbk1GCAd0Lai+wdkQvfmQwL4MjGumineh1xz+6M5oMj3rfWS02A==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.3.1", + "jest-util": "^29.4.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -17806,11 +17804,11 @@ } }, "node_modules/pretty-format": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", - "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.0.tgz", + "integrity": "sha512-J+EVUPXIBHCdWAbvGBwXs0mk3ljGppoh/076g1S8qYS8nVG4u/yrhMvyTFHYYYKWnDdgRLExx0vA7pzxVGdlNw==", "dependencies": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.4.0", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -19304,9 +19302,9 @@ "deprecated": "https://github.com/lydell/resolve-url#deprecated" }, "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.0.tgz", + "integrity": "sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==", "dev": true, "engines": { "node": ">=10" @@ -21111,9 +21109,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", - "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "version": "0.7.33", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", + "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", "funding": [ { "type": "opencollective", @@ -21810,16 +21808,16 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", + "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/ws": { @@ -23608,16 +23606,16 @@ "dev": true }, "@jest/console": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.3.1.tgz", - "integrity": "sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.4.0.tgz", + "integrity": "sha512-xpXud7e/8zo4syxQlAMDz+EQiFsf8/zXDPslBYm+UaSJ5uGTKQHhbSHfECp7Fw1trQtopjYumeved0n3waijhQ==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-message-util": "^29.4.0", + "jest-util": "^29.4.0", "slash": "^3.0.0" }, "dependencies": { @@ -23679,37 +23677,37 @@ } }, "@jest/core": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.3.1.tgz", - "integrity": "sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.4.0.tgz", + "integrity": "sha512-E7oCMcENobBFwQXYjnN2IsuUSpRo5jSv7VYk6O9GyQ5kVAfVSS8819I4W5iCCYvqD6+1TzyzLpeEdZEik81kNw==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/reporters": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.0", + "@jest/reporters": "^29.4.0", + "@jest/test-result": "^29.4.0", + "@jest/transform": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.2.0", - "jest-config": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", + "jest-changed-files": "^29.4.0", + "jest-config": "^29.4.0", + "jest-haste-map": "^29.4.0", + "jest-message-util": "^29.4.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-resolve-dependencies": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "jest-watcher": "^29.3.1", + "jest-resolve": "^29.4.0", + "jest-resolve-dependencies": "^29.4.0", + "jest-runner": "^29.4.0", + "jest-runtime": "^29.4.0", + "jest-snapshot": "^29.4.0", + "jest-util": "^29.4.0", + "jest-validate": "^29.4.0", + "jest-watcher": "^29.4.0", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -23789,71 +23787,71 @@ } }, "@jest/environment": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.1.tgz", - "integrity": "sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.0.tgz", + "integrity": "sha512-ocl1VGDcZHfHnYLTqkBY7yXme1bF4x0BevJ9wb6y0sLOSyBCpp8L5fEASChB+wU53WMrIK6kBfGt+ZYoM2kcdw==", "requires": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/fake-timers": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", - "jest-mock": "^29.3.1" + "jest-mock": "^29.4.0" } }, "@jest/expect": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.3.1.tgz", - "integrity": "sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.4.0.tgz", + "integrity": "sha512-IiDZYQ/Oi94aBT0nKKKRvNsB5JTyHoGb+G3SiGoDxz90JfL7SLx/z5IjB0fzBRzy7aLFQOCbVJlaC2fIgU6Y9Q==", "dev": true, "requires": { - "expect": "^29.3.1", - "jest-snapshot": "^29.3.1" + "expect": "^29.4.0", + "jest-snapshot": "^29.4.0" } }, "@jest/expect-utils": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz", - "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.4.0.tgz", + "integrity": "sha512-w/JzTYIqjmPFIM5OOQHF9CawFx2daw1256Nzj4ZqWX96qRKbCq9WYRVqdySBKHHzuvsXLyTDIF6y61FUyrhmwg==", "dev": true, "requires": { "jest-get-type": "^29.2.0" } }, "@jest/fake-timers": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.1.tgz", - "integrity": "sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.0.tgz", + "integrity": "sha512-8sitzN2QrhDwEwH3kKcMMgrv/UIkmm9AUgHixmn4L++GQ0CqVTIztm3YmaIQooLmW3O4GhizNTTCyq3iLbWcMw==", "requires": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", + "@jest/types": "^29.4.0", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-message-util": "^29.4.0", + "jest-mock": "^29.4.0", + "jest-util": "^29.4.0" } }, "@jest/globals": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.3.1.tgz", - "integrity": "sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.4.0.tgz", + "integrity": "sha512-Q64ZRgGMVL40RcYTfD2GvyjK7vJLPSIvi8Yp3usGPNPQ3SCW+UCY9KEH6+sVtBo8LzhcjtCXuZEd7avnj/T0mQ==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/types": "^29.3.1", - "jest-mock": "^29.3.1" + "@jest/environment": "^29.4.0", + "@jest/expect": "^29.4.0", + "@jest/types": "^29.4.0", + "jest-mock": "^29.4.0" } }, "@jest/reporters": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.3.1.tgz", - "integrity": "sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.4.0.tgz", + "integrity": "sha512-FjJwrD1XOQq/AXKrvnOSf0RgAs6ziUuGKx8+/R53Jscc629JIhg7/m241gf1shUm/fKKxoHd7aCexcg7kxvkWQ==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.0", + "@jest/test-result": "^29.4.0", + "@jest/transform": "^29.4.0", + "@jest/types": "^29.4.0", "@jridgewell/trace-mapping": "^0.3.15", "@types/node": "*", "chalk": "^4.0.0", @@ -23866,9 +23864,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-message-util": "^29.4.0", + "jest-util": "^29.4.0", + "jest-worker": "^29.4.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -23933,11 +23931,11 @@ } }, "@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.0.tgz", + "integrity": "sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ==", "requires": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.25.16" } }, "@jest/source-map": { @@ -23952,26 +23950,26 @@ } }, "@jest/test-result": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.3.1.tgz", - "integrity": "sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.4.0.tgz", + "integrity": "sha512-EtRklzjpddZU/aBVxJqqejfzfOcnehmjNXufs6u6qwd05kkhXpAPhZdt8bLlQd7cA2nD+JqZQ5Dx9NX5Jh6mjA==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.0", + "@jest/types": "^29.4.0", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz", - "integrity": "sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.4.0.tgz", + "integrity": "sha512-pEwIgdfvEgF2lBOYX3DVn3SrvsAZ9FXCHw7+C6Qz87HnoDGQwbAselhWLhpgbxDjs6RC9QUJpFnrLmM5uwZV+g==", "dev": true, "requires": { - "@jest/test-result": "^29.3.1", + "@jest/test-result": "^29.4.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.0", "slash": "^3.0.0" }, "dependencies": { @@ -23984,26 +23982,26 @@ } }, "@jest/transform": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.1.tgz", - "integrity": "sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.4.0.tgz", + "integrity": "sha512-hDjw3jz4GnvbyLMgcFpC9/34QcUhVIzJkBqz7o+3AhgfhGRzGuQppuLf5r/q7lDAAyJ6jzL+SFG7JGsScHOcLQ==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.0", "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", + "jest-util": "^29.4.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "write-file-atomic": "^5.0.0" }, "dependencies": { "ansi-styles": { @@ -24070,11 +24068,11 @@ } }, "@jest/types": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", - "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.0.tgz", + "integrity": "sha512-1S2Dt5uQp7R0bGY/L2BpuwCSji7v12kY3o8zqwlkbYBmOY956SKk+zOWqmfhHSINegiAVqOXydAYuWpzX6TYsQ==", "requires": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.4.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -24312,9 +24310,9 @@ } }, "@react-native-camera-roll/camera-roll": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@react-native-camera-roll/camera-roll/-/camera-roll-5.2.2.tgz", - "integrity": "sha512-LVzUX1KdKvOXJGiV/9tlkDyDSOEjvAzuiV8OkSUD13TXN/Tk5u2KVHTYRYJz5pmXanLN2dmEamctJcqKCeXYxg==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@react-native-camera-roll/camera-roll/-/camera-roll-5.2.3.tgz", + "integrity": "sha512-GNdFJj5F2pPQw6RH/BxbT0Ner+WPCm6olmjLn8JBlaRQ0IBX4K9l44YKJLJZsMJ54uqiKK0fDiRzT90Eg0iuIg==", "requires": {} }, "@react-native-clipboard/clipboard": { @@ -25615,14 +25613,14 @@ "requires": {} }, "@sentry/browser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.29.0.tgz", - "integrity": "sha512-Af+dIcntaw405Wt7myDOMGDxiszfy4aBdshrEKYbGgcfHjgXBIdF3iKlNatvl6nrOm+IOVuKgSpCLOr2hiCwzw==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.32.1.tgz", + "integrity": "sha512-w2Ay8Y28maboyA/pgNRhNxCth0pCYsJ7co5oLVAGptjOFudeihD4Bx2wthz6sfk9DpxzqtUIGa54edcniyk14g==", "requires": { - "@sentry/core": "7.29.0", - "@sentry/replay": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/core": "7.32.1", + "@sentry/replay": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "tslib": "^1.9.3" }, "dependencies": { @@ -25658,12 +25656,12 @@ } }, "@sentry/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.29.0.tgz", - "integrity": "sha512-+e9aIp2ljtT4EJq3901z6TfEVEeqZd5cWzbKEuQzPn2UO6If9+Utd7kY2Y31eQYb4QnJgZfiIEz1HonuYY6zqQ==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.32.1.tgz", + "integrity": "sha512-WHCFdlvK+YiGPjjmwLLvueH7zMYxLgNl0esCQUrqoTHhZ4asIV8k3/5OXgUi4kV2DW+NjzhmtK3qKeWZxgitfw==", "requires": { - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "tslib": "^1.9.3" }, "dependencies": { @@ -25675,13 +25673,13 @@ } }, "@sentry/hub": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.29.0.tgz", - "integrity": "sha512-nIV2NtTn16VukTtWFhROHJ35NyUIXgEGtesG8a1i7D4iRSvkfLkLrQ9i6D0BAE2huqKqQemO3zGEPR00szqsiA==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.32.1.tgz", + "integrity": "sha512-DDBuikefmsXH0a4yI0HSbBA9I+VZ6cJi+Bp2oTpkzo7soy1ClzYVamd/tTDpBH5R8u8mmHQUQgIJGRm63Mnk+Q==", "requires": { - "@sentry/core": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/core": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "tslib": "^1.9.3" }, "dependencies": { @@ -25693,12 +25691,12 @@ } }, "@sentry/integrations": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.29.0.tgz", - "integrity": "sha512-BkZe3ALij320VtC5bNkeSz3OUhT9oxZsj2lf5rCuRFqcqw4tvVNADF/Y98mf0L4VCy582M9MlNXmwfewJjxGOA==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.32.1.tgz", + "integrity": "sha512-FYu+wQc6sjKQelqgfGA1NFB+lnOmvY64I2MiygYVQZSMQ35wzg2MlJnzJcbGNmJEIvveyv0N2CFMS5m4K8YPYw==", "requires": { - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "localforage": "^1.8.1", "tslib": "^1.9.3" }, @@ -25711,13 +25709,13 @@ } }, "@sentry/react": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.29.0.tgz", - "integrity": "sha512-pJ138QTChfAiYzFrCgycBgXrAVARV6TdVvLB8z/HsqbHzPq17RhyF9M1xPE4ffeLDQAEuSudwED9CLOpJqKnAw==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.32.1.tgz", + "integrity": "sha512-DeI5N0nTn4tc1/4+ZeiSyGoMBYsYTqoRBn8F/UBMNIMseBh4/6d85QX6HyyrZi0o/N9jzMq0mnxJNJlNaicHfQ==", "requires": { - "@sentry/browser": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/browser": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "hoist-non-react-statics": "^3.3.2", "tslib": "^1.9.3" }, @@ -25730,40 +25728,40 @@ } }, "@sentry/react-native": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-4.13.0.tgz", - "integrity": "sha512-CxQd5jWPKEPgR1SH5ppf555h7DMhSBZMU3eSZ/VNT+BocgzxxBnf/tcJj92+gpwrzt2m7MiZ3uDfyfQOgyMc8Q==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-4.14.0.tgz", + "integrity": "sha512-wX6dWrikEYjPzuRPLr3kpa2h6cXpjouB3DgxF1TKMLBnhtuVlPsZn7RpDrMMnNqAHRiNTYBnr+37Qhs55+EGwg==", "requires": { - "@sentry/browser": "7.29.0", + "@sentry/browser": "7.32.1", "@sentry/cli": "1.74.4", - "@sentry/core": "7.29.0", - "@sentry/hub": "7.29.0", - "@sentry/integrations": "7.29.0", - "@sentry/react": "7.29.0", - "@sentry/tracing": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/core": "7.32.1", + "@sentry/hub": "7.32.1", + "@sentry/integrations": "7.32.1", + "@sentry/react": "7.32.1", + "@sentry/tracing": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "@sentry/wizard": "1.4.0" } }, "@sentry/replay": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.29.0.tgz", - "integrity": "sha512-Gw7HgviJQu6pX5RFQGVY38Av4qFn9otrZdwSSl/QK5hIyg6yhlh5h7U0ydZkrYYGiW6Z6SYYRpEWCJc/Wbh+ZQ==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.32.1.tgz", + "integrity": "sha512-nRy2upcZecRveMCatyeukNQQH39/9lSF/j6PhWTRyHcam5bvOb2d2mM0TiIfvYxNM1ePb+9SvX1W0qqpmvqyGA==", "requires": { - "@sentry/core": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0" + "@sentry/core": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1" } }, "@sentry/tracing": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.29.0.tgz", - "integrity": "sha512-MAN/G6XROtRhzo/KDjddb6VJn/Q1TaPLwdyj9vvfkUkBNtlt5k16oXp+u7eHWX0uujER9wnZtj2ivXaPeqq0VA==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.32.1.tgz", + "integrity": "sha512-MG67+DzsbEM0p7+g/H5DQqsjFCXkvF50gK2+8EpfO6N2uqYpELPMIeTkERtMiqjhkDZ11bokWKE33CvA/TEF5Q==", "requires": { - "@sentry/core": "7.29.0", - "@sentry/types": "7.29.0", - "@sentry/utils": "7.29.0", + "@sentry/core": "7.32.1", + "@sentry/types": "7.32.1", + "@sentry/utils": "7.32.1", "tslib": "^1.9.3" }, "dependencies": { @@ -25775,16 +25773,16 @@ } }, "@sentry/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.29.0.tgz", - "integrity": "sha512-DmoEpoqHPty3VxqubS/5gxarwebHRlcBd/yuno+PS3xy++/i9YPjOWLZhU2jYs1cW68M9R6CcCOiC9f2ckJjdw==" + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.32.1.tgz", + "integrity": "sha512-yWS5no9Xxftgb6IGjj7iK6TvOk6rfy2H5gKcj4DrPqSWKmh0jfszUoX4B+olkt7H75sTSQqv3yiuMsySsMh+6Q==" }, "@sentry/utils": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.29.0.tgz", - "integrity": "sha512-ICcBwTiBGK8NQA8H2BJo0JcMN6yCeKLqNKNMVampRgS6wSfSk1edvcTdhRkW3bSktIGrIPZrKskBHyMwDGF2XQ==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.32.1.tgz", + "integrity": "sha512-kZVpqRTC+UiI/PlSxEuv0G5G0lZeTZTL/pyRb8sptLhFo7QxEaGO/XCDNzWC4vQdm5PrpCVZ6w/XCYCHEhx4Tw==", "requires": { - "@sentry/types": "7.29.0", + "@sentry/types": "7.32.1", "tslib": "^1.9.3" }, "dependencies": { @@ -25832,24 +25830,24 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, "@sinclair/typebox": { - "version": "0.24.44", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.44.tgz", - "integrity": "sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg==" + "version": "0.25.21", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", + "integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==" }, "@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "requires": { "type-detect": "4.0.8" } }, "@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", "requires": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^2.0.0" } }, "@stream-io/flat-list-mvcp": { @@ -26044,13 +26042,13 @@ "dev": true }, "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -26076,9 +26074,9 @@ } }, "@types/babel__traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -26142,9 +26140,9 @@ "peer": true }, "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, "requires": { "@types/node": "*" @@ -26194,9 +26192,9 @@ } }, "@types/jest": { - "version": "29.2.6", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.6.tgz", - "integrity": "sha512-XEUC/Tgw3uMh6Ho8GkUtQ2lPhY5Fmgyp3TdlkTJs1W9VgNxs+Ow/x3Elh8lHQKqCbZL0AubQuqWjHVT033Hhrw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.0.tgz", + "integrity": "sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==", "dev": true, "requires": { "expect": "^29.0.0", @@ -26239,9 +26237,9 @@ "dev": true }, "@types/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "@types/prop-types": { @@ -27209,9 +27207,9 @@ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "axios": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.3.tgz", - "integrity": "sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.4.tgz", + "integrity": "sha512-lIQuCfBJvZB/Bv7+RWUqEJqNShGOVpk9v7P0ZWx5Ip0qY6u7JBAU6dzQPMLasU9vHL2uD8av/1FDJXj7n6c39w==", "dev": true, "requires": { "follow-redirects": "^1.15.0", @@ -27235,15 +27233,15 @@ "requires": {} }, "babel-jest": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.1.tgz", - "integrity": "sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.0.tgz", + "integrity": "sha512-M61cGPg4JBashDvIzKoIV/y95mSF6x3ome7CMEaszUTHD4uo6dtC6Nln+fvRTspYNtwy8lDHl5lmoTBSNY/a+g==", "dev": true, "requires": { - "@jest/transform": "^29.3.1", + "@jest/transform": "^29.4.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.2.0", + "babel-preset-jest": "^29.4.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -27367,9 +27365,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz", - "integrity": "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.0.tgz", + "integrity": "sha512-a/sZRLQJEmsmejQ2rPEUe35nO1+C9dc9O1gplH1SXmJxveQSRUYdBk8yGZG/VOUuZs1u2aHZJusEGoRMbhhwCg==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -27529,12 +27527,12 @@ } }, "babel-preset-jest": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz", - "integrity": "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.0.tgz", + "integrity": "sha512-fUB9vZflUSM3dO/6M2TCAepTzvA4VkOvl67PjErcrQMGt9Eve7uazaeyCZ2th3UtI7ljpiBJES0F7A1vBRsLZA==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^29.2.0", + "babel-plugin-jest-hoist": "^29.4.0", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -29729,16 +29727,16 @@ } }, "expect": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz", - "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.4.0.tgz", + "integrity": "sha512-pzaAwjBgLEVxBh6ZHiqb9Wv3JYuv6m8ntgtY7a48nS+2KbX0EJkPS3FQlKiTZNcqzqJHNyQsfjqN60w1hPUBfQ==", "dev": true, "requires": { - "@jest/expect-utils": "^29.3.1", + "@jest/expect-utils": "^29.4.0", "jest-get-type": "^29.2.0", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1" + "jest-matcher-utils": "^29.4.0", + "jest-message-util": "^29.4.0", + "jest-util": "^29.4.0" } }, "extend": { @@ -31316,21 +31314,21 @@ "integrity": "sha512-mz0sldKOEnt7qpqLLYM9Rwq9zGuGtj5nihz87KWBSy6PR9eu0cmyPkW3b+Exw4iVivcb2bFf6uVq0Q9aNgdIhw==" }, "jest": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.3.1.tgz", - "integrity": "sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.0.tgz", + "integrity": "sha512-Zfd4UzNxPkSoHRBkg225rBjQNa6pVqbh20MGniAzwaOzYLd+pQUcAwH+WPxSXxKFs+QWYfPYIq9hIVSmdVQmPA==", "dev": true, "requires": { - "@jest/core": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.4.0", + "@jest/types": "^29.4.0", "import-local": "^3.0.2", - "jest-cli": "^29.3.1" + "jest-cli": "^29.4.0" } }, "jest-changed-files": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.2.0.tgz", - "integrity": "sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.4.0.tgz", + "integrity": "sha512-rnI1oPxgFghoz32Y8eZsGJMjW54UlqT17ycQeCEktcxxwqqKdlj9afl8LNeO0Pbu+h2JQHThQP0BzS67eTRx4w==", "dev": true, "requires": { "execa": "^5.0.0", @@ -31349,28 +31347,28 @@ } }, "jest-circus": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.3.1.tgz", - "integrity": "sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.0.tgz", + "integrity": "sha512-/pFBaCeLzCavRWyz14JwFgpZgPpEZdS6nPnREhczbHl2wy2UezvYcVp5akVFfUmBaA4ThAUp0I8cpgkbuNOm3g==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.4.0", + "@jest/expect": "^29.4.0", + "@jest/test-result": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-each": "^29.4.0", + "jest-matcher-utils": "^29.4.0", + "jest-message-util": "^29.4.0", + "jest-runtime": "^29.4.0", + "jest-snapshot": "^29.4.0", + "jest-util": "^29.4.0", "p-limit": "^3.1.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -31442,21 +31440,21 @@ } }, "jest-cli": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.3.1.tgz", - "integrity": "sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.0.tgz", + "integrity": "sha512-YUkICcxjUd864VOzbfQEi2qd2hIIOd9bRF7LJUNyhWb3Khh3YKrbY0LWwoZZ4WkvukiNdvQu0Z4s6zLsY4hYfg==", "dev": true, "requires": { - "@jest/core": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.4.0", + "@jest/test-result": "^29.4.0", + "@jest/types": "^29.4.0", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-config": "^29.4.0", + "jest-util": "^29.4.0", + "jest-validate": "^29.4.0", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -31568,31 +31566,31 @@ } }, "jest-config": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.3.1.tgz", - "integrity": "sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.4.0.tgz", + "integrity": "sha512-jtgd72nN4Mob4Oego3N/pLRVfR2ui1hv+yO6xR/SUi5G7NtZ/grr95BJ1qRSDYZshuA0Jw57fnttZHZKb04+CA==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.3.1", - "@jest/types": "^29.3.1", - "babel-jest": "^29.3.1", + "@jest/test-sequencer": "^29.4.0", + "@jest/types": "^29.4.0", + "babel-jest": "^29.4.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.3.1", - "jest-environment-node": "^29.3.1", + "jest-circus": "^29.4.0", + "jest-environment-node": "^29.4.0", "jest-get-type": "^29.2.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-resolve": "^29.4.0", + "jest-runner": "^29.4.0", + "jest-util": "^29.4.0", + "jest-validate": "^29.4.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -31655,15 +31653,15 @@ } }, "jest-diff": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz", - "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.0.tgz", + "integrity": "sha512-s8KNvFx8YgdQ4fn2YLDQ7N6kmVOP68dUDVJrCHNsTc3UM5jcmyyFeYKL8EPWBQbJ0o0VvDGbWp8oYQ1nsnqnWw==", "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^29.3.1", "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.0" }, "dependencies": { "ansi-styles": { @@ -31727,16 +31725,16 @@ } }, "jest-each": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.3.1.tgz", - "integrity": "sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.4.0.tgz", + "integrity": "sha512-LTOvB8JDVFjrwXItyQiyLuDYy5PMApGLLzbfIYR79QLpeohS0bcS6j2HjlWuRGSM8QQQyp+ico59Blv+Jx3fMw==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", - "jest-util": "^29.3.1", - "pretty-format": "^29.3.1" + "jest-util": "^29.4.0", + "pretty-format": "^29.4.0" }, "dependencies": { "ansi-styles": { @@ -31791,16 +31789,16 @@ } }, "jest-environment-node": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.3.1.tgz", - "integrity": "sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.0.tgz", + "integrity": "sha512-WVveE3fYSH6FhDtZdvXhFKeLsDRItlQgnij+HQv6ZKxTdT1DB5O0sHXKCEC3K5mHraMs1Kzn4ch9jXC7H4L4wA==", "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.4.0", + "@jest/fake-timers": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-mock": "^29.4.0", + "jest-util": "^29.4.0" } }, "jest-get-type": { @@ -31810,12 +31808,12 @@ "dev": true }, "jest-haste-map": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.1.tgz", - "integrity": "sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.0.tgz", + "integrity": "sha512-m/pIEfoK0HoJz4c9bkgS5F9CXN2AM22eaSmUcmqTpadRlNVBOJE2CwkgaUzbrNn5MuAqTV1IPVYwWwjHNnk8eA==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", @@ -31823,32 +31821,32 @@ "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-util": "^29.4.0", + "jest-worker": "^29.4.0", "micromatch": "^4.0.4", "walker": "^1.0.8" } }, "jest-leak-detector": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz", - "integrity": "sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.4.0.tgz", + "integrity": "sha512-fEGHS6ijzgSv5exABkCecMHNmyHcV52+l39ZsxuwfxmQMp43KBWJn2/Fwg8/l4jTI9uOY9jv8z1dXGgL0PHFjA==", "dev": true, "requires": { "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.0" } }, "jest-matcher-utils": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz", - "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.4.0.tgz", + "integrity": "sha512-pU4OjBn96rDdRIaPUImbPiO2ETyRVzkA1EZVu9AxBDv/XPDJ7JWfkb6IiDT5jwgicaPHMrB/fhVa6qjG6potfA==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^29.3.1", + "jest-diff": "^29.4.0", "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.0" }, "dependencies": { "ansi-styles": { @@ -31903,17 +31901,17 @@ } }, "jest-message-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", - "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.0.tgz", + "integrity": "sha512-0FvobqymmhE9pDEifvIcni9GeoKLol8eZspzH5u41g1wxYtLS60a9joT95dzzoCgrKRidNz64eaAXyzaULV8og==", "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -31969,13 +31967,13 @@ } }, "jest-mock": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.1.tgz", - "integrity": "sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.0.tgz", + "integrity": "sha512-+ShT5i+hcu/OFQRV0f/V/YtwpdFcHg64JZ9A8b40JueP+X9HNrZAYGdkupGIzsUK8AucecxCt4wKauMchxubLQ==", "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@types/node": "*", - "jest-util": "^29.3.1" + "jest-util": "^29.4.0" } }, "jest-pnp-resolver": { @@ -31992,19 +31990,19 @@ "dev": true }, "jest-resolve": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.3.1.tgz", - "integrity": "sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.4.0.tgz", + "integrity": "sha512-g7k7l53T+uC9Dp1mbHyDNkcCt0PMku6Wcfpr1kcMLwOHmM3vucKjSM5+DSa1r4vlDZojh8XH039J3z4FKmtTSw==", "dev": true, "requires": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-util": "^29.4.0", + "jest-validate": "^29.4.0", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" }, "dependencies": { @@ -32066,40 +32064,40 @@ } }, "jest-resolve-dependencies": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz", - "integrity": "sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.0.tgz", + "integrity": "sha512-hxfC84trREyULSj1Cm+fMjnudrrI2dVQ04COjZRcjCZ97boJlPtfJ+qrl/pN7YXS2fnu3wTHEc3LO094pngL6A==", "dev": true, "requires": { "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.3.1" + "jest-snapshot": "^29.4.0" } }, "jest-runner": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.3.1.tgz", - "integrity": "sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.4.0.tgz", + "integrity": "sha512-4zpcv0NOiJleqT0NAs8YcVbK8MhVRc58CBBn9b0Exc8VPU9GKI+DbzDUZqJYdkJhJSZFy2862l/F6hAqIow1hg==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/environment": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.0", + "@jest/environment": "^29.4.0", + "@jest/test-result": "^29.4.0", + "@jest/transform": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-leak-detector": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-resolve": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-util": "^29.3.1", - "jest-watcher": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-environment-node": "^29.4.0", + "jest-haste-map": "^29.4.0", + "jest-leak-detector": "^29.4.0", + "jest-message-util": "^29.4.0", + "jest-resolve": "^29.4.0", + "jest-runtime": "^29.4.0", + "jest-util": "^29.4.0", + "jest-watcher": "^29.4.0", + "jest-worker": "^29.4.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -32175,31 +32173,32 @@ } }, "jest-runtime": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.3.1.tgz", - "integrity": "sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.4.0.tgz", + "integrity": "sha512-2zumwaGXsIuSF92Ui5Pn5hZV9r7AHMclfBLikrXSq87/lHea9anQ+mC+Cjz/DYTbf/JMjlK1sjZRh8K3yYNvWg==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/globals": "^29.3.1", + "@jest/environment": "^29.4.0", + "@jest/fake-timers": "^29.4.0", + "@jest/globals": "^29.4.0", "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.4.0", + "@jest/transform": "^29.4.0", + "@jest/types": "^29.4.0", "@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.3.1", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", + "jest-haste-map": "^29.4.0", + "jest-message-util": "^29.4.0", + "jest-mock": "^29.4.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-resolve": "^29.4.0", + "jest-snapshot": "^29.4.0", + "jest-util": "^29.4.0", + "semver": "^7.3.5", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -32271,9 +32270,9 @@ } }, "jest-snapshot": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.3.1.tgz", - "integrity": "sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.4.0.tgz", + "integrity": "sha512-UnK3MhdEWrQ2J6MnlKe51tvN5FjRUBQnO4m1LPlDx61or3w9+cP/U0x9eicutgunu/QzE4WC82jj6CiGIAFYzw==", "dev": true, "requires": { "@babel/core": "^7.11.6", @@ -32282,23 +32281,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/expect-utils": "^29.4.0", + "@jest/transform": "^29.4.0", + "@jest/types": "^29.4.0", "@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.3.1", + "expect": "^29.4.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.3.1", + "jest-diff": "^29.4.0", "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.4.0", + "jest-matcher-utils": "^29.4.0", + "jest-message-util": "^29.4.0", + "jest-util": "^29.4.0", "natural-compare": "^1.4.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.0", "semver": "^7.3.5" }, "dependencies": { @@ -32354,11 +32353,11 @@ } }, "jest-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", - "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.0.tgz", + "integrity": "sha512-lCCwlze7UEV8TpR9ArS8w0cTbcMry5tlBkg7QSc5og5kNyV59dnY2aKHu5fY2k5aDJMQpCUGpvL2w6ZU44lveA==", "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -32412,17 +32411,17 @@ } }, "jest-validate": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.3.1.tgz", - "integrity": "sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.4.0.tgz", + "integrity": "sha512-EXS7u594nX3aAPBnARxBdJ1eZ1cByV6MWrK0Qpt9lt/BcY0p0yYGp/EGJ8GhdLDQh+RFf8qMt2wzbbVzpj5+Vg==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.0", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", "leven": "^3.1.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.0" }, "dependencies": { "ansi-styles": { @@ -32483,18 +32482,18 @@ } }, "jest-watcher": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.3.1.tgz", - "integrity": "sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.4.0.tgz", + "integrity": "sha512-PnnfLygNKelWOJwpAYlcsQjB+OxRRdckD0qiGmYng4Hkz1ZwK3jvCaJJYiywz2msQn4rBNLdriasJtv7YpWHpA==", "dev": true, "requires": { - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.4.0", + "@jest/types": "^29.4.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.3.1", + "jest-util": "^29.4.0", "string-length": "^4.0.1" }, "dependencies": { @@ -32559,13 +32558,13 @@ } }, "jest-worker": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", - "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.0.tgz", + "integrity": "sha512-dICMQ+Q4W0QVMsaQzWlA1FVQhKNz7QcDCOGtbk1GCAd0Lai+wdkQvfmQwL4MjGumineh1xz+6M5oMj3rfWS02A==", "dev": true, "requires": { "@types/node": "*", - "jest-util": "^29.3.1", + "jest-util": "^29.4.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -35197,11 +35196,11 @@ } }, "pretty-format": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", - "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.0.tgz", + "integrity": "sha512-J+EVUPXIBHCdWAbvGBwXs0mk3ljGppoh/076g1S8qYS8nVG4u/yrhMvyTFHYYYKWnDdgRLExx0vA7pzxVGdlNw==", "requires": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.4.0", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -36322,9 +36321,9 @@ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" }, "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.0.tgz", + "integrity": "sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==", "dev": true }, "restore-cursor": { @@ -37727,9 +37726,9 @@ "devOptional": true }, "ua-parser-js": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", - "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" + "version": "0.7.33", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", + "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==" }, "uglify-es": { "version": "3.3.9", @@ -38248,9 +38247,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", + "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", "dev": true, "requires": { "imurmurhash": "^0.1.4", diff --git a/package.json b/package.json index 39fb2bb305..e5b1851190 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "@msgpack/msgpack": "2.8.0", "@nozbe/watermelondb": "0.25.1", "@nozbe/with-observables": "1.4.1", - "@react-native-camera-roll/camera-roll": "5.2.2", + "@react-native-camera-roll/camera-roll": "5.2.3", "@react-native-clipboard/clipboard": "1.11.1", "@react-native-community/datetimepicker": "6.7.3", "@react-native-community/netinfo": "9.3.7", @@ -32,7 +32,7 @@ "@react-navigation/native": "6.1.2", "@react-navigation/stack": "6.3.11", "@rudderstack/rudder-sdk-react-native": "1.5.2", - "@sentry/react-native": "4.13.0", + "@sentry/react-native": "4.14.0", "@stream-io/flat-list-mvcp": "0.10.2", "base-64": "1.0.0", "commonmark": "npm:@mattermost/commonmark@0.30.1-0", @@ -118,7 +118,7 @@ "@types/commonmark": "0.27.5", "@types/commonmark-react-renderer": "4.3.1", "@types/deep-equal": "1.0.1", - "@types/jest": "29.2.6", + "@types/jest": "29.4.0", "@types/lodash": "4.14.191", "@types/mime-db": "1.43.1", "@types/querystringify": "2.0.0", @@ -139,9 +139,9 @@ "@types/uuid": "9.0.0", "@typescript-eslint/eslint-plugin": "5.49.0", "@typescript-eslint/parser": "5.49.0", - "axios": "1.2.3", + "axios": "1.2.4", "axios-cookiejar-support": "4.0.6", - "babel-jest": "29.3.1", + "babel-jest": "29.4.0", "babel-loader": "9.1.2", "babel-plugin-module-resolver": "5.0.0", "deep-freeze": "0.0.1", @@ -154,8 +154,8 @@ "eslint-plugin-react-hooks": "4.6.0", "husky": "8.0.3", "isomorphic-fetch": "3.0.0", - "jest": "29.3.1", - "jest-cli": "29.3.1", + "jest": "29.4.0", + "jest-cli": "29.4.0", "jetifier": "2.0.0", "metro-react-native-babel-preset": "0.74.1", "mmjstool": "github:mattermost/mattermost-utilities#010f456ea8be5beebafdb8776177cba515c1969e", diff --git a/test/setup.ts b/test/setup.ts index a2c629ad1d..deee43530e 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -92,6 +92,11 @@ jest.doMock('react-native', () => { }, }), }, + SplitView: { + addListener: jest.fn(), + removeListeners: jest.fn(), + isRunningInSplitView: jest.fn().mockResolvedValue(() => ({isSplitView: false, isTablet: false})), + }, Notifications: { getDeliveredNotifications: jest.fn().mockResolvedValue([]), removeChannelNotifications: jest.fn().mockImplementation(), diff --git a/types/global/device.d.ts b/types/global/device.d.ts new file mode 100644 index 0000000000..3409990ccf --- /dev/null +++ b/types/global/device.d.ts @@ -0,0 +1,7 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +type SplitViewResult = { + isSplitView?: boolean; + isTablet?: boolean; +}