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,18 +0,0 @@
|
|
|
1
|
-
// deno-lint-ignore-file
|
|
2
|
-
/* eslint-disable */
|
|
3
|
-
// biome-ignore: needed import
|
|
4
|
-
import type { OneRouter } from 'one'
|
|
5
|
-
|
|
6
|
-
declare module 'one' {
|
|
7
|
-
export namespace OneRouter {
|
|
8
|
-
export interface __routes<T extends string = string> extends Record<string, unknown> {
|
|
9
|
-
StaticRoutes:
|
|
10
|
-
| `/`
|
|
11
|
-
| `/_sitemap`
|
|
12
|
-
DynamicRoutes: never
|
|
13
|
-
DynamicRouteTemplate: never
|
|
14
|
-
IsTyped: true
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "peach-kotlin-import-animation-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: 'KotlinAnimation',
|
|
12
|
-
scheme: 'kotlinanimation',
|
|
13
|
-
android: { applicationId: 'dev.contrast.kotlinanimation' },
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
}),
|
|
17
|
-
peachPlugin(),
|
|
18
|
-
],
|
|
19
|
-
server: { host: '0.0.0.0' },
|
|
20
|
-
}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
package dev.contrast.kotlindrawing
|
|
2
|
-
|
|
3
|
-
import androidx.compose.foundation.Canvas
|
|
4
|
-
import androidx.compose.foundation.background
|
|
5
|
-
import androidx.compose.foundation.gestures.detectDragGestures
|
|
6
|
-
import androidx.compose.foundation.gestures.detectTapGestures
|
|
7
|
-
import androidx.compose.foundation.layout.Arrangement
|
|
8
|
-
import androidx.compose.foundation.layout.Box
|
|
9
|
-
import androidx.compose.foundation.layout.Column
|
|
10
|
-
import androidx.compose.foundation.layout.fillMaxSize
|
|
11
|
-
import androidx.compose.foundation.layout.padding
|
|
12
|
-
import androidx.compose.foundation.layout.size
|
|
13
|
-
import androidx.compose.material3.Button
|
|
14
|
-
import androidx.compose.material3.MaterialTheme
|
|
15
|
-
import androidx.compose.material3.Surface
|
|
16
|
-
import androidx.compose.material3.Text
|
|
17
|
-
import androidx.compose.material3.lightColorScheme
|
|
18
|
-
import androidx.compose.runtime.Composable
|
|
19
|
-
import androidx.compose.runtime.getValue
|
|
20
|
-
import androidx.compose.runtime.mutableStateOf
|
|
21
|
-
import androidx.compose.runtime.remember
|
|
22
|
-
import androidx.compose.runtime.setValue
|
|
23
|
-
import androidx.compose.ui.Modifier
|
|
24
|
-
import androidx.compose.ui.geometry.Offset
|
|
25
|
-
import androidx.compose.ui.geometry.Size
|
|
26
|
-
import androidx.compose.ui.graphics.Color
|
|
27
|
-
import androidx.compose.ui.graphics.Path
|
|
28
|
-
import androidx.compose.ui.graphics.graphicsLayer
|
|
29
|
-
import androidx.compose.ui.input.pointer.pointerInput
|
|
30
|
-
import androidx.compose.ui.platform.LocalDensity
|
|
31
|
-
import androidx.compose.ui.platform.testTag
|
|
32
|
-
import androidx.compose.ui.semantics.contentDescription
|
|
33
|
-
import androidx.compose.ui.semantics.semantics
|
|
34
|
-
import androidx.compose.ui.unit.dp
|
|
35
|
-
|
|
36
|
-
@Composable
|
|
37
|
-
fun Drawing(title: String, onStep: ((Int) -> Unit)? = null) {
|
|
38
|
-
var count by remember { mutableStateOf(0) }
|
|
39
|
-
var taps by remember { mutableStateOf(0) }
|
|
40
|
-
var moved by remember { mutableStateOf(false) }
|
|
41
|
-
var transformed by remember { mutableStateOf(false) }
|
|
42
|
-
val density = LocalDensity.current.density
|
|
43
|
-
MaterialTheme(colorScheme = lightColorScheme()) {
|
|
44
|
-
Surface(Modifier.fillMaxSize()) {
|
|
45
|
-
Column(Modifier.fillMaxSize().padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
|
46
|
-
Text(title, Modifier.testTag("drawing-title"))
|
|
47
|
-
Text("Count: $count", Modifier.testTag("drawing-count"))
|
|
48
|
-
Text("taps=$taps;moved=${if (moved) 1 else 0};transformed=${if (transformed) 1 else 0}", Modifier.testTag("drawing-state"))
|
|
49
|
-
Box(Modifier.size(240.dp, 144.dp).background(Color(0xFFE8EEF8)).testTag("drawing-stage").semantics { contentDescription = "Drawing stage" }) {
|
|
50
|
-
Canvas(
|
|
51
|
-
Modifier.size(240.dp, 144.dp).testTag("drawing-canvas").graphicsLayer {
|
|
52
|
-
rotationZ = if (transformed) 180f else 0f
|
|
53
|
-
scaleX = if (transformed) 0.75f else 1f
|
|
54
|
-
scaleY = if (transformed) 0.75f else 1f
|
|
55
|
-
},
|
|
56
|
-
) {
|
|
57
|
-
drawRect(Color(0xFFFFC107), Offset(16.dp.toPx(), 16.dp.toPx()), Size(64.dp.toPx(), 40.dp.toPx()))
|
|
58
|
-
drawCircle(if (taps % 2 == 1) Color(0xFFE91E63) else Color(0xFF673AB7), 20.dp.toPx(), Offset(if (moved) 152.dp.toPx() else 112.dp.toPx(), if (moved) 96.dp.toPx() else 56.dp.toPx()))
|
|
59
|
-
val path = Path().apply {
|
|
60
|
-
moveTo(184.dp.toPx(), 24.dp.toPx())
|
|
61
|
-
lineTo(220.dp.toPx(), 88.dp.toPx())
|
|
62
|
-
lineTo(164.dp.toPx(), 112.dp.toPx())
|
|
63
|
-
close()
|
|
64
|
-
}
|
|
65
|
-
drawPath(path, Color(0xFF009688))
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
Box(
|
|
69
|
-
Modifier.size(240.dp, 48.dp).background(Color(0xFFD1C4E9)).testTag("drawing-tap").semantics { contentDescription = "Tap drawing" }.pointerInput(Unit) {
|
|
70
|
-
detectTapGestures {
|
|
71
|
-
taps += 1
|
|
72
|
-
count += 1
|
|
73
|
-
onStep?.invoke(count)
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
) { Text("Tap drawing", Modifier.padding(8.dp)) }
|
|
77
|
-
Box(
|
|
78
|
-
Modifier.size(240.dp, 64.dp).background(Color(0xFFB2DFDB)).testTag("drawing-drag").semantics { contentDescription = "Drag drawing right" }.pointerInput(Unit) {
|
|
79
|
-
var horizontal = 0f
|
|
80
|
-
detectDragGestures(
|
|
81
|
-
onDragStart = { horizontal = 0f },
|
|
82
|
-
onDragEnd = {
|
|
83
|
-
if (horizontal > 24f * density) {
|
|
84
|
-
moved = true
|
|
85
|
-
count += 1
|
|
86
|
-
onStep?.invoke(count)
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
) { change, amount ->
|
|
90
|
-
change.consume()
|
|
91
|
-
horizontal += amount.x
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
) { Text("Drag drawing right", Modifier.padding(8.dp)) }
|
|
95
|
-
Button(onClick = { transformed = !transformed; count += 1; onStep?.invoke(count) }, modifier = Modifier.testTag("drawing-transform")) { Text("Transform drawing") }
|
|
96
|
-
Button(onClick = { count += 1000; onStep?.invoke(count) }, enabled = false, modifier = Modifier.testTag("drawing-disabled")) { Text("Disabled drawing") }
|
|
97
|
-
Button(onClick = { taps = 0; moved = false; transformed = false; count += 1; onStep?.invoke(count) }, modifier = Modifier.testTag("drawing-reset")) { Text("Reset drawing") }
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
import { Text, View, type ViewStyle } from 'react-native'
|
|
3
|
-
import { Drawing } from './Drawing.kt'
|
|
4
|
-
|
|
5
|
-
export default function Index() {
|
|
6
|
-
const [step, setStep] = useState(0)
|
|
7
|
-
const drawingProps = {
|
|
8
|
-
title: `Drawing step ${step}`,
|
|
9
|
-
onStep: setStep,
|
|
10
|
-
style: { width: '100%', height: 680 } satisfies ViewStyle,
|
|
11
|
-
}
|
|
12
|
-
return (
|
|
13
|
-
<View style={{ flex: 1, backgroundColor: '#fff' }}>
|
|
14
|
-
<Drawing {...drawingProps} />
|
|
15
|
-
<Text testID="drawing-react-step">React step: {step}</Text>
|
|
16
|
-
</View>
|
|
17
|
-
)
|
|
18
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# Imported Compose drawing and pointer input
|
|
2
|
-
|
|
3
|
-
RAN: unchanged Kotlin and React sources pass six real input states in One
|
|
4
|
-
Android, Peach Android, then an actual signed-in Contrast project import.
|
|
5
|
-
The sequence is initial, tap, rightward drag, transform, disabled and reset.
|
|
6
|
-
Compose and React callback counts agree at 0, 1, 2, 3, 3 and 4.
|
|
7
|
-
|
|
8
|
-
[Immutable three-host receipt](https://r2.sootsim.com/kotlin-evidence/import-drawing/5686486071b1f1f109acbf76b033362e401197f62eed6dee9badf1d1ca4e852f/proof.json) binds the source hashes, installed APK,
|
|
9
|
-
compiled Kotlin artifact, paired runtime, full-density lossless WebP captures,
|
|
10
|
-
trees, probes and eight rejected negative controls. Every uploaded object was
|
|
11
|
-
read back and checked by SHA-256.
|
|
12
|
-
|
|
13
|
-
Canvas rectangle, circle and path centroids and bounds match native after
|
|
14
|
-
normalization, within one pixel from each capture density. Every active
|
|
15
|
-
transition changes stage pixels. The disabled tap preserves transformed
|
|
16
|
-
pixels and both counters; reset restores initial pixels. `graphicsLayer`
|
|
17
|
-
rotation of 180 degrees and scale of 0.75 move and shrink the drawing.
|
|
18
|
-
`detectTapGestures` and `detectDragGestures` reach Compose through real input.
|
|
19
|
-
|
|
20
|
-
The live producer now plays the recorded picture at the requested display
|
|
21
|
-
density while keeping native layout and pointer coordinates unchanged.
|
|
22
|
-
Native stage crops are 630x378 at density 2.625; browser crops are 720x432 at
|
|
23
|
-
density 3, captured without resizing. The prior cubic sampling and path-bound
|
|
24
|
-
failure became exact sampling with passing native shape checks.
|
|
25
|
-
|
|
26
|
-
One canary `2.0.0-0.canary.1791785147152` was verified from all 17 family
|
|
27
|
-
tarballs and 11,723 installed files. Its main adoption, dev/prod compile
|
|
28
|
-
catalog qualification and native runtime 105 delivery remain separate under
|
|
29
|
-
the CI owner. Build Android through the normal remote Linux builder and use
|
|
30
|
-
that adopting One family before re-prebuild.
|
|
31
|
-
|
|
32
|
-
This receipt covers debug Android API 37 and settled drawing/input behavior.
|
|
33
|
-
It makes no claim about nested scrolling, 3D projection, fonts, full-frame
|
|
34
|
-
pixel fidelity, animation timing, release binaries or production deployment.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from '../ImportDrawing.native'
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "peach-kotlin-import-drawing-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: 'KotlinDrawing',
|
|
12
|
-
scheme: 'kotlindrawing',
|
|
13
|
-
android: { applicationId: 'dev.contrast.kotlindrawing' },
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
}),
|
|
17
|
-
peachPlugin(),
|
|
18
|
-
],
|
|
19
|
-
server: { host: '0.0.0.0' },
|
|
20
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
package dev.contrast.kotlineditor
|
|
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.fillMaxWidth
|
|
7
|
-
import androidx.compose.foundation.layout.padding
|
|
8
|
-
import androidx.compose.foundation.text.KeyboardActions
|
|
9
|
-
import androidx.compose.foundation.text.KeyboardOptions
|
|
10
|
-
import androidx.compose.material3.MaterialTheme
|
|
11
|
-
import androidx.compose.material3.OutlinedTextField
|
|
12
|
-
import androidx.compose.material3.Surface
|
|
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.Modifier
|
|
21
|
-
import androidx.compose.ui.focus.onFocusChanged
|
|
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.text.input.ImeAction
|
|
26
|
-
import androidx.compose.ui.unit.dp
|
|
27
|
-
|
|
28
|
-
@Composable
|
|
29
|
-
fun Editor(title: String, onEdit: ((String, Boolean) -> Unit)? = null) {
|
|
30
|
-
var value by remember { mutableStateOf("") }
|
|
31
|
-
var focused by remember { mutableStateOf(false) }
|
|
32
|
-
var done by remember { mutableStateOf(0) }
|
|
33
|
-
MaterialTheme(colorScheme = lightColorScheme()) {
|
|
34
|
-
Surface(Modifier.fillMaxSize()) {
|
|
35
|
-
Column(
|
|
36
|
-
Modifier.fillMaxSize().padding(24.dp),
|
|
37
|
-
verticalArrangement = Arrangement.spacedBy(16.dp),
|
|
38
|
-
) {
|
|
39
|
-
Text(title, style = MaterialTheme.typography.headlineSmall)
|
|
40
|
-
Text("$title|$value|$focused|$done", Modifier.testTag("editor-state"))
|
|
41
|
-
OutlinedTextField(
|
|
42
|
-
value = value,
|
|
43
|
-
onValueChange = { value = it; onEdit?.invoke(it, false) },
|
|
44
|
-
label = { Text("Name") },
|
|
45
|
-
singleLine = true,
|
|
46
|
-
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
|
|
47
|
-
keyboardActions = KeyboardActions(onDone = {
|
|
48
|
-
done += 1
|
|
49
|
-
onEdit?.invoke(value, true)
|
|
50
|
-
defaultKeyboardAction(ImeAction.Done)
|
|
51
|
-
}),
|
|
52
|
-
modifier = Modifier.fillMaxWidth().testTag("editor-input")
|
|
53
|
-
.semantics { contentDescription = "editor-input" }
|
|
54
|
-
.onFocusChanged { focused = it.isFocused },
|
|
55
|
-
)
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
import { Text, View } from 'react-native'
|
|
3
|
-
import { Editor } from './Editor.kt'
|
|
4
|
-
|
|
5
|
-
type EditEvent = [string, boolean]
|
|
6
|
-
|
|
7
|
-
export default function Index() {
|
|
8
|
-
const [events, setEvents] = useState<EditEvent[]>([])
|
|
9
|
-
return (
|
|
10
|
-
<View style={{ flex: 1, paddingTop: 48, backgroundColor: '#fff' }}>
|
|
11
|
-
<View style={{ flex: 1 }}>
|
|
12
|
-
<Editor
|
|
13
|
-
title="Imported editor"
|
|
14
|
-
onEdit={(value, done) => setEvents((previous) => [...previous, [value, done]])}
|
|
15
|
-
/>
|
|
16
|
-
</View>
|
|
17
|
-
<View style={{ height: 160, padding: 24 }}>
|
|
18
|
-
<Text>Editor callbacks</Text>
|
|
19
|
-
<Text testID="editor-events">{JSON.stringify(events)}</Text>
|
|
20
|
-
</View>
|
|
21
|
-
</View>
|
|
22
|
-
)
|
|
23
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# Imported Compose editor
|
|
2
|
-
|
|
3
|
-
This fixture imports a named public composable into a React Native app. It
|
|
4
|
-
extends the existing pure Kotlin Form fixture to cover text editing and an IME
|
|
5
|
-
Done action across the source-import bridge. Its field retains focus after Done,
|
|
6
|
-
hides the keyboard, and reports typed edit and completion callbacks to React.
|
|
7
|
-
|
|
8
|
-
Run One here with `bunx one dev --port 8081`, then open that port with
|
|
9
|
-
`peach open 8081 --device pixel-8`. Generate native Android with
|
|
10
|
-
`bunx one prebuild --platform android`; build `android/` with
|
|
11
|
-
`./gradlew assembleDebug` on the repository's remote builder.
|
|
12
|
-
|
|
13
|
-
Focus `editor-input`, type `H` then `i`, and press Done. The Compose state must
|
|
14
|
-
read `Imported editor|Hi|true|1`; `editor-events` must contain
|
|
15
|
-
`[["H",false],["Hi",false],["Hi",true]]`. A successful compile or a static
|
|
16
|
-
screen alone does not establish editing acceptance. Compare the same interaction
|
|
17
|
-
in One Android, Peach, and the Contrast native bundle producer.
|
|
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 three produced
|
|
21
|
-
the same five states (initial, focused, H, Hi, Done) and callback tuples above.
|
|
22
|
-
Peach and Contrast reported no preview errors, exposed a Done return key while
|
|
23
|
-
editing, and hid the keyboard after Done with focus retained. Contrast compiled
|
|
24
|
-
`Editor.kt` through its Kotlin import route and produced a complete bundle graph.
|
|
25
|
-
These runs establish import and interaction behavior; they do not grade pixels
|
|
26
|
-
or the signed-in editor. Source and artifact hashes, captures and run receipts
|
|
27
|
-
are retained in task `t-mv3tuag4-17xu0`.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from '../ImportEditor.native'
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "peach-kotlin-import-editor-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: 'KotlinEditor',
|
|
12
|
-
scheme: 'kotlineditor',
|
|
13
|
-
android: { applicationId: 'dev.contrast.kotlineditor' },
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
}),
|
|
17
|
-
peachPlugin(),
|
|
18
|
-
],
|
|
19
|
-
server: { host: '0.0.0.0' },
|
|
20
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
package dev.contrast.kotlineffects
|
|
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.material3.Button
|
|
8
|
-
import androidx.compose.material3.MaterialTheme
|
|
9
|
-
import androidx.compose.material3.Surface
|
|
10
|
-
import androidx.compose.material3.Text
|
|
11
|
-
import androidx.compose.material3.lightColorScheme
|
|
12
|
-
import androidx.compose.runtime.Composable
|
|
13
|
-
import androidx.compose.runtime.DisposableEffect
|
|
14
|
-
import androidx.compose.runtime.LaunchedEffect
|
|
15
|
-
import androidx.compose.runtime.getValue
|
|
16
|
-
import androidx.compose.runtime.mutableStateOf
|
|
17
|
-
import androidx.compose.runtime.remember
|
|
18
|
-
import androidx.compose.runtime.rememberCoroutineScope
|
|
19
|
-
import androidx.compose.runtime.setValue
|
|
20
|
-
import androidx.compose.ui.Modifier
|
|
21
|
-
import androidx.compose.ui.platform.testTag
|
|
22
|
-
import androidx.compose.ui.unit.dp
|
|
23
|
-
import kotlinx.coroutines.awaitCancellation
|
|
24
|
-
import kotlinx.coroutines.launch
|
|
25
|
-
|
|
26
|
-
private class EffectEvents {
|
|
27
|
-
var entered by mutableStateOf(0)
|
|
28
|
-
var launched by mutableStateOf(0)
|
|
29
|
-
var disposed by mutableStateOf(0)
|
|
30
|
-
var cancelled by mutableStateOf(0)
|
|
31
|
-
var scoped by mutableStateOf(0)
|
|
32
|
-
var scopeCancelled by mutableStateOf(0)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
@Composable
|
|
36
|
-
private fun LifecycleChild(events: EffectEvents, onStart: () -> Unit) {
|
|
37
|
-
val scope = rememberCoroutineScope()
|
|
38
|
-
DisposableEffect(Unit) {
|
|
39
|
-
events.entered += 1
|
|
40
|
-
onDispose { events.disposed += 1 }
|
|
41
|
-
}
|
|
42
|
-
LaunchedEffect(Unit) {
|
|
43
|
-
events.launched += 1
|
|
44
|
-
try { awaitCancellation() } finally { events.cancelled += 1 }
|
|
45
|
-
}
|
|
46
|
-
Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
|
47
|
-
Text("Effect child", Modifier.testTag("effects-child"))
|
|
48
|
-
Button(
|
|
49
|
-
onClick = {
|
|
50
|
-
scope.launch {
|
|
51
|
-
events.scoped += 1
|
|
52
|
-
try { awaitCancellation() } finally { events.scopeCancelled += 1 }
|
|
53
|
-
}
|
|
54
|
-
onStart()
|
|
55
|
-
},
|
|
56
|
-
modifier = Modifier.testTag("effects-start"),
|
|
57
|
-
) { Text("Start scoped job") }
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
@Composable
|
|
62
|
-
fun Effects(title: String, onStep: ((Int) -> Unit)? = null) {
|
|
63
|
-
var count by remember { mutableStateOf(0) }
|
|
64
|
-
var visible by remember { mutableStateOf(true) }
|
|
65
|
-
val events = remember { EffectEvents() }
|
|
66
|
-
MaterialTheme(colorScheme = lightColorScheme()) {
|
|
67
|
-
Surface(Modifier.fillMaxSize()) {
|
|
68
|
-
Column(Modifier.fillMaxSize().padding(16.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
|
69
|
-
Text(title, Modifier.testTag("effects-title"))
|
|
70
|
-
Text("Count: $count", Modifier.testTag("effects-count"))
|
|
71
|
-
Text(
|
|
72
|
-
"visible=${if (visible) 1 else 0};entered=${events.entered};launched=${events.launched};disposed=${events.disposed};cancelled=${events.cancelled};scoped=${events.scoped};scopeCancelled=${events.scopeCancelled}",
|
|
73
|
-
Modifier.testTag("effects-state"),
|
|
74
|
-
)
|
|
75
|
-
Button(onClick = { visible = !visible; count += 1; onStep?.invoke(count) }, modifier = Modifier.testTag("effects-toggle")) {
|
|
76
|
-
Text(if (visible) "Hide child" else "Show child")
|
|
77
|
-
}
|
|
78
|
-
Button(onClick = { count += 1000; onStep?.invoke(count) }, enabled = false, modifier = Modifier.testTag("effects-disabled")) {
|
|
79
|
-
Text("Disabled effects step")
|
|
80
|
-
}
|
|
81
|
-
if (visible) {
|
|
82
|
-
LifecycleChild(events) { count += 1; onStep?.invoke(count) }
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
import { Text, View } from 'react-native'
|
|
3
|
-
import { Effects } from './Effects.kt'
|
|
4
|
-
|
|
5
|
-
export default function Index() {
|
|
6
|
-
const [step, setStep] = useState(0)
|
|
7
|
-
return (
|
|
8
|
-
<View style={{ flex: 1, backgroundColor: '#fff' }}>
|
|
9
|
-
<Effects title={`Effects step ${step}`} onStep={setStep} />
|
|
10
|
-
<Text testID="effects-react-step">React step: {step}</Text>
|
|
11
|
-
</View>
|
|
12
|
-
)
|
|
13
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# Imported Compose effects
|
|
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
|
-
Start a scoped job, hide the child, try the disabled button, show the child,
|
|
8
|
-
start another scoped job and hide it again. Capture all seven states. Removing
|
|
9
|
-
the child must dispose its DisposableEffect and cancel both its LaunchedEffect
|
|
10
|
-
and remembered-scope job. Remounting starts each effect once more. Callback
|
|
11
|
-
updates to React and the imported title must preserve effect identity.
|
|
12
|
-
Compare exact lifecycle counters and actual child semantics across all hosts.
|
|
13
|
-
This fixture claims child composition lifecycle, without whole React-root
|
|
14
|
-
unmount, frame timing or full-frame pixel fidelity.
|
|
15
|
-
|
|
16
|
-
RAN 2026-10-11: all seven states match in One Android, Peach and Contrast.
|
|
17
|
-
Each removal increments disposal and both cancellation counters once; remount
|
|
18
|
-
starts fresh effects. Disabled input preserves state two.
|
|
19
|
-
[Receipts and captures](https://r2.sootsim.com/kotlin-evidence/import-effects/c151fca7d8e1a2067ee4517160db511aa6178ddfde1dc39b8ec130701e68ecb9/proof.json) include changed-output controls for missing scope cancellation and an unexpected disabled callback.
|