peachsim 0.1.939 → 0.1.1399
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -22
- package/cli/app-catalog.ts +29 -14
- package/cli/app-fonts.ts +5 -3
- package/cli/bridge-flow-runner.ts +40 -29
- package/cli/cloud-client.ts +57 -21
- package/cli/cloud-test-tunnel.ts +12 -18
- package/cli/commands/agent.ts +1 -1
- package/cli/commands/app-fonts.ts +3 -3
- package/cli/commands/assert.ts +8 -8
- package/cli/commands/auth.ts +8 -3
- package/cli/commands/box/bundle-plane.ts +13 -1
- package/cli/commands/box.ts +16 -5
- package/cli/commands/compat.ts +1 -1
- package/cli/commands/config.ts +2 -2
- package/cli/commands/control.ts +125 -71
- package/cli/commands/cpu-profile.ts +45 -1
- package/cli/commands/daemon.ts +131 -33
- package/cli/commands/debug.ts +24 -17
- package/cli/commands/desktop.ts +7 -1
- package/cli/commands/detect.ts +101 -0
- package/cli/commands/detox.ts +6 -6
- package/cli/commands/device.ts +12 -12
- package/cli/commands/electron.ts +32 -14
- package/cli/commands/flow.ts +49 -41
- package/cli/commands/guest-host.ts +39 -1
- package/cli/commands/inspect/core.ts +14 -8
- package/cli/commands/inspect/list.ts +1 -1
- package/cli/commands/inspect/settle.ts +5 -3
- package/cli/commands/inspect/settling.ts +229 -44
- package/cli/commands/inspect/wait-idle.ts +3 -2
- package/cli/commands/inspect.ts +105 -93
- package/cli/commands/install-cli.ts +36 -15
- package/cli/commands/install-desktop.ts +68 -195
- package/cli/commands/kotlin.ts +6 -5
- package/cli/commands/login.ts +5 -5
- package/cli/commands/maestro-compare.ts +554 -0
- package/cli/commands/maestro-generate.ts +6 -3
- package/cli/commands/maestro.ts +22 -0
- package/cli/commands/mode.ts +2 -2
- package/cli/commands/no-bridge-hint.ts +6 -2
- package/cli/commands/platform.ts +35 -6
- package/cli/commands/preview.ts +6 -0
- package/cli/commands/project-report.ts +10 -12
- package/cli/commands/record.ts +37 -37
- package/cli/commands/runtime.ts +9 -9
- package/cli/commands/screenshot-layers.ts +4 -4
- package/cli/commands/screenshot-mode.ts +2 -2
- package/cli/commands/screenshot.ts +8 -8
- package/cli/commands/screenshots-capture.ts +2 -2
- package/cli/commands/serve.ts +9 -12
- package/cli/commands/setup.ts +29 -14
- package/cli/commands/shell-boolean-mode.ts +2 -2
- package/cli/commands/show-touches-mode.ts +2 -2
- package/cli/commands/skills.ts +11 -11
- package/cli/commands/swift.ts +29 -11
- package/cli/commands/telemetry.ts +2 -2
- package/cli/commands/test.ts +5 -0
- package/cli/commands/three-mode.ts +3 -3
- package/cli/commands/timeline.ts +4 -4
- package/cli/commands/upgrade.ts +2 -2
- package/cli/commands/upload.ts +15 -15
- package/cli/commands/what-happened.ts +2 -2
- package/cli/current-sim.ts +6 -3
- package/cli/desktop-companion.ts +55 -149
- package/cli/dev-build-freshness.ts +2 -2
- package/cli/drivers/desktop.ts +17 -9
- package/cli/drivers/electron.ts +1 -2
- package/cli/drivers/playwright-sim-host.ts +11 -2
- package/cli/drivers/playwright.ts +35 -2
- package/cli/drivers/types.ts +8 -0
- package/cli/maestro-compare.ts +670 -0
- package/cli/outbound-endpoints.ts +46 -8
- package/cli/recording-access.ts +6 -6
- package/cli/run-registry.ts +1 -1
- package/cli/runtime-compat.ts +5 -1
- package/cli/send-to-box.ts +3 -3
- package/cli/shell-init.ts +2 -1
- package/cli/ws-bridge.ts +9 -5
- package/detox/element-types.ts +1 -0
- package/detox/gestures.ts +3 -3
- package/detox/index.ts +67 -38
- package/detox/navigation-lifecycle.ts +9 -6
- package/detox/proof-frame.cjs +6 -4
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +42 -17
- package/dist-lib/bridge-contract-input.mjs +41 -16
- package/dist-lib/bridge-contract.cjs +1 -4
- package/dist-lib/bridge-contract.mjs +1 -3
- package/dist-lib/bundle-channel.cjs +2918 -550
- package/dist-lib/capture-contract.cjs +65 -24
- package/dist-lib/capture-contract.mjs +63 -24
- package/dist-lib/cloud-contract.cjs +2 -2
- package/dist-lib/cloud-contract.mjs +2 -2
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +3 -3
- package/dist-lib/cloud.mjs +3 -3
- package/dist-lib/config.cjs +15 -5
- package/dist-lib/config.mjs +154 -0
- package/dist-lib/detox/index.cjs +495 -139
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/expo-swift-bundle.cjs +1168 -238
- package/dist-lib/expo-swift-metadata.cjs +34 -23
- package/dist-lib/expo-swift-metadata.mjs +32 -23
- package/dist-lib/home-paths.cjs +2 -2
- package/dist-lib/host/bridge-host.cjs +2938 -654
- package/dist-lib/host/fetch-proxy-handler.cjs +14 -1
- package/dist-lib/host/fetch-proxy-overrides.cjs +7 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +5 -1
- package/dist-lib/host/replacement-module-handler.cjs +2 -2
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +999 -353
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/kotlin-host.cjs +332 -19
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +7 -7
- package/dist-lib/metro-production-bundle.mjs +5 -5
- package/dist-lib/metro.cjs +688 -250
- package/dist-lib/native-app-identity-project.cjs +2647 -0
- package/dist-lib/native-app-identity-project.mjs +1257 -0
- package/dist-lib/native-app-identity.cjs +325 -25
- package/dist-lib/native-app-identity.mjs +323 -25
- package/dist-lib/native-firebase-metadata.cjs +1 -1
- package/dist-lib/native-firebase-metadata.mjs +1 -1
- package/dist-lib/plist.cjs +1 -1
- package/dist-lib/plist.mjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/react-native-host-modules.cjs +5 -1
- package/dist-lib/react-native-host-modules.mjs +5 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +57 -32
- package/dist-lib/sdk.cjs +231 -51
- package/dist-lib/sdk.mjs +231 -51
- package/dist-lib/skills.cjs +4107 -1374
- package/dist-lib/swift-compile.cjs +290 -30
- package/dist-lib/swift-compile.mjs +290 -30
- package/dist-lib/swift-package.cjs +143 -12
- package/dist-lib/swift-package.mjs +137 -11
- package/dist-lib/swift-submit.cjs +47 -5
- package/dist-lib/swift-submit.mjs +42 -5
- package/dist-lib/swift-toolchain.cjs +7 -2
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +1392 -458
- package/dist-lib/vite.cjs +13 -17
- package/dist-lib/worklet-executable.cjs +248 -33
- package/dist-lib/worklet-executable.mjs +248 -33
- package/install.sh +10 -1
- package/kotlin/{AppSources → AndroidViewSources}/android/content/res/Resources.kt +9 -9
- package/kotlin/AndroidViewSources/android/graphics/Canvas.kt +20 -0
- package/kotlin/AndroidViewSources/android/view/View.kt +211 -0
- package/kotlin/AndroidViewSources/android/widget/FrameLayout.kt +61 -0
- package/kotlin/AndroidViewSources/android/widget/LinearLayout.kt +49 -0
- package/kotlin/AppSources/android/view/Window.kt +36 -0
- package/kotlin/AppSources/android/view/WindowInsets.kt +9 -0
- package/kotlin/AppSources/android/view/WindowInsetsController.kt +5 -0
- package/kotlin/AppSources/android/window/OnBackInvokedDispatcher.kt +48 -0
- package/kotlin/AppSources/androidx/activity/OnBackPressedDispatcher.kt +20 -5
- package/kotlin/AppSources/androidx/compose/foundation/layout/WindowInsets.kt +15 -0
- package/kotlin/AppSources/androidx/compose/ui/platform/ComposeView.kt +2 -1
- package/kotlin/AppSources/dev/peach/app/PeachApp.kt +42 -50
- package/kotlin/ComposeSources/PeachComposeHost.kt +200 -84
- package/kotlin/ExpoComposeSources/PeachAndroidView.kt +87 -0
- package/kotlin/ExpoComposeSources/PeachExpoViewMount.kt +24 -0
- package/kotlin/ExpoComposeSources/dev/peach/expo/PeachExpoCompose.kt +28 -0
- package/kotlin/ExpoComposeSources/expo/modules/kotlin/views/ExpoComposeView.kt +70 -0
- package/kotlin/ExpoSources/dev/peach/expo/PeachExpoRuntime.kt +513 -0
- package/kotlin/ExpoSources/dev/peach/expo/PeachExpoTypes.kt +173 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/AppContext.kt +20 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/Promise.kt +19 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/classcomponent/ClassComponentBuilder.kt +198 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/exception/CodedException.kt +126 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/functions/Functions.kt +132 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/jni/JavaScriptTypedArray.kt +81 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/modules/Module.kt +98 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/objects/ObjectDefinitionBuilder.kt +236 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/records/Record.kt +12 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/runtime/Runtime.kt +9 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/sharedobjects/SharedObject.kt +50 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/sharedobjects/SharedObjectRegistry.kt +57 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/sharedobjects/SharedRef.kt +19 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/typedarray/ConcreteTypedArrays.kt +158 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/typedarray/GenericTypedArray.kt +8 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/typedarray/TypedArray.kt +29 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/typedarray/TypedArrayIterator.kt +9 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/types/AnyType.kt +155 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/types/Either.kt +91 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/types/Enumerable.kt +6 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/viewevent/ViewEvent.kt +54 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/views/ExpoView.kt +23 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/views/ViewDefinitionBuilder.kt +71 -0
- package/kotlin/ExpoSources/expo/modules/kotlin/views/ViewProps.kt +35 -0
- package/kotlin/README.md +13 -3
- package/kotlin/Sources/android/os/Build.kt +17 -0
- package/kotlin/Sources/android/os/Handler.kt +35 -0
- package/kotlin/Sources/android/os/Looper.kt +17 -0
- package/kotlin/Sources/android/os/MessageQueue.kt +56 -0
- package/kotlin/Sources/android/os/SystemClock.kt +14 -0
- package/kotlin/Sources/android/util/Log.kt +64 -0
- package/kotlin/Sources/java/security/MessageDigest.kt +114 -0
- package/kotlin/Sources/kotlin/text/StringFormat.kt +9 -0
- package/kotlin/Sources/org/json/JSON.kt +44 -0
- package/kotlin/fixtures/counter/Counter.d.kt.ts +1 -0
- package/kotlin/fixtures/counter/Counter.kt +10 -3
- package/kotlin/fixtures/counter/CounterApp.native.tsx +1 -1
- package/kotlin/fixtures/counter/vite.config.ts +2 -2
- package/kotlin/fixtures/headless-counter/Headless.kt +7 -6
- package/kotlin/fixtures/import-animation/Animation.d.kt.ts +7 -0
- package/kotlin/fixtures/import-animation/Animation.kt +80 -0
- package/kotlin/fixtures/import-animation/ImportAnimation.native.tsx +13 -0
- package/kotlin/fixtures/import-animation/README.md +24 -0
- package/kotlin/fixtures/import-animation/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-animation/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-animation/app/routes.d.ts +18 -0
- package/kotlin/fixtures/import-animation/package.json +23 -0
- package/kotlin/fixtures/import-animation/tsconfig.json +20 -0
- package/kotlin/fixtures/import-animation/vite.config.ts +20 -0
- package/kotlin/fixtures/import-editor/Editor.d.kt.ts +7 -0
- package/kotlin/fixtures/import-editor/Editor.kt +59 -0
- package/kotlin/fixtures/import-editor/ImportEditor.native.tsx +23 -0
- package/kotlin/fixtures/import-editor/README.md +27 -0
- package/kotlin/fixtures/import-editor/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-editor/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-editor/package.json +23 -0
- package/kotlin/fixtures/import-editor/tsconfig.json +20 -0
- package/kotlin/fixtures/import-editor/vite.config.ts +20 -0
- package/kotlin/fixtures/import-effects/Effects.d.kt.ts +7 -0
- package/kotlin/fixtures/import-effects/Effects.kt +87 -0
- package/kotlin/fixtures/import-effects/ImportEffects.native.tsx +13 -0
- package/kotlin/fixtures/import-effects/README.md +19 -0
- package/kotlin/fixtures/import-effects/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-effects/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-effects/package.json +23 -0
- package/kotlin/fixtures/import-effects/tsconfig.json +20 -0
- package/kotlin/fixtures/import-effects/vite.config.ts +20 -0
- package/kotlin/fixtures/import-layout/ImportLayout.native.tsx +13 -0
- package/kotlin/fixtures/import-layout/Layout.d.kt.ts +7 -0
- package/kotlin/fixtures/import-layout/Layout.kt +72 -0
- package/kotlin/fixtures/import-layout/README.md +24 -0
- package/kotlin/fixtures/import-layout/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-layout/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-layout/package.json +23 -0
- package/kotlin/fixtures/import-layout/tsconfig.json +20 -0
- package/kotlin/fixtures/import-layout/vite.config.ts +20 -0
- package/kotlin/fixtures/import-navigation/ImportNavigation.native.tsx +18 -0
- package/kotlin/fixtures/import-navigation/Navigation.d.kt.ts +7 -0
- package/kotlin/fixtures/import-navigation/Navigation.kt +104 -0
- package/kotlin/fixtures/import-navigation/README.md +31 -0
- package/kotlin/fixtures/import-navigation/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-navigation/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-navigation/package.json +23 -0
- package/kotlin/fixtures/import-navigation/tsconfig.json +20 -0
- package/kotlin/fixtures/import-navigation/vite.config.ts +20 -0
- package/kotlin/fixtures/import-overlays/ImportOverlays.native.tsx +29 -0
- package/kotlin/fixtures/import-overlays/Overlays.d.kt.ts +7 -0
- package/kotlin/fixtures/import-overlays/Overlays.kt +93 -0
- package/kotlin/fixtures/import-overlays/README.md +34 -0
- package/kotlin/fixtures/import-overlays/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-overlays/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-overlays/package.json +23 -0
- package/kotlin/fixtures/import-overlays/tsconfig.json +20 -0
- package/kotlin/fixtures/import-overlays/vite.config.ts +20 -0
- package/kotlin/fixtures/import-scroll/ImportScroll.native.tsx +13 -0
- package/kotlin/fixtures/import-scroll/README.md +23 -0
- package/kotlin/fixtures/import-scroll/Scroll.d.kt.ts +7 -0
- package/kotlin/fixtures/import-scroll/Scroll.kt +91 -0
- package/kotlin/fixtures/import-scroll/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-scroll/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-scroll/package.json +23 -0
- package/kotlin/fixtures/import-scroll/tsconfig.json +20 -0
- package/kotlin/fixtures/import-scroll/vite.config.ts +20 -0
- package/kotlin/fixtures/import-selection/ImportSelection.native.tsx +44 -0
- package/kotlin/fixtures/import-selection/README.md +32 -0
- package/kotlin/fixtures/import-selection/Selection.d.kt.ts +8 -0
- package/kotlin/fixtures/import-selection/Selection.kt +78 -0
- package/kotlin/fixtures/import-selection/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-selection/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-selection/package.json +23 -0
- package/kotlin/fixtures/import-selection/tsconfig.json +20 -0
- package/kotlin/fixtures/import-selection/vite.config.ts +20 -0
- package/kotlin/fixtures/import-surfaces/ImportSurfaces.native.tsx +13 -0
- package/kotlin/fixtures/import-surfaces/README.md +22 -0
- package/kotlin/fixtures/import-surfaces/Surfaces.d.kt.ts +7 -0
- package/kotlin/fixtures/import-surfaces/Surfaces.kt +64 -0
- package/kotlin/fixtures/import-surfaces/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-surfaces/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-surfaces/package.json +23 -0
- package/kotlin/fixtures/import-surfaces/tsconfig.json +20 -0
- package/kotlin/fixtures/import-surfaces/vite.config.ts +20 -0
- package/kotlin/fixtures/import-values/ImportValues.native.tsx +35 -0
- package/kotlin/fixtures/import-values/README.md +23 -0
- package/kotlin/fixtures/import-values/Values.d.kt.ts +11 -0
- package/kotlin/fixtures/import-values/Values.kt +66 -0
- package/kotlin/fixtures/import-values/app/_layout.tsx +4 -0
- package/kotlin/fixtures/import-values/app/index+spa.tsx +1 -0
- package/kotlin/fixtures/import-values/package.json +23 -0
- package/kotlin/fixtures/import-values/tsconfig.json +20 -0
- package/kotlin/fixtures/import-values/vite.config.ts +20 -0
- package/kotlin/fixtures/kotlin-app-variants/BarBehavior.kt +38 -0
- package/kotlin/fixtures/kotlin-app-variants/BarVisibility.kt +36 -0
- package/kotlin/fixtures/kotlin-app-variants/Ime.kt +3 -1
- package/kotlin/fixtures/kotlin-app-variants/TransientInsets.kt +50 -0
- package/kotlin/fork/NOTICE +6 -1
- package/kotlin/fork/README.md +15 -7
- package/kotlin/fork/build.sh +2 -0
- package/kotlin/fork/compose-worker-globals.patch +186 -4
- package/kotlin/fork/fork.json +2 -2
- package/kotlin/fork/skiko-worker-clock.patch +12 -0
- package/kotlin/toolchain.json +12 -12
- package/kotlin/tools/expo-types.main.kts +115 -0
- package/package.json +17 -23
- package/scripts/dev-server-scanner.ts +92 -66
- package/skills/contrast/SKILL.md +2 -2
- package/skills/peach-debug/SKILL.md +1 -1
- package/skills/peach-perf/SKILL.md +1 -1
- package/skills/peach-setup/SKILL.md +2 -1
- package/skills/peach-test/SKILL.md +8 -0
- package/src/assetCatalogContract.ts +43 -1
- package/src/bridge-contract-input.ts +46 -19
- package/src/bridge-contract.ts +0 -1
- package/src/bundle-channel.mjs +197 -84
- package/src/bundleGlobalFooter.ts +38 -0
- package/src/capture-contract.ts +107 -33
- package/src/cloud-contract.ts +5 -1
- package/src/cloud.ts +5 -2
- package/src/config.ts +22 -3
- package/src/configured-bundle-producer.ts +1 -1
- package/src/desktop-host-delivery.ts +95 -1
- package/src/expo-kotlin-bundle.ts +29 -0
- package/src/expo-kotlin-host.ts +201 -0
- package/src/expo-swift-host.ts +96 -76
- package/src/expoKotlinContract.ts +70 -0
- package/src/expoSwiftContract.ts +4 -25
- package/src/home-paths.ts +7 -4
- package/src/host/bridge-host.ts +23 -3
- package/src/host/fetch-proxy-handler.ts +13 -0
- package/src/host/fetch-proxy-overrides.ts +11 -0
- package/src/host/replacement-module-handler.ts +5 -2
- package/src/index.ts +3 -1
- package/src/kotlin-host.ts +463 -19
- package/src/metro-plugin.ts +56 -28
- package/src/metro-production-bundle.ts +2 -2
- package/src/native-app-identity-project.ts +190 -0
- package/src/native-app-identity.ts +398 -34
- package/src/native-firebase-config.ts +69 -15
- package/src/native-seam-manifest.ts +6 -0
- package/src/one-widget-discovery.ts +2 -1
- package/src/openstep-plist.ts +107 -0
- package/src/react-native-host-modules.ts +4 -0
- package/src/runtime-assets.ts +2 -2
- package/src/sim-client.ts +2 -2
- package/src/swift-binary-modules.ts +3 -1
- package/src/swift-compile.ts +286 -38
- package/src/swift-distribution-contract.ts +4 -0
- package/src/swift-distribution.lock.json +123 -12
- package/src/swift-distribution.ts +7 -3
- package/src/swift-host.ts +298 -83
- package/src/swift-package-manifest.ts +29 -2
- package/src/swift-package.ts +180 -10
- package/src/swift-packages.ts +4 -0
- package/src/swift-standin-emit.ts +4 -1
- package/src/swift-standins.ts +274 -15
- package/src/swift-submit.ts +62 -7
- package/src/swift-toolchain.ts +6 -1
- package/src/swiftContract.ts +126 -3
- package/src/vite-plugin-one.ts +13 -16
- package/src/vite-plugin-swift.ts +4 -5
- package/src/vite-plugin.ts +360 -144
- package/src/vite.d.ts +1 -1
- package/src/worker-system-chunks.ts +221 -0
- package/src/worklet-executable.ts +348 -38
- package/src/worklets-babel.ts +1 -1
- package/src/xcode-project.ts +243 -127
- package/dist-lib/agent-identity.cjs +0 -39
- package/dist-lib/agent-sessions.cjs +0 -760
- package/dist-lib/cli-constants.cjs +0 -32
- package/dist-lib/render-mode.cjs +0 -44
- package/kotlin/AppSources/android/view/View.kt +0 -74
- package/kotlin/AppSources/android/widget/FrameLayout.kt +0 -6
- package/src/render-mode.ts +0 -15
- /package/kotlin/{AppSources → AndroidViewSources}/android/content/Context.kt +0 -0
- /package/kotlin/{AppSources → AndroidViewSources}/android/content/res/Configuration.kt +0 -0
- /package/kotlin/{AppSources → AndroidViewSources}/android/graphics/Color.kt +0 -0
- /package/kotlin/{AppSources → AndroidViewSources}/android/util/DisplayMetrics.kt +0 -0
- /package/kotlin/{AppSources → AndroidViewSources}/dev/peach/app/JavaFormat.kt +0 -0
- /package/kotlin/{AppSources → Sources}/java/lang/Runnable.kt +0 -0
|
@@ -27,6 +27,13 @@ export type SwiftManifestTargetType = (typeof TARGET_TYPES)[number]
|
|
|
27
27
|
const isTargetType = (value: string | undefined): value is SwiftManifestTargetType =>
|
|
28
28
|
TARGET_TYPES.some((type) => type === value)
|
|
29
29
|
|
|
30
|
+
/** a swift condition a target defines on ios, and the swiftpm build
|
|
31
|
+
* configuration it needs (null applies in both). */
|
|
32
|
+
export interface SwiftManifestDefine {
|
|
33
|
+
name: string
|
|
34
|
+
configuration: 'debug' | 'release' | null
|
|
35
|
+
}
|
|
36
|
+
|
|
30
37
|
export interface SwiftManifestTarget {
|
|
31
38
|
name: string
|
|
32
39
|
type: SwiftManifestTargetType
|
|
@@ -40,6 +47,7 @@ export interface SwiftManifestTarget {
|
|
|
40
47
|
dependencies: SwiftTargetDependency[]
|
|
41
48
|
languageMode: number
|
|
42
49
|
mainActorIsolation: boolean
|
|
50
|
+
defines: SwiftManifestDefine[]
|
|
43
51
|
/** true when the target declares `resources:`. */
|
|
44
52
|
declaresResources: boolean
|
|
45
53
|
/** a binary target's archive url; a local one's artifact is `dir`. */
|
|
@@ -49,6 +57,7 @@ export interface SwiftManifestTarget {
|
|
|
49
57
|
}
|
|
50
58
|
|
|
51
59
|
export interface SwiftPackageManifest {
|
|
60
|
+
name: string
|
|
52
61
|
dir: string
|
|
53
62
|
/** library product name to the targets it vends. */
|
|
54
63
|
products: Map<string, string[]>
|
|
@@ -240,13 +249,28 @@ export function swiftPackageManifest(dir: string): SwiftPackageManifest {
|
|
|
240
249
|
}
|
|
241
250
|
let languageMode = packageMode
|
|
242
251
|
let mainActorIsolation = false
|
|
252
|
+
const defines: SwiftManifestDefine[] = []
|
|
243
253
|
for (const setting of array(target.settings)) {
|
|
244
|
-
const
|
|
254
|
+
const { kind: rawKind, tool, condition } = record(setting)
|
|
255
|
+
const settingKind = record(rawKind)
|
|
245
256
|
const mode = string(record(settingKind.swiftLanguageMode)._0)
|
|
246
257
|
if (mode)
|
|
247
258
|
languageMode = Math.max(5, Number(/^(\d+)/.exec(mode)?.[1] ?? languageMode))
|
|
248
259
|
if (string(record(settingKind.defaultIsolation)._0) === 'MainActor')
|
|
249
260
|
mainActorIsolation = true
|
|
261
|
+
const define = string(record(settingKind.define)._0)
|
|
262
|
+
if (
|
|
263
|
+
define &&
|
|
264
|
+
string(tool) === 'swift' &&
|
|
265
|
+
/^[A-Za-z_][A-Za-z0-9_]*$/.test(define) &&
|
|
266
|
+
linksOnIOS(condition, traits)
|
|
267
|
+
) {
|
|
268
|
+
const config = string(record(condition).config)
|
|
269
|
+
defines.push({
|
|
270
|
+
name: define,
|
|
271
|
+
configuration: config === 'debug' || config === 'release' ? config : null,
|
|
272
|
+
})
|
|
273
|
+
}
|
|
250
274
|
}
|
|
251
275
|
targets.set(name, {
|
|
252
276
|
name,
|
|
@@ -260,12 +284,15 @@ export function swiftPackageManifest(dir: string): SwiftPackageManifest {
|
|
|
260
284
|
dependencies,
|
|
261
285
|
languageMode,
|
|
262
286
|
mainActorIsolation,
|
|
287
|
+
defines,
|
|
263
288
|
declaresResources: array(target.resources).length > 0,
|
|
264
289
|
url: string(target.url) ?? null,
|
|
265
290
|
checksum: string(target.checksum) ?? null,
|
|
266
291
|
})
|
|
267
292
|
}
|
|
268
|
-
const
|
|
293
|
+
const name = string(raw.name)
|
|
294
|
+
if (!name) throw new Error(`swiftpm returned no package name for ${dir}`)
|
|
295
|
+
const manifest = { name, dir, products, targets, packages }
|
|
269
296
|
evaluated.set(key, manifest)
|
|
270
297
|
return manifest
|
|
271
298
|
}
|
package/src/swift-package.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { SwiftResourceBundle } from './swiftContract'
|
|
2
|
+
|
|
1
3
|
/** one SwiftPM target a sent root manifest declares. */
|
|
2
4
|
export interface SwiftPackageTarget {
|
|
3
5
|
/** the target name, as `import <name>` spells it. */
|
|
@@ -10,8 +12,16 @@ export interface SwiftPackageTarget {
|
|
|
10
12
|
languageMode: number
|
|
11
13
|
/** true when the target declares `.defaultIsolation(MainActor.self)`. */
|
|
12
14
|
mainActorIsolation: boolean
|
|
15
|
+
/** true when the target declares unconditional C++ interoperability. */
|
|
16
|
+
cxxInterop?: boolean
|
|
17
|
+
/** compilation conditions the target declares unconditionally with `.define`. */
|
|
18
|
+
defines?: string[]
|
|
13
19
|
/** true when declared or implicit resources give the target `Bundle.module`. */
|
|
14
20
|
resources: boolean
|
|
21
|
+
/** declared dependencies on other targets in the same package. */
|
|
22
|
+
dependencies?: SwiftTargetDependency[]
|
|
23
|
+
/** explicit target-relative exclusions retained for resource discovery. */
|
|
24
|
+
exclude?: string[]
|
|
15
25
|
}
|
|
16
26
|
|
|
17
27
|
/** whether a project-relative key is a SwiftPM manifest, not a source. */
|
|
@@ -65,7 +75,10 @@ function manifestCalls(manifest: string, kinds: readonly string[]): ManifestCall
|
|
|
65
75
|
const calls: ManifestCall[] = []
|
|
66
76
|
// every declaration kind is scanned, so a `.target(name:)` dependency
|
|
67
77
|
// nested in an unrequested `.testTarget(` is skipped as part of it
|
|
68
|
-
const pattern = new RegExp(
|
|
78
|
+
const pattern = new RegExp(
|
|
79
|
+
`(?:\\.(${MANIFEST_DECLARATIONS.join('|')})|\\b(Package))\\s*\\(`,
|
|
80
|
+
'g',
|
|
81
|
+
)
|
|
69
82
|
let match: RegExpExecArray | null
|
|
70
83
|
while ((match = pattern.exec(code)) !== null) {
|
|
71
84
|
let depth = 1
|
|
@@ -95,14 +108,49 @@ function manifestCalls(manifest: string, kinds: readonly string[]): ManifestCall
|
|
|
95
108
|
}
|
|
96
109
|
i++
|
|
97
110
|
}
|
|
98
|
-
|
|
99
|
-
|
|
111
|
+
const kind = match[1] ?? match[2]!
|
|
112
|
+
if (kinds.includes(kind)) calls.push({ kind, flat, call: code.slice(start, i) })
|
|
113
|
+
else if (kind === 'Package') {
|
|
114
|
+
// target declarations are arguments of the root Package call.
|
|
115
|
+
calls.push(...manifestCalls(code.slice(start, i - 1), kinds))
|
|
116
|
+
}
|
|
100
117
|
// declarations never nest, so a call inside one is part of it
|
|
101
118
|
pattern.lastIndex = i
|
|
102
119
|
}
|
|
103
120
|
return calls
|
|
104
121
|
}
|
|
105
122
|
|
|
123
|
+
function splitManifestArguments(source: string): string[] {
|
|
124
|
+
const arguments_: string[] = []
|
|
125
|
+
let start = 0
|
|
126
|
+
let parentheses = 0
|
|
127
|
+
let brackets = 0
|
|
128
|
+
let braces = 0
|
|
129
|
+
let inString = false
|
|
130
|
+
let escaped = false
|
|
131
|
+
for (let index = 0; index < source.length; index++) {
|
|
132
|
+
const character = source[index]
|
|
133
|
+
if (inString) {
|
|
134
|
+
if (escaped) escaped = false
|
|
135
|
+
else if (character === '\\') escaped = true
|
|
136
|
+
else if (character === '"') inString = false
|
|
137
|
+
} else if (character === '"') inString = true
|
|
138
|
+
else if (character === '(') parentheses++
|
|
139
|
+
else if (character === ')') parentheses--
|
|
140
|
+
else if (character === '[') brackets++
|
|
141
|
+
else if (character === ']') brackets--
|
|
142
|
+
else if (character === '{') braces++
|
|
143
|
+
else if (character === '}') braces--
|
|
144
|
+
else if (character === ',' && parentheses === 0 && brackets === 0 && braces === 0) {
|
|
145
|
+
arguments_.push(source.slice(start, index).trim())
|
|
146
|
+
start = index + 1
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const final = source.slice(start).trim()
|
|
150
|
+
if (final) arguments_.push(final)
|
|
151
|
+
return arguments_
|
|
152
|
+
}
|
|
153
|
+
|
|
106
154
|
/** a target dependency: a target of the same package, or another package's product. */
|
|
107
155
|
export type SwiftTargetDependency =
|
|
108
156
|
| { kind: 'target'; name: string }
|
|
@@ -129,10 +177,14 @@ export function swiftManifestTargets(
|
|
|
129
177
|
): SwiftPackageTarget[] {
|
|
130
178
|
const implicitResources = swiftImplicitResourcePaths(resourcePaths)
|
|
131
179
|
const targets: SwiftPackageTarget[] = []
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
180
|
+
const declarations = manifestCalls(manifest, ['executableTarget', 'target'])
|
|
181
|
+
const targetNames = new Set(
|
|
182
|
+
declarations.flatMap(({ flat }) => {
|
|
183
|
+
const name = /\bname\s*:\s*"([^"]+)"/.exec(flat)?.[1]
|
|
184
|
+
return name ? [name] : []
|
|
185
|
+
}),
|
|
186
|
+
)
|
|
187
|
+
for (const { kind, flat, call } of declarations) {
|
|
136
188
|
const executable = kind === 'executableTarget'
|
|
137
189
|
const name = /\bname\s*:\s*"([^"]+)"/.exec(flat)?.[1]
|
|
138
190
|
if (!name) continue
|
|
@@ -147,6 +199,12 @@ export function swiftManifestTargets(
|
|
|
147
199
|
/\.swiftLanguageMode\(\s*\.v(\d+)\s*\)/.exec(call)?.[1] ?? '5',
|
|
148
200
|
)
|
|
149
201
|
const mainActorIsolation = /\.defaultIsolation\(\s*MainActor\.self\s*\)/.test(call)
|
|
202
|
+
const cxxInterop = /\.interoperabilityMode\(\s*\.Cxx\s*\)/.test(
|
|
203
|
+
call.replace(/"(?:\\.|[^"\\])*"/g, ''),
|
|
204
|
+
)
|
|
205
|
+
const defines = [
|
|
206
|
+
...call.matchAll(/\.define\(\s*"([A-Za-z_][A-Za-z0-9_]*)"\s*\)/g),
|
|
207
|
+
].map((match) => match[1]!)
|
|
150
208
|
const excluded = [
|
|
151
209
|
...(/\bexclude\s*:\s*\[([^\]]*)\]/.exec(flat)?.[1] ?? '').matchAll(/"([^"]+)"/g),
|
|
152
210
|
].map((match) => match[1].replace(/^\.\//, '').replace(/\/+$/, ''))
|
|
@@ -164,29 +222,141 @@ export function swiftManifestTargets(
|
|
|
164
222
|
return false
|
|
165
223
|
return true
|
|
166
224
|
})
|
|
225
|
+
const targetArguments = splitManifestArguments(call.slice(0, -1))
|
|
226
|
+
const dependencyArgument = targetArguments.find((argument) =>
|
|
227
|
+
/^dependencies\s*:/.test(argument),
|
|
228
|
+
)
|
|
229
|
+
const dependencyList = dependencyArgument?.replace(/^dependencies\s*:\s*/, '').trim()
|
|
230
|
+
const dependencyNames = new Set<string>()
|
|
231
|
+
if (dependencyList?.startsWith('[') && dependencyList.endsWith(']')) {
|
|
232
|
+
for (const dependency of splitManifestArguments(dependencyList.slice(1, -1))) {
|
|
233
|
+
const dependencyName =
|
|
234
|
+
/^"([^"]+)"$/.exec(dependency)?.[1] ??
|
|
235
|
+
/^\.(?:target|byName)\s*\(\s*name\s*:\s*"([^"]+)"/.exec(dependency)?.[1]
|
|
236
|
+
if (dependencyName && targetNames.has(dependencyName))
|
|
237
|
+
dependencyNames.add(dependencyName)
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
const dependencies: SwiftTargetDependency[] = [...dependencyNames].map((name) => ({
|
|
241
|
+
kind: 'target',
|
|
242
|
+
name,
|
|
243
|
+
}))
|
|
167
244
|
targets.push({
|
|
168
245
|
name,
|
|
169
246
|
path: targetPath,
|
|
170
247
|
executable,
|
|
171
248
|
languageMode,
|
|
172
249
|
mainActorIsolation,
|
|
250
|
+
...(cxxInterop ? { cxxInterop: true } : {}),
|
|
251
|
+
...(defines.length === 0 ? {} : { defines }),
|
|
173
252
|
resources,
|
|
253
|
+
...(dependencies.length === 0 ? {} : { dependencies }),
|
|
254
|
+
...(excluded.length === 0 ? {} : { exclude: excluded }),
|
|
174
255
|
})
|
|
175
256
|
}
|
|
176
257
|
return targets
|
|
177
258
|
}
|
|
178
259
|
|
|
260
|
+
/** the root package's declared C++ language standard. */
|
|
261
|
+
export function swiftManifestCxxLanguageStandard(manifest: string): string | undefined {
|
|
262
|
+
const declaration = manifestCalls(manifest, ['Package'])[0]
|
|
263
|
+
if (!declaration) return undefined
|
|
264
|
+
const code = declaration.flat.replace(/"(?:\\.|[^"\\])*"/g, '')
|
|
265
|
+
return /\bcxxLanguageStandard\s*:\s*\.(\w+)/.exec(code)?.[1]
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/** target resource bundles in the original package, before source rewriting. */
|
|
269
|
+
export function swiftResourceBundles(
|
|
270
|
+
files: Record<string, string>,
|
|
271
|
+
resourcePaths: readonly string[] = [],
|
|
272
|
+
): SwiftResourceBundle[] {
|
|
273
|
+
const manifest = files['Package.swift'] ?? ''
|
|
274
|
+
const targets = swiftManifestTargets(manifest, resourcePaths).filter(
|
|
275
|
+
(target) => target.resources,
|
|
276
|
+
)
|
|
277
|
+
if (targets.length === 0) return []
|
|
278
|
+
const declaration = manifestCalls(manifest, ['Package'])[0]
|
|
279
|
+
const packageName =
|
|
280
|
+
declaration && /\bname\s*:\s*"([^"/\\]+)"/.exec(declaration.flat)?.[1]
|
|
281
|
+
if (!packageName)
|
|
282
|
+
throw new Error('swift resource bundles require the original package name')
|
|
283
|
+
return targets.map((target) => ({
|
|
284
|
+
target: target.name,
|
|
285
|
+
sourcePath: target.path,
|
|
286
|
+
path: `${packageName}_${target.name}.bundle`,
|
|
287
|
+
}))
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/** the one resource target owning a canonical compile-input file. */
|
|
291
|
+
export function swiftResourceBundleForFile(
|
|
292
|
+
bundles: readonly SwiftResourceBundle[],
|
|
293
|
+
file: string,
|
|
294
|
+
): SwiftResourceBundle | undefined {
|
|
295
|
+
let owner: SwiftResourceBundle | undefined
|
|
296
|
+
for (const bundle of bundles) {
|
|
297
|
+
const prefix = bundle.sourcePath === '.' ? '' : `${bundle.sourcePath}/`
|
|
298
|
+
if (
|
|
299
|
+
file.startsWith(prefix) &&
|
|
300
|
+
(!owner || bundle.sourcePath.length > owner.sourcePath.length)
|
|
301
|
+
)
|
|
302
|
+
owner = bundle
|
|
303
|
+
}
|
|
304
|
+
return owner
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/** the marker Foundation needs to open a copied resource bundle. */
|
|
308
|
+
export function swiftResourceBundleInfoPlist(bundle: SwiftResourceBundle): string {
|
|
309
|
+
const name = bundle.path
|
|
310
|
+
.split('/')
|
|
311
|
+
.pop()!
|
|
312
|
+
.replace(/\.(bundle|framework)$/, '')
|
|
313
|
+
const escaped = name
|
|
314
|
+
.replaceAll('&', '&')
|
|
315
|
+
.replaceAll('<', '<')
|
|
316
|
+
.replaceAll('>', '>')
|
|
317
|
+
return `<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>CFBundleName</key><string>${escaped}</string><key>CFBundlePackageType</key><string>${bundle.path.endsWith('.framework') ? 'FMWK' : 'BNDL'}</string></dict></plist>`
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/** original metal sources that belong to the package's declared targets. */
|
|
321
|
+
export function swiftMetalSourceFiles(
|
|
322
|
+
files: Record<string, string>,
|
|
323
|
+
): Record<string, string> {
|
|
324
|
+
const sources = Object.entries(files).filter(([file]) => file.endsWith('.metal'))
|
|
325
|
+
if (sources.length === 0) return {}
|
|
326
|
+
const targets = swiftManifestTargets(files['Package.swift'] ?? '')
|
|
327
|
+
return Object.fromEntries(
|
|
328
|
+
sources.filter(([file]) => {
|
|
329
|
+
if (targets.length === 0) return true
|
|
330
|
+
return targets.some((target) => {
|
|
331
|
+
const prefix = target.path === '.' ? '' : `${target.path}/`
|
|
332
|
+
if (!file.startsWith(prefix)) return false
|
|
333
|
+
const relative = file.slice(prefix.length)
|
|
334
|
+
return !(target.exclude ?? []).some(
|
|
335
|
+
(excluded) => relative === excluded || relative.startsWith(`${excluded}/`),
|
|
336
|
+
)
|
|
337
|
+
})
|
|
338
|
+
}),
|
|
339
|
+
)
|
|
340
|
+
}
|
|
341
|
+
|
|
179
342
|
/**
|
|
180
343
|
* the target partition a root manifest declares for the compile. a single
|
|
181
|
-
* executable target at the package root (`path: "."`) holds the whole project
|
|
182
|
-
*
|
|
344
|
+
* executable target at the package root (`path: "."`) holds the whole project and
|
|
345
|
+
* can use the compiler's single-target template only with its default settings.
|
|
183
346
|
*/
|
|
184
347
|
export function swiftPackagePartition(
|
|
185
348
|
manifest: string,
|
|
186
349
|
resourcePaths: readonly string[] = [],
|
|
187
350
|
): SwiftPackageTarget[] {
|
|
188
351
|
const targets = swiftManifestTargets(manifest, resourcePaths)
|
|
189
|
-
return targets.length === 1 &&
|
|
352
|
+
return targets.length === 1 &&
|
|
353
|
+
targets[0].executable &&
|
|
354
|
+
targets[0].path === '.' &&
|
|
355
|
+
targets[0].languageMode === 5 &&
|
|
356
|
+
!targets[0].mainActorIsolation &&
|
|
357
|
+
!targets[0].defines?.length &&
|
|
358
|
+
!targets[0].cxxInterop &&
|
|
359
|
+
!swiftManifestCxxLanguageStandard(manifest)
|
|
190
360
|
? []
|
|
191
361
|
: targets
|
|
192
362
|
}
|
package/src/swift-packages.ts
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
import {
|
|
19
19
|
swiftPackageManifest,
|
|
20
20
|
swiftTargetFiles,
|
|
21
|
+
type SwiftManifestDefine,
|
|
21
22
|
type SwiftPackageManifest,
|
|
22
23
|
} from './swift-package-manifest'
|
|
23
24
|
|
|
@@ -40,6 +41,8 @@ export interface SwiftPackageSourceTarget extends SwiftPackageTarget {
|
|
|
40
41
|
/** the package directory, so a manifest edit reaches the compile. */
|
|
41
42
|
packageDir: string
|
|
42
43
|
remote: boolean
|
|
44
|
+
/** the conditions its manifest defines, before a build configuration picks them. */
|
|
45
|
+
packageDefines: SwiftManifestDefine[]
|
|
43
46
|
}
|
|
44
47
|
|
|
45
48
|
/** why a product or module does not compile, and where it comes from. */
|
|
@@ -252,6 +255,7 @@ export function resolveSwiftPackages(options: {
|
|
|
252
255
|
files,
|
|
253
256
|
packageDir: pkg.manifest.dir,
|
|
254
257
|
remote: pkg.remote,
|
|
258
|
+
packageDefines: target.defines,
|
|
255
259
|
executable: false,
|
|
256
260
|
languageMode: target.languageMode,
|
|
257
261
|
mainActorIsolation: target.mainActorIsolation,
|
|
@@ -87,6 +87,9 @@ export type StandinResult = {
|
|
|
87
87
|
/** bump when emitted source changes: the stand-in cache keys on it. */
|
|
88
88
|
export const STANDIN_EMIT_VERSION = '5'
|
|
89
89
|
|
|
90
|
+
/** the modules every stand-in source imports. */
|
|
91
|
+
export const STANDIN_IMPORTS = ['Foundation', 'UIKit']
|
|
92
|
+
|
|
90
93
|
const TYPE_KINDS = new Set([
|
|
91
94
|
'swift.class',
|
|
92
95
|
'swift.struct',
|
|
@@ -912,7 +915,7 @@ export function emitSwiftStandin(
|
|
|
912
915
|
emit(`}`)
|
|
913
916
|
}
|
|
914
917
|
|
|
915
|
-
const imports = [
|
|
918
|
+
const imports = [...STANDIN_IMPORTS, ...(options.imports ?? [])]
|
|
916
919
|
const banner = [
|
|
917
920
|
`// stand-in for the binary ${options.module} module, generated from ${options.source}.`,
|
|
918
921
|
`// do not hand-edit: every body traps because the vendor binary cannot run`,
|