peachsim 0.1.656 → 0.1.657
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 +1 -1
- package/cli/app-config.ts +9 -6
- package/cli/app-project.ts +6 -6
- package/cli/commands/control.ts +20 -20
- package/cli/commands/flow.ts +3 -3
- package/detox/config-loader.ts +1 -1
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.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/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cli-constants.cjs +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 +25 -25
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +14 -14
- 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 +2 -2
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +2 -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 +2 -2
- package/dist-lib/native-app-identity.cjs +1 -1
- package/dist-lib/native-app-identity.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/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +13 -15
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +94 -70
- package/dist-lib/swift-compile.cjs +1 -1
- package/dist-lib/swift-compile.mjs +1 -1
- 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.cjs +1 -1
- package/dist-lib/vite-swift.cjs +1 -1
- package/dist-lib/vite.cjs +2 -2
- package/package.json +1 -1
- package/scripts/dev-server-scanner.ts +3 -3
- package/scripts/optional-demo-registry.ts +1 -1
- package/src/config.ts +26 -26
package/README.md
CHANGED
|
@@ -627,7 +627,7 @@ Per-repo configuration is optional. Every installed-runtime `peach open`
|
|
|
627
627
|
serves its selected version from a version-specific localhost origin, so a
|
|
628
628
|
background activation cannot mix an already loaded shell with chunks from the
|
|
629
629
|
next runtime. Without config, each new open selects the active stable version.
|
|
630
|
-
When `
|
|
630
|
+
When `peach.config.ts` sets `runtimeVersion`, `peach open` installs that
|
|
631
631
|
version without changing the machine default. App config, native-linked fonts,
|
|
632
632
|
and splash assets all resolve from the project root advertised by the selected
|
|
633
633
|
development server. Bare Metro, which has no Expo manifest project root, uses
|
package/cli/app-config.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { isValidRuntimeVersion } from '@contrast/runtime-delivery'
|
|
|
4
4
|
import { createJiti } from 'jiti'
|
|
5
5
|
import { rnxPublicBrand } from '../src/public-brand'
|
|
6
6
|
import { resolveAppProject, type ResolvedAppProject } from './app-project'
|
|
7
|
-
import type {
|
|
7
|
+
import type { PeachConfig } from '../src/config'
|
|
8
8
|
|
|
9
9
|
const require = createRequire(import.meta.url)
|
|
10
10
|
|
|
@@ -15,7 +15,7 @@ function isOptionalRecord(value: unknown): boolean {
|
|
|
15
15
|
)
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
function
|
|
18
|
+
function isPeachConfig(value: unknown): value is PeachConfig {
|
|
19
19
|
if (!value || typeof value !== 'object' || Array.isArray(value)) return false
|
|
20
20
|
const runtimeVersion = Reflect.get(value, 'runtimeVersion')
|
|
21
21
|
const network = Reflect.get(value, 'network')
|
|
@@ -34,7 +34,10 @@ function isRNXConfig(value: unknown): value is RNXConfig {
|
|
|
34
34
|
)
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
function resolveConfigReplacementFiles(
|
|
37
|
+
function resolveConfigReplacementFiles(
|
|
38
|
+
config: PeachConfig,
|
|
39
|
+
configPath: string,
|
|
40
|
+
): PeachConfig {
|
|
38
41
|
if (!config.modules) return config
|
|
39
42
|
const configDir = path.dirname(configPath)
|
|
40
43
|
return {
|
|
@@ -52,7 +55,7 @@ function resolveConfigReplacementFiles(config: RNXConfig, configPath: string): R
|
|
|
52
55
|
|
|
53
56
|
export async function loadRNXAppConfig(
|
|
54
57
|
project: ResolvedAppProject | null,
|
|
55
|
-
): Promise<
|
|
58
|
+
): Promise<PeachConfig | undefined> {
|
|
56
59
|
if (!project?.configPath) return undefined
|
|
57
60
|
try {
|
|
58
61
|
const jiti = createJiti(import.meta.url, {
|
|
@@ -64,7 +67,7 @@ export async function loadRNXAppConfig(
|
|
|
64
67
|
},
|
|
65
68
|
})
|
|
66
69
|
const loaded: unknown = await jiti.import(project.configPath, { default: true })
|
|
67
|
-
if (!
|
|
70
|
+
if (!isPeachConfig(loaded)) {
|
|
68
71
|
throw new Error('the default export must be a peach config object')
|
|
69
72
|
}
|
|
70
73
|
return resolveConfigReplacementFiles(loaded, project.configPath)
|
|
@@ -76,7 +79,7 @@ export async function loadRNXAppConfig(
|
|
|
76
79
|
|
|
77
80
|
export async function resolveRNXAppConfig(
|
|
78
81
|
startDir: string = process.cwd(),
|
|
79
|
-
): Promise<{ project: ResolvedAppProject | null; config:
|
|
82
|
+
): Promise<{ project: ResolvedAppProject | null; config: PeachConfig | undefined }> {
|
|
80
83
|
const project = resolveAppProject(startDir)
|
|
81
84
|
return { project, config: await loadRNXAppConfig(project) }
|
|
82
85
|
}
|
package/cli/app-project.ts
CHANGED
|
@@ -9,11 +9,11 @@ export const EXPO_APP_CONFIG_NAMES = [
|
|
|
9
9
|
'app.json',
|
|
10
10
|
] as const
|
|
11
11
|
|
|
12
|
-
export const
|
|
13
|
-
'
|
|
14
|
-
'
|
|
15
|
-
'
|
|
16
|
-
'
|
|
12
|
+
export const PEACH_APP_CONFIG_NAMES = [
|
|
13
|
+
'peach.config.ts',
|
|
14
|
+
'peach.config.js',
|
|
15
|
+
'peach.config.mjs',
|
|
16
|
+
'peach.config.cjs',
|
|
17
17
|
] as const
|
|
18
18
|
|
|
19
19
|
export interface ResolvedAppProject {
|
|
@@ -36,7 +36,7 @@ export function findExpoAppConfig(dir: string): string | null {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
export function findRNXAppConfig(dir: string): string | null {
|
|
39
|
-
return firstNamedFile(dir,
|
|
39
|
+
return firstNamedFile(dir, PEACH_APP_CONFIG_NAMES)
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
export function resolveAppProject(projectRoot: string): ResolvedAppProject | null {
|
package/cli/commands/control.ts
CHANGED
|
@@ -15,10 +15,10 @@ import { isAppDeepLinkTarget, openAppUrl } from '../../src/app-url'
|
|
|
15
15
|
import { isLoopbackHost } from '../../src/backend-origin'
|
|
16
16
|
import { resolveSootsimShellBaseUrlForBridgePort } from '../../src/bridge-constants'
|
|
17
17
|
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
type
|
|
18
|
+
applyPeachConfigToUrl,
|
|
19
|
+
mergePeachConfig,
|
|
20
|
+
PEACH_CONFIG_QUERY_PARAM,
|
|
21
|
+
type PeachConfig,
|
|
22
22
|
} from '../../src/config'
|
|
23
23
|
import {
|
|
24
24
|
resolveConnectionInput,
|
|
@@ -97,7 +97,7 @@ import type { DriverId, DriverLaunchResult } from '../drivers/types'
|
|
|
97
97
|
interface ControlCommandOptions {
|
|
98
98
|
port?: number
|
|
99
99
|
timeoutMs?: number
|
|
100
|
-
runtimeConfig?:
|
|
100
|
+
runtimeConfig?: PeachConfig
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
export interface OpenCommandResources {
|
|
@@ -555,8 +555,8 @@ function normalizeReplacementPath(filePath: string): string {
|
|
|
555
555
|
return path.resolve(process.cwd(), filePath)
|
|
556
556
|
}
|
|
557
557
|
|
|
558
|
-
function parseOpenRuntimeConfig(args: string[]):
|
|
559
|
-
const modules: NonNullable<
|
|
558
|
+
function parseOpenRuntimeConfig(args: string[]): PeachConfig | undefined {
|
|
559
|
+
const modules: NonNullable<PeachConfig['modules']> = {}
|
|
560
560
|
const remap: Record<string, string> = {}
|
|
561
561
|
|
|
562
562
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -597,7 +597,7 @@ function parseOpenRuntimeConfig(args: string[]): RNXConfig | undefined {
|
|
|
597
597
|
}
|
|
598
598
|
}
|
|
599
599
|
|
|
600
|
-
const config:
|
|
600
|
+
const config: PeachConfig = {}
|
|
601
601
|
if (Object.keys(modules).length > 0) config.modules = modules
|
|
602
602
|
if (Object.keys(remap).length > 0) config.network = { remap }
|
|
603
603
|
return config.modules || config.network ? config : undefined
|
|
@@ -737,9 +737,9 @@ async function resolveShellUrl(
|
|
|
737
737
|
if (looksLikeSootsimUrl(target)) {
|
|
738
738
|
const url = new URL(target)
|
|
739
739
|
const base = new URL(baseUrl)
|
|
740
|
-
const baseConfig = base.searchParams.get(
|
|
741
|
-
if (baseConfig && !url.searchParams.has(
|
|
742
|
-
url.searchParams.set(
|
|
740
|
+
const baseConfig = base.searchParams.get(PEACH_CONFIG_QUERY_PARAM)
|
|
741
|
+
if (baseConfig && !url.searchParams.has(PEACH_CONFIG_QUERY_PARAM)) {
|
|
742
|
+
url.searchParams.set(PEACH_CONFIG_QUERY_PARAM, baseConfig)
|
|
743
743
|
}
|
|
744
744
|
return url.toString()
|
|
745
745
|
}
|
|
@@ -1281,16 +1281,16 @@ export function printOpenedSim(
|
|
|
1281
1281
|
try {
|
|
1282
1282
|
const parsed = new URL(value)
|
|
1283
1283
|
let changed = false
|
|
1284
|
-
if (parsed.searchParams.has(
|
|
1285
|
-
parsed.searchParams.set(
|
|
1284
|
+
if (parsed.searchParams.has(PEACH_CONFIG_QUERY_PARAM)) {
|
|
1285
|
+
parsed.searchParams.set(PEACH_CONFIG_QUERY_PARAM, '[redacted]')
|
|
1286
1286
|
changed = true
|
|
1287
1287
|
}
|
|
1288
1288
|
const bundle = parsed.searchParams.get('bundle')
|
|
1289
1289
|
if (bundle) {
|
|
1290
1290
|
try {
|
|
1291
1291
|
const parsedBundle = new URL(bundle)
|
|
1292
|
-
if (parsedBundle.searchParams.has(
|
|
1293
|
-
parsedBundle.searchParams.set(
|
|
1292
|
+
if (parsedBundle.searchParams.has(PEACH_CONFIG_QUERY_PARAM)) {
|
|
1293
|
+
parsedBundle.searchParams.set(PEACH_CONFIG_QUERY_PARAM, '[redacted]')
|
|
1294
1294
|
parsed.searchParams.set('bundle', parsedBundle.toString())
|
|
1295
1295
|
changed = true
|
|
1296
1296
|
}
|
|
@@ -1585,8 +1585,8 @@ export async function runOpenCommand(
|
|
|
1585
1585
|
const project = await resolveAppProjectForBundleUrl(resolvedBundle?.bundleUrl)
|
|
1586
1586
|
const appConfig = await loadRNXAppConfig(project)
|
|
1587
1587
|
const configuredRuntimeVersion = appConfig?.runtimeVersion
|
|
1588
|
-
const runtimeConfig =
|
|
1589
|
-
|
|
1588
|
+
const runtimeConfig = mergePeachConfig(
|
|
1589
|
+
mergePeachConfig(
|
|
1590
1590
|
appConfig ? { ...appConfig, runtimeVersion: undefined } : undefined,
|
|
1591
1591
|
opts.runtimeConfig,
|
|
1592
1592
|
),
|
|
@@ -1842,7 +1842,7 @@ export async function runOpenCommand(
|
|
|
1842
1842
|
if (!targetSim && parsed.simIdSource !== 'flag') {
|
|
1843
1843
|
targetShellUrl = await buildShellUrl(
|
|
1844
1844
|
target,
|
|
1845
|
-
|
|
1845
|
+
applyPeachConfigToUrl(baseUrl, runtimeConfig),
|
|
1846
1846
|
buildShellUrlOpts,
|
|
1847
1847
|
)
|
|
1848
1848
|
const normalizedTarget = new URL(targetShellUrl)
|
|
@@ -1881,7 +1881,7 @@ export async function runOpenCommand(
|
|
|
1881
1881
|
targetShellUrl ??
|
|
1882
1882
|
(await buildShellUrl(
|
|
1883
1883
|
target,
|
|
1884
|
-
|
|
1884
|
+
applyPeachConfigToUrl(resolvedBaseUrl, runtimeConfig),
|
|
1885
1885
|
buildShellUrlOpts,
|
|
1886
1886
|
))
|
|
1887
1887
|
const navigationUrl = new URL(navigatedShellUrl)
|
|
@@ -1968,7 +1968,7 @@ export async function runOpenCommand(
|
|
|
1968
1968
|
}
|
|
1969
1969
|
}
|
|
1970
1970
|
|
|
1971
|
-
const configuredBaseUrl =
|
|
1971
|
+
const configuredBaseUrl = applyPeachConfigToUrl(baseUrl, runtimeConfig)
|
|
1972
1972
|
const openUrl = await buildOpenUrl(target, configuredBaseUrl, token, buildShellUrlOpts)
|
|
1973
1973
|
const ownerPid = opts.ownerPid ?? getStableOwnerPid()
|
|
1974
1974
|
if (!ownerPid) {
|
package/cli/commands/flow.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { tmpdir } from 'os'
|
|
|
7
7
|
import * as path from 'path'
|
|
8
8
|
import { scanDevServers } from '../../scripts/dev-server-scanner'
|
|
9
9
|
import { loadOptionalDemoApps } from '../../scripts/optional-demo-registry'
|
|
10
|
-
import {
|
|
10
|
+
import { applyPeachConfigToUrl, type PeachConfig } from '../../src/config'
|
|
11
11
|
import { printBridgeFailureDiagnostics } from '../bridge-diagnostics'
|
|
12
12
|
import {
|
|
13
13
|
SootSimBridgeFlowRunner,
|
|
@@ -176,7 +176,7 @@ export function getLastFlowTraceSteps(): SootSimFlowTraceStep[] {
|
|
|
176
176
|
// port and runtime config into the open command.
|
|
177
177
|
export async function resolveAppFrontmatterTarget(
|
|
178
178
|
raw: string,
|
|
179
|
-
): Promise<{ target: string; runtimeConfig?:
|
|
179
|
+
): Promise<{ target: string; runtimeConfig?: PeachConfig }> {
|
|
180
180
|
if (!raw) return { target: '' }
|
|
181
181
|
const trimmed = raw.trim()
|
|
182
182
|
if (!trimmed) return { target: '' }
|
|
@@ -531,7 +531,7 @@ flow extension:
|
|
|
531
531
|
}
|
|
532
532
|
|
|
533
533
|
if (openTarget && targetDevice) {
|
|
534
|
-
const shellBaseUrl =
|
|
534
|
+
const shellBaseUrl = applyPeachConfigToUrl(
|
|
535
535
|
pinnedShellBaseUrl || resolveShellBaseUrlForBridgePort(parsedBridgeArgs.wsPort),
|
|
536
536
|
targetAppResolution.runtimeConfig,
|
|
537
537
|
)
|
package/detox/config-loader.ts
CHANGED
|
@@ -121,7 +121,7 @@ export function mapDetoxDevice(config: DetoxConfig | null): string {
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
// generate a sootsim-compatible config from detox config
|
|
124
|
-
export function
|
|
124
|
+
export function toPeachConfig(
|
|
125
125
|
projectDir: string,
|
|
126
126
|
config: DetoxConfig | null,
|
|
127
127
|
): SootSimDetoxConfig {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (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
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -22,29 +22,29 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
22
22
|
// src/config.ts
|
|
23
23
|
var config_exports = {};
|
|
24
24
|
__export(config_exports, {
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
PEACH_CONFIG_QUERY_PARAM: () => PEACH_CONFIG_QUERY_PARAM,
|
|
26
|
+
applyPeachConfigToUrl: () => applyPeachConfigToUrl,
|
|
27
27
|
defineConfig: () => defineConfig,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
hasPeachConfig: () => hasPeachConfig,
|
|
29
|
+
mergePeachConfig: () => mergePeachConfig,
|
|
30
|
+
readPeachConfigFromSearchParams: () => readPeachConfigFromSearchParams
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(config_exports);
|
|
33
|
-
var
|
|
33
|
+
var PEACH_CONFIG_QUERY_PARAM = "peachConfig";
|
|
34
34
|
function defineConfig(config) {
|
|
35
35
|
return config;
|
|
36
36
|
}
|
|
37
37
|
function hasOwnKeys(value) {
|
|
38
38
|
return !!value && Object.keys(value).length > 0;
|
|
39
39
|
}
|
|
40
|
-
function
|
|
40
|
+
function hasPeachConfig(config) {
|
|
41
41
|
if (!config) return false;
|
|
42
42
|
return typeof config.runtimeVersion === "string" && config.runtimeVersion.length > 0 || hasOwnKeys(config.modules) || hasOwnKeys(config.turboModules) || hasOwnKeys(config.nativeModules) || hasOwnKeys(config.env) || hasOwnKeys(config.network?.remap) || hasOwnKeys(config.settings) || hasOwnKeys(config.initialState);
|
|
43
43
|
}
|
|
44
|
-
function
|
|
45
|
-
if (!
|
|
46
|
-
if (!
|
|
47
|
-
if (!
|
|
44
|
+
function mergePeachConfig(base, override) {
|
|
45
|
+
if (!hasPeachConfig(base) && !hasPeachConfig(override)) return void 0;
|
|
46
|
+
if (!hasPeachConfig(base)) return override ? { ...override } : void 0;
|
|
47
|
+
if (!hasPeachConfig(override)) return base ? { ...base } : void 0;
|
|
48
48
|
return {
|
|
49
49
|
runtimeVersion: override.runtimeVersion ?? base.runtimeVersion,
|
|
50
50
|
modules: { ...base.modules || {}, ...override.modules || {} },
|
|
@@ -64,33 +64,33 @@ function mergeRNXConfig(base, override) {
|
|
|
64
64
|
initialState: { ...base.initialState || {}, ...override.initialState || {} }
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
-
function
|
|
68
|
-
const raw = searchParams.get(
|
|
67
|
+
function readPeachConfigFromSearchParams(searchParams) {
|
|
68
|
+
const raw = searchParams.get(PEACH_CONFIG_QUERY_PARAM);
|
|
69
69
|
if (!raw) return void 0;
|
|
70
70
|
try {
|
|
71
71
|
const parsed = JSON.parse(raw);
|
|
72
|
-
return
|
|
72
|
+
return hasPeachConfig(parsed) ? parsed : void 0;
|
|
73
73
|
} catch (error) {
|
|
74
74
|
const message = error instanceof Error ? error.message : String(error);
|
|
75
|
-
console.warn(`[peach] invalid ${
|
|
75
|
+
console.warn(`[peach] invalid ${PEACH_CONFIG_QUERY_PARAM}: ${message}`);
|
|
76
76
|
return void 0;
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
-
function
|
|
79
|
+
function applyPeachConfigToUrl(url, config) {
|
|
80
80
|
const parsed = new URL(url);
|
|
81
|
-
if (
|
|
82
|
-
parsed.searchParams.set(
|
|
81
|
+
if (hasPeachConfig(config)) {
|
|
82
|
+
parsed.searchParams.set(PEACH_CONFIG_QUERY_PARAM, JSON.stringify(config));
|
|
83
83
|
} else {
|
|
84
|
-
parsed.searchParams.delete(
|
|
84
|
+
parsed.searchParams.delete(PEACH_CONFIG_QUERY_PARAM);
|
|
85
85
|
}
|
|
86
86
|
return parsed.toString();
|
|
87
87
|
}
|
|
88
88
|
// Annotate the CommonJS export names for ESM import in node:
|
|
89
89
|
0 && (module.exports = {
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
PEACH_CONFIG_QUERY_PARAM,
|
|
91
|
+
applyPeachConfigToUrl,
|
|
92
92
|
defineConfig,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
hasPeachConfig,
|
|
94
|
+
mergePeachConfig,
|
|
95
|
+
readPeachConfigFromSearchParams
|
|
96
96
|
});
|
package/dist-lib/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -4687,6 +4687,11 @@ var import_ws = require("ws");
|
|
|
4687
4687
|
|
|
4688
4688
|
// scripts/dev-server-scanner.ts
|
|
4689
4689
|
var import_child_process = require("child_process");
|
|
4690
|
+
var import_promises2 = require("fs/promises");
|
|
4691
|
+
var import_http = __toESM(require("http"), 1);
|
|
4692
|
+
var import_net = __toESM(require("net"), 1);
|
|
4693
|
+
var import_node_fs2 = require("node:fs");
|
|
4694
|
+
var import_node_path3 = require("node:path");
|
|
4690
4695
|
|
|
4691
4696
|
// ../contrast/src/runtime/process-group.ts
|
|
4692
4697
|
var import_node_child_process = require("node:child_process");
|
|
@@ -4842,28 +4847,23 @@ async function terminateProcessGroup(child, signal = "SIGTERM", gracefulTimeoutM
|
|
|
4842
4847
|
}
|
|
4843
4848
|
|
|
4844
4849
|
// scripts/dev-server-scanner.ts
|
|
4845
|
-
var import_promises2 = require("fs/promises");
|
|
4846
|
-
var import_http = __toESM(require("http"), 1);
|
|
4847
|
-
var import_net = __toESM(require("net"), 1);
|
|
4848
|
-
var import_node_fs2 = require("node:fs");
|
|
4849
|
-
var import_node_path3 = require("node:path");
|
|
4850
4850
|
init_backend_origin();
|
|
4851
4851
|
|
|
4852
4852
|
// src/config.ts
|
|
4853
|
-
var
|
|
4853
|
+
var PEACH_CONFIG_QUERY_PARAM = "peachConfig";
|
|
4854
4854
|
function hasOwnKeys(value) {
|
|
4855
4855
|
return !!value && Object.keys(value).length > 0;
|
|
4856
4856
|
}
|
|
4857
|
-
function
|
|
4857
|
+
function hasPeachConfig(config) {
|
|
4858
4858
|
if (!config) return false;
|
|
4859
4859
|
return typeof config.runtimeVersion === "string" && config.runtimeVersion.length > 0 || hasOwnKeys(config.modules) || hasOwnKeys(config.turboModules) || hasOwnKeys(config.nativeModules) || hasOwnKeys(config.env) || hasOwnKeys(config.network?.remap) || hasOwnKeys(config.settings) || hasOwnKeys(config.initialState);
|
|
4860
4860
|
}
|
|
4861
|
-
function
|
|
4861
|
+
function applyPeachConfigToUrl(url, config) {
|
|
4862
4862
|
const parsed = new URL(url);
|
|
4863
|
-
if (
|
|
4864
|
-
parsed.searchParams.set(
|
|
4863
|
+
if (hasPeachConfig(config)) {
|
|
4864
|
+
parsed.searchParams.set(PEACH_CONFIG_QUERY_PARAM, JSON.stringify(config));
|
|
4865
4865
|
} else {
|
|
4866
|
-
parsed.searchParams.delete(
|
|
4866
|
+
parsed.searchParams.delete(PEACH_CONFIG_QUERY_PARAM);
|
|
4867
4867
|
}
|
|
4868
4868
|
return parsed.toString();
|
|
4869
4869
|
}
|
|
@@ -5571,7 +5571,7 @@ function withRuntimeConfig(port, bundleUrl, projectCwd) {
|
|
|
5571
5571
|
}) : [];
|
|
5572
5572
|
const exactKnownApps = knownApps.filter((app) => app.preferredPort === port);
|
|
5573
5573
|
const knownApp = exactKnownApps.length === 1 ? exactKnownApps[0] : exactKnownApps.length === 0 && knownApps.length === 1 ? knownApps[0] : void 0;
|
|
5574
|
-
const configured = knownApp?.runtimeConfig ?
|
|
5574
|
+
const configured = knownApp?.runtimeConfig ? applyPeachConfigToUrl(bundleUrl, knownApp.runtimeConfig) : bundleUrl;
|
|
5575
5575
|
return normalizeNativeDevBundleUrl(configured);
|
|
5576
5576
|
}
|
|
5577
5577
|
function isDirectOneBundleUrl(bundleUrl) {
|
|
@@ -8840,7 +8840,7 @@ function isContrastKitSpecifier(specifier) {
|
|
|
8840
8840
|
}
|
|
8841
8841
|
function unsupportedSpecifier(specifier) {
|
|
8842
8842
|
return new Error(
|
|
8843
|
-
`replacement modules may only import react, react-native, contrast-kit, and the packages rnx stubs for this app; '${specifier}' is none of those. vendor the code into the replacement file, or add the package to
|
|
8843
|
+
`replacement modules may only import react, react-native, contrast-kit, and the packages rnx stubs for this app; '${specifier}' is none of those. vendor the code into the replacement file, or add the package to peach.config so the simulator bridges it.`
|
|
8844
8844
|
);
|
|
8845
8845
|
}
|
|
8846
8846
|
function bridgeDeclaration(name2, specifier) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/host/fetch-proxy-overrides.ts
|
|
4
4
|
var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
|