peachsim 0.1.2219 → 0.1.2221

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 (93) hide show
  1. package/cli/commands/flow.ts +4 -0
  2. package/cli/commands/inspect.ts +4 -4
  3. package/cli/maestro-compare.ts +37 -26
  4. package/dist-lib/agent-daemon-client.cjs +1 -1
  5. package/dist-lib/agent-events.cjs +1 -1
  6. package/dist-lib/attached-projects.cjs +1 -1
  7. package/dist-lib/auth/shared-session.cjs +1 -1
  8. package/dist-lib/backend-origin.cjs +1 -1
  9. package/dist-lib/beta.cjs +1 -1
  10. package/dist-lib/beta.mjs +1 -1
  11. package/dist-lib/bridge-constants.cjs +1 -1
  12. package/dist-lib/bridge-contract-input.cjs +1 -1
  13. package/dist-lib/bridge-contract-input.mjs +1 -1
  14. package/dist-lib/bridge-contract.cjs +1 -1
  15. package/dist-lib/bridge-contract.mjs +1 -1
  16. package/dist-lib/bundle-channel.cjs +117 -36
  17. package/dist-lib/capture-contract.cjs +1 -1
  18. package/dist-lib/capture-contract.mjs +1 -1
  19. package/dist-lib/cloud-contract.cjs +1 -1
  20. package/dist-lib/cloud-contract.mjs +1 -1
  21. package/dist-lib/cloud-test-args.cjs +1 -1
  22. package/dist-lib/cloud-test-args.mjs +1 -1
  23. package/dist-lib/cloud.cjs +1 -1
  24. package/dist-lib/cloud.mjs +1 -1
  25. package/dist-lib/config.cjs +1 -1
  26. package/dist-lib/config.mjs +1 -1
  27. package/dist-lib/detox/index.cjs +1 -1
  28. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  29. package/dist-lib/expo-swift-bundle.cjs +114 -33
  30. package/dist-lib/expo-swift-metadata.cjs +1 -1
  31. package/dist-lib/expo-swift-metadata.mjs +1 -1
  32. package/dist-lib/home-paths.cjs +1 -1
  33. package/dist-lib/host/bridge-host.cjs +115 -34
  34. package/dist-lib/host/fetch-proxy-handler.cjs +3 -3
  35. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  36. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  37. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  38. package/dist-lib/host/websocket-proxy.cjs +1 -1
  39. package/dist-lib/index.cjs +3 -3
  40. package/dist-lib/jump-to-source-babel.cjs +1 -1
  41. package/dist-lib/jump-to-source-native.cjs +1 -1
  42. package/dist-lib/kotlin-host.cjs +1 -1
  43. package/dist-lib/menu.cjs +1 -1
  44. package/dist-lib/menu.mjs +1 -1
  45. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  46. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  47. package/dist-lib/metro-production-bundle.cjs +1 -1
  48. package/dist-lib/metro-production-bundle.mjs +1 -1
  49. package/dist-lib/metro.cjs +3 -3
  50. package/dist-lib/native-app-identity-project.cjs +2 -2
  51. package/dist-lib/native-app-identity-project.mjs +2 -2
  52. package/dist-lib/native-app-identity.cjs +1 -1
  53. package/dist-lib/native-app-identity.mjs +1 -1
  54. package/dist-lib/native-firebase-metadata.cjs +1 -1
  55. package/dist-lib/native-firebase-metadata.mjs +1 -1
  56. package/dist-lib/pdfium-raster.cjs +1 -1
  57. package/dist-lib/pdfium-raster.mjs +1 -1
  58. package/dist-lib/plist.cjs +1 -1
  59. package/dist-lib/plist.mjs +1 -1
  60. package/dist-lib/profiles.cjs +1 -1
  61. package/dist-lib/public-brand.cjs +1 -1
  62. package/dist-lib/public-origins-lib-esm.json +24 -24
  63. package/dist-lib/public-origins-lib.json +53 -53
  64. package/dist-lib/react-native-host-modules.cjs +1 -1
  65. package/dist-lib/react-native-host-modules.mjs +1 -1
  66. package/dist-lib/reap-browser.cjs +1 -1
  67. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  68. package/dist-lib/sdk.cjs +1 -1
  69. package/dist-lib/sdk.mjs +1 -1
  70. package/dist-lib/skills.cjs +115 -34
  71. package/dist-lib/swift-compile.cjs +39 -21
  72. package/dist-lib/swift-compile.mjs +39 -21
  73. package/dist-lib/swift-package.cjs +1 -1
  74. package/dist-lib/swift-package.mjs +1 -1
  75. package/dist-lib/swift-submit.cjs +1 -1
  76. package/dist-lib/swift-submit.mjs +1 -1
  77. package/dist-lib/swift-toolchain.cjs +1 -1
  78. package/dist-lib/swift.cjs +1 -1
  79. package/dist-lib/vite-swift.cjs +112 -31
  80. package/dist-lib/vite.cjs +3 -3
  81. package/dist-lib/worklet-executable.cjs +1 -1
  82. package/dist-lib/worklet-executable.mjs +1 -1
  83. package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1 -0
  84. package/package.json +1 -1
  85. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/NSLayoutConstraint.h +1 -8
  86. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Modules/module.modulemap +1 -0
  87. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UIKitTypes.h +1 -0
  88. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UILayoutPriority.h +11 -0
  89. package/src/swift-compile.ts +43 -23
  90. package/src/swift-host.ts +84 -2
  91. package/src/swift-objc-import.ts +4 -0
  92. package/src/swift-packages.ts +19 -10
  93. package/src/swift-standins.ts +1 -1
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/swift-compile.ts
4
4
  import {
@@ -11022,7 +11022,7 @@ function swiftSubmoduleImports(sources) {
11022
11022
  }
11023
11023
  return imports;
11024
11024
  }
