peachsim 0.1.1469 → 0.1.1477

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 (82) hide show
  1. package/cli/drivers/playwright-sim-host.ts +7 -2
  2. package/cli/drivers/playwright.ts +6 -6
  3. package/dist-lib/agent-daemon-client.cjs +1 -1
  4. package/dist-lib/agent-events.cjs +1 -1
  5. package/dist-lib/attached-projects.cjs +1 -1
  6. package/dist-lib/auth/shared-session.cjs +1 -1
  7. package/dist-lib/backend-origin.cjs +1 -1
  8. package/dist-lib/beta.cjs +1 -1
  9. package/dist-lib/beta.mjs +1 -1
  10. package/dist-lib/bridge-constants.cjs +1 -1
  11. package/dist-lib/bridge-contract-input.cjs +1 -1
  12. package/dist-lib/bridge-contract-input.mjs +1 -1
  13. package/dist-lib/bridge-contract.cjs +1 -1
  14. package/dist-lib/bridge-contract.mjs +1 -1
  15. package/dist-lib/bundle-channel.cjs +13 -2
  16. package/dist-lib/capture-contract.cjs +1 -1
  17. package/dist-lib/capture-contract.mjs +1 -1
  18. package/dist-lib/cloud-contract.cjs +1 -1
  19. package/dist-lib/cloud-contract.mjs +1 -1
  20. package/dist-lib/cloud-test-args.cjs +1 -1
  21. package/dist-lib/cloud-test-args.mjs +1 -1
  22. package/dist-lib/cloud.cjs +1 -1
  23. package/dist-lib/cloud.mjs +1 -1
  24. package/dist-lib/config.cjs +1 -1
  25. package/dist-lib/config.mjs +1 -1
  26. package/dist-lib/detox/index.cjs +46 -40
  27. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  28. package/dist-lib/expo-swift-bundle.cjs +7 -2
  29. package/dist-lib/expo-swift-metadata.cjs +1 -1
  30. package/dist-lib/expo-swift-metadata.mjs +1 -1
  31. package/dist-lib/home-paths.cjs +1 -1
  32. package/dist-lib/host/bridge-host.cjs +134 -37
  33. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  34. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  35. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  36. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  37. package/dist-lib/host/websocket-proxy.cjs +1 -1
  38. package/dist-lib/index.cjs +1 -1
  39. package/dist-lib/jump-to-source-babel.cjs +1 -1
  40. package/dist-lib/jump-to-source-native.cjs +1 -1
  41. package/dist-lib/kotlin-host.cjs +1 -1
  42. package/dist-lib/menu.cjs +1 -1
  43. package/dist-lib/menu.mjs +1 -1
  44. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  45. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  46. package/dist-lib/metro-production-bundle.cjs +1 -1
  47. package/dist-lib/metro-production-bundle.mjs +1 -1
  48. package/dist-lib/metro.cjs +1 -1
  49. package/dist-lib/native-app-identity-project.cjs +1 -1
  50. package/dist-lib/native-app-identity-project.mjs +1 -1
  51. package/dist-lib/native-app-identity.cjs +1 -1
  52. package/dist-lib/native-app-identity.mjs +1 -1
  53. package/dist-lib/native-firebase-metadata.cjs +1 -1
  54. package/dist-lib/native-firebase-metadata.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/react-native-host-modules.cjs +1 -1
  60. package/dist-lib/react-native-host-modules.mjs +1 -1
  61. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  62. package/dist-lib/sdk.cjs +1 -1
  63. package/dist-lib/sdk.mjs +1 -1
  64. package/dist-lib/skills.cjs +141 -93
  65. package/dist-lib/swift-compile.cjs +7 -2
  66. package/dist-lib/swift-compile.mjs +7 -2
  67. package/dist-lib/swift-package.cjs +1 -1
  68. package/dist-lib/swift-package.mjs +1 -1
  69. package/dist-lib/swift-submit.cjs +1 -1
  70. package/dist-lib/swift-submit.mjs +1 -1
  71. package/dist-lib/swift-toolchain.cjs +1 -1
  72. package/dist-lib/swift.cjs +1 -1
  73. package/dist-lib/vite-swift.cjs +7 -2
  74. package/dist-lib/vite.cjs +1 -1
  75. package/dist-lib/worklet-executable.cjs +1 -1
  76. package/dist-lib/worklet-executable.mjs +1 -1
  77. package/package.json +1 -1
  78. package/src/admitted-mac-build.ts +12 -0
  79. package/src/bridge-constants.ts +5 -3
  80. package/src/host/bridge-host.ts +34 -6
  81. package/src/swift-compile.ts +5 -4
  82. package/src/worker-system-chunks.ts +10 -9
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -35,6 +35,66 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
35
35
  ));
