peachsim 0.1.939 → 0.1.1399
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 +28 -22
- package/cli/app-catalog.ts +29 -14
- package/cli/app-fonts.ts +5 -3
- package/cli/bridge-flow-runner.ts +40 -29
- package/cli/cloud-client.ts +57 -21
- package/cli/cloud-test-tunnel.ts +12 -18
- package/cli/commands/agent.ts +1 -1
- package/cli/commands/app-fonts.ts +3 -3
- package/cli/commands/assert.ts +8 -8
- package/cli/commands/auth.ts +8 -3
- package/cli/commands/box/bundle-plane.ts +13 -1
- package/cli/commands/box.ts +16 -5
- package/cli/commands/compat.ts +1 -1
- package/cli/commands/config.ts +2 -2
- package/cli/commands/control.ts +125 -71
- package/cli/commands/cpu-profile.ts +45 -1
- package/cli/commands/daemon.ts +131 -33
- package/cli/commands/debug.ts +24 -17
- package/cli/commands/desktop.ts +7 -1
- package/cli/commands/detect.ts +101 -0
- package/cli/commands/detox.ts +6 -6
- package/cli/commands/device.ts +12 -12
- package/cli/commands/electron.ts +32 -14
- package/cli/commands/flow.ts +49 -41
- package/cli/commands/guest-host.ts +39 -1
- package/cli/commands/inspect/core.ts +14 -8
- package/cli/commands/inspect/list.ts +1 -1
- package/cli/commands/inspect/settle.ts +5 -3
- package/cli/commands/inspect/settling.ts +229 -44
- package/cli/commands/inspect/wait-idle.ts +3 -2
- package/cli/commands/inspect.ts +105 -93
- package/cli/commands/install-cli.ts +36 -15
- package/cli/commands/install-desktop.ts +68 -195
- package/cli/commands/kotlin.ts +6 -5
- package/cli/commands/login.ts +5 -5
- package/cli/commands/maestro-compare.ts +554 -0
- package/cli/commands/maestro-generate.ts +6 -3
- package/cli/commands/maestro.ts +22 -0
- package/cli/commands/mode.ts +2 -2
- package/cli/commands/no-bridge-hint.ts +6 -2
- package/cli/commands/platform.ts +35 -6
- package/cli/commands/preview.ts +6 -0
- package/cli/commands/project-report.ts +10 -12
- package/cli/commands/record.ts +37 -37
- package/cli/commands/runtime.ts +9 -9
- package/cli/commands/screenshot-layers.ts +4 -4
- package/cli/commands/screenshot-mode.ts +2 -2
- package/cli/commands/screenshot.ts +8 -8
- package/cli/commands/screenshots-capture.ts +2 -2
- package/cli/commands/serve.ts +9 -12
- package/cli/commands/setup.ts +29 -14
- package/cli/commands/shell-boolean-mode.ts +2 -2
- package/cli/commands/show-touches-mode.ts +2 -2
- package/cli/commands/skills.ts +11 -11
- package/cli/commands/swift.ts +29 -11
- package/cli/commands/telemetry.ts +2 -2
- package/cli/commands/test.ts +5 -0
- package/cli/commands/three-mode.ts +3 -3
- package/cli/commands/timeline.ts +4 -4
- package/cli/commands/upgrade.ts +2 -2
- package/cli/commands/upload.ts +15 -15
- package/cli/commands/what-happened.ts +2 -2
- package/cli/current-sim.ts +6 -3
- package/cli/desktop-companion.ts +55 -149
- package/cli/dev-build-freshness.ts +2 -2
- package/cli/drivers/desktop.ts +17 -9
- package/cli/drivers/electron.ts +1 -2
- package/cli/drivers/playwright-sim-host.ts +11 -2
- package/cli/drivers/playwright.ts +35 -2
- package/cli/drivers/types.ts +8 -0
- package/cli/maestro-compare.ts +670 -0
- package/cli/outbound-endpoints.ts +46 -8
- package/cli/recording-access.ts +6 -6
- package/cli/run-registry.ts +1 -1
- package/cli/runtime-compat.ts +5 -1
- package/cli/send-to-box.ts +3 -3
- package/cli/shell-init.ts +2 -1
- package/cli/ws-bridge.ts +9 -5
- package/detox/element-types.ts +1 -0
- package/detox/gestures.ts +3 -3
- package/detox/index.ts +67 -38
- package/detox/navigation-lifecycle.ts +9 -6
- package/detox/proof-frame.cjs +6 -4
- 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 +42 -17
- package/dist-lib/bridge-contract-input.mjs +41 -16
- package/dist-lib/bridge-contract.cjs +1 -4
- package/dist-lib/bridge-contract.mjs +1 -3
- package/dist-lib/bundle-channel.cjs +2918 -550
- package/dist-lib/capture-contract.cjs +65 -24
- package/dist-lib/capture-contract.mjs +63 -24
- package/dist-lib/cloud-contract.cjs +2 -2
- package/dist-lib/cloud-contract.mjs +2 -2
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +3 -3
- package/dist-lib/cloud.mjs +3 -3
- package/dist-lib/config.cjs +15 -5
- package/dist-lib/config.mjs +154 -0
- package/dist-lib/detox/index.cjs +495 -139
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/expo-swift-bundle.cjs +1168 -238
- package/dist-lib/expo-swift-metadata.cjs +34 -23
- package/dist-lib/expo-swift-metadata.mjs +32 -23
- package/dist-lib/home-paths.cjs +2 -2
- package/dist-lib/host/bridge-host.cjs +2938 -654
- package/dist-lib/host/fetch-proxy-handler.cjs +14 -1
- package/dist-lib/host/fetch-proxy-overrides.cjs +7 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +5 -1
- package/dist-lib/host/replacement-module-handler.cjs +2 -2
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +999 -353
- 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 +332 -19
- 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 +7 -7
- package/dist-lib/metro-production-bundle.mjs +5 -5
- package/dist-lib/metro.cjs +688 -250
- package/dist-lib/native-app-identity-project.cjs +2647 -0
- package/dist-lib/native-app-identity-project.mjs +1257 -0
- package/dist-lib/native-app-identity.cjs +325 -25
- package/dist-lib/native-app-identity.mjs +323 -25
- package/dist-lib/native-firebase-metadata.cjs +1 -1
- package/dist-lib/native-firebase-metadata.mjs +1 -1
- package/dist-lib/plist.cjs +1 -1
- 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/react-native-host-modules.cjs +5 -1
- package/dist-lib/react-native-host-modules.mjs +5 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +57 -32
- package/dist-lib/sdk.cjs +231 -51
- package/dist-lib/sdk.mjs +231 -51
- package/dist-lib/skills.cjs +4107 -1374
- package/dist-lib/swift-compile.cjs +290 -30
- package/dist-lib/swift-compile.mjs +290 -30
- package/dist-lib/swift-package.cjs +143 -12
- package/dist-lib/swift-package.mjs +137 -11
- package/dist-lib/swift-submit.cjs +47 -5
- package/dist-lib/swift-submit.mjs +42 -5
- package/dist-lib/swift-toolchain.cjs +7 -2
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +1392 -458
- package/dist-lib/vite.cjs +13 -17
- package/dist-lib/worklet-executable.cjs +248 -33
- package/dist-lib/worklet-executable.mjs +248 -33
- package/install.sh +10 -1
- package/kotlin/{AppSources → AndroidViewSources}/android/content/res/Resources.kt +9 -9
- package/kotlin/AndroidViewSources/android/graphics/Canvas.kt +20 -0
- package/kotlin/AndroidViewSources/android/view/View.kt +211 -0
- package/kotlin/AndroidViewSources/android/widget/FrameLayout.kt +61 -0
- package/kotlin/AndroidViewSources/android/widget/LinearLayout.kt +49 -0
- package/kotlin/AppSources/android/view/Window.kt +36 -0
- package/kotlin/AppSources/android/view/WindowInsets.kt +9 -0
- package/kotlin/AppSources/android/view/WindowInsetsController.kt +5 -0
- package/kotlin/AppSources/android/window/OnBackInvokedDispatcher.kt +48 -0
- package/kotlin/AppSources/androidx/activity/OnBackPressedDispatcher.kt +20 -5
- package/kotlin/AppSources/androidx/compose/foundation/layout/WindowInsets.kt +15 -0
- package/kotlin/AppSources/androidx/compose/ui/platform/ComposeView.kt +2 -1
- package/kotlin/AppSources/dev/peach/app/PeachApp.kt +42 -50
- package/kotlin/ComposeSources/PeachComposeHost.kt +200 -84
- package/kotlin/ExpoComposeSources/PeachAndroidView.kt +87 -0
- package/kotlin/ExpoComposeSources/PeachExpoViewMount.kt +24 -0
- package/kotlin/ExpoComposeSources/dev/peach/expo/PeachExpoCompose.kt +28 -0
- package/kotlin/ExpoComposeSources/expo/modules/kotlin/views/ExpoComposeView.kt +70 -0
- package/kotlin/ExpoSources/dev/peach/expo/PeachExpoRuntime.kt +513 -0
- package/kotlin/ExpoSources/dev/peach/expo/PeachExpoTypes.kt +173 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/AppContext.kt +20 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/Promise.kt +19 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/classcomponent/ClassComponentBuilder.kt +198 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/exception/CodedException.kt +126 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/functions/Functions.kt +132 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/jni/JavaScriptTypedArray.kt +81 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/modules/Module.kt +98 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/objects/ObjectDefinitionBuilder.kt +236 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/records/Record.kt +12 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/runtime/Runtime.kt +9 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/sharedobjects/SharedObject.kt +50 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/sharedobjects/SharedObjectRegistry.kt +57 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/sharedobjects/SharedRef.kt +19 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/typedarray/ConcreteTypedArrays.kt +158 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/typedarray/GenericTypedArray.kt +8 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/typedarray/TypedArray.kt +29 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/typedarray/TypedArrayIterator.kt +9 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/types/AnyType.kt +155 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/types/Either.kt +91 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/types/Enumerable.kt +6 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/viewevent/ViewEvent.kt +54 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/views/ExpoView.kt +23 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/views/ViewDefinitionBuilder.kt +71 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/views/ViewProps.kt +35 -0
- package/kotlin/README.md +13 -3
- package/kotlin/Sources/android/os/Build.kt +17 -0
- package/kotlin/Sources/android/os/Handler.kt +35 -0
- package/kotlin/Sources/android/os/Looper.kt +17 -0
- package/kotlin/Sources/android/os/MessageQueue.kt +56 -0
- package/kotlin/Sources/android/os/SystemClock.kt +14 -0
- package/kotlin/Sources/android/util/Log.kt +64 -0
- package/kotlin/Sources/java/security/MessageDigest.kt +114 -0
- package/kotlin/Sources/kotlin/text/StringFormat.kt +9 -0
- package/kotlin/Sources/org/json/JSON.kt +44 -0
- package/kotlin/fixtures/counter/Counter.d.kt.ts +1 -0
- package/kotlin/fixtures/counter/Counter.kt +10 -3
- package/kotlin/fixtures/counter/CounterApp.native.tsx +1 -1
- package/kotlin/fixtures/counter/vite.config.ts +2 -2
- package/kotlin/fixtures/headless-counter/Headless.kt +7 -6
- package/kotlin/fixtures/import-animation/Animation.d.kt.ts +7 -0
- package/kotlin/fixtures/import-animation/Animation.kt +80 -0
- package/kotlin/fixtures/import-animation/ImportAnimation.native.tsx +13 -0
- package/kotlin/fixtures/import-animation/README.md +24 -0
- package/kotlin/fixtures/import-animation/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-animation/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-animation/app/routes.d.ts +18 -0
- package/kotlin/fixtures/import-animation/package.json +23 -0
- package/kotlin/fixtures/import-animation/tsconfig.json +20 -0
- package/kotlin/fixtures/import-animation/vite.config.ts +20 -0
- package/kotlin/fixtures/import-editor/Editor.d.kt.ts +7 -0
- package/kotlin/fixtures/import-editor/Editor.kt +59 -0
- package/kotlin/fixtures/import-editor/ImportEditor.native.tsx +23 -0
- package/kotlin/fixtures/import-editor/README.md +27 -0
- package/kotlin/fixtures/import-editor/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-editor/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-editor/package.json +23 -0
- package/kotlin/fixtures/import-editor/tsconfig.json +20 -0
- package/kotlin/fixtures/import-editor/vite.config.ts +20 -0
- package/kotlin/fixtures/import-effects/Effects.d.kt.ts +7 -0
- package/kotlin/fixtures/import-effects/Effects.kt +87 -0
- package/kotlin/fixtures/import-effects/ImportEffects.native.tsx +13 -0
- package/kotlin/fixtures/import-effects/README.md +19 -0
- package/kotlin/fixtures/import-effects/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-effects/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-effects/package.json +23 -0
- package/kotlin/fixtures/import-effects/tsconfig.json +20 -0
- package/kotlin/fixtures/import-effects/vite.config.ts +20 -0
- package/kotlin/fixtures/import-layout/ImportLayout.native.tsx +13 -0
- package/kotlin/fixtures/import-layout/Layout.d.kt.ts +7 -0
- package/kotlin/fixtures/import-layout/Layout.kt +72 -0
- package/kotlin/fixtures/import-layout/README.md +24 -0
- package/kotlin/fixtures/import-layout/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-layout/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-layout/package.json +23 -0
- package/kotlin/fixtures/import-layout/tsconfig.json +20 -0
- package/kotlin/fixtures/import-layout/vite.config.ts +20 -0
- package/kotlin/fixtures/import-navigation/ImportNavigation.native.tsx +18 -0
- package/kotlin/fixtures/import-navigation/Navigation.d.kt.ts +7 -0
- package/kotlin/fixtures/import-navigation/Navigation.kt +104 -0
- package/kotlin/fixtures/import-navigation/README.md +31 -0
- package/kotlin/fixtures/import-navigation/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-navigation/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-navigation/package.json +23 -0
- package/kotlin/fixtures/import-navigation/tsconfig.json +20 -0
- package/kotlin/fixtures/import-navigation/vite.config.ts +20 -0
- package/kotlin/fixtures/import-overlays/ImportOverlays.native.tsx +29 -0
- package/kotlin/fixtures/import-overlays/Overlays.d.kt.ts +7 -0
- package/kotlin/fixtures/import-overlays/Overlays.kt +93 -0
- package/kotlin/fixtures/import-overlays/README.md +34 -0
- package/kotlin/fixtures/import-overlays/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-overlays/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-overlays/package.json +23 -0
- package/kotlin/fixtures/import-overlays/tsconfig.json +20 -0
- package/kotlin/fixtures/import-overlays/vite.config.ts +20 -0
- package/kotlin/fixtures/import-scroll/ImportScroll.native.tsx +13 -0
- package/kotlin/fixtures/import-scroll/README.md +23 -0
- package/kotlin/fixtures/import-scroll/Scroll.d.kt.ts +7 -0
- package/kotlin/fixtures/import-scroll/Scroll.kt +91 -0
- package/kotlin/fixtures/import-scroll/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-scroll/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-scroll/package.json +23 -0
- package/kotlin/fixtures/import-scroll/tsconfig.json +20 -0
- package/kotlin/fixtures/import-scroll/vite.config.ts +20 -0
- package/kotlin/fixtures/import-selection/ImportSelection.native.tsx +44 -0
- package/kotlin/fixtures/import-selection/README.md +32 -0
- package/kotlin/fixtures/import-selection/Selection.d.kt.ts +8 -0
- package/kotlin/fixtures/import-selection/Selection.kt +78 -0
- package/kotlin/fixtures/import-selection/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-selection/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-selection/package.json +23 -0
- package/kotlin/fixtures/import-selection/tsconfig.json +20 -0
- package/kotlin/fixtures/import-selection/vite.config.ts +20 -0
- package/kotlin/fixtures/import-surfaces/ImportSurfaces.native.tsx +13 -0
- package/kotlin/fixtures/import-surfaces/README.md +22 -0
- package/kotlin/fixtures/import-surfaces/Surfaces.d.kt.ts +7 -0
- package/kotlin/fixtures/import-surfaces/Surfaces.kt +64 -0
- package/kotlin/fixtures/import-surfaces/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-surfaces/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-surfaces/package.json +23 -0
- package/kotlin/fixtures/import-surfaces/tsconfig.json +20 -0
- package/kotlin/fixtures/import-surfaces/vite.config.ts +20 -0
- package/kotlin/fixtures/import-values/ImportValues.native.tsx +35 -0
- package/kotlin/fixtures/import-values/README.md +23 -0
- package/kotlin/fixtures/import-values/Values.d.kt.ts +11 -0
- package/kotlin/fixtures/import-values/Values.kt +66 -0
- package/kotlin/fixtures/import-values/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-values/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-values/package.json +23 -0
- package/kotlin/fixtures/import-values/tsconfig.json +20 -0
- package/kotlin/fixtures/import-values/vite.config.ts +20 -0
- package/kotlin/fixtures/kotlin-app-variants/BarBehavior.kt +38 -0
- package/kotlin/fixtures/kotlin-app-variants/BarVisibility.kt +36 -0
- package/kotlin/fixtures/kotlin-app-variants/Ime.kt +3 -1
- package/kotlin/fixtures/kotlin-app-variants/TransientInsets.kt +50 -0
- package/kotlin/fork/NOTICE +6 -1
- package/kotlin/fork/README.md +15 -7
- package/kotlin/fork/build.sh +2 -0
- package/kotlin/fork/compose-worker-globals.patch +186 -4
- package/kotlin/fork/fork.json +2 -2
- package/kotlin/fork/skiko-worker-clock.patch +12 -0
- package/kotlin/toolchain.json +12 -12
- package/kotlin/tools/expo-types.main.kts +115 -0
- package/package.json +17 -23
- package/scripts/dev-server-scanner.ts +92 -66
- package/skills/contrast/SKILL.md +2 -2
- package/skills/peach-debug/SKILL.md +1 -1
- package/skills/peach-perf/SKILL.md +1 -1
- package/skills/peach-setup/SKILL.md +2 -1
- package/skills/peach-test/SKILL.md +8 -0
- package/src/assetCatalogContract.ts +43 -1
- package/src/bridge-contract-input.ts +46 -19
- package/src/bridge-contract.ts +0 -1
- package/src/bundle-channel.mjs +197 -84
- package/src/bundleGlobalFooter.ts +38 -0
- package/src/capture-contract.ts +107 -33
- package/src/cloud-contract.ts +5 -1
- package/src/cloud.ts +5 -2
- package/src/config.ts +22 -3
- package/src/configured-bundle-producer.ts +1 -1
- package/src/desktop-host-delivery.ts +95 -1
- package/src/expo-kotlin-bundle.ts +29 -0
- package/src/expo-kotlin-host.ts +201 -0
- package/src/expo-swift-host.ts +96 -76
- package/src/expoKotlinContract.ts +70 -0
- package/src/expoSwiftContract.ts +4 -25
- package/src/home-paths.ts +7 -4
- package/src/host/bridge-host.ts +23 -3
- package/src/host/fetch-proxy-handler.ts +13 -0
- package/src/host/fetch-proxy-overrides.ts +11 -0
- package/src/host/replacement-module-handler.ts +5 -2
- package/src/index.ts +3 -1
- package/src/kotlin-host.ts +463 -19
- package/src/metro-plugin.ts +56 -28
- package/src/metro-production-bundle.ts +2 -2
- package/src/native-app-identity-project.ts +190 -0
- package/src/native-app-identity.ts +398 -34
- package/src/native-firebase-config.ts +69 -15
- package/src/native-seam-manifest.ts +6 -0
- package/src/one-widget-discovery.ts +2 -1
- package/src/openstep-plist.ts +107 -0
- package/src/react-native-host-modules.ts +4 -0
- package/src/runtime-assets.ts +2 -2
- package/src/sim-client.ts +2 -2
- package/src/swift-binary-modules.ts +3 -1
- package/src/swift-compile.ts +286 -38
- package/src/swift-distribution-contract.ts +4 -0
- package/src/swift-distribution.lock.json +123 -12
- package/src/swift-distribution.ts +7 -3
- package/src/swift-host.ts +298 -83
- package/src/swift-package-manifest.ts +29 -2
- package/src/swift-package.ts +180 -10
- package/src/swift-packages.ts +4 -0
- package/src/swift-standin-emit.ts +4 -1
- package/src/swift-standins.ts +274 -15
- package/src/swift-submit.ts +62 -7
- package/src/swift-toolchain.ts +6 -1
- package/src/swiftContract.ts +126 -3
- package/src/vite-plugin-one.ts +13 -16
- package/src/vite-plugin-swift.ts +4 -5
- package/src/vite-plugin.ts +360 -144
- package/src/vite.d.ts +1 -1
- package/src/worker-system-chunks.ts +221 -0
- package/src/worklet-executable.ts +348 -38
- package/src/worklets-babel.ts +1 -1
- package/src/xcode-project.ts +243 -127
- package/dist-lib/agent-identity.cjs +0 -39
- package/dist-lib/agent-sessions.cjs +0 -760
- package/dist-lib/cli-constants.cjs +0 -32
- package/dist-lib/render-mode.cjs +0 -44
- package/kotlin/AppSources/android/view/View.kt +0 -74
- package/kotlin/AppSources/android/widget/FrameLayout.kt +0 -6
- package/src/render-mode.ts +0 -15
- /package/kotlin/{AppSources → AndroidViewSources}/android/content/Context.kt +0 -0
- /package/kotlin/{AppSources → AndroidViewSources}/android/content/res/Configuration.kt +0 -0
- /package/kotlin/{AppSources → AndroidViewSources}/android/graphics/Color.kt +0 -0
- /package/kotlin/{AppSources → AndroidViewSources}/android/util/DisplayMetrics.kt +0 -0
- /package/kotlin/{AppSources → AndroidViewSources}/dev/peach/app/JavaFormat.kt +0 -0
- /package/kotlin/{AppSources → Sources}/java/lang/Runnable.kt +0 -0
|
@@ -15,7 +15,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'
|
|
|
15
15
|
import { join } from 'node:path'
|
|
16
16
|
import { gzipSync } from 'node:zlib'
|
|
17
17
|
import { fetchAppFontFiles } from '../app-fonts'
|
|
18
|
-
import {
|
|
18
|
+
import { peachExit } from '../run-rnx'
|
|
19
19
|
|
|
20
20
|
type ManifestEntry = {
|
|
21
21
|
url: string
|
|
@@ -41,7 +41,7 @@ async function stage(args: string[]): Promise<void> {
|
|
|
41
41
|
console.error(
|
|
42
42
|
' usage: peach app-fonts stage --wire <wire> --out-dir <dir> --manifest <path>',
|
|
43
43
|
)
|
|
44
|
-
|
|
44
|
+
peachExit(1)
|
|
45
45
|
}
|
|
46
46
|
if (!wire.trim()) {
|
|
47
47
|
console.log('no app fonts declared — nothing to stage')
|
|
@@ -95,5 +95,5 @@ export async function runAppFonts(args: string[]): Promise<void> {
|
|
|
95
95
|
}
|
|
96
96
|
console.error(` unknown app-fonts subcommand: ${sub ?? '(none)'}`)
|
|
97
97
|
console.error(' available: stage')
|
|
98
|
-
|
|
98
|
+
peachExit(1)
|
|
99
99
|
}
|
package/cli/commands/assert.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
import { spawn } from 'child_process'
|
|
17
17
|
import { sleep } from '../../src/sleep'
|
|
18
|
-
import {
|
|
18
|
+
import { peachExit } from '../run-rnx'
|
|
19
19
|
import { rnxSelfInvocation } from '../self-invocation'
|
|
20
20
|
|
|
21
21
|
// READ_VERBS lists every command whose stdout we know is valid JSON under
|
|
@@ -405,13 +405,13 @@ function runJq(expr: string, payload: unknown): Promise<string> {
|
|
|
405
405
|
export async function runAssert(rawArgs: string[]): Promise<void> {
|
|
406
406
|
if (rawArgs[0] === '--help' || rawArgs[0] === '-h' || rawArgs.length === 0) {
|
|
407
407
|
printHelp()
|
|
408
|
-
|
|
408
|
+
peachExit(rawArgs.length === 0 ? 2 : 0)
|
|
409
409
|
}
|
|
410
410
|
|
|
411
411
|
const parsed = parseAssertArgs(rawArgs)
|
|
412
412
|
if ('error' in parsed) {
|
|
413
413
|
process.stderr.write(` assert: ${parsed.error}\n`)
|
|
414
|
-
|
|
414
|
+
peachExit(2)
|
|
415
415
|
}
|
|
416
416
|
|
|
417
417
|
const { verbArgs, predicates, withinMs, negate, quiet, allowTimeout } = parsed
|
|
@@ -422,7 +422,7 @@ export async function runAssert(rawArgs: string[]): Promise<void> {
|
|
|
422
422
|
` assert: unknown or non-read verb: ${verbArgs.join(' ')}\n` +
|
|
423
423
|
` supported: ${Array.from(READ_VERBS).sort().join(', ')}\n`,
|
|
424
424
|
)
|
|
425
|
-
|
|
425
|
+
peachExit(2)
|
|
426
426
|
}
|
|
427
427
|
|
|
428
428
|
// default assertion when none given is --exists. matches the common
|
|
@@ -454,7 +454,7 @@ export async function runAssert(rawArgs: string[]): Promise<void> {
|
|
|
454
454
|
const label = exitCode === 1 ? 'fail' : 'skip'
|
|
455
455
|
process.stderr.write(` assert: ${label} — ${lastVerbSkipReason}\n`)
|
|
456
456
|
}
|
|
457
|
-
|
|
457
|
+
peachExit(exitCode)
|
|
458
458
|
}
|
|
459
459
|
|
|
460
460
|
let allPass = true
|
|
@@ -470,7 +470,7 @@ export async function runAssert(rawArgs: string[]): Promise<void> {
|
|
|
470
470
|
}
|
|
471
471
|
} catch (err: any) {
|
|
472
472
|
if (!quiet) process.stderr.write(` assert: skip — ${err.message}\n`)
|
|
473
|
-
|
|
473
|
+
peachExit(125)
|
|
474
474
|
}
|
|
475
475
|
|
|
476
476
|
const pass = negate ? !allPass : allPass
|
|
@@ -480,7 +480,7 @@ export async function runAssert(rawArgs: string[]): Promise<void> {
|
|
|
480
480
|
` assert: pass${attempts > 1 ? ` (attempt ${attempts})` : ''} — ${reasons.join('; ')}\n`,
|
|
481
481
|
)
|
|
482
482
|
}
|
|
483
|
-
|
|
483
|
+
peachExit(0)
|
|
484
484
|
}
|
|
485
485
|
|
|
486
486
|
lastFailReason = reasons.join('; ')
|
|
@@ -493,7 +493,7 @@ export async function runAssert(rawArgs: string[]): Promise<void> {
|
|
|
493
493
|
` assert: fail${attempts > 1 ? ` after ${attempts} attempt(s)` : ''} — ${lastFailReason}\n`,
|
|
494
494
|
)
|
|
495
495
|
}
|
|
496
|
-
|
|
496
|
+
peachExit(1)
|
|
497
497
|
}
|
|
498
498
|
}
|
|
499
499
|
|
package/cli/commands/auth.ts
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
sharedDesktopAuthAccounts,
|
|
4
4
|
} from '../../src/auth/shared-session'
|
|
5
5
|
import { CHOOSE_ACCOUNT_HINT, resolveCliAuth } from '../auth'
|
|
6
|
-
import {
|
|
6
|
+
import { peachExit } from '../run-rnx'
|
|
7
7
|
|
|
8
8
|
function printHelp(): void {
|
|
9
9
|
console.log(`
|
|
@@ -38,7 +38,12 @@ async function printStatus(): Promise<number> {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
const current = await refreshSharedDesktopAuthSession(auth.origin)
|
|
41
|
-
|
|
41
|
+
if (!current) {
|
|
42
|
+
console.log(' not signed in')
|
|
43
|
+
console.log(' run `peach login` to sign in again')
|
|
44
|
+
return 1
|
|
45
|
+
}
|
|
46
|
+
const user = current.user
|
|
42
47
|
const accounts = sharedDesktopAuthAccounts(user)
|
|
43
48
|
const accountId = current?.accountId ?? auth.accountId
|
|
44
49
|
const account = accounts.find((candidate) => candidate.id === accountId)
|
|
@@ -67,5 +72,5 @@ export async function runAuth(args: string[]): Promise<void> {
|
|
|
67
72
|
|
|
68
73
|
console.error(` unknown auth command: ${sub}`)
|
|
69
74
|
printHelp()
|
|
70
|
-
|
|
75
|
+
peachExit(1)
|
|
71
76
|
}
|
|
@@ -10,21 +10,33 @@
|
|
|
10
10
|
|
|
11
11
|
import {
|
|
12
12
|
PREBUILT_BUNDLE_DEVICE_PATH,
|
|
13
|
+
PREBUILT_BUNDLE_NATIVE_RENDERER_PATH,
|
|
13
14
|
prebuiltAppFontsPartPath,
|
|
14
15
|
PREBUILT_BUNDLE_PART_BYTES,
|
|
15
16
|
prebuiltBundlePartPath,
|
|
16
17
|
} from '@peach/box/template'
|
|
18
|
+
import type { NativeRenderer } from '../../../src/config'
|
|
17
19
|
import type { ProjectFileMeta, ProjectFilePlane } from '@peach/box/plane'
|
|
18
20
|
|
|
19
21
|
export class BundleFilePlane implements ProjectFilePlane {
|
|
20
22
|
private readonly parts = new Map<string, Uint8Array>()
|
|
21
23
|
private readonly entries = new Map<string, ProjectFileMeta>()
|
|
22
24
|
|
|
23
|
-
constructor(
|
|
25
|
+
constructor(
|
|
26
|
+
bundle: Uint8Array,
|
|
27
|
+
device: string | null,
|
|
28
|
+
appFonts = '',
|
|
29
|
+
nativeRenderer?: NativeRenderer,
|
|
30
|
+
) {
|
|
24
31
|
if (bundle.byteLength === 0) throw new Error('a Box bundle cannot be empty')
|
|
25
32
|
if (appFonts)
|
|
26
33
|
this.recordParts(new TextEncoder().encode(appFonts), prebuiltAppFontsPartPath)
|
|
27
34
|
if (device) this.record(PREBUILT_BUNDLE_DEVICE_PATH, new TextEncoder().encode(device))
|
|
35
|
+
if (nativeRenderer !== undefined)
|
|
36
|
+
this.record(
|
|
37
|
+
PREBUILT_BUNDLE_NATIVE_RENDERER_PATH,
|
|
38
|
+
new TextEncoder().encode(nativeRenderer),
|
|
39
|
+
)
|
|
28
40
|
this.recordParts(bundle, prebuiltBundlePartPath)
|
|
29
41
|
}
|
|
30
42
|
|
package/cli/commands/box.ts
CHANGED
|
@@ -44,6 +44,7 @@ import { CheckoutFilePlane, CheckoutRequiresGitError } from './box/checkout-plan
|
|
|
44
44
|
import { createPeachCommand } from './box/peach-command'
|
|
45
45
|
import { sharePlane } from './box/plane-share'
|
|
46
46
|
import { createSearchCommand } from './box/search-command'
|
|
47
|
+
import { readNativeProjectRenderer } from './detect'
|
|
47
48
|
import type { BoxShellSession } from '@peach/box/client'
|
|
48
49
|
import type { BoxTemplateResolution } from '@peach/box/template'
|
|
49
50
|
|
|
@@ -535,6 +536,13 @@ export async function createPrebuiltBundleBox(options: {
|
|
|
535
536
|
accountId: string | null
|
|
536
537
|
secrets?: Readonly<Record<string, string>>
|
|
537
538
|
}) {
|
|
539
|
+
const platform =
|
|
540
|
+
options.device && isDeviceModel(options.device)
|
|
541
|
+
? getRuntimePlatform(options.device)
|
|
542
|
+
: 'ios'
|
|
543
|
+
const nativeRenderer = options.nativeProjectDir
|
|
544
|
+
? readNativeProjectRenderer(options.nativeProjectDir, platform)
|
|
545
|
+
: undefined
|
|
538
546
|
return cloudBoxClient(options).create({
|
|
539
547
|
name: options.name,
|
|
540
548
|
stack: prebuiltBundleBoxTemplate.stack,
|
|
@@ -545,12 +553,10 @@ export async function createPrebuiltBundleBox(options: {
|
|
|
545
553
|
options.nativeProjectDir
|
|
546
554
|
? readNativeLinkedAppFontsWire({
|
|
547
555
|
projectDir: options.nativeProjectDir,
|
|
548
|
-
platform
|
|
549
|
-
options.device && isDeviceModel(options.device)
|
|
550
|
-
? getRuntimePlatform(options.device)
|
|
551
|
-
: 'ios',
|
|
556
|
+
platform,
|
|
552
557
|
})
|
|
553
558
|
: '',
|
|
559
|
+
nativeRenderer,
|
|
554
560
|
),
|
|
555
561
|
...(options.secrets ? { secrets: options.secrets } : {}),
|
|
556
562
|
})
|
|
@@ -592,10 +598,15 @@ async function runCloudBoxCreate(
|
|
|
592
598
|
// built, so naming a second template would ask for two different boxes.
|
|
593
599
|
const bundlePath = flag(args, 'bundle')
|
|
594
600
|
const nativeProjectDir = flag(args, 'native-project')
|
|
601
|
+
const assetsDirectory = flag(args, 'assets')
|
|
595
602
|
if (nativeProjectDir && !bundlePath) {
|
|
596
603
|
console.error(` ${peach} box create: --native-project requires --bundle.`)
|
|
597
604
|
return 1
|
|
598
605
|
}
|
|
606
|
+
if (assetsDirectory && !bundlePath) {
|
|
607
|
+
console.error(` ${peach} box create: --assets requires --bundle.`)
|
|
608
|
+
return 1
|
|
609
|
+
}
|
|
599
610
|
const namedTemplate = flag(args, 'template')
|
|
600
611
|
if (bundlePath && namedTemplate) {
|
|
601
612
|
console.error(
|
|
@@ -630,7 +641,7 @@ async function runCloudBoxCreate(
|
|
|
630
641
|
// embeds them. the box service owns the size ceiling, not this producer.
|
|
631
642
|
let artifact: CloudBoxArtifactProduction
|
|
632
643
|
try {
|
|
633
|
-
artifact = await produceCloudBoxArtifact(resolved)
|
|
644
|
+
artifact = await produceCloudBoxArtifact(resolved, assetsDirectory)
|
|
634
645
|
} catch (error) {
|
|
635
646
|
console.error(
|
|
636
647
|
` ${peach} box create: could not prepare the bundle at ${resolved}: ${
|
package/cli/commands/compat.ts
CHANGED
|
@@ -202,7 +202,7 @@ function reportLocalNative(local: LocalNative[]): void {
|
|
|
202
202
|
}
|
|
203
203
|
console.log(` })`)
|
|
204
204
|
}
|
|
205
|
-
console.log(`\n guide: ${rnxPublicBrand.origin}/docs/
|
|
205
|
+
console.log(`\n guide: ${rnxPublicBrand.origin}/docs/peach/compat/custom-stubs`)
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
// an app's own native code, found from the names its JavaScript asks the native
|
package/cli/commands/config.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { peachExit } from '../run-rnx'
|
|
2
2
|
import { runTelemetry } from './telemetry'
|
|
3
3
|
|
|
4
4
|
function printHelp(): void {
|
|
@@ -30,5 +30,5 @@ export async function runConfig(args: string[]): Promise<void> {
|
|
|
30
30
|
|
|
31
31
|
console.error(` unknown config command: ${sub ?? '(missing)'}`)
|
|
32
32
|
printHelp()
|
|
33
|
-
|
|
33
|
+
peachExit(1)
|
|
34
34
|
}
|