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
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
import { Pressable, Text, View } from 'react-native'
|
|
3
|
-
import { Selection } from './Selection.kt'
|
|
4
|
-
|
|
5
|
-
type SelectionEvent = [string, boolean, number]
|
|
6
|
-
|
|
7
|
-
export default function Index() {
|
|
8
|
-
const [title, setTitle] = useState('Imported selection')
|
|
9
|
-
const [enabled, setEnabled] = useState(true)
|
|
10
|
-
const [events, setEvents] = useState<SelectionEvent[]>([])
|
|
11
|
-
return (
|
|
12
|
-
<View style={{ flex: 1, paddingTop: 48, backgroundColor: '#fff' }}>
|
|
13
|
-
<View style={{ flex: 1 }}>
|
|
14
|
-
<Selection
|
|
15
|
-
title={title}
|
|
16
|
-
enabled={enabled}
|
|
17
|
-
onSelection={(source, value, count) =>
|
|
18
|
-
setEvents((previous) => [...previous, [source, value, count]])
|
|
19
|
-
}
|
|
20
|
-
/>
|
|
21
|
-
</View>
|
|
22
|
-
<View style={{ height: 200, padding: 24 }}>
|
|
23
|
-
<Text testID="selection-props">{JSON.stringify({ title, enabled })}</Text>
|
|
24
|
-
<Text testID="selection-events">{JSON.stringify(events)}</Text>
|
|
25
|
-
<Pressable
|
|
26
|
-
testID="selection-title"
|
|
27
|
-
onPress={() =>
|
|
28
|
-
setTitle((value) =>
|
|
29
|
-
value === 'Imported selection' ? 'Updated selection' : 'Imported selection',
|
|
30
|
-
)
|
|
31
|
-
}
|
|
32
|
-
>
|
|
33
|
-
<Text>Update title</Text>
|
|
34
|
-
</Pressable>
|
|
35
|
-
<Pressable
|
|
36
|
-
testID="selection-enabled"
|
|
37
|
-
onPress={() => setEnabled((value) => !value)}
|
|
38
|
-
>
|
|
39
|
-
<Text>{enabled ? 'Disable controls' : 'Enable controls'}</Text>
|
|
40
|
-
</Pressable>
|
|
41
|
-
</View>
|
|
42
|
-
</View>
|
|
43
|
-
)
|
|
44
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# Imported Compose selection controls
|
|
2
|
-
|
|
3
|
-
This fixture imports a public composable into a React Native app and reports
|
|
4
|
-
Switch, Checkbox, and RadioButton callbacks to React. Compose retains its
|
|
5
|
-
selection and callback count when React changes the title or enabled prop.
|
|
6
|
-
|
|
7
|
-
Run One here with `bunx one dev --port 8081`, then open that port with
|
|
8
|
-
`peach open 8081 --device pixel-8`. Generate native Android with
|
|
9
|
-
`bunx one prebuild --platform android`; build `android/` with
|
|
10
|
-
`./gradlew assembleDebug` on the repository's remote builder.
|
|
11
|
-
|
|
12
|
-
Toggle the React title twice before touching a native control. Tap Switch,
|
|
13
|
-
update the title, tap Checkbox, then RadioButton. Disable the controls and tap
|
|
14
|
-
Switch: neither Compose state nor React events may change. Enable them and
|
|
15
|
-
tap Checkbox again. The final state is `Updated selection|false|4|true`, and
|
|
16
|
-
`selection-events` contains
|
|
17
|
-
`[["switch",true,1],["checkbox",false,2],["radio",true,3],["checkbox",false,4]]`.
|
|
18
|
-
|
|
19
|
-
RAN 2026-10-11: Android debug and Kotlin/Wasm builds passed, followed in order
|
|
20
|
-
by One Android, Peach, and Contrast's native bundle producer. All eleven
|
|
21
|
-
observed states and the callback tuples above matched across the three hosts.
|
|
22
|
-
Peach and Contrast reported no preview errors. Contrast compiled `Selection.kt`
|
|
23
|
-
through its Kotlin import route and produced a complete bundle graph.
|
|
24
|
-
|
|
25
|
-
These runs used One `2.0.0-0.canary.1791724440037`, source
|
|
26
|
-
`65f7d27e6e6cbf33e94e41de7b8667c13c6a6077`, whose HMR socket uses the native
|
|
27
|
-
bundle server's origin. The earlier canary's connection-error toast intercepted
|
|
28
|
-
the React footer tap on Android. A separate direct Android tap now changes the
|
|
29
|
-
title, and the full interaction then passes on the unchanged Android native
|
|
30
|
-
sources. This establishes import and interaction behavior; it does not grade
|
|
31
|
-
pixels or the signed-in editor. Hashes, captures, and receipts are retained in
|
|
32
|
-
task `t-mv3qgkej-1kh0`.
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// generated by one typegen; edits will be replaced
|
|
2
|
-
import type { ReactElement } from 'react'
|
|
3
|
-
|
|
4
|
-
export declare function Selection(props: {
|
|
5
|
-
title: string
|
|
6
|
-
enabled: boolean
|
|
7
|
-
onSelection?: ((value0: string, value1: boolean, value2: number) => void) | null
|
|
8
|
-
}): ReactElement
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
package dev.contrast.kotlinselection
|
|
2
|
-
|
|
3
|
-
import androidx.compose.foundation.layout.Arrangement
|
|
4
|
-
import androidx.compose.foundation.layout.Column
|
|
5
|
-
import androidx.compose.foundation.layout.Row
|
|
6
|
-
import androidx.compose.foundation.layout.fillMaxSize
|
|
7
|
-
import androidx.compose.foundation.layout.padding
|
|
8
|
-
import androidx.compose.material3.Checkbox
|
|
9
|
-
import androidx.compose.material3.MaterialTheme
|
|
10
|
-
import androidx.compose.material3.RadioButton
|
|
11
|
-
import androidx.compose.material3.Surface
|
|
12
|
-
import androidx.compose.material3.Switch
|
|
13
|
-
import androidx.compose.material3.Text
|
|
14
|
-
import androidx.compose.material3.lightColorScheme
|
|
15
|
-
import androidx.compose.runtime.Composable
|
|
16
|
-
import androidx.compose.runtime.getValue
|
|
17
|
-
import androidx.compose.runtime.mutableStateOf
|
|
18
|
-
import androidx.compose.runtime.remember
|
|
19
|
-
import androidx.compose.runtime.setValue
|
|
20
|
-
import androidx.compose.ui.Alignment
|
|
21
|
-
import androidx.compose.ui.Modifier
|
|
22
|
-
import androidx.compose.ui.platform.testTag
|
|
23
|
-
import androidx.compose.ui.semantics.contentDescription
|
|
24
|
-
import androidx.compose.ui.semantics.semantics
|
|
25
|
-
import androidx.compose.ui.unit.dp
|
|
26
|
-
|
|
27
|
-
@Composable
|
|
28
|
-
fun Selection(
|
|
29
|
-
title: String,
|
|
30
|
-
enabled: Boolean,
|
|
31
|
-
onSelection: ((String, Boolean, Int) -> Unit)? = null,
|
|
32
|
-
) {
|
|
33
|
-
var selected by remember { mutableStateOf(false) }
|
|
34
|
-
var changes by remember { mutableStateOf(0) }
|
|
35
|
-
fun change(source: String, value: Boolean) {
|
|
36
|
-
selected = value
|
|
37
|
-
changes += 1
|
|
38
|
-
onSelection?.invoke(source, value, changes)
|
|
39
|
-
}
|
|
40
|
-
MaterialTheme(colorScheme = lightColorScheme()) {
|
|
41
|
-
Surface(Modifier.fillMaxSize()) {
|
|
42
|
-
Column(
|
|
43
|
-
Modifier.fillMaxSize().padding(24.dp),
|
|
44
|
-
verticalArrangement = Arrangement.spacedBy(16.dp),
|
|
45
|
-
) {
|
|
46
|
-
Text(title, style = MaterialTheme.typography.headlineSmall)
|
|
47
|
-
Text("$title|$selected|$changes|$enabled", Modifier.testTag("selection-state"))
|
|
48
|
-
Row(verticalAlignment = Alignment.CenterVertically) {
|
|
49
|
-
Switch(
|
|
50
|
-
checked = selected,
|
|
51
|
-
enabled = enabled,
|
|
52
|
-
onCheckedChange = { change("switch", it) },
|
|
53
|
-
modifier = Modifier.testTag("selection-switch").semantics { contentDescription = "selection-switch" },
|
|
54
|
-
)
|
|
55
|
-
Text("Switch")
|
|
56
|
-
}
|
|
57
|
-
Row(verticalAlignment = Alignment.CenterVertically) {
|
|
58
|
-
Checkbox(
|
|
59
|
-
checked = selected,
|
|
60
|
-
enabled = enabled,
|
|
61
|
-
onCheckedChange = { change("checkbox", it) },
|
|
62
|
-
modifier = Modifier.testTag("selection-checkbox").semantics { contentDescription = "selection-checkbox" },
|
|
63
|
-
)
|
|
64
|
-
Text("Checkbox")
|
|
65
|
-
}
|
|
66
|
-
Row(verticalAlignment = Alignment.CenterVertically) {
|
|
67
|
-
RadioButton(
|
|
68
|
-
selected = selected,
|
|
69
|
-
enabled = enabled,
|
|
70
|
-
onClick = { change("radio", !selected) },
|
|
71
|
-
modifier = Modifier.testTag("selection-radio").semantics { contentDescription = "selection-radio" },
|
|
72
|
-
)
|
|
73
|
-
Text("Radio button")
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from '../ImportSelection.native'
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "peach-kotlin-import-selection-fixture",
|
|
3
|
-
"private": true,
|
|
4
|
-
"type": "module",
|
|
5
|
-
"targets": [
|
|
6
|
-
"native"
|
|
7
|
-
],
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"@react-navigation/core": "catalog:",
|
|
10
|
-
"@react-navigation/native": "catalog:",
|
|
11
|
-
"one": "catalog:",
|
|
12
|
-
"react": "catalog:",
|
|
13
|
-
"react-native": "catalog:",
|
|
14
|
-
"react-native-reanimated": "catalog:",
|
|
15
|
-
"react-native-screens": "catalog:",
|
|
16
|
-
"react-native-worklets": "catalog:"
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"@react-native-community/template": "catalog:",
|
|
20
|
-
"peachsim": "workspace:*",
|
|
21
|
-
"vite": "catalog:"
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"paths": {
|
|
4
|
-
"~/*": ["./*"]
|
|
5
|
-
},
|
|
6
|
-
"strict": true,
|
|
7
|
-
"allowArbitraryExtensions": true,
|
|
8
|
-
"rootDir": ".",
|
|
9
|
-
"module": "Preserve",
|
|
10
|
-
// allows react-native style imports without path extensions, for compat with platform-specific files
|
|
11
|
-
"moduleResolution": "Bundler",
|
|
12
|
-
"preserveSymlinks": true,
|
|
13
|
-
"skipLibCheck": true,
|
|
14
|
-
"jsx": "react-jsx",
|
|
15
|
-
"noImplicitAny": false,
|
|
16
|
-
"types": ["node", "react", "vite/client"],
|
|
17
|
-
"lib": ["dom", "esnext"]
|
|
18
|
-
},
|
|
19
|
-
"exclude": ["node_modules", "**/test", "**/dist", "**/types", "**/__tests__"]
|
|
20
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { one } from 'one/vite'
|
|
2
|
-
import { peachPlugin } from 'peachsim/vite'
|
|
3
|
-
export default {
|
|
4
|
-
root: import.meta.dirname,
|
|
5
|
-
plugins: [
|
|
6
|
-
one({
|
|
7
|
-
web: { defaultRenderMode: 'spa' },
|
|
8
|
-
native: {
|
|
9
|
-
bundler: 'vite',
|
|
10
|
-
app: {
|
|
11
|
-
name: 'KotlinSelection',
|
|
12
|
-
scheme: 'kotlinselection',
|
|
13
|
-
android: { applicationId: 'dev.contrast.kotlinselection' },
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
}),
|
|
17
|
-
peachPlugin(),
|
|
18
|
-
],
|
|
19
|
-
server: { host: '0.0.0.0' },
|
|
20
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
import { Text, View } from 'react-native'
|
|
3
|
-
import { Surfaces } from './Surfaces.kt'
|
|
4
|
-
|
|
5
|
-
export default function Index() {
|
|
6
|
-
const [step, setStep] = useState(0)
|
|
7
|
-
return (
|
|
8
|
-
<View style={{ flex: 1, backgroundColor: '#fff' }}>
|
|
9
|
-
<Surfaces title={`Surfaces step ${step}`} onStep={setStep} />
|
|
10
|
-
<Text testID="surfaces-react-step">React step: {step}</Text>
|
|
11
|
-
</View>
|
|
12
|
-
)
|
|
13
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# Imported Compose surfaces
|
|
2
|
-
|
|
3
|
-
Run One in this fixture, then open its Android bundle in Peach on Pixel 8.
|
|
4
|
-
Build the native Android target on a remote builder. Import the same files in
|
|
5
|
-
Contrast with catalog versions materialized.
|
|
6
|
-
|
|
7
|
-
Tap `surfaces-step` to alternate Material light and dark color schemes. The
|
|
8
|
-
callback updates React and the imported title while Compose retains count.
|
|
9
|
-
Capture the rounded Surface, cut corner Card and horizontal divider in all
|
|
10
|
-
four states: light zero, dark one, disabled one and restored light two.
|
|
11
|
-
The disabled button must preserve count and every palette value. Read the
|
|
12
|
-
actual color scheme ARGB values on native Android and require both imported
|
|
13
|
-
hosts to match. These checks prove execution and state, without a pixel grade.
|
|
14
|
-
|
|
15
|
-
RAN, 2026-10-11: fresh One Android API 37, Peach and Contrast Android import
|
|
16
|
-
runs pass all four states with identical palette readbacks and callback values.
|
|
17
|
-
The [functional receipt](https://r2.sootsim.com/kotlin-evidence/import-surfaces/1575299a492a37b497f5e923be69b865c2fae9c81d62b448810bed330596d052/proof.json)
|
|
18
|
-
binds Kotlin source, compiler, native APK, captures and executed probes.
|
|
19
|
-
All 50 published objects pass SHA256 readback. A wrong surface color and a
|
|
20
|
-
disabled callback change reject the saved verdict. Required CI delivery remains
|
|
21
|
-
separate from this functional proof. The existing preview shell chrome and
|
|
22
|
-
native debug HMR warning remain in captures; their fidelity is unclaimed.
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
package dev.contrast.kotlinsurfaces
|
|
2
|
-
|
|
3
|
-
import androidx.compose.foundation.layout.Arrangement
|
|
4
|
-
import androidx.compose.foundation.layout.Column
|
|
5
|
-
import androidx.compose.foundation.layout.fillMaxSize
|
|
6
|
-
import androidx.compose.foundation.layout.padding
|
|
7
|
-
import androidx.compose.foundation.layout.size
|
|
8
|
-
import androidx.compose.foundation.shape.CutCornerShape
|
|
9
|
-
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
10
|
-
import androidx.compose.material3.Button
|
|
11
|
-
import androidx.compose.material3.Card
|
|
12
|
-
import androidx.compose.material3.CardDefaults
|
|
13
|
-
import androidx.compose.material3.HorizontalDivider
|
|
14
|
-
import androidx.compose.material3.MaterialTheme
|
|
15
|
-
import androidx.compose.material3.Surface
|
|
16
|
-
import androidx.compose.material3.Text
|
|
17
|
-
import androidx.compose.material3.darkColorScheme
|
|
18
|
-
import androidx.compose.material3.lightColorScheme
|
|
19
|
-
import androidx.compose.runtime.Composable
|
|
20
|
-
import androidx.compose.runtime.getValue
|
|
21
|
-
import androidx.compose.runtime.mutableStateOf
|
|
22
|
-
import androidx.compose.runtime.remember
|
|
23
|
-
import androidx.compose.runtime.setValue
|
|
24
|
-
import androidx.compose.ui.Modifier
|
|
25
|
-
import androidx.compose.ui.graphics.toArgb
|
|
26
|
-
import androidx.compose.ui.platform.testTag
|
|
27
|
-
import androidx.compose.ui.unit.dp
|
|
28
|
-
|
|
29
|
-
@Composable
|
|
30
|
-
fun Surfaces(title: String, onStep: ((Int) -> Unit)? = null) {
|
|
31
|
-
var count by remember { mutableStateOf(0) }
|
|
32
|
-
val dark = count % 2 == 1
|
|
33
|
-
val scheme = if (dark) darkColorScheme() else lightColorScheme()
|
|
34
|
-
MaterialTheme(colorScheme = scheme) {
|
|
35
|
-
Surface(Modifier.fillMaxSize()) {
|
|
36
|
-
Column(Modifier.fillMaxSize().padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
|
37
|
-
Text(title, Modifier.testTag("surfaces-title"))
|
|
38
|
-
Text("Count: $count", Modifier.testTag("surfaces-count"))
|
|
39
|
-
Surface(
|
|
40
|
-
modifier = Modifier.size(280.dp, 64.dp).testTag("surfaces-rounded"),
|
|
41
|
-
shape = RoundedCornerShape(12.dp),
|
|
42
|
-
color = scheme.primary,
|
|
43
|
-
contentColor = scheme.onPrimary,
|
|
44
|
-
) { Text("Rounded surface", Modifier.padding(12.dp)) }
|
|
45
|
-
Card(
|
|
46
|
-
modifier = Modifier.size(280.dp, 64.dp).testTag("surfaces-cut"),
|
|
47
|
-
shape = CutCornerShape(8.dp),
|
|
48
|
-
colors = CardDefaults.cardColors(containerColor = scheme.secondaryContainer),
|
|
49
|
-
) { Text("Cut corner card", Modifier.padding(12.dp)) }
|
|
50
|
-
HorizontalDivider(Modifier.size(280.dp, 2.dp).testTag("surfaces-divider"), thickness = 2.dp)
|
|
51
|
-
Button(onClick = { count += 1; onStep?.invoke(count) }, modifier = Modifier.testTag("surfaces-step")) {
|
|
52
|
-
Text("Next surfaces step")
|
|
53
|
-
}
|
|
54
|
-
Button(onClick = { count += 1000; onStep?.invoke(count) }, enabled = false, modifier = Modifier.testTag("surfaces-disabled")) {
|
|
55
|
-
Text("Disabled surfaces step")
|
|
56
|
-
}
|
|
57
|
-
Text(
|
|
58
|
-
"dark=${if (dark) 1 else 0};surface=${scheme.surface.toArgb()};onSurface=${scheme.onSurface.toArgb()};primary=${scheme.primary.toArgb()};secondaryContainer=${scheme.secondaryContainer.toArgb()}",
|
|
59
|
-
Modifier.testTag("surfaces-palette"),
|
|
60
|
-
)
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from '../ImportSurfaces.native'
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "peach-kotlin-import-surfaces-fixture",
|
|
3
|
-
"private": true,
|
|
4
|
-
"type": "module",
|
|
5
|
-
"targets": [
|
|
6
|
-
"native"
|
|
7
|
-
],
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"@react-navigation/core": "catalog:",
|
|
10
|
-
"@react-navigation/native": "catalog:",
|
|
11
|
-
"one": "catalog:",
|
|
12
|
-
"react": "catalog:",
|
|
13
|
-
"react-native": "catalog:",
|
|
14
|
-
"react-native-reanimated": "catalog:",
|
|
15
|
-
"react-native-screens": "catalog:",
|
|
16
|
-
"react-native-worklets": "catalog:"
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"@react-native-community/template": "catalog:",
|
|
20
|
-
"peachsim": "workspace:*",
|
|
21
|
-
"vite": "catalog:"
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"paths": {
|
|
4
|
-
"~/*": ["./*"]
|
|
5
|
-
},
|
|
6
|
-
"strict": true,
|
|
7
|
-
"allowArbitraryExtensions": true,
|
|
8
|
-
"rootDir": ".",
|
|
9
|
-
"module": "Preserve",
|
|
10
|
-
// allows react-native style imports without path extensions, for compat with platform-specific files
|
|
11
|
-
"moduleResolution": "Bundler",
|
|
12
|
-
"preserveSymlinks": true,
|
|
13
|
-
"skipLibCheck": true,
|
|
14
|
-
"jsx": "react-jsx",
|
|
15
|
-
"noImplicitAny": false,
|
|
16
|
-
"types": ["node", "react", "vite/client"],
|
|
17
|
-
"lib": ["dom", "esnext"]
|
|
18
|
-
},
|
|
19
|
-
"exclude": ["node_modules", "**/test", "**/dist", "**/types", "**/__tests__"]
|
|
20
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { one } from 'one/vite'
|
|
2
|
-
import { peachPlugin } from 'peachsim/vite'
|
|
3
|
-
export default {
|
|
4
|
-
root: import.meta.dirname,
|
|
5
|
-
plugins: [
|
|
6
|
-
one({
|
|
7
|
-
web: { defaultRenderMode: 'spa' },
|
|
8
|
-
native: {
|
|
9
|
-
bundler: 'vite',
|
|
10
|
-
app: {
|
|
11
|
-
name: 'KotlinSurfaces',
|
|
12
|
-
scheme: 'kotlinsurfaces',
|
|
13
|
-
android: { applicationId: 'dev.contrast.kotlinsurfaces' },
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
}),
|
|
17
|
-
peachPlugin(),
|
|
18
|
-
],
|
|
19
|
-
server: { host: '0.0.0.0' },
|
|
20
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from 'react'
|
|
2
|
-
import { Text, View } from 'react-native'
|
|
3
|
-
import { Values } from './Values.kt'
|
|
4
|
-
|
|
5
|
-
const input = JSON.stringify({
|
|
6
|
-
items: [{ name: 'Kotlin' }, ['hello', 7, true, null]],
|
|
7
|
-
metadata: { source: 'One' },
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
async function processResults() {
|
|
11
|
-
const results = [
|
|
12
|
-
await Values.current(),
|
|
13
|
-
await Values.delayed('changed'),
|
|
14
|
-
await Values.current(),
|
|
15
|
-
]
|
|
16
|
-
try {
|
|
17
|
-
await Values.throwing()
|
|
18
|
-
throw new Error('sync call unexpectedly succeeded')
|
|
19
|
-
} catch (reason) {
|
|
20
|
-
if (!String(reason).includes('sync failure')) throw reason
|
|
21
|
-
results.push('sync rejected')
|
|
22
|
-
}
|
|
23
|
-
results.push(await Values.current())
|
|
24
|
-
try {
|
|
25
|
-
await Values.delayedThrow()
|
|
26
|
-
throw new Error('suspended call unexpectedly succeeded')
|
|
27
|
-
} catch (reason) {
|
|
28
|
-
if (!String(reason).includes('suspend failure')) throw reason
|
|
29
|
-
results.push('suspend rejected')
|
|
30
|
-
}
|
|
31
|
-
results.push(await Values.delayed('recovered'), await Values.current())
|
|
32
|
-
return results
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export default function Index() {
|
|
36
|
-
const [result, setResult] = useState('running')
|
|
37
|
-
const [error, setError] = useState('')
|
|
38
|
-
useEffect(() => {
|
|
39
|
-
void Promise.all([
|
|
40
|
-
Values.read(input),
|
|
41
|
-
Values.failures(),
|
|
42
|
-
Values.nested({ first: [1, 2], second: [] }),
|
|
43
|
-
Values.nullable(null),
|
|
44
|
-
Values.nullable('hello'),
|
|
45
|
-
Values.nullableList([null, 'one', '', null]),
|
|
46
|
-
Values.nullableList([]),
|
|
47
|
-
Values.nullableMap({ first: [1, null, 3], empty: [] }),
|
|
48
|
-
Values.nullableMap({}),
|
|
49
|
-
processResults(),
|
|
50
|
-
])
|
|
51
|
-
.then((values) => setResult(JSON.stringify(values)))
|
|
52
|
-
.catch((reason: unknown) => setError(String(reason)))
|
|
53
|
-
}, [])
|
|
54
|
-
return (
|
|
55
|
-
<View style={{ flex: 1, backgroundColor: '#fff', padding: 24, paddingTop: 80 }}>
|
|
56
|
-
<Text style={{ fontSize: 24 }}>Kotlin imported values</Text>
|
|
57
|
-
<Text testID="import-values-result">{result}</Text>
|
|
58
|
-
<Text testID="import-values-error">{error}</Text>
|
|
59
|
-
</View>
|
|
60
|
-
)
|
|
61
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# Imported Kotlin values
|
|
2
|
-
|
|
3
|
-
This fixture exercises a real `OneModule` through the same `.kt` import on
|
|
4
|
-
Android and in Peach. Its visible result contains nested map/list round trips,
|
|
5
|
-
nullable strings and collection elements, 14 JSON reads and 17 expected Android
|
|
6
|
-
JSON errors. The ten results include null elements, empty lists, nested nullable
|
|
7
|
-
map values and an empty map, so declaration errors cannot hide behind a scalar
|
|
8
|
-
call that happens to work.
|
|
9
|
-
|
|
10
|
-
Run One from this directory with `bunx one dev --port 8081`. Open that server in Peach with
|
|
11
|
-
`peach open <port> --device pixel-8`, or generate Android with `bunx one prebuild --platform android` and build
|
|
12
|
-
`android/` with `./gradlew assembleDebug`.
|
|
13
|
-
Use the repository's remote builder for Android compilation. The module uses
|
|
14
|
-
Android's own `org.json` on device and Peach's Kotlin implementation in Wasm.
|
|
15
|
-
|
|
16
|
-
The `import-values-result` node starts as `running`, then contains the complete
|
|
17
|
-
JSON result. `import-values-error` must stay empty. Compare parsed results
|
|
18
|
-
between hosts, including error messages, nulls and empty collections.
|
|
19
|
-
|
|
20
|
-
For Contrast, import these project files with their catalog dependency versions
|
|
21
|
-
materialized. Its Android native bundle producer compiles `Values.kt`, publishes
|
|
22
|
-
the generated Wasm and registers the module contract before calling methods.
|
|
23
|
-
A successful bundle alone does not establish runtime acceptance.
|
|
24
|
-
|
|
25
|
-
The final result checks retained module state across coroutine completion, synchronous
|
|
26
|
-
and suspended rejection, and recovery. Its eight values are `initial`, `changed`,
|
|
27
|
-
`changed`, `sync rejected`, `changed`, `suspend rejected`, `recovered`, `recovered`.
|
|
28
|
-
The fixture asserts settled call behavior; it makes no timing or concurrency claim.
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// generated by one typegen; edits will be replaced
|
|
2
|
-
export declare const Values: {
|
|
3
|
-
current(): Promise<string>
|
|
4
|
-
delayed(value: string): Promise<string>
|
|
5
|
-
throwing(): Promise<string>
|
|
6
|
-
delayedThrow(): Promise<string>
|
|
7
|
-
nested(values: Record<string, number[]>): Promise<Record<string, number[]>>
|
|
8
|
-
nullable(value: string | null): Promise<string | null>
|
|
9
|
-
nullableList(values: (string | null)[]): Promise<(string | null)[]>
|
|
10
|
-
nullableMap(
|
|
11
|
-
values: Record<string, (number | null)[]>,
|
|
12
|
-
): Promise<Record<string, (number | null)[]>>
|
|
13
|
-
read(input: string): Promise<string[]>
|
|
14
|
-
failures(): Promise<string[]>
|
|
15
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
package dev.contrast.kotlinimports
|
|
2
|
-
|
|
3
|
-
import dev.onejs.one.source.OneModule
|
|
4
|
-
import kotlinx.coroutines.delay
|
|
5
|
-
import org.json.JSONArray
|
|
6
|
-
import org.json.JSONException
|
|
7
|
-
import org.json.JSONObject
|
|
8
|
-
|
|
9
|
-
object Values : OneModule {
|
|
10
|
-
private var processState = "initial"
|
|
11
|
-
|
|
12
|
-
fun current(): String = processState
|
|
13
|
-
|
|
14
|
-
suspend fun delayed(value: String): String {
|
|
15
|
-
delay(30)
|
|
16
|
-
processState = value
|
|
17
|
-
return processState
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
fun throwing(): String = throw IllegalStateException("sync failure")
|
|
21
|
-
|
|
22
|
-
suspend fun delayedThrow(): String {
|
|
23
|
-
delay(30)
|
|
24
|
-
throw IllegalArgumentException("suspend failure")
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
fun nested(values: Map<String, List<Int>>): Map<String, List<Int>> = values
|
|
28
|
-
|
|
29
|
-
fun nullable(value: String?): String? = value
|
|
30
|
-
|
|
31
|
-
fun nullableList(values: List<String?>): List<String?> = values
|
|
32
|
-
|
|
33
|
-
fun nullableMap(values: Map<String, List<Int?>>): Map<String, List<Int?>> = values
|
|
34
|
-
|
|
35
|
-
fun read(input: String): List<String> {
|
|
36
|
-
val document = JSONObject(input)
|
|
37
|
-
val items = document.getJSONArray("items")
|
|
38
|
-
val child = items.getJSONObject(0)
|
|
39
|
-
val nested = items.getJSONArray(1)
|
|
40
|
-
return listOf(
|
|
41
|
-
child.getString("name"),
|
|
42
|
-
nested.getString(0),
|
|
43
|
-
nested.getString(1),
|
|
44
|
-
nested.getString(2),
|
|
45
|
-
nested.getString(3),
|
|
46
|
-
document.getJSONObject("metadata").getString("source"),
|
|
47
|
-
(document.optJSONArray("items") === items).toString(),
|
|
48
|
-
(items.optJSONObject(0) === child).toString(),
|
|
49
|
-
(items.optJSONArray(1) === nested).toString(),
|
|
50
|
-
(document.optJSONObject("metadata") != null).toString(),
|
|
51
|
-
(document.optJSONObject("items") == null).toString(),
|
|
52
|
-
(document.optJSONArray("missing") == null).toString(),
|
|
53
|
-
(items.optJSONObject(-1) == null).toString(),
|
|
54
|
-
(items.optJSONArray(20) == null).toString(),
|
|
55
|
-
)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
fun failures(): List<String> {
|
|
59
|
-
val document = JSONObject("""{"text":"hello","number":7,"decimal":1.0,"flag":false,"nothing":null,"items":[],"child":{}}""")
|
|
60
|
-
val values = JSONArray("""["hello",7,1.0,false,null,[],{}]""")
|
|
61
|
-
val reads: List<() -> Any> = listOf(
|
|
62
|
-
{ document.getJSONArray("text") },
|
|
63
|
-
{ document.getJSONObject("number") },
|
|
64
|
-
{ document.getJSONArray("decimal") },
|
|
65
|
-
{ document.getJSONObject("flag") },
|
|
66
|
-
{ document.getJSONArray("nothing") },
|
|
67
|
-
{ document.getJSONObject("items") },
|
|
68
|
-
{ document.getJSONArray("child") },
|
|
69
|
-
{ document.getJSONObject("missing") },
|
|
70
|
-
{ values.getJSONArray(0) },
|
|
71
|
-
{ values.getJSONObject(1) },
|
|
72
|
-
{ values.getJSONArray(2) },
|
|
73
|
-
{ values.getJSONObject(3) },
|
|
74
|
-
{ values.getJSONArray(4) },
|
|
75
|
-
{ values.getJSONObject(5) },
|
|
76
|
-
{ values.getJSONArray(6) },
|
|
77
|
-
{ values.getString(20) },
|
|
78
|
-
{ JSONArray().put(null).getString(0) },
|
|
79
|
-
)
|
|
80
|
-
return reads.map { read ->
|
|
81
|
-
try { read(); "unexpected success" } catch (error: JSONException) { error.message ?: "missing error message" }
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from '../ImportValues.native'
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "peach-kotlin-import-values-fixture",
|
|
3
|
-
"private": true,
|
|
4
|
-
"type": "module",
|
|
5
|
-
"targets": [
|
|
6
|
-
"native"
|
|
7
|
-
],
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"@react-navigation/core": "catalog:",
|
|
10
|
-
"@react-navigation/native": "catalog:",
|
|
11
|
-
"one": "catalog:",
|
|
12
|
-
"react": "catalog:",
|
|
13
|
-
"react-native": "catalog:",
|
|
14
|
-
"react-native-reanimated": "catalog:",
|
|
15
|
-
"react-native-screens": "catalog:",
|
|
16
|
-
"react-native-worklets": "catalog:"
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"@react-native-community/template": "catalog:",
|
|
20
|
-
"peachsim": "workspace:*",
|
|
21
|
-
"vite": "catalog:"
|
|
22
|
-
}
|
|
23
|
-
}
|