From ff6a044f66e0babeaf559880735362fa69590f7e Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 29 May 2024 05:02:49 +0100 Subject: [PATCH] Bump more Expo libs (#4251) * Bump more Expo libs * Use legacy camera API * fix `expo-notifications` patch * bump `menu` * change patch name * patch reanimated * Revert "patch reanimated" This reverts commit dad822d8ea04c71a609784114d60f2e67b78290b. * Use nightly reanimated * Revert "Use nightly reanimated" This reverts commit 6687c7182883feb889cbf2c67dd14890e06bc501. * Revert "Revert "patch reanimated"" This reverts commit c30abd6732f559ca04dc59698411e1058800d63e. --------- Co-authored-by: Hailey --- package.json | 22 +- ....patch => expo-notifications+0.28.3.patch} | 44 ++-- ....md => expo-notifications-0.28.3.patch.md} | 0 patches/react-native-reanimated+3.11.0.patch | 209 ++++++++++++++++++ src/lib/hooks/usePermissions.ts | 5 +- yarn.lock | 102 ++++----- 6 files changed, 290 insertions(+), 92 deletions(-) rename patches/{expo-notifications+0.28.1.patch => expo-notifications+0.28.3.patch} (98%) rename patches/{expo-notifications-0.27.6.patch.md => expo-notifications-0.28.3.patch.md} (100%) diff --git a/package.json b/package.json index 5ba1856327..38c450c348 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "@radix-ui/react-dropdown-menu": "^2.0.6", "@react-native-async-storage/async-storage": "1.23.1", "@react-native-masked-view/masked-view": "0.3.0", - "@react-native-menu/menu": "^0.8.0", + "@react-native-menu/menu": "^1.1.0", "@react-native-picker/picker": "2.6.1", "@react-navigation/bottom-tabs": "^6.5.20", "@react-navigation/drawer": "^6.6.15", @@ -114,28 +114,28 @@ "expo": "^51.0.8", "expo-application": "^5.9.1", "expo-build-properties": "^0.12.1", - "expo-camera": "~14.1.3", - "expo-clipboard": "^5.0.1", - "expo-constants": "~15.4.6", + "expo-camera": "~15.0.9", + "expo-clipboard": "^6.0.3", + "expo-constants": "~16.0.1", "expo-dev-client": "^4.0.14", - "expo-device": "~5.9.3", - "expo-file-system": "^16.0.9", - "expo-haptics": "^12.8.1", + "expo-device": "~6.0.2", + "expo-file-system": "^17.0.1", + "expo-haptics": "^13.0.1", "expo-image": "~1.12.9", - "expo-image-manipulator": "^12.0.3", - "expo-image-picker": "~15.0.4", + "expo-image-manipulator": "^12.0.5", + "expo-image-picker": "~15.0.5", "expo-linear-gradient": "^13.0.2", "expo-linking": "^6.3.1", "expo-localization": "~15.0.3", "expo-media-library": "~16.0.3", "expo-navigation-bar": "~3.0.4", - "expo-notifications": "~0.28.1", + "expo-notifications": "~0.28.3", "expo-sharing": "^12.0.1", "expo-splash-screen": "~0.27.4", "expo-status-bar": "~1.12.1", "expo-system-ui": "~3.0.4", "expo-task-manager": "~11.8.1", - "expo-updates": "~0.25.11", + "expo-updates": "~0.25.14", "expo-web-browser": "~13.0.3", "fast-text-encoding": "^1.0.6", "history": "^5.3.0", diff --git a/patches/expo-notifications+0.28.1.patch b/patches/expo-notifications+0.28.3.patch similarity index 98% rename from patches/expo-notifications+0.28.1.patch rename to patches/expo-notifications+0.28.3.patch index 41e91446e6..3a9985c7b0 100644 --- a/patches/expo-notifications+0.28.1.patch +++ b/patches/expo-notifications+0.28.3.patch @@ -4,10 +4,10 @@ index d233e1f..cc2f856 100644 +++ b/node_modules/expo-notifications/android/build.gradle @@ -32,6 +32,7 @@ dependencies { api 'com.google.firebase:firebase-messaging:22.0.0' - + api 'me.leolin:ShortcutBadger:1.1.22@aar' + implementation project(':expo-background-notification-handler') - + if (project.findProject(':expo-modules-test-core')) { testImplementation project(':expo-modules-test-core') diff --git a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/JSONNotificationContentBuilder.java b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/JSONNotificationContentBuilder.java @@ -16,14 +16,14 @@ index 0af7fe0..8f2c8d8 100644 +++ b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/JSONNotificationContentBuilder.java @@ -14,6 +14,7 @@ import expo.modules.notifications.notifications.enums.NotificationPriority; import expo.modules.notifications.notifications.model.NotificationContent; - + public class JSONNotificationContentBuilder extends NotificationContent.Builder { + private static final String CHANNEL_ID_KEY = "channelId"; private static final String TITLE_KEY = "title"; private static final String TEXT_KEY = "message"; private static final String SUBTITLE_KEY = "subtitle"; @@ -36,6 +37,7 @@ public class JSONNotificationContentBuilder extends NotificationContent.Builder - + public NotificationContent.Builder setPayload(JSONObject payload) { this.setTitle(getTitle(payload)) + .setChannelId(getChannelId(payload)) @@ -33,7 +33,7 @@ index 0af7fe0..8f2c8d8 100644 @@ -60,6 +62,14 @@ public class JSONNotificationContentBuilder extends NotificationContent.Builder return this; } - + + protected String getChannelId(JSONObject payload) { + try { + return payload.getString(CHANNEL_ID_KEY); @@ -46,21 +46,21 @@ index 0af7fe0..8f2c8d8 100644 try { return payload.getString(TITLE_KEY); diff --git a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationContent.java b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationContent.java -index f1fed19..166b34f 100644 +index f1fed19..80afe9e 100644 --- a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationContent.java +++ b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationContent.java @@ -20,6 +20,7 @@ import expo.modules.notifications.notifications.enums.NotificationPriority; * should be created using {@link NotificationContent.Builder}. */ public class NotificationContent implements Parcelable, Serializable { -+ private string mChannelId; ++ private String mChannelId; private String mTitle; private String mText; private String mSubtitle; @@ -50,6 +51,11 @@ public class NotificationContent implements Parcelable, Serializable { } }; - + + @Nullable + public String getChannelId() { + return mTitle; @@ -71,14 +71,14 @@ index f1fed19..166b34f 100644 return mTitle; @@ -121,6 +127,7 @@ public class NotificationContent implements Parcelable, Serializable { } - + protected NotificationContent(Parcel in) { + mChannelId = in.readString(); mTitle = in.readString(); mText = in.readString(); mSubtitle = in.readString(); @@ -146,6 +153,7 @@ public class NotificationContent implements Parcelable, Serializable { - + @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeString(mChannelId); @@ -87,7 +87,7 @@ index f1fed19..166b34f 100644 dest.writeString(mSubtitle); @@ -166,6 +174,7 @@ public class NotificationContent implements Parcelable, Serializable { private static final long serialVersionUID = 397666843266836802L; - + private void writeObject(java.io.ObjectOutputStream out) throws IOException { + out.writeObject(mChannelId); out.writeObject(mTitle); @@ -95,7 +95,7 @@ index f1fed19..166b34f 100644 out.writeObject(mSubtitle); @@ -190,6 +199,7 @@ public class NotificationContent implements Parcelable, Serializable { } - + private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { + mChannelId = (String) in.readObject(); mTitle = (String) in.readObject(); @@ -103,16 +103,16 @@ index f1fed19..166b34f 100644 mSubtitle = (String) in.readObject(); @@ -240,6 +250,7 @@ public class NotificationContent implements Parcelable, Serializable { } - + public static class Builder { -+ private string mChannelId; ++ private String mChannelId; private String mTitle; private String mText; private String mSubtitle; @@ -260,6 +271,11 @@ public class NotificationContent implements Parcelable, Serializable { useDefaultVibrationPattern(); } - + + public Builder setChannelId(String channelId) { + mChannelId = channelId; + return this; @@ -122,7 +122,7 @@ index f1fed19..166b34f 100644 mTitle = title; return this; @@ -336,6 +352,7 @@ public class NotificationContent implements Parcelable, Serializable { - + public NotificationContent build() { NotificationContent content = new NotificationContent(); + content.mChannelId = mChannelId; @@ -134,16 +134,16 @@ index 6bd9928..ee93d70 100644 --- a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ExpoNotificationBuilder.java +++ b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ExpoNotificationBuilder.java @@ -48,6 +48,10 @@ public class ExpoNotificationBuilder extends ChannelAwareNotificationBuilder { - + NotificationContent content = getNotificationContent(); - + + if (content.getChannelId() != null) { + builder.setChannelId(content.getChannelId()); + } + builder.setAutoCancel(content.isAutoDismiss()); builder.setOngoing(content.isSticky()); - + diff --git a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/service/delegates/FirebaseMessagingDelegate.kt b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/service/delegates/FirebaseMessagingDelegate.kt index 55b3a8d..1b99d5b 100644 --- a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/service/delegates/FirebaseMessagingDelegate.kt @@ -158,7 +158,7 @@ index 55b3a8d..1b99d5b 100644 import org.json.JSONObject import java.lang.ref.WeakReference import java.util.* - + -open class FirebaseMessagingDelegate(protected val context: Context) : FirebaseMessagingDelegate { +open class FirebaseMessagingDelegate(protected val context: Context) : FirebaseMessagingDelegate, BackgroundNotificationHandlerInterface { companion object { @@ -166,7 +166,7 @@ index 55b3a8d..1b99d5b 100644 // than by static properties. Fortunately, using weak references we can @@ -89,12 +92,21 @@ open class FirebaseMessagingDelegate(protected val context: Context) : FirebaseM fun getBackgroundTasks() = sBackgroundTaskConsumerReferences.values.mapNotNull { it.get() } - + override fun onMessageReceived(remoteMessage: RemoteMessage) { - NotificationsService.receive(context, createNotification(remoteMessage)) - getBackgroundTasks().forEach { @@ -181,7 +181,7 @@ index 55b3a8d..1b99d5b 100644 + } } } - + + override fun showMessage(remoteMessage: RemoteMessage) { + NotificationsService.receive(context, createNotification(remoteMessage)) + } diff --git a/patches/expo-notifications-0.27.6.patch.md b/patches/expo-notifications-0.28.3.patch.md similarity index 100% rename from patches/expo-notifications-0.27.6.patch.md rename to patches/expo-notifications-0.28.3.patch.md diff --git a/patches/react-native-reanimated+3.11.0.patch b/patches/react-native-reanimated+3.11.0.patch index f189853859..9147cf08ef 100644 --- a/patches/react-native-reanimated+3.11.0.patch +++ b/patches/react-native-reanimated+3.11.0.patch @@ -1,3 +1,212 @@ +diff --git a/node_modules/react-native-reanimated/src/createAnimatedComponent/commonTypes.ts b/node_modules/react-native-reanimated/src/createAnimatedComponent/commonTypes.ts +index 92ebe62..5f8207e 100644 +--- a/node_modules/react-native-reanimated/src/createAnimatedComponent/commonTypes.ts ++++ b/node_modules/react-native-reanimated/src/createAnimatedComponent/commonTypes.ts +@@ -96,7 +96,8 @@ export interface AnimatedComponentRef extends Component { + export interface IAnimatedComponentInternal { + _styles: StyleProps[] | null; + _animatedProps?: Partial>; +- _viewTag: number; ++ _componentViewTag: number; ++ _eventViewTag: number; + _isFirstRender: boolean; + jestAnimatedStyle: { value: StyleProps }; + _component: AnimatedComponentRef | HTMLElement | null; +diff --git a/node_modules/react-native-reanimated/src/createAnimatedComponent/createAnimatedComponent.tsx b/node_modules/react-native-reanimated/src/createAnimatedComponent/createAnimatedComponent.tsx +index 88b3fdf..2488ebc 100644 +--- a/node_modules/react-native-reanimated/src/createAnimatedComponent/createAnimatedComponent.tsx ++++ b/node_modules/react-native-reanimated/src/createAnimatedComponent/createAnimatedComponent.tsx +@@ -122,7 +122,8 @@ export function createAnimatedComponent( + { + _styles: StyleProps[] | null = null; + _animatedProps?: Partial>; +- _viewTag = -1; ++ _componentViewTag = -1; ++ _eventViewTag = -1; + _isFirstRender = true; + jestAnimatedStyle: { value: StyleProps } = { value: {} }; + _component: AnimatedComponentRef | HTMLElement | null = null; +@@ -143,7 +144,8 @@ export function createAnimatedComponent( + } + + componentDidMount() { +- this._viewTag = this._getViewInfo().viewTag as number; ++ this._setComponentViewTag(); ++ this._setEventViewTag(); + this._attachNativeEvents(); + this._jsPropsUpdater.addOnJSPropsChangeListener(this); + this._attachAnimatedStyles(); +@@ -185,7 +187,10 @@ export function createAnimatedComponent( + if (this.props.sharedTransitionTag) { + this._configureSharedTransition(true); + } +- this._sharedElementTransition?.unregisterTransition(this._viewTag, true); ++ this._sharedElementTransition?.unregisterTransition( ++ this._componentViewTag, ++ true ++ ); + + const exiting = this.props.exiting; + if ( +@@ -209,7 +214,7 @@ export function createAnimatedComponent( + : getReduceMotionFromConfig(); + if (!reduceMotionInExiting) { + updateLayoutAnimations( +- this._viewTag, ++ this._componentViewTag, + LayoutAnimationType.EXITING, + maybeBuild( + exiting, +@@ -221,12 +226,22 @@ export function createAnimatedComponent( + } + } + +- _getEventViewRef() { +- // Make sure to get the scrollable node for components that implement +- // `ScrollResponder.Mixin`. +- return (this._component as AnimatedComponentRef)?.getScrollableNode +- ? (this._component as AnimatedComponentRef).getScrollableNode?.() +- : this._component; ++ _setComponentViewTag() { ++ this._componentViewTag = this._getViewInfo().viewTag as number; ++ } ++ ++ _setEventViewTag() { ++ // Setting the tag for registering events - since the event emitting view can be nested inside the main component ++ const componentAnimatedRef = this._component as AnimatedComponentRef; ++ if (componentAnimatedRef.getScrollableNode) { ++ const scrollableNode = componentAnimatedRef.getScrollableNode(); ++ this._eventViewTag = findNodeHandle(scrollableNode) ?? -1; ++ } else { ++ this._eventViewTag = ++ findNodeHandle( ++ options?.setNativeProps ? this : componentAnimatedRef ++ ) ?? -1; ++ } + } + + _attachNativeEvents() { +@@ -236,7 +251,7 @@ export function createAnimatedComponent( + has('workletEventHandler', prop) && + prop.workletEventHandler instanceof WorkletEventHandler + ) { +- prop.workletEventHandler.registerForEvents(this._viewTag, key); ++ prop.workletEventHandler.registerForEvents(this._eventViewTag, key); + } + } + } +@@ -248,7 +263,7 @@ export function createAnimatedComponent( + has('workletEventHandler', prop) && + prop.workletEventHandler instanceof WorkletEventHandler + ) { +- prop.workletEventHandler.unregisterFromEvents(this._viewTag); ++ prop.workletEventHandler.unregisterFromEvents(this._eventViewTag); + } + } + } +@@ -258,15 +273,17 @@ export function createAnimatedComponent( + for (const style of this._styles) { + style.viewsRef.remove(this); + } +- } else if (this._viewTag !== -1 && this._styles !== null) { ++ } else if (this._componentViewTag !== -1 && this._styles !== null) { + for (const style of this._styles) { +- style.viewDescriptors.remove(this._viewTag); ++ style.viewDescriptors.remove(this._componentViewTag); + } + if (this.props.animatedProps?.viewDescriptors) { +- this.props.animatedProps.viewDescriptors.remove(this._viewTag); ++ this.props.animatedProps.viewDescriptors.remove( ++ this._componentViewTag ++ ); + } + if (isFabric()) { +- removeFromPropsRegistry(this._viewTag); ++ removeFromPropsRegistry(this._componentViewTag); + } + } + } +@@ -283,15 +300,19 @@ export function createAnimatedComponent( + const newProp = this.props[key]; + if (!newProp) { + // Prop got deleted +- prevProp.workletEventHandler.unregisterFromEvents(this._viewTag); ++ prevProp.workletEventHandler.unregisterFromEvents( ++ this._eventViewTag ++ ); + } else if ( + has('workletEventHandler', newProp) && + newProp.workletEventHandler instanceof WorkletEventHandler && + newProp.workletEventHandler !== prevProp.workletEventHandler + ) { + // Prop got changed +- prevProp.workletEventHandler.unregisterFromEvents(this._viewTag); +- newProp.workletEventHandler.registerForEvents(this._viewTag); ++ prevProp.workletEventHandler.unregisterFromEvents( ++ this._eventViewTag ++ ); ++ newProp.workletEventHandler.registerForEvents(this._eventViewTag); + } + } + } +@@ -304,7 +325,7 @@ export function createAnimatedComponent( + !prevProps[key] + ) { + // Prop got added +- newProp.workletEventHandler.registerForEvents(this._viewTag); ++ newProp.workletEventHandler.registerForEvents(this._eventViewTag); + } + } + } +@@ -381,7 +402,7 @@ export function createAnimatedComponent( + adaptViewConfig(viewConfig); + } + +- this._viewTag = viewTag as number; ++ this._componentViewTag = viewTag as number; + + // remove old styles + if (prevStyles) { +@@ -487,7 +508,11 @@ export function createAnimatedComponent( + AnimatedComponent.displayName + ) + : undefined; +- updateLayoutAnimations(this._viewTag, LayoutAnimationType.LAYOUT, layout); ++ updateLayoutAnimations( ++ this._componentViewTag, ++ LayoutAnimationType.LAYOUT, ++ layout ++ ); + } + + _configureSharedTransition(isUnmounting = false) { +@@ -497,7 +522,7 @@ export function createAnimatedComponent( + const { sharedTransitionTag } = this.props; + if (!sharedTransitionTag) { + this._sharedElementTransition?.unregisterTransition( +- this._viewTag, ++ this._componentViewTag, + isUnmounting + ); + this._sharedElementTransition = null; +@@ -508,7 +533,7 @@ export function createAnimatedComponent( + this._sharedElementTransition ?? + new SharedTransition(); + sharedElementTransition.registerTransition( +- this._viewTag, ++ this._componentViewTag, + sharedTransitionTag, + isUnmounting + ); +@@ -527,7 +552,7 @@ export function createAnimatedComponent( + ? (ref as HTMLElement) + : findNodeHandle(ref as Component); + +- this._viewTag = tag as number; ++ this._componentViewTag = tag as number; + + const { layout, entering, exiting, sharedTransitionTag } = this.props; + if ( diff --git a/node_modules/react-native-reanimated/lib/module/reanimated2/index.js b/node_modules/react-native-reanimated/lib/module/reanimated2/index.js index ac9be5d..86d4605 100644 --- a/node_modules/react-native-reanimated/lib/module/reanimated2/index.js diff --git a/src/lib/hooks/usePermissions.ts b/src/lib/hooks/usePermissions.ts index 138f3eacab..baf9f7b8af 100644 --- a/src/lib/hooks/usePermissions.ts +++ b/src/lib/hooks/usePermissions.ts @@ -1,6 +1,7 @@ -import {Camera} from 'expo-camera' -import * as MediaLibrary from 'expo-media-library' import {Linking} from 'react-native' +import {Camera} from 'expo-camera/legacy' // TODO: Migrate to the new one. +import * as MediaLibrary from 'expo-media-library' + import {isWeb} from 'platform/detection' import {Alert} from 'view/com/util/Alert' diff --git a/yarn.lock b/yarn.lock index f8a3824a04..2b105f00ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3572,10 +3572,10 @@ p-limit "^3.1.0" resolve-from "^5.0.0" -"@expo/fingerprint@^0.7.0": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@expo/fingerprint/-/fingerprint-0.7.1.tgz#5778c79f6be2471b4c703381e26e9ee0691fa8c6" - integrity sha512-lbTwFiIk0lOm9zzPRvnC45GfPqXqPB3w4hDDKVma+8FDAbPCWhNN42ltLhx/ekwcHFQxURmg0fHm59k0Vy+jtw== +"@expo/fingerprint@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@expo/fingerprint/-/fingerprint-0.8.0.tgz#631a64c5db23e121228546502ae6a0eeab19aaf7" + integrity sha512-LBNweJnpG16p7SbvFGINF5Q44bDErIcm1li9SuvYQgrrSey3ErIPmZsiMsNBxlvVie6eTp4wmFO6IFmeaqEhbg== dependencies: "@expo/spawn-async" "^1.7.2" chalk "^4.1.2" @@ -5482,10 +5482,10 @@ resolved "https://registry.yarnpkg.com/@react-native-masked-view/masked-view/-/masked-view-0.3.0.tgz#bd29fae18d148a685331910a3c7b766ce87eafcc" integrity sha512-qLyoObcjzrkpNcoJjXquUePXfL1dXjHtuv+yX0zZ0Q4kG5yvVqd620+tSh7WbRoHkjpXhFBfLwvGhcWB2I0Lpw== -"@react-native-menu/menu@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@react-native-menu/menu/-/menu-0.8.0.tgz#dbf227c2081e5ffd3d2073ee68ecc84cf8639727" - integrity sha512-kxiT6ySZsDbBvNWovrKVAfs4AQvAytKIf0f8KQLkVO6eNYMUmONBQPzi6onTTbVujXtZHambo7qr/PcedaR8Tg== +"@react-native-menu/menu@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@react-native-menu/menu/-/menu-1.1.0.tgz#e89c0850f7e5aa4c671c44a9c10edafadb23c35a" + integrity sha512-vf9zp0M4nbAFnSKz5NJYKUPM5UzXWmLyGcjtuPaKWYxxloz9C0Pp6XdZRJnoOSlfRShE8NksX3bVY8W4wGnlCQ== "@react-native-picker/picker@2.6.1": version "2.6.1" @@ -12063,17 +12063,17 @@ expo-build-properties@^0.12.1: ajv "^8.11.0" semver "^7.6.0" -expo-camera@~14.1.3: - version "14.1.3" - resolved "https://registry.yarnpkg.com/expo-camera/-/expo-camera-14.1.3.tgz#c3b36c7ed28613e7423b6c4df192549f4f9ee0dd" - integrity sha512-JodpVjOY8JDuSp/RkphS8Bxqaj/gwg0h0UbQB9MLr1LoxbL9brvJt7IZnmTf7+ON8jRKUx9E5o/F02pRNbmSbQ== +expo-camera@~15.0.9: + version "15.0.9" + resolved "https://registry.yarnpkg.com/expo-camera/-/expo-camera-15.0.9.tgz#a6a175638bdd9914aca061c6090001452329fcea" + integrity sha512-xH+y8gA/3rNLostIw+z4kDGA+AYzsI9+QYb7G1uCFyxr3SxUGhapz+oMBFDU++vmyo9G7Ax0n52nghqIrNBJxQ== dependencies: invariant "^2.2.4" -expo-clipboard@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/expo-clipboard/-/expo-clipboard-5.0.1.tgz#a62a021a9444740d180d60f915cca8242a323716" - integrity sha512-JH853QJPr5W3h87If3aDTnMK+ESSIrwzU2TdfZrqZttVDY2pMIf/w37mVHHNYodXM4ATHXadtOkjKbAa0DWwUg== +expo-clipboard@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/expo-clipboard/-/expo-clipboard-6.0.3.tgz#dfea74d4a004dce59ecefd063d6fb9f1c356a03f" + integrity sha512-RIKDsuHkYfaspifbFpVC8sBVFKR05L7Pj7mU2/XkbrW9m01OBNvdpGraXEMsTFCx97xMGsZpEw9pPquL4j4xVg== expo-constants@^13.0.2: version "13.2.4" @@ -12083,14 +12083,7 @@ expo-constants@^13.0.2: "@expo/config" "~7.0.0" uuid "^3.3.2" -expo-constants@~15.4.6: - version "15.4.6" - resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-15.4.6.tgz#d4e9b21b70c5602457962700f2e90a75356b487b" - integrity sha512-vizE69dww2Vl0PTWWvDmK0Jo2/J+WzdcMZlA05YEnEYofQuhKxTVsiuipf79mSOmFavt4UQYC1UnzptzKyfmiQ== - dependencies: - "@expo/config" "~8.5.0" - -expo-constants@~16.0.0: +expo-constants@~16.0.0, expo-constants@~16.0.1: version "16.0.1" resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-16.0.1.tgz#1285e29c85513c6e88e118289e2baab72596d3f7" integrity sha512-s6aTHtglp926EsugWtxN7KnpSsE9FCEjb7CgEjQQ78Gpu4btj4wB+IXot2tlqNwqv+x7xFe5veoPGfJDGF/kVg== @@ -12139,10 +12132,10 @@ expo-device@~4.1.1: dependencies: ua-parser-js "^0.7.19" -expo-device@~5.9.3: - version "5.9.4" - resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-5.9.4.tgz#7dc8ba3695e1c0891bbc840a255faac479310c08" - integrity sha512-nleq3GghLWWJrj4YH8HiCumnTF/gy4zRd3jedCkO8lMKQg6R1yn3v0ch8NtgPDci749FkNzOtXx/vmFImQalwg== +expo-device@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-6.0.2.tgz#9bc3eccd16509c2819c225cc2ca8f7c3e3bdd11e" + integrity sha512-sCt91CuTmAuMXX4SlFOn4lIos2UIr8vb0jDstDDZXys6kErcj0uynC7bQAMreU5uRUTKMAl4MAMpKt9ufCXPBw== dependencies: ua-parser-js "^0.7.33" @@ -12151,12 +12144,7 @@ expo-eas-client@~0.12.0: resolved "https://registry.yarnpkg.com/expo-eas-client/-/expo-eas-client-0.12.0.tgz#e8b6f7d33873e6f630f37f7bfc41646ae7b0b2a9" integrity sha512-Jkww9Cwpv0z7DdLYiRX0r4fqBEcI9cKqTn7cHx63S09JaZ2rcwEE4zYHgrXwjahO+tU2VW8zqH+AJl6RhhW4zA== -expo-file-system@^16.0.9: - version "16.0.9" - resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-16.0.9.tgz#cbd6c4b228b60a6b6c71fd1b91fe57299fb24da7" - integrity sha512-3gRPvKVv7/Y7AdD9eHMIdfg5YbUn2zbwKofjsloTI5sEC57SLUFJtbLvUCz9Pk63DaSQ7WIE1JM0EASyvuPbuw== - -expo-file-system@~17.0.1: +expo-file-system@^17.0.1, expo-file-system@~17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-17.0.1.tgz#b9f8af8c1c06ec71d96fd7a0d2567fa9e1c88f15" integrity sha512-dYpnZJqTGj6HCYJyXAgpFkQWsiCH3HY1ek2cFZVHFoEc5tLz9gmdEgTF6nFHurvmvfmXqxi7a5CXyVm0aFYJBw== @@ -12168,27 +12156,27 @@ expo-font@~12.0.5: dependencies: fontfaceobserver "^2.1.0" -expo-haptics@^12.8.1: - version "12.8.1" - resolved "https://registry.yarnpkg.com/expo-haptics/-/expo-haptics-12.8.1.tgz#42b996763be33d661bd33bbc3b3958c3f2734b9d" - integrity sha512-ntLsHkfle8K8w9MW8pZEw92ZN3sguaGUSSIxv30fPKNeQFu7Cq/h47Qv3tONv2MO3wU48N9FbKnant6XlfptpA== +expo-haptics@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/expo-haptics/-/expo-haptics-13.0.1.tgz#35679c7fde4ae1c21ae3bc2d2cb34c266049dc2c" + integrity sha512-qG0EOLDE4bROVT3DtUSyV9g3iB3YFu9j3711X7SNNEnBDXc+2/p3wGDPTnJvPW0ao6HG3/McAOrBQA5hVSdWng== expo-image-loader@~4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/expo-image-loader/-/expo-image-loader-4.7.0.tgz#d403106822de80bda12d644c82b7a3b7983c0f0b" integrity sha512-cx+MxxsAMGl9AiWnQUzrkJMJH4eNOGlu7XkLGnAXSJrRoIiciGaKqzeaD326IyCTV+Z1fXvIliSgNW+DscvD8g== -expo-image-manipulator@^12.0.3: - version "12.0.3" - resolved "https://registry.yarnpkg.com/expo-image-manipulator/-/expo-image-manipulator-12.0.3.tgz#797fda98f606a65c6be9d2c0f53256f3fb3f798c" - integrity sha512-gosW32roHbXRKPiBVbQDFpxaZf8sjOJ9aaqbe085Qfcenvvr1lNFMx9M9BFYhAoKd23oEWlyvNHDnAayV4gAFA== +expo-image-manipulator@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/expo-image-manipulator/-/expo-image-manipulator-12.0.5.tgz#e3dd2810d27025705f73523cd4ba47b0d091a662" + integrity sha512-zJ8yINjckYw/yfoSuICt4yJ9xr112+W9e5QVXwK3nCAHr7sv45RQ5sxte0qppf594TPl+UoV6Tjim7WpoKipRQ== dependencies: expo-image-loader "~4.7.0" -expo-image-picker@~15.0.4: - version "15.0.4" - resolved "https://registry.yarnpkg.com/expo-image-picker/-/expo-image-picker-15.0.4.tgz#b01121b26c88ee14bf49133160e408c1e7972b4d" - integrity sha512-Jo78o3DQfqpYC4fsnayxTEVGDFSbaNMwx5gQ2PPlEYMK5AmD5qexQjxhlxM1mZ0e1xkJKJfN7XEdcf53jW9vIg== +expo-image-picker@~15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/expo-image-picker/-/expo-image-picker-15.0.5.tgz#8a3d4c3ecdb5bcf58f09e024597dd69edf7baa9c" + integrity sha512-Qqp16udsadx/YpNcNaWzfbmO0tbMxyX9bS1aFiDVC+Zffh8LY8S4HJJcnWqSC2TeuAl+9SxUwTloJagvPeMBBw== dependencies: expo-image-loader "~4.7.0" @@ -12268,10 +12256,10 @@ expo-navigation-bar@~3.0.4: "@react-native/normalize-colors" "~0.74.83" debug "^4.3.2" -expo-notifications@~0.28.1: - version "0.28.1" - resolved "https://registry.yarnpkg.com/expo-notifications/-/expo-notifications-0.28.1.tgz#9152cb17100ce72b66f2bf642fb097c3ae2d2019" - integrity sha512-qBVcq3lc+FIvcYt/8M+JB1c60g0hVuyGY4MVGTY56ciU6nMOCiBiz4XPc3DeiZA16jVtfriooWA26wqBkQfkHg== +expo-notifications@~0.28.3: + version "0.28.3" + resolved "https://registry.yarnpkg.com/expo-notifications/-/expo-notifications-0.28.3.tgz#9076c2bd69c3de3338a2e2161c8bd5f18cb440cb" + integrity sha512-Xaj82eQUJzJXa8+giZr708ih86GGtkGS8N01epoiDkTKC8Z9783UJ8Pf8+PSFSfHsY3Sd8TJpQrD9n7QnGHwGQ== dependencies: "@expo/image-utils" "^0.5.0" "@ide/backoff" "^1.0.0" @@ -12334,15 +12322,15 @@ expo-updates-interface@~0.16.2: resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-0.16.2.tgz#ad1ac2ca8ee5a8cc84052ea3c18a11da64da569b" integrity sha512-929XBU70q5ELxkKADj1xL0UIm3HvhYhNAOZv5DSk7rrKvLo7QDdPyl+JVnwZm9LrkNbH4wuE2rLoKu1KMgZ+9A== -expo-updates@~0.25.11: - version "0.25.11" - resolved "https://registry.yarnpkg.com/expo-updates/-/expo-updates-0.25.11.tgz#a477139cfd5f67c7b5fdf41eba3f6dad471eeb14" - integrity sha512-ZO+e6bLsEBMz+JdEOlJXGf+3w606si7zKKEEzkwDQWJWP20W0WQAG+MDYgTEgxQboc+jTC+T0MvvOvkVb8cFIQ== +expo-updates@~0.25.14: + version "0.25.14" + resolved "https://registry.yarnpkg.com/expo-updates/-/expo-updates-0.25.14.tgz#d0838780d0fa91558df72ca0f8b25b02466da11c" + integrity sha512-taYa6Q/882MxPaMZEoU0Tr4Ivtq0B0XUmCgj7GcKv0pDDhB7vuQ4uxXhWYn5udX+nJM0KH+dtEVFNVyeucVArg== dependencies: "@expo/code-signing-certificates" "0.0.5" - "@expo/config" "~9.0.0-beta.0" - "@expo/config-plugins" "~8.0.0-beta.0" - "@expo/fingerprint" "^0.7.0" + "@expo/config" "~9.0.0" + "@expo/config-plugins" "~8.0.0" + "@expo/fingerprint" "^0.8.0" "@expo/spawn-async" "^1.7.2" arg "4.1.0" chalk "^4.1.2"