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
|
@@ -0,0 +1,3311 @@
|
|
|
1
|
+
import type { FrameBreakdownCapture } from './frameBreakdownContract.d.ts';
|
|
2
|
+
import type { PointerSourceEvent } from './pointerSourceEventContract.d.ts';
|
|
3
|
+
import type { ProfileFile, SootSimProfilerBridge } from './profilerContract.d.ts';
|
|
4
|
+
export type { PointerSourceEvent } from './pointerSourceEventContract.d.ts';
|
|
5
|
+
export type PreviewCaptureKind = 'recording' | 'run';
|
|
6
|
+
export type NativeScreenCaptureState = 'active' | 'inactive' | 'unspecified';
|
|
7
|
+
export declare function isPreviewCaptureKind(value: unknown): value is PreviewCaptureKind;
|
|
8
|
+
export type PeachRecordingMode = 'scene' | 'video' | 'live' | 'combined';
|
|
9
|
+
export type PeachRecordingStartOptions = {
|
|
10
|
+
liveBundle?: boolean;
|
|
11
|
+
video?: boolean;
|
|
12
|
+
skipEntitlement?: boolean;
|
|
13
|
+
capture?: PreviewCaptureKind;
|
|
14
|
+
};
|
|
15
|
+
type Listener<T> = (value: T) => void;
|
|
16
|
+
export type Emitter<T> = {
|
|
17
|
+
value: T;
|
|
18
|
+
emit: (value: T) => void;
|
|
19
|
+
listen: (fn: Listener<T>) => () => void;
|
|
20
|
+
nextValue: () => Promise<T>;
|
|
21
|
+
};
|
|
22
|
+
export type NativeViewMeasureMode = 'undefined' | 'exactly' | 'at-most';
|
|
23
|
+
export type NativeViewMeasure = (width: number, widthMode: NativeViewMeasureMode, height: number, heightMode: NativeViewMeasureMode) => {
|
|
24
|
+
width: number;
|
|
25
|
+
height: number;
|
|
26
|
+
};
|
|
27
|
+
export type PeachNativeWorkletEventDispatcher = (viewTag: number, event: {
|
|
28
|
+
eventName?: string;
|
|
29
|
+
} & Record<string, unknown>, options?: {
|
|
30
|
+
deferFlush?: boolean;
|
|
31
|
+
timestamp?: number;
|
|
32
|
+
localOnly?: boolean;
|
|
33
|
+
}) => void;
|
|
34
|
+
export interface SootsimBridgeStatusDetail {
|
|
35
|
+
id?: string | null;
|
|
36
|
+
isPrimary?: boolean;
|
|
37
|
+
url?: string;
|
|
38
|
+
title?: string;
|
|
39
|
+
attachedCliCount?: number;
|
|
40
|
+
activeAgentCommandCount?: number;
|
|
41
|
+
recentActions?: ReadonlyArray<unknown>;
|
|
42
|
+
lockedBy?: string | null;
|
|
43
|
+
lockedByKind?: string | null;
|
|
44
|
+
lockExpiresAt?: number;
|
|
45
|
+
userFocused?: boolean;
|
|
46
|
+
userVisible?: boolean | null;
|
|
47
|
+
visibilityState?: string | null;
|
|
48
|
+
documentFocused?: boolean | null;
|
|
49
|
+
hasClientActivity?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface SootsimActiveAppChangeDetail {
|
|
52
|
+
activeAppId: string | null;
|
|
53
|
+
activeAppName: string | null;
|
|
54
|
+
isAppOpen: boolean;
|
|
55
|
+
}
|
|
56
|
+
export type SootsimSettingsPage = 'root' | 'accessibility' | 'display-and-text-size' | 'larger-text' | 'notifications' | 'apps' | 'privacy' | 'apple-account';
|
|
57
|
+
export type SootsimSettingsRoute = {
|
|
58
|
+
kind: 'app';
|
|
59
|
+
appId: string;
|
|
60
|
+
} | {
|
|
61
|
+
kind: 'system';
|
|
62
|
+
page: SootsimSettingsPage;
|
|
63
|
+
};
|
|
64
|
+
export interface SootsimNavigateAppDetail {
|
|
65
|
+
appId?: string;
|
|
66
|
+
settingsPage?: SootsimSettingsPage;
|
|
67
|
+
route?: {
|
|
68
|
+
kind: 'rn';
|
|
69
|
+
id: string;
|
|
70
|
+
};
|
|
71
|
+
replace?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface SootsimNavigateHomeDetail {
|
|
74
|
+
replace?: boolean;
|
|
75
|
+
}
|
|
76
|
+
export interface SootsimEmbedVisibilityDetail {
|
|
77
|
+
visible: boolean;
|
|
78
|
+
}
|
|
79
|
+
export type SootsimEmbedInteraction = {
|
|
80
|
+
kind: 'press';
|
|
81
|
+
target: {
|
|
82
|
+
kind: 'id' | 'text';
|
|
83
|
+
value: string;
|
|
84
|
+
};
|
|
85
|
+
} | {
|
|
86
|
+
kind: 'drag';
|
|
87
|
+
from: {
|
|
88
|
+
x: number;
|
|
89
|
+
y: number;
|
|
90
|
+
};
|
|
91
|
+
to: {
|
|
92
|
+
x: number;
|
|
93
|
+
y: number;
|
|
94
|
+
};
|
|
95
|
+
durationMs: number;
|
|
96
|
+
};
|
|
97
|
+
export interface SootsimEngineFailureDetail {
|
|
98
|
+
reason: string;
|
|
99
|
+
detail?: string;
|
|
100
|
+
}
|
|
101
|
+
export type SootsimBootStage = 'engine' | 'tenant' | 'shell-booted' | 'shell-modules' | 'shell-mounted' | 'painted';
|
|
102
|
+
export declare const SOOTSIM_BOOT_STAGE_ORDER: Record<SootsimBootStage, number>;
|
|
103
|
+
export declare const SOOTSIM_TENANT_READY_MARK = "sootsim:tenant-ready";
|
|
104
|
+
export type SootsimBootMarkName = 'wasm-body' | 'worker-ready' | 'compositor-ready' | 'tenant-commit' | 'app-paint' | 'canvaskit-init' | 'corpus-loaded' | 'home-tree' | 'home-paint';
|
|
105
|
+
export interface SootsimBootMark {
|
|
106
|
+
name: SootsimBootMarkName;
|
|
107
|
+
atEpochMs: number;
|
|
108
|
+
}
|
|
109
|
+
export declare const SOOTSIM_BOOT_MARKS_GLOBAL = "__sootsimBootMarks";
|
|
110
|
+
export interface SootsimHostKeyDetail {
|
|
111
|
+
key: string;
|
|
112
|
+
code?: string;
|
|
113
|
+
phase?: 'press' | 'release';
|
|
114
|
+
repeat?: boolean;
|
|
115
|
+
shift?: boolean;
|
|
116
|
+
alt?: boolean;
|
|
117
|
+
meta?: boolean;
|
|
118
|
+
ctrl?: boolean;
|
|
119
|
+
}
|
|
120
|
+
export interface SootsimHapticActivityDetail {
|
|
121
|
+
strength: number;
|
|
122
|
+
source?: string;
|
|
123
|
+
}
|
|
124
|
+
export type SootsimColorScheme = 'light' | 'dark' | 'auto';
|
|
125
|
+
export type SootsimTopOverlayKind = 'none' | 'notification-center' | 'control-center';
|
|
126
|
+
export interface SootsimEventMap {
|
|
127
|
+
'peach:device-frame-layout': void;
|
|
128
|
+
'sootsim:goHome': null;
|
|
129
|
+
'sootsim:appSwitcher': null;
|
|
130
|
+
'sootsim:toggleLock': null;
|
|
131
|
+
'sootsim:shake': null;
|
|
132
|
+
'sootsim:screenshotTaken': null;
|
|
133
|
+
'peach:screenCaptureState': NativeScreenCaptureState;
|
|
134
|
+
'sootsim:openNotificationCenter': null;
|
|
135
|
+
'sootsim:closeNotificationCenter': null;
|
|
136
|
+
'sootsim:openControlCenter': null;
|
|
137
|
+
'sootsim:closeControlCenter': null;
|
|
138
|
+
'sootsim:setTopOverlay': {
|
|
139
|
+
overlay: SootsimTopOverlayKind;
|
|
140
|
+
};
|
|
141
|
+
'sootsim:inspectModeChange': {
|
|
142
|
+
active: boolean;
|
|
143
|
+
};
|
|
144
|
+
'sootsim:ringHint': null;
|
|
145
|
+
'sootsim:ringModeChange': {
|
|
146
|
+
mode: 'ring' | 'silent';
|
|
147
|
+
};
|
|
148
|
+
'sootsim:homeIntro': null;
|
|
149
|
+
'sootsim:hoverPosition': {
|
|
150
|
+
x: number;
|
|
151
|
+
y: number;
|
|
152
|
+
};
|
|
153
|
+
'sootsim:hoverLeave': null;
|
|
154
|
+
'sootsim:inspectSelectPosition': {
|
|
155
|
+
x: number;
|
|
156
|
+
y: number;
|
|
157
|
+
};
|
|
158
|
+
'sootsim:prewarmApp': {
|
|
159
|
+
appId: string;
|
|
160
|
+
iconPosition?: {
|
|
161
|
+
x: number;
|
|
162
|
+
y: number;
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
'sootsim:cancelPrewarmApp': null;
|
|
166
|
+
'sootsim:colorSchemeChange': {
|
|
167
|
+
scheme: SootsimColorScheme;
|
|
168
|
+
};
|
|
169
|
+
'sootsim:activeAppChange': SootsimActiveAppChangeDetail;
|
|
170
|
+
'sootsim:navigateApp': SootsimNavigateAppDetail;
|
|
171
|
+
'sootsim:navigateHome': SootsimNavigateHomeDetail;
|
|
172
|
+
'sootsim:demoBundleModeChange': {
|
|
173
|
+
mode: 'development' | 'production';
|
|
174
|
+
};
|
|
175
|
+
'sootsim:urlstatechange': null;
|
|
176
|
+
'sootsim:externalAppReady': null;
|
|
177
|
+
'sootsim:externalAppError': null;
|
|
178
|
+
'sootsim:previewReloadRequest': null;
|
|
179
|
+
'sootsim:externalAppReloadStart': {
|
|
180
|
+
entryPath: string;
|
|
181
|
+
};
|
|
182
|
+
'sootsim:bridgeStatusChange': SootsimBridgeStatusDetail;
|
|
183
|
+
'sootsim:hostFocusChange': {
|
|
184
|
+
focused: boolean;
|
|
185
|
+
};
|
|
186
|
+
'sootsim:embed-visibility-change': SootsimEmbedVisibilityDetail;
|
|
187
|
+
'sootsim:hostKey': SootsimHostKeyDetail;
|
|
188
|
+
'sootsim:bundleProgress': {
|
|
189
|
+
percent: number;
|
|
190
|
+
};
|
|
191
|
+
'sootsim:bootStage': {
|
|
192
|
+
stage: SootsimBootStage;
|
|
193
|
+
};
|
|
194
|
+
'sootsim:engineFailure': SootsimEngineFailureDetail;
|
|
195
|
+
'sootsim:uploadActivity': {
|
|
196
|
+
phase: 'uploading' | 'copied' | 'failed' | 'done';
|
|
197
|
+
immediate?: boolean;
|
|
198
|
+
};
|
|
199
|
+
'sootsim:hapticActivity': SootsimHapticActivityDetail;
|
|
200
|
+
'sootsim:statusBarOverride': {
|
|
201
|
+
time?: string | null;
|
|
202
|
+
};
|
|
203
|
+
'sootsim:previewReplayClock': {
|
|
204
|
+
nowMs: number;
|
|
205
|
+
advancing?: boolean;
|
|
206
|
+
};
|
|
207
|
+
'sootsim:menuAnimOverride': {
|
|
208
|
+
value: number | null;
|
|
209
|
+
highlightMoveDuration?: number | null;
|
|
210
|
+
liquidGlass?: {
|
|
211
|
+
light?: Record<string, unknown>;
|
|
212
|
+
dark?: Record<string, unknown>;
|
|
213
|
+
} | null;
|
|
214
|
+
};
|
|
215
|
+
'sootsim:agentAction': SootSimAgentActionDetail;
|
|
216
|
+
'sootsim:hardwareKeyboardInput': SootSimHardwareKeyboardInputDetail;
|
|
217
|
+
'sootsim:bootClients': null;
|
|
218
|
+
'sootsim:plugin-bridge-ready': {
|
|
219
|
+
plugin: string;
|
|
220
|
+
};
|
|
221
|
+
'sootsim:agent-bridge-change': {
|
|
222
|
+
available: boolean;
|
|
223
|
+
};
|
|
224
|
+
'contrast-preview-reload': {
|
|
225
|
+
target?: 'web' | 'ios' | 'android';
|
|
226
|
+
} | null;
|
|
227
|
+
'sootsim:bootMark': SootsimBootMark;
|
|
228
|
+
}
|
|
229
|
+
export type SootsimEventName = keyof SootsimEventMap;
|
|
230
|
+
export declare function dispatchSootsimEvent<K extends SootsimEventName>(name: K, detail: SootsimEventMap[K], target?: EventTarget): void;
|
|
231
|
+
export declare function listenSootsimEvent<K extends SootsimEventName>(name: K, handler: (detail: SootsimEventMap[K]) => void, target?: EventTarget): () => void;
|
|
232
|
+
export interface SootSimChrome {
|
|
233
|
+
shell: boolean;
|
|
234
|
+
headless: boolean;
|
|
235
|
+
electron: boolean;
|
|
236
|
+
engineBase: string | null;
|
|
237
|
+
engineTenantBase: string | null;
|
|
238
|
+
demo: boolean;
|
|
239
|
+
demoGatewayOrigin: string | null;
|
|
240
|
+
preview: boolean;
|
|
241
|
+
}
|
|
242
|
+
type MaybeAsync<T> = T | Promise<T>;
|
|
243
|
+
export interface SootSimTestQueryFilter {
|
|
244
|
+
type?: string;
|
|
245
|
+
hasText?: string;
|
|
246
|
+
hasId?: string;
|
|
247
|
+
idPattern?: string | {
|
|
248
|
+
source: string;
|
|
249
|
+
flags: string;
|
|
250
|
+
matchLastSegment?: boolean;
|
|
251
|
+
};
|
|
252
|
+
hasRole?: string;
|
|
253
|
+
hasLabel?: string;
|
|
254
|
+
hasHint?: string;
|
|
255
|
+
hasState?: Partial<SootSimAccessibilityState>;
|
|
256
|
+
pruneHidden?: boolean;
|
|
257
|
+
}
|
|
258
|
+
export interface SootSimTextCandidatesOptions {
|
|
259
|
+
query: string;
|
|
260
|
+
exact?: boolean;
|
|
261
|
+
role?: string;
|
|
262
|
+
}
|
|
263
|
+
export interface SootSimTextCandidate {
|
|
264
|
+
info: SootSimNodeInfo;
|
|
265
|
+
ancestorTestIDs: string[];
|
|
266
|
+
ancestorPickerColumnIndices: number[];
|
|
267
|
+
}
|
|
268
|
+
export interface SootSimTextCandidatesResult {
|
|
269
|
+
total: number;
|
|
270
|
+
candidates: SootSimTextCandidate[];
|
|
271
|
+
}
|
|
272
|
+
export interface SootSimDumpTreeOptions {
|
|
273
|
+
describe?: boolean;
|
|
274
|
+
verbose?: boolean;
|
|
275
|
+
filter?: string;
|
|
276
|
+
testIdLike?: string;
|
|
277
|
+
onlyGlob?: string;
|
|
278
|
+
subtreeRoot?: string;
|
|
279
|
+
compact?: boolean;
|
|
280
|
+
hideXy?: boolean;
|
|
281
|
+
fullText?: boolean;
|
|
282
|
+
includeOccluded?: boolean;
|
|
283
|
+
format?: 'boxes';
|
|
284
|
+
}
|
|
285
|
+
export interface SootSimInspectPointOptions {
|
|
286
|
+
excludeTestId?: string;
|
|
287
|
+
excludeTestIds?: string[];
|
|
288
|
+
}
|
|
289
|
+
export interface SootSimListInspectableOptions {
|
|
290
|
+
excludeTestIds?: string[];
|
|
291
|
+
}
|
|
292
|
+
export type SootSimInspectNeighborDirection = 'parent' | 'firstChild' | 'prevSibling' | 'nextSibling';
|
|
293
|
+
export type SootSimGestureCallback = 'onBegin' | 'onStart' | 'onUpdate' | 'onEnd' | 'onFinalize';
|
|
294
|
+
export interface SootSimTapPathEntry {
|
|
295
|
+
nodeId?: number;
|
|
296
|
+
type: string;
|
|
297
|
+
testID?: string;
|
|
298
|
+
text?: string;
|
|
299
|
+
}
|
|
300
|
+
export interface SootSimTapRefusal {
|
|
301
|
+
hit: false;
|
|
302
|
+
requestedTargetMatched: false;
|
|
303
|
+
reason: 'target-covered' | 'target-not-found';
|
|
304
|
+
requestedTarget: SootSimReplayTarget;
|
|
305
|
+
coordinateTarget: SootSimReplayTarget | null;
|
|
306
|
+
}
|
|
307
|
+
export interface SootSimTapTargetMatch {
|
|
308
|
+
requestedTargetMatched: true;
|
|
309
|
+
requestedTarget: SootSimReplayTarget;
|
|
310
|
+
coordinateTarget: SootSimReplayTarget;
|
|
311
|
+
}
|
|
312
|
+
export type SootSimTapTargetVerification = SootSimTapTargetMatch | SootSimTapRefusal;
|
|
313
|
+
export interface SootSimTapResult extends Partial<Omit<SootSimTapRefusal, 'hit'>> {
|
|
314
|
+
hit: boolean;
|
|
315
|
+
type?: string;
|
|
316
|
+
testID?: string;
|
|
317
|
+
isTextInput?: boolean;
|
|
318
|
+
keyboardOpened?: boolean;
|
|
319
|
+
text?: string;
|
|
320
|
+
responderTestID?: string;
|
|
321
|
+
responderType?: string;
|
|
322
|
+
path?: SootSimTapPathEntry[];
|
|
323
|
+
directTapHandled?: boolean;
|
|
324
|
+
pointerTapHandled?: boolean;
|
|
325
|
+
}
|
|
326
|
+
export type SootSimTapTargetStrategy = 'matched-node' | 'actionable-ancestor' | 'actionable-descendant';
|
|
327
|
+
export interface SootSimTapTargetInfo {
|
|
328
|
+
match: SootSimNodeInfo;
|
|
329
|
+
target: SootSimNodeInfo;
|
|
330
|
+
cx: number;
|
|
331
|
+
cy: number;
|
|
332
|
+
strategy: SootSimTapTargetStrategy;
|
|
333
|
+
viewport: {
|
|
334
|
+
width: number;
|
|
335
|
+
height: number;
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
export interface SootSimRouteInfo {
|
|
339
|
+
routeNames: string[];
|
|
340
|
+
currentPath: string | null;
|
|
341
|
+
coveringPath: string | null;
|
|
342
|
+
canGoBack: boolean;
|
|
343
|
+
rootState: unknown;
|
|
344
|
+
}
|
|
345
|
+
export interface SootSimUndeclaredScreen {
|
|
346
|
+
navigator: string;
|
|
347
|
+
screen: string;
|
|
348
|
+
declared: string[];
|
|
349
|
+
settledMs: number;
|
|
350
|
+
}
|
|
351
|
+
export interface SootSimScrollToResult {
|
|
352
|
+
ok: boolean;
|
|
353
|
+
via?: string;
|
|
354
|
+
reason?: string;
|
|
355
|
+
}
|
|
356
|
+
export interface SootSimCursorState {
|
|
357
|
+
nodeId: number;
|
|
358
|
+
position: number;
|
|
359
|
+
opacity: number;
|
|
360
|
+
visible: boolean;
|
|
361
|
+
captureActive: boolean;
|
|
362
|
+
rect?: {
|
|
363
|
+
x: number;
|
|
364
|
+
y: number;
|
|
365
|
+
width: number;
|
|
366
|
+
height: number;
|
|
367
|
+
} | null;
|
|
368
|
+
}
|
|
369
|
+
export interface SootSimLoupeState {
|
|
370
|
+
x: number;
|
|
371
|
+
y: number;
|
|
372
|
+
active: boolean;
|
|
373
|
+
}
|
|
374
|
+
export interface SootSimEditMenuRect {
|
|
375
|
+
x: number;
|
|
376
|
+
y: number;
|
|
377
|
+
width: number;
|
|
378
|
+
height: number;
|
|
379
|
+
}
|
|
380
|
+
export interface SootSimEditMenuItem {
|
|
381
|
+
action: string;
|
|
382
|
+
label: string;
|
|
383
|
+
}
|
|
384
|
+
export interface SootSimEditMenuState {
|
|
385
|
+
items: SootSimEditMenuItem[];
|
|
386
|
+
anchor: SootSimEditMenuRect;
|
|
387
|
+
barRect: SootSimEditMenuRect | null;
|
|
388
|
+
itemRects: Array<SootSimEditMenuRect & {
|
|
389
|
+
action: string;
|
|
390
|
+
}>;
|
|
391
|
+
}
|
|
392
|
+
export interface SootSimTextSelection {
|
|
393
|
+
start: number | null;
|
|
394
|
+
end: number | null;
|
|
395
|
+
}
|
|
396
|
+
export interface SootSimTextSelectionHandles {
|
|
397
|
+
start: {
|
|
398
|
+
x: number;
|
|
399
|
+
y: number;
|
|
400
|
+
} | null;
|
|
401
|
+
end: {
|
|
402
|
+
x: number;
|
|
403
|
+
y: number;
|
|
404
|
+
} | null;
|
|
405
|
+
}
|
|
406
|
+
export interface SootSimRequestEntry {
|
|
407
|
+
kind: 'fetch';
|
|
408
|
+
runtime: 'window' | 'worker';
|
|
409
|
+
method: string;
|
|
410
|
+
url: string;
|
|
411
|
+
displayUrl: string;
|
|
412
|
+
timestamp: number;
|
|
413
|
+
ok: boolean;
|
|
414
|
+
status: number | null;
|
|
415
|
+
statusText: string | null;
|
|
416
|
+
error: string | null;
|
|
417
|
+
responseBody: string | null;
|
|
418
|
+
requestBody?: string | null;
|
|
419
|
+
}
|
|
420
|
+
export interface SootSimRequestCounts {
|
|
421
|
+
total: number;
|
|
422
|
+
failed: number;
|
|
423
|
+
inFlight: number;
|
|
424
|
+
}
|
|
425
|
+
export type SootSimAnimationSource = 'value' | 'engine' | 'native' | 'reanimated';
|
|
426
|
+
export interface SootSimAnimationInfo {
|
|
427
|
+
id: number;
|
|
428
|
+
kind: 'timing' | 'spring' | 'linearLoop' | 'program' | 'formSheetSettle' | 'timed' | 'interpolate' | 'native' | 'reanimated';
|
|
429
|
+
source: SootSimAnimationSource;
|
|
430
|
+
realm: 'tenant' | 'shell';
|
|
431
|
+
from?: number;
|
|
432
|
+
to?: number;
|
|
433
|
+
current: number | null;
|
|
434
|
+
animatedValue: number | null;
|
|
435
|
+
startedAt?: number;
|
|
436
|
+
elapsedMs: number;
|
|
437
|
+
progress?: number;
|
|
438
|
+
duration?: number;
|
|
439
|
+
easing?: string;
|
|
440
|
+
stiffness?: number;
|
|
441
|
+
damping?: number;
|
|
442
|
+
mass?: number;
|
|
443
|
+
velocity?: number;
|
|
444
|
+
loop?: boolean;
|
|
445
|
+
layoutBound?: boolean;
|
|
446
|
+
listenerCount: number;
|
|
447
|
+
graphBacked?: boolean;
|
|
448
|
+
remoteDriven?: boolean;
|
|
449
|
+
priority?: string;
|
|
450
|
+
visible?: boolean;
|
|
451
|
+
}
|
|
452
|
+
export interface SootSimAnimationTraceSample {
|
|
453
|
+
t: number;
|
|
454
|
+
value: number;
|
|
455
|
+
velocity: number;
|
|
456
|
+
}
|
|
457
|
+
export interface SootSimAnimationTraceStatus {
|
|
458
|
+
id: number;
|
|
459
|
+
count: number;
|
|
460
|
+
limit: number;
|
|
461
|
+
}
|
|
462
|
+
export interface SootSimRuntimeState {
|
|
463
|
+
url: string;
|
|
464
|
+
hidden: boolean;
|
|
465
|
+
nodeCount: number;
|
|
466
|
+
animations: {
|
|
467
|
+
active: number;
|
|
468
|
+
byKind: {
|
|
469
|
+
timing: number;
|
|
470
|
+
spring: number;
|
|
471
|
+
};
|
|
472
|
+
};
|
|
473
|
+
keyboard: {
|
|
474
|
+
visible: boolean;
|
|
475
|
+
mode: string | null;
|
|
476
|
+
};
|
|
477
|
+
diagnostics: {
|
|
478
|
+
errors: number;
|
|
479
|
+
warnings: number;
|
|
480
|
+
failedRequests: number;
|
|
481
|
+
totalRequests: number;
|
|
482
|
+
};
|
|
483
|
+
shell?: Record<string, unknown> | null;
|
|
484
|
+
}
|
|
485
|
+
export interface SootSimScreenTransitionWaitOptions {
|
|
486
|
+
timeoutMs?: number;
|
|
487
|
+
settleMs?: number;
|
|
488
|
+
startWindowMs?: number;
|
|
489
|
+
}
|
|
490
|
+
export interface SootSimScreenTransitionWaitResult {
|
|
491
|
+
started: boolean;
|
|
492
|
+
settled: boolean;
|
|
493
|
+
timedOut: boolean;
|
|
494
|
+
activeCount: number;
|
|
495
|
+
peakActiveCount: number;
|
|
496
|
+
waitedMs: number;
|
|
497
|
+
restedMs: number;
|
|
498
|
+
}
|
|
499
|
+
export interface SootSimInspectDeviceInfo {
|
|
500
|
+
platform: 'ios' | 'android';
|
|
501
|
+
model: string;
|
|
502
|
+
name: string;
|
|
503
|
+
width: number;
|
|
504
|
+
height: number;
|
|
505
|
+
scale: number;
|
|
506
|
+
statusBarHeight?: number;
|
|
507
|
+
cornerRadius?: number;
|
|
508
|
+
dynamicIsland?: {
|
|
509
|
+
width: number;
|
|
510
|
+
height: number;
|
|
511
|
+
top: number;
|
|
512
|
+
} | null;
|
|
513
|
+
osVersion: string;
|
|
514
|
+
iosVersion: string;
|
|
515
|
+
androidApiLevel?: number | null;
|
|
516
|
+
}
|
|
517
|
+
export interface SootSimInspectAncestor {
|
|
518
|
+
nodeId?: number;
|
|
519
|
+
type: string;
|
|
520
|
+
text?: string;
|
|
521
|
+
componentName?: string;
|
|
522
|
+
id?: string;
|
|
523
|
+
testID?: string;
|
|
524
|
+
testId?: string;
|
|
525
|
+
role?: string;
|
|
526
|
+
label?: string;
|
|
527
|
+
accessibilityLabel?: string;
|
|
528
|
+
screenId?: string;
|
|
529
|
+
srcloc?: string;
|
|
530
|
+
sourceFile?: string;
|
|
531
|
+
}
|
|
532
|
+
export interface SootSimInspectBoxModel {
|
|
533
|
+
margin: {
|
|
534
|
+
top: number;
|
|
535
|
+
right: number;
|
|
536
|
+
bottom: number;
|
|
537
|
+
left: number;
|
|
538
|
+
};
|
|
539
|
+
border: {
|
|
540
|
+
top: number;
|
|
541
|
+
right: number;
|
|
542
|
+
bottom: number;
|
|
543
|
+
left: number;
|
|
544
|
+
};
|
|
545
|
+
padding: {
|
|
546
|
+
top: number;
|
|
547
|
+
right: number;
|
|
548
|
+
bottom: number;
|
|
549
|
+
left: number;
|
|
550
|
+
};
|
|
551
|
+
content: {
|
|
552
|
+
width: number;
|
|
553
|
+
height: number;
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
export interface SootSimInspectImageSource {
|
|
557
|
+
kind: 'uri' | 'metro-asset' | 'module-default';
|
|
558
|
+
assetId?: number;
|
|
559
|
+
uri?: string;
|
|
560
|
+
assetPath?: string;
|
|
561
|
+
assetFile?: string;
|
|
562
|
+
modulePath?: string;
|
|
563
|
+
width?: number;
|
|
564
|
+
height?: number;
|
|
565
|
+
scale?: number;
|
|
566
|
+
}
|
|
567
|
+
export type SootSimInspectHookKind = 'state' | 'reducer' | 'effect' | 'layoutEffect' | 'insertionEffect' | 'memo' | 'callback' | 'ref' | 'context' | 'other';
|
|
568
|
+
export interface SootSimInspectHookSummary {
|
|
569
|
+
total: number;
|
|
570
|
+
counts: Partial<Record<SootSimInspectHookKind, number>>;
|
|
571
|
+
}
|
|
572
|
+
export type SootSimInspectCommitCause = 'mount' | 'props' | 'state' | 'context' | 'parent';
|
|
573
|
+
export interface SootSimInspectLastCommit {
|
|
574
|
+
ageMs: number;
|
|
575
|
+
causes: SootSimInspectCommitCause[];
|
|
576
|
+
propDiffs?: string[];
|
|
577
|
+
stateChanged?: boolean;
|
|
578
|
+
actualDurationMs?: number;
|
|
579
|
+
}
|
|
580
|
+
export interface SootSimInspectReactInfo {
|
|
581
|
+
component?: string;
|
|
582
|
+
owners?: string[];
|
|
583
|
+
source?: string;
|
|
584
|
+
key?: string;
|
|
585
|
+
hasRef?: boolean;
|
|
586
|
+
hooks?: SootSimInspectHookSummary;
|
|
587
|
+
contexts?: string[];
|
|
588
|
+
lastCommit?: SootSimInspectLastCommit;
|
|
589
|
+
}
|
|
590
|
+
export interface SootSimInspectNavigationInfo {
|
|
591
|
+
appId?: string;
|
|
592
|
+
appName?: string;
|
|
593
|
+
screenId?: string;
|
|
594
|
+
routeName?: string;
|
|
595
|
+
routePath?: string;
|
|
596
|
+
params?: Record<string, unknown>;
|
|
597
|
+
stackDepth?: number;
|
|
598
|
+
stackTrail?: string[];
|
|
599
|
+
presentation?: string;
|
|
600
|
+
}
|
|
601
|
+
export interface SootSimInspectTimelineEntry {
|
|
602
|
+
ageMs: number;
|
|
603
|
+
kind: string;
|
|
604
|
+
context: 'host' | 'shell' | 'tenant';
|
|
605
|
+
label?: string;
|
|
606
|
+
}
|
|
607
|
+
export interface SootSimInspectTreeNode {
|
|
608
|
+
nodeId: number;
|
|
609
|
+
parentId: number | null;
|
|
610
|
+
type: string;
|
|
611
|
+
components?: string[];
|
|
612
|
+
testID?: string;
|
|
613
|
+
label?: string;
|
|
614
|
+
text?: string;
|
|
615
|
+
width: number;
|
|
616
|
+
height: number;
|
|
617
|
+
pressable?: boolean;
|
|
618
|
+
hidden?: boolean;
|
|
619
|
+
}
|
|
620
|
+
export interface SootSimInspectInfo {
|
|
621
|
+
nodeId: number;
|
|
622
|
+
sessionId?: string;
|
|
623
|
+
type: string;
|
|
624
|
+
componentName?: string;
|
|
625
|
+
componentStack?: string[];
|
|
626
|
+
id?: string;
|
|
627
|
+
testID?: string;
|
|
628
|
+
testId?: string;
|
|
629
|
+
role?: string;
|
|
630
|
+
label?: string;
|
|
631
|
+
accessibilityLabel?: string;
|
|
632
|
+
accessibilityHidden?: true;
|
|
633
|
+
readsFirst?: true;
|
|
634
|
+
accessibilityContainer?: true;
|
|
635
|
+
accessibilityFrame?: SootSimInspectInfo['absolute'];
|
|
636
|
+
screenId?: string;
|
|
637
|
+
hint?: string;
|
|
638
|
+
text?: string;
|
|
639
|
+
layout: {
|
|
640
|
+
x: number;
|
|
641
|
+
y: number;
|
|
642
|
+
width: number;
|
|
643
|
+
height: number;
|
|
644
|
+
};
|
|
645
|
+
absolute: {
|
|
646
|
+
x: number;
|
|
647
|
+
y: number;
|
|
648
|
+
width: number;
|
|
649
|
+
height: number;
|
|
650
|
+
};
|
|
651
|
+
backgroundPlayback?: true;
|
|
652
|
+
visibleFrame?: SootSimVisibleFrame | null;
|
|
653
|
+
handlers: string[];
|
|
654
|
+
style: Record<string, unknown>;
|
|
655
|
+
authoredStyle: Record<string, unknown>;
|
|
656
|
+
computedStyle: Record<string, unknown>;
|
|
657
|
+
boxModel: SootSimInspectBoxModel;
|
|
658
|
+
parentId?: number;
|
|
659
|
+
prevSiblingId?: number;
|
|
660
|
+
nextSiblingId?: number;
|
|
661
|
+
firstChildId?: number;
|
|
662
|
+
ancestors: SootSimInspectAncestor[];
|
|
663
|
+
appName?: string;
|
|
664
|
+
appearanceScheme?: string;
|
|
665
|
+
device?: SootSimInspectDeviceInfo;
|
|
666
|
+
srcloc?: string;
|
|
667
|
+
sourceFile?: string;
|
|
668
|
+
sourceChain?: string[];
|
|
669
|
+
imageSource?: SootSimInspectImageSource;
|
|
670
|
+
react?: SootSimInspectReactInfo;
|
|
671
|
+
navigation?: SootSimInspectNavigationInfo;
|
|
672
|
+
timeline?: SootSimInspectTimelineEntry[];
|
|
673
|
+
}
|
|
674
|
+
export type PeachSemanticInspectInfo = Pick<SootSimInspectInfo, 'nodeId' | 'type' | 'testID' | 'testId' | 'id' | 'text' | 'role' | 'accessibilityLabel' | 'label' | 'handlers' | 'accessibilityHidden' | 'absolute' | 'parentId' | 'readsFirst'> & {
|
|
675
|
+
ancestors: Array<Pick<SootSimInspectAncestor, 'nodeId'>>;
|
|
676
|
+
};
|
|
677
|
+
export interface PointerDispatchOptions {
|
|
678
|
+
sourceEvent?: PointerSourceEvent;
|
|
679
|
+
altKey?: boolean;
|
|
680
|
+
shiftKey?: boolean;
|
|
681
|
+
pointerType?: string;
|
|
682
|
+
stylusData?: {
|
|
683
|
+
tiltX: number;
|
|
684
|
+
tiltY: number;
|
|
685
|
+
altitudeAngle: number;
|
|
686
|
+
azimuthAngle: number;
|
|
687
|
+
pressure: number;
|
|
688
|
+
};
|
|
689
|
+
timestamp?: number;
|
|
690
|
+
nativeWindowRoot?: number;
|
|
691
|
+
}
|
|
692
|
+
export interface PeachAccessibilityNode {
|
|
693
|
+
platform: SootSimInspectDeviceInfo['platform'];
|
|
694
|
+
elementId: string;
|
|
695
|
+
nodeId: number;
|
|
696
|
+
type: string;
|
|
697
|
+
testID: string | null;
|
|
698
|
+
label: string | null;
|
|
699
|
+
hint: string | null;
|
|
700
|
+
inputLabels?: string[] | null;
|
|
701
|
+
traits?: string[];
|
|
702
|
+
value: string | null;
|
|
703
|
+
placeholder: string | null;
|
|
704
|
+
role: string;
|
|
705
|
+
isAccessibilityElement: boolean;
|
|
706
|
+
enabled: boolean;
|
|
707
|
+
selected: boolean;
|
|
708
|
+
checked: boolean;
|
|
709
|
+
clickable: boolean;
|
|
710
|
+
isTextInput: boolean;
|
|
711
|
+
state: SootSimAccessibilityState | null;
|
|
712
|
+
accessibilityValue: SootSimAccessibilityValue | null;
|
|
713
|
+
hasFocus?: boolean;
|
|
714
|
+
frame: {
|
|
715
|
+
x: number;
|
|
716
|
+
y: number;
|
|
717
|
+
width: number;
|
|
718
|
+
height: number;
|
|
719
|
+
};
|
|
720
|
+
children: PeachAccessibilityNode[];
|
|
721
|
+
}
|
|
722
|
+
export type PeachSwiftUiAccessibility = Pick<PeachAccessibilityNode, 'testID' | 'role'> & Required<Pick<PeachAccessibilityNode, 'inputLabels' | 'traits'>>;
|
|
723
|
+
export type PeachDebugSnapshotOperation = 'snapshot' | 'snapshots' | 'diff' | 'clearSnapshots';
|
|
724
|
+
export interface SootSimTargetMatcher {
|
|
725
|
+
type: 'id' | 'text' | 'label' | 'type' | 'role';
|
|
726
|
+
value: string;
|
|
727
|
+
regexFlags?: string;
|
|
728
|
+
index?: number;
|
|
729
|
+
}
|
|
730
|
+
export interface SootSimTargetObservation extends SootSimNodeInfo {
|
|
731
|
+
tapPoint: {
|
|
732
|
+
x: number;
|
|
733
|
+
y: number;
|
|
734
|
+
} | null;
|
|
735
|
+
sampledAt: number;
|
|
736
|
+
}
|
|
737
|
+
export interface PeachPeerStatsProgress {
|
|
738
|
+
tenant: 'pending' | 'replied' | 'null' | 'rejected';
|
|
739
|
+
shell: 'pending' | 'replied' | 'null' | 'rejected' | 'absent';
|
|
740
|
+
}
|
|
741
|
+
export interface PeachPeerStats {
|
|
742
|
+
replayedFrameCallbacks: number;
|
|
743
|
+
nativeFrameFirstTimestampMs: number | null;
|
|
744
|
+
writeRequests: number;
|
|
745
|
+
batchesSent: number;
|
|
746
|
+
pendingRunWorklets?: number;
|
|
747
|
+
runWorkletsIdleMs: number | null;
|
|
748
|
+
runWorkletsSent?: number;
|
|
749
|
+
runWorkletsDone?: number;
|
|
750
|
+
runWorkletsFailed?: number;
|
|
751
|
+
closureCacheHits?: number;
|
|
752
|
+
closureCacheMisses?: number;
|
|
753
|
+
}
|
|
754
|
+
export interface SootSimTestBridge {
|
|
755
|
+
resolveViewTags?(tags: readonly number[]): MaybeAsync<Record<number, {
|
|
756
|
+
component: string | null;
|
|
757
|
+
sourceChain?: string[];
|
|
758
|
+
}>>;
|
|
759
|
+
dispatchTextInputText?(text: string, nodeId: number): MaybeAsync<GuardedTextInputResult>;
|
|
760
|
+
captureAccessibilityTree(): MaybeAsync<PeachAccessibilityNode[]>;
|
|
761
|
+
startScrollPerformanceTrace(limit?: number): MaybeAsync<void>;
|
|
762
|
+
stopScrollPerformanceTrace(): MaybeAsync<SootSimScrollOffsetSample[]>;
|
|
763
|
+
setShellReanimatedTraceEnabled?(enabled: boolean, reset?: boolean, limit?: number): MaybeAsync<boolean>;
|
|
764
|
+
getShellReanimatedTrace?(reset?: boolean): MaybeAsync<unknown[]>;
|
|
765
|
+
findById(id: string): MaybeAsync<SootSimNodeInfo | null>;
|
|
766
|
+
findByTestId(testId: string): MaybeAsync<SootSimNodeInfo | null>;
|
|
767
|
+
ancestorChainById(id: string): MaybeAsync<SootSimNodeInfo[] | null>;
|
|
768
|
+
ancestorChainByTestId(testId: string): MaybeAsync<SootSimNodeInfo[] | null>;
|
|
769
|
+
findByText(text: string): MaybeAsync<SootSimNodeInfo | null>;
|
|
770
|
+
findByTextOrLabel(text: string): MaybeAsync<SootSimNodeInfo | null>;
|
|
771
|
+
queryMatchingNodes(matcher: SootSimTargetMatcher): MaybeAsync<SootSimNodeInfo[]>;
|
|
772
|
+
observeTapTarget(matcher: SootSimTargetMatcher): MaybeAsync<SootSimTargetObservation | null>;
|
|
773
|
+
resolveTapTarget(nodeId: number): MaybeAsync<SootSimTapTargetInfo | null>;
|
|
774
|
+
verifyTapTargetAt(x: number, y: number, target: SootSimReplayTarget, nativeWindowRoot?: number): MaybeAsync<SootSimTapTargetVerification>;
|
|
775
|
+
debugByText(text: string): MaybeAsync<SootSimDebugNodeInfo[] | null>;
|
|
776
|
+
debugByTestId(testId: string): MaybeAsync<SootSimDebugNodeInfo[] | null>;
|
|
777
|
+
findByLabel(label: string): MaybeAsync<SootSimNodeInfo | null>;
|
|
778
|
+
findByRole(role: string): MaybeAsync<SootSimNodeInfo | null>;
|
|
779
|
+
findAllByRole(role: string): MaybeAsync<SootSimNodeInfo[]>;
|
|
780
|
+
findByA11yState(state: Partial<SootSimAccessibilityState>): MaybeAsync<SootSimNodeInfo | null>;
|
|
781
|
+
findAllByA11yState(state: Partial<SootSimAccessibilityState>): MaybeAsync<SootSimNodeInfo[]>;
|
|
782
|
+
findByHint(hint: string): MaybeAsync<SootSimNodeInfo | null>;
|
|
783
|
+
inspectAt(x: number, y: number, opts?: SootSimInspectPointOptions): MaybeAsync<SootSimInspectInfo | null>;
|
|
784
|
+
inspectHoverAt(x: number, y: number, opts?: SootSimInspectPointOptions): MaybeAsync<SootSimInspectInfo | null>;
|
|
785
|
+
inspectByNodeId(nodeId: number): MaybeAsync<SootSimInspectInfo | null>;
|
|
786
|
+
inspectLastTap(): MaybeAsync<SootSimInspectInfo | null>;
|
|
787
|
+
inspectNeighbor(nodeId: number, direction: SootSimInspectNeighborDirection): MaybeAsync<SootSimInspectInfo | null>;
|
|
788
|
+
inspectSetStyleOverride(nodeId: number, key: string, value: unknown): MaybeAsync<boolean>;
|
|
789
|
+
inspectSetHandlerLogging(nodeId: number, handlerName: string, enabled: boolean): MaybeAsync<boolean>;
|
|
790
|
+
listInspectable(opts?: SootSimListInspectableOptions): MaybeAsync<SootSimInspectInfo[]>;
|
|
791
|
+
listSemanticInspectable(opts?: SootSimListInspectableOptions): MaybeAsync<PeachSemanticInspectInfo[]>;
|
|
792
|
+
inspectTree(): MaybeAsync<SootSimInspectTreeNode[] | null>;
|
|
793
|
+
captureRenderTree?(): MaybeAsync<SootSimRenderTreeSnapshot>;
|
|
794
|
+
beginCaptureTransaction?(): MaybeAsync<SootSimCaptureTransactionReceipt>;
|
|
795
|
+
endCaptureTransaction?(token: number): MaybeAsync<SootSimCaptureTransactionReceipt>;
|
|
796
|
+
captureBoundLongPress?(token: number, x: number, y: number, durationMs?: number, nativeWindowRoot?: number): MaybeAsync<SootSimCaptureBoundLongPressReceipt>;
|
|
797
|
+
captureBoundTap?(token: number, x: number, y: number, nativeWindowRoot?: number): MaybeAsync<SootSimCaptureBoundTapReceipt>;
|
|
798
|
+
debugHitAt(x: number, y: number): MaybeAsync<SootSimDebugNodeInfo[] | null>;
|
|
799
|
+
debugGestureAt(x: number, y: number): MaybeAsync<Record<string, unknown> | null>;
|
|
800
|
+
invokeGestureAt(x: number, y: number, gestureType: string, callback: SootSimGestureCallback): MaybeAsync<boolean>;
|
|
801
|
+
findPressable(): MaybeAsync<SootSimNodeInfo[]>;
|
|
802
|
+
getStyle(id: string): MaybeAsync<Record<string, unknown> | null>;
|
|
803
|
+
getLayout(id: string): MaybeAsync<SootSimLayout | null>;
|
|
804
|
+
getAbsolutePosition(id: string): MaybeAsync<{
|
|
805
|
+
x: number;
|
|
806
|
+
y: number;
|
|
807
|
+
} | null>;
|
|
808
|
+
isVisible(id: string): MaybeAsync<boolean>;
|
|
809
|
+
blurFocusedTextInput(): MaybeAsync<boolean>;
|
|
810
|
+
isTextInputFocused(): MaybeAsync<boolean>;
|
|
811
|
+
getFocusedNode(): MaybeAsync<SootSimFocusedNodeInfo | null>;
|
|
812
|
+
getNodeCount(): MaybeAsync<number>;
|
|
813
|
+
getWindowNodeCount(): MaybeAsync<number>;
|
|
814
|
+
getTreeQuietMs(): MaybeAsync<number>;
|
|
815
|
+
getGeometryRevision(): MaybeAsync<string | null>;
|
|
816
|
+
getCullStats?(reset?: boolean): MaybeAsync<{
|
|
817
|
+
examined: number;
|
|
818
|
+
kept: number;
|
|
819
|
+
skipped: number;
|
|
820
|
+
}>;
|
|
821
|
+
getImageLoaderStats?(reset?: boolean): MaybeAsync<Record<string, unknown>>;
|
|
822
|
+
getFontDebug?(family?: string, fontWeight?: unknown): MaybeAsync<Record<string, unknown>>;
|
|
823
|
+
getIncrementalYogaVerifier?(): MaybeAsync<{
|
|
824
|
+
enabled: boolean;
|
|
825
|
+
runs: number;
|
|
826
|
+
comparedNodes: number;
|
|
827
|
+
diverged: number;
|
|
828
|
+
lastRootId: number | null;
|
|
829
|
+
lastComparedNodes: number;
|
|
830
|
+
lastDivergences: number;
|
|
831
|
+
lastDiffs: string[];
|
|
832
|
+
}>;
|
|
833
|
+
getPeerStats?(reset?: boolean): PeachPeerStats | null | (Promise<PeachPeerStats | null> & {
|
|
834
|
+
peachPeerProgress?: PeachPeerStatsProgress;
|
|
835
|
+
});
|
|
836
|
+
getWorkletSlotStats?(): MaybeAsync<{
|
|
837
|
+
role: 'tenant' | 'shell' | 'host';
|
|
838
|
+
capacity: number;
|
|
839
|
+
nextId: number;
|
|
840
|
+
freeSlots: number;
|
|
841
|
+
freedSlots: number;
|
|
842
|
+
nextObjectId: number;
|
|
843
|
+
freeObjectSlots: number;
|
|
844
|
+
freedObjectSlots: number;
|
|
845
|
+
primitiveAllocs: number;
|
|
846
|
+
objectAllocs: number;
|
|
847
|
+
reusedAllocs: number;
|
|
848
|
+
frees: number;
|
|
849
|
+
listenerSlots: number;
|
|
850
|
+
objectListenerSlots: number;
|
|
851
|
+
objectSlots: number;
|
|
852
|
+
pendingPrimitiveUpdates: number;
|
|
853
|
+
pendingObjectUpdates: number;
|
|
854
|
+
runJSCallbackSent: number;
|
|
855
|
+
runJSCallbackReceived: number;
|
|
856
|
+
runJSCallbackMissing: number;
|
|
857
|
+
eventHandlers: number;
|
|
858
|
+
hasPeer: boolean;
|
|
859
|
+
eventHandlerNames: Array<[string, number]>;
|
|
860
|
+
remoteEventHandlers: number;
|
|
861
|
+
keyboardHandlers: number;
|
|
862
|
+
} | null>;
|
|
863
|
+
queryAll(filter: SootSimTestQueryFilter): MaybeAsync<SootSimNodeInfo[]>;
|
|
864
|
+
queryTextCandidates(opts: SootSimTextCandidatesOptions): MaybeAsync<SootSimTextCandidatesResult>;
|
|
865
|
+
dumpTree(maxDepth?: number, opts?: SootSimDumpTreeOptions): MaybeAsync<string>;
|
|
866
|
+
dumpAccessibilityTree(maxDepth?: number): MaybeAsync<string>;
|
|
867
|
+
debugFind(target: 'sheets' | 'portals' | 'boundaries'): MaybeAsync<unknown>;
|
|
868
|
+
debugSnapshot(operation: PeachDebugSnapshotOperation, labels: string[], target: 'tenant' | 'shell'): MaybeAsync<unknown>;
|
|
869
|
+
waitForTree(): Promise<void>;
|
|
870
|
+
waitForScreenTransitions?(opts?: SootSimScreenTransitionWaitOptions): Promise<SootSimScreenTransitionWaitResult>;
|
|
871
|
+
activatePressAt(x: number, y: number, nodeId?: number): MaybeAsync<Record<string, unknown> | null>;
|
|
872
|
+
activatePressByText(text: string): MaybeAsync<Record<string, unknown> | null>;
|
|
873
|
+
activatePressById(id: string): MaybeAsync<Record<string, unknown> | null>;
|
|
874
|
+
getRequests(limit?: number): MaybeAsync<SootSimRequestEntry[]>;
|
|
875
|
+
getFailedRequests(limit?: number): MaybeAsync<SootSimRequestEntry[]>;
|
|
876
|
+
getRequestCounts(): MaybeAsync<SootSimRequestCounts>;
|
|
877
|
+
clearRequests(): MaybeAsync<void>;
|
|
878
|
+
listAnimations(): MaybeAsync<SootSimAnimationInfo[]>;
|
|
879
|
+
getAnimation(id: number): MaybeAsync<SootSimAnimationInfo | null>;
|
|
880
|
+
stopAnimation(target: number | 'all'): MaybeAsync<number>;
|
|
881
|
+
enableAnimationTrace(target: number | 'all', limit?: number): MaybeAsync<void>;
|
|
882
|
+
disableAnimationTrace(target: number | 'all'): MaybeAsync<void>;
|
|
883
|
+
getAnimationTrace(id: number, limit?: number): MaybeAsync<SootSimAnimationTraceSample[]>;
|
|
884
|
+
listAnimationTraces(): MaybeAsync<SootSimAnimationTraceStatus[]>;
|
|
885
|
+
getRuntimeState(): MaybeAsync<SootSimRuntimeState>;
|
|
886
|
+
getExternalAppState?(): MaybeAsync<Record<string, unknown> | null>;
|
|
887
|
+
scrollToTop(x: number): MaybeAsync<boolean>;
|
|
888
|
+
getScrollState(id: string): MaybeAsync<Record<string, unknown> | null>;
|
|
889
|
+
getScrollStateAt(x: number, y: number): MaybeAsync<Record<string, unknown> | null>;
|
|
890
|
+
getCursorState(): MaybeAsync<SootSimCursorState | null>;
|
|
891
|
+
setCursorCaptureActive(active: boolean): MaybeAsync<void>;
|
|
892
|
+
getLoupeState(): MaybeAsync<SootSimLoupeState>;
|
|
893
|
+
getEditMenuState(): MaybeAsync<SootSimEditMenuState | null>;
|
|
894
|
+
getTextSelection(id: string): MaybeAsync<SootSimTextSelection | null>;
|
|
895
|
+
getTextSelectionHandles(id: string): MaybeAsync<SootSimTextSelectionHandles | null>;
|
|
896
|
+
getTextInputDisplayText(id: string): MaybeAsync<string | null>;
|
|
897
|
+
getTextInputValue(id: string): MaybeAsync<string | null>;
|
|
898
|
+
getTextInputDisplayColor(id: string): MaybeAsync<string | null>;
|
|
899
|
+
getImageState(nodeId: number): MaybeAsync<Record<string, unknown> | null>;
|
|
900
|
+
scrollTo(target: string | number | {
|
|
901
|
+
id?: string;
|
|
902
|
+
nodeId?: number;
|
|
903
|
+
}, x: number, y: number, animated?: boolean): MaybeAsync<SootSimScrollToResult>;
|
|
904
|
+
workerDebugState(): MaybeAsync<Record<string, unknown>>;
|
|
905
|
+
screenshot(): Promise<string>;
|
|
906
|
+
tap?(x: number, y: number, target?: SootSimReplayTarget): MaybeAsync<SootSimTapResult>;
|
|
907
|
+
longPress?(x: number, y: number, durationMs?: number, nativeWindowRoot?: number): MaybeAsync<boolean>;
|
|
908
|
+
captureBoundLongPress?(token: number, x: number, y: number, durationMs?: number, nativeWindowRoot?: number): MaybeAsync<SootSimCaptureBoundLongPressReceipt>;
|
|
909
|
+
captureBoundTap?(token: number, x: number, y: number, nativeWindowRoot?: number): MaybeAsync<SootSimCaptureBoundTapReceipt>;
|
|
910
|
+
drag?(fromX: number, fromY: number, toX: number, toY: number, steps?: number, stepMs?: number): MaybeAsync<boolean>;
|
|
911
|
+
pinch?(fromX1: number, fromY1: number, fromX2: number, fromY2: number, toX1: number, toY1: number, toX2: number, toY2: number, steps?: number, stepMs?: number): MaybeAsync<boolean>;
|
|
912
|
+
longPress?(x: number, y: number, durationMs?: number, nativeWindowRoot?: number): MaybeAsync<boolean>;
|
|
913
|
+
touchDown?(x: number, y: number, pointerId?: number, nativeWindowRoot?: number, timestamp?: number): MaybeAsync<boolean>;
|
|
914
|
+
touchMove?(x: number, y: number, pointerId?: number, nativeWindowRoot?: number, timestamp?: number): MaybeAsync<boolean>;
|
|
915
|
+
touchUp?(x: number, y: number, pointerId?: number, nativeWindowRoot?: number, timestamp?: number): MaybeAsync<boolean>;
|
|
916
|
+
touchCancel?(pointerId?: number, timestamp?: number): MaybeAsync<boolean>;
|
|
917
|
+
settleInteractionRelease?(): MaybeAsync<void>;
|
|
918
|
+
openDeepLink(url: string): MaybeAsync<{
|
|
919
|
+
ok: boolean;
|
|
920
|
+
error?: string;
|
|
921
|
+
}>;
|
|
922
|
+
getRouteInfo?(): MaybeAsync<SootSimRouteInfo>;
|
|
923
|
+
undeclaredScreen?(href: string): MaybeAsync<SootSimUndeclaredScreen | null>;
|
|
924
|
+
pushRoute?(href: string): MaybeAsync<boolean>;
|
|
925
|
+
replaceRoute?(href: string): MaybeAsync<boolean>;
|
|
926
|
+
goBackRoute?(): MaybeAsync<boolean>;
|
|
927
|
+
getFocusKeyboardSnapshot?(): MaybeAsync<Record<string, unknown> | null>;
|
|
928
|
+
getScrollSnapshots?(): MaybeAsync<Array<Record<string, unknown>>>;
|
|
929
|
+
getNavigationSnapshot?(): MaybeAsync<Record<string, unknown> | null>;
|
|
930
|
+
isNavigationIdle?(): MaybeAsync<boolean>;
|
|
931
|
+
getSurfaceMetricsSnapshot?(): MaybeAsync<Record<string, unknown> | null>;
|
|
932
|
+
permissionListApps?(): MaybeAsync<readonly SystemPermissionApp[]>;
|
|
933
|
+
permissionGuestAppId?(): MaybeAsync<string>;
|
|
934
|
+
permissionGetAppSettings?(appId: string): MaybeAsync<AppSettingsSnapshot>;
|
|
935
|
+
permissionSetAppPermission?(appId: string, kind: SystemPermissionKind, mutation: SystemPermissionMutation): MaybeAsync<AppSettingsSnapshot>;
|
|
936
|
+
permissionResetApp?(appId: string): MaybeAsync<void>;
|
|
937
|
+
clearKeychain?(): MaybeAsync<void>;
|
|
938
|
+
evalInTenant?(code: string): MaybeAsync<{
|
|
939
|
+
ok: boolean;
|
|
940
|
+
value?: unknown;
|
|
941
|
+
error?: string;
|
|
942
|
+
}>;
|
|
943
|
+
armNodeY(nodeId: number, frames?: number): MaybeAsync<void>;
|
|
944
|
+
recordNodeY(): MaybeAsync<void>;
|
|
945
|
+
takeNodeY(): MaybeAsync<number[] | null>;
|
|
946
|
+
}
|
|
947
|
+
type BridgeMethodKeys<T> = {
|
|
948
|
+
[K in keyof T]-?: NonNullable<T[K]> extends (...args: any[]) => unknown ? K : never;
|
|
949
|
+
}[keyof T];
|
|
950
|
+
export type SootSimTestBridgeMethod = Extract<BridgeMethodKeys<SootSimTestBridge>, string>;
|
|
951
|
+
export type SootSimTestBridgeArgs<M extends SootSimTestBridgeMethod> = NonNullable<SootSimTestBridge[M]> extends (...args: infer A) => unknown ? A : never;
|
|
952
|
+
export type SootSimTestBridgeResult<M extends SootSimTestBridgeMethod> = NonNullable<SootSimTestBridge[M]> extends (...args: any[]) => infer R ? Awaited<R> : never;
|
|
953
|
+
export interface SootSimInteractBridge {
|
|
954
|
+
tap(x: number, y: number, target?: SootSimReplayTarget): MaybeAsync<SootSimTapResult>;
|
|
955
|
+
doubleTap?(x: number, y: number, gapMs?: number): MaybeAsync<boolean>;
|
|
956
|
+
drag(fromX: number, fromY: number, toX: number, toY: number, steps?: number, stepMs?: number): MaybeAsync<boolean>;
|
|
957
|
+
pinch(fromX1: number, fromY1: number, fromX2: number, fromY2: number, toX1: number, toY1: number, toX2: number, toY2: number, steps?: number, stepMs?: number): MaybeAsync<boolean>;
|
|
958
|
+
longPress?(x: number, y: number, durationMs?: number, nativeWindowRoot?: number): MaybeAsync<boolean>;
|
|
959
|
+
captureBoundLongPress?(token: number, x: number, y: number, durationMs?: number, nativeWindowRoot?: number): MaybeAsync<SootSimCaptureBoundLongPressReceipt>;
|
|
960
|
+
captureBoundTap?(token: number, x: number, y: number, nativeWindowRoot?: number): MaybeAsync<SootSimCaptureBoundTapReceipt>;
|
|
961
|
+
touchDown?(x: number, y: number, pointerId?: number, timestamp?: number): MaybeAsync<boolean>;
|
|
962
|
+
touchMove?(x: number, y: number, pointerId?: number, timestamp?: number): MaybeAsync<boolean>;
|
|
963
|
+
touchUp?(x: number, y: number, pointerId?: number, timestamp?: number): MaybeAsync<boolean>;
|
|
964
|
+
touchCancel?(pointerId?: number, timestamp?: number): MaybeAsync<boolean>;
|
|
965
|
+
}
|
|
966
|
+
export interface GuardedTextInputResult {
|
|
967
|
+
handled: boolean;
|
|
968
|
+
secureTextEntry: boolean;
|
|
969
|
+
}
|
|
970
|
+
export interface TextInputEditRange {
|
|
971
|
+
start: number;
|
|
972
|
+
end: number;
|
|
973
|
+
}
|
|
974
|
+
export type TextInputEditCommand = {
|
|
975
|
+
kind: 'compositionStart';
|
|
976
|
+
range: TextInputEditRange;
|
|
977
|
+
} | {
|
|
978
|
+
kind: 'replace';
|
|
979
|
+
range: TextInputEditRange;
|
|
980
|
+
text: string;
|
|
981
|
+
composition: 'none' | 'update' | 'commit';
|
|
982
|
+
key?: string;
|
|
983
|
+
};
|
|
984
|
+
export declare function isTextInputEditCommand(value: unknown): value is TextInputEditCommand;
|
|
985
|
+
export interface SootSimKeyboardBridge {
|
|
986
|
+
[key: string]: unknown;
|
|
987
|
+
type?(text: string): MaybeAsync<void>;
|
|
988
|
+
typeInto?(text: string, nodeId: number): MaybeAsync<GuardedTextInputResult>;
|
|
989
|
+
press?(key: string): MaybeAsync<void>;
|
|
990
|
+
dispatchKey?(key: string): MaybeAsync<void>;
|
|
991
|
+
edit?(command: TextInputEditCommand): MaybeAsync<boolean>;
|
|
992
|
+
show?(): MaybeAsync<void>;
|
|
993
|
+
dismiss?(): MaybeAsync<boolean>;
|
|
994
|
+
isVisible?(): MaybeAsync<boolean>;
|
|
995
|
+
hasHostedEditorFocus?(): MaybeAsync<boolean>;
|
|
996
|
+
getMode?(): MaybeAsync<string>;
|
|
997
|
+
getLayout?(): {
|
|
998
|
+
spec: {
|
|
999
|
+
secureTextEntry: boolean;
|
|
1000
|
+
} | null;
|
|
1001
|
+
};
|
|
1002
|
+
getKeyRect?(label: string): MaybeAsync<{
|
|
1003
|
+
x: number;
|
|
1004
|
+
y: number;
|
|
1005
|
+
width: number;
|
|
1006
|
+
height: number;
|
|
1007
|
+
} | null>;
|
|
1008
|
+
}
|
|
1009
|
+
export interface SootSimDetectedBarcode {
|
|
1010
|
+
format: string;
|
|
1011
|
+
rawValue: string;
|
|
1012
|
+
boundingBox: {
|
|
1013
|
+
x: number;
|
|
1014
|
+
y: number;
|
|
1015
|
+
width: number;
|
|
1016
|
+
height: number;
|
|
1017
|
+
};
|
|
1018
|
+
cornerPoints: Array<{
|
|
1019
|
+
x: number;
|
|
1020
|
+
y: number;
|
|
1021
|
+
}>;
|
|
1022
|
+
}
|
|
1023
|
+
export interface PeachCameraPhotoOptions {
|
|
1024
|
+
mimeType?: string;
|
|
1025
|
+
quality?: number;
|
|
1026
|
+
isMirrored?: boolean;
|
|
1027
|
+
}
|
|
1028
|
+
export interface PeachCameraPhotoResult {
|
|
1029
|
+
dataUri: string;
|
|
1030
|
+
width: number;
|
|
1031
|
+
height: number;
|
|
1032
|
+
timestamp: number;
|
|
1033
|
+
}
|
|
1034
|
+
export interface PeachCameraRecordingOptions {
|
|
1035
|
+
recordingId?: string;
|
|
1036
|
+
persistent?: PeachCameraSourceConfiguration;
|
|
1037
|
+
mimeType: string;
|
|
1038
|
+
containerFormat?: 'mp4' | 'mov';
|
|
1039
|
+
audio: boolean;
|
|
1040
|
+
videoBitsPerSecond?: number;
|
|
1041
|
+
maxDuration?: number;
|
|
1042
|
+
maxFileSize?: number;
|
|
1043
|
+
}
|
|
1044
|
+
export type PeachCameraRecordingCommand = 'stop' | 'pause' | 'resume' | 'cancel' | 'bind' | 'unbind';
|
|
1045
|
+
export type PeachCameraRecordingEvent = {
|
|
1046
|
+
type: 'started' | 'paused' | 'resumed';
|
|
1047
|
+
} | {
|
|
1048
|
+
type: 'progress';
|
|
1049
|
+
duration: number;
|
|
1050
|
+
fileSize: number;
|
|
1051
|
+
} | {
|
|
1052
|
+
type: 'finished';
|
|
1053
|
+
blob: Blob;
|
|
1054
|
+
duration: number;
|
|
1055
|
+
width: number;
|
|
1056
|
+
height: number;
|
|
1057
|
+
reason: 'stopped' | 'max-duration-reached' | 'max-file-size-reached';
|
|
1058
|
+
} | {
|
|
1059
|
+
type: 'cancelled';
|
|
1060
|
+
} | {
|
|
1061
|
+
type: 'error';
|
|
1062
|
+
message: string;
|
|
1063
|
+
};
|
|
1064
|
+
export interface PeachCameraSourceInfo {
|
|
1065
|
+
settings: MediaTrackSettings;
|
|
1066
|
+
capabilities: MediaTrackCapabilities;
|
|
1067
|
+
}
|
|
1068
|
+
export interface PeachCameraSourceConfiguration {
|
|
1069
|
+
width: number;
|
|
1070
|
+
height: number;
|
|
1071
|
+
frameRate?: number;
|
|
1072
|
+
}
|
|
1073
|
+
export interface PeachCameraFrameResult {
|
|
1074
|
+
codedWidth: number;
|
|
1075
|
+
codedHeight: number;
|
|
1076
|
+
visibleX: number;
|
|
1077
|
+
visibleY: number;
|
|
1078
|
+
producerGeneration: bigint;
|
|
1079
|
+
format: VideoPixelFormat;
|
|
1080
|
+
width: number;
|
|
1081
|
+
height: number;
|
|
1082
|
+
timestamp: number;
|
|
1083
|
+
layout: PlaneLayout[];
|
|
1084
|
+
colorSpace: VideoColorSpaceInit;
|
|
1085
|
+
pixels: ArrayBuffer;
|
|
1086
|
+
}
|
|
1087
|
+
export interface SootSimCameraBridge {
|
|
1088
|
+
configureSource(configuration: PeachCameraSourceConfiguration): Promise<void>;
|
|
1089
|
+
captureFrame(format: 'source' | 'BGRA'): Promise<PeachCameraFrameResult>;
|
|
1090
|
+
getSourceInfo(facing: 'user' | 'environment'): Promise<PeachCameraSourceInfo>;
|
|
1091
|
+
startCamera(facing: 'user' | 'environment', onFrame: (bitmap: ImageBitmap, width: number, height: number) => void, configuration?: PeachCameraSourceConfiguration): Promise<{
|
|
1092
|
+
width: number;
|
|
1093
|
+
height: number;
|
|
1094
|
+
}>;
|
|
1095
|
+
capturePhoto(options?: PeachCameraPhotoOptions): Promise<PeachCameraPhotoResult | null>;
|
|
1096
|
+
stopCamera(): Promise<void>;
|
|
1097
|
+
startRecording(options: PeachCameraRecordingOptions, onEvent: (event: PeachCameraRecordingEvent) => void): Promise<void>;
|
|
1098
|
+
commandRecording(command: PeachCameraRecordingCommand, recordingId?: string): Promise<void>;
|
|
1099
|
+
isCameraActive?(): boolean;
|
|
1100
|
+
startBarcodeScan(formats: string[], onResults: (barcodes: SootSimDetectedBarcode[], videoWidth: number, videoHeight: number) => void): Promise<void>;
|
|
1101
|
+
stopBarcodeScan(): Promise<void>;
|
|
1102
|
+
}
|
|
1103
|
+
export type SootSimVideoSource = {
|
|
1104
|
+
uri?: string;
|
|
1105
|
+
headers?: Record<string, string>;
|
|
1106
|
+
};
|
|
1107
|
+
export type SootSimVideoStatus = 'idle' | 'loading' | 'readyToPlay' | 'error';
|
|
1108
|
+
export type SootSimVideoEvent = {
|
|
1109
|
+
name: 'statusChange';
|
|
1110
|
+
payload: {
|
|
1111
|
+
status: SootSimVideoStatus;
|
|
1112
|
+
oldStatus?: SootSimVideoStatus;
|
|
1113
|
+
error?: {
|
|
1114
|
+
message: string;
|
|
1115
|
+
};
|
|
1116
|
+
};
|
|
1117
|
+
} | {
|
|
1118
|
+
name: 'playingChange';
|
|
1119
|
+
payload: {
|
|
1120
|
+
isPlaying: boolean;
|
|
1121
|
+
oldIsPlaying?: boolean;
|
|
1122
|
+
};
|
|
1123
|
+
} | {
|
|
1124
|
+
name: 'playbackRateChange';
|
|
1125
|
+
payload: {
|
|
1126
|
+
playbackRate: number;
|
|
1127
|
+
oldPlaybackRate?: number;
|
|
1128
|
+
};
|
|
1129
|
+
} | {
|
|
1130
|
+
name: 'volumeChange';
|
|
1131
|
+
payload: {
|
|
1132
|
+
volume: number;
|
|
1133
|
+
oldVolume?: number;
|
|
1134
|
+
};
|
|
1135
|
+
} | {
|
|
1136
|
+
name: 'mutedChange';
|
|
1137
|
+
payload: {
|
|
1138
|
+
muted: boolean;
|
|
1139
|
+
oldMuted?: boolean;
|
|
1140
|
+
};
|
|
1141
|
+
} | {
|
|
1142
|
+
name: 'playToEnd';
|
|
1143
|
+
payload: undefined;
|
|
1144
|
+
} | {
|
|
1145
|
+
name: 'timeUpdate';
|
|
1146
|
+
payload: {
|
|
1147
|
+
currentTime: number;
|
|
1148
|
+
currentLiveTimestamp: null;
|
|
1149
|
+
currentOffsetFromLive: null;
|
|
1150
|
+
bufferedPosition: number;
|
|
1151
|
+
};
|
|
1152
|
+
} | {
|
|
1153
|
+
name: 'sourceChange';
|
|
1154
|
+
payload: {
|
|
1155
|
+
source: SootSimVideoSource | null;
|
|
1156
|
+
oldSource?: SootSimVideoSource | null;
|
|
1157
|
+
};
|
|
1158
|
+
} | {
|
|
1159
|
+
name: 'sourceLoad';
|
|
1160
|
+
payload: {
|
|
1161
|
+
videoSource: SootSimVideoSource | null;
|
|
1162
|
+
duration: number;
|
|
1163
|
+
availableVideoTracks: [];
|
|
1164
|
+
availableSubtitleTracks: [];
|
|
1165
|
+
availableAudioTracks: [];
|
|
1166
|
+
naturalSize: {
|
|
1167
|
+
width: number;
|
|
1168
|
+
height: number;
|
|
1169
|
+
};
|
|
1170
|
+
};
|
|
1171
|
+
} | {
|
|
1172
|
+
name: 'seeked';
|
|
1173
|
+
payload: {
|
|
1174
|
+
currentTime: number;
|
|
1175
|
+
};
|
|
1176
|
+
};
|
|
1177
|
+
export interface SootSimVideoBridge {
|
|
1178
|
+
createPlayer(instanceId: number, source: SootSimVideoSource | null, onEvent: (event: SootSimVideoEvent) => void, onFrame: (bitmap: ImageBitmap, width: number, height: number) => void): void;
|
|
1179
|
+
command(instanceId: number, command: 'play' | 'pause' | 'replay' | 'seekBy' | 'replace', value?: number | SootSimVideoSource | null): void;
|
|
1180
|
+
setProperty(instanceId: number, property: 'currentTime' | 'loop' | 'muted' | 'playbackRate' | 'preservesPitch' | 'timeUpdateEventInterval' | 'timeUpdatesWhilePaused' | 'volume', value: number | boolean): void;
|
|
1181
|
+
releasePlayer(instanceId: number): void;
|
|
1182
|
+
}
|
|
1183
|
+
export type SootSimSpeechSynthesisUtterance = {
|
|
1184
|
+
text: string;
|
|
1185
|
+
lang: string;
|
|
1186
|
+
rate: number;
|
|
1187
|
+
pitch: number;
|
|
1188
|
+
volume: number;
|
|
1189
|
+
};
|
|
1190
|
+
export type SootSimSpeechSynthesisEvent = {
|
|
1191
|
+
type: 'start';
|
|
1192
|
+
} | {
|
|
1193
|
+
type: 'boundary';
|
|
1194
|
+
charIndex: number;
|
|
1195
|
+
charLength: number;
|
|
1196
|
+
} | {
|
|
1197
|
+
type: 'end';
|
|
1198
|
+
} | {
|
|
1199
|
+
type: 'error';
|
|
1200
|
+
error: string;
|
|
1201
|
+
};
|
|
1202
|
+
export interface SootSimSpeechSynthesisBridge {
|
|
1203
|
+
speak(utterance: SootSimSpeechSynthesisUtterance, onEvent: (event: SootSimSpeechSynthesisEvent) => void): void;
|
|
1204
|
+
pause(): void;
|
|
1205
|
+
resume(): void;
|
|
1206
|
+
cancel(): void;
|
|
1207
|
+
}
|
|
1208
|
+
export interface SootSimAudioRecorderOptions {
|
|
1209
|
+
isMeteringEnabled?: boolean;
|
|
1210
|
+
bitRate?: number;
|
|
1211
|
+
bitsPerSecond?: number;
|
|
1212
|
+
mimeType?: string;
|
|
1213
|
+
extension?: string;
|
|
1214
|
+
sampleRate?: number;
|
|
1215
|
+
numberOfChannels?: number;
|
|
1216
|
+
deviceId?: string;
|
|
1217
|
+
}
|
|
1218
|
+
export type SootSimAudioRecorderCommand = 'inputs' | 'prepare' | 'record' | 'pause' | 'status' | 'stop';
|
|
1219
|
+
export interface SootSimAudioRecorderSnapshot {
|
|
1220
|
+
state: 'inactive' | 'recording' | 'paused' | 'stopped';
|
|
1221
|
+
durationMs: number;
|
|
1222
|
+
inputs: Array<{
|
|
1223
|
+
uid: string;
|
|
1224
|
+
name: string;
|
|
1225
|
+
type: string;
|
|
1226
|
+
}>;
|
|
1227
|
+
inputId?: string;
|
|
1228
|
+
metering?: number;
|
|
1229
|
+
blob?: Blob;
|
|
1230
|
+
}
|
|
1231
|
+
export interface SootSimAudioRecorderBridge {
|
|
1232
|
+
subscribe(id: string, listener: (snapshot: SootSimAudioRecorderSnapshot) => void): () => void;
|
|
1233
|
+
request(id: string, command: SootSimAudioRecorderCommand, options?: SootSimAudioRecorderOptions): Promise<SootSimAudioRecorderSnapshot>;
|
|
1234
|
+
release(id: string): void;
|
|
1235
|
+
}
|
|
1236
|
+
export interface SootSimMediaSessionBridge {
|
|
1237
|
+
readonly session: Pick<MediaSession, 'metadata' | 'playbackState' | 'setActionHandler' | 'setPositionState'>;
|
|
1238
|
+
readonly MediaMetadata: new (init?: MediaMetadataInit) => MediaMetadata;
|
|
1239
|
+
reset(): void;
|
|
1240
|
+
}
|
|
1241
|
+
export interface SootSimClipboardImage {
|
|
1242
|
+
bytes: ArrayBuffer;
|
|
1243
|
+
mimeType: string;
|
|
1244
|
+
width: number;
|
|
1245
|
+
height: number;
|
|
1246
|
+
scale: number;
|
|
1247
|
+
}
|
|
1248
|
+
export interface SootSimClipboardChange {
|
|
1249
|
+
changeCount: number;
|
|
1250
|
+
types: string[];
|
|
1251
|
+
contentTypes: string[];
|
|
1252
|
+
}
|
|
1253
|
+
export interface SootSimClipboardBridge {
|
|
1254
|
+
readText(): Promise<string>;
|
|
1255
|
+
writeText(text: string): Promise<void>;
|
|
1256
|
+
readImage(): Promise<SootSimClipboardImage | null>;
|
|
1257
|
+
writeImage(image: {
|
|
1258
|
+
bytes: ArrayBuffer;
|
|
1259
|
+
mimeType: string;
|
|
1260
|
+
kind: 'bitmap' | 'file';
|
|
1261
|
+
scale?: number;
|
|
1262
|
+
types?: string[];
|
|
1263
|
+
}): Promise<void>;
|
|
1264
|
+
subscribe(listener: (change: SootSimClipboardChange) => void): () => void;
|
|
1265
|
+
}
|
|
1266
|
+
export interface SootSimHostStorageBridge {
|
|
1267
|
+
snapshotLocalStorageEntries(scopeUrl: string): Promise<Array<[string, string]>>;
|
|
1268
|
+
}
|
|
1269
|
+
export interface SootSimImagePickerAsset {
|
|
1270
|
+
uri: string;
|
|
1271
|
+
width: number;
|
|
1272
|
+
height: number;
|
|
1273
|
+
fileName?: string;
|
|
1274
|
+
mimeType?: string;
|
|
1275
|
+
fileSize?: number;
|
|
1276
|
+
mediaType?: 'image' | 'video';
|
|
1277
|
+
duration?: number;
|
|
1278
|
+
}
|
|
1279
|
+
export interface SootSimImagePickerResult {
|
|
1280
|
+
continuing?: boolean;
|
|
1281
|
+
error?: string;
|
|
1282
|
+
canceled: boolean;
|
|
1283
|
+
assets: SootSimImagePickerAsset[] | null;
|
|
1284
|
+
}
|
|
1285
|
+
export interface SootSimImagePickerOptions {
|
|
1286
|
+
continuous?: boolean;
|
|
1287
|
+
preferredItemEncoding?: 'automatic' | 'current' | 'compatible';
|
|
1288
|
+
mediaTypes?: 'images' | 'videos' | 'all';
|
|
1289
|
+
allowsMultiple?: boolean;
|
|
1290
|
+
selectionLimit?: number;
|
|
1291
|
+
ordered?: boolean;
|
|
1292
|
+
}
|
|
1293
|
+
export interface ShellNativeEvaluationOwner {
|
|
1294
|
+
readonly kind: 'shell';
|
|
1295
|
+
readonly appId: string;
|
|
1296
|
+
readonly surfaceId: 'app:one' | 'app:two';
|
|
1297
|
+
readonly generation: number;
|
|
1298
|
+
}
|
|
1299
|
+
export interface SootSimImagePickerBridge {
|
|
1300
|
+
readonly cameraAvailable: boolean;
|
|
1301
|
+
captureFromCamera(signal?: AbortSignal, owner?: ShellNativeEvaluationOwner): Promise<SootSimImagePickerResult>;
|
|
1302
|
+
pickFromLibrary(options?: SootSimImagePickerOptions, signal?: AbortSignal, owner?: ShellNativeEvaluationOwner, onSelection?: (result: SootSimImagePickerResult) => void): Promise<SootSimImagePickerResult>;
|
|
1303
|
+
}
|
|
1304
|
+
export interface SootSimImageCropperSpec {
|
|
1305
|
+
previewUri: string;
|
|
1306
|
+
imageWidth: number;
|
|
1307
|
+
imageHeight: number;
|
|
1308
|
+
aspectRatio: number;
|
|
1309
|
+
shape: 'rectangle' | 'circle';
|
|
1310
|
+
}
|
|
1311
|
+
export interface SootSimImageCropperBridge {
|
|
1312
|
+
present(spec: SootSimImageCropperSpec): Promise<{
|
|
1313
|
+
done: boolean;
|
|
1314
|
+
}>;
|
|
1315
|
+
}
|
|
1316
|
+
export interface SootSimAndroidPickerDay {
|
|
1317
|
+
year: number;
|
|
1318
|
+
month: number;
|
|
1319
|
+
day: number;
|
|
1320
|
+
}
|
|
1321
|
+
export interface SootSimAndroidPickerButton {
|
|
1322
|
+
label?: string;
|
|
1323
|
+
textColor?: number;
|
|
1324
|
+
}
|
|
1325
|
+
export interface SootSimAndroidDateTimePickerSpec extends SootSimAndroidPickerDay {
|
|
1326
|
+
dialog: 'date' | 'time';
|
|
1327
|
+
display: 'default' | 'spinner';
|
|
1328
|
+
hour: number;
|
|
1329
|
+
minute: number;
|
|
1330
|
+
is24Hour: boolean;
|
|
1331
|
+
minimumDay?: SootSimAndroidPickerDay;
|
|
1332
|
+
maximumDay?: SootSimAndroidPickerDay;
|
|
1333
|
+
minuteInterval?: number;
|
|
1334
|
+
firstDayOfWeek?: number;
|
|
1335
|
+
startOnYearSelection?: boolean;
|
|
1336
|
+
buttons: {
|
|
1337
|
+
positive?: SootSimAndroidPickerButton;
|
|
1338
|
+
negative?: SootSimAndroidPickerButton;
|
|
1339
|
+
neutral?: SootSimAndroidPickerButton;
|
|
1340
|
+
};
|
|
1341
|
+
}
|
|
1342
|
+
export type SootSimAndroidDateTimePickerResult = ({
|
|
1343
|
+
action: 'set';
|
|
1344
|
+
hour: number;
|
|
1345
|
+
minute: number;
|
|
1346
|
+
} & SootSimAndroidPickerDay) | {
|
|
1347
|
+
action: 'neutral';
|
|
1348
|
+
} | {
|
|
1349
|
+
action: 'dismissed';
|
|
1350
|
+
};
|
|
1351
|
+
export interface SootSimAndroidDateTimePickerBridge {
|
|
1352
|
+
present(spec: SootSimAndroidDateTimePickerSpec, signal: AbortSignal): {
|
|
1353
|
+
result: Promise<SootSimAndroidDateTimePickerResult>;
|
|
1354
|
+
update: (spec: SootSimAndroidDateTimePickerSpec) => void;
|
|
1355
|
+
};
|
|
1356
|
+
}
|
|
1357
|
+
export type SystemPermissionKind = 'app-tracking-transparency' | 'bluetooth' | 'calendars' | 'camera' | 'contacts' | 'face-id' | 'local-network' | 'location-always' | 'location-when-in-use' | 'media-library' | 'microphone' | 'motion' | 'notifications' | 'photo-library' | 'photo-library-add-only' | 'reminders' | 'siri' | 'speech-recognition';
|
|
1358
|
+
export type SystemPermissionStatus = 'not-determined' | 'restricted' | 'denied' | 'authorized' | 'limited' | 'provisional' | 'ephemeral' | 'unavailable';
|
|
1359
|
+
export type SystemPermissionLocationAccuracy = 'full' | 'reduced';
|
|
1360
|
+
export type SystemPermissionPlatform = 'ios' | 'android';
|
|
1361
|
+
export type AppPreferenceValue = string | number | boolean;
|
|
1362
|
+
export type AppSettingsSpecifier = {
|
|
1363
|
+
type: 'group';
|
|
1364
|
+
title?: string;
|
|
1365
|
+
footer?: string;
|
|
1366
|
+
} | {
|
|
1367
|
+
type: 'toggle';
|
|
1368
|
+
key: string;
|
|
1369
|
+
title: string;
|
|
1370
|
+
defaultValue: boolean;
|
|
1371
|
+
currentValue: boolean;
|
|
1372
|
+
} | {
|
|
1373
|
+
type: 'text';
|
|
1374
|
+
key: string;
|
|
1375
|
+
title: string;
|
|
1376
|
+
defaultValue: string;
|
|
1377
|
+
currentValue: string;
|
|
1378
|
+
placeholder?: string;
|
|
1379
|
+
secure?: boolean;
|
|
1380
|
+
keyboardType?: 'alphabet' | 'numbers-and-punctuation' | 'number-pad' | 'url' | 'email-address' | 'name-phone-pad' | 'ascii-capable';
|
|
1381
|
+
autocapitalization?: 'none' | 'sentences' | 'words' | 'all-characters';
|
|
1382
|
+
autocorrection?: boolean;
|
|
1383
|
+
} | {
|
|
1384
|
+
type: 'multi-value';
|
|
1385
|
+
key: string;
|
|
1386
|
+
title: string;
|
|
1387
|
+
defaultValue: AppPreferenceValue;
|
|
1388
|
+
currentValue: AppPreferenceValue;
|
|
1389
|
+
values: readonly AppPreferenceValue[];
|
|
1390
|
+
titles: readonly string[];
|
|
1391
|
+
} | {
|
|
1392
|
+
type: 'title-value';
|
|
1393
|
+
key: string;
|
|
1394
|
+
title: string;
|
|
1395
|
+
defaultValue: AppPreferenceValue;
|
|
1396
|
+
currentValue: AppPreferenceValue;
|
|
1397
|
+
} | {
|
|
1398
|
+
type: 'slider';
|
|
1399
|
+
key: string;
|
|
1400
|
+
title?: string;
|
|
1401
|
+
defaultValue: number;
|
|
1402
|
+
currentValue: number;
|
|
1403
|
+
minimumValue: number;
|
|
1404
|
+
maximumValue: number;
|
|
1405
|
+
minimumValueImage?: string;
|
|
1406
|
+
maximumValueImage?: string;
|
|
1407
|
+
} | {
|
|
1408
|
+
type: 'child-pane';
|
|
1409
|
+
title: string;
|
|
1410
|
+
file?: string;
|
|
1411
|
+
specifiers: readonly AppSettingsSpecifier[];
|
|
1412
|
+
};
|
|
1413
|
+
export interface SystemNotificationSettings {
|
|
1414
|
+
authorizationStatus: SystemPermissionStatus;
|
|
1415
|
+
alerts: boolean;
|
|
1416
|
+
sounds: boolean;
|
|
1417
|
+
badges: boolean;
|
|
1418
|
+
lockScreen: boolean;
|
|
1419
|
+
notificationCenter: boolean;
|
|
1420
|
+
banners: boolean;
|
|
1421
|
+
bannerStyle: 'temporary' | 'persistent';
|
|
1422
|
+
previews: 'always' | 'whenUnlocked' | 'never';
|
|
1423
|
+
grouping: 'automatic' | 'byApp' | 'off';
|
|
1424
|
+
criticalAlerts: boolean;
|
|
1425
|
+
announcements: boolean;
|
|
1426
|
+
scheduledDelivery: boolean;
|
|
1427
|
+
timeSensitive: boolean;
|
|
1428
|
+
}
|
|
1429
|
+
export interface SystemPermissionState {
|
|
1430
|
+
kind: SystemPermissionKind;
|
|
1431
|
+
status: SystemPermissionStatus;
|
|
1432
|
+
canAskAgain: boolean;
|
|
1433
|
+
requested: boolean;
|
|
1434
|
+
authorizationScope?: 'persistent' | 'once';
|
|
1435
|
+
locationAccuracy?: SystemPermissionLocationAccuracy;
|
|
1436
|
+
limitedResourceIds?: readonly string[];
|
|
1437
|
+
notifications?: SystemNotificationSettings;
|
|
1438
|
+
}
|
|
1439
|
+
export interface SystemPermissionDescriptor {
|
|
1440
|
+
kind: SystemPermissionKind;
|
|
1441
|
+
purpose?: string;
|
|
1442
|
+
notificationOptions?: readonly ('alert' | 'badge' | 'sound' | 'carPlay' | 'criticalAlert' | 'provisional' | 'providesAppSettings')[];
|
|
1443
|
+
}
|
|
1444
|
+
export interface SystemPermissionApp {
|
|
1445
|
+
appId: string;
|
|
1446
|
+
bundleIdentifier?: string;
|
|
1447
|
+
displayName: string;
|
|
1448
|
+
version?: string;
|
|
1449
|
+
icon?: string;
|
|
1450
|
+
settingsBundle?: readonly AppSettingsSpecifier[];
|
|
1451
|
+
settingsStorageScopeUrl?: string;
|
|
1452
|
+
}
|
|
1453
|
+
export interface SystemPermissionRecord extends SystemPermissionState {
|
|
1454
|
+
appId: string;
|
|
1455
|
+
platform: SystemPermissionPlatform;
|
|
1456
|
+
updatedAt: number;
|
|
1457
|
+
}
|
|
1458
|
+
export interface AppPermissionSetting {
|
|
1459
|
+
kind: SystemPermissionKind;
|
|
1460
|
+
status: SystemPermissionStatus;
|
|
1461
|
+
mutable: boolean;
|
|
1462
|
+
locationAccuracy?: SystemPermissionLocationAccuracy;
|
|
1463
|
+
}
|
|
1464
|
+
export interface AppSettingsSnapshot {
|
|
1465
|
+
appId: string;
|
|
1466
|
+
platform: SystemPermissionPlatform;
|
|
1467
|
+
permissions: readonly AppPermissionSetting[];
|
|
1468
|
+
notifications?: SystemNotificationSettings;
|
|
1469
|
+
declaredSettings?: {
|
|
1470
|
+
specifiers: readonly AppSettingsSpecifier[];
|
|
1471
|
+
values: Readonly<Record<string, AppPreferenceValue>>;
|
|
1472
|
+
};
|
|
1473
|
+
}
|
|
1474
|
+
export type SystemPermissionMutation = {
|
|
1475
|
+
status: 'not-determined';
|
|
1476
|
+
} | {
|
|
1477
|
+
status: 'restricted';
|
|
1478
|
+
} | {
|
|
1479
|
+
status: 'denied';
|
|
1480
|
+
canAskAgain?: boolean;
|
|
1481
|
+
} | {
|
|
1482
|
+
status: 'authorized';
|
|
1483
|
+
locationAccuracy?: SystemPermissionLocationAccuracy;
|
|
1484
|
+
authorizationScope?: 'persistent' | 'once';
|
|
1485
|
+
} | {
|
|
1486
|
+
status: 'limited';
|
|
1487
|
+
limitedResourceIds?: readonly string[];
|
|
1488
|
+
} | {
|
|
1489
|
+
status: 'provisional';
|
|
1490
|
+
} | {
|
|
1491
|
+
status: 'ephemeral';
|
|
1492
|
+
} | {
|
|
1493
|
+
status: 'unavailable';
|
|
1494
|
+
};
|
|
1495
|
+
export interface SystemPermissionRequestContext extends SystemPermissionApp {
|
|
1496
|
+
presentationAppId?: string;
|
|
1497
|
+
platform: SystemPermissionPlatform;
|
|
1498
|
+
}
|
|
1499
|
+
export interface SootSimPermissionsBridge {
|
|
1500
|
+
listApps(): MaybeAsync<readonly SystemPermissionApp[]>;
|
|
1501
|
+
getAppSettingsSnapshot(appId: string): MaybeAsync<AppSettingsSnapshot>;
|
|
1502
|
+
setAppPermission(appId: string, kind: SystemPermissionKind, mutation: SystemPermissionMutation): MaybeAsync<AppSettingsSnapshot>;
|
|
1503
|
+
patchNotificationSettings(appId: string, patch: Partial<SystemNotificationSettings>): MaybeAsync<AppSettingsSnapshot>;
|
|
1504
|
+
setAppDeclaredSetting(appId: string, key: string, value: AppPreferenceValue): MaybeAsync<AppSettingsSnapshot>;
|
|
1505
|
+
resetPermission(appId: string, kind: SystemPermissionKind): MaybeAsync<void>;
|
|
1506
|
+
resetAppPermissions(appId: string): MaybeAsync<void>;
|
|
1507
|
+
}
|
|
1508
|
+
export interface SootSimShareSheetOptions {
|
|
1509
|
+
title?: string;
|
|
1510
|
+
message?: string;
|
|
1511
|
+
url?: string;
|
|
1512
|
+
subject?: string;
|
|
1513
|
+
excludedActivityTypes?: string[];
|
|
1514
|
+
}
|
|
1515
|
+
export interface SootSimShareSheetResult {
|
|
1516
|
+
completed: boolean;
|
|
1517
|
+
activityType: string | null;
|
|
1518
|
+
}
|
|
1519
|
+
export interface SootSimShareSheetBridge {
|
|
1520
|
+
share(options: SootSimShareSheetOptions): Promise<SootSimShareSheetResult>;
|
|
1521
|
+
}
|
|
1522
|
+
export interface SootSimPhotoLibraryAsset {
|
|
1523
|
+
id: string;
|
|
1524
|
+
uri: string;
|
|
1525
|
+
width: number;
|
|
1526
|
+
height: number;
|
|
1527
|
+
fileName?: string;
|
|
1528
|
+
mediaType: 'photo' | 'video';
|
|
1529
|
+
timestamp: number;
|
|
1530
|
+
fileSize?: number;
|
|
1531
|
+
durationMs?: number;
|
|
1532
|
+
isFavorite: boolean;
|
|
1533
|
+
mimeType?: string;
|
|
1534
|
+
}
|
|
1535
|
+
export interface SootSimPhotoLibraryPage {
|
|
1536
|
+
assets: SootSimPhotoLibraryAsset[];
|
|
1537
|
+
hasNextPage: boolean;
|
|
1538
|
+
endCursor: string | null;
|
|
1539
|
+
totalCount: number;
|
|
1540
|
+
}
|
|
1541
|
+
export interface SootSimPhotoLibraryQueryOptions {
|
|
1542
|
+
first: number;
|
|
1543
|
+
after?: string;
|
|
1544
|
+
assetType?: 'All' | 'Photos' | 'Videos';
|
|
1545
|
+
readFiles?: boolean;
|
|
1546
|
+
}
|
|
1547
|
+
export interface SootSimPhotoLibraryCreateOptions {
|
|
1548
|
+
uri: string;
|
|
1549
|
+
width?: number;
|
|
1550
|
+
height?: number;
|
|
1551
|
+
fileName?: string;
|
|
1552
|
+
mediaType?: 'photo' | 'video';
|
|
1553
|
+
}
|
|
1554
|
+
export interface SootSimPhotoLibraryBridge {
|
|
1555
|
+
getPhotos(options: SootSimPhotoLibraryQueryOptions): Promise<SootSimPhotoLibraryPage>;
|
|
1556
|
+
createAsset(options: SootSimPhotoLibraryCreateOptions): Promise<SootSimPhotoLibraryAsset>;
|
|
1557
|
+
}
|
|
1558
|
+
export interface SootSimNavigationRoutesPayload {
|
|
1559
|
+
prefixes: string[];
|
|
1560
|
+
screens: unknown;
|
|
1561
|
+
filter?: unknown;
|
|
1562
|
+
}
|
|
1563
|
+
export interface SootSimNavigationRoutesBridge {
|
|
1564
|
+
publish(payload: SootSimNavigationRoutesPayload | null): void;
|
|
1565
|
+
}
|
|
1566
|
+
export interface SootSimLinkingDispatcherBridge {
|
|
1567
|
+
dispatch(url: string): void;
|
|
1568
|
+
}
|
|
1569
|
+
export interface PeachWebViewDocumentData {
|
|
1570
|
+
bytesBase64: string;
|
|
1571
|
+
mimeType: string;
|
|
1572
|
+
characterEncodingName: string;
|
|
1573
|
+
}
|
|
1574
|
+
export interface SootSimWebViewSource {
|
|
1575
|
+
uri?: string;
|
|
1576
|
+
html?: string;
|
|
1577
|
+
baseUrl?: string;
|
|
1578
|
+
headers?: Record<string, string>;
|
|
1579
|
+
method?: string;
|
|
1580
|
+
bodyBase64?: string;
|
|
1581
|
+
documentData?: PeachWebViewDocumentData;
|
|
1582
|
+
}
|
|
1583
|
+
export type SootSimWebViewHostRequest = {
|
|
1584
|
+
kind: 'navigationDecision';
|
|
1585
|
+
instanceId: string;
|
|
1586
|
+
requestId: number;
|
|
1587
|
+
allow: boolean;
|
|
1588
|
+
} | {
|
|
1589
|
+
kind: 'attach';
|
|
1590
|
+
instanceId: string;
|
|
1591
|
+
frameName: string;
|
|
1592
|
+
url: string;
|
|
1593
|
+
headers: Record<string, string>;
|
|
1594
|
+
method?: string;
|
|
1595
|
+
bodyBase64?: string;
|
|
1596
|
+
documentData?: PeachWebViewDocumentData;
|
|
1597
|
+
config: string;
|
|
1598
|
+
beforeKey: string;
|
|
1599
|
+
beforeContent: string;
|
|
1600
|
+
afterContent: string;
|
|
1601
|
+
incognito: boolean;
|
|
1602
|
+
} | {
|
|
1603
|
+
kind: 'detach';
|
|
1604
|
+
instanceId: string;
|
|
1605
|
+
} | {
|
|
1606
|
+
kind: 'cookies';
|
|
1607
|
+
instanceId: string;
|
|
1608
|
+
cookies: string;
|
|
1609
|
+
} | {
|
|
1610
|
+
kind: 'evaluate';
|
|
1611
|
+
instanceId: string;
|
|
1612
|
+
js: string;
|
|
1613
|
+
userAgent?: string;
|
|
1614
|
+
} | {
|
|
1615
|
+
kind: 'tap';
|
|
1616
|
+
instanceId: string;
|
|
1617
|
+
x: number;
|
|
1618
|
+
y: number;
|
|
1619
|
+
} | {
|
|
1620
|
+
kind: 'fileResponse';
|
|
1621
|
+
instanceId: string;
|
|
1622
|
+
requestId: number;
|
|
1623
|
+
file: {
|
|
1624
|
+
mimeType: string;
|
|
1625
|
+
bytesBase64: string;
|
|
1626
|
+
} | null;
|
|
1627
|
+
} | {
|
|
1628
|
+
kind: 'snapshot';
|
|
1629
|
+
instanceId: string;
|
|
1630
|
+
requestId: number;
|
|
1631
|
+
rect: {
|
|
1632
|
+
x: number;
|
|
1633
|
+
y: number;
|
|
1634
|
+
width: number;
|
|
1635
|
+
height: number;
|
|
1636
|
+
};
|
|
1637
|
+
scale: number;
|
|
1638
|
+
};
|
|
1639
|
+
export type { SootSimCornerRadii, NativeSurfaceShadow, NativeSurfaceShadowCast, NativeSurfaceLayout, NativeSurfacePresentation, NativeSurfaceIdentity, NativeSurfacePresented, NativeSurfaceRegistration, } from './nativeSurfaceContract.d.ts';
|
|
1640
|
+
import type { SootSimCornerRadii, NativeSurfacePresentation } from './nativeSurfaceContract.d.ts';
|
|
1641
|
+
export declare function uncutCornerRadii(radii: SootSimCornerRadii, rect: {
|
|
1642
|
+
x: number;
|
|
1643
|
+
y: number;
|
|
1644
|
+
width: number;
|
|
1645
|
+
height: number;
|
|
1646
|
+
}, clipped: {
|
|
1647
|
+
x: number;
|
|
1648
|
+
y: number;
|
|
1649
|
+
width: number;
|
|
1650
|
+
height: number;
|
|
1651
|
+
}): SootSimCornerRadii | undefined;
|
|
1652
|
+
export interface SootSimWebKitConfiguration {
|
|
1653
|
+
navigation: number;
|
|
1654
|
+
navigationType: -1 | 2 | 3;
|
|
1655
|
+
userScripts: Array<{
|
|
1656
|
+
source: string;
|
|
1657
|
+
time: 0 | 1;
|
|
1658
|
+
}>;
|
|
1659
|
+
messageHandlers: string[];
|
|
1660
|
+
userAgent?: string;
|
|
1661
|
+
}
|
|
1662
|
+
export type SootSimWebKitValue = {
|
|
1663
|
+
type: 'null';
|
|
1664
|
+
} | {
|
|
1665
|
+
type: 'string';
|
|
1666
|
+
value: string;
|
|
1667
|
+
} | {
|
|
1668
|
+
type: 'number';
|
|
1669
|
+
value: number;
|
|
1670
|
+
} | {
|
|
1671
|
+
type: 'boolean';
|
|
1672
|
+
value: boolean;
|
|
1673
|
+
} | {
|
|
1674
|
+
type: 'date';
|
|
1675
|
+
value: number;
|
|
1676
|
+
} | {
|
|
1677
|
+
type: 'array';
|
|
1678
|
+
value: SootSimWebKitValue[];
|
|
1679
|
+
} | {
|
|
1680
|
+
type: 'object';
|
|
1681
|
+
value: {
|
|
1682
|
+
[key: string]: SootSimWebKitValue;
|
|
1683
|
+
};
|
|
1684
|
+
};
|
|
1685
|
+
export type SootSimWebKitEvent = {
|
|
1686
|
+
event: 'themeColor';
|
|
1687
|
+
navigation: number;
|
|
1688
|
+
color: [number, number, number, number] | null;
|
|
1689
|
+
} | {
|
|
1690
|
+
event: 'start' | 'finish';
|
|
1691
|
+
navigation: number;
|
|
1692
|
+
url: string;
|
|
1693
|
+
title?: string;
|
|
1694
|
+
} | {
|
|
1695
|
+
event: 'title';
|
|
1696
|
+
url: string;
|
|
1697
|
+
title: string;
|
|
1698
|
+
} | {
|
|
1699
|
+
event: 'policy';
|
|
1700
|
+
shouldPerformDownload: boolean;
|
|
1701
|
+
headers?: Record<string, string>;
|
|
1702
|
+
method?: string;
|
|
1703
|
+
bodyBase64?: string;
|
|
1704
|
+
navigation: number;
|
|
1705
|
+
navigationType: number;
|
|
1706
|
+
targetURL: string;
|
|
1707
|
+
lock: number;
|
|
1708
|
+
} | {
|
|
1709
|
+
event: 'response';
|
|
1710
|
+
navigation: number;
|
|
1711
|
+
targetURL: string;
|
|
1712
|
+
status: number;
|
|
1713
|
+
mime: string;
|
|
1714
|
+
length?: number;
|
|
1715
|
+
lock: number;
|
|
1716
|
+
} | {
|
|
1717
|
+
event: 'file';
|
|
1718
|
+
navigation: number;
|
|
1719
|
+
requestId: number;
|
|
1720
|
+
url: string;
|
|
1721
|
+
} | {
|
|
1722
|
+
event: 'snapshot';
|
|
1723
|
+
requestId: number;
|
|
1724
|
+
pngBase64: string | null;
|
|
1725
|
+
} | {
|
|
1726
|
+
event: 'redirect';
|
|
1727
|
+
navigation: number;
|
|
1728
|
+
url: string;
|
|
1729
|
+
} | {
|
|
1730
|
+
event: 'fail';
|
|
1731
|
+
navigation: number;
|
|
1732
|
+
url: string;
|
|
1733
|
+
domain: string;
|
|
1734
|
+
code: number;
|
|
1735
|
+
description: string;
|
|
1736
|
+
provisional: boolean;
|
|
1737
|
+
} | {
|
|
1738
|
+
event: 'cookie';
|
|
1739
|
+
url: string;
|
|
1740
|
+
value: string;
|
|
1741
|
+
} | {
|
|
1742
|
+
event: 'responseCookies';
|
|
1743
|
+
url: string;
|
|
1744
|
+
headers: string[];
|
|
1745
|
+
} | {
|
|
1746
|
+
event: 'message';
|
|
1747
|
+
securityOrigin: string;
|
|
1748
|
+
name: string;
|
|
1749
|
+
body: SootSimWebKitValue;
|
|
1750
|
+
requestId: number;
|
|
1751
|
+
} | {
|
|
1752
|
+
event: 'commit';
|
|
1753
|
+
securityOrigin: string;
|
|
1754
|
+
navigation: number;
|
|
1755
|
+
url: string;
|
|
1756
|
+
canGoBack?: boolean;
|
|
1757
|
+
canGoForward?: boolean;
|
|
1758
|
+
} | {
|
|
1759
|
+
event: 'evaluate';
|
|
1760
|
+
requestId: number;
|
|
1761
|
+
result: {
|
|
1762
|
+
value?: SootSimWebKitValue;
|
|
1763
|
+
title?: string;
|
|
1764
|
+
undefined?: true;
|
|
1765
|
+
errorCode?: number;
|
|
1766
|
+
errorInfo?: Record<string, string | number>;
|
|
1767
|
+
};
|
|
1768
|
+
};
|
|
1769
|
+
export interface SootSimWebViewCookieStore {
|
|
1770
|
+
cookies: string;
|
|
1771
|
+
policy: 0 | 1;
|
|
1772
|
+
}
|
|
1773
|
+
export interface SootSimWebViewSpec extends Partial<NativeSurfacePresentation> {
|
|
1774
|
+
cookieStore?: SootSimWebViewCookieStore;
|
|
1775
|
+
captureOwner?: {
|
|
1776
|
+
surfaceId: string;
|
|
1777
|
+
generation: number;
|
|
1778
|
+
};
|
|
1779
|
+
webKit?: SootSimWebKitConfiguration;
|
|
1780
|
+
source?: SootSimWebViewSource;
|
|
1781
|
+
injectedJavaScript?: string;
|
|
1782
|
+
injectedJavaScriptBeforeContentLoaded?: string;
|
|
1783
|
+
injectedJavaScriptObject?: string;
|
|
1784
|
+
hasOnOpenWindowEvent?: boolean;
|
|
1785
|
+
hasOnShouldStartLoadWithRequest?: boolean;
|
|
1786
|
+
incognito?: boolean;
|
|
1787
|
+
javaScriptEnabled?: boolean;
|
|
1788
|
+
scrollEnabled?: boolean;
|
|
1789
|
+
startInLoadingState?: boolean;
|
|
1790
|
+
testID?: string;
|
|
1791
|
+
}
|
|
1792
|
+
export type SootSimWebViewEvent = {
|
|
1793
|
+
kind: 'webKit';
|
|
1794
|
+
instanceId: string;
|
|
1795
|
+
payload: SootSimWebKitEvent;
|
|
1796
|
+
} | {
|
|
1797
|
+
kind: 'message';
|
|
1798
|
+
instanceId: string;
|
|
1799
|
+
data: string;
|
|
1800
|
+
url: string;
|
|
1801
|
+
loading: boolean;
|
|
1802
|
+
title: string;
|
|
1803
|
+
canGoBack: boolean;
|
|
1804
|
+
canGoForward: boolean;
|
|
1805
|
+
lockIdentifier: number;
|
|
1806
|
+
} | {
|
|
1807
|
+
kind: 'presentation';
|
|
1808
|
+
instanceId: string;
|
|
1809
|
+
live: boolean;
|
|
1810
|
+
closable: boolean;
|
|
1811
|
+
} | {
|
|
1812
|
+
kind: 'loadStart';
|
|
1813
|
+
instanceId: string;
|
|
1814
|
+
url: string;
|
|
1815
|
+
loading: boolean;
|
|
1816
|
+
navigationType: SootSimWebViewNavigationType;
|
|
1817
|
+
} | {
|
|
1818
|
+
kind: 'load';
|
|
1819
|
+
instanceId: string;
|
|
1820
|
+
url: string;
|
|
1821
|
+
} | {
|
|
1822
|
+
kind: 'loadEnd';
|
|
1823
|
+
instanceId: string;
|
|
1824
|
+
url: string;
|
|
1825
|
+
} | {
|
|
1826
|
+
kind: 'openWindow';
|
|
1827
|
+
instanceId: string;
|
|
1828
|
+
targetUrl: string;
|
|
1829
|
+
} | {
|
|
1830
|
+
kind: 'navigationStateChange';
|
|
1831
|
+
instanceId: string;
|
|
1832
|
+
url: string;
|
|
1833
|
+
title: string;
|
|
1834
|
+
loading: boolean;
|
|
1835
|
+
canGoBack: boolean;
|
|
1836
|
+
canGoForward: boolean;
|
|
1837
|
+
} | {
|
|
1838
|
+
kind: 'shouldStartLoadWithRequest';
|
|
1839
|
+
instanceId: string;
|
|
1840
|
+
url: string;
|
|
1841
|
+
mainDocumentURL: string;
|
|
1842
|
+
navigationType: SootSimWebViewNavigationType;
|
|
1843
|
+
isTopFrame: boolean;
|
|
1844
|
+
hasTargetFrame: boolean;
|
|
1845
|
+
lockIdentifier: number;
|
|
1846
|
+
loading: boolean;
|
|
1847
|
+
} | {
|
|
1848
|
+
kind: 'loadingError';
|
|
1849
|
+
instanceId: string;
|
|
1850
|
+
url: string;
|
|
1851
|
+
domain: string;
|
|
1852
|
+
code: number;
|
|
1853
|
+
description: string;
|
|
1854
|
+
didFailProvisionalNavigation: boolean;
|
|
1855
|
+
} | {
|
|
1856
|
+
kind: 'httpError';
|
|
1857
|
+
instanceId: string;
|
|
1858
|
+
url: string;
|
|
1859
|
+
statusCode: number;
|
|
1860
|
+
};
|
|
1861
|
+
export type SootSimWebViewNavigationType = 'click' | 'formsubmit' | 'backforward' | 'reload' | 'formresubmit' | 'other';
|
|
1862
|
+
export type SootSimWebKitReply = {
|
|
1863
|
+
json: string;
|
|
1864
|
+
} | {
|
|
1865
|
+
undefined: true;
|
|
1866
|
+
} | {
|
|
1867
|
+
error: string;
|
|
1868
|
+
};
|
|
1869
|
+
export interface SootSimWebViewBridge {
|
|
1870
|
+
setMessageHandlers(instanceId: string, names: string[]): void;
|
|
1871
|
+
replyScriptMessage(instanceId: string, requestId: number, reply: SootSimWebKitReply): void;
|
|
1872
|
+
evaluateJavaScript(instanceId: string, requestId: number, js: string, userAgent?: string): void;
|
|
1873
|
+
updateWebKitCookies(instanceId: string, requestId: number, cookies: string, policy: number): void;
|
|
1874
|
+
mount(instanceId: string, spec: SootSimWebViewSpec): void;
|
|
1875
|
+
update(instanceId: string, spec: SootSimWebViewSpec): void;
|
|
1876
|
+
unmount(instanceId: string): void;
|
|
1877
|
+
activate(instanceId: string, point?: {
|
|
1878
|
+
x: number;
|
|
1879
|
+
y: number;
|
|
1880
|
+
}): void;
|
|
1881
|
+
deactivate(instanceId: string): void;
|
|
1882
|
+
injectJavaScript(instanceId: string, js: string): void;
|
|
1883
|
+
postMessage(instanceId: string, data: string): void;
|
|
1884
|
+
goBack(instanceId: string): void;
|
|
1885
|
+
goForward(instanceId: string): void;
|
|
1886
|
+
reload(instanceId: string): void;
|
|
1887
|
+
stopLoading(instanceId: string, navigation?: number): void;
|
|
1888
|
+
shouldStartLoadWithLockIdentifier(lockIdentifier: number, shouldStart: boolean): void;
|
|
1889
|
+
fileResponse(instanceId: string, requestId: number, file: {
|
|
1890
|
+
mimeType: string;
|
|
1891
|
+
bytesBase64: string;
|
|
1892
|
+
} | null): void;
|
|
1893
|
+
snapshot(instanceId: string, requestId: number, rect: {
|
|
1894
|
+
x: number;
|
|
1895
|
+
y: number;
|
|
1896
|
+
width: number;
|
|
1897
|
+
height: number;
|
|
1898
|
+
}, scale: number): void;
|
|
1899
|
+
subscribe(listener: (event: SootSimWebViewEvent) => void): () => void;
|
|
1900
|
+
}
|
|
1901
|
+
export interface SootSimA11yBridge {
|
|
1902
|
+
[key: string]: unknown;
|
|
1903
|
+
setMode?(mode: string): void;
|
|
1904
|
+
getMode?(): string;
|
|
1905
|
+
enable?(): void;
|
|
1906
|
+
disable?(): void;
|
|
1907
|
+
inspect?(on?: boolean): MaybeAsync<boolean>;
|
|
1908
|
+
profile?(): MaybeAsync<Record<string, unknown> | undefined>;
|
|
1909
|
+
resetProfile?(): MaybeAsync<void>;
|
|
1910
|
+
}
|
|
1911
|
+
export interface SootSimPerfBridge {
|
|
1912
|
+
[key: string]: unknown;
|
|
1913
|
+
enableFrameStats?(reset?: boolean): unknown;
|
|
1914
|
+
disableFrameStats?(): void;
|
|
1915
|
+
getVsyncStats?(): unknown;
|
|
1916
|
+
resetVsyncStats?(): void;
|
|
1917
|
+
getLiveRenderLoad(): SootSimLiveRenderLoad;
|
|
1918
|
+
}
|
|
1919
|
+
export interface SootSimLiveRenderLoad {
|
|
1920
|
+
liveFrames: number;
|
|
1921
|
+
softwareAdapter: boolean | null;
|
|
1922
|
+
}
|
|
1923
|
+
export interface SootSimDebugBridge {
|
|
1924
|
+
frameBreakdown: {
|
|
1925
|
+
start(): void;
|
|
1926
|
+
stop(): Promise<FrameBreakdownCapture>;
|
|
1927
|
+
};
|
|
1928
|
+
enable(...channels: string[]): readonly string[];
|
|
1929
|
+
disable(...channels: string[]): readonly string[];
|
|
1930
|
+
toggle(channel: string): boolean;
|
|
1931
|
+
status(): readonly string[];
|
|
1932
|
+
channels(): readonly string[];
|
|
1933
|
+
flags(): Readonly<Record<string, boolean>>;
|
|
1934
|
+
snapshot(label?: string): unknown;
|
|
1935
|
+
diff(a: string, b: string): unknown;
|
|
1936
|
+
snapshots(): string[];
|
|
1937
|
+
clearSnapshots(label?: string): void;
|
|
1938
|
+
findSheets(): unknown[];
|
|
1939
|
+
findPortals(): unknown[];
|
|
1940
|
+
record(on?: boolean): boolean;
|
|
1941
|
+
recent(channel?: string, limit?: number): unknown[];
|
|
1942
|
+
clearEvents(): void;
|
|
1943
|
+
cullStats?(reset?: boolean): {
|
|
1944
|
+
examined: number;
|
|
1945
|
+
kept: number;
|
|
1946
|
+
skipped: number;
|
|
1947
|
+
};
|
|
1948
|
+
}
|
|
1949
|
+
export interface SootSimRecorderBridge {
|
|
1950
|
+
renderScene(): Promise<{
|
|
1951
|
+
durationMs: number;
|
|
1952
|
+
frameCount: number;
|
|
1953
|
+
renderTimeMs: number;
|
|
1954
|
+
}>;
|
|
1955
|
+
start(opts?: {
|
|
1956
|
+
format?: 'webm' | 'mp4';
|
|
1957
|
+
fps?: number;
|
|
1958
|
+
layers?: 'full' | 'tenant' | 'shell';
|
|
1959
|
+
}): Promise<{
|
|
1960
|
+
ok: boolean;
|
|
1961
|
+
error?: string;
|
|
1962
|
+
format?: string;
|
|
1963
|
+
startedAtMs?: number;
|
|
1964
|
+
}>;
|
|
1965
|
+
stop(): Promise<{
|
|
1966
|
+
ok: boolean;
|
|
1967
|
+
error?: string;
|
|
1968
|
+
size?: number;
|
|
1969
|
+
mime?: string;
|
|
1970
|
+
durationMs?: number;
|
|
1971
|
+
frameCount?: number;
|
|
1972
|
+
profile?: ProfileFile | null;
|
|
1973
|
+
}>;
|
|
1974
|
+
state(): 'idle' | 'starting' | 'recording' | 'processing' | 'ready';
|
|
1975
|
+
getStartedAtMs(): number | null;
|
|
1976
|
+
getDurationMs(): number | null;
|
|
1977
|
+
getBlob(): Blob | null;
|
|
1978
|
+
getBlobBase64(opts?: {
|
|
1979
|
+
chunk?: number;
|
|
1980
|
+
offset?: number;
|
|
1981
|
+
}): Promise<{
|
|
1982
|
+
data: string;
|
|
1983
|
+
size: number;
|
|
1984
|
+
offset: number;
|
|
1985
|
+
done: boolean;
|
|
1986
|
+
mime: string;
|
|
1987
|
+
} | null>;
|
|
1988
|
+
captureFrames(count: number, durationMs: number): Promise<SootSimCapturedFrame[]>;
|
|
1989
|
+
startFrameCapture(opts: {
|
|
1990
|
+
count: number;
|
|
1991
|
+
durationMs: number;
|
|
1992
|
+
maxWidth?: number;
|
|
1993
|
+
observation?: 'presented';
|
|
1994
|
+
surfaceId?: string;
|
|
1995
|
+
}): Promise<{
|
|
1996
|
+
ok: boolean;
|
|
1997
|
+
requestId?: number;
|
|
1998
|
+
error?: string;
|
|
1999
|
+
}>;
|
|
2000
|
+
getFrameCaptureResult(requestId: number, page?: {
|
|
2001
|
+
offset: number;
|
|
2002
|
+
limit: number;
|
|
2003
|
+
}): Promise<{
|
|
2004
|
+
ok: boolean;
|
|
2005
|
+
done: boolean;
|
|
2006
|
+
capturedCount: number;
|
|
2007
|
+
totalFrames?: number;
|
|
2008
|
+
frames?: SootSimCapturedFrame[];
|
|
2009
|
+
error?: string;
|
|
2010
|
+
} | null>;
|
|
2011
|
+
getFrameCaptureProgress(requestId: number, opts?: {
|
|
2012
|
+
latestFrames?: number;
|
|
2013
|
+
presentedBeforeEpochMs?: number;
|
|
2014
|
+
}): Promise<{
|
|
2015
|
+
done: boolean;
|
|
2016
|
+
capturedCount: number;
|
|
2017
|
+
latestFrames?: SootSimCapturedFrame[];
|
|
2018
|
+
} | null>;
|
|
2019
|
+
stopFrameCapture(requestId: number): Promise<{
|
|
2020
|
+
ok: boolean;
|
|
2021
|
+
error?: string;
|
|
2022
|
+
}>;
|
|
2023
|
+
flushFrameCapture(requestId: number): Promise<{
|
|
2024
|
+
ok: boolean;
|
|
2025
|
+
error?: string;
|
|
2026
|
+
}>;
|
|
2027
|
+
captureGif(opts: {
|
|
2028
|
+
frames: number;
|
|
2029
|
+
durationMs: number;
|
|
2030
|
+
maxWidth?: number;
|
|
2031
|
+
}): Promise<{
|
|
2032
|
+
data: string;
|
|
2033
|
+
size: number;
|
|
2034
|
+
} | null>;
|
|
2035
|
+
forceRelease(): Promise<boolean>;
|
|
2036
|
+
cancel?(): void;
|
|
2037
|
+
}
|
|
2038
|
+
export interface SootSimCapturedFrame {
|
|
2039
|
+
data: string;
|
|
2040
|
+
size: number;
|
|
2041
|
+
capturedAtEpochMs: number;
|
|
2042
|
+
frameToken?: number;
|
|
2043
|
+
surfacePresentations?: SootSimCapturedSurfacePresentation[];
|
|
2044
|
+
}
|
|
2045
|
+
export interface SootSimCapturedSurfacePresentation {
|
|
2046
|
+
surfaceId: string;
|
|
2047
|
+
display: string;
|
|
2048
|
+
opacity: number;
|
|
2049
|
+
scale: number;
|
|
2050
|
+
animations: number;
|
|
2051
|
+
}
|
|
2052
|
+
export interface SootSimEventRecorderBridge {
|
|
2053
|
+
[key: string]: unknown;
|
|
2054
|
+
start?(videoStartedAtMs?: number | null): Promise<boolean>;
|
|
2055
|
+
startPrelude?(): boolean;
|
|
2056
|
+
markVisibleStart?(videoStartedAtMs?: number | null): Promise<boolean>;
|
|
2057
|
+
stop?(): SootSimReplayEvent[];
|
|
2058
|
+
clear?(): void;
|
|
2059
|
+
getEvents?(): SootSimReplayEvent[];
|
|
2060
|
+
isRecording?(): boolean;
|
|
2061
|
+
}
|
|
2062
|
+
export interface SootSimPreviewRecorder {
|
|
2063
|
+
flush(): Promise<void>;
|
|
2064
|
+
list(bundleOrigin: string): unknown[];
|
|
2065
|
+
clear(): void;
|
|
2066
|
+
[key: string]: unknown;
|
|
2067
|
+
}
|
|
2068
|
+
export interface SootSimPortalManager {
|
|
2069
|
+
[key: string]: unknown;
|
|
2070
|
+
ensureHost?(name: string): unknown;
|
|
2071
|
+
releaseHost?(name: string): void;
|
|
2072
|
+
getHostNode?(name: string): unknown;
|
|
2073
|
+
register?(name: string, node: unknown): () => void;
|
|
2074
|
+
get?(name: string): unknown;
|
|
2075
|
+
list?(): string[];
|
|
2076
|
+
}
|
|
2077
|
+
export interface SootSimWindowScaleBridge {
|
|
2078
|
+
get(): 'physical' | 'point' | 'pixel' | 'fit';
|
|
2079
|
+
set(mode: 'physical' | 'point' | 'pixel' | 'fit'): void;
|
|
2080
|
+
subscribe(fn: () => void): () => void;
|
|
2081
|
+
}
|
|
2082
|
+
export interface SootSimElectronBridge {
|
|
2083
|
+
personalHomeApps?: PeachHomeApp[];
|
|
2084
|
+
homeAppStorage?(bundleUrl: string): Promise<PeachHomeStorageValue[]>;
|
|
2085
|
+
captureScreen(full?: boolean): Promise<string | null>;
|
|
2086
|
+
captureVideo(): Promise<unknown>;
|
|
2087
|
+
presentationMode?: 'window' | 'grid';
|
|
2088
|
+
getPlatform?(): string;
|
|
2089
|
+
shouldOfferCliInstall?(): Promise<boolean>;
|
|
2090
|
+
installCli?(): Promise<{
|
|
2091
|
+
persistentDaemon: boolean;
|
|
2092
|
+
}>;
|
|
2093
|
+
onCliInstallOffer?(callback: () => void): () => void;
|
|
2094
|
+
openExternal?(url: string): MaybeAsync<void>;
|
|
2095
|
+
setDevice?(model: string): void;
|
|
2096
|
+
setDevicePosture?(posture: string, foldActive: boolean): void;
|
|
2097
|
+
setDeviceOrientation?(orientation: string): void;
|
|
2098
|
+
[key: string]: unknown;
|
|
2099
|
+
}
|
|
2100
|
+
export interface PeachHomeApp {
|
|
2101
|
+
id: string;
|
|
2102
|
+
name: string;
|
|
2103
|
+
icon: string;
|
|
2104
|
+
source: {
|
|
2105
|
+
bundleUrl?: string;
|
|
2106
|
+
devUrl?: string;
|
|
2107
|
+
};
|
|
2108
|
+
}
|
|
2109
|
+
export interface PeachHomeStorageValue {
|
|
2110
|
+
key: string;
|
|
2111
|
+
value: string;
|
|
2112
|
+
store: 'localStorage' | 'secureStore';
|
|
2113
|
+
service?: string;
|
|
2114
|
+
}
|
|
2115
|
+
export interface PeachHomeStorageBinding {
|
|
2116
|
+
key: string;
|
|
2117
|
+
store: 'localStorage' | 'secureStore';
|
|
2118
|
+
service?: string;
|
|
2119
|
+
value?: string;
|
|
2120
|
+
credential?: {
|
|
2121
|
+
file: string;
|
|
2122
|
+
field: string[];
|
|
2123
|
+
encoding?: 'json' | 'text';
|
|
2124
|
+
};
|
|
2125
|
+
}
|
|
2126
|
+
export interface PeachHomeScreenConfig {
|
|
2127
|
+
apps: Array<PeachHomeApp & {
|
|
2128
|
+
storage?: PeachHomeStorageBinding[];
|
|
2129
|
+
}>;
|
|
2130
|
+
}
|
|
2131
|
+
export interface SootSimConsoleBuffer {
|
|
2132
|
+
[key: string]: unknown;
|
|
2133
|
+
getErrors?(limit?: number): unknown[];
|
|
2134
|
+
getWarnings?(limit?: number): unknown[];
|
|
2135
|
+
getAll?(limit?: number): unknown[];
|
|
2136
|
+
clear?(): void;
|
|
2137
|
+
count?(): {
|
|
2138
|
+
errors: number;
|
|
2139
|
+
warnings: number;
|
|
2140
|
+
total: number;
|
|
2141
|
+
};
|
|
2142
|
+
}
|
|
2143
|
+
export interface SootSimShellCommands {
|
|
2144
|
+
[key: string]: unknown;
|
|
2145
|
+
launchApp?(appId: string): MaybeAsync<unknown>;
|
|
2146
|
+
goHome?(): MaybeAsync<unknown>;
|
|
2147
|
+
openSwitcher?(): MaybeAsync<unknown>;
|
|
2148
|
+
openSwitcherCard?(appId: string): MaybeAsync<unknown>;
|
|
2149
|
+
dispatch?(cmd: {
|
|
2150
|
+
type: string;
|
|
2151
|
+
[key: string]: unknown;
|
|
2152
|
+
}): void;
|
|
2153
|
+
}
|
|
2154
|
+
export interface SootSimMainShellBridge {
|
|
2155
|
+
[key: string]: unknown;
|
|
2156
|
+
launchApp?(appId: string): MaybeAsync<unknown>;
|
|
2157
|
+
goBack?(): MaybeAsync<unknown>;
|
|
2158
|
+
goHome?(): MaybeAsync<unknown>;
|
|
2159
|
+
openSwitcher?(): MaybeAsync<unknown>;
|
|
2160
|
+
openSwitcherCard?(appId: string): MaybeAsync<unknown>;
|
|
2161
|
+
toggleLock?(): MaybeAsync<unknown>;
|
|
2162
|
+
setTopOverlay?(overlay: 'none' | 'notification-center' | 'control-center'): MaybeAsync<unknown>;
|
|
2163
|
+
getState?(): MaybeAsync<Record<string, unknown> | null>;
|
|
2164
|
+
postNativeUIRequest?(request: unknown): MaybeAsync<unknown>;
|
|
2165
|
+
onNativeUIEvent?(cb: (event: unknown) => void): () => void;
|
|
2166
|
+
}
|
|
2167
|
+
export interface SootSimDemoShareLeaseOptions {
|
|
2168
|
+
ownerToken?: string | null;
|
|
2169
|
+
bundleMode?: 'development' | 'production';
|
|
2170
|
+
}
|
|
2171
|
+
export interface SootSimDemoShareBridge {
|
|
2172
|
+
activateDemoShare?(name: string, options?: SootSimDemoShareLeaseOptions): MaybeAsync<unknown>;
|
|
2173
|
+
releaseCurrentShare?(options?: SootSimDemoShareLeaseOptions): MaybeAsync<unknown>;
|
|
2174
|
+
}
|
|
2175
|
+
export interface SootSimRenderActivityState {
|
|
2176
|
+
busy: boolean;
|
|
2177
|
+
frameToken: number;
|
|
2178
|
+
}
|
|
2179
|
+
export interface SootSimShellSceneFanoutStats {
|
|
2180
|
+
fastVersion: number;
|
|
2181
|
+
fastFanouts: number;
|
|
2182
|
+
slowFanouts: number;
|
|
2183
|
+
listenerFanouts: number;
|
|
2184
|
+
}
|
|
2185
|
+
export interface SootSimAuxCompositorStats {
|
|
2186
|
+
trajectoryPosts: number;
|
|
2187
|
+
trajectoryCancels: number;
|
|
2188
|
+
sceneSyncs: number;
|
|
2189
|
+
auxStylePasses: number;
|
|
2190
|
+
browserCompositeFrames: number;
|
|
2191
|
+
shellScene: SootSimShellSceneFanoutStats | null;
|
|
2192
|
+
}
|
|
2193
|
+
export interface SootSimLiveCompositeBridge {
|
|
2194
|
+
getCanvas(): HTMLCanvasElement | null;
|
|
2195
|
+
getFrameToken(): number;
|
|
2196
|
+
captureFresh(): Promise<{
|
|
2197
|
+
canvas: HTMLCanvasElement | null;
|
|
2198
|
+
frameToken: number;
|
|
2199
|
+
}>;
|
|
2200
|
+
subscribe(listener: () => void, opts?: {
|
|
2201
|
+
maxWidth?: number;
|
|
2202
|
+
}): () => void;
|
|
2203
|
+
setSourceScale(scale: number): void;
|
|
2204
|
+
markDirty(): void;
|
|
2205
|
+
}
|
|
2206
|
+
export interface PeachAnimatedExecution {
|
|
2207
|
+
id: number;
|
|
2208
|
+
kind: 'delay' | 'timing' | 'spring' | 'decay';
|
|
2209
|
+
phase: 'unknown' | 'waiting' | 'running' | 'finished' | 'stopped';
|
|
2210
|
+
delayStartedAtMs: number | null;
|
|
2211
|
+
delayMs: number | null;
|
|
2212
|
+
startedAtMs: number | null;
|
|
2213
|
+
lastCallbackMs: number | null;
|
|
2214
|
+
callbacks: number;
|
|
2215
|
+
sampleValue: number | null;
|
|
2216
|
+
appliedValue: number | null;
|
|
2217
|
+
applications: number;
|
|
2218
|
+
endCallback: 'absent' | 'invoking' | 'returned' | null;
|
|
2219
|
+
}
|
|
2220
|
+
export interface PeachLockstepTenantFrame {
|
|
2221
|
+
frameNowMs: number | null;
|
|
2222
|
+
guestNowMs: number;
|
|
2223
|
+
guestClockFrozen: boolean;
|
|
2224
|
+
animationFramesFrozen: boolean;
|
|
2225
|
+
animationFrameCallbacks: number;
|
|
2226
|
+
animatedExecution: {
|
|
2227
|
+
records: PeachAnimatedExecution[];
|
|
2228
|
+
evicted: number;
|
|
2229
|
+
} | null;
|
|
2230
|
+
animatedRenderTriggers: number;
|
|
2231
|
+
rendered: boolean;
|
|
2232
|
+
}
|
|
2233
|
+
export interface SootSimLockstepFrameReceipt {
|
|
2234
|
+
frameIndex: number;
|
|
2235
|
+
virtualTimestampMs: number;
|
|
2236
|
+
tenantFrame: PeachLockstepTenantFrame | null;
|
|
2237
|
+
}
|
|
2238
|
+
export type LockstepInputReceipt = {
|
|
2239
|
+
phase: 'down' | 'move' | 'up';
|
|
2240
|
+
x: number;
|
|
2241
|
+
y: number;
|
|
2242
|
+
pointerId: number;
|
|
2243
|
+
eventTimestampMs: number;
|
|
2244
|
+
frameIndex: number;
|
|
2245
|
+
virtualTimestampMs: number;
|
|
2246
|
+
};
|
|
2247
|
+
export type LockstepScheduledInput = {
|
|
2248
|
+
afterMs: number;
|
|
2249
|
+
eventAfterMs?: number;
|
|
2250
|
+
phase: LockstepInputReceipt['phase'];
|
|
2251
|
+
x: number;
|
|
2252
|
+
y: number;
|
|
2253
|
+
pointerId: number;
|
|
2254
|
+
deliver: (timestampMs: number) => Promise<void>;
|
|
2255
|
+
};
|
|
2256
|
+
export interface SootSimLockstepCaptureController {
|
|
2257
|
+
readonly initialFrame: SootSimLockstepFrameReceipt;
|
|
2258
|
+
readonly inputReceipts: LockstepInputReceipt[];
|
|
2259
|
+
scheduleInput(events: LockstepScheduledInput[]): Promise<void>;
|
|
2260
|
+
stepFrame(elapsedMs?: number, options?: {
|
|
2261
|
+
awaitPageShown?: boolean;
|
|
2262
|
+
}): Promise<SootSimLockstepFrameReceipt>;
|
|
2263
|
+
flushFrame(options?: {
|
|
2264
|
+
awaitPageShown?: boolean;
|
|
2265
|
+
}): Promise<SootSimLockstepFrameReceipt>;
|
|
2266
|
+
framesForOffset(offsetMs: number): number;
|
|
2267
|
+
stageTouchOffsetMs(touches: ReadonlyArray<{
|
|
2268
|
+
scheduledMs: number;
|
|
2269
|
+
landedMs: number;
|
|
2270
|
+
}>, offsetMs: number): number;
|
|
2271
|
+
stepToOffset(anchor: SootSimLockstepFrameReceipt, offsetMs: number): Promise<SootSimLockstepFrameReceipt>;
|
|
2272
|
+
endWorkletFrameReceipt(): void;
|
|
2273
|
+
end(): void;
|
|
2274
|
+
}
|
|
2275
|
+
export interface SootSimLockstepCaptureBridge {
|
|
2276
|
+
begin(fps: number, options?: {
|
|
2277
|
+
baseline?: boolean;
|
|
2278
|
+
holdGpuScenes?: boolean;
|
|
2279
|
+
workletFrameTimestampsSeconds?: number[];
|
|
2280
|
+
}): Promise<SootSimLockstepCaptureController>;
|
|
2281
|
+
end(): boolean;
|
|
2282
|
+
}
|
|
2283
|
+
export type PointerDeliveryTarget = 'tenant' | 'shell';
|
|
2284
|
+
export interface PointerDeliveryPendingDrop {
|
|
2285
|
+
ackRequestId: number;
|
|
2286
|
+
target: PointerDeliveryTarget;
|
|
2287
|
+
surfaceId: string;
|
|
2288
|
+
phase: string;
|
|
2289
|
+
elapsedMs: number;
|
|
2290
|
+
timestamp: number;
|
|
2291
|
+
}
|
|
2292
|
+
export interface PointerDeliveryStats {
|
|
2293
|
+
sent: number;
|
|
2294
|
+
acked: number;
|
|
2295
|
+
droppedTimeouts: number;
|
|
2296
|
+
pending: number;
|
|
2297
|
+
lastAckLatencyMs: number | null;
|
|
2298
|
+
maxAckLatencyMs: number;
|
|
2299
|
+
recentDrops: PointerDeliveryPendingDrop[];
|
|
2300
|
+
}
|
|
2301
|
+
export interface SootSimShellHostBridge {
|
|
2302
|
+
getPointerDeliveryStats(): PointerDeliveryStats;
|
|
2303
|
+
getHeartbeatCount(): number;
|
|
2304
|
+
getLastHeartbeatAt(): number;
|
|
2305
|
+
getRenderActivity(): SootSimRenderActivityState;
|
|
2306
|
+
subscribeRenderActivity(listener: () => void): () => void;
|
|
2307
|
+
getSceneFanoutStats(): SootSimShellSceneFanoutStats;
|
|
2308
|
+
triggerSnapshotRequest(): void;
|
|
2309
|
+
}
|
|
2310
|
+
export type SootSimLaunchArguments = Record<string, unknown>;
|
|
2311
|
+
export interface SootSimExternalAppLifecycleOptions {
|
|
2312
|
+
launchArguments?: SootSimLaunchArguments | null;
|
|
2313
|
+
initialUrl?: string | null;
|
|
2314
|
+
relaunch?: boolean;
|
|
2315
|
+
}
|
|
2316
|
+
export type SootSimStorageResetStrategy = 'data' | 'full';
|
|
2317
|
+
export interface SootSimExternalAppResetOptions extends SootSimExternalAppLifecycleOptions {
|
|
2318
|
+
strategy: SootSimStorageResetStrategy;
|
|
2319
|
+
}
|
|
2320
|
+
export interface SootSimExternalAppResetResult {
|
|
2321
|
+
cleared: string[];
|
|
2322
|
+
failures: string[];
|
|
2323
|
+
relaunched: boolean;
|
|
2324
|
+
workerReloaded: boolean;
|
|
2325
|
+
}
|
|
2326
|
+
export interface SootSimHotRemountBridge {
|
|
2327
|
+
hotRemount(reason?: string): MaybeAsync<void>;
|
|
2328
|
+
reloadExternalApp(options?: SootSimExternalAppLifecycleOptions): MaybeAsync<void>;
|
|
2329
|
+
resetExternalApp?(options: SootSimExternalAppResetOptions): MaybeAsync<SootSimExternalAppResetResult>;
|
|
2330
|
+
}
|
|
2331
|
+
export interface SootSimSettingsBridge {
|
|
2332
|
+
get(): unknown;
|
|
2333
|
+
set(key: string, value: unknown): boolean;
|
|
2334
|
+
apply(settings: Record<string, unknown>): unknown;
|
|
2335
|
+
applyRuntime(settings: Record<string, unknown>): unknown;
|
|
2336
|
+
subscribe(listener: () => void): () => void;
|
|
2337
|
+
}
|
|
2338
|
+
export interface SootSimCaptureFilter {
|
|
2339
|
+
hideTestIds?: string[];
|
|
2340
|
+
soloTestId?: string;
|
|
2341
|
+
soloNodeId?: number;
|
|
2342
|
+
soloOwnPaint?: boolean;
|
|
2343
|
+
fitToOutput?: {
|
|
2344
|
+
width: number;
|
|
2345
|
+
height: number;
|
|
2346
|
+
frame?: SootSimLayout;
|
|
2347
|
+
};
|
|
2348
|
+
}
|
|
2349
|
+
export interface SootSimCaptureOptions {
|
|
2350
|
+
layers?: 'full' | 'tenant' | 'shell';
|
|
2351
|
+
usePresentedFrame?: boolean;
|
|
2352
|
+
outputWidth?: number;
|
|
2353
|
+
outputHeight?: number;
|
|
2354
|
+
crop?: {
|
|
2355
|
+
x: number;
|
|
2356
|
+
y: number;
|
|
2357
|
+
w: number;
|
|
2358
|
+
h: number;
|
|
2359
|
+
};
|
|
2360
|
+
suppressText?: boolean;
|
|
2361
|
+
captureFilter?: SootSimCaptureFilter;
|
|
2362
|
+
format?: 'webp' | 'png';
|
|
2363
|
+
quality?: number;
|
|
2364
|
+
}
|
|
2365
|
+
export declare const SOOTSIM_CAPTURE_IMAGE_QUALITY = 0.8;
|
|
2366
|
+
export declare function sootsimCaptureIsFlat(canvas: {
|
|
2367
|
+
width: number;
|
|
2368
|
+
height: number;
|
|
2369
|
+
getContext(id: '2d', opts?: {
|
|
2370
|
+
willReadFrequently?: boolean;
|
|
2371
|
+
}): unknown;
|
|
2372
|
+
}): boolean;
|
|
2373
|
+
export declare const SOOTSIM_TIMELINE_KINDS: readonly ['console', 'fetch', 'app-launch', 'shell', 'route', 'screen', 'flow-step', 'keyboard', 'alert', 'actionsheet', 'picker', 'notification', 'toast', 'scroll', 'gesture', 'text-input', 'react-commit', 'layout', 'animation', 'console-log', 'frame', 'profile', 'animation-samples', 'memory'];
|
|
2374
|
+
export type SootSimTimelineKind = (typeof SOOTSIM_TIMELINE_KINDS)[number];
|
|
2375
|
+
export declare function isTimelineKind(value: unknown): value is SootSimTimelineKind;
|
|
2376
|
+
export declare function isTimelineEvent(value: unknown): value is SootSimTimelineEvent;
|
|
2377
|
+
export type SootSimTimelineContext = 'host' | 'shell' | 'tenant';
|
|
2378
|
+
export interface SootSimTimelineEvent {
|
|
2379
|
+
schemaVersion: 1;
|
|
2380
|
+
t: number;
|
|
2381
|
+
seq: number;
|
|
2382
|
+
context: SootSimTimelineContext;
|
|
2383
|
+
kind: SootSimTimelineKind;
|
|
2384
|
+
id?: string;
|
|
2385
|
+
data: unknown;
|
|
2386
|
+
}
|
|
2387
|
+
export interface SootSimTimelineQuery {
|
|
2388
|
+
kinds?: SootSimTimelineKind | SootSimTimelineKind[];
|
|
2389
|
+
since?: number;
|
|
2390
|
+
sinceCursor?: string;
|
|
2391
|
+
until?: number;
|
|
2392
|
+
limit?: number;
|
|
2393
|
+
}
|
|
2394
|
+
export interface SootSimTimelineQueryResult {
|
|
2395
|
+
events: SootSimTimelineEvent[];
|
|
2396
|
+
watermark: number;
|
|
2397
|
+
}
|
|
2398
|
+
export interface SootSimTimelineCountsByKind {
|
|
2399
|
+
[kind: string]: number;
|
|
2400
|
+
}
|
|
2401
|
+
export interface SootSimTimelineSummary {
|
|
2402
|
+
total: number;
|
|
2403
|
+
byKind: SootSimTimelineCountsByKind;
|
|
2404
|
+
firstAt: number | null;
|
|
2405
|
+
lastAt: number | null;
|
|
2406
|
+
}
|
|
2407
|
+
export interface SootSimTimelineStatus {
|
|
2408
|
+
enabled: SootSimTimelineKind[];
|
|
2409
|
+
all: SootSimTimelineKind[];
|
|
2410
|
+
ringSizes: {
|
|
2411
|
+
host: number;
|
|
2412
|
+
shell: number;
|
|
2413
|
+
tenant: number;
|
|
2414
|
+
};
|
|
2415
|
+
}
|
|
2416
|
+
export interface SootSimTimelineBridge {
|
|
2417
|
+
record(kind: SootSimTimelineKind, data: unknown, opts?: {
|
|
2418
|
+
id?: string;
|
|
2419
|
+
t?: number;
|
|
2420
|
+
}): void;
|
|
2421
|
+
recent(query?: SootSimTimelineQuery): SootSimTimelineQueryResult;
|
|
2422
|
+
summary(query?: SootSimTimelineQuery): SootSimTimelineSummary;
|
|
2423
|
+
cursorAdvance(key: string, watermark: number): void;
|
|
2424
|
+
cursorAt(key: string): number;
|
|
2425
|
+
cursorClear(key: string): void;
|
|
2426
|
+
enable(...kinds: (SootSimTimelineKind | 'all')[]): void;
|
|
2427
|
+
disable(...kinds: (SootSimTimelineKind | 'all')[]): void;
|
|
2428
|
+
clear(): void;
|
|
2429
|
+
status(): SootSimTimelineStatus;
|
|
2430
|
+
}
|
|
2431
|
+
export interface SootSimReactProfileBridge {
|
|
2432
|
+
start(opts?: {
|
|
2433
|
+
includeProps?: boolean;
|
|
2434
|
+
maxCommits?: number;
|
|
2435
|
+
}): MaybeAsync<unknown>;
|
|
2436
|
+
stop(): MaybeAsync<unknown>;
|
|
2437
|
+
slow(opts?: {
|
|
2438
|
+
limit?: number;
|
|
2439
|
+
}): MaybeAsync<unknown>;
|
|
2440
|
+
rerenders(opts?: {
|
|
2441
|
+
limit?: number;
|
|
2442
|
+
}): MaybeAsync<unknown>;
|
|
2443
|
+
tree(opts?: {
|
|
2444
|
+
depth?: number;
|
|
2445
|
+
find?: string;
|
|
2446
|
+
}): MaybeAsync<unknown>;
|
|
2447
|
+
why(fiberId: number): MaybeAsync<unknown>;
|
|
2448
|
+
}
|
|
2449
|
+
export interface SootSimShellPerfBridge {
|
|
2450
|
+
start(): MaybeAsync<unknown>;
|
|
2451
|
+
stop(): MaybeAsync<unknown>;
|
|
2452
|
+
}
|
|
2453
|
+
export type SootSimScrollTraceLayer = 'tenant' | 'shell' | 'compositor';
|
|
2454
|
+
export interface SootSimScrollOffsetSample {
|
|
2455
|
+
layer: SootSimScrollTraceLayer;
|
|
2456
|
+
t: number;
|
|
2457
|
+
seq: number;
|
|
2458
|
+
surfaceId: string;
|
|
2459
|
+
nodeId: number;
|
|
2460
|
+
generation?: number;
|
|
2461
|
+
frameToken?: number;
|
|
2462
|
+
surfaceEpoch?: number;
|
|
2463
|
+
textureEpoch?: number;
|
|
2464
|
+
drag?: boolean;
|
|
2465
|
+
momentum?: boolean;
|
|
2466
|
+
offsetX: number;
|
|
2467
|
+
offsetY: number;
|
|
2468
|
+
slotX?: number;
|
|
2469
|
+
slotY?: number;
|
|
2470
|
+
phase?: 'idle' | 'drag' | 'momentum' | 'active';
|
|
2471
|
+
paint?: number;
|
|
2472
|
+
contentWidth?: number;
|
|
2473
|
+
contentHeight?: number;
|
|
2474
|
+
viewportWidth?: number;
|
|
2475
|
+
viewportHeight?: number;
|
|
2476
|
+
}
|
|
2477
|
+
export interface SootSimTransitionProgressSample {
|
|
2478
|
+
t: number;
|
|
2479
|
+
surfaceId: string;
|
|
2480
|
+
stackId: number;
|
|
2481
|
+
progress: number;
|
|
2482
|
+
targetApplies: number;
|
|
2483
|
+
targetChanges: number;
|
|
2484
|
+
targetMisses: number;
|
|
2485
|
+
paintCount: number;
|
|
2486
|
+
}
|
|
2487
|
+
export interface SootSimPressPerformanceSample {
|
|
2488
|
+
inputSurfaceId: string;
|
|
2489
|
+
surfaceId: string;
|
|
2490
|
+
targetWasMounted: boolean;
|
|
2491
|
+
pointerT: number;
|
|
2492
|
+
treeT: number;
|
|
2493
|
+
paintT: number;
|
|
2494
|
+
}
|
|
2495
|
+
export interface SootSimScrollPerformanceTrace {
|
|
2496
|
+
startedAt: number;
|
|
2497
|
+
stoppedAt: number;
|
|
2498
|
+
paired: false;
|
|
2499
|
+
layers: {
|
|
2500
|
+
tenant: SootSimScrollOffsetSample[];
|
|
2501
|
+
shell: SootSimScrollOffsetSample[];
|
|
2502
|
+
compositor: SootSimScrollOffsetSample[];
|
|
2503
|
+
};
|
|
2504
|
+
transitions: SootSimTransitionProgressSample[];
|
|
2505
|
+
presses: SootSimPressPerformanceSample[];
|
|
2506
|
+
}
|
|
2507
|
+
export interface SootSimScrollPerfBridge {
|
|
2508
|
+
start(limit?: number, pressTestID?: string): MaybeAsync<void>;
|
|
2509
|
+
stop(): MaybeAsync<SootSimScrollPerformanceTrace>;
|
|
2510
|
+
}
|
|
2511
|
+
export interface SootSimReactDevtoolsConnection {
|
|
2512
|
+
send(frame: unknown): void;
|
|
2513
|
+
disconnect(): void;
|
|
2514
|
+
}
|
|
2515
|
+
export interface SootSimReactDevtoolsBridge {
|
|
2516
|
+
connect(onFrame: (frame: unknown) => void): SootSimReactDevtoolsConnection;
|
|
2517
|
+
}
|
|
2518
|
+
export type SootSimSceneStreamCommand = {
|
|
2519
|
+
action: 'recordStart';
|
|
2520
|
+
} | {
|
|
2521
|
+
action: 'recordStop';
|
|
2522
|
+
} | {
|
|
2523
|
+
action: 'play';
|
|
2524
|
+
} | {
|
|
2525
|
+
action: 'pause';
|
|
2526
|
+
} | {
|
|
2527
|
+
action: 'seek';
|
|
2528
|
+
timeMs: number;
|
|
2529
|
+
} | {
|
|
2530
|
+
action: 'step';
|
|
2531
|
+
timeMs: number;
|
|
2532
|
+
} | {
|
|
2533
|
+
action: 'state';
|
|
2534
|
+
};
|
|
2535
|
+
export interface SootSimSceneReplayState {
|
|
2536
|
+
timeMs: number;
|
|
2537
|
+
durationMs: number;
|
|
2538
|
+
playing: boolean;
|
|
2539
|
+
ended: boolean;
|
|
2540
|
+
recordedAtEpochMs: number | null;
|
|
2541
|
+
}
|
|
2542
|
+
export type SootSimSceneStreamResult = {
|
|
2543
|
+
action: 'recordStart';
|
|
2544
|
+
} | {
|
|
2545
|
+
action: 'recordStop';
|
|
2546
|
+
bytes: Uint8Array;
|
|
2547
|
+
durationMs: number;
|
|
2548
|
+
frameCount: number;
|
|
2549
|
+
} | ({
|
|
2550
|
+
action: 'play' | 'pause' | 'seek' | 'step' | 'state';
|
|
2551
|
+
} & SootSimSceneReplayState);
|
|
2552
|
+
export interface SootSimSceneStreamBridge {
|
|
2553
|
+
run(command: SootSimSceneStreamCommand): Promise<SootSimSceneStreamResult>;
|
|
2554
|
+
}
|
|
2555
|
+
export interface SootSimBridges {
|
|
2556
|
+
test: SootSimTestBridge | null;
|
|
2557
|
+
interact: SootSimInteractBridge | null;
|
|
2558
|
+
keyboard: SootSimKeyboardBridge | null;
|
|
2559
|
+
camera: SootSimCameraBridge | null;
|
|
2560
|
+
video: SootSimVideoBridge | null;
|
|
2561
|
+
speechSynthesis: SootSimSpeechSynthesisBridge | null;
|
|
2562
|
+
audioRecorder: SootSimAudioRecorderBridge | null;
|
|
2563
|
+
mediaSession: SootSimMediaSessionBridge | null;
|
|
2564
|
+
clipboard: SootSimClipboardBridge | null;
|
|
2565
|
+
hostStorage: SootSimHostStorageBridge | null;
|
|
2566
|
+
demoShare: SootSimDemoShareBridge | null;
|
|
2567
|
+
imagePicker: SootSimImagePickerBridge | null;
|
|
2568
|
+
imageCropper: SootSimImageCropperBridge | null;
|
|
2569
|
+
androidDateTimePicker: SootSimAndroidDateTimePickerBridge | null;
|
|
2570
|
+
shareSheet: SootSimShareSheetBridge | null;
|
|
2571
|
+
photoLibrary: SootSimPhotoLibraryBridge | null;
|
|
2572
|
+
permissions: SootSimPermissionsBridge | null;
|
|
2573
|
+
navigationRoutes: SootSimNavigationRoutesBridge | null;
|
|
2574
|
+
linkingDispatcher: SootSimLinkingDispatcherBridge | null;
|
|
2575
|
+
webview: SootSimWebViewBridge | null;
|
|
2576
|
+
a11y: SootSimA11yBridge | null;
|
|
2577
|
+
perf: SootSimPerfBridge | null;
|
|
2578
|
+
shellPerf: SootSimShellPerfBridge | null;
|
|
2579
|
+
scrollPerf: SootSimScrollPerfBridge | null;
|
|
2580
|
+
debug: SootSimDebugBridge | null;
|
|
2581
|
+
timeline: SootSimTimelineBridge | null;
|
|
2582
|
+
profiler: SootSimProfilerBridge | null;
|
|
2583
|
+
reactProfile: SootSimReactProfileBridge | null;
|
|
2584
|
+
reactDevtools: SootSimReactDevtoolsBridge | null;
|
|
2585
|
+
recorder: SootSimRecorderBridge | null;
|
|
2586
|
+
eventRecorder: SootSimEventRecorderBridge | null;
|
|
2587
|
+
previewRecorder: SootSimPreviewRecorder | null;
|
|
2588
|
+
portalManager: SootSimPortalManager | null;
|
|
2589
|
+
settings: SootSimSettingsBridge | null;
|
|
2590
|
+
windowScale: SootSimWindowScaleBridge | null;
|
|
2591
|
+
electron: SootSimElectronBridge | null;
|
|
2592
|
+
shellHost: SootSimShellHostBridge | null;
|
|
2593
|
+
shellCommands: SootSimShellCommands | null;
|
|
2594
|
+
mainShell: SootSimMainShellBridge | null;
|
|
2595
|
+
hotRemount: SootSimHotRemountBridge | null;
|
|
2596
|
+
liveComposite: SootSimLiveCompositeBridge | null;
|
|
2597
|
+
sceneStream: SootSimSceneStreamBridge | null;
|
|
2598
|
+
lockstepCapture: SootSimLockstepCaptureBridge | null;
|
|
2599
|
+
exitApp: (() => void) | null;
|
|
2600
|
+
forceRender: (() => void) | null;
|
|
2601
|
+
scrollToTop: (() => void) | null;
|
|
2602
|
+
screenshot: ((opts?: SootSimCaptureOptions) => Promise<string>) | null;
|
|
2603
|
+
getWindowSnapshot: (() => unknown) | null;
|
|
2604
|
+
appSnapshot: ((appId: string) => unknown) | null;
|
|
2605
|
+
captureBundle: (() => unknown) | null;
|
|
2606
|
+
readTransformedBundleSlice: ((offset: number, end: number) => Promise<string | null>) | null;
|
|
2607
|
+
createPortal: ((children: unknown, rootNode: unknown, key?: string | null) => unknown) | null;
|
|
2608
|
+
toggleRecording: (() => void) | null;
|
|
2609
|
+
isRecording: (() => boolean) | null;
|
|
2610
|
+
getRecordingState: (() => unknown) | null;
|
|
2611
|
+
getRecordingStartError: (() => string | null) | null;
|
|
2612
|
+
startRecording: ((mode?: PeachRecordingMode, layers?: 'full' | 'tenant' | 'shell', options?: PeachRecordingStartOptions) => Promise<boolean>) | null;
|
|
2613
|
+
startRecordingPrelude: (() => boolean | Promise<boolean>) | null;
|
|
2614
|
+
stopRecording: (() => Promise<boolean | 'pending'>) | null;
|
|
2615
|
+
cancelRecording: (() => void) | null;
|
|
2616
|
+
setSession: ((snapshot: {
|
|
2617
|
+
token: string | null;
|
|
2618
|
+
user: {
|
|
2619
|
+
id: string;
|
|
2620
|
+
name?: string;
|
|
2621
|
+
email?: string;
|
|
2622
|
+
image?: string;
|
|
2623
|
+
} | null;
|
|
2624
|
+
}) => void) | null;
|
|
2625
|
+
workerPerfStats: (() => Promise<unknown>) | null;
|
|
2626
|
+
workerPerfStart: (() => unknown) | null;
|
|
2627
|
+
workerPerfStop: (() => Promise<unknown>) | null;
|
|
2628
|
+
workerCpuProfileStart: ((opts?: {
|
|
2629
|
+
sampleInterval?: number;
|
|
2630
|
+
maxBufferSize?: number;
|
|
2631
|
+
}) => unknown) | null;
|
|
2632
|
+
workerCpuProfileStop: (() => Promise<unknown>) | null;
|
|
2633
|
+
}
|
|
2634
|
+
export interface SootSimAccessibilityState {
|
|
2635
|
+
disabled: boolean;
|
|
2636
|
+
selected: boolean;
|
|
2637
|
+
checked: boolean | 'mixed';
|
|
2638
|
+
busy: boolean;
|
|
2639
|
+
expanded: boolean;
|
|
2640
|
+
}
|
|
2641
|
+
export interface SootSimAccessibilityValue {
|
|
2642
|
+
min?: number;
|
|
2643
|
+
max?: number;
|
|
2644
|
+
now?: number;
|
|
2645
|
+
text?: string;
|
|
2646
|
+
}
|
|
2647
|
+
export type SootSimAccessibilityLiveRegion = 'none' | 'polite' | 'assertive';
|
|
2648
|
+
export interface SootSimFocusedNodeInfo extends SootSimNodeInfo {
|
|
2649
|
+
ancestorNodeIds: number[];
|
|
2650
|
+
}
|
|
2651
|
+
export interface SootSimAccessibilityInput {
|
|
2652
|
+
nodeId: number;
|
|
2653
|
+
rootId: number;
|
|
2654
|
+
activate: boolean;
|
|
2655
|
+
escape: boolean;
|
|
2656
|
+
adjust: boolean;
|
|
2657
|
+
}
|
|
2658
|
+
export interface SootSimNodeInfo {
|
|
2659
|
+
nativeTag?: number;
|
|
2660
|
+
accessibilityFrame?: SootSimLayout;
|
|
2661
|
+
nativeType?: string | null;
|
|
2662
|
+
nodeId: number;
|
|
2663
|
+
type: string;
|
|
2664
|
+
id: string | null;
|
|
2665
|
+
testID: string | null;
|
|
2666
|
+
text: string | null;
|
|
2667
|
+
style: Record<string, unknown>;
|
|
2668
|
+
layout: SootSimLayout;
|
|
2669
|
+
frame: SootSimLayout | null;
|
|
2670
|
+
absolutePosition: {
|
|
2671
|
+
x: number;
|
|
2672
|
+
y: number;
|
|
2673
|
+
width?: number;
|
|
2674
|
+
height?: number;
|
|
2675
|
+
};
|
|
2676
|
+
visibleFrame: SootSimVisibleFrame | null;
|
|
2677
|
+
childCount: number;
|
|
2678
|
+
pressed: boolean;
|
|
2679
|
+
pressable: boolean;
|
|
2680
|
+
isTextInput: boolean;
|
|
2681
|
+
textSelection: {
|
|
2682
|
+
start: number | null;
|
|
2683
|
+
end: number | null;
|
|
2684
|
+
} | null;
|
|
2685
|
+
secureTextEntry: boolean;
|
|
2686
|
+
placeholder: string | null;
|
|
2687
|
+
scrollOffsetX: number;
|
|
2688
|
+
scrollOffsetY: number;
|
|
2689
|
+
zoomScale: number | null;
|
|
2690
|
+
nativePinchEnabled: boolean;
|
|
2691
|
+
contentOffsetProp: {
|
|
2692
|
+
x?: number;
|
|
2693
|
+
y?: number;
|
|
2694
|
+
} | null;
|
|
2695
|
+
decelerationRateProp: unknown;
|
|
2696
|
+
strokeDashoffsetProp: number | null;
|
|
2697
|
+
accessible: boolean;
|
|
2698
|
+
accessibilityLabel: string | null;
|
|
2699
|
+
accessibilityRole: string | null;
|
|
2700
|
+
accessibilityHint: string | null;
|
|
2701
|
+
accessibilityIdentifier?: string | null;
|
|
2702
|
+
accessibilityUserInputLabels?: string[] | null;
|
|
2703
|
+
accessibilityTraits?: string[];
|
|
2704
|
+
accessibilityLiveRegion: SootSimAccessibilityLiveRegion | null;
|
|
2705
|
+
accessibilityState: SootSimAccessibilityState | null;
|
|
2706
|
+
accessibilityValue: SootSimAccessibilityValue | null;
|
|
2707
|
+
accessibilityInput?: SootSimAccessibilityInput;
|
|
2708
|
+
}
|
|
2709
|
+
export interface SootSimStyleTokenBinding {
|
|
2710
|
+
token: string;
|
|
2711
|
+
theme: string;
|
|
2712
|
+
}
|
|
2713
|
+
export interface SootSimCapturedTextSegment {
|
|
2714
|
+
text: string;
|
|
2715
|
+
color?: string | number;
|
|
2716
|
+
fontFamily?: string;
|
|
2717
|
+
fontSize?: number;
|
|
2718
|
+
fontStyle?: string;
|
|
2719
|
+
fontWeight?: string | number;
|
|
2720
|
+
letterSpacing?: number;
|
|
2721
|
+
textDecorationLine?: string;
|
|
2722
|
+
}
|
|
2723
|
+
export interface SootSimCapturedTextLine {
|
|
2724
|
+
text: string;
|
|
2725
|
+
x: number;
|
|
2726
|
+
y: number;
|
|
2727
|
+
width: number;
|
|
2728
|
+
height: number;
|
|
2729
|
+
baseline: number;
|
|
2730
|
+
segments?: SootSimCapturedTextSegment[];
|
|
2731
|
+
}
|
|
2732
|
+
export interface SootSimRenderTreeNode extends SootSimNodeInfo {
|
|
2733
|
+
nativeSurfaceId?: string;
|
|
2734
|
+
parentNodeId: number | null;
|
|
2735
|
+
childNodeIds: number[];
|
|
2736
|
+
paintIndex: number;
|
|
2737
|
+
props: Record<string, unknown>;
|
|
2738
|
+
inspect: SootSimInspectInfo;
|
|
2739
|
+
styleTokenBindings: Record<string, SootSimStyleTokenBinding>;
|
|
2740
|
+
textLines?: SootSimCapturedTextLine[];
|
|
2741
|
+
}
|
|
2742
|
+
export interface SootSimRenderTreeSnapshot {
|
|
2743
|
+
width: number;
|
|
2744
|
+
height: number;
|
|
2745
|
+
rootNodeId: number;
|
|
2746
|
+
nodes: SootSimRenderTreeNode[];
|
|
2747
|
+
commitRevision?: number;
|
|
2748
|
+
}
|
|
2749
|
+
export interface SootSimCaptureTransactionReceipt {
|
|
2750
|
+
token: number;
|
|
2751
|
+
commitRevision: number;
|
|
2752
|
+
}
|
|
2753
|
+
export interface SootSimCaptureBoundLongPressReceipt {
|
|
2754
|
+
handled: boolean;
|
|
2755
|
+
transaction: SootSimCaptureTransactionReceipt;
|
|
2756
|
+
}
|
|
2757
|
+
export interface SootSimCaptureBoundTapReceipt {
|
|
2758
|
+
handled: SootSimTapResult;
|
|
2759
|
+
transaction: SootSimCaptureTransactionReceipt;
|
|
2760
|
+
transition: SootSimScreenTransitionWaitResult | null;
|
|
2761
|
+
}
|
|
2762
|
+
export interface SootSimDebugNodeInfo {
|
|
2763
|
+
nodeId: number;
|
|
2764
|
+
parentNodeId: number | null;
|
|
2765
|
+
childNodeIds: number[];
|
|
2766
|
+
type: string;
|
|
2767
|
+
text: string | null;
|
|
2768
|
+
testID: string | null;
|
|
2769
|
+
accessibilityRole: string | null;
|
|
2770
|
+
pointerEvents: string | null;
|
|
2771
|
+
layout: {
|
|
2772
|
+
x: number;
|
|
2773
|
+
y: number;
|
|
2774
|
+
width: number;
|
|
2775
|
+
height: number;
|
|
2776
|
+
};
|
|
2777
|
+
style: Record<string, unknown>;
|
|
2778
|
+
runtime: {
|
|
2779
|
+
hasFocusImpl: boolean;
|
|
2780
|
+
hasBlurImpl: boolean;
|
|
2781
|
+
hasClearImpl: boolean;
|
|
2782
|
+
hasIsFocusedImpl: boolean;
|
|
2783
|
+
isFocused: boolean | null;
|
|
2784
|
+
hasTextInputState: boolean;
|
|
2785
|
+
controlledTextInput: boolean | null;
|
|
2786
|
+
};
|
|
2787
|
+
propKeys: string[];
|
|
2788
|
+
handlers: Record<string, boolean>;
|
|
2789
|
+
}
|
|
2790
|
+
export interface SootSimVisibleFrame extends SootSimLayout {
|
|
2791
|
+
area?: number;
|
|
2792
|
+
hidden?: SootSimVisibleFrameHidden;
|
|
2793
|
+
}
|
|
2794
|
+
export interface SootSimVisibilityNodeRef {
|
|
2795
|
+
nodeId: number;
|
|
2796
|
+
type: string;
|
|
2797
|
+
testID: string | null;
|
|
2798
|
+
}
|
|
2799
|
+
export type SootSimVisibleFrameHidden = {
|
|
2800
|
+
cached?: true;
|
|
2801
|
+
} & ({
|
|
2802
|
+
path: 'unpainted';
|
|
2803
|
+
by: SootSimVisibilityNodeRef;
|
|
2804
|
+
style: 'hidden' | 'opacity' | 'display-none';
|
|
2805
|
+
} | {
|
|
2806
|
+
path: 'clipped';
|
|
2807
|
+
paint: SootSimLayout;
|
|
2808
|
+
clip: SootSimLayout | null;
|
|
2809
|
+
viewport: SootSimLayout | null;
|
|
2810
|
+
by: (SootSimVisibilityNodeRef | 'viewport')[];
|
|
2811
|
+
} | {
|
|
2812
|
+
path: 'occluded';
|
|
2813
|
+
clipped: SootSimLayout;
|
|
2814
|
+
by: SootSimVisibilityNodeRef;
|
|
2815
|
+
rect: SootSimLayout;
|
|
2816
|
+
} | {
|
|
2817
|
+
path: 'unknown';
|
|
2818
|
+
});
|
|
2819
|
+
export interface SootSimLayout {
|
|
2820
|
+
x: number;
|
|
2821
|
+
y: number;
|
|
2822
|
+
width: number;
|
|
2823
|
+
height: number;
|
|
2824
|
+
}
|
|
2825
|
+
export interface SootSimDeviceSpec {
|
|
2826
|
+
platform?: 'ios' | 'android';
|
|
2827
|
+
width: number;
|
|
2828
|
+
height: number;
|
|
2829
|
+
scale: number;
|
|
2830
|
+
statusBarHeight?: number;
|
|
2831
|
+
homeIndicatorHeight?: number;
|
|
2832
|
+
navigationBarHeight?: number;
|
|
2833
|
+
osVersion?: string;
|
|
2834
|
+
iosVersion?: string;
|
|
2835
|
+
androidApiLevel?: number | null;
|
|
2836
|
+
}
|
|
2837
|
+
export interface SootSimEngineSnapshot {
|
|
2838
|
+
recording: {
|
|
2839
|
+
state: 'idle' | 'recording' | 'processing';
|
|
2840
|
+
mode: PeachRecordingMode | null;
|
|
2841
|
+
duration: number;
|
|
2842
|
+
};
|
|
2843
|
+
inspectActive: boolean;
|
|
2844
|
+
selectedInspect: SootSimInspectInfo | null;
|
|
2845
|
+
devtoolsOpen: boolean;
|
|
2846
|
+
devtoolsPosition: 'right' | 'bottom';
|
|
2847
|
+
devtoolsTab: 'network' | 'performance' | 'logs' | 'agent' | 'test' | 'react' | 'report' | 'onboard' | 'recordings' | 'inspect';
|
|
2848
|
+
devtoolsFilterLogLevel: 'log' | 'info' | 'warn' | 'error' | 'debug' | null;
|
|
2849
|
+
a11yMode: 'off' | 'delayed' | 'active' | 'default' | 'always' | 'agent';
|
|
2850
|
+
ringMode: 'ring' | 'silent';
|
|
2851
|
+
browserNav: {
|
|
2852
|
+
canGoBack: boolean;
|
|
2853
|
+
isAppOpen: boolean;
|
|
2854
|
+
} | null;
|
|
2855
|
+
activeApp: {
|
|
2856
|
+
appId: string | null;
|
|
2857
|
+
appName: string | null;
|
|
2858
|
+
isAppOpen: boolean;
|
|
2859
|
+
};
|
|
2860
|
+
windowState: {
|
|
2861
|
+
deviceModel: string;
|
|
2862
|
+
deviceSpec: SootSimDeviceSpec;
|
|
2863
|
+
orientation: 'portrait' | 'landscape';
|
|
2864
|
+
scaleMode: 'physical' | 'point' | 'pixel' | 'fit';
|
|
2865
|
+
agentProvider: 'codex' | 'claude';
|
|
2866
|
+
showFrame: boolean;
|
|
2867
|
+
showMenuBar: boolean;
|
|
2868
|
+
showRail: boolean;
|
|
2869
|
+
solidWindow: boolean;
|
|
2870
|
+
ambientGlow: 'off' | 'soft' | 'full';
|
|
2871
|
+
stageBackground: 'system' | 'light' | 'dark' | 'gray';
|
|
2872
|
+
stageChecker: boolean;
|
|
2873
|
+
screenshotMode: boolean;
|
|
2874
|
+
threeMode: boolean;
|
|
2875
|
+
threeRecordingEditor: boolean;
|
|
2876
|
+
screenshotCanvas: string;
|
|
2877
|
+
screenshotBackground: string;
|
|
2878
|
+
screenshotText: string;
|
|
2879
|
+
screenshotPose: string;
|
|
2880
|
+
screenshotDynamicSize: boolean;
|
|
2881
|
+
} | null;
|
|
2882
|
+
menuDefs: unknown;
|
|
2883
|
+
}
|
|
2884
|
+
export type SootSimReplayCursorMode = 'live' | 'replay';
|
|
2885
|
+
export interface SootSimReplayCursorPose {
|
|
2886
|
+
x: number;
|
|
2887
|
+
y: number;
|
|
2888
|
+
scale: number;
|
|
2889
|
+
pressed: boolean;
|
|
2890
|
+
opacity: number;
|
|
2891
|
+
transitionMs: number;
|
|
2892
|
+
}
|
|
2893
|
+
export interface SootSimReplayCursorState {
|
|
2894
|
+
visible: boolean;
|
|
2895
|
+
mode: SootSimReplayCursorMode;
|
|
2896
|
+
tone: 'blue' | 'gray';
|
|
2897
|
+
home: {
|
|
2898
|
+
x: number;
|
|
2899
|
+
y: number;
|
|
2900
|
+
};
|
|
2901
|
+
primary: SootSimReplayCursorPose;
|
|
2902
|
+
secondary: SootSimReplayCursorPose | null;
|
|
2903
|
+
hasReplayMoved: boolean;
|
|
2904
|
+
}
|
|
2905
|
+
export interface SootSimAgentActionDetail {
|
|
2906
|
+
type: 'tap' | 'longPress' | 'drag' | 'pinch' | 'scroll' | 'type' | 'screenshot' | 'move';
|
|
2907
|
+
x?: number;
|
|
2908
|
+
y?: number;
|
|
2909
|
+
toX?: number;
|
|
2910
|
+
toY?: number;
|
|
2911
|
+
x2?: number;
|
|
2912
|
+
y2?: number;
|
|
2913
|
+
toX2?: number;
|
|
2914
|
+
toY2?: number;
|
|
2915
|
+
durationMs?: number;
|
|
2916
|
+
moveMs?: number;
|
|
2917
|
+
text?: string;
|
|
2918
|
+
keyboardAction?: 'type' | 'press' | 'dispatchKey' | 'dismiss' | 'edit';
|
|
2919
|
+
edit?: TextInputEditCommand;
|
|
2920
|
+
target?: SootSimReplayTarget;
|
|
2921
|
+
}
|
|
2922
|
+
export type SootSimHardwareKeyboardInputDetail = {
|
|
2923
|
+
keyboardAction: 'type' | 'dispatchKey';
|
|
2924
|
+
text: string;
|
|
2925
|
+
} | {
|
|
2926
|
+
keyboardAction: 'edit';
|
|
2927
|
+
edit: TextInputEditCommand;
|
|
2928
|
+
};
|
|
2929
|
+
export interface SootSimReplayTarget {
|
|
2930
|
+
nodeId?: number | null;
|
|
2931
|
+
id?: string | null;
|
|
2932
|
+
testID?: string | null;
|
|
2933
|
+
text?: string | null;
|
|
2934
|
+
type?: string | null;
|
|
2935
|
+
}
|
|
2936
|
+
export declare function createSootSimReplayScreenIdentity(nodes: readonly PeachAccessibilityNode[]): string;
|
|
2937
|
+
export interface SootSimReplayEvent {
|
|
2938
|
+
startScreen?: string;
|
|
2939
|
+
t: number;
|
|
2940
|
+
sourceT?: number;
|
|
2941
|
+
type: Exclude<SootSimAgentActionDetail['type'], 'screenshot'>;
|
|
2942
|
+
x?: number;
|
|
2943
|
+
y?: number;
|
|
2944
|
+
toX?: number;
|
|
2945
|
+
toY?: number;
|
|
2946
|
+
x2?: number;
|
|
2947
|
+
y2?: number;
|
|
2948
|
+
toX2?: number;
|
|
2949
|
+
toY2?: number;
|
|
2950
|
+
durationMs?: number;
|
|
2951
|
+
moveMs?: number;
|
|
2952
|
+
text?: string;
|
|
2953
|
+
keyboardAction?: 'type' | 'press' | 'dispatchKey' | 'dismiss' | 'edit';
|
|
2954
|
+
edit?: TextInputEditCommand;
|
|
2955
|
+
target?: SootSimReplayTarget;
|
|
2956
|
+
path?: SootSimReplayPathPoint[];
|
|
2957
|
+
}
|
|
2958
|
+
export interface SootSimReplayPathPoint {
|
|
2959
|
+
x: number;
|
|
2960
|
+
y: number;
|
|
2961
|
+
dt: number;
|
|
2962
|
+
}
|
|
2963
|
+
export interface SootSimReplayPreviewState {
|
|
2964
|
+
flowVideoUrl: string | null;
|
|
2965
|
+
flowVideoDurationMs: number | null;
|
|
2966
|
+
bootSnapshotUrl: string | null;
|
|
2967
|
+
bootLoading: boolean;
|
|
2968
|
+
flowVideoLoaded: boolean;
|
|
2969
|
+
sceneLoaded: boolean;
|
|
2970
|
+
recordingStartedAtMs: number | null;
|
|
2971
|
+
surface: 'video' | 'live';
|
|
2972
|
+
interaction: 'replay' | 'paused' | 'live';
|
|
2973
|
+
}
|
|
2974
|
+
export interface SootSimReplayState {
|
|
2975
|
+
status: 'idle' | 'loading' | 'ready' | 'error';
|
|
2976
|
+
previewId: string | null;
|
|
2977
|
+
error: string | null;
|
|
2978
|
+
events: SootSimReplayEvent[];
|
|
2979
|
+
playback: {
|
|
2980
|
+
playing: boolean;
|
|
2981
|
+
scrubbing: boolean;
|
|
2982
|
+
currentTimeMs: number;
|
|
2983
|
+
durationMs: number;
|
|
2984
|
+
currentEventIndex: number;
|
|
2985
|
+
rate: number;
|
|
2986
|
+
};
|
|
2987
|
+
restore: {
|
|
2988
|
+
phase: 'idle' | 'reloading' | 'restoring';
|
|
2989
|
+
targetTimeMs: number | null;
|
|
2990
|
+
progress: number;
|
|
2991
|
+
};
|
|
2992
|
+
cursor: SootSimReplayCursorState;
|
|
2993
|
+
preview: SootSimReplayPreviewState;
|
|
2994
|
+
}
|
|
2995
|
+
export type SootSimRenderMode = 'main' | 'worker';
|
|
2996
|
+
export type SootSimTransformedBundle = {
|
|
2997
|
+
url: string;
|
|
2998
|
+
blob: Blob;
|
|
2999
|
+
byteLength: number;
|
|
3000
|
+
timestamp: number;
|
|
3001
|
+
nativeAppIdentityHeader?: string | null;
|
|
3002
|
+
};
|
|
3003
|
+
export type SootSimConnection = 'idle' | 'connecting' | 'connected' | 'disconnected';
|
|
3004
|
+
export type SootSimShellPathRoute = {
|
|
3005
|
+
kind: 'home';
|
|
3006
|
+
} | {
|
|
3007
|
+
kind: 'connect-rn';
|
|
3008
|
+
} | {
|
|
3009
|
+
kind: 'app';
|
|
3010
|
+
slug: string;
|
|
3011
|
+
} | {
|
|
3012
|
+
kind: 'rn';
|
|
3013
|
+
id: string;
|
|
3014
|
+
} | {
|
|
3015
|
+
kind: 'dock';
|
|
3016
|
+
id: string;
|
|
3017
|
+
};
|
|
3018
|
+
export interface SootSimShellRouteSnapshot {
|
|
3019
|
+
pathname: string;
|
|
3020
|
+
search: string;
|
|
3021
|
+
hash: string;
|
|
3022
|
+
shellRoute: SootSimShellPathRoute;
|
|
3023
|
+
}
|
|
3024
|
+
export interface SootSimRouter {
|
|
3025
|
+
getSnapshot?: () => SootSimShellRouteSnapshot;
|
|
3026
|
+
subscribe?: (listener: () => void) => () => void;
|
|
3027
|
+
push?: (route: SootSimShellPathRoute) => void;
|
|
3028
|
+
replace?: (route: SootSimShellPathRoute) => void;
|
|
3029
|
+
parsePath?: (pathname: string) => SootSimShellPathRoute;
|
|
3030
|
+
buildUrl?: (currentHref: string, route: SootSimShellPathRoute) => string;
|
|
3031
|
+
isManagedPath?: (pathname: string) => boolean;
|
|
3032
|
+
assignAppRouteSlugs?: <T extends {
|
|
3033
|
+
id: string;
|
|
3034
|
+
name: string;
|
|
3035
|
+
}>(entries: T[]) => Array<T & {
|
|
3036
|
+
routeSlug: string;
|
|
3037
|
+
}>;
|
|
3038
|
+
assignRNRouteIds?: <T extends {
|
|
3039
|
+
port: number;
|
|
3040
|
+
projectName?: string;
|
|
3041
|
+
}>(entries: T[]) => Array<T & {
|
|
3042
|
+
routeId: string;
|
|
3043
|
+
}>;
|
|
3044
|
+
}
|
|
3045
|
+
export interface SootSimState {
|
|
3046
|
+
root: unknown;
|
|
3047
|
+
renderHost: unknown;
|
|
3048
|
+
engineSnapshot: SootSimEngineSnapshot | null;
|
|
3049
|
+
simId: string | null;
|
|
3050
|
+
stats: {
|
|
3051
|
+
[key: string]: unknown;
|
|
3052
|
+
getSnapshot?: () => Record<string, unknown>;
|
|
3053
|
+
getAnimationDebugInfo?: () => unknown;
|
|
3054
|
+
} | null;
|
|
3055
|
+
lastTransformedBundle: SootSimTransformedBundle | null;
|
|
3056
|
+
launchMetadata: {
|
|
3057
|
+
reference: string;
|
|
3058
|
+
metadata: URLSearchParams;
|
|
3059
|
+
} | null;
|
|
3060
|
+
console: SootSimConsoleBuffer | null;
|
|
3061
|
+
connection: SootSimConnection;
|
|
3062
|
+
renderMode: SootSimRenderMode;
|
|
3063
|
+
verboseLogs: boolean;
|
|
3064
|
+
capturedComponent: unknown;
|
|
3065
|
+
capturedKey: string | null;
|
|
3066
|
+
rolldownStubs: Record<string, unknown> | null;
|
|
3067
|
+
requestAnimationFrame: ((cb: FrameRequestCallback) => number) | null;
|
|
3068
|
+
shellEventsInstalled: boolean;
|
|
3069
|
+
}
|
|
3070
|
+
export interface SootSimDebugChannels {
|
|
3071
|
+
portals: boolean;
|
|
3072
|
+
sheets: boolean;
|
|
3073
|
+
layout: boolean;
|
|
3074
|
+
onlayout: boolean;
|
|
3075
|
+
animated: boolean;
|
|
3076
|
+
render: boolean;
|
|
3077
|
+
touch: boolean;
|
|
3078
|
+
yoga: boolean;
|
|
3079
|
+
[key: string]: boolean;
|
|
3080
|
+
}
|
|
3081
|
+
export interface SootSimDebugEvent {
|
|
3082
|
+
channel: string;
|
|
3083
|
+
ts: number;
|
|
3084
|
+
payload: unknown;
|
|
3085
|
+
}
|
|
3086
|
+
export interface SootSimDebugState {
|
|
3087
|
+
channels: SootSimDebugChannels;
|
|
3088
|
+
snapshots: Map<string, unknown>;
|
|
3089
|
+
events: SootSimDebugEvent[];
|
|
3090
|
+
recording: boolean;
|
|
3091
|
+
}
|
|
3092
|
+
export interface SootSimGlobals {
|
|
3093
|
+
chrome: SootSimChrome;
|
|
3094
|
+
router: SootSimRouter;
|
|
3095
|
+
bridges: SootSimBridges;
|
|
3096
|
+
state: SootSimState;
|
|
3097
|
+
debug: SootSimDebugState;
|
|
3098
|
+
replayStore: Emitter<SootSimReplayState>;
|
|
3099
|
+
}
|
|
3100
|
+
export declare function inferCursorMoveMs(prevPoint: {
|
|
3101
|
+
x: number;
|
|
3102
|
+
y: number;
|
|
3103
|
+
} | null | undefined, nextPoint: {
|
|
3104
|
+
x: number;
|
|
3105
|
+
y: number;
|
|
3106
|
+
} | null | undefined, gapMs?: number): number;
|
|
3107
|
+
export declare function createSootSimReplayCursorState(mode?: SootSimReplayCursorMode, home?: {
|
|
3108
|
+
x: number;
|
|
3109
|
+
y: number;
|
|
3110
|
+
}): SootSimReplayCursorState;
|
|
3111
|
+
export declare function createSootSimReplayState(): SootSimReplayState;
|
|
3112
|
+
export interface SootSimLegacyGlobals {
|
|
3113
|
+
__sootsimRoot: SootSimState['root'];
|
|
3114
|
+
__sootsimRenderHost: SootSimState['renderHost'];
|
|
3115
|
+
__sootsimSimId: string | null;
|
|
3116
|
+
__sootsimVerboseLogs: boolean;
|
|
3117
|
+
__sootsimEngineState: SootSimEngineSnapshot | null;
|
|
3118
|
+
__sootsimBridgeInstalled: boolean;
|
|
3119
|
+
__sootsimLastTransformedBundle: SootSimState['lastTransformedBundle'];
|
|
3120
|
+
__sootsimConsole: SootSimConsoleBuffer | null;
|
|
3121
|
+
__sootsimStats: SootSimState['stats'];
|
|
3122
|
+
__sootsim_rolldown_stubs: Record<string, unknown> | null;
|
|
3123
|
+
__sootsim_captured_component: SootSimState['capturedComponent'];
|
|
3124
|
+
__sootsim_captured_key: string | null;
|
|
3125
|
+
__sootsimRequestAnimationFrame: SootSimState['requestAnimationFrame'];
|
|
3126
|
+
__sootsim_demo_gateway_origin: string | null;
|
|
3127
|
+
__sootsimTest: SootSimTestBridge | null;
|
|
3128
|
+
__sootsimInteract: SootSimInteractBridge | null;
|
|
3129
|
+
__sootsimKeyboard: SootSimKeyboardBridge | null;
|
|
3130
|
+
__sootsimA11y: SootSimA11yBridge | null;
|
|
3131
|
+
__sootsimDebug: SootSimDebugBridge | null;
|
|
3132
|
+
__sootsimTimeline: SootSimTimelineBridge | null;
|
|
3133
|
+
__sootsimPerf: SootSimPerfBridge | null;
|
|
3134
|
+
__sootsimShellPerf: SootSimShellPerfBridge | null;
|
|
3135
|
+
__sootsimRecorder: SootSimRecorderBridge | null;
|
|
3136
|
+
__sootsimEventRecorder: SootSimEventRecorderBridge | null;
|
|
3137
|
+
__sootsimPreviewRecorder: SootSimPreviewRecorder | null;
|
|
3138
|
+
__sootsimPortalManager: SootSimPortalManager | null;
|
|
3139
|
+
__sootsimCreatePortal: SootSimBridges['createPortal'];
|
|
3140
|
+
__sootsimSettings: SootSimSettingsBridge | null;
|
|
3141
|
+
__sootsimWindowScale: SootSimWindowScaleBridge | null;
|
|
3142
|
+
__sootsimShell: SootSimShellHostBridge | null;
|
|
3143
|
+
__sootsimShellCommands: SootSimShellCommands | null;
|
|
3144
|
+
__sootsimForceRender: SootSimBridges['forceRender'];
|
|
3145
|
+
__sootsimScrollToTop: SootSimBridges['scrollToTop'];
|
|
3146
|
+
__sootsimScreenshot: SootSimBridges['screenshot'];
|
|
3147
|
+
__sootsimGetWindowSnapshot: SootSimBridges['getWindowSnapshot'];
|
|
3148
|
+
__sootsimSnapshot: SootSimBridges['appSnapshot'];
|
|
3149
|
+
__sootsimCaptureBundle: SootSimBridges['captureBundle'];
|
|
3150
|
+
__sootsimToggleRecording: SootSimBridges['toggleRecording'];
|
|
3151
|
+
__sootsimIsRecording: SootSimBridges['isRecording'];
|
|
3152
|
+
__sootsimGetRecordingState: SootSimBridges['getRecordingState'];
|
|
3153
|
+
__sootsimPerfStats: SootSimBridges['workerPerfStats'];
|
|
3154
|
+
__sootsimPerfStart: SootSimBridges['workerPerfStart'];
|
|
3155
|
+
__sootsimPerfStop: SootSimBridges['workerPerfStop'];
|
|
3156
|
+
}
|
|
3157
|
+
export interface SootSimMetroAssetRecord {
|
|
3158
|
+
httpServerLocation?: string;
|
|
3159
|
+
name?: string;
|
|
3160
|
+
type?: string;
|
|
3161
|
+
scales?: number[];
|
|
3162
|
+
width?: number;
|
|
3163
|
+
height?: number;
|
|
3164
|
+
}
|
|
3165
|
+
export interface SootSimMetroRequire {
|
|
3166
|
+
(moduleId: number | string): unknown;
|
|
3167
|
+
getModules?: () => Map<number | string, unknown> | Record<string, unknown>;
|
|
3168
|
+
}
|
|
3169
|
+
export interface SootSimTenantLocation {
|
|
3170
|
+
href: string;
|
|
3171
|
+
origin: string;
|
|
3172
|
+
protocol: string;
|
|
3173
|
+
host: string;
|
|
3174
|
+
hostname: string;
|
|
3175
|
+
port: string;
|
|
3176
|
+
pathname: string;
|
|
3177
|
+
search: string;
|
|
3178
|
+
hash: string;
|
|
3179
|
+
assign(next: string): void;
|
|
3180
|
+
replace(next: string): void;
|
|
3181
|
+
reload(): void;
|
|
3182
|
+
toString(): string;
|
|
3183
|
+
}
|
|
3184
|
+
export interface SootSimTenantNavigator {
|
|
3185
|
+
product: 'ReactNative';
|
|
3186
|
+
userAgent: string;
|
|
3187
|
+
platform: string;
|
|
3188
|
+
language: string;
|
|
3189
|
+
languages: string[];
|
|
3190
|
+
onLine: boolean;
|
|
3191
|
+
maxTouchPoints: number;
|
|
3192
|
+
clipboard: {
|
|
3193
|
+
readText(): Promise<string>;
|
|
3194
|
+
writeText(text: string): Promise<void>;
|
|
3195
|
+
};
|
|
3196
|
+
canShare(data?: unknown): boolean;
|
|
3197
|
+
vibrate(pattern?: number | number[]): boolean;
|
|
3198
|
+
mediaDevices: {
|
|
3199
|
+
getUserMedia(constraints?: unknown): Promise<MediaStream>;
|
|
3200
|
+
enumerateDevices?(): Promise<MediaDeviceInfo[]>;
|
|
3201
|
+
};
|
|
3202
|
+
geolocation?: Geolocation;
|
|
3203
|
+
credentials?: CredentialsContainer;
|
|
3204
|
+
permissions?: Permissions;
|
|
3205
|
+
storage?: StorageManager;
|
|
3206
|
+
}
|
|
3207
|
+
export interface SootSimTenantScreen {
|
|
3208
|
+
width: number;
|
|
3209
|
+
height: number;
|
|
3210
|
+
availWidth: number;
|
|
3211
|
+
availHeight: number;
|
|
3212
|
+
orientation: {
|
|
3213
|
+
angle: number;
|
|
3214
|
+
type: string;
|
|
3215
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject): void;
|
|
3216
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject): void;
|
|
3217
|
+
};
|
|
3218
|
+
}
|
|
3219
|
+
export interface SootSimWorkerTextInputBridge<Node = unknown> {
|
|
3220
|
+
focus?(node: Node): boolean;
|
|
3221
|
+
focusCommand?(node: Node): boolean;
|
|
3222
|
+
blur?(node: Node): boolean;
|
|
3223
|
+
isFocused?(node: Node): boolean;
|
|
3224
|
+
blurFocused?(): boolean;
|
|
3225
|
+
isAnyFocused?(): boolean;
|
|
3226
|
+
getFocused?(): Node | null;
|
|
3227
|
+
focusAdjacent?(direction: 1 | -1): boolean;
|
|
3228
|
+
focusCurrent?(): boolean;
|
|
3229
|
+
}
|
|
3230
|
+
export declare const SOOTSIM_KEYBOARD_TOOLBAR_GROUP_PROP: '__sootsimKeyboardToolbarGroup';
|
|
3231
|
+
export interface SootSimWorkerTextInputBridgeGlobal<Node = unknown> {
|
|
3232
|
+
readonly Object: ObjectConstructor;
|
|
3233
|
+
__sootsimWorkerTextInputBridge?: SootSimWorkerTextInputBridge<Node>;
|
|
3234
|
+
}
|
|
3235
|
+
export type PeachPageServingAuthority = 'published' | 'contributor';
|
|
3236
|
+
export interface SootSimTenantEnvironment {
|
|
3237
|
+
localStorage: Storage;
|
|
3238
|
+
sessionStorage: Storage;
|
|
3239
|
+
matchMedia(query: string): MediaQueryList;
|
|
3240
|
+
location: SootSimTenantLocation;
|
|
3241
|
+
navigator: SootSimTenantNavigator;
|
|
3242
|
+
open(url?: string, target?: string, features?: string): WindowProxy | null;
|
|
3243
|
+
devicePixelRatio: number;
|
|
3244
|
+
innerWidth: number;
|
|
3245
|
+
innerHeight: number;
|
|
3246
|
+
outerWidth: number;
|
|
3247
|
+
outerHeight: number;
|
|
3248
|
+
screen: SootSimTenantScreen;
|
|
3249
|
+
}
|
|
3250
|
+
export type SootSimMetroDefine = (factory: (globalObj: typeof globalThis, require: (id: number) => unknown, metroImportDefault: (id: number) => unknown, metroImportAll: (id: number) => unknown, module: {
|
|
3251
|
+
exports: unknown;
|
|
3252
|
+
}, exports: unknown, dependencyMap: unknown) => void, moduleId: number, dependencyMap: unknown, moduleName?: string, inverseDependencies?: Record<number, number[]>) => void;
|
|
3253
|
+
export interface SootSimDirectGlobals {
|
|
3254
|
+
__peachPageServingAuthority: PeachPageServingAuthority | null;
|
|
3255
|
+
__peachWebViewHost: (request: SootSimWebViewHostRequest) => Promise<void>;
|
|
3256
|
+
__sootsimAuxCompositorStats: () => SootSimAuxCompositorStats;
|
|
3257
|
+
__sootsimDeviceSpec: SootSimDeviceSpec;
|
|
3258
|
+
__sootsimDeviceSpecListeners: Set<() => void>;
|
|
3259
|
+
__sootsimTenantEnvironment: SootSimTenantEnvironment;
|
|
3260
|
+
__sootsim_launch_arguments: string | Record<string, unknown>;
|
|
3261
|
+
__sootsim_react_native_keys_json: string | {
|
|
3262
|
+
secure?: Record<string, string>;
|
|
3263
|
+
public?: Record<string, unknown>;
|
|
3264
|
+
};
|
|
3265
|
+
__sootsimEmitBackPress: () => boolean;
|
|
3266
|
+
__sootsimFindInteractiveCanvas: () => HTMLCanvasElement | null;
|
|
3267
|
+
__r: SootSimMetroRequire;
|
|
3268
|
+
__d: SootSimMetroDefine;
|
|
3269
|
+
__metro_assets: Array<SootSimMetroAssetRecord | undefined>;
|
|
3270
|
+
__sootsim_bundle_origin: string;
|
|
3271
|
+
__sootsimMetroAssetRegistryModuleId: number | string;
|
|
3272
|
+
__sootsimOneNativeContentSnapshot: (appId: string) => unknown;
|
|
3273
|
+
__sootsimStatusBarResetListenerInstalled: boolean;
|
|
3274
|
+
__sootsimDebugWedgeTenant: (ms: number) => void;
|
|
3275
|
+
__contrastModules: {
|
|
3276
|
+
require: (name: string) => unknown;
|
|
3277
|
+
[k: string]: unknown;
|
|
3278
|
+
};
|
|
3279
|
+
__sootsimRuntimeVersion: string;
|
|
3280
|
+
__sootsimCliVersion: string;
|
|
3281
|
+
__peachDesktopHostInstalled: boolean;
|
|
3282
|
+
__peachWorkerHost: {
|
|
3283
|
+
pullSurface?: (source: HTMLCanvasElement, kx?: number, ky?: number) => Promise<void>;
|
|
3284
|
+
};
|
|
3285
|
+
}
|
|
3286
|
+
|
|
3287
|
+
export declare function createDefaultSootSim(): SootSimGlobals;
|
|
3288
|
+
export declare function ensureSootSim(): SootSimGlobals;
|
|
3289
|
+
export declare function getSootSim(): SootSimGlobals | undefined;
|
|
3290
|
+
export declare const SOOTSIM_NATIVE_PUBLIC_INSTANCE: unique symbol;
|
|
3291
|
+
export interface SootSimNativePublicInstance {
|
|
3292
|
+
readonly [SOOTSIM_NATIVE_PUBLIC_INSTANCE]: true;
|
|
3293
|
+
readonly __nativeTag: number | undefined;
|
|
3294
|
+
readonly _nativeTag: number | undefined;
|
|
3295
|
+
readonly __viewTag: number | undefined;
|
|
3296
|
+
}
|
|
3297
|
+
export declare function isSootSimNativePublicInstance(value: unknown): value is SootSimNativePublicInstance;
|
|
3298
|
+
export declare function withSootSimNativePublicInstanceTags<T extends object>(handle: Omit<T, keyof SootSimNativePublicInstance>, viewTag: () => number | undefined): T & SootSimNativePublicInstance;
|
|
3299
|
+
export type BoxViewingMode = 'remote' | 'local';
|
|
3300
|
+
export interface BoxViewingMessage {
|
|
3301
|
+
type: 'sootsim:boxViewing';
|
|
3302
|
+
mode: BoxViewingMode;
|
|
3303
|
+
}
|
|
3304
|
+
export declare function isBoxViewingMessage(value: unknown): value is BoxViewingMessage;
|
|
3305
|
+
export interface NumericTextPaintRequest {
|
|
3306
|
+
value: number;
|
|
3307
|
+
countsDown?: boolean;
|
|
3308
|
+
animated: boolean;
|
|
3309
|
+
speed: number;
|
|
3310
|
+
delay: number;
|
|
3311
|
+
}
|