diff --git a/app.config.js b/app.config.js index 33677eaa5e..fe65c4fde5 100644 --- a/app.config.js +++ b/app.config.js @@ -55,6 +55,7 @@ module.exports = function (config) { : undefined const UPDATES_ENABLED = !!UPDATES_CHANNEL + const USE_SENTRY = Boolean(process.env.SENTRY_AUTH_TOKEN) const SENTRY_DIST = `${PLATFORM}.${VERSION}.${IS_TESTFLIGHT ? 'tf' : ''}${ IS_DEV ? 'dev' : '' }` @@ -186,7 +187,15 @@ module.exports = function (config) { }, plugins: [ 'expo-localization', - Boolean(process.env.SENTRY_AUTH_TOKEN) && 'sentry-expo', + USE_SENTRY && [ + '@sentry/react-native/expo', + { + organization: 'blueskyweb', + project: 'react-native', + release: VERSION, + dist: SENTRY_DIST, + }, + ], [ 'expo-build-properties', { @@ -288,7 +297,7 @@ module.exports = function (config) { * @see https://docs.expo.dev/guides/using-sentry/#app-configuration */ { - file: 'sentry-expo/upload-sourcemaps', + file: './postHooks/uploadSentrySourcemapsPostHook', config: { organization: 'blueskyweb', project: 'react-native', diff --git a/package.json b/package.json index b007bf871d..ba7882902c 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "@segment/analytics-react": "^1.0.0-rc1", "@segment/analytics-react-native": "^2.10.1", "@segment/sovran-react-native": "^0.4.5", - "@sentry/react-native": "5.5.0", + "@sentry/react-native": "5.32.0", "@tamagui/focus-scope": "^1.84.1", "@tanstack/query-async-storage-persister": "^5.25.0", "@tanstack/react-query": "^5.8.1", @@ -178,7 +178,7 @@ "react-native-fs": "^2.20.0", "react-native-gesture-handler": "~2.16.2", "react-native-get-random-values": "~1.11.0", - "react-native-image-crop-picker": "0.40.3", + "react-native-image-crop-picker": "0.41.2", "react-native-ios-context-menu": "^1.15.3", "react-native-keyboard-controller": "^1.12.1", "react-native-mmkv": "^2.12.2", @@ -201,7 +201,6 @@ "react-responsive": "^9.0.2", "react-textarea-autosize": "^8.5.3", "rn-fetch-blob": "^0.12.0", - "sentry-expo": "~7.0.1", "statsig-react-native-expo": "^4.6.1", "tippy.js": "^6.3.7", "tlds": "^1.234.0", diff --git a/patches/@sentry+react-native+5.32.0.patch b/patches/@sentry+react-native+5.32.0.patch new file mode 100644 index 0000000000..a5ccecc21a --- /dev/null +++ b/patches/@sentry+react-native+5.32.0.patch @@ -0,0 +1,36 @@ +diff --git a/node_modules/@sentry/react-native/dist/js/utils/ignorerequirecyclelogs.js b/node_modules/@sentry/react-native/dist/js/utils/ignorerequirecyclelogs.js +index 7e0b4cd..177454c 100644 +--- a/node_modules/@sentry/react-native/dist/js/utils/ignorerequirecyclelogs.js ++++ b/node_modules/@sentry/react-native/dist/js/utils/ignorerequirecyclelogs.js +@@ -3,6 +3,8 @@ import { LogBox } from 'react-native'; + * This is a workaround for using fetch on RN, this is a known issue in react-native and only generates a warning. + */ + export function ignoreRequireCycleLogs() { +- LogBox.ignoreLogs(['Require cycle:']); ++ try { ++ LogBox.ignoreLogs(['Require cycle:']); ++ } catch (e) {} + } + //# sourceMappingURL=ignorerequirecyclelogs.js.map +\ No newline at end of file +diff --git a/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js b/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js +index 0f244f2..ae7dfb3 100755 +--- a/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js ++++ b/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js +@@ -174,6 +174,7 @@ if (!outputDir) { + process.exit(1); + } + ++const otherArgs = process.argv.slice(3); + const files = getAssetPathsSync(outputDir); + const groupedAssets = groupAssets(files); + +@@ -195,7 +196,7 @@ for (const [assetGroupName, assets] of Object.entries(groupedAssets)) { + + const isHermes = assets.find(asset => asset.endsWith('.hbc')); + const windowsCallback = process.platform === "win32" ? 'node ' : ''; +- execSync(`${windowsCallback}${sentryCliBin} sourcemaps upload ${isHermes ? '--debug-id-reference' : ''} ${assets.join(' ')}`, { ++ execSync(`${windowsCallback}${sentryCliBin} sourcemaps upload ${isHermes ? '--debug-id-reference' : ''} ${assets.join(' ')} ${otherArgs.join(' ')}`, { + env: { + ...process.env, + [SENTRY_PROJECT]: sentryProject, diff --git a/patches/@sentry+react-native+5.5.0.patch b/patches/@sentry+react-native+5.5.0.patch deleted file mode 100644 index 2962aa44c2..0000000000 --- a/patches/@sentry+react-native+5.5.0.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/node_modules/@sentry/react-native/dist/js/utils/ignorerequirecyclelogs.js b/node_modules/@sentry/react-native/dist/js/utils/ignorerequirecyclelogs.js -index 7e0b4cd..177454c 100644 ---- a/node_modules/@sentry/react-native/dist/js/utils/ignorerequirecyclelogs.js -+++ b/node_modules/@sentry/react-native/dist/js/utils/ignorerequirecyclelogs.js -@@ -3,6 +3,8 @@ import { LogBox } from 'react-native'; - * This is a workaround for using fetch on RN, this is a known issue in react-native and only generates a warning. - */ - export function ignoreRequireCycleLogs() { -- LogBox.ignoreLogs(['Require cycle:']); -+ try { -+ LogBox.ignoreLogs(['Require cycle:']); -+ } catch (e) {} - } - //# sourceMappingURL=ignorerequirecyclelogs.js.map -\ No newline at end of file diff --git a/patches/expo-modules-core+1.12.11.patch b/patches/expo-modules-core+1.12.11.patch index 4bfecb3880..4878bb9f7e 100644 --- a/patches/expo-modules-core+1.12.11.patch +++ b/patches/expo-modules-core+1.12.11.patch @@ -12,28 +12,3 @@ index bb74e80..0aa0202 100644 Map constants = new HashMap<>(3); constants.put(MODULES_CONSTANTS_KEY, new HashMap<>()); -diff --git a/node_modules/expo-modules-core/build/uuid/uuid.js b/node_modules/expo-modules-core/build/uuid/uuid.js -index 109d3fe..c421931 100644 ---- a/node_modules/expo-modules-core/build/uuid/uuid.js -+++ b/node_modules/expo-modules-core/build/uuid/uuid.js -@@ -1,5 +1,7 @@ - import bytesToUuid from './lib/bytesToUuid'; - import { Uuidv5Namespace } from './uuid.types'; -+import { ensureNativeModulesAreInstalled } from '../ensureNativeModulesAreInstalled'; -+ensureNativeModulesAreInstalled(); - const nativeUuidv4 = globalThis?.expo?.uuidv4; - const nativeUuidv5 = globalThis?.expo?.uuidv5; - function uuidv4() { -diff --git a/node_modules/expo-modules-core/ios/Core/SharedObjects/SharedObjectRegistry.swift b/node_modules/expo-modules-core/ios/Core/SharedObjects/SharedObjectRegistry.swift -index ee2268a..4851b67 100644 ---- a/node_modules/expo-modules-core/ios/Core/SharedObjects/SharedObjectRegistry.swift -+++ b/node_modules/expo-modules-core/ios/Core/SharedObjects/SharedObjectRegistry.swift -@@ -173,7 +173,7 @@ public final class SharedObjectRegistry { - } - - internal func clear() { -- Self.lockQueue.async { -+ Self.lockQueue.sync { - self.pairs.removeAll() - } - } diff --git a/postHooks/uploadSentrySourcemapsPostHook.js b/postHooks/uploadSentrySourcemapsPostHook.js new file mode 100644 index 0000000000..756e64253c --- /dev/null +++ b/postHooks/uploadSentrySourcemapsPostHook.js @@ -0,0 +1,34 @@ +const exec = require('child_process').execSync + +const SENTRY_AUTH_TOKEN = process.env.SENTRY_AUTH_TOKEN + +module.exports = ({config}) => { + if (!SENTRY_AUTH_TOKEN) { + console.log( + 'SENTRY_AUTH_TOKEN environment variable must be set to upload sourcemaps. Skipping.', + ) + return + } + + const org = config.organization + const project = config.project + const release = config.release + const dist = config.dist + + if (!org || !project || !release || !dist) { + console.log( + '"organization", "project", "release", and "dist" must be set in the hook config to upload sourcemaps. Skipping.', + ) + return + } + + try { + console.log('Uploading sourcemaps to Sentry...') + exec( + `node node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps dist --url https://sentry.io/ -o ${org} -p ${project} -r ${release} -d ${dist}`, + ) + console.log('Sourcemaps uploaded to Sentry.') + } catch (e) { + console.error('Error uploading sourcemaps to Sentry:', e) + } +} diff --git a/src/lib/analytics/analytics.tsx b/src/lib/analytics/analytics.tsx index a0cc7cd6e8..5f93d982fd 100644 --- a/src/lib/analytics/analytics.tsx +++ b/src/lib/analytics/analytics.tsx @@ -2,12 +2,12 @@ import React from 'react' import {AppState, AppStateStatus} from 'react-native' import AsyncStorage from '@react-native-async-storage/async-storage' import {createClient, SegmentClient} from '@segment/analytics-react-native' +import * as Sentry from '@sentry/react-native' import {sha256} from 'js-sha256' -import {Native} from 'sentry-expo' -import {useSession, SessionAccount} from '#/state/session' -import {ScreenPropertiesMap, TrackPropertiesMap} from './types' import {logger} from '#/logger' +import {SessionAccount, useSession} from '#/state/session' +import {ScreenPropertiesMap, TrackPropertiesMap} from './types' type AppInfo = { build?: string | undefined @@ -72,7 +72,7 @@ export function init(account: SessionAccount | undefined) { if (account.did) { const did_hashed = sha256(account.did) client.identify(did_hashed, {did_hashed}) - Native.setUser({id: did_hashed}) + Sentry.setUser({id: did_hashed}) logger.debug('Ping w/hash') } else { logger.debug('Ping w/o hash') diff --git a/src/lib/analytics/analytics.web.tsx b/src/lib/analytics/analytics.web.tsx index 72b28f9c0f..c7f0ed3b14 100644 --- a/src/lib/analytics/analytics.web.tsx +++ b/src/lib/analytics/analytics.web.tsx @@ -1,11 +1,11 @@ import React from 'react' import {createClient} from '@segment/analytics-react' +import * as Sentry from '@sentry/react-native' import {sha256} from 'js-sha256' -import {Browser} from 'sentry-expo' -import {ScreenPropertiesMap, TrackPropertiesMap} from './types' -import {useSession, SessionAccount} from '#/state/session' import {logger} from '#/logger' +import {SessionAccount, useSession} from '#/state/session' +import {ScreenPropertiesMap, TrackPropertiesMap} from './types' type SegmentClient = ReturnType @@ -70,7 +70,7 @@ export function init(account: SessionAccount | undefined) { if (account.did) { const did_hashed = sha256(account.did) client.identify(did_hashed, {did_hashed}) - Browser.setUser({id: did_hashed}) + Sentry.setUser({id: did_hashed}) logger.debug('Ping w/hash') } else { logger.debug('Ping w/o hash') diff --git a/src/lib/sentry.ts b/src/lib/sentry.ts index 1180b0db6c..37d41e3a2d 100644 --- a/src/lib/sentry.ts +++ b/src/lib/sentry.ts @@ -5,7 +5,7 @@ import {Platform} from 'react-native' import {nativeApplicationVersion, nativeBuildVersion} from 'expo-application' -import {init} from 'sentry-expo' +import {init} from '@sentry/react-native' import {BUILD_ENV, IS_DEV, IS_TESTFLIGHT} from 'lib/app-info' @@ -30,10 +30,10 @@ const dist = `${Platform.OS}.${nativeBuildVersion}.${ }${IS_DEV ? 'dev' : ''}` init({ + enabled: !__DEV__, autoSessionTracking: false, dsn: 'https://05bc3789bf994b81bd7ce20c86ccd3ae@o4505071687041024.ingest.sentry.io/4505071690514432', debug: false, // If `true`, Sentry will try to print out useful debugging information if something goes wrong with sending the event. Set it to `false` in production - enableInExpoDevelopment: false, // enable this to test in dev environment: BUILD_ENV ?? 'development', dist, release, diff --git a/src/logger/__tests__/logger.test.ts b/src/logger/__tests__/logger.test.ts index 12d60abaac..a3ccd037d5 100644 --- a/src/logger/__tests__/logger.test.ts +++ b/src/logger/__tests__/logger.test.ts @@ -1,6 +1,6 @@ +import {beforeAll, describe, expect, jest, test} from '@jest/globals' +import * as Sentry from '@sentry/react-native' import {nanoid} from 'nanoid/non-secure' -import {jest, describe, expect, test, beforeAll} from '@jest/globals' -import {Native as Sentry} from 'sentry-expo' import {Logger, LogLevel, sentryTransport} from '#/logger' @@ -16,12 +16,10 @@ jest.mock('#/env', () => ({ LOG_DEBUG: '', })) -jest.mock('sentry-expo', () => ({ - Native: { - addBreadcrumb: jest.fn(), - captureException: jest.fn(), - captureMessage: jest.fn(), - }, +jest.mock('@sentry/react-native', () => ({ + addBreadcrumb: jest.fn(), + captureException: jest.fn(), + captureMessage: jest.fn(), })) beforeAll(() => { diff --git a/src/logger/sentry/index.ts b/src/logger/sentry/index.ts index a2ed8452d0..e771560e73 100644 --- a/src/logger/sentry/index.ts +++ b/src/logger/sentry/index.ts @@ -1 +1 @@ -export {Native as Sentry} from 'sentry-expo' +export * as Sentry from '@sentry/react-native' diff --git a/src/logger/sentry/index.web.ts b/src/logger/sentry/index.web.ts index 072b997f44..e771560e73 100644 --- a/src/logger/sentry/index.web.ts +++ b/src/logger/sentry/index.web.ts @@ -1 +1 @@ -export {Browser as Sentry} from 'sentry-expo' +export * as Sentry from '@sentry/react-native' diff --git a/src/state/shell/composer/useComposerKeyboardShortcut.tsx b/src/state/shell/composer/useComposerKeyboardShortcut.tsx index 0cdc6c7543..01306e36ea 100644 --- a/src/state/shell/composer/useComposerKeyboardShortcut.tsx +++ b/src/state/shell/composer/useComposerKeyboardShortcut.tsx @@ -48,7 +48,7 @@ export function useComposerKeyboardShortcut() { function handler(event: KeyboardEvent) { if (shouldIgnore(event)) return if ( - openDialogs.current.size > 0 || + openDialogs?.current.size > 0 || isModalActive || activeLightbox || isDrawerOpen diff --git a/yarn.lock b/yarn.lock index 75922d1efe..98479ba44c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3887,7 +3887,7 @@ dependencies: cross-spawn "^6.0.5" -"@expo/spawn-async@^1.5.0", "@expo/spawn-async@^1.7.0", "@expo/spawn-async@^1.7.2": +"@expo/spawn-async@^1.5.0", "@expo/spawn-async@^1.7.2": version "1.7.2" resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.7.2.tgz#fcfe66c3e387245e72154b1a7eae8cada6a47f58" integrity sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew== @@ -6006,188 +6006,181 @@ dset "^3.1.1" tiny-hashes "^1.0.1" -"@sentry-internal/tracing@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.52.0.tgz#c4e0750ad0c3949c5bb4b59cbb708b0fef274080" - integrity sha512-o1YPcRGtC9tjeFCvWRJsbgK94zpExhzfxWaldAKvi3PuWEmPeewSdO/Q5pBIY1QonvSI+Q3gysLRcVlLYHhO5A== +"@sentry-internal/feedback@7.119.0": + version "7.119.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-7.119.0.tgz#429b3ea0fd34e928d2e7de5dcbe9377272a3f221" + integrity sha512-om8TkAU5CQGO8nkmr7qsSBVkP+/vfeS4JgtW3sjoTK0fhj26+DljR6RlfCGWtYQdPSP6XV7atcPTjbSnsmG9FQ== dependencies: - "@sentry/core" "7.52.0" - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" - tslib "^1.9.3" + "@sentry/core" "7.119.0" + "@sentry/types" "7.119.0" + "@sentry/utils" "7.119.0" -"@sentry-internal/tracing@7.52.1": - version "7.52.1" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.52.1.tgz#c98823afd2f9814466fa26f24a1a54fe63b27c24" - integrity sha512-6N99rE+Ek0LgbqSzI/XpsKSLUyJjQ9nychViy+MP60p1x+hllukfTsDbNtUNrPlW0Bx+vqUrWKkAqmTFad94TQ== +"@sentry-internal/replay-canvas@7.119.0": + version "7.119.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-7.119.0.tgz#85669d184ba79150e64d05de02f5e2b616e68371" + integrity sha512-NL02VQx6ekPxtVRcsdp1bp5Tb5w6vnfBKSIfMKuDRBy5A10Uc3GSoy/c3mPyHjOxB84452A+xZSx6bliEzAnuA== dependencies: - "@sentry/core" "7.52.1" - "@sentry/types" "7.52.1" - "@sentry/utils" "7.52.1" - tslib "^1.9.3" + "@sentry/core" "7.119.0" + "@sentry/replay" "7.119.0" + "@sentry/types" "7.119.0" + "@sentry/utils" "7.119.0" -"@sentry/browser@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.52.0.tgz#55d266c89ed668389ff687e5cc885c27016ea85c" - integrity sha512-Sib0T24cQCqqqAhg+nZdfI7qNYGE03jiM3RbY7yG5UoycdnJzWEwrBVSzRTgg3Uya9TRTEGJ+d9vxPIU5TL7TA== +"@sentry-internal/tracing@7.119.0": + version "7.119.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.119.0.tgz#201561af2a4ad1837333287c26050a5e688537ca" + integrity sha512-oKdFJnn+56f0DHUADlL8o9l8jTib3VDLbWQBVkjD9EprxfaCwt2m8L5ACRBdQ8hmpxCEo4I8/6traZ7qAdBUqA== dependencies: - "@sentry-internal/tracing" "7.52.0" - "@sentry/core" "7.52.0" - "@sentry/replay" "7.52.0" - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" - tslib "^1.9.3" + "@sentry/core" "7.119.0" + "@sentry/types" "7.119.0" + "@sentry/utils" "7.119.0" -"@sentry/browser@7.52.1": - version "7.52.1" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.52.1.tgz#f112ca4170bb5023f050bdcbcce5621b475a46eb" - integrity sha512-HrCOfieX68t+Wj42VIkraLYwx8kN5311SdBkHccevWs2Y2dZU7R9iLbI87+nb5kpOPQ7jVWW7d6QI/yZmliYgQ== +"@sentry/babel-plugin-component-annotate@2.20.1": + version "2.20.1" + resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.20.1.tgz#204c63ed006a048f48f633876e1b8bacf87a9722" + integrity sha512-4mhEwYTK00bIb5Y9UWIELVUfru587Vaeg0DQGswv4aIRHIiMKLyNqCEejaaybQ/fNChIZOKmvyqXk430YVd7Qg== + +"@sentry/browser@7.119.0": + version "7.119.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.119.0.tgz#65004015c107be5d2f49a852ebcffc5d19d90e0d" + integrity sha512-WwmW1Y4D764kVGeKmdsNvQESZiAn9t8LmCWO0ucBksrjL2zw9gBPtOpRcO6l064sCLeSxxzCN+kIxhRm1gDFEA== dependencies: - "@sentry-internal/tracing" "7.52.1" - "@sentry/core" "7.52.1" - "@sentry/replay" "7.52.1" - "@sentry/types" "7.52.1" - "@sentry/utils" "7.52.1" - tslib "^1.9.3" + "@sentry-internal/feedback" "7.119.0" + "@sentry-internal/replay-canvas" "7.119.0" + "@sentry-internal/tracing" "7.119.0" + "@sentry/core" "7.119.0" + "@sentry/integrations" "7.119.0" + "@sentry/replay" "7.119.0" + "@sentry/types" "7.119.0" + "@sentry/utils" "7.119.0" -"@sentry/cli@2.17.5": - version "2.17.5" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.17.5.tgz#d41e24893a843bcd41e14274044a7ddea9332824" - integrity sha512-0tXjLDpaKB46851EMJ6NbP0o9/gdEaDSLAyjEtXxlVO6+RyhUj6x6jDwn0vis8n/7q0AvbIjAcJrot+TbZP+WQ== +"@sentry/cli-darwin@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.36.1.tgz#786adf6984dbe3c6fb7dac51b625c314117b807d" + integrity sha512-JOHQjVD8Kqxm1jUKioAP5ohLOITf+Dh6+DBz4gQjCNdotsvNW5m63TKROwq2oB811p+Jzv5304ujmN4cAqW1Ww== + +"@sentry/cli-linux-arm64@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.36.1.tgz#ff449d7e7e715166257998c02cf635ca02acbadd" + integrity sha512-R//3ZEkbzvoStr3IA7nxBZNiBYyxOljOqAhgiTnejXHmnuwDzM3TBA2n5vKPE/kBFxboEBEw0UTzTIRb1T0bgw== + +"@sentry/cli-linux-arm@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.36.1.tgz#1ae5d335a1b4cd217a34c2bd6c6f5e0670136eb3" + integrity sha512-gvEOKN0fWL2AVqUBKHNXPRZfJNvKTs8kQhS8cQqahZGgZHiPCI4BqW45cKMq+ZTt1UUbLmt6khx5Dz7wi+0i5A== + +"@sentry/cli-linux-i686@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.36.1.tgz#112b9e26357e918cbbba918114ec8cdab07cdf60" + integrity sha512-R7sW5Vk/HacVy2YgQoQB+PwccvFYf2CZVPSFSFm2z7MEfNe77UYHWUq+sjJ4vxWG6HDWGVmaX0fjxyDkE01JRA== + +"@sentry/cli-linux-x64@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.36.1.tgz#c3e5bdb0c9a4bb44c83927c62a3cd7e006709bf7" + integrity sha512-UMr3ik8ksA7zQfbzsfwCb+ztenLnaeAbX94Gp+bzANZwPfi/vVHf2bLyqsBs4OyVt9SPlN1bbM/RTGfMjZ3JOw== + +"@sentry/cli-win32-i686@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.36.1.tgz#819573320e885e1dbf59b0a01d3bd370c84c1708" + integrity sha512-CflvhnvxPEs5GWQuuDtYSLqPrBaPbcSJFlBuUIb+8WNzRxvVfjgw1qzfZmkQqABqiy/YEsEekllOoMFZAvCcVA== + +"@sentry/cli-win32-x64@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.36.1.tgz#80779b4bffb4e2e32944eae72c60e6f40151b4dc" + integrity sha512-wWqht2xghcK3TGnooHZSzA3WSjdtno/xFjZLvWmw38rblGwgKMxLZnlxV6uDyS+OJ6CbfDTlCRay/0TIqA0N8g== + +"@sentry/cli@2.36.1": + version "2.36.1" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.36.1.tgz#a9146b798cb6d2f782a7a48d74633ddcd88dc8d3" + integrity sha512-gzK5uQKDWKhyH5udoB5+oaUNrS//urWyaXgKvHKz4gFfl744HuKY9dpLPP2nMnf0zLGmGM6xJnMXLqILq0mtxw== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" progress "^2.0.3" proxy-from-env "^1.1.0" which "^2.0.2" + optionalDependencies: + "@sentry/cli-darwin" "2.36.1" + "@sentry/cli-linux-arm" "2.36.1" + "@sentry/cli-linux-arm64" "2.36.1" + "@sentry/cli-linux-i686" "2.36.1" + "@sentry/cli-linux-x64" "2.36.1" + "@sentry/cli-win32-i686" "2.36.1" + "@sentry/cli-win32-x64" "2.36.1" -"@sentry/core@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.52.0.tgz#6c820ca48fe2f06bfd6b290044c96de2375f2ad4" - integrity sha512-BWdG6vCMeUeMhF4ILpxXTmw70JJvT1MGJcnv09oSupWHTmqy6I19YP6YcEyFuBL4jXPN51eCl7luIdLGJrPbOg== +"@sentry/core@7.119.0": + version "7.119.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.119.0.tgz#a6e41119bb03ec27689f9ad04e79d1fba5b7fc37" + integrity sha512-CS2kUv9rAJJEjiRat6wle3JATHypB0SyD7pt4cpX5y0dN5dZ1JrF57oLHRMnga9fxRivydHz7tMTuBhSSwhzjw== dependencies: - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" - tslib "^1.9.3" + "@sentry/types" "7.119.0" + "@sentry/utils" "7.119.0" -"@sentry/core@7.52.1": - version "7.52.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.52.1.tgz#4de702937ba8944802bb06eb8dfdf089c39f6bab" - integrity sha512-36clugQu5z/9jrit1gzI7KfKbAUimjRab39JeR0mJ6pMuKLTTK7PhbpUAD4AQBs9qVeXN2c7h9SVZiSA0UDvkg== +"@sentry/hub@7.119.0": + version "7.119.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.119.0.tgz#a94d657b9d3cfd4cc061c5c238f86faefb55d5d8" + integrity sha512-183h5B/rZosLxpB+ZYOvFdHk0rwZbKskxqKFtcyPbDAfpCUgCass41UTqyxF6aH1qLgCRxX8GcLRF7frIa/SOg== dependencies: - "@sentry/types" "7.52.1" - "@sentry/utils" "7.52.1" - tslib "^1.9.3" + "@sentry/core" "7.119.0" + "@sentry/types" "7.119.0" + "@sentry/utils" "7.119.0" -"@sentry/hub@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.52.0.tgz#ffc087d58c745d57108862faa0f701b15503dcc2" - integrity sha512-w3d8Pmp3Fx2zbbjz6hAeIbsFEkLyrUs9YTGG2y8oCoTlAtGK+AjdG+Z0H/clAZONflD/je2EmFHCI0EuXE9tEw== +"@sentry/integrations@7.119.0": + version "7.119.0" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.119.0.tgz#5b25c603026dbacfe1ae7bb8d768506a129149fb" + integrity sha512-OHShvtsRW0A+ZL/ZbMnMqDEtJddPasndjq+1aQXw40mN+zeP7At/V1yPZyFaURy86iX7Ucxw5BtmzuNy7hLyTA== dependencies: - "@sentry/core" "7.52.0" - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" - tslib "^1.9.3" - -"@sentry/integrations@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.52.0.tgz#632aa5e54bdfdab910a24057c2072634a2670409" - integrity sha512-tqxYzgc71XdFD8MTCsVMCPef08lPY9jULE5Zi7TzjyV2AItDRJPkixG0qjwjOGwCtN/6KKz0lGPGYU8ZDxvsbg== - dependencies: - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" + "@sentry/core" "7.119.0" + "@sentry/types" "7.119.0" + "@sentry/utils" "7.119.0" localforage "^1.8.1" - tslib "^1.9.3" -"@sentry/integrations@7.52.1": - version "7.52.1" - resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.52.1.tgz#e8a5988477e8d295fa1d90ce5628c1a7794c2a09" - integrity sha512-4uejF01723wzEHjcP5AcNcV+Z/6U27b1LyaDu0jY3XDry98MMjhS/ASzecLpaEFxi3dh/jMTUrNp1u7WMj59Lg== +"@sentry/react-native@5.32.0": + version "5.32.0" + resolved "https://registry.yarnpkg.com/@sentry/react-native/-/react-native-5.32.0.tgz#14c46a65f7359f5e74a9cef7edb9d7bf9a0a449d" + integrity sha512-Rh5EEYuWUyPaTaL8b/tl3okGiWb3LSvfYiS/WkvTYH+pFYr2RNtrZSCxhP5TpWSqkoy8VVXeYhSmlBvjfD/uDg== dependencies: - "@sentry/types" "7.52.1" - "@sentry/utils" "7.52.1" - localforage "^1.8.1" - tslib "^1.9.3" + "@sentry/babel-plugin-component-annotate" "2.20.1" + "@sentry/browser" "7.119.0" + "@sentry/cli" "2.36.1" + "@sentry/core" "7.119.0" + "@sentry/hub" "7.119.0" + "@sentry/integrations" "7.119.0" + "@sentry/react" "7.119.0" + "@sentry/types" "7.119.0" + "@sentry/utils" "7.119.0" -"@sentry/react-native@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@sentry/react-native/-/react-native-5.5.0.tgz#b1283f68465b1772ad6059ebba149673cef33f2d" - integrity sha512-xrES+OAIu3HFhoQSuJjd16Hh02/mByuNoKUjF7e4WDGIiTew3aqlqeLjU7x4npmg5Vbt+ND5jR12u/NmdfArwg== +"@sentry/react@7.119.0": + version "7.119.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.119.0.tgz#79f2c9d94322a3afbfa8af9f5b872f7c2e9b0820" + integrity sha512-cf8Cei+qdSA26gx+IMAuc/k44PeBImNzIpXi3930SLhUe44ypT5OZ/44L6xTODHZzTIyMSJPduf59vT2+eW9yg== dependencies: - "@sentry/browser" "7.52.0" - "@sentry/cli" "2.17.5" - "@sentry/core" "7.52.0" - "@sentry/hub" "7.52.0" - "@sentry/integrations" "7.52.0" - "@sentry/react" "7.52.0" - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" - -"@sentry/react@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.52.0.tgz#d12d270ec82dea0474e69deb9112181affe7c524" - integrity sha512-VQxquyFFlvB81k7UER7tTJxjzbczNI2jqsw6nN1TVDrAIDt8/hT2x7m/M0FlWc88roBKuaMmbvzfNGWaL9abyQ== - dependencies: - "@sentry/browser" "7.52.0" - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" + "@sentry/browser" "7.119.0" + "@sentry/core" "7.119.0" + "@sentry/types" "7.119.0" + "@sentry/utils" "7.119.0" hoist-non-react-statics "^3.3.2" - tslib "^1.9.3" -"@sentry/react@7.52.1": - version "7.52.1" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.52.1.tgz#5f30919f4680493558c5233165b2092d2b59f6d1" - integrity sha512-RRH+GJE5TNg5QS86bSjSZuR2snpBTOO5/SU9t4BOqZMknzhMVTClGMm84hffJa9pMPMJPQ2fWQAbhrlD8RcF6w== +"@sentry/replay@7.119.0": + version "7.119.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.119.0.tgz#50881079d013c77f87a994331d8bcad1d49e0960" + integrity sha512-BnNsYL+X5I4WCH6wOpY6HQtp4MgVt0NVlhLUsEyrvMUiTs0bPkDBrulsgZQBUKJsbOr3l9nHrFoNVB/0i6WNLA== dependencies: - "@sentry/browser" "7.52.1" - "@sentry/types" "7.52.1" - "@sentry/utils" "7.52.1" - hoist-non-react-statics "^3.3.2" - tslib "^1.9.3" + "@sentry-internal/tracing" "7.119.0" + "@sentry/core" "7.119.0" + "@sentry/types" "7.119.0" + "@sentry/utils" "7.119.0" -"@sentry/replay@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.52.0.tgz#4d78e88282d2c1044ea4b648a68d1b22173e810d" - integrity sha512-RRPALjDST2s7MHiMcUJ7Wo4WW7EWfUDYSG0LuhMT8DNc+ZsxQoFsLYX/yz8b3f0IUSr7xKBXP+aPeIy3jDAS2g== +"@sentry/types@7.119.0": + version "7.119.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.119.0.tgz#8b3d7a1405c362e75cd900d46089df4e70919d2a" + integrity sha512-27qQbutDBPKGbuJHROxhIWc1i0HJaGLA90tjMu11wt0E4UNxXRX+UQl4Twu68v4EV3CPvQcEpQfgsViYcXmq+w== + +"@sentry/utils@7.119.0": + version "7.119.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.119.0.tgz#debe29020f6ef3786a5bd855cf1b97116b7be826" + integrity sha512-ZwyXexWn2ZIe2bBoYnXJVPc2esCSbKpdc6+0WJa8eutXfHq3FRKg4ohkfCBpfxljQGEfP1+kfin945lA21Ka+A== dependencies: - "@sentry/core" "7.52.0" - "@sentry/types" "7.52.0" - "@sentry/utils" "7.52.0" - -"@sentry/replay@7.52.1": - version "7.52.1" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.52.1.tgz#272a0bcb79bb9ffce99b5dcaf864f18d729ce0da" - integrity sha512-A+RaUmpU9/yBHnU3ATemc6wAvobGno0yf5R6fZYkAFoo2FCR2YG6AXxkTazymIf8v2DnLGaSDORYDPdhQClU9A== - dependencies: - "@sentry/core" "7.52.1" - "@sentry/types" "7.52.1" - "@sentry/utils" "7.52.1" - -"@sentry/types@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.52.0.tgz#b7d5372f17355e3991cbe818ad567f3fe277cc6b" - integrity sha512-XnEWpS6P6UdP1FqbmeqhI96Iowqd2jM5R7zJ97txTdAd5NmdHHH0pODTR9NiQViA1WlsXDut7ZLxgPzC9vIcMA== - -"@sentry/types@7.52.1": - version "7.52.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.52.1.tgz#bcff6d0462d9b9b7b9ec31c0068fe02d44f25da2" - integrity sha512-OMbGBPrJsw0iEXwZ2bJUYxewI1IEAU2e1aQGc0O6QW5+6hhCh+8HO8Xl4EymqwejjztuwStkl6G1qhK+Q0/Row== - -"@sentry/utils@7.52.0": - version "7.52.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.52.0.tgz#cacc36d905036ba7084c14965e964fc44239d7f0" - integrity sha512-X1NHYuqW0qpZfP731YcVe+cn36wJdAeBHPYPIkXCl4o4GePCJfH/CM/+9V9cZykNjyLrs2Xy/TavSAHNCj8j7w== - dependencies: - "@sentry/types" "7.52.0" - tslib "^1.9.3" - -"@sentry/utils@7.52.1": - version "7.52.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.52.1.tgz#4a3e49b918f78dba4524c924286210259020cac5" - integrity sha512-MPt1Xu/jluulknW8CmZ2naJ53jEdtdwCBSo6fXJvOTI0SDqwIPbXDVrsnqLAhVJuIN7xbkj96nuY/VBR6S5sWg== - dependencies: - "@sentry/types" "7.52.1" - tslib "^1.9.3" + "@sentry/types" "7.119.0" "@sideway/address@^4.1.3": version "4.1.4" @@ -19039,10 +19032,10 @@ react-native-get-random-values@~1.11.0: dependencies: fast-base64-decode "^1.0.0" -react-native-image-crop-picker@0.40.3: - version "0.40.3" - resolved "https://registry.yarnpkg.com/react-native-image-crop-picker/-/react-native-image-crop-picker-0.40.3.tgz#a6b135cd1218a33ad126c1a148ec5a1bd01737ff" - integrity sha512-45PKcTnsnLS+E36YwoXutllQdRSOuOsMN0IRcAcwsFXOuAQIOtugXlAuGGL28JHKb/ATaSSPvqCSrdG65Jv3GA== +react-native-image-crop-picker@0.41.2: + version "0.41.2" + resolved "https://registry.yarnpkg.com/react-native-image-crop-picker/-/react-native-image-crop-picker-0.41.2.tgz#824fa8fee8391fbb3e0b5ae2973221a2dff0cafb" + integrity sha512-GcDu/adXU/1y/MrxsbOfqcGRGWC2pTttt5VGy/jyRJ6GXfoC29fTQf8SG5kGtc5schSR6K+mKYO4uW6eJPljlQ== react-native-ios-context-menu@^1.15.3: version "1.15.3" @@ -20074,19 +20067,6 @@ send@0.18.0, send@^0.18.0: range-parser "~1.2.1" statuses "2.0.1" -sentry-expo@~7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/sentry-expo/-/sentry-expo-7.0.1.tgz#025f0e90ab7f7cba1e00c892fabc027de21bc5bc" - integrity sha512-8vmOy4R+qM1peQA9EP8rDGUMBhgMU1D5FyuWY9kfNGatmWuvEmlZpVgaXoXaNPIhPgf2TMrvQIlbqLHtTkoeSA== - dependencies: - "@expo/spawn-async" "^1.7.0" - "@sentry/integrations" "7.52.1" - "@sentry/react" "7.52.1" - "@sentry/react-native" "5.5.0" - "@sentry/types" "7.52.1" - mkdirp "^1.0.4" - rimraf "^3.0.2" - serialize-error@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" @@ -21368,7 +21348,7 @@ tsconfig-paths@^3.14.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==