Browse Source

Remove sentry-expo

Too many dependencies it needs, especially the unused expo-updates
pull/396/head
xmflsct 2 months ago
parent
commit
398f37d599
  1. 5
      .github/workflows/build.yml
  2. 3
      android/app/src/main/AndroidManifest.xml
  3. 4
      android/sentry.properties
  4. 14
      app.config.ts
  5. 2
      fastlane/Fastfile
  6. 48
      ios/Podfile.lock
  7. 4
      ios/sentry.properties
  8. 17
      ios/tooot.xcodeproj/project.pbxproj
  9. 12
      ios/tooot/Supporting/Expo.plist
  10. 3
      package.json
  11. 51
      patches/@sentry+react-native+4.4.0.patch
  12. 25
      src/App.tsx
  13. 17
      src/Screens.tsx
  14. 16
      src/api/tooot.ts
  15. 4
      src/screens/Compose.tsx
  16. 12
      src/startup/sentry.ts
  17. 164
      yarn.lock

5
.github/workflows/build.yml

@ -25,8 +25,9 @@ jobs:
run: bundle install
- name: -- Step 5 -- Run fastlane
env:
DEVELOPER_DIR: /Applications/Xcode_13.4.1.app/Contents/Developer
DEVELOPER_DIR: /Applications/Xcode_14.0.app/Contents/Developer
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
@ -67,6 +68,7 @@ jobs:
- name: -- Step 6 -- Run fastlane
env:
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
@ -103,6 +105,7 @@ jobs:
- name: -- Step 6 -- Run fastlane
env:
ENVIRONMENT: ${{ steps.branch.outputs.branch }}
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.branch }}
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}

3
android/app/src/main/AndroidManifest.xml

@ -13,9 +13,6 @@
<!-- [Custom] Expo Notifications -->
<meta-data android:name="expo.modules.notifications.default_notification_icon" android:resource="@drawable/ic_stat_notifications" />
<!-- [Custom] End Expo Notifications -->
<meta-data android:name="expo.modules.updates.AUTO_SETUP" android:value="false"/>
<meta-data android:name="expo.modules.updates.ENABLED" android:value="false"/>
<meta-data android:name="expo.modules.updates.EXPO_SDK_VERSION" android:value="46.0.0"/>
<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:exported="true" android:theme="@style/Theme.App.SplashScreen" android:screenOrientation="portrait" android:documentLaunchMode="never">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

4
android/sentry.properties

@ -0,0 +1,4 @@
defaults.url=https://sentry.io/
defaults.org=tooot
defaults.project=app
auth.token=d8f82bcbb7fe4cebb886d69e8ef32f36c0f19b08e967480a8c1c867b344a13ad

14
app.config.ts

