peachsim 0.1.1465 → 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.
- package/cli/bridge-flow-runner.ts +25 -17
- package/cli/cloud-client.ts +12 -19
- package/cli/commands/inspect/settling.ts +4 -1
- package/cli/drivers/playwright-sim-host.ts +7 -2
- package/cli/drivers/playwright.ts +6 -6
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/bundle-channel.cjs +13 -2
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/config.mjs +1 -1
- package/dist-lib/detox/index.cjs +46 -40
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/expo-swift-bundle.cjs +7 -2
- package/dist-lib/expo-swift-metadata.cjs +1 -1
- package/dist-lib/expo-swift-metadata.mjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +170 -16
- package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +5 -2
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/kotlin-host.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/native-app-identity-project.cjs +1 -1
- package/dist-lib/native-app-identity-project.mjs +1 -1
- package/dist-lib/native-app-identity.cjs +1 -1
- package/dist-lib/native-app-identity.mjs +1 -1
- package/dist-lib/native-firebase-metadata.cjs +1 -1
- package/dist-lib/native-firebase-metadata.mjs +1 -1
- package/dist-lib/plist.cjs +1 -1
- package/dist-lib/plist.mjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +5 -2
- package/dist-lib/sdk.mjs +5 -2
- package/dist-lib/skills.cjs +198 -83
- package/dist-lib/swift-compile.cjs +7 -2
- package/dist-lib/swift-compile.mjs +7 -2
- package/dist-lib/swift-package.cjs +1 -1
- package/dist-lib/swift-package.mjs +1 -1
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift-toolchain.cjs +1 -1
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +7 -2
- package/dist-lib/vite.cjs +1 -1
- package/dist-lib/worklet-executable.cjs +1 -1
- package/dist-lib/worklet-executable.mjs +1 -1
- package/package.json +1 -1
- package/src/admitted-mac-build.ts +12 -0
- package/src/bridge-constants.ts +5 -3
- package/src/bundle-asset-resource.ts +8 -0
- package/src/host/bridge-host.ts +34 -6
- package/src/swift-compile.ts +5 -0
- package/src/worker-system-chunks.ts +10 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
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();
|
|
@@ -4556,6 +4616,15 @@ var init_metro_production_bundle = __esm({
|
|
|
4556
4616
|
}
|
|
4557
4617
|
});
|
|
4558
4618
|
|
|
4619
|
+
// src/bundle-asset-resource.ts
|
|
4620
|
+
var PEACH_BUNDLE_ASSET_PREFIX;
|
|
4621
|
+
var init_bundle_asset_resource = __esm({
|
|
4622
|
+
"src/bundle-asset-resource.ts"() {
|
|
4623
|
+
"use strict";
|
|
4624
|
+
PEACH_BUNDLE_ASSET_PREFIX = "peach-asset://";
|
|
4625
|
+
}
|
|
4626
|
+
});
|
|
4627
|
+
|
|
4559
4628
|
// ../contrast-bundler/src/metroAssetArtifact.ts
|
|
4560
4629
|
function isEmbeddedAssetDescriptor(descriptor) {
|
|
4561
4630
|
return descriptor.fileUris?.length === descriptor.scales.length && descriptor.fileHashes?.length === descriptor.scales.length;
|
|
@@ -4608,6 +4677,7 @@ function quotedEnd(text3, start, end) {
|
|
|
4608
4677
|
return end;
|
|
4609
4678
|
}
|
|
4610
4679
|
function decodeSingleQuoted(contents) {
|
|
4680
|
+
if (!contents.includes("\\")) return contents;
|
|
4611
4681
|
let value = "";
|
|
4612
4682
|
for (let cursor = 0; cursor < contents.length; cursor++) {
|
|
4613
4683
|
const character = contents[cursor];
|
|
@@ -5027,6 +5097,15 @@ async function sha256HexBytes(bytes) {
|
|
|
5027
5097
|
return hex;
|
|
5028
5098
|
}
|
|
5029
5099
|
async function assertSelfContainedMetroArtifactAssets(bundle) {
|
|
5100
|
+
return visitVerifiedMetroArtifactAssets(
|
|
5101
|
+
bundle,
|
|
5102
|
+
() => {
|
|
5103
|
+
},
|
|
5104
|
+
() => {
|
|
5105
|
+
}
|
|
5106
|
+
);
|
|
5107
|
+
}
|
|
5108
|
+
async function visitVerifiedMetroArtifactAssets(bundle, acceptVariant, acceptSite) {
|
|
5030
5109
|
const seen = /* @__PURE__ */ new Set();
|
|
5031
5110
|
const manifestLines = [];
|
|
5032
5111
|
let descriptorsCount = 0;
|
|
@@ -5037,7 +5116,10 @@ async function assertSelfContainedMetroArtifactAssets(bundle) {
|
|
|
5037
5116
|
for (const site of iterateAssetDescriptorSites(bundle)) {
|
|
5038
5117
|
const descriptor = site.descriptor;
|
|
5039
5118
|
const key2 = assetDescriptorKey(descriptor);
|
|
5040
|
-
if (seen.has(key2))
|
|
5119
|
+
if (seen.has(key2)) {
|
|
5120
|
+
acceptSite(site);
|
|
5121
|
+
continue;
|
|
5122
|
+
}
|
|
5041
5123
|
seen.add(key2);
|
|
5042
5124
|
descriptorsCount++;
|
|
5043
5125
|
const label = `${descriptor.httpServerLocation}/${descriptor.name}.${descriptor.type}`;
|
|
@@ -5072,11 +5154,13 @@ async function assertSelfContainedMetroArtifactAssets(bundle) {
|
|
|
5072
5154
|
`peach ios --remote bundle is not self-contained: ${label} scale ${descriptor.scales[index]} bytes do not match their content hash`
|
|
5073
5155
|
);
|
|
5074
5156
|
}
|
|
5157
|
+
acceptVariant(descriptor, index, decoded);
|
|
5075
5158
|
variants++;
|
|
5076
5159
|
bytes += decoded.byteLength;
|
|
5077
5160
|
descriptorBytes += decoded.byteLength;
|
|
5078
5161
|
}
|
|
5079
5162
|
sizes.push({ asset: label, bytes: descriptorBytes });
|
|
5163
|
+
acceptSite(site);
|
|
5080
5164
|
}
|
|
5081
5165
|
} catch (error) {
|
|
5082
5166
|
if (error instanceof Error && error.message.startsWith("peach ios --remote bundle is not self-contained:")) {
|
|
@@ -5097,6 +5181,52 @@ async function assertSelfContainedMetroArtifactAssets(bundle) {
|
|
|
5097
5181
|
sizes: sortedAssetSizes(sizes)
|
|
5098
5182
|
};
|
|
5099
5183
|
}
|
|
5184
|
+
async function separateMetroArtifactAssets(bundle) {
|
|
5185
|
+
const resources = /* @__PURE__ */ new Map();
|
|
5186
|
+
const entries = /* @__PURE__ */ new Map();
|
|
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
|
+
}
|
|
5198
|
+
const sha256 = descriptor.fileHashes?.[index];
|
|
5199
|
+
const scale = descriptor.scales[index];
|
|
5200
|
+
if (!sha256 || scale === void 0) {
|
|
5201
|
+
throw new Error("verified Metro asset variant is incomplete");
|
|
5202
|
+
}
|
|
5203
|
+
const filename = metroAssetScaleFilename(descriptor.name, descriptor.type, scale);
|
|
5204
|
+
const uri = `${PEACH_BUNDLE_ASSET_PREFIX}${sha256}/${encodeURIComponent(filename)}`;
|
|
5205
|
+
if (!resources.has(uri)) {
|
|
5206
|
+
resources.set(uri, {
|
|
5207
|
+
uri,
|
|
5208
|
+
sha256,
|
|
5209
|
+
contentType: metroAssetContentType(descriptor.type),
|
|
5210
|
+
bytes,
|
|
5211
|
+
byteLength: bytes.byteLength
|
|
5212
|
+
});
|
|
5213
|
+
}
|
|
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;
|
|
5225
|
+
}
|
|
5226
|
+
);
|
|
5227
|
+
pieces.push(bundle.slice(cursor));
|
|
5228
|
+
return { code: pieces.join(""), assets: assets2, resources: [...resources.values()] };
|
|
5229
|
+
}
|
|
5100
5230
|
function metroAssetScaleFilename(name2, type, scale) {
|
|
5101
5231
|
const suffix = scale === 1 ? "" : `@${scale}x`;
|
|
5102
5232
|
return `${name2}${suffix}.${type}`;
|
|
@@ -5291,6 +5421,7 @@ var EXPRESSION_KEYWORDS, PLACEHOLDER_JPEG, METRO_ASSET_PLACEHOLDERS;
|
|
|
5291
5421
|
var init_metroAssetArtifact = __esm({
|
|
5292
5422
|
"../contrast-bundler/src/metroAssetArtifact.ts"() {
|
|
5293
5423
|
"use strict";
|
|
5424
|
+
init_bundle_asset_resource();
|
|
5294
5425
|
EXPRESSION_KEYWORDS = /* @__PURE__ */ new Set([
|
|
5295
5426
|
"await",
|
|
5296
5427
|
"case",
|
|
@@ -10069,11 +10200,6 @@ function searchMetroAssetDest(bundlePath, descriptors, assetsDirectory) {
|
|
|
10069
10200
|
}
|
|
10070
10201
|
return { dest: winner.dest, searched, truncated, unconfirmed: best === 0 };
|
|
10071
10202
|
}
|
|
10072
|
-
function largestEmbeddedAssets(sizes, count) {
|
|
10073
|
-
if (sizes.length === 0) return "";
|
|
10074
|
-
const largest = sizes.slice(0, count).map((entry) => `${entry.asset} ${entry.bytes} bytes`).join(", ");
|
|
10075
|
-
return ` Largest embedded assets: ${largest}.`;
|
|
10076
|
-
}
|
|
10077
10203
|
async function inferCloudModuleIdentity(source) {
|
|
10078
10204
|
let receipt;
|
|
10079
10205
|
try {
|
|
@@ -10193,9 +10319,10 @@ async function produceArtifact(bundlePath, maxBytes, command, assetPolicy, asset
|
|
|
10193
10319
|
});
|
|
10194
10320
|
const bytes = Buffer.from(artifact.code, "utf8");
|
|
10195
10321
|
const assets2 = artifact.receipt.assets;
|
|
10196
|
-
|
|
10322
|
+
const executableBytes = command === PREVIEW_COMMAND ? bytes.length : Buffer.byteLength((await separateMetroArtifactAssets(artifact.code)).code, "utf8");
|
|
10323
|
+
if (executableBytes > maxBytes) {
|
|
10197
10324
|
throw new Error(
|
|
10198
|
-
`${
|
|
10325
|
+
`${command} executable is ${executableBytes} bytes and exceeds the ${maxBytes}-byte limit. The ${assets2.bytes} asset bytes are stored outside guest code.`
|
|
10199
10326
|
);
|
|
10200
10327
|
}
|
|
10201
10328
|
const warnings = [];
|
|
@@ -10209,9 +10336,9 @@ async function produceArtifact(bundlePath, maxBytes, command, assetPolicy, asset
|
|
|
10209
10336
|
`${command} embedded a placeholder image for ${prepared.substituted.length} asset(s) no scale of which is in ${prepared.search.searched.join(", ") || "any asset dest directory"}: ${prepared.substituted.join(", ")}. Rebuild with \`react-native bundle --assets-dest\` to ship the real images.`
|
|
10210
10337
|
);
|
|
10211
10338
|
}
|
|
10212
|
-
if (
|
|
10339
|
+
if (executableBytes >= Math.floor(maxBytes * 0.8)) {
|
|
10213
10340
|
warnings.push(
|
|
10214
|
-
`${command}
|
|
10341
|
+
`${command} executable is ${executableBytes} bytes, ${Math.round(executableBytes / maxBytes * 100)}% of the ${maxBytes}-byte limit.`
|
|
10215
10342
|
);
|
|
10216
10343
|
}
|
|
10217
10344
|
return {
|
|
@@ -10321,7 +10448,7 @@ async function createCloudBox(options) {
|
|
|
10321
10448
|
warnings: artifact.warnings
|
|
10322
10449
|
};
|
|
10323
10450
|
}
|
|
10324
|
-
var import_node_crypto15, import_node_fs33, import_node_path34, import_node_vm, DEFAULT_RNX_CLOUD_ORIGIN, MAX_RNX_CLOUD_BUNDLE_BYTES, REMOTE_COMMAND, MAX_ASSET_DEST_FILES, ACCOUNT_CHOICE_REFUSALS, PROJECT_ONLY_DIRECTORIES, MAX_PLACEMENT_COMBINATIONS;
|
|
10451
|
+
var import_node_crypto15, import_node_fs33, import_node_path34, import_node_vm, DEFAULT_RNX_CLOUD_ORIGIN, MAX_RNX_CLOUD_BUNDLE_BYTES, REMOTE_COMMAND, PREVIEW_COMMAND, MAX_ASSET_DEST_FILES, ACCOUNT_CHOICE_REFUSALS, PROJECT_ONLY_DIRECTORIES, MAX_PLACEMENT_COMBINATIONS;
|
|
10325
10452
|
var init_cloud_client = __esm({
|
|
10326
10453
|
"cli/cloud-client.ts"() {
|
|
10327
10454
|
"use strict";
|
|
@@ -10346,6 +10473,7 @@ var init_cloud_client = __esm({
|
|
|
10346
10473
|
DEFAULT_RNX_CLOUD_ORIGIN = rnxPublicBrand.origin;
|
|
10347
10474
|
MAX_RNX_CLOUD_BUNDLE_BYTES = RNX_CLOUD_MAX_ARTIFACT_BYTES;
|
|
10348
10475
|
REMOTE_COMMAND = "peach remote";
|
|
10476
|
+
PREVIEW_COMMAND = "peach preview";
|
|
10349
10477
|
MAX_ASSET_DEST_FILES = 25e3;
|
|
10350
10478
|
ACCOUNT_CHOICE_REFUSALS = /* @__PURE__ */ new Set([
|
|
10351
10479
|
"accountId is required",
|
|
@@ -10435,11 +10563,13 @@ __export(bridge_host_exports, {
|
|
|
10435
10563
|
injectSharedConfigIntoHtml: () => injectSharedConfigIntoHtml
|
|
10436
10564
|
});
|
|
10437
10565
|
module.exports = __toCommonJS(bridge_host_exports);
|
|
10438
|
-
var import_child_process3 = require("child_process");
|
|
10566
|
+
var import_child_process3 = __toESM(require("child_process"), 1);
|
|
10439
10567
|
var import_fs2 = __toESM(require("fs"), 1);
|
|
10440
10568
|
var import_http4 = require("http");
|
|
10569
|
+
var import_os = __toESM(require("os"), 1);
|
|
10441
10570
|
var import_path2 = __toESM(require("path"), 1);
|
|
10442
10571
|
var import_ws = require("ws");
|
|
10572
|
+
init_chromium_admission();
|
|
10443
10573
|
|
|
10444
10574
|
// scripts/dev-server-scanner.ts
|
|
10445
10575
|
var import_child_process = require("child_process");
|
|
@@ -12425,6 +12555,11 @@ var import_node_os3 = __toESM(require("node:os"), 1);
|
|
|
12425
12555
|
var import_node_path10 = __toESM(require("node:path"), 1);
|
|
12426
12556
|
var import_node_util2 = require("node:util");
|
|
12427
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
|
+
|
|
12428
12563
|
// src/swift-distribution-contract.ts
|
|
12429
12564
|
init_is_record();
|
|
12430
12565
|
var SWIFT_DISTRIBUTION_MANIFEST = "distribution.json";
|
|
@@ -14730,7 +14865,7 @@ function compileSwiftProjectUnit(input, options) {
|
|
|
14730
14865
|
};
|
|
14731
14866
|
const hash = swiftArtifactHash(input, options.release, moduleRoot);
|
|
14732
14867
|
return serialize(root, async () => {
|
|
14733
|
-
if (process.platform === "darwin" && process.env.TM_SESSION && 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)) {
|
|
14734
14869
|
const requestRoot = (0, import_node_fs10.mkdtempSync)(import_node_path10.default.join(root, ".builder-request-"));
|
|
14735
14870
|
const output = import_node_path10.default.join(requestRoot, "output");
|
|
14736
14871
|
const request = import_node_path10.default.join(requestRoot, "request.json");
|
|
@@ -25083,6 +25218,7 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
25083
25218
|
}
|
|
25084
25219
|
reapIdleSims(now = Date.now()) {
|
|
25085
25220
|
const attachedSimIds = new Set(this.cliSimBySocket.values());
|
|
25221
|
+
let reclaimable = null;
|
|
25086
25222
|
for (const sim of this.sims.values()) {
|
|
25087
25223
|
if (attachedSimIds.has(sim.id)) continue;
|
|
25088
25224
|
const automation = this.isAutomationSim(sim);
|
|
@@ -25091,9 +25227,27 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
25091
25227
|
continue;
|
|
25092
25228
|
}
|
|
25093
25229
|
const idleMs = now - Math.max(sim.lastActiveAt, sim.connectedAt);
|
|
25094
|
-
|
|
25095
|
-
|
|
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);
|
|
25096
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;
|
|
25097
25251
|
}
|
|
25098
25252
|
// ping every connected ws; if the previous round's ping went unanswered,
|
|
25099
25253
|
// terminate the socket so 'close' fires and the sim cleanup path
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
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.
|
|
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.
|
|
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.
|
|
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/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
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;
|
|
@@ -7232,6 +7232,7 @@ async function waitForSootsimIdle({
|
|
|
7232
7232
|
return true
|
|
7233
7233
|
}
|
|
7234
7234
|
while (Date.now() < deadline) {
|
|
7235
|
+
const pollStarted = Date.now()
|
|
7235
7236
|
const snapshot = await readSnapshot()
|
|
7236
7237
|
if (snapshot.runtimeUnsupported) return snapshot.runtimeUnsupported
|
|
7237
7238
|
polls++
|
|
@@ -7304,7 +7305,9 @@ async function waitForSootsimIdle({
|
|
|
7304
7305
|
lastRequestTotal = snapshot.requestTotal
|
|
7305
7306
|
lastAppCommits = snapshot.appCommits
|
|
7306
7307
|
lastNodeCount = snapshot.nodeCount
|
|
7307
|
-
|
|
7308
|
+
// reply latency belongs inside the poll interval; the stillness window
|
|
7309
|
+
// above remains measured from completed observations.
|
|
7310
|
+
await sleep(Math.max(0, pollMs - (Date.now() - pollStarted)))
|
|
7308
7311
|
}
|
|
7309
7312
|
const last = await readSnapshot()
|
|
7310
7313
|
if (last.runtimeUnsupported) return last.runtimeUnsupported
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
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.
|
|
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/kotlin-host.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
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.
|
|
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.
|
|
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.
|
|
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/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
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.
|
|
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.
|
|
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.
|
|
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/plist.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
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/plist.mjs
CHANGED
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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;
|
|
@@ -1843,6 +1843,7 @@ async function waitForSootsimIdle({
|
|
|
1843
1843
|
return true
|
|
1844
1844
|
}
|
|
1845
1845
|
while (Date.now() < deadline) {
|
|
1846
|
+
const pollStarted = Date.now()
|
|
1846
1847
|
const snapshot = await readSnapshot()
|
|
1847
1848
|
if (snapshot.runtimeUnsupported) return snapshot.runtimeUnsupported
|
|
1848
1849
|
polls++
|
|
@@ -1915,7 +1916,9 @@ async function waitForSootsimIdle({
|
|
|
1915
1916
|
lastRequestTotal = snapshot.requestTotal
|
|
1916
1917
|
lastAppCommits = snapshot.appCommits
|
|
1917
1918
|
lastNodeCount = snapshot.nodeCount
|
|
1918
|
-
|
|
1919
|
+
// reply latency belongs inside the poll interval; the stillness window
|
|
1920
|
+
// above remains measured from completed observations.
|
|
1921
|
+
await sleep(Math.max(0, pollMs - (Date.now() - pollStarted)))
|
|
1919
1922
|
}
|
|
1920
1923
|
const last = await readSnapshot()
|
|
1921
1924
|
if (last.runtimeUnsupported) return last.runtimeUnsupported
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
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);
|
|
@@ -1737,6 +1737,7 @@ async function waitForSootsimIdle({
|
|
|
1737
1737
|
return true
|
|
1738
1738
|
}
|
|
1739
1739
|
while (Date.now() < deadline) {
|
|
1740
|
+
const pollStarted = Date.now()
|
|
1740
1741
|
const snapshot = await readSnapshot()
|
|
1741
1742
|
if (snapshot.runtimeUnsupported) return snapshot.runtimeUnsupported
|
|
1742
1743
|
polls++
|
|
@@ -1809,7 +1810,9 @@ async function waitForSootsimIdle({
|
|
|
1809
1810
|
lastRequestTotal = snapshot.requestTotal
|
|
1810
1811
|
lastAppCommits = snapshot.appCommits
|
|
1811
1812
|
lastNodeCount = snapshot.nodeCount
|
|
1812
|
-
|
|
1813
|
+
// reply latency belongs inside the poll interval; the stillness window
|
|
1814
|
+
// above remains measured from completed observations.
|
|
1815
|
+
await sleep(Math.max(0, pollMs - (Date.now() - pollStarted)))
|
|
1813
1816
|
}
|
|
1814
1817
|
const last = await readSnapshot()
|
|
1815
1818
|
if (last.runtimeUnsupported) return last.runtimeUnsupported
|