expo-dev-menu 4.2.1 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,24 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 4.3.0 — 2023-10-17
14
+
15
+ ### 🛠 Breaking changes
16
+
17
+ - Dropped support for Android SDK 21 and 22. ([#24201](https://github.com/expo/expo/pull/24201) by [@behenate](https://github.com/behenate))
18
+
19
+ ### 🐛 Bug fixes
20
+
21
+ - [Android] Fixed Fast Refresh being disabled by default ([#24643](https://github.com/expo/expo/pull/24643) by [@gabrieldonadel](https://github.com/gabrieldonadel))
22
+
23
+ ### 💡 Others
24
+
25
+ - Drop support for configuring SDK 44 and below with Prebuild. ([#24504](https://github.com/expo/expo/pull/24504) by [@EvanBacon](https://github.com/EvanBacon))
26
+
27
+ ## 3.2.1 — 2023-09-25
28
+
29
+ _This version does not introduce any user-facing changes._
30
+
13
31
  ## 4.2.1 — 2023-09-18
14
32
 
15
33
  ### 💡 Others
@@ -3,15 +3,15 @@ apply plugin: 'kotlin-android'
3
3
  apply plugin: 'maven-publish'
4
4
 
5
5
  group = 'host.exp.exponent'
6
- version = '4.2.1'
6
+ version = '4.3.0'
7
7
 
8
- buildscript {
9
- def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
10
- if (expoModulesCorePlugin.exists()) {
11
- apply from: expoModulesCorePlugin
12
- applyKotlinExpoModulesCorePlugin()
13
- }
8
+ def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
9
+ if (expoModulesCorePlugin.exists()) {
10
+ apply from: expoModulesCorePlugin
11
+ applyKotlinExpoModulesCorePlugin()
12
+ }
14
13
 
14
+ buildscript {
15
15
  // Simple helper that allows the root project to override versions declared by this library.
16
16
  ext.safeExtGet = { prop, fallback ->
17
17
  rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
@@ -51,7 +51,19 @@ afterEvaluate {
51
51
  }
52
52
 
53
53
  android {
54
- compileSdkVersion safeExtGet("compileSdkVersion", 33)
54
+ // Remove this if and it's contents, when support for SDK49 is dropped
55
+ if (!safeExtGet("expoProvidesDefaultConfig", false)) {
56
+ compileSdkVersion safeExtGet("compileSdkVersion", 33)
57
+
58
+ defaultConfig {
59
+ minSdkVersion safeExtGet("minSdkVersion", 23)
60
+ targetSdkVersion safeExtGet("targetSdkVersion", 33)
61
+ }
62
+
63
+ lintOptions {
64
+ abortOnError false
65
+ }
66
+ }
55
67
 
56
68
  def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION
57
69
  if (agpVersion.tokenize('.')[0].toInteger() < 8) {
@@ -67,13 +79,8 @@ android {
67
79
 
68
80
  namespace "expo.modules.devmenu"
69
81
  defaultConfig {
70
- minSdkVersion safeExtGet("minSdkVersion", 21)
71
- targetSdkVersion safeExtGet("targetSdkVersion", 33)
72
82
  versionCode 10
73
- versionName '4.2.1'
74
- }
75
- lintOptions {
76
- abortOnError false
83
+ versionName '4.3.0'
77
84
  }
78
85
 
79
86
  buildTypes {
@@ -69,5 +69,12 @@ internal class DevMenuInternalSettingsWrapper(private val devSettings: DevIntern
69
69
  set(value) {
70
70
  devSettings.isRemoteJSDebugEnabled = value
71
71
  }
72
+
73
+ var isJSDevModeEnabled: Boolean
74
+ get() = devSettings.isJSDevModeEnabled
75
+ set(value) {
76
+ devSettings.isJSDevModeEnabled = value
77
+ }
78
+
72
79
  val packagerConnectionSettings: PackagerConnectionSettings = devSettings.packagerConnectionSettings
73
80
  }
@@ -3,7 +3,6 @@ package expo.modules.devmenu.devtools
3
3
  import android.content.Context
4
4
  import android.content.Intent
5
5
  import android.net.Uri
6
- import android.os.Build
7
6
  import android.provider.Settings
8
7
  import android.util.Log
9
8
  import com.facebook.react.ReactInstanceManager
@@ -35,7 +34,7 @@ class DevMenuDevToolsDelegate(
35
34
  internal val devInternalSettings: DevMenuInternalSettingsWrapper?
36
35
  get() {
37
36
  val devSettings = this.devSettings ?: return null
38
- return if (devSettings.javaClass.canonicalName == "com.facebook.react.DevInternalSettings") DevMenuInternalSettingsWrapper(devSettings) else null
37
+ return if (devSettings.javaClass.canonicalName == "com.facebook.react.devsupport.DevLauncherInternalSettings") DevMenuInternalSettingsWrapper(devSettings) else null
39
38
  }
40
39
 
41
40
  val reactContext
@@ -105,10 +104,7 @@ class DevMenuDevToolsDelegate(
105
104
  * Such permission is required to enable performance monitor.
106
105
  */
107
106
  private fun requestOverlaysPermission(context: Context) {
108
- if (
109
- Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
110
- !Settings.canDrawOverlays(context)
111
- ) {
107
+ if (!Settings.canDrawOverlays(context)) {
112
108
  val uri = Uri.parse("package:" + context.applicationContext.packageName)
113
109
  val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, uri).apply {
114
110
  flags = Intent.FLAG_ACTIVITY_NEW_TASK
@@ -4,6 +4,7 @@ import android.util.Log
4
4
  import android.view.KeyEvent
5
5
  import com.facebook.react.bridge.ReactApplicationContext
6
6
  import com.facebook.react.bridge.ReactContextBaseJavaModule
7
+ import com.facebook.react.devsupport.HMRClient
7
8
  import expo.interfaces.devmenu.DevMenuExtensionInterface
8
9
  import expo.interfaces.devmenu.DevMenuExtensionSettingsInterface
9
10
  import expo.interfaces.devmenu.items.DevMenuDataSourceInterface
@@ -87,7 +88,20 @@ class DevMenuExtension(reactContext: ReactApplicationContext) :
87
88
  }
88
89
 
89
90
  val fastRefreshAction = {
90
- devInternalSettings.isHotModuleReplacementEnabled = !devInternalSettings.isHotModuleReplacementEnabled
91
+ val nextEnabled = !devInternalSettings.isHotModuleReplacementEnabled
92
+ devInternalSettings.isHotModuleReplacementEnabled = nextEnabled
93
+
94
+ if (reactApplicationContext != null) {
95
+ if (nextEnabled) {
96
+ reactApplicationContext.getJSModule(HMRClient::class.java).enable()
97
+ } else {
98
+ reactApplicationContext.getJSModule(HMRClient::class.java).disable()
99
+ }
100
+ }
101
+ if (nextEnabled && !devInternalSettings.isJSDevModeEnabled) {
102
+ devInternalSettings.isJSDevModeEnabled = true
103
+ reactDevManager.handleReloadJS()
104
+ }
91
105
  }
92
106
 
93
107
  action("fast-refresh", fastRefreshAction) {
@@ -429,7 +429,7 @@ __d((function(g,r,i,a,m,_e,d){'use strict';var t=r(d[0]),n=r(d[1]),e=r(d[2]),u=r
429
429
  __d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.DynamicColorIOS=void 0;e.DynamicColorIOS=function(o){throw new Error('DynamicColorIOS is not available on this platform.')}}),423,[]);
430
430
  __d((function(g,r,_i,a,m,_e,d){var e=r(d[0]),t=e(r(d[1])),n=e(r(d[2])),i=e(r(d[3])),o=e(r(d[4])),c=e(r(d[5])),l=e(r(d[6])),u=e(r(d[7])),s=e(r(d[8])),v=e(r(d[9])),f=r(d[10]),S=r(d[11]),h=r(d[12]),p=e(r(d[13])),y=e(r(d[14])),w=r(d[15]),N=r(d[16]),b=["children"],C=["enabled","freezeOnBlur"],k=["active","activityState","children","isNativeStack","gestureResponseDistance"],x=["active","activityState","style","onComponentRef"],R=["enabled","hasTwoStates"];function B(e){var t=O();return function(){var n,i=(0,c.default)(e);if(t){var l=(0,c.default)(this).constructor;n=Reflect.construct(i,arguments,l)}else n=i.apply(this,arguments);return(0,o.default)(this,n)}}function O(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function j(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function P(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?j(Object(n),!0).forEach((function(t){(0,l.default)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var H='ios'===f.Platform.OS||'android'===f.Platform.OS||'windows'===f.Platform.OS,A=H;var F=!1;var I,V,z,D,T,W,M,_,q,E;var U={get NativeScreen(){return I=I||r(d[17]).default},get NativeScreenContainer(){return V=V||r(d[18]).default},get NativeScreenNavigationContainer(){return z=z||('ios'===f.Platform.OS?(0,f.requireNativeComponent)('RNSScreenNavigationContainer'):this.NativeScreenContainer)},get NativeScreenStack(){return D=D||(0,f.requireNativeComponent)('RNSScreenStack')},get NativeScreenStackHeaderConfig(){return T=T||(0,f.requireNativeComponent)('RNSScreenStackHeaderConfig')},get NativeScreenStackHeaderSubview(){return W=W||(0,f.requireNativeComponent)('RNSScreenStackHeaderSubview')},get NativeSearchBar(){return _=_||r(d[19]).default},get NativeSearchBarCommands(){return q=q||r(d[19]).Commands},get NativeFullWindowOverlay(){return E=E||(0,f.requireNativeComponent)('RNSFullWindowOverlay')}};function L(e){var t=e.freeze,n=e.children,i=v.default.useState(!1),o=(0,s.default)(i,2),c=o[0],l=o[1];return t!==c&&setImmediate((function(){l(t)})),(0,N.jsx)(S.Freeze,{freeze:!!t&&c,children:n})}var G=(function(e){(0,i.default)(c,e);var o=B(c);function c(){var e;(0,t.default)(this,c);for(var n=arguments.length,i=new Array(n),l=0;l<n;l++)i[l]=arguments[l];return(e=o.call.apply(o,[this].concat(i))).ref=null,e.closing=new f.Animated.Value(0),e.progress=new f.Animated.Value(0),e.goingForward=new f.Animated.Value(0),e.setRef=function(t){e.ref=t,null==e.props.onComponentRef||e.props.onComponentRef(t)},e}return(0,n.default)(c,[{key:"setNativeProps",value:function(e){var t;null==(t=this.ref)||t.setNativeProps(e)}},{key:"render",value:function(){var e=this,t=this.props,n=t.enabled,i=void 0===n?A:n,o=t.freezeOnBlur,c=void 0===o?F:o,l=(0,u.default)(t,C);if(i&&H){var s,v,S,h;M=M||f.Animated.createAnimatedComponent(U.NativeScreen);var y=l.active,w=l.activityState,b=l.children,R=l.isNativeStack,B=l.gestureResponseDistance,O=(0,u.default)(l,k);void 0!==y&&void 0===w&&(console.warn('It appears that you are using old version of react-navigation library. Please update @react-navigation/bottom-tabs, @react-navigation/stack and @react-navigation/drawer to version 5.10.0 or above to take full advantage of new functionality added to react-native-screens'),w=0!==y?2:0);return(0,N.jsx)(L,{freeze:c&&0===w,children:(0,N.jsx)(M,P(P({},O),{},{activityState:w,gestureResponseDistance:{start:null!=(s=null==B?void 0:B.start)?s:-1,end:null!=(v=null==B?void 0:B.end)?v:-1,top:null!=(S=null==B?void 0:B.top)?S:-1,bottom:null!=(h=null==B?void 0:B.bottom)?h:-1},ref:function(t){var n,i;null!=t&&null!=(n=t.viewConfig)&&null!=(i=n.validAttributes)&&i.style&&(t.viewConfig.validAttributes.style=P(P({},t.viewConfig.validAttributes.style),{},{display:!1}),e.setRef(t))},onTransitionProgress:R?f.Animated.event([{nativeEvent:{progress:this.progress,closing:this.closing,goingForward:this.goingForward}}],{useNativeDriver:!0}):void 0,children:R?(0,N.jsx)(p.default.Provider,{value:{progress:this.progress,closing:this.closing,goingForward:this.goingForward},children:b}):b}))})}var j=l.active,I=l.activityState,V=l.style,z=(l.onComponentRef,(0,u.default)(l,x));return void 0!==j&&void 0===I&&(I=0!==j?2:0),(0,N.jsx)(f.Animated.View,P({style:[V,{display:0!==I?'flex':'none'}],ref:this.setRef},z))}}]),c})(v.default.Component);var J=f.StyleSheet.create({headerSubview:{position:'absolute',top:0,right:0,flexDirection:'row',alignItems:'center',justifyContent:'center'}}),K=(function(e){(0,i.default)(c,e);var o=B(c);function c(e){var n;return(0,t.default)(this,c),(n=o.call(this,e)).nativeSearchBarRef=v.default.createRef(),n}return(0,n.default)(c,[{key:"_callMethodWithRef",value:function(e){var t=this.nativeSearchBarRef.current;t?e(t):console.warn('Reference to native search bar component has not been updated yet')}},{key:"blur",value:function(){this._callMethodWithRef((function(e){return U.NativeSearchBarCommands.blur(e)}))}},{key:"focus",value:function(){this._callMethodWithRef((function(e){return U.NativeSearchBarCommands.focus(e)}))}},{key:"toggleCancelButton",value:function(e){this._callMethodWithRef((function(t){return U.NativeSearchBarCommands.toggleCancelButton(t,e)}))}},{key:"clearText",value:function(){this._callMethodWithRef((function(e){return U.NativeSearchBarCommands.clearText(e)}))}},{key:"setText",value:function(e){this._callMethodWithRef((function(t){return U.NativeSearchBarCommands.setText(t,e)}))}},{key:"render",value:function(){return w.isSearchBarAvailableForCurrentPlatform?(0,N.jsx)(U.NativeSearchBar,P(P({},this.props),{},{ref:this.nativeSearchBarRef})):(console.warn('Importing SearchBar is only valid on iOS and Android devices.'),f.View)}}]),c})(v.default.Component),Q=v.default.createContext(G),X=(function(e){(0,i.default)(c,e);var o=B(c);function c(){return(0,t.default)(this,c),o.apply(this,arguments)}return(0,n.default)(c,[{key:"render",value:function(){var e=this.context||G;return(0,N.jsx)(e,P({},this.props))}}]),c})(v.default.Component);X.contextType=Q,m.exports={Screen:X,ScreenContainer:function(e){var t=e.enabled,n=void 0===t?A:t,i=e.hasTwoStates,o=(0,u.default)(e,R);return n&&H?i?(0,N.jsx)(U.NativeScreenNavigationContainer,P({},o)):(0,N.jsx)(U.NativeScreenContainer,P({},o)):(0,N.jsx)(f.View,P({},o))},ScreenContext:Q,ScreenStack:function(e){var t=e.children,n=(0,u.default)(e,b),i=v.default.Children.count(t),o=v.default.Children.map(t,(function(e,t){var n,o,c,l,u=e.props,s=e.key,v=null!=(n=null==u?void 0:u.descriptor)?n:null==u||null==(o=u.descriptors)?void 0:o[s],f=null!=(c=null==v||null==(l=v.options)?void 0:l.freezeOnBlur)?c:F;return(0,N.jsx)(L,{freeze:f&&i-t>1,children:e})}));return(0,N.jsx)(U.NativeScreenStack,P(P({},n),{},{children:o}))},InnerScreen:G,SearchBar:K,FullWindowOverlay:function(e){return'ios'!==f.Platform.OS?(console.warn('Importing FullWindowOverlay is only valid on iOS devices.'),(0,N.jsx)(f.View,P({},e))):(0,N.jsx)(U.NativeFullWindowOverlay,{style:{position:'absolute',width:'100%',height:'100%'},children:e.children})},get NativeScreen(){return U.NativeScreen},get NativeScreenContainer(){return U.NativeScreenContainer},get NativeScreenNavigationContainer(){return U.NativeScreenNavigationContainer},get ScreenStackHeaderConfig(){return U.NativeScreenStackHeaderConfig},get ScreenStackHeaderSubview(){return U.NativeScreenStackHeaderSubview},get SearchBarCommands(){return U.NativeSearchBarCommands},ScreenStackHeaderBackButtonImage:function(e){return(0,N.jsx)(U.NativeScreenStackHeaderSubview,{type:"back",style:J.headerSubview,children:(0,N.jsx)(f.Image,P({resizeMode:"center",fadeDuration:0},e))})},ScreenStackHeaderRightView:function(e){return(0,N.jsx)(U.NativeScreenStackHeaderSubview,P(P({},e),{},{type:"right",style:J.headerSubview}))},ScreenStackHeaderLeftView:function(e){return(0,N.jsx)(U.NativeScreenStackHeaderSubview,P(P({},e),{},{type:"left",style:J.headerSubview}))},ScreenStackHeaderCenterView:function(e){return(0,N.jsx)(U.NativeScreenStackHeaderSubview,P(P({},e),{},{type:"center",style:J.headerSubview}))},ScreenStackHeaderSearchBarView:function(e){return(0,N.jsx)(U.NativeScreenStackHeaderSubview,P(P({},e),{},{type:"searchBar",style:J.headerSubview}))},enableScreens:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];(A=H&&e)&&!f.UIManager.getViewManagerConfig('RNSScreen')&&console.error("Screen native module hasn't been linked. Please check the react-native-screens README for more details")},enableFreeze:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=parseInt(h.version.split('.')[1]);0===t||t>=64||!e||console.warn('react-freeze library requires at least react-native 0.64. Please upgrade your react-native version in order to use this feature.'),F=e},screensEnabled:function(){return A},shouldUseActivityState:!0,useTransitionProgress:y.default,isSearchBarAvailableForCurrentPlatform:w.isSearchBarAvailableForCurrentPlatform,isNewBackTitleImplementation:w.isNewBackTitleImplementation,executeNativeBackPress:w.executeNativeBackPress}}),424,[5,14,15,31,33,35,30,163,46,95,1,425,426,427,428,429,204,430,431,432]);
431
431
  __d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.Freeze=function(o){var u=o.freeze,c=o.children,l=o.placeholder,p=void 0===l?null:l;return(0,n.jsx)(t.Suspense,{fallback:p,children:(0,n.jsx)(f,{freeze:u,children:c})})};var t=(function(t,n){if(!n&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var f=o(n);if(f&&f.has(t))return f.get(t);var u={},c=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in t)if("default"!==l&&Object.prototype.hasOwnProperty.call(t,l)){var p=c?Object.getOwnPropertyDescriptor(t,l):null;p&&(p.get||p.set)?Object.defineProperty(u,l,p):u[l]=t[l]}u.default=t,f&&f.set(t,u);return u})(r(d[0])),n=r(d[1]);function o(t){if("function"!=typeof WeakMap)return null;var n=new WeakMap,f=new WeakMap;return(o=function(t){return t?f:n})(t)}function f(o){var f=o.freeze,u=o.children,c=(0,t.useRef)({}).current;if(f&&!c.promise)throw c.promise=new Promise((function(t){c.resolve=t})),c.promise;if(f)throw c.promise;return c.promise&&(c.resolve(),c.promise=void 0),(0,n.jsx)(t.Fragment,{children:u})}}),425,[95,204]);
432
- __d((function(e,s,t,r,i,c,a){i.exports={name:"react-native",version:"0.72.4",bin:"./cli.js",description:"A framework for building native apps using React",license:"MIT",repository:"github:facebook/react-native",engines:{node:">=16"},types:"types","jest-junit":{outputDirectory:"reports/junit",outputName:"js-test-results.xml"},files:["android","build.gradle.kts","cli.js","flow","flow-typed","gradle.properties","index.js","interface.js","jest-preset.js","jest","Libraries","LICENSE","local-cli","React-Core.podspec","react-native.config.js","React.podspec","React","ReactAndroid","ReactCommon","README.md","rn-get-polyfills.js","scripts/compose-source-maps.js","scripts/find-node-for-xcode.sh","scripts/generate-codegen-artifacts.js","scripts/generate-provider-cli.js","scripts/generate-specs-cli.js","scripts/codegen","!scripts/codegen/__tests__","!scripts/codegen/__test_fixtures__","scripts/hermes/hermes-utils.js","scripts/hermes/prepare-hermes-for-build.js","scripts/ios-configure-glog.sh","scripts/xcode/with-environment.sh","scripts/launchPackager.bat","scripts/launchPackager.command","scripts/native_modules.rb","scripts/node-binary.sh","scripts/packager.sh","scripts/packager-reporter.js","scripts/react_native_pods_utils/script_phases.rb","scripts/react_native_pods_utils/script_phases.sh","scripts/react_native_pods.rb","scripts/cocoapods","!scripts/cocoapods/__tests__","scripts/react-native-xcode.sh","sdks/.hermesversion","sdks/hermes-engine","sdks/hermesc","settings.gradle.kts","template.config.js","template","!template/node_modules","!template/package-lock.json","!template/yarn.lock","third-party-podspecs","types"],scripts:{prepack:"cp ../../README.md ."},peerDependencies:{react:"18.2.0"},dependencies:{"@jest/create-cache-key-function":"^29.2.1","@react-native-community/cli":"11.3.6","@react-native-community/cli-platform-android":"11.3.6","@react-native-community/cli-platform-ios":"11.3.6","@react-native/assets-registry":"^0.72.0","@react-native/codegen":"^0.72.6","@react-native/gradle-plugin":"^0.72.11","@react-native/js-polyfills":"^0.72.1","@react-native/normalize-colors":"^0.72.0","@react-native/virtualized-lists":"^0.72.8","abort-controller":"^3.0.0",anser:"^1.4.9","base64-js":"^1.1.2","deprecated-react-native-prop-types":"4.1.0","event-target-shim":"^5.0.1","flow-enums-runtime":"^0.0.5",invariant:"^2.2.4","jest-environment-node":"^29.2.1","jsc-android":"^250231.0.0","memoize-one":"^5.0.0","metro-runtime":"0.76.8","metro-source-map":"0.76.8",mkdirp:"^0.5.1",nullthrows:"^1.1.1","pretty-format":"^26.5.2",promise:"^8.3.0","react-devtools-core":"^4.27.2","react-refresh":"^0.4.0","react-shallow-renderer":"^16.15.0","regenerator-runtime":"^0.13.2",scheduler:"0.24.0-canary-efb381bbf-20230505","stacktrace-parser":"^0.1.10","use-sync-external-store":"^1.0.0","whatwg-fetch":"^3.0.0",ws:"^6.2.2",yargs:"^17.6.2"},codegenConfig:{libraries:[{name:"FBReactNativeSpec",type:"modules",ios:{},android:{},jsSrcsDir:"Libraries"},{name:"rncore",type:"components",ios:{},android:{},jsSrcsDir:"Libraries"}]}}}),426,[]);
432
+ __d((function(e,s,t,r,i,c,a){i.exports={name:"react-native",version:"0.72.5",bin:"./cli.js",description:"A framework for building native apps using React",license:"MIT",repository:"github:facebook/react-native",engines:{node:">=16"},types:"types","jest-junit":{outputDirectory:"reports/junit",outputName:"js-test-results.xml"},files:["android","build.gradle.kts","cli.js","flow","flow-typed","gradle.properties","index.js","interface.js","jest-preset.js","jest","Libraries","LICENSE","local-cli","React-Core.podspec","react-native.config.js","React.podspec","React","ReactAndroid","ReactCommon","README.md","rn-get-polyfills.js","scripts/compose-source-maps.js","scripts/find-node-for-xcode.sh","scripts/generate-codegen-artifacts.js","scripts/generate-provider-cli.js","scripts/generate-specs-cli.js","scripts/codegen","!scripts/codegen/__tests__","!scripts/codegen/__test_fixtures__","scripts/hermes/hermes-utils.js","scripts/hermes/prepare-hermes-for-build.js","scripts/ios-configure-glog.sh","scripts/xcode/with-environment.sh","scripts/launchPackager.bat","scripts/launchPackager.command","scripts/native_modules.rb","scripts/node-binary.sh","scripts/packager.sh","scripts/packager-reporter.js","scripts/react_native_pods_utils/script_phases.rb","scripts/react_native_pods_utils/script_phases.sh","scripts/react_native_pods.rb","scripts/cocoapods","!scripts/cocoapods/__tests__","scripts/react-native-xcode.sh","sdks/.hermesversion","sdks/hermes-engine","sdks/hermesc","settings.gradle.kts","template.config.js","template","!template/node_modules","!template/package-lock.json","!template/yarn.lock","third-party-podspecs","types"],scripts:{prepack:"cp ../../README.md ."},peerDependencies:{react:"18.2.0"},dependencies:{"@jest/create-cache-key-function":"^29.2.1","@react-native-community/cli":"11.3.7","@react-native-community/cli-platform-android":"11.3.7","@react-native-community/cli-platform-ios":"11.3.7","@react-native/assets-registry":"^0.72.0","@react-native/codegen":"^0.72.7","@react-native/gradle-plugin":"^0.72.11","@react-native/js-polyfills":"^0.72.1","@react-native/normalize-colors":"^0.72.0","@react-native/virtualized-lists":"^0.72.8","abort-controller":"^3.0.0",anser:"^1.4.9","base64-js":"^1.1.2","deprecated-react-native-prop-types":"4.1.0","event-target-shim":"^5.0.1","flow-enums-runtime":"^0.0.5",invariant:"^2.2.4","jest-environment-node":"^29.2.1","jsc-android":"^250231.0.0","memoize-one":"^5.0.0","metro-runtime":"0.76.8","metro-source-map":"0.76.8",mkdirp:"^0.5.1",nullthrows:"^1.1.1","pretty-format":"^26.5.2",promise:"^8.3.0","react-devtools-core":"^4.27.2","react-refresh":"^0.4.0","react-shallow-renderer":"^16.15.0","regenerator-runtime":"^0.13.2",scheduler:"0.24.0-canary-efb381bbf-20230505","stacktrace-parser":"^0.1.10","use-sync-external-store":"^1.0.0","whatwg-fetch":"^3.0.0",ws:"^6.2.2",yargs:"^17.6.2"},codegenConfig:{libraries:[{name:"FBReactNativeSpec",type:"modules",ios:{},android:{},jsSrcsDir:"Libraries"},{name:"rncore",type:"components",ios:{},android:{},jsSrcsDir:"Libraries"}]}}}),426,[]);
433
433
  __d((function(g,r,i,a,m,e,d){function t(n){if("function"!=typeof WeakMap)return null;var o=new WeakMap,u=new WeakMap;return(t=function(t){return t?u:o})(n)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=(function(n,o){if(!o&&n&&n.__esModule)return n;if(null===n||"object"!=typeof n&&"function"!=typeof n)return{default:n};var u=t(o);if(u&&u.has(n))return u.get(n);var f={},c=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in n)if("default"!==l&&Object.prototype.hasOwnProperty.call(n,l)){var p=c?Object.getOwnPropertyDescriptor(n,l):null;p&&(p.get||p.set)?Object.defineProperty(f,l,p):f[l]=n[l]}f.default=n,u&&u.set(n,f);return f})(r(d[0])).createContext(void 0);e.default=n}),427,[95]);
434
434
  __d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var t=n.useContext(o.default);if(void 0===t)throw new Error("Couldn't find values for transition progress. Are you inside a screen in Native Stack?");return t};var n=(function(t,n){if(!n&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var o=u(n);if(o&&o.has(t))return o.get(t);var f={},c=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in t)if("default"!==l&&Object.prototype.hasOwnProperty.call(t,l)){var p=c?Object.getOwnPropertyDescriptor(t,l):null;p&&(p.get||p.set)?Object.defineProperty(f,l,p):f[l]=t[l]}f.default=t,o&&o.set(t,f);return f})(r(d[1])),o=t(r(d[2]));function u(t){if("function"!=typeof WeakMap)return null;var n=new WeakMap,o=new WeakMap;return(u=function(t){return t?o:n})(t)}}),428,[5,95,427]);
435
435
  __d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.executeNativeBackPress=function(){return t.BackHandler.exitApp(),!0},e.isSearchBarAvailableForCurrentPlatform=e.isNewBackTitleImplementation=void 0;var t=r(d[0]),l=['ios','android'].includes(t.Platform.OS);e.isSearchBarAvailableForCurrentPlatform=l;e.isNewBackTitleImplementation=!0}),429,[1]);
@@ -428,7 +428,7 @@ __d((function(g,r,i,a,m,_e,d){'use strict';var t=r(d[0]),n=r(d[1]),e=r(d[2]),u=r
428
428
  __d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.DynamicColorIOS=void 0;var t=r(d[0]);e.DynamicColorIOS=function(o){return(0,t.DynamicColorIOSPrivate)({light:o.light,dark:o.dark,highContrastLight:o.highContrastLight,highContrastDark:o.highContrastDark})}}),422,[64]);
429
429
  __d((function(g,r,_i,a,m,_e,d){var e=r(d[0]),t=e(r(d[1])),n=e(r(d[2])),i=e(r(d[3])),o=e(r(d[4])),c=e(r(d[5])),l=e(r(d[6])),u=e(r(d[7])),s=e(r(d[8])),v=e(r(d[9])),f=r(d[10]),S=r(d[11]),h=r(d[12]),p=e(r(d[13])),y=e(r(d[14])),w=r(d[15]),N=r(d[16]),b=["children"],C=["enabled","freezeOnBlur"],k=["active","activityState","children","isNativeStack","gestureResponseDistance"],x=["active","activityState","style","onComponentRef"],R=["enabled","hasTwoStates"];function B(e){var t=O();return function(){var n,i=(0,c.default)(e);if(t){var l=(0,c.default)(this).constructor;n=Reflect.construct(i,arguments,l)}else n=i.apply(this,arguments);return(0,o.default)(this,n)}}function O(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function j(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function P(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?j(Object(n),!0).forEach((function(t){(0,l.default)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var H='ios'===f.Platform.OS||'android'===f.Platform.OS||'windows'===f.Platform.OS,A=H;var F=!1;var I,V,z,D,T,W,M,_,q,E;var U={get NativeScreen(){return I=I||r(d[17]).default},get NativeScreenContainer(){return V=V||r(d[18]).default},get NativeScreenNavigationContainer(){return z=z||('ios'===f.Platform.OS?(0,f.requireNativeComponent)('RNSScreenNavigationContainer'):this.NativeScreenContainer)},get NativeScreenStack(){return D=D||(0,f.requireNativeComponent)('RNSScreenStack')},get NativeScreenStackHeaderConfig(){return T=T||(0,f.requireNativeComponent)('RNSScreenStackHeaderConfig')},get NativeScreenStackHeaderSubview(){return W=W||(0,f.requireNativeComponent)('RNSScreenStackHeaderSubview')},get NativeSearchBar(){return _=_||r(d[19]).default},get NativeSearchBarCommands(){return q=q||r(d[19]).Commands},get NativeFullWindowOverlay(){return E=E||(0,f.requireNativeComponent)('RNSFullWindowOverlay')}};function L(e){var t=e.freeze,n=e.children,i=v.default.useState(!1),o=(0,s.default)(i,2),c=o[0],l=o[1];return t!==c&&setImmediate((function(){l(t)})),(0,N.jsx)(S.Freeze,{freeze:!!t&&c,children:n})}var G=(function(e){(0,i.default)(c,e);var o=B(c);function c(){var e;(0,t.default)(this,c);for(var n=arguments.length,i=new Array(n),l=0;l<n;l++)i[l]=arguments[l];return(e=o.call.apply(o,[this].concat(i))).ref=null,e.closing=new f.Animated.Value(0),e.progress=new f.Animated.Value(0),e.goingForward=new f.Animated.Value(0),e.setRef=function(t){e.ref=t,null==e.props.onComponentRef||e.props.onComponentRef(t)},e}return(0,n.default)(c,[{key:"setNativeProps",value:function(e){var t;null==(t=this.ref)||t.setNativeProps(e)}},{key:"render",value:function(){var e=this,t=this.props,n=t.enabled,i=void 0===n?A:n,o=t.freezeOnBlur,c=void 0===o?F:o,l=(0,u.default)(t,C);if(i&&H){var s,v,S,h;M=M||f.Animated.createAnimatedComponent(U.NativeScreen);var y=l.active,w=l.activityState,b=l.children,R=l.isNativeStack,B=l.gestureResponseDistance,O=(0,u.default)(l,k);void 0!==y&&void 0===w&&(console.warn('It appears that you are using old version of react-navigation library. Please update @react-navigation/bottom-tabs, @react-navigation/stack and @react-navigation/drawer to version 5.10.0 or above to take full advantage of new functionality added to react-native-screens'),w=0!==y?2:0);return(0,N.jsx)(L,{freeze:c&&0===w,children:(0,N.jsx)(M,P(P({},O),{},{activityState:w,gestureResponseDistance:{start:null!=(s=null==B?void 0:B.start)?s:-1,end:null!=(v=null==B?void 0:B.end)?v:-1,top:null!=(S=null==B?void 0:B.top)?S:-1,bottom:null!=(h=null==B?void 0:B.bottom)?h:-1},ref:function(t){var n,i;null!=t&&null!=(n=t.viewConfig)&&null!=(i=n.validAttributes)&&i.style&&(t.viewConfig.validAttributes.style=P(P({},t.viewConfig.validAttributes.style),{},{display:!1}),e.setRef(t))},onTransitionProgress:R?f.Animated.event([{nativeEvent:{progress:this.progress,closing:this.closing,goingForward:this.goingForward}}],{useNativeDriver:!0}):void 0,children:R?(0,N.jsx)(p.default.Provider,{value:{progress:this.progress,closing:this.closing,goingForward:this.goingForward},children:b}):b}))})}var j=l.active,I=l.activityState,V=l.style,z=(l.onComponentRef,(0,u.default)(l,x));return void 0!==j&&void 0===I&&(I=0!==j?2:0),(0,N.jsx)(f.Animated.View,P({style:[V,{display:0!==I?'flex':'none'}],ref:this.setRef},z))}}]),c})(v.default.Component);var J=f.StyleSheet.create({headerSubview:{position:'absolute',top:0,right:0,flexDirection:'row',alignItems:'center',justifyContent:'center'}}),K=(function(e){(0,i.default)(c,e);var o=B(c);function c(e){var n;return(0,t.default)(this,c),(n=o.call(this,e)).nativeSearchBarRef=v.default.createRef(),n}return(0,n.default)(c,[{key:"_callMethodWithRef",value:function(e){var t=this.nativeSearchBarRef.current;t?e(t):console.warn('Reference to native search bar component has not been updated yet')}},{key:"blur",value:function(){this._callMethodWithRef((function(e){return U.NativeSearchBarCommands.blur(e)}))}},{key:"focus",value:function(){this._callMethodWithRef((function(e){return U.NativeSearchBarCommands.focus(e)}))}},{key:"toggleCancelButton",value:function(e){this._callMethodWithRef((function(t){return U.NativeSearchBarCommands.toggleCancelButton(t,e)}))}},{key:"clearText",value:function(){this._callMethodWithRef((function(e){return U.NativeSearchBarCommands.clearText(e)}))}},{key:"setText",value:function(e){this._callMethodWithRef((function(t){return U.NativeSearchBarCommands.setText(t,e)}))}},{key:"render",value:function(){return w.isSearchBarAvailableForCurrentPlatform?(0,N.jsx)(U.NativeSearchBar,P(P({},this.props),{},{ref:this.nativeSearchBarRef})):(console.warn('Importing SearchBar is only valid on iOS and Android devices.'),f.View)}}]),c})(v.default.Component),Q=v.default.createContext(G),X=(function(e){(0,i.default)(c,e);var o=B(c);function c(){return(0,t.default)(this,c),o.apply(this,arguments)}return(0,n.default)(c,[{key:"render",value:function(){var e=this.context||G;return(0,N.jsx)(e,P({},this.props))}}]),c})(v.default.Component);X.contextType=Q,m.exports={Screen:X,ScreenContainer:function(e){var t=e.enabled,n=void 0===t?A:t,i=e.hasTwoStates,o=(0,u.default)(e,R);return n&&H?i?(0,N.jsx)(U.NativeScreenNavigationContainer,P({},o)):(0,N.jsx)(U.NativeScreenContainer,P({},o)):(0,N.jsx)(f.View,P({},o))},ScreenContext:Q,ScreenStack:function(e){var t=e.children,n=(0,u.default)(e,b),i=v.default.Children.count(t),o=v.default.Children.map(t,(function(e,t){var n,o,c,l,u=e.props,s=e.key,v=null!=(n=null==u?void 0:u.descriptor)?n:null==u||null==(o=u.descriptors)?void 0:o[s],f=null!=(c=null==v||null==(l=v.options)?void 0:l.freezeOnBlur)?c:F;return(0,N.jsx)(L,{freeze:f&&i-t>1,children:e})}));return(0,N.jsx)(U.NativeScreenStack,P(P({},n),{},{children:o}))},InnerScreen:G,SearchBar:K,FullWindowOverlay:function(e){return'ios'!==f.Platform.OS?(console.warn('Importing FullWindowOverlay is only valid on iOS devices.'),(0,N.jsx)(f.View,P({},e))):(0,N.jsx)(U.NativeFullWindowOverlay,{style:{position:'absolute',width:'100%',height:'100%'},children:e.children})},get NativeScreen(){return U.NativeScreen},get NativeScreenContainer(){return U.NativeScreenContainer},get NativeScreenNavigationContainer(){return U.NativeScreenNavigationContainer},get ScreenStackHeaderConfig(){return U.NativeScreenStackHeaderConfig},get ScreenStackHeaderSubview(){return U.NativeScreenStackHeaderSubview},get SearchBarCommands(){return U.NativeSearchBarCommands},ScreenStackHeaderBackButtonImage:function(e){return(0,N.jsx)(U.NativeScreenStackHeaderSubview,{type:"back",style:J.headerSubview,children:(0,N.jsx)(f.Image,P({resizeMode:"center",fadeDuration:0},e))})},ScreenStackHeaderRightView:function(e){return(0,N.jsx)(U.NativeScreenStackHeaderSubview,P(P({},e),{},{type:"right",style:J.headerSubview}))},ScreenStackHeaderLeftView:function(e){return(0,N.jsx)(U.NativeScreenStackHeaderSubview,P(P({},e),{},{type:"left",style:J.headerSubview}))},ScreenStackHeaderCenterView:function(e){return(0,N.jsx)(U.NativeScreenStackHeaderSubview,P(P({},e),{},{type:"center",style:J.headerSubview}))},ScreenStackHeaderSearchBarView:function(e){return(0,N.jsx)(U.NativeScreenStackHeaderSubview,P(P({},e),{},{type:"searchBar",style:J.headerSubview}))},enableScreens:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];(A=H&&e)&&!f.UIManager.getViewManagerConfig('RNSScreen')&&console.error("Screen native module hasn't been linked. Please check the react-native-screens README for more details")},enableFreeze:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=parseInt(h.version.split('.')[1]);0===t||t>=64||!e||console.warn('react-freeze library requires at least react-native 0.64. Please upgrade your react-native version in order to use this feature.'),F=e},screensEnabled:function(){return A},shouldUseActivityState:!0,useTransitionProgress:y.default,isSearchBarAvailableForCurrentPlatform:w.isSearchBarAvailableForCurrentPlatform,isNewBackTitleImplementation:w.isNewBackTitleImplementation,executeNativeBackPress:w.executeNativeBackPress}}),423,[5,14,15,31,33,35,30,163,46,95,1,424,425,426,427,428,206,429,430,431]);
430
430
  __d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.Freeze=function(o){var u=o.freeze,c=o.children,l=o.placeholder,p=void 0===l?null:l;return(0,n.jsx)(t.Suspense,{fallback:p,children:(0,n.jsx)(f,{freeze:u,children:c})})};var t=(function(t,n){if(!n&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var f=o(n);if(f&&f.has(t))return f.get(t);var u={},c=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in t)if("default"!==l&&Object.prototype.hasOwnProperty.call(t,l)){var p=c?Object.getOwnPropertyDescriptor(t,l):null;p&&(p.get||p.set)?Object.defineProperty(u,l,p):u[l]=t[l]}u.default=t,f&&f.set(t,u);return u})(r(d[0])),n=r(d[1]);function o(t){if("function"!=typeof WeakMap)return null;var n=new WeakMap,f=new WeakMap;return(o=function(t){return t?f:n})(t)}function f(o){var f=o.freeze,u=o.children,c=(0,t.useRef)({}).current;if(f&&!c.promise)throw c.promise=new Promise((function(t){c.resolve=t})),c.promise;if(f)throw c.promise;return c.promise&&(c.resolve(),c.promise=void 0),(0,n.jsx)(t.Fragment,{children:u})}}),424,[95,206]);
431
- __d((function(e,s,t,r,i,c,a){i.exports={name:"react-native",version:"0.72.4",bin:"./cli.js",description:"A framework for building native apps using React",license:"MIT",repository:"github:facebook/react-native",engines:{node:">=16"},types:"types","jest-junit":{outputDirectory:"reports/junit",outputName:"js-test-results.xml"},files:["android","build.gradle.kts","cli.js","flow","flow-typed","gradle.properties","index.js","interface.js","jest-preset.js","jest","Libraries","LICENSE","local-cli","React-Core.podspec","react-native.config.js","React.podspec","React","ReactAndroid","ReactCommon","README.md","rn-get-polyfills.js","scripts/compose-source-maps.js","scripts/find-node-for-xcode.sh","scripts/generate-codegen-artifacts.js","scripts/generate-provider-cli.js","scripts/generate-specs-cli.js","scripts/codegen","!scripts/codegen/__tests__","!scripts/codegen/__test_fixtures__","scripts/hermes/hermes-utils.js","scripts/hermes/prepare-hermes-for-build.js","scripts/ios-configure-glog.sh","scripts/xcode/with-environment.sh","scripts/launchPackager.bat","scripts/launchPackager.command","scripts/native_modules.rb","scripts/node-binary.sh","scripts/packager.sh","scripts/packager-reporter.js","scripts/react_native_pods_utils/script_phases.rb","scripts/react_native_pods_utils/script_phases.sh","scripts/react_native_pods.rb","scripts/cocoapods","!scripts/cocoapods/__tests__","scripts/react-native-xcode.sh","sdks/.hermesversion","sdks/hermes-engine","sdks/hermesc","settings.gradle.kts","template.config.js","template","!template/node_modules","!template/package-lock.json","!template/yarn.lock","third-party-podspecs","types"],scripts:{prepack:"cp ../../README.md ."},peerDependencies:{react:"18.2.0"},dependencies:{"@jest/create-cache-key-function":"^29.2.1","@react-native-community/cli":"11.3.6","@react-native-community/cli-platform-android":"11.3.6","@react-native-community/cli-platform-ios":"11.3.6","@react-native/assets-registry":"^0.72.0","@react-native/codegen":"^0.72.6","@react-native/gradle-plugin":"^0.72.11","@react-native/js-polyfills":"^0.72.1","@react-native/normalize-colors":"^0.72.0","@react-native/virtualized-lists":"^0.72.8","abort-controller":"^3.0.0",anser:"^1.4.9","base64-js":"^1.1.2","deprecated-react-native-prop-types":"4.1.0","event-target-shim":"^5.0.1","flow-enums-runtime":"^0.0.5",invariant:"^2.2.4","jest-environment-node":"^29.2.1","jsc-android":"^250231.0.0","memoize-one":"^5.0.0","metro-runtime":"0.76.8","metro-source-map":"0.76.8",mkdirp:"^0.5.1",nullthrows:"^1.1.1","pretty-format":"^26.5.2",promise:"^8.3.0","react-devtools-core":"^4.27.2","react-refresh":"^0.4.0","react-shallow-renderer":"^16.15.0","regenerator-runtime":"^0.13.2",scheduler:"0.24.0-canary-efb381bbf-20230505","stacktrace-parser":"^0.1.10","use-sync-external-store":"^1.0.0","whatwg-fetch":"^3.0.0",ws:"^6.2.2",yargs:"^17.6.2"},codegenConfig:{libraries:[{name:"FBReactNativeSpec",type:"modules",ios:{},android:{},jsSrcsDir:"Libraries"},{name:"rncore",type:"components",ios:{},android:{},jsSrcsDir:"Libraries"}]}}}),425,[]);
431
+ __d((function(e,s,t,r,i,c,a){i.exports={name:"react-native",version:"0.72.5",bin:"./cli.js",description:"A framework for building native apps using React",license:"MIT",repository:"github:facebook/react-native",engines:{node:">=16"},types:"types","jest-junit":{outputDirectory:"reports/junit",outputName:"js-test-results.xml"},files:["android","build.gradle.kts","cli.js","flow","flow-typed","gradle.properties","index.js","interface.js","jest-preset.js","jest","Libraries","LICENSE","local-cli","React-Core.podspec","react-native.config.js","React.podspec","React","ReactAndroid","ReactCommon","README.md","rn-get-polyfills.js","scripts/compose-source-maps.js","scripts/find-node-for-xcode.sh","scripts/generate-codegen-artifacts.js","scripts/generate-provider-cli.js","scripts/generate-specs-cli.js","scripts/codegen","!scripts/codegen/__tests__","!scripts/codegen/__test_fixtures__","scripts/hermes/hermes-utils.js","scripts/hermes/prepare-hermes-for-build.js","scripts/ios-configure-glog.sh","scripts/xcode/with-environment.sh","scripts/launchPackager.bat","scripts/launchPackager.command","scripts/native_modules.rb","scripts/node-binary.sh","scripts/packager.sh","scripts/packager-reporter.js","scripts/react_native_pods_utils/script_phases.rb","scripts/react_native_pods_utils/script_phases.sh","scripts/react_native_pods.rb","scripts/cocoapods","!scripts/cocoapods/__tests__","scripts/react-native-xcode.sh","sdks/.hermesversion","sdks/hermes-engine","sdks/hermesc","settings.gradle.kts","template.config.js","template","!template/node_modules","!template/package-lock.json","!template/yarn.lock","third-party-podspecs","types"],scripts:{prepack:"cp ../../README.md ."},peerDependencies:{react:"18.2.0"},dependencies:{"@jest/create-cache-key-function":"^29.2.1","@react-native-community/cli":"11.3.7","@react-native-community/cli-platform-android":"11.3.7","@react-native-community/cli-platform-ios":"11.3.7","@react-native/assets-registry":"^0.72.0","@react-native/codegen":"^0.72.7","@react-native/gradle-plugin":"^0.72.11","@react-native/js-polyfills":"^0.72.1","@react-native/normalize-colors":"^0.72.0","@react-native/virtualized-lists":"^0.72.8","abort-controller":"^3.0.0",anser:"^1.4.9","base64-js":"^1.1.2","deprecated-react-native-prop-types":"4.1.0","event-target-shim":"^5.0.1","flow-enums-runtime":"^0.0.5",invariant:"^2.2.4","jest-environment-node":"^29.2.1","jsc-android":"^250231.0.0","memoize-one":"^5.0.0","metro-runtime":"0.76.8","metro-source-map":"0.76.8",mkdirp:"^0.5.1",nullthrows:"^1.1.1","pretty-format":"^26.5.2",promise:"^8.3.0","react-devtools-core":"^4.27.2","react-refresh":"^0.4.0","react-shallow-renderer":"^16.15.0","regenerator-runtime":"^0.13.2",scheduler:"0.24.0-canary-efb381bbf-20230505","stacktrace-parser":"^0.1.10","use-sync-external-store":"^1.0.0","whatwg-fetch":"^3.0.0",ws:"^6.2.2",yargs:"^17.6.2"},codegenConfig:{libraries:[{name:"FBReactNativeSpec",type:"modules",ios:{},android:{},jsSrcsDir:"Libraries"},{name:"rncore",type:"components",ios:{},android:{},jsSrcsDir:"Libraries"}]}}}),425,[]);
432
432
  __d((function(g,r,i,a,m,e,d){function t(n){if("function"!=typeof WeakMap)return null;var o=new WeakMap,u=new WeakMap;return(t=function(t){return t?u:o})(n)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=(function(n,o){if(!o&&n&&n.__esModule)return n;if(null===n||"object"!=typeof n&&"function"!=typeof n)return{default:n};var u=t(o);if(u&&u.has(n))return u.get(n);var f={},c=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in n)if("default"!==l&&Object.prototype.hasOwnProperty.call(n,l)){var p=c?Object.getOwnPropertyDescriptor(n,l):null;p&&(p.get||p.set)?Object.defineProperty(f,l,p):f[l]=n[l]}f.default=n,u&&u.set(n,f);return f})(r(d[0])).createContext(void 0);e.default=n}),426,[95]);
433
433
  __d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var t=n.useContext(o.default);if(void 0===t)throw new Error("Couldn't find values for transition progress. Are you inside a screen in Native Stack?");return t};var n=(function(t,n){if(!n&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var o=u(n);if(o&&o.has(t))return o.get(t);var f={},c=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in t)if("default"!==l&&Object.prototype.hasOwnProperty.call(t,l)){var p=c?Object.getOwnPropertyDescriptor(t,l):null;p&&(p.get||p.set)?Object.defineProperty(f,l,p):f[l]=t[l]}f.default=t,o&&o.set(t,f);return f})(r(d[1])),o=t(r(d[2]));function u(t){if("function"!=typeof WeakMap)return null;var n=new WeakMap,o=new WeakMap;return(u=function(t){return t?o:n})(t)}}),427,[5,95,426]);
434
434
  __d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.executeNativeBackPress=function(){return t.BackHandler.exitApp(),!0},e.isSearchBarAvailableForCurrentPlatform=e.isNewBackTitleImplementation=void 0;var t=r(d[0]),l=['ios','android'].includes(t.Platform.OS);e.isSearchBarAvailableForCurrentPlatform=l;e.isNewBackTitleImplementation=!0}),428,[1]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-dev-menu",
3
- "version": "4.2.1",
3
+ "version": "4.3.0",
4
4
  "description": "Expo/React Native module with the developer menu.",
5
5
  "main": "build/DevMenu.js",
6
6
  "types": "build/DevMenu.d.ts",
@@ -49,7 +49,7 @@
49
49
  ]
50
50
  },
51
51
  "dependencies": {
52
- "expo-dev-menu-interface": "1.4.0",
52
+ "expo-dev-menu-interface": "1.5.0",
53
53
  "semver": "^7.5.3"
54
54
  },
55
55
  "devDependencies": {
@@ -58,19 +58,19 @@
58
58
  "@testing-library/jest-native": "^4.0.4",
59
59
  "@testing-library/react-native": "^8.0.0",
60
60
  "babel-plugin-module-resolver": "^5.0.0",
61
- "babel-preset-expo": "~9.7.0",
61
+ "babel-preset-expo": "~9.8.0",
62
62
  "expo-dev-client-components": "1.6.1",
63
63
  "expo-module-scripts": "^3.0.0",
64
64
  "fuse.js": "^6.4.6",
65
65
  "graphql": "^15.3.0",
66
66
  "graphql-tag": "^2.10.1",
67
67
  "react": "18.2.0",
68
- "react-native": "0.72.4",
68
+ "react-native": "0.72.5",
69
69
  "use-subscription": "^1.8.0",
70
70
  "url": "^0.11.0"
71
71
  },
72
72
  "peerDependencies": {
73
73
  "expo": "*"
74
74
  },
75
- "gitHead": "62f76105dfb436f7144440d6e6077d4ff3263842"
75
+ "gitHead": "da25937e2a99661cbe5eb60ca1d8d6245fc96a50"
76
76
  }
@@ -1,3 +1,2 @@
1
- import { ConfigPlugin } from 'expo/config-plugins';
2
- declare const _default: ConfigPlugin<unknown>;
1
+ declare const _default: import("expo/config-plugins").ConfigPlugin<void>;
3
2
  export default _default;
@@ -1,101 +1,6 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  const config_plugins_1 = require("expo/config-plugins");
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const semver_1 = __importDefault(require("semver"));
10
- const constants_1 = require("./constants");
11
- const withDevMenuAppDelegate_1 = require("./withDevMenuAppDelegate");
12
4
  const pkg = require('expo-dev-menu/package.json');
13
- const DEV_MENU_ANDROID_IMPORT = 'expo.modules.devmenu.react.DevMenuAwareReactActivity';
14
- const DEV_MENU_ACTIVITY_CLASS = 'public class MainActivity extends DevMenuAwareReactActivity {';
15
- async function readFileAsync(path) {
16
- return fs_1.default.promises.readFile(path, 'utf8');
17
- }
18
- async function saveFileAsync(path, content) {
19
- return fs_1.default.promises.writeFile(path, content, 'utf8');
20
- }
21
- function addJavaImports(javaSource, javaImports) {
22
- const lines = javaSource.split('\n');
23
- const lineIndexWithPackageDeclaration = lines.findIndex((line) => line.match(/^package .*;$/));
24
- for (const javaImport of javaImports) {
25
- if (!javaSource.includes(javaImport)) {
26
- const importStatement = `import ${javaImport};`;
27
- lines.splice(lineIndexWithPackageDeclaration + 1, 0, importStatement);
28
- }
29
- }
30
- return lines.join('\n');
31
- }
32
- function addLines(content, find, offset, toAdd) {
33
- const lines = content.split('\n');
34
- let lineIndex = lines.findIndex((line) => line.match(find));
35
- for (const newLine of toAdd) {
36
- if (!content.includes(newLine)) {
37
- lines.splice(lineIndex + offset, 0, newLine);
38
- lineIndex++;
39
- }
40
- }
41
- return lines.join('\n');
42
- }
43
- async function editPodfile(config, action) {
44
- const podfilePath = path_1.default.join(config.modRequest.platformProjectRoot, 'Podfile');
45
- try {
46
- const podfile = action(await readFileAsync(podfilePath));
47
- return await saveFileAsync(podfilePath, podfile);
48
- }
49
- catch (e) {
50
- config_plugins_1.WarningAggregator.addWarningIOS('expo-dev-menu', `Couldn't modified AppDelegate.m - ${e}.
51
- See the expo-dev-client installation instructions to modify your AppDelegate manually: ${constants_1.InstallationPage}`);
52
- }
53
- }
54
- const withDevMenuActivity = (config) => {
55
- return (0, config_plugins_1.withMainActivity)(config, (config) => {
56
- if (config.modResults.language === 'java') {
57
- let content = config.modResults.contents;
58
- content = addJavaImports(content, [DEV_MENU_ANDROID_IMPORT]);
59
- content = content.replace('public class MainActivity extends ReactActivity {', DEV_MENU_ACTIVITY_CLASS);
60
- config.modResults.contents = content;
61
- }
62
- else {
63
- config_plugins_1.WarningAggregator.addWarningAndroid('expo-dev-menu', `Cannot automatically configure MainActivity if it's not java.
64
- See the expo-dev-client installation instructions to modify your MainActivity manually: ${constants_1.InstallationPage}`);
65
- }
66
- return config;
67
- });
68
- };
69
- const withDevMenuPodfile = (config) => {
70
- return (0, config_plugins_1.withDangerousMod)(config, [
71
- 'ios',
72
- async (config) => {
73
- await editPodfile(config, (podfile) => {
74
- podfile = podfile.replace("platform :ios, '10.0'", "platform :ios, '11.0'");
75
- // Match both variations of Ruby config:
76
- // unknown: pod 'expo-dev-menu', path: '../node_modules/expo-dev-menu', :configurations => :debug
77
- // Rubocop: pod 'expo-dev-menu', path: '../node_modules/expo-dev-menu', configurations: :debug
78
- if (!podfile.match(/pod ['"]expo-dev-menu['"],\s?path: ['"][^'"]*node_modules\/expo-dev-menu['"],\s?:?configurations:?\s(?:=>\s)?:debug/)) {
79
- const packagePath = path_1.default.dirname(require.resolve('expo-dev-menu/package.json'));
80
- const relativePath = path_1.default.relative(config.modRequest.platformProjectRoot, packagePath);
81
- podfile = addLines(podfile, 'use_react_native', 0, [
82
- ` pod 'expo-dev-menu', path: '${relativePath}', :configurations => :debug`,
83
- ]);
84
- }
85
- return podfile;
86
- });
87
- return config;
88
- },
89
- ]);
90
- };
91
- const withDevMenu = (config) => {
92
- // projects using SDKs before 45 need the old regex-based integration
93
- // TODO: remove this config plugin once we drop support for SDK 44
94
- if (config.sdkVersion && semver_1.default.lt(config.sdkVersion, '45.0.0')) {
95
- config = withDevMenuActivity(config);
96
- config = withDevMenuPodfile(config);
97
- config = (0, withDevMenuAppDelegate_1.withDevMenuAppDelegate)(config);
98
- }
99
- return config;
100
- };
101
- exports.default = (0, config_plugins_1.createRunOncePlugin)(withDevMenu, pkg.name, pkg.version);
5
+ // no-op after SDK 44
6
+ exports.default = (0, config_plugins_1.createRunOncePlugin)((config) => config, pkg.name, pkg.version);
@@ -1 +1 @@
1
- module.exports = require('expo-module-scripts/jest-preset-plugin');
1
+ module.exports = {};
@@ -1,132 +1,6 @@
1
- import { ExpoConfig } from 'expo/config';
2
- import {
3
- ConfigPlugin,
4
- createRunOncePlugin,
5
- ExportedConfigWithProps,
6
- WarningAggregator,
7
- withDangerousMod,
8
- withMainActivity,
9
- } from 'expo/config-plugins';
10
- import fs from 'fs';
11
- import path from 'path';
12
- import semver from 'semver';
13
-
14
- import { InstallationPage } from './constants';
15
- import { withDevMenuAppDelegate } from './withDevMenuAppDelegate';
1
+ import { createRunOncePlugin } from 'expo/config-plugins';
16
2
 
17
3
  const pkg = require('expo-dev-menu/package.json');
18
4
 
19
- const DEV_MENU_ANDROID_IMPORT = 'expo.modules.devmenu.react.DevMenuAwareReactActivity';
20
- const DEV_MENU_ACTIVITY_CLASS = 'public class MainActivity extends DevMenuAwareReactActivity {';
21
-
22
- async function readFileAsync(path: string): Promise<string> {
23
- return fs.promises.readFile(path, 'utf8');
24
- }
25
-
26
- async function saveFileAsync(path: string, content: string): Promise<void> {
27
- return fs.promises.writeFile(path, content, 'utf8');
28
- }
29
-
30
- function addJavaImports(javaSource: string, javaImports: string[]): string {
31
- const lines = javaSource.split('\n');
32
- const lineIndexWithPackageDeclaration = lines.findIndex((line) => line.match(/^package .*;$/));
33
- for (const javaImport of javaImports) {
34
- if (!javaSource.includes(javaImport)) {
35
- const importStatement = `import ${javaImport};`;
36
- lines.splice(lineIndexWithPackageDeclaration + 1, 0, importStatement);
37
- }
38
- }
39
- return lines.join('\n');
40
- }
41
-
42
- function addLines(content: string, find: string | RegExp, offset: number, toAdd: string[]) {
43
- const lines = content.split('\n');
44
-
45
- let lineIndex = lines.findIndex((line) => line.match(find));
46
-
47
- for (const newLine of toAdd) {
48
- if (!content.includes(newLine)) {
49
- lines.splice(lineIndex + offset, 0, newLine);
50
- lineIndex++;
51
- }
52
- }
53
-
54
- return lines.join('\n');
55
- }
56
-
57
- async function editPodfile(config: ExportedConfigWithProps, action: (podfile: string) => string) {
58
- const podfilePath = path.join(config.modRequest.platformProjectRoot, 'Podfile');
59
- try {
60
- const podfile = action(await readFileAsync(podfilePath));
61
-
62
- return await saveFileAsync(podfilePath, podfile);
63
- } catch (e) {
64
- WarningAggregator.addWarningIOS(
65
- 'expo-dev-menu',
66
- `Couldn't modified AppDelegate.m - ${e}.
67
- See the expo-dev-client installation instructions to modify your AppDelegate manually: ${InstallationPage}`
68
- );
69
- }
70
- }
71
-
72
- const withDevMenuActivity: ConfigPlugin = (config) => {
73
- return withMainActivity(config, (config) => {
74
- if (config.modResults.language === 'java') {
75
- let content = config.modResults.contents;
76
- content = addJavaImports(content, [DEV_MENU_ANDROID_IMPORT]);
77
- content = content.replace(
78
- 'public class MainActivity extends ReactActivity {',
79
- DEV_MENU_ACTIVITY_CLASS
80
- );
81
- config.modResults.contents = content;
82
- } else {
83
- WarningAggregator.addWarningAndroid(
84
- 'expo-dev-menu',
85
- `Cannot automatically configure MainActivity if it's not java.
86
- See the expo-dev-client installation instructions to modify your MainActivity manually: ${InstallationPage}`
87
- );
88
- }
89
-
90
- return config;
91
- });
92
- };
93
-
94
- const withDevMenuPodfile: ConfigPlugin = (config) => {
95
- return withDangerousMod(config, [
96
- 'ios',
97
- async (config) => {
98
- await editPodfile(config, (podfile) => {
99
- podfile = podfile.replace("platform :ios, '10.0'", "platform :ios, '11.0'");
100
- // Match both variations of Ruby config:
101
- // unknown: pod 'expo-dev-menu', path: '../node_modules/expo-dev-menu', :configurations => :debug
102
- // Rubocop: pod 'expo-dev-menu', path: '../node_modules/expo-dev-menu', configurations: :debug
103
- if (
104
- !podfile.match(
105
- /pod ['"]expo-dev-menu['"],\s?path: ['"][^'"]*node_modules\/expo-dev-menu['"],\s?:?configurations:?\s(?:=>\s)?:debug/
106
- )
107
- ) {
108
- const packagePath = path.dirname(require.resolve('expo-dev-menu/package.json'));
109
- const relativePath = path.relative(config.modRequest.platformProjectRoot, packagePath);
110
- podfile = addLines(podfile, 'use_react_native', 0, [
111
- ` pod 'expo-dev-menu', path: '${relativePath}', :configurations => :debug`,
112
- ]);
113
- }
114
- return podfile;
115
- });
116
- return config;
117
- },
118
- ]);
119
- };
120
-
121
- const withDevMenu = (config: ExpoConfig) => {
122
- // projects using SDKs before 45 need the old regex-based integration
123
- // TODO: remove this config plugin once we drop support for SDK 44
124
- if (config.sdkVersion && semver.lt(config.sdkVersion, '45.0.0')) {
125
- config = withDevMenuActivity(config);
126
- config = withDevMenuPodfile(config);
127
- config = withDevMenuAppDelegate(config);
128
- }
129
- return config;
130
- };
131
-
132
- export default createRunOncePlugin(withDevMenu, pkg.name, pkg.version);
5
+ // no-op after SDK 44
6
+ export default createRunOncePlugin<void>((config) => config, pkg.name, pkg.version);
@@ -1 +0,0 @@
1
- export declare const InstallationPage = "https://github.com/expo/expo/blob/main/packages/expo-dev-menu/README.md";
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InstallationPage = void 0;
4
- exports.InstallationPage = 'https://github.com/expo/expo/blob/main/packages/expo-dev-menu/README.md';
@@ -1,3 +0,0 @@
1
- import { ConfigPlugin } from 'expo/config-plugins';
2
- export declare function modifyAppDelegate(appDelegate: string): string;
3
- export declare const withDevMenuAppDelegate: ConfigPlugin;
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withDevMenuAppDelegate = exports.modifyAppDelegate = void 0;
4
- const config_plugins_1 = require("expo/config-plugins");
5
- const constants_1 = require("./constants");
6
- const DEV_MENU_IOS_IMPORT = `
7
- #if defined(EX_DEV_MENU_ENABLED)
8
- @import EXDevMenu;
9
- #endif`;
10
- const DEV_MENU_IOS_INIT = `
11
- #if defined(EX_DEV_MENU_ENABLED)
12
- [DevMenuManager configureWithBridge:bridge];
13
- #endif`;
14
- const DEV_LAUNCHER_IMPORT = `#include <EXDevLauncher/EXDevLauncherController.h>`;
15
- function modifyAppDelegate(appDelegate) {
16
- if (!appDelegate.includes(DEV_MENU_IOS_IMPORT)) {
17
- const lines = appDelegate.split('\n');
18
- lines.splice(1, 0, DEV_MENU_IOS_IMPORT);
19
- appDelegate = lines.join('\n');
20
- }
21
- if (!appDelegate.includes(DEV_LAUNCHER_IMPORT)) {
22
- // expo-dev-launcher isn't present - we need to init expo-dev-menu
23
- if (!appDelegate.includes(DEV_MENU_IOS_INIT)) {
24
- const lines = appDelegate.split('\n');
25
- const initializeReactNativeAppIndex = lines.findIndex((line) => line.includes('- (RCTBridge *)initializeReactNativeApp'));
26
- const rootViewControllerIndex = lines.findIndex((line, index) => initializeReactNativeAppIndex < index && line.includes('rootViewController'));
27
- lines.splice(rootViewControllerIndex - 1, 0, DEV_MENU_IOS_INIT);
28
- appDelegate = lines.join('\n');
29
- }
30
- }
31
- else {
32
- // expo-dev-launcher is present - we need to remove expo-dev-menu init block
33
- appDelegate = appDelegate.replace(DEV_MENU_IOS_INIT, '');
34
- }
35
- return appDelegate;
36
- }
37
- exports.modifyAppDelegate = modifyAppDelegate;
38
- const withDevMenuAppDelegate = (config) => {
39
- return (0, config_plugins_1.withAppDelegate)(config, (config) => {
40
- if (config.modResults.language === 'objc') {
41
- config.modResults.contents = modifyAppDelegate(config.modResults.contents);
42
- }
43
- else {
44
- config_plugins_1.WarningAggregator.addWarningIOS('expo-dev-menu', `Swift AppDelegate files are not supported yet.
45
- See the expo-dev-client installation instructions to modify your AppDelegate manually: ${constants_1.InstallationPage}`);
46
- }
47
- return config;
48
- });
49
- };
50
- exports.withDevMenuAppDelegate = withDevMenuAppDelegate;
@@ -1,2 +0,0 @@
1
- export const InstallationPage =
2
- 'https://github.com/expo/expo/blob/main/packages/expo-dev-menu/README.md';
@@ -1,63 +0,0 @@
1
- import { ConfigPlugin, WarningAggregator, withAppDelegate } from 'expo/config-plugins';
2
-
3
- import { InstallationPage } from './constants';
4
-
5
- const DEV_MENU_IOS_IMPORT = `
6
- #if defined(EX_DEV_MENU_ENABLED)
7
- @import EXDevMenu;
8
- #endif`;
9
-
10
- const DEV_MENU_IOS_INIT = `
11
- #if defined(EX_DEV_MENU_ENABLED)
12
- [DevMenuManager configureWithBridge:bridge];
13
- #endif`;
14
-
15
- const DEV_LAUNCHER_IMPORT = `#include <EXDevLauncher/EXDevLauncherController.h>`;
16
- export function modifyAppDelegate(appDelegate: string) {
17
- if (!appDelegate.includes(DEV_MENU_IOS_IMPORT)) {
18
- const lines = appDelegate.split('\n');
19
- lines.splice(1, 0, DEV_MENU_IOS_IMPORT);
20
-
21
- appDelegate = lines.join('\n');
22
- }
23
-
24
- if (!appDelegate.includes(DEV_LAUNCHER_IMPORT)) {
25
- // expo-dev-launcher isn't present - we need to init expo-dev-menu
26
- if (!appDelegate.includes(DEV_MENU_IOS_INIT)) {
27
- const lines = appDelegate.split('\n');
28
-
29
- const initializeReactNativeAppIndex = lines.findIndex((line) =>
30
- line.includes('- (RCTBridge *)initializeReactNativeApp')
31
- );
32
-
33
- const rootViewControllerIndex = lines.findIndex(
34
- (line, index) =>
35
- initializeReactNativeAppIndex < index && line.includes('rootViewController')
36
- );
37
-
38
- lines.splice(rootViewControllerIndex - 1, 0, DEV_MENU_IOS_INIT);
39
-
40
- appDelegate = lines.join('\n');
41
- }
42
- } else {
43
- // expo-dev-launcher is present - we need to remove expo-dev-menu init block
44
- appDelegate = appDelegate.replace(DEV_MENU_IOS_INIT, '');
45
- }
46
-
47
- return appDelegate;
48
- }
49
-
50
- export const withDevMenuAppDelegate: ConfigPlugin = (config) => {
51
- return withAppDelegate(config, (config) => {
52
- if (config.modResults.language === 'objc') {
53
- config.modResults.contents = modifyAppDelegate(config.modResults.contents);
54
- } else {
55
- WarningAggregator.addWarningIOS(
56
- 'expo-dev-menu',
57
- `Swift AppDelegate files are not supported yet.
58
- See the expo-dev-client installation instructions to modify your AppDelegate manually: ${InstallationPage}`
59
- );
60
- }
61
- return config;
62
- });
63
- };