@ -10,20 +10,6 @@ export default (): ExpoConfig => ({
version,
extra: { environment: process.env.ENVIRONMENT },
privacy: 'hidden',
hooks: {
postPublish: [
{
file: 'sentry-expo/upload-sourcemaps',
config: {
organization: process.env.SENTRY_ORGANIZATION,
project: process.env.SENTRY_PROJECT,
authToken: process.env.SENTRY_AUTH_TOKEN,
setCommits: process.env.GITHUB_SHA || undefined,
deployEnv: process.env.ENVIRONMENT
}
}
]
},
jsEngine: 'hermes',
ios: {
bundleIdentifier: 'com.xmflsct.app.tooot'

2
fastlane/Fastfile

@ -8,7 +8,6 @@ GITHUB_REPO = "tooot-app/app"
XCODEPROJ = "./ios/tooot.xcodeproj"
INFO_PLIST = "./ios/tooot/Info.plist"
EXPO_PLIST = "./ios/tooot/Supporting/Expo.plist"
desc "ANDROID: Prepare play store"
private_lane :prepare_playstore_android do
@ -36,6 +35,7 @@ private_lane :build_ios do
build_ios_app(
export_method: "app-store",
include_symbols: true,
include_bitcode: true,
output_directory: BUILD_DIRECTORY,
silent: false
)

48
ios/Podfile.lock

@ -1,9 +1,6 @@
PODS:
- ASN1Decoder (1.8.0)
- boost (1.76.0)
- DoubleConversion (1.1.6)
- EASClient (0.3.0):
- ExpoModulesCore
- EXApplication (4.2.2):
- ExpoModulesCore
- EXAV (12.0.4):
@ -12,8 +9,6 @@ PODS:
- ReactCommon
- EXConstants (13.2.4):
- ExpoModulesCore
- EXDevice (4.3.0):
- ExpoModulesCore
- EXErrorRecovery (3.2.0):
- ExpoModulesCore
- EXFileSystem (14.1.0):
@ -27,9 +22,6 @@ PODS:
- Firebase/Core (= 9.5.0)
- EXFont (10.2.0):
- ExpoModulesCore
- EXJSONUtils (0.3.0)
- EXManifests (0.3.1):
- EXJSONUtils
- EXNotifications (0.16.1):
- ExpoModulesCore
- Expo (46.0.10):
@ -58,16 +50,6 @@ PODS:
- React-Core
- EXStoreReview (5.3.0):
- ExpoModulesCore
- EXStructuredHeaders (2.2.1)
- EXUpdates (0.14.5):
- ASN1Decoder (~> 1.8)
- EASClient
- EXManifests
- ExpoModulesCore
- EXStructuredHeaders
- EXUpdatesInterface
- React-Core
- EXUpdatesInterface (0.7.0)
- EXVideoThumbnails (6.4.0):
- ExpoModulesCore
- FBLazyVector (0.69.5)
@ -608,18 +590,14 @@ PODS:
DEPENDENCIES:
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- EASClient (from `../node_modules/expo-eas-client/ios`)
- EXApplication (from `../node_modules/expo-application/ios`)
- EXAV (from `../node_modules/expo-av/ios`)
- EXConstants (from `../node_modules/expo-constants/ios`)
- EXDevice (from `../node_modules/expo-device/ios`)
- EXErrorRecovery (from `../node_modules/expo-error-recovery/ios`)
- EXFileSystem (from `../node_modules/expo-file-system/ios`)
- EXFirebaseAnalytics (from `../node_modules/expo-firebase-analytics/ios`)
- EXFirebaseCore (from `../node_modules/expo-firebase-core/ios`)
- EXFont (from `../node_modules/expo-font/ios`)
- EXJSONUtils (from `../node_modules/expo-json-utils/ios`)
- EXManifests (from `../node_modules/expo-manifests/ios`)
- EXNotifications (from `../node_modules/expo-notifications/ios`)
- Expo (from `../node_modules/expo`)
- ExpoCrypto (from `../node_modules/expo-crypto/ios`)
@ -633,9 +611,6 @@ DEPENDENCIES:
- EXSecureStore (from `../node_modules/expo-secure-store/ios`)
- EXSplashScreen (from `../node_modules/expo-splash-screen/ios`)
- EXStoreReview (from `../node_modules/expo-store-review/ios`)
- EXStructuredHeaders (from `../node_modules/expo-structured-headers/ios`)
- EXUpdates (from `../node_modules/expo-updates/ios`)
- EXUpdatesInterface (from `../node_modules/expo-updates-interface/ios`)
- EXVideoThumbnails (from `../node_modules/expo-video-thumbnails/ios`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
@ -697,7 +672,6 @@ DEPENDENCIES:
SPEC REPOS:
trunk:
- ASN1Decoder
- Firebase
- FirebaseAnalytics
- FirebaseCore
@ -722,16 +696,12 @@ EXTERNAL SOURCES:
:podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
EASClient:
:path: "../node_modules/expo-eas-client/ios"
EXApplication:
:path: "../node_modules/expo-application/ios"
EXAV:
:path: "../node_modules/expo-av/ios"
EXConstants:
:path: "../node_modules/expo-constants/ios"
EXDevice:
:path: "../node_modules/expo-device/ios"
EXErrorRecovery:
:path: "../node_modules/expo-error-recovery/ios"
EXFileSystem:
@ -742,10 +712,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/expo-firebase-core/ios"
EXFont:
:path: "../node_modules/expo-font/ios"
EXJSONUtils:
:path: "../node_modules/expo-json-utils/ios"
EXManifests:
:path: "../node_modules/expo-manifests/ios"
EXNotifications:
:path: "../node_modules/expo-notifications/ios"
Expo:
@ -772,12 +738,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/expo-splash-screen/ios"
EXStoreReview:
:path: "../node_modules/expo-store-review/ios"
EXStructuredHeaders:
:path: "../node_modules/expo-structured-headers/ios"
EXUpdates:
:path: "../node_modules/expo-updates/ios"
EXUpdatesInterface:
:path: "../node_modules/expo-updates-interface/ios"
EXVideoThumbnails:
:path: "../node_modules/expo-video-thumbnails/ios"
FBLazyVector:
@ -886,21 +846,16 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/yoga"
SPEC CHECKSUMS:
ASN1Decoder: 6110fdeacfdb41559b1481457a1645be716610aa
boost: a7c83b31436843459a1961bfd74b96033dc77234
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
EASClient: a2581835cf9b97d0defd5d630fc6eb1bf77045e7
EXApplication: e418d737a036e788510f2c4ad6c10a7d54d18586
EXAV: 596506c9bee54ad52f2f3b625cdaeb9d9f2dd6b7
EXConstants: 7c44785d41d8e959d527d23d29444277a4d1ee73
EXDevice: 7647ca9b1fd8b269dfd896a7643d659343358054
EXErrorRecovery: 74d71ee59f6814315457b09d68e86aa95cc7d05d
EXFileSystem: 927e0a8885aa9c49e50fc38eaba2c2389f2f1019
EXFirebaseAnalytics: 2e478758e153b908b67477dff7adf99ffbf37a1b
EXFirebaseCore: cb1e6afad20c4c32a4966432c78ebfff29d8db6b
EXFont: a5d80bd9b3452b2d5abbce2487da89b0150e6487
EXJSONUtils: 2a74b8f40f1523cc3f92af99c91aa78201737a77
EXManifests: b38dc61303f5eede990b4c8ecbfac32f82160e65
EXNotifications: 9a2aa201deb19dfe1dbe0e370eeb2922de0d2422
Expo: fcdb32274e2ca9c7638d3b21b30fb665c6869219
ExpoCrypto: e534314db0e1a17ae12b5140d529bd0c5efcbc6a
@ -914,9 +869,6 @@ SPEC CHECKSUMS:
EXSecureStore: ac4b3c89dd5810528074d9422d5fed5a9e684467
EXSplashScreen: 799bece80089219b2c989c1082d70f3b00995cda
EXStoreReview: cbb6b2202bb6f831cd3234d9d8b995cec0eb32f2
EXStructuredHeaders: 5d86829469399370a9fc7cb1e4391b09de87681d
EXUpdates: 664f999db423f90f3fb3d91edcda9bc28cb5a5b4
EXUpdatesInterface: 2bbc11815dfa2ec3fc02e5534c7592c6b42b5327
EXVideoThumbnails: 486533e1a66c9859f9b9e3b2e1f9f0b275515b48
FBLazyVector: 0045cf98ca4a48af3bf7108d85b1c243740fa289
FBReactNativeSpec: 82e74141263f8c962e288f5cd6b5d149cdc8afe1

4
ios/sentry.properties

@ -0,0 +1,4 @@
defaults.url=https://sentry.io/
defaults.org=tooot
defaults.project=app
auth.token=d8f82bcbb7fe4cebb886d69e8ef32f36c0f19b08e967480a8c1c867b344a13ad

17
ios/tooot.xcodeproj/project.pbxproj

@ -17,7 +17,6 @@
5EE088C926297820007E5FEC /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5EE088CB26297820007E5FEC /* InfoPlist.strings */; };
5EE44DD62600124E00A9BCED /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EE44DD52600124E00A9BCED /* File.swift */; };
96905EF65AED1B983A6B3ABC /* libPods-tooot.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-tooot.a */; };
BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; };
DA8B5B7F0DED488CAC0FF169 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B96B72E5384D44A7B240B27E /* GoogleService-Info.plist */; };
E3BC22F5F8ABE515E14CF199 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D878F932AF7A9974E06E461 /* ExpoModulesProvider.swift */; };
E613A80B28282A01003C97D6 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = E613A80A28282A01003C97D6 /* AppDelegate.mm */; };
@ -71,7 +70,6 @@
9D878F932AF7A9974E06E461 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-tooot/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = tooot/SplashScreen.storyboard; sourceTree = "<group>"; };
B96B72E5384D44A7B240B27E /* GoogleService-Info.plist */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "tooot/GoogleService-Info.plist"; sourceTree = "<group>"; };
BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = "<group>"; };
DF8133F098604A10B0D94952 /* boop.mp3 */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = boop.mp3; path = tooot/boop.mp3; sourceTree = "<group>"; };
E613A80A28282A01003C97D6 /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = tooot/AppDelegate.mm; sourceTree = "<group>"; };
E633A420281EAEAB000E540F /* ShareExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ShareExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
@ -106,7 +104,6 @@
isa = PBXGroup;
children = (
E613A80A28282A01003C97D6 /* AppDelegate.mm */,
BB2F792B24A3F905000567C9 /* Supporting */,
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
13B07FB51A68108700A75B9A /* Images.xcassets */,
@ -183,15 +180,6 @@
name = Products;
sourceTree = "<group>";
};
BB2F792B24A3F905000567C9 /* Supporting */ = {
isa = PBXGroup;
children = (
BB2F792C24A3F905000567C9 /* Expo.plist */,
);
name = Supporting;
path = tooot/Supporting;
sourceTree = "<group>";
};
D65327D7A22EEC0BE12398D9 /* Pods */ = {
isa = PBXGroup;
children = (
@ -308,7 +296,6 @@
files = (
5E36538325C9B8BD009F93EE /* RootViewColor.xcassets in Resources */,
5EE088C926297820007E5FEC /* InfoPlist.strings in Resources */,
BB2F792D24A3F905000567C9 /* Expo.plist in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */,
@ -341,7 +328,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
shellScript = "set -e\nexport SENTRY_PROPERTIES=sentry.properties\nexport EXTRA_PACKAGER_ARGS=\"--sourcemap-output $DERIVED_FILE_DIR/main.jsbundle.map\"\nset -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\nSENTRY_CLI_PATH=\"../node_modules/@sentry/cli/bin/sentry-cli\"\n/bin/sh -c \"$WITH_ENVIRONMENT \\\"$SENTRY_CLI_PATH react-native xcode $REACT_NATIVE_XCODE\\\"\"";
};
08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
@ -391,13 +378,11 @@
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-tooot/Pods-tooot-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/EXUpdates/EXUpdates.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXUpdates.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
);
runOnlyForDeploymentPostprocessing = 0;

12
ios/tooot/Supporting/Expo.plist

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EXUpdatesAutoSetup</key>
<false/>
<key>EXUpdatesEnabled</key>
<false/>
<key>EXUpdatesSDKVersion</key>
<string>46.0.0</string>
</dict>
</plist>

3
package.json

@ -46,7 +46,6 @@
"expo-av": "^12.0.4",
"expo-constants": "^13.2.4",
"expo-crypto": "^11.0.0",
"expo-device": "^4.3.0",
"expo-file-system": "^14.1.0",
"expo-firebase-analytics": "^7.2.0",
"expo-haptics": "^11.3.0",
@ -58,7 +57,6 @@
"expo-secure-store": "^11.3.0",
"expo-splash-screen": "^0.16.2",
"expo-store-review": "^5.3.0",
"expo-updates": "^0.14.5",
"expo-video-thumbnails": "^6.4.0",
"expo-web-browser": "^11.0.0",
"i18next": "^21.9.2",
@ -94,7 +92,6 @@
"react-redux": "^8.0.4",
"redux-persist": "^6.0.0",
"rn-placeholder": "^3.0.3",
"sentry-expo": "^5.0.2",
"tslib": "^2.4.0",
"valid-url": "^1.0.9"
},

