expo 55.0.0-preview.8 → 55.0.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/android/build.gradle +3 -61
- package/android/src/main/java/expo/modules/ReactActivityDelegateWrapper.kt +7 -37
- package/build/winter/fetch/RequestUtils.d.ts +2 -0
- package/build/winter/fetch/RequestUtils.d.ts.map +1 -1
- package/build/winter/fetch/fetch.d.ts +2 -2
- package/build/winter/fetch/fetch.d.ts.map +1 -1
- package/build/winter/fetch/fetch.types.d.ts +14 -2
- package/build/winter/fetch/fetch.types.d.ts.map +1 -1
- package/bundledNativeModules.json +85 -85
- package/ios/Fetch/ExpoFetchModule.swift +1 -1
- package/package.json +20 -20
- package/src/winter/fetch/RequestUtils.ts +16 -0
- package/src/winter/fetch/fetch.ts +35 -12
- package/src/winter/fetch/fetch.types.ts +17 -2
- package/template.tgz +0 -0
- package/types/global.d.ts +1 -8
- package/types/index.d.ts +2 -0
- package/types/metro-require.d.ts +27 -11
- package/types/react-native-web.d.ts +2 -0
- package/scripts/autolinking.gradle +0 -9
package/android/build.gradle
CHANGED
|
@@ -1,26 +1,6 @@
|
|
|
1
1
|
apply plugin: 'com.android.library'
|
|
2
2
|
apply plugin: 'expo-module-gradle-plugin'
|
|
3
|
-
|
|
4
|
-
import expo.modules.plugin.gradle.ExpoModuleExtension
|
|
5
|
-
import expo.modules.plugin.Version
|
|
6
|
-
|
|
7
|
-
// TODO(@lukmccall): Remove when we drop support for SDK 52
|
|
8
|
-
def useLegacyAutolinking = false
|
|
9
|
-
try {
|
|
10
|
-
apply plugin: "expo-autolinking"
|
|
11
|
-
} catch (e) {
|
|
12
|
-
useLegacyAutolinking = true
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
if (useLegacyAutolinking) {
|
|
16
|
-
// Import autolinking script
|
|
17
|
-
apply from: "../scripts/autolinking.gradle"
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (useLegacyAutolinking) {
|
|
21
|
-
ensureDependeciesWereEvaluated(project)
|
|
22
|
-
}
|
|
23
|
-
|
|
3
|
+
apply plugin: "expo-autolinking"
|
|
24
4
|
|
|
25
5
|
buildscript {
|
|
26
6
|
// Simple helper that allows the root project to override versions declared by this library.
|
|
@@ -29,10 +9,8 @@ buildscript {
|
|
|
29
9
|
}
|
|
30
10
|
}
|
|
31
11
|
|
|
32
|
-
def reactNativeVersion = project.extensions.getByType(ExpoModuleExtension).reactNativeVersion
|
|
33
|
-
|
|
34
12
|
group = 'host.exp.exponent'
|
|
35
|
-
version = '55.0.0
|
|
13
|
+
version = '55.0.0'
|
|
36
14
|
|
|
37
15
|
expoModule {
|
|
38
16
|
// We can't prebuild the module because it depends on the generated files.
|
|
@@ -43,23 +21,13 @@ android {
|
|
|
43
21
|
namespace "expo.core"
|
|
44
22
|
defaultConfig {
|
|
45
23
|
versionCode 1
|
|
46
|
-
versionName "55.0.0
|
|
24
|
+
versionName "55.0.0"
|
|
47
25
|
consumerProguardFiles("proguard-rules.pro")
|
|
48
26
|
}
|
|
49
27
|
testOptions {
|
|
50
28
|
unitTests.includeAndroidResources = true
|
|
51
29
|
}
|
|
52
30
|
|
|
53
|
-
if (useLegacyAutolinking) {
|
|
54
|
-
sourceSets {
|
|
55
|
-
main {
|
|
56
|
-
java {
|
|
57
|
-
srcDirs += new File(project.buildDir, generatedFilesSrcDir)
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
31
|
buildTypes {
|
|
64
32
|
create("debugOptimized") {
|
|
65
33
|
initWith(buildTypes.release)
|
|
@@ -83,30 +51,4 @@ dependencies { dependencyHandler ->
|
|
|
83
51
|
testImplementation "com.google.truth:truth:1.4.5"
|
|
84
52
|
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2'
|
|
85
53
|
testImplementation 'org.robolectric:robolectric:4.16'
|
|
86
|
-
|
|
87
|
-
if (useLegacyAutolinking) {
|
|
88
|
-
// Link expo modules as dependencies of the adapter. It uses `api` configuration so they all will be visible for the app as well.
|
|
89
|
-
// A collection of the dependencies depends on the options passed to `useExpoModules` in your project's `settings.gradle`.
|
|
90
|
-
addExpoModulesDependencies(dependencyHandler, project)
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (useLegacyAutolinking) {
|
|
95
|
-
// A task generating a package list of expo modules.
|
|
96
|
-
task generateExpoModulesPackageListTask {
|
|
97
|
-
def modulesConfig = getModulesConfig()
|
|
98
|
-
def outputPath = getGenerateExpoModulesPackagesListPath()
|
|
99
|
-
if (modulesConfig) {
|
|
100
|
-
outputs.file(file(outputPath))
|
|
101
|
-
inputs.property("modulesConfig", modulesConfig)
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// TOOD(@lukmccall): fix not working with configuration cache enabled
|
|
105
|
-
doLast {
|
|
106
|
-
generateExpoModulesPackageList()
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Run that task during prebuilding phase.
|
|
111
|
-
preBuild.dependsOn "generateExpoModulesPackageListTask"
|
|
112
54
|
}
|
|
@@ -19,15 +19,12 @@ import com.facebook.react.ReactActivity
|
|
|
19
19
|
import com.facebook.react.ReactActivityDelegate
|
|
20
20
|
import com.facebook.react.ReactDelegate
|
|
21
21
|
import com.facebook.react.ReactHost
|
|
22
|
-
import com.facebook.react.ReactInstanceEventListener
|
|
23
22
|
import com.facebook.react.ReactInstanceManager
|
|
24
23
|
import com.facebook.react.ReactRootView
|
|
25
|
-
import com.facebook.react.bridge.ReactContext
|
|
26
24
|
import com.facebook.react.modules.core.PermissionListener
|
|
27
25
|
import expo.modules.core.interfaces.ReactActivityHandler.DelayLoadAppHandler
|
|
28
26
|
import expo.modules.core.interfaces.ReactActivityLifecycleListener
|
|
29
27
|
import expo.modules.kotlin.Utils
|
|
30
|
-
import expo.modules.rncompatibility.ReactNativeFeatureFlags
|
|
31
28
|
import kotlinx.coroutines.CompletableDeferred
|
|
32
29
|
import kotlinx.coroutines.CoroutineScope
|
|
33
30
|
import kotlinx.coroutines.CoroutineStart
|
|
@@ -43,7 +40,7 @@ import kotlin.coroutines.suspendCoroutine
|
|
|
43
40
|
|
|
44
41
|
class ReactActivityDelegateWrapper(
|
|
45
42
|
private val activity: ReactActivity,
|
|
46
|
-
private val isNewArchitectureEnabled: Boolean,
|
|
43
|
+
private val isNewArchitectureEnabled: Boolean, // TODO(@lukmccall): Unused since SDK 55, remove in SDK 56
|
|
47
44
|
@get:VisibleForTesting internal var delegate: ReactActivityDelegate
|
|
48
45
|
) : ReactActivityDelegate(activity, null) {
|
|
49
46
|
constructor(activity: ReactActivity, delegate: ReactActivityDelegate) :
|
|
@@ -153,27 +150,12 @@ class ReactActivityDelegateWrapper(
|
|
|
153
150
|
}
|
|
154
151
|
|
|
155
152
|
val launchOptions = composeLaunchOptions()
|
|
156
|
-
val reactDelegate
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
launchOptions
|
|
163
|
-
)
|
|
164
|
-
} else {
|
|
165
|
-
reactDelegate = object : ReactDelegate(
|
|
166
|
-
plainActivity,
|
|
167
|
-
reactNativeHost,
|
|
168
|
-
mainComponentName,
|
|
169
|
-
launchOptions,
|
|
170
|
-
isFabricEnabled
|
|
171
|
-
) {
|
|
172
|
-
override fun createRootView(): ReactRootView? {
|
|
173
|
-
return this@ReactActivityDelegateWrapper.createRootView() ?: super.createRootView()
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
153
|
+
val reactDelegate = ReactDelegate(
|
|
154
|
+
plainActivity,
|
|
155
|
+
reactHost,
|
|
156
|
+
mainComponentName,
|
|
157
|
+
launchOptions
|
|
158
|
+
)
|
|
177
159
|
|
|
178
160
|
val mReactDelegate = ReactActivityDelegate::class.java.getDeclaredField("mReactDelegate")
|
|
179
161
|
mReactDelegate.isAccessible = true
|
|
@@ -273,18 +255,6 @@ class ReactActivityDelegateWrapper(
|
|
|
273
255
|
*/
|
|
274
256
|
launchLifecycleScopeWithLock {
|
|
275
257
|
loadAppReady.await()
|
|
276
|
-
if (!ReactNativeFeatureFlags.enableBridgelessArchitecture && delegate.reactInstanceManager.currentReactContext == null) {
|
|
277
|
-
val reactContextListener = object : ReactInstanceEventListener {
|
|
278
|
-
override fun onReactContextInitialized(context: ReactContext) {
|
|
279
|
-
delegate.reactInstanceManager.removeReactInstanceEventListener(this)
|
|
280
|
-
delegate.onActivityResult(requestCode, resultCode, data)
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
return@launchLifecycleScopeWithLock delegate.reactInstanceManager.addReactInstanceEventListener(
|
|
284
|
-
reactContextListener
|
|
285
|
-
)
|
|
286
|
-
}
|
|
287
|
-
|
|
288
258
|
delegate.onActivityResult(requestCode, resultCode, data)
|
|
289
259
|
}
|
|
290
260
|
}
|
|
@@ -18,4 +18,6 @@ export declare function normalizeHeadersInit(headers: HeadersInit | null | undef
|
|
|
18
18
|
* Create a new header array by overriding the existing headers with new headers (by header key).
|
|
19
19
|
*/
|
|
20
20
|
export declare function overrideHeaders(headers: NativeHeadersType, newHeaders: NativeHeadersType): NativeHeadersType;
|
|
21
|
+
/** Normalizes known HTTP methods to uppercase */
|
|
22
|
+
export declare function normalizeMethod(method: string): string;
|
|
21
23
|
//# sourceMappingURL=RequestUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestUtils.d.ts","sourceRoot":"","sources":["../../../src/winter/fetch/RequestUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIzD;;GAEG;AACH,wBAAsB,sCAAsC,CAC1D,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,OAAO,CAAC,UAAU,CAAC,CAsBrB;AAgBD;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAChC,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAAC,CA6C7E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,CAe/F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,iBAAiB,GAC5B,iBAAiB,CAYnB"}
|
|
1
|
+
{"version":3,"file":"RequestUtils.d.ts","sourceRoot":"","sources":["../../../src/winter/fetch/RequestUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIzD;;GAEG;AACH,wBAAsB,sCAAsC,CAC1D,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,OAAO,CAAC,UAAU,CAAC,CAsBrB;AAgBD;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAChC,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAAC,CA6C7E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,CAe/F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,iBAAiB,GAC5B,iBAAiB,CAYnB;AAED,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAatD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { FetchResponse } from './FetchResponse';
|
|
2
|
-
import type { FetchRequestInit } from './fetch.types';
|
|
3
|
-
export declare function fetch(
|
|
2
|
+
import type { FetchRequestInit, FetchRequestLike } from './fetch.types';
|
|
3
|
+
export declare function fetch(input: string | URL | FetchRequestLike, init?: FetchRequestInit): Promise<FetchResponse>;
|
|
4
4
|
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/winter/fetch/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAyC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/winter/fetch/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAyC,MAAM,iBAAiB,CAAC;AAQvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAOxE,wBAAsB,KAAK,CACzB,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,gBAAgB,EACtC,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC,CAiDxB"}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* A fetch RequestInit compatible structure.
|
|
3
3
|
*/
|
|
4
4
|
export interface FetchRequestInit {
|
|
5
|
-
body?: BodyInit;
|
|
5
|
+
body?: BodyInit | null;
|
|
6
6
|
credentials?: RequestCredentials;
|
|
7
7
|
headers?: HeadersInit;
|
|
8
8
|
method?: string;
|
|
9
|
-
signal?: AbortSignal;
|
|
9
|
+
signal?: AbortSignal | null;
|
|
10
10
|
redirect?: RequestRedirect;
|
|
11
11
|
integrity?: string;
|
|
12
12
|
keepalive?: boolean;
|
|
@@ -14,4 +14,16 @@ export interface FetchRequestInit {
|
|
|
14
14
|
referrer?: string;
|
|
15
15
|
window?: any;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* A fetch Request compatible structure.
|
|
19
|
+
*/
|
|
20
|
+
export interface FetchRequestLike {
|
|
21
|
+
readonly url: string;
|
|
22
|
+
readonly body: BodyInit | null;
|
|
23
|
+
readonly method: string;
|
|
24
|
+
readonly headers: Headers;
|
|
25
|
+
readonly credentials?: RequestCredentials;
|
|
26
|
+
readonly signal?: AbortSignal;
|
|
27
|
+
readonly redirect?: RequestRedirect;
|
|
28
|
+
}
|
|
17
29
|
//# sourceMappingURL=fetch.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.types.d.ts","sourceRoot":"","sources":["../../../src/winter/fetch/fetch.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch.types.d.ts","sourceRoot":"","sources":["../../../src/winter/fetch/fetch.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAG3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAG1B,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;CACrC"}
|
|
@@ -1,120 +1,120 @@
|
|
|
1
1
|
{
|
|
2
|
-
"@expo/fingerprint": "~0.16.
|
|
3
|
-
"@expo/metro-runtime": "~55.0.
|
|
2
|
+
"@expo/fingerprint": "~0.16.5",
|
|
3
|
+
"@expo/metro-runtime": "~55.0.6",
|
|
4
4
|
"@expo/vector-icons": "^15.0.2",
|
|
5
|
-
"@expo/ui": "~55.0.0
|
|
5
|
+
"@expo/ui": "~55.0.0",
|
|
6
6
|
"@react-native-async-storage/async-storage": "2.2.0",
|
|
7
7
|
"@react-native-community/datetimepicker": "8.6.0",
|
|
8
8
|
"@react-native-masked-view/masked-view": "0.3.2",
|
|
9
|
-
"@react-native-community/
|
|
10
|
-
"@react-native-community/
|
|
9
|
+
"@react-native-community/slider": "5.1.2",
|
|
10
|
+
"@react-native-community/netinfo": "11.5.2",
|
|
11
11
|
"@react-native-community/viewpager": "5.0.11",
|
|
12
12
|
"@react-native-picker/picker": "2.11.4",
|
|
13
13
|
"@react-native-segmented-control/segmented-control": "2.5.7",
|
|
14
|
-
"@stripe/stripe-react-native": "0.
|
|
14
|
+
"@stripe/stripe-react-native": "0.58.0",
|
|
15
15
|
"eslint-config-expo": "~55.0.0",
|
|
16
16
|
"expo-analytics-amplitude": "~11.3.0",
|
|
17
17
|
"expo-app-auth": "~11.1.0",
|
|
18
18
|
"expo-app-loader-provider": "~8.0.0",
|
|
19
|
-
"expo-apple-authentication": "~55.0.
|
|
20
|
-
"expo-application": "~55.0.
|
|
21
|
-
"expo-asset": "~55.0.
|
|
22
|
-
"expo-audio": "~55.0.
|
|
23
|
-
"expo-auth-session": "~55.0.
|
|
24
|
-
"expo-background-fetch": "~55.0.
|
|
25
|
-
"expo-background-task": "~55.0.
|
|
26
|
-
"expo-battery": "~55.0.
|
|
27
|
-
"expo-blur": "~55.0.
|
|
28
|
-
"expo-brightness": "~55.0.
|
|
29
|
-
"expo-brownfield": "~55.0.
|
|
30
|
-
"expo-build-properties": "~55.0.
|
|
31
|
-
"expo-calendar": "~55.0.
|
|
32
|
-
"expo-camera": "~55.0.
|
|
33
|
-
"expo-cellular": "~55.0.
|
|
34
|
-
"expo-checkbox": "~55.0.
|
|
35
|
-
"expo-clipboard": "~55.0.
|
|
36
|
-
"expo-constants": "~55.0.
|
|
37
|
-
"expo-contacts": "~55.0.
|
|
38
|
-
"expo-crypto": "~55.0.
|
|
39
|
-
"expo-dev-client": "~55.0.
|
|
40
|
-
"expo-device": "~55.0.
|
|
41
|
-
"expo-document-picker": "~55.0.
|
|
42
|
-
"expo-file-system": "~55.0.
|
|
43
|
-
"expo-font": "~55.0.
|
|
44
|
-
"expo-gl": "~55.0.
|
|
45
|
-
"expo-glass-effect": "~55.0.
|
|
19
|
+
"expo-apple-authentication": "~55.0.8",
|
|
20
|
+
"expo-application": "~55.0.8",
|
|
21
|
+
"expo-asset": "~55.0.7",
|
|
22
|
+
"expo-audio": "~55.0.8",
|
|
23
|
+
"expo-auth-session": "~55.0.6",
|
|
24
|
+
"expo-background-fetch": "~55.0.8",
|
|
25
|
+
"expo-background-task": "~55.0.8",
|
|
26
|
+
"expo-battery": "~55.0.8",
|
|
27
|
+
"expo-blur": "~55.0.8",
|
|
28
|
+
"expo-brightness": "~55.0.8",
|
|
29
|
+
"expo-brownfield": "~55.0.10",
|
|
30
|
+
"expo-build-properties": "~55.0.9",
|
|
31
|
+
"expo-calendar": "~55.0.8",
|
|
32
|
+
"expo-camera": "~55.0.8",
|
|
33
|
+
"expo-cellular": "~55.0.8",
|
|
34
|
+
"expo-checkbox": "~55.0.3",
|
|
35
|
+
"expo-clipboard": "~55.0.8",
|
|
36
|
+
"expo-constants": "~55.0.7",
|
|
37
|
+
"expo-contacts": "~55.0.8",
|
|
38
|
+
"expo-crypto": "~55.0.8",
|
|
39
|
+
"expo-dev-client": "~55.0.8",
|
|
40
|
+
"expo-device": "~55.0.9",
|
|
41
|
+
"expo-document-picker": "~55.0.8",
|
|
42
|
+
"expo-file-system": "~55.0.9",
|
|
43
|
+
"expo-font": "~55.0.4",
|
|
44
|
+
"expo-gl": "~55.0.9",
|
|
45
|
+
"expo-glass-effect": "~55.0.7",
|
|
46
46
|
"expo-google-app-auth": "~8.3.0",
|
|
47
|
-
"expo-haptics": "~55.0.
|
|
48
|
-
"expo-image": "~55.0.
|
|
47
|
+
"expo-haptics": "~55.0.8",
|
|
48
|
+
"expo-image": "~55.0.5",
|
|
49
49
|
"expo-image-loader": "~55.0.0",
|
|
50
|
-
"expo-image-manipulator": "~55.0.
|
|
51
|
-
"expo-image-picker": "~55.0.
|
|
52
|
-
"expo-intent-launcher": "~55.0.
|
|
53
|
-
"expo-insights": "~55.0.
|
|
54
|
-
"expo-keep-awake": "~55.0.
|
|
55
|
-
"expo-linear-gradient": "~55.0.
|
|
56
|
-
"expo-linking": "~55.0.
|
|
57
|
-
"expo-local-authentication": "~55.0.
|
|
58
|
-
"expo-localization": "~55.0.
|
|
59
|
-
"expo-location": "~55.
|
|
60
|
-
"expo-mail-composer": "~55.0.
|
|
61
|
-
"expo-manifests": "~55.0.
|
|
62
|
-
"expo-maps": "~55.0.
|
|
50
|
+
"expo-image-manipulator": "~55.0.9",
|
|
51
|
+
"expo-image-picker": "~55.0.9",
|
|
52
|
+
"expo-intent-launcher": "~55.0.8",
|
|
53
|
+
"expo-insights": "~55.0.10",
|
|
54
|
+
"expo-keep-awake": "~55.0.4",
|
|
55
|
+
"expo-linear-gradient": "~55.0.8",
|
|
56
|
+
"expo-linking": "~55.0.7",
|
|
57
|
+
"expo-local-authentication": "~55.0.8",
|
|
58
|
+
"expo-localization": "~55.0.8",
|
|
59
|
+
"expo-location": "~55.1.2",
|
|
60
|
+
"expo-mail-composer": "~55.0.8",
|
|
61
|
+
"expo-manifests": "~55.0.9",
|
|
62
|
+
"expo-maps": "~55.0.9",
|
|
63
63
|
"expo-mcp": "~0.2.1",
|
|
64
|
-
"expo-media-library": "~55.0.
|
|
65
|
-
"expo-mesh-gradient": "~55.0.
|
|
66
|
-
"expo-module-template": "~55.0.
|
|
67
|
-
"expo-modules-core": "~55.0.
|
|
68
|
-
"expo-navigation-bar": "~55.0.
|
|
69
|
-
"expo-network": "~55.0.
|
|
70
|
-
"expo-notifications": "~55.0.
|
|
71
|
-
"expo-print": "~55.0.
|
|
72
|
-
"expo-live-photo": "~55.0.
|
|
73
|
-
"expo-router": "~55.0.0
|
|
74
|
-
"expo-screen-capture": "~55.0.
|
|
75
|
-
"expo-screen-orientation": "~55.0.
|
|
76
|
-
"expo-secure-store": "~55.0.
|
|
77
|
-
"expo-sensors": "~55.0.
|
|
78
|
-
"expo-server": "~55.0.
|
|
79
|
-
"expo-sharing": "~55.0.
|
|
80
|
-
"expo-sms": "~55.0.
|
|
81
|
-
"expo-speech": "~55.0.
|
|
82
|
-
"expo-splash-screen": "~55.0.
|
|
83
|
-
"expo-sqlite": "~55.0.
|
|
84
|
-
"expo-status-bar": "~55.0.
|
|
85
|
-
"expo-store-review": "~55.0.
|
|
86
|
-
"expo-symbols": "~55.0.
|
|
87
|
-
"expo-system-ui": "~55.0.
|
|
88
|
-
"expo-task-manager": "~55.0.
|
|
89
|
-
"expo-tracking-transparency": "~55.0.
|
|
90
|
-
"expo-updates": "~55.0.
|
|
91
|
-
"expo-video-thumbnails": "~55.0.
|
|
92
|
-
"expo-video": "~55.0.
|
|
93
|
-
"expo-web-browser": "~55.0.
|
|
94
|
-
"jest-expo": "~55.0.
|
|
64
|
+
"expo-media-library": "~55.0.9",
|
|
65
|
+
"expo-mesh-gradient": "~55.0.8",
|
|
66
|
+
"expo-module-template": "~55.0.7",
|
|
67
|
+
"expo-modules-core": "~55.0.11",
|
|
68
|
+
"expo-navigation-bar": "~55.0.8",
|
|
69
|
+
"expo-network": "~55.0.8",
|
|
70
|
+
"expo-notifications": "~55.0.10",
|
|
71
|
+
"expo-print": "~55.0.8",
|
|
72
|
+
"expo-live-photo": "~55.0.8",
|
|
73
|
+
"expo-router": "~55.0.0",
|
|
74
|
+
"expo-screen-capture": "~55.0.8",
|
|
75
|
+
"expo-screen-orientation": "~55.0.8",
|
|
76
|
+
"expo-secure-store": "~55.0.8",
|
|
77
|
+
"expo-sensors": "~55.0.8",
|
|
78
|
+
"expo-server": "~55.0.5",
|
|
79
|
+
"expo-sharing": "~55.0.10",
|
|
80
|
+
"expo-sms": "~55.0.8",
|
|
81
|
+
"expo-speech": "~55.0.8",
|
|
82
|
+
"expo-splash-screen": "~55.0.9",
|
|
83
|
+
"expo-sqlite": "~55.0.9",
|
|
84
|
+
"expo-status-bar": "~55.0.4",
|
|
85
|
+
"expo-store-review": "~55.0.8",
|
|
86
|
+
"expo-symbols": "~55.0.4",
|
|
87
|
+
"expo-system-ui": "~55.0.9",
|
|
88
|
+
"expo-task-manager": "~55.0.9",
|
|
89
|
+
"expo-tracking-transparency": "~55.0.8",
|
|
90
|
+
"expo-updates": "~55.0.11",
|
|
91
|
+
"expo-video-thumbnails": "~55.0.9",
|
|
92
|
+
"expo-video": "~55.0.9",
|
|
93
|
+
"expo-web-browser": "~55.0.9",
|
|
94
|
+
"jest-expo": "~55.0.9",
|
|
95
95
|
"lottie-react-native": "~7.3.4",
|
|
96
96
|
"react": "19.2.0",
|
|
97
97
|
"react-dom": "19.2.0",
|
|
98
|
-
"react-native": "0.83.
|
|
98
|
+
"react-native": "0.83.2",
|
|
99
99
|
"react-native-web": "~0.21.0",
|
|
100
100
|
"react-native-gesture-handler": "~2.30.0",
|
|
101
101
|
"react-native-get-random-values": "~1.11.0",
|
|
102
|
-
"react-native-keyboard-controller": "1.20.
|
|
102
|
+
"react-native-keyboard-controller": "1.20.7",
|
|
103
103
|
"react-native-maps": "1.26.20",
|
|
104
104
|
"react-native-pager-view": "8.0.0",
|
|
105
105
|
"react-native-worklets": "0.7.2",
|
|
106
106
|
"react-native-reanimated": "~4.2.1",
|
|
107
|
-
"react-native-screens": "~4.
|
|
107
|
+
"react-native-screens": "~4.24.0",
|
|
108
108
|
"react-native-safe-area-context": "~5.6.2",
|
|
109
|
-
"react-native-svg": "15.15.
|
|
109
|
+
"react-native-svg": "15.15.3",
|
|
110
110
|
"react-native-view-shot": "4.0.3",
|
|
111
111
|
"react-native-webview": "13.16.0",
|
|
112
112
|
"react-server-dom-webpack": "~19.2.4",
|
|
113
113
|
"sentry-expo": "~7.0.0",
|
|
114
114
|
"unimodules-app-loader": "~55.0.2",
|
|
115
115
|
"unimodules-image-loader-interface": "~6.1.0",
|
|
116
|
-
"@shopify/react-native-skia": "2.4.
|
|
116
|
+
"@shopify/react-native-skia": "2.4.18",
|
|
117
117
|
"@shopify/flash-list": "2.0.2",
|
|
118
|
-
"@sentry/react-native": "~7.
|
|
118
|
+
"@sentry/react-native": "~7.11.0",
|
|
119
119
|
"react-native-bootsplash": "^6.3.10"
|
|
120
120
|
}
|
|
@@ -58,7 +58,7 @@ public final class ExpoFetchModule: Module {
|
|
|
58
58
|
AsyncFunction("arrayBuffer") { (response: NativeResponse, promise: Promise) in
|
|
59
59
|
response.waitFor(states: [.bodyCompleted]) { _ in
|
|
60
60
|
let data = response.sink.finalize()
|
|
61
|
-
promise.resolve(data)
|
|
61
|
+
promise.resolve(ArrayBuffer.wrap(dataWithoutCopy: data))
|
|
62
62
|
}
|
|
63
63
|
}.runOnQueue(fetchRequestQueue)
|
|
64
64
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo",
|
|
3
|
-
"version": "55.0.0
|
|
3
|
+
"version": "55.0.0",
|
|
4
4
|
"description": "The Expo SDK",
|
|
5
5
|
"main": "src/Expo.ts",
|
|
6
6
|
"module": "src/Expo.ts",
|
|
@@ -77,39 +77,39 @@
|
|
|
77
77
|
"homepage": "https://github.com/expo/expo/tree/main/packages/expo",
|
|
78
78
|
"dependencies": {
|
|
79
79
|
"@babel/runtime": "^7.20.0",
|
|
80
|
-
"@expo/cli": "55.0.
|
|
81
|
-
"@expo/config": "~55.0.
|
|
82
|
-
"@expo/config-plugins": "~55.0.
|
|
80
|
+
"@expo/cli": "55.0.11",
|
|
81
|
+
"@expo/config": "~55.0.8",
|
|
82
|
+
"@expo/config-plugins": "~55.0.6",
|
|
83
83
|
"@expo/devtools": "55.0.2",
|
|
84
|
-
"@expo/fingerprint": "0.16.
|
|
85
|
-
"@expo/local-build-cache-provider": "55.0.
|
|
86
|
-
"@expo/log-box": "55.0.
|
|
84
|
+
"@expo/fingerprint": "0.16.5",
|
|
85
|
+
"@expo/local-build-cache-provider": "55.0.6",
|
|
86
|
+
"@expo/log-box": "55.0.7",
|
|
87
87
|
"@expo/metro": "~54.2.0",
|
|
88
|
-
"@expo/metro-config": "55.0.
|
|
88
|
+
"@expo/metro-config": "55.0.8",
|
|
89
89
|
"@expo/vector-icons": "^15.0.2",
|
|
90
90
|
"@ungap/structured-clone": "^1.3.0",
|
|
91
|
-
"babel-preset-expo": "~55.0.
|
|
92
|
-
"expo-asset": "~55.0.
|
|
93
|
-
"expo-constants": "~55.0.
|
|
94
|
-
"expo-file-system": "~55.0.
|
|
95
|
-
"expo-font": "~55.0.
|
|
96
|
-
"expo-keep-awake": "~55.0.
|
|
97
|
-
"expo-modules-autolinking": "55.0.
|
|
98
|
-
"expo-modules-core": "55.0.
|
|
91
|
+
"babel-preset-expo": "~55.0.7",
|
|
92
|
+
"expo-asset": "~55.0.7",
|
|
93
|
+
"expo-constants": "~55.0.7",
|
|
94
|
+
"expo-file-system": "~55.0.9",
|
|
95
|
+
"expo-font": "~55.0.4",
|
|
96
|
+
"expo-keep-awake": "~55.0.4",
|
|
97
|
+
"expo-modules-autolinking": "55.0.8",
|
|
98
|
+
"expo-modules-core": "55.0.11",
|
|
99
99
|
"pretty-format": "^29.7.0",
|
|
100
100
|
"react-refresh": "^0.14.2",
|
|
101
101
|
"whatwg-url-minimum": "^0.1.1"
|
|
102
102
|
},
|
|
103
103
|
"devDependencies": {
|
|
104
|
-
"@expo/dom-webview": "55.0.
|
|
105
|
-
"@expo/metro-runtime": "^55.0.
|
|
104
|
+
"@expo/dom-webview": "^55.0.3",
|
|
105
|
+
"@expo/metro-runtime": "^55.0.6",
|
|
106
106
|
"@types/node": "^22.14.0",
|
|
107
107
|
"@types/react": "~19.2.0",
|
|
108
108
|
"@types/react-test-renderer": "~19.1.0",
|
|
109
109
|
"expo-module-scripts": "^55.0.2",
|
|
110
110
|
"react": "19.2.0",
|
|
111
111
|
"react-dom": "19.2.0",
|
|
112
|
-
"react-native": "0.83.
|
|
112
|
+
"react-native": "0.83.2",
|
|
113
113
|
"web-streams-polyfill": "^3.3.2"
|
|
114
114
|
},
|
|
115
115
|
"peerDependencies": {
|
|
@@ -130,5 +130,5 @@
|
|
|
130
130
|
"optional": true
|
|
131
131
|
}
|
|
132
132
|
},
|
|
133
|
-
"gitHead": "
|
|
133
|
+
"gitHead": "b183e5cbd95eb6ee54a878291c7077d8d63e4850"
|
|
134
134
|
}
|
|
@@ -136,3 +136,19 @@ export function overrideHeaders(
|
|
|
136
136
|
}
|
|
137
137
|
return result;
|
|
138
138
|
}
|
|
139
|
+
|
|
140
|
+
/** Normalizes known HTTP methods to uppercase */
|
|
141
|
+
export function normalizeMethod(method: string): string {
|
|
142
|
+
const normalized = method.toUpperCase();
|
|
143
|
+
switch (method.toUpperCase()) {
|
|
144
|
+
case 'DELETE':
|
|
145
|
+
case 'GET':
|
|
146
|
+
case 'HEAD':
|
|
147
|
+
case 'OPTIONS':
|
|
148
|
+
case 'POST':
|
|
149
|
+
case 'PUT':
|
|
150
|
+
return normalized;
|
|
151
|
+
default:
|
|
152
|
+
return method;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -2,40 +2,63 @@ import { ExpoFetchModule } from './ExpoFetchModule';
|
|
|
2
2
|
import { FetchError } from './FetchErrors';
|
|
3
3
|
import { FetchResponse, type AbortSubscriptionCleanupFunction } from './FetchResponse';
|
|
4
4
|
import { NativeRequest, NativeRequestInit } from './NativeRequest';
|
|
5
|
-
import {
|
|
6
|
-
|
|
5
|
+
import {
|
|
6
|
+
normalizeBodyInitAsync,
|
|
7
|
+
normalizeHeadersInit,
|
|
8
|
+
overrideHeaders,
|
|
9
|
+
normalizeMethod,
|
|
10
|
+
} from './RequestUtils';
|
|
11
|
+
import type { FetchRequestInit, FetchRequestLike } from './fetch.types';
|
|
12
|
+
|
|
13
|
+
/** Returns if `input` is a Request object */
|
|
14
|
+
const isRequest = (input: any): input is FetchRequestLike =>
|
|
15
|
+
input != null && typeof input === 'object' && 'body' in input;
|
|
7
16
|
|
|
8
17
|
// TODO(@kitten): Do we really want to use our own types for web standards?
|
|
9
|
-
export async function fetch(
|
|
18
|
+
export async function fetch(
|
|
19
|
+
input: string | URL | FetchRequestLike,
|
|
20
|
+
init?: FetchRequestInit
|
|
21
|
+
): Promise<FetchResponse> {
|
|
22
|
+
const initFromRequest = isRequest(input);
|
|
23
|
+
const url = initFromRequest ? input.url : input;
|
|
24
|
+
const body = init?.body ?? (initFromRequest ? input.body : null);
|
|
25
|
+
const signal = init?.signal ?? (initFromRequest ? input.signal : undefined);
|
|
26
|
+
const redirect = init?.redirect ?? (initFromRequest ? input.redirect : undefined);
|
|
27
|
+
const method = init?.method ?? (initFromRequest ? input.method : undefined);
|
|
28
|
+
const credentials = init?.credentials ?? (initFromRequest ? input.credentials : undefined);
|
|
29
|
+
|
|
30
|
+
let headers = normalizeHeadersInit(
|
|
31
|
+
init?.headers ?? (initFromRequest ? input.headers : undefined)
|
|
32
|
+
);
|
|
33
|
+
|
|
10
34
|
let abortSubscription: AbortSubscriptionCleanupFunction | null = null;
|
|
11
35
|
|
|
12
36
|
const response = new FetchResponse(() => {
|
|
13
37
|
abortSubscription?.();
|
|
14
38
|
});
|
|
15
|
-
const request = new ExpoFetchModule.NativeRequest(response) as NativeRequest;
|
|
16
39
|
|
|
17
|
-
|
|
40
|
+
const request = new ExpoFetchModule.NativeRequest(response) as NativeRequest;
|
|
18
41
|
|
|
19
|
-
const { body: requestBody, overriddenHeaders } = await normalizeBodyInitAsync(
|
|
42
|
+
const { body: requestBody, overriddenHeaders } = await normalizeBodyInitAsync(body);
|
|
20
43
|
if (overriddenHeaders) {
|
|
21
44
|
headers = overrideHeaders(headers, overriddenHeaders);
|
|
22
45
|
}
|
|
23
46
|
|
|
24
47
|
const nativeRequestInit: NativeRequestInit = {
|
|
25
|
-
credentials:
|
|
48
|
+
credentials: credentials ?? 'include',
|
|
26
49
|
headers,
|
|
27
|
-
method:
|
|
28
|
-
redirect:
|
|
50
|
+
method: method != null ? normalizeMethod(method) : 'GET',
|
|
51
|
+
redirect: redirect ?? 'follow',
|
|
29
52
|
};
|
|
30
53
|
|
|
31
|
-
if (
|
|
54
|
+
if (signal && signal.aborted) {
|
|
32
55
|
throw new FetchError('The operation was aborted.');
|
|
33
56
|
}
|
|
34
|
-
abortSubscription = addAbortSignalListener(
|
|
57
|
+
abortSubscription = addAbortSignalListener(signal, () => {
|
|
35
58
|
request.cancel();
|
|
36
59
|
});
|
|
37
60
|
try {
|
|
38
|
-
await request.start(url
|
|
61
|
+
await request.start(`${url}`, nativeRequestInit, requestBody);
|
|
39
62
|
} catch (e: unknown) {
|
|
40
63
|
if (e instanceof Error) {
|
|
41
64
|
throw FetchError.createFromError(e);
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* A fetch RequestInit compatible structure.
|
|
3
3
|
*/
|
|
4
4
|
export interface FetchRequestInit {
|
|
5
|
-
body?: BodyInit;
|
|
5
|
+
body?: BodyInit | null;
|
|
6
6
|
credentials?: RequestCredentials; // same-origin is not supported
|
|
7
7
|
headers?: HeadersInit;
|
|
8
8
|
method?: string;
|
|
9
|
-
signal?: AbortSignal;
|
|
9
|
+
signal?: AbortSignal | null;
|
|
10
10
|
redirect?: RequestRedirect;
|
|
11
11
|
|
|
12
12
|
// Not supported fields
|
|
@@ -16,3 +16,18 @@ export interface FetchRequestInit {
|
|
|
16
16
|
referrer?: string;
|
|
17
17
|
window?: any;
|
|
18
18
|
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A fetch Request compatible structure.
|
|
22
|
+
*/
|
|
23
|
+
export interface FetchRequestLike {
|
|
24
|
+
readonly url: string;
|
|
25
|
+
readonly body: BodyInit | null;
|
|
26
|
+
readonly method: string;
|
|
27
|
+
readonly headers: Headers;
|
|
28
|
+
|
|
29
|
+
// Not always supported, marked as optional
|
|
30
|
+
readonly credentials?: RequestCredentials;
|
|
31
|
+
readonly signal?: AbortSignal;
|
|
32
|
+
readonly redirect?: RequestRedirect;
|
|
33
|
+
}
|
package/template.tgz
CHANGED
|
Binary file
|
package/types/global.d.ts
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// Extend the NodeJS namespace
|
|
4
|
-
declare namespace NodeJS {
|
|
5
|
-
interface ProcessEnv {
|
|
6
|
-
readonly NODE_ENV: 'development' | 'production' | 'test';
|
|
7
|
-
}
|
|
8
|
-
}
|
|
1
|
+
/* eslint-disable */
|
|
9
2
|
|
|
10
3
|
// Create types for CSS modules
|
|
11
4
|
declare module '*.module.css' {
|
package/types/index.d.ts
CHANGED
package/types/metro-require.d.ts
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
// Adds support for the runtime `require.context` method.
|
|
3
|
-
// https://github.com/facebook/metro/pull/822/
|
|
1
|
+
/* eslint-disable */
|
|
4
2
|
|
|
5
|
-
|
|
3
|
+
// NOTE: This module is named `metro-require.d.ts` for backwards compatibility, since it's accessible to users
|
|
4
|
+
// However, it's supposed to be understood more as a "Metro environment" typings file that provides types for `require` and `module`,
|
|
5
|
+
// regardless of if `@types/node` is present, and/or, to enhance `@types/node` if it's present
|
|
6
6
|
|
|
7
7
|
declare namespace __MetroModuleApi {
|
|
8
|
-
interface
|
|
8
|
+
export interface ProcessEnv {
|
|
9
|
+
readonly NODE_ENV: 'development' | 'production' | 'test';
|
|
10
|
+
[key: string]: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface Process {
|
|
14
|
+
env: ProcessEnv;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface RequireContext {
|
|
9
18
|
/** Return the keys that can be resolved. */
|
|
10
19
|
keys(): string[];
|
|
11
20
|
(id: string): any;
|
|
@@ -16,7 +25,8 @@ declare namespace __MetroModuleApi {
|
|
|
16
25
|
id: string;
|
|
17
26
|
}
|
|
18
27
|
|
|
19
|
-
|
|
28
|
+
// Adds support for the runtime `require.context` method.
|
|
29
|
+
export interface RequireFunction {
|
|
20
30
|
/**
|
|
21
31
|
* Returns the exports from a dependency. The call is sync. No request to the server is fired. The compiler ensures that the dependency is available.
|
|
22
32
|
*/
|
|
@@ -40,13 +50,19 @@ declare namespace __MetroModuleApi {
|
|
|
40
50
|
mode?: 'sync' | 'eager' | 'weak' | 'lazy' | 'lazy-once'
|
|
41
51
|
): RequireContext;
|
|
42
52
|
}
|
|
53
|
+
|
|
54
|
+
export interface Module {
|
|
55
|
+
exports: any;
|
|
56
|
+
}
|
|
43
57
|
}
|
|
44
58
|
|
|
45
|
-
/**
|
|
46
|
-
* Declare process variable
|
|
47
|
-
*/
|
|
48
59
|
declare namespace NodeJS {
|
|
49
|
-
interface Require extends __MetroModuleApi.RequireFunction {}
|
|
60
|
+
export interface Require extends __MetroModuleApi.RequireFunction {}
|
|
61
|
+
export interface Module extends __MetroModuleApi.Module {}
|
|
62
|
+
export interface ProcessEnv extends __MetroModuleApi.ProcessEnv {}
|
|
63
|
+
export interface Process extends __MetroModuleApi.Process {}
|
|
50
64
|
}
|
|
51
65
|
|
|
52
|
-
declare var require:
|
|
66
|
+
declare var require: NodeJS.Require;
|
|
67
|
+
declare var module: NodeJS.Module;
|
|
68
|
+
declare var process: NodeJS.Process;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
// Resolve `expo` > `expo-modules-autolinking` dependency chain
|
|
2
|
-
def autolinkingPath = ["node", "--print", "require.resolve('expo-modules-autolinking/package.json', { paths: [require.resolve('expo/package.json')] })"]
|
|
3
|
-
apply from: new File(
|
|
4
|
-
providers.exec {
|
|
5
|
-
workingDir(rootDir)
|
|
6
|
-
commandLine(autolinkingPath)
|
|
7
|
-
}.standardOutput.asText.get().trim(),
|
|
8
|
-
"../scripts/android/autolinking_implementation.gradle"
|
|
9
|
-
)
|