expo-dev-launcher 5.1.4 → 5.1.6
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 +13 -0
- package/android/build.gradle +2 -2
- package/android/src/debug/assets/expo_dev_launcher_android.bundle +1 -1
- package/android/src/debug/java/expo/modules/devlauncher/launcher/DevLauncherActivity.kt +3 -0
- package/android/src/debug/java/expo/modules/devlauncher/launcher/errors/DevLauncherErrorActivity.kt +21 -0
- package/android/src/main/res/layout/error_fragment.xml +2 -0
- package/android/src/main/res/values/styles.xml +12 -1
- package/bundle/functions/createAsyncStack.ts +1 -1
- package/bundle/providers/ModalStackProvider.tsx +10 -2
- package/ios/DevLauncherAuth.swift +30 -15
- package/ios/EXDevLauncherController.m +0 -1
- package/ios/EXDevLauncherURLHelper.swift +32 -30
- package/ios/main.jsbundle +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,19 @@
|
|
|
10
10
|
|
|
11
11
|
### 💡 Others
|
|
12
12
|
|
|
13
|
+
## 5.1.6 — 2025-04-25
|
|
14
|
+
|
|
15
|
+
### 💡 Others
|
|
16
|
+
|
|
17
|
+
- [iOS] Remove usage of deprecated `SFAuthenticationSession` for user login. ([#36395](https://github.com/expo/expo/pull/36395) by [@alanjhughes](https://github.com/alanjhughes))
|
|
18
|
+
- [Android] Enable edge-to-edge. ([#36363](https://github.com/expo/expo/pull/36363) by [@behenate](https://github.com/behenate))
|
|
19
|
+
|
|
20
|
+
## 5.1.5 — 2025-04-23
|
|
21
|
+
|
|
22
|
+
### 🐛 Bug fixes
|
|
23
|
+
|
|
24
|
+
- Fix duplicated modals ([#36326](https://github.com/expo/expo/pull/36326) by [@jakex7](https://github.com/jakex7))
|
|
25
|
+
|
|
13
26
|
## 5.1.4 — 2025-04-21
|
|
14
27
|
|
|
15
28
|
_This version does not introduce any user-facing changes._
|
package/android/build.gradle
CHANGED
|
@@ -8,13 +8,13 @@ expoModule {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
group = "host.exp.exponent"
|
|
11
|
-
version = "5.1.
|
|
11
|
+
version = "5.1.6"
|
|
12
12
|
|
|
13
13
|
android {
|
|
14
14
|
namespace "expo.modules.devlauncher"
|
|
15
15
|
defaultConfig {
|
|
16
16
|
versionCode 9
|
|
17
|
-
versionName "5.1.
|
|
17
|
+
versionName "5.1.6"
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
buildTypes {
|
|
@@ -1358,7 +1358,7 @@ __d((function(g,r,i,a,m,e,d){'use strict';m.exports={isString:function(n){return
|
|
|
1358
1358
|
__d((function(g,r,i,a,m,e,d){'use strict';e.decode=e.parse=r(d[0]),e.encode=e.stringify=r(d[1])}),1192,[1193,1194]);
|
|
1359
1359
|
__d((function(g,r,_i,a,m,e,d){'use strict';function t(t,n){return Object.prototype.hasOwnProperty.call(t,n)}m.exports=function(n,o,s,p){o=o||'&',s=s||'=';var u={};if('string'!=typeof n||0===n.length)return u;var c=/\+/g;n=n.split(o);var i=1e3;p&&'number'==typeof p.maxKeys&&(i=p.maxKeys);var f=n.length;i>0&&f>i&&(f=i);for(var y=0;y<f;++y){var l,v,b,h,x=n[y].replace(c,'%20'),O=x.indexOf(s);O>=0?(l=x.substr(0,O),v=x.substr(O+1)):(l=x,v=''),b=decodeURIComponent(l),h=decodeURIComponent(v),t(u,b)?Array.isArray(u[b])?u[b].push(h):u[b]=[u[b],h]:u[b]=h}return u}}),1193,[]);
|
|
1360
1360
|
__d((function(g,r,i,a,m,e,d){'use strict';var n=function(n){switch(typeof n){case'string':return n;case'boolean':return n?'true':'false';case'number':return isFinite(n)?n:'';default:return''}};m.exports=function(o,t,c,u){return t=t||'&',c=c||'=',null===o&&(o=void 0),'object'==typeof o?Object.keys(o).map((function(u){var s=encodeURIComponent(n(u))+c;return Array.isArray(o[u])?o[u].map((function(o){return s+encodeURIComponent(n(o))})).join(t):s+encodeURIComponent(n(o[u]))})).filter(Boolean).join(t):u?encodeURIComponent(n(u))+c+encodeURIComponent(n(o)):''}}),1194,[]);
|
|
1361
|
-
__d((function(g,_r,_i,_a,_m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.ModalStackProvider=function(e){var
|
|
1361
|
+
__d((function(g,_r,_i,_a,_m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.ModalStackProvider=function(e){var i=e.children,c=e.modalStack,p=void 0===c?s:c,f=(0,o.useStackItems)(p),v=n.useRef(new r.Animated.Value(0)),y=f.some((function(e){return'settled'===e.status||'pushing'===e.status}));return n.useEffect((function(){y?r.Animated.timing(v.current,{toValue:1,useNativeDriver:!0,duration:200}).start():r.Animated.timing(v.current,{toValue:0,useNativeDriver:!0,duration:200}).start()}),[y]),(0,u.jsxs)(a.Provider,{value:{push:function(e){return p.push({element:e})},pop:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return p.pop(e)}},children:[i,(0,u.jsx)(r.Animated.View,{style:[r.StyleSheet.absoluteFillObject,{backgroundColor:'rgba(0,0,0,0.75)',opacity:v.current}],pointerEvents:y?'box-none':'none',children:(0,u.jsx)(r.Pressable,{onPress:function(){p.pop()},style:[r.StyleSheet.absoluteFillObject],children:f.map((function(e){return(0,t.createElement)(l,Object.assign({},e,{key:e.key,onClose:e.pop,onPopEnd:e.onPopEnd,onPushEnd:e.onPushEnd}))}))})})]})},_e.useModalStack=void 0;var e=_r(d[0]),t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var a=o?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(r,u,a):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r})(_r(d[1])),n=t,r=_r(d[2]),o=_r(d[3]),u=_r(d[4]);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var a=n.createContext(null),s=(_e.useModalStack=function(){return n.useContext(a)},(0,o.createAsyncStack)());function l(t){var o=t.status,i=t.data,a=t.onPushEnd,s=t.onPopEnd,l=i.element;return n.useEffect((function(){'pushing'===o?a():'popping'===o&&s()}),[o]),(0,u.jsx)(r.Animated.View,{pointerEvents:'popping'===o?'none':'box-none',style:[r.StyleSheet.absoluteFillObject,{justifyContent:'center'}],children:(0,u.jsx)(e.Button.Container,{children:l})})}}),1195,[775,112,1,1178,260]);
|
|
1362
1362
|
__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.PendingDeepLinkProvider=function(e){var f=e.children,p=e.initialPendingDeepLink,c=void 0===p?'':p,l=(0,u.useModalStack)(),s=t.useState(c),v=(0,n.default)(s,2),k=v[0],D=v[1];return t.useEffect((function(){(0,i.getPendingDeepLink)().then((function(e){e&&(D(e),l.push((function(){return(0,o.jsx)(r.DeepLinkModal,{pendingDeepLink:e})})))}))}),[]),t.useEffect((function(){var e=(0,i.addDeepLinkListener)((function(e){var n=e.url;n&&(D(n),l.push((function(){return(0,o.jsx)(r.DeepLinkModal,{pendingDeepLink:n})})))}));return function(){e.remove()}}),[]),(0,o.jsx)(a.Provider,{value:{pendingDeepLink:k,setPendingDeepLink:D},children:f})},_e.usePendingDeepLink=void 0;var n=e(_r(d[1])),t=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=f(n);if(t&&t.has(e))return t.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var o=i?Object.getOwnPropertyDescriptor(e,u):null;o&&(o.get||o.set)?Object.defineProperty(r,u,o):r[u]=e[u]}return r.default=e,t&&t.set(e,r),r})(_r(d[2])),r=_r(d[3]),i=_r(d[4]),u=_r(d[5]),o=_r(d[6]);function f(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,t=new WeakMap;return(f=function(e){return e?t:n})(e)}var a=t.createContext(null);_e.usePendingDeepLink=function(){return t.useContext(a)}}),1196,[7,50,112,1197,1097,1195,260]);
|
|
1363
1363
|
__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.DeepLinkModal=function(r){var i=r.pendingDeepLink,t=(0,l.useModalStack)();return(0,o.jsxs)(n.BaseModal,{title:"Deep link received:",children:[(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.View,{py:"small",bg:"secondary",rounded:"medium",px:"medium",children:(0,o.jsx)(e.Text,{type:"mono",numberOfLines:3,children:i})}),(0,o.jsx)(e.Spacer.Vertical,{size:"large"}),(0,o.jsx)(u,{}),(0,o.jsx)(e.Spacer.Vertical,{size:"large"}),(0,o.jsxs)(e.View,{children:[(0,o.jsxs)(e.Text,{children:[(0,o.jsx)(e.Text,{weight:"bold",children:"Note: "}),"The next app you open will receive this link"]}),(0,o.jsx)(e.Spacer.Vertical,{size:"medium"}),(0,o.jsx)(e.Button.FadeOnPressContainer,{bg:"ghost",rounded:"medium",border:"ghost",onPress:function(){t.pop()},children:(0,o.jsx)(e.View,{py:"small",px:"medium",children:(0,o.jsx)(e.Button.Text,{size:"large",align:"center",weight:"semibold",color:"ghost",children:"Go back"})})})]})]})};var e=_r(d[0]),r=((function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=c(r);if(n&&n.has(e))return n.get(e);var i={__proto__:null},t=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&{}.hasOwnProperty.call(e,s)){var l=t?Object.getOwnPropertyDescriptor(e,s):null;l&&(l.get||l.set)?Object.defineProperty(i,s,l):i[s]=e[s]}i.default=e,n&&n.set(e,i)})(_r(d[1])),_r(d[2])),n=_r(d[3]),i=_r(d[4]),t=_r(d[5]),s=_r(d[6]),l=_r(d[7]),a=_r(d[8]),o=_r(d[9]);function c(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:r})(e)}function u(){var n=(0,l.useModalStack)(),c=(0,s.useDevSessions)(),u=c.data,x=void 0===u?[]:u,j=c.isFetching,h=(0,a.useRecentlyOpenedApps)(),f=h.data,v=void 0===f?[]:f,w=h.isFetching,y=function(e){var r=e.url;(0,t.loadApp)(r).catch((function(e){n.push((function(){return(0,o.jsx)(i.LoadAppErrorModal,{message:e.message})}))}))};return j||w?(0,o.jsx)(r.ActivityIndicator,{}):x.length>0||v.length>0?(0,o.jsxs)(e.View,{children:[(0,o.jsx)(e.Text,{size:"large",children:"Select an app to open it:"}),(0,o.jsxs)(r.ScrollView,{style:{maxHeight:300},children:[(0,o.jsx)(e.Spacer.Vertical,{size:"medium"}),x.length>0&&(0,o.jsx)(o.Fragment,{children:x.map((function(r,n,i){var t=n===i.length-1;return(0,o.jsxs)(e.View,{children:[(0,o.jsx)(p,{label:r.description,onPress:function(){return y(r)}}),!t&&(0,o.jsx)(e.Divider,{})]},r.url)}))}),v.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.Divider,{}),v.map((function(r,n,i){var t=n===i.length-1;return(0,o.jsxs)(e.View,{children:[(0,o.jsx)(p,{label:r.name,onPress:function(){return y(r)}}),!t&&(0,o.jsx)(e.Divider,{})]},r.url)}))]})]})]}):(0,o.jsxs)(e.View,{children:[(0,o.jsx)(e.Text,{size:"large",weight:"medium",children:"Unable to find any packagers"}),(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.Text,{children:"Start a local development server with:"}),(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.View,{bg:"secondary",border:"default",rounded:"medium",padding:"medium",children:(0,o.jsx)(e.Text,{type:"mono",children:"expo start"})})]})}function p(r){var n=r.onPress,i=r.label;return(0,o.jsx)(e.View,{rounded:"medium",children:(0,o.jsx)(e.Button.FadeOnPressContainer,{bg:"default",onPress:n,children:(0,o.jsxs)(e.Row,{align:"center",py:"medium",px:"small",children:[(0,o.jsx)(e.StatusIndicator,{size:"small",status:"success"}),(0,o.jsx)(e.Spacer.Horizontal,{size:"small"}),(0,o.jsx)(e.Text,{children:i}),(0,o.jsx)(e.Spacer.Horizontal,{}),(0,o.jsx)(e.ChevronRightIcon,{})]})})})}}),1197,[775,112,1,1198,1199,1097,1184,1195,1200,260]);
|
|
1364
1364
|
__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.BaseModal=function(t){var i=t.children,a=t.title,l=(0,n.useModalStack)();return(0,r.jsxs)(e.View,{bg:"default",rounded:"large",shadow:"medium",mx:"small",children:[(0,r.jsx)(e.View,{padding:"medium",children:(0,r.jsxs)(e.Row,{align:"center",bg:"default",children:[(0,r.jsx)(e.View,{children:(0,r.jsx)(e.Heading,{children:a})}),(0,r.jsx)(e.Spacer.Horizontal,{}),(0,r.jsx)(e.View,{style:{transform:[{translateX:6},{translateY:-3}]},children:(0,r.jsx)(e.Button.FadeOnPressContainer,{bg:"default",rounded:"full",onPress:function(){l.pop()},children:(0,r.jsx)(e.View,{padding:"tiny",rounded:"full",bg:"default",children:(0,r.jsx)(e.XIcon,{})})})})]})}),(0,r.jsx)(e.Divider,{}),(0,r.jsx)(e.View,{padding:"medium",children:i})]})};var e=_r(d[0]),n=((function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=t(n);if(r&&r.has(e))return r.get(e);var i={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var o=a?Object.getOwnPropertyDescriptor(e,l):null;o&&(o.get||o.set)?Object.defineProperty(i,l,o):i[l]=e[l]}i.default=e,r&&r.set(e,i)})(_r(d[1])),_r(d[2])),r=_r(d[3]);function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(t=function(e){return e?r:n})(e)}}),1198,[775,112,1195,260]);
|
|
@@ -6,6 +6,7 @@ import android.view.KeyEvent
|
|
|
6
6
|
import android.view.MotionEvent
|
|
7
7
|
import android.view.View
|
|
8
8
|
import android.view.ViewGroup
|
|
9
|
+
import androidx.core.view.WindowCompat
|
|
9
10
|
import com.facebook.react.ReactActivity
|
|
10
11
|
import com.facebook.react.ReactActivityDelegate
|
|
11
12
|
import com.facebook.react.ReactInstanceEventListener
|
|
@@ -51,6 +52,8 @@ class DevLauncherActivity : ReactActivity(), ReactInstanceEventListener, DevLaun
|
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
55
|
+
// Enables edge-to-edge
|
|
56
|
+
WindowCompat.setDecorFitsSystemWindows(window, false)
|
|
54
57
|
super.onCreate(savedInstanceState)
|
|
55
58
|
|
|
56
59
|
contentView = findViewById(android.R.id.content) ?: return
|
package/android/src/debug/java/expo/modules/devlauncher/launcher/errors/DevLauncherErrorActivity.kt
CHANGED
|
@@ -4,6 +4,11 @@ import android.app.Activity
|
|
|
4
4
|
import android.content.Context
|
|
5
5
|
import android.content.Intent
|
|
6
6
|
import android.os.Bundle
|
|
7
|
+
import android.widget.LinearLayout
|
|
8
|
+
import androidx.core.view.ViewCompat
|
|
9
|
+
import androidx.core.view.WindowCompat
|
|
10
|
+
import androidx.core.view.WindowInsetsCompat
|
|
11
|
+
import androidx.core.view.updatePadding
|
|
7
12
|
import androidx.fragment.app.FragmentActivity
|
|
8
13
|
import com.facebook.react.ReactActivity
|
|
9
14
|
import expo.modules.devlauncher.databinding.ErrorFragmentBinding
|
|
@@ -21,12 +26,28 @@ class DevLauncherErrorActivity :
|
|
|
21
26
|
private val adapter = DevLauncherStackAdapter(this, null)
|
|
22
27
|
|
|
23
28
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
29
|
+
// Enables edge-to-edge
|
|
30
|
+
WindowCompat.setDecorFitsSystemWindows(window, false)
|
|
24
31
|
super.onCreate(savedInstanceState)
|
|
25
32
|
|
|
26
33
|
binding = ErrorFragmentBinding.inflate(layoutInflater)
|
|
27
34
|
binding.homeButton.setOnClickListener { this.launchHome() }
|
|
28
35
|
binding.reloadButton.setOnClickListener { this.reload() }
|
|
29
36
|
|
|
37
|
+
// Set footer padding to avoid the navigation bar
|
|
38
|
+
ViewCompat.setOnApplyWindowInsetsListener(binding.errorFooterContent) { view, windowInsets ->
|
|
39
|
+
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
|
40
|
+
view.updatePadding(bottom = insets.bottom)
|
|
41
|
+
WindowInsetsCompat.CONSUMED
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Set title padding to account for status bar
|
|
45
|
+
ViewCompat.setOnApplyWindowInsetsListener(binding.errorTitle) { view, windowInsets ->
|
|
46
|
+
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
|
47
|
+
view.updatePadding(top = insets.top)
|
|
48
|
+
WindowInsetsCompat.CONSUMED
|
|
49
|
+
}
|
|
50
|
+
|
|
30
51
|
synchronized(DevLauncherErrorActivity) {
|
|
31
52
|
val error = currentError
|
|
32
53
|
if (error != null) {
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
android:weightSum="1">
|
|
21
21
|
|
|
22
22
|
<TextView
|
|
23
|
+
android:id="@+id/error_title"
|
|
23
24
|
android:layout_width="wrap_content"
|
|
24
25
|
android:layout_height="wrap_content"
|
|
25
26
|
android:tag="DevLauncherErrorScreen"
|
|
@@ -62,6 +63,7 @@
|
|
|
62
63
|
android:layout_alignParentBottom="true">
|
|
63
64
|
|
|
64
65
|
<LinearLayout
|
|
66
|
+
android:id="@+id/error_footer_content"
|
|
65
67
|
android:layout_width="match_parent"
|
|
66
68
|
android:layout_height="wrap_content"
|
|
67
69
|
android:background="@color/dev_launcher_white"
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<resources>
|
|
2
|
+
<resources xmlns:tools="http://schemas.android.com/tools">
|
|
3
3
|
<style name="Theme.DevLauncher.LauncherActivity" parent="Theme.AppCompat.Light.NoActionBar">
|
|
4
|
+
<item name="android:navigationBarColor">@android:color/transparent</item>
|
|
5
|
+
<item name="android:statusBarColor">@android:color/transparent</item>
|
|
6
|
+
<item name="android:windowLightStatusBar">true</item>
|
|
7
|
+
<item name="android:enforceNavigationBarContrast" tools:targetApi="q">false</item>
|
|
8
|
+
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">true</item>
|
|
9
|
+
|
|
4
10
|
<item name="android:windowContentOverlay">@null</item>
|
|
5
11
|
<item name="android:windowNoTitle">true</item>
|
|
6
12
|
<item name="android:windowIsFloating">false</item>
|
|
@@ -9,7 +15,12 @@
|
|
|
9
15
|
</style>
|
|
10
16
|
|
|
11
17
|
<style name="Theme.DevLauncher.ErrorActivity" parent="Theme.AppCompat.Light.NoActionBar">
|
|
18
|
+
<item name="android:navigationBarColor">@android:color/transparent</item>
|
|
12
19
|
<item name="android:statusBarColor">@android:color/transparent</item>
|
|
20
|
+
<item name="android:windowLightStatusBar">true</item>
|
|
21
|
+
<item name="android:enforceNavigationBarContrast" tools:targetApi="q">false</item>
|
|
22
|
+
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">true</item>
|
|
23
|
+
|
|
13
24
|
<item name="colorPrimary">@color/dev_launcher_primary</item>
|
|
14
25
|
<item name="colorPrimaryDark">@color/dev_launcher_colorPrimaryDark</item>
|
|
15
26
|
<item name="colorAccent">@color/dev_launcher_colorAccentDark</item>
|
|
@@ -35,7 +35,7 @@ export type StackState<T = any> = {
|
|
|
35
35
|
|
|
36
36
|
export type Stack<T> = {
|
|
37
37
|
push: (data?: T | undefined) => StackItem<T>;
|
|
38
|
-
pop: (amount?: number
|
|
38
|
+
pop: (amount?: number) => StackItem[];
|
|
39
39
|
subscribe: (listener: (state: StackEvent<T>) => void) => () => void;
|
|
40
40
|
getState: () => StackState;
|
|
41
41
|
};
|
|
@@ -65,8 +65,8 @@ export function ModalStackProvider({ children, modalStack = defaultModalStack })
|
|
|
65
65
|
style={[StyleSheet.absoluteFillObject]}>
|
|
66
66
|
{modals.map((item) => (
|
|
67
67
|
<ModalScreen
|
|
68
|
-
key={item.key}
|
|
69
68
|
{...item}
|
|
69
|
+
key={item.key}
|
|
70
70
|
onClose={item.pop}
|
|
71
71
|
onPopEnd={item.onPopEnd}
|
|
72
72
|
onPushEnd={item.onPushEnd}
|
|
@@ -82,9 +82,17 @@ type ModalScreenProps = StackItem & {
|
|
|
82
82
|
onClose: () => void;
|
|
83
83
|
};
|
|
84
84
|
|
|
85
|
-
function ModalScreen({ status, data }: ModalScreenProps) {
|
|
85
|
+
function ModalScreen({ status, data, onPushEnd, onPopEnd }: ModalScreenProps) {
|
|
86
86
|
const { element } = data;
|
|
87
87
|
|
|
88
|
+
React.useEffect(() => {
|
|
89
|
+
if (status === 'pushing') {
|
|
90
|
+
onPushEnd();
|
|
91
|
+
} else if (status === 'popping') {
|
|
92
|
+
onPopEnd();
|
|
93
|
+
}
|
|
94
|
+
}, [status]);
|
|
95
|
+
|
|
88
96
|
return (
|
|
89
97
|
<Animated.View
|
|
90
98
|
pointerEvents={status === 'popping' ? 'none' : 'box-none'}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
// Copyright 2015-present 650 Industries. All rights reserved.
|
|
2
2
|
|
|
3
3
|
import ExpoModulesCore
|
|
4
|
-
import
|
|
5
|
-
import React
|
|
4
|
+
import AuthenticationServices
|
|
6
5
|
|
|
7
6
|
private let DEV_LAUNCHER_DEFAULT_SCHEME = "expo-dev-launcher"
|
|
8
7
|
|
|
9
8
|
public class DevLauncherAuth: Module {
|
|
10
9
|
private var redirectPromise: Promise?
|
|
11
|
-
private var authSession:
|
|
10
|
+
private var authSession: ASWebAuthenticationSession?
|
|
11
|
+
private let presentationContext = DevLauncherAuthPresentationContext()
|
|
12
12
|
|
|
13
13
|
public func definition() -> ModuleDefinition {
|
|
14
14
|
Name("ExpoDevLauncherAuth")
|
|
15
15
|
|
|
16
|
-
AsyncFunction("openAuthSessionAsync") { (authURL: URL,
|
|
16
|
+
AsyncFunction("openAuthSessionAsync") { (authURL: URL, _: String, promise: Promise) in
|
|
17
17
|
if self.redirectPromise != nil {
|
|
18
18
|
throw WebBrowserAlreadyPresentedException()
|
|
19
19
|
}
|
|
@@ -34,20 +34,18 @@ public class DevLauncherAuth: Module {
|
|
|
34
34
|
self?.flowDidFinish()
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
// With ASWebAuthenticationSession, all that is required for the callbackURLScheme is the scheme defined in CFBundleURLSchemes.
|
|
38
|
+
// ://auth is not necessary.
|
|
39
|
+
let scheme = getAuthScheme()
|
|
40
|
+
|
|
41
|
+
self.authSession = ASWebAuthenticationSession(url: authURL, callbackURLScheme: scheme, completionHandler: completionHandler)
|
|
42
|
+
self.authSession?.presentationContextProvider = presentationContext
|
|
43
|
+
self.authSession?.prefersEphemeralWebBrowserSession = true
|
|
38
44
|
self.authSession?.start()
|
|
39
|
-
}
|
|
45
|
+
}.runOnQueue(.main)
|
|
40
46
|
|
|
41
47
|
AsyncFunction("getAuthSchemeAsync") { () -> String in
|
|
42
|
-
|
|
43
|
-
for urlType in urlTypes {
|
|
44
|
-
if let schemes = urlType["CFBundleURLSchemes"] as? [String], !schemes.isEmpty {
|
|
45
|
-
return schemes[0]
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return DEV_LAUNCHER_DEFAULT_SCHEME
|
|
48
|
+
getAuthScheme()
|
|
51
49
|
}
|
|
52
50
|
|
|
53
51
|
AsyncFunction("setSessionAsync") { (session: String?) in
|
|
@@ -59,7 +57,24 @@ public class DevLauncherAuth: Module {
|
|
|
59
57
|
}
|
|
60
58
|
}
|
|
61
59
|
|
|
60
|
+
private func getAuthScheme() -> String {
|
|
61
|
+
guard let urlTypes = Bundle.main.object(forInfoDictionaryKey: "CFBundleURLTypes") as? [[String: Any]] else {
|
|
62
|
+
return DEV_LAUNCHER_DEFAULT_SCHEME
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return urlTypes.compactMap { urlType in
|
|
66
|
+
(urlType["CFBundleURLSchemes"] as? [String])?.first
|
|
67
|
+
}.first ?? DEV_LAUNCHER_DEFAULT_SCHEME
|
|
68
|
+
}
|
|
69
|
+
|
|
62
70
|
private func flowDidFinish() {
|
|
63
71
|
self.redirectPromise = nil
|
|
64
72
|
}
|
|
65
73
|
}
|
|
74
|
+
|
|
75
|
+
private class DevLauncherAuthPresentationContext: NSObject, ASWebAuthenticationPresentationContextProviding {
|
|
76
|
+
func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
|
|
77
|
+
let window = UIApplication.shared.windows.first { $0.isKeyWindow }
|
|
78
|
+
return window ?? ASPresentationAnchor()
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -14,16 +14,13 @@ public class EXDevLauncherUrl: NSObject {
|
|
|
14
14
|
@objc
|
|
15
15
|
public init(_ url: URL) {
|
|
16
16
|
self.queryParams = EXDevLauncherURLHelper.getQueryParamsForUrl(url)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
self.url = EXDevLauncherURLHelper.replaceEXPScheme(urlFromParam, to: "http")
|
|
23
|
-
}
|
|
24
|
-
}
|
|
17
|
+
|
|
18
|
+
if EXDevLauncherURLHelper.isDevLauncherURL(url),
|
|
19
|
+
let urlParam = queryParams["url"],
|
|
20
|
+
let urlFromParam = URL(string: urlParam) {
|
|
21
|
+
self.url = EXDevLauncherURLHelper.replaceEXPScheme(urlFromParam, to: "http")
|
|
25
22
|
} else {
|
|
26
|
-
self.url = EXDevLauncherURLHelper.replaceEXPScheme(
|
|
23
|
+
self.url = EXDevLauncherURLHelper.replaceEXPScheme(url, to: "http")
|
|
27
24
|
}
|
|
28
25
|
|
|
29
26
|
super.init()
|
|
@@ -39,48 +36,53 @@ public class EXDevLauncherURLHelper: NSObject {
|
|
|
39
36
|
|
|
40
37
|
@objc
|
|
41
38
|
public static func hasUrlQueryParam(_ url: URL) -> Bool {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (components?.queryItems?.contains(where: {
|
|
47
|
-
$0.name == "url" && $0.value != nil
|
|
48
|
-
})) ?? false {
|
|
49
|
-
hasUrlQueryParam = true
|
|
39
|
+
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
|
|
40
|
+
let queryItems = components.queryItems else {
|
|
41
|
+
return false
|
|
50
42
|
}
|
|
51
43
|
|
|
52
|
-
return
|
|
44
|
+
return queryItems.contains { $0.name == "url" && $0.value != nil }
|
|
53
45
|
}
|
|
54
46
|
|
|
55
47
|
@objc
|
|
56
48
|
public static func disableOnboardingPopupIfNeeded(_ url: URL) {
|
|
57
|
-
let components = URLComponents
|
|
49
|
+
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
|
|
50
|
+
let queryItems = components.queryItems else {
|
|
51
|
+
return
|
|
52
|
+
}
|
|
58
53
|
|
|
59
|
-
|
|
54
|
+
let shouldDisable = queryItems.contains {
|
|
60
55
|
$0.name == "disableOnboarding" && ($0.value ?? "") == "1"
|
|
61
|
-
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if shouldDisable {
|
|
62
59
|
DevMenuPreferences.isOnboardingFinished = true
|
|
63
60
|
}
|
|
64
61
|
}
|
|
65
62
|
|
|
66
63
|
@objc
|
|
67
64
|
public static func replaceEXPScheme(_ url: URL, to scheme: String) -> URL {
|
|
68
|
-
var components = URLComponents(url: url, resolvingAgainstBaseURL: false)
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
guard var components = URLComponents(url: url, resolvingAgainstBaseURL: false),
|
|
66
|
+
components.scheme == "exp" else {
|
|
67
|
+
return url
|
|
71
68
|
}
|
|
72
|
-
|
|
69
|
+
|
|
70
|
+
components.scheme = scheme
|
|
71
|
+
return components.url ?? url
|
|
73
72
|
}
|
|
74
73
|
|
|
75
74
|
@objc
|
|
76
75
|
public static func getQueryParamsForUrl(_ url: URL) -> [String: String] {
|
|
77
|
-
let components = URLComponents
|
|
78
|
-
|
|
76
|
+
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
|
|
77
|
+
let queryItems = components.queryItems else {
|
|
78
|
+
return [:]
|
|
79
|
+
}
|
|
79
80
|
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
var params: [String: String] = [:]
|
|
82
|
+
for item in queryItems {
|
|
83
|
+
params[item.name] = item.value?.removingPercentEncoding ?? ""
|
|
82
84
|
}
|
|
83
85
|
|
|
84
|
-
return
|
|
86
|
+
return params
|
|
85
87
|
}
|
|
86
88
|
}
|
package/ios/main.jsbundle
CHANGED
|
@@ -1355,7 +1355,7 @@ __d((function(g,r,i,a,m,e,d){'use strict';m.exports={isString:function(n){return
|
|
|
1355
1355
|
__d((function(g,r,i,a,m,e,d){'use strict';e.decode=e.parse=r(d[0]),e.encode=e.stringify=r(d[1])}),1189,[1190,1191]);
|
|
1356
1356
|
__d((function(g,r,_i,a,m,e,d){'use strict';function t(t,n){return Object.prototype.hasOwnProperty.call(t,n)}m.exports=function(n,o,s,p){o=o||'&',s=s||'=';var u={};if('string'!=typeof n||0===n.length)return u;var c=/\+/g;n=n.split(o);var i=1e3;p&&'number'==typeof p.maxKeys&&(i=p.maxKeys);var f=n.length;i>0&&f>i&&(f=i);for(var y=0;y<f;++y){var l,v,b,h,x=n[y].replace(c,'%20'),O=x.indexOf(s);O>=0?(l=x.substr(0,O),v=x.substr(O+1)):(l=x,v=''),b=decodeURIComponent(l),h=decodeURIComponent(v),t(u,b)?Array.isArray(u[b])?u[b].push(h):u[b]=[u[b],h]:u[b]=h}return u}}),1190,[]);
|
|
1357
1357
|
__d((function(g,r,i,a,m,e,d){'use strict';var n=function(n){switch(typeof n){case'string':return n;case'boolean':return n?'true':'false';case'number':return isFinite(n)?n:'';default:return''}};m.exports=function(o,t,c,u){return t=t||'&',c=c||'=',null===o&&(o=void 0),'object'==typeof o?Object.keys(o).map((function(u){var s=encodeURIComponent(n(u))+c;return Array.isArray(o[u])?o[u].map((function(o){return s+encodeURIComponent(n(o))})).join(t):s+encodeURIComponent(n(o[u]))})).filter(Boolean).join(t):u?encodeURIComponent(n(u))+c+encodeURIComponent(n(o)):''}}),1191,[]);
|
|
1358
|
-
__d((function(g,_r,_i,_a,_m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.ModalStackProvider=function(e){var
|
|
1358
|
+
__d((function(g,_r,_i,_a,_m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.ModalStackProvider=function(e){var i=e.children,c=e.modalStack,p=void 0===c?s:c,f=(0,o.useStackItems)(p),v=n.useRef(new r.Animated.Value(0)),y=f.some((function(e){return'settled'===e.status||'pushing'===e.status}));return n.useEffect((function(){y?r.Animated.timing(v.current,{toValue:1,useNativeDriver:!0,duration:200}).start():r.Animated.timing(v.current,{toValue:0,useNativeDriver:!0,duration:200}).start()}),[y]),(0,u.jsxs)(a.Provider,{value:{push:function(e){return p.push({element:e})},pop:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return p.pop(e)}},children:[i,(0,u.jsx)(r.Animated.View,{style:[r.StyleSheet.absoluteFillObject,{backgroundColor:'rgba(0,0,0,0.75)',opacity:v.current}],pointerEvents:y?'box-none':'none',children:(0,u.jsx)(r.Pressable,{onPress:function(){p.pop()},style:[r.StyleSheet.absoluteFillObject],children:f.map((function(e){return(0,t.createElement)(l,Object.assign({},e,{key:e.key,onClose:e.pop,onPopEnd:e.onPopEnd,onPushEnd:e.onPushEnd}))}))})})]})},_e.useModalStack=void 0;var e=_r(d[0]),t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var a=o?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(r,u,a):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r})(_r(d[1])),n=t,r=_r(d[2]),o=_r(d[3]),u=_r(d[4]);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var a=n.createContext(null),s=(_e.useModalStack=function(){return n.useContext(a)},(0,o.createAsyncStack)());function l(t){var o=t.status,i=t.data,a=t.onPushEnd,s=t.onPopEnd,l=i.element;return n.useEffect((function(){'pushing'===o?a():'popping'===o&&s()}),[o]),(0,u.jsx)(r.Animated.View,{pointerEvents:'popping'===o?'none':'box-none',style:[r.StyleSheet.absoluteFillObject,{justifyContent:'center'}],children:(0,u.jsx)(e.Button.Container,{children:l})})}}),1192,[772,112,1,1175,262]);
|
|
1359
1359
|
__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.PendingDeepLinkProvider=function(e){var f=e.children,p=e.initialPendingDeepLink,c=void 0===p?'':p,l=(0,u.useModalStack)(),s=t.useState(c),v=(0,n.default)(s,2),k=v[0],D=v[1];return t.useEffect((function(){(0,i.getPendingDeepLink)().then((function(e){e&&(D(e),l.push((function(){return(0,o.jsx)(r.DeepLinkModal,{pendingDeepLink:e})})))}))}),[]),t.useEffect((function(){var e=(0,i.addDeepLinkListener)((function(e){var n=e.url;n&&(D(n),l.push((function(){return(0,o.jsx)(r.DeepLinkModal,{pendingDeepLink:n})})))}));return function(){e.remove()}}),[]),(0,o.jsx)(a.Provider,{value:{pendingDeepLink:k,setPendingDeepLink:D},children:f})},_e.usePendingDeepLink=void 0;var n=e(_r(d[1])),t=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=f(n);if(t&&t.has(e))return t.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var o=i?Object.getOwnPropertyDescriptor(e,u):null;o&&(o.get||o.set)?Object.defineProperty(r,u,o):r[u]=e[u]}return r.default=e,t&&t.set(e,r),r})(_r(d[2])),r=_r(d[3]),i=_r(d[4]),u=_r(d[5]),o=_r(d[6]);function f(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,t=new WeakMap;return(f=function(e){return e?t:n})(e)}var a=t.createContext(null);_e.usePendingDeepLink=function(){return t.useContext(a)}}),1193,[7,50,112,1194,1094,1192,262]);
|
|
1360
1360
|
__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.DeepLinkModal=function(r){var i=r.pendingDeepLink,t=(0,l.useModalStack)();return(0,o.jsxs)(n.BaseModal,{title:"Deep link received:",children:[(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.View,{py:"small",bg:"secondary",rounded:"medium",px:"medium",children:(0,o.jsx)(e.Text,{type:"mono",numberOfLines:3,children:i})}),(0,o.jsx)(e.Spacer.Vertical,{size:"large"}),(0,o.jsx)(u,{}),(0,o.jsx)(e.Spacer.Vertical,{size:"large"}),(0,o.jsxs)(e.View,{children:[(0,o.jsxs)(e.Text,{children:[(0,o.jsx)(e.Text,{weight:"bold",children:"Note: "}),"The next app you open will receive this link"]}),(0,o.jsx)(e.Spacer.Vertical,{size:"medium"}),(0,o.jsx)(e.Button.FadeOnPressContainer,{bg:"ghost",rounded:"medium",border:"ghost",onPress:function(){t.pop()},children:(0,o.jsx)(e.View,{py:"small",px:"medium",children:(0,o.jsx)(e.Button.Text,{size:"large",align:"center",weight:"semibold",color:"ghost",children:"Go back"})})})]})]})};var e=_r(d[0]),r=((function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=c(r);if(n&&n.has(e))return n.get(e);var i={__proto__:null},t=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&{}.hasOwnProperty.call(e,s)){var l=t?Object.getOwnPropertyDescriptor(e,s):null;l&&(l.get||l.set)?Object.defineProperty(i,s,l):i[s]=e[s]}i.default=e,n&&n.set(e,i)})(_r(d[1])),_r(d[2])),n=_r(d[3]),i=_r(d[4]),t=_r(d[5]),s=_r(d[6]),l=_r(d[7]),a=_r(d[8]),o=_r(d[9]);function c(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:r})(e)}function u(){var n=(0,l.useModalStack)(),c=(0,s.useDevSessions)(),u=c.data,x=void 0===u?[]:u,j=c.isFetching,h=(0,a.useRecentlyOpenedApps)(),f=h.data,v=void 0===f?[]:f,w=h.isFetching,y=function(e){var r=e.url;(0,t.loadApp)(r).catch((function(e){n.push((function(){return(0,o.jsx)(i.LoadAppErrorModal,{message:e.message})}))}))};return j||w?(0,o.jsx)(r.ActivityIndicator,{}):x.length>0||v.length>0?(0,o.jsxs)(e.View,{children:[(0,o.jsx)(e.Text,{size:"large",children:"Select an app to open it:"}),(0,o.jsxs)(r.ScrollView,{style:{maxHeight:300},children:[(0,o.jsx)(e.Spacer.Vertical,{size:"medium"}),x.length>0&&(0,o.jsx)(o.Fragment,{children:x.map((function(r,n,i){var t=n===i.length-1;return(0,o.jsxs)(e.View,{children:[(0,o.jsx)(p,{label:r.description,onPress:function(){return y(r)}}),!t&&(0,o.jsx)(e.Divider,{})]},r.url)}))}),v.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.Divider,{}),v.map((function(r,n,i){var t=n===i.length-1;return(0,o.jsxs)(e.View,{children:[(0,o.jsx)(p,{label:r.name,onPress:function(){return y(r)}}),!t&&(0,o.jsx)(e.Divider,{})]},r.url)}))]})]})]}):(0,o.jsxs)(e.View,{children:[(0,o.jsx)(e.Text,{size:"large",weight:"medium",children:"Unable to find any packagers"}),(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.Text,{children:"Start a local development server with:"}),(0,o.jsx)(e.Spacer.Vertical,{size:"small"}),(0,o.jsx)(e.View,{bg:"secondary",border:"default",rounded:"medium",padding:"medium",children:(0,o.jsx)(e.Text,{type:"mono",children:"expo start"})})]})}function p(r){var n=r.onPress,i=r.label;return(0,o.jsx)(e.View,{rounded:"medium",children:(0,o.jsx)(e.Button.FadeOnPressContainer,{bg:"default",onPress:n,children:(0,o.jsxs)(e.Row,{align:"center",py:"medium",px:"small",children:[(0,o.jsx)(e.StatusIndicator,{size:"small",status:"success"}),(0,o.jsx)(e.Spacer.Horizontal,{size:"small"}),(0,o.jsx)(e.Text,{children:i}),(0,o.jsx)(e.Spacer.Horizontal,{}),(0,o.jsx)(e.ChevronRightIcon,{})]})})})}}),1194,[772,112,1,1195,1196,1094,1181,1192,1197,262]);
|
|
1361
1361
|
__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.BaseModal=function(t){var i=t.children,a=t.title,l=(0,n.useModalStack)();return(0,r.jsxs)(e.View,{bg:"default",rounded:"large",shadow:"medium",mx:"small",children:[(0,r.jsx)(e.View,{padding:"medium",children:(0,r.jsxs)(e.Row,{align:"center",bg:"default",children:[(0,r.jsx)(e.View,{children:(0,r.jsx)(e.Heading,{children:a})}),(0,r.jsx)(e.Spacer.Horizontal,{}),(0,r.jsx)(e.View,{style:{transform:[{translateX:6},{translateY:-3}]},children:(0,r.jsx)(e.Button.FadeOnPressContainer,{bg:"default",rounded:"full",onPress:function(){l.pop()},children:(0,r.jsx)(e.View,{padding:"tiny",rounded:"full",bg:"default",children:(0,r.jsx)(e.XIcon,{})})})})]})}),(0,r.jsx)(e.Divider,{}),(0,r.jsx)(e.View,{padding:"medium",children:i})]})};var e=_r(d[0]),n=((function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=t(n);if(r&&r.has(e))return r.get(e);var i={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var o=a?Object.getOwnPropertyDescriptor(e,l):null;o&&(o.get||o.set)?Object.defineProperty(i,l,o):i[l]=e[l]}i.default=e,r&&r.set(e,i)})(_r(d[1])),_r(d[2])),r=_r(d[3]);function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(t=function(e){return e?r:n})(e)}}),1195,[772,112,1192,262]);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-dev-launcher",
|
|
3
3
|
"title": "Expo Development Launcher",
|
|
4
|
-
"version": "5.1.
|
|
4
|
+
"version": "5.1.6",
|
|
5
5
|
"description": "Pre-release version of the Expo development launcher package for testing.",
|
|
6
6
|
"main": "build/DevLauncher.js",
|
|
7
7
|
"types": "build/DevLauncher.d.ts",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"homepage": "https://docs.expo.dev",
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"ajv": "8.11.0",
|
|
34
|
-
"expo-dev-menu": "6.1.
|
|
35
|
-
"expo-manifests": "~0.16.
|
|
34
|
+
"expo-dev-menu": "6.1.6",
|
|
35
|
+
"expo-manifests": "~0.16.3",
|
|
36
36
|
"resolve-from": "^5.0.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"@testing-library/jest-native": "^4.0.4",
|
|
44
44
|
"@testing-library/react-native": "^13.1.0",
|
|
45
45
|
"babel-plugin-module-resolver": "^5.0.0",
|
|
46
|
-
"babel-preset-expo": "~13.1.
|
|
46
|
+
"babel-preset-expo": "~13.1.7",
|
|
47
47
|
"date-fns": "^2.28.0",
|
|
48
|
-
"expo-dev-client-components": "2.1.
|
|
49
|
-
"expo-module-scripts": "^4.1.
|
|
48
|
+
"expo-dev-client-components": "2.1.3",
|
|
49
|
+
"expo-module-scripts": "^4.1.5",
|
|
50
50
|
"graphql": "^16.0.1",
|
|
51
51
|
"graphql-request": "^3.6.1",
|
|
52
52
|
"react": "19.0.0",
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
"/node_modules/(?!((jest-)?react-native|@react-native(-community)?)/|@react-navigation/)"
|
|
68
68
|
]
|
|
69
69
|
},
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "3cd208465df78e385ca9380531bbbfe33ca68e81"
|
|
71
71
|
}
|