peachsim 0.1.1640 → 0.1.1641
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/README.md +5 -0
- package/cli/app-stubs.ts +38 -13
- package/cli/cloud-session.ts +16 -0
- package/cli/commands/assert.ts +17 -4
- package/cli/commands/box.ts +33 -19
- package/cli/commands/doctor.ts +24 -15
- package/cli/commands/inspect/actions.ts +3 -2
- package/cli/commands/inspect/core.ts +0 -8
- package/cli/commands/inspect.ts +0 -14
- package/cli/commands/platform.ts +2 -1
- package/cli/commands/record.ts +64 -28
- package/cli/commands/swift.ts +10 -2
- package/cli/commands/three-mode.ts +4 -38
- package/cli/commands/upload.ts +8 -8
- package/cli/flow-live-status.ts +0 -2
- package/cli/main.ts +1 -1
- package/cli/ws-bridge.ts +0 -6
- package/detox/attempt-events.cjs +41 -5
- package/detox/index.ts +155 -109
- package/detox/jest-environment.cjs +5 -1
- 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 +10 -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 +2059 -1368
- 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 +572 -125
- package/dist-lib/detox/jest-environment.cjs +5 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/expo-swift-bundle.cjs +1837 -1164
- 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 +2290 -1616
- 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 +44 -17
- 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 +33 -13
- package/dist-lib/native-app-identity-project.cjs +7 -4
- package/dist-lib/native-app-identity-project.mjs +7 -4
- 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 +4 -3
- package/dist-lib/sdk.mjs +4 -3
- package/dist-lib/skills.cjs +2823 -2109
- package/dist-lib/swift-compile.cjs +370 -239
- package/dist-lib/swift-compile.mjs +368 -230
- package/dist-lib/swift-package.cjs +1 -1
- package/dist-lib/swift-package.mjs +1 -1
- package/dist-lib/swift-submit.cjs +8 -3
- package/dist-lib/swift-submit.mjs +8 -3
- package/dist-lib/swift-toolchain.cjs +1 -1
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +1757 -1108
- 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/backend-origin.ts +8 -0
- package/src/react-native-bridge-modules.ts +89 -76
- package/src/swift-compile.ts +134 -107
- package/src/swift-distribution.lock.json +9 -8
- package/src/swift-host.ts +6 -4
- package/src/swift-objc-compile.ts +385 -193
- package/src/swift-objc-metadata.ts +204 -0
- package/src/swift-objc-sdk.ts +195 -2
- package/src/swift-package-manifest.ts +6 -3
- package/src/swift-root-lock.ts +153 -0
- package/src/swift-submit.ts +15 -2
- package/src/swiftContract.ts +12 -0
- package/src/xcode-project.ts +10 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1641 | (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.1641 | (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.1641 | (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.1641 | (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.1641 | (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;
|
|
@@ -5532,15 +5532,28 @@ function packageNativeRequests(dir) {
|
|
|
5532
5532
|
}
|
|
5533
5533
|
function dependencyNativeOwners(appDir, manifest) {
|
|
5534
5534
|
const owners = /* @__PURE__ */ new Map();
|
|
5535
|
-
|
|
5535
|
+
const pending = Object.keys({
|
|
5536
5536
|
...manifest?.devDependencies,
|
|
5537
5537
|
...manifest?.dependencies
|
|
5538
|
-
})) {
|
|
5539
|
-
|
|
5540
|
-
|
|
5541
|
-
|
|
5542
|
-
|
|
5543
|
-
|
|
5538
|
+
}).map((name2) => ({ from: appDir, name: name2 }));
|
|
5539
|
+
const visited = /* @__PURE__ */ new Set();
|
|
5540
|
+
for (let index = 0; index < pending.length; index++) {
|
|
5541
|
+
const { from, name: name2 } = pending[index];
|
|
5542
|
+
const dir = installedPackageDir(from, name2);
|
|
5543
|
+
if (!dir || visited.has(dir)) continue;
|
|
5544
|
+
visited.add(dir);
|
|
5545
|
+
const dependency = readProjectManifest(dir);
|
|
5546
|
+
const optional = readPackageJson(dir)?.optionalDependencies;
|
|
5547
|
+
if (dir.split("/").includes("node_modules") && (from === appDir || hasNativeCode(dir, "ios"))) {
|
|
5548
|
+
for (const request of packageNativeRequests(dir))
|
|
5549
|
+
if (!owners.has(`${request.kind}:${request.name}`))
|
|
5550
|
+
owners.set(`${request.kind}:${request.name}`, dependency?.name ?? name2);
|
|
5551
|
+
}
|
|
5552
|
+
for (const child of Object.keys({
|
|
5553
|
+
...dependency?.dependencies,
|
|
5554
|
+
...isRecord(optional) ? optional : {}
|
|
5555
|
+
}))
|
|
5556
|
+
pending.push({ from: dir, name: child });
|
|
5544
5557
|
}
|
|
5545
5558
|
return owners;
|
|
5546
5559
|
}
|
|
@@ -5672,7 +5685,9 @@ function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__
|
|
|
5672
5685
|
expoModuleDirs.map((dir) => [
|
|
5673
5686
|
dir,
|
|
5674
5687
|
scanRepository(dir).directories.flatMap(
|
|
5675
|
-
(sub) => listDir(sub).filter(
|
|
5688
|
+
(sub) => listDir(sub).filter(
|
|
5689
|
+
(name2) => NATIVE_SOURCE_FILE.test(name2) && (!platform || (platform === "ios" ? name2.endsWith(".swift") : name2.endsWith(".kt")))
|
|
5690
|
+
).map((name2) => (0, import_node_path16.join)(sub, name2))
|
|
5676
5691
|
)
|
|
5677
5692
|
])
|
|
5678
5693
|
);
|
|
@@ -5701,7 +5716,9 @@ function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__
|
|
|
5701
5716
|
path: `${(0, import_node_path16.relative)(appDir, file)}:${line}`,
|
|
5702
5717
|
expoModule: moduleDir ? (0, import_node_path16.relative)(appDir, moduleDir) || "." : null,
|
|
5703
5718
|
swift: moduleDir ? (nativeFilesByModule.get(moduleDir) ?? []).some(
|
|
5704
|
-
(path20) => path20.endsWith(".swift")
|
|
5719
|
+
(path20) => path20.endsWith(".swift") && [...(readSmallFile(path20) ?? "").matchAll(/\bName\(\s*"(\w+)"\s*\)/g)].some(
|
|
5720
|
+
(match) => match[1] === name2
|
|
5721
|
+
)
|
|
5705
5722
|
) : false,
|
|
5706
5723
|
answered: answered[kind].has(name2)
|
|
5707
5724
|
});
|
|
@@ -7269,6 +7286,8 @@ function createCloudSession(input) {
|
|
|
7269
7286
|
return session;
|
|
7270
7287
|
}
|
|
7271
7288
|
function createCloudBoxSession(input) {
|
|
7289
|
+
if (input.appFontsWireSha256 !== void 0 && !/^[a-f0-9]{64}$/.test(input.appFontsWireSha256))
|
|
7290
|
+
throw new Error("cloud box session has an invalid app-font wire digest");
|
|
7272
7291
|
const session = {
|
|
7273
7292
|
version: CLOUD_SESSION_VERSION,
|
|
7274
7293
|
service: "box",
|
|
@@ -7277,7 +7296,8 @@ function createCloudBoxSession(input) {
|
|
|
7277
7296
|
apiOrigin: normalizeCloudOrigin(input.apiOrigin.trim()),
|
|
7278
7297
|
...input.platform ? { platform: input.platform } : {},
|
|
7279
7298
|
...input.device?.trim() ? { device: input.device.trim() } : {},
|
|
7280
|
-
...input.artifact ? { artifact: input.artifact } : {}
|
|
7299
|
+
...input.artifact ? { artifact: input.artifact } : {},
|
|
7300
|
+
...input.appFontsWireSha256 !== void 0 ? { appFontsWireSha256: input.appFontsWireSha256 } : {}
|
|
7281
7301
|
};
|
|
7282
7302
|
if (!session.boxId || !session.boxToken) {
|
|
7283
7303
|
throw new Error("cloud box session requires a box, an origin, and a box token");
|
|
@@ -7318,13 +7338,16 @@ function parseCloudSession(encoded) {
|
|
|
7318
7338
|
try {
|
|
7319
7339
|
if (parsed.service === "box") {
|
|
7320
7340
|
if (!boxId || !boxToken) throw new Error("unreadable cloud box session");
|
|
7341
|
+
if (parsed.appFontsWireSha256 !== void 0 && typeof parsed.appFontsWireSha256 !== "string")
|
|
7342
|
+
throw new Error("unreadable app-font wire digest");
|
|
7321
7343
|
return createCloudBoxSession({
|
|
7322
7344
|
boxId,
|
|
7323
7345
|
boxToken,
|
|
7324
7346
|
apiOrigin,
|
|
7325
7347
|
platform,
|
|
7326
7348
|
device,
|
|
7327
|
-
artifact
|
|
7349
|
+
artifact,
|
|
7350
|
+
appFontsWireSha256: parsed.appFontsWireSha256
|
|
7328
7351
|
});
|
|
7329
7352
|
}
|
|
7330
7353
|
const simId = parsed.simId;
|
|
@@ -10381,9 +10404,10 @@ async function tapByText(bridge, query, options = {}, opts = {}) {
|
|
|
10381
10404
|
});
|
|
10382
10405
|
}
|
|
10383
10406
|
async function resolveTextTapTarget(bridge, query, options = {}) {
|
|
10407
|
+
const needle = options.exact ? query : query.trim().toLowerCase();
|
|
10408
|
+
if (!needle) return { matched: 0, total: 0 };
|
|
10384
10409
|
const { tree } = await inspectTree(bridge, 50);
|
|
10385
10410
|
if (!Array.isArray(tree)) return { matched: 0, total: 0 };
|
|
10386
|
-
const needle = options.exact ? query : query.toLowerCase();
|
|
10387
10411
|
let candidates = collectTextCandidates(tree).filter(
|
|
10388
10412
|
({ node: node2, ancestorTestIDs, role }) => {
|
|
10389
10413
|
const text2 = nodeText(node2);
|
|
@@ -10407,7 +10431,7 @@ async function resolveTextTapTarget(bridge, query, options = {}) {
|
|
|
10407
10431
|
if (actionable.length > 0) candidates = actionable;
|
|
10408
10432
|
if (!options.exact) {
|
|
10409
10433
|
const whole = candidates.filter(
|
|
10410
|
-
({ node: node2 }) => nodeText(node2).trim().toLowerCase() === needle
|
|
10434
|
+
({ node: node2 }) => nodeText(node2).trim().toLowerCase() === needle
|
|
10411
10435
|
);
|
|
10412
10436
|
if (whole.length > 0) candidates = whole;
|
|
10413
10437
|
}
|
|
@@ -15908,11 +15932,14 @@ function targetSettings(ref, configuration, builtins, options = {}) {
|
|
|
15908
15932
|
if (!config) return [];
|
|
15909
15933
|
const name2 = str(config.name) ?? configuration;
|
|
15910
15934
|
const base = str(config.baseConfigurationReference);
|
|
15935
|
+
const anchor = str(config.baseConfigurationReferenceAnchor);
|
|
15936
|
+
const relative3 = str(config.baseConfigurationReferenceRelativePath);
|
|
15911
15937
|
const own = isDict(config.buildSettings) ? config.buildSettings : {};
|
|
15912
|
-
const
|
|
15913
|
-
|
|
15938
|
+
const directory = anchor ? project.resolvePath(anchor) : null;
|
|
15939
|
+
const baseFile = base ? project.resolvePath(base) : directory && relative3 ? import_node_path13.default.resolve(directory, relative3) : null;
|
|
15940
|
+
if (options.requireSources !== false && (base || anchor || relative3) && (!baseFile || !import_node_fs13.default.existsSync(baseFile)))
|
|
15914
15941
|
throw new Error(
|
|
15915
|
-
`Unable to open base configuration reference file '${baseFile ?? base}'`
|
|
15942
|
+
`Unable to open base configuration reference file '${baseFile ?? base ?? relative3 ?? anchor}'`
|
|
15916
15943
|
);
|
|
15917
15944
|
const read = [];
|
|
15918
15945
|
const fromFile = baseFile ? readXcconfig(baseFile, read) : {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1641 | (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.1641 | (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.1641 | (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.1641 | (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.1641 | (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.1641 | (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.1641 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __esm = (fn, res) => function __init() {
|
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1641 | (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;
|
|
@@ -5500,15 +5500,28 @@ function packageNativeRequests(dir) {
|
|
|
5500
5500
|
}
|
|
5501
5501
|
function dependencyNativeOwners(appDir, manifest) {
|
|
5502
5502
|
const owners = /* @__PURE__ */ new Map();
|
|
5503
|
-
|
|
5503
|
+
const pending = Object.keys({
|
|
5504
5504
|
...manifest?.devDependencies,
|
|
5505
5505
|
...manifest?.dependencies
|
|
5506
|
-
})) {
|
|
5507
|
-
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5506
|
+
}).map((name2) => ({ from: appDir, name: name2 }));
|
|
5507
|
+
const visited = /* @__PURE__ */ new Set();
|
|
5508
|
+
for (let index = 0; index < pending.length; index++) {
|
|
5509
|
+
const { from, name: name2 } = pending[index];
|
|
5510
|
+
const dir = installedPackageDir(from, name2);
|
|
5511
|
+
if (!dir || visited.has(dir)) continue;
|
|
5512
|
+
visited.add(dir);
|
|
5513
|
+
const dependency = readProjectManifest(dir);
|
|
5514
|
+
const optional = readPackageJson(dir)?.optionalDependencies;
|
|
5515
|
+
if (dir.split("/").includes("node_modules") && (from === appDir || hasNativeCode(dir, "ios"))) {
|
|
5516
|
+
for (const request of packageNativeRequests(dir))
|
|
5517
|
+
if (!owners.has(`${request.kind}:${request.name}`))
|
|
5518
|
+
owners.set(`${request.kind}:${request.name}`, dependency?.name ?? name2);
|
|
5519
|
+
}
|
|
5520
|
+
for (const child of Object.keys({
|
|
5521
|
+
...dependency?.dependencies,
|
|
5522
|
+
...isRecord(optional) ? optional : {}
|
|
5523
|
+
}))
|
|
5524
|
+
pending.push({ from: dir, name: child });
|
|
5512
5525
|
}
|
|
5513
5526
|
return owners;
|
|
5514
5527
|
}
|
|
@@ -5640,7 +5653,9 @@ function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__
|
|
|
5640
5653
|
expoModuleDirs.map((dir) => [
|
|
5641
5654
|
dir,
|
|
5642
5655
|
scanRepository(dir).directories.flatMap(
|
|
5643
|
-
(sub) => listDir(sub).filter(
|
|
5656
|
+
(sub) => listDir(sub).filter(
|
|
5657
|
+
(name2) => NATIVE_SOURCE_FILE.test(name2) && (!platform || (platform === "ios" ? name2.endsWith(".swift") : name2.endsWith(".kt")))
|
|
5658
|
+
).map((name2) => (0, import_node_path10.join)(sub, name2))
|
|
5644
5659
|
)
|
|
5645
5660
|
])
|
|
5646
5661
|
);
|
|
@@ -5669,7 +5684,9 @@ function scanLocalNative(appDir, pkg, answered, platform, knownPackages = /* @__
|
|
|
5669
5684
|
path: `${(0, import_node_path10.relative)(appDir, file)}:${line}`,
|
|
5670
5685
|
expoModule: moduleDir ? (0, import_node_path10.relative)(appDir, moduleDir) || "." : null,
|
|
5671
5686
|
swift: moduleDir ? (nativeFilesByModule.get(moduleDir) ?? []).some(
|
|
5672
|
-
(path14) => path14.endsWith(".swift")
|
|
5687
|
+
(path14) => path14.endsWith(".swift") && [...(readSmallFile(path14) ?? "").matchAll(/\bName\(\s*"(\w+)"\s*\)/g)].some(
|
|
5688
|
+
(match) => match[1] === name2
|
|
5689
|
+
)
|
|
5673
5690
|
) : false,
|
|
5674
5691
|
answered: answered[kind].has(name2)
|
|
5675
5692
|
});
|
|
@@ -9948,11 +9965,14 @@ function targetSettings(ref, configuration, builtins, options = {}) {
|
|
|
9948
9965
|
if (!config) return [];
|
|
9949
9966
|
const name2 = str(config.name) ?? configuration;
|
|
9950
9967
|
const base = str(config.baseConfigurationReference);
|
|
9968
|
+
const anchor = str(config.baseConfigurationReferenceAnchor);
|
|
9969
|
+
const relative3 = str(config.baseConfigurationReferenceRelativePath);
|
|
9951
9970
|
const own = isDict(config.buildSettings) ? config.buildSettings : {};
|
|
9952
|
-
const
|
|
9953
|
-
|
|
9971
|
+
const directory = anchor ? project.resolvePath(anchor) : null;
|
|
9972
|
+
const baseFile = base ? project.resolvePath(base) : directory && relative3 ? import_node_path5.default.resolve(directory, relative3) : null;
|
|
9973
|
+
if (options.requireSources !== false && (base || anchor || relative3) && (!baseFile || !import_node_fs5.default.existsSync(baseFile)))
|
|
9954
9974
|
throw new Error(
|
|
9955
|
-
`Unable to open base configuration reference file '${baseFile ?? base}'`
|
|
9975
|
+
`Unable to open base configuration reference file '${baseFile ?? base ?? relative3 ?? anchor}'`
|
|
9956
9976
|
);
|
|
9957
9977
|
const read = [];
|
|
9958
9978
|
const fromFile = baseFile ? readXcconfig(baseFile, read) : {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1641 | (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;
|
|
@@ -2832,11 +2832,14 @@ function targetSettings(ref, configuration, builtins, options = {}) {
|
|
|
2832
2832
|
if (!config) return [];
|
|
2833
2833
|
const name = str(config.name) ?? configuration;
|
|
2834
2834
|
const base = str(config.baseConfigurationReference);
|
|
2835
|
+
const anchor = str(config.baseConfigurationReferenceAnchor);
|
|
2836
|
+
const relative = str(config.baseConfigurationReferenceRelativePath);
|
|
2835
2837
|
const own = isDict(config.buildSettings) ? config.buildSettings : {};
|
|
2836
|
-
const
|
|
2837
|
-
|
|
2838
|
+
const directory = anchor ? project.resolvePath(anchor) : null;
|
|
2839
|
+
const baseFile = base ? project.resolvePath(base) : directory && relative ? import_node_path2.default.resolve(directory, relative) : null;
|
|
2840
|
+
if (options.requireSources !== false && (base || anchor || relative) && (!baseFile || !import_node_fs.default.existsSync(baseFile)))
|
|
2838
2841
|
throw new Error(
|
|
2839
|
-
`Unable to open base configuration reference file '${baseFile ?? base}'`
|
|
2842
|
+
`Unable to open base configuration reference file '${baseFile ?? base ?? relative ?? anchor}'`
|
|
2840
2843
|
);
|
|
2841
2844
|
const read = [];
|
|
2842
2845
|
const fromFile = baseFile ? readXcconfig(baseFile, read) : {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1641 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/native-app-identity-project.ts
|
|
4
4
|
import fs2 from "node:fs";
|
|
@@ -1441,11 +1441,14 @@ function targetSettings(ref, configuration, builtins, options = {}) {
|
|
|
1441
1441
|
if (!config) return [];
|
|
1442
1442
|
const name = str(config.name) ?? configuration;
|
|
1443
1443
|
const base = str(config.baseConfigurationReference);
|
|
1444
|
+
const anchor = str(config.baseConfigurationReferenceAnchor);
|
|
1445
|
+
const relative = str(config.baseConfigurationReferenceRelativePath);
|
|
1444
1446
|
const own = isDict(config.buildSettings) ? config.buildSettings : {};
|
|
1445
|
-
const
|
|
1446
|
-
|
|
1447
|
+
const directory = anchor ? project.resolvePath(anchor) : null;
|
|
1448
|
+
const baseFile = base ? project.resolvePath(base) : directory && relative ? path2.resolve(directory, relative) : null;
|
|
1449
|
+
if (options.requireSources !== false && (base || anchor || relative) && (!baseFile || !fs.existsSync(baseFile)))
|
|
1447
1450
|
throw new Error(
|
|
1448
|
-
`Unable to open base configuration reference file '${baseFile ?? base}'`
|
|
1451
|
+
`Unable to open base configuration reference file '${baseFile ?? base ?? relative ?? anchor}'`
|
|
1449
1452
|
);
|
|
1450
1453
|
const read = [];
|
|
1451
1454
|
const fromFile = baseFile ? readXcconfig(baseFile, read) : {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1641 | (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.1641 | (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.1641 | (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.1641 | (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.1641 | (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.1641 | (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.1641 | (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.1641 | (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;
|
|
@@ -2497,9 +2497,10 @@ async function tapByText(bridge, query, options = {}, opts = {}) {
|
|
|
2497
2497
|
});
|
|
2498
2498
|
}
|
|
2499
2499
|
async function resolveTextTapTarget(bridge, query, options = {}) {
|
|
2500
|
+
const needle = options.exact ? query : query.trim().toLowerCase();
|
|
2501
|
+
if (!needle) return { matched: 0, total: 0 };
|
|
2500
2502
|
const { tree } = await inspectTree(bridge, 50);
|
|
2501
2503
|
if (!Array.isArray(tree)) return { matched: 0, total: 0 };
|
|
2502
|
-
const needle = options.exact ? query : query.toLowerCase();
|
|
2503
2504
|
let candidates = collectTextCandidates(tree).filter(
|
|
2504
2505
|
({ node: node2, ancestorTestIDs, role }) => {
|
|
2505
2506
|
const text = nodeText(node2);
|
|
@@ -2523,7 +2524,7 @@ async function resolveTextTapTarget(bridge, query, options = {}) {
|
|
|
2523
2524
|
if (actionable.length > 0) candidates = actionable;
|
|
2524
2525
|
if (!options.exact) {
|
|
2525
2526
|
const whole = candidates.filter(
|
|
2526
|
-
({ node: node2 }) => nodeText(node2).trim().toLowerCase() === needle
|
|
2527
|
+
({ node: node2 }) => nodeText(node2).trim().toLowerCase() === needle
|
|
2527
2528
|
);
|
|
2528
2529
|
if (whole.length > 0) candidates = whole;
|
|
2529
2530
|
}
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1641 | (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);
|
|
@@ -2392,9 +2392,10 @@ async function tapByText(bridge, query, options = {}, opts = {}) {
|
|
|
2392
2392
|
});
|
|
2393
2393
|
}
|
|
2394
2394
|
async function resolveTextTapTarget(bridge, query, options = {}) {
|
|
2395
|
+
const needle = options.exact ? query : query.trim().toLowerCase();
|
|
2396
|
+
if (!needle) return { matched: 0, total: 0 };
|
|
2395
2397
|
const { tree } = await inspectTree(bridge, 50);
|
|
2396
2398
|
if (!Array.isArray(tree)) return { matched: 0, total: 0 };
|
|
2397
|
-
const needle = options.exact ? query : query.toLowerCase();
|
|
2398
2399
|
let candidates = collectTextCandidates(tree).filter(
|
|
2399
2400
|
({ node: node2, ancestorTestIDs, role }) => {
|
|
2400
2401
|
const text = nodeText(node2);
|
|
@@ -2418,7 +2419,7 @@ async function resolveTextTapTarget(bridge, query, options = {}) {
|
|
|
2418
2419
|
if (actionable.length > 0) candidates = actionable;
|
|
2419
2420
|
if (!options.exact) {
|
|
2420
2421
|
const whole = candidates.filter(
|
|
2421
|
-
({ node: node2 }) => nodeText(node2).trim().toLowerCase() === needle
|
|
2422
|
+
({ node: node2 }) => nodeText(node2).trim().toLowerCase() === needle
|
|
2422
2423
|
);
|
|
2423
2424
|
if (whole.length > 0) candidates = whole;
|
|
2424
2425
|
}
|