peachsim 0.1.1469 → 0.1.1481
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/commands/control.ts +68 -42
- package/cli/commands/detox.ts +15 -10
- package/cli/commands/flow.ts +1 -2
- package/cli/commands/inspect/settling.ts +5 -1
- package/cli/commands/setup.ts +20 -13
- package/cli/commands/test.ts +2 -1
- package/cli/dev-build-freshness.ts +14 -14
- package/cli/drivers/playwright-sim-host.ts +7 -2
- package/cli/drivers/playwright.ts +6 -6
- package/cli/outbound-endpoints.ts +80 -6
- package/detox/index.ts +27 -14
- package/detox/matchers.ts +17 -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 +54 -15
- 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 +19 -3
- package/dist-lib/config.mjs +19 -3
- package/dist-lib/detox/index.cjs +125 -52
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/expo-swift-bundle.cjs +30 -9
- package/dist-lib/expo-swift-metadata.cjs +18 -6
- package/dist-lib/expo-swift-metadata.mjs +18 -6
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +621 -390
- 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 +46 -19
- 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 +24 -6
- package/dist-lib/metro-production-bundle.mjs +22 -6
- package/dist-lib/metro.cjs +41 -18
- 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 +19 -5
- package/dist-lib/native-app-identity.mjs +19 -5
- package/dist-lib/native-firebase-metadata.cjs +22 -7
- package/dist-lib/native-firebase-metadata.mjs +20 -7
- 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 +3 -1
- package/dist-lib/react-native-host-modules.mjs +3 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +404 -279
- package/dist-lib/sdk.cjs +6 -2
- package/dist-lib/sdk.mjs +6 -2
- package/dist-lib/skills.cjs +757 -531
- 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 +27 -7
- package/dist-lib/worklet-executable.mjs +27 -7
- package/package.json +1 -1
- package/scripts/dev-server-scanner.ts +493 -188
- package/src/admitted-mac-build.ts +12 -0
- package/src/bridge-constants.ts +5 -3
- package/src/bundleGlobalFooter.ts +26 -3
- package/src/config.ts +3 -2
- package/src/configured-bundle-producer.ts +2 -1
- package/src/expo-swift-host.ts +33 -7
- package/src/host/bridge-host.ts +34 -6
- package/src/metro-production-bundle.ts +11 -4
- package/src/native-app-identity.ts +3 -2
- package/src/native-firebase-metadata.ts +5 -3
- package/src/react-native-host-modules.ts +2 -0
- package/src/swift-compile.ts +5 -4
- package/src/worker-system-chunks.ts +61 -58
- package/src/worklet-executable.ts +38 -6
package/detox/index.ts
CHANGED
|
@@ -657,10 +657,19 @@ export async function waitForSootsimIdle(
|
|
|
657
657
|
// find a node in the sootsim tree matching a matcher descriptor
|
|
658
658
|
async function findNodeByMatcher(matcher: Matcher): Promise<any> {
|
|
659
659
|
const page = getPage()
|
|
660
|
-
if (
|
|
660
|
+
if (
|
|
661
|
+
matcher.regexFlags !== undefined ||
|
|
662
|
+
matcher.index !== undefined ||
|
|
663
|
+
matcher.type === 'text'
|
|
664
|
+
) {
|
|
661
665
|
return page.evaluate(async (indexedMatcher: Matcher) => {
|
|
662
|
-
const
|
|
663
|
-
indexedMatcher.
|
|
666
|
+
const regex =
|
|
667
|
+
indexedMatcher.regexFlags !== undefined
|
|
668
|
+
? new RegExp(indexedMatcher.value, indexedMatcher.regexFlags)
|
|
669
|
+
: null
|
|
670
|
+
const filter = regex
|
|
671
|
+
? {}
|
|
672
|
+
: indexedMatcher.type === 'id'
|
|
664
673
|
? { hasId: indexedMatcher.value }
|
|
665
674
|
: indexedMatcher.type === 'text'
|
|
666
675
|
? { hasText: indexedMatcher.value }
|
|
@@ -670,16 +679,18 @@ async function findNodeByMatcher(matcher: Matcher): Promise<any> {
|
|
|
670
679
|
? { hasRole: indexedMatcher.value }
|
|
671
680
|
: { type: indexedMatcher.value }
|
|
672
681
|
const results = await window.__sootsimTest!.queryAll(filter)
|
|
673
|
-
//
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
682
|
+
// text targets exclude ancestors; string values keep exact matching.
|
|
683
|
+
const indexed = results.filter((node) => {
|
|
684
|
+
if (indexedMatcher.type === 'text' && node.type !== 'text' && node.nodeId >= 0)
|
|
685
|
+
return false
|
|
686
|
+
if (!regex)
|
|
687
|
+
return indexedMatcher.type !== 'text' || node.text === indexedMatcher.value
|
|
688
|
+
const matches = (value: string | null) =>
|
|
689
|
+
typeof value === 'string' && regex.test(value)
|
|
690
|
+
if (indexedMatcher.type === 'id') return matches(node.testID) || matches(node.id)
|
|
691
|
+
if (indexedMatcher.type === 'text') return matches(node.text)
|
|
692
|
+
return matches(node.accessibilityLabel || (node.accessible ? node.text : null))
|
|
693
|
+
})
|
|
683
694
|
return indexed[indexedMatcher.index ?? 0] ?? null
|
|
684
695
|
}, matcher)
|
|
685
696
|
}
|
|
@@ -1290,8 +1301,10 @@ function createSootSimElement(matcher: Matcher): SootSimElement {
|
|
|
1290
1301
|
async replaceText(text: string) {
|
|
1291
1302
|
const page = getPage()
|
|
1292
1303
|
const node = await findNodeByMatcher(matcher)
|
|
1304
|
+
const resolvedId = node?.testID ?? node?.id
|
|
1293
1305
|
if (
|
|
1294
1306
|
matcher.type === 'id' &&
|
|
1307
|
+
typeof resolvedId === 'string' &&
|
|
1295
1308
|
typeof node?.nodeId === 'number' &&
|
|
1296
1309
|
node.nodeId >= 0x40000000
|
|
1297
1310
|
) {
|
|
@@ -1301,7 +1314,7 @@ function createSootSimElement(matcher: Matcher): SootSimElement {
|
|
|
1301
1314
|
if (typeof mainShell?.callTestBridge !== 'function') return false
|
|
1302
1315
|
return mainShell.callTestBridge('replaceTextByTestId', id, value)
|
|
1303
1316
|
},
|
|
1304
|
-
{ id:
|
|
1317
|
+
{ id: resolvedId, value: text },
|
|
1305
1318
|
)
|
|
1306
1319
|
if (replaced === true) return
|
|
1307
1320
|
}
|
package/detox/matchers.ts
CHANGED
|
@@ -4,20 +4,31 @@
|
|
|
4
4
|
export interface Matcher {
|
|
5
5
|
type: 'id' | 'text' | 'label' | 'type' | 'role'
|
|
6
6
|
value: string
|
|
7
|
+
regexFlags?: string
|
|
7
8
|
index?: number
|
|
8
9
|
}
|
|
9
10
|
|
|
11
|
+
function createMatcher(type: 'id' | 'text' | 'label', value: string | RegExp): Matcher {
|
|
12
|
+
if (typeof value === 'string') return { type, value }
|
|
13
|
+
// detox ignores global and sticky state and always uses unicode matching.
|
|
14
|
+
return {
|
|
15
|
+
type,
|
|
16
|
+
value: value.source,
|
|
17
|
+
regexFlags: value.flags.replace(/[^ims]/g, '') + 'u',
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
10
21
|
export const by = {
|
|
11
|
-
id(testID: string): Matcher {
|
|
12
|
-
return
|
|
22
|
+
id(testID: string | RegExp): Matcher {
|
|
23
|
+
return createMatcher('id', testID)
|
|
13
24
|
},
|
|
14
25
|
|
|
15
|
-
text(text: string): Matcher {
|
|
16
|
-
return
|
|
26
|
+
text(text: string | RegExp): Matcher {
|
|
27
|
+
return createMatcher('text', text)
|
|
17
28
|
},
|
|
18
29
|
|
|
19
|
-
label(accessibilityLabel: string): Matcher {
|
|
20
|
-
return
|
|
30
|
+
label(accessibilityLabel: string | RegExp): Matcher {
|
|
31
|
+
return createMatcher('label', accessibilityLabel)
|
|
21
32
|
},
|
|
22
33
|
|
|
23
34
|
type(nativeType: string): Matcher {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1481 | (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.1481 | (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.1481 | (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.1481 | (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.1481 | (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/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1481 | (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/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1481 | (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.1481 | (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.1481 | (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.1481 | (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;
|
|
@@ -76,6 +76,16 @@ var init_internal_child = __esm({
|
|
|
76
76
|
}
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
+
// src/admitted-mac-build.ts
|
|
80
|
+
function admittedMacBuilderSlot(env = process.env) {
|
|
81
|
+
return env.CONTRAST_REMOTE_BUILD === "mac" && env.REMOTE_MAC_SLOT_HELD === "1" && env.CONTRAST_HEAVY_ADMITTED === "1";
|
|
82
|
+
}
|
|
83
|
+
var init_admitted_mac_build = __esm({
|
|
84
|
+
"src/admitted-mac-build.ts"() {
|
|
85
|
+
"use strict";
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
|
|
79
89
|
// src/is-record.ts
|
|
80
90
|
function isRecord(value) {
|
|
81
91
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -2329,7 +2339,7 @@ function compileSwiftProjectUnit(input, options) {
|
|
|
2329
2339
|
};
|
|
2330
2340
|
const hash = swiftArtifactHash(input, options.release, moduleRoot);
|
|
2331
2341
|
return serialize(root, async () => {
|
|
2332
|
-
if (process.platform === "darwin" && process.env.TM_SESSION && !
|
|
2342
|
+
if (process.platform === "darwin" && process.env.TM_SESSION && !admittedMacBuilderSlot() && process.env.CI !== "true" && moduleRoot === import_node_path2.default.resolve(__sootsim_import_meta_dirname, "../../sootsim-swift") && !swiftDistributionAt(moduleRoot)) {
|
|
2333
2343
|
const requestRoot = (0, import_node_fs2.mkdtempSync)(import_node_path2.default.join(root, ".builder-request-"));
|
|
2334
2344
|
const output = import_node_path2.default.join(requestRoot, "output");
|
|
2335
2345
|
const request = import_node_path2.default.join(requestRoot, "request.json");
|
|
@@ -2459,6 +2469,7 @@ var init_swift_compile = __esm({
|
|
|
2459
2469
|
import_node_os = __toESM(require("node:os"), 1);
|
|
2460
2470
|
import_node_path2 = __toESM(require("node:path"), 1);
|
|
2461
2471
|
import_node_util2 = require("node:util");
|
|
2472
|
+
init_admitted_mac_build();
|
|
2462
2473
|
init_swift_distribution_contract();
|
|
2463
2474
|
init_swift_icu();
|
|
2464
2475
|
init_swift_package();
|
|
@@ -9776,6 +9787,20 @@ ${[...new Set(units.map((unit) => unit.namespace))].map((namespace) => `import $
|
|
|
9776
9787
|
}
|
|
9777
9788
|
`;
|
|
9778
9789
|
}
|
|
9790
|
+
function failureRecordPath(packagePath) {
|
|
9791
|
+
return `${packagePath}.failed.json`;
|
|
9792
|
+
}
|
|
9793
|
+
function readFailedCompilation(packagePath) {
|
|
9794
|
+
let record4;
|
|
9795
|
+
try {
|
|
9796
|
+
record4 = JSON.parse(import_node_fs15.default.readFileSync(failureRecordPath(packagePath), "utf8"));
|
|
9797
|
+
} catch {
|
|
9798
|
+
return null;
|
|
9799
|
+
}
|
|
9800
|
+
if (typeof record4 !== "object" || record4 === null || !("stamp" in record4) || !("diagnostic" in record4) || typeof record4.stamp !== "string" || typeof record4.diagnostic !== "string")
|
|
9801
|
+
return null;
|
|
9802
|
+
return { stamp: record4.stamp, diagnostic: record4.diagnostic };
|
|
9803
|
+
}
|
|
9779
9804
|
async function compileExpoSwiftModules(root, base, publishArtifact) {
|
|
9780
9805
|
const units = await collectExpoSwiftSources(root);
|
|
9781
9806
|
if (!units) return null;
|
|
@@ -9811,12 +9836,12 @@ async function compileExpoSwiftModules(root, base, publishArtifact) {
|
|
|
9811
9836
|
)
|
|
9812
9837
|
);
|
|
9813
9838
|
const stamp = sourceStamp(packagePath, module2.root);
|
|
9814
|
-
const failed =
|
|
9839
|
+
const failed = readFailedCompilation(packagePath);
|
|
9815
9840
|
if (failed?.stamp === stamp) {
|
|
9816
9841
|
failures.set(unit.moduleId, failed.diagnostic);
|
|
9817
9842
|
continue;
|
|
9818
9843
|
}
|
|
9819
|
-
|
|
9844
|
+
import_node_fs15.default.rmSync(failureRecordPath(packagePath), { force: true });
|
|
9820
9845
|
stamps.set(unit, stamp);
|
|
9821
9846
|
candidates.push(unit);
|
|
9822
9847
|
}
|
|
@@ -9880,10 +9905,13 @@ let package = Package(name: "PeachExpo", targets: [${targets.map((name2) => `.ta
|
|
|
9880
9905
|
throw error;
|
|
9881
9906
|
const missing = error instanceof SwiftMissingModulesError;
|
|
9882
9907
|
if ((sourceErrors.length && sourceErrors.length === errors.length || missing) && sourceStamp(packagePath, module2.root) === stamps.get(unit)) {
|
|
9883
|
-
|
|
9884
|
-
|
|
9885
|
-
|
|
9886
|
-
|
|
9908
|
+
import_node_fs15.default.writeFileSync(
|
|
9909
|
+
failureRecordPath(packagePath),
|
|
9910
|
+
JSON.stringify({
|
|
9911
|
+
stamp: stamps.get(unit),
|
|
9912
|
+
diagnostic: missing ? diagnostic : sourceErrors.join("\n")
|
|
9913
|
+
})
|
|
9914
|
+
);
|
|
9887
9915
|
}
|
|
9888
9916
|
failures.set(
|
|
9889
9917
|
unit.moduleId,
|
|
@@ -9912,7 +9940,7 @@ let package = Package(name: "PeachExpo", targets: [${targets.map((name2) => `.ta
|
|
|
9912
9940
|
}
|
|
9913
9941
|
return result;
|
|
9914
9942
|
}
|
|
9915
|
-
var import_node_child_process9, import_node_crypto8, import_node_fs15, import_node_module, import_node_os9, import_node_path16, import_node_util3, run3, scriptEnv, EXPO_SWIFT_ENTRY
|
|
9943
|
+
var import_node_child_process9, import_node_crypto8, import_node_fs15, import_node_module, import_node_os9, import_node_path16, import_node_util3, run3, scriptEnv, EXPO_SWIFT_ENTRY;
|
|
9916
9944
|
var init_expo_swift_host = __esm({
|
|
9917
9945
|
"src/expo-swift-host.ts"() {
|
|
9918
9946
|
"use strict";
|
|
@@ -9932,7 +9960,6 @@ var init_expo_swift_host = __esm({
|
|
|
9932
9960
|
run3 = (0, import_node_util3.promisify)(import_node_child_process9.execFile);
|
|
9933
9961
|
scriptEnv = { ...process.env, [RNX_FORKED_SCRIPT_ENV]: "1" };
|
|
9934
9962
|
EXPO_SWIFT_ENTRY = "Sources/PeachExpoApp/PeachExpoEntry.swift";
|
|
9935
|
-
failedCompilations = /* @__PURE__ */ new Map();
|
|
9936
9963
|
}
|
|
9937
9964
|
});
|
|
9938
9965
|
|
|
@@ -11413,10 +11440,23 @@ async function terminateProcessGroup(child, signal = "SIGTERM", gracefulTimeoutM
|
|
|
11413
11440
|
init_backend_origin();
|
|
11414
11441
|
|
|
11415
11442
|
// src/bundleGlobalFooter.ts
|
|
11443
|
+
function findBundleFooter(source, prefix) {
|
|
11444
|
+
let end = source.length;
|
|
11445
|
+
while (end > 0) {
|
|
11446
|
+
const newline = source.lastIndexOf("\n", end - 1);
|
|
11447
|
+
if (newline < 0) return -1;
|
|
11448
|
+
const line = newline + 1;
|
|
11449
|
+
if (source.startsWith(prefix, line)) return newline;
|
|
11450
|
+
if (line !== end && !source.startsWith("globalThis.", line) && !source.startsWith("//", line)) {
|
|
11451
|
+
return -1;
|
|
11452
|
+
}
|
|
11453
|
+
end = newline;
|
|
11454
|
+
}
|
|
11455
|
+
return -1;
|
|
11456
|
+
}
|
|
11416
11457
|
function readBundleGlobalFooter(source, name2) {
|
|
11417
11458
|
const prefix = `globalThis.${name2}=`;
|
|
11418
|
-
const start = source
|
|
11419
|
-
${prefix}`);
|
|
11459
|
+
const start = findBundleFooter(source, prefix);
|
|
11420
11460
|
if (start < 0) return null;
|
|
11421
11461
|
const end = source.indexOf("\n", start + 1);
|
|
11422
11462
|
const line = source.slice(start + 1, end < 0 ? void 0 : end);
|
|
@@ -11427,8 +11467,7 @@ ${prefix}`);
|
|
|
11427
11467
|
}
|
|
11428
11468
|
function insertBundleGlobalFooter(source, name2, value) {
|
|
11429
11469
|
const prefix = `globalThis.${name2}=`;
|
|
11430
|
-
const start = source
|
|
11431
|
-
${prefix}`);
|
|
11470
|
+
const start = findBundleFooter(source, prefix);
|
|
11432
11471
|
if (start >= 0) {
|
|
11433
11472
|
readBundleGlobalFooter(source, name2);
|
|
11434
11473
|
const end = source.indexOf("\n", start + 1);
|
|
@@ -11437,7 +11476,7 @@ ${prefix}`);
|
|
|
11437
11476
|
const json = JSON.stringify(value).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029").replace(/<\//g, "<\\/");
|
|
11438
11477
|
const footer = `
|
|
11439
11478
|
${prefix}${json};`;
|
|
11440
|
-
const identity = source
|
|
11479
|
+
const identity = findBundleFooter(source, "globalThis.__sootsimModulePaths=");
|
|
11441
11480
|
return identity < 0 ? source + footer : source.slice(0, identity) + footer + source.slice(identity);
|
|
11442
11481
|
}
|
|
11443
11482
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1481 | (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.1481 | (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.1481 | (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/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1481 | (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/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1481 | (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);
|
package/dist-lib/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1481 | (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;
|
|
@@ -44,6 +44,22 @@ function isValidRuntimeVersion(value) {
|
|
|
44
44
|
return value.length <= 100 && /^[0-9A-Za-z][0-9A-Za-z._+-]*$/.test(value);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
// src/bundleGlobalFooter.ts
|
|
48
|
+
function findBundleFooter(source, prefix) {
|
|
49
|
+
let end = source.length;
|
|
50
|
+
while (end > 0) {
|
|
51
|
+
const newline = source.lastIndexOf("\n", end - 1);
|
|
52
|
+
if (newline < 0) return -1;
|
|
53
|
+
const line = newline + 1;
|
|
54
|
+
if (source.startsWith(prefix, line)) return newline;
|
|
55
|
+
if (line !== end && !source.startsWith("globalThis.", line) && !source.startsWith("//", line)) {
|
|
56
|
+
return -1;
|
|
57
|
+
}
|
|
58
|
+
end = newline;
|
|
59
|
+
}
|
|
60
|
+
return -1;
|
|
61
|
+
}
|
|
62
|
+
|
|
47
63
|
// src/is-record.ts
|
|
48
64
|
function isRecord(value) {
|
|
49
65
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -94,7 +110,7 @@ function readPeachBundleConfig(value) {
|
|
|
94
110
|
return { config: value.config, runtimePackages: [...value.runtimePackages] };
|
|
95
111
|
}
|
|
96
112
|
function readPeachBundleConfigFooter(source) {
|
|
97
|
-
const start = source
|
|
113
|
+
const start = findBundleFooter(source, BUNDLE_CONFIG_PREFIX);
|
|
98
114
|
if (start < 0) return null;
|
|
99
115
|
const end = source.indexOf("\n", start + 1);
|
|
100
116
|
const line = source.slice(start + 1, end < 0 ? void 0 : end);
|
|
@@ -112,7 +128,7 @@ function createPeachBundleConfigFooter(config) {
|
|
|
112
128
|
function detachPeachBundleConfigFooter(source) {
|
|
113
129
|
const configuredBundle = readPeachBundleConfigFooter(source);
|
|
114
130
|
if (!configuredBundle) return { source, configuredBundle };
|
|
115
|
-
const start = source
|
|
131
|
+
const start = findBundleFooter(source, BUNDLE_CONFIG_PREFIX);
|
|
116
132
|
const end = source.indexOf("\n", start + 1);
|
|
117
133
|
return {
|
|
118
134
|
source: source.slice(0, start) + source.slice(end < 0 ? source.length : end),
|
package/dist-lib/config.mjs
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1481 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/config.ts
|
|
4
4
|
import { isValidRuntimeVersion } from "@contrast/runtime-delivery/version";
|
|
5
5
|
|
|
6
|
+
// src/bundleGlobalFooter.ts
|
|
7
|
+
function findBundleFooter(source, prefix) {
|
|
8
|
+
let end = source.length;
|
|
9
|
+
while (end > 0) {
|
|
10
|
+
const newline = source.lastIndexOf("\n", end - 1);
|
|
11
|
+
if (newline < 0) return -1;
|
|
12
|
+
const line = newline + 1;
|
|
13
|
+
if (source.startsWith(prefix, line)) return newline;
|
|
14
|
+
if (line !== end && !source.startsWith("globalThis.", line) && !source.startsWith("//", line)) {
|
|
15
|
+
return -1;
|
|
16
|
+
}
|
|
17
|
+
end = newline;
|
|
18
|
+
}
|
|
19
|
+
return -1;
|
|
20
|
+
}
|
|
21
|
+
|
|
6
22
|
// src/is-record.ts
|
|
7
23
|
function isRecord(value) {
|
|
8
24
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -53,7 +69,7 @@ function readPeachBundleConfig(value) {
|
|
|
53
69
|
return { config: value.config, runtimePackages: [...value.runtimePackages] };
|
|
54
70
|
}
|
|
55
71
|
function readPeachBundleConfigFooter(source) {
|
|
56
|
-
const start = source
|
|
72
|
+
const start = findBundleFooter(source, BUNDLE_CONFIG_PREFIX);
|
|
57
73
|
if (start < 0) return null;
|
|
58
74
|
const end = source.indexOf("\n", start + 1);
|
|
59
75
|
const line = source.slice(start + 1, end < 0 ? void 0 : end);
|
|
@@ -71,7 +87,7 @@ function createPeachBundleConfigFooter(config) {
|
|
|
71
87
|
function detachPeachBundleConfigFooter(source) {
|
|
72
88
|
const configuredBundle = readPeachBundleConfigFooter(source);
|
|
73
89
|
if (!configuredBundle) return { source, configuredBundle };
|
|
74
|
-
const start = source
|
|
90
|
+
const start = findBundleFooter(source, BUNDLE_CONFIG_PREFIX);
|
|
75
91
|
const end = source.indexOf("\n", start + 1);
|
|
76
92
|
return {
|
|
77
93
|
source: source.slice(0, start) + source.slice(end < 0 ? source.length : end),
|