peachsim 0.1.1641 → 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-bundle-resources.ts +57 -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 +105 -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 +40 -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 +15 -5
- 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 +52 -118
- package/detox/motion-change.d.cts +6 -27
- package/detox/motion-leg-starts.cjs +20 -0
- package/detox/motion-leg-starts.d.cts +8 -0
- 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 +3 -3
- 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 +38332 -14940
- 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 +1247 -4511
- 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 +35243 -13172
- 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 +45285 -63163
- 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 +1997 -2069
- 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 +14 -6
- package/dist-lib/menu.mjs +14 -6
- 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 +468 -563
- package/dist-lib/native-app-identity-project.cjs +128 -292
- package/dist-lib/native-app-identity-project.mjs +1262 -51
- 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 +84 -16
- package/dist-lib/sdk.mjs +82 -15
- package/dist-lib/skills.cjs +51248 -75450
- package/dist-lib/swift-compile.cjs +26154 -1245
- package/dist-lib/swift-compile.mjs +26151 -1230
- 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 +34394 -12323
- 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/appBundleResourcesContract.ts +51 -0
- package/src/assetCatalogContract.ts +21 -0
- package/src/backend-origin.ts +3 -1
- 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 +20 -37
- 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/host/staged-host-files.ts +28 -4
- package/src/installed-package-versions.ts +142 -38
- package/src/kotlin-host.ts +1 -1
- package/src/launchMetadataContract.ts +1 -0
- package/src/menu.ts +12 -4
- package/src/metro-plugin.ts +4 -4
- package/src/metro-project-root.ts +68 -0
- package/src/native-app-identity-project.ts +47 -38
- 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 +8 -7
- 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 +926 -47
- package/src/swift-compiler-digest.ts +17 -3
- package/src/swift-distribution.lock.json +49 -22
- package/src/swift-host.ts +167 -52
- package/src/swift-objc-compile.ts +86 -26
- 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-root-lock.ts +241 -92
- 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 +103 -11
- 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
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -645,245 +645,6 @@ var init_replacement_module_handler = __esm({
|
|
|
645
645
|
}
|
|
646
646
|
});
|
|
647
647
|
|
|
648
|
-
// ../../node_modules/plist/lib/parse.js
|
|
649
|
-
var require_parse = __commonJS({
|
|
650
|
-
"../../node_modules/plist/lib/parse.js"(exports2) {
|
|
651
|
-
var { DOMParser } = require("@xmldom/xmldom");
|
|
652
|
-
exports2.parse = parse4;
|
|
653
|
-
var TEXT_NODE = 3;
|
|
654
|
-
var CDATA_NODE = 4;
|
|
655
|
-
var COMMENT_NODE = 8;
|
|
656
|
-
function shouldIgnoreNode(node) {
|
|
657
|
-
return node.nodeType === TEXT_NODE || node.nodeType === COMMENT_NODE || node.nodeType === CDATA_NODE;
|
|
658
|
-
}
|
|
659
|
-
function isEmptyNode(node) {
|
|
660
|
-
if (!node.childNodes || node.childNodes.length === 0) {
|
|
661
|
-
return true;
|
|
662
|
-
} else {
|
|
663
|
-
return false;
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
function invariant(test, message) {
|
|
667
|
-
if (!test) {
|
|
668
|
-
throw new Error(message);
|
|
669
|
-
}
|
|
670
|
-
}
|
|
671
|
-
function parse4(xml) {
|
|
672
|
-
var doc = new DOMParser().parseFromString(xml, "text/xml");
|
|
673
|
-
invariant(
|
|
674
|
-
doc.documentElement.nodeName === "plist",
|
|
675
|
-
"malformed document. First element should be <plist>"
|
|
676
|
-
);
|
|
677
|
-
var plist3 = parsePlistXML(doc.documentElement);
|
|
678
|
-
if (plist3.length == 1) plist3 = plist3[0];
|
|
679
|
-
return plist3;
|
|
680
|
-
}
|
|
681
|
-
function parsePlistXML(node) {
|
|
682
|
-
var i, new_obj, key, val, new_arr, res, counter, type;
|
|
683
|
-
if (!node) return null;
|
|
684
|
-
if (node.nodeName === "plist") {
|
|
685
|
-
new_arr = [];
|
|
686
|
-
if (isEmptyNode(node)) {
|
|
687
|
-
return new_arr;
|
|
688
|
-
}
|
|
689
|
-
for (i = 0; i < node.childNodes.length; i++) {
|
|
690
|
-
if (!shouldIgnoreNode(node.childNodes[i])) {
|
|
691
|
-
new_arr.push(parsePlistXML(node.childNodes[i]));
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
return new_arr;
|
|
695
|
-
} else if (node.nodeName === "dict") {
|
|
696
|
-
new_obj = {};
|
|
697
|
-
key = null;
|
|
698
|
-
counter = 0;
|
|
699
|
-
if (isEmptyNode(node)) {
|
|
700
|
-
return new_obj;
|
|
701
|
-
}
|
|
702
|
-
for (i = 0; i < node.childNodes.length; i++) {
|
|
703
|
-
if (shouldIgnoreNode(node.childNodes[i])) continue;
|
|
704
|
-
if (counter % 2 === 0) {
|
|
705
|
-
invariant(
|
|
706
|
-
node.childNodes[i].nodeName === "key",
|
|
707
|
-
"Missing key while parsing <dict/>."
|
|
708
|
-
);
|
|
709
|
-
key = parsePlistXML(node.childNodes[i]);
|
|
710
|
-
} else {
|
|
711
|
-
invariant(
|
|
712
|
-
node.childNodes[i].nodeName !== "key",
|
|
713
|
-
'Unexpected key "' + parsePlistXML(node.childNodes[i]) + '" while parsing <dict/>.'
|
|
714
|
-
);
|
|
715
|
-
new_obj[key] = parsePlistXML(node.childNodes[i]);
|
|
716
|
-
}
|
|
717
|
-
counter += 1;
|
|
718
|
-
}
|
|
719
|
-
if (counter % 2 === 1) {
|
|
720
|
-
new_obj[key] = "";
|
|
721
|
-
}
|
|
722
|
-
return new_obj;
|
|
723
|
-
} else if (node.nodeName === "array") {
|
|
724
|
-
new_arr = [];
|
|
725
|
-
if (isEmptyNode(node)) {
|
|
726
|
-
return new_arr;
|
|
727
|
-
}
|
|
728
|
-
for (i = 0; i < node.childNodes.length; i++) {
|
|
729
|
-
if (!shouldIgnoreNode(node.childNodes[i])) {
|
|
730
|
-
res = parsePlistXML(node.childNodes[i]);
|
|
731
|
-
if (null != res) new_arr.push(res);
|
|
732
|
-
}
|
|
733
|
-
}
|
|
734
|
-
return new_arr;
|
|
735
|
-
} else if (node.nodeName === "#text") {
|
|
736
|
-
} else if (node.nodeName === "key") {
|
|
737
|
-
if (isEmptyNode(node)) {
|
|
738
|
-
return "";
|
|
739
|
-
}
|
|
740
|
-
invariant(
|
|
741
|
-
node.childNodes[0].nodeValue !== "__proto__",
|
|
742
|
-
"__proto__ keys can lead to prototype pollution. More details on CVE-2022-22912"
|
|
743
|
-
);
|
|
744
|
-
return node.childNodes[0].nodeValue;
|
|
745
|
-
} else if (node.nodeName === "string") {
|
|
746
|
-
res = "";
|
|
747
|
-
if (isEmptyNode(node)) {
|
|
748
|
-
return res;
|
|
749
|
-
}
|
|
750
|
-
for (i = 0; i < node.childNodes.length; i++) {
|
|
751
|
-
var type = node.childNodes[i].nodeType;
|
|
752
|
-
if (type === TEXT_NODE || type === CDATA_NODE) {
|
|
753
|
-
res += node.childNodes[i].nodeValue;
|
|
754
|
-
}
|
|
755
|
-
}
|
|
756
|
-
return res;
|
|
757
|
-
} else if (node.nodeName === "integer") {
|
|
758
|
-
invariant(!isEmptyNode(node), 'Cannot parse "" as integer.');
|
|
759
|
-
return parseInt(node.childNodes[0].nodeValue, 10);
|
|
760
|
-
} else if (node.nodeName === "real") {
|
|
761
|
-
invariant(!isEmptyNode(node), 'Cannot parse "" as real.');
|
|
762
|
-
res = "";
|
|
763
|
-
for (i = 0; i < node.childNodes.length; i++) {
|
|
764
|
-
if (node.childNodes[i].nodeType === TEXT_NODE) {
|
|
765
|
-
res += node.childNodes[i].nodeValue;
|
|
766
|
-
}
|
|
767
|
-
}
|
|
768
|
-
return parseFloat(res);
|
|
769
|
-
} else if (node.nodeName === "data") {
|
|
770
|
-
res = "";
|
|
771
|
-
if (isEmptyNode(node)) {
|
|
772
|
-
return Buffer.from(res, "base64");
|
|
773
|
-
}
|
|
774
|
-
for (i = 0; i < node.childNodes.length; i++) {
|
|
775
|
-
if (node.childNodes[i].nodeType === TEXT_NODE) {
|
|
776
|
-
res += node.childNodes[i].nodeValue.replace(/\s+/g, "");
|
|
777
|
-
}
|
|
778
|
-
}
|
|
779
|
-
return Buffer.from(res, "base64");
|
|
780
|
-
} else if (node.nodeName === "date") {
|
|
781
|
-
invariant(!isEmptyNode(node), 'Cannot parse "" as Date.');
|
|
782
|
-
return new Date(node.childNodes[0].nodeValue);
|
|
783
|
-
} else if (node.nodeName === "null") {
|
|
784
|
-
return null;
|
|
785
|
-
} else if (node.nodeName === "true") {
|
|
786
|
-
return true;
|
|
787
|
-
} else if (node.nodeName === "false") {
|
|
788
|
-
return false;
|
|
789
|
-
} else {
|
|
790
|
-
throw new Error("Invalid PLIST tag " + node.nodeName);
|
|
791
|
-
}
|
|
792
|
-
}
|
|
793
|
-
}
|
|
794
|
-
});
|
|
795
|
-
|
|
796
|
-
// ../../node_modules/plist/lib/build.js
|
|
797
|
-
var require_build = __commonJS({
|
|
798
|
-
"../../node_modules/plist/lib/build.js"(exports2) {
|
|
799
|
-
var base64 = require("base64-js");
|
|
800
|
-
var xmlbuilder = require("xmlbuilder");
|
|
801
|
-
exports2.build = build;
|
|
802
|
-
function ISODateString(d) {
|
|
803
|
-
function pad(n) {
|
|
804
|
-
return n < 10 ? "0" + n : n;
|
|
805
|
-
}
|
|
806
|
-
return d.getUTCFullYear() + "-" + pad(d.getUTCMonth() + 1) + "-" + pad(d.getUTCDate()) + "T" + pad(d.getUTCHours()) + ":" + pad(d.getUTCMinutes()) + ":" + pad(d.getUTCSeconds()) + "Z";
|
|
807
|
-
}
|
|
808
|
-
var toString = Object.prototype.toString;
|
|
809
|
-
function type(obj) {
|
|
810
|
-
var m = toString.call(obj).match(/\[object (.*)\]/);
|
|
811
|
-
return m ? m[1] : m;
|
|
812
|
-
}
|
|
813
|
-
function build(obj, opts) {
|
|
814
|
-
var XMLHDR = {
|
|
815
|
-
version: "1.0",
|
|
816
|
-
encoding: "UTF-8"
|
|
817
|
-
};
|
|
818
|
-
var XMLDTD = {
|
|
819
|
-
pubid: "-//Apple//DTD PLIST 1.0//EN",
|
|
820
|
-
sysid: "http://www.apple.com/DTDs/PropertyList-1.0.dtd"
|
|
821
|
-
};
|
|
822
|
-
var doc = xmlbuilder.create("plist");
|
|
823
|
-
doc.dec(XMLHDR.version, XMLHDR.encoding, XMLHDR.standalone);
|
|
824
|
-
doc.dtd(XMLDTD.pubid, XMLDTD.sysid);
|
|
825
|
-
doc.att("version", "1.0");
|
|
826
|
-
walk_obj(obj, doc);
|
|
827
|
-
if (!opts) opts = {};
|
|
828
|
-
opts.pretty = opts.pretty !== false;
|
|
829
|
-
return doc.end(opts);
|
|
830
|
-
}
|
|
831
|
-
function walk_obj(next, next_child) {
|
|
832
|
-
var tag_type, i, prop;
|
|
833
|
-
var name2 = type(next);
|
|
834
|
-
if ("Undefined" == name2) {
|
|
835
|
-
return;
|
|
836
|
-
} else if (Array.isArray(next)) {
|
|
837
|
-
next_child = next_child.ele("array");
|
|
838
|
-
for (i = 0; i < next.length; i++) {
|
|
839
|
-
walk_obj(next[i], next_child);
|
|
840
|
-
}
|
|
841
|
-
} else if (Buffer.isBuffer(next)) {
|
|
842
|
-
next_child.ele("data").raw(next.toString("base64"));
|
|
843
|
-
} else if ("Object" == name2) {
|
|
844
|
-
next_child = next_child.ele("dict");
|
|
845
|
-
for (prop in next) {
|
|
846
|
-
if (next.hasOwnProperty(prop)) {
|
|
847
|
-
next_child.ele("key").txt(prop);
|
|
848
|
-
walk_obj(next[prop], next_child);
|
|
849
|
-
}
|
|
850
|
-
}
|
|
851
|
-
} else if ("Number" == name2) {
|
|
852
|
-
tag_type = next % 1 === 0 ? "integer" : "real";
|
|
853
|
-
next_child.ele(tag_type).txt(next.toString());
|
|
854
|
-
} else if ("BigInt" == name2) {
|
|
855
|
-
next_child.ele("integer").txt(next);
|
|
856
|
-
} else if ("Date" == name2) {
|
|
857
|
-
next_child.ele("date").txt(ISODateString(new Date(next)));
|
|
858
|
-
} else if ("Boolean" == name2) {
|
|
859
|
-
next_child.ele(next ? "true" : "false");
|
|
860
|
-
} else if ("String" == name2) {
|
|
861
|
-
next_child.ele("string").txt(next);
|
|
862
|
-
} else if ("ArrayBuffer" == name2) {
|
|
863
|
-
next_child.ele("data").raw(base64.fromByteArray(next));
|
|
864
|
-
} else if (next && next.buffer && "ArrayBuffer" == type(next.buffer)) {
|
|
865
|
-
next_child.ele("data").raw(base64.fromByteArray(new Uint8Array(next.buffer), next_child));
|
|
866
|
-
} else if ("Null" === name2) {
|
|
867
|
-
next_child.ele("null").txt("");
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
}
|
|
871
|
-
});
|
|
872
|
-
|
|
873
|
-
// ../../node_modules/plist/index.js
|
|
874
|
-
var require_plist = __commonJS({
|
|
875
|
-
"../../node_modules/plist/index.js"(exports2) {
|
|
876
|
-
var parserFunctions = require_parse();
|
|
877
|
-
Object.keys(parserFunctions).forEach(function(k) {
|
|
878
|
-
exports2[k] = parserFunctions[k];
|
|
879
|
-
});
|
|
880
|
-
var builderFunctions = require_build();
|
|
881
|
-
Object.keys(builderFunctions).forEach(function(k) {
|
|
882
|
-
exports2[k] = builderFunctions[k];
|
|
883
|
-
});
|
|
884
|
-
}
|
|
885
|
-
});
|
|
886
|
-
|
|
887
648
|
// ../../node_modules/json5/lib/unicode.js
|
|
888
649
|
var require_unicode = __commonJS({
|
|
889
650
|
"../../node_modules/json5/lib/unicode.js"(exports2, module2) {
|
|
@@ -918,7 +679,7 @@ var require_util = __commonJS({
|
|
|
918
679
|
});
|
|
919
680
|
|
|
920
681
|
// ../../node_modules/json5/lib/parse.js
|
|
921
|
-
var
|
|
682
|
+
var require_parse = __commonJS({
|
|
922
683
|
"../../node_modules/json5/lib/parse.js"(exports2, module2) {
|
|
923
684
|
var util = require_util();
|
|
924
685
|
var source;
|
|
@@ -1986,7 +1747,7 @@ var require_stringify = __commonJS({
|
|
|
1986
1747
|
// ../../node_modules/json5/lib/index.js
|
|
1987
1748
|
var require_lib = __commonJS({
|
|
1988
1749
|
"../../node_modules/json5/lib/index.js"(exports2, module2) {
|
|
1989
|
-
var parse4 =
|
|
1750
|
+
var parse4 = require_parse();
|
|
1990
1751
|
var stringify4 = require_stringify();
|
|
1991
1752
|
var JSON53 = {
|
|
1992
1753
|
parse: parse4,
|
|
@@ -2013,6 +1774,258 @@ var init_version = __esm({
|
|
|
2013
1774
|
}
|
|
2014
1775
|
});
|
|
2015
1776
|
|
|
1777
|
+
// ../contrast-runtime-delivery/src/product.ts
|
|
1778
|
+
var init_product = __esm({
|
|
1779
|
+
"../contrast-runtime-delivery/src/product.ts"() {
|
|
1780
|
+
"use strict";
|
|
1781
|
+
init_version();
|
|
1782
|
+
}
|
|
1783
|
+
});
|
|
1784
|
+
|
|
1785
|
+
// ../contrast-runtime-delivery/src/index.ts
|
|
1786
|
+
var init_src = __esm({
|
|
1787
|
+
"../contrast-runtime-delivery/src/index.ts"() {
|
|
1788
|
+
"use strict";
|
|
1789
|
+
init_process_group();
|
|
1790
|
+
init_product();
|
|
1791
|
+
init_product();
|
|
1792
|
+
}
|
|
1793
|
+
});
|
|
1794
|
+
|
|
1795
|
+
// src/home-paths.ts
|
|
1796
|
+
function rnxHomeDir() {
|
|
1797
|
+
const override = process.env[PEACH_HOME_ENV];
|
|
1798
|
+
if (override && override.length > 0) return import_node_path8.default.resolve(override);
|
|
1799
|
+
return import_node_path8.default.join((0, import_node_os2.homedir)(), ".peach");
|
|
1800
|
+
}
|
|
1801
|
+
function runtimesDir() {
|
|
1802
|
+
return import_node_path8.default.join(rnxHomeDir(), "runtimes");
|
|
1803
|
+
}
|
|
1804
|
+
function runtimeDir(version) {
|
|
1805
|
+
return import_node_path8.default.join(runtimesDir(), version);
|
|
1806
|
+
}
|
|
1807
|
+
function activeRuntimeFile() {
|
|
1808
|
+
return import_node_path8.default.join(runtimesDir(), ACTIVE_RUNTIME_FILE);
|
|
1809
|
+
}
|
|
1810
|
+
function readActiveRuntime() {
|
|
1811
|
+
try {
|
|
1812
|
+
const value = import_node_fs8.default.readFileSync(activeRuntimeFile(), "utf8").trim();
|
|
1813
|
+
return value.length > 0 ? value : null;
|
|
1814
|
+
} catch {
|
|
1815
|
+
return null;
|
|
1816
|
+
}
|
|
1817
|
+
}
|
|
1818
|
+
var import_node_fs8, import_node_os2, import_node_path8, PEACH_HOME_ENV, ACTIVE_RUNTIME_FILE, DAEMON_LOCKFILE_MAX_BYTES;
|
|
1819
|
+
var init_home_paths = __esm({
|
|
1820
|
+
"src/home-paths.ts"() {
|
|
1821
|
+
"use strict";
|
|
1822
|
+
import_node_fs8 = __toESM(require("node:fs"), 1);
|
|
1823
|
+
import_node_os2 = require("node:os");
|
|
1824
|
+
import_node_path8 = __toESM(require("node:path"), 1);
|
|
1825
|
+
PEACH_HOME_ENV = "PEACH_HOME";
|
|
1826
|
+
ACTIVE_RUNTIME_FILE = "active";
|
|
1827
|
+
DAEMON_LOCKFILE_MAX_BYTES = 16 * 1024;
|
|
1828
|
+
}
|
|
1829
|
+
});
|
|
1830
|
+
|
|
1831
|
+
// src/runtime-assets.ts
|
|
1832
|
+
function findMonorepoRoot() {
|
|
1833
|
+
if (_monorepoRootCache !== void 0) return _monorepoRootCache;
|
|
1834
|
+
let dir = import_path2.default.dirname((0, import_url.fileURLToPath)(__sootsim_import_meta_url));
|
|
1835
|
+
for (let i = 0; i < 12 && dir !== import_path2.default.dirname(dir); i++) {
|
|
1836
|
+
if (import_fs2.default.existsSync(import_path2.default.join(dir, "packages/peach-engine/package.json")) && import_fs2.default.existsSync(import_path2.default.join(dir, "public/sootsim"))) {
|
|
1837
|
+
_monorepoRootCache = dir;
|
|
1838
|
+
return dir;
|
|
1839
|
+
}
|
|
1840
|
+
dir = import_path2.default.dirname(dir);
|
|
1841
|
+
}
|
|
1842
|
+
_monorepoRootCache = null;
|
|
1843
|
+
return null;
|
|
1844
|
+
}
|
|
1845
|
+
function resolveDevCheckoutRuntimeAssetRoot() {
|
|
1846
|
+
if (process.env.PEACH_HOME && readActiveRuntime()) return null;
|
|
1847
|
+
const root = findMonorepoRoot();
|
|
1848
|
+
if (!root) return null;
|
|
1849
|
+
return import_path2.default.join(root, "public/sootsim");
|
|
1850
|
+
}
|
|
1851
|
+
function resolveDevCheckoutRuntimeRoot() {
|
|
1852
|
+
const devBuild = resolveDevCheckoutRuntimeAssetRoot();
|
|
1853
|
+
if (!devBuild) return null;
|
|
1854
|
+
if (import_fs2.default.existsSync(import_path2.default.join(devBuild, "index.html")) && import_fs2.default.existsSync(import_path2.default.join(devBuild, "engine/index.html")) && import_fs2.default.existsSync(import_path2.default.join(devBuild, "engine-tenant/worker.js")) && import_fs2.default.existsSync(import_path2.default.join(devBuild, "engine-tenant/worker.prod.js"))) {
|
|
1855
|
+
return devBuild;
|
|
1856
|
+
}
|
|
1857
|
+
return null;
|
|
1858
|
+
}
|
|
1859
|
+
function resolveActiveRuntimeRoot() {
|
|
1860
|
+
const devRoot = resolveDevCheckoutRuntimeRoot();
|
|
1861
|
+
if (devRoot) return devRoot;
|
|
1862
|
+
const active = readActiveRuntime();
|
|
1863
|
+
if (!active) return null;
|
|
1864
|
+
const dir = runtimeDir(active);
|
|
1865
|
+
if (!import_fs2.default.existsSync(import_path2.default.join(dir, "index.html"))) return null;
|
|
1866
|
+
return dir;
|
|
1867
|
+
}
|
|
1868
|
+
function isRuntimeVersionHostname(hostname) {
|
|
1869
|
+
return hostname.toLowerCase().endsWith(RUNTIME_VERSION_HOSTNAME_SUFFIX);
|
|
1870
|
+
}
|
|
1871
|
+
function runtimeVersionFromHostname(hostname) {
|
|
1872
|
+
if (!isRuntimeVersionHostname(hostname)) return null;
|
|
1873
|
+
const labels = hostname.slice(0, -RUNTIME_VERSION_HOSTNAME_SUFFIX.length).split(".");
|
|
1874
|
+
if (labels.length === 0 || labels.some((label) => !/^[0-9a-f]{1,60}$/i.test(label))) {
|
|
1875
|
+
return null;
|
|
1876
|
+
}
|
|
1877
|
+
const encoded = labels.join("");
|
|
1878
|
+
if (encoded.length % 2 !== 0) return null;
|
|
1879
|
+
try {
|
|
1880
|
+
const version = Buffer.from(encoded, "hex").toString("utf8");
|
|
1881
|
+
return isValidRuntimeVersion(version) ? version : null;
|
|
1882
|
+
} catch {
|
|
1883
|
+
return null;
|
|
1884
|
+
}
|
|
1885
|
+
}
|
|
1886
|
+
function resolveInstalledRuntimeRoot(version) {
|
|
1887
|
+
const dir = runtimeDir(version);
|
|
1888
|
+
if (!import_fs2.default.existsSync(import_path2.default.join(dir, "index.html"))) return null;
|
|
1889
|
+
return dir;
|
|
1890
|
+
}
|
|
1891
|
+
function resolveRuntimeRootForHostname(hostname) {
|
|
1892
|
+
if (!isRuntimeVersionHostname(hostname)) return resolveActiveRuntimeRoot();
|
|
1893
|
+
const version = runtimeVersionFromHostname(hostname);
|
|
1894
|
+
return version ? resolveInstalledRuntimeRoot(version) : null;
|
|
1895
|
+
}
|
|
1896
|
+
function resolveRuntimeRootForRequestHost(host) {
|
|
1897
|
+
if (!host) return resolveActiveRuntimeRoot();
|
|
1898
|
+
try {
|
|
1899
|
+
return resolveRuntimeRootForHostname(new URL(`http://${host}`).hostname);
|
|
1900
|
+
} catch {
|
|
1901
|
+
return null;
|
|
1902
|
+
}
|
|
1903
|
+
}
|
|
1904
|
+
function isRootRuntimeAssetPath(pathname) {
|
|
1905
|
+
return ROOT_RUNTIME_PATHS.some((p) => pathname === p || pathname.startsWith(p));
|
|
1906
|
+
}
|
|
1907
|
+
function resolveRuntimeFilePath(runtimeRoot, pathname) {
|
|
1908
|
+
if (!pathname.startsWith("/")) return null;
|
|
1909
|
+
if (pathname.includes("\0") || pathname.includes("\\")) return null;
|
|
1910
|
+
for (const segment of pathname.split("/")) {
|
|
1911
|
+
if (segment === "..") return null;
|
|
1912
|
+
}
|
|
1913
|
+
const normalized = pathname.startsWith("/sootsim/") ? pathname.slice("/sootsim".length) : pathname;
|
|
1914
|
+
const fullPath = import_path2.default.resolve(runtimeRoot, normalized.replace(/^\/+/, ""));
|
|
1915
|
+
const rootWithSep = runtimeRoot.endsWith(import_path2.default.sep) ? runtimeRoot : runtimeRoot + import_path2.default.sep;
|
|
1916
|
+
if (!fullPath.startsWith(rootWithSep) && fullPath !== runtimeRoot) return null;
|
|
1917
|
+
if (!import_fs2.default.existsSync(fullPath) || !import_fs2.default.statSync(fullPath).isFile()) return null;
|
|
1918
|
+
return fullPath;
|
|
1919
|
+
}
|
|
1920
|
+
function serveRuntimeFile(req, res, fullPath) {
|
|
1921
|
+
const ext = import_path2.default.extname(fullPath);
|
|
1922
|
+
const stat = import_fs2.default.statSync(fullPath);
|
|
1923
|
+
const lastModified = stat.mtime.toUTCString();
|
|
1924
|
+
res.setHeader("content-type", MIME_TYPES[ext] || "application/octet-stream");
|
|
1925
|
+
if (/^canvaskit-graphite-pipelines-[0-9a-f]{8}\.bin$/.test(import_path2.default.basename(fullPath))) {
|
|
1926
|
+
res.setHeader("cache-control", "public, max-age=31536000, immutable");
|
|
1927
|
+
import_fs2.default.createReadStream(fullPath).pipe(res);
|
|
1928
|
+
return;
|
|
1929
|
+
}
|
|
1930
|
+
res.setHeader("cache-control", "no-cache");
|
|
1931
|
+
res.setHeader("last-modified", lastModified);
|
|
1932
|
+
if (req?.headers?.["if-modified-since"] === lastModified) {
|
|
1933
|
+
res.statusCode = 304;
|
|
1934
|
+
res.end();
|
|
1935
|
+
return;
|
|
1936
|
+
}
|
|
1937
|
+
sendFileWithRanges(req, res, fullPath, stat.size, {});
|
|
1938
|
+
}
|
|
1939
|
+
function sendFileWithRanges(req, res, filePath, total, headers) {
|
|
1940
|
+
const head = (req?.method || "GET").toUpperCase() === "HEAD";
|
|
1941
|
+
const range = /^bytes=(\d*)-(\d*)$/.exec(req?.headers?.range || "");
|
|
1942
|
+
const invalid = range && range[1] && range[2] && Number(range[2]) < Number(range[1]);
|
|
1943
|
+
if (range && (range[1] || range[2]) && !invalid) {
|
|
1944
|
+
const [, startRaw, endRaw] = range;
|
|
1945
|
+
const start = startRaw ? Number(startRaw) : Math.max(0, total - Number(endRaw));
|
|
1946
|
+
const end = startRaw && endRaw ? Math.min(Number(endRaw), total - 1) : total - 1;
|
|
1947
|
+
if (start > end || start >= total) {
|
|
1948
|
+
res.writeHead(416, { ...headers, "Content-Range": `bytes */${total}` });
|
|
1949
|
+
res.end();
|
|
1950
|
+
return;
|
|
1951
|
+
}
|
|
1952
|
+
res.writeHead(206, {
|
|
1953
|
+
...headers,
|
|
1954
|
+
"Content-Range": `bytes ${start}-${end}/${total}`,
|
|
1955
|
+
"Accept-Ranges": "bytes",
|
|
1956
|
+
"Content-Length": String(end - start + 1)
|
|
1957
|
+
});
|
|
1958
|
+
if (head) res.end();
|
|
1959
|
+
else streamFile(res, import_fs2.default.createReadStream(filePath, { start, end }));
|
|
1960
|
+
return;
|
|
1961
|
+
}
|
|
1962
|
+
res.writeHead(200, {
|
|
1963
|
+
...headers,
|
|
1964
|
+
"Accept-Ranges": "bytes",
|
|
1965
|
+
"Content-Length": String(total)
|
|
1966
|
+
});
|
|
1967
|
+
if (head || total === 0) res.end();
|
|
1968
|
+
else streamFile(res, import_fs2.default.createReadStream(filePath, { start: 0, end: total - 1 }));
|
|
1969
|
+
}
|
|
1970
|
+
function streamFile(res, stream) {
|
|
1971
|
+
stream.on("error", (error) => res.destroy(error));
|
|
1972
|
+
stream.pipe(res);
|
|
1973
|
+
}
|
|
1974
|
+
var import_fs2, import_path2, import_url, SOOTSIM_RUNTIME_MISSING_MESSAGE, _monorepoRootCache, MIME_TYPES, ROOT_RUNTIME_PATHS, RUNTIME_VERSION_HOSTNAME_SUFFIX;
|
|
1975
|
+
var init_runtime_assets = __esm({
|
|
1976
|
+
"src/runtime-assets.ts"() {
|
|
1977
|
+
"use strict";
|
|
1978
|
+
import_fs2 = __toESM(require("fs"), 1);
|
|
1979
|
+
import_path2 = __toESM(require("path"), 1);
|
|
1980
|
+
import_url = require("url");
|
|
1981
|
+
init_src();
|
|
1982
|
+
init_home_paths();
|
|
1983
|
+
SOOTSIM_RUNTIME_MISSING_MESSAGE = "[peach] no engine runtime installed. run `peach runtime install`";
|
|
1984
|
+
MIME_TYPES = {
|
|
1985
|
+
".js": "application/javascript",
|
|
1986
|
+
".mjs": "application/javascript",
|
|
1987
|
+
".css": "text/css",
|
|
1988
|
+
".html": "text/html",
|
|
1989
|
+
".wasm": "application/wasm",
|
|
1990
|
+
".json": "application/json",
|
|
1991
|
+
".jpg": "image/jpeg",
|
|
1992
|
+
".jpeg": "image/jpeg",
|
|
1993
|
+
".png": "image/png",
|
|
1994
|
+
".svg": "image/svg+xml",
|
|
1995
|
+
".webp": "image/webp",
|
|
1996
|
+
".glb": "model/gltf-binary",
|
|
1997
|
+
".ttf": "font/ttf",
|
|
1998
|
+
".otf": "font/otf",
|
|
1999
|
+
".woff": "font/woff",
|
|
2000
|
+
".woff2": "font/woff2",
|
|
2001
|
+
".mp3": "audio/mpeg",
|
|
2002
|
+
".wav": "audio/wav",
|
|
2003
|
+
".mp4": "video/mp4",
|
|
2004
|
+
".m4v": "video/mp4",
|
|
2005
|
+
".mov": "video/quicktime",
|
|
2006
|
+
".webm": "video/webm"
|
|
2007
|
+
};
|
|
2008
|
+
ROOT_RUNTIME_PATHS = [
|
|
2009
|
+
"/assets/",
|
|
2010
|
+
"/engine/",
|
|
2011
|
+
"/engine-tenant/",
|
|
2012
|
+
"/photos/",
|
|
2013
|
+
"/three-mode/",
|
|
2014
|
+
"/fonts/",
|
|
2015
|
+
"/icons/",
|
|
2016
|
+
"/sounds/",
|
|
2017
|
+
"/spike/",
|
|
2018
|
+
"/test-wallpaper.jpg",
|
|
2019
|
+
"/preview-sw.js",
|
|
2020
|
+
"/peach.svg",
|
|
2021
|
+
"/bedrock-sqlite.wasm",
|
|
2022
|
+
"/bedrock-sqlite.js",
|
|
2023
|
+
"/sootsim/"
|
|
2024
|
+
];
|
|
2025
|
+
RUNTIME_VERSION_HOSTNAME_SUFFIX = ".runtime.localhost";
|
|
2026
|
+
}
|
|
2027
|
+
});
|
|
2028
|
+
|
|
2016
2029
|
// src/nativeViewSourceContract.ts
|
|
2017
2030
|
function isNativeViewSource(value) {
|
|
2018
2031
|
if (!isRecord(value)) return false;
|
|
@@ -6027,35 +6040,7 @@ var import_fs3 = __toESM(require("fs"), 1);
|
|
|
6027
6040
|
var import_module = require("module");
|
|
6028
6041
|
var import_node_crypto3 = require("node:crypto");
|
|
6029
6042
|
var import_path3 = __toESM(require("path"), 1);
|
|
6030
|
-
|
|
6031
|
-
// ../peach-engine/src/platform/adapter.ts
|
|
6032
|
-
var IOS_ADAPTER = Object.freeze({
|
|
6033
|
-
id: "ios",
|
|
6034
|
-
displayName: "iOS",
|
|
6035
|
-
isIOS: true,
|
|
6036
|
-
isAndroid: false,
|
|
6037
|
-
select: (registry) => registry.ios
|
|
6038
|
-
});
|
|
6039
|
-
var ANDROID_ADAPTER = Object.freeze({
|
|
6040
|
-
id: "android",
|
|
6041
|
-
displayName: "Android",
|
|
6042
|
-
isIOS: false,
|
|
6043
|
-
isAndroid: true,
|
|
6044
|
-
select: (registry) => registry.android
|
|
6045
|
-
});
|
|
6046
|
-
var RUNTIME_PLATFORM_ADAPTERS = Object.freeze({
|
|
6047
|
-
ios: IOS_ADAPTER,
|
|
6048
|
-
android: ANDROID_ADAPTER
|
|
6049
|
-
});
|
|
6050
|
-
function isRuntimePlatform(value) {
|
|
6051
|
-
return value === "ios" || value === "android";
|
|
6052
|
-
}
|
|
6053
|
-
function getRuntimePlatformAdapter(platform) {
|
|
6054
|
-
return RUNTIME_PLATFORM_ADAPTERS[platform];
|
|
6055
|
-
}
|
|
6056
|
-
|
|
6057
|
-
// src/metro-plugin.ts
|
|
6058
|
-
init_app_project();
|
|
6043
|
+
init_app_project();
|
|
6059
6044
|
|
|
6060
6045
|
// src/android-autolinking.ts
|
|
6061
6046
|
var import_node_child_process = require("node:child_process");
|
|
@@ -8403,7 +8388,7 @@ var PEACH_UPSTREAM_MODULES = {
|
|
|
8403
8388
|
...PEACH_REACT_NATIVE_UPSTREAM_MODULES
|
|
8404
8389
|
};
|
|
8405
8390
|
|
|
8406
|
-
//
|
|
8391
|
+
// src/stub-pattern-matcher.ts
|
|
8407
8392
|
function extractPackageFromPath(modulePath) {
|
|
8408
8393
|
let nodeModulesIndex = modulePath.lastIndexOf("/node_modules/");
|
|
8409
8394
|
let prefixLength = "/node_modules/".length;
|
|
@@ -8425,25 +8410,74 @@ function packageNameAt(modulePath, start) {
|
|
|
8425
8410
|
}
|
|
8426
8411
|
|
|
8427
8412
|
// src/installed-package-versions.ts
|
|
8428
|
-
function
|
|
8429
|
-
|
|
8430
|
-
|
|
8431
|
-
|
|
8432
|
-
|
|
8433
|
-
|
|
8434
|
-
|
|
8435
|
-
|
|
8436
|
-
|
|
8437
|
-
|
|
8438
|
-
|
|
8413
|
+
function* exists(target) {
|
|
8414
|
+
return (yield { op: "exists", path: target }) === true;
|
|
8415
|
+
}
|
|
8416
|
+
function* readManifest(target) {
|
|
8417
|
+
const manifest = yield { op: "manifest", path: target };
|
|
8418
|
+
return typeof manifest === "object" ? manifest : null;
|
|
8419
|
+
}
|
|
8420
|
+
function parseManifest(source) {
|
|
8421
|
+
const manifest = JSON.parse(source);
|
|
8422
|
+
return typeof manifest === "object" && manifest !== null ? manifest : null;
|
|
8423
|
+
}
|
|
8424
|
+
function isMissing(error) {
|
|
8425
|
+
return error instanceof Error && "code" in error && error.code === "ENOENT";
|
|
8426
|
+
}
|
|
8427
|
+
function answerSync(step) {
|
|
8428
|
+
if (step.op === "exists") return import_fs.default.existsSync(step.path);
|
|
8429
|
+
if (step.op === "realpath") return import_fs.default.realpathSync(step.path);
|
|
8430
|
+
try {
|
|
8431
|
+
return parseManifest(import_fs.default.readFileSync(step.path, "utf8"));
|
|
8432
|
+
} catch (error) {
|
|
8433
|
+
if (isMissing(error)) return null;
|
|
8434
|
+
throw error;
|
|
8435
|
+
}
|
|
8436
|
+
}
|
|
8437
|
+
function runSync(walk) {
|
|
8438
|
+
for (let step = walk.next(); ; ) {
|
|
8439
|
+
if (step.done) return step.value;
|
|
8440
|
+
step = walk.next(answerSync(step.value));
|
|
8441
|
+
}
|
|
8442
|
+
}
|
|
8443
|
+
function createInstalledPackageReader() {
|
|
8444
|
+
const hasModules = /* @__PURE__ */ new Map();
|
|
8445
|
+
const manifests = /* @__PURE__ */ new Map();
|
|
8446
|
+
return function* readInstalledPackage(fromDir, name2) {
|
|
8447
|
+
for (let dir = fromDir; ; ) {
|
|
8448
|
+
if (import_path.default.basename(dir) !== "node_modules") {
|
|
8449
|
+
const modules = import_path.default.join(dir, "node_modules");
|
|
8450
|
+
let present = hasModules.get(dir);
|
|
8451
|
+
if (present === void 0) {
|
|
8452
|
+
present = yield* exists(modules);
|
|
8453
|
+
hasModules.set(dir, present);
|
|
8454
|
+
}
|
|
8455
|
+
if (present) {
|
|
8456
|
+
const root = import_path.default.join(modules, name2);
|
|
8457
|
+
let installed = manifests.get(root);
|
|
8458
|
+
if (installed === void 0) {
|
|
8459
|
+
const manifest = yield* readManifest(import_path.default.join(root, "package.json"));
|
|
8460
|
+
installed = manifest ? { root, manifest } : null;
|
|
8461
|
+
manifests.set(root, installed);
|
|
8462
|
+
}
|
|
8463
|
+
if (installed) return installed;
|
|
8464
|
+
}
|
|
8439
8465
|
}
|
|
8440
8466
|
const parent = import_path.default.dirname(dir);
|
|
8441
8467
|
if (parent === dir) return null;
|
|
8442
8468
|
dir = parent;
|
|
8443
|
-
continue;
|
|
8444
8469
|
}
|
|
8445
|
-
|
|
8470
|
+
};
|
|
8471
|
+
}
|
|
8472
|
+
function* installedVersionsWalk(projectRoot, names) {
|
|
8473
|
+
const readInstalledPackage = createInstalledPackageReader();
|
|
8474
|
+
const versions = {};
|
|
8475
|
+
for (const name2 of [...names].sort()) {
|
|
8476
|
+
const installed = yield* readInstalledPackage(projectRoot, name2);
|
|
8477
|
+
const version = installed && Reflect.get(installed.manifest, "version");
|
|
8478
|
+
if (typeof version === "string" && version.length > 0) versions[name2] = version;
|
|
8446
8479
|
}
|
|
8480
|
+
return versions;
|
|
8447
8481
|
}
|
|
8448
8482
|
function readInstalledPackageVersions(projectRoot, modulePaths) {
|
|
8449
8483
|
const names = /* @__PURE__ */ new Set();
|
|
@@ -8451,13 +8485,7 @@ function readInstalledPackageVersions(projectRoot, modulePaths) {
|
|
|
8451
8485
|
const name2 = extractPackageFromPath(modulePath.replaceAll(import_path.default.sep, "/"));
|
|
8452
8486
|
if (name2) names.add(name2);
|
|
8453
8487
|
}
|
|
8454
|
-
|
|
8455
|
-
for (const name2 of [...names].sort()) {
|
|
8456
|
-
const installed = readInstalledPackage(projectRoot, name2);
|
|
8457
|
-
const version = installed && Reflect.get(installed.manifest, "version");
|
|
8458
|
-
if (typeof version === "string" && version.length > 0) versions[name2] = version;
|
|
8459
|
-
}
|
|
8460
|
-
return versions;
|
|
8488
|
+
return runSync(installedVersionsWalk(projectRoot, names));
|
|
8461
8489
|
}
|
|
8462
8490
|
|
|
8463
8491
|
// src/metro-production-bundle.ts
|
|
@@ -8935,8 +8963,13 @@ function visitXcodeTargetMembers(objects, targetId, resolvePath, filesUnder, joi
|
|
|
8935
8963
|
if (file.endsWith(".swift")) {
|
|
8936
8964
|
if (!relative3.split("/").some((segment) => BUNDLE_DIR.test(segment)))
|
|
8937
8965
|
visit3(file, "source");
|
|
8938
|
-
} else if (/\.(h|
|
|
8939
|
-
|
|
8966
|
+
} else if (/\.(h|hh|hpp|hxx|pch)$/.test(file)) {
|
|
8967
|
+
visit3(
|
|
8968
|
+
file,
|
|
8969
|
+
relative3.split("/").some((segment) => BUNDLE_DIR.test(segment)) ? "resource" : "header"
|
|
8970
|
+
);
|
|
8971
|
+
} else if (/\.(m|mm|c|cc|cpp|cxx|metal)$/.test(file)) {
|
|
8972
|
+
visit3(file, "source");
|
|
8940
8973
|
} else visit3(file, "resource");
|
|
8941
8974
|
}
|
|
8942
8975
|
}
|
|
@@ -9445,7 +9478,7 @@ var import_node_path6 = __toESM(require("node:path"), 1);
|
|
|
9445
9478
|
init_is_record();
|
|
9446
9479
|
|
|
9447
9480
|
// src/plist.ts
|
|
9448
|
-
var import_plist = __toESM(
|
|
9481
|
+
var import_plist = __toESM(require("plist"), 1);
|
|
9449
9482
|
function parsePlistSource(source) {
|
|
9450
9483
|
return import_plist.default.parse(source);
|
|
9451
9484
|
}
|
|
@@ -9455,7 +9488,7 @@ var import_node_child_process2 = require("node:child_process");
|
|
|
9455
9488
|
var import_node_crypto2 = require("node:crypto");
|
|
9456
9489
|
var import_node_fs5 = __toESM(require("node:fs"), 1);
|
|
9457
9490
|
var import_node_path5 = __toESM(require("node:path"), 1);
|
|
9458
|
-
var import_plist2 = __toESM(
|
|
9491
|
+
var import_plist2 = __toESM(require("plist"), 1);
|
|
9459
9492
|
|
|
9460
9493
|
// src/xcode-json-project.ts
|
|
9461
9494
|
var import_node_path4 = __toESM(require("node:path"), 1);
|
|
@@ -10019,6 +10052,9 @@ function targetSettings(ref, configuration, builtins, options = {}) {
|
|
|
10019
10052
|
return applyOperator(get("PRODUCT_NAME"), "c99extidentifier");
|
|
10020
10053
|
case "EXECUTABLE_NAME":
|
|
10021
10054
|
return get("PRODUCT_NAME");
|
|
10055
|
+
// the native default of CoreBuildSystem.xcspec
|
|
10056
|
+
case "EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES":
|
|
10057
|
+
return "*.nib *.lproj *.framework *.gch *.xcode* *.xcassets *.icon (*) .DS_Store CVS .svn .git .hg *.pbproj *.pbxproj";
|
|
10022
10058
|
case "AppIdentifierPrefix":
|
|
10023
10059
|
case "TeamIdentifierPrefix": {
|
|
10024
10060
|
const team = get("DEVELOPMENT_TEAM");
|
|
@@ -10041,6 +10077,45 @@ function settingList(value) {
|
|
|
10041
10077
|
items2.push((quoted ?? plain).replace(/\\(.)/g, "$1"));
|
|
10042
10078
|
return items2;
|
|
10043
10079
|
}
|
|
10080
|
+
function expandSearchPath(directory, rules) {
|
|
10081
|
+
if (import_node_path5.default.basename(directory) !== "**") return [directory];
|
|
10082
|
+
const expanded = [];
|
|
10083
|
+
const seen = /* @__PURE__ */ new Set();
|
|
10084
|
+
const queue = [import_node_path5.default.dirname(directory)];
|
|
10085
|
+
for (let at = 0; at < queue.length; at++) {
|
|
10086
|
+
const current = queue[at];
|
|
10087
|
+
let real;
|
|
10088
|
+
try {
|
|
10089
|
+
real = import_node_fs5.default.realpathSync(current);
|
|
10090
|
+
} catch {
|
|
10091
|
+
continue;
|
|
10092
|
+
}
|
|
10093
|
+
if (!import_node_fs5.default.statSync(real).isDirectory() || seen.has(real)) continue;
|
|
10094
|
+
seen.add(real);
|
|
10095
|
+
expanded.push(current);
|
|
10096
|
+
for (const entry of import_node_fs5.default.readdirSync(real, { withFileTypes: true }).sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0)) {
|
|
10097
|
+
if (entry.isSymbolicLink() ? !rules.followLinks : !entry.isDirectory()) continue;
|
|
10098
|
+
if (rules.excluded.some((pattern) => pattern.test(entry.name)) && !rules.included.some((pattern) => pattern.test(entry.name)))
|
|
10099
|
+
continue;
|
|
10100
|
+
queue.push(import_node_path5.default.join(current, entry.name));
|
|
10101
|
+
}
|
|
10102
|
+
}
|
|
10103
|
+
return expanded;
|
|
10104
|
+
}
|
|
10105
|
+
function recursiveSearchRules(settings) {
|
|
10106
|
+
const glob = (pattern) => new RegExp(
|
|
10107
|
+
`^${pattern.replace(/[.+^${}()|[\]\\]/g, "\\$&").replaceAll("*", ".*").replaceAll("?", ".")}$`
|
|
10108
|
+
);
|
|
10109
|
+
return {
|
|
10110
|
+
excluded: settingList(settings("EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES")).map(
|
|
10111
|
+
glob
|
|
10112
|
+
),
|
|
10113
|
+
included: settingList(settings("INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES")).map(
|
|
10114
|
+
glob
|
|
10115
|
+
),
|
|
10116
|
+
followLinks: settings("RECURSIVE_SEARCH_PATHS_FOLLOW_SYMLINKS") !== "NO"
|
|
10117
|
+
};
|
|
10118
|
+
}
|
|
10044
10119
|
function compilationConditions(settings) {
|
|
10045
10120
|
const flags = settingList(settings("OTHER_SWIFT_FLAGS"));
|
|
10046
10121
|
const defined = flags.flatMap(
|
|
@@ -10069,6 +10144,7 @@ function targetMembers(ref, settings, options, settingKeys, projectInputs) {
|
|
|
10069
10144
|
const targetName = str(target.name) ?? targetId;
|
|
10070
10145
|
const sources = /* @__PURE__ */ new Set();
|
|
10071
10146
|
const allSources = /* @__PURE__ */ new Set();
|
|
10147
|
+
const headers = /* @__PURE__ */ new Set();
|
|
10072
10148
|
const resources = /* @__PURE__ */ new Set();
|
|
10073
10149
|
const scriptForOutput = /* @__PURE__ */ new Map();
|
|
10074
10150
|
for (const phaseId of list(target.buildPhases)) {
|
|
@@ -10197,6 +10273,10 @@ ${output}`
|
|
|
10197
10273
|
(file) => isDirectory(file) ? walkFiles(file) : import_node_fs5.default.existsSync(file) ? [file] : [],
|
|
10198
10274
|
import_node_path5.default.join,
|
|
10199
10275
|
(file, kind) => {
|
|
10276
|
+
if (kind === "header") {
|
|
10277
|
+
headers.add(file);
|
|
10278
|
+
return;
|
|
10279
|
+
}
|
|
10200
10280
|
if (kind === "resource") {
|
|
10201
10281
|
resources.add(file);
|
|
10202
10282
|
return;
|
|
@@ -10226,7 +10306,8 @@ ${output}`
|
|
|
10226
10306
|
return {
|
|
10227
10307
|
sources: [...sources].sort(),
|
|
10228
10308
|
resources: [...resources].sort(),
|
|
10229
|
-
allSources: [...allSources].sort()
|
|
10309
|
+
allSources: [...allSources].sort(),
|
|
10310
|
+
headers: [...headers].sort()
|
|
10230
10311
|
};
|
|
10231
10312
|
}
|
|
10232
10313
|
function commonAncestor(dirs) {
|
|
@@ -10402,7 +10483,8 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
|
|
|
10402
10483
|
);
|
|
10403
10484
|
for (const file of read) xcconfigs.add(file);
|
|
10404
10485
|
const swiftVersion = Number.parseFloat(settings2("SWIFT_VERSION") || "5");
|
|
10405
|
-
const members = targetMembers(ref, settings2, options, keys, xcconfigs);
|
|
10486
|
+
const { headers, ...members } = targetMembers(ref, settings2, options, keys, xcconfigs);
|
|
10487
|
+
const searchRules = recursiveSearchRules(settings2);
|
|
10406
10488
|
const implementations = members.allSources.filter(
|
|
10407
10489
|
(file) => /\.(c|cc|cpp|cxx|m|mm)$/.test(file)
|
|
10408
10490
|
);
|
|
@@ -10436,21 +10518,36 @@ function readXcodeAppTarget(input, targetName, configurationName, options = {})
|
|
|
10436
10518
|
iosDeploymentTarget: settings2("IPHONEOS_DEPLOYMENT_TARGET") || null,
|
|
10437
10519
|
...implementations.some((file) => /\.mm?$/.test(file)) ? {
|
|
10438
10520
|
objc: {
|
|
10439
|
-
|
|
10440
|
-
const
|
|
10441
|
-
|
|
10521
|
+
publicHeaders: list(ref.target.buildPhases).flatMap((phaseId) => {
|
|
10522
|
+
const phase = ref.project.object(phaseId);
|
|
10523
|
+
if (phase?.isa !== "PBXHeadersBuildPhase") return [];
|
|
10524
|
+
return list(phase.files).flatMap((id) => {
|
|
10525
|
+
const file = ref.project.object(id);
|
|
10526
|
+
const attributes = isDict(file?.settings) ? list(file.settings.ATTRIBUTES) : [];
|
|
10527
|
+
const resolved = ref.project.resolvePath(str(file?.fileRef) ?? "");
|
|
10528
|
+
return attributes.includes("Public") && resolved ? [resolved] : [];
|
|
10529
|
+
});
|
|
10442
10530
|
}),
|
|
10531
|
+
headers: [
|
|
10532
|
+
.../* @__PURE__ */ new Set([
|
|
10533
|
+
...headers,
|
|
10534
|
+
...Object.keys(ref.project.objects).flatMap((id) => {
|
|
10535
|
+
const file = ref.project.resolvePath(id);
|
|
10536
|
+
return file && /\.(h|hh|hpp|hxx|pch)$/.test(file) && import_node_fs5.default.existsSync(file) ? [file] : [];
|
|
10537
|
+
})
|
|
10538
|
+
])
|
|
10539
|
+
],
|
|
10443
10540
|
prefixHeader: settings2("GCC_PREFIX_HEADER") ? absolute(settings2("GCC_PREFIX_HEADER")) : null,
|
|
10444
10541
|
bridgingHeader: settings2("SWIFT_OBJC_BRIDGING_HEADER") ? absolute(settings2("SWIFT_OBJC_BRIDGING_HEADER")) : null,
|
|
10445
10542
|
headerSearchPaths: [
|
|
10446
10543
|
...settingList(settings2("HEADER_SEARCH_PATHS")),
|
|
10447
10544
|
...settingList(settings2("USER_HEADER_SEARCH_PATHS"))
|
|
10448
|
-
].
|
|
10449
|
-
frameworkSearchPaths: settingList(
|
|
10450
|
-
|
|
10451
|
-
),
|
|
10545
|
+
].flatMap((raw) => expandSearchPath(absolute(raw), searchRules)),
|
|
10546
|
+
frameworkSearchPaths: settingList(
|
|
10547
|
+
settings2("FRAMEWORK_SEARCH_PATHS")
|
|
10548
|
+
).flatMap((raw) => expandSearchPath(absolute(raw), searchRules)),
|
|
10452
10549
|
flags: [
|
|
10453
|
-
|
|
10550
|
+
settings2("CLANG_ENABLE_OBJC_ARC") === "YES" ? "-fobjc-arc" : "-fno-objc-arc",
|
|
10454
10551
|
...settings2("CLANG_ENABLE_OBJC_WEAK") === "YES" ? ["-fobjc-weak"] : [],
|
|
10455
10552
|
...settings2("CLANG_ENABLE_MODULES") === "YES" ? ["-fmodules"] : [],
|
|
10456
10553
|
...settings2("GCC_C_LANGUAGE_STANDARD") ? [`-std=${settings2("GCC_C_LANGUAGE_STANDARD")}`] : [],
|
|
@@ -10821,42 +10918,8 @@ function readAndroidNativeAppIdentity(projectRoot, androidMergedManifest) {
|
|
|
10821
10918
|
);
|
|
10822
10919
|
}
|
|
10823
10920
|
function readIosNativeAppIdentity(projectRoot, parseInfoPlist, iosTarget) {
|
|
10824
|
-
const
|
|
10825
|
-
if (!
|
|
10826
|
-
const projects = import_node_fs6.default.readdirSync(iosRoot, { withFileTypes: true }).filter((entry) => entry.isDirectory() && entry.name.endsWith(".xcodeproj"));
|
|
10827
|
-
if (projects.length === 0) return null;
|
|
10828
|
-
if (projects.length > 1 && !iosTarget) {
|
|
10829
|
-
throw new NativeAppTargetSelectionError(
|
|
10830
|
-
`native app identity requires a selected Xcode project; set withPeach's iosTarget to an app target in one of: ${projects.map((entry) => entry.name).join(", ")}`
|
|
10831
|
-
);
|
|
10832
|
-
}
|
|
10833
|
-
let project = projects[0];
|
|
10834
|
-
if (iosTarget && projects.length > 1) {
|
|
10835
|
-
const matches = projects.filter(
|
|
10836
|
-
(entry) => listXcodeAppTargets(import_node_path6.default.join(iosRoot, entry.name), {
|
|
10837
|
-
requireSources: false
|
|
10838
|
-
}).includes(iosTarget)
|
|
10839
|
-
);
|
|
10840
|
-
if (matches.length === 0) {
|
|
10841
|
-
throw new Error(`native app identity has no application target ${iosTarget}`);
|
|
10842
|
-
}
|
|
10843
|
-
if (matches.length > 1) {
|
|
10844
|
-
throw new Error(
|
|
10845
|
-
`native app identity target ${iosTarget} is ambiguous across ${matches.map((entry) => entry.name).join(", ")}`
|
|
10846
|
-
);
|
|
10847
|
-
}
|
|
10848
|
-
project = matches[0];
|
|
10849
|
-
}
|
|
10850
|
-
const xcodeproj = import_node_path6.default.join(iosRoot, project.name);
|
|
10851
|
-
const appTargets = listXcodeAppTargets(xcodeproj, { requireSources: false });
|
|
10852
|
-
if (!iosTarget && appTargets.length > 1) {
|
|
10853
|
-
throw new NativeAppTargetSelectionError(
|
|
10854
|
-
`native app identity requires a selected app target; set withPeach's iosTarget to one of: ${appTargets.join(", ")}`
|
|
10855
|
-
);
|
|
10856
|
-
}
|
|
10857
|
-
const app = readXcodeAppTarget(xcodeproj, iosTarget ?? appTargets[0], "Release", {
|
|
10858
|
-
requireSources: false
|
|
10859
|
-
});
|
|
10921
|
+
const app = readIosAppTarget(projectRoot, iosTarget);
|
|
10922
|
+
if (!app) return null;
|
|
10860
10923
|
const identity = readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist);
|
|
10861
10924
|
const projectManifestPath = import_node_path6.default.join(projectRoot, "package.json");
|
|
10862
10925
|
const projectRequire = (0, import_node_module2.createRequire)(projectManifestPath);
|
|
@@ -10909,6 +10972,44 @@ function readIosNativeAppIdentity(projectRoot, parseInfoPlist, iosTarget) {
|
|
|
10909
10972
|
}
|
|
10910
10973
|
return { ...identity, reanimatedStaticFeatureFlags: flags };
|
|
10911
10974
|
}
|
|
10975
|
+
function readIosAppTarget(projectRoot, iosTarget) {
|
|
10976
|
+
const iosRoot = import_node_path6.default.join(projectRoot, "ios");
|
|
10977
|
+
if (!import_node_fs6.default.existsSync(iosRoot)) return null;
|
|
10978
|
+
const projects = import_node_fs6.default.readdirSync(iosRoot, { withFileTypes: true }).filter((entry) => entry.isDirectory() && entry.name.endsWith(".xcodeproj"));
|
|
10979
|
+
if (projects.length === 0) return null;
|
|
10980
|
+
if (projects.length > 1 && !iosTarget) {
|
|
10981
|
+
throw new NativeAppTargetSelectionError(
|
|
10982
|
+
`native app identity requires a selected Xcode project; set withPeach's iosTarget to an app target in one of: ${projects.map((entry) => entry.name).join(", ")}`
|
|
10983
|
+
);
|
|
10984
|
+
}
|
|
10985
|
+
let project = projects[0];
|
|
10986
|
+
if (iosTarget && projects.length > 1) {
|
|
10987
|
+
const matches = projects.filter(
|
|
10988
|
+
(entry) => listXcodeAppTargets(import_node_path6.default.join(iosRoot, entry.name), {
|
|
10989
|
+
requireSources: false
|
|
10990
|
+
}).includes(iosTarget)
|
|
10991
|
+
);
|
|
10992
|
+
if (matches.length === 0) {
|
|
10993
|
+
throw new Error(`native app identity has no application target ${iosTarget}`);
|
|
10994
|
+
}
|
|
10995
|
+
if (matches.length > 1) {
|
|
10996
|
+
throw new Error(
|
|
10997
|
+
`native app identity target ${iosTarget} is ambiguous across ${matches.map((entry) => entry.name).join(", ")}`
|
|
10998
|
+
);
|
|
10999
|
+
}
|
|
11000
|
+
project = matches[0];
|
|
11001
|
+
}
|
|
11002
|
+
const xcodeproj = import_node_path6.default.join(iosRoot, project.name);
|
|
11003
|
+
const appTargets = listXcodeAppTargets(xcodeproj, { requireSources: false });
|
|
11004
|
+
if (!iosTarget && appTargets.length > 1) {
|
|
11005
|
+
throw new NativeAppTargetSelectionError(
|
|
11006
|
+
`native app identity requires a selected app target; set withPeach's iosTarget to one of: ${appTargets.join(", ")}`
|
|
11007
|
+
);
|
|
11008
|
+
}
|
|
11009
|
+
return readXcodeAppTarget(xcodeproj, iosTarget ?? appTargets[0], "Release", {
|
|
11010
|
+
requireSources: false
|
|
11011
|
+
});
|
|
11012
|
+
}
|
|
10912
11013
|
|
|
10913
11014
|
// src/native-firebase-config.ts
|
|
10914
11015
|
var import_node_child_process3 = require("node:child_process");
|
|
@@ -11366,229 +11467,33 @@ function insertPackageVersionsFooter(source, versions) {
|
|
|
11366
11467
|
return insertBundleGlobalFooter(source, FOOTER2, readPackageVersions(versions));
|
|
11367
11468
|
}
|
|
11368
11469
|
|
|
11369
|
-
// src/
|
|
11370
|
-
|
|
11371
|
-
var import_path2 = __toESM(require("path"), 1);
|
|
11372
|
-
var import_url = require("url");
|
|
11373
|
-
|
|
11374
|
-
// ../contrast-runtime-delivery/src/index.ts
|
|
11375
|
-
init_process_group();
|
|
11376
|
-
|
|
11377
|
-
// ../contrast-runtime-delivery/src/product.ts
|
|
11378
|
-
init_version();
|
|
11379
|
-
|
|
11380
|
-
// src/home-paths.ts
|
|
11381
|
-
var import_node_fs8 = __toESM(require("node:fs"), 1);
|
|
11382
|
-
var import_node_os2 = require("node:os");
|
|
11383
|
-
var import_node_path8 = __toESM(require("node:path"), 1);
|
|
11384
|
-
var PEACH_HOME_ENV = "PEACH_HOME";
|
|
11385
|
-
var ACTIVE_RUNTIME_FILE = "active";
|
|
11386
|
-
function rnxHomeDir() {
|
|
11387
|
-
const override = process.env[PEACH_HOME_ENV];
|
|
11388
|
-
if (override && override.length > 0) return import_node_path8.default.resolve(override);
|
|
11389
|
-
return import_node_path8.default.join((0, import_node_os2.homedir)(), ".peach");
|
|
11390
|
-
}
|
|
11391
|
-
function runtimesDir() {
|
|
11392
|
-
return import_node_path8.default.join(rnxHomeDir(), "runtimes");
|
|
11393
|
-
}
|
|
11394
|
-
function runtimeDir(version) {
|
|
11395
|
-
return import_node_path8.default.join(runtimesDir(), version);
|
|
11396
|
-
}
|
|
11397
|
-
function activeRuntimeFile() {
|
|
11398
|
-
return import_node_path8.default.join(runtimesDir(), ACTIVE_RUNTIME_FILE);
|
|
11399
|
-
}
|
|
11400
|
-
function readActiveRuntime() {
|
|
11401
|
-
try {
|
|
11402
|
-
const value = import_node_fs8.default.readFileSync(activeRuntimeFile(), "utf8").trim();
|
|
11403
|
-
return value.length > 0 ? value : null;
|
|
11404
|
-
} catch {
|
|
11405
|
-
return null;
|
|
11406
|
-
}
|
|
11407
|
-
}
|
|
11408
|
-
var DAEMON_LOCKFILE_MAX_BYTES = 16 * 1024;
|
|
11470
|
+
// src/metro-plugin.ts
|
|
11471
|
+
init_runtime_assets();
|
|
11409
11472
|
|
|
11410
|
-
// src/
|
|
11411
|
-
var
|
|
11412
|
-
|
|
11413
|
-
|
|
11414
|
-
|
|
11415
|
-
|
|
11416
|
-
|
|
11417
|
-
|
|
11418
|
-
|
|
11419
|
-
|
|
11420
|
-
|
|
11421
|
-
|
|
11422
|
-
|
|
11423
|
-
|
|
11424
|
-
|
|
11425
|
-
|
|
11426
|
-
|
|
11427
|
-
|
|
11428
|
-
|
|
11429
|
-
|
|
11430
|
-
|
|
11431
|
-
if (import_fs2.default.existsSync(import_path2.default.join(devBuild, "index.html")) && import_fs2.default.existsSync(import_path2.default.join(devBuild, "engine/index.html")) && import_fs2.default.existsSync(import_path2.default.join(devBuild, "engine-tenant/worker.js")) && import_fs2.default.existsSync(import_path2.default.join(devBuild, "engine-tenant/worker.prod.js"))) {
|
|
11432
|
-
return devBuild;
|
|
11433
|
-
}
|
|
11434
|
-
return null;
|
|
11435
|
-
}
|
|
11436
|
-
var MIME_TYPES = {
|
|
11437
|
-
".js": "application/javascript",
|
|
11438
|
-
".mjs": "application/javascript",
|
|
11439
|
-
".css": "text/css",
|
|
11440
|
-
".html": "text/html",
|
|
11441
|
-
".wasm": "application/wasm",
|
|
11442
|
-
".json": "application/json",
|
|
11443
|
-
".jpg": "image/jpeg",
|
|
11444
|
-
".jpeg": "image/jpeg",
|
|
11445
|
-
".png": "image/png",
|
|
11446
|
-
".svg": "image/svg+xml",
|
|
11447
|
-
".webp": "image/webp",
|
|
11448
|
-
".glb": "model/gltf-binary",
|
|
11449
|
-
".ttf": "font/ttf",
|
|
11450
|
-
".otf": "font/otf",
|
|
11451
|
-
".woff": "font/woff",
|
|
11452
|
-
".woff2": "font/woff2",
|
|
11453
|
-
".mp3": "audio/mpeg",
|
|
11454
|
-
".wav": "audio/wav",
|
|
11455
|
-
".mp4": "video/mp4",
|
|
11456
|
-
".m4v": "video/mp4",
|
|
11457
|
-
".mov": "video/quicktime",
|
|
11458
|
-
".webm": "video/webm"
|
|
11459
|
-
};
|
|
11460
|
-
var ROOT_RUNTIME_PATHS = [
|
|
11461
|
-
"/assets/",
|
|
11462
|
-
"/engine/",
|
|
11463
|
-
"/engine-tenant/",
|
|
11464
|
-
"/photos/",
|
|
11465
|
-
"/three-mode/",
|
|
11466
|
-
"/fonts/",
|
|
11467
|
-
"/icons/",
|
|
11468
|
-
"/sounds/",
|
|
11469
|
-
"/spike/",
|
|
11470
|
-
"/test-wallpaper.jpg",
|
|
11471
|
-
"/preview-sw.js",
|
|
11472
|
-
"/peach.svg",
|
|
11473
|
-
"/bedrock-sqlite.wasm",
|
|
11474
|
-
"/bedrock-sqlite.js",
|
|
11475
|
-
"/sootsim/"
|
|
11476
|
-
];
|
|
11477
|
-
function resolveActiveRuntimeRoot() {
|
|
11478
|
-
const devRoot = resolveDevCheckoutRuntimeRoot();
|
|
11479
|
-
if (devRoot) return devRoot;
|
|
11480
|
-
const active = readActiveRuntime();
|
|
11481
|
-
if (!active) return null;
|
|
11482
|
-
const dir = runtimeDir(active);
|
|
11483
|
-
if (!import_fs2.default.existsSync(import_path2.default.join(dir, "index.html"))) return null;
|
|
11484
|
-
return dir;
|
|
11485
|
-
}
|
|
11486
|
-
var RUNTIME_VERSION_HOSTNAME_SUFFIX = ".runtime.localhost";
|
|
11487
|
-
function isRuntimeVersionHostname(hostname) {
|
|
11488
|
-
return hostname.toLowerCase().endsWith(RUNTIME_VERSION_HOSTNAME_SUFFIX);
|
|
11489
|
-
}
|
|
11490
|
-
function runtimeVersionFromHostname(hostname) {
|
|
11491
|
-
if (!isRuntimeVersionHostname(hostname)) return null;
|
|
11492
|
-
const labels = hostname.slice(0, -RUNTIME_VERSION_HOSTNAME_SUFFIX.length).split(".");
|
|
11493
|
-
if (labels.length === 0 || labels.some((label) => !/^[0-9a-f]{1,60}$/i.test(label))) {
|
|
11494
|
-
return null;
|
|
11495
|
-
}
|
|
11496
|
-
const encoded = labels.join("");
|
|
11497
|
-
if (encoded.length % 2 !== 0) return null;
|
|
11498
|
-
try {
|
|
11499
|
-
const version = Buffer.from(encoded, "hex").toString("utf8");
|
|
11500
|
-
return isValidRuntimeVersion(version) ? version : null;
|
|
11501
|
-
} catch {
|
|
11502
|
-
return null;
|
|
11503
|
-
}
|
|
11504
|
-
}
|
|
11505
|
-
function resolveInstalledRuntimeRoot(version) {
|
|
11506
|
-
const dir = runtimeDir(version);
|
|
11507
|
-
if (!import_fs2.default.existsSync(import_path2.default.join(dir, "index.html"))) return null;
|
|
11508
|
-
return dir;
|
|
11509
|
-
}
|
|
11510
|
-
function resolveRuntimeRootForHostname(hostname) {
|
|
11511
|
-
if (!isRuntimeVersionHostname(hostname)) return resolveActiveRuntimeRoot();
|
|
11512
|
-
const version = runtimeVersionFromHostname(hostname);
|
|
11513
|
-
return version ? resolveInstalledRuntimeRoot(version) : null;
|
|
11514
|
-
}
|
|
11515
|
-
function resolveRuntimeRootForRequestHost(host) {
|
|
11516
|
-
if (!host) return resolveActiveRuntimeRoot();
|
|
11517
|
-
try {
|
|
11518
|
-
return resolveRuntimeRootForHostname(new URL(`http://${host}`).hostname);
|
|
11519
|
-
} catch {
|
|
11520
|
-
return null;
|
|
11521
|
-
}
|
|
11522
|
-
}
|
|
11523
|
-
function isRootRuntimeAssetPath(pathname) {
|
|
11524
|
-
return ROOT_RUNTIME_PATHS.some((p) => pathname === p || pathname.startsWith(p));
|
|
11525
|
-
}
|
|
11526
|
-
function resolveRuntimeFilePath(runtimeRoot, pathname) {
|
|
11527
|
-
if (!pathname.startsWith("/")) return null;
|
|
11528
|
-
if (pathname.includes("\0") || pathname.includes("\\")) return null;
|
|
11529
|
-
for (const segment of pathname.split("/")) {
|
|
11530
|
-
if (segment === "..") return null;
|
|
11531
|
-
}
|
|
11532
|
-
const normalized = pathname.startsWith("/sootsim/") ? pathname.slice("/sootsim".length) : pathname;
|
|
11533
|
-
const fullPath = import_path2.default.resolve(runtimeRoot, normalized.replace(/^\/+/, ""));
|
|
11534
|
-
const rootWithSep = runtimeRoot.endsWith(import_path2.default.sep) ? runtimeRoot : runtimeRoot + import_path2.default.sep;
|
|
11535
|
-
if (!fullPath.startsWith(rootWithSep) && fullPath !== runtimeRoot) return null;
|
|
11536
|
-
if (!import_fs2.default.existsSync(fullPath) || !import_fs2.default.statSync(fullPath).isFile()) return null;
|
|
11537
|
-
return fullPath;
|
|
11538
|
-
}
|
|
11539
|
-
function serveRuntimeFile(req, res, fullPath) {
|
|
11540
|
-
const ext = import_path2.default.extname(fullPath);
|
|
11541
|
-
const stat = import_fs2.default.statSync(fullPath);
|
|
11542
|
-
const lastModified = stat.mtime.toUTCString();
|
|
11543
|
-
res.setHeader("content-type", MIME_TYPES[ext] || "application/octet-stream");
|
|
11544
|
-
if (/^canvaskit-graphite-pipelines-[0-9a-f]{8}\.bin$/.test(import_path2.default.basename(fullPath))) {
|
|
11545
|
-
res.setHeader("cache-control", "public, max-age=31536000, immutable");
|
|
11546
|
-
import_fs2.default.createReadStream(fullPath).pipe(res);
|
|
11547
|
-
return;
|
|
11548
|
-
}
|
|
11549
|
-
res.setHeader("cache-control", "no-cache");
|
|
11550
|
-
res.setHeader("last-modified", lastModified);
|
|
11551
|
-
if (req?.headers?.["if-modified-since"] === lastModified) {
|
|
11552
|
-
res.statusCode = 304;
|
|
11553
|
-
res.end();
|
|
11554
|
-
return;
|
|
11555
|
-
}
|
|
11556
|
-
sendFileWithRanges(req, res, fullPath, stat.size, {});
|
|
11557
|
-
}
|
|
11558
|
-
function sendFileWithRanges(req, res, filePath, total, headers) {
|
|
11559
|
-
const head = (req?.method || "GET").toUpperCase() === "HEAD";
|
|
11560
|
-
const range = /^bytes=(\d*)-(\d*)$/.exec(req?.headers?.range || "");
|
|
11561
|
-
const invalid = range && range[1] && range[2] && Number(range[2]) < Number(range[1]);
|
|
11562
|
-
if (range && (range[1] || range[2]) && !invalid) {
|
|
11563
|
-
const [, startRaw, endRaw] = range;
|
|
11564
|
-
const start = startRaw ? Number(startRaw) : Math.max(0, total - Number(endRaw));
|
|
11565
|
-
const end = startRaw && endRaw ? Math.min(Number(endRaw), total - 1) : total - 1;
|
|
11566
|
-
if (start > end || start >= total) {
|
|
11567
|
-
res.writeHead(416, { ...headers, "Content-Range": `bytes */${total}` });
|
|
11568
|
-
res.end();
|
|
11569
|
-
return;
|
|
11570
|
-
}
|
|
11571
|
-
res.writeHead(206, {
|
|
11572
|
-
...headers,
|
|
11573
|
-
"Content-Range": `bytes ${start}-${end}/${total}`,
|
|
11574
|
-
"Accept-Ranges": "bytes",
|
|
11575
|
-
"Content-Length": String(end - start + 1)
|
|
11576
|
-
});
|
|
11577
|
-
if (head) res.end();
|
|
11578
|
-
else streamFile(res, import_fs2.default.createReadStream(filePath, { start, end }));
|
|
11579
|
-
return;
|
|
11580
|
-
}
|
|
11581
|
-
res.writeHead(200, {
|
|
11582
|
-
...headers,
|
|
11583
|
-
"Accept-Ranges": "bytes",
|
|
11584
|
-
"Content-Length": String(total)
|
|
11585
|
-
});
|
|
11586
|
-
if (head || total === 0) res.end();
|
|
11587
|
-
else streamFile(res, import_fs2.default.createReadStream(filePath, { start: 0, end: total - 1 }));
|
|
11473
|
+
// src/runtimePlatformContract.ts
|
|
11474
|
+
var IOS_ADAPTER = Object.freeze({
|
|
11475
|
+
id: "ios",
|
|
11476
|
+
displayName: "iOS",
|
|
11477
|
+
isIOS: true,
|
|
11478
|
+
isAndroid: false,
|
|
11479
|
+
select: (registry) => registry.ios
|
|
11480
|
+
});
|
|
11481
|
+
var ANDROID_ADAPTER = Object.freeze({
|
|
11482
|
+
id: "android",
|
|
11483
|
+
displayName: "Android",
|
|
11484
|
+
isIOS: false,
|
|
11485
|
+
isAndroid: true,
|
|
11486
|
+
select: (registry) => registry.android
|
|
11487
|
+
});
|
|
11488
|
+
var RUNTIME_PLATFORM_ADAPTERS = Object.freeze({
|
|
11489
|
+
ios: IOS_ADAPTER,
|
|
11490
|
+
android: ANDROID_ADAPTER
|
|
11491
|
+
});
|
|
11492
|
+
function isRuntimePlatform(value) {
|
|
11493
|
+
return value === "ios" || value === "android";
|
|
11588
11494
|
}
|
|
11589
|
-
function
|
|
11590
|
-
|
|
11591
|
-
stream.pipe(res);
|
|
11495
|
+
function getRuntimePlatformAdapter(platform) {
|
|
11496
|
+
return RUNTIME_PLATFORM_ADAPTERS[platform];
|
|
11592
11497
|
}
|
|
11593
11498
|
|
|
11594
11499
|
// src/metro-plugin.ts
|