expo 58.0.0-preview.7 → 58.0.0-preview.8
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/Package.swift +49 -0
- package/android/build.gradle +2 -2
- package/bundledNativeModules.json +38 -38
- package/package.json +17 -16
- package/scripts/spm/__tests__/fixtures/target-paths/README.md +31 -0
- package/scripts/spm/__tests__/fixtures/target-paths/default-sources/Sources/Fixture/Fixture.swift +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/default-sources/Sources/FixtureObjC/FixtureObjC.m +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/default-sources/Sources/FixtureObjC/include/FixtureObjC.h +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/default-sources/dump.json +68 -0
- package/scripts/spm/__tests__/fixtures/target-paths/default-sources/expected.json +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/explicit-path/dump.json +54 -0
- package/scripts/spm/__tests__/fixtures/target-paths/explicit-path/expected.json +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/explicit-path/ios/ExpoHaptics.podspec +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/explicit-path/ios/HapticsModule.swift +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/missing-dir/Sources/Fixture/Fixture.swift +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/missing-dir/dump.json +61 -0
- package/scripts/spm/__tests__/fixtures/target-paths/missing-dir/expected.json +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/other-predefined-dir/Source/Fixture/Fixture.swift +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/other-predefined-dir/dump.json +68 -0
- package/scripts/spm/__tests__/fixtures/target-paths/other-predefined-dir/expected.json +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/other-predefined-dir/src/FixtureCore/FixtureCore.swift +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/single-target-fallback/Sources/Fixture.swift +1 -0
- package/scripts/spm/__tests__/fixtures/target-paths/single-target-fallback/dump.json +51 -0
- package/scripts/spm/__tests__/fixtures/target-paths/single-target-fallback/expected.json +1 -0
- package/scripts/spm/__tests__/manifests.test.js +29 -0
- package/scripts/spm/__tests__/target-paths.test.js +33 -0
- package/template.tgz +0 -0
package/Package.swift
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// swift-tools-version: 6.2
|
|
2
|
+
import PackageDescription
|
|
3
|
+
|
|
4
|
+
let package = Package(
|
|
5
|
+
name: "expo",
|
|
6
|
+
platforms: [
|
|
7
|
+
.iOS("16.4"),
|
|
8
|
+
.tvOS("16.4"),
|
|
9
|
+
.macOS("13.4"),
|
|
10
|
+
],
|
|
11
|
+
products: [
|
|
12
|
+
.library(name: "Expo", targets: ["Expo", "ExpoObjC", "ExpoLoader"])
|
|
13
|
+
],
|
|
14
|
+
dependencies: [],
|
|
15
|
+
targets: [
|
|
16
|
+
.target(
|
|
17
|
+
name: "Expo",
|
|
18
|
+
dependencies: ["ExpoObjC"],
|
|
19
|
+
path: "ios/Expo",
|
|
20
|
+
),
|
|
21
|
+
.target(
|
|
22
|
+
name: "ExpoObjC",
|
|
23
|
+
dependencies: [],
|
|
24
|
+
path: "ios/ExpoObjC",
|
|
25
|
+
publicHeadersPath: "include",
|
|
26
|
+
// CocoaPods gets this from the build environment; under Swift Package Manager
|
|
27
|
+
// nothing sets it, and EXAppDefinesLoader would then report the old architecture.
|
|
28
|
+
cSettings: [.define("RCT_NEW_ARCH_ENABLED", to: "1")],
|
|
29
|
+
cxxSettings: [.define("RCT_NEW_ARCH_ENABLED", to: "1")],
|
|
30
|
+
),
|
|
31
|
+
// The ObjC `+load` bootstrap that registers app-delegate subscribers before any
|
|
32
|
+
// life-cycle event fires. It needs BOTH halves — `EXLegacyAppDelegateWrapper` from
|
|
33
|
+
// ExpoObjC and `AppDelegatesLoaderDelegate` from Expo's generated Swift interface —
|
|
34
|
+
// and Expo already depends on ExpoObjC, so it cannot live in either without a cycle.
|
|
35
|
+
// A third target depending on both keeps the graph acyclic. (CocoaPods compiles all
|
|
36
|
+
// of `ios/**` into one target, so this split is SwiftPM-only.)
|
|
37
|
+
.target(
|
|
38
|
+
name: "ExpoLoader",
|
|
39
|
+
dependencies: ["Expo", "ExpoObjC"],
|
|
40
|
+
path: "ios/ExpoLoader",
|
|
41
|
+
publicHeadersPath: "include",
|
|
42
|
+
),
|
|
43
|
+
.testTarget(
|
|
44
|
+
name: "ExpoTests",
|
|
45
|
+
dependencies: ["Expo"],
|
|
46
|
+
path: "ios/Tests",
|
|
47
|
+
),
|
|
48
|
+
]
|
|
49
|
+
)
|
package/android/build.gradle
CHANGED
|
@@ -10,7 +10,7 @@ buildscript {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
group = 'host.exp.exponent'
|
|
13
|
-
version = '58.0.0-preview.
|
|
13
|
+
version = '58.0.0-preview.8'
|
|
14
14
|
|
|
15
15
|
expoModule {
|
|
16
16
|
// We can't prebuild the module because it depends on the generated files.
|
|
@@ -21,7 +21,7 @@ android {
|
|
|
21
21
|
namespace "expo.core"
|
|
22
22
|
defaultConfig {
|
|
23
23
|
versionCode 1
|
|
24
|
-
versionName "58.0.0-preview.
|
|
24
|
+
versionName "58.0.0-preview.8"
|
|
25
25
|
consumerProguardFiles("proguard-rules.pro")
|
|
26
26
|
}
|
|
27
27
|
testOptions {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"@expo/dom-webview": "~58.0.1",
|
|
3
3
|
"@expo/fingerprint": "~0.21.1",
|
|
4
|
-
"@expo/metro-runtime": "~58.0.
|
|
4
|
+
"@expo/metro-runtime": "~58.0.8",
|
|
5
5
|
"@expo/vector-icons": "^15.0.2",
|
|
6
|
-
"@expo/ui": "~58.0.
|
|
6
|
+
"@expo/ui": "~58.0.8",
|
|
7
7
|
"@react-native-async-storage/async-storage": "2.2.0",
|
|
8
8
|
"@react-native-community/datetimepicker": "9.2.1",
|
|
9
9
|
"@react-native-masked-view/masked-view": "0.3.2",
|
|
@@ -13,75 +13,75 @@
|
|
|
13
13
|
"@react-native-picker/picker": "2.11.4",
|
|
14
14
|
"@react-native-segmented-control/segmented-control": "2.5.7",
|
|
15
15
|
"@stripe/stripe-react-native": "0.76.0",
|
|
16
|
-
"eslint-config-expo": "~58.0.
|
|
16
|
+
"eslint-config-expo": "~58.0.3",
|
|
17
17
|
"expo-analytics-amplitude": "~11.3.0",
|
|
18
18
|
"expo-app-auth": "~11.1.0",
|
|
19
|
-
"expo-app-intents": "~0.4.
|
|
19
|
+
"expo-app-intents": "~0.4.6",
|
|
20
20
|
"expo-app-loader-provider": "~8.0.0",
|
|
21
|
-
"expo-app-metrics": "~58.0.
|
|
21
|
+
"expo-app-metrics": "~58.0.8",
|
|
22
22
|
"expo-apple-authentication": "~58.0.1",
|
|
23
23
|
"expo-application": "~58.0.1",
|
|
24
|
-
"expo-asset": "~58.0.
|
|
24
|
+
"expo-asset": "~58.0.8",
|
|
25
25
|
"expo-audio": "~58.0.2",
|
|
26
26
|
"expo-auth-session": "~58.0.5",
|
|
27
|
-
"expo-background-fetch": "~58.0.
|
|
28
|
-
"expo-background-task": "~58.0.
|
|
27
|
+
"expo-background-fetch": "~58.0.8",
|
|
28
|
+
"expo-background-task": "~58.0.8",
|
|
29
29
|
"expo-battery": "~58.0.1",
|
|
30
30
|
"expo-blur": "~58.0.1",
|
|
31
31
|
"expo-brightness": "~58.0.0",
|
|
32
|
-
"expo-brownfield": "~58.0.
|
|
33
|
-
"expo-build-properties": "~58.0.
|
|
34
|
-
"expo-calendar": "~58.0.
|
|
35
|
-
"expo-camera": "~58.0.
|
|
32
|
+
"expo-brownfield": "~58.0.8",
|
|
33
|
+
"expo-build-properties": "~58.0.8",
|
|
34
|
+
"expo-calendar": "~58.0.4",
|
|
35
|
+
"expo-camera": "~58.0.4",
|
|
36
36
|
"expo-cellular": "~58.0.0",
|
|
37
37
|
"expo-checkbox": "~58.0.1",
|
|
38
38
|
"expo-clipboard": "~58.0.1",
|
|
39
|
-
"expo-constants": "~58.0.
|
|
39
|
+
"expo-constants": "~58.0.8",
|
|
40
40
|
"expo-contacts": "~58.0.2",
|
|
41
41
|
"expo-crypto": "~58.0.2",
|
|
42
|
-
"expo-dev-client": "~58.0.
|
|
42
|
+
"expo-dev-client": "~58.0.8",
|
|
43
43
|
"expo-device": "~58.0.2",
|
|
44
|
-
"expo-document-picker": "~58.0.
|
|
44
|
+
"expo-document-picker": "~58.0.2",
|
|
45
45
|
"expo-eas-client": "~58.0.0",
|
|
46
|
-
"expo-file-system": "~58.0.
|
|
47
|
-
"expo-font": "~58.0.
|
|
46
|
+
"expo-file-system": "~58.0.3",
|
|
47
|
+
"expo-font": "~58.0.3",
|
|
48
48
|
"expo-gl": "~58.0.1",
|
|
49
49
|
"expo-glass-effect": "~58.0.2",
|
|
50
50
|
"expo-google-app-auth": "~8.3.0",
|
|
51
|
-
"expo-haptics": "~58.0.
|
|
52
|
-
"expo-image": "~58.0.
|
|
51
|
+
"expo-haptics": "~58.0.2",
|
|
52
|
+
"expo-image": "~58.0.7",
|
|
53
53
|
"expo-image-loader": "~58.0.1",
|
|
54
|
-
"expo-image-manipulator": "~58.0.
|
|
55
|
-
"expo-image-picker": "~58.0.
|
|
54
|
+
"expo-image-manipulator": "~58.0.9",
|
|
55
|
+
"expo-image-picker": "~58.0.8",
|
|
56
56
|
"expo-intent-launcher": "~58.0.0",
|
|
57
|
-
"expo-insights": "~58.0.
|
|
57
|
+
"expo-insights": "~58.0.8",
|
|
58
58
|
"expo-keep-awake": "~58.0.1",
|
|
59
59
|
"expo-linear-gradient": "~58.0.1",
|
|
60
|
-
"expo-linking": "~58.0.
|
|
60
|
+
"expo-linking": "~58.0.8",
|
|
61
61
|
"expo-local-authentication": "~58.0.0",
|
|
62
62
|
"expo-localization": "~58.0.1",
|
|
63
|
-
"expo-location": "~58.0.
|
|
63
|
+
"expo-location": "~58.0.8",
|
|
64
64
|
"expo-mail-composer": "~58.0.0",
|
|
65
65
|
"expo-manifests": "~58.0.0",
|
|
66
66
|
"expo-maps": "~58.0.2",
|
|
67
67
|
"expo-mcp": "~0.2.1",
|
|
68
|
-
"expo-media-library": "~58.0.
|
|
68
|
+
"expo-media-library": "~58.0.3",
|
|
69
69
|
"expo-mesh-gradient": "~58.0.1",
|
|
70
70
|
"expo-module-template": "~58.0.4",
|
|
71
|
-
"expo-modules-core": "~58.0.
|
|
72
|
-
"expo-navigation-bar": "~58.0.
|
|
71
|
+
"expo-modules-core": "~58.0.8",
|
|
72
|
+
"expo-navigation-bar": "~58.0.2",
|
|
73
73
|
"expo-network": "~58.0.1",
|
|
74
|
-
"expo-notifications": "~58.0.
|
|
75
|
-
"expo-observe": "~58.0.
|
|
74
|
+
"expo-notifications": "~58.0.8",
|
|
75
|
+
"expo-observe": "~58.0.10",
|
|
76
76
|
"expo-print": "~58.0.2",
|
|
77
77
|
"expo-live-photo": "~58.0.1",
|
|
78
|
-
"expo-router": "~58.0.
|
|
78
|
+
"expo-router": "~58.0.9",
|
|
79
79
|
"expo-screen-capture": "~58.0.3",
|
|
80
80
|
"expo-screen-orientation": "~58.0.0",
|
|
81
81
|
"expo-secure-store": "~58.0.0",
|
|
82
82
|
"expo-sensors": "~58.0.0",
|
|
83
83
|
"expo-server": "~58.0.1",
|
|
84
|
-
"expo-sharing": "~58.0.
|
|
84
|
+
"expo-sharing": "~58.0.11",
|
|
85
85
|
"expo-sms": "~58.0.0",
|
|
86
86
|
"expo-speech": "~58.0.1",
|
|
87
87
|
"expo-splash-screen": "~58.0.1",
|
|
@@ -89,19 +89,19 @@
|
|
|
89
89
|
"expo-status-bar": "~58.0.1",
|
|
90
90
|
"expo-store-review": "~58.0.0",
|
|
91
91
|
"expo-symbols": "~58.0.2",
|
|
92
|
-
"expo-system-ui": "~58.0.
|
|
93
|
-
"expo-task-manager": "~58.0.
|
|
92
|
+
"expo-system-ui": "~58.0.3",
|
|
93
|
+
"expo-task-manager": "~58.0.9",
|
|
94
94
|
"expo-tracking-transparency": "~58.0.0",
|
|
95
|
-
"expo-updates": "~58.0.
|
|
95
|
+
"expo-updates": "~58.0.10",
|
|
96
96
|
"expo-video-thumbnails": "~58.0.0",
|
|
97
|
-
"expo-video": "~58.0.
|
|
97
|
+
"expo-video": "~58.0.4",
|
|
98
98
|
"expo-web-browser": "~58.0.2",
|
|
99
|
-
"expo-widgets": "~58.0.
|
|
100
|
-
"jest-expo": "~58.0.
|
|
99
|
+
"expo-widgets": "~58.0.8",
|
|
100
|
+
"jest-expo": "~58.0.4",
|
|
101
101
|
"lottie-react-native": "~7.5.0",
|
|
102
102
|
"react": "19.3.0",
|
|
103
103
|
"react-dom": "19.3.0",
|
|
104
|
-
"react-native": "0.88.0-rc.
|
|
104
|
+
"react-native": "0.88.0-rc.2",
|
|
105
105
|
"react-native-web": "~0.21.0",
|
|
106
106
|
"react-native-gesture-handler": "~3.2.1",
|
|
107
107
|
"react-native-keyboard-controller": "1.22.4",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo",
|
|
3
|
-
"version": "58.0.0-preview.
|
|
3
|
+
"version": "58.0.0-preview.8",
|
|
4
4
|
"description": "The Expo SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"expo"
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"src",
|
|
34
34
|
"AppEntry.js",
|
|
35
35
|
"Expo.podspec",
|
|
36
|
+
"Package.swift",
|
|
36
37
|
"bundledNativeModules.json",
|
|
37
38
|
"expo-module.config.json",
|
|
38
39
|
"metro-config.js",
|
|
@@ -200,40 +201,40 @@
|
|
|
200
201
|
},
|
|
201
202
|
"dependencies": {
|
|
202
203
|
"@babel/runtime": "^7.20.0",
|
|
203
|
-
"@expo/cli": "^58.0.
|
|
204
|
+
"@expo/cli": "^58.0.8",
|
|
204
205
|
"@expo/config": "~58.0.0",
|
|
205
|
-
"@expo/config-plugins": "~58.0.
|
|
206
|
+
"@expo/config-plugins": "~58.0.3",
|
|
206
207
|
"@expo/devtools": "~58.0.1",
|
|
207
208
|
"@expo/dom-webview": "~58.0.1",
|
|
208
209
|
"@expo/fingerprint": "^0.21.1",
|
|
209
210
|
"@expo/local-build-cache-provider": "^58.0.0",
|
|
210
|
-
"@expo/log-box": "^58.0.
|
|
211
|
+
"@expo/log-box": "^58.0.6",
|
|
211
212
|
"@expo/log-box-utils": "^58.0.0",
|
|
212
213
|
"@expo/metro": "~58.0.0-rc.0",
|
|
213
|
-
"@expo/metro-config": "~58.0.
|
|
214
|
+
"@expo/metro-config": "~58.0.5",
|
|
214
215
|
"@ungap/structured-clone": "^1.3.0",
|
|
215
|
-
"babel-preset-expo": "~58.0.
|
|
216
|
-
"expo-asset": "~58.0.
|
|
217
|
-
"expo-constants": "~58.0.
|
|
218
|
-
"expo-file-system": "~58.0.
|
|
219
|
-
"expo-font": "~58.0.
|
|
216
|
+
"babel-preset-expo": "~58.0.5",
|
|
217
|
+
"expo-asset": "~58.0.8",
|
|
218
|
+
"expo-constants": "~58.0.8",
|
|
219
|
+
"expo-file-system": "~58.0.3",
|
|
220
|
+
"expo-font": "~58.0.3",
|
|
220
221
|
"expo-keep-awake": "~58.0.1",
|
|
221
|
-
"expo-modules-autolinking": "~58.0.
|
|
222
|
-
"expo-modules-core": "~58.0.
|
|
222
|
+
"expo-modules-autolinking": "~58.0.5",
|
|
223
|
+
"expo-modules-core": "~58.0.8",
|
|
223
224
|
"pretty-format": "^29.7.0",
|
|
224
225
|
"react-refresh": "^0.14.2",
|
|
225
226
|
"whatwg-url-minimum": "^0.2.0"
|
|
226
227
|
},
|
|
227
228
|
"devDependencies": {
|
|
228
229
|
"@expo/dom-webview": "58.0.1",
|
|
229
|
-
"@expo/metro-runtime": "58.0.
|
|
230
|
+
"@expo/metro-runtime": "58.0.8",
|
|
230
231
|
"@types/node": "^22.14.0",
|
|
231
232
|
"@types/react": "~19.3.0",
|
|
232
|
-
"expo-updates": "58.0.
|
|
233
|
+
"expo-updates": "58.0.10",
|
|
233
234
|
"npm-run-all2": "^8.0.4",
|
|
234
235
|
"react": "19.3.0",
|
|
235
236
|
"react-dom": "19.3.0",
|
|
236
|
-
"react-native": "0.88.0-rc.
|
|
237
|
+
"react-native": "0.88.0-rc.2",
|
|
237
238
|
"rimraf": "^6.1.2",
|
|
238
239
|
"web-streams-polyfill": "^3.3.2"
|
|
239
240
|
},
|
|
@@ -269,7 +270,7 @@
|
|
|
269
270
|
"engines": {
|
|
270
271
|
"node": "^22.13.0 || ^24.3.0 || ^26.0.0 || >=27.0.0"
|
|
271
272
|
},
|
|
272
|
-
"gitHead": "
|
|
273
|
+
"gitHead": "74f6d2b90bc50bd8df7b160d6e6b2204b37a8ce7",
|
|
273
274
|
"scripts": {
|
|
274
275
|
"build": "../expo-module-scripts/bin/expo-build src",
|
|
275
276
|
"clean": "rimraf build",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Target path fixtures
|
|
2
|
+
|
|
3
|
+
Two parsers read the output of `swift package dump-package`: `resolveTargetPaths` in
|
|
4
|
+
`scripts/spm/manifests.js`, and `resolveCheckedInTargetSourceRoot` in
|
|
5
|
+
`tools/src/prebuilds/CheckedInManifest.ts`. Both test suites run every case in this directory,
|
|
6
|
+
so the two cannot drift apart on where a target's sources live.
|
|
7
|
+
|
|
8
|
+
Each case directory holds:
|
|
9
|
+
|
|
10
|
+
- `dump.json`: the real output of `swift package dump-package` for the case.
|
|
11
|
+
- The source tree that the dump refers to. Every directory holds at least one file, because git
|
|
12
|
+
does not keep empty directories.
|
|
13
|
+
- `expected.json`: `targets` maps each resolved target to its source directory, relative to the
|
|
14
|
+
case directory. `unresolved` lists the targets whose sources do not exist.
|
|
15
|
+
|
|
16
|
+
The `Package.swift` of each case is not checked in, so that no tool mistakes a case for a real
|
|
17
|
+
package.
|
|
18
|
+
|
|
19
|
+
## Regenerating a dump
|
|
20
|
+
|
|
21
|
+
The dumps were generated with Swift 6.4 (swift-tools-version 6.2).
|
|
22
|
+
|
|
23
|
+
1. Outside this repository, create a directory with the case's `Package.swift`.
|
|
24
|
+
2. Run `swift package dump-package > raw.json` in that directory.
|
|
25
|
+
3. Replace the absolute path in `packageKind` with a fixed placeholder, and change nothing else:
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
jq '.packageKind = {"root": ["/fixture"]}' raw.json > dump.json
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
4. Copy `dump.json` into the case directory.
|
package/scripts/spm/__tests__/fixtures/target-paths/default-sources/Sources/Fixture/Fixture.swift
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
public let fixture = 1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#import "FixtureObjC.h"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#pragma once
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cLanguageStandard": null,
|
|
3
|
+
"cxxLanguageStandard": null,
|
|
4
|
+
"defaultLocalization": null,
|
|
5
|
+
"dependencies": [],
|
|
6
|
+
"name": "fixture",
|
|
7
|
+
"packageKind": {
|
|
8
|
+
"root": [
|
|
9
|
+
"/fixture"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
"pkgConfig": null,
|
|
13
|
+
"platforms": [
|
|
14
|
+
{
|
|
15
|
+
"options": [],
|
|
16
|
+
"platformName": "ios",
|
|
17
|
+
"version": "16.4"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"products": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Fixture",
|
|
23
|
+
"settings": [],
|
|
24
|
+
"targets": [
|
|
25
|
+
"Fixture",
|
|
26
|
+
"FixtureObjC"
|
|
27
|
+
],
|
|
28
|
+
"type": {
|
|
29
|
+
"library": [
|
|
30
|
+
"automatic"
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"providers": null,
|
|
36
|
+
"swiftLanguageVersions": null,
|
|
37
|
+
"targets": [
|
|
38
|
+
{
|
|
39
|
+
"dependencies": [
|
|
40
|
+
{
|
|
41
|
+
"byName": [
|
|
42
|
+
"FixtureObjC",
|
|
43
|
+
null
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"exclude": [],
|
|
48
|
+
"name": "Fixture",
|
|
49
|
+
"packageAccess": true,
|
|
50
|
+
"resources": [],
|
|
51
|
+
"settings": [],
|
|
52
|
+
"type": "regular"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"dependencies": [],
|
|
56
|
+
"exclude": [],
|
|
57
|
+
"name": "FixtureObjC",
|
|
58
|
+
"packageAccess": true,
|
|
59
|
+
"resources": [],
|
|
60
|
+
"settings": [],
|
|
61
|
+
"type": "regular"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"toolsVersion": {
|
|
65
|
+
"_version": "6.2.0"
|
|
66
|
+
},
|
|
67
|
+
"traits": []
|
|
68
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "targets": { "Fixture": "Sources/Fixture", "FixtureObjC": "Sources/FixtureObjC" }, "unresolved": [] }
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cLanguageStandard": null,
|
|
3
|
+
"cxxLanguageStandard": null,
|
|
4
|
+
"defaultLocalization": null,
|
|
5
|
+
"dependencies": [],
|
|
6
|
+
"name": "fixture",
|
|
7
|
+
"packageKind": {
|
|
8
|
+
"root": [
|
|
9
|
+
"/fixture"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
"pkgConfig": null,
|
|
13
|
+
"platforms": [
|
|
14
|
+
{
|
|
15
|
+
"options": [],
|
|
16
|
+
"platformName": "ios",
|
|
17
|
+
"version": "16.4"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"products": [
|
|
21
|
+
{
|
|
22
|
+
"name": "ExpoHaptics",
|
|
23
|
+
"settings": [],
|
|
24
|
+
"targets": [
|
|
25
|
+
"ExpoHaptics"
|
|
26
|
+
],
|
|
27
|
+
"type": {
|
|
28
|
+
"library": [
|
|
29
|
+
"automatic"
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"providers": null,
|
|
35
|
+
"swiftLanguageVersions": null,
|
|
36
|
+
"targets": [
|
|
37
|
+
{
|
|
38
|
+
"dependencies": [],
|
|
39
|
+
"exclude": [
|
|
40
|
+
"ExpoHaptics.podspec"
|
|
41
|
+
],
|
|
42
|
+
"name": "ExpoHaptics",
|
|
43
|
+
"packageAccess": true,
|
|
44
|
+
"path": "ios",
|
|
45
|
+
"resources": [],
|
|
46
|
+
"settings": [],
|
|
47
|
+
"type": "regular"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"toolsVersion": {
|
|
51
|
+
"_version": "6.2.0"
|
|
52
|
+
},
|
|
53
|
+
"traits": []
|
|
54
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "targets": { "ExpoHaptics": "ios" }, "unresolved": [] }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Pod::Spec.new { |s| s.name = 'ExpoHaptics' }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
public let haptics = 1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
public let fixture = 1
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cLanguageStandard": null,
|
|
3
|
+
"cxxLanguageStandard": null,
|
|
4
|
+
"defaultLocalization": null,
|
|
5
|
+
"dependencies": [],
|
|
6
|
+
"name": "fixture",
|
|
7
|
+
"packageKind": {
|
|
8
|
+
"root": [
|
|
9
|
+
"/fixture"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
"pkgConfig": null,
|
|
13
|
+
"platforms": [
|
|
14
|
+
{
|
|
15
|
+
"options": [],
|
|
16
|
+
"platformName": "ios",
|
|
17
|
+
"version": "16.4"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"products": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Fixture",
|
|
23
|
+
"settings": [],
|
|
24
|
+
"targets": [
|
|
25
|
+
"Fixture",
|
|
26
|
+
"FixtureMissing"
|
|
27
|
+
],
|
|
28
|
+
"type": {
|
|
29
|
+
"library": [
|
|
30
|
+
"automatic"
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"providers": null,
|
|
36
|
+
"swiftLanguageVersions": null,
|
|
37
|
+
"targets": [
|
|
38
|
+
{
|
|
39
|
+
"dependencies": [],
|
|
40
|
+
"exclude": [],
|
|
41
|
+
"name": "Fixture",
|
|
42
|
+
"packageAccess": true,
|
|
43
|
+
"resources": [],
|
|
44
|
+
"settings": [],
|
|
45
|
+
"type": "regular"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"dependencies": [],
|
|
49
|
+
"exclude": [],
|
|
50
|
+
"name": "FixtureMissing",
|
|
51
|
+
"packageAccess": true,
|
|
52
|
+
"resources": [],
|
|
53
|
+
"settings": [],
|
|
54
|
+
"type": "regular"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"toolsVersion": {
|
|
58
|
+
"_version": "6.2.0"
|
|
59
|
+
},
|
|
60
|
+
"traits": []
|
|
61
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "targets": { "Fixture": "Sources/Fixture" }, "unresolved": ["FixtureMissing"] }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
public let fixture = 1
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cLanguageStandard": null,
|
|
3
|
+
"cxxLanguageStandard": null,
|
|
4
|
+
"defaultLocalization": null,
|
|
5
|
+
"dependencies": [],
|
|
6
|
+
"name": "fixture",
|
|
7
|
+
"packageKind": {
|
|
8
|
+
"root": [
|
|
9
|
+
"/fixture"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
"pkgConfig": null,
|
|
13
|
+
"platforms": [
|
|
14
|
+
{
|
|
15
|
+
"options": [],
|
|
16
|
+
"platformName": "ios",
|
|
17
|
+
"version": "16.4"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"products": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Fixture",
|
|
23
|
+
"settings": [],
|
|
24
|
+
"targets": [
|
|
25
|
+
"Fixture",
|
|
26
|
+
"FixtureCore"
|
|
27
|
+
],
|
|
28
|
+
"type": {
|
|
29
|
+
"library": [
|
|
30
|
+
"automatic"
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"providers": null,
|
|
36
|
+
"swiftLanguageVersions": null,
|
|
37
|
+
"targets": [
|
|
38
|
+
{
|
|
39
|
+
"dependencies": [
|
|
40
|
+
{
|
|
41
|
+
"byName": [
|
|
42
|
+
"FixtureCore",
|
|
43
|
+
null
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"exclude": [],
|
|
48
|
+
"name": "Fixture",
|
|
49
|
+
"packageAccess": true,
|
|
50
|
+
"resources": [],
|
|
51
|
+
"settings": [],
|
|
52
|
+
"type": "regular"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"dependencies": [],
|
|
56
|
+
"exclude": [],
|
|
57
|
+
"name": "FixtureCore",
|
|
58
|
+
"packageAccess": true,
|
|
59
|
+
"resources": [],
|
|
60
|
+
"settings": [],
|
|
61
|
+
"type": "regular"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"toolsVersion": {
|
|
65
|
+
"_version": "6.2.0"
|
|
66
|
+
},
|
|
67
|
+
"traits": []
|
|
68
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "targets": { "Fixture": "Source/Fixture", "FixtureCore": "src/FixtureCore" }, "unresolved": [] }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
public let core = 1
|
package/scripts/spm/__tests__/fixtures/target-paths/single-target-fallback/Sources/Fixture.swift
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
public let fixture = 1
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cLanguageStandard": null,
|
|
3
|
+
"cxxLanguageStandard": null,
|
|
4
|
+
"defaultLocalization": null,
|
|
5
|
+
"dependencies": [],
|
|
6
|
+
"name": "fixture",
|
|
7
|
+
"packageKind": {
|
|
8
|
+
"root": [
|
|
9
|
+
"/fixture"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
"pkgConfig": null,
|
|
13
|
+
"platforms": [
|
|
14
|
+
{
|
|
15
|
+
"options": [],
|
|
16
|
+
"platformName": "ios",
|
|
17
|
+
"version": "16.4"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"products": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Fixture",
|
|
23
|
+
"settings": [],
|
|
24
|
+
"targets": [
|
|
25
|
+
"Fixture"
|
|
26
|
+
],
|
|
27
|
+
"type": {
|
|
28
|
+
"library": [
|
|
29
|
+
"automatic"
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"providers": null,
|
|
35
|
+
"swiftLanguageVersions": null,
|
|
36
|
+
"targets": [
|
|
37
|
+
{
|
|
38
|
+
"dependencies": [],
|
|
39
|
+
"exclude": [],
|
|
40
|
+
"name": "Fixture",
|
|
41
|
+
"packageAccess": true,
|
|
42
|
+
"resources": [],
|
|
43
|
+
"settings": [],
|
|
44
|
+
"type": "regular"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"toolsVersion": {
|
|
48
|
+
"_version": "6.2.0"
|
|
49
|
+
},
|
|
50
|
+
"traits": []
|
|
51
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "targets": { "Fixture": "Sources" }, "unresolved": [] }
|
|
@@ -547,6 +547,35 @@ describe('mirrored target file rules', () => {
|
|
|
547
547
|
);
|
|
548
548
|
});
|
|
549
549
|
|
|
550
|
+
it('keeps a podspec exclude relative to the mirrored target path (expo-haptics)', () => {
|
|
551
|
+
// Verbatim `swift package dump-package` of packages/expo-haptics/Package.swift (Swift 6.4),
|
|
552
|
+
// trimmed to the keys the parser reads.
|
|
553
|
+
const haptics = JSON.stringify({
|
|
554
|
+
name: 'expo-haptics',
|
|
555
|
+
platforms: [{ options: [], platformName: 'ios', version: '16.4' }],
|
|
556
|
+
products: [
|
|
557
|
+
{
|
|
558
|
+
name: 'ExpoHaptics',
|
|
559
|
+
settings: [],
|
|
560
|
+
targets: ['ExpoHaptics'],
|
|
561
|
+
type: { library: ['automatic'] },
|
|
562
|
+
},
|
|
563
|
+
],
|
|
564
|
+
targets: [
|
|
565
|
+
{
|
|
566
|
+
name: 'ExpoHaptics',
|
|
567
|
+
type: 'regular',
|
|
568
|
+
path: 'ios',
|
|
569
|
+
dependencies: [],
|
|
570
|
+
exclude: ['ExpoHaptics.podspec'],
|
|
571
|
+
},
|
|
572
|
+
],
|
|
573
|
+
});
|
|
574
|
+
expect(render(parseDumpedManifest(haptics))).toContain(
|
|
575
|
+
[' path: "root/ios",', ' exclude: ["ExpoHaptics.podspec"],'].join('\n')
|
|
576
|
+
);
|
|
577
|
+
});
|
|
578
|
+
|
|
550
579
|
it('omits every key the module does not declare', () => {
|
|
551
580
|
const out = render(
|
|
552
581
|
parseDumpedManifest(
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
const { parseDumpedManifest, resolveTargetPaths } = require('../manifests');
|
|
7
|
+
|
|
8
|
+
// tools/src/prebuilds/CheckedInManifest.targetPaths.test.ts runs the same cases.
|
|
9
|
+
const fixturesDir = path.join(__dirname, 'fixtures', 'target-paths');
|
|
10
|
+
const cases = fs
|
|
11
|
+
.readdirSync(fixturesDir, { withFileTypes: true })
|
|
12
|
+
.filter((entry) => entry.isDirectory())
|
|
13
|
+
.map((entry) => entry.name);
|
|
14
|
+
|
|
15
|
+
it('finds target path fixtures', () => {
|
|
16
|
+
expect(cases.length).toBeGreaterThan(0);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
describe.each(cases)('resolveTargetPaths: %s', (name) => {
|
|
20
|
+
const caseDir = path.join(fixturesDir, name);
|
|
21
|
+
const expected = JSON.parse(fs.readFileSync(path.join(caseDir, 'expected.json'), 'utf8'));
|
|
22
|
+
|
|
23
|
+
it('matches expected.json', () => {
|
|
24
|
+
const { targets } = parseDumpedManifest(
|
|
25
|
+
fs.readFileSync(path.join(caseDir, 'dump.json'), 'utf8')
|
|
26
|
+
);
|
|
27
|
+
const resolved = resolveTargetPaths(targets, caseDir);
|
|
28
|
+
expect({
|
|
29
|
+
targets: Object.fromEntries(resolved.targets.map((target) => [target.name, target.path])),
|
|
30
|
+
unresolved: resolved.unresolvedTargets,
|
|
31
|
+
}).toEqual(expected);
|
|
32
|
+
});
|
|
33
|
+
});
|
package/template.tgz
CHANGED
|
Binary file
|