11025
- function swiftObjCModuleMap(module, headers, submodules = /* @__PURE__ */ new Set()) {
11025
+ function swiftObjCModuleMap(module, headers, submodules = /* @__PURE__ */ new Set(), swiftHeader) {
11026
11026
  const header = (file) => `header ${JSON.stringify(file)}`;
11027
11027
  const stem = (file) => file.slice(file.lastIndexOf("/") + 1).replace(/\.[^.]*$/, "");
11028
11028
  return [
@@ -11030,6 +11030,7 @@ function swiftObjCModuleMap(module, headers, submodules = /* @__PURE__ */ new Se
11030
11030
  ...headers.map(
11031
11031
  (file) => submodules.has(stem(file)) ? ` module ${stem(file)} { ${header(file)} export * }` : ` ${header(file)}`
11032
11032
  ),
11033
+ ...swiftHeader ? [" module Swift {", ` ${header(swiftHeader)}`, " requires objc", " }"] : [],
11033
11034
  " export *",
11034
11035
  "}",
11035
11036
  ""
@@ -11746,7 +11747,10 @@ function swiftModuleInterface(moduleRoot, name2, interfaceRoot) {
11746
11747
  if (declared.size === 0) return null;
11747
11748
  return { declared, header: clangInterfaceHeader(readFileSync16(built, "utf8")) };
11748
11749
  }
11749
- var clangInterfaceHeader = (header) => header.replace(/^@import (?:UIKitCore|UIKitText);$/gm, "@import UIKit;").replace(/^@import CoreFoundation;$/gm, "@import Foundation;").replace(/\b_TtC10Foundation\d+(NS\w+)\b/g, "$1").replace(/\b__attribute__\(\(objc_subclassing_restricted\)\)\s*/g, "");
11750
+ var clangInterfaceHeader = (header) => header.replace(/^@import (?:UIKitCore|UIKitText);$/gm, "@import UIKit;").replace(
11751
+ /^@import (?:CoreFoundation|FoundationNetworking);$/gm,
11752
+ "@import Foundation;"
11753
+ ).replace(/\b_TtC10Foundation\d+(NS\w+)\b/g, "$1").replace(/\b__attribute__\(\(objc_subclassing_restricted\)\)\s*/g, "");
11750
11754
  var swiftInterfaceDeclarations = (header) => /* @__PURE__ */ new Set([
11751
11755
  ...[
11752
11756
  ...header.matchAll(
@@ -12584,7 +12588,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
12584
12588
  var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
12585
12589
  var MULTI_MANIFEST_VERSION = 68;
12586
12590
  var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
12587
- var compilerSourceDigest = true ? "0a0bc1c871aee83ea273120655f55a43ddccde646478a452b4c73d2daefd58c3" : swiftCompilerSourceDigest(import.meta.dirname);
12591
+ var compilerSourceDigest = true ? "2e9f321a97a408a1b3b8b7d85bbcfb108f0761ed9726b832a3c6c2cc52102806" : swiftCompilerSourceDigest(import.meta.dirname);
12588
12592
  function swiftArtifactHash(input, release, moduleRoot) {
12589
12593
  const hash = createHash13("sha256");
12590
12594
  hash.update(`swift-compile
@@ -12877,6 +12881,10 @@ function emitSwiftPackageManifest(args) {
12877
12881
  includeImportContext(dependency);
12878
12882
  const importedNativeFlags = [
12879
12883
  ...args.nativeImportFlags?.get(target.name) ?? [],
12884
+ ...[...importContext].flatMap((name2) => {
12885
+ const map = name2 === target.name ? void 0 : args.nativeSwiftHeaderMaps?.get(name2);
12886
+ return map ? ["-fmodule-map-file=" + map] : [];
12887
+ }),
12880
12888
  ...[...importContext].flatMap((name2) => args.native?.get(name2)?.importFlags ?? []),
12881
12889
  ...[...importContext].flatMap((name2) => {
12882
12890
  const flags = targets.find((target2) => target2.name === name2)?.swiftFlags ?? [];
@@ -14741,6 +14749,7 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
14741
14749
  )
14742
14750
  );
14743
14751
  const importModuleMaps = /* @__PURE__ */ new Map();
14752
+ const sourceModuleMaps = /* @__PURE__ */ new Map();
14744
14753
  const generatedModuleMaps = [];
14745
14754
  for (const target of targets) {
14746
14755
  const prefix = target.path === "." ? "" : `${target.path}/`;
@@ -14975,6 +14984,10 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
14975
14984
  stageTargetFile(target.name, path27.join(layout2.root, modulemap), moduleContents, {
14976
14985
  allowExisting: true
14977
14986
  });
14987
+ sourceModuleMaps.set(swiftTargetModuleName(target.name), {
14988
+ path: path27.join(layout2.root, modulemap),
14989
+ contents: moduleContents.toString()
14990
+ });
14978
14991
  if (modulemap.endsWith("/Modules/module.modulemap")) {
14979
14992
  const framework = path27.posix.dirname(path27.posix.dirname(modulemap));
14980
14993
  for (const [, header] of moduleContents.toString().matchAll(/\bheader\s+"([^"]+)"/g))
@@ -15249,6 +15262,7 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
15249
15262
  if (native.size > 0) mkdirSync6(headerDirectory, { recursive: true });
15250
15263
  const headerAliasFlags = Object.keys(input.headerAliases ?? {}).length > 0 ? ["-ivfsoverlay", headerSearch.files[0]] : [];
15251
15264
  const nativeHeaderFlags = [...headerAliasFlags];
15265
+ const nativeSwiftHeaderMaps = /* @__PURE__ */ new Map();
15252
15266
  const originalMaps = /* @__PURE__ */ new Map();
15253
15267
  for (const target of input.nativeTargets ?? []) {
15254
15268
  for (const flag of [...target.flags, ...target.cxxFlags]) {
@@ -15279,30 +15293,33 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
15279
15293
  );
15280
15294
  const moduleName = swiftTargetModuleName(name2);
15281
15295
  const originalMap = originalMaps.get(moduleName);
15282
- const originalTokens = originalMap ? moduleMapTokens(input.files[originalMap]) : [];
15283
- if (originalMap && originalTokens.some(
15296
+ const stagedMap = sourceModuleMaps.get(moduleName);
15297
+ const originalPath = originalMap ? path27.join(layout2.root, originalMap) : stagedMap?.path;
15298
+ const originalContents = originalMap ? input.files[originalMap] : stagedMap?.contents;
15299
+ const originalTokens = originalContents ? moduleMapTokens(originalContents) : [];
15300
+ if (originalPath && originalTokens.some(
15284
15301
  (token, index) => token === "module" && (originalTokens[index + 1] === "Swift" || originalTokens[index + 1] === `${moduleName}.Swift`)
15285
15302
  )) {
15286
- nativeHeaderFlags.push("-fmodule-map-file=" + path27.join(layout2.root, originalMap));
15303
+ nativeHeaderFlags.push("-fmodule-map-file=" + originalPath);
15304
+ nativeSwiftHeaderMaps.set(name2, originalPath);
15287
15305
  continue;
15288
15306
  }
15289
15307
  files.set(
15290
15308
  modulemap,
15291
- originalMap ? `extern module ${moduleName} ${JSON.stringify(path27.join(layout2.root, originalMap))}
15309
+ originalPath ? `extern module ${moduleName} ${JSON.stringify(originalPath)}
15292
15310
  module ${moduleName}.Swift {
15293
15311
  header ${JSON.stringify(path27.join(headerDirectory, name2 + "-Swift.h"))}
15294
15312
  requires objc
15295
15313
  }
15296
15314
  ` : swiftObjCModuleMap(
15297
15315
  moduleName,
15298
- [
15299
- ...(input.nativeTargets?.find((target) => target.name === name2)?.publicHeaders ?? []).map((header) => path27.join(layout2.root, header)),
15300
- path27.join(headerDirectory, name2 + "-Swift.h")
15301
- ],
15302
- submoduleImports.get(moduleName)
15316
+ (input.nativeTargets?.find((target) => target.name === name2)?.publicHeaders ?? []).map((header) => path27.join(layout2.root, header)),
15317
+ submoduleImports.get(moduleName),
15318
+ path27.join(headerDirectory, name2 + "-Swift.h")
15303
15319
  )
15304
15320
  );
15305
15321
  nativeHeaderFlags.push("-fmodule-map-file=" + modulemap);
15322
+ nativeSwiftHeaderMaps.set(name2, modulemap);
15306
15323
  }
15307
15324
  const modulePlan = createHash13("sha256").update(
15308
15325
  swiftModuleInputFiles(moduleRoot).join("\n")
@@ -15659,6 +15676,7 @@ module ${moduleName}.Swift {
15659
15676
  nativeFlags,
15660
15677
  nativeImportFlags,
15661
15678
  nativeHeaderFlags,
15679
+ nativeSwiftHeaderMaps,
15662
15680
  nativeHeaderDeclarations,
15663
15681
  objcImplementationModules: new Set(
15664
15682
  targets.filter(
@@ -15816,30 +15834,30 @@ module ${moduleName}.Swift {
15816
15834
  )
15817
15835
  ])
15818
15836
  );
15837
+ const producerSet = /* @__PURE__ */ new Set([...Object.keys(nativeHeaderDeclarations), ...producers]);
15838
+ const orderedProducers = [];
15819
15839
  const included = /* @__PURE__ */ new Set();
15820
15840
  const include = (name2) => {
15821
15841
  if (included.has(name2)) return;
15822
15842
  included.add(name2);
15823
15843
  for (const dependency of dependencies.get(name2) ?? []) include(dependency);
15844
+ if (producerSet.has(name2)) orderedProducers.push(name2);
15824
15845
  };
15825
- for (const producer of producers)
15846
+ for (const producer of producerSet)
15826
15847
  for (const dependency of dependencies.get(producer) ?? []) include(dependency);
15848
+ const needsHeaderStages = [...producerSet].some((name2) => included.has(name2));
15849
+ for (const producer of producerSet) include(producer);
15827
15850
  return {
15828
15851
  nativeBuildTargets: [...native].flatMap(([name2, plan]) => [
15829
15852
  ...!plan.mixed && plan.sources.length > 0 ? [name2] : [],
15830
15853
  ...plan.groups?.map((group) => group.name) ?? (plan.late ? [plan.late.name] : [])
15831
15854
  ]),
15832
- headerProducers: [
15833
- .../* @__PURE__ */ new Set([
15834
- ...Object.keys(nativeHeaderDeclarations),
15835
- ...producers.filter((name2) => !included.has(name2))
15836
- ])
15837
- ],
15855
+ headerProducers: orderedProducers,
15838
15856
  emittedHeaderProducers: [
15839
15857
  .../* @__PURE__ */ new Set([...Object.keys(nativeHeaderDeclarations), ...producers])
15840
15858
  ],
15841
15859
  nativeHeaderDeclarations,
15842
- headerProductTarget,
15860
+ headerProductTarget: needsHeaderStages ? void 0 : headerProductTarget,
15843
15861
  targetFailures,
15844
15862
  generatedOwners,
15845
15863
  targetToolset
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/swift-package.ts
4
4
  function swiftManifestSettings(target) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/is-record.ts
4
4
  function isRecord(value) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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;
@@ -16073,7 +16073,7 @@ function swiftSubmoduleImports(sources) {
16073
16073
  }
16074
16074
  return imports2;
16075
16075
  }
16076
- function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new Set()) {
16076
+ function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new Set(), swiftHeader) {
16077
16077
  const header = (file) => `header ${JSON.stringify(file)}`;
16078
16078
  const stem = (file) => file.slice(file.lastIndexOf("/") + 1).replace(/\.[^.]*$/, "");
16079
16079
  return [
@@ -16081,6 +16081,7 @@ function swiftObjCModuleMap(module2, headers, submodules = /* @__PURE__ */ new S
16081
16081
  ...headers.map(
16082
16082
  (file) => submodules.has(stem(file)) ? ` module ${stem(file)} { ${header(file)} export * }` : ` ${header(file)}`
16083
16083
  ),
16084
+ ...swiftHeader ? [" module Swift {", ` ${header(swiftHeader)}`, " requires objc", " }"] : [],
16084
16085
  " export *",
16085
16086
  "}",
16086
16087
  ""
@@ -16625,7 +16626,10 @@ function swiftModuleInterface(moduleRoot, name3, interfaceRoot) {
16625
16626
  if (declared.size === 0) return null;
16626
16627
  return { declared, header: clangInterfaceHeader((0, import_node_fs27.readFileSync)(built2, "utf8")) };
16627
16628
  }
16628
- var clangInterfaceHeader = (header) => header.replace(/^@import (?:UIKitCore|UIKitText);$/gm, "@import UIKit;").replace(/^@import CoreFoundation;$/gm, "@import Foundation;").replace(/\b_TtC10Foundation\d+(NS\w+)\b/g, "$1").replace(/\b__attribute__\(\(objc_subclassing_restricted\)\)\s*/g, "");
16629
+ var clangInterfaceHeader = (header) => header.replace(/^@import (?:UIKitCore|UIKitText);$/gm, "@import UIKit;").replace(
16630
+ /^@import (?:CoreFoundation|FoundationNetworking);$/gm,
16631
+ "@import Foundation;"
16632
+ ).replace(/\b_TtC10Foundation\d+(NS\w+)\b/g, "$1").replace(/\b__attribute__\(\(objc_subclassing_restricted\)\)\s*/g, "");
16629
16633
  var swiftInterfaceDeclarations = (header) => /* @__PURE__ */ new Set([
16630
16634
  ...[
16631
16635
  ...header.matchAll(
@@ -17459,7 +17463,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
17459
17463
  var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
17460
17464
  var MULTI_MANIFEST_VERSION = 68;
17461
17465
  var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
17462
- var compilerSourceDigest = true ? "0a0bc1c871aee83ea273120655f55a43ddccde646478a452b4c73d2daefd58c3" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
17466
+ var compilerSourceDigest = true ? "2e9f321a97a408a1b3b8b7d85bbcfb108f0761ed9726b832a3c6c2cc52102806" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
17463
17467
  function swiftArtifactHash(input, release, moduleRoot) {
17464
17468
  const hash = (0, import_node_crypto13.createHash)("sha256");
17465
17469
  hash.update(`swift-compile
@@ -17752,6 +17756,10 @@ function emitSwiftPackageManifest(args) {
17752
17756
  includeImportContext(dependency);
17753
17757
  const importedNativeFlags = [
17754
17758
  ...args.nativeImportFlags?.get(target.name) ?? [],
17759
+ ...[...importContext].flatMap((name3) => {
17760
+ const map = name3 === target.name ? void 0 : args.nativeSwiftHeaderMaps?.get(name3);
17761
+ return map ? ["-fmodule-map-file=" + map] : [];
17762
+ }),
17755
17763
  ...[...importContext].flatMap((name3) => args.native?.get(name3)?.importFlags ?? []),
17756
17764
  ...[...importContext].flatMap((name3) => {
17757
17765
  const flags = targets.find((target2) => target2.name === name3)?.swiftFlags ?? [];
@@ -19523,6 +19531,7 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
19523
19531
  )
19524
19532
  );
19525
19533
  const importModuleMaps = /* @__PURE__ */ new Map();
19534
+ const sourceModuleMaps = /* @__PURE__ */ new Map();
19526
19535
  const generatedModuleMaps = [];
19527
19536
  for (const target of targets) {
19528
19537
  const prefix = target.path === "." ? "" : `${target.path}/`;
@@ -19757,6 +19766,10 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
19757
19766
  stageTargetFile(target.name, import_node_path27.default.join(layout2.root, modulemap), moduleContents, {
19758
19767
  allowExisting: true
19759
19768
  });
19769
+ sourceModuleMaps.set(swiftTargetModuleName(target.name), {
19770
+ path: import_node_path27.default.join(layout2.root, modulemap),
19771
+ contents: moduleContents.toString()
19772
+ });
19760
19773
  if (modulemap.endsWith("/Modules/module.modulemap")) {
19761
19774
  const framework = import_node_path27.default.posix.dirname(import_node_path27.default.posix.dirname(modulemap));
19762
19775
  for (const [, header] of moduleContents.toString().matchAll(/\bheader\s+"([^"]+)"/g))
@@ -20031,6 +20044,7 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
20031
20044
  if (native.size > 0) (0, import_node_fs27.mkdirSync)(headerDirectory, { recursive: true });
20032
20045
  const headerAliasFlags = Object.keys(input.headerAliases ?? {}).length > 0 ? ["-ivfsoverlay", headerSearch.files[0]] : [];
20033
20046
  const nativeHeaderFlags = [...headerAliasFlags];
20047
+ const nativeSwiftHeaderMaps = /* @__PURE__ */ new Map();
20034
20048
  const originalMaps = /* @__PURE__ */ new Map();
20035
20049
  for (const target of input.nativeTargets ?? []) {
20036
20050
  for (const flag of [...target.flags, ...target.cxxFlags]) {
@@ -20061,30 +20075,33 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
20061
20075
  );
20062
20076
  const moduleName = swiftTargetModuleName(name3);
20063
20077
  const originalMap = originalMaps.get(moduleName);
20064
- const originalTokens = originalMap ? moduleMapTokens(input.files[originalMap]) : [];
20065
- if (originalMap && originalTokens.some(
20078
+ const stagedMap = sourceModuleMaps.get(moduleName);
20079
+ const originalPath = originalMap ? import_node_path27.default.join(layout2.root, originalMap) : stagedMap?.path;
20080
+ const originalContents = originalMap ? input.files[originalMap] : stagedMap?.contents;
20081
+ const originalTokens = originalContents ? moduleMapTokens(originalContents) : [];
20082
+ if (originalPath && originalTokens.some(
20066
20083
  (token, index) => token === "module" && (originalTokens[index + 1] === "Swift" || originalTokens[index + 1] === `${moduleName}.Swift`)
20067
20084
  )) {
20068
- nativeHeaderFlags.push("-fmodule-map-file=" + import_node_path27.default.join(layout2.root, originalMap));
20085
+ nativeHeaderFlags.push("-fmodule-map-file=" + originalPath);
20086
+ nativeSwiftHeaderMaps.set(name3, originalPath);
20069
20087
  continue;
20070
20088
  }
20071
20089
  files2.set(
20072
20090
  modulemap,
20073
- originalMap ? `extern module ${moduleName} ${JSON.stringify(import_node_path27.default.join(layout2.root, originalMap))}
20091
+ originalPath ? `extern module ${moduleName} ${JSON.stringify(originalPath)}
20074
20092
  module ${moduleName}.Swift {
20075
20093
  header ${JSON.stringify(import_node_path27.default.join(headerDirectory, name3 + "-Swift.h"))}
20076
20094
  requires objc
20077
20095
  }
20078
20096
  ` : swiftObjCModuleMap(
20079
20097
  moduleName,
20080
- [
20081
- ...(input.nativeTargets?.find((target) => target.name === name3)?.publicHeaders ?? []).map((header) => import_node_path27.default.join(layout2.root, header)),
20082
- import_node_path27.default.join(headerDirectory, name3 + "-Swift.h")
20083
- ],
20084
- submoduleImports.get(moduleName)
20098
+ (input.nativeTargets?.find((target) => target.name === name3)?.publicHeaders ?? []).map((header) => import_node_path27.default.join(layout2.root, header)),
20099
+ submoduleImports.get(moduleName),
20100
+ import_node_path27.default.join(headerDirectory, name3 + "-Swift.h")
20085
20101
  )
20086
20102
  );
20087
20103
  nativeHeaderFlags.push("-fmodule-map-file=" + modulemap);
20104
+ nativeSwiftHeaderMaps.set(name3, modulemap);
20088
20105
  }
20089
20106
  const modulePlan = (0, import_node_crypto13.createHash)("sha256").update(
20090
20107
  swiftModuleInputFiles(moduleRoot).join("\n")
@@ -20441,6 +20458,7 @@ module ${moduleName}.Swift {
20441
20458
  nativeFlags,
20442
20459
  nativeImportFlags,
20443
20460
  nativeHeaderFlags,
20461
+ nativeSwiftHeaderMaps,
20444
20462
  nativeHeaderDeclarations,
20445
20463
  objcImplementationModules: new Set(
20446
20464
  targets.filter(
@@ -20598,30 +20616,30 @@ module ${moduleName}.Swift {
20598
20616
  )
20599
20617
  ])
20600
20618
  );
20619
+ const producerSet = /* @__PURE__ */ new Set([...Object.keys(nativeHeaderDeclarations), ...producers]);
20620
+ const orderedProducers = [];
20601
20621
  const included = /* @__PURE__ */ new Set();
20602
20622
  const include = (name3) => {
20603
20623
  if (included.has(name3)) return;
20604
20624
  included.add(name3);
20605
20625
  for (const dependency of dependencies.get(name3) ?? []) include(dependency);
20626
+ if (producerSet.has(name3)) orderedProducers.push(name3);
20606
20627
  };
20607
- for (const producer of producers)
20628
+ for (const producer of producerSet)
20608
20629
  for (const dependency of dependencies.get(producer) ?? []) include(dependency);
20630
+ const needsHeaderStages = [...producerSet].some((name3) => included.has(name3));
20631
+ for (const producer of producerSet) include(producer);
20609
20632
  return {
20610
20633
  nativeBuildTargets: [...native].flatMap(([name3, plan]) => [
20611
20634
  ...!plan.mixed && plan.sources.length > 0 ? [name3] : [],
20612
20635
  ...plan.groups?.map((group) => group.name) ?? (plan.late ? [plan.late.name] : [])
20613
20636
  ]),
20614
- headerProducers: [
20615
- .../* @__PURE__ */ new Set([
20616
- ...Object.keys(nativeHeaderDeclarations),
20617
- ...producers.filter((name3) => !included.has(name3))
20618
- ])
20619
- ],
20637
+ headerProducers: orderedProducers,
20620
20638
  emittedHeaderProducers: [
20621
20639
  .../* @__PURE__ */ new Set([...Object.keys(nativeHeaderDeclarations), ...producers])
20622
20640
  ],
20623
20641
  nativeHeaderDeclarations,
20624
- headerProductTarget,
20642
+ headerProductTarget: needsHeaderStages ? void 0 : headerProductTarget,
20625
20643
  targetFailures,
20626
20644
  generatedOwners,
20627
20645
  targetToolset
@@ -30267,17 +30285,17 @@ function remoteSwiftCheckouts(root) {
30267
30285
  return import_node_path41.default.join(import_node_fs40.default.realpathSync(cacheDir()), "swift-packages", key2, "checkouts");
30268
30286
  }
30269
30287
  var UNSUPPORTED_NATIVE = /\.(s|S)$/;
30270
- function unlowerableSources(files2, target) {
30288
+ function unlowerableSources(files2, target, portable) {
30271
30289
  if (target.declaresWasiNativeSettings) return [];
30272
30290
  return [
30273
- ...files2.filter((file) => UNSUPPORTED_NATIVE.test(file)),
30291
+ ...portable.has(target.name) ? [] : files2.filter((file) => UNSUPPORTED_NATIVE.test(file)),
30274
30292
  ...files2.filter(isSwiftNativeTranslationUnit).filter((file) => swiftCTakesReturnAddress(import_node_fs40.default.readFileSync(file, "utf8")))
30275
30293
  ];
30276
30294
  }
30277
- function unloweredSources(files2, target) {
30295
+ function unloweredSources(files2, target, portable) {
30278
30296
  if (target.type !== "regular") return null;
30279
30297
  if (!files2.some(isSwiftNativeTranslationUnit)) return null;
30280
- const unlowered = unlowerableSources(files2, target);
30298
+ const unlowered = unlowerableSources(files2, target, portable);
30281
30299
  if (unlowered.length === 0) return null;
30282
30300
  const headers = import_node_path41.default.resolve(target.dir, target.publicHeadersPath);
30283
30301
  if (!files2.some((file) => file.startsWith(`${headers}${import_node_path41.default.sep}`) && file.endsWith(".h")))
@@ -30350,6 +30368,7 @@ async function resolveSwiftPackagesAsync(options) {
30350
30368
  function resolveSwiftPackages(options) {
30351
30369
  const { rootDir, resolved, products, localDirs } = options;
30352
30370
  const providedTargets = new Set(options.provided ?? []);
30371
+ const portableAssembly = options.portableAssembly ?? /* @__PURE__ */ new Set();
30353
30372
  const providedProducts = new Set(options.provided ?? []);
30354
30373
  const result = {
30355
30374
  sourceLinks: { targets: [], owners: [] },
@@ -30447,7 +30466,7 @@ function resolveSwiftPackages(options) {
30447
30466
  if (target.type === "macro") return preservePackage(pkg, [name3], "host");
30448
30467
  const files2 = target.type === "regular" || target.type === "system" ? swiftTargetFiles(pkg.manifest, target) : [];
30449
30468
  const gap = options.binaryGaps?.get(name3);
30450
- const unlowerable = unlowerableSources(files2, target);
30469
+ const unlowerable = unlowerableSources(files2, target, portableAssembly);
30451
30470
  const placeholder = placeholderPackage(pkg);
30452
30471
  const ownReason = target.type === "binary" ? `${name3} ${BINARY}${gap ? `; ${gap}` : ""}` : placeholder && gap ? `${name3} stands in as a placeholder (${placeholder}), and ${gap}` : target.type !== "regular" && target.type !== "system" ? `${name3} is a ${target.type} target` : unlowerable.length > 0 ? `${name3} has native sources with no wasm32 lowering: ${unlowerable.map((file) => import_node_path41.default.relative(pkg.manifest.dir, file)).join(", ")}${gap ? `; ${gap}` : ""}` : null;
30453
30472
  const reasons = target.dependencies.map((dependency) => {
@@ -30528,7 +30547,7 @@ function resolveSwiftPackages(options) {
30528
30547
  (file) => file.endsWith(".swift") && import_node_fs40.default.readFileSync(file, "utf8").trim() === ""
30529
30548
  ))
30530
30549
  return false;
30531
- if (unloweredSources(files2, target)) return false;
30550
+ if (unloweredSources(files2, target, portableAssembly)) return false;
30532
30551
  claimed.add(key2);
30533
30552
  providedTargets.delete(name3);
30534
30553
  for (const dependency of target.dependencies) {
@@ -30576,7 +30595,7 @@ function resolveSwiftPackages(options) {
30576
30595
  if (target.type === "executable") continue;
30577
30596
  const files2 = target.type === "regular" || target.type === "system" ? swiftTargetFiles(pkg.manifest, target) : [];
30578
30597
  const objc = target.type === "regular" && files2.some((file) => /\.(m|mm)$/.test(file));
30579
- const unlowered = unloweredSources(files2, target);
30598
+ const unlowered = unloweredSources(files2, target, portableAssembly);
30580
30599
  const gap = placeholderPackage(pkg);
30581
30600
  const sources = files2.filter((file) => file.endsWith(".swift"));
30582
30601
  const release = (setting) => setting.configuration !== "debug";
@@ -30875,7 +30894,7 @@ function sourceClosureDigest(srcDir, entrypoints) {
30875
30894
  return hash.digest("hex");
30876
30895
  }
30877
30896
  var standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
30878
- var STANDIN_SOURCE_DIGEST = true ? "f5dd13fe8982e117facf0d8c668773904364a887ec47c728db7584b73f34d119" : standinSourceDigest();
30897
+ var STANDIN_SOURCE_DIGEST = true ? "70b9e9f32fde5739daaee933df31b2584f9ef3289c322a0f5b03f1eaac947880" : standinSourceDigest();
30879
30898
 
30880
30899
  // src/swift-standins.ts
30881
30900
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -33116,7 +33135,7 @@ function graphStandin(module2, graphs, values, wasm, binary, toolchain, work, re
33116
33135
  }
33117
33136
  if (omit.size + plain.size + unobjc.size + trapped.size + unconformed.size + forced.size + nonfailable.size === before)
33118
33137
  throw new Error(
33119
- `its generated source does not typecheck: ${elsewhere.slice(0, 3).join("; ") || check2.stderr.trim().slice(0, 400)}`
33138
+ `its generated source does not typecheck: ${(elsewhere.length > 0 ? elsewhere : [...check2.stderr.matchAll(/^\S+?:\d+:\d+: error: .*$/gm)].map((line) => line[0].replace(/^[^:]*\//, ""))).slice(0, 3).join("; ") || check2.stderr.trim().slice(0, 400)}`
33120
33139
  );
33121
33140
  }
33122
33141
  }
@@ -36161,6 +36180,60 @@ function readXcodeAppTargetPrepared(input, target, configuration, options) {
36161
36180
  deferPackageResolution: true
36162
36181
  });
36163
36182
  }
36183
+ var emptyWasmAssembly = /* @__PURE__ */ new Map();
36184
+ async function wasmPortableAssembly(binaries, toolchainBin, moduleRoot) {
36185
+ const assembly = binaries.filter(
36186
+ (binary) => binary.unloweredSources?.length && binary.unloweredSources.every((file) => /\.(s|S)$/.test(file)) && binary.publicHeaders !== void 0
36187
+ );
36188
+ if (assembly.length === 0) return /* @__PURE__ */ new Set();
36189
+ const sdk = swiftSdkPaths(moduleRoot, toolchainBin);
36190
+ const clang = import_node_path54.default.join(toolchainBin, "clang");
36191
+ const empty = (binary, file) => {
36192
+ const source = import_node_path54.default.join(binary.dir, file);
36193
+ const key2 = (0, import_node_crypto29.createHash)("sha256").update(
36194
+ JSON.stringify([
36195
+ clang,
36196
+ sdk.sysroot,
36197
+ sdk.cFlags,
36198
+ binary.dir,
36199
+ binary.publicHeaders
36200
+ ])
36201
+ ).update(import_node_fs53.default.readFileSync(source)).digest("hex");
36202
+ const known = emptyWasmAssembly.get(key2);
36203
+ if (known) return known;
36204
+ const result = new Promise(
36205
+ (resolve2) => (0, import_node_child_process33.execFile)(
36206
+ clang,
36207
+ [
36208
+ "-target",
36209
+ "wasm32-unknown-wasip1",
36210
+ "--sysroot",
36211
+ sdk.sysroot,
36212
+ ...sdk.cFlags,
36213
+ "-I",
36214
+ import_node_path54.default.join(binary.dir, binary.publicHeaders),
36215
+ "-I",
36216
+ import_node_path54.default.dirname(source),
36217
+ "-E",
36218
+ "-P",
36219
+ "-x",
36220
+ "assembler-with-cpp",
36221
+ source
36222
+ ],
36223
+ { maxBuffer: 64 * 1024 * 1024 },
36224
+ (error, stdout) => resolve2(!error && stdout.trim() === "")
36225
+ )
36226
+ );
36227
+ emptyWasmAssembly.set(key2, result);
36228
+ return result;
36229
+ };
36230
+ const portable = await Promise.all(
36231
+ assembly.map(
36232
+ async (binary) => (await Promise.all(binary.unloweredSources.map((file) => empty(binary, file)))).every(Boolean) ? [binary.target] : []
36233
+ )
36234
+ );
36235
+ return new Set(portable.flat());
36236
+ }
36164
36237
  async function swiftPackages(entry, app) {
36165
36238
  const stamp = (file) => import_node_fs53.default.existsSync(file) ? (0, import_node_crypto29.createHash)("sha256").update(import_node_fs53.default.readFileSync(file)).digest("hex") : null;
36166
36239
  const owners = [...app.frameworks, app].map((target) => ({
@@ -36225,7 +36298,14 @@ async function swiftPackages(entry, app) {
36225
36298
  entry.moduleRoot,
36226
36299
  import_node_path54.default.join(resolved.toolchainBin, "clang++")
36227
36300
  );
36228
- const cxxArtifacts = reached.filter(standinArtifact);
36301
+ const portableAssembly = await wasmPortableAssembly(
36302
+ reached,
36303
+ resolved.toolchainBin,
36304
+ entry.moduleRoot
36305
+ );
36306
+ const cxxArtifacts = reached.filter(
36307
+ (binary) => standinArtifact(binary) && !portableAssembly.has(binary.target)
36308
+ );
36229
36309
  const generation = standinGenerationInputs(cxxArtifacts, toolchain, entry.behavior);
36230
36310
  if (cached.standinKey !== generation) {
36231
36311
  const replaced = new Set(
@@ -36252,6 +36332,7 @@ async function swiftPackages(entry, app) {
36252
36332
  [...replaced].filter((target) => !built2.gaps.has(target))
36253
36333
  ),
36254
36334
  binaryGaps: built2.gaps,
36335
+ portableAssembly,
36255
36336
  owners
36256
36337
  });
36257
36338
  for (const target of new Set(built2.standins.map((standin) => standin.target)))
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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;
@@ -2923,7 +2923,7 @@ function readIosSdkTree(root) {
2923
2923
 
2924
2924
  // src/swift-standin-digest.ts
2925
2925
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
2926
- var STANDIN_SOURCE_DIGEST = true ? "f5dd13fe8982e117facf0d8c668773904364a887ec47c728db7584b73f34d119" : standinSourceDigest();
2926
+ var STANDIN_SOURCE_DIGEST = true ? "70b9e9f32fde5739daaee933df31b2584f9ef3289c322a0f5b03f1eaac947880" : standinSourceDigest();
2927
2927
 
2928
2928
  // src/expo-native-workspace.ts
2929
2929
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -6417,7 +6417,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
6417
6417
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
6418
6418
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
6419
6419
  ).join("");
6420
- var compilerSourceDigest = true ? "0a0bc1c871aee83ea273120655f55a43ddccde646478a452b4c73d2daefd58c3" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
6420
+ var compilerSourceDigest = true ? "2e9f321a97a408a1b3b8b7d85bbcfb108f0761ed9726b832a3c6c2cc52102806" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
6421
6421
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
6422
6422
  "CFAllocator",
6423
6423
  "CFArray",
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (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;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2219 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2221 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/worklet-executable.ts
4
4
  import { parse } from "acorn";
@@ -772,6 +772,7 @@ export interface CompositorStats {
772
772
  immediateDemand: boolean;
773
773
  pendingDemandBackingEpoch: number | null;
774
774
  nativeFrameArmed: boolean;
775
+ holds: Readonly<Record<string, number>>;
775
776
  };
776
777
  demandPaintsSuperseded: number;
777
778
  entryEvals: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peachsim",
3
- "version": "0.1.2219",
3
+ "version": "0.1.2221",
4
4
  "description": "Vite and Metro plugins, testing drivers, and SDK exports for peach.",
5
5
  "author": "Tamagui LLC",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -9,19 +9,12 @@
9
9
  #import <Foundation/NSObject.h>
10
10
  #import <UIKit/UIGeometry.h>
11
11
  #import <UIKit/UIKitDefines.h>
12
+ #import <UIKitTypes/UILayoutPriority.h>
12
13
 
13
14
  NS_HEADER_AUDIT_BEGIN(nullability, sendability)
14
15
 
15
16
  @class NSArray, NSDictionary, NSLayoutAnchor;
16
17
 
17
- typedef float UILayoutPriority NS_TYPED_EXTENSIBLE_ENUM API_UNAVAILABLE(watchos);
18
- static const UILayoutPriority UILayoutPriorityRequired API_AVAILABLE(ios(6.0)) API_UNAVAILABLE(watchos) = 1000; // A required constraint. Do not exceed this.
19
- static const UILayoutPriority UILayoutPriorityDefaultHigh API_AVAILABLE(ios(6.0)) API_UNAVAILABLE(watchos) = 750; // This is the priority level with which a button resists compressing its content.
20
- static const UILayoutPriority UILayoutPriorityDragThatCanResizeScene API_AVAILABLE(macCatalyst(13.0)) API_UNAVAILABLE(watchos) = 510; // This is the appropriate priority level for a drag that may end up resizing the window's scene.
21
- static const UILayoutPriority UILayoutPrioritySceneSizeStayPut API_AVAILABLE(macCatalyst(13.0)) API_UNAVAILABLE(watchos) = 500; // This is the priority level at which the window's scene prefers to stay the same size. It's generally not appropriate to make a constraint at exactly this priority. You want to be higher or lower.
22
- static const UILayoutPriority UILayoutPriorityDragThatCannotResizeScene API_AVAILABLE(macCatalyst(13.0)) API_UNAVAILABLE(watchos) = 490; // This is the priority level at which a split view divider, say, is dragged. It won't resize the window's scene.
23
- static const UILayoutPriority UILayoutPriorityDefaultLow API_AVAILABLE(ios(6.0)) API_UNAVAILABLE(watchos) = 250; // This is the priority level at which a button hugs its contents horizontally.
24
- static const UILayoutPriority UILayoutPriorityFittingSizeLevel API_AVAILABLE(ios(6.0)) API_UNAVAILABLE(watchos) = 50; // When you send -[UIView systemLayoutSizeFittingSize:], the size fitting most closely to the target size (the argument) is computed. UILayoutPriorityFittingSizeLevel is the priority level with which the view wants to conform to the target size in that computation. It's quite low. It is generally not appropriate to make a constraint at exactly this priority. You want to be higher or lower.
25
18
 
26
19
  #if !TARGET_OS_IPHONE
27
20
  typedef float NSLayoutPriority NS_TYPED_EXTENSIBLE_ENUM;
@@ -19,6 +19,7 @@ framework module UIKit [system] {
19
19
  header "UIGestureRecognizerSubclass.h"
20
20
  export *
21
21
  }
22
+ module * { export * }
22
23
  export UIKitText
23
24
  export *
24
25
  }
@@ -4,6 +4,7 @@
4
4
  #import <Foundation/Foundation.h>
5
5
  #import <UIKitAnimationOptions/UIViewAnimationOptions.h>
6
6
  #import <UIKitTypes/UIWindowLevel.h>
7
+ #import <UIKitTypes/UILayoutPriority.h>
7
8
 
8
9
  typedef NS_ENUM(NSInteger, UIPointerEffectTintMode) {
9
10
  UIPointerEffectTintModeNone = 0,