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.
Files changed (27) hide show
  1. package/Package.swift +49 -0
  2. package/android/build.gradle +2 -2
  3. package/bundledNativeModules.json +38 -38
  4. package/package.json +17 -16
  5. package/scripts/spm/__tests__/fixtures/target-paths/README.md +31 -0
  6. package/scripts/spm/__tests__/fixtures/target-paths/default-sources/Sources/Fixture/Fixture.swift +1 -0
  7. package/scripts/spm/__tests__/fixtures/target-paths/default-sources/Sources/FixtureObjC/FixtureObjC.m +1 -0
  8. package/scripts/spm/__tests__/fixtures/target-paths/default-sources/Sources/FixtureObjC/include/FixtureObjC.h +1 -0
  9. package/scripts/spm/__tests__/fixtures/target-paths/default-sources/dump.json +68 -0
  10. package/scripts/spm/__tests__/fixtures/target-paths/default-sources/expected.json +1 -0
  11. package/scripts/spm/__tests__/fixtures/target-paths/explicit-path/dump.json +54 -0
  12. package/scripts/spm/__tests__/fixtures/target-paths/explicit-path/expected.json +1 -0
  13. package/scripts/spm/__tests__/fixtures/target-paths/explicit-path/ios/ExpoHaptics.podspec +1 -0
  14. package/scripts/spm/__tests__/fixtures/target-paths/explicit-path/ios/HapticsModule.swift +1 -0
  15. package/scripts/spm/__tests__/fixtures/target-paths/missing-dir/Sources/Fixture/Fixture.swift +1 -0
  16. package/scripts/spm/__tests__/fixtures/target-paths/missing-dir/dump.json +61 -0
  17. package/scripts/spm/__tests__/fixtures/target-paths/missing-dir/expected.json +1 -0
  18. package/scripts/spm/__tests__/fixtures/target-paths/other-predefined-dir/Source/Fixture/Fixture.swift +1 -0
  19. package/scripts/spm/__tests__/fixtures/target-paths/other-predefined-dir/dump.json +68 -0
  20. package/scripts/spm/__tests__/fixtures/target-paths/other-predefined-dir/expected.json +1 -0
  21. package/scripts/spm/__tests__/fixtures/target-paths/other-predefined-dir/src/FixtureCore/FixtureCore.swift +1 -0
  22. package/scripts/spm/__tests__/fixtures/target-paths/single-target-fallback/Sources/Fixture.swift +1 -0
  23. package/scripts/spm/__tests__/fixtures/target-paths/single-target-fallback/dump.json +51 -0
  24. package/scripts/spm/__tests__/fixtures/target-paths/single-target-fallback/expected.json +1 -0
  25. package/scripts/spm/__tests__/manifests.test.js +29 -0
  26. package/scripts/spm/__tests__/target-paths.test.js +33 -0
  27. 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
+ )
@@ -10,7 +10,7 @@ buildscript {
10
10
  }
11
11
 
12
12
  group = 'host.exp.exponent'
13
- version = '58.0.0-preview.7'
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.7"
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.7",
4
+ "@expo/metro-runtime": "~58.0.8",
5
5
  "@expo/vector-icons": "^15.0.2",
6
- "@expo/ui": "~58.0.7",
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.2",
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.5",
19
+ "expo-app-intents": "~0.4.6",
20
20
  "expo-app-loader-provider": "~8.0.0",
21
- "expo-app-metrics": "~58.0.7",
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.7",
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.7",
28
- "expo-background-task": "~58.0.7",
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.7",
33
- "expo-build-properties": "~58.0.7",
34
- "expo-calendar": "~58.0.3",
35
- "expo-camera": "~58.0.3",
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.7",
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.7",
42
+ "expo-dev-client": "~58.0.8",
43
43
  "expo-device": "~58.0.2",
44
- "expo-document-picker": "~58.0.1",
44
+ "expo-document-picker": "~58.0.2",
45
45
  "expo-eas-client": "~58.0.0",
46
- "expo-file-system": "~58.0.2",
47
- "expo-font": "~58.0.2",
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.1",
52
- "expo-image": "~58.0.6",
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.8",
55
- "expo-image-picker": "~58.0.7",
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.7",
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.7",
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.7",
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.2",
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.7",
72
- "expo-navigation-bar": "~58.0.1",
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.7",
75
- "expo-observe": "~58.0.9",
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.8",
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.10",
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.2",
93
- "expo-task-manager": "~58.0.8",
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.9",
95
+ "expo-updates": "~58.0.10",
96
96
  "expo-video-thumbnails": "~58.0.0",
97
- "expo-video": "~58.0.3",
97
+ "expo-video": "~58.0.4",
98
98
  "expo-web-browser": "~58.0.2",
99
- "expo-widgets": "~58.0.7",
100
- "jest-expo": "~58.0.3",
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.1",
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.7",
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.7",
204
+ "@expo/cli": "^58.0.8",
204
205
  "@expo/config": "~58.0.0",
205
- "@expo/config-plugins": "~58.0.2",
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.5",
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.4",
214
+ "@expo/metro-config": "~58.0.5",
214
215
  "@ungap/structured-clone": "^1.3.0",
215
- "babel-preset-expo": "~58.0.4",
216
- "expo-asset": "~58.0.7",
217
- "expo-constants": "~58.0.7",
218
- "expo-file-system": "~58.0.2",
219
- "expo-font": "~58.0.2",
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.4",
222
- "expo-modules-core": "~58.0.7",
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.7",
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.9",
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.1",
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": "ad41d067bd3df6dd12f1788acc6b54a68e7a650d",
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.
@@ -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,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,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,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