peachsim 0.1.527 → 0.1.571
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 +28 -28
- package/cli/app-fonts.ts +1 -1
- package/cli/app-splash.ts +1 -1
- package/cli/bin.ts +1 -1
- package/cli/bridge-diagnostics.ts +1 -1
- package/cli/bridge-flow-runner.ts +72 -12
- package/cli/cloud-client.ts +273 -6
- package/cli/cloud-dispatch.ts +23 -2
- package/cli/cloud-session.ts +60 -4
- package/cli/cloud-test-result-files.ts +97 -0
- package/cli/cloud-test-tunnel.ts +354 -0
- package/cli/commands/box/bundle-plane.ts +2 -2
- package/cli/commands/box/checkout-plane.ts +1 -1
- package/cli/commands/box/rnx-command.ts +2 -2
- package/cli/commands/box/search-command.ts +2 -2
- package/cli/commands/box.ts +8 -8
- package/cli/commands/compat.ts +1 -1
- package/cli/commands/control.ts +22 -3
- package/cli/commands/detox.ts +1 -1
- package/cli/commands/device.ts +1 -1
- package/cli/commands/diagnose.ts +1 -1
- package/cli/commands/film.ts +1 -1
- package/cli/commands/flow.ts +60 -3
- package/cli/commands/inspect/actions.ts +1 -1
- package/cli/commands/inspect/core.ts +6 -7
- package/cli/commands/inspect/find.ts +2 -1
- package/cli/commands/inspect/resolve-target.ts +5 -3
- package/cli/commands/inspect/shared.ts +1 -1
- package/cli/commands/inspect/wait-event.ts +1 -1
- package/cli/commands/inspect/wait-selector.ts +15 -4
- package/cli/commands/inspect.ts +19 -14
- package/cli/commands/maestro.ts +582 -69
- package/cli/commands/permissions.ts +1 -1
- package/cli/commands/platform.ts +205 -8
- package/cli/commands/preview.ts +2 -2
- package/cli/commands/record.ts +2 -2
- package/cli/commands/report-issue.ts +2 -2
- package/cli/commands/screenshot-layers.ts +1 -1
- package/cli/commands/screenshot.ts +1 -1
- package/cli/commands/setup.ts +2 -2
- package/cli/commands/test.ts +600 -117
- package/cli/commands/three-mode.ts +1 -1
- package/cli/commands/upload.ts +5 -5
- package/cli/commands/what-happened.ts +1 -1
- package/cli/desktop-companion.ts +3 -3
- package/cli/drivers/playwright-sim-host.ts +2 -2
- package/cli/flow-file.ts +7 -0
- package/cli/flow-live-status.ts +65 -8
- package/cli/help-core.ts +3 -3
- package/cli/hidden-runtime-alias.ts +1 -1
- package/cli/maestro-report.ts +180 -0
- package/cli/main.ts +1 -1
- package/cli/outbound-endpoints.ts +187 -136
- package/cli/parse-args.ts +1 -1
- package/cli/registry.ts +1 -1
- package/cli/resolve-assets.ts +1 -1
- package/cli/run-registry.ts +10 -1
- package/cli/send-to-box.ts +4 -4
- package/cli/ws-bridge.ts +3 -5
- package/detox/expectations.ts +1 -1
- package/detox/gestures.ts +2 -2
- package/detox/index.ts +71 -29
- package/detox/jest-preset.cjs +5 -5
- package/detox/jest-setup-after-env.cjs +1 -1
- package/dist-lib/agent-daemon-client.cjs +2 -2
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +2 -2
- package/dist-lib/attached-projects.cjs +2 -2
- 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 +94 -3
- package/dist-lib/capture-contract.mjs +93 -3
- 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 +116 -0
- package/dist-lib/cloud-test-args.mjs +86 -0
- package/dist-lib/cloud.cjs +2 -2
- package/dist-lib/cloud.mjs +2 -2
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +106 -25
- package/dist-lib/detox/jest-preset.cjs +5 -5
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +150 -65
- package/dist-lib/host/fetch-proxy-handler.cjs +28 -2
- package/dist-lib/host/fetch-proxy-overrides.cjs +33 -3
- package/dist-lib/host/fetch-proxy-overrides.mjs +30 -2
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +224 -41
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/menu.cjs +2 -2
- package/dist-lib/menu.mjs +2 -2
- 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 +3 -3
- package/dist-lib/metro-production-bundle.mjs +3 -3
- package/dist-lib/metro.cjs +8 -8
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +2 -2
- 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 +31 -15
- package/dist-lib/sdk.cjs +3 -2
- package/dist-lib/sdk.mjs +3 -2
- package/dist-lib/skills.cjs +478 -266
- package/dist-lib/swift-compile.cjs +372 -0
- package/dist-lib/swift-compile.mjs +339 -0
- package/dist-lib/swift-package.cjs +78 -0
- package/dist-lib/swift-package.mjs +52 -0
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift.cjs +583 -16
- package/dist-lib/vite.cjs +483 -150
- package/package.json +30 -9
- package/scripts/dev-server-scanner.ts +41 -14
- package/scripts/optional-demo-registry.ts +3 -3
- package/skills/contrast/SKILL.md +9 -9
- package/skills/rnx-debug/SKILL.md +14 -4
- package/skills/rnx-perf/SKILL.md +5 -5
- package/skills/rnx-setup/SKILL.md +11 -11
- package/skills/rnx-test/SKILL.md +14 -14
- package/skills/rnx-visual/SKILL.md +6 -6
- package/src/agent-sessions.ts +3 -3
- package/src/attached-projects.ts +1 -1
- package/src/bridge-contract-input.ts +1 -1
- package/src/bridge-contract.ts +23 -5
- package/src/capture-contract.ts +145 -3
- package/src/cloud-test-args.ts +100 -0
- package/src/config.ts +2 -2
- package/src/connect.ts +2 -2
- package/src/home-paths.ts +3 -3
- package/src/host/bridge-host.ts +2 -2
- package/src/host/fetch-proxy-handler.ts +4 -3
- package/src/host/fetch-proxy-overrides.ts +41 -0
- package/src/host/plane-host.ts +2 -2
- package/src/index.ts +3 -0
- package/src/metro-plugin.ts +4 -4
- package/src/metro-production-bundle.ts +2 -2
- package/src/native-seam-manifest.ts +6 -6
- package/src/public-brand.ts +1 -1
- package/src/rolldown-plugin-swift.ts +16 -12
- package/src/runtime-assets.ts +8 -6
- package/src/screenshots/frame-compose.ts +24 -56
- package/src/screenshots/org-deck.ts +1 -1
- package/src/screenshots/registry.ts +4 -4
- package/src/screenshots/schema.ts +1 -1
- package/src/sdk.ts +2 -2
- package/src/settings-bundle.ts +1 -1
- package/src/sim-client.ts +2 -4
- package/src/skills/builtin/compat-check.ts +1 -1
- package/src/swift-compile.ts +359 -0
- package/src/swift-package.ts +69 -0
- package/src/swift-submit.ts +3 -2
- package/src/vite-plugin-one.ts +1 -1
- package/src/vite-plugin-swift.ts +114 -113
- package/src/vite-plugin.ts +30 -17
- package/src/worklets-babel.ts +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.571 | (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;
|
|
@@ -23,7 +23,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
23
23
|
var fetch_proxy_overrides_exports = {};
|
|
24
24
|
__export(fetch_proxy_overrides_exports, {
|
|
25
25
|
FETCH_PROXY_BROWSER_USER_AGENT: () => FETCH_PROXY_BROWSER_USER_AGENT,
|
|
26
|
-
|
|
26
|
+
PUBLIC_RPC_TENANT: () => PUBLIC_RPC_TENANT,
|
|
27
|
+
getFetchProxyTargetHeaders: () => getFetchProxyTargetHeaders,
|
|
28
|
+
resolveFetchProxyTargetUrl: () => resolveFetchProxyTargetUrl
|
|
27
29
|
});
|
|
28
30
|
module.exports = __toCommonJS(fetch_proxy_overrides_exports);
|
|
29
31
|
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";
|
|
@@ -48,6 +50,32 @@ function headerOverridesFor(hostname) {
|
|
|
48
50
|
}
|
|
49
51
|
return void 0;
|
|
50
52
|
}
|
|
53
|
+
var PUBLIC_RPC_TENANT = "rnx-public-rpc";
|
|
54
|
+
var QUICKNODE_HOST_SUFFIX = ".quiknode.pro";
|
|
55
|
+
var PUBLIC_RPC_BY_QUICKNODE_CHAIN = {
|
|
56
|
+
"": "https://ethereum-rpc.publicnode.com",
|
|
57
|
+
"arbitrum-mainnet": "https://arbitrum-one-rpc.publicnode.com",
|
|
58
|
+
"avalanche-mainnet": "https://avalanche-c-chain-rpc.publicnode.com",
|
|
59
|
+
"base-mainnet": "https://base-rpc.publicnode.com",
|
|
60
|
+
"blast-mainnet": "https://blast-rpc.publicnode.com",
|
|
61
|
+
bsc: "https://bsc-rpc.publicnode.com",
|
|
62
|
+
"celo-mainnet": "https://celo-rpc.publicnode.com",
|
|
63
|
+
matic: "https://polygon-bor-rpc.publicnode.com",
|
|
64
|
+
optimism: "https://optimism-rpc.publicnode.com",
|
|
65
|
+
"soneium-mainnet": "https://soneium-rpc.publicnode.com",
|
|
66
|
+
"unichain-mainnet": "https://unichain-rpc.publicnode.com"
|
|
67
|
+
};
|
|
68
|
+
function resolveFetchProxyTargetUrl(requested) {
|
|
69
|
+
const host = requested.hostname.toLowerCase();
|
|
70
|
+
if (!host.endsWith(QUICKNODE_HOST_SUFFIX)) return requested;
|
|
71
|
+
const tenant = host.slice(0, -QUICKNODE_HOST_SUFFIX.length);
|
|
72
|
+
if (tenant !== PUBLIC_RPC_TENANT && !tenant.startsWith(`${PUBLIC_RPC_TENANT}.`)) {
|
|
73
|
+
return requested;
|
|
74
|
+
}
|
|
75
|
+
const chain = tenant === PUBLIC_RPC_TENANT ? "" : tenant.slice(PUBLIC_RPC_TENANT.length + 1);
|
|
76
|
+
const replacement = PUBLIC_RPC_BY_QUICKNODE_CHAIN[chain];
|
|
77
|
+
return replacement ? new URL(replacement) : requested;
|
|
78
|
+
}
|
|
51
79
|
function getFetchProxyTargetHeaders(targetUrl) {
|
|
52
80
|
const hostOverrides = headerOverridesFor(targetUrl.hostname);
|
|
53
81
|
return {
|
|
@@ -59,5 +87,7 @@ function getFetchProxyTargetHeaders(targetUrl) {
|
|
|
59
87
|
// Annotate the CommonJS export names for ESM import in node:
|
|
60
88
|
0 && (module.exports = {
|
|
61
89
|
FETCH_PROXY_BROWSER_USER_AGENT,
|
|
62
|
-
|
|
90
|
+
PUBLIC_RPC_TENANT,
|
|
91
|
+
getFetchProxyTargetHeaders,
|
|
92
|
+
resolveFetchProxyTargetUrl
|
|
63
93
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.571 | (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";
|
|
@@ -23,6 +23,32 @@ function headerOverridesFor(hostname) {
|
|
|
23
23
|
}
|
|
24
24
|
return void 0;
|
|
25
25
|
}
|
|
26
|
+
var PUBLIC_RPC_TENANT = "rnx-public-rpc";
|
|
27
|
+
var QUICKNODE_HOST_SUFFIX = ".quiknode.pro";
|
|
28
|
+
var PUBLIC_RPC_BY_QUICKNODE_CHAIN = {
|
|
29
|
+
"": "https://ethereum-rpc.publicnode.com",
|
|
30
|
+
"arbitrum-mainnet": "https://arbitrum-one-rpc.publicnode.com",
|
|
31
|
+
"avalanche-mainnet": "https://avalanche-c-chain-rpc.publicnode.com",
|
|
32
|
+
"base-mainnet": "https://base-rpc.publicnode.com",
|
|
33
|
+
"blast-mainnet": "https://blast-rpc.publicnode.com",
|
|
34
|
+
bsc: "https://bsc-rpc.publicnode.com",
|
|
35
|
+
"celo-mainnet": "https://celo-rpc.publicnode.com",
|
|
36
|
+
matic: "https://polygon-bor-rpc.publicnode.com",
|
|
37
|
+
optimism: "https://optimism-rpc.publicnode.com",
|
|
38
|
+
"soneium-mainnet": "https://soneium-rpc.publicnode.com",
|
|
39
|
+
"unichain-mainnet": "https://unichain-rpc.publicnode.com"
|
|
40
|
+
};
|
|
41
|
+
function resolveFetchProxyTargetUrl(requested) {
|
|
42
|
+
const host = requested.hostname.toLowerCase();
|
|
43
|
+
if (!host.endsWith(QUICKNODE_HOST_SUFFIX)) return requested;
|
|
44
|
+
const tenant = host.slice(0, -QUICKNODE_HOST_SUFFIX.length);
|
|
45
|
+
if (tenant !== PUBLIC_RPC_TENANT && !tenant.startsWith(`${PUBLIC_RPC_TENANT}.`)) {
|
|
46
|
+
return requested;
|
|
47
|
+
}
|
|
48
|
+
const chain = tenant === PUBLIC_RPC_TENANT ? "" : tenant.slice(PUBLIC_RPC_TENANT.length + 1);
|
|
49
|
+
const replacement = PUBLIC_RPC_BY_QUICKNODE_CHAIN[chain];
|
|
50
|
+
return replacement ? new URL(replacement) : requested;
|
|
51
|
+
}
|
|
26
52
|
function getFetchProxyTargetHeaders(targetUrl) {
|
|
27
53
|
const hostOverrides = headerOverridesFor(targetUrl.hostname);
|
|
28
54
|
return {
|
|
@@ -33,5 +59,7 @@ function getFetchProxyTargetHeaders(targetUrl) {
|
|
|
33
59
|
}
|
|
34
60
|
export {
|
|
35
61
|
FETCH_PROXY_BROWSER_USER_AGENT,
|
|
36
|
-
|
|
62
|
+
PUBLIC_RPC_TENANT,
|
|
63
|
+
getFetchProxyTargetHeaders,
|
|
64
|
+
resolveFetchProxyTargetUrl
|
|
37
65
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.571 | (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.571 | (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/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.571 | (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;
|
|
@@ -49,6 +49,7 @@ __export(src_exports, {
|
|
|
49
49
|
isRnxScreenCapture: () => isRnxScreenCapture,
|
|
50
50
|
jumpToSourceBabelPlugin: () => sootsimJumpToSourceBabelPlugin,
|
|
51
51
|
metroPlugin: () => metro_plugin_default,
|
|
52
|
+
packRnxCaptureRegions: () => packRnxCaptureRegions,
|
|
52
53
|
rnxCaptureRasterRegions: () => rnxCaptureRasterRegions,
|
|
53
54
|
rnxPlugin: () => rnxPlugin,
|
|
54
55
|
rnxRasterFrames: () => rnxRasterFrames,
|
|
@@ -59,12 +60,12 @@ module.exports = __toCommonJS(src_exports);
|
|
|
59
60
|
// cli/cloud-client.ts
|
|
60
61
|
var import_node_crypto = require("node:crypto");
|
|
61
62
|
|
|
62
|
-
// ../
|
|
63
|
-
var import_metro_fingerprint_registry = require("
|
|
63
|
+
// ../peach-engine/src/metro-fingerprint-registry-client.ts
|
|
64
|
+
var import_metro_fingerprint_registry = require("peachsim/metro-fingerprint-registry");
|
|
64
65
|
|
|
65
|
-
// ../
|
|
66
|
-
var import_metro_production_bundle = require("
|
|
67
|
-
var import_react_native_host_modules = require("
|
|
66
|
+
// ../peach-engine/src/metro-fingerprint.ts
|
|
67
|
+
var import_metro_production_bundle = require("peachsim/metro-production-bundle");
|
|
68
|
+
var import_react_native_host_modules = require("peachsim/react-native-host-modules");
|
|
68
69
|
|
|
69
70
|
// src/backend-origin.ts
|
|
70
71
|
function normalizeHostname(hostname) {
|
|
@@ -162,7 +163,7 @@ ${RNXSIM_METRO_SOURCE_MAP_COMMENT}${detached.sourceMappingUrl}`;
|
|
|
162
163
|
var name = "rnx";
|
|
163
164
|
var rnxPublicBrand = Object.freeze({
|
|
164
165
|
name,
|
|
165
|
-
packageName: "
|
|
166
|
+
packageName: "peachsim",
|
|
166
167
|
commandName: "rnx",
|
|
167
168
|
domain: "rnxsim.com",
|
|
168
169
|
origin: "https://rnxsim.com"
|
|
@@ -343,6 +344,22 @@ function createCloudSession(input) {
|
|
|
343
344
|
}
|
|
344
345
|
return session;
|
|
345
346
|
}
|
|
347
|
+
function createCloudBoxSession(input) {
|
|
348
|
+
const session = {
|
|
349
|
+
version: CLOUD_SESSION_VERSION,
|
|
350
|
+
service: "box",
|
|
351
|
+
boxId: input.boxId.trim(),
|
|
352
|
+
boxToken: input.boxToken,
|
|
353
|
+
apiOrigin: normalizeCloudOrigin(input.apiOrigin.trim()),
|
|
354
|
+
...input.platform ? { platform: input.platform } : {},
|
|
355
|
+
...input.device?.trim() ? { device: input.device.trim() } : {},
|
|
356
|
+
...input.artifact ? { artifact: input.artifact } : {}
|
|
357
|
+
};
|
|
358
|
+
if (!session.boxId || !session.boxToken) {
|
|
359
|
+
throw new Error("cloud box session requires a box, an origin, and a box token");
|
|
360
|
+
}
|
|
361
|
+
return session;
|
|
362
|
+
}
|
|
346
363
|
function parseCloudSession(encoded) {
|
|
347
364
|
const value = encoded.trim();
|
|
348
365
|
if (!value || value.length > MAX_ENCODED_SESSION_BYTES || !/^[A-Za-z0-9_-]+$/.test(value)) {
|
|
@@ -375,6 +392,17 @@ function parseCloudSession(encoded) {
|
|
|
375
392
|
const boxId = typeof parsed.boxId === "string" ? parsed.boxId : void 0;
|
|
376
393
|
const boxToken = typeof parsed.boxToken === "string" ? parsed.boxToken : void 0;
|
|
377
394
|
try {
|
|
395
|
+
if (parsed.service === "box") {
|
|
396
|
+
if (!boxId || !boxToken) throw new Error("unreadable cloud box session");
|
|
397
|
+
return createCloudBoxSession({
|
|
398
|
+
boxId,
|
|
399
|
+
boxToken,
|
|
400
|
+
apiOrigin,
|
|
401
|
+
platform,
|
|
402
|
+
device,
|
|
403
|
+
artifact
|
|
404
|
+
});
|
|
405
|
+
}
|
|
378
406
|
const simId = parsed.simId;
|
|
379
407
|
const claimId = parsed.claimId;
|
|
380
408
|
const token = parsed.token;
|
|
@@ -437,6 +465,14 @@ function responseError(status, text) {
|
|
|
437
465
|
function resolveCloudSessionForParsed(parsed) {
|
|
438
466
|
const session = readCloudSession();
|
|
439
467
|
if (!session) return null;
|
|
468
|
+
if (session.service === "box") {
|
|
469
|
+
if (parsed.simIdSource === "flag" && parsed.simId !== session.boxId) {
|
|
470
|
+
throw new Error(
|
|
471
|
+
`this shell is connected to box ${session.boxId}; ${parsed.simId ? `--sim ${parsed.simId}` : "the requested simulator"} is not available in this shell`
|
|
472
|
+
);
|
|
473
|
+
}
|
|
474
|
+
return session;
|
|
475
|
+
}
|
|
440
476
|
if (parsed.simIdSource === "flag" && parsed.simId !== session.simId) {
|
|
441
477
|
throw new Error(
|
|
442
478
|
`this shell is connected to remote simulator ${session.simId}; ${parsed.simId ? `--sim ${parsed.simId}` : "the requested simulator"} is not available in this shell`
|
|
@@ -532,10 +568,77 @@ var CloudBridge = class {
|
|
|
532
568
|
close() {
|
|
533
569
|
}
|
|
534
570
|
};
|
|
571
|
+
var CloudBoxBridge = class {
|
|
572
|
+
constructor(session) {
|
|
573
|
+
this.session = session;
|
|
574
|
+
}
|
|
575
|
+
plane = "cloud";
|
|
576
|
+
async send(command, options) {
|
|
577
|
+
const id = (0, import_node_crypto.randomUUID)();
|
|
578
|
+
const payload = {};
|
|
579
|
+
for (const [key, value] of Object.entries(command)) {
|
|
580
|
+
if (key !== "id" && key !== "simId") payload[key] = value;
|
|
581
|
+
}
|
|
582
|
+
let response;
|
|
583
|
+
try {
|
|
584
|
+
response = await fetch(
|
|
585
|
+
`${this.session.apiOrigin}/v1/boxes/${encodeURIComponent(this.session.boxId)}/commands`,
|
|
586
|
+
{
|
|
587
|
+
method: "POST",
|
|
588
|
+
headers: {
|
|
589
|
+
authorization: `Bearer ${this.session.boxToken}`,
|
|
590
|
+
"content-type": "application/json"
|
|
591
|
+
},
|
|
592
|
+
body: JSON.stringify({ id, command: payload }),
|
|
593
|
+
...options?.timeoutMs ? { signal: AbortSignal.timeout(options.timeoutMs) } : {}
|
|
594
|
+
}
|
|
595
|
+
);
|
|
596
|
+
} catch (error) {
|
|
597
|
+
throw new Error(
|
|
598
|
+
`could not reach box ${this.session.boxId} at ${this.session.apiOrigin}: ${error instanceof Error ? error.message : String(error)}`
|
|
599
|
+
);
|
|
600
|
+
}
|
|
601
|
+
const text = await response.text();
|
|
602
|
+
if (!response.ok) throw responseError(response.status, text);
|
|
603
|
+
let parsed;
|
|
604
|
+
try {
|
|
605
|
+
parsed = JSON.parse(text);
|
|
606
|
+
} catch {
|
|
607
|
+
throw new Error("box command returned unreadable JSON");
|
|
608
|
+
}
|
|
609
|
+
if (!isRecord2(parsed) || parsed.id !== id) {
|
|
610
|
+
throw new Error("box command returned an invalid command receipt");
|
|
611
|
+
}
|
|
612
|
+
if (typeof parsed.error === "string" && parsed.error) throw new Error(parsed.error);
|
|
613
|
+
if (!Object.hasOwn(parsed, "result")) {
|
|
614
|
+
throw new Error("box command receipt has no result");
|
|
615
|
+
}
|
|
616
|
+
return parsed.result;
|
|
617
|
+
}
|
|
618
|
+
listSims() {
|
|
619
|
+
return Promise.reject(new Error("a box does not expose a local simulator list"));
|
|
620
|
+
}
|
|
621
|
+
focusSim() {
|
|
622
|
+
return Promise.reject(new Error("a box simulator has no browser window to focus"));
|
|
623
|
+
}
|
|
624
|
+
resolveReloadedSim() {
|
|
625
|
+
return Promise.resolve(null);
|
|
626
|
+
}
|
|
627
|
+
closeSim() {
|
|
628
|
+
return Promise.reject(new Error("close a box simulator with rnx box stop"));
|
|
629
|
+
}
|
|
630
|
+
claim() {
|
|
631
|
+
return Promise.reject(
|
|
632
|
+
new Error("a box simulator is held by its Box page and has nothing to claim")
|
|
633
|
+
);
|
|
634
|
+
}
|
|
635
|
+
close() {
|
|
636
|
+
}
|
|
637
|
+
};
|
|
535
638
|
function createCloudBridgeForParsed(parsed) {
|
|
536
639
|
const session = resolveCloudSessionForParsed(parsed);
|
|
537
640
|
if (!session) return null;
|
|
538
|
-
return new CloudBridge(session);
|
|
641
|
+
return session.service === "box" ? new CloudBoxBridge(session) : new CloudBridge(session);
|
|
539
642
|
}
|
|
540
643
|
|
|
541
644
|
// cli/current-sim.ts
|
|
@@ -2967,7 +3070,7 @@ async function connect(options = {}) {
|
|
|
2967
3070
|
const bridge2 = createCloudBridgeForParsed(target);
|
|
2968
3071
|
if (!bridge2)
|
|
2969
3072
|
throw new SimConnectError("remote simulator session disappeared while connecting");
|
|
2970
|
-
return new SimClient(bridge2, cloud.simId, {
|
|
3073
|
+
return new SimClient(bridge2, cloud.service === "sim" ? cloud.simId : cloud.boxId, {
|
|
2971
3074
|
commandTimeoutMs: options.timeoutMs ?? 15e3
|
|
2972
3075
|
});
|
|
2973
3076
|
}
|
|
@@ -3003,7 +3106,7 @@ function selectRnxRasterNodeIds(tree) {
|
|
|
3003
3106
|
if (!visibleFrame || visibleFrame.width <= 0 || visibleFrame.height <= 0) continue;
|
|
3004
3107
|
if (node.type === "masked-view" || node.type === "text" && typeof node.text === "string" && (new RegExp("\\p{Emoji_Presentation}", "u").test(node.text) || new RegExp("\\uFE0F|\\u200D|\\u20E3|\\p{Emoji_Modifier}|\\p{Regional_Indicator}", "u").test(
|
|
3005
3108
|
node.text
|
|
3006
|
-
)) || node.style._liquidGlass !== void 0 || node.style._liquidGlassEdge !== void 0) {
|
|
3109
|
+
)) || node.style._liquidGlass !== void 0 || node.style._liquidGlassEdge !== void 0 || node.style._liquidGlassMaterialTint !== void 0) {
|
|
3007
3110
|
unsupported.add(node.nodeId);
|
|
3008
3111
|
}
|
|
3009
3112
|
}
|
|
@@ -3102,6 +3205,95 @@ function rnxCaptureRasterRegions(capture) {
|
|
|
3102
3205
|
return frame ? [{ key: String(nodeId), nodeId, frame }] : [];
|
|
3103
3206
|
});
|
|
3104
3207
|
}
|
|
3208
|
+
function packRnxCaptureRegions(regions, pixelRatio, surface) {
|
|
3209
|
+
const physical = regions.map((region) => {
|
|
3210
|
+
const left = Math.floor(region.frame.x * pixelRatio);
|
|
3211
|
+
const top = Math.floor(region.frame.y * pixelRatio);
|
|
3212
|
+
const right = Math.ceil((region.frame.x + region.frame.width) * pixelRatio);
|
|
3213
|
+
const bottom = Math.ceil((region.frame.y + region.frame.height) * pixelRatio);
|
|
3214
|
+
if (left < 0 || top < 0 || right > surface.pixelWidth || bottom > surface.pixelHeight || right <= left || bottom <= top) {
|
|
3215
|
+
throw new Error(`capture region ${region.key} is outside the app surface`);
|
|
3216
|
+
}
|
|
3217
|
+
return {
|
|
3218
|
+
key: region.key,
|
|
3219
|
+
nodeId: region.nodeId,
|
|
3220
|
+
frame: {
|
|
3221
|
+
x: left / pixelRatio,
|
|
3222
|
+
y: top / pixelRatio,
|
|
3223
|
+
width: (right - left) / pixelRatio,
|
|
3224
|
+
height: (bottom - top) / pixelRatio
|
|
3225
|
+
},
|
|
3226
|
+
sourceX: left,
|
|
3227
|
+
sourceY: top,
|
|
3228
|
+
pixelWidth: right - left,
|
|
3229
|
+
pixelHeight: bottom - top
|
|
3230
|
+
};
|
|
3231
|
+
});
|
|
3232
|
+
const largestWidth = Math.max(...physical.map((region) => region.pixelWidth));
|
|
3233
|
+
const totalArea = physical.reduce(
|
|
3234
|
+
(area, region) => area + region.pixelWidth * region.pixelHeight,
|
|
3235
|
+
0
|
|
3236
|
+
);
|
|
3237
|
+
if (totalArea > 4194304) {
|
|
3238
|
+
throw new Error("capture region pixels exceed the atlas budget");
|
|
3239
|
+
}
|
|
3240
|
+
const candidates = [
|
|
3241
|
+
largestWidth,
|
|
3242
|
+
Math.max(largestWidth, Math.ceil(Math.sqrt(totalArea))),
|
|
3243
|
+
Math.max(largestWidth, surface.pixelWidth),
|
|
3244
|
+
4096
|
|
3245
|
+
];
|
|
3246
|
+
const ordered = [...physical].sort(
|
|
3247
|
+
(left, right) => right.pixelHeight - left.pixelHeight || right.pixelWidth - left.pixelWidth || left.key.localeCompare(right.key)
|
|
3248
|
+
);
|
|
3249
|
+
let best = null;
|
|
3250
|
+
for (const candidate of [...new Set(candidates)]) {
|
|
3251
|
+
if (candidate > 4096) continue;
|
|
3252
|
+
let x = 0;
|
|
3253
|
+
let y = 0;
|
|
3254
|
+
let rowHeight = 0;
|
|
3255
|
+
let usedWidth = 0;
|
|
3256
|
+
const packed = [];
|
|
3257
|
+
for (const region of ordered) {
|
|
3258
|
+
if (x > 0 && x + region.pixelWidth > candidate) {
|
|
3259
|
+
y += rowHeight;
|
|
3260
|
+
x = 0;
|
|
3261
|
+
rowHeight = 0;
|
|
3262
|
+
}
|
|
3263
|
+
packed.push({ ...region, atlasX: x, atlasY: y });
|
|
3264
|
+
x += region.pixelWidth;
|
|
3265
|
+
rowHeight = Math.max(rowHeight, region.pixelHeight);
|
|
3266
|
+
usedWidth = Math.max(usedWidth, x);
|
|
3267
|
+
}
|
|
3268
|
+
const height2 = y + rowHeight;
|
|
3269
|
+
if (height2 > 4096 || usedWidth * height2 > 4194304) continue;
|
|
3270
|
+
const result = { width: usedWidth, height: height2, regions: packed };
|
|
3271
|
+
if (!best || result.width * result.height < best.width * best.height) best = result;
|
|
3272
|
+
}
|
|
3273
|
+
if (!best) throw new Error("capture regions cannot fit in one bounded atlas");
|
|
3274
|
+
const width = best.width / pixelRatio;
|
|
3275
|
+
const height = best.height / pixelRatio;
|
|
3276
|
+
return {
|
|
3277
|
+
width,
|
|
3278
|
+
height,
|
|
3279
|
+
pixelWidth: best.width,
|
|
3280
|
+
pixelHeight: best.height,
|
|
3281
|
+
regions: best.regions,
|
|
3282
|
+
atlasRegions: best.regions.map((region) => ({
|
|
3283
|
+
key: region.key,
|
|
3284
|
+
nodeId: region.nodeId,
|
|
3285
|
+
frame: region.frame,
|
|
3286
|
+
// a region flush with the far edge is anchored to the logical edge so
|
|
3287
|
+
// its source never runs past the atlas by a rounding hair
|
|
3288
|
+
source: {
|
|
3289
|
+
x: region.atlasX + region.pixelWidth === best.width ? width - region.frame.width : region.atlasX / pixelRatio,
|
|
3290
|
+
y: region.atlasY + region.pixelHeight === best.height ? height - region.frame.height : region.atlasY / pixelRatio,
|
|
3291
|
+
width: region.frame.width,
|
|
3292
|
+
height: region.frame.height
|
|
3293
|
+
}
|
|
3294
|
+
}))
|
|
3295
|
+
};
|
|
3296
|
+
}
|
|
3105
3297
|
function captureRecord(value) {
|
|
3106
3298
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
3107
3299
|
}
|
|
@@ -3157,7 +3349,7 @@ function isRnxScreenCapture(value) {
|
|
|
3157
3349
|
return captureRecord(tree.viewport) && captureInteger(tree.viewport.width) && tree.viewport.width > 0 && captureInteger(tree.viewport.height) && tree.viewport.height > 0 && captureInteger(tree.rootNodeId) && (tree.commitRevision === void 0 || captureInteger(tree.commitRevision)) && Array.isArray(tree.nodes) && tree.nodes.every(captureNode) && (visual === void 0 || visual.kind === "png" && (visual.producer === "headless-cpu-app-surface" || visual.producer === "browser-compositor-app-surface") && typeof visual.dataUri === "string" && visual.dataUri.startsWith("data:image/png;base64,") && captureInteger(visual.pixelWidth) && visual.pixelWidth > 0 && captureInteger(visual.pixelHeight) && visual.pixelHeight > 0);
|
|
3158
3350
|
}
|
|
3159
3351
|
function isRnxCaptureRegionAtlas(value) {
|
|
3160
|
-
if (!captureRecord(value) || value.kind !== "png-atlas" || value.producer !== "headless-cpu-app-surface" || typeof value.dataUri !== "string" || !value.dataUri.startsWith("data:image/png;base64,") || !captureNumber(value.width) || value.width <= 0 || !captureNumber(value.height) || value.height <= 0 || !captureInteger(value.pixelWidth) || value.pixelWidth <= 0 || !captureInteger(value.pixelHeight) || value.pixelHeight <= 0 || !Array.isArray(value.regions) || value.regions.length === 0 || value.regions.length > 256) {
|
|
3352
|
+
if (!captureRecord(value) || value.kind !== "png-atlas" || value.producer !== "headless-cpu-app-surface" && value.producer !== "browser-compositor-app-surface" || typeof value.dataUri !== "string" || !value.dataUri.startsWith("data:image/png;base64,") || !captureNumber(value.width) || value.width <= 0 || !captureNumber(value.height) || value.height <= 0 || !captureInteger(value.pixelWidth) || value.pixelWidth <= 0 || !captureInteger(value.pixelHeight) || value.pixelHeight <= 0 || !Array.isArray(value.regions) || value.regions.length === 0 || value.regions.length > 256) {
|
|
3161
3353
|
return false;
|
|
3162
3354
|
}
|
|
3163
3355
|
const scale = value.pixelWidth / value.width;
|
|
@@ -3690,7 +3882,7 @@ function findMonorepoRoot() {
|
|
|
3690
3882
|
if (_monorepoRootCache !== void 0) return _monorepoRootCache;
|
|
3691
3883
|
let dir = import_path2.default.dirname((0, import_url.fileURLToPath)(__sootsim_import_meta_url));
|
|
3692
3884
|
for (let i = 0; i < 12 && dir !== import_path2.default.dirname(dir); i++) {
|
|
3693
|
-
if (import_fs3.default.existsSync(import_path2.default.join(dir, "packages/
|
|
3885
|
+
if (import_fs3.default.existsSync(import_path2.default.join(dir, "packages/peach-engine/package.json")) && import_fs3.default.existsSync(import_path2.default.join(dir, "public/sootsim"))) {
|
|
3694
3886
|
_monorepoRootCache = dir;
|
|
3695
3887
|
return dir;
|
|
3696
3888
|
}
|
|
@@ -3704,7 +3896,7 @@ function resolveDevCheckoutRuntimeRoot() {
|
|
|
3704
3896
|
const root = findMonorepoRoot();
|
|
3705
3897
|
if (!root) return null;
|
|
3706
3898
|
const devBuild = import_path2.default.join(root, "public/sootsim");
|
|
3707
|
-
if (import_fs3.default.existsSync(import_path2.default.join(devBuild, "index.html")) && import_fs3.default.existsSync(import_path2.default.join(devBuild, "engine/index.html")) && import_fs3.default.existsSync(import_path2.default.join(devBuild, "engine-tenant/worker.js"))) {
|
|
3899
|
+
if (import_fs3.default.existsSync(import_path2.default.join(devBuild, "index.html")) && import_fs3.default.existsSync(import_path2.default.join(devBuild, "engine/index.html")) && import_fs3.default.existsSync(import_path2.default.join(devBuild, "engine-tenant/worker.js")) && import_fs3.default.existsSync(import_path2.default.join(devBuild, "engine-tenant/worker.prod.js"))) {
|
|
3708
3900
|
return devBuild;
|
|
3709
3901
|
}
|
|
3710
3902
|
return null;
|
|
@@ -3781,10 +3973,10 @@ function resolveRuntimeRootForHostname(hostname) {
|
|
|
3781
3973
|
const version = runtimeVersionFromHostname(hostname);
|
|
3782
3974
|
return version ? resolveInstalledRuntimeRoot(version) : null;
|
|
3783
3975
|
}
|
|
3784
|
-
function resolveRuntimeRootForRequestHost(
|
|
3785
|
-
if (!
|
|
3976
|
+
function resolveRuntimeRootForRequestHost(host2) {
|
|
3977
|
+
if (!host2) return resolveActiveRuntimeRoot();
|
|
3786
3978
|
try {
|
|
3787
|
-
return resolveRuntimeRootForHostname(new URL(`http://${
|
|
3979
|
+
return resolveRuntimeRootForHostname(new URL(`http://${host2}`).hostname);
|
|
3788
3980
|
} catch {
|
|
3789
3981
|
return null;
|
|
3790
3982
|
}
|
|
@@ -3824,25 +4016,15 @@ function serveRuntimeFile(req, res, fullPath) {
|
|
|
3824
4016
|
import_fs3.default.createReadStream(fullPath).pipe(res);
|
|
3825
4017
|
}
|
|
3826
4018
|
|
|
3827
|
-
// src/
|
|
4019
|
+
// src/swift-compile.ts
|
|
3828
4020
|
var import_node_child_process2 = require("node:child_process");
|
|
3829
|
-
var import_node_os2 = __toESM(require("node:os"), 1);
|
|
3830
|
-
var import_node_path6 = __toESM(require("node:path"), 1);
|
|
3831
4021
|
var import_node_util = require("node:util");
|
|
3832
|
-
|
|
3833
|
-
|
|
3834
|
-
var
|
|
3835
|
-
|
|
3836
|
-
wasmSdkChecksum: "9fa4016ee632c7e9e906608ec3b55cf13dfc4dff44e47574c5af58064dc33fd9"
|
|
3837
|
-
};
|
|
4022
|
+
var run = (0, import_node_util.promisify)(import_node_child_process2.execFile);
|
|
4023
|
+
var ROOT_LOCKS = Symbol.for("peachsim.swiftCompile.rootLocks");
|
|
4024
|
+
var host = globalThis;
|
|
4025
|
+
var rootLocks = host[ROOT_LOCKS] ??= /* @__PURE__ */ new Map();
|
|
3838
4026
|
|
|
3839
4027
|
// src/vite-plugin-swift.ts
|
|
3840
|
-
var run = (0, import_node_util.promisify)(import_node_child_process2.execFile);
|
|
3841
|
-
var TOOLCHAIN_BIN = import_node_path6.default.join(
|
|
3842
|
-
import_node_os2.default.homedir(),
|
|
3843
|
-
`Library/Developer/Toolchains/${toolchain_default.release}.xctoolchain/usr/bin`
|
|
3844
|
-
);
|
|
3845
|
-
var WASM_SDK = `${toolchain_default.release}_wasm`;
|
|
3846
4028
|
var BUNDLE_MAX_FILE_BYTES = 2 * 1024 * 1024;
|
|
3847
4029
|
var BUNDLE_MAX_TOTAL_BYTES = 8 * 1024 * 1024;
|
|
3848
4030
|
|
|
@@ -3997,7 +4179,7 @@ var prefix = "/__soot";
|
|
|
3997
4179
|
function readCallableMetroExport(moduleValue, label) {
|
|
3998
4180
|
const callable = typeof moduleValue === "function" ? moduleValue : typeof moduleValue === "object" && moduleValue !== null ? Reflect.get(moduleValue, "default") : void 0;
|
|
3999
4181
|
if (typeof callable !== "function") {
|
|
4000
|
-
throw new Error(`
|
|
4182
|
+
throw new Error(`peachsim: Metro ${label} module did not export a function`);
|
|
4001
4183
|
}
|
|
4002
4184
|
return (...args) => Reflect.apply(callable, void 0, args);
|
|
4003
4185
|
}
|
|
@@ -4018,7 +4200,7 @@ function createMetroDefaultSerializer(projectRoot) {
|
|
|
4018
4200
|
);
|
|
4019
4201
|
const code = typeof serialized === "object" && serialized !== null ? Reflect.get(serialized, "code") : void 0;
|
|
4020
4202
|
if (typeof code !== "string") {
|
|
4021
|
-
throw new Error("
|
|
4203
|
+
throw new Error("peachsim: Metro bundleToString did not return bundle code");
|
|
4022
4204
|
}
|
|
4023
4205
|
return code;
|
|
4024
4206
|
};
|
|
@@ -4034,7 +4216,7 @@ function appendRNXModulePaths(result, graph, options, projectRoot) {
|
|
|
4034
4216
|
modulePaths[String(createModuleId(module2.path))] = import_path4.default.relative(projectRoot, module2.path).replaceAll(import_path4.default.sep, "/");
|
|
4035
4217
|
}
|
|
4036
4218
|
if (Object.keys(modulePaths).length !== dependencies.size) {
|
|
4037
|
-
throw new Error("
|
|
4219
|
+
throw new Error("peachsim: bundle module IDs were not unique");
|
|
4038
4220
|
}
|
|
4039
4221
|
const specifiersByModuleId = /* @__PURE__ */ new Map();
|
|
4040
4222
|
for (const module2 of dependencies.values()) {
|
|
@@ -4181,13 +4363,13 @@ function resolveMetroPort(server) {
|
|
|
4181
4363
|
var metro_plugin_default = withRNX;
|
|
4182
4364
|
|
|
4183
4365
|
// src/jump-to-source-babel.ts
|
|
4184
|
-
function normalizeSourcePath(
|
|
4185
|
-
const queryStart =
|
|
4186
|
-
const clean = queryStart >= 0 ?
|
|
4366
|
+
function normalizeSourcePath(path8) {
|
|
4367
|
+
const queryStart = path8.indexOf("?");
|
|
4368
|
+
const clean = queryStart >= 0 ? path8.slice(0, queryStart) : path8;
|
|
4187
4369
|
return clean.replace(/\\/g, "/");
|
|
4188
4370
|
}
|
|
4189
|
-
function matchesPath(
|
|
4190
|
-
return typeof matcher === "string" ?
|
|
4371
|
+
function matchesPath(path8, matcher) {
|
|
4372
|
+
return typeof matcher === "string" ? path8.includes(matcher) : matcher.test(path8);
|
|
4191
4373
|
}
|
|
4192
4374
|
function shouldStampFile(filename, options) {
|
|
4193
4375
|
const normalized = normalizeSourcePath(filename);
|
|
@@ -4220,11 +4402,11 @@ function sootsimJumpToSourceBabelPlugin(api, options = {}) {
|
|
|
4220
4402
|
return {
|
|
4221
4403
|
name: "sootsim-jump-to-source",
|
|
4222
4404
|
visitor: {
|
|
4223
|
-
JSXOpeningElement(
|
|
4405
|
+
JSXOpeningElement(path8, state) {
|
|
4224
4406
|
if (options.enabled === false) return;
|
|
4225
4407
|
const filename = state.file?.opts?.filename;
|
|
4226
4408
|
if (!filename || !shouldStampFile(filename, options)) return;
|
|
4227
|
-
const node =
|
|
4409
|
+
const node = path8.node;
|
|
4228
4410
|
const tagName = getJSXName(node.name);
|
|
4229
4411
|
if (!tagName || tagName === "Fragment" || tagName.endsWith(".Fragment")) return;
|
|
4230
4412
|
if (hasAttribute(node, attrName)) return;
|
|
@@ -4261,6 +4443,7 @@ function sootsimJumpToSourceBabelPlugin(api, options = {}) {
|
|
|
4261
4443
|
isRnxScreenCapture,
|
|
4262
4444
|
jumpToSourceBabelPlugin,
|
|
4263
4445
|
metroPlugin,
|
|
4446
|
+
packRnxCaptureRegions,
|
|
4264
4447
|
rnxCaptureRasterRegions,
|
|
4265
4448
|
rnxPlugin,
|
|
4266
4449
|
rnxRasterFrames,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.571 | (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.571 | (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;
|
package/dist-lib/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.571 | (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;
|
|
@@ -45,7 +45,7 @@ module.exports = __toCommonJS(menu_exports);
|
|
|
45
45
|
var name = "rnx";
|
|
46
46
|
var rnxPublicBrand = Object.freeze({
|
|
47
47
|
name,
|
|
48
|
-
packageName: "
|
|
48
|
+
packageName: "peachsim",
|
|
49
49
|
commandName: "rnx",
|
|
50
50
|
domain: "rnxsim.com",
|
|
51
51
|
origin: "https://rnxsim.com"
|
package/dist-lib/menu.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.571 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/public-brand.ts
|
|
4
4
|
var name = "rnx";
|
|
5
5
|
var rnxPublicBrand = Object.freeze({
|
|
6
6
|
name,
|
|
7
|
-
packageName: "
|
|
7
|
+
packageName: "peachsim",
|
|
8
8
|
commandName: "rnx",
|
|
9
9
|
domain: "rnxsim.com",
|
|
10
10
|
origin: "https://rnxsim.com"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.571 | (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.571 | (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;
|
|
@@ -38,7 +38,7 @@ var RNXSIM_METRO_MODULE_PATHS_PREFIX = "globalThis.__sootsimModulePaths=";
|
|
|
38
38
|
var RNX_METRO_MODULE_IDENTITY_VERSION = 2;
|
|
39
39
|
function toRNXProductionBundleUrl(bundleUrl) {
|
|
40
40
|
const relative = bundleUrl.startsWith("/");
|
|
41
|
-
const url = new URL(bundleUrl, "http://
|
|
41
|
+
const url = new URL(bundleUrl, "http://peachsim.local");
|
|
42
42
|
url.searchParams.set("dev", "false");
|
|
43
43
|
url.searchParams.set("hot", "false");
|
|
44
44
|
url.searchParams.set("minify", "true");
|
|
@@ -46,7 +46,7 @@ function toRNXProductionBundleUrl(bundleUrl) {
|
|
|
46
46
|
}
|
|
47
47
|
function toRNXDevelopmentBundleUrl(bundleUrl) {
|
|
48
48
|
const relative = bundleUrl.startsWith("/");
|
|
49
|
-
const url = new URL(bundleUrl, "http://
|
|
49
|
+
const url = new URL(bundleUrl, "http://peachsim.local");
|
|
50
50
|
url.searchParams.set("dev", "true");
|
|
51
51
|
url.searchParams.set("hot", "false");
|
|
52
52
|
url.searchParams.set("minify", "false");
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.571 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/metro-production-bundle.ts
|
|
4
4
|
var RNXSIM_METRO_MODULE_PATHS_PREFIX = "globalThis.__sootsimModulePaths=";
|
|
5
5
|
var RNX_METRO_MODULE_IDENTITY_VERSION = 2;
|
|
6
6
|
function toRNXProductionBundleUrl(bundleUrl) {
|
|
7
7
|
const relative = bundleUrl.startsWith("/");
|
|
8
|
-
const url = new URL(bundleUrl, "http://
|
|
8
|
+
const url = new URL(bundleUrl, "http://peachsim.local");
|
|
9
9
|
url.searchParams.set("dev", "false");
|
|
10
10
|
url.searchParams.set("hot", "false");
|
|
11
11
|
url.searchParams.set("minify", "true");
|
|
@@ -13,7 +13,7 @@ function toRNXProductionBundleUrl(bundleUrl) {
|
|
|
13
13
|
}
|
|
14
14
|
function toRNXDevelopmentBundleUrl(bundleUrl) {
|
|
15
15
|
const relative = bundleUrl.startsWith("/");
|
|
16
|
-
const url = new URL(bundleUrl, "http://
|
|
16
|
+
const url = new URL(bundleUrl, "http://peachsim.local");
|
|
17
17
|
url.searchParams.set("dev", "true");
|
|
18
18
|
url.searchParams.set("hot", "false");
|
|
19
19
|
url.searchParams.set("minify", "false");
|