51
patches/@sentry+react-native+4.4.0.patch

@ -0,0 +1,51 @@
diff --git a/node_modules/@sentry/react-native/ios/RNSentry.h b/node_modules/@sentry/react-native/ios/RNSentry.h
index 6f7df58..84b50c9 100644
--- a/node_modules/@sentry/react-native/ios/RNSentry.h
+++ b/node_modules/@sentry/react-native/ios/RNSentry.h
@@ -1,7 +1,7 @@
#if __has_include(<React/RCTBridge.h>)
#import <React/RCTBridge.h>
#else
-#import "RCTBridge.h"
+#import <React/RCTBridge.h>
#endif
@interface RNSentry : NSObject <RCTBridgeModule>
diff --git a/node_modules/@sentry/react-native/ios/RNSentry.m b/node_modules/@sentry/react-native/ios/RNSentry.m
index 32a6087..003a001 100644
--- a/node_modules/@sentry/react-native/ios/RNSentry.m
+++ b/node_modules/@sentry/react-native/ios/RNSentry.m
@@ -3,7 +3,7 @@
#if __has_include(<React/RCTConvert.h>)
#import <React/RCTConvert.h>
#else
-#import "RCTConvert.h"
+#import <React/RCTConvert.h>
#endif
#import <Sentry/Sentry.h>
diff --git a/node_modules/@sentry/react-native/react-native.config.js b/node_modules/@sentry/react-native/react-native.config.js
index f85fa01..053999b 100644
--- a/node_modules/@sentry/react-native/react-native.config.js
+++ b/node_modules/@sentry/react-native/react-native.config.js
@@ -1,18 +1,10 @@
module.exports = {
dependency: {
platforms: {
- ios: {
- sharedLibraries: ['libz']
- },
+ ios: {},
android: {
packageInstance: 'new RNSentryPackage()'
}
- },
- hooks: {
- postlink:
- 'node node_modules/@sentry/wizard/dist/bin.js -i reactNative -p ios android',
- postunlink:
- 'node node_modules/@sentry/wizard/dist/bin.js -i reactNative -p ios android --uninstall'
}
}
};
\ No newline at end of file

