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,200 +0,0 @@
|
|
|
1
|
-
package dev.contrast.composefixtures
|
|
2
|
-
|
|
3
|
-
import dev.onejs.one.source.OneModule
|
|
4
|
-
import androidx.compose.runtime.*
|
|
5
|
-
import androidx.compose.runtime.snapshots.Snapshot
|
|
6
|
-
import kotlinx.coroutines.*
|
|
7
|
-
import org.json.JSONObject
|
|
8
|
-
|
|
9
|
-
private class Node {
|
|
10
|
-
var text = ""
|
|
11
|
-
var click: () -> Unit = {}
|
|
12
|
-
val children = mutableListOf<Node>()
|
|
13
|
-
}
|
|
14
|
-
private class TreeApplier(root: Node) : AbstractApplier<Node>(root) {
|
|
15
|
-
override fun insertTopDown(index: Int, instance: Node) { current.children.add(index, instance) }
|
|
16
|
-
override fun insertBottomUp(index: Int, instance: Node) {}
|
|
17
|
-
override fun remove(index: Int, count: Int) { repeat(count) { current.children.removeAt(index) } }
|
|
18
|
-
override fun move(from: Int, to: Int, count: Int) { current.children.move(from, to, count) }
|
|
19
|
-
override fun onClear() { root.children.clear() }
|
|
20
|
-
}
|
|
21
|
-
private val shared = mutableStateOf(0)
|
|
22
|
-
@Composable
|
|
23
|
-
private fun CounterTree() {
|
|
24
|
-
var count by remember { mutableStateOf(0) }
|
|
25
|
-
val value = "local=$count shared=${shared.value}"
|
|
26
|
-
ComposeNode<Node, TreeApplier>(
|
|
27
|
-
factory = { Node() },
|
|
28
|
-
update = {
|
|
29
|
-
set(value) { text = it }
|
|
30
|
-
set({ count += 1; shared.value += 1 }) { click = it }
|
|
31
|
-
}
|
|
32
|
-
)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
private class RootEffects {
|
|
36
|
-
val launched = CompletableDeferred<Unit>()
|
|
37
|
-
val cancelled = CompletableDeferred<Unit>()
|
|
38
|
-
val frame = CompletableDeferred<Long>()
|
|
39
|
-
val scopeStarted = CompletableDeferred<Unit>()
|
|
40
|
-
val scopeCancelled = CompletableDeferred<Unit>()
|
|
41
|
-
var starts = 0
|
|
42
|
-
var disposals = 0
|
|
43
|
-
var scope: CoroutineScope? = null
|
|
44
|
-
var scopeJob: Job? = null
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@Composable
|
|
48
|
-
private fun LifecycleTree(label: String, effects: RootEffects) {
|
|
49
|
-
var count by remember { mutableStateOf(0) }
|
|
50
|
-
val scope = rememberCoroutineScope()
|
|
51
|
-
SideEffect { effects.scope = scope }
|
|
52
|
-
DisposableEffect(Unit) {
|
|
53
|
-
effects.starts += 1
|
|
54
|
-
onDispose { effects.disposals += 1 }
|
|
55
|
-
}
|
|
56
|
-
LaunchedEffect(Unit) {
|
|
57
|
-
effects.launched.complete(Unit)
|
|
58
|
-
try {
|
|
59
|
-
effects.frame.complete(withFrameNanos { it })
|
|
60
|
-
awaitCancellation()
|
|
61
|
-
} finally {
|
|
62
|
-
effects.cancelled.complete(Unit)
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
ComposeNode<Node, TreeApplier>(
|
|
66
|
-
factory = { Node() },
|
|
67
|
-
update = {
|
|
68
|
-
set("$label local=$count shared=${shared.value}") { text = it }
|
|
69
|
-
set({
|
|
70
|
-
count += 1
|
|
71
|
-
shared.value += 1
|
|
72
|
-
if (effects.scopeJob == null) effects.scopeJob = scope.launch {
|
|
73
|
-
effects.scopeStarted.complete(Unit)
|
|
74
|
-
try { awaitCancellation() } finally { effects.scopeCancelled.complete(Unit) }
|
|
75
|
-
}
|
|
76
|
-
}) { click = it }
|
|
77
|
-
}
|
|
78
|
-
)
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
object RuntimeState : OneModule {
|
|
82
|
-
fun failError(): Int = throw AssertionError("error boundary")
|
|
83
|
-
|
|
84
|
-
suspend fun checkLifecycle(retainRoot: Boolean, disposeRoot: Boolean): String = withTimeout(5_000) {
|
|
85
|
-
shared.value = 0
|
|
86
|
-
val a = Node()
|
|
87
|
-
val b = Node()
|
|
88
|
-
val leftEffects = RootEffects()
|
|
89
|
-
val rightEffects = RootEffects()
|
|
90
|
-
var label by mutableStateOf("original")
|
|
91
|
-
var frame = 0L
|
|
92
|
-
lateinit var clock: BroadcastFrameClock
|
|
93
|
-
clock = BroadcastFrameClock { launch { clock.sendFrame(++frame) } }
|
|
94
|
-
val recomposer = Recomposer(coroutineContext + clock)
|
|
95
|
-
val runner = launch(clock, CoroutineStart.UNDISPATCHED) { recomposer.runRecomposeAndApplyChanges() }
|
|
96
|
-
val left = Composition(TreeApplier(a), recomposer)
|
|
97
|
-
val right = Composition(TreeApplier(b), recomposer)
|
|
98
|
-
try {
|
|
99
|
-
left.setContent {
|
|
100
|
-
if (retainRoot) LifecycleTree(label, leftEffects)
|
|
101
|
-
else key(label) { LifecycleTree(label, leftEffects) }
|
|
102
|
-
}
|
|
103
|
-
right.setContent { LifecycleTree("right", rightEffects) }
|
|
104
|
-
leftEffects.launched.await()
|
|
105
|
-
rightEffects.launched.await()
|
|
106
|
-
val leftFrame = leftEffects.frame.await()
|
|
107
|
-
val rightFrame = rightEffects.frame.await()
|
|
108
|
-
check(leftFrame == rightFrame) { "roots received different frame times: $leftFrame/$rightFrame" }
|
|
109
|
-
recomposer.awaitIdle()
|
|
110
|
-
check(a.children.single().text == "original local=0 shared=0")
|
|
111
|
-
check(b.children.single().text == "right local=0 shared=0")
|
|
112
|
-
val original = a.children.single()
|
|
113
|
-
original.click()
|
|
114
|
-
b.children.single().click()
|
|
115
|
-
leftEffects.scopeStarted.await()
|
|
116
|
-
rightEffects.scopeStarted.await()
|
|
117
|
-
Snapshot.sendApplyNotifications()
|
|
118
|
-
recomposer.awaitIdle()
|
|
119
|
-
label = "updated"
|
|
120
|
-
Snapshot.sendApplyNotifications()
|
|
121
|
-
recomposer.awaitIdle()
|
|
122
|
-
check(a.children.single().text == "updated local=1 shared=2") {
|
|
123
|
-
"props update reset remembered state: ${a.children.single().text}"
|
|
124
|
-
}
|
|
125
|
-
check(a.children.single() === original) { "props update replaced the root node" }
|
|
126
|
-
check(b.children.single().text == "right local=1 shared=2") { "props update touched the other root" }
|
|
127
|
-
check(leftEffects.starts == 1 && leftEffects.disposals == 0) { "props update restarted effects" }
|
|
128
|
-
check(leftEffects.scope?.isActive == true && rightEffects.scope?.isActive == true)
|
|
129
|
-
if (disposeRoot) left.dispose()
|
|
130
|
-
check(leftEffects.disposals == 1) { "left disposal did not run DisposableEffect" }
|
|
131
|
-
leftEffects.cancelled.await()
|
|
132
|
-
leftEffects.scopeCancelled.await()
|
|
133
|
-
check(a.children.isEmpty()) { "left disposal retained nodes" }
|
|
134
|
-
check(leftEffects.scope?.isActive == false && leftEffects.scopeJob?.isCancelled == true)
|
|
135
|
-
check(rightEffects.disposals == 0 && !rightEffects.cancelled.isCompleted && !rightEffects.scopeCancelled.isCompleted) {
|
|
136
|
-
"left disposal cancelled the other root"
|
|
137
|
-
}
|
|
138
|
-
check(rightEffects.scope?.isActive == true && rightEffects.scopeJob?.isActive == true)
|
|
139
|
-
b.children.single().click()
|
|
140
|
-
Snapshot.sendApplyNotifications()
|
|
141
|
-
recomposer.awaitIdle()
|
|
142
|
-
check(b.children.single().text == "right local=2 shared=3") { "surviving root stopped recomposing" }
|
|
143
|
-
right.dispose()
|
|
144
|
-
rightEffects.cancelled.await()
|
|
145
|
-
rightEffects.scopeCancelled.await()
|
|
146
|
-
check(b.children.isEmpty() && rightEffects.disposals == 1)
|
|
147
|
-
check(rightEffects.scope?.isActive == false && rightEffects.scopeJob?.isCancelled == true)
|
|
148
|
-
JSONObject().put("passed", true).put("propsRetainState", true).put("propsRetainNode", true)
|
|
149
|
-
.put("effectsRetainIdentity", true).put("sharedFrameNanos", leftFrame)
|
|
150
|
-
.put("launchedEffectCancelled", true).put("disposableEffectDisposed", true)
|
|
151
|
-
.put("rememberedScopeCancelled", true).put("survivingRootRecomposes", true)
|
|
152
|
-
.put("uiProven", false).toString()
|
|
153
|
-
} finally {
|
|
154
|
-
left.dispose()
|
|
155
|
-
right.dispose()
|
|
156
|
-
recomposer.cancel()
|
|
157
|
-
runner.cancelAndJoin()
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
suspend fun checkState(startScheduler: Boolean): String = coroutineScope {
|
|
162
|
-
shared.value = 0
|
|
163
|
-
val a = Node()
|
|
164
|
-
val b = Node()
|
|
165
|
-
var frame = 0L
|
|
166
|
-
lateinit var clock: BroadcastFrameClock
|
|
167
|
-
clock = BroadcastFrameClock { launch { clock.sendFrame(++frame) } }
|
|
168
|
-
val recomposer = Recomposer(coroutineContext + clock)
|
|
169
|
-
val runner = launch(clock, if (startScheduler) CoroutineStart.UNDISPATCHED else CoroutineStart.LAZY) { recomposer.runRecomposeAndApplyChanges() }
|
|
170
|
-
val left = Composition(TreeApplier(a), recomposer)
|
|
171
|
-
val right = Composition(TreeApplier(b), recomposer)
|
|
172
|
-
try {
|
|
173
|
-
left.setContent { CounterTree() }
|
|
174
|
-
right.setContent { CounterTree() }
|
|
175
|
-
check(a.children.single().text == "local=0 shared=0") { "left initial: ${a.children.single().text}" }
|
|
176
|
-
check(b.children.single().text == "local=0 shared=0") { "right initial: ${b.children.single().text}" }
|
|
177
|
-
val original = a.children.single()
|
|
178
|
-
original.click()
|
|
179
|
-
Snapshot.sendApplyNotifications()
|
|
180
|
-
recomposer.awaitIdle()
|
|
181
|
-
check(a.children.single() === original) { "left node identity changed" }
|
|
182
|
-
check(a.children.single().text == "local=1 shared=1") { "left after click: ${a.children.single().text}" }
|
|
183
|
-
check(b.children.single().text == "local=0 shared=1") { "right shared update: ${b.children.single().text}" }
|
|
184
|
-
left.dispose()
|
|
185
|
-
check(a.children.isEmpty()) { "left dispose retained ${a.children.size} nodes" }
|
|
186
|
-
b.children.single().click()
|
|
187
|
-
Snapshot.sendApplyNotifications()
|
|
188
|
-
recomposer.awaitIdle()
|
|
189
|
-
check(b.children.single().text == "local=1 shared=2") { "right after click: ${b.children.single().text}" }
|
|
190
|
-
right.dispose()
|
|
191
|
-
check(b.children.isEmpty()) { "right dispose retained ${b.children.size} nodes" }
|
|
192
|
-
"{\"passed\":true,\"runtime\":\"androidx.compose.runtime:1.13.0-alpha02\",\"localState\":[0,1],\"sharedState\":[0,1,2],\"twoRoots\":true,\"retainedNode\":true,\"dispose\":true,\"uiProven\":false}"
|
|
193
|
-
} finally {
|
|
194
|
-
left.dispose()
|
|
195
|
-
right.dispose()
|
|
196
|
-
recomposer.cancel()
|
|
197
|
-
runner.cancelAndJoin()
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
package/kotlin/fork/README.md
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
# Peach's JetBrains web fork
|
|
2
|
-
|
|
3
|
-
Peach runs Compose in a React Native tenant worker, with no `window`,
|
|
4
|
-
`document`, `location`, or browser navigator language/platform fields. The official
|
|
5
|
-
Compose UI 1.13.0-alpha01 and Skiko 0.152.0-alpha02 platform actuals assume
|
|
6
|
-
browser globals that this native host does not publish. Peach carries patched
|
|
7
|
-
builds until upstream supplies equivalent worker and native host hooks, and
|
|
8
|
-
Android behavior for the approved web differences and static text shaping below.
|
|
9
|
-
|
|
10
|
-
| module | file | native host binding |
|
|
11
|
-
| --- | --- | --- |
|
|
12
|
-
| Compose `foundation` | `Magnifier.web.kt`, `PlatformMagnifier.web.kt`, `TextFieldSelectionManager.web.kt` | Android magnifier modifier, semantics and selection animation with a scene-owned platform factory |
|
|
13
|
-
| Compose `foundation` and `ui` | `RequestFocusOnClick.web.kt`, `Focusability.web.kt` | Android click and touch focus policy keeps sibling controls from taking a text field’s focus |
|
|
14
|
-
| Compose `ui` | `Dialog.skiko.kt`, `PlatformContext.skiko.kt` | distinct Dialog window and navigation dispatcher isolate Back from the activity |
|
|
15
|
-
| Compose `ui` and `foundation` | `Actuals.wasm.kt`, `UndoManager.web.kt` | clocks read `globalThis.performance.now()` |
|
|
16
|
-
| Compose `ui` and `foundation` | `PlatformClipboard.web.kt`, `ClipboardUtils.wasm.kt` | worker-safe secure-context and clipboard reads |
|
|
17
|
-
| Compose `ui` | `SystemTheme.kt` | `LocalSystemTheme` visible to the host, which provides the device's night mode |
|
|
18
|
-
| Compose `ui-text` | `PlatformLocale.web.kt` | explicit `setPlatformLocaleProvider`; its default keeps upstream navigator behavior |
|
|
19
|
-
| Compose `ui-skiko` | `SkiaBackedPaint.nonAndroid.kt` | initial Miter join agrees with the backing paint and Android |
|
|
20
|
-
| Compose `ui-skiko` | `SkikoText.nonAndroid.kt`, `SkikoParagraphBuilder.nonAndroid.kt` | Android static advances and letter-spacing scale; Animated text retains fractional shaping |
|
|
21
|
-
| Skia shaper | `SkShaper_harfbuzz.cpp` | measurement-font copy truncates static shaping size; the painted run font retains the requested size |
|
|
22
|
-
| Skia raster | `SkFontHost_FreeType.cpp`, `SkFontHost_FreeType_common.cpp`, `SkSurface.cpp` | Android implicit autohinting policy and text gamma 1.4, contrast 0 |
|
|
23
|
-
| Skia paragraph | `Run.cpp`, `TextLine.cpp`, `TextWrapper.cpp`, `DartTypes.h` | Android inter-glyph spacing, caret boundaries, edge trimming before line fits and integer center origins |
|
|
24
|
-
| Compose `ui-skiko` | `SkikoParagraphIntrinsics.nonAndroid.kt`, `SkikoParagraph.nonAndroid.kt`, `SkikoParagraphBuilder.nonAndroid.kt` | Android letter-spacing intrinsic padding, centered line bounds, explicit center alignment and fitting BoringLayout line extents |
|
|
25
|
-
| Skiko paragraph | `Alignment.kt` | transports the Android center ordinal without changing existing alignments |
|
|
26
|
-
| Compose `material3` | `PlatformDateFormat.web.kt` | timestamp formatting uses UTC, as Android does |
|
|
27
|
-
| Navigation `navigation-compose` | `DefaultNavTransitions.web.kt` | Android forward fades and predictive pop defaults |
|
|
28
|
-
| Skiko | `OsArch.web.kt` | explicit `setHostOsProvider`; its default lazily retains upstream OS detection |
|
|
29
|
-
| Skiko | `Actuals.web.kt` | nanosecond clock reads `globalThis.performance.now()` |
|
|
30
|
-
| Skiko loader build | `OptimizeSkikoWasmTask.kt` | script directory reads `import.meta.url`, without `self.location` |
|
|
31
|
-
| Skiko linker | `LinkSkikoTask.kt` | object paths sort before linking; library order retains its symbol resolution contract |
|
|
32
|
-
|
|
33
|
-
The Compose host installs the locale provider once before any scene, from the
|
|
34
|
-
same device locale it passes to `PlatformContext`, and installs `OS.Android`
|
|
35
|
-
through Skiko’s host OS provider before any scene. Browser navigator fields
|
|
36
|
-
stay absent in guest JS. Changes to device language after launch are outside
|
|
37
|
-
this contract.
|
|
38
|
-
|
|
39
|
-
`fork.json` pins repositories, commits, patch hashes, JDK and Android tools.
|
|
40
|
-
Every changed upstream file carries a modification notice. `LICENSE` and
|
|
41
|
-
`NOTICE` travel with the patches. `SKIA_LICENSE` records the modified Skia units’ BSD license. `build.sh` builds the changed KLIBs and Skiko
|
|
42
|
-
runtime jar with the upstream Gradle builds on the Linux builder. The Skia shaping, paragraph and raster
|
|
43
|
-
units are fetched at their pinned commit, patched, and compiled into Skiko; the linker
|
|
44
|
-
uses them instead of the same units in the pinned Skia archive. All other Skia
|
|
45
|
-
objects retain their upstream build. The linker sorts object paths, so filesystem
|
|
46
|
-
enumeration does not change the Wasm binary. Static archives retain their declared
|
|
47
|
-
order because that order controls symbol resolution. Sorting costs once per link,
|
|
48
|
-
outside app runtime. FreeType headers match the pinned Skia DEPS revision;
|
|
49
|
-
the FreeType binary remains the archive version. Raster changes add no allocation
|
|
50
|
-
and retain the existing A8 preblend path. This adds no allocation beyond the existing
|
|
51
|
-
measurement-font copy, and truncates once per shaped font, outside the glyph loop.
|
|
52
|
-
Paragraph spacing adds constant arithmetic per glyph or cluster; line fits trim
|
|
53
|
-
the same edge half-spaces as completed lines, without allocation. Android centered
|
|
54
|
-
lines use the platform integer origin; other platforms retain fractional centering.
|
|
55
|
-
Intrinsic measurement checks span letter spacing once and adds Android’s 0.5 px
|
|
56
|
-
padding; line bounds use the platform floor and ceil. Fitting Android BoringLayout
|
|
57
|
-
paragraphs expose the ceiled paragraph extent while preserving fractional glyph
|
|
58
|
-
positions, including Animated text. Eligibility is scanned once per intrinsic
|
|
59
|
-
construction. These corrections add no allocation. Skiko builds before Compose, whose `skiko-wasm-js` dependency resolves
|
|
60
|
-
from this invocation’s Maven directory through `skiko-local.init.gradle`. The init
|
|
61
|
-
script travels in the immutable build record with the patches.
|
|
62
|
-
|
|
63
|
-
```sh
|
|
64
|
-
delivery="scripts/tmp/kotlin-fork-$(date +%s)-$$"
|
|
65
|
-
bun remote --delivery-dir "$delivery" bash packages/peachsim/kotlin/fork/build.sh
|
|
66
|
-
bun packages/peachsim/kotlin/fork/publish.ts "$delivery/kotlin-fork"
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
The delivery includes `artifacts.sha256` and its exact fork record. Publication
|
|
70
|
-
stores each binary at `peach-kotlin-fork/<binary-sha256>/<file>` and its record
|
|
71
|
-
at `peach-kotlin-fork/<binary-sha256>/records/<record-sha256>/`. It refuses to
|
|
72
|
-
replace existing bytes. A metadata change cannot overwrite a previous record
|
|
73
|
-
when a binary is unchanged. `toolchain.json` pins these immutable binary URLs;
|
|
74
|
-
all other Compose libraries remain official Maven artifacts. Everything stays
|
|
75
|
-
lazy for Kotlin/Compose apps.
|
|
76
|
-
|
|
77
|
-
The isolated worker probe cannot certify the native tenant's absent globals.
|
|
78
|
-
`scripts/debug/peach-compose-mount/tenant-run.ts` boots the actual capture tenant
|
|
79
|
-
with the imported `.kt` component, asserts those globals stay absent, and
|
|
80
|
-
checks `Locale.current` and `LocalLocaleList` against an ar-EG device setting
|
|
81
|
-
with an en-US browser.
|
|
82
|
-
|
|
83
|
-
Delete the fork when official releases provide worker-safe clocks/clipboard,
|
|
84
|
-
a location-independent loader and equivalent native locale/host OS provider hooks,
|
|
85
|
-
plus UTC date formatting, Android navigation defaults, the correct initial paint join,
|
|
86
|
-
Android magnifier lifecycle and Android static shaping size/advances,
|
|
87
|
-
then rematch the Android pins in `plans/peach/kotlin-everywhere.md`. The prepared
|
|
88
|
-
upstream issue names these hooks and the full guest regression vehicle.
|
|
89
|
-
|
|
90
|
-
The static shaping correction is measured against the original `textwidth`
|
|
91
|
-
fixture. The six original widths, twelve spacing assertions and the 162/164 px
|
|
92
|
-
wrapping threshold pass their paired Android controls. The body Range probe
|
|
93
|
-
retains its existing 0.00098 px difference. The original plain Month raster rows pass the strict 16/255 comparison in
|
|
94
|
-
the actual Kotlin app; the old frame fails the retained raster check. Other
|
|
95
|
-
pixel residuals remain open in the lane plan. The original Animated motion widths
|
|
96
|
-
match Android, and the retained mixed-font/caret controls pass after the extent
|
|
97
|
-
correction. These corrections do not certify full text parity.
|
package/kotlin/fork/build.sh
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# builds Peach's patched JetBrains Kotlin/Wasm klibs on the linux builder and
|
|
4
|
-
# delivers them to the caller's `.remote-out/kotlin-fork/`:
|
|
5
|
-
#
|
|
6
|
-
# bun remote bash packages/peachsim/kotlin/fork/build.sh
|
|
7
|
-
#
|
|
8
|
-
# each upstream in fork.json is fetched at its pinned commit, gets its
|
|
9
|
-
# committed patch, and builds with its own gradle build at the upstream's
|
|
10
|
-
# kotlin compiler. only the modules the patches change are delivered. the
|
|
11
|
-
# builder keeps the sources, the verified toolchain downloads, the sdk
|
|
12
|
-
# platforms the compose build installs, and gradle's caches under
|
|
13
|
-
# ~/builders/peach-kotlin-fork, so a rebuild is warm. the JDK and sdk tools are
|
|
14
|
-
# unpacked fresh from their pinned archives every run, so a changed pin or an
|
|
15
|
-
# altered install never survives into a build. bun remote already runs this under SCHED_IDLE with a
|
|
16
|
-
# 16G memory bound; gradle and its in-process compiler stay inside it.
|
|
17
|
-
|
|
18
|
-
set -euo pipefail
|
|
19
|
-
|
|
20
|
-
FORK=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
21
|
-
REPO_ROOT=$(cd "${FORK}/../../../.." && pwd)
|
|
22
|
-
ROOT=$HOME/builders/peach-kotlin-fork
|
|
23
|
-
DELIVER=${REPO_ROOT}/.remote-out/kotlin-fork
|
|
24
|
-
|
|
25
|
-
mkdir -p "${ROOT}/downloads" "${ROOT}/src"
|
|
26
|
-
exec 9>>"${ROOT}.lock"
|
|
27
|
-
flock 9
|
|
28
|
-
|
|
29
|
-
field() { node -p "const f = require('${FORK}/fork.json'); ${1}"; }
|
|
30
|
-
|
|
31
|
-
fetch() {
|
|
32
|
-
local url=$1 sha256=$2 target=$3
|
|
33
|
-
if [[ -f "${target}" ]] && echo "${sha256} ${target}" | sha256sum -c --status; then return; fi
|
|
34
|
-
curl -sfL --retry 3 -o "${target}.partial" "${url}"
|
|
35
|
-
if ! echo "${sha256} ${target}.partial" | sha256sum -c --status; then
|
|
36
|
-
echo "${url} does not match its pinned sha256 ${sha256}" >&2
|
|
37
|
-
exit 2
|
|
38
|
-
fi
|
|
39
|
-
mv "${target}.partial" "${target}"
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
JDK=${ROOT}/jdk
|
|
43
|
-
fetch "$(field 'f.toolchain.jdk.url')" "$(field 'f.toolchain.jdk.sha256')" "${ROOT}/downloads/jdk.tar.gz"
|
|
44
|
-
rm -rf "${JDK}" && mkdir -p "${JDK}"
|
|
45
|
-
tar -xzf "${ROOT}/downloads/jdk.tar.gz" -C "${JDK}" --strip-components=1
|
|
46
|
-
|
|
47
|
-
SDK=${ROOT}/android-sdk
|
|
48
|
-
fetch "$(field 'f.toolchain.androidCommandLineTools.url')" \
|
|
49
|
-
"$(field 'f.toolchain.androidCommandLineTools.sha256')" "${ROOT}/downloads/cmdline-tools.zip"
|
|
50
|
-
rm -rf "${SDK}/cmdline-tools" && mkdir -p "${SDK}/cmdline-tools"
|
|
51
|
-
unzip -q "${ROOT}/downloads/cmdline-tools.zip" -d "${SDK}/cmdline-tools"
|
|
52
|
-
mv "${SDK}/cmdline-tools/cmdline-tools" "${SDK}/cmdline-tools/latest"
|
|
53
|
-
# the compose build downloads the platforms it configures against, which needs
|
|
54
|
-
# the sdk licenses accepted once
|
|
55
|
-
JAVA_HOME=${JDK} "${SDK}/cmdline-tools/latest/bin/sdkmanager" --sdk_root="${SDK}" --licenses < <(yes) >/dev/null 2>&1
|
|
56
|
-
|
|
57
|
-
export JAVA_HOME=${JDK} ANDROIDX_JDK21=${JDK} ANDROID_HOME=${SDK} ANDROID_SDK_ROOT=${SDK}
|
|
58
|
-
export GRADLE_USER_HOME=${ROOT}/gradle-home
|
|
59
|
-
M2=${ROOT}/m2
|
|
60
|
-
|
|
61
|
-
# fetches one upstream at its pinned commit, discards anything a previous run
|
|
62
|
-
# left in tracked files, and applies its patch after checking the patch hash.
|
|
63
|
-
# sets SOURCE rather than printing it: a command substitution would drop
|
|
64
|
-
# errexit and build on past a failed checkout or apply
|
|
65
|
-
checkout() {
|
|
66
|
-
local index=$1
|
|
67
|
-
local name repository commit patch patch_sha256 dir
|
|
68
|
-
name=$(field "f.upstreams[${index}].name")
|
|
69
|
-
repository=$(field "f.upstreams[${index}].repository")
|
|
70
|
-
commit=$(field "f.upstreams[${index}].commit")
|
|
71
|
-
patch=${FORK}/$(field "f.upstreams[${index}].patch")
|
|
72
|
-
patch_sha256=$(field "f.upstreams[${index}].patchSha256")
|
|
73
|
-
dir=${ROOT}/src/${name}
|
|
74
|
-
if ! echo "${patch_sha256} ${patch}" | sha256sum -c --status; then
|
|
75
|
-
echo "${patch} does not match fork.json patchSha256" >&2
|
|
76
|
-
exit 2
|
|
77
|
-
fi
|
|
78
|
-
if [[ ! -d "${dir}/.git" ]]; then
|
|
79
|
-
git init -q "${dir}"
|
|
80
|
-
git -C "${dir}" remote add origin "${repository}"
|
|
81
|
-
fi
|
|
82
|
-
if ! git -C "${dir}" cat-file -e "${commit}^{commit}" 2>/dev/null; then
|
|
83
|
-
git -C "${dir}" fetch -q --depth 1 origin "${commit}"
|
|
84
|
-
fi
|
|
85
|
-
git -C "${dir}" checkout -q -f --detach "${commit}"
|
|
86
|
-
git -C "${dir}" clean -fdq
|
|
87
|
-
if [[ $(git -C "${dir}" rev-parse HEAD) != "${commit}" ]]; then
|
|
88
|
-
echo "${name} is not at ${commit}" >&2
|
|
89
|
-
exit 2
|
|
90
|
-
fi
|
|
91
|
-
git -C "${dir}" apply "${patch}"
|
|
92
|
-
SOURCE=${dir}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
gradle() {
|
|
96
|
-
./gradlew --no-daemon --console=plain --max-workers=6 \
|
|
97
|
-
"-Dorg.gradle.jvmargs=-Xmx10g -XX:+UseParallelGC -Dfile.encoding=UTF-8" \
|
|
98
|
-
-Pkotlin.compiler.execution.strategy=in-process \
|
|
99
|
-
"-Dmaven.repo.local=${M2}" "$@"
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
rm -rf "${DELIVER}" "${M2}"
|
|
103
|
-
mkdir -p "${DELIVER}"
|
|
104
|
-
|
|
105
|
-
checkout 1
|
|
106
|
-
SKIKO_SOURCE=${SOURCE}
|
|
107
|
-
checkout 2
|
|
108
|
-
# compile patched shaping and paragraph units in Skiko instead of their
|
|
109
|
-
# upstream archive units. all other Skia objects remain pinned upstream.
|
|
110
|
-
cmp "${SOURCE}/LICENSE" "${FORK}/SKIA_LICENSE"
|
|
111
|
-
cp "${SOURCE}/modules/skshaper/src/SkShaper_harfbuzz.cpp" "${SKIKO_SOURCE}/skiko/src/nativeJsMain/cpp/AndroidShaper.cpp"
|
|
112
|
-
# internal paragraph headers come from the same pinned source as the archive.
|
|
113
|
-
rsync -a --include='*/' --include='*.h' --exclude='*' "${SOURCE}/include/" "${SKIKO_SOURCE}/skiko/src/nativeJsMain/cpp/include/"
|
|
114
|
-
rsync -a --include='*/' --include='*.h' --exclude='*' "${SOURCE}/modules/" "${SKIKO_SOURCE}/skiko/src/nativeJsMain/cpp/modules/"
|
|
115
|
-
rsync -a --include='*/' --include='*.h' --exclude='*' "${SOURCE}/src/" "${SKIKO_SOURCE}/skiko/src/nativeJsMain/cpp/src/"
|
|
116
|
-
cp "${SOURCE}/modules/skparagraph/src/Run.cpp" "${SKIKO_SOURCE}/skiko/src/nativeJsMain/cpp/AndroidParagraphRun.cpp"
|
|
117
|
-
cp "${SOURCE}/modules/skparagraph/src/TextLine.cpp" "${SKIKO_SOURCE}/skiko/src/nativeJsMain/cpp/AndroidParagraphTextLine.cpp"
|
|
118
|
-
cp "${SOURCE}/modules/skparagraph/src/TextWrapper.cpp" "${SKIKO_SOURCE}/skiko/src/nativeJsMain/cpp/AndroidParagraphTextWrapper.cpp"
|
|
119
|
-
# the raster units use the same freetype headers as the pinned skia archive.
|
|
120
|
-
FREETYPE_SOURCE=${ROOT}/src/freetype
|
|
121
|
-
FREETYPE_REPOSITORY=$(field 'f.toolchain.freetypeHeaders.repository')
|
|
122
|
-
FREETYPE_COMMIT=$(field 'f.toolchain.freetypeHeaders.commit')
|
|
123
|
-
if ! grep -Fq "${FREETYPE_REPOSITORY}@${FREETYPE_COMMIT}" "${SOURCE}/DEPS"; then
|
|
124
|
-
echo "freetype headers differ from the pinned skia dependency" >&2
|
|
125
|
-
exit 2
|
|
126
|
-
fi
|
|
127
|
-
if [[ ! -d "${FREETYPE_SOURCE}/.git" ]]; then
|
|
128
|
-
git init -q "${FREETYPE_SOURCE}"
|
|
129
|
-
git -C "${FREETYPE_SOURCE}" remote add origin "${FREETYPE_REPOSITORY}"
|
|
130
|
-
fi
|
|
131
|
-
if ! git -C "${FREETYPE_SOURCE}" cat-file -e "${FREETYPE_COMMIT}^{commit}" 2>/dev/null; then
|
|
132
|
-
git -C "${FREETYPE_SOURCE}" fetch -q --depth 1 origin "${FREETYPE_COMMIT}"
|
|
133
|
-
fi
|
|
134
|
-
git -C "${FREETYPE_SOURCE}" checkout -q -f --detach "${FREETYPE_COMMIT}"
|
|
135
|
-
if [[ $(git -C "${FREETYPE_SOURCE}" rev-parse HEAD) != "${FREETYPE_COMMIT}" ]]; then
|
|
136
|
-
echo "freetype headers are not at ${FREETYPE_COMMIT}" >&2
|
|
137
|
-
exit 2
|
|
138
|
-
fi
|
|
139
|
-
rsync -a --delete "${FREETYPE_SOURCE}/include/" "${SKIKO_SOURCE}/skiko/src/nativeJsMain/cpp/freetype/"
|
|
140
|
-
cp "${SOURCE}/src/ports/SkFontHost_FreeType.cpp" "${SKIKO_SOURCE}/skiko/src/nativeJsMain/cpp/AndroidFreeType.cpp"
|
|
141
|
-
cp "${SOURCE}/src/ports/SkFontHost_FreeType_common.cpp" "${SKIKO_SOURCE}/skiko/src/nativeJsMain/cpp/AndroidFreeTypeCommon.cpp"
|
|
142
|
-
cp "${SOURCE}/src/image/SkSurface.cpp" "${SKIKO_SOURCE}/skiko/src/nativeJsMain/cpp/AndroidSurface.cpp"
|
|
143
|
-
(
|
|
144
|
-
cd "${SKIKO_SOURCE}/skiko"
|
|
145
|
-
gradle -Pdeploy.version=0.152.0-alpha02 -Pdeploy.release=true \
|
|
146
|
-
-Pskiko.wasm.enabled=true -Pskiko.awt.enabled=false \
|
|
147
|
-
:publishWasmJsPublicationToMavenLocal :skikoWasmJar
|
|
148
|
-
cp build/libs/skiko-wasm-0.152.0-alpha02.jar "${DELIVER}/"
|
|
149
|
-
)
|
|
150
|
-
|
|
151
|
-
checkout 0
|
|
152
|
-
(
|
|
153
|
-
cd "${SOURCE}"
|
|
154
|
-
gradle -I "${FORK}/skiko-local.init.gradle" -Pcompose.platforms=web -Pjetbrains.publication.version.COMPOSE=1.13.0-alpha01 \
|
|
155
|
-
-Pjetbrains.publication.version.COMPOSE_MATERIAL3=1.13.0-alpha01 \
|
|
156
|
-
-Pjetbrains.publication.version.NAVIGATION=2.10.0-beta01 \
|
|
157
|
-
:compose:ui:ui:publishWasmJsPublicationToMavenLocal \
|
|
158
|
-
:compose:foundation:foundation:publishWasmJsPublicationToMavenLocal \
|
|
159
|
-
:compose:ui:ui-text:publishWasmJsPublicationToMavenLocal \
|
|
160
|
-
:compose:ui:ui-skiko:publishWasmJsPublicationToMavenLocal \
|
|
161
|
-
:compose:material3:material3:publishWasmJsPublicationToMavenLocal \
|
|
162
|
-
:navigation:navigation-compose:publishWasmJsPublicationToMavenLocal
|
|
163
|
-
)
|
|
164
|
-
|
|
165
|
-
cp "${M2}/org/jetbrains/compose/ui/ui-wasm-js/1.13.0-alpha01/ui-wasm-js-1.13.0-alpha01.klib" \
|
|
166
|
-
"${M2}/org/jetbrains/compose/foundation/foundation-wasm-js/1.13.0-alpha01/foundation-wasm-js-1.13.0-alpha01.klib" \
|
|
167
|
-
"${M2}/org/jetbrains/compose/ui/ui-text-wasm-js/1.13.0-alpha01/ui-text-wasm-js-1.13.0-alpha01.klib" \
|
|
168
|
-
"${M2}/org/jetbrains/compose/ui/ui-skiko-wasm-js/1.13.0-alpha01/ui-skiko-wasm-js-1.13.0-alpha01.klib" \
|
|
169
|
-
"${M2}/org/jetbrains/compose/material3/material3-wasm-js/1.13.0-alpha01/material3-wasm-js-1.13.0-alpha01.klib" \
|
|
170
|
-
"${M2}/org/jetbrains/androidx/navigation/navigation-compose-wasm-js/2.10.0-beta01/navigation-compose-wasm-js-2.10.0-beta01.klib" \
|
|
171
|
-
"${M2}/org/jetbrains/skiko/skiko-wasm-js/0.152.0-alpha02/skiko-wasm-js-0.152.0-alpha02.klib" \
|
|
172
|
-
"${DELIVER}/"
|
|
173
|
-
# the record travels with the klibs it describes, so publishing attaches what
|
|
174
|
-
# this build used, not whatever the checkout holds later
|
|
175
|
-
cp "${FORK}/fork.json" "${FORK}/LICENSE" "${FORK}/NOTICE" "${FORK}/SKIA_LICENSE" "${FORK}"/*.patch "${FORK}/skiko-local.init.gradle" "${DELIVER}/"
|
|
176
|
-
(cd "${DELIVER}" && sha256sum -- *.klib *.jar > artifacts.sha256 && cat artifacts.sha256)
|