36
36
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
37
 
38
+ // ../../scripts/lib/chromium-admission.ts
39
+ function readChromiumQueue(deps, verified3, own) {
40
+ const { fs: fs25, os: os10, path: path29, childProcess: childProcess2 } = deps;
41
+ const dir = path29.join(
42
+ process.platform === "win32" ? os10.tmpdir() : "/tmp",
43
+ "chromium-admission"
44
+ );
45
+ fs25.mkdirSync(dir, { recursive: true });
46
+ const limit = Math.max(2, Math.floor(os10.availableParallelism() / 3));
47
+ const live = (entry) => {
48
+ const match = /^(\d+)-(\d+)-/.exec(entry);
49
+ if (!match) return false;
50
+ const pid = Number(match[1]);
51
+ try {
52
+ process.kill(pid, 0);
53
+ } catch (err) {
54
+ if (!(err instanceof Error && "code" in err && err.code === "EPERM")) return false;
55
+ }
56
+ const known = verified3.get(entry);
57
+ if (known !== void 0) return known;
58
+ let same = pid === process.pid;
59
+ if (!same) {
60
+ try {
61
+ const started = childProcess2.execFileSync("ps", ["-p", String(pid), "-o", "lstart="], { encoding: "utf8" }).trim();
62
+ same = Math.abs(Date.parse(started) / 1e3 - Number(match[2])) <= 2;
63
+ } catch {
64
+ same = false;
65
+ }
66
+ }
67
+ verified3.set(entry, same);
68
+ return same;
69
+ };
70
+ const tickets = [];
71
+ for (const entry of fs25.readdirSync(dir)) {
72
+ if (entry !== own && !live(entry)) {
73
+ try {
74
+ fs25.unlinkSync(path29.join(dir, entry));
75
+ } catch {
76
+ }
77
+ continue;
78
+ }
79
+ try {
80
+ tickets.push({
81
+ entry,
82
+ created: fs25.statSync(path29.join(dir, entry), { bigint: true }).ctimeNs
83
+ });
84
+ } catch {
85
+ }
86
+ }
87
+ tickets.sort(
88
+ (a, b) => a.created === b.created ? a.entry < b.entry ? -1 : 1 : a.created < b.created ? -1 : 1
89
+ );
90
+ return { dir, limit, tickets: tickets.map((t) => t.entry) };
91
+ }
92
+ var init_chromium_admission = __esm({
93
+ "../../scripts/lib/chromium-admission.ts"() {
94
+ "use strict";
95
+ }
96
+ });
97
+
38
98
  // src/backend-origin.ts