25
src/App.tsx

@ -10,11 +10,9 @@ import push from '@root/startup/push'
import sentry from '@root/startup/sentry'
import timezone from '@root/startup/timezone'
import { persistor, store } from '@root/store'
import * as Sentry from '@sentry/react-native'
import AccessibilityManager from '@utils/accessibility/AccessibilityManager'
import {
changeLanguage,
getSettingsLanguage
} from '@utils/slices/settingsSlice'
import { changeLanguage, getSettingsLanguage } from '@utils/slices/settingsSlice'
import ThemeManager from '@utils/styles/ThemeManager'
import * as SplashScreen from 'expo-splash-screen'
import React, { useCallback, useEffect, useState } from 'react'
@ -24,7 +22,6 @@ import { enableFreeze } from 'react-native-screens'
import { QueryClientProvider } from 'react-query'
import { Provider } from 'react-redux'
import { PersistGate } from 'redux-persist/integration/react'
import * as Sentry from 'sentry-expo'
Platform.select({
android: LogBox.ignoreLogs(['Setting a timer for a long period of time'])
@ -93,15 +90,13 @@ const App: React.FC = () => {
}
return (
<Sentry.Native.TouchEventBoundary>
<ActionSheetProvider>
<AccessibilityManager>
<ThemeManager>
<Screens localCorrupt={localCorrupt} />
</ThemeManager>
</AccessibilityManager>
</ActionSheetProvider>
</Sentry.Native.TouchEventBoundary>
<ActionSheetProvider>
<AccessibilityManager>
<ThemeManager>
<Screens localCorrupt={localCorrupt} />
</ThemeManager>
</AccessibilityManager>
</ActionSheetProvider>
)
} else {
return null
@ -114,4 +109,4 @@ const App: React.FC = () => {
)
}
export default React.memo(App, () => true)
export default Sentry.wrap(App)

17
src/Screens.tsx

@ -10,6 +10,7 @@ import ScreenAnnouncements from '@screens/Announcements'
import ScreenCompose from '@screens/Compose'
import ScreenImagesViewer from '@screens/ImagesViewer'
import ScreenTabs from '@screens/Tabs'
import * as Sentry from '@sentry/react-native'
import initQuery from '@utils/initQuery'
import { RootStackParamList } from '@utils/navigation/navigators'
import pushUseConnect from '@utils/push/useConnect'
@ -31,7 +32,6 @@ import { IntlProvider } from 'react-intl'
import { Alert, Platform, StatusBar } from 'react-native'
import ShareMenu from 'react-native-share-menu'
import { useSelector } from 'react-redux'
import * as Sentry from 'sentry-expo'
import { useAppDispatch } from './store'
const Stack = createNativeStackNavigator<RootStackParamList>()
@ -49,10 +49,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
const routeRef = useRef<{ name?: string; params?: {} }>()
// Push hooks
const instances = useSelector(
getInstances,
(prev, next) => prev.length === next.length
)
const instances = useSelector(getInstances, (prev, next) => prev.length === next.length)
pushUseConnect({ t, instances })
pushUseReceive({ instances })
pushUseRespond({ instances })
@ -102,9 +99,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
const currentRoute = navigationRef.getCurrentRoute()
routeRef.current = {
name: currentRoute?.name,
params: currentRoute?.params
? JSON.stringify(currentRoute.params)
: undefined
params: currentRoute?.params ? JSON.stringify(currentRoute.params) : undefined
}
}, [])
const navigationContainerOnStateChange = useCallback(() => {
@ -119,7 +114,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
if (previousRoute?.name !== currentRoute?.name) {
analytics('screen_view', { screen_name: currentRoute?.name })
Sentry.Native.setContext('page', {
Sentry.setContext('page', {
previous: previousRoute,
current: currentRoute
})
@ -316,9 +311,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
headerShadowVisible: false,
headerTransparent: true,
headerStyle: { backgroundColor: 'transparent' },
headerLeft: () => (
<HeaderLeft content='X' onPress={() => navigation.goBack()} />
),
headerLeft: () => <HeaderLeft content='X' onPress={() => navigation.goBack()} />,
title: t('screenAnnouncements:heading')
})}
/>

16
src/api/tooot.ts

@ -1,7 +1,7 @@
import * as Sentry from '@sentry/react-native'
import { mapEnvironment } from '@utils/checkEnvironment'
import axios from 'axios'
import Constants from 'expo-constants'
import * as Sentry from 'sentry-expo'
import handleError, { ctx } from './handleError'
export type Params = {
@ -31,11 +31,11 @@ const apiTooot = async <T = unknown>({
}: Params): Promise<{ body: T }> => {
console.log(
ctx.bgGreen.bold(' API tooot ') +
' ' +
method +
ctx.green(' -> ') +
`/${url}` +
(params ? ctx.green(' -> ') : ''),
' ' +
method +
ctx.green(' -> ') +
`/${url}` +
(params ? ctx.green(' -> ') : ''),
params ? params : ''
)
@ -65,12 +65,12 @@ const apiTooot = async <T = unknown>({
})
.catch(error => {
if (sentry) {
Sentry.Native.setExtras({
Sentry.setExtras({
API: 'tooot',
...(error?.response && { response: error.response }),
...(error?.request && { request: error.request })
})
Sentry.Native.captureException(error)
Sentry.captureException(error)
}
return handleError(error)

4
src/screens/Compose.tsx

@ -7,6 +7,7 @@ import haptics from '@root/components/haptics'
import { useAppDispatch } from '@root/store'
import formatText from '@screens/Compose/formatText'
import ComposeRoot from '@screens/Compose/Root'
import * as Sentry from '@sentry/react-native'
import { RootStackScreenProps } from '@utils/navigation/navigators'
import { QueryKeyTimeline, useTimelineMutation } from '@utils/queryHooks/timeline'
import { updateStoreReview } from '@utils/slices/contextsSlice'
@ -24,7 +25,6 @@ import { useTranslation } from 'react-i18next'
import { Alert, Keyboard, Platform } from 'react-native'
import { useQueryClient } from 'react-query'
import { useSelector } from 'react-redux'
import * as Sentry from 'sentry-expo'
import ComposeDraftsList from './Compose/DraftsList'
import ComposeEditAttachment from './Compose/EditAttachment'
import { uploadAttachment } from './Compose/Root/Footer/addAttachment'
@ -326,7 +326,7 @@ const ScreenCompose: React.FC<RootStackScreenProps<'Screen-Compose'>> = ({
]
)
} else {
Sentry.Native.captureMessage('Compose posting', {
Sentry.captureMessage('Compose posting', {
contexts: { errorObject: error }
})
haptics('Error')

12
src/startup/sentry.ts

@ -1,12 +1,18 @@
import * as Sentry from 'sentry-expo'
import * as Sentry from "@sentry/react-native";
import { isDevelopment } from "@utils/checkEnvironment";
import log from './log'
const sentry = () => {
log('log', 'Sentry', 'initializing')
Sentry.init({
// @ts-ignore
enabled: !isDevelopment,
dsn: 'https://53348b60ff844d52886e90251b3a5f41@o917354.ingest.sentry.io/6410576',
enableInExpoDevelopment: false,
tracesSampleRate: 0.35,
integrations: [
new Sentry.ReactNativeTracing({
tracingOrigins: ["tooot.app"],
}),
],
autoSessionTracking: true
})
}

164
yarn.lock

@ -1171,7 +1171,7 @@
uuid "^3.4.0"
wrap-ansi "^7.0.0"
"@expo/code-signing-certificates@0.0.2", "@expo/code-signing-certificates@^0.0.2":
"@expo/code-signing-certificates@^0.0.2":
version "0.0.2"
resolved "https://registry.yarnpkg.com/@expo/code-signing-certificates/-/code-signing-certificates-0.0.2.tgz#65cd615800e6724b54831c966dd1a90145017246"
integrity sha512-vnPHFjwOqxQ1VLztktY+fYCfwvLzjqpzKn09rchcQE7Sdf0wtW5fFtIZBEFOOY5wasp8tXSnp627zrAwazPHzg==
@ -1317,7 +1317,7 @@
json5 "^1.0.1"
write-file-atomic "^2.3.0"
"@expo/metro-config@~0.3.18", "@expo/metro-config@~0.3.19":
"@expo/metro-config@~0.3.18":
version "0.3.22"
resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.3.22.tgz#fa4a0729ec8ecbc9c9fb79c63ecc66a299505c82"
integrity sha512-R81sLbaeUBjN8IXcxiVx7GcpSj8z7szILl1b5yJDb38WdIFwxhrseA5wXaTT1yMhI+59w6n99T2qtFV2yD5qYA==
@ -1413,7 +1413,7 @@
dependencies:
cross-spawn "^6.0.5"
"@expo/spawn-async@^1.5.0", "@expo/spawn-async@^1.6.0":
"@expo/spawn-async@^1.5.0":
version "1.7.0"
resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.7.0.tgz#3ab6082b24318cccc4e73b13464da91325555500"
integrity sha512-sqPAjOEFTrjaTybrh9SnPFLInDXcoMC06psEFmH68jLTmoipSQCq8GCEfIoHhxRDALWB+DsiwXJSbXlE/iVIIQ==
@ -2009,16 +2009,6 @@
"@sentry/utils" "7.12.1"
tslib "^1.9.3"
"@sentry/browser@7.7.0":
version "7.7.0"
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.7.0.tgz#7810ee98d4969bd0367e29ac0af6c5779db7e6c4"
integrity sha512-oyzpWcsjVZTaf14zAL89Ng1DUHlbjN+V8pl8dR9Y9anphbzL5BK9p0fSK4kPIrO4GukK+XrKnLJDPuE/o7WR3g==
dependencies:
"@sentry/core" "7.7.0"
"@sentry/types" "7.7.0"
"@sentry/utils" "7.7.0"
tslib "^1.9.3"
"@sentry/cli@1.74.4":
version "1.74.4"
resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.74.4.tgz#7df82f68045a155e1885bfcbb5d303e5259eb18e"
@ -2055,16 +2045,6 @@
"@sentry/utils" "7.12.1"
tslib "^1.9.3"
"@sentry/core@7.7.0":
version "7.7.0"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.7.0.tgz#1a2d477897552d179380f7c54c7d81a4e98ea29a"
integrity sha512-Z15ACiuiFINFcK4gbMrnejLn4AVjKBPJOWKrrmpIe8mh+Y9diOuswt5mMUABs+jhpZvqht3PBLLGBL0WMsYMYA==
dependencies:
"@sentry/hub" "7.7.0"
"@sentry/types" "7.7.0"
"@sentry/utils" "7.7.0"
tslib "^1.9.3"
"@sentry/hub@7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.12.1.tgz#dffad40cd2b8f44df2d5f20a89df87879cbbf1c3"
@ -2074,15 +2054,6 @@
"@sentry/utils" "7.12.1"
tslib "^1.9.3"
"@sentry/hub@7.7.0":
version "7.7.0"
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.7.0.tgz#9ad3471cf5ecaf1a9d3a3a04ca2515ffec9e2c09"
integrity sha512-6gydK234+a0nKhBRDdIJ7Dp42CaiW2juTiHegUVDq+482balVzbZyEAmESCmuzKJhx5BhlCElVxs/cci1NjMpg==
dependencies:
"@sentry/types" "7.7.0"
"@sentry/utils" "7.7.0"
tslib "^1.9.3"
"@sentry/integrations@7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.12.1.tgz#da1dbc5d851f2fc9413883812c436a1540a5b27a"
@ -2093,32 +2064,6 @@
localforage "^1.8.1"
tslib "^1.9.3"
"@sentry/integrations@7.7.0":
version "7.7.0"
resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.7.0.tgz#be4d89ccce756f3decc52b04cc09add19f142715"
integrity sha512-qHIw4JrluVfkcdA6v22KVumhuqdk9I0MxEaiHyP/uzx4xIoi9S4I86YbLHZUpjqreJIQkntsimJSepZJkxvG5g==
dependencies:
"@sentry/types" "7.7.0"
"@sentry/utils" "7.7.0"
localforage "^1.8.1"
tslib "^1.9.3"
"@sentry/react-native@4.2.2":
version "4.2.2"
resolved "https://registry.yarnpkg.com/@sentry/react-native/-/react-native-4.2.2.tgz#613ffa2347746d2ed66200c314092411ad7aa43c"
integrity sha512-2zSgR73/jNByr4WDciE97n78Tj81Lrhhwj1/yMRWFDd9pF802ZYiRVeIkHArEYGHER41fiQojP7wBKftvnKgew==
dependencies:
"@sentry/browser" "7.7.0"
"@sentry/cli" "1.74.4"
"@sentry/core" "7.7.0"
"@sentry/hub" "7.7.0"
"@sentry/integrations" "7.7.0"
"@sentry/react" "7.7.0"
"@sentry/tracing" "7.7.0"
"@sentry/types" "7.7.0"
"@sentry/utils" "7.7.0"
"@sentry/wizard" "1.2.17"
"@sentry/react-native@^4.4.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@sentry/react-native/-/react-native-4.4.0.tgz#6db112bb5c8c69d3385de9e81d91e936e0cc31a3"
@ -2146,17 +2091,6 @@
hoist-non-react-statics "^3.3.2"
tslib "^1.9.3"
"@sentry/react@7.7.0":
version "7.7.0"
resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.7.0.tgz#a519dd727f863c1abf1a77beac01a3336c856828"
integrity sha512-93Khad3YAln6mKU9E15QH09XC1ARIOpNTRpnBl6AGl3bVhSdLExsbKDLa7Rx0mW2j4z/prOC6VEHf5mBvg4mPg==
dependencies:
"@sentry/browser" "7.7.0"
"@sentry/types" "7.7.0"
"@sentry/utils" "7.7.0"
hoist-non-react-statics "^3.3.2"
tslib "^1.9.3"
"@sentry/tracing@7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.12.1.tgz#9f92985f152054ac90b6ec83a33c44e8084a008e"
@ -2167,26 +2101,11 @@
"@sentry/utils" "7.12.1"
tslib "^1.9.3"
"@sentry/tracing@7.7.0":
version "7.7.0"
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.7.0.tgz#67324b755a28e115289755e44a0b8b467a63d0b2"
integrity sha512-HNmvTwemuc21q/K6HXsSp9njkne6N1JQ71TB+QGqYU5VtxsVgYSUhhYqV6WcHz7LK4Hj6TvNFoeu69/rO0ysgw==
dependencies:
"@sentry/hub" "7.7.0"
"@sentry/types" "7.7.0"
"@sentry/utils" "7.7.0"
tslib "^1.9.3"
"@sentry/types@7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.12.1.tgz#eff76d938f9effc62a2ec76cd5c3f04de37f5c15"
integrity sha512-VGZs39SZgMcCGv7H0VyFy1LEFGsnFZH590JUopmz6nG63EpeYQ2xzhIoPNAiLKbyUvBEwukn+faCg3u3MGqhgQ==
"@sentry/types@7.7.0":
version "7.7.0"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.7.0.tgz#dd6bd3d119d7efea0e85dbaa4b17de1c22b63c7a"
integrity sha512-4x8O7uerSGLnYC10krHl9t8h7xXHn5FextqKYbTCXCnx2hC8D+9lz8wcbQAFo0d97wiUYqI8opmEgFVGx7c5hQ==
"@sentry/utils@7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.12.1.tgz#fcf80fdc332d0bd288e21b13efc7a2f0d604f75a"
@ -2195,14 +2114,6 @@
"@sentry/types" "7.12.1"
tslib "^1.9.3"
"@sentry/utils@7.7.0":
version "7.7.0"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.7.0.tgz#013e3097c4268a76de578494c7df999635fb0ad4"
integrity sha512-fD+ROSFpeJlK7bEvUT2LOW7QqgjBpXJwVISKZ0P2fuzclRC3KoB2pbZgBM4PXMMTiSzRGWhvfRRjBiBvQJBBJQ==
dependencies:
"@sentry/types" "7.7.0"
tslib "^1.9.3"
"@sentry/wizard@1.2.17":
version "1.2.17"
resolved "https://registry.yarnpkg.com/@sentry/wizard/-/wizard-1.2.17.tgz#c3247b47129d002cfa45d7a2048d13dc6513457b"
@ -3944,18 +3855,6 @@ expo-crypto@^11.0.0, expo-crypto@~11.0.0:
resolved "https://registry.yarnpkg.com/expo-crypto/-/expo-crypto-11.0.0.tgz#e434ebede6bae20f5a5cf7d7ea99d41e7b67690e"
integrity sha512-EH1Ikcy/HxfLJpo+zVRic4Igl6AovZEksAheKfeM2u+2TfL3FEBiQo+cGkuIa8NQ9ui3xYqQcyMk+IIZ6AO0Xg==
expo-device@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-4.3.0.tgz#a25257febe8dd18378f556ef61b5ff73ee687a6b"
integrity sha512-NRmsEuZVxx0EvD/dHZdng87wDgN9msfyjqp5DbNIyzvMGhxOrGtE/iEivvMyOdQpVotHGK8rBRbFKJzOtYB5lg==
dependencies:
ua-parser-js "^0.7.19"
expo-eas-client@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/expo-eas-client/-/expo-eas-client-0.3.0.tgz#21383fc95a52e71e13c7276456db20388fefcf95"
integrity sha512-dBD00lJ629ayh5abbmgn6I1Z5NOaWM1iea2ODLd/EF1ZcS1P3yiPm6blpvL/tD+uewL8gxxmla/Ac+SiDdYAYA==
expo-error-recovery@~3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/expo-error-recovery/-/expo-error-recovery-3.2.0.tgz#3a4543382904a5e70829cb41d7fc0f022c2bef6e"
@ -3995,11 +3894,6 @@ expo-haptics@^11.3.0:
resolved "https://registry.yarnpkg.com/expo-haptics/-/expo-haptics-11.3.0.tgz#74283bd212a86f16ff2d6b0125e2a9604c940523"
integrity sha512-mQYSZsJ7LcdM2b8JecrV2qEw9ymNzGleS/+bpufdHZ+n5tCnWZXiMvZFFczaExHfaeGY3nGQvH1RjEOFIXSfig==
expo-json-utils@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.3.0.tgz#0c4a0195ee2bbde02cbb5f4d384d1cb63bea7493"
integrity sha512-ceo0pWFJqRAsNjZWX3rVDhy+NDzmrBNFOdvW+HE4EHqlt+OEUu9INIYKO8fU+g3ifI0VcKqHfvvj5wKsSpvPBw==
expo-keep-awake@~10.2.0:
version "10.2.0"
resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-10.2.0.tgz#46f04740bccd321732bbbed93491e2076d5dbbd7"
@ -4023,13 +3917,6 @@ expo-localization@^13.1.0:
dependencies:
rtl-detect "^1.0.2"
expo-manifests@~0.3.0:
version "0.3.1"
resolved "https://registry.yarnpkg.com/expo-manifests/-/expo-manifests-0.3.1.tgz#52c3ef41d3b1958039be0434363e6499c773aaf6"
integrity sha512-zv2a4pzhbvxVjrTO4XEiP5THt4RwtxyJjfixFhDNfHtDQR7fS4h9sZSGX9ind+IS5SQJQ2ykfVAi8xnwP6zHaw==
dependencies:
expo-json-utils "~0.3.0"
expo-modules-autolinking@0.10.3:
version "0.10.3"
resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-0.10.3.tgz#31bfcf3e4b613a7c3949fb1f1e9c23eea4c14caf"
@ -4095,34 +3982,6 @@ expo-store-review@^5.3.0:
resolved "https://registry.yarnpkg.com/expo-store-review/-/expo-store-review-5.3.0.tgz#f8b1253a607b13e548889a442d8ee7bb0fa025a3"
integrity sha512-abWgsgXnfeJnAINOVGWxFC0HXizZxBoxNZoekswqW2AtsQ6DR5nvWj5VyovVjd8DktRG/ly1ZKJwP0KNXqWffw==
expo-structured-headers@~2.2.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/expo-structured-headers/-/expo-structured-headers-2.2.1.tgz#739f969101de6bead921eee59e5899399ad67715"
integrity sha512-nY6GuvoS/U5XdhfBNmvXGRoGzIXywXpSZs2wdiP+FbS79P9UWyEqzgARrBTF+6pQxUVMs6/vdffxRpwhjwYPug==
expo-updates-interface@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-0.7.0.tgz#f4f03b61dbdd949cac9fb44e250e1162ba177650"
integrity sha512-saThnbrYDSjKxfMFFguAvh5o5KGabvAOHItkJRwq2L3c0T/3q26Q0kM83880h/+TTtAVsl1+Vhny9d+ImD3yvQ==
expo-updates@^0.14.5:
version "0.14.5"
resolved "https://registry.yarnpkg.com/expo-updates/-/expo-updates-0.14.5.tgz#3de2764b143c93eee636cab538c081a7867aa086"
integrity sha512-m6IOiETTwsJhL93meHG/Y3FWuaRQIbn9LJ5wpWurQ7RniqIV9Ae61SRmJJyYtxk1qLy/dKJ/jHyF1xp8PKIlnQ==
dependencies:
"@expo/code-signing-certificates" "0.0.2"
"@expo/config" "~7.0.1"
"@expo/config-plugins" "~5.0.1"
"@expo/metro-config" "~0.3.19"
arg "4.1.0"
expo-eas-client "~0.3.0"
expo-manifests "~0.3.0"
expo-structured-headers "~2.2.0"
expo-updates-interface "~0.7.0"
fbemitter "^3.0.0"
resolve-from "^5.0.0"
uuid "^3.4.0"
expo-video-thumbnails@^6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/expo-video-thumbnails/-/expo-video-thumbnails-6.4.0.tgz#59603af06c1d2122c2f7db854562236bbd8319ec"
@ -7624,21 +7483,6 @@ send@0.18.0, send@^0.18.0:
range-parser "~1.2.1"
statuses "2.0.1"
sentry-expo@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/sentry-expo/-/sentry-expo-5.0.2.tgz#2dc1e3b0fb42c130758d1c812979e236a300dd59"
integrity sha512-okDqnFuQ1iQLWAEMW7SbLNcfg9XkKyr1FwP6cuLgVl4sPuZEr5mQtLSp4jXUncWYtIG2gnRkmXmZukkUat/OoQ==
dependencies:
"@expo/config-plugins" "~5.0.0"
"@expo/config-types" "^46.0.1"
"@expo/spawn-async" "^1.6.0"
"@sentry/browser" "7.7.0"
"@sentry/integrations" "7.7.0"
"@sentry/react-native" "4.2.2"
"@sentry/types" "7.7.0"
mkdirp "^1.0.4"
rimraf "^3.0.2"
serialize-error@6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-6.0.0.tgz#ccfb887a1dd1c48d6d52d7863b92544331fd752b"
@ -8336,7 +8180,7 @@ typescript@^4.8.3:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88"
integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==
ua-parser-js@^0.7.19, ua-parser-js@^0.7.30:
ua-parser-js@^0.7.30:
version "0.7.31"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6"
integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==

Loading…
Cancel
Save