peachsim 0.1.2198 → 0.1.2199

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 (111) hide show
  1. package/dist-lib/agent-daemon-client.cjs +1 -1
  2. package/dist-lib/agent-events.cjs +1 -1
  3. package/dist-lib/attached-projects.cjs +1 -1
  4. package/dist-lib/auth/shared-session.cjs +1 -1
  5. package/dist-lib/backend-origin.cjs +1 -1
  6. package/dist-lib/beta.cjs +1 -1
  7. package/dist-lib/beta.mjs +1 -1
  8. package/dist-lib/bridge-constants.cjs +1 -1
  9. package/dist-lib/bridge-contract-input.cjs +1 -1
  10. package/dist-lib/bridge-contract-input.mjs +1 -1
  11. package/dist-lib/bridge-contract.cjs +1 -1
  12. package/dist-lib/bridge-contract.mjs +1 -1
  13. package/dist-lib/bundle-channel.cjs +139 -81
  14. package/dist-lib/capture-contract.cjs +1 -1
  15. package/dist-lib/capture-contract.mjs +1 -1
  16. package/dist-lib/cloud-contract.cjs +1 -1
  17. package/dist-lib/cloud-contract.mjs +1 -1
  18. package/dist-lib/cloud-test-args.cjs +1 -1
  19. package/dist-lib/cloud-test-args.mjs +1 -1
  20. package/dist-lib/cloud.cjs +1 -1
  21. package/dist-lib/cloud.mjs +1 -1
  22. package/dist-lib/config.cjs +1 -1
  23. package/dist-lib/config.mjs +1 -1
  24. package/dist-lib/detox/index.cjs +1 -1
  25. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  26. package/dist-lib/expo-swift-bundle.cjs +106 -49
  27. package/dist-lib/expo-swift-metadata.cjs +1 -1
  28. package/dist-lib/expo-swift-metadata.mjs +1 -1
  29. package/dist-lib/home-paths.cjs +1 -1
  30. package/dist-lib/host/bridge-host.cjs +143 -85
  31. package/dist-lib/host/fetch-proxy-handler.cjs +3 -3
  32. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  33. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  34. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  35. package/dist-lib/host/websocket-proxy.cjs +1 -1
  36. package/dist-lib/index.cjs +3 -3
  37. package/dist-lib/jump-to-source-babel.cjs +1 -1
  38. package/dist-lib/jump-to-source-native.cjs +1 -1
  39. package/dist-lib/kotlin-host.cjs +1 -1
  40. package/dist-lib/menu.cjs +1 -1
  41. package/dist-lib/menu.mjs +1 -1
  42. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  43. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  44. package/dist-lib/metro-production-bundle.cjs +1 -1
  45. package/dist-lib/metro-production-bundle.mjs +1 -1
  46. package/dist-lib/metro.cjs +3 -3
  47. package/dist-lib/native-app-identity-project.cjs +2 -2
  48. package/dist-lib/native-app-identity-project.mjs +2 -2
  49. package/dist-lib/native-app-identity.cjs +1 -1
  50. package/dist-lib/native-app-identity.mjs +1 -1
  51. package/dist-lib/native-firebase-metadata.cjs +1 -1
  52. package/dist-lib/native-firebase-metadata.mjs +1 -1
  53. package/dist-lib/pdfium-raster.cjs +1 -1
  54. package/dist-lib/pdfium-raster.mjs +1 -1
  55. package/dist-lib/plist.cjs +1 -1
  56. package/dist-lib/plist.mjs +1 -1
  57. package/dist-lib/profiles.cjs +1 -1
  58. package/dist-lib/public-brand.cjs +1 -1
  59. package/dist-lib/public-origins-lib-esm.json +24 -24
  60. package/dist-lib/public-origins-lib.json +53 -53
  61. package/dist-lib/react-native-host-modules.cjs +1 -1
  62. package/dist-lib/react-native-host-modules.mjs +1 -1
  63. package/dist-lib/reap-browser.cjs +1 -1
  64. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  65. package/dist-lib/sdk.cjs +1 -1
  66. package/dist-lib/sdk.mjs +1 -1
  67. package/dist-lib/skills.cjs +195 -134
  68. package/dist-lib/swift-compile.cjs +2 -2
  69. package/dist-lib/swift-compile.mjs +2 -2
  70. package/dist-lib/swift-package.cjs +1 -1
  71. package/dist-lib/swift-package.mjs +1 -1
  72. package/dist-lib/swift-submit.cjs +1 -1
  73. package/dist-lib/swift-submit.mjs +1 -1
  74. package/dist-lib/swift-toolchain.cjs +1 -1
  75. package/dist-lib/swift.cjs +1 -1
  76. package/dist-lib/vite-swift.cjs +91 -39
  77. package/dist-lib/vite.cjs +3 -3
  78. package/dist-lib/worklet-executable.cjs +1 -1
  79. package/dist-lib/worklet-executable.mjs +1 -1
  80. package/kotlin/sdk.tar.gz +0 -0
  81. package/package.json +1 -1
  82. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h +2 -0
  83. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h +1 -1
  84. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSByteCountFormatter.h +1 -1
  85. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSCharacterSet.h +1 -1
  86. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSCompoundPredicate.h +1 -1
  87. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSDateIntervalFormatter.h +1 -1
  88. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSDecimalNumber.h +1 -1
  89. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSEnergyFormatter.h +1 -1
  90. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSExpression.h +1 -1
  91. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSFileHandle.h +2 -2
  92. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSISO8601DateFormatter.h +1 -1
  93. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSIndexSet.h +1 -1
  94. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSLengthFormatter.h +1 -1
  95. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSLock.h +3 -3
  96. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSMassFormatter.h +1 -1
  97. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSMeasurementFormatter.h +1 -1
  98. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSNotification.h +1 -1
  99. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSNotificationQueue.h +1 -1
  100. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h +4 -0
  101. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSOrthography.h +1 -1
  102. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSScanner.h +1 -1
  103. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSThread.h +1 -1
  104. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSUnit.h +25 -25
  105. package/sdk/ios/System/Library/Frameworks/QuartzCore.framework/Headers/CoreAnimation.h +1 -0
  106. package/src/expo-native-workspace.ts +2 -3
  107. package/src/native-prebuilt.ts +34 -0
  108. package/src/native-swift-slices.ts +43 -2
  109. package/src/react-native-bridge-modules.ts +7 -1
  110. package/src/swift-packages.ts +3 -0
  111. package/src/swift-standins.ts +5 -2
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (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;
@@ -12468,7 +12468,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
12468
12468
  var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
12469
12469
  var MULTI_MANIFEST_VERSION = 68;
12470
12470
  var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
12471
- var compilerSourceDigest = true ? "45099ee041f3233f5f998f83729594ab81a38eac8fcf30e21c05ba133c5cb780" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
12471
+ var compilerSourceDigest = true ? "da64a99bc639b1dce8024a42c5f5308e09e564e6e119be33e33a85c79e245197" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
12472
12472
  function swiftArtifactHash(input, release, moduleRoot) {
12473
12473
  const hash = (0, import_node_crypto13.createHash)("sha256");
12474
12474
  hash.update(`swift-compile
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/swift-compile.ts
4
4
  import {
@@ -12448,7 +12448,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
12448
12448
  var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
12449
12449
  var MULTI_MANIFEST_VERSION = 68;
12450
12450
  var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
12451
- var compilerSourceDigest = true ? "45099ee041f3233f5f998f83729594ab81a38eac8fcf30e21c05ba133c5cb780" : swiftCompilerSourceDigest(import.meta.dirname);
12451
+ var compilerSourceDigest = true ? "da64a99bc639b1dce8024a42c5f5308e09e564e6e119be33e33a85c79e245197" : swiftCompilerSourceDigest(import.meta.dirname);
12452
12452
  function swiftArtifactHash(input, release, moduleRoot) {
12453
12453
  const hash = createHash13("sha256");
12454
12454
  hash.update(`swift-compile
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (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.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (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.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (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.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (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.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (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.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (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.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (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;
@@ -17309,7 +17309,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
17309
17309
  var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
17310
17310
  var MULTI_MANIFEST_VERSION = 68;
17311
17311
  var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
17312
- var compilerSourceDigest = true ? "45099ee041f3233f5f998f83729594ab81a38eac8fcf30e21c05ba133c5cb780" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
17312
+ var compilerSourceDigest = true ? "da64a99bc639b1dce8024a42c5f5308e09e564e6e119be33e33a85c79e245197" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
17313
17313
  function swiftArtifactHash(input, release, moduleRoot) {
17314
17314
  const hash = (0, import_node_crypto13.createHash)("sha256");
17315
17315
  hash.update(`swift-compile
@@ -21593,10 +21593,10 @@ function compileSwiftProjectOnce(input, options) {
21593
21593
  // src/swift-host.ts
21594
21594
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
21595
21595
  var import_node_async_hooks = require("node:async_hooks");
21596
- var import_node_child_process32 = require("node:child_process");
21596
+ var import_node_child_process33 = require("node:child_process");
21597
21597
  var import_node_crypto29 = require("node:crypto");
21598
21598
  var import_node_fs53 = __toESM(require("node:fs"), 1);
21599
- var import_node_os14 = __toESM(require("node:os"), 1);
21599
+ var import_node_os15 = __toESM(require("node:os"), 1);
21600
21600
  var import_node_path54 = __toESM(require("node:path"), 1);
21601
21601
 
21602
21602
  // ../sootsim-swift/src/stringCatalog.ts
@@ -29614,7 +29614,7 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
29614
29614
 
29615
29615
  // src/swift-cxx-reachable.ts
29616
29616
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
29617
- var import_node_child_process30 = require("node:child_process");
29617
+ var import_node_child_process31 = require("node:child_process");
29618
29618
  var import_node_crypto27 = require("node:crypto");
29619
29619
  var import_node_fs50 = __toESM(require("node:fs"), 1);
29620
29620
  var import_node_path51 = __toESM(require("node:path"), 1);
@@ -29665,7 +29665,7 @@ function cxxContextFlags(args) {
29665
29665
 
29666
29666
  // src/swift-objc-compile.ts
29667
29667
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
29668
- var import_node_child_process29 = require("node:child_process");
29668
+ var import_node_child_process30 = require("node:child_process");
29669
29669
  var import_node_crypto26 = require("node:crypto");
29670
29670
  var import_node_fs49 = __toESM(require("node:fs"), 1);
29671
29671
  var import_node_path50 = __toESM(require("node:path"), 1);
@@ -30275,6 +30275,7 @@ function resolveSwiftPackages(options) {
30275
30275
  (file) => file.endsWith(".swift") && import_node_fs40.default.readFileSync(file, "utf8").trim() === ""
30276
30276
  ))
30277
30277
  return false;
30278
+ if (providedTargets.has(name3) && assemblySources(files2, target)) return false;
30278
30279
  claimed.add(key2);
30279
30280
  providedTargets.delete(name3);
30280
30281
  for (const dependency of target.dependencies) {
@@ -30614,11 +30615,11 @@ function sourceClosureDigest(srcDir, entrypoints) {
30614
30615
  return hash.digest("hex");
30615
30616
  }
30616
30617
  var standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
30617
- var STANDIN_SOURCE_DIGEST = true ? "afff2f6ba145885813b507114e72f9218f9a815a257ab2e44f7da376b7bf5cd1" : standinSourceDigest();
30618
+ var STANDIN_SOURCE_DIGEST = true ? "a996006bade8d371dad7a05919cb0812bb1e5e08ae40cbb5af2802d3df188b2d" : standinSourceDigest();
30618
30619
 
30619
30620
  // src/swift-standins.ts
30620
30621
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
30621
- var import_node_child_process28 = require("node:child_process");
30622
+ var import_node_child_process29 = require("node:child_process");
30622
30623
  var import_node_crypto25 = require("node:crypto");
30623
30624
  var import_node_fs48 = __toESM(require("node:fs"), 1);
30624
30625
  var import_node_path49 = __toESM(require("node:path"), 1);
@@ -30690,6 +30691,29 @@ function fetchNativeEntry(kind, name3, key2) {
30690
30691
  import_node_fs42.default.rmSync(staging, { recursive: true, force: true });
30691
30692
  }
30692
30693
  }
30694
+ function installNativeEntry(kind, name3, key2, source) {
30695
+ const files2 = parseFiles(
30696
+ import_node_fs42.default.readFileSync(import_node_path43.default.join(source, "descriptor.json"), "utf8"),
30697
+ kind,
30698
+ name3,
30699
+ key2
30700
+ );
30701
+ for (const file of files2) {
30702
+ const target = import_node_path43.default.join(source, file.path);
30703
+ if (import_node_fs42.default.statSync(target).size !== file.size || sha2562(target) !== file.sha256)
30704
+ throw new Error(
30705
+ `native prebuilt ${kind}/${name3}/${key2}: ${file.path} does not match its descriptor`
30706
+ );
30707
+ }
30708
+ const dir = entryCache(kind, name3, key2);
30709
+ import_node_fs42.default.mkdirSync(import_node_path43.default.dirname(dir), { recursive: true });
30710
+ const staging = `${dir}.${process.pid}.partial`;
30711
+ import_node_fs42.default.rmSync(staging, { recursive: true, force: true });
30712
+ import_node_fs42.default.cpSync(source, staging, { recursive: true });
30713
+ import_node_fs42.default.rmSync(dir, { recursive: true, force: true });
30714
+ import_node_fs42.default.renameSync(staging, dir);
30715
+ return dir;
30716
+ }
30693
30717
 
30694
30718
  // src/native-slices.ts
30695
30719
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -30979,8 +31003,10 @@ function nativeStaticLibrary(file, recipe, moduleRoot) {
30979
31003
 
30980
31004
  // src/native-swift-slices.ts
30981
31005
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
31006
+ var import_node_child_process27 = require("node:child_process");
30982
31007
  var import_node_crypto24 = require("node:crypto");
30983
31008
  var import_node_fs44 = __toESM(require("node:fs"), 1);
31009
+ var import_node_os13 = __toESM(require("node:os"), 1);
30984
31010
  var import_node_path46 = __toESM(require("node:path"), 1);
30985
31011
  var SENTRY_SWIFT_SLICE = {
30986
31012
  name: "Sentry",
@@ -31006,6 +31032,31 @@ function nativeSwiftSliceEntry(distribution, generator) {
31006
31032
  };
31007
31033
  return { name: SENTRY_SWIFT_SLICE.name, inputs, key: nativeEntryKey(inputs) };
31008
31034
  }
31035
+ function privateSentrySlice(entry, moduleRoot) {
31036
+ const privateRoot = privateSwiftDistributionRoot();
31037
+ if (!privateRoot || import_node_fs44.default.realpathSync(privateRoot) !== import_node_fs44.default.realpathSync(moduleRoot))
31038
+ return null;
31039
+ const script = import_node_path46.default.join(sourceSwiftCheckout(), "scripts/build-sentry-wasi.ts");
31040
+ if (!import_node_fs44.default.existsSync(script))
31041
+ throw new Error(
31042
+ "the Sentry slice for a private Swift distribution builds from a Contrast source checkout"
31043
+ );
31044
+ const staging = import_node_fs44.default.mkdtempSync(import_node_path46.default.join(import_node_fs44.default.realpathSync(import_node_os13.default.tmpdir()), "sentry-slice-"));
31045
+ try {
31046
+ process.stderr.write("peach: building the Sentry slice for a private distribution\u2026\n");
31047
+ (0, import_node_child_process27.execFileSync)("bun", [script, "--output", staging, "--module-root", moduleRoot], {
31048
+ stdio: ["ignore", 2, 2]
31049
+ });
31050
+ return installNativeEntry(
31051
+ "slice",
31052
+ entry.name,
31053
+ entry.key,
31054
+ import_node_path46.default.join(staging, nativeEntryPrefix("slice", entry.name, entry.key))
31055
+ );
31056
+ } finally {
31057
+ import_node_fs44.default.rmSync(staging, { recursive: true, force: true });
31058
+ }
31059
+ }
31009
31060
  function nativeSwiftSlice(standin, moduleRoot, generator, configured, artifact) {
31010
31061
  if (standin.module !== SENTRY_SWIFT_SLICE.name) return standin;
31011
31062
  const native = simulatorNativeLibrary(artifact());
@@ -31018,7 +31069,7 @@ function nativeSwiftSlice(standin, moduleRoot, generator, configured, artifact)
31018
31069
  const distribution = swiftDistributionAt(moduleRoot);
31019
31070
  if (!distribution) throw new Error("native Swift slices need a compiled distribution");
31020
31071
  const entry = nativeSwiftSliceEntry(distribution, generator);
31021
- const directory = fetchNativeEntry("slice", entry.name, entry.key);
31072
+ const directory = fetchNativeEntry("slice", entry.name, entry.key) ?? privateSentrySlice(entry, moduleRoot);
31022
31073
  if (!directory)
31023
31074
  throw new Error(
31024
31075
  `native Swift slice ${entry.name}/${entry.key} is not built for this compiler and SDK`
@@ -31094,7 +31145,7 @@ function outputLockStdio(standard, env = process.env) {
31094
31145
 
31095
31146
  // src/swift-cxx-standin.ts
31096
31147
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
31097
- var import_node_child_process27 = require("node:child_process");
31148
+ var import_node_child_process28 = require("node:child_process");
31098
31149
  var import_node_fs47 = __toESM(require("node:fs"), 1);
31099
31150
  var import_node_path48 = __toESM(require("node:path"), 1);
31100
31151
 
@@ -31285,7 +31336,7 @@ async function emitCxxStandin(input) {
31285
31336
  "-I",
31286
31337
  input.headers
31287
31338
  ];
31288
- const includes = (0, import_node_child_process27.spawnSync)(input.clang, [...flags, "-M", "-MT", "peach", probe], {
31339
+ const includes = (0, import_node_child_process28.spawnSync)(input.clang, [...flags, "-M", "-MT", "peach", probe], {
31289
31340
  encoding: "utf8",
31290
31341
  env: swiftEnvironment(),
31291
31342
  maxBuffer: 16 * 1024 * 1024
@@ -31305,7 +31356,7 @@ async function emitCxxStandin(input) {
31305
31356
  const output2 = import_node_fs47.default.openSync(ast, "w");
31306
31357
  let parsed;
31307
31358
  try {
31308
- parsed = (0, import_node_child_process27.spawnSync)(
31359
+ parsed = (0, import_node_child_process28.spawnSync)(
31309
31360
  input.clang,
31310
31361
  [...flags, "-fsyntax-only", "-Xclang", "-ast-dump=json", probe],
31311
31362
  { stdio: ["ignore", output2, "pipe"], encoding: "utf8", env: swiftEnvironment() }
@@ -31363,7 +31414,7 @@ async function emitCxxStandin(input) {
31363
31414
  sourceFile,
31364
31415
  [...prelude, ...live.map((item) => item.text)].join("\n") + "\n"
31365
31416
  );
31366
- const checked = (0, import_node_child_process27.spawnSync)(
31417
+ const checked = (0, import_node_child_process28.spawnSync)(
31367
31418
  input.clang,
31368
31419
  [
31369
31420
  ...flags,
@@ -31402,7 +31453,7 @@ async function emitCxxStandin(input) {
31402
31453
  var TRIPLE = "wasm32-unknown-wasip1";
31403
31454
  var cacheDir4 = import_node_path49.default.join(cacheDir(), "swift-standins");
31404
31455
  function exec(file, args, cwd) {
31405
- return (0, import_node_child_process28.execFileSync)(file, args, {
31456
+ return (0, import_node_child_process29.execFileSync)(file, args, {
31406
31457
  cwd,
31407
31458
  encoding: "utf8",
31408
31459
  env: swiftEnvironment(),
@@ -31777,7 +31828,8 @@ function cxxOnly(surface) {
31777
31828
  if (surface.kind !== "c" && surface.kind !== "objc") return false;
31778
31829
  return files(surface.headers, (name3) => name3.endsWith(".h")).some((file) => {
31779
31830
  const guards = [];
31780
- for (const line of import_node_fs48.default.readFileSync(import_node_path49.default.join(surface.headers, file), "utf8").split("\n")) {
31831
+ const code = import_node_fs48.default.readFileSync(import_node_path49.default.join(surface.headers, file), "utf8").replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/.*$/gm, "");
31832
+ for (const line of code.split("\n")) {
31781
31833
  if (/^\s*#\s*if/.test(line))
31782
31834
  guards.push(/__cplusplus/.test(line) && !/!\s*defined|ifndef/.test(line));
31783
31835
  else if (/^\s*#\s*endif/.test(line)) guards.pop();
@@ -32095,7 +32147,7 @@ function placeholderStandin(surface, binary, toolchain, work, behavior, siblings
32095
32147
  const out = import_node_path49.default.join(work, "graphs");
32096
32148
  import_node_fs48.default.mkdirSync(import_node_path49.default.join(work, "interface"), { recursive: true });
32097
32149
  import_node_fs48.default.mkdirSync(out, { recursive: true });
32098
- const extracted = (0, import_node_child_process28.spawnSync)(
32150
+ const extracted = (0, import_node_child_process29.spawnSync)(
32099
32151
  import_node_path49.default.join(toolchain.toolchainBin, "swiftc"),
32100
32152
  [
32101
32153
  "-emit-module",
@@ -32469,7 +32521,7 @@ function graphStandin(module2, graphs, values, wasm, binary, toolchain, work, re
32469
32521
  );
32470
32522
  }
32471
32523
  import_node_fs48.default.writeFileSync(file, source);
32472
- const check2 = (0, import_node_child_process28.spawnSync)(
32524
+ const check2 = (0, import_node_child_process29.spawnSync)(
32473
32525
  import_node_path49.default.join(toolchain.toolchainBin, "swiftc"),
32474
32526
  // emitting the module runs the diagnostics a typecheck skips, such as
32475
32527
  // literal overflow, which the app's build of the stand-in reaches
@@ -32823,7 +32875,7 @@ async function cxxStandin(surface, binary, toolchain, work) {
32823
32875
  roots.map((root) => `#include ${JSON.stringify(root)}
32824
32876
  `).join("")
32825
32877
  );
32826
- const language = (0, import_node_child_process28.spawnSync)(
32878
+ const language = (0, import_node_child_process29.spawnSync)(
32827
32879
  import_node_path49.default.join(toolchain.toolchainBin, "clang"),
32828
32880
  [
32829
32881
  "-target",
@@ -33019,7 +33071,7 @@ function standinLibrary(binary, searchRoot, toolchain) {
33019
33071
  }
33020
33072
  function buildRustCrate(manifest, library, searchRoot) {
33021
33073
  const crate = import_node_path49.default.relative(searchRoot, import_node_path49.default.dirname(manifest));
33022
- const rustup = (0, import_node_child_process28.spawnSync)(
33074
+ const rustup = (0, import_node_child_process29.spawnSync)(
33023
33075
  // runner-toolchain-platform: darwin
33024
33076
  "rustup",
33025
33077
  [
@@ -33038,7 +33090,7 @@ function buildRustCrate(manifest, library, searchRoot) {
33038
33090
  throw new Error(
33039
33091
  `rustup could not install Rust ${RUST_TOOLCHAIN} with ${RUST_TARGET} for ${crate}: ${failure(rustup)}`
33040
33092
  );
33041
- const result = (0, import_node_child_process28.spawnSync)(
33093
+ const result = (0, import_node_child_process29.spawnSync)(
33042
33094
  // runner-toolchain-platform: darwin
33043
33095
  "cargo",
33044
33096
  [
@@ -33181,7 +33233,7 @@ async function sourceStandins(binaries, toolchain, provided, behavior) {
33181
33233
  })
33182
33234
  );
33183
33235
  const build = await new Promise((resolve2) => {
33184
- const child = (0, import_node_child_process28.spawn)(
33236
+ const child = (0, import_node_child_process29.spawn)(
33185
33237
  "bun",
33186
33238
  [
33187
33239
  import_node_path49.default.join(repo, "scripts/build/swift-standins-submit.ts"),
@@ -34385,7 +34437,7 @@ function prepareXcodeSwiftProducts(app, binaries, moduleRoot) {
34385
34437
  provided: [...providers.keys()]
34386
34438
  };
34387
34439
  try {
34388
- const lock = (0, import_node_child_process29.spawnSync)(
34440
+ const lock = (0, import_node_child_process30.spawnSync)(
34389
34441
  "perl",
34390
34442
  ["-e", 'open(my $f, ">&=", 3) or die $!; flock($f, 2) or die $!'],
34391
34443
  { stdio: ["ignore", "pipe", "pipe", descriptor], encoding: "utf8" }
@@ -34556,7 +34608,7 @@ function prepareXcodeSwiftProducts(app, binaries, moduleRoot) {
34556
34608
  import_node_path50.default.join(work, `${target.moduleName}.o`)
34557
34609
  ]
34558
34610
  ];
34559
- const result = (0, import_node_child_process29.spawnSync)(frontend, args, {
34611
+ const result = (0, import_node_child_process30.spawnSync)(frontend, args, {
34560
34612
  cwd: work,
34561
34613
  encoding: "utf8",
34562
34614
  env: swiftEnvironment(),
@@ -34676,7 +34728,7 @@ async function prepareXcodeObjCImplementations(app, binaries, moduleRoot) {
34676
34728
  const work = import_node_path50.default.join(parent, key2);
34677
34729
  const descriptor = import_node_fs49.default.openSync(`${work}.lock`, "a");
34678
34730
  try {
34679
- const locked = (0, import_node_child_process29.spawnSync)(
34731
+ const locked = (0, import_node_child_process30.spawnSync)(
34680
34732
  "perl",
34681
34733
  ["-e", 'open(my $f, ">&=", 3) or die $!; flock($f, 2) or die $!'],
34682
34734
  { stdio: ["ignore", "pipe", "pipe", descriptor], encoding: "utf8" }
@@ -34924,7 +34976,7 @@ async function prepareXcodeObjCImplementations(app, binaries, moduleRoot) {
34924
34976
  ...dependencies ? ["-MD", "-MF", dependencies, "-H"] : []
34925
34977
  ];
34926
34978
  const result = await new Promise((resolve2) => {
34927
- const child = (0, import_node_child_process29.spawn)(
34979
+ const child = (0, import_node_child_process30.spawn)(
34928
34980
  import_node_path50.default.join(toolchain.toolchainBin, cxx ? "clang++" : "clang"),
34929
34981
  args,
34930
34982
  {
@@ -35114,7 +35166,7 @@ async function xcodeCxxReachable(app, binaries, moduleRoot, clang) {
35114
35166
  failed = captured.failed;
35115
35167
  reached = captured.reached;
35116
35168
  } else {
35117
- const result2 = (0, import_node_child_process30.spawnSync)(clang, [...cleaned, "-M", "-MT", "peach", "-H"], {
35169
+ const result2 = (0, import_node_child_process31.spawnSync)(clang, [...cleaned, "-M", "-MT", "peach", "-H"], {
35118
35170
  cwd: work,
35119
35171
  encoding: "utf8",
35120
35172
  env: swiftEnvironment(),
@@ -35240,10 +35292,10 @@ async function xcodeCxxReachable(app, binaries, moduleRoot, clang) {
35240
35292
 
35241
35293
  // src/swift-pdf-raster.ts
35242
35294
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
35243
- var import_node_child_process31 = require("node:child_process");
35295
+ var import_node_child_process32 = require("node:child_process");
35244
35296
  var import_node_crypto28 = require("node:crypto");
35245
35297
  var import_node_fs52 = __toESM(require("node:fs"), 1);
35246
- var import_node_os13 = __toESM(require("node:os"), 1);
35298
+ var import_node_os14 = __toESM(require("node:os"), 1);
35247
35299
  var import_node_path53 = __toESM(require("node:path"), 1);
35248
35300
 
35249
35301
  // cli/internal-child-contract.ts
@@ -35345,12 +35397,12 @@ function rasterBinary() {
35345
35397
  try {
35346
35398
  import_node_fs52.default.mkdirSync(cacheDir(), { recursive: true });
35347
35399
  const source = import_node_path53.default.join(
35348
- import_node_fs52.default.mkdtempSync(import_node_path53.default.join(import_node_os13.default.tmpdir(), "swift-pdf-raster-")),
35400
+ import_node_fs52.default.mkdtempSync(import_node_path53.default.join(import_node_os14.default.tmpdir(), "swift-pdf-raster-")),
35349
35401
  "raster.swift"
35350
35402
  );
35351
35403
  import_node_fs52.default.writeFileSync(source, RASTER_SWIFT);
35352
35404
  try {
35353
- (0, import_node_child_process31.execFileSync)("xcrun", ["swiftc", "-o", binary, source], { stdio: "pipe" });
35405
+ (0, import_node_child_process32.execFileSync)("xcrun", ["swiftc", "-o", binary, source], { stdio: "pipe" });
35354
35406
  } finally {
35355
35407
  import_node_fs52.default.rmSync(import_node_path53.default.dirname(source), { recursive: true, force: true });
35356
35408
  }
@@ -35370,15 +35422,15 @@ function rasterizePdfFile(diskPath, pdfSha256) {
35370
35422
  } catch {
35371
35423
  }
35372
35424
  const out = import_node_path53.default.join(
35373
- import_node_fs52.default.mkdtempSync(import_node_path53.default.join(import_node_os13.default.tmpdir(), "swift-pdf-png-")),
35425
+ import_node_fs52.default.mkdtempSync(import_node_path53.default.join(import_node_os14.default.tmpdir(), "swift-pdf-png-")),
35374
35426
  "out.png"
35375
35427
  );
35376
35428
  try {
35377
35429
  if (process.platform === "darwin") {
35378
- (0, import_node_child_process31.execFileSync)(rasterBinary(), [diskPath, "3", out], { stdio: "pipe" });
35430
+ (0, import_node_child_process32.execFileSync)(rasterBinary(), [diskPath, "3", out], { stdio: "pipe" });
35379
35431
  } else {
35380
35432
  const { executable, prefixArgs } = rnxSelfInvocation();
35381
- (0, import_node_child_process31.execFileSync)(
35433
+ (0, import_node_child_process32.execFileSync)(
35382
35434
  executable,
35383
35435
  [
35384
35436
  ...prefixArgs,
@@ -36661,7 +36713,7 @@ function buildSwiftBundleFiles(packagePath, hosted, inputs, resourceBundles) {
36661
36713
  }
36662
36714
  }
36663
36715
  if (xcode?.app.postBundleScripts.length) {
36664
- const dir = import_node_fs53.default.mkdtempSync(import_node_path54.default.join(import_node_os14.default.tmpdir(), "peach-xcode-bundle-"));
36716
+ const dir = import_node_fs53.default.mkdtempSync(import_node_path54.default.join(import_node_os15.default.tmpdir(), "peach-xcode-bundle-"));
36665
36717
  const wrapper = import_node_path54.default.basename(xcode.app.settings("UNLOCALIZED_RESOURCES_FOLDER_PATH")) || `${xcode.app.name}.app`;
36666
36718
  const bundle = import_node_path54.default.join(dir, wrapper);
36667
36719
  try {
@@ -36688,7 +36740,7 @@ function buildSwiftBundleFiles(packagePath, hosted, inputs, resourceBundles) {
36688
36740
  };
36689
36741
  try {
36690
36742
  const [shell, ...args] = phase.command;
36691
- (0, import_node_child_process32.execFileSync)(shell, args, {
36743
+ (0, import_node_child_process33.execFileSync)(shell, args, {
36692
36744
  cwd: phase.directory,
36693
36745
  env,
36694
36746
  stdio: ["ignore", "pipe", "pipe"],
@@ -37583,12 +37635,12 @@ function swiftViteLifetime(server) {
37583
37635
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
37584
37636
  var import_node_crypto31 = require("node:crypto");
37585
37637
  var import_node_fs55 = __toESM(require("node:fs"), 1);
37586
- var import_node_os15 = __toESM(require("node:os"), 1);
37638
+ var import_node_os16 = __toESM(require("node:os"), 1);
37587
37639
  var import_node_path56 = __toESM(require("node:path"), 1);
37588
37640
 
37589
37641
  // src/one-widget-metadata.ts
37590
37642
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
37591
- var import_node_child_process33 = require("node:child_process");
37643
+ var import_node_child_process34 = require("node:child_process");
37592
37644
  var import_node_crypto30 = require("node:crypto");
37593
37645
  var import_node_fs54 = __toESM(require("node:fs"), 1);
37594
37646
  var import_node_module = require("node:module");
@@ -37621,7 +37673,7 @@ function isHomeWidgetFamily(value) {
37621
37673
  }
37622
37674
 
37623
37675
  // src/one-widget-metadata.ts
37624
- var run4 = (0, import_node_util7.promisify)(import_node_child_process33.execFile);
37676
+ var run4 = (0, import_node_util7.promisify)(import_node_child_process34.execFile);
37625
37677
  var ONE_WIDGET_PACKAGE = "OneWidgets";
37626
37678
  var configs = /* @__PURE__ */ new Map();
37627
37679
  var reads = /* @__PURE__ */ new Map();
@@ -37786,7 +37838,7 @@ async function oneWidgetPackage(appRoot) {
37786
37838
  ].join("\n")
37787
37839
  );
37788
37840
  const packagePath = import_node_path56.default.join(
37789
- import_node_os15.default.tmpdir(),
37841
+ import_node_os16.default.tmpdir(),
37790
37842
  "peach-one-widgets",
37791
37843
  (0, import_node_crypto31.createHash)("sha256").update(root).digest("hex"),
37792
37844
  ONE_WIDGET_PACKAGE
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (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;
@@ -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 ? "afff2f6ba145885813b507114e72f9218f9a815a257ab2e44f7da376b7bf5cd1" : standinSourceDigest();
1912
+ var STANDIN_SOURCE_DIGEST = true ? "a996006bade8d371dad7a05919cb0812bb1e5e08ae40cbb5af2802d3df188b2d" : 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 ? "45099ee041f3233f5f998f83729594ab81a38eac8fcf30e21c05ba133c5cb780" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
5394
+ var compilerSourceDigest = true ? "da64a99bc639b1dce8024a42c5f5308e09e564e6e119be33e33a85c79e245197" : 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.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (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.2198 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2199 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/worklet-executable.ts
4
4
  import { parse } from "acorn";
package/kotlin/sdk.tar.gz CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peachsim",
3
- "version": "0.1.2198",
3
+ "version": "0.1.2199",
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",
@@ -1,5 +1,7 @@
1
1
  #include <limits.h>
2
+ #ifndef PEACH_SWIFT_CLASS
2
3
  #define PEACH_SWIFT_CLASS(module) __attribute__((external_source_symbol(language="Swift", defined_in=#module, generated_declaration)))
4
+ #endif
3
5
  #ifdef __OBJC__
4
6
  @class NSArray, NSAttributedString, NSString, NSNull, NSCharacterSet, NSData, NSDate, NSTimeZone, NSDictionary, NSError, NSLocale, NSNumber, NSSet, NSURL;
5
7
  #endif
@@ -98,7 +98,7 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability)
98
98
  ///
99
99
  /// For information about the bundle structure of iOS and macOS apps, see [Bundle Programming Guide](https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/Introduction/Introduction.html#//apple_ref/doc/uid/10000123i). For information about the structure of framework bundles, see [Framework Programming Guide](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Frameworks.html#//apple_ref/doc/uid/10000183i). For information about the structure of macOS plug-ins, see [Code Loading Programming Topics](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/LoadingCode/LoadingCode.html#//apple_ref/doc/uid/10000052i).
100
100
  NS_SWIFT_SENDABLE
101
- @interface NSBundle : NSObject
101
+ PEACH_SWIFT_CLASS(Foundation) @interface NSBundle : NSObject
102
102
 
103
103
  /* Methods for creating or retrieving bundle instances. */
104
104
 
@@ -51,7 +51,7 @@ typedef NS_ENUM(NSInteger, NSByteCountFormatterCountStyle) {
51
51
  /// > Tip:
52
52
  /// > In Swift, you can use ``ByteCountFormatStyle`` or ``Measurement/FormatStyle/ByteCount`` rather than ``ByteCountFormatter``. The ``FormatStyle`` API offers a declarative idiom for customizing the formatting of various types. Also, Foundation caches identical ``FormatStyle`` instances, so you don't need to pass them around your app, or risk wasting memory with duplicate formatters.
53
53
  API_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0))
54
- @interface NSByteCountFormatter : NSFormatter
54
+ PEACH_SWIFT_CLASS(Foundation) @interface NSByteCountFormatter : NSFormatter
55
55
 
56
56
  /// Converts a byte count into the specified string format without creating an `NSNumber` object.
57
57
  ///
@@ -226,7 +226,7 @@ enum {
226
226
  ///
227
227
  /// > Important:
228
228
  /// > The Swift overlay to the Foundation framework provides the ``CharacterSet`` structure, which bridges to the ``NSMutableCharacterSet`` class and its immutable superclass, ``NSCharacterSet``. For more information about value types, see <doc://com.apple.documentation/documentation/swift/working-with-foundation-types>.
229
- @interface NSMutableCharacterSet : NSCharacterSet <NSCopying, NSMutableCopying, NSSecureCoding>
229
+ PEACH_SWIFT_CLASS(Foundation) @interface NSMutableCharacterSet : NSCharacterSet <NSCopying, NSMutableCopying, NSSecureCoding>
230
230
 
231
231
  /// Adds to the receiver the characters whose Unicode values are in a given range.
232
232
  ///
@@ -28,7 +28,7 @@ typedef NS_ENUM(NSUInteger, NSCompoundPredicateType) {
28
28
  /// - An `OR` predicate with no subpredicates evaluates to <doc://com.apple.documentation/documentation/swift/false>.
29
29
  /// - A compound predicate with one or more subpredicates evaluates to the truth of its subpredicates.
30
30
  API_AVAILABLE(macos(10.4), ios(3.0), watchos(2.0), tvos(9.0))
31
- @interface NSCompoundPredicate : NSPredicate
31
+ PEACH_SWIFT_CLASS(Foundation) @interface NSCompoundPredicate : NSPredicate
32
32
 
33
33
  /// Returns the receiver that a specified type initializes using predicates from a specified array.
34
34
  ///
@@ -74,7 +74,7 @@ typedef NS_ENUM(NSUInteger, NSDateIntervalFormatterStyle) {
74
74
  /// > In Swift, you can use ``Date/IntervalFormatStyle`` rather than ``DateIntervalFormatter``. The ``FormatStyle`` API offers a declarative idiom for customizing the formatting of various types. Also, Foundation caches identical ``FormatStyle`` instances, so you don't need to pass them around your app, or risk wasting memory with duplicate formatters.
75
75
  NS_SWIFT_SENDABLE
76
76
  API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
77
- @interface NSDateIntervalFormatter : NSFormatter
77
+ PEACH_SWIFT_CLASS(Foundation) @interface NSDateIntervalFormatter : NSFormatter
78
78
 
79
79
  /// The locale for the formatter. Default is `[NSLocale currentLocale]`.
80
80
  @property (null_resettable, copy) NSLocale *locale;
@@ -254,7 +254,7 @@ NS_SWIFT_SENDABLE
254
254
  ///
255
255
  /// For more information, see the ``NSDecimalNumberBehaviors`` protocol specification.
256
256
  NS_SWIFT_SENDABLE
257
- @interface NSDecimalNumberHandler : NSObject <NSDecimalNumberBehaviors, NSCoding> {
257
+ PEACH_SWIFT_CLASS(Foundation) @interface NSDecimalNumberHandler : NSObject <NSDecimalNumberBehaviors, NSCoding> {
258
258
  @private
259
259
  signed int _scale:16;
260
260
  unsigned _roundingMode:3;
@@ -23,7 +23,7 @@ typedef NS_ENUM(NSInteger, NSEnergyFormatterUnit) {
23
23
  /// > Note:
24
24
  /// > As of iOS 10, macOS 10.12, tvOS 10, and watchOS 3, Foundation provides the ``MeasurementFormatter`` class, which can be used to represent quantities of ``UnitEnergy`` to provide equivalent functionality to ``EnergyFormatter``. You are encouraged to transition to these new Foundation Units and Measurements APIs whenever possible.
25
25
  API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
26
- @interface NSEnergyFormatter : NSFormatter
26
+ PEACH_SWIFT_CLASS(Foundation) @interface NSEnergyFormatter : NSFormatter
27
27
 
28
28
  /// The number formatter used to format the numbers in an energy string.
29
29
  ///
@@ -90,7 +90,7 @@ typedef NS_ENUM(NSUInteger, NSExpressionType) {
90
90
  ///
91
91
  /// Although Core Data supports evaluation of the predefined functions, it doesn't support the evaluation of custom predicate functions in the persistent stores (during a fetch).
92
92
  API_AVAILABLE(macos(10.4), ios(3.0), watchos(2.0), tvos(9.0))
93
- @interface NSExpression : NSObject <NSSecureCoding, NSCopying> {
93
+ PEACH_SWIFT_CLASS(Foundation) @interface NSExpression : NSObject <NSSecureCoding, NSCopying> {
94
94
  @package
95
95
  struct _expressionFlags {
96
96
  unsigned int _evaluationBlocked:1;
@@ -23,7 +23,7 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability)
23
23
  ///
24
24
  /// When using a file handle object to communicate asynchronously with a socket, you must initiate the corresponding operations from a thread with an active run loop. Although the read, accept, and wait operations themselves are performed asynchronously on background threads, the file handle uses a run loop source to monitor the operations and notify your code appropriately. Therefore, you must call those methods from your application's main thread or from any thread where you've configured a run loop and are using it to process events.
25
25
  NS_SWIFT_SENDABLE
26
- @interface NSFileHandle : NSObject <NSSecureCoding>
26
+ PEACH_SWIFT_CLASS(Foundation) @interface NSFileHandle : NSObject <NSSecureCoding>
27
27
 
28
28
  /// The data currently available in the receiver.
29
29
  ///
@@ -440,7 +440,7 @@ FOUNDATION_EXPORT NSString * const NSFileHandleNotificationMonitorModes API_DEPR
440
440
  ///
441
441
  /// ``Pipe`` objects provide an object-oriented interface for accessing pipes. An ``Pipe`` object represents both ends of a pipe and enables communication through the pipe. A pipe is a one-way communications channel between related processes; one process writes data, while the other process reads that data. The data that passes through the pipe is buffered; the size of the buffer is determined by the underlying operating system. ``Pipe`` is an abstract class, the public interface of a class cluster.
442
442
  NS_SWIFT_SENDABLE
443
- @interface NSPipe : NSObject
443
+ PEACH_SWIFT_CLASS(Foundation) @interface NSPipe : NSObject
444
444
 
445
445
  /// The receiver's read file handle.
446
446
  @property (readonly, retain) NSFileHandle *fileHandleForReading;