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/detox/motion-change.cjs
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
minimumChangePercent: 0.1,
|
|
8
|
-
})
|
|
1
|
+
const {
|
|
2
|
+
MOTION_CHANGE_DEFINITION,
|
|
3
|
+
DISCRETE_FRAME_TIMING_TOLERANCE_MS,
|
|
4
|
+
parseDiscreteFrameCadence,
|
|
5
|
+
} = require('../../peach-conformance/src/cases/checkpoint-evidence.cjs')
|
|
6
|
+
const { frameTimingRoundingBound } = require('./frame-offset.mjs')
|
|
9
7
|
|
|
10
8
|
function measureMotionChange(input) {
|
|
11
9
|
if (!input || typeof input !== 'object' || Array.isArray(input)) {
|
|
@@ -112,8 +110,10 @@ const PAIRED_MOTION_MINIMUM_CHANGE_PERCENT = 0.3
|
|
|
112
110
|
const SETTLE_BLIP_MAXIMUM_CHANGE_PERCENT = 0.6
|
|
113
111
|
|
|
114
112
|
// a present or dismiss records one second (60 transitions); a gesture ladder
|
|
115
|
-
// records four.
|
|
116
|
-
//
|
|
113
|
+
// records four. repeated animation ladders can also exceed that length, but
|
|
114
|
+
// their declared cycles retain frame pairing. a gesture jumps at its touch
|
|
115
|
+
// cadence and each capture phases that cadence differently, so it is graded by
|
|
116
|
+
// total travel instead of
|
|
117
117
|
// by frame. travel is judged over the whole gesture and again over each quarter
|
|
118
118
|
// so one jump or a lagging release cannot pass on its total.
|
|
119
119
|
const GESTURE_MOTION_MIN_TRANSITIONS = 120
|
|
@@ -127,7 +127,7 @@ const GESTURE_QUARTER_TRAVEL_RATIO_RANGE = Object.freeze({ min: 0.5, max: 2 })
|
|
|
127
127
|
// against a moving oracle fails. a gesture needs sootsim's total travel within
|
|
128
128
|
// a range of the oracle's. both lanes hold the same unique stage-label
|
|
129
129
|
// transitions in the same order; every measurement must exist.
|
|
130
|
-
function evaluateMotionTransitions(transitions, oracleTarget) {
|
|
130
|
+
function evaluateMotionTransitions(transitions, oracleTarget, repeating) {
|
|
131
131
|
const key = (transition) => `${transition.fromLabel}\u0000${transition.toLabel}`
|
|
132
132
|
const oracle = transitions.filter((transition) => transition.target === oracleTarget)
|
|
133
133
|
const sootsim = transitions.filter((transition) => transition.target === 'sootsim')
|
|
@@ -149,7 +149,9 @@ function evaluateMotionTransitions(transitions, oracleTarget) {
|
|
|
149
149
|
)
|
|
150
150
|
.reduce((total, transition) => total + transition.changePercent, 0)
|
|
151
151
|
const movesNear = (list, index) =>
|
|
152
|
-
[index - 1, index, index + 1].some(
|
|
152
|
+
[index - 1, index, index + 1].some(
|
|
153
|
+
(neighbour) => list[neighbour]?.passedMinimum === true,
|
|
154
|
+
)
|
|
153
155
|
const pairedChange = (transition) =>
|
|
154
156
|
transition.changePercent >= PAIRED_MOTION_MINIMUM_CHANGE_PERCENT
|
|
155
157
|
const settleBlip = (list) => {
|
|
@@ -175,7 +177,7 @@ function evaluateMotionTransitions(transitions, oracleTarget) {
|
|
|
175
177
|
Math.floor((list.length * (index + 1)) / 4),
|
|
176
178
|
)
|
|
177
179
|
const follows =
|
|
178
|
-
oracle.length >= GESTURE_MOTION_MIN_TRANSITIONS
|
|
180
|
+
!repeating && oracle.length >= GESTURE_MOTION_MIN_TRANSITIONS
|
|
179
181
|
? within(travel(sootsim), travel(oracle), GESTURE_TRAVEL_RATIO_RANGE) &&
|
|
180
182
|
[0, 1, 2, 3].every((index) =>
|
|
181
183
|
within(
|
|
@@ -192,108 +194,17 @@ function evaluateMotionTransitions(transitions, oracleTarget) {
|
|
|
192
194
|
) &&
|
|
193
195
|
sootsim.every(
|
|
194
196
|
(transition, index) =>
|
|
195
|
-
!pairedChange(transition) ||
|
|
197
|
+
!pairedChange(transition) ||
|
|
198
|
+
index === sootsimBlip ||
|
|
199
|
+
movesNear(oracle, index),
|
|
196
200
|
)
|
|
197
201
|
return {
|
|
198
202
|
moving: moving.length,
|
|
199
|
-
passed:
|
|
200
|
-
measured &&
|
|
201
|
-
oracle.length > 0 &&
|
|
202
|
-
paired &&
|
|
203
|
-
moving.length > 0 &&
|
|
204
|
-
follows,
|
|
203
|
+
passed: measured && oracle.length > 0 && paired && moving.length > 0 && follows,
|
|
205
204
|
}
|
|
206
205
|
}
|
|
207
206
|
|
|
208
207
|
const DISPLAY_LINK_INTERVAL_MS = 1000 / 60
|
|
209
|
-
const DISCRETE_FRAME_TIMING_TOLERANCE_MS = 1000 / 60 + 1000 / 600
|
|
210
|
-
|
|
211
|
-
function parseDiscreteFrameCadence(value) {
|
|
212
|
-
const fail = (message) => {
|
|
213
|
-
throw new Error(`discrete frame cadence ${message}`)
|
|
214
|
-
}
|
|
215
|
-
if (!value || value.kind !== 'discrete-frame' || !value.asset || !value.probe)
|
|
216
|
-
fail('requires an explicit asset and probe')
|
|
217
|
-
for (const field of ['fixtureSha256', 'encodedSha256', 'calibrationSha256']) {
|
|
218
|
-
if (!/^[a-f0-9]{64}$/.test(value.asset[field])) fail(`has invalid ${field}`)
|
|
219
|
-
}
|
|
220
|
-
for (const field of ['fixturePath', 'calibrationPath']) {
|
|
221
|
-
if (
|
|
222
|
-
typeof value.asset[field] !== 'string' ||
|
|
223
|
-
!value.asset[field] ||
|
|
224
|
-
value.asset[field].startsWith('/') ||
|
|
225
|
-
value.asset[field].split('/').includes('..')
|
|
226
|
-
)
|
|
227
|
-
fail(`has invalid ${field}`)
|
|
228
|
-
}
|
|
229
|
-
if (
|
|
230
|
-
typeof value.probe.elementName !== 'string' ||
|
|
231
|
-
!value.probe.elementName ||
|
|
232
|
-
!Number.isFinite(value.probe.inset) ||
|
|
233
|
-
value.probe.inset < 0
|
|
234
|
-
)
|
|
235
|
-
fail('has invalid probe')
|
|
236
|
-
if (!Array.isArray(value.asset.frames) || value.asset.frames.length < 2)
|
|
237
|
-
fail('needs at least two frames')
|
|
238
|
-
for (const [index, frame] of value.asset.frames.entries()) {
|
|
239
|
-
if (
|
|
240
|
-
!frame ||
|
|
241
|
-
!Number.isFinite(frame.durationMs) ||
|
|
242
|
-
frame.durationMs <= 2 * DISCRETE_FRAME_TIMING_TOLERANCE_MS
|
|
243
|
-
)
|
|
244
|
-
fail(`frame ${index} duration is unresolvable`)
|
|
245
|
-
if (
|
|
246
|
-
!Array.isArray(frame.uniformRgba) ||
|
|
247
|
-
frame.uniformRgba.length !== 4 ||
|
|
248
|
-
frame.uniformRgba.some(
|
|
249
|
-
(channel) => !Number.isInteger(channel) || channel < 0 || channel > 255,
|
|
250
|
-
)
|
|
251
|
-
)
|
|
252
|
-
fail(`frame ${index} needs uniform rgba`)
|
|
253
|
-
const next = value.asset.frames[(index + 1) % value.asset.frames.length]
|
|
254
|
-
if (
|
|
255
|
-
next?.uniformRgba &&
|
|
256
|
-
frame.uniformRgba.every((channel, i) => channel === next.uniformRgba[i])
|
|
257
|
-
)
|
|
258
|
-
fail('adjacent phases must differ')
|
|
259
|
-
}
|
|
260
|
-
for (let i = 0; i < value.asset.frames.length; i++) {
|
|
261
|
-
for (let j = i + 1; j < value.asset.frames.length; j++) {
|
|
262
|
-
if (
|
|
263
|
-
!value.asset.frames[i].uniformRgba.some(
|
|
264
|
-
(channel, k) =>
|
|
265
|
-
Math.abs(channel - value.asset.frames[j].uniformRgba[k]) >
|
|
266
|
-
MOTION_CHANGE_DEFINITION.channelThreshold,
|
|
267
|
-
)
|
|
268
|
-
)
|
|
269
|
-
fail('phase colors cannot resolve the shared visible-change gate')
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
if (value.mode === 'playing') {
|
|
273
|
-
if (
|
|
274
|
-
!Number.isInteger(value.entryFrame) ||
|
|
275
|
-
value.entryFrame < 0 ||
|
|
276
|
-
value.entryFrame >= value.asset.frames.length ||
|
|
277
|
-
value.minimumTransitions !== 2
|
|
278
|
-
)
|
|
279
|
-
fail('playing mode needs an entry frame and two transitions')
|
|
280
|
-
} else if (value.mode === 'frozen') {
|
|
281
|
-
if (
|
|
282
|
-
!Array.isArray(value.waitIntervalsMs) ||
|
|
283
|
-
value.waitIntervalsMs.length < 2 ||
|
|
284
|
-
value.waitIntervalsMs.some((ms) => !Number.isFinite(ms) || ms <= 0)
|
|
285
|
-
)
|
|
286
|
-
fail('frozen mode needs two positive waits')
|
|
287
|
-
if (
|
|
288
|
-
!Array.isArray(value.captures) ||
|
|
289
|
-
value.captures.length !== value.waitIntervalsMs.length ||
|
|
290
|
-
value.captures.some((id) => typeof id !== 'string' || !id) ||
|
|
291
|
-
new Set(value.captures).size !== value.captures.length
|
|
292
|
-
)
|
|
293
|
-
fail('frozen mode needs distinct capture identities')
|
|
294
|
-
} else fail('has an unknown mode')
|
|
295
|
-
return value
|
|
296
|
-
}
|
|
297
208
|
|
|
298
209
|
function classifyDiscreteFrame(input) {
|
|
299
210
|
// self-contained so the exact classifier can be installed inside a page.
|
|
@@ -381,8 +292,10 @@ function evaluateDiscreteFrameTrace(input) {
|
|
|
381
292
|
// media lifetime. a virtual trace must include every tick through its end.
|
|
382
293
|
const last = observations.at(-1)
|
|
383
294
|
if (
|
|
384
|
-
observations[0].atMs
|
|
385
|
-
|
|
295
|
+
observations[0].atMs - coverageStartMs >
|
|
296
|
+
frameTimingRoundingBound(observations[0].atMs, coverageStartMs) ||
|
|
297
|
+
(clock === 'peach-virtual' &&
|
|
298
|
+
coverageEndMs - last.atMs > frameTimingRoundingBound(coverageEndMs, last.atMs)) ||
|
|
386
299
|
(clock === 'native-presentation' &&
|
|
387
300
|
(!Number.isFinite(input.mediaDurationMs) ||
|
|
388
301
|
input.mediaDurationMs < coverageEndMs ||
|
|
@@ -430,8 +343,17 @@ function evaluateDiscreteFrameTrace(input) {
|
|
|
430
343
|
if (!before || before.phase === null || before.phase === anchor.phase)
|
|
431
344
|
throw new Error('discrete trace entry did not change from the pre-trigger phase')
|
|
432
345
|
const endMs = anchor.atMs + windowMs
|
|
433
|
-
if (
|
|
434
|
-
|
|
346
|
+
if (
|
|
347
|
+
endMs - coverageEndMs >
|
|
348
|
+
frameTimingRoundingBound(anchor.atMs, windowMs, endMs, coverageEndMs)
|
|
349
|
+
)
|
|
350
|
+
throw new Error('discrete playing trace is truncated')
|
|
351
|
+
const rows = observations.filter(
|
|
352
|
+
(row) =>
|
|
353
|
+
row.atMs >= anchor.atMs &&
|
|
354
|
+
row.atMs - endMs <=
|
|
355
|
+
frameTimingRoundingBound(row.atMs, anchor.atMs, windowMs, endMs),
|
|
356
|
+
)
|
|
435
357
|
if (rows.some((row) => row.phase === null))
|
|
436
358
|
throw new Error('discrete playing trace has an unexpected frame')
|
|
437
359
|
const changes = rows.filter((row, i) => i === 0 || row.phase !== rows[i - 1].phase)
|
|
@@ -451,7 +373,10 @@ function evaluateDiscreteFrameTrace(input) {
|
|
|
451
373
|
cadence.asset.frames[previous.phase].durationMs +
|
|
452
374
|
(i === 1 && cadence.entryFrame === 0 ? DISPLAY_LINK_INTERVAL_MS : 0)
|
|
453
375
|
const observedMs = changes[i].atMs - previous.atMs
|
|
454
|
-
if (
|
|
376
|
+
if (
|
|
377
|
+
Math.abs(observedMs - expectedMs) - DISCRETE_FRAME_TIMING_TOLERANCE_MS >
|
|
378
|
+
frameTimingRoundingBound(changes[i].atMs, previous.atMs, observedMs, expectedMs)
|
|
379
|
+
)
|
|
455
380
|
throw new Error(
|
|
456
381
|
`discrete trace wrong cadence: phase ${previous.phase}, expected ${expectedMs}ms, observed ${observedMs}ms`,
|
|
457
382
|
)
|
|
@@ -527,9 +452,20 @@ function motionCyclePeriods(reference, sootsim) {
|
|
|
527
452
|
return reference.slice(1).map((onset, index) => {
|
|
528
453
|
const referenceMs = onset.atMs - reference[index].atMs
|
|
529
454
|
const sootsimMs = sootsim[index + 1].atMs - sootsim[index].atMs
|
|
455
|
+
const driftMs = Math.abs(referenceMs - sootsimMs)
|
|
456
|
+
const roundingMs = frameTimingRoundingBound(
|
|
457
|
+
onset.atMs,
|
|
458
|
+
reference[index].atMs,
|
|
459
|
+
sootsim[index + 1].atMs,
|
|
460
|
+
sootsim[index].atMs,
|
|
461
|
+
referenceMs,
|
|
462
|
+
sootsimMs,
|
|
463
|
+
driftMs,
|
|
464
|
+
MOTION_CYCLE_PERIOD_TOLERANCE_MS,
|
|
465
|
+
)
|
|
530
466
|
return {
|
|
531
467
|
id: onset.id,
|
|
532
|
-
passed:
|
|
468
|
+
passed: driftMs - MOTION_CYCLE_PERIOD_TOLERANCE_MS <= roundingMs,
|
|
533
469
|
referenceMs,
|
|
534
470
|
sootsimMs,
|
|
535
471
|
}
|
|
@@ -568,7 +504,8 @@ function evaluateMotionPublication(stages, transitions, oracleTarget, cycleOnset
|
|
|
568
504
|
last.passedThreshold &&
|
|
569
505
|
(!needsIntermediates || movingPassed >= PUBLICATION_MIN_INTERMEDIATE_PASSES) &&
|
|
570
506
|
cyclePeriods.every((period) => period.passed) &&
|
|
571
|
-
evaluateMotionTransitions(transitions, oracleTarget)
|
|
507
|
+
evaluateMotionTransitions(transitions, oracleTarget, cyclePeriods.length > 0)
|
|
508
|
+
.passed,
|
|
572
509
|
cyclePeriods,
|
|
573
510
|
intermediateCount: intermediates.length,
|
|
574
511
|
intermediatePassed,
|
|
@@ -577,14 +514,11 @@ function evaluateMotionPublication(stages, transitions, oracleTarget, cycleOnset
|
|
|
577
514
|
}
|
|
578
515
|
|
|
579
516
|
module.exports = {
|
|
580
|
-
MOTION_CHANGE_DEFINITION,
|
|
581
517
|
evaluateMotionPublication,
|
|
582
518
|
motionCycleOnsets,
|
|
583
519
|
measureMotionChange,
|
|
584
520
|
measureProofMotionChange,
|
|
585
521
|
evaluateMotionTransitions,
|
|
586
|
-
DISCRETE_FRAME_TIMING_TOLERANCE_MS,
|
|
587
|
-
parseDiscreteFrameCadence,
|
|
588
522
|
classifyDiscreteFrame,
|
|
589
523
|
evaluateDiscreteFrameTrace,
|
|
590
524
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type {
|
|
2
|
+
MotionChangeDefinition,
|
|
3
|
+
DiscreteFrameAsset,
|
|
4
|
+
DiscreteFrameCadence,
|
|
5
|
+
} from '../../peach-conformance/src/cases/checkpoint-evidence.cjs'
|
|
5
6
|
|
|
6
7
|
type MotionChangePixels = ArrayLike<number>
|
|
7
8
|
|
|
@@ -24,8 +25,6 @@ export type MotionChangeMeasurement = {
|
|
|
24
25
|
totalPixels: number
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
export const MOTION_CHANGE_DEFINITION: Readonly<MotionChangeDefinition>
|
|
28
|
-
|
|
29
28
|
export function measureMotionChange(
|
|
30
29
|
input: MotionChangeInput,
|
|
31
30
|
): MotionChangeMeasurement | null
|
|
@@ -50,6 +49,7 @@ export type MotionTransitionSample = {
|
|
|
50
49
|
export function evaluateMotionTransitions(
|
|
51
50
|
transitions: MotionTransitionSample[],
|
|
52
51
|
oracleTarget: string,
|
|
52
|
+
repeating: boolean,
|
|
53
53
|
): {
|
|
54
54
|
moving: number
|
|
55
55
|
passed: boolean
|
|
@@ -87,25 +87,6 @@ export function evaluateMotionPublication(
|
|
|
87
87
|
movingPassed: number
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
export type DiscreteFrameAsset = {
|
|
91
|
-
fixturePath: string
|
|
92
|
-
fixtureSha256: string
|
|
93
|
-
encodedSha256: string
|
|
94
|
-
calibrationPath: string
|
|
95
|
-
calibrationSha256: string
|
|
96
|
-
frames: readonly {
|
|
97
|
-
durationMs: number
|
|
98
|
-
uniformRgba: readonly [number, number, number, number]
|
|
99
|
-
}[]
|
|
100
|
-
}
|
|
101
|
-
export type DiscreteFrameCadence = {
|
|
102
|
-
kind: 'discrete-frame'
|
|
103
|
-
asset: DiscreteFrameAsset
|
|
104
|
-
probe: { elementName: string; inset: number }
|
|
105
|
-
} & (
|
|
106
|
-
| { mode: 'playing'; entryFrame: number; minimumTransitions: 2 }
|
|
107
|
-
| { mode: 'frozen'; waitIntervalsMs: readonly number[]; captures: readonly string[] }
|
|
108
|
-
)
|
|
109
90
|
export type DiscreteFrameObservation = {
|
|
110
91
|
frameIndex: number
|
|
111
92
|
atMs: number
|
|
@@ -149,8 +130,6 @@ export type DiscreteFrameDecision = {
|
|
|
149
130
|
holds: { phase: number; expectedMs: number; observedMs: number }[]
|
|
150
131
|
waitIntervals?: { startMs: number; endMs: number }[]
|
|
151
132
|
}
|
|
152
|
-
export const DISCRETE_FRAME_TIMING_TOLERANCE_MS: number
|
|
153
|
-
export function parseDiscreteFrameCadence(value: unknown): DiscreteFrameCadence
|
|
154
133
|
export function classifyDiscreteFrame(input: {
|
|
155
134
|
pixels?: ArrayLike<number>
|
|
156
135
|
frames?: DiscreteFrameAsset['frames']
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// animation start witnesses are diagnostics; they never replace pixel or cycle grading.
|
|
2
|
+
function animationLegStarts(value) {
|
|
3
|
+
if (!Array.isArray(value) || value.length === 0)
|
|
4
|
+
throw new Error('animation leg starts must be a non-empty array')
|
|
5
|
+
return value.map((row) => {
|
|
6
|
+
if (
|
|
7
|
+
!row ||
|
|
8
|
+
typeof row.track !== 'string' ||
|
|
9
|
+
!row.track ||
|
|
10
|
+
typeof row.leg !== 'string' ||
|
|
11
|
+
!row.leg ||
|
|
12
|
+
!Number.isFinite(row.atMs) ||
|
|
13
|
+
!Number.isFinite(row.startValue)
|
|
14
|
+
)
|
|
15
|
+
throw new Error('invalid animation leg start witness')
|
|
16
|
+
return { track: row.track, leg: row.leg, atMs: row.atMs, startValue: row.startValue }
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
module.exports = { animationLegStarts }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -39,7 +39,7 @@ __export(backend_origin_exports, {
|
|
|
39
39
|
resolveContrastBackendOrigin: () => resolveContrastBackendOrigin
|
|
40
40
|
});
|
|
41
41
|
module.exports = __toCommonJS(backend_origin_exports);
|
|
42
|
-
var DEFAULT_CONTRAST_BACKEND_ORIGIN = "https://
|
|
42
|
+
var DEFAULT_CONTRAST_BACKEND_ORIGIN = "https://peachsim.com";
|
|
43
43
|
var LOOPBACK_PROBE_HOSTNAMES = ["127.0.0.1", "::1"];
|
|
44
44
|
function normalizeHostname(hostname) {
|
|
45
45
|
return hostname.replace(/^\[|\]$/g, "").toLowerCase();
|
|
@@ -100,7 +100,7 @@ function isBrowserAssetProxyUrl(value) {
|
|
|
100
100
|
var PEACHSIM_NATIVE_HOST = "native.peachsim.com";
|
|
101
101
|
function isContrastBackendHost(hostname) {
|
|
102
102
|
const normalized = normalizeHostname(hostname);
|
|
103
|
-
return isLoopbackHost(normalized) || normalized === "contrast.dev" || normalized.endsWith(".contrast.dev") || normalized === PEACHSIM_NATIVE_HOST;
|
|
103
|
+
return isLoopbackHost(normalized) || normalized === "contrast.dev" || normalized.endsWith(".contrast.dev") || normalized === "peachsim.com" || normalized === "www.peachsim.com" || normalized === PEACHSIM_NATIVE_HOST;
|
|
104
104
|
}
|
|
105
105
|
function isContrastBackendOrigin(origin) {
|
|
106
106
|
try {
|
package/dist-lib/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -25,6 +25,8 @@ __export(bridge_contract_input_exports, {
|
|
|
25
25
|
BridgeInputError: () => BridgeInputError,
|
|
26
26
|
SEMANTIC_WAIT_MAX_TIMEOUT_MS: () => SEMANTIC_WAIT_MAX_TIMEOUT_MS,
|
|
27
27
|
findInvalidPointerSequence: () => findInvalidPointerSequence,
|
|
28
|
+
parseDiagnosticsOptions: () => parseDiagnosticsOptions,
|
|
29
|
+
parseDiagnosticsResult: () => parseDiagnosticsResult,
|
|
28
30
|
parsePerformStep: () => parsePerformStep,
|
|
29
31
|
parseResetOptions: () => parseResetOptions,
|
|
30
32
|
parseScreenshotOptions: () => parseScreenshotOptions,
|
|
@@ -314,6 +316,66 @@ function findInvalidPointerSequence(steps) {
|
|
|
314
316
|
error: `perform.steps[${next.value[1]}] (touchDown) has no matching touchUp or touchCancel for pointer ${next.value[0]}`
|
|
315
317
|
};
|
|
316
318
|
}
|
|
319
|
+
function diagnosticsChannels(value, path) {
|
|
320
|
+
if (!Array.isArray(value)) validationFailure(path, "must be a list of channel names");
|
|
321
|
+
return value.map((channel) => stringValue(channel, path));
|
|
322
|
+
}
|
|
323
|
+
function parseDiagnosticsResult(value) {
|
|
324
|
+
if (!isRecord(value) || !Array.isArray(value.channels) || !value.channels.every((channel) => typeof channel === "string") || !Array.isArray(value.availableChannels) || !value.availableChannels.every((channel) => typeof channel === "string") || !Array.isArray(value.events)) {
|
|
325
|
+
validationFailure(
|
|
326
|
+
"remote diagnostics",
|
|
327
|
+
"returned an incompatible native host response"
|
|
328
|
+
);
|
|
329
|
+
}
|
|
330
|
+
return {
|
|
331
|
+
channels: value.channels,
|
|
332
|
+
availableChannels: value.availableChannels,
|
|
333
|
+
runtime: value.runtime,
|
|
334
|
+
found: value.found,
|
|
335
|
+
events: value.events
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
function parseDiagnosticsOptions(value) {
|
|
339
|
+
const options = recordValue(value, "diagnostics");
|
|
340
|
+
const channels = options.channels === void 0 ? void 0 : diagnosticsChannels(options.channels, "diagnostics.channels");
|
|
341
|
+
let channelControl;
|
|
342
|
+
if (options.channelControl !== void 0) {
|
|
343
|
+
if (channels !== void 0) {
|
|
344
|
+
validationFailure("diagnostics.channelControl", "cannot be combined with channels");
|
|
345
|
+
}
|
|
346
|
+
const control = recordValue(options.channelControl, "diagnostics.channelControl");
|
|
347
|
+
const action = control.action;
|
|
348
|
+
if (action !== "enable" && action !== "disable" && action !== "toggle") {
|
|
349
|
+
validationFailure(
|
|
350
|
+
"diagnostics.channelControl.action",
|
|
351
|
+
"must be enable, disable, or toggle"
|
|
352
|
+
);
|
|
353
|
+
}
|
|
354
|
+
const selected = diagnosticsChannels(
|
|
355
|
+
control.channels,
|
|
356
|
+
"diagnostics.channelControl.channels"
|
|
357
|
+
);
|
|
358
|
+
if (action === "toggle" && (selected.length !== 1 || selected[0] === "all")) {
|
|
359
|
+
validationFailure("diagnostics.channelControl", "toggle requires one channel");
|
|
360
|
+
}
|
|
361
|
+
channelControl = { action, channels: selected };
|
|
362
|
+
}
|
|
363
|
+
const find = options.find;
|
|
364
|
+
if (find !== void 0 && find !== "sheets" && find !== "portals" && find !== "boundaries") {
|
|
365
|
+
validationFailure("diagnostics.find", "must be sheets, portals, or boundaries");
|
|
366
|
+
}
|
|
367
|
+
return {
|
|
368
|
+
...channels === void 0 ? {} : { channels },
|
|
369
|
+
...channelControl === void 0 ? {} : { channelControl },
|
|
370
|
+
...find === void 0 ? {} : { find },
|
|
371
|
+
...options.recentChannel === void 0 ? {} : {
|
|
372
|
+
recentChannel: stringValue(options.recentChannel, "diagnostics.recentChannel")
|
|
373
|
+
},
|
|
374
|
+
...options.recentLimit === void 0 ? {} : {
|
|
375
|
+
recentLimit: numberValue(options.recentLimit, "diagnostics.recentLimit")
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
}
|
|
317
379
|
function parseStateOptions(value) {
|
|
318
380
|
const input = recordValue(value, "state");
|
|
319
381
|
const route = optionalBoolean(input, "route", "state");
|
|
@@ -487,6 +549,8 @@ function parseTapTarget(value) {
|
|
|
487
549
|
BridgeInputError,
|
|
488
550
|
SEMANTIC_WAIT_MAX_TIMEOUT_MS,
|
|
489
551
|
findInvalidPointerSequence,
|
|
552
|
+
parseDiagnosticsOptions,
|
|
553
|
+
parseDiagnosticsResult,
|
|
490
554
|
parsePerformStep,
|
|
491
555
|
parseResetOptions,
|
|
492
556
|
parseScreenshotOptions,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/bridge-contract.ts
|
|
4
4
|
var SIM_LONG_PRESS_MAX_MS = 5e3;
|
|
@@ -278,6 +278,66 @@ function findInvalidPointerSequence(steps) {
|
|
|
278
278
|
error: `perform.steps[${next.value[1]}] (touchDown) has no matching touchUp or touchCancel for pointer ${next.value[0]}`
|
|
279
279
|
};
|
|
280
280
|
}
|
|
281
|
+
function diagnosticsChannels(value, path) {
|
|
282
|
+
if (!Array.isArray(value)) validationFailure(path, "must be a list of channel names");
|
|
283
|
+
return value.map((channel) => stringValue(channel, path));
|
|
284
|
+
}
|
|
285
|
+
function parseDiagnosticsResult(value) {
|
|
286
|
+
if (!isRecord(value) || !Array.isArray(value.channels) || !value.channels.every((channel) => typeof channel === "string") || !Array.isArray(value.availableChannels) || !value.availableChannels.every((channel) => typeof channel === "string") || !Array.isArray(value.events)) {
|
|
287
|
+
validationFailure(
|
|
288
|
+
"remote diagnostics",
|
|
289
|
+
"returned an incompatible native host response"
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
return {
|
|
293
|
+
channels: value.channels,
|
|
294
|
+
availableChannels: value.availableChannels,
|
|
295
|
+
runtime: value.runtime,
|
|
296
|
+
found: value.found,
|
|
297
|
+
events: value.events
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
function parseDiagnosticsOptions(value) {
|
|
301
|
+
const options = recordValue(value, "diagnostics");
|
|
302
|
+
const channels = options.channels === void 0 ? void 0 : diagnosticsChannels(options.channels, "diagnostics.channels");
|
|
303
|
+
let channelControl;
|
|
304
|
+
if (options.channelControl !== void 0) {
|
|
305
|
+
if (channels !== void 0) {
|
|
306
|
+
validationFailure("diagnostics.channelControl", "cannot be combined with channels");
|
|
307
|
+
}
|
|
308
|
+
const control = recordValue(options.channelControl, "diagnostics.channelControl");
|
|
309
|
+
const action = control.action;
|
|
310
|
+
if (action !== "enable" && action !== "disable" && action !== "toggle") {
|
|
311
|
+
validationFailure(
|
|
312
|
+
"diagnostics.channelControl.action",
|
|
313
|
+
"must be enable, disable, or toggle"
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
const selected = diagnosticsChannels(
|
|
317
|
+
control.channels,
|
|
318
|
+
"diagnostics.channelControl.channels"
|
|
319
|
+
);
|
|
320
|
+
if (action === "toggle" && (selected.length !== 1 || selected[0] === "all")) {
|
|
321
|
+
validationFailure("diagnostics.channelControl", "toggle requires one channel");
|
|
322
|
+
}
|
|
323
|
+
channelControl = { action, channels: selected };
|
|
324
|
+
}
|
|
325
|
+
const find = options.find;
|
|
326
|
+
if (find !== void 0 && find !== "sheets" && find !== "portals" && find !== "boundaries") {
|
|
327
|
+
validationFailure("diagnostics.find", "must be sheets, portals, or boundaries");
|
|
328
|
+
}
|
|
329
|
+
return {
|
|
330
|
+
...channels === void 0 ? {} : { channels },
|
|
331
|
+
...channelControl === void 0 ? {} : { channelControl },
|
|
332
|
+
...find === void 0 ? {} : { find },
|
|
333
|
+
...options.recentChannel === void 0 ? {} : {
|
|
334
|
+
recentChannel: stringValue(options.recentChannel, "diagnostics.recentChannel")
|
|
335
|
+
},
|
|
336
|
+
...options.recentLimit === void 0 ? {} : {
|
|
337
|
+
recentLimit: numberValue(options.recentLimit, "diagnostics.recentLimit")
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
}
|
|
281
341
|
function parseStateOptions(value) {
|
|
282
342
|
const input = recordValue(value, "state");
|
|
283
343
|
const route = optionalBoolean(input, "route", "state");
|
|
@@ -450,6 +510,8 @@ export {
|
|
|
450
510
|
BridgeInputError,
|
|
451
511
|
SEMANTIC_WAIT_MAX_TIMEOUT_MS,
|
|
452
512
|
findInvalidPointerSequence,
|
|
513
|
+
parseDiagnosticsOptions,
|
|
514
|
+
parseDiagnosticsResult,
|
|
453
515
|
parsePerformStep,
|
|
454
516
|
parseResetOptions,
|
|
455
517
|
parseScreenshotOptions,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -29,6 +29,8 @@ __export(bridge_contract_exports, {
|
|
|
29
29
|
SEMANTIC_READY_POLL_MS: () => SEMANTIC_READY_POLL_MS,
|
|
30
30
|
SIM_LONG_PRESS_DEFAULT_MS: () => SIM_LONG_PRESS_DEFAULT_MS,
|
|
31
31
|
SIM_LONG_PRESS_MAX_MS: () => SIM_LONG_PRESS_MAX_MS,
|
|
32
|
+
WRITE_COMMAND_TYPES: () => WRITE_COMMAND_TYPES,
|
|
33
|
+
commandWritesSim: () => commandWritesSim,
|
|
32
34
|
performStepRefusal: () => performStepRefusal,
|
|
33
35
|
readyProbeContentBasis: () => readyProbeContentBasis,
|
|
34
36
|
readyProbeHasContent: () => readyProbeHasContent,
|
|
@@ -122,6 +124,20 @@ function readyProbeHasContent(probe) {
|
|
|
122
124
|
function readyProbeIsReady(probe) {
|
|
123
125
|
return readyProbeContentBasis(probe) !== "" && probe.externalReady !== false && !probe.externalError && !probe.loadingText;
|
|
124
126
|
}
|
|
127
|
+
var WRITE_COMMAND_TYPES = /* @__PURE__ */ new Set([
|
|
128
|
+
"tap",
|
|
129
|
+
"keyboard",
|
|
130
|
+
"longPress",
|
|
131
|
+
"perform",
|
|
132
|
+
"reset",
|
|
133
|
+
"camera"
|
|
134
|
+
]);
|
|
135
|
+
function commandWritesSim(msg) {
|
|
136
|
+
if (typeof msg.type !== "string") return false;
|
|
137
|
+
if (msg.acquireLock === true) return true;
|
|
138
|
+
if (msg.readOnly === true) return false;
|
|
139
|
+
return WRITE_COMMAND_TYPES.has(msg.type);
|
|
140
|
+
}
|
|
125
141
|
// Annotate the CommonJS export names for ESM import in node:
|
|
126
142
|
0 && (module.exports = {
|
|
127
143
|
HEADLESS_TENANT_FETCH_HUNG_MARKER,
|
|
@@ -131,6 +147,8 @@ function readyProbeIsReady(probe) {
|
|
|
131
147
|
SEMANTIC_READY_POLL_MS,
|
|
132
148
|
SIM_LONG_PRESS_DEFAULT_MS,
|
|
133
149
|
SIM_LONG_PRESS_MAX_MS,
|
|
150
|
+
WRITE_COMMAND_TYPES,
|
|
151
|
+
commandWritesSim,
|
|
134
152
|
performStepRefusal,
|
|
135
153
|
readyProbeContentBasis,
|
|
136
154
|
readyProbeHasContent,
|