peachsim 0.1.2188 → 0.1.2190
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/cli/commands/daemon.ts +13 -1
- package/cli/commands/package.ts +1 -1
- package/cli/commands/setup.ts +4 -2
- package/cli/commands/shell-url.ts +1 -1
- package/cli/main.ts +2 -0
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/bundle-channel.cjs +53 -30
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/config.mjs +1 -1
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/expo-swift-bundle.cjs +33 -27
- package/dist-lib/expo-swift-metadata.cjs +1 -1
- package/dist-lib/expo-swift-metadata.mjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +53 -30
- package/dist-lib/host/fetch-proxy-handler.cjs +4 -4
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +5 -5
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/kotlin-host.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +5 -5
- package/dist-lib/native-app-identity-project.cjs +4 -4
- package/dist-lib/native-app-identity-project.mjs +4 -4
- package/dist-lib/native-app-identity.cjs +1 -1
- package/dist-lib/native-app-identity.mjs +1 -1
- package/dist-lib/native-firebase-metadata.cjs +1 -1
- package/dist-lib/native-firebase-metadata.mjs +1 -1
- package/dist-lib/pdfium-raster.cjs +1 -1
- package/dist-lib/pdfium-raster.mjs +1 -1
- package/dist-lib/plist.cjs +1 -1
- package/dist-lib/plist.mjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/public-origins-lib-esm.json +24 -24
- package/dist-lib/public-origins-lib.json +53 -53
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/reap-browser.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +73 -34
- package/dist-lib/swift-compile.cjs +28 -22
- package/dist-lib/swift-compile.mjs +28 -22
- package/dist-lib/swift-package.cjs +1 -1
- package/dist-lib/swift-package.mjs +1 -1
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift-toolchain.cjs +2 -2
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +31 -25
- package/dist-lib/vite.cjs +4 -4
- package/dist-lib/worklet-executable.cjs +1 -1
- package/dist-lib/worklet-executable.mjs +1 -1
- package/dist-types/packages/peach-engine/src/engine/computed-padding.d.ts +40 -0
- package/dist-types/packages/peach-engine/src/engine/layout-engine.d.ts +3 -0
- package/dist-types/packages/peach-engine/src/engine/yoga-layout.d.ts +60 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/settings/device-spec-bus.d.ts +10 -0
- package/package.json +1 -1
- package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h +2 -12
- package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UIKitTypes.h +12 -0
- package/src/podspec-sources.ts +21 -2
- package/src/swift-compile.ts +28 -18
- package/src/swift-guest-source-plan.ts +8 -4
- package/src/swift-toolchain.ts +3 -2
- package/src/xcode-project.ts +3 -1
package/dist-lib/vite-swift.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.2190 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -39,7 +39,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
39
39
|
var define_SWIFT_COVERAGE_SOURCE_DIGESTS_default;
|
|
40
40
|
var init_define_SWIFT_COVERAGE_SOURCE_DIGESTS = __esm({
|
|
41
41
|
"<define:__SWIFT_COVERAGE_SOURCE_DIGESTS__>"() {
|
|
42
|
-
define_SWIFT_COVERAGE_SOURCE_DIGESTS_default = { "swift-coverage/indexdump.ts": "0d82d8eeb96bf377f409ea7e33274c341a710c0e071f6b6e17571a23d8d92412", "swift-coverage/indexing.ts": "633ccf19eec1f382a8847d0ee1dca42a2792a3c60aafd43622ed5152b09b8272", "swift-coverage/types.ts": "bd8fae54ea6c53e110cd8a5d7b57c1d532dd0166e09fdaea63c4f270c3780dd1", "swift-coverage/source.ts": "c151758a9f67631bc61473c375df0dc017da6902a34533b2cf4fc4fd7d19b6ee", "swift-coverage/package.ts": "1f0068be7461fa7c5a7a891faf318f305cbed2e94c19667ba76627f7e5be260b", "swift-coverage/xcode.ts": "65a500b806ce1c3a496de27f2e0ad77287c0f6795c618342c08af647f92af1fa", "swift-coverage/xcode-assets.ts": "99e03b74c961d2449afd58c2cbc415ba91d1d469a4f89e461c137fd6c305b27c", "swift-coverage/xcode-asset-symbols.ts": "1b2a67733bc9d139b351466270205452a6172140bc25080d72619e2952c44671", "swift-coverage/xcode-bridging.ts": "33184be8c5daf6646aa5a1276a4e15531f1be27b7c26f56550e0fbb1fc678a11", "swift-coverage/xcode-packages.ts": "8e6020d17d24474150a5a50d042aca6261819ef75c79680a287a66f395909915", "swift-coverage/xcode-strings.ts": "f2dd4c7cd8ef77035184b0132909c2fa09fd20ed06b7757c2f1f960bfdde031c", "swift-coverage/reader.ts": "da559b67ecd1161dea70c980b5f98f2c55af3550f0714479100fa5e9e813625c", "swift-coverage/provenance.ts": "eb3b41ae8b58b48f6758f084800f188dfb1edb227e483abdd6b80cde66e849b9", "swift-package-manifest.ts": "4b7d4a715cdaf57468ead23f2ff9dce76d02c6a888d73d144d4baa2ae571ba3c", "swift-package.ts": "338cfef9a34a930206ac2e1a8a90b85c8d61f776d9a41e6445dc18e0c5385cdb", "swift-source-file.ts": "93fd659ed63a27b67f54a7c229a7ceb636dc9c59e68414920ba36cff1eda1f94", "swift-toolchain.ts": "
|
|
42
|
+
define_SWIFT_COVERAGE_SOURCE_DIGESTS_default = { "swift-coverage/indexdump.ts": "0d82d8eeb96bf377f409ea7e33274c341a710c0e071f6b6e17571a23d8d92412", "swift-coverage/indexing.ts": "633ccf19eec1f382a8847d0ee1dca42a2792a3c60aafd43622ed5152b09b8272", "swift-coverage/types.ts": "bd8fae54ea6c53e110cd8a5d7b57c1d532dd0166e09fdaea63c4f270c3780dd1", "swift-coverage/source.ts": "c151758a9f67631bc61473c375df0dc017da6902a34533b2cf4fc4fd7d19b6ee", "swift-coverage/package.ts": "1f0068be7461fa7c5a7a891faf318f305cbed2e94c19667ba76627f7e5be260b", "swift-coverage/xcode.ts": "65a500b806ce1c3a496de27f2e0ad77287c0f6795c618342c08af647f92af1fa", "swift-coverage/xcode-assets.ts": "99e03b74c961d2449afd58c2cbc415ba91d1d469a4f89e461c137fd6c305b27c", "swift-coverage/xcode-asset-symbols.ts": "1b2a67733bc9d139b351466270205452a6172140bc25080d72619e2952c44671", "swift-coverage/xcode-bridging.ts": "33184be8c5daf6646aa5a1276a4e15531f1be27b7c26f56550e0fbb1fc678a11", "swift-coverage/xcode-packages.ts": "8e6020d17d24474150a5a50d042aca6261819ef75c79680a287a66f395909915", "swift-coverage/xcode-strings.ts": "f2dd4c7cd8ef77035184b0132909c2fa09fd20ed06b7757c2f1f960bfdde031c", "swift-coverage/reader.ts": "da559b67ecd1161dea70c980b5f98f2c55af3550f0714479100fa5e9e813625c", "swift-coverage/provenance.ts": "eb3b41ae8b58b48f6758f084800f188dfb1edb227e483abdd6b80cde66e849b9", "swift-package-manifest.ts": "4b7d4a715cdaf57468ead23f2ff9dce76d02c6a888d73d144d4baa2ae571ba3c", "swift-package.ts": "338cfef9a34a930206ac2e1a8a90b85c8d61f776d9a41e6445dc18e0c5385cdb", "swift-source-file.ts": "93fd659ed63a27b67f54a7c229a7ceb636dc9c59e68414920ba36cff1eda1f94", "swift-toolchain.ts": "e7cf8a143d47ff86b4ee2db4a8266e96b100926104990dba795321bc5923df3e", "home-paths.ts": "f5583b61f8bdd81823b3b29ff519a48daf9993719f194ddb7de22218472e90f9", "xcode-header-search.ts": "f8c3d557b4eca5ddad32907545353eb7ad53b2ebd0969d9ed8f7275e109a13b1", "xcode-project.ts": "8ffd57670829ddd2b10e812defbd9016859744be88713c5ba65847aa6e26dff4", "xcode-target-members.ts": "ad7589132bffab265e8a10b64e24484fe88b4a2b1cc0ee19a97f151a002eca77", "xcode-json-project.ts": "41990ebbe4b488eef34e74c4608b4b48e5a5b299ba98ca7fbcfdfa0e77be63b6", "openstep-plist.ts": "74e6ce1dac80c9c318e0e9f5e3e8cd19a898a8820c36fc160609695bcb59dcd3" };
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
|
|
@@ -4757,7 +4757,7 @@ for arg in "$@"; do
|
|
|
4757
4757
|
case $arg in
|
|
4758
4758
|
@*)
|
|
4759
4759
|
rsp=\${arg#@}
|
|
4760
|
-
awk 'BEGIN { RS = " "; ORS = " " } /^"-l/ { if (seen[$0]++) next }${omitLibraries.map((name3) => ` $0 == "\\"-l${name3}\\"" { next }`).join("")} { print }' "$rsp" > "$rsp.dedup"
|
|
4760
|
+
awk 'BEGIN { RS = " "; ORS = " " } /^"-l/ { if (seen[$0]++) next }${omitLibraries.map((name3) => ` $0 == "\\"-l${name3}\\"" { next }`).join("")} $0 == "\\"-ObjC\\"" { next } { print }' "$rsp" > "$rsp.dedup"
|
|
4761
4761
|
mv "$rsp.dedup" "$rsp"
|
|
4762
4762
|
if [ "\${PEACH_DEFER_WASM_LINK:-}" = "1" ] && grep -q '"--start-lib"' "$rsp"; then
|
|
4763
4763
|
cp "$rsp" ${JSON.stringify(import_node_path4.default.join(directory, ".peach-link.rsp"))}
|
|
@@ -12922,9 +12922,12 @@ function guestSourceObjects(graph, buildDirectory, objects, generatedOwners) {
|
|
|
12922
12922
|
(target) => target.sourceTarget === null ? [] : [target.sourceTarget]
|
|
12923
12923
|
)
|
|
12924
12924
|
);
|
|
12925
|
-
const owners = new Map(
|
|
12926
|
-
[...
|
|
12927
|
-
|
|
12925
|
+
const owners = new Map([
|
|
12926
|
+
...[...names].map((name3) => [swiftTargetModuleName(name3), name3]),
|
|
12927
|
+
...[...generatedOwners].map(
|
|
12928
|
+
([name3, owner]) => [swiftTargetModuleName(name3), owner]
|
|
12929
|
+
)
|
|
12930
|
+
]);
|
|
12928
12931
|
const libraries = new Map(
|
|
12929
12932
|
graph.targets.flatMap(
|
|
12930
12933
|
(target) => target.productType === "swiftpm.target.binary" && target.sourceTarget !== null ? [[target.productName, target.sourceTarget]] : []
|
|
@@ -17269,7 +17272,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
|
|
|
17269
17272
|
var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
|
|
17270
17273
|
var MULTI_MANIFEST_VERSION = 68;
|
|
17271
17274
|
var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
|
|
17272
|
-
var compilerSourceDigest = true ? "
|
|
17275
|
+
var compilerSourceDigest = true ? "382ff03994dc241ff825d788eb5f8eb92462420da0b20538d9fcc1ff79e096c6" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
|
|
17273
17276
|
function swiftArtifactHash(input, release, moduleRoot) {
|
|
17274
17277
|
const hash = (0, import_node_crypto13.createHash)("sha256");
|
|
17275
17278
|
hash.update(`swift-compile
|
|
@@ -19649,22 +19652,19 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
|
|
|
19649
19652
|
allowExisting: true
|
|
19650
19653
|
});
|
|
19651
19654
|
if (modulemap.endsWith("/Modules/module.modulemap")) {
|
|
19652
|
-
const
|
|
19653
|
-
|
|
19654
|
-
"Headers"
|
|
19655
|
-
|
|
19656
|
-
|
|
19657
|
-
|
|
19658
|
-
|
|
19659
|
-
|
|
19660
|
-
|
|
19661
|
-
|
|
19662
|
-
|
|
19663
|
-
|
|
19664
|
-
|
|
19665
|
-
{ allowExisting: true }
|
|
19666
|
-
);
|
|
19667
|
-
}
|
|
19655
|
+
const framework = import_node_path27.default.posix.dirname(import_node_path27.default.posix.dirname(modulemap));
|
|
19656
|
+
for (const [, header] of moduleContents.toString().matchAll(/\bheader\s+"([^"]+)"/g))
|
|
19657
|
+
for (const folder of ["Headers", "PrivateHeaders"]) {
|
|
19658
|
+
const source = settings.productHeaders[import_node_path27.default.posix.join(framework, folder, header)];
|
|
19659
|
+
const contents = source === void 0 ? void 0 : input.files[source];
|
|
19660
|
+
if (contents !== void 0)
|
|
19661
|
+
stageTargetFile(
|
|
19662
|
+
target.name,
|
|
19663
|
+
import_node_path27.default.join(layout2.root, import_node_path27.default.posix.dirname(modulemap), folder, header),
|
|
19664
|
+
contents,
|
|
19665
|
+
{ allowExisting: true }
|
|
19666
|
+
);
|
|
19667
|
+
}
|
|
19668
19668
|
}
|
|
19669
19669
|
if (nativeC && import_node_path27.default.posix.basename(modulemap) !== "module.modulemap") {
|
|
19670
19670
|
stageTargetFile(
|
|
@@ -20016,7 +20016,13 @@ module ${moduleName}.Swift {
|
|
|
20016
20016
|
swiftModules.delete(name3);
|
|
20017
20017
|
projectOverlayFrameworks.delete(name3);
|
|
20018
20018
|
}
|
|
20019
|
+
const mixedModules = new Set(
|
|
20020
|
+
[...native].flatMap(
|
|
20021
|
+
([name3, value]) => value.mixed ? [swiftTargetModuleName(name3)] : []
|
|
20022
|
+
)
|
|
20023
|
+
);
|
|
20019
20024
|
for (const name3 of sourceModules) swiftModules.add(name3);
|
|
20025
|
+
for (const name3 of mixedModules) swiftModules.delete(name3);
|
|
20020
20026
|
for (const [file, contents] of Object.entries(input.files))
|
|
20021
20027
|
if (file.endsWith(".modulemap"))
|
|
20022
20028
|
addSwiftOverlayFrameworks(contents, swiftModules, projectOverlayFrameworks);
|
|
@@ -29601,7 +29607,7 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
|
|
|
29601
29607
|
installName: settings2("LD_DYLIB_INSTALL_NAME") || null,
|
|
29602
29608
|
buildVersion: {
|
|
29603
29609
|
platform: settings2("PLATFORM_NAME") || null,
|
|
29604
|
-
minimumOS: settings2("IPHONEOS_DEPLOYMENT_TARGET") ||
|
|
29610
|
+
minimumOS: settings2("IPHONEOS_DEPLOYMENT_TARGET") || XCODE_DEFAULT_IOS_DEPLOYMENT_TARGET,
|
|
29605
29611
|
sdk: settings2("SDK_VERSION") || null
|
|
29606
29612
|
},
|
|
29607
29613
|
machOType: settings2("MACH_O_TYPE") || null,
|
|
@@ -30672,7 +30678,7 @@ function sourceClosureDigest(srcDir, entrypoints) {
|
|
|
30672
30678
|
return hash.digest("hex");
|
|
30673
30679
|
}
|
|
30674
30680
|
var standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
|
|
30675
|
-
var STANDIN_SOURCE_DIGEST = true ? "
|
|
30681
|
+
var STANDIN_SOURCE_DIGEST = true ? "8357df1eb62bbe4eb3a2bc4588867a6b75d1052c41e274e31fec2fde3700676e" : standinSourceDigest();
|
|
30676
30682
|
|
|
30677
30683
|
// src/swift-standins.ts
|
|
30678
30684
|
init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.2190 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -39,7 +39,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
39
39
|
var define_SWIFT_COVERAGE_SOURCE_DIGESTS_default;
|
|
40
40
|
var init_define_SWIFT_COVERAGE_SOURCE_DIGESTS = __esm({
|
|
41
41
|
"<define:__SWIFT_COVERAGE_SOURCE_DIGESTS__>"() {
|
|
42
|
-
define_SWIFT_COVERAGE_SOURCE_DIGESTS_default = { "swift-coverage/indexdump.ts": "0d82d8eeb96bf377f409ea7e33274c341a710c0e071f6b6e17571a23d8d92412", "swift-coverage/indexing.ts": "633ccf19eec1f382a8847d0ee1dca42a2792a3c60aafd43622ed5152b09b8272", "swift-coverage/types.ts": "bd8fae54ea6c53e110cd8a5d7b57c1d532dd0166e09fdaea63c4f270c3780dd1", "swift-coverage/source.ts": "c151758a9f67631bc61473c375df0dc017da6902a34533b2cf4fc4fd7d19b6ee", "swift-coverage/package.ts": "1f0068be7461fa7c5a7a891faf318f305cbed2e94c19667ba76627f7e5be260b", "swift-coverage/xcode.ts": "65a500b806ce1c3a496de27f2e0ad77287c0f6795c618342c08af647f92af1fa", "swift-coverage/xcode-assets.ts": "99e03b74c961d2449afd58c2cbc415ba91d1d469a4f89e461c137fd6c305b27c", "swift-coverage/xcode-asset-symbols.ts": "1b2a67733bc9d139b351466270205452a6172140bc25080d72619e2952c44671", "swift-coverage/xcode-bridging.ts": "33184be8c5daf6646aa5a1276a4e15531f1be27b7c26f56550e0fbb1fc678a11", "swift-coverage/xcode-packages.ts": "8e6020d17d24474150a5a50d042aca6261819ef75c79680a287a66f395909915", "swift-coverage/xcode-strings.ts": "f2dd4c7cd8ef77035184b0132909c2fa09fd20ed06b7757c2f1f960bfdde031c", "swift-coverage/reader.ts": "da559b67ecd1161dea70c980b5f98f2c55af3550f0714479100fa5e9e813625c", "swift-coverage/provenance.ts": "eb3b41ae8b58b48f6758f084800f188dfb1edb227e483abdd6b80cde66e849b9", "swift-package-manifest.ts": "4b7d4a715cdaf57468ead23f2ff9dce76d02c6a888d73d144d4baa2ae571ba3c", "swift-package.ts": "338cfef9a34a930206ac2e1a8a90b85c8d61f776d9a41e6445dc18e0c5385cdb", "swift-source-file.ts": "93fd659ed63a27b67f54a7c229a7ceb636dc9c59e68414920ba36cff1eda1f94", "swift-toolchain.ts": "
|
|
42
|
+
define_SWIFT_COVERAGE_SOURCE_DIGESTS_default = { "swift-coverage/indexdump.ts": "0d82d8eeb96bf377f409ea7e33274c341a710c0e071f6b6e17571a23d8d92412", "swift-coverage/indexing.ts": "633ccf19eec1f382a8847d0ee1dca42a2792a3c60aafd43622ed5152b09b8272", "swift-coverage/types.ts": "bd8fae54ea6c53e110cd8a5d7b57c1d532dd0166e09fdaea63c4f270c3780dd1", "swift-coverage/source.ts": "c151758a9f67631bc61473c375df0dc017da6902a34533b2cf4fc4fd7d19b6ee", "swift-coverage/package.ts": "1f0068be7461fa7c5a7a891faf318f305cbed2e94c19667ba76627f7e5be260b", "swift-coverage/xcode.ts": "65a500b806ce1c3a496de27f2e0ad77287c0f6795c618342c08af647f92af1fa", "swift-coverage/xcode-assets.ts": "99e03b74c961d2449afd58c2cbc415ba91d1d469a4f89e461c137fd6c305b27c", "swift-coverage/xcode-asset-symbols.ts": "1b2a67733bc9d139b351466270205452a6172140bc25080d72619e2952c44671", "swift-coverage/xcode-bridging.ts": "33184be8c5daf6646aa5a1276a4e15531f1be27b7c26f56550e0fbb1fc678a11", "swift-coverage/xcode-packages.ts": "8e6020d17d24474150a5a50d042aca6261819ef75c79680a287a66f395909915", "swift-coverage/xcode-strings.ts": "f2dd4c7cd8ef77035184b0132909c2fa09fd20ed06b7757c2f1f960bfdde031c", "swift-coverage/reader.ts": "da559b67ecd1161dea70c980b5f98f2c55af3550f0714479100fa5e9e813625c", "swift-coverage/provenance.ts": "eb3b41ae8b58b48f6758f084800f188dfb1edb227e483abdd6b80cde66e849b9", "swift-package-manifest.ts": "4b7d4a715cdaf57468ead23f2ff9dce76d02c6a888d73d144d4baa2ae571ba3c", "swift-package.ts": "338cfef9a34a930206ac2e1a8a90b85c8d61f776d9a41e6445dc18e0c5385cdb", "swift-source-file.ts": "93fd659ed63a27b67f54a7c229a7ceb636dc9c59e68414920ba36cff1eda1f94", "swift-toolchain.ts": "e7cf8a143d47ff86b4ee2db4a8266e96b100926104990dba795321bc5923df3e", "home-paths.ts": "f5583b61f8bdd81823b3b29ff519a48daf9993719f194ddb7de22218472e90f9", "xcode-header-search.ts": "f8c3d557b4eca5ddad32907545353eb7ad53b2ebd0969d9ed8f7275e109a13b1", "xcode-project.ts": "8ffd57670829ddd2b10e812defbd9016859744be88713c5ba65847aa6e26dff4", "xcode-target-members.ts": "ad7589132bffab265e8a10b64e24484fe88b4a2b1cc0ee19a97f151a002eca77", "xcode-json-project.ts": "41990ebbe4b488eef34e74c4608b4b48e5a5b299ba98ca7fbcfdfa0e77be63b6", "openstep-plist.ts": "74e6ce1dac80c9c318e0e9f5e3e8cd19a898a8820c36fc160609695bcb59dcd3" };
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
|
|
@@ -1909,7 +1909,7 @@ function readIosSdkTree(root) {
|
|
|
1909
1909
|
|
|
1910
1910
|
// src/swift-standin-digest.ts
|
|
1911
1911
|
init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
|
|
1912
|
-
var STANDIN_SOURCE_DIGEST = true ? "
|
|
1912
|
+
var STANDIN_SOURCE_DIGEST = true ? "8357df1eb62bbe4eb3a2bc4588867a6b75d1052c41e274e31fec2fde3700676e" : standinSourceDigest();
|
|
1913
1913
|
|
|
1914
1914
|
// src/expo-native-workspace.ts
|
|
1915
1915
|
init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
|
|
@@ -5391,7 +5391,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
|
|
|
5391
5391
|
var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
|
|
5392
5392
|
(module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
|
|
5393
5393
|
).join("");
|
|
5394
|
-
var compilerSourceDigest = true ? "
|
|
5394
|
+
var compilerSourceDigest = true ? "382ff03994dc241ff825d788eb5f8eb92462420da0b20538d9fcc1ff79e096c6" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
|
|
5395
5395
|
var CORE_FOUNDATION_HANDLE_IMPORTS = [
|
|
5396
5396
|
"CFAllocator",
|
|
5397
5397
|
"CFArray",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.2190 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { SootSimNode } from './node.d.ts';
|
|
2
|
+
import type { SootSimStyle } from './types.d.ts';
|
|
3
|
+
type EdgeStyle = Readonly<Partial<Record<keyof SootSimStyle, unknown>>>;
|
|
4
|
+
export declare function resolveStylePadding(style: SootSimStyle): {
|
|
5
|
+
left: number;
|
|
6
|
+
top: number;
|
|
7
|
+
right: number;
|
|
8
|
+
bottom: number;
|
|
9
|
+
};
|
|
10
|
+
export declare function resolveStyleMargin(style: SootSimStyle): {
|
|
11
|
+
left: number;
|
|
12
|
+
top: number;
|
|
13
|
+
right: number;
|
|
14
|
+
bottom: number;
|
|
15
|
+
};
|
|
16
|
+
export declare function getComputedPadding(node: SootSimNode): {
|
|
17
|
+
left: number;
|
|
18
|
+
top: number;
|
|
19
|
+
right: number;
|
|
20
|
+
bottom: number;
|
|
21
|
+
};
|
|
22
|
+
export declare function resolveStyleBorderWidth(style: EdgeStyle): {
|
|
23
|
+
left: number;
|
|
24
|
+
top: number;
|
|
25
|
+
right: number;
|
|
26
|
+
bottom: number;
|
|
27
|
+
};
|
|
28
|
+
export declare function getComputedBorderWidth(node: SootSimNode): {
|
|
29
|
+
left: number;
|
|
30
|
+
top: number;
|
|
31
|
+
right: number;
|
|
32
|
+
bottom: number;
|
|
33
|
+
};
|
|
34
|
+
export declare function getTextContentInset(node: SootSimNode): {
|
|
35
|
+
left: number;
|
|
36
|
+
top: number;
|
|
37
|
+
right: number;
|
|
38
|
+
bottom: number;
|
|
39
|
+
};
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { getComputedPadding, getTextContentInset, resolveStylePadding, } from './computed-padding.d.ts';
|
|
2
|
+
export { computeLayout, laidOutRightToLeft, resolvesRightToLeft, layoutDirection, layoutRecordTakesAnimatedStyle, measureText, nativeLayoutFrameRoot, } from './yoga-layout.d.ts';
|
|
3
|
+
export { setLayoutAnimRenderCallback, layoutAnimComplete, getLayoutAnimStats, invalidateAllTextMeasurements, invalidateLazyFontWaiters, publishUnwrappedTextMeasurements, seedUnwrappedTextMeasurements, takeUnwrappedTextMeasurements, type UnwrappedTextMeasurement, } from './yoga-layout.d.ts';
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type LayoutHookPlacement, SootSimNode } from './node.d.ts';
|
|
2
|
+
import { type TextGuides } from './text-first-baseline.d.ts';
|
|
3
|
+
import type { SootSimStyle, SootSimLayout, SootSimTextLayoutLine, MeasureContext } from './types.d.ts';
|
|
4
|
+
export declare function setLayoutEventDispatcher(dispatcher: ((callback: () => void) => void) | null): void;
|
|
5
|
+
export interface TextInkBox {
|
|
6
|
+
left: number;
|
|
7
|
+
top: number;
|
|
8
|
+
right: number;
|
|
9
|
+
bottom: number;
|
|
10
|
+
}
|
|
11
|
+
export interface MeasuredTextResult {
|
|
12
|
+
textLayoutKey: string;
|
|
13
|
+
measuredWidth: number;
|
|
14
|
+
unroundedWidth: number;
|
|
15
|
+
unroundedHeight: number;
|
|
16
|
+
measuredHeight: number;
|
|
17
|
+
fontScale: number | null;
|
|
18
|
+
textLayoutLines: SootSimTextLayoutLine[] | null;
|
|
19
|
+
textGuides: TextGuides | null;
|
|
20
|
+
ink: TextInkBox | null;
|
|
21
|
+
}
|
|
22
|
+
export interface UnwrappedTextMeasurement {
|
|
23
|
+
key: string;
|
|
24
|
+
intrinsicWidth: number;
|
|
25
|
+
measured: MeasuredTextResult;
|
|
26
|
+
}
|
|
27
|
+
export declare function publishUnwrappedTextMeasurements(): void;
|
|
28
|
+
export declare function takeUnwrappedTextMeasurements(): UnwrappedTextMeasurement[] | undefined;
|
|
29
|
+
export declare function seedUnwrappedTextMeasurements(entries: readonly UnwrappedTextMeasurement[]): void;
|
|
30
|
+
export declare function setLayoutBoundNodeCollector(begin: ((node: SootSimNode) => void) | null, end: ((node: SootSimNode, retainEmpty?: boolean) => void) | null): void;
|
|
31
|
+
export { roundToLayoutGrid } from '../settings/device-spec-bus.d.ts';
|
|
32
|
+
export declare function invalidateYogaTextMeasure(node: SootSimNode): void;
|
|
33
|
+
export declare function invalidateAllTextMeasurements(): void;
|
|
34
|
+
export declare function invalidateLazyFontWaiters(nodes: readonly SootSimNode[]): void;
|
|
35
|
+
export declare function shouldApplyMeasuredTextStretchWidth(node: SootSimNode): boolean;
|
|
36
|
+
export declare function setLayoutAnimRenderCallback(cb: (() => void) | null): void;
|
|
37
|
+
export declare function layoutAnimComplete(node: SootSimNode): void;
|
|
38
|
+
export declare function getLayoutAnimStats(): {
|
|
39
|
+
layoutAnimNodeCount: number;
|
|
40
|
+
layoutAnimTickCount: number;
|
|
41
|
+
hasLayoutAnimRafScheduled: boolean;
|
|
42
|
+
};
|
|
43
|
+
export declare function laidOutRightToLeft(node: SootSimNode): boolean;
|
|
44
|
+
export declare function resolvesRightToLeft(node: SootSimNode): boolean;
|
|
45
|
+
export declare function layoutDirection(): number;
|
|
46
|
+
export declare function queuePendingRootLayoutMeasure(nodeOrRoot: unknown, key: object, callback: () => void): (() => void) | undefined;
|
|
47
|
+
export interface LayoutWatch {
|
|
48
|
+
moving(nodes: readonly SootSimNode[], resized?: boolean): void;
|
|
49
|
+
scrollSynced(node: SootSimNode): void;
|
|
50
|
+
}
|
|
51
|
+
export declare function layoutRecordTakesAnimatedStyle(node: SootSimNode, keys: readonly string[]): boolean;
|
|
52
|
+
export declare function computeLayout(root: SootSimNode, width: number, height: number, ctx: MeasureContext, watch?: LayoutWatch | null, preserveRootOrigin?: boolean): boolean;
|
|
53
|
+
export declare function nativeLayoutFrameRoot(root: SootSimNode, width: number, height: number, ctx: MeasureContext): number;
|
|
54
|
+
export declare function setLayoutHook(target: unknown, hook: ((view: SootSimNode) => void) | null): void;
|
|
55
|
+
export declare function placeFromLayoutHook(target: unknown, placement: LayoutHookPlacement | null): void;
|
|
56
|
+
export declare function layoutHookFrame(target: unknown): SootSimLayout | null;
|
|
57
|
+
export declare function releaseYogaRoot(root: SootSimNode): void;
|
|
58
|
+
export declare function parkYogaRoot(root: SootSimNode): void;
|
|
59
|
+
export declare function freeYogaTree(node: SootSimNode, seen?: Set<SootSimNode>): void;
|
|
60
|
+
export declare function measureText(text: string, sourceStyle: SootSimStyle, maxWidth: number, ctx: MeasureContext, props?: Record<string, any>, node?: SootSimNode, includeInk?: boolean): MeasuredTextResult;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type AnimatedDrivenStyleLease, type AnimatedDrivenStyleRetirement } from '../engine/animated-driven-style.d.ts';
|
|
2
2
|
import { type LayoutSlotRead } from '../engine/layout-sab.d.ts';
|
|
3
3
|
import { SootSimNode, SootSimTextNode, type LayoutHookPlacement } from '../engine/node.d.ts';
|
|
4
|
+
import type { UnwrappedTextMeasurement } from '../engine/layout-engine.d.ts';
|
|
4
5
|
import type { SootSimNodeType } from '../engine/types.d.ts';
|
|
5
6
|
import type { LayoutAnimationConfig } from '../react-native/layout-animation.d.ts';
|
|
6
7
|
import type { GraphPresentation } from './graph-linked-value.d.ts';
|
|
@@ -64,6 +65,7 @@ export type WireSurfaceUpdate = WireDelta & {
|
|
|
64
65
|
graphPresentations?: GraphPresentation[];
|
|
65
66
|
graphPresentationEnds?: number[];
|
|
66
67
|
inlineSources?: WireInlineSources;
|
|
68
|
+
unwrappedMeasurements?: UnwrappedTextMeasurement[];
|
|
67
69
|
};
|
|
68
70
|
export declare function sanitizeProps(props: Record<string, unknown>, nodeType?: SootSimNodeType): Record<string, unknown>;
|
|
69
71
|
export declare function sanitizeStyle(style: Record<string, unknown>): Record<string, unknown>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DeviceSpec } from '../../../../../src/device-catalog.ts';
|
|
2
|
+
type Listener = () => void;
|
|
3
|
+
export declare const ANDROID_EMULATOR_MODEL = "sdk_gphone64_arm64";
|
|
4
|
+
export declare function getDeviceSpec(): DeviceSpec;
|
|
5
|
+
export declare function peekDeviceSpec(): DeviceSpec | undefined;
|
|
6
|
+
export declare function getDevicePixelScale(): number;
|
|
7
|
+
export declare function roundToLayoutGrid(value: number): number;
|
|
8
|
+
export declare function publishDeviceSpec(spec: DeviceSpec): void;
|
|
9
|
+
export declare function onDeviceSpecChange(listener: Listener): () => void;
|
|
10
|
+
export {};
|
package/package.json
CHANGED
|
@@ -15,20 +15,10 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability)
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
typedef NS_ENUM(NSInteger, UITextSearchMatchMethod) {
|
|
20
|
-
/// Word contains search string.
|
|
21
|
-
UITextSearchMatchMethodContains,
|
|
22
|
-
|
|
23
|
-
/// Word contains the search string as a prefix.
|
|
24
|
-
UITextSearchMatchMethodStartsWith,
|
|
25
|
-
|
|
26
|
-
/// Word is an exact match for the search string.
|
|
27
|
-
UITextSearchMatchMethodFullWord,
|
|
28
|
-
} NS_SWIFT_NAME(UITextSearchOptions.WordMatchMethod) API_UNAVAILABLE(watchos);
|
|
18
|
+
|
|
29
19
|
|
|
30
20
|
UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
|
|
31
|
-
@interface UITextSearchOptions : NSObject
|
|
21
|
+
PEACH_SWIFT_CLASS(UIKitCore) @interface UITextSearchOptions : NSObject
|
|
32
22
|
/// See UITextSearchMatchMethod above.
|
|
33
23
|
@property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
|
|
34
24
|
|
|
@@ -2389,6 +2389,18 @@ typedef NS_ENUM(NSInteger, UIScrollViewContentInsetAdjustmentBehavior) {
|
|
|
2389
2389
|
UIScrollViewContentInsetAdjustmentNever, // contentInset is not adjusted
|
|
2390
2390
|
UIScrollViewContentInsetAdjustmentAlways, // contentInset is always adjusted by the scroll view's safeAreaInsets
|
|
2391
2391
|
} API_AVAILABLE(ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos);
|
|
2392
|
+
|
|
2393
|
+
API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos)
|
|
2394
|
+
typedef NS_ENUM(NSInteger, UITextSearchMatchMethod) {
|
|
2395
|
+
/// Word contains search string.
|
|
2396
|
+
UITextSearchMatchMethodContains,
|
|
2397
|
+
|
|
2398
|
+
/// Word contains the search string as a prefix.
|
|
2399
|
+
UITextSearchMatchMethodStartsWith,
|
|
2400
|
+
|
|
2401
|
+
/// Word is an exact match for the search string.
|
|
2402
|
+
UITextSearchMatchMethodFullWord,
|
|
2403
|
+
} API_UNAVAILABLE(watchos);
|
|
2392
2404
|
PEACH_SWIFT_CLASS(UIKitCore) @interface UIColor : NSObject <NSSecureCoding, NSCopying>
|
|
2393
2405
|
@end
|
|
2394
2406
|
|
package/src/podspec-sources.ts
CHANGED
|
@@ -595,7 +595,8 @@ class ExprParser {
|
|
|
595
595
|
|
|
596
596
|
or = (): Node => this.binary(['||'], this.and)
|
|
597
597
|
and = (): Node => this.binary(['&&'], this.eq)
|
|
598
|
-
eq = (): Node => this.binary(['==', '!='], this.
|
|
598
|
+
eq = (): Node => this.binary(['==', '!='], this.compare)
|
|
599
|
+
compare = (): Node => this.binary(['<', '>', '<=', '>='], this.shift)
|
|
599
600
|
shift = (): Node => this.binary(['<<'], this.add)
|
|
600
601
|
add = (): Node => this.binary(['+', '-'], this.unary)
|
|
601
602
|
|
|
@@ -768,6 +769,9 @@ class ExprParser {
|
|
|
768
769
|
return { k: 'hash', pairs }
|
|
769
770
|
}
|
|
770
771
|
if (tok.v === '::') return this.fail('top-level constant')
|
|
772
|
+
// a global is whatever the Podfile assigned before evaluating the pod
|
|
773
|
+
if (tok.v === '$' && this.toks[this.i]?.t === 'id')
|
|
774
|
+
return { k: 'fail', why: `global $${this.toks[this.i++]!.v}` }
|
|
771
775
|
return this.fail(`unexpected ${tok.v}`)
|
|
772
776
|
}
|
|
773
777
|
}
|
|
@@ -1054,7 +1058,16 @@ class Evaluator {
|
|
|
1054
1058
|
}
|
|
1055
1059
|
case 'bin': {
|
|
1056
1060
|
if (node.op === '||' || node.op === '&&') {
|
|
1057
|
-
|
|
1061
|
+
let l: Value
|
|
1062
|
+
try {
|
|
1063
|
+
l = this.ev(scope, node.l)
|
|
1064
|
+
} catch (error) {
|
|
1065
|
+
// an unestablished operand cannot change `x && falsy` or `x || truthy`
|
|
1066
|
+
if (!recoverable(error)) throw error
|
|
1067
|
+
const r = this.ev(scope, node.r)
|
|
1068
|
+
if (truthy(r) === (node.op === '||')) return r
|
|
1069
|
+
throw error
|
|
1070
|
+
}
|
|
1058
1071
|
return truthy(l) === (node.op === '||') ? l : this.ev(scope, node.r)
|
|
1059
1072
|
}
|
|
1060
1073
|
const l = this.ev(scope, node.l)
|
|
@@ -1083,6 +1096,12 @@ class Evaluator {
|
|
|
1083
1096
|
l.push(r)
|
|
1084
1097
|
return l
|
|
1085
1098
|
}
|
|
1099
|
+
if (typeof l === 'number' && typeof r === 'number') {
|
|
1100
|
+
if (node.op === '<') return l < r
|
|
1101
|
+
if (node.op === '>') return l > r
|
|
1102
|
+
if (node.op === '<=') return l <= r
|
|
1103
|
+
if (node.op === '>=') return l >= r
|
|
1104
|
+
}
|
|
1086
1105
|
return this.fail(`operator ${node.op}`)
|
|
1087
1106
|
}
|
|
1088
1107
|
case 'method': {
|
package/src/swift-compile.ts
CHANGED
|
@@ -4903,26 +4903,27 @@ export function writeSwiftProject(
|
|
|
4903
4903
|
allowExisting: true,
|
|
4904
4904
|
})
|
|
4905
4905
|
// clang resolves a framework map loaded through extern module against
|
|
4906
|
-
// the map directory, not the framework root, so mirror
|
|
4906
|
+
// the map directory, not the framework root, so mirror every header
|
|
4907
|
+
// the map names there. clang looks in Headers/ and PrivateHeaders/ for
|
|
4908
|
+
// a framework module's header, whatever its keyword (a podspec
|
|
4909
|
+
// module_map names private headers in explicit submodules).
|
|
4907
4910
|
if (modulemap.endsWith('/Modules/module.modulemap')) {
|
|
4908
|
-
const
|
|
4909
|
-
|
|
4910
|
-
'Headers',
|
|
4911
|
-
)
|
|
4912
|
-
const mirrored = path.posix.join(path.posix.dirname(modulemap), 'Headers')
|
|
4913
|
-
for (const [, umbrella] of moduleContents
|
|
4911
|
+
const framework = path.posix.dirname(path.posix.dirname(modulemap))
|
|
4912
|
+
for (const [, header] of moduleContents
|
|
4914
4913
|
.toString()
|
|
4915
|
-
.matchAll(/\
|
|
4916
|
-
const
|
|
4917
|
-
|
|
4918
|
-
|
|
4919
|
-
|
|
4920
|
-
|
|
4921
|
-
|
|
4922
|
-
|
|
4923
|
-
|
|
4924
|
-
|
|
4925
|
-
|
|
4914
|
+
.matchAll(/\bheader\s+"([^"]+)"/g))
|
|
4915
|
+
for (const folder of ['Headers', 'PrivateHeaders']) {
|
|
4916
|
+
const source =
|
|
4917
|
+
settings.productHeaders[path.posix.join(framework, folder, header!)]
|
|
4918
|
+
const contents = source === undefined ? undefined : input.files[source]
|
|
4919
|
+
if (contents !== undefined)
|
|
4920
|
+
stageTargetFile(
|
|
4921
|
+
target.name,
|
|
4922
|
+
path.join(layout.root, path.posix.dirname(modulemap), folder, header!),
|
|
4923
|
+
contents,
|
|
4924
|
+
{ allowExisting: true },
|
|
4925
|
+
)
|
|
4926
|
+
}
|
|
4926
4927
|
}
|
|
4927
4928
|
if (nativeC && path.posix.basename(modulemap) !== 'module.modulemap') {
|
|
4928
4929
|
stageTargetFile(
|
|
@@ -5342,7 +5343,16 @@ export function writeSwiftProject(
|
|
|
5342
5343
|
swiftModules.delete(name)
|
|
5343
5344
|
projectOverlayFrameworks.delete(name)
|
|
5344
5345
|
}
|
|
5346
|
+
// a mixed target's framework map is the clang half of its own module
|
|
5347
|
+
// (swift imports it as the underlying module), not a framework a Swift
|
|
5348
|
+
// module replaces, so its submodule imports stay.
|
|
5349
|
+
const mixedModules = new Set(
|
|
5350
|
+
[...native].flatMap(([name, value]) =>
|
|
5351
|
+
value.mixed ? [swiftTargetModuleName(name)] : [],
|
|
5352
|
+
),
|
|
5353
|
+
)
|
|
5345
5354
|
for (const name of sourceModules) swiftModules.add(name)
|
|
5355
|
+
for (const name of mixedModules) swiftModules.delete(name)
|
|
5346
5356
|
for (const [file, contents] of Object.entries(input.files))
|
|
5347
5357
|
if (file.endsWith('.modulemap'))
|
|
5348
5358
|
addSwiftOverlayFrameworks(contents, swiftModules, projectOverlayFrameworks)
|
|
@@ -123,10 +123,14 @@ export function guestSourceObjects(
|
|
|
123
123
|
target.sourceTarget === null ? [] : [target.sourceTarget],
|
|
124
124
|
),
|
|
125
125
|
)
|
|
126
|
-
// swiftpm names each build directory by its target's c99 module name
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
// swiftpm names each build directory by its target's c99 module name; a
|
|
127
|
+
// target of a package kept as a dependency builds into the same tree.
|
|
128
|
+
const owners = new Map([
|
|
129
|
+
...[...names].map((name) => [swiftTargetModuleName(name), name] as const),
|
|
130
|
+
...[...generatedOwners].map(
|
|
131
|
+
([name, owner]) => [swiftTargetModuleName(name), owner] as const,
|
|
132
|
+
),
|
|
133
|
+
])
|
|
130
134
|
// a binary target's prebuilt WebAssembly library is named for the target
|
|
131
135
|
const libraries = new Map(
|
|
132
136
|
graph.targets.flatMap((target) =>
|
package/src/swift-toolchain.ts
CHANGED
|
@@ -529,7 +529,8 @@ export const SWIFT_AUTOLINK_LINKER = '.peach-wasm-ld'
|
|
|
529
529
|
* for a 42MB output). the linker written here keeps the first copy of each
|
|
530
530
|
* -l flag in clang's response file and runs the toolchain's wasm-ld, which
|
|
531
531
|
* links the same bytes in about 1GiB. callers pass its path to clang with
|
|
532
|
-
* `-Xclang-linker -fuse-ld=<path>`.
|
|
532
|
+
* `-Xclang-linker -fuse-ld=<path>`. it also drops apple ld's -ObjC, which wasm-ld
|
|
533
|
+
* rejects; the guest link loads objective-c archive members itself.
|
|
533
534
|
*/
|
|
534
535
|
export function writeSwiftAutolinkLinker(
|
|
535
536
|
directory: string,
|
|
@@ -543,7 +544,7 @@ for arg in "$@"; do
|
|
|
543
544
|
case $arg in
|
|
544
545
|
@*)
|
|
545
546
|
rsp=\${arg#@}
|
|
546
|
-
awk 'BEGIN { RS = " "; ORS = " " } /^"-l/ { if (seen[$0]++) next }${omitLibraries.map((name) => ` $0 == "\\"-l${name}\\"" { next }`).join('')} { print }' "$rsp" > "$rsp.dedup"
|
|
547
|
+
awk 'BEGIN { RS = " "; ORS = " " } /^"-l/ { if (seen[$0]++) next }${omitLibraries.map((name) => ` $0 == "\\"-l${name}\\"" { next }`).join('')} $0 == "\\"-ObjC\\"" { next } { print }' "$rsp" > "$rsp.dedup"
|
|
547
548
|
mv "$rsp.dedup" "$rsp"
|
|
548
549
|
if [ "\${PEACH_DEFER_WASM_LINK:-}" = "1" ] && grep -q '"--start-lib"' "$rsp"; then
|
|
549
550
|
cp "$rsp" ${JSON.stringify(path.join(directory, '.peach-link.rsp'))}
|
package/src/xcode-project.ts
CHANGED
|
@@ -3188,7 +3188,9 @@ export function readXcodeAppTarget(
|
|
|
3188
3188
|
installName: settings('LD_DYLIB_INSTALL_NAME') || null,
|
|
3189
3189
|
buildVersion: {
|
|
3190
3190
|
platform: settings('PLATFORM_NAME') || null,
|
|
3191
|
-
minimumOS:
|
|
3191
|
+
minimumOS:
|
|
3192
|
+
settings('IPHONEOS_DEPLOYMENT_TARGET') ||
|
|
3193
|
+
XCODE_DEFAULT_IOS_DEPLOYMENT_TARGET,
|
|
3192
3194
|
sdk: settings('SDK_VERSION') || null,
|
|
3193
3195
|
},
|
|
3194
3196
|
machOType: settings('MACH_O_TYPE') || null,
|