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 +18 -0
- package/android/build.gradle +21 -14
- package/android/src/main/java/com/facebook/react/devsupport/DevMenuReactInternalSettings.kt +7 -0
- package/android/src/main/java/expo/modules/devmenu/devtools/DevMenuDevToolsDelegate.kt +2 -6
- package/android/src/main/java/expo/modules/devmenu/extensions/DevMenuExtension.kt +15 -1
- package/assets/EXDevMenuApp.android.js +1 -1
- package/assets/EXDevMenuApp.ios.js +1 -1
- package/package.json +5 -5
- package/plugin/build/withDevMenu.d.ts +1 -2
- package/plugin/build/withDevMenu.js +2 -97
- package/plugin/jest.config.js +1 -1
- package/plugin/src/withDevMenu.ts +3 -129
- package/plugin/build/constants.d.ts +0 -1
- package/plugin/build/constants.js +0 -4
- package/plugin/build/withDevMenuAppDelegate.d.ts +0 -3
- package/plugin/build/withDevMenuAppDelegate.js +0 -50
- package/plugin/src/constants.ts +0 -2
- package/plugin/src/withDevMenuAppDelegate.ts +0 -63
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
|
package/android/build.gradle
CHANGED
|
@@ -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.
|
|
6
|
+
version = '4.3.0'
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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": "
|
|
75
|
+
"gitHead": "da25937e2a99661cbe5eb60ca1d8d6245fc96a50"
|
|
76
76
|
}
|
|
@@ -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
|
-
|
|
14
|
-
|
|
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);
|
package/plugin/jest.config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports =
|
|
1
|
+
module.exports = {};
|
|
@@ -1,132 +1,6 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
20
|
-
|
|
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,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;
|
package/plugin/src/constants.ts
DELETED
|
@@ -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
|
-
};
|