peachsim 0.1.1641 → 0.1.1653
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 +12 -0
- package/cli/app-bundle-resources.ts +57 -0
- package/cli/app-catalog.ts +1 -1
- package/cli/app-fonts.ts +11 -80
- package/cli/app-splash.ts +18 -12
- package/cli/bridge-flow-runner.ts +11 -7
- package/cli/cloud-client.ts +10 -13
- package/cli/command-registry.ts +13 -4
- package/cli/commands/box.ts +4 -4
- package/cli/commands/control.ts +105 -53
- package/cli/commands/coverage-parser.ts +67 -0
- package/cli/commands/coverage.ts +550 -0
- package/cli/commands/debug.ts +9 -18
- package/cli/commands/desktop.ts +19 -7
- package/cli/commands/device.ts +14 -9
- package/cli/commands/guest-host.ts +6 -10
- package/cli/commands/inspect/core.ts +81 -17
- package/cli/commands/inspect.ts +13 -8
- package/cli/commands/kotlin.ts +2 -2
- package/cli/commands/maestro-compare.ts +1 -1
- package/cli/commands/platform.ts +20 -11
- package/cli/commands/preview.ts +16 -18
- package/cli/commands/runtime.ts +3 -2
- package/cli/commands/screenshot-layers.ts +1 -1
- package/cli/commands/screenshot.ts +1 -1
- package/cli/commands/serve.ts +5 -1
- package/cli/commands/support.ts +4 -4
- package/cli/commands/three-mode.ts +22 -15
- package/cli/commands/upload.ts +44 -45
- package/cli/current-sim.ts +38 -0
- package/cli/desktop-companion.ts +36 -8
- package/cli/device-option.ts +1 -1
- package/cli/drivers/playwright.ts +40 -0
- package/cli/drivers/types.ts +4 -0
- package/cli/help-core.ts +1 -1
- package/cli/internal-child.ts +2 -1
- package/cli/main.ts +9 -3
- package/cli/outbound-endpoints.ts +15 -5
- package/cli/output-redaction.ts +39 -14
- package/cli/remote-simulators.ts +4 -1
- package/cli/scene-video.ts +5 -2
- package/cli/send-to-box.ts +7 -10
- package/cli/telemetry.ts +1 -1
- package/cli/ws-bridge.ts +8 -1
- package/detox/attempt-events.cjs +3 -1
- package/detox/attempt-events.d.cts +1 -1
- package/detox/expectations.ts +108 -99
- package/detox/frame-offset.d.mts +6 -0
- package/detox/frame-offset.mjs +35 -0
- package/detox/gestures.ts +6 -18
- package/detox/index.ts +169 -101
- package/detox/jest-preset.cjs +1 -3
- package/detox/jest-transform.cjs +4 -0
- package/detox/matchers.ts +3 -0
- package/detox/motion-change.cjs +52 -118
- package/detox/motion-change.d.cts +6 -27
- package/detox/motion-leg-starts.cjs +20 -0
- package/detox/motion-leg-starts.d.cts +8 -0
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +3 -3
- 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 +65 -1
- package/dist-lib/bridge-contract-input.mjs +63 -1
- package/dist-lib/bridge-contract.cjs +19 -1
- package/dist-lib/bridge-contract.mjs +17 -1
- package/dist-lib/bundle-channel.cjs +38332 -14940
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/config.mjs +5 -3
- package/dist-lib/detox/index.cjs +1247 -4511
- package/dist-lib/detox/jest-preset.cjs +1 -3
- package/dist-lib/detox/jest-transform.cjs +4 -0
- package/dist-lib/dev-bundle-resolution.cjs +28 -24
- package/dist-lib/expo-swift-bundle.cjs +35243 -13172
- package/dist-lib/expo-swift-metadata.cjs +1 -1
- package/dist-lib/expo-swift-metadata.mjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +45285 -63163
- package/dist-lib/host/fetch-proxy-handler.cjs +3544 -11
- 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 +1997 -2069
- 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 +2 -2
- package/dist-lib/menu.cjs +14 -6
- package/dist-lib/menu.mjs +14 -6
- 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 +468 -563
- package/dist-lib/native-app-identity-project.cjs +128 -292
- package/dist-lib/native-app-identity-project.mjs +1262 -51
- package/dist-lib/native-app-identity.cjs +8 -3
- package/dist-lib/native-app-identity.mjs +8 -3
- package/dist-lib/native-firebase-metadata.cjs +1 -1
- package/dist-lib/native-firebase-metadata.mjs +1 -1
- package/dist-lib/plist.cjs +2 -244
- 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/public-origins-lib-esm.json +290 -0
- package/dist-lib/public-origins-lib-static.json +1 -0
- package/dist-lib/public-origins-lib.json +1852 -0
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +14 -253
- package/dist-lib/sdk.cjs +84 -16
- package/dist-lib/sdk.mjs +82 -15
- package/dist-lib/skills.cjs +51248 -75450
- package/dist-lib/swift-compile.cjs +26154 -1245
- package/dist-lib/swift-compile.mjs +26151 -1230
- package/dist-lib/swift-package.cjs +79 -1
- package/dist-lib/swift-package.mjs +75 -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 +34394 -12323
- package/dist-lib/vite.cjs +373 -298
- package/dist-lib/worklet-executable.cjs +1 -1
- package/dist-lib/worklet-executable.mjs +1 -1
- package/dist-types/packages/peach-compat/src/engine-config.d.ts +2 -0
- package/dist-types/packages/peach-compat/src/stubs/form-sheet-spring.d.ts +9 -0
- package/dist-types/packages/peach-compat/src/stubs/native-evaluation-lease.d.ts +47 -0
- package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-cookies.d.ts +113 -0
- package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-gesture-handler.d.ts +154 -0
- package/dist-types/packages/peach-compat/src/stubs/screen-transition-math.d.ts +756 -0
- package/dist-types/packages/peach-compat/src/stubs/transition-scalar.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/billing/plans.d.ts +64 -0
- package/dist-types/packages/peach-engine/src/browser-page-target.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/bundle-platform-url.d.ts +3 -0
- package/dist-types/packages/peach-engine/src/capture/browser-accessibility-host.d.ts +3 -0
- package/dist-types/packages/peach-engine/src/capture/browser-composite.d.ts +55 -0
- package/dist-types/packages/peach-engine/src/capture/browserAccessibilityContract.d.ts +27 -0
- package/dist-types/packages/peach-engine/src/capture/nativeScreenCaptureContract.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/cli-companion.d.ts +36 -0
- package/dist-types/packages/peach-engine/src/components/native-ui/webview-frame-bridge.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/config.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/engine/android-stretch-effect.d.ts +57 -0
- package/dist-types/packages/peach-engine/src/engine/animated-driven-style.d.ts +47 -0
- package/dist-types/packages/peach-engine/src/engine/animated-value.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/engine/animated.d.ts +195 -0
- package/dist-types/packages/peach-engine/src/engine/animation-clockContract.d.ts +15 -0
- package/dist-types/packages/peach-engine/src/engine/animation-graph.d.ts +148 -0
- package/dist-types/packages/peach-engine/src/engine/app-catalog-wire.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/engine/app-font-registry.d.ts +87 -0
- package/dist-types/packages/peach-engine/src/engine/attributed-paragraph-paint.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/engine/attributed-paragraph.d.ts +123 -0
- package/dist-types/packages/peach-engine/src/engine/audioContract.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/engine/canvaskit-api.d.ts +93 -0
- package/dist-types/packages/peach-engine/src/engine/canvaskit-renderer.d.ts +216 -0
- package/dist-types/packages/peach-engine/src/engine/config-plugin-fonts.d.ts +40 -0
- package/dist-types/packages/peach-engine/src/engine/config-plugin-splash.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/engine/cull-visibility.d.ts +44 -0
- package/dist-types/packages/peach-engine/src/engine/damage-rect.d.ts +19 -0
- package/dist-types/packages/peach-engine/src/engine/engine-resource.d.ts +6 -0
- package/dist-types/packages/peach-engine/src/engine/expo-manifest.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/engine/fiber-debug-metadata.d.ts +30 -0
- package/dist-types/packages/peach-engine/src/engine/font-config.d.ts +139 -0
- package/dist-types/packages/peach-engine/src/engine/generated/sf-pro-font.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/engine/glass-material.d.ts +31 -0
- package/dist-types/packages/peach-engine/src/engine/host-composite.d.ts +100 -0
- package/dist-types/packages/peach-engine/src/engine/hosted-semantics.d.ts +49 -0
- package/dist-types/packages/peach-engine/src/engine/image-audit.d.ts +70 -0
- package/dist-types/packages/peach-engine/src/engine/image-loader.d.ts +350 -0
- package/dist-types/packages/peach-engine/src/engine/inspect-info.d.ts +27 -0
- package/dist-types/packages/peach-engine/src/engine/inspect-outline.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/engine/inspect-visibility.d.ts +33 -0
- package/dist-types/packages/peach-engine/src/engine/ios-fast-scroll.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/engine/layout-sab.d.ts +43 -0
- package/dist-types/packages/peach-engine/src/engine/liquid-glass-rect.d.ts +23 -0
- package/dist-types/packages/peach-engine/src/engine/liquid-glass-shaders.d.ts +9 -0
- package/dist-types/packages/peach-engine/src/engine/liquid-glass.d.ts +283 -0
- package/dist-types/packages/peach-engine/src/engine/live-object-counts.d.ts +6 -0
- package/dist-types/packages/peach-engine/src/engine/lottie-runtime.d.ts +32 -0
- package/dist-types/packages/peach-engine/src/engine/lottie-types.d.ts +138 -0
- package/dist-types/packages/peach-engine/src/engine/memory-counts.d.ts +27 -0
- package/dist-types/packages/peach-engine/src/engine/metalDirectContract.d.ts +108 -0
- package/dist-types/packages/peach-engine/src/engine/metalShaderContract.d.ts +217 -0
- package/dist-types/packages/peach-engine/src/engine/native-animation-driver.d.ts +112 -0
- package/dist-types/packages/peach-engine/src/engine/native-animation-graph.d.ts +62 -0
- package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +133 -0
- package/dist-types/packages/peach-engine/src/engine/native-resources.d.ts +26 -0
- package/dist-types/packages/peach-engine/src/engine/nativeReanimatedContract.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/engine/nativeReplayContract.d.ts +64 -0
- package/dist-types/packages/peach-engine/src/engine/node.d.ts +589 -0
- package/dist-types/packages/peach-engine/src/engine/paint-boundary-types.d.ts +112 -0
- package/dist-types/packages/peach-engine/src/engine/paint-boundary.d.ts +57 -0
- package/dist-types/packages/peach-engine/src/engine/portalContract.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/engine/portals.d.ts +20 -0
- package/dist-types/packages/peach-engine/src/engine/render-damage.d.ts +107 -0
- package/dist-types/packages/peach-engine/src/engine/riveContract.d.ts +420 -0
- package/dist-types/packages/peach-engine/src/engine/rn-spring.d.ts +51 -0
- package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +379 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-momentum-math.d.ts +152 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-pan-contacts.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-platform.d.ts +75 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-range.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-velocity.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/engine/scroll.d.ts +320 -0
- package/dist-types/packages/peach-engine/src/engine/signal.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/engine/snapshot-cache-policy.d.ts +6 -0
- package/dist-types/packages/peach-engine/src/engine/svg-geometry.d.ts +41 -0
- package/dist-types/packages/peach-engine/src/engine/text-attachment-paragraphs.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/engine/text-decoration.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/engine/text-line-break.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/engine/text-paint-receipt.d.ts +98 -0
- package/dist-types/packages/peach-engine/src/engine/text-paragraph.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/engine/text-paragraphContract.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/engine/text-transform.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/engine/types.d.ts +657 -0
- package/dist-types/packages/peach-engine/src/engine/visible-frame.d.ts +54 -0
- package/dist-types/packages/peach-engine/src/engine/webrtcContract.d.ts +74 -0
- package/dist-types/packages/peach-engine/src/graphite-stats-fields.d.ts +184 -0
- package/dist-types/packages/peach-engine/src/guest-import-meta.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/guest-module-overrides.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/ios/app-card-types.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/ios/apps/canvas-map-data.d.ts +177 -0
- package/dist-types/packages/peach-engine/src/ios/aux-home-scene.d.ts +54 -0
- package/dist-types/packages/peach-engine/src/ios/chrome-metrics.d.ts +47 -0
- package/dist-types/packages/peach-engine/src/ios/constants.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/ios/duo-housing.d.ts +37 -0
- package/dist-types/packages/peach-engine/src/ios/home/types.d.ts +29 -0
- package/dist-types/packages/peach-engine/src/ios/home-app-catalog.d.ts +43 -0
- package/dist-types/packages/peach-engine/src/ios/photo-store.d.ts +73 -0
- package/dist-types/packages/peach-engine/src/ios/photoLibraryContract.d.ts +166 -0
- package/dist-types/packages/peach-engine/src/ios/shell-controller-types.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/ios/shell-transition-debug.d.ts +18 -0
- package/dist-types/packages/peach-engine/src/metro-asset-path.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/metro-fingerprint-registry-client.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/metro-fingerprint.d.ts +38 -0
- package/dist-types/packages/peach-engine/src/native-preview-bundle.d.ts +44 -0
- package/dist-types/packages/peach-engine/src/observability/types.d.ts +74 -0
- package/dist-types/packages/peach-engine/src/peach-warm-manifest.d.ts +32 -0
- package/dist-types/packages/peach-engine/src/permissions/app-settings-client.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/permissions/system-permission-types.d.ts +20 -0
- package/dist-types/packages/peach-engine/src/platform/android-back-panel.d.ts +131 -0
- package/dist-types/packages/peach-engine/src/platform/android-gesture-exclusion.d.ts +28 -0
- package/dist-types/packages/peach-engine/src/platform/android-predictive-back.d.ts +33 -0
- package/dist-types/packages/peach-engine/src/platform/system-bars-state.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/playwright-sim-host.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/preview/bundle-layout.d.ts +8 -0
- package/dist-types/packages/peach-engine/src/preview/bundle-variantContract.d.ts +24 -0
- package/dist-types/packages/peach-engine/src/preview/capture-bundle.d.ts +26 -0
- package/dist-types/packages/peach-engine/src/preview/compress-node.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/preview/compress.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/preview/presigned-upload.d.ts +60 -0
- package/dist-types/packages/peach-engine/src/preview/trace.d.ts +144 -0
- package/dist-types/packages/peach-engine/src/preview/upload-protocol.d.ts +152 -0
- package/dist-types/packages/peach-engine/src/profiler/animation-recording-loader.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/profiler/profile-trace.d.ts +4 -0
- package/dist-types/packages/peach-engine/src/react-bridge.d.ts +3 -0
- package/dist-types/packages/peach-engine/src/react-native/AppState.d.ts +45 -0
- package/dist-types/packages/peach-engine/src/react-native/Appearance.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/react-native/framework-colors-data.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/react-native/host-services.d.ts +42 -0
- package/dist-types/packages/peach-engine/src/react-native/layout-animation.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/react-native/platform-colors.d.ts +17 -0
- package/dist-types/packages/peach-engine/src/remote-stream/client-config.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/remote-stream/cloud-display.d.ts +58 -0
- package/dist-types/packages/peach-engine/src/remote-stream/scene-recording.d.ts +45 -0
- package/dist-types/packages/peach-engine/src/render-worker/animated-drive-output.d.ts +35 -0
- package/dist-types/packages/peach-engine/src/render-worker/app-load.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/render-worker/aux-surface-types.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/render-worker/canvaskit-shared.d.ts +42 -0
- package/dist-types/packages/peach-engine/src/render-worker/canvaskit-webgpu.d.ts +434 -0
- package/dist-types/packages/peach-engine/src/render-worker/canvaskit-worker-init.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-backend.d.ts +31 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-gpu.d.ts +202 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1945 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-runtime/scroll-drag-resample.d.ts +44 -0
- package/dist-types/packages/peach-engine/src/render-worker/css-keyframes-drive.d.ts +36 -0
- package/dist-types/packages/peach-engine/src/render-worker/edit-menu-geometry.d.ts +8 -0
- package/dist-types/packages/peach-engine/src/render-worker/engine-resource-relay.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/render-worker/expo-widgetContract.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/render-worker/gesture-seam-protocol.d.ts +152 -0
- package/dist-types/packages/peach-engine/src/render-worker/graph-linked-value.d.ts +29 -0
- package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler-contract.d.ts +49 -0
- package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/render-worker/host-service-protocol.d.ts +756 -0
- package/dist-types/packages/peach-engine/src/render-worker/image-lifecycle-event.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/render-worker/image-pixel-contract.d.ts +48 -0
- package/dist-types/packages/peach-engine/src/render-worker/live-frame-mirror.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/render-worker/map-command-channel.d.ts +189 -0
- package/dist-types/packages/peach-engine/src/render-worker/mapNativeContract.d.ts +101 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-dynamic-synchronizable.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-menu-gesture.d.ts +9 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-ui-commandContract.d.ts +23 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-ui-protocol.d.ts +1087 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-widgetContract.d.ts +100 -0
- package/dist-types/packages/peach-engine/src/render-worker/nativeAnimMirrorContract.d.ts +174 -0
- package/dist-types/packages/peach-engine/src/render-worker/nativeSyncReplyContract.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/render-worker/one-native-contentContract.d.ts +54 -0
- package/dist-types/packages/peach-engine/src/render-worker/pointerSampleContract.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/render-worker/protocol.d.ts +880 -0
- package/dist-types/packages/peach-engine/src/render-worker/reanimated-css-contract.d.ts +63 -0
- package/dist-types/packages/peach-engine/src/render-worker/reanimated-readiness.d.ts +29 -0
- package/dist-types/packages/peach-engine/src/render-worker/resilient-frame-clock.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/render-worker/retained-app-load.d.ts +20 -0
- package/dist-types/packages/peach-engine/src/render-worker/screen-edge-swipe-commit-protocol.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/render-worker/screen-form-sheet-commit-protocol.d.ts +26 -0
- package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror-tenant.d.ts +37 -0
- package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror.d.ts +164 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-event-registry.d.ts +119 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-gesture-regions.d.ts +41 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-protocol.d.ts +603 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-scene-schema.d.ts +101 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-tree-inline-sources.d.ts +13 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +87 -0
- package/dist-types/packages/peach-engine/src/render-worker/test-bridge-protocol.d.ts +47 -0
- package/dist-types/packages/peach-engine/src/render-worker/text-inputContract.d.ts +93 -0
- package/dist-types/packages/peach-engine/src/render-worker/tree-sync-port.d.ts +102 -0
- package/dist-types/packages/peach-engine/src/render-worker/webgpu-frame-transaction.d.ts +292 -0
- package/dist-types/packages/peach-engine/src/render-worker/webgpu-readback-scheduler.d.ts +107 -0
- package/dist-types/packages/peach-engine/src/render-worker/webview-capture-protocol.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/render-worker/worker-input-runtime.d.ts +211 -0
- package/dist-types/packages/peach-engine/src/render-worker/worker-storage.d.ts +33 -0
- package/dist-types/packages/peach-engine/src/render-worker/worklet-runtime.d.ts +987 -0
- package/dist-types/packages/peach-engine/src/render-worker/worklet-sab.d.ts +24 -0
- package/dist-types/packages/peach-engine/src/rolldown-bundle-inventory.d.ts +84 -0
- package/dist-types/packages/peach-engine/src/rolldown-production-fingerprint.d.ts +31 -0
- package/dist-types/packages/peach-engine/src/screenshots/timeline-assets.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/screenshots/tokens.d.ts +9 -0
- package/dist-types/packages/peach-engine/src/settings/devices.d.ts +70 -0
- package/dist-types/packages/peach-engine/src/settings/duo-fold-bus.d.ts +87 -0
- package/dist-types/packages/peach-engine/src/settings/interface-rotation.d.ts +30 -0
- package/dist-types/packages/peach-engine/src/settings/react-native-configuration.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/settings/scene-geometryContract.d.ts +40 -0
- package/dist-types/packages/peach-engine/src/settings/store.d.ts +37 -0
- package/dist-types/packages/peach-engine/src/shell-events.d.ts +203 -0
- package/dist-types/packages/peach-engine/src/shell-intent.d.ts +68 -0
- package/dist-types/packages/peach-engine/src/sootsim-event.d.ts +35 -0
- package/dist-types/packages/peach-engine/src/top-overlay-state.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/web-authentication-automation-host.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/webAuthenticationContract.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/webview-automation-host.d.ts +180 -0
- package/dist-types/packages/peach-engine/src/wireframe-mode.d.ts +16 -0
- package/dist-types/packages/peach-globals/src/frameBreakdownContract.d.ts +16 -0
- package/dist-types/packages/peach-globals/src/index.d.ts +3311 -0
- package/dist-types/packages/peach-globals/src/nativeSurfaceContract.d.ts +76 -0
- package/dist-types/packages/peach-globals/src/pointerSourceEventContract.d.ts +8 -0
- package/dist-types/packages/peach-globals/src/profileTrace.d.ts +11 -0
- package/dist-types/packages/peach-globals/src/profilerContract.d.ts +223 -0
- package/dist-types/packages/peach-kit/src/capabilities.d.ts +721 -0
- package/dist-types/packages/peach-kit/src/internal.d.ts +4 -0
- package/dist-types/packages/peach-kit/src/materials/types.d.ts +27 -0
- package/dist-types/packages/peach-kit/src/materials/uikit-blur-material.d.ts +14 -0
- package/dist-types/packages/peach-kit/src/navigation-types.d.ts +11 -0
- package/dist-types/packages/peach-kit/src/react-bridge.d.ts +53 -0
- package/dist-types/packages/peach-kit/src/runtime.d.ts +26 -0
- package/dist-types/packages/peach-kit/src/ui/hosting-safe-area.d.ts +24 -0
- package/dist-types/packages/peach-kit/src/ui/popover-placement.d.ts +53 -0
- package/dist-types/packages/peach-kit/src/ui/presentationContract.d.ts +17 -0
- package/kotlin/ComposeSources/PeachComposeHost.kt +1 -1
- package/kotlin/JniSources/com/facebook/jni/HybridData.kt +0 -2
- package/kotlin/JniSources/dev/peach/jni/NativeBindings.kt +0 -2
- package/kotlin/JniTransportSources/dev/peach/jni/integration/JniTransport.kt +0 -2
- package/kotlin/README.md +6 -0
- package/package.json +22 -2
- package/runtime-companion.json +1 -0
- package/skills/contrast/SKILL.md +1 -0
- package/src/appBundleResourcesContract.ts +51 -0
- package/src/assetCatalogContract.ts +21 -0
- package/src/backend-origin.ts +3 -1
- package/src/bridge-contract-input.ts +84 -0
- package/src/bridge-contract.ts +35 -3
- package/src/browser-launch-policy.ts +1 -0
- package/src/bundle-channel.mjs +4 -2
- package/src/cli-runtime.ts +55 -0
- package/src/crash-fingerprint.ts +26 -0
- package/src/dev-bundle-resolution.ts +50 -23
- package/src/device-catalog.ts +1159 -0
- package/src/host/bridge-host.ts +20 -37
- package/src/host/browser-pointer.ts +71 -0
- package/src/host/dev-server-package-versions.ts +23 -0
- package/src/host/fetch-proxy-handler.ts +17 -4
- package/src/host/staged-host-files.ts +28 -4
- package/src/installed-package-versions.ts +142 -38
- package/src/kotlin-host.ts +1 -1
- package/src/launchMetadataContract.ts +1 -0
- package/src/menu.ts +12 -4
- package/src/metro-plugin.ts +4 -4
- package/src/metro-project-root.ts +68 -0
- package/src/native-app-identity-project.ts +47 -38
- package/src/nitro-adapter.lock.json +26 -0
- package/src/nitro-adapter.ts +103 -0
- package/src/nitro-bundle.ts +24 -10
- package/src/nitro-compile.ts +33 -51
- package/src/nitro-source.ts +177 -96
- package/src/nitroAdapterContract.ts +217 -0
- package/src/nitroContract.ts +24 -11
- package/src/process-group.ts +41 -34
- package/src/react-bridge-importers.ts +28 -0
- package/src/reactNativeConfigurationContract.ts +36 -0
- package/src/runtime-assets.ts +7 -2
- package/src/runtime-delivery.ts +8 -7
- package/src/runtimePlatformContract.ts +70 -0
- package/src/screenshots/frame-compose.ts +42 -43
- package/src/screenshots/org-deck.ts +9 -4
- package/src/screenshots/preset-names.ts +29 -0
- package/src/screenshots/registry.ts +5 -5
- package/src/screenshots/schema.ts +1 -1
- package/src/screenshots/screenshotContract.ts +971 -0
- package/src/settings-flags.ts +107 -0
- package/src/settingsContract.ts +609 -0
- package/src/storageSnapshotContract.ts +344 -0
- package/src/stub-pattern-matcher.ts +550 -0
- package/src/swift-compile.ts +926 -47
- package/src/swift-compiler-digest.ts +17 -3
- package/src/swift-distribution.lock.json +49 -22
- package/src/swift-host.ts +167 -52
- package/src/swift-objc-compile.ts +86 -26
- package/src/swift-objc-export.ts +532 -0
- package/src/swift-objc-import.ts +769 -0
- package/src/swift-objc-metadata.ts +285 -10
- package/src/swift-objc-sdk.ts +13970 -158
- package/src/swift-objc-standin.ts +137 -1
- package/src/swift-package.ts +94 -0
- package/src/swift-packages.ts +5 -5
- package/src/swift-root-lock.ts +241 -92
- package/src/swift-submit.ts +6 -0
- package/src/swiftContract.ts +99 -0
- package/src/target-matcher.ts +6 -1
- package/src/vite-plugin.ts +14 -40
- package/src/worker-system-chunks.ts +1 -1
- package/src/workerChunkContract.ts +5 -0
- package/src/worklets-babel.ts +24 -5
- package/src/xcode-project.ts +103 -11
- package/src/xcode-target-members.ts +10 -3
- package/cli/drivers/playwright-sim-host.ts +0 -825
- package/kotlin/fixtures/counter/Counter.d.kt.ts +0 -17
- package/kotlin/fixtures/counter/Counter.kt +0 -51
- package/kotlin/fixtures/counter/CounterApp.native.tsx +0 -61
- package/kotlin/fixtures/counter/CounterApp.tsx +0 -3
- package/kotlin/fixtures/counter/CounterScreen.d.kt.ts +0 -8
- package/kotlin/fixtures/counter/CounterScreen.kt +0 -56
- package/kotlin/fixtures/counter/app/_layout.tsx +0 -4
- package/kotlin/fixtures/counter/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/counter/app/routes.d.ts +0 -18
- package/kotlin/fixtures/counter/package.json +0 -20
- package/kotlin/fixtures/counter/tsconfig.json +0 -19
- package/kotlin/fixtures/counter/vite.config.ts +0 -20
- package/kotlin/fixtures/headless-counter/Headless.kt +0 -234
- package/kotlin/fixtures/import-animation/Animation.d.kt.ts +0 -7
- package/kotlin/fixtures/import-animation/Animation.kt +0 -80
- package/kotlin/fixtures/import-animation/ImportAnimation.native.tsx +0 -13
- package/kotlin/fixtures/import-animation/README.md +0 -24
- package/kotlin/fixtures/import-animation/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-animation/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-animation/app/routes.d.ts +0 -18
- package/kotlin/fixtures/import-animation/package.json +0 -23
- package/kotlin/fixtures/import-animation/tsconfig.json +0 -20
- package/kotlin/fixtures/import-animation/vite.config.ts +0 -20
- package/kotlin/fixtures/import-drawing/Drawing.d.kt.ts +0 -7
- package/kotlin/fixtures/import-drawing/Drawing.kt +0 -101
- package/kotlin/fixtures/import-drawing/ImportDrawing.native.tsx +0 -18
- package/kotlin/fixtures/import-drawing/README.md +0 -34
- package/kotlin/fixtures/import-drawing/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-drawing/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-drawing/package.json +0 -23
- package/kotlin/fixtures/import-drawing/tsconfig.json +0 -20
- package/kotlin/fixtures/import-drawing/vite.config.ts +0 -20
- package/kotlin/fixtures/import-editor/Editor.d.kt.ts +0 -7
- package/kotlin/fixtures/import-editor/Editor.kt +0 -59
- package/kotlin/fixtures/import-editor/ImportEditor.native.tsx +0 -23
- package/kotlin/fixtures/import-editor/README.md +0 -27
- package/kotlin/fixtures/import-editor/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-editor/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-editor/package.json +0 -23
- package/kotlin/fixtures/import-editor/tsconfig.json +0 -20
- package/kotlin/fixtures/import-editor/vite.config.ts +0 -20
- package/kotlin/fixtures/import-effects/Effects.d.kt.ts +0 -7
- package/kotlin/fixtures/import-effects/Effects.kt +0 -87
- package/kotlin/fixtures/import-effects/ImportEffects.native.tsx +0 -13
- package/kotlin/fixtures/import-effects/README.md +0 -19
- package/kotlin/fixtures/import-effects/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-effects/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-effects/package.json +0 -23
- package/kotlin/fixtures/import-effects/tsconfig.json +0 -20
- package/kotlin/fixtures/import-effects/vite.config.ts +0 -20
- package/kotlin/fixtures/import-layout/ImportLayout.native.tsx +0 -13
- package/kotlin/fixtures/import-layout/Layout.d.kt.ts +0 -7
- package/kotlin/fixtures/import-layout/Layout.kt +0 -72
- package/kotlin/fixtures/import-layout/README.md +0 -24
- package/kotlin/fixtures/import-layout/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-layout/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-layout/package.json +0 -23
- package/kotlin/fixtures/import-layout/tsconfig.json +0 -20
- package/kotlin/fixtures/import-layout/vite.config.ts +0 -20
- package/kotlin/fixtures/import-navigation/ImportNavigation.native.tsx +0 -18
- package/kotlin/fixtures/import-navigation/Navigation.d.kt.ts +0 -7
- package/kotlin/fixtures/import-navigation/Navigation.kt +0 -104
- package/kotlin/fixtures/import-navigation/README.md +0 -31
- package/kotlin/fixtures/import-navigation/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-navigation/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-navigation/package.json +0 -23
- package/kotlin/fixtures/import-navigation/tsconfig.json +0 -20
- package/kotlin/fixtures/import-navigation/vite.config.ts +0 -20
- package/kotlin/fixtures/import-overlays/ImportOverlays.native.tsx +0 -29
- package/kotlin/fixtures/import-overlays/Overlays.d.kt.ts +0 -7
- package/kotlin/fixtures/import-overlays/Overlays.kt +0 -93
- package/kotlin/fixtures/import-overlays/README.md +0 -34
- package/kotlin/fixtures/import-overlays/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-overlays/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-overlays/package.json +0 -23
- package/kotlin/fixtures/import-overlays/tsconfig.json +0 -20
- package/kotlin/fixtures/import-overlays/vite.config.ts +0 -20
- package/kotlin/fixtures/import-resources/ImportResources.native.tsx +0 -18
- package/kotlin/fixtures/import-resources/README.md +0 -26
- package/kotlin/fixtures/import-resources/Resources.d.kt.ts +0 -6
- package/kotlin/fixtures/import-resources/Resources.kt +0 -72
- package/kotlin/fixtures/import-resources/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-resources/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-resources/package.json +0 -23
- package/kotlin/fixtures/import-resources/tsconfig.json +0 -20
- package/kotlin/fixtures/import-resources/vite.config.ts +0 -20
- package/kotlin/fixtures/import-scroll/ImportNested.native.tsx +0 -10
- package/kotlin/fixtures/import-scroll/ImportScroll.native.tsx +0 -13
- package/kotlin/fixtures/import-scroll/Nested.d.kt.ts +0 -4
- package/kotlin/fixtures/import-scroll/Nested.kt +0 -64
- package/kotlin/fixtures/import-scroll/README.md +0 -38
- package/kotlin/fixtures/import-scroll/Scroll.d.kt.ts +0 -7
- package/kotlin/fixtures/import-scroll/Scroll.kt +0 -91
- package/kotlin/fixtures/import-scroll/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-scroll/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-scroll/app/nested+spa.tsx +0 -1
- package/kotlin/fixtures/import-scroll/package.json +0 -23
- package/kotlin/fixtures/import-scroll/tsconfig.json +0 -20
- package/kotlin/fixtures/import-scroll/vite.config.ts +0 -20
- package/kotlin/fixtures/import-selection/ImportSelection.native.tsx +0 -44
- package/kotlin/fixtures/import-selection/README.md +0 -32
- package/kotlin/fixtures/import-selection/Selection.d.kt.ts +0 -8
- package/kotlin/fixtures/import-selection/Selection.kt +0 -78
- package/kotlin/fixtures/import-selection/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-selection/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-selection/package.json +0 -23
- package/kotlin/fixtures/import-selection/tsconfig.json +0 -20
- package/kotlin/fixtures/import-selection/vite.config.ts +0 -20
- package/kotlin/fixtures/import-surfaces/ImportSurfaces.native.tsx +0 -13
- package/kotlin/fixtures/import-surfaces/README.md +0 -22
- package/kotlin/fixtures/import-surfaces/Surfaces.d.kt.ts +0 -7
- package/kotlin/fixtures/import-surfaces/Surfaces.kt +0 -64
- package/kotlin/fixtures/import-surfaces/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-surfaces/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-surfaces/package.json +0 -23
- package/kotlin/fixtures/import-surfaces/tsconfig.json +0 -20
- package/kotlin/fixtures/import-surfaces/vite.config.ts +0 -20
- package/kotlin/fixtures/import-values/ImportValues.native.tsx +0 -61
- package/kotlin/fixtures/import-values/README.md +0 -28
- package/kotlin/fixtures/import-values/Values.d.kt.ts +0 -15
- package/kotlin/fixtures/import-values/Values.kt +0 -84
- package/kotlin/fixtures/import-values/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-values/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-values/package.json +0 -23
- package/kotlin/fixtures/import-values/tsconfig.json +0 -20
- package/kotlin/fixtures/import-values/vite.config.ts +0 -20
- package/kotlin/fixtures/kotlin-app/app/build.gradle.kts +0 -30
- package/kotlin/fixtures/kotlin-app/app/src/main/AndroidManifest.xml +0 -13
- package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/MainActivity.kt +0 -60
- package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/ProbeApplication.kt +0 -18
- package/kotlin/fixtures/kotlin-app/build.gradle.kts +0 -5
- package/kotlin/fixtures/kotlin-app/gradle.properties +0 -4
- package/kotlin/fixtures/kotlin-app/settings.gradle.kts +0 -4
- package/kotlin/fixtures/kotlin-app-variants/Anim.kt +0 -62
- package/kotlin/fixtures/kotlin-app-variants/BarBehavior.kt +0 -38
- package/kotlin/fixtures/kotlin-app-variants/BarVisibility.kt +0 -36
- package/kotlin/fixtures/kotlin-app-variants/Bitmaps.kt +0 -50
- package/kotlin/fixtures/kotlin-app-variants/Browse.kt +0 -73
- package/kotlin/fixtures/kotlin-app-variants/Colors.kt +0 -41
- package/kotlin/fixtures/kotlin-app-variants/Controls.kt +0 -62
- package/kotlin/fixtures/kotlin-app-variants/Drag.kt +0 -56
- package/kotlin/fixtures/kotlin-app-variants/Draw.kt +0 -74
- package/kotlin/fixtures/kotlin-app-variants/Drawables.kt +0 -53
- package/kotlin/fixtures/kotlin-app-variants/Focus.kt +0 -62
- package/kotlin/fixtures/kotlin-app-variants/Form.kt +0 -47
- package/kotlin/fixtures/kotlin-app-variants/Icons.kt +0 -59
- package/kotlin/fixtures/kotlin-app-variants/Ime.kt +0 -53
- package/kotlin/fixtures/kotlin-app-variants/Lists.kt +0 -57
- package/kotlin/fixtures/kotlin-app-variants/Nav.kt +0 -47
- package/kotlin/fixtures/kotlin-app-variants/Note.kt +0 -40
- package/kotlin/fixtures/kotlin-app-variants/Overlays.kt +0 -56
- package/kotlin/fixtures/kotlin-app-variants/Pan.kt +0 -38
- package/kotlin/fixtures/kotlin-app-variants/Pickers.kt +0 -44
- package/kotlin/fixtures/kotlin-app-variants/Press.kt +0 -43
- package/kotlin/fixtures/kotlin-app-variants/Scroll.kt +0 -63
- package/kotlin/fixtures/kotlin-app-variants/Sheet.kt +0 -43
- package/kotlin/fixtures/kotlin-app-variants/Strings.kt +0 -49
- package/kotlin/fixtures/kotlin-app-variants/Tabs.kt +0 -47
- package/kotlin/fixtures/kotlin-app-variants/TextWidth.kt +0 -45
- package/kotlin/fixtures/kotlin-app-variants/TransientInsets.kt +0 -50
- package/kotlin/fixtures/kotlin-app-variants/Transition.kt +0 -69
- package/kotlin/fixtures/kotlin-app-variants/ViewConfig.kt +0 -22
- package/kotlin/fixtures/kotlin-app-variants/Widgets.kt +0 -67
- package/kotlin/fixtures/runtime-state/RuntimeState.kt +0 -200
- package/kotlin/fork/README.md +0 -97
- package/kotlin/fork/build.sh +0 -176
- package/kotlin/fork/compose-worker-globals.patch +0 -1247
- package/kotlin/fork/fork.json +0 -46
- package/kotlin/fork/publish.ts +0 -99
- package/kotlin/fork/skia-android-shaping.patch +0 -189
- package/kotlin/fork/skiko-local.init.gradle +0 -10
- package/kotlin/fork/skiko-worker-clock.patch +0 -122
package/README.md
CHANGED
|
@@ -484,6 +484,18 @@ connected. With multiple driveable sims, the bridge lists their ids and refuses
|
|
|
484
484
|
to choose. Run `peach use <id>` to pin later commands, or pass `--sim <id>` to
|
|
485
485
|
target one command.
|
|
486
486
|
|
|
487
|
+
Writes, `peach do reload`, `storage-clear` and `close` honor a live lease held
|
|
488
|
+
by another CLI identity and refuse before the sim is touched. A `peach open`
|
|
489
|
+
that will not reuse a pinned sim (no pin, or `--new`, `--profile`,
|
|
490
|
+
`--ephemeral`) records that intent as soon as its arguments validate. If it
|
|
491
|
+
then fails, including while resolving the app bundle, later commands from the
|
|
492
|
+
same CLI identity that name no sim refuse instead of landing on another
|
|
493
|
+
connected tab: writes, `reload`, `storage-clear`, `close`, `close --all` and
|
|
494
|
+
`close --others`. A successful `peach open`, `peach use <id>` or `--sim <id>`
|
|
495
|
+
restores intent, and reads keep the fallback. Naming a sim (`peach close <id>`)
|
|
496
|
+
is explicit and is not blocked; closing an unleased sim that someone else owns
|
|
497
|
+
by naming it stays the caller's call.
|
|
498
|
+
|
|
487
499
|
Use an inline `peach do` chain for a short action sequence that should execute as
|
|
488
500
|
one engine batch. Repeat `--then` before each additional action. Each phrase
|
|
489
501
|
uses the same positional grammar as its standalone `do` command. Touch timing
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto'
|
|
2
|
+
import fs from 'node:fs'
|
|
3
|
+
import path from 'node:path'
|
|
4
|
+
import { preferredMimeType } from '../../peach-compat/src/stubs/uttype-mime'
|
|
5
|
+
import { enumerateBundleResources } from '../../sootsim-swift/src/bundleAssets'
|
|
6
|
+
import {
|
|
7
|
+
isAppBundleResourcePath,
|
|
8
|
+
type AppBundleResources,
|
|
9
|
+
} from '../src/appBundleResourcesContract'
|
|
10
|
+
import { stageHostByteFiles } from '../src/host/staged-host-files'
|
|
11
|
+
import { readIosAppTarget } from '../src/native-app-identity-project'
|
|
12
|
+
import { readPackageFile } from '../src/swift-source-file'
|
|
13
|
+
|
|
14
|
+
export function stageAppBundleResources(
|
|
15
|
+
appDir: string,
|
|
16
|
+
origin: string,
|
|
17
|
+
iosTarget?: string,
|
|
18
|
+
): AppBundleResources {
|
|
19
|
+
const app = readIosAppTarget(appDir, iosTarget)
|
|
20
|
+
if (!app) return {}
|
|
21
|
+
const root = fs.realpathSync(appDir)
|
|
22
|
+
const members = new Map<string, string>()
|
|
23
|
+
for (const file of app.resources) {
|
|
24
|
+
const real = fs.realpathSync(file)
|
|
25
|
+
const relative = path.relative(root, real)
|
|
26
|
+
if (relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative))
|
|
27
|
+
throw new Error('native app resource escapes the Xcode input root')
|
|
28
|
+
const lexical = path.relative(root, file)
|
|
29
|
+
if (
|
|
30
|
+
lexical === '..' ||
|
|
31
|
+
lexical.startsWith(`..${path.sep}`) ||
|
|
32
|
+
path.isAbsolute(lexical)
|
|
33
|
+
)
|
|
34
|
+
throw new Error('native app resource escapes the selected project')
|
|
35
|
+
const name = `Resources/${lexical.split(path.sep).join('/')}`
|
|
36
|
+
members.set(name, file)
|
|
37
|
+
}
|
|
38
|
+
const resources = enumerateBundleResources([...members.keys()])
|
|
39
|
+
const bytes = resources.map(({ base, file }) => {
|
|
40
|
+
if (!isAppBundleResourcePath(base)) throw new Error('invalid native resource path')
|
|
41
|
+
const source = members.get(file)
|
|
42
|
+
if (!source) throw new Error('native resource is not an Xcode target member')
|
|
43
|
+
return readPackageFile(root, source, Infinity)
|
|
44
|
+
})
|
|
45
|
+
const urls = stageHostByteFiles(bytes, origin)
|
|
46
|
+
const result: AppBundleResources = Object.create(null)
|
|
47
|
+
resources.forEach(({ base }, index) => {
|
|
48
|
+
const content = bytes[index]!
|
|
49
|
+
result[base] = {
|
|
50
|
+
uri: urls[index]!,
|
|
51
|
+
sha256: createHash('sha256').update(content).digest('hex'),
|
|
52
|
+
contentType: preferredMimeType(base) ?? 'application/octet-stream',
|
|
53
|
+
byteLength: content.byteLength,
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
return result
|
|
57
|
+
}
|
package/cli/app-catalog.ts
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
enumerateBundleImages,
|
|
6
6
|
enumerateBundleSymbols,
|
|
7
7
|
} from '../../sootsim-swift/src/bundleAssets'
|
|
8
|
-
import type { AppCatalog } from 'peach-
|
|
8
|
+
import type { AppCatalog } from '#peach-cli-contract/engine/app-catalog-wire'
|
|
9
9
|
|
|
10
10
|
// the xcode build setting actool turns into the built Info.plist's
|
|
11
11
|
// NSAccentColorName when the source plist does not name one itself
|
package/cli/app-fonts.ts
CHANGED
|
@@ -2,19 +2,7 @@ import { createHash } from 'node:crypto'
|
|
|
2
2
|
import fs from 'node:fs'
|
|
3
3
|
import { createRequire } from 'node:module'
|
|
4
4
|
import path from 'node:path'
|
|
5
|
-
import {
|
|
6
|
-
encodeAppFontsWire,
|
|
7
|
-
resolveAppFontsWire,
|
|
8
|
-
expoFontPathsFromPlugins,
|
|
9
|
-
nativeLinkedFontSpecsFromPaths,
|
|
10
|
-
appFontAssetUrlsFromWire,
|
|
11
|
-
type ConfigPluginFontSpec,
|
|
12
|
-
type FontPlatform,
|
|
13
|
-
} from 'peach-engine/engine/config-plugin-fonts'
|
|
14
|
-
import { resolveListeningPid, resolveProcessCwd } from '../scripts/dev-server-scanner'
|
|
15
|
-
import { loopbackOriginOf } from '../src/backend-origin'
|
|
16
|
-
import { MANIFEST_PROBE_TIMEOUT_MS } from '../src/dev-bundle-resolution'
|
|
17
|
-
import { parseExpoManifestBody } from '../src/expo-manifest-body'
|
|
5
|
+
import { getCliRuntime } from '../src/cli-runtime.ts'
|
|
18
6
|
import { stageHostFile } from '../src/host/staged-host-files'
|
|
19
7
|
import { parsePlistSource } from '../src/plist.ts'
|
|
20
8
|
import { listXcodeAppTargets, readXcodeAppTarget } from '../src/xcode-project'
|
|
@@ -23,6 +11,8 @@ import {
|
|
|
23
11
|
materialSymbolFontPaths,
|
|
24
12
|
materialSymbolFontAssets,
|
|
25
13
|
} from './material-symbol-fonts'
|
|
14
|
+
import type { FontPlatform } from '#peach-cli-contract/engine/config-plugin-fonts'
|
|
15
|
+
import type { ConfigPluginFontSpec } from '#peach-cli-contract/engine/config-plugin-fonts'
|
|
26
16
|
|
|
27
17
|
const require = createRequire(import.meta.url)
|
|
28
18
|
|
|
@@ -43,7 +33,7 @@ export function discoverNativeLinkedAppFonts(opts: {
|
|
|
43
33
|
}): DiscoveredAppFontSpec[] {
|
|
44
34
|
const { paths, materialSymbols } = discoverNativeLinkedAppFontAssets(opts)
|
|
45
35
|
const realProjectRoot = fs.realpathSync(opts.projectDir)
|
|
46
|
-
const specs = nativeLinkedFontSpecsFromPaths(
|
|
36
|
+
const specs = getCliRuntime().engine_config_plugin_fonts.nativeLinkedFontSpecsFromPaths(
|
|
47
37
|
projectRelativeFontPaths(opts.projectDir, paths),
|
|
48
38
|
nativeFontPlatform(opts.platform),
|
|
49
39
|
(fontPath) =>
|
|
@@ -143,7 +133,8 @@ function discoverNativeLinkedAppFontAssets(opts: {
|
|
|
143
133
|
}
|
|
144
134
|
|
|
145
135
|
// a declared path with no file behind it links nothing natively.
|
|
146
|
-
const fontPaths =
|
|
136
|
+
const fontPaths = getCliRuntime()
|
|
137
|
+
.engine_config_plugin_fonts.expoFontPathsFromPlugins(plugins, platform)
|
|
147
138
|
.slice(0, 256)
|
|
148
139
|
.map((fontPath) => path.resolve(selectedAppDir, fontPath))
|
|
149
140
|
.filter(isFile)
|
|
@@ -354,7 +345,7 @@ export function readNativeLinkedAppFontsWire(opts: {
|
|
|
354
345
|
}
|
|
355
346
|
const projectDir = fs.realpathSync(opts.projectDir)
|
|
356
347
|
const { paths, materialSymbols } = discoverNativeLinkedAppFontAssets(opts)
|
|
357
|
-
const specs = nativeLinkedFontSpecsFromPaths(
|
|
348
|
+
const specs = getCliRuntime().engine_config_plugin_fonts.nativeLinkedFontSpecsFromPaths(
|
|
358
349
|
projectRelativeFontPaths(projectDir, paths),
|
|
359
350
|
nativeFontPlatform(opts.platform),
|
|
360
351
|
(fontPath) => {
|
|
@@ -368,69 +359,7 @@ export function readNativeLinkedAppFontsWire(opts: {
|
|
|
368
359
|
(filePath) =>
|
|
369
360
|
`data:application/octet-stream;base64,${fs.readFileSync(filePath).toString('base64')}`,
|
|
370
361
|
)
|
|
371
|
-
return encodeAppFontsWire(specs)
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
// resolve a metro dev server's project root. Expo's middleware advertises it
|
|
375
|
-
// in X-React-Native-Project-Root, encoded with encodeURI. Older servers name it
|
|
376
|
-
// in extra.expoClient._internal.projectRoot. The local peach open path runs from the
|
|
377
|
-
// CLI's cwd, which almost never owns the bundle being opened (e.g.
|
|
378
|
-
// `peach open 8081` run from ~/contrast against a 3pc metro), so scanning cwd for
|
|
379
|
-
// font declarations finds nothing.
|
|
380
|
-
//
|
|
381
|
-
// a bare react-native packager serves no such manifest, so the same resolver
|
|
382
|
-
// asks the OS for the listening process's cwd. that is still the development
|
|
383
|
-
// server's project identity; the invoking CLI's cwd is never consulted.
|
|
384
|
-
//
|
|
385
|
-
// it waits on the same budget as the manifest resolution that found this dev
|
|
386
|
-
// server. a cold Expo Metro answers /status in 2-4s while it builds a bundle,
|
|
387
|
-
// and dropping the project there opens the app without its fonts, splash or
|
|
388
|
-
// Firebase config. a server that stays silent past the budget fails the open.
|
|
389
|
-
export async function resolveMetroProjectRoot(bundleUrl: string): Promise<string | null> {
|
|
390
|
-
const origin = loopbackOriginOf(bundleUrl)
|
|
391
|
-
if (!origin) return null
|
|
392
|
-
const controller = new AbortController()
|
|
393
|
-
const timer = setTimeout(() => controller.abort(), MANIFEST_PROBE_TIMEOUT_MS)
|
|
394
|
-
let servedManifest = false
|
|
395
|
-
let metroRunning = false
|
|
396
|
-
try {
|
|
397
|
-
const status = await fetch(`${origin}/status`, { signal: controller.signal })
|
|
398
|
-
const advertisedRoot = status.headers.get('X-React-Native-Project-Root')
|
|
399
|
-
if (status.ok && advertisedRoot) return decodeURI(advertisedRoot)
|
|
400
|
-
metroRunning = status.ok && (await status.text()).trim() === 'packager-status:running'
|
|
401
|
-
const res = await fetch(`${origin}/`, {
|
|
402
|
-
headers: { 'expo-platform': 'ios', Accept: 'application/json' },
|
|
403
|
-
signal: controller.signal,
|
|
404
|
-
})
|
|
405
|
-
if (res.ok) {
|
|
406
|
-
const manifest = parseExpoManifestBody(await res.text()) as {
|
|
407
|
-
extra?: { expoClient?: { _internal?: { projectRoot?: unknown } } }
|
|
408
|
-
}
|
|
409
|
-
servedManifest = true
|
|
410
|
-
const root = manifest?.extra?.expoClient?._internal?.projectRoot
|
|
411
|
-
if (typeof root === 'string' && root.length > 0) return root
|
|
412
|
-
}
|
|
413
|
-
} catch {
|
|
414
|
-
if (controller.signal.aborted)
|
|
415
|
-
throw new Error(
|
|
416
|
-
`Metro project root request timed out after ${MANIFEST_PROBE_TIMEOUT_MS / 1000}s: ${origin}. Wait for the dev server to finish starting or pass --project-root.`,
|
|
417
|
-
)
|
|
418
|
-
} finally {
|
|
419
|
-
clearTimeout(timer)
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
// a server that answered with a manifest has already told us everything it
|
|
423
|
-
// knows. if it did not name a project root there is none to learn, and asking
|
|
424
|
-
// the OS about the listening process would answer with whatever directory
|
|
425
|
-
// that process happens to sit in — which is the CLI's own cwd trap this
|
|
426
|
-
// function exists to avoid. only a server whose status identifies Metro
|
|
427
|
-
// and which served no manifest gets the process lookup.
|
|
428
|
-
if (servedManifest || !metroRunning) return null
|
|
429
|
-
|
|
430
|
-
const port = Number(new URL(origin).port)
|
|
431
|
-
if (!Number.isFinite(port) || port <= 0) return null
|
|
432
|
-
const pid = await resolveListeningPid(port)
|
|
433
|
-
return pid === null ? null : resolveProcessCwd(pid)
|
|
362
|
+
return getCliRuntime().engine_config_plugin_fonts.encodeAppFontsWire(specs)
|
|
434
363
|
}
|
|
435
364
|
|
|
436
365
|
// content type for a config-plugin font url, by extension. config fonts only
|
|
@@ -469,7 +398,9 @@ export async function fetchAppFontFiles(
|
|
|
469
398
|
): Promise<FetchedAppFont[]> {
|
|
470
399
|
const out: FetchedAppFont[] = []
|
|
471
400
|
const seen = new Set<string>()
|
|
472
|
-
for (const url of appFontAssetUrlsFromWire(
|
|
401
|
+
for (const url of getCliRuntime().engine_config_plugin_fonts.appFontAssetUrlsFromWire(
|
|
402
|
+
await getCliRuntime().engine_config_plugin_fonts.resolveAppFontsWire(wire, fetch),
|
|
403
|
+
)) {
|
|
473
404
|
const urlhash = createHash('sha256').update(url).digest('hex')
|
|
474
405
|
if (seen.has(urlhash)) continue
|
|
475
406
|
seen.add(urlhash)
|
package/cli/app-splash.ts
CHANGED
|
@@ -2,21 +2,22 @@ import { createHash } from 'node:crypto'
|
|
|
2
2
|
import fs from 'node:fs'
|
|
3
3
|
import { createRequire } from 'node:module'
|
|
4
4
|
import path from 'node:path'
|
|
5
|
-
import {
|
|
6
|
-
configPluginSplashFromExpoConfig,
|
|
7
|
-
encodeAppSplashWire,
|
|
8
|
-
parseAppSplashWire,
|
|
9
|
-
type ConfigPluginSplashSpec,
|
|
10
|
-
} from 'peach-engine/engine/config-plugin-splash'
|
|
11
5
|
import { loopbackOriginOf } from '../src/backend-origin'
|
|
6
|
+
import { getCliRuntime } from '../src/cli-runtime.ts'
|
|
12
7
|
import { resolveAppProject } from './app-project'
|
|
8
|
+
import type { ConfigPluginSplashSpec } from '#peach-cli-contract/engine/config-plugin-splash'
|
|
13
9
|
|
|
14
10
|
const require = createRequire(import.meta.url)
|
|
15
11
|
|
|
16
12
|
// the filesystem scan and the engine's metro-manifest scan share the same
|
|
17
13
|
// parser (config-plugin-splash.ts) and produce the same resolved spec.
|
|
18
14
|
export type DiscoveredAppSplashSpec = ConfigPluginSplashSpec
|
|
19
|
-
export
|
|
15
|
+
export function encodeAppSplashWire(spec: ConfigPluginSplashSpec): string {
|
|
16
|
+
return getCliRuntime().engine_config_plugin_splash.encodeAppSplashWire(spec)
|
|
17
|
+
}
|
|
18
|
+
export function parseAppSplashWire(wire: string): ConfigPluginSplashSpec | null {
|
|
19
|
+
return getCliRuntime().engine_config_plugin_splash.parseAppSplashWire(wire)
|
|
20
|
+
}
|
|
20
21
|
|
|
21
22
|
export async function discoverOneNativeAppSplash(
|
|
22
23
|
bundleUrl: string,
|
|
@@ -42,9 +43,14 @@ export async function discoverOneNativeAppSplash(
|
|
|
42
43
|
return null
|
|
43
44
|
const extra = 'extra' in manifest ? manifest.extra : undefined
|
|
44
45
|
if (!extra || typeof extra !== 'object' || !('expoClient' in extra)) return null
|
|
45
|
-
return configPluginSplashFromExpoConfig(
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
return getCliRuntime().engine_config_plugin_splash.configPluginSplashFromExpoConfig(
|
|
47
|
+
extra.expoClient,
|
|
48
|
+
'ios',
|
|
49
|
+
origin,
|
|
50
|
+
{
|
|
51
|
+
oneNativeApp: true,
|
|
52
|
+
},
|
|
53
|
+
)
|
|
48
54
|
} catch {
|
|
49
55
|
return null
|
|
50
56
|
}
|
|
@@ -88,7 +94,7 @@ export function discoverConfigPluginAppSplash(opts: {
|
|
|
88
94
|
} catch {}
|
|
89
95
|
if (!exp || typeof exp !== 'object') return null
|
|
90
96
|
|
|
91
|
-
return configPluginSplashFromExpoConfig(
|
|
97
|
+
return getCliRuntime().engine_config_plugin_splash.configPluginSplashFromExpoConfig(
|
|
92
98
|
exp,
|
|
93
99
|
platform === 'android' ? 'android' : 'ios',
|
|
94
100
|
metroOrigin,
|
|
@@ -140,7 +146,7 @@ export async function fetchAppSplashImages(
|
|
|
140
146
|
onError?: (url: string, err: unknown) => void
|
|
141
147
|
},
|
|
142
148
|
): Promise<FetchedAppSplashImage[]> {
|
|
143
|
-
const spec = parseAppSplashWire(wire)
|
|
149
|
+
const spec = getCliRuntime().engine_config_plugin_splash.parseAppSplashWire(wire)
|
|
144
150
|
if (!spec) return []
|
|
145
151
|
const out: FetchedAppSplashImage[] = []
|
|
146
152
|
const seen = new Set<string>()
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import * as fs from 'fs'
|
|
2
2
|
import * as path from 'path'
|
|
3
3
|
import { isTextInputEditCommand, type TextInputEditCommand } from '@peach/globals'
|
|
4
|
-
import {
|
|
5
|
-
isStorageSnapshot,
|
|
6
|
-
prepareStorageSnapshotForShare,
|
|
7
|
-
type ShareableStorageSnapshot,
|
|
8
|
-
} from 'peach-engine/preview/storage-snapshot-contract'
|
|
9
|
-
import { devices, type DeviceModel } from 'peach-engine/settings/devices'
|
|
10
4
|
import { REQUIRED_IDENTICAL_FLOW_FRAMES, framesIdentical } from '../detox/proof-frame.cjs'
|
|
5
|
+
import { devices, type DeviceModel } from '../src/device-catalog.ts'
|
|
11
6
|
import { flowTimeoutScale } from '../src/flow-timeout-scale'
|
|
12
7
|
import { composeFramedScreenshot } from '../src/screenshots/frame-compose'
|
|
13
8
|
import { sleep } from '../src/sleep'
|
|
9
|
+
import {
|
|
10
|
+
isStorageSnapshot,
|
|
11
|
+
prepareStorageSnapshotForShare,
|
|
12
|
+
ShareableStorageSnapshot,
|
|
13
|
+
} from '../src/storageSnapshotContract.ts'
|
|
14
14
|
import {
|
|
15
15
|
inspectWaitReady,
|
|
16
16
|
isPeachAccessibilityTree,
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
sameNativeAccessibilityShape,
|
|
28
28
|
} from './maestro-accessibility'
|
|
29
29
|
import { MaestroJsContext, scriptConditionIsTruthy } from './maestro-js'
|
|
30
|
+
import { redactForSharing } from './output-redaction'
|
|
30
31
|
import { ensureCliRecordingEntitlement } from './recording-access'
|
|
31
32
|
import type { PerformResult, PerformStep, ResetResult } from '../src/bridge-contract'
|
|
32
33
|
import type { WsBridge } from './ws-bridge'
|
|
@@ -2387,7 +2388,10 @@ export class SootSimBridgeFlowRunner {
|
|
|
2387
2388
|
fs.mkdirSync(outputDir, { recursive: true })
|
|
2388
2389
|
const write = (name: string, content: string | Buffer) => {
|
|
2389
2390
|
try {
|
|
2390
|
-
fs.writeFileSync(
|
|
2391
|
+
fs.writeFileSync(
|
|
2392
|
+
path.join(outputDir, name),
|
|
2393
|
+
typeof content === 'string' ? redactForSharing(content) : content,
|
|
2394
|
+
)
|
|
2391
2395
|
} catch {
|
|
2392
2396
|
// best-effort; don't let one failed write block the others
|
|
2393
2397
|
}
|
package/cli/cloud-client.ts
CHANGED
|
@@ -24,14 +24,8 @@ import {
|
|
|
24
24
|
buildRnxCloudArtifact,
|
|
25
25
|
type RnxCloudArtifactReceipt,
|
|
26
26
|
} from '../../contrast-bundler/src/metroCloudArtifact.ts'
|
|
27
|
-
import { rewriteGuestImportMeta } from '../../peach-engine/src/guest-import-meta.ts'
|
|
28
|
-
import { loadMetroFingerprintRegistry } from '../../peach-engine/src/metro-fingerprint-registry-client.ts'
|
|
29
|
-
import { inferMetroModuleIdentity } from '../../peach-engine/src/metro-fingerprint.ts'
|
|
30
|
-
import {
|
|
31
|
-
isNativeJavaScriptBundle,
|
|
32
|
-
isRolldownBundle,
|
|
33
|
-
} from '../../peach-engine/src/preview/bundle-layout'
|
|
34
27
|
import { isLoopbackHost } from '../src/backend-origin.ts'
|
|
28
|
+
import { getCliRuntime } from '../src/cli-runtime.ts'
|
|
35
29
|
import {
|
|
36
30
|
isRnxCloudCommandType,
|
|
37
31
|
isRnxCloudSimStatus,
|
|
@@ -52,6 +46,7 @@ import {
|
|
|
52
46
|
} from '../src/metro-production-bundle.ts'
|
|
53
47
|
import { readPackageVersionsFooter } from '../src/packageVersionsContract'
|
|
54
48
|
import { rnxPublicBrand } from '../src/public-brand.ts'
|
|
49
|
+
import { StorageSnapshot } from '../src/storageSnapshotContract.ts'
|
|
55
50
|
import { CHOOSE_ACCOUNT_HINT, resolveCliAuth } from './auth.ts'
|
|
56
51
|
import {
|
|
57
52
|
createCloudSession,
|
|
@@ -63,7 +58,6 @@ import {
|
|
|
63
58
|
type RemotePlatform,
|
|
64
59
|
} from './cloud-session.ts'
|
|
65
60
|
import { detectProject } from './commands/detect.ts'
|
|
66
|
-
import type { StorageSnapshot } from '../../peach-engine/src/preview/storage-snapshot-contract.ts'
|
|
67
61
|
import type {
|
|
68
62
|
BridgeClaimResult,
|
|
69
63
|
BridgeSimInfo,
|
|
@@ -258,13 +252,15 @@ async function loadBundleSource(bundleInput: string, command: string): Promise<s
|
|
|
258
252
|
const source = isRemoteBundleInput(bundleInput)
|
|
259
253
|
? await fetchBundleSource(bundleInput, command)
|
|
260
254
|
: readImmutableBundleSource(bundleInput, command)
|
|
261
|
-
if (!isNativeJavaScriptBundle(source)) {
|
|
255
|
+
if (!getCliRuntime().preview_bundle_layout.isNativeJavaScriptBundle(source)) {
|
|
262
256
|
throw new Error(`${command} requires a supported React Native JavaScript bundle`)
|
|
263
257
|
}
|
|
264
258
|
// validate the actual runtime script form without executing guest code or
|
|
265
259
|
// allocating a host.
|
|
266
260
|
try {
|
|
267
|
-
new Script(rewriteGuestImportMeta(source), {
|
|
261
|
+
new Script(getCliRuntime().guest_import_meta.rewriteGuestImportMeta(source), {
|
|
262
|
+
filename: bundleInput,
|
|
263
|
+
})
|
|
268
264
|
} catch (error) {
|
|
269
265
|
throw new Error(
|
|
270
266
|
`${command} bundle contains invalid JavaScript: ${
|
|
@@ -674,7 +670,8 @@ async function inferCloudModuleIdentity(
|
|
|
674
670
|
): Promise<RNXMetroModuleIdentityMetadata> {
|
|
675
671
|
let receipt
|
|
676
672
|
try {
|
|
677
|
-
receipt =
|
|
673
|
+
receipt =
|
|
674
|
+
await getCliRuntime().metro_fingerprint_registry_client.loadMetroFingerprintRegistry()
|
|
678
675
|
} catch (error) {
|
|
679
676
|
throw new Error(
|
|
680
677
|
`${command} could not load the Metro fingerprint registry needed to identify this bundle: ${
|
|
@@ -683,7 +680,7 @@ async function inferCloudModuleIdentity(
|
|
|
683
680
|
)
|
|
684
681
|
}
|
|
685
682
|
try {
|
|
686
|
-
const inferred = await inferMetroModuleIdentity({
|
|
683
|
+
const inferred = await getCliRuntime().metro_fingerprint.inferMetroModuleIdentity({
|
|
687
684
|
source,
|
|
688
685
|
registry: receipt.registry,
|
|
689
686
|
registryIntegrity: receipt.integrity,
|
|
@@ -741,7 +738,7 @@ export async function produceCloudArtifact(
|
|
|
741
738
|
/** prepares a standalone preview whose bytes must represent every Metro asset. */
|
|
742
739
|
export async function producePreviewArtifact(bundlePath: string) {
|
|
743
740
|
const prepared = await embedBundleAssets(bundlePath, PREVIEW_COMMAND, 'require-assets')
|
|
744
|
-
if (!isRolldownBundle(prepared.source)) {
|
|
741
|
+
if (!getCliRuntime().preview_bundle_layout.isRolldownBundle(prepared.source)) {
|
|
745
742
|
return {
|
|
746
743
|
...(await produceArtifact(prepared, Number.POSITIVE_INFINITY, PREVIEW_COMMAND)),
|
|
747
744
|
minified: true,
|
package/cli/command-registry.ts
CHANGED
|
@@ -51,6 +51,7 @@ const NODE_COMMAND_NAMES = [
|
|
|
51
51
|
'claim',
|
|
52
52
|
'close',
|
|
53
53
|
'doctor',
|
|
54
|
+
'coverage',
|
|
54
55
|
'project-report',
|
|
55
56
|
'support',
|
|
56
57
|
'desktop',
|
|
@@ -145,16 +146,24 @@ const VALUE_FLAGS = new Set([
|
|
|
145
146
|
|
|
146
147
|
const BROWSER_SCREENSHOT_SUBCOMMANDS = new Set(['capture', 'ask', 'appearance', 'motion'])
|
|
147
148
|
|
|
148
|
-
export function
|
|
149
|
+
export function getRnxPositionals(
|
|
150
|
+
args: readonly string[],
|
|
151
|
+
extraValueFlags: ReadonlySet<string> = new Set(),
|
|
152
|
+
): string[] {
|
|
153
|
+
const positionals: string[] = []
|
|
149
154
|
for (let index = 0; index < args.length; index++) {
|
|
150
155
|
const arg = args[index]
|
|
151
156
|
if (arg.startsWith('-')) {
|
|
152
|
-
if (VALUE_FLAGS.has(arg)) index++
|
|
157
|
+
if (VALUE_FLAGS.has(arg) || extraValueFlags.has(arg)) index++
|
|
153
158
|
continue
|
|
154
159
|
}
|
|
155
|
-
|
|
160
|
+
positionals.push(arg)
|
|
156
161
|
}
|
|
157
|
-
return
|
|
162
|
+
return positionals
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export function getRnxFirstPositional(args: readonly string[]): string | null {
|
|
166
|
+
return getRnxPositionals(args)[0] ?? null
|
|
158
167
|
}
|
|
159
168
|
|
|
160
169
|
export function getRnxCommandRegistration(name: string): RnxCommandRegistration | null {
|
package/cli/commands/box.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto'
|
|
1
2
|
// `peach box` — the box environment.
|
|
2
3
|
//
|
|
3
4
|
// bare `peach box` is LOCAL and mounts the current checkout at /project. cloud
|
|
@@ -9,8 +10,6 @@
|
|
|
9
10
|
// every verb that acts on an existing Box takes it the same way: the id or
|
|
10
11
|
// name on the command line, else the one `peach box use` remembered. see
|
|
11
12
|
// boxTarget below.
|
|
12
|
-
|
|
13
|
-
import { createHash } from 'node:crypto'
|
|
14
13
|
import fs from 'node:fs'
|
|
15
14
|
import path from 'node:path'
|
|
16
15
|
import { createInterface } from 'node:readline'
|
|
@@ -30,7 +29,8 @@ import {
|
|
|
30
29
|
ensureCloudBoxBrowser,
|
|
31
30
|
resolveCloudBoxReference,
|
|
32
31
|
} from 'peach-cloud-box/client'
|
|
33
|
-
import {
|
|
32
|
+
import { getCliRuntime } from '../../src/cli-runtime.ts'
|
|
33
|
+
import { isDeviceModel } from '../../src/device-catalog.ts'
|
|
34
34
|
import { readDefaultBox, writeDefaultBox } from '../../src/home-paths'
|
|
35
35
|
import { rnxPublicBrand } from '../../src/public-brand'
|
|
36
36
|
import { readNativeLinkedAppFontsWire } from '../app-fonts'
|
|
@@ -532,7 +532,7 @@ export async function createPrebuiltBundleBox(options: {
|
|
|
532
532
|
}) {
|
|
533
533
|
const platform =
|
|
534
534
|
options.device && isDeviceModel(options.device)
|
|
535
|
-
? getRuntimePlatform(options.device)
|
|
535
|
+
? getCliRuntime().settings_devices.getRuntimePlatform(options.device)
|
|
536
536
|
: 'ios'
|
|
537
537
|
const nativeRenderer = options.nativeProjectDir
|
|
538
538
|
? readNativeProjectRenderer(options.nativeProjectDir, platform)
|