peachsim 0.1.1463 → 0.1.1469
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 +10 -0
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/bundle-channel.cjs +2 -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 +191 -78
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/expo-swift-bundle.cjs +2 -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 +69 -12
- 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 +480 -296
- package/dist-lib/swift-compile.cjs +2 -2
- package/dist-lib/swift-compile.mjs +2 -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 +2 -2
- package/dist-lib/vite.cjs +1 -1
- package/dist-lib/worklet-executable.cjs +5 -1
- package/dist-lib/worklet-executable.mjs +5 -1
- package/package.json +1 -1
- package/src/bundle-asset-resource.ts +8 -0
- package/src/swift-compile.ts +4 -0
- package/src/worklet-executable.ts +7 -2
package/dist-lib/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1469 | (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;
|
|
@@ -1225,22 +1225,22 @@ var require_motion_change = __commonJS({
|
|
|
1225
1225
|
var require_attempt_events = __commonJS({
|
|
1226
1226
|
"detox/attempt-events.cjs"(exports2, module2) {
|
|
1227
1227
|
"use strict";
|
|
1228
|
-
var
|
|
1229
|
-
var
|
|
1228
|
+
var fs3 = require("node:fs");
|
|
1229
|
+
var path3 = require("node:path");
|
|
1230
1230
|
function attemptEventsPath() {
|
|
1231
1231
|
const enabled = process.env.CONFORMANCE_PROOF === "1" || Boolean(process.env.CONFORMANCE_PROOF_DIR);
|
|
1232
1232
|
if (!enabled) return null;
|
|
1233
|
-
const root =
|
|
1233
|
+
const root = path3.resolve(
|
|
1234
1234
|
process.cwd(),
|
|
1235
1235
|
process.env.CONFORMANCE_PROOF_DIR || "artifacts/conformance-proof/latest"
|
|
1236
1236
|
);
|
|
1237
|
-
return
|
|
1237
|
+
return path3.join(root, "events.jsonl");
|
|
1238
1238
|
}
|
|
1239
1239
|
function writeAttemptEvent2(event) {
|
|
1240
1240
|
const output = attemptEventsPath();
|
|
1241
1241
|
if (output === null) return false;
|
|
1242
|
-
|
|
1243
|
-
|
|
1242
|
+
fs3.mkdirSync(path3.dirname(output), { recursive: true });
|
|
1243
|
+
fs3.appendFileSync(output, `${JSON.stringify(event)}
|
|
1244
1244
|
`);
|
|
1245
1245
|
return true;
|
|
1246
1246
|
}
|
|
@@ -1351,15 +1351,113 @@ __export(detox_exports, {
|
|
|
1351
1351
|
});
|
|
1352
1352
|
module.exports = __toCommonJS(detox_exports);
|
|
1353
1353
|
var import_crypto = require("crypto");
|
|
1354
|
-
var
|
|
1354
|
+
var fs2 = __toESM(require("fs"), 1);
|
|
1355
1355
|
var import_node_child_process2 = require("node:child_process");
|
|
1356
1356
|
var import_node_module = require("node:module");
|
|
1357
1357
|
var import_node_util = require("node:util");
|
|
1358
|
-
var
|
|
1358
|
+
var path2 = __toESM(require("path"), 1);
|
|
1359
1359
|
var import_playwright_core = require("playwright-core");
|
|
1360
1360
|
|
|
1361
1361
|
// ../../scripts/lib/reap-browser.ts
|
|
1362
|
+
var childProcess = __toESM(require("node:child_process"), 1);
|
|
1362
1363
|
var import_node_child_process = require("node:child_process");
|
|
1364
|
+
var fs = __toESM(require("node:fs"), 1);
|
|
1365
|
+
var os = __toESM(require("node:os"), 1);
|
|
1366
|
+
var path = __toESM(require("node:path"), 1);
|
|
1367
|
+
|
|
1368
|
+
// ../../scripts/lib/chromium-admission.ts
|
|
1369
|
+
async function acquireChromiumAdmission(deps) {
|
|
1370
|
+
const { fs: fs3, os: os2, path: path3, childProcess: childProcess2, label } = deps;
|
|
1371
|
+
const dir = path3.join(
|
|
1372
|
+
process.platform === "win32" ? os2.tmpdir() : "/tmp",
|
|
1373
|
+
"chromium-admission"
|
|
1374
|
+
);
|
|
1375
|
+
fs3.mkdirSync(dir, { recursive: true });
|
|
1376
|
+
const limit = Math.max(2, Math.floor(os2.availableParallelism() / 3));
|
|
1377
|
+
const startedAt = Math.round(Date.now() / 1e3 - process.uptime());
|
|
1378
|
+
const name2 = `${process.pid}-${startedAt}-${Math.random().toString(36).slice(2, 10)}`;
|
|
1379
|
+
const ticket = path3.join(dir, name2);
|
|
1380
|
+
fs3.closeSync(fs3.openSync(ticket, "wx"));
|
|
1381
|
+
let released = false;
|
|
1382
|
+
const release = () => {
|
|
1383
|
+
if (released) return;
|
|
1384
|
+
released = true;
|
|
1385
|
+
process.removeListener("exit", release);
|
|
1386
|
+
try {
|
|
1387
|
+
fs3.unlinkSync(ticket);
|
|
1388
|
+
} catch {
|
|
1389
|
+
}
|
|
1390
|
+
};
|
|
1391
|
+
process.on("exit", release);
|
|
1392
|
+
const verified = /* @__PURE__ */ new Map();
|
|
1393
|
+
const live = (entry) => {
|
|
1394
|
+
const match = /^(\d+)-(\d+)-/.exec(entry);
|
|
1395
|
+
if (!match) return false;
|
|
1396
|
+
const pid = Number(match[1]);
|
|
1397
|
+
try {
|
|
1398
|
+
process.kill(pid, 0);
|
|
1399
|
+
} catch (err) {
|
|
1400
|
+
if (!(err instanceof Error && "code" in err && err.code === "EPERM")) return false;
|
|
1401
|
+
}
|
|
1402
|
+
const known = verified.get(entry);
|
|
1403
|
+
if (known !== void 0) return known;
|
|
1404
|
+
let same = pid === process.pid;
|
|
1405
|
+
if (!same) {
|
|
1406
|
+
try {
|
|
1407
|
+
const started = childProcess2.execFileSync("ps", ["-p", String(pid), "-o", "lstart="], { encoding: "utf8" }).trim();
|
|
1408
|
+
same = Math.abs(Date.parse(started) / 1e3 - Number(match[2])) <= 2;
|
|
1409
|
+
} catch {
|
|
1410
|
+
same = false;
|
|
1411
|
+
}
|
|
1412
|
+
}
|
|
1413
|
+
verified.set(entry, same);
|
|
1414
|
+
return same;
|
|
1415
|
+
};
|
|
1416
|
+
let waited = false;
|
|
1417
|
+
while (true) {
|
|
1418
|
+
const tickets = [];
|
|
1419
|
+
for (const entry of fs3.readdirSync(dir)) {
|
|
1420
|
+
if (entry !== name2 && !live(entry)) {
|
|
1421
|
+
try {
|
|
1422
|
+
fs3.unlinkSync(path3.join(dir, entry));
|
|
1423
|
+
} catch {
|
|
1424
|
+
}
|
|
1425
|
+
continue;
|
|
1426
|
+
}
|
|
1427
|
+
try {
|
|
1428
|
+
tickets.push({
|
|
1429
|
+
entry,
|
|
1430
|
+
created: fs3.statSync(path3.join(dir, entry), { bigint: true }).ctimeNs
|
|
1431
|
+
});
|
|
1432
|
+
} catch {
|
|
1433
|
+
}
|
|
1434
|
+
}
|
|
1435
|
+
tickets.sort(
|
|
1436
|
+
(a, b) => a.created === b.created ? a.entry < b.entry ? -1 : 1 : a.created < b.created ? -1 : 1
|
|
1437
|
+
);
|
|
1438
|
+
const rank = tickets.findIndex((t) => t.entry === name2);
|
|
1439
|
+
if (rank < 0) {
|
|
1440
|
+
fs3.closeSync(fs3.openSync(ticket, "wx"));
|
|
1441
|
+
continue;
|
|
1442
|
+
}
|
|
1443
|
+
if (rank < limit) {
|
|
1444
|
+
if (waited) process.stderr.write(`[chromium-admission] ${label}: admitted
|
|
1445
|
+
`);
|
|
1446
|
+
return release;
|
|
1447
|
+
}
|
|
1448
|
+
if (!waited) {
|
|
1449
|
+
const holders = tickets.slice(0, limit).map((t) => t.entry.split("-")[0]);
|
|
1450
|
+
process.stderr.write(
|
|
1451
|
+
`[chromium-admission] ${label}: ${limit} chromium launches already run on this machine (pids ${holders.join(" ")}), queued ${rank - limit + 1}
|
|
1452
|
+
`
|
|
1453
|
+
);
|
|
1454
|
+
waited = true;
|
|
1455
|
+
}
|
|
1456
|
+
await new Promise((resolve2) => setTimeout(resolve2, 500));
|
|
1457
|
+
}
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
// ../../scripts/lib/reap-browser.ts
|
|
1363
1461
|
var discoveredChromePids = /* @__PURE__ */ new WeakMap();
|
|
1364
1462
|
var discoveredChromeProcesses = /* @__PURE__ */ new WeakMap();
|
|
1365
1463
|
var reapPids = /* @__PURE__ */ new Map();
|
|
@@ -1647,7 +1745,20 @@ function installReaper() {
|
|
|
1647
1745
|
process.on("exit", reap);
|
|
1648
1746
|
}
|
|
1649
1747
|
async function launchReapedScoped(launch, readIdentity = processIdentity) {
|
|
1650
|
-
const
|
|
1748
|
+
const releaseAdmission = await acquireChromiumAdmission({
|
|
1749
|
+
fs,
|
|
1750
|
+
os,
|
|
1751
|
+
path,
|
|
1752
|
+
childProcess,
|
|
1753
|
+
label: process.argv.slice(1, 3).join(" ")
|
|
1754
|
+
});
|
|
1755
|
+
let browser;
|
|
1756
|
+
try {
|
|
1757
|
+
browser = await launch();
|
|
1758
|
+
} catch (err) {
|
|
1759
|
+
releaseAdmission();
|
|
1760
|
+
throw err;
|
|
1761
|
+
}
|
|
1651
1762
|
let root = rootChromePid(browser);
|
|
1652
1763
|
if (root === null) {
|
|
1653
1764
|
try {
|
|
@@ -1670,6 +1781,7 @@ async function launchReapedScoped(launch, readIdentity = processIdentity) {
|
|
|
1670
1781
|
untrackReapPid(tracked);
|
|
1671
1782
|
}
|
|
1672
1783
|
mine.clear();
|
|
1784
|
+
releaseAdmission();
|
|
1673
1785
|
});
|
|
1674
1786
|
}
|
|
1675
1787
|
const reapNow = () => {
|
|
@@ -1678,6 +1790,7 @@ async function launchReapedScoped(launch, readIdentity = processIdentity) {
|
|
|
1678
1790
|
untrackReapPid(tracked);
|
|
1679
1791
|
}
|
|
1680
1792
|
mine.clear();
|
|
1793
|
+
releaseAdmission();
|
|
1681
1794
|
};
|
|
1682
1795
|
return { browser, reapNow };
|
|
1683
1796
|
}
|
|
@@ -4437,17 +4550,17 @@ function visit(node, visitor) {
|
|
|
4437
4550
|
visit.BREAK = BREAK;
|
|
4438
4551
|
visit.SKIP = SKIP;
|
|
4439
4552
|
visit.REMOVE = REMOVE;
|
|
4440
|
-
function visit_(key, node, visitor,
|
|
4441
|
-
const ctrl = callVisitor(key, node, visitor,
|
|
4553
|
+
function visit_(key, node, visitor, path3) {
|
|
4554
|
+
const ctrl = callVisitor(key, node, visitor, path3);
|
|
4442
4555
|
if (isNode(ctrl) || isPair(ctrl)) {
|
|
4443
|
-
replaceNode(key,
|
|
4444
|
-
return visit_(key, ctrl, visitor,
|
|
4556
|
+
replaceNode(key, path3, ctrl);
|
|
4557
|
+
return visit_(key, ctrl, visitor, path3);
|
|
4445
4558
|
}
|
|
4446
4559
|
if (typeof ctrl !== "symbol") {
|
|
4447
4560
|
if (isCollection(node)) {
|
|
4448
|
-
|
|
4561
|
+
path3 = Object.freeze(path3.concat(node));
|
|
4449
4562
|
for (let i = 0; i < node.items.length; ++i) {
|
|
4450
|
-
const ci = visit_(i, node.items[i], visitor,
|
|
4563
|
+
const ci = visit_(i, node.items[i], visitor, path3);
|
|
4451
4564
|
if (typeof ci === "number")
|
|
4452
4565
|
i = ci - 1;
|
|
4453
4566
|
else if (ci === BREAK)
|
|
@@ -4458,13 +4571,13 @@ function visit_(key, node, visitor, path2) {
|
|
|
4458
4571
|
}
|
|
4459
4572
|
}
|
|
4460
4573
|
} else if (isPair(node)) {
|
|
4461
|
-
|
|
4462
|
-
const ck = visit_("key", node.key, visitor,
|
|
4574
|
+
path3 = Object.freeze(path3.concat(node));
|
|
4575
|
+
const ck = visit_("key", node.key, visitor, path3);
|
|
4463
4576
|
if (ck === BREAK)
|
|
4464
4577
|
return BREAK;
|
|
4465
4578
|
else if (ck === REMOVE)
|
|
4466
4579
|
node.key = null;
|
|
4467
|
-
const cv = visit_("value", node.value, visitor,
|
|
4580
|
+
const cv = visit_("value", node.value, visitor, path3);
|
|
4468
4581
|
if (cv === BREAK)
|
|
4469
4582
|
return BREAK;
|
|
4470
4583
|
else if (cv === REMOVE)
|
|
@@ -4485,17 +4598,17 @@ async function visitAsync(node, visitor) {
|
|
|
4485
4598
|
visitAsync.BREAK = BREAK;
|
|
4486
4599
|
visitAsync.SKIP = SKIP;
|
|
4487
4600
|
visitAsync.REMOVE = REMOVE;
|
|
4488
|
-
async function visitAsync_(key, node, visitor,
|
|
4489
|
-
const ctrl = await callVisitor(key, node, visitor,
|
|
4601
|
+
async function visitAsync_(key, node, visitor, path3) {
|
|
4602
|
+
const ctrl = await callVisitor(key, node, visitor, path3);
|
|
4490
4603
|
if (isNode(ctrl) || isPair(ctrl)) {
|
|
4491
|
-
replaceNode(key,
|
|
4492
|
-
return visitAsync_(key, ctrl, visitor,
|
|
4604
|
+
replaceNode(key, path3, ctrl);
|
|
4605
|
+
return visitAsync_(key, ctrl, visitor, path3);
|
|
4493
4606
|
}
|
|
4494
4607
|
if (typeof ctrl !== "symbol") {
|
|
4495
4608
|
if (isCollection(node)) {
|
|
4496
|
-
|
|
4609
|
+
path3 = Object.freeze(path3.concat(node));
|
|
4497
4610
|
for (let i = 0; i < node.items.length; ++i) {
|
|
4498
|
-
const ci = await visitAsync_(i, node.items[i], visitor,
|
|
4611
|
+
const ci = await visitAsync_(i, node.items[i], visitor, path3);
|
|
4499
4612
|
if (typeof ci === "number")
|
|
4500
4613
|
i = ci - 1;
|
|
4501
4614
|
else if (ci === BREAK)
|
|
@@ -4506,13 +4619,13 @@ async function visitAsync_(key, node, visitor, path2) {
|
|
|
4506
4619
|
}
|
|
4507
4620
|
}
|
|
4508
4621
|
} else if (isPair(node)) {
|
|
4509
|
-
|
|
4510
|
-
const ck = await visitAsync_("key", node.key, visitor,
|
|
4622
|
+
path3 = Object.freeze(path3.concat(node));
|
|
4623
|
+
const ck = await visitAsync_("key", node.key, visitor, path3);
|
|
4511
4624
|
if (ck === BREAK)
|
|
4512
4625
|
return BREAK;
|
|
4513
4626
|
else if (ck === REMOVE)
|
|
4514
4627
|
node.key = null;
|
|
4515
|
-
const cv = await visitAsync_("value", node.value, visitor,
|
|
4628
|
+
const cv = await visitAsync_("value", node.value, visitor, path3);
|
|
4516
4629
|
if (cv === BREAK)
|
|
4517
4630
|
return BREAK;
|
|
4518
4631
|
else if (cv === REMOVE)
|
|
@@ -4539,23 +4652,23 @@ function initVisitor(visitor) {
|
|
|
4539
4652
|
}
|
|
4540
4653
|
return visitor;
|
|
4541
4654
|
}
|
|
4542
|
-
function callVisitor(key, node, visitor,
|
|
4655
|
+
function callVisitor(key, node, visitor, path3) {
|
|
4543
4656
|
if (typeof visitor === "function")
|
|
4544
|
-
return visitor(key, node,
|
|
4657
|
+
return visitor(key, node, path3);
|
|
4545
4658
|
if (isMap(node))
|
|
4546
|
-
return visitor.Map?.(key, node,
|
|
4659
|
+
return visitor.Map?.(key, node, path3);
|
|
4547
4660
|
if (isSeq(node))
|
|
4548
|
-
return visitor.Seq?.(key, node,
|
|
4661
|
+
return visitor.Seq?.(key, node, path3);
|
|
4549
4662
|
if (isPair(node))
|
|
4550
|
-
return visitor.Pair?.(key, node,
|
|
4663
|
+
return visitor.Pair?.(key, node, path3);
|
|
4551
4664
|
if (isScalar(node))
|
|
4552
|
-
return visitor.Scalar?.(key, node,
|
|
4665
|
+
return visitor.Scalar?.(key, node, path3);
|
|
4553
4666
|
if (isAlias(node))
|
|
4554
|
-
return visitor.Alias?.(key, node,
|
|
4667
|
+
return visitor.Alias?.(key, node, path3);
|
|
4555
4668
|
return void 0;
|
|
4556
4669
|
}
|
|
4557
|
-
function replaceNode(key,
|
|
4558
|
-
const parent =
|
|
4670
|
+
function replaceNode(key, path3, node) {
|
|
4671
|
+
const parent = path3[path3.length - 1];
|
|
4559
4672
|
if (isCollection(parent)) {
|
|
4560
4673
|
parent.items[key] = node;
|
|
4561
4674
|
} else if (isPair(parent)) {
|
|
@@ -5035,10 +5148,10 @@ function createNode(value, tagName, ctx) {
|
|
|
5035
5148
|
}
|
|
5036
5149
|
|
|
5037
5150
|
// ../../node_modules/yaml/browser/dist/nodes/Collection.js
|
|
5038
|
-
function collectionFromPath(schema4,
|
|
5151
|
+
function collectionFromPath(schema4, path3, value) {
|
|
5039
5152
|
let v = value;
|
|
5040
|
-
for (let i =
|
|
5041
|
-
const k =
|
|
5153
|
+
for (let i = path3.length - 1; i >= 0; --i) {
|
|
5154
|
+
const k = path3[i];
|
|
5042
5155
|
if (typeof k === "number" && Number.isInteger(k) && k >= 0) {
|
|
5043
5156
|
const a = [];
|
|
5044
5157
|
a[k] = v;
|
|
@@ -5057,7 +5170,7 @@ function collectionFromPath(schema4, path2, value) {
|
|
|
5057
5170
|
sourceObjects: /* @__PURE__ */ new Map()
|
|
5058
5171
|
});
|
|
5059
5172
|
}
|
|
5060
|
-
var isEmptyPath = (
|
|
5173
|
+
var isEmptyPath = (path3) => path3 == null || typeof path3 === "object" && !!path3[Symbol.iterator]().next().done;
|
|
5061
5174
|
var Collection = class extends NodeBase {
|
|
5062
5175
|
constructor(type, schema4) {
|
|
5063
5176
|
super(type);
|
|
@@ -5087,11 +5200,11 @@ var Collection = class extends NodeBase {
|
|
|
5087
5200
|
* be a Pair instance or a `{ key, value }` object, which may not have a key
|
|
5088
5201
|
* that already exists in the map.
|
|
5089
5202
|
*/
|
|
5090
|
-
addIn(
|
|
5091
|
-
if (isEmptyPath(
|
|
5203
|
+
addIn(path3, value) {
|
|
5204
|
+
if (isEmptyPath(path3))
|
|
5092
5205
|
this.add(value);
|
|
5093
5206
|
else {
|
|
5094
|
-
const [key, ...rest] =
|
|
5207
|
+
const [key, ...rest] = path3;
|
|
5095
5208
|
const node = this.get(key, true);
|
|
5096
5209
|
if (isCollection(node))
|
|
5097
5210
|
node.addIn(rest, value);
|
|
@@ -5105,8 +5218,8 @@ var Collection = class extends NodeBase {
|
|
|
5105
5218
|
* Removes a value from the collection.
|
|
5106
5219
|
* @returns `true` if the item was found and removed.
|
|
5107
5220
|
*/
|
|
5108
|
-
deleteIn(
|
|
5109
|
-
const [key, ...rest] =
|
|
5221
|
+
deleteIn(path3) {
|
|
5222
|
+
const [key, ...rest] = path3;
|
|
5110
5223
|
if (rest.length === 0)
|
|
5111
5224
|
return this.delete(key);
|
|
5112
5225
|
const node = this.get(key, true);
|
|
@@ -5120,8 +5233,8 @@ var Collection = class extends NodeBase {
|
|
|
5120
5233
|
* scalar values from their surrounding node; to disable set `keepScalar` to
|
|
5121
5234
|
* `true` (collections are always returned intact).
|
|
5122
5235
|
*/
|
|
5123
|
-
getIn(
|
|
5124
|
-
const [key, ...rest] =
|
|
5236
|
+
getIn(path3, keepScalar) {
|
|
5237
|
+
const [key, ...rest] = path3;
|
|
5125
5238
|
const node = this.get(key, true);
|
|
5126
5239
|
if (rest.length === 0)
|
|
5127
5240
|
return !keepScalar && isScalar(node) ? node.value : node;
|
|
@@ -5139,8 +5252,8 @@ var Collection = class extends NodeBase {
|
|
|
5139
5252
|
/**
|
|
5140
5253
|
* Checks if the collection includes a value with the key `key`.
|
|
5141
5254
|
*/
|
|
5142
|
-
hasIn(
|
|
5143
|
-
const [key, ...rest] =
|
|
5255
|
+
hasIn(path3) {
|
|
5256
|
+
const [key, ...rest] = path3;
|
|
5144
5257
|
if (rest.length === 0)
|
|
5145
5258
|
return this.has(key);
|
|
5146
5259
|
const node = this.get(key, true);
|
|
@@ -5150,8 +5263,8 @@ var Collection = class extends NodeBase {
|
|
|
5150
5263
|
* Sets a value in this collection. For `!!set`, `value` needs to be a
|
|
5151
5264
|
* boolean to add/remove the item from the set.
|
|
5152
5265
|
*/
|
|
5153
|
-
setIn(
|
|
5154
|
-
const [key, ...rest] =
|
|
5266
|
+
setIn(path3, value) {
|
|
5267
|
+
const [key, ...rest] = path3;
|
|
5155
5268
|
if (rest.length === 0) {
|
|
5156
5269
|
this.set(key, value);
|
|
5157
5270
|
} else {
|
|
@@ -6600,9 +6713,9 @@ function visit2(cst, visitor) {
|
|
|
6600
6713
|
visit2.BREAK = BREAK2;
|
|
6601
6714
|
visit2.SKIP = SKIP2;
|
|
6602
6715
|
visit2.REMOVE = REMOVE2;
|
|
6603
|
-
visit2.itemAtPath = (cst,
|
|
6716
|
+
visit2.itemAtPath = (cst, path3) => {
|
|
6604
6717
|
let item = cst;
|
|
6605
|
-
for (const [field, index] of
|
|
6718
|
+
for (const [field, index] of path3) {
|
|
6606
6719
|
const tok = item?.[field];
|
|
6607
6720
|
if (tok && "items" in tok) {
|
|
6608
6721
|
item = tok.items[index];
|
|
@@ -6611,23 +6724,23 @@ visit2.itemAtPath = (cst, path2) => {
|
|
|
6611
6724
|
}
|
|
6612
6725
|
return item;
|
|
6613
6726
|
};
|
|
6614
|
-
visit2.parentCollection = (cst,
|
|
6615
|
-
const parent = visit2.itemAtPath(cst,
|
|
6616
|
-
const field =
|
|
6727
|
+
visit2.parentCollection = (cst, path3) => {
|
|
6728
|
+
const parent = visit2.itemAtPath(cst, path3.slice(0, -1));
|
|
6729
|
+
const field = path3[path3.length - 1][0];
|
|
6617
6730
|
const coll = parent?.[field];
|
|
6618
6731
|
if (coll && "items" in coll)
|
|
6619
6732
|
return coll;
|
|
6620
6733
|
throw new Error("Parent collection not found");
|
|
6621
6734
|
};
|
|
6622
|
-
function _visit(
|
|
6623
|
-
let ctrl = visitor(item,
|
|
6735
|
+
function _visit(path3, item, visitor) {
|
|
6736
|
+
let ctrl = visitor(item, path3);
|
|
6624
6737
|
if (typeof ctrl === "symbol")
|
|
6625
6738
|
return ctrl;
|
|
6626
6739
|
for (const field of ["key", "value"]) {
|
|
6627
6740
|
const token = item[field];
|
|
6628
6741
|
if (token && "items" in token) {
|
|
6629
6742
|
for (let i = 0; i < token.items.length; ++i) {
|
|
6630
|
-
const ci = _visit(Object.freeze(
|
|
6743
|
+
const ci = _visit(Object.freeze(path3.concat([[field, i]])), token.items[i], visitor);
|
|
6631
6744
|
if (typeof ci === "number")
|
|
6632
6745
|
i = ci - 1;
|
|
6633
6746
|
else if (ci === BREAK2)
|
|
@@ -6638,10 +6751,10 @@ function _visit(path2, item, visitor) {
|
|
|
6638
6751
|
}
|
|
6639
6752
|
}
|
|
6640
6753
|
if (typeof ctrl === "function" && field === "key")
|
|
6641
|
-
ctrl = ctrl(item,
|
|
6754
|
+
ctrl = ctrl(item, path3);
|
|
6642
6755
|
}
|
|
6643
6756
|
}
|
|
6644
|
-
return typeof ctrl === "function" ? ctrl(item,
|
|
6757
|
+
return typeof ctrl === "function" ? ctrl(item, path3) : ctrl;
|
|
6645
6758
|
}
|
|
6646
6759
|
|
|
6647
6760
|
// ../../node_modules/yaml/browser/dist/parse/lexer.js
|
|
@@ -9141,7 +9254,7 @@ function getSootsimNavigationDiagnostics(page) {
|
|
|
9141
9254
|
// detox/index.ts
|
|
9142
9255
|
var import_proof_frame = __toESM(require_proof_frame(), 1);
|
|
9143
9256
|
var BASE_URL = process.env.PEACH_URL || "http://localhost:5173";
|
|
9144
|
-
var SCREENSHOT_DIR = process.env.PEACH_SCREENSHOT_DIR ||
|
|
9257
|
+
var SCREENSHOT_DIR = process.env.PEACH_SCREENSHOT_DIR || path2.join(process.cwd(), "test", "detox-driver", "screenshots", String(process.pid));
|
|
9145
9258
|
var _browser = null;
|
|
9146
9259
|
var _reapBrowserNow = null;
|
|
9147
9260
|
var _context = null;
|
|
@@ -9689,8 +9802,8 @@ async function focusElementForTextEntry(el) {
|
|
|
9689
9802
|
);
|
|
9690
9803
|
}
|
|
9691
9804
|
function ensureScreenshotDir() {
|
|
9692
|
-
if (!
|
|
9693
|
-
|
|
9805
|
+
if (!fs2.existsSync(SCREENSHOT_DIR)) {
|
|
9806
|
+
fs2.mkdirSync(SCREENSHOT_DIR, { recursive: true });
|
|
9694
9807
|
}
|
|
9695
9808
|
}
|
|
9696
9809
|
function decodePngDataUrl(dataUrl) {
|
|
@@ -9706,8 +9819,8 @@ function writeFastScreenshotFrames(namePrefix, frames) {
|
|
|
9706
9819
|
ensureScreenshotDir();
|
|
9707
9820
|
return frames.map((frame) => {
|
|
9708
9821
|
const safeName = `${namePrefix}-${frame.label}`.replace(/[^a-zA-Z0-9._-]+/g, "-");
|
|
9709
|
-
const filePath =
|
|
9710
|
-
|
|
9822
|
+
const filePath = path2.join(SCREENSHOT_DIR, `${safeName}.png`);
|
|
9823
|
+
fs2.writeFileSync(filePath, decodePngDataUrl(frame.dataUrl));
|
|
9711
9824
|
const { dataUrl: _dataUrl, ...metadata } = frame;
|
|
9712
9825
|
return {
|
|
9713
9826
|
...metadata,
|
|
@@ -9775,8 +9888,8 @@ async function captureSootsimPng(opts) {
|
|
|
9775
9888
|
}
|
|
9776
9889
|
async function writeSootsimScreenshot(name2, opts) {
|
|
9777
9890
|
ensureScreenshotDir();
|
|
9778
|
-
const screenshotPath =
|
|
9779
|
-
|
|
9891
|
+
const screenshotPath = path2.join(SCREENSHOT_DIR, `${name2}.png`);
|
|
9892
|
+
fs2.writeFileSync(screenshotPath, await captureSootsimPng(opts));
|
|
9780
9893
|
return screenshotPath;
|
|
9781
9894
|
}
|
|
9782
9895
|
async function dispatchStatusBarOverride(config) {
|
|
@@ -10451,10 +10564,10 @@ var device = {
|
|
|
10451
10564
|
}
|
|
10452
10565
|
if (!_browser) {
|
|
10453
10566
|
const executablePath = import_playwright_core.chromium.executablePath();
|
|
10454
|
-
if (!
|
|
10455
|
-
const requireDriver = (0, import_node_module.createRequire)(
|
|
10456
|
-
const cliPath =
|
|
10457
|
-
|
|
10567
|
+
if (!fs2.existsSync(executablePath)) {
|
|
10568
|
+
const requireDriver = (0, import_node_module.createRequire)(path2.join(__dirname, "index.cjs"));
|
|
10569
|
+
const cliPath = path2.join(
|
|
10570
|
+
path2.dirname(requireDriver.resolve("playwright-core/package.json")),
|
|
10458
10571
|
"cli.js"
|
|
10459
10572
|
);
|
|
10460
10573
|
try {
|
|
@@ -10486,7 +10599,7 @@ var device = {
|
|
|
10486
10599
|
viewport: { width: 500, height: 900 }
|
|
10487
10600
|
};
|
|
10488
10601
|
if (opts?.recordVideoDir) {
|
|
10489
|
-
|
|
10602
|
+
fs2.mkdirSync(opts.recordVideoDir, { recursive: true });
|
|
10490
10603
|
contextOpts.recordVideo = {
|
|
10491
10604
|
dir: opts.recordVideoDir,
|
|
10492
10605
|
size: { width: 500, height: 900 }
|
|
@@ -10613,8 +10726,8 @@ var device = {
|
|
|
10613
10726
|
// frame-stability poll so callers can sample mid-transition.
|
|
10614
10727
|
async takeScreenshotFast(name2) {
|
|
10615
10728
|
ensureScreenshotDir();
|
|
10616
|
-
const screenshotPath =
|
|
10617
|
-
|
|
10729
|
+
const screenshotPath = path2.join(SCREENSHOT_DIR, `${name2}.png`);
|
|
10730
|
+
fs2.writeFileSync(screenshotPath, await captureSootsimPngFast());
|
|
10618
10731
|
return screenshotPath;
|
|
10619
10732
|
},
|
|
10620
10733
|
// record the SootSim canvas via the engine's headless recorder
|
|
@@ -10684,8 +10797,8 @@ var device = {
|
|
|
10684
10797
|
offset = result.offset;
|
|
10685
10798
|
if (result.done) break;
|
|
10686
10799
|
}
|
|
10687
|
-
|
|
10688
|
-
|
|
10800
|
+
fs2.mkdirSync(path2.dirname(outPath), { recursive: true });
|
|
10801
|
+
fs2.writeFileSync(outPath, Buffer.concat(chunks));
|
|
10689
10802
|
this._lastRecordingPath = outPath;
|
|
10690
10803
|
return outPath;
|
|
10691
10804
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1469 | (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.1469 | (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;
|
|
@@ -3745,7 +3745,7 @@ function compileSwiftProjectUnit(input, options) {
|
|
|
3745
3745
|
};
|
|
3746
3746
|
const hash = swiftArtifactHash(input, options.release, moduleRoot);
|
|
3747
3747
|
return serialize(root, async () => {
|
|
3748
|
-
if (process.platform === "darwin" && process.env.TM_SESSION && process.env.CI !== "true" && moduleRoot === import_node_path2.default.resolve(__sootsim_import_meta_dirname, "../../sootsim-swift") && !swiftDistributionAt(moduleRoot)) {
|
|
3748
|
+
if (process.platform === "darwin" && process.env.TM_SESSION && !process.env.CONTRAST_REMOTE_BUILD && process.env.CI !== "true" && moduleRoot === import_node_path2.default.resolve(__sootsim_import_meta_dirname, "../../sootsim-swift") && !swiftDistributionAt(moduleRoot)) {
|
|
3749
3749
|
const requestRoot = (0, import_node_fs2.mkdtempSync)(import_node_path2.default.join(root, ".builder-request-"));
|
|
3750
3750
|
const output = import_node_path2.default.join(requestRoot, "output");
|
|
3751
3751
|
const request = import_node_path2.default.join(requestRoot, "request.json");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1469 | (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/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1469 | (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;
|