39
99
  function normalizeHostname(hostname) {
40
100
  return hostname.replace(/^\[|\]$/g, "").toLowerCase();
@@ -4617,6 +4677,7 @@ function quotedEnd(text3, start, end) {
4617
4677
  return end;
4618
4678
  }
4619
4679
  function decodeSingleQuoted(contents) {
4680
+ if (!contents.includes("\\")) return contents;
4620
4681
  let value = "";
4621
4682
  for (let cursor = 0; cursor < contents.length; cursor++) {
4622
4683
  const character = contents[cursor];
@@ -5036,6 +5097,15 @@ async function sha256HexBytes(bytes) {
5036
5097
  return hex;
5037
5098
  }
5038
5099
  async function assertSelfContainedMetroArtifactAssets(bundle) {
5100
+ return visitVerifiedMetroArtifactAssets(
5101
+ bundle,
5102
+ () => {
5103
+ },
5104
+ () => {
5105
+ }
5106
+ );
5107
+ }
5108
+ async function visitVerifiedMetroArtifactAssets(bundle, acceptVariant, acceptSite) {
5039
5109
  const seen = /* @__PURE__ */ new Set();
5040
5110
  const manifestLines = [];
5041
5111
  let descriptorsCount = 0;
@@ -5046,7 +5116,10 @@ async function assertSelfContainedMetroArtifactAssets(bundle) {
5046
5116
  for (const site of iterateAssetDescriptorSites(bundle)) {
5047
5117
  const descriptor = site.descriptor;
5048
5118
  const key2 = assetDescriptorKey(descriptor);
5049
- if (seen.has(key2)) continue;
5119
+ if (seen.has(key2)) {
5120
+ acceptSite(site);
5121
+ continue;
5122
+ }
5050
5123
  seen.add(key2);
5051
5124
  descriptorsCount++;
5052
5125
  const label = `${descriptor.httpServerLocation}/${descriptor.name}.${descriptor.type}`;
@@ -5081,11 +5154,13 @@ async function assertSelfContainedMetroArtifactAssets(bundle) {
5081
5154
  `peach ios --remote bundle is not self-contained: ${label} scale ${descriptor.scales[index]} bytes do not match their content hash`
5082
5155
  );
5083
5156
  }
5157
+ acceptVariant(descriptor, index, decoded);
5084
5158
  variants++;
5085
5159
  bytes += decoded.byteLength;
5086
5160
  descriptorBytes += decoded.byteLength;
5087
5161
  }
5088
5162
  sizes.push({ asset: label, bytes: descriptorBytes });
5163
+ acceptSite(site);
5089
5164
  }
5090
5165
  } catch (error) {
5091
5166
  if (error instanceof Error && error.message.startsWith("peach ios --remote bundle is not self-contained:")) {
@@ -5107,52 +5182,48 @@ async function assertSelfContainedMetroArtifactAssets(bundle) {
5107
5182
  };
5108
5183
  }
5109
5184
  async function separateMetroArtifactAssets(bundle) {
5110
- const assets2 = await assertSelfContainedMetroArtifactAssets(bundle);
5111
- const sites = scanAssetDescriptorSites(bundle);
5112
5185
  const resources = /* @__PURE__ */ new Map();
5113
5186
  const entries = /* @__PURE__ */ new Map();
5114
- for (const site of sites) {
5115
- const descriptor = site.descriptor;
5116
- const key2 = assetDescriptorKey(descriptor);
5117
- if (entries.has(key2)) continue;
5118
- const contentType = metroAssetContentType(descriptor.type);
5119
- const prefix = `data:${contentType};base64,`;
5120
- const fileUris = [];
5121
- const fileHashes = [];
5122
- for (let index = 0; index < descriptor.scales.length; index++) {
5123
- const dataUri = descriptor.fileUris?.[index];
5187
+ const pieces = [];
5188
+ let cursor = 0;
5189
+ const assets2 = await visitVerifiedMetroArtifactAssets(
5190
+ bundle,
5191
+ (descriptor, index, bytes) => {
5192
+ const key2 = assetDescriptorKey(descriptor);
5193
+ let entry = entries.get(key2);
5194
+ if (!entry) {
5195
+ entry = { fileUris: [], fileHashes: [], scales: descriptor.scales };
5196
+ entries.set(key2, entry);
5197
+ }
5124
5198
  const sha256 = descriptor.fileHashes?.[index];
5125
- if (!dataUri || !sha256) throw new Error("verified Metro asset is incomplete");
5126
5199
  const scale = descriptor.scales[index];
5127
- if (scale === void 0) throw new Error("verified Metro asset scale is missing");
5200
+ if (!sha256 || scale === void 0) {
5201
+ throw new Error("verified Metro asset variant is incomplete");
5202
+ }
5128
5203
  const filename = metroAssetScaleFilename(descriptor.name, descriptor.type, scale);
5129
5204
  const uri = `${PEACH_BUNDLE_ASSET_PREFIX}${sha256}/${encodeURIComponent(filename)}`;
5130
5205
  if (!resources.has(uri)) {
5131
- const bytes = decodeBase64ToBytes(dataUri.slice(prefix.length));
5132
5206
  resources.set(uri, {
5133
5207
  uri,
5134
5208
  sha256,
5135
- contentType,
5209
+ contentType: metroAssetContentType(descriptor.type),
5136
5210
  bytes,
5137
5211
  byteLength: bytes.byteLength
5138
5212
  });
5139
5213
  }
5140
- fileUris.push(uri);
5141
- fileHashes.push(sha256);
5214
+ entry.fileUris.push(uri);
5215
+ entry.fileHashes.push(sha256);
5216
+ },
5217
+ (site) => {
5218
+ const entry = entries.get(assetDescriptorKey(site.descriptor));
5219
+ if (!entry) throw new Error("verified Metro asset descriptor is missing");
5220
+ pieces.push(
5221
+ bundle.slice(cursor, site.start),
5222
+ rewriteDescriptorObject(bundle, site, entry)
5223
+ );
5224
+ cursor = site.end;
5142
5225
  }
5143
- entries.set(key2, { fileUris, fileHashes, scales: descriptor.scales });
5144
- }
5145
- const pieces = [];
5146
- let cursor = 0;
5147
- for (const site of sites) {
5148
- const entry = entries.get(assetDescriptorKey(site.descriptor));
5149
- if (!entry) throw new Error("verified Metro asset descriptor is missing");
5150
- pieces.push(
5151
- bundle.slice(cursor, site.start),
5152
- rewriteDescriptorObject(bundle, site, entry)
5153
- );
5154
- cursor = site.end;
5155
- }
5226
+ );
5156
5227
  pieces.push(bundle.slice(cursor));
5157
5228
  return { code: pieces.join(""), assets: assets2, resources: [...resources.values()] };
5158
5229
  }
@@ -10492,11 +10563,13 @@ __export(bridge_host_exports, {
10492
10563
  injectSharedConfigIntoHtml: () => injectSharedConfigIntoHtml
10493
10564
  });
10494
10565
  module.exports = __toCommonJS(bridge_host_exports);
10495
- var import_child_process3 = require("child_process");
10566
+ var import_child_process3 = __toESM(require("child_process"), 1);
10496
10567
  var import_fs2 = __toESM(require("fs"), 1);
10497
10568
  var import_http4 = require("http");
10569
+ var import_os = __toESM(require("os"), 1);
10498
10570
  var import_path2 = __toESM(require("path"), 1);
10499
10571
  var import_ws = require("ws");
10572
+ init_chromium_admission();
10500
10573
 
10501
10574
  // scripts/dev-server-scanner.ts
10502
10575
  var import_child_process = require("child_process");
@@ -12482,6 +12555,11 @@ var import_node_os3 = __toESM(require("node:os"), 1);
12482
12555
  var import_node_path10 = __toESM(require("node:path"), 1);
12483
12556
  var import_node_util2 = require("node:util");
12484
12557
 
12558
+ // src/admitted-mac-build.ts
12559
+ function admittedMacBuilderSlot(env = process.env) {
12560
+ return env.CONTRAST_REMOTE_BUILD === "mac" && env.REMOTE_MAC_SLOT_HELD === "1" && env.CONTRAST_HEAVY_ADMITTED === "1";
12561
+ }
12562
+
12485
12563
  // src/swift-distribution-contract.ts
12486
12564
  init_is_record();
12487
12565
  var SWIFT_DISTRIBUTION_MANIFEST = "distribution.json";
@@ -14787,7 +14865,7 @@ function compileSwiftProjectUnit(input, options) {
14787
14865
  };
14788
14866
  const hash = swiftArtifactHash(input, options.release, moduleRoot);
14789
14867
  return serialize(root, async () => {
14790
- if (process.platform === "darwin" && process.env.TM_SESSION && !process.env.CONTRAST_REMOTE_BUILD && process.env.CI !== "true" && moduleRoot === import_node_path10.default.resolve(__sootsim_import_meta_dirname, "../../sootsim-swift") && !swiftDistributionAt(moduleRoot)) {
14868
+ if (process.platform === "darwin" && process.env.TM_SESSION && !admittedMacBuilderSlot() && process.env.CI !== "true" && moduleRoot === import_node_path10.default.resolve(__sootsim_import_meta_dirname, "../../sootsim-swift") && !swiftDistributionAt(moduleRoot)) {
14791
14869
  const requestRoot = (0, import_node_fs10.mkdtempSync)(import_node_path10.default.join(root, ".builder-request-"));
14792
14870
  const output = import_node_path10.default.join(requestRoot, "output");
14793
14871
  const request = import_node_path10.default.join(requestRoot, "request.json");
@@ -25140,6 +25218,7 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
25140
25218
  }
25141
25219
  reapIdleSims(now = Date.now()) {
25142
25220
  const attachedSimIds = new Set(this.cliSimBySocket.values());
25221
+ let reclaimable = null;
25143
25222
  for (const sim of this.sims.values()) {
25144
25223
  if (attachedSimIds.has(sim.id)) continue;
25145
25224
  const automation = this.isAutomationSim(sim);
@@ -25148,9 +25227,27 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
25148
25227
  continue;
25149
25228
  }
25150
25229
  const idleMs = now - Math.max(sim.lastActiveAt, sim.connectedAt);
25151
- const ttl = automation ? AUTOMATION_SIM_IDLE_REAP_TTL_MS : _SootSimBridgeHost.SIM_IDLE_REAP_TTL_MS;
25152
- if (idleMs >= ttl) this.closeSimSocketFromHost(sim.ws);
25230
+ if (automation) {
25231
+ if (idleMs >= AUTOMATION_SIM_IDLE_REAP_TTL_MS && idleMs > (reclaimable?.idleMs ?? 0))
25232
+ reclaimable = { ws: sim.ws, idleMs };
25233
+ continue;
25234
+ }
25235
+ if (idleMs >= _SootSimBridgeHost.SIM_IDLE_REAP_TTL_MS)
25236
+ this.closeSimSocketFromHost(sim.ws);
25153
25237
  }
25238
+ if (reclaimable && this.chromiumLaunchWaiting())
25239
+ this.closeSimSocketFromHost(reclaimable.ws);
25240
+ }
25241
+ chromiumQueueVerified = /* @__PURE__ */ new Map();
25242
+ chromiumLaunchWaiting() {
25243
+ const queue = readChromiumQueue(
25244
+ { fs: import_fs2.default, os: import_os.default, path: import_path2.default, childProcess: import_child_process3.default },
25245
+ this.chromiumQueueVerified
25246
+ );
25247
+ const live = new Set(queue.tickets);
25248
+ for (const entry of this.chromiumQueueVerified.keys())
25249
+ if (!live.has(entry)) this.chromiumQueueVerified.delete(entry);
25250
+ return queue.tickets.length > queue.limit;
25154
25251
  }
25155
25252
  // ping every connected ws; if the previous round's ping went unanswered,
25156
25253
  // terminate the socket so 'close' fires and the sim cleanup path
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_NATIVE_USER_AGENT_HEADER = "x-sootsim-native-user-agent";
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/public-brand.ts
4
4
  var name = "Peach";
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (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.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/metro-production-bundle.ts
4
4
  var RNXSIM_METRO_MODULE_PATHS_PREFIX = "globalThis.__sootsimModulePaths=";
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/native-app-identity-project.ts
4
4
  import fs2 from "node:fs";
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/openstep-plist.ts
4
4
  function parseOpenStepPlist(text) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/native-firebase-metadata.ts
4
4
  var PREFIX = "globalThis.__peachNativeFirebaseConfig=";
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/plist.ts
4
4
  import plist from "plist";
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/react-native-host-modules.ts
4
4
  var REACT_NATIVE_PASSTHROUGH_SPECIFIERS = [
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1469 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1477 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);