peachsim 0.1.1644 → 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-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 +93 -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 +1 -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 +11 -3
- 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 +46 -114
- package/detox/motion-change.d.cts +5 -27
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +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 +38091 -14846
- 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 +1244 -4509
- 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 +35049 -13125
- 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 +45112 -63143
- 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 +1909 -2029
- 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 +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +380 -522
- package/dist-lib/native-app-identity-project.cjs +39 -252
- package/dist-lib/native-app-identity-project.mjs +1174 -11
- 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 +83 -16
- package/dist-lib/sdk.mjs +81 -15
- package/dist-lib/skills.cjs +50546 -75098
- package/dist-lib/swift-compile.cjs +25897 -1070
- package/dist-lib/swift-compile.mjs +25866 -1033
- 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 +34273 -12349
- 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/assetCatalogContract.ts +21 -0
- 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 +3 -26
- 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/installed-package-versions.ts +142 -38
- package/src/kotlin-host.ts +1 -1
- package/src/metro-plugin.ts +4 -4
- package/src/metro-project-root.ts +68 -0
- 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 +2 -0
- 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 +908 -40
- package/src/swift-compiler-digest.ts +13 -1
- package/src/swift-distribution.lock.json +49 -22
- package/src/swift-host.ts +167 -52
- package/src/swift-objc-compile.ts +54 -24
- 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-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 +36 -7
- 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/cli/send-to-box.ts
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
|
+
import { getCliRuntime } from '../src/cli-runtime.ts'
|
|
1
2
|
// "send to box": the running local app becomes a nano cloud simulator.
|
|
2
3
|
//
|
|
3
4
|
// one function serves both callers. the rail button in the shell reaches it
|
|
4
5
|
// through the local daemon's `/__send-to-box` route, and `peach box send` calls
|
|
5
6
|
// it directly; both hand it a way to run a bridge command against the sim that
|
|
6
7
|
// is running the app, and both get the same simulator id and URL back.
|
|
7
|
-
|
|
8
|
-
import { isStorageSnapshot } from '../../peach-engine/src/preview/storage-snapshot-contract.ts'
|
|
9
|
-
import {
|
|
10
|
-
DEFAULT_DEVICE_BY_PLATFORM,
|
|
11
|
-
getRuntimePlatform,
|
|
12
|
-
listDeviceModels,
|
|
13
|
-
} from '../../peach-engine/src/settings/devices.ts'
|
|
8
|
+
import { DEFAULT_DEVICE_BY_PLATFORM, listDeviceModels } from '../src/device-catalog.ts'
|
|
14
9
|
import { isRecord } from '../src/is-record'
|
|
15
10
|
import { toPeachProductionBundleUrl } from '../src/metro-production-bundle.ts'
|
|
11
|
+
import { isStorageSnapshot } from '../src/storageSnapshotContract.ts'
|
|
12
|
+
import { StorageSnapshot } from '../src/storageSnapshotContract.ts'
|
|
16
13
|
import { createCloudBox } from './cloud-client.ts'
|
|
17
|
-
import type { StorageSnapshot } from '../../peach-engine/src/preview/storage-snapshot-contract.ts'
|
|
18
|
-
import type { DeviceModel } from '../../peach-engine/src/settings/devices.ts'
|
|
19
14
|
import type { BridgeCommandType } from '../src/bridge-contract.ts'
|
|
15
|
+
import type { DeviceModel } from '../src/device-catalog.ts'
|
|
20
16
|
|
|
21
17
|
export interface SendToBoxOptions {
|
|
22
18
|
/** runs one bridge command against the sim running the app. */
|
|
@@ -49,7 +45,8 @@ export interface SendToBoxResult {
|
|
|
49
45
|
// iOS only, so an Android sim sends to the default iPhone rather than refusing.
|
|
50
46
|
function cloudDevice(capturedModel: unknown): DeviceModel {
|
|
51
47
|
const captured = listDeviceModels().find((model) => model === capturedModel)
|
|
52
|
-
return captured &&
|
|
48
|
+
return captured &&
|
|
49
|
+
getCliRuntime().settings_devices.getRuntimePlatform(captured) === 'ios'
|
|
53
50
|
? captured
|
|
54
51
|
: DEFAULT_DEVICE_BY_PLATFORM.ios
|
|
55
52
|
}
|
package/cli/telemetry.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto'
|
|
2
2
|
import { homedir } from 'node:os'
|
|
3
3
|
import { eventUuid } from '@peach/globals/event-identity'
|
|
4
|
-
import { crashFingerprint } from 'peach-engine/crash-fingerprint'
|
|
5
4
|
import { getCliVersion } from '../src/cli-version'
|
|
5
|
+
import { crashFingerprint } from '../src/crash-fingerprint.ts'
|
|
6
6
|
import {
|
|
7
7
|
readActiveRuntime,
|
|
8
8
|
readOrCreateAnonymousId,
|
package/cli/ws-bridge.ts
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
DEFAULT_SOOTSIM_BRIDGE_PORT,
|
|
15
15
|
resolveSootsimBridgePort,
|
|
16
16
|
} from '../src/bridge-constants'
|
|
17
|
+
import { commandWritesSim, type WsBridgeCommand } from '../src/bridge-contract'
|
|
17
18
|
import { DEFAULT_SOOTSIM_SHELL_URL } from '../src/cli-constants'
|
|
18
19
|
import {
|
|
19
20
|
isDaemonLockfileFresh,
|
|
@@ -30,10 +31,10 @@ import {
|
|
|
30
31
|
getStableOwnerPid,
|
|
31
32
|
readCurrentSim,
|
|
32
33
|
readCurrentSimId,
|
|
34
|
+
assertNoPendingOpen,
|
|
33
35
|
saveCurrentSimId,
|
|
34
36
|
} from './current-sim'
|
|
35
37
|
import { setPauseAwareTimeout } from './pause-aware-timeout'
|
|
36
|
-
import type { WsBridgeCommand } from '../src/bridge-contract'
|
|
37
38
|
|
|
38
39
|
// --- bridge world resolution ---------------------------------------------
|
|
39
40
|
//
|
|
@@ -805,6 +806,12 @@ export function createBridge(wsPort: number, opts: WsBridgeOptions = {}): WsBrid
|
|
|
805
806
|
opts.simIdSource === 'flag' ? opts.simId : (readCurrentSimId() ?? opts.simId)
|
|
806
807
|
const targetedSimId =
|
|
807
808
|
typeof cmd.simId === 'string' && cmd.simId ? cmd.simId : sentSimId
|
|
809
|
+
// an open that has not pinned a sim means the caller's intended target
|
|
810
|
+
// is not connected. a mutating command with no explicit sim must not
|
|
811
|
+
// fall to the sole other tab; reads still may.
|
|
812
|
+
if (!sentSimId && !cmd.simId && (commandWritesSim(cmd) || cmd.type === 'close')) {
|
|
813
|
+
assertNoPendingOpen()
|
|
814
|
+
}
|
|
808
815
|
try {
|
|
809
816
|
// a command can itself reload the page and retire its sim id. capture
|
|
810
817
|
// the browser-host lineage before dispatch, while the target still
|
package/detox/attempt-events.cjs
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
const {
|
|
2
|
+
parseDiscreteFrameCadence,
|
|
3
|
+
} = require('../../peach-conformance/src/cases/checkpoint-evidence.cjs')
|
|
1
4
|
const fs = require('node:fs')
|
|
2
5
|
const path = require('node:path')
|
|
3
6
|
|
|
@@ -25,7 +28,6 @@ module.exports = { attemptEventsPath, writeAttemptEvent }
|
|
|
25
28
|
const crypto = require('node:crypto')
|
|
26
29
|
const { spawnSync } = require('node:child_process')
|
|
27
30
|
const {
|
|
28
|
-
parseDiscreteFrameCadence,
|
|
29
31
|
classifyDiscreteFrame,
|
|
30
32
|
evaluateDiscreteFrameTrace,
|
|
31
33
|
} = require('./motion-change.cjs')
|
package/detox/expectations.ts
CHANGED
|
@@ -6,7 +6,11 @@ import { dragScrollNode } from './gestures'
|
|
|
6
6
|
import { getSootsimNavigationDiagnostics } from './navigation-lifecycle'
|
|
7
7
|
import type { SootSimElement } from './element-types'
|
|
8
8
|
import type { Matcher } from './matchers'
|
|
9
|
-
import type {
|
|
9
|
+
import type {
|
|
10
|
+
PeachAccessibilityNode,
|
|
11
|
+
SootSimFocusedNodeInfo,
|
|
12
|
+
SootSimNodeInfo,
|
|
13
|
+
} from '@peach/globals'
|
|
10
14
|
import type { Page } from 'playwright-core'
|
|
11
15
|
|
|
12
16
|
type FindFn = (matcher: Matcher) => Promise<any>
|
|
@@ -121,12 +125,8 @@ class SootSimExpectation {
|
|
|
121
125
|
}
|
|
122
126
|
|
|
123
127
|
get not(): SootSimExpectation {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
this.findNode,
|
|
127
|
-
this.getPage,
|
|
128
|
-
!this.negated,
|
|
129
|
-
)
|
|
128
|
+
this.negated = true
|
|
129
|
+
return this
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
async toExist(): Promise<void> {
|
|
@@ -141,15 +141,18 @@ class SootSimExpectation {
|
|
|
141
141
|
} else {
|
|
142
142
|
if (!exists) {
|
|
143
143
|
throw new Error(
|
|
144
|
-
`expected element to exist but it was not found: ${JSON.stringify(this.matcher)}`,
|
|
144
|
+
`expected element to exist but it was not found: ${JSON.stringify(this.matcher)}\nrecent page diagnostics:\n${JSON.stringify(getSootsimNavigationDiagnostics(this.getPage()))}`,
|
|
145
145
|
)
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
async toBeVisible(): Promise<void> {
|
|
150
|
+
async toBeVisible(percent = 75): Promise<void> {
|
|
151
151
|
const node = await this.findNode(this.matcher)
|
|
152
|
-
|
|
152
|
+
if (!Number.isSafeInteger(percent) || percent < 1 || percent > 100) {
|
|
153
|
+
throw new Error('`percent` must be an integer between 1 and 100')
|
|
154
|
+
}
|
|
155
|
+
const visible = visibleFraction(node) >= percent / 100
|
|
153
156
|
if (this.negated) {
|
|
154
157
|
if (visible) {
|
|
155
158
|
throw new Error(
|
|
@@ -166,13 +169,31 @@ class SootSimExpectation {
|
|
|
166
169
|
}
|
|
167
170
|
|
|
168
171
|
async toBeNotVisible(): Promise<void> {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
172
|
+
await this.not.toBeVisible()
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
async toBeNotFocused(): Promise<void> {
|
|
176
|
+
await this.not.toBeFocused()
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
async toNotExist(): Promise<void> {
|
|
180
|
+
await this.not.toExist()
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
async toNotHaveText(text: string): Promise<void> {
|
|
184
|
+
await this.not.toHaveText(text)
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
async toNotHaveLabel(label: string): Promise<void> {
|
|
188
|
+
await this.not.toHaveLabel(label)
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
async toNotHaveId(id: string): Promise<void> {
|
|
192
|
+
await this.not.toHaveId(id)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
async toNotHaveValue(value: string): Promise<void> {
|
|
196
|
+
await this.not.toHaveValue(value)
|
|
176
197
|
}
|
|
177
198
|
|
|
178
199
|
async toHaveText(expectedText: string): Promise<void> {
|
|
@@ -222,7 +243,7 @@ class SootSimExpectation {
|
|
|
222
243
|
)
|
|
223
244
|
}
|
|
224
245
|
// check explicit accessibilityLabel, then derived text content
|
|
225
|
-
const actual = node.accessibilityLabel
|
|
246
|
+
const actual = node.accessibilityLabel ?? node.text ?? ''
|
|
226
247
|
const matches = actual === expectedLabel
|
|
227
248
|
if (this.negated) {
|
|
228
249
|
if (matches)
|
|
@@ -296,16 +317,25 @@ class SootSimExpectation {
|
|
|
296
317
|
`element not found for toHaveValue: ${JSON.stringify(this.matcher)}`,
|
|
297
318
|
)
|
|
298
319
|
}
|
|
299
|
-
|
|
300
|
-
|
|
320
|
+
const actual = await this.getPage().evaluate(async (nodeId) => {
|
|
321
|
+
const findValue = (nodes: PeachAccessibilityNode[]): string | null => {
|
|
322
|
+
for (const candidate of nodes) {
|
|
323
|
+
if (candidate.nodeId === nodeId) return candidate.value
|
|
324
|
+
const value = findValue(candidate.children)
|
|
325
|
+
if (value !== null) return value
|
|
326
|
+
}
|
|
327
|
+
return null
|
|
328
|
+
}
|
|
329
|
+
return findValue(await window.__sootsimTest!.captureAccessibilityTree())
|
|
330
|
+
}, node.nodeId)
|
|
301
331
|
if (this.negated) {
|
|
302
|
-
if (actual
|
|
332
|
+
if (actual === value) {
|
|
303
333
|
throw new Error(
|
|
304
334
|
`expected element NOT to have value "${value}" but got "${actual}"`,
|
|
305
335
|
)
|
|
306
336
|
}
|
|
307
337
|
} else {
|
|
308
|
-
if (
|
|
338
|
+
if (actual !== value) {
|
|
309
339
|
throw new Error(`expected element to have value "${value}" but got "${actual}"`)
|
|
310
340
|
}
|
|
311
341
|
}
|
|
@@ -332,104 +362,79 @@ export function createWaitFor(findNode: FindFn, getPage: GetPageFn) {
|
|
|
332
362
|
}
|
|
333
363
|
|
|
334
364
|
class SootSimWaitForChain {
|
|
335
|
-
private
|
|
336
|
-
private findNode: FindFn
|
|
337
|
-
private getPage: GetPageFn
|
|
338
|
-
private assertionFn: (() => Promise<void>) | null = null
|
|
339
|
-
private _negated = false
|
|
365
|
+
private expectation: SootSimExpectation
|
|
340
366
|
|
|
341
|
-
constructor(
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
367
|
+
constructor(
|
|
368
|
+
matcher: Matcher,
|
|
369
|
+
private findNode: FindFn,
|
|
370
|
+
private getPage: GetPageFn,
|
|
371
|
+
) {
|
|
372
|
+
this.expectation = new SootSimExpectation(matcher, findNode, getPage, false)
|
|
345
373
|
}
|
|
346
374
|
|
|
347
375
|
get not(): SootSimWaitForChain {
|
|
348
|
-
this.
|
|
376
|
+
this.expectation = this.expectation.not
|
|
349
377
|
return this
|
|
350
378
|
}
|
|
351
379
|
|
|
352
380
|
toExist(): SootSimWaitForAction {
|
|
353
|
-
this.
|
|
354
|
-
const node = await this.findNode(this.matcher)
|
|
355
|
-
const exists = node !== null && node !== undefined
|
|
356
|
-
if (this._negated ? exists : !exists) {
|
|
357
|
-
// a guest that never mounts leaves its console and page errors only here
|
|
358
|
-
throw new Error(
|
|
359
|
-
`waitFor toExist failed: ${JSON.stringify(this.matcher)}\nrecent page diagnostics:\n${JSON.stringify(getSootsimNavigationDiagnostics(this.getPage()))}`,
|
|
360
|
-
)
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
return new SootSimWaitForAction(this.assertionFn, this.findNode, this.getPage)
|
|
381
|
+
return this.assertion(() => this.expectation.toExist())
|
|
364
382
|
}
|
|
365
383
|
|
|
366
|
-
|
|
367
|
-
this.
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
`waitFor toBeVisible failed (${describeNodeVisibility(node)}): ${JSON.stringify(this.matcher)}`,
|
|
373
|
-
)
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
return new SootSimWaitForAction(this.assertionFn, this.findNode, this.getPage)
|
|
384
|
+
toNotExist(): SootSimWaitForAction {
|
|
385
|
+
return this.not.toExist()
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
toBeVisible(percent?: number): SootSimWaitForAction {
|
|
389
|
+
return this.assertion(() => this.expectation.toBeVisible(percent))
|
|
377
390
|
}
|
|
378
391
|
|
|
379
392
|
toBeNotVisible(): SootSimWaitForAction {
|
|
380
|
-
this.
|
|
381
|
-
const node = await this.findNode(this.matcher)
|
|
382
|
-
const visible = isNodeVisible(node)
|
|
383
|
-
if (visible) {
|
|
384
|
-
throw new Error(`waitFor toBeNotVisible failed: ${JSON.stringify(this.matcher)}`)
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
return new SootSimWaitForAction(this.assertionFn, this.findNode, this.getPage)
|
|
393
|
+
return this.not.toBeVisible()
|
|
388
394
|
}
|
|
389
395
|
|
|
390
|
-
toHaveText(
|
|
391
|
-
this.
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
396
|
+
toHaveText(text: string): SootSimWaitForAction {
|
|
397
|
+
return this.assertion(() => this.expectation.toHaveText(text))
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
toNotHaveText(text: string): SootSimWaitForAction {
|
|
401
|
+
return this.not.toHaveText(text)
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
toHaveLabel(label: string): SootSimWaitForAction {
|
|
405
|
+
return this.assertion(() => this.expectation.toHaveLabel(label))
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
toNotHaveLabel(label: string): SootSimWaitForAction {
|
|
409
|
+
return this.not.toHaveLabel(label)
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
toHaveId(id: string): SootSimWaitForAction {
|
|
413
|
+
return this.assertion(() => this.expectation.toHaveId(id))
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
toNotHaveId(id: string): SootSimWaitForAction {
|
|
417
|
+
return this.not.toHaveId(id)
|
|
406
418
|
}
|
|
407
419
|
|
|
408
420
|
toHaveValue(value: string): SootSimWaitForAction {
|
|
409
|
-
this.
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
throw new Error(`waitFor toHaveValue: expected "${value}" in "${actual}"`)
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
return new SootSimWaitForAction(this.assertionFn, this.findNode, this.getPage)
|
|
421
|
+
return this.assertion(() => this.expectation.toHaveValue(value))
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
toNotHaveValue(value: string): SootSimWaitForAction {
|
|
425
|
+
return this.not.toHaveValue(value)
|
|
418
426
|
}
|
|
419
427
|
|
|
420
428
|
toBeFocused(): SootSimWaitForAction {
|
|
421
|
-
this.
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
return new SootSimWaitForAction(this.assertionFn, this.findNode, this.getPage)
|
|
429
|
+
return this.assertion(() => this.expectation.toBeFocused())
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
toBeNotFocused(): SootSimWaitForAction {
|
|
433
|
+
return this.not.toBeFocused()
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
private assertion(assertionFn: () => Promise<void>): SootSimWaitForAction {
|
|
437
|
+
return new SootSimWaitForAction(assertionFn, this.findNode, this.getPage)
|
|
433
438
|
}
|
|
434
439
|
}
|
|
435
440
|
|
|
@@ -445,6 +450,10 @@ class SootSimWaitForAction {
|
|
|
445
450
|
}
|
|
446
451
|
|
|
447
452
|
async withTimeout(ms: number): Promise<void> {
|
|
453
|
+
if (typeof ms !== 'number' || ms < 0) {
|
|
454
|
+
throw new Error('timeout must be a nonnegative number')
|
|
455
|
+
}
|
|
456
|
+
if (ms === 0) return this.assertionFn()
|
|
448
457
|
const start = Date.now()
|
|
449
458
|
const pollInterval = 100
|
|
450
459
|
let lastError: Error | null = null
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export function frameIndexForOffset(offsetMs: number, frameIntervalMs: number): number
|
|
2
|
+
export function frameTimingRoundingBound(...operands: number[]): number
|
|
3
|
+
export function stageTouchOffsetMs(
|
|
4
|
+
touches: ReadonlyArray<{ scheduledMs: number; landedMs: number }> | null | undefined,
|
|
5
|
+
offsetMs: number,
|
|
6
|
+
): number
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// ceiling a represented display tick must not advance it by one frame.
|
|
2
|
+
/** @param {number} offsetMs @param {number} frameIntervalMs */
|
|
3
|
+
export function frameIndexForOffset(offsetMs, frameIntervalMs) {
|
|
4
|
+
if (!Number.isFinite(offsetMs) || offsetMs < 0)
|
|
5
|
+
throw new Error(`capture: invalid stage offset ${offsetMs}`)
|
|
6
|
+
if (!Number.isFinite(frameIntervalMs) || frameIntervalMs <= 0)
|
|
7
|
+
throw new Error(`capture: invalid frame interval ${frameIntervalMs}`)
|
|
8
|
+
const quotient = offsetMs / frameIntervalMs
|
|
9
|
+
const nearest = Math.round(quotient)
|
|
10
|
+
return Math.abs(quotient - nearest) <= Number.EPSILON * Math.abs(quotient)
|
|
11
|
+
? nearest
|
|
12
|
+
: Math.ceil(quotient)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// gamma(2) bounds seconds representation, unit conversion and arithmetic.
|
|
16
|
+
// include original clock operands before subtraction cancels their epoch.
|
|
17
|
+
/** @param {...number} operands */
|
|
18
|
+
export function frameTimingRoundingBound(...operands) {
|
|
19
|
+
return (
|
|
20
|
+
(Number.EPSILON / (1 - Number.EPSILON)) *
|
|
21
|
+
operands.reduce((sum, value) => sum + Math.abs(value), 0)
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// a held trigger replays a touch schedule ({ scheduledMs, landedMs }, both in
|
|
26
|
+
// ms after the first touch). each lane delivers a touch after its schedule, so
|
|
27
|
+
// a stage keeps its time since the last touch scheduled at or before it, and
|
|
28
|
+
// the frame shows the finger state the schedule declares, that long after the
|
|
29
|
+
// finger got there.
|
|
30
|
+
/** @param {Array<{ scheduledMs: number, landedMs: number }> | null | undefined} touches @param {number} offsetMs */
|
|
31
|
+
export function stageTouchOffsetMs(touches, offsetMs) {
|
|
32
|
+
let last = null
|
|
33
|
+
for (const touch of touches ?? []) if (touch.scheduledMs <= offsetMs) last = touch
|
|
34
|
+
return last ? last.landedMs + offsetMs - last.scheduledMs : offsetMs
|
|
35
|
+
}
|
package/detox/gestures.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getCliRuntime } from '../src/cli-runtime.ts'
|
|
2
2
|
import { pollUntil } from '../src/poll-until'
|
|
3
3
|
// pull in @peach/globals so window.__sootsimTest and
|
|
4
4
|
// window.__sootsimFindInteractiveCanvas are typed inside page.evaluate
|
|
@@ -348,7 +348,7 @@ export async function dragScrollNode(
|
|
|
348
348
|
let endSootSimY = startSootSimY
|
|
349
349
|
// recognition consumes only axis slop. compensate that distance once so
|
|
350
350
|
// excess travel on the first move remains part of the requested scroll.
|
|
351
|
-
const slop = scrollTouchSlop(DETOX_PLATFORM, 1)
|
|
351
|
+
const slop = getCliRuntime().engine_scroll_platform.scrollTouchSlop(DETOX_PLATFORM, 1)
|
|
352
352
|
const travel = pixels + slop
|
|
353
353
|
|
|
354
354
|
switch (direction) {
|
|
@@ -381,9 +381,7 @@ export async function dragScrollNode(
|
|
|
381
381
|
const metrics = await readSootsimPageMetrics(page, 5000)
|
|
382
382
|
const horizontal = direction === 'left' || direction === 'right'
|
|
383
383
|
const startAxis = horizontal ? startSootSimX : startSootSimY
|
|
384
|
-
const lowerBound = horizontal
|
|
385
|
-
? metrics.scrollWindow.left
|
|
386
|
-
: metrics.scrollWindow.top
|
|
384
|
+
const lowerBound = horizontal ? metrics.scrollWindow.left : metrics.scrollWindow.top
|
|
387
385
|
const upperBound = horizontal
|
|
388
386
|
? metrics.scrollWindow.right
|
|
389
387
|
: metrics.scrollWindow.bottom
|
|
@@ -403,9 +401,7 @@ export async function dragScrollNode(
|
|
|
403
401
|
const canvas = window.__sootsimFindInteractiveCanvas?.()
|
|
404
402
|
if (!canvas) throw new Error('peach interactive canvas not found')
|
|
405
403
|
const axisDelta =
|
|
406
|
-
endPage.x !== startPage.x
|
|
407
|
-
? endPage.x - startPage.x
|
|
408
|
-
: endPage.y - startPage.y
|
|
404
|
+
endPage.x !== startPage.x ? endPage.x - startPage.x : endPage.y - startPage.y
|
|
409
405
|
const sign = Math.sign(axisDelta)
|
|
410
406
|
const nextFrame = () =>
|
|
411
407
|
new Promise<void>((resolve) => requestAnimationFrame(() => resolve()))
|
|
@@ -430,11 +426,7 @@ export async function dragScrollNode(
|
|
|
430
426
|
let strokeRemaining = remaining + 10
|
|
431
427
|
let point = startAxis
|
|
432
428
|
const offsets = [point]
|
|
433
|
-
while (
|
|
434
|
-
strokeRemaining > 0 &&
|
|
435
|
-
point > lowerBound &&
|
|
436
|
-
point < upperBound
|
|
437
|
-
) {
|
|
429
|
+
while (strokeRemaining > 0 && point > lowerBound && point < upperBound) {
|
|
438
430
|
const delta = Math.min(25, strokeRemaining)
|
|
439
431
|
point += sign * delta
|
|
440
432
|
strokeRemaining -= delta
|
|
@@ -540,11 +532,7 @@ export async function dispatchTwoFingerGesture(
|
|
|
540
532
|
const canvas: HTMLCanvasElement | null =
|
|
541
533
|
window.__sootsimFindInteractiveCanvas?.() ?? document.querySelector('canvas')
|
|
542
534
|
if (!canvas) throw new Error('sootsim interactive canvas not found')
|
|
543
|
-
const fire = (
|
|
544
|
-
point: { x: number; y: number },
|
|
545
|
-
id: number,
|
|
546
|
-
primary: boolean,
|
|
547
|
-
) => {
|
|
535
|
+
const fire = (point: { x: number; y: number }, id: number, primary: boolean) => {
|
|
548
536
|
canvas.dispatchEvent(
|
|
549
537
|
new PointerEvent('pointerdown', {
|
|
550
538
|
bubbles: true,
|