@dimina-kit/devtools 0.4.0 → 0.5.0
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 +51 -660
- package/dist/main/api.d.ts +2 -1
- package/dist/main/app/app.d.ts +41 -12
- package/dist/main/app/app.js +299 -514
- package/dist/main/app/bootstrap.d.ts +8 -5
- package/dist/main/app/bootstrap.js +15 -15
- package/dist/main/app/editor-view.d.ts +21 -0
- package/dist/main/app/editor-view.js +71 -0
- package/dist/main/app/global-mirrors.d.ts +23 -0
- package/dist/main/app/global-mirrors.js +37 -0
- package/dist/main/app/host-sidebar-default.d.ts +19 -0
- package/dist/main/app/host-sidebar-default.js +44 -0
- package/dist/main/app/lifecycle.d.ts +12 -1
- package/dist/main/app/lifecycle.js +27 -1
- package/dist/main/app/menu-setup.d.ts +13 -0
- package/dist/main/app/menu-setup.js +49 -0
- package/dist/main/app/native-overview.d.ts +1 -1
- package/dist/main/app/open-project-ipc.d.ts +13 -0
- package/dist/main/app/open-project-ipc.js +21 -0
- package/dist/main/app/project-list-surface.d.ts +31 -0
- package/dist/main/app/project-list-surface.js +20 -0
- package/dist/main/app/project-window.d.ts +36 -0
- package/dist/main/app/project-window.js +93 -0
- package/dist/main/app/servers.d.ts +17 -0
- package/dist/main/app/servers.js +60 -0
- package/dist/main/app/ui-extension-targets.d.ts +42 -0
- package/dist/main/app/ui-extension-targets.js +101 -0
- package/dist/main/app/window-close-reveal.harness.d.ts +34 -0
- package/dist/main/app/window-close-reveal.harness.js +65 -0
- package/dist/main/app/window-events.d.ts +15 -0
- package/dist/main/app/window-events.js +45 -0
- package/dist/main/app/window-runtime-services.d.ts +41 -0
- package/dist/main/app/window-runtime-services.js +197 -0
- package/dist/main/app/workbench-modules.d.ts +24 -0
- package/dist/main/app/workbench-modules.js +51 -0
- package/dist/main/app/workbench-window.d.ts +85 -0
- package/dist/main/app/workbench-window.js +310 -0
- package/dist/main/index.bundle.js +11712 -9986
- package/dist/main/index.js +49 -1
- package/dist/main/ipc/app-lifecycle.d.ts +1 -31
- package/dist/main/ipc/app-lifecycle.js +1 -53
- package/dist/main/ipc/app.d.ts +4 -1
- package/dist/main/ipc/app.js +4 -3
- package/dist/main/ipc/bridge-router.d.ts +19 -116
- package/dist/main/ipc/bridge-router.js +28 -2128
- package/dist/main/ipc/device-picker.d.ts +16 -0
- package/dist/main/ipc/device-picker.js +27 -0
- package/dist/main/ipc/index.d.ts +5 -0
- package/dist/main/ipc/index.js +5 -0
- package/dist/main/ipc/internal-devtools.d.ts +16 -0
- package/dist/main/ipc/internal-devtools.js +10 -0
- package/dist/main/ipc/page-scroll.d.ts +1 -13
- package/dist/main/ipc/page-scroll.js +1 -16
- package/dist/main/ipc/popover.d.ts +4 -1
- package/dist/main/ipc/popover.js +26 -19
- package/dist/main/ipc/project-create.d.ts +16 -0
- package/dist/main/ipc/project-create.js +27 -0
- package/dist/main/ipc/project-fs.d.ts +38 -3
- package/dist/main/ipc/project-fs.js +53 -22
- package/dist/main/ipc/projects.d.ts +3 -3
- package/dist/main/ipc/projects.js +47 -11
- package/dist/main/ipc/session-listener-bag.d.ts +1 -40
- package/dist/main/ipc/session-listener-bag.js +1 -39
- package/dist/main/ipc/session.d.ts +4 -1
- package/dist/main/ipc/session.js +26 -26
- package/dist/main/ipc/settings.d.ts +4 -1
- package/dist/main/ipc/settings.js +17 -19
- package/dist/main/ipc/simulator-module.d.ts +9 -3
- package/dist/main/ipc/simulator-module.js +13 -10
- package/dist/main/ipc/simulator.d.ts +4 -1
- package/dist/main/ipc/simulator.js +12 -18
- package/dist/main/ipc/tooltip.d.ts +14 -0
- package/dist/main/ipc/tooltip.js +29 -0
- package/dist/main/ipc/views.d.ts +19 -2
- package/dist/main/ipc/views.js +76 -8
- package/dist/main/runtime/devtools-backend-before-quit.harness.d.ts +43 -0
- package/dist/main/runtime/devtools-backend-before-quit.harness.js +87 -0
- package/dist/main/runtime/devtools-backend.js +60 -4
- package/dist/main/runtime/devtools-runtime-mock.harness.d.ts +21 -0
- package/dist/main/runtime/devtools-runtime-mock.harness.js +313 -0
- package/dist/main/runtime/miniapp-runtime.d.ts +91 -22
- package/dist/main/services/app-services.d.ts +62 -0
- package/dist/main/services/app-services.js +64 -0
- package/dist/main/services/automation/connection-target.d.ts +36 -0
- package/dist/main/services/automation/connection-target.js +29 -0
- package/dist/main/services/automation/console-bridge.d.ts +28 -0
- package/dist/main/services/automation/console-bridge.js +91 -0
- package/dist/main/services/automation/handlers/app.js +4 -4
- package/dist/main/services/automation/handlers/element.js +55 -21
- package/dist/main/services/automation/index.d.ts +12 -1
- package/dist/main/services/automation/index.js +54 -133
- package/dist/main/services/cdp-session/index.d.ts +87 -0
- package/dist/main/services/cdp-session/index.js +173 -0
- package/dist/main/services/compile-standby.js +4 -0
- package/dist/main/services/console-forward/cdp-inject.d.ts +18 -0
- package/dist/main/services/console-forward/cdp-inject.js +30 -0
- package/dist/main/services/console-forward/global-console-mirror.d.ts +33 -0
- package/dist/main/services/console-forward/global-console-mirror.js +71 -0
- package/dist/main/services/console-forward/global-diagnostics-mirror.d.ts +33 -0
- package/dist/main/services/console-forward/global-diagnostics-mirror.js +73 -0
- package/dist/main/services/console-forward/index.d.ts +1 -46
- package/dist/main/services/console-forward/index.js +1 -185
- package/dist/main/services/console-forward/internal-log.d.ts +2 -0
- package/dist/main/services/console-forward/internal-log.js +2 -0
- package/dist/main/services/console-forward/open-gated-relay.d.ts +67 -0
- package/dist/main/services/console-forward/open-gated-relay.js +55 -0
- package/dist/main/services/default-adapter.js +1 -1
- package/dist/main/services/diagnostics/index.d.ts +1 -48
- package/dist/main/services/diagnostics/index.js +1 -60
- package/dist/main/services/dimina-resource-server.d.ts +1 -6
- package/dist/main/services/dimina-resource-server.js +1 -98
- package/dist/main/services/elements-forward/index.d.ts +132 -15
- package/dist/main/services/elements-forward/index.js +155 -304
- package/dist/main/services/fs-bridge-protocol.d.ts +61 -0
- package/dist/main/services/fs-bridge-protocol.js +34 -0
- package/dist/main/services/fs-watch-sse.d.ts +40 -0
- package/dist/main/services/fs-watch-sse.js +113 -0
- package/dist/main/services/http-json.d.ts +9 -0
- package/dist/main/services/http-json.js +6 -0
- package/dist/main/services/layout/index.d.ts +11 -0
- package/dist/main/services/layout/index.js +23 -0
- package/dist/main/services/mcp/connection-owner.d.ts +38 -0
- package/dist/main/services/mcp/connection-owner.js +79 -0
- package/dist/main/services/mcp/index.d.ts +3 -1
- package/dist/main/services/mcp/index.js +4 -3
- package/dist/main/services/mcp/opened-project.d.ts +88 -0
- package/dist/main/services/mcp/opened-project.js +60 -0
- package/dist/main/services/mcp/server.d.ts +2 -1
- package/dist/main/services/mcp/server.js +29 -4
- package/dist/main/services/mcp/target-manager.d.ts +71 -23
- package/dist/main/services/mcp/target-manager.js +269 -138
- package/dist/main/services/mcp/target-selection.d.ts +47 -0
- package/dist/main/services/mcp/target-selection.js +71 -0
- package/dist/main/services/mcp/tools/context-tools.js +20 -5
- package/dist/main/services/mcp/tools/project-tools.d.ts +72 -0
- package/dist/main/services/mcp/tools/project-tools.js +133 -0
- package/dist/main/services/module.d.ts +13 -5
- package/dist/main/services/network-forward/body-cache.d.ts +72 -0
- package/dist/main/services/network-forward/body-cache.js +179 -0
- package/dist/main/services/network-forward/frontend-dispatch.d.ts +91 -0
- package/dist/main/services/network-forward/frontend-dispatch.js +148 -0
- package/dist/main/services/network-forward/global-body-gate.d.ts +46 -0
- package/dist/main/services/network-forward/global-body-gate.js +93 -0
- package/dist/main/services/network-forward/global-mirror-test-fixtures.d.ts +48 -0
- package/dist/main/services/network-forward/global-mirror-test-fixtures.js +96 -0
- package/dist/main/services/network-forward/http.d.ts +47 -0
- package/dist/main/services/network-forward/http.js +162 -0
- package/dist/main/services/network-forward/index.d.ts +135 -15
- package/dist/main/services/network-forward/index.js +854 -224
- package/dist/main/services/network-forward/request-ids.d.ts +5 -0
- package/dist/main/services/network-forward/request-ids.js +5 -0
- package/dist/main/services/network-forward/user-facing.d.ts +21 -0
- package/dist/main/services/network-forward/user-facing.js +50 -0
- package/dist/main/services/network-forward/websocket.d.ts +36 -0
- package/dist/main/services/network-forward/websocket.js +120 -0
- package/dist/main/services/notifications/renderer-notifier.d.ts +71 -9
- package/dist/main/services/notifications/renderer-notifier.js +45 -8
- package/dist/main/services/projects/create-project-service.js +19 -5
- package/dist/main/services/projects/local-provider.js +8 -4
- package/dist/main/services/projects/project-repository.d.ts +59 -7
- package/dist/main/services/projects/project-repository.js +285 -51
- package/dist/main/services/projects/types.d.ts +44 -34
- package/dist/main/services/render-inspect/index.d.ts +12 -2
- package/dist/main/services/render-inspect/index.js +21 -102
- package/dist/main/services/safe-area/index.d.ts +21 -6
- package/dist/main/services/safe-area/index.js +92 -46
- package/dist/main/services/service-host-pool/pool.d.ts +1 -196
- package/dist/main/services/service-host-pool/pool.js +1 -363
- package/dist/main/services/settings/index.d.ts +7 -1
- package/dist/main/services/settings/index.js +22 -2
- package/dist/main/services/simulator/custom-apis.d.ts +1 -42
- package/dist/main/services/simulator/custom-apis.js +1 -46
- package/dist/main/services/simulator/referer.d.ts +1 -9
- package/dist/main/services/simulator/referer.js +1 -19
- package/dist/main/services/simulator/ui-extensions.d.ts +21 -0
- package/dist/main/services/simulator/ui-extensions.js +176 -0
- package/dist/main/services/simulator-appdata/index.d.ts +6 -0
- package/dist/main/services/simulator-appdata/index.js +21 -2
- package/dist/main/services/simulator-current-page/index.d.ts +5 -3
- package/dist/main/services/simulator-current-page/index.js +8 -1
- package/dist/main/services/simulator-storage/index.d.ts +34 -5
- package/dist/main/services/simulator-storage/index.js +73 -71
- package/dist/main/services/simulator-storage/service-storage-ops.d.ts +1 -39
- package/dist/main/services/simulator-storage/service-storage-ops.js +1 -66
- package/dist/main/services/simulator-storage/window-scope.d.ts +20 -0
- package/dist/main/services/simulator-storage/window-scope.js +20 -0
- package/dist/main/services/simulator-temp-files/disk.d.ts +1 -54
- package/dist/main/services/simulator-temp-files/disk.js +1 -237
- package/dist/main/services/simulator-temp-files/fs-channels.d.ts +1 -68
- package/dist/main/services/simulator-temp-files/fs-channels.js +1 -107
- package/dist/main/services/simulator-temp-files/index.d.ts +1 -32
- package/dist/main/services/simulator-temp-files/index.js +1 -181
- package/dist/main/services/simulator-temp-files/request-handler.d.ts +1 -29
- package/dist/main/services/simulator-temp-files/request-handler.js +1 -177
- package/dist/main/services/simulator-temp-files/resolver.d.ts +1 -21
- package/dist/main/services/simulator-temp-files/resolver.js +1 -21
- package/dist/main/services/simulator-temp-files/store.d.ts +1 -13
- package/dist/main/services/simulator-temp-files/store.js +1 -23
- package/dist/main/services/update/github-release-checker.js +22 -3
- package/dist/main/services/update/update-manager.d.ts +21 -4
- package/dist/main/services/update/update-manager.js +55 -11
- package/dist/main/services/views/clear-console-filter.d.ts +44 -0
- package/dist/main/services/views/clear-console-filter.js +86 -0
- package/dist/main/services/views/console-filter-test-fixtures.d.ts +94 -0
- package/dist/main/services/views/console-filter-test-fixtures.js +82 -0
- package/dist/main/services/views/console-filter.d.ts +94 -0
- package/dist/main/services/views/console-filter.js +190 -0
- package/dist/main/services/views/devtools-tabs.d.ts +24 -4
- package/dist/main/services/views/devtools-tabs.js +40 -21
- package/dist/main/services/views/frontend-bootstrap-gate.d.ts +59 -0
- package/dist/main/services/views/frontend-bootstrap-gate.js +117 -0
- package/dist/main/services/views/host-dialog-port-channel.d.ts +18 -0
- package/dist/main/services/views/host-dialog-port-channel.js +15 -0
- package/dist/main/services/views/host-dialog-session-runtime.d.ts +10 -0
- package/dist/main/services/views/host-dialog-session-runtime.js +17 -0
- package/dist/main/services/views/host-dialog-view.d.ts +95 -0
- package/dist/main/services/views/host-dialog-view.js +147 -0
- package/dist/main/services/views/host-sidebar-port-channel.d.ts +18 -0
- package/dist/main/services/views/host-sidebar-port-channel.js +15 -0
- package/dist/main/services/views/host-sidebar-session-runtime.d.ts +10 -0
- package/dist/main/services/views/host-sidebar-session-runtime.js +17 -0
- package/dist/main/services/views/host-sidebar-view.d.ts +59 -0
- package/dist/main/services/views/host-sidebar-view.js +44 -0
- package/dist/main/services/views/host-slot-port-channel.d.ts +124 -0
- package/dist/main/services/views/host-slot-port-channel.js +289 -0
- package/dist/main/services/views/host-slot-session-runtime.d.ts +40 -0
- package/dist/main/services/views/host-slot-session-runtime.js +50 -0
- package/dist/main/services/views/host-slot-view.d.ts +109 -0
- package/dist/main/services/views/host-slot-view.js +147 -0
- package/dist/main/services/views/host-toolbar-port-channel.d.ts +6 -91
- package/dist/main/services/views/host-toolbar-port-channel.js +10 -243
- package/dist/main/services/views/host-toolbar-session-runtime.d.ts +5 -30
- package/dist/main/services/views/host-toolbar-session-runtime.js +9 -47
- package/dist/main/services/views/host-toolbar-view.d.ts +34 -7
- package/dist/main/services/views/host-toolbar-view.js +30 -237
- package/dist/main/services/views/managed-web-contents-view.d.ts +48 -0
- package/dist/main/services/views/managed-web-contents-view.js +143 -0
- package/dist/main/services/views/miniapp-partition.d.ts +1 -89
- package/dist/main/services/views/miniapp-partition.js +1 -158
- package/dist/main/services/views/native-simulator-devtools-host.js +206 -68
- package/dist/main/services/views/native-simulator-view.d.ts +6 -0
- package/dist/main/services/views/native-simulator-view.js +47 -40
- package/dist/main/services/views/native-view-tree.d.ts +25 -0
- package/dist/main/services/views/native-view-tree.js +69 -0
- package/dist/main/services/views/overlay-panels-view.d.ts +63 -4
- package/dist/main/services/views/overlay-panels-view.js +257 -108
- package/dist/main/services/views/placement-reconciler.d.ts +18 -18
- package/dist/main/services/views/placement-reconciler.js +91 -29
- package/dist/main/services/views/placement-test-driver.d.ts +27 -0
- package/dist/main/services/views/placement-test-driver.js +29 -0
- package/dist/main/services/views/refresh-styles.d.ts +10 -0
- package/dist/main/services/views/refresh-styles.js +57 -0
- package/dist/main/services/views/simulator-session-policy.d.ts +1 -27
- package/dist/main/services/views/simulator-session-policy.js +1 -98
- package/dist/main/services/views/view-manager-devtools-host-test-fixtures.d.ts +76 -0
- package/dist/main/services/views/view-manager-devtools-host-test-fixtures.js +184 -0
- package/dist/main/services/views/view-manager.d.ts +69 -88
- package/dist/main/services/views/view-manager.js +62 -7
- package/dist/main/services/views/workbench-view.d.ts +2 -0
- package/dist/main/services/views/workbench-view.js +104 -17
- package/dist/main/services/window-contexts/context-router.d.ts +36 -0
- package/dist/main/services/window-contexts/context-router.js +55 -0
- package/dist/main/services/workbench-coi-host.d.ts +52 -0
- package/dist/main/services/workbench-coi-host.js +227 -0
- package/dist/main/services/workbench-coi-server.d.ts +11 -0
- package/dist/main/services/workbench-coi-server.js +126 -126
- package/dist/main/services/workbench-coi-shutdown.d.ts +40 -0
- package/dist/main/services/workbench-coi-shutdown.js +69 -0
- package/dist/main/services/workbench-coi-static.d.ts +23 -0
- package/dist/main/services/workbench-coi-static.js +87 -0
- package/dist/main/services/workbench-context.d.ts +88 -8
- package/dist/main/services/workbench-context.js +54 -6
- package/dist/main/services/workspace/compile-log-buffer.d.ts +40 -0
- package/dist/main/services/workspace/compile-log-buffer.js +41 -0
- package/dist/main/services/workspace/compile-mode-adapter.d.ts +18 -0
- package/dist/main/services/workspace/compile-mode-adapter.js +57 -0
- package/dist/main/services/workspace/compile-mode-store.d.ts +25 -0
- package/dist/main/services/workspace/compile-mode-store.js +71 -0
- package/dist/main/services/workspace/open-project-guards.d.ts +16 -0
- package/dist/main/services/workspace/open-project-guards.js +42 -0
- package/dist/main/services/workspace/rebuild-status.d.ts +37 -0
- package/dist/main/services/workspace/rebuild-status.js +36 -0
- package/dist/main/services/workspace/session-status-store.d.ts +47 -0
- package/dist/main/services/workspace/session-status-store.js +73 -0
- package/dist/main/services/workspace/status-tap.d.ts +20 -0
- package/dist/main/services/workspace/status-tap.js +32 -0
- package/dist/main/services/workspace/workspace-compile-modes.d.ts +59 -0
- package/dist/main/services/workspace/workspace-compile-modes.js +93 -0
- package/dist/main/services/workspace/workspace-lifecycle-race.testutil.d.ts +22 -0
- package/dist/main/services/workspace/workspace-lifecycle-race.testutil.js +62 -0
- package/dist/main/services/workspace/workspace-referer.d.ts +17 -0
- package/dist/main/services/workspace/workspace-referer.js +26 -0
- package/dist/main/services/workspace/workspace-service.d.ts +7 -5
- package/dist/main/services/workspace/workspace-service.js +96 -135
- package/dist/main/services/workspace/workspace-thumbnails.d.ts +22 -0
- package/dist/main/services/workspace/workspace-thumbnails.js +67 -0
- package/dist/main/utils/ipc-context-source.d.ts +40 -0
- package/dist/main/utils/ipc-context-source.js +23 -0
- package/dist/main/utils/ipc-registry.d.ts +46 -21
- package/dist/main/utils/ipc-registry.js +166 -76
- package/dist/main/utils/paths.d.ts +18 -0
- package/dist/main/utils/paths.js +18 -0
- package/dist/main/utils/sender-policy.d.ts +10 -1
- package/dist/main/utils/sender-policy.js +42 -4
- package/dist/main/utils/theme.d.ts +18 -8
- package/dist/main/utils/theme.js +19 -9
- package/dist/main/windows/internal-devtools-window/index.d.ts +66 -0
- package/dist/main/windows/internal-devtools-window/index.js +160 -0
- package/dist/main/windows/main-window/create.d.ts +16 -0
- package/dist/main/windows/main-window/create.js +19 -11
- package/dist/main/windows/main-window/events.d.ts +1 -1
- package/dist/main/windows/main-window/events.js +26 -13
- package/dist/main/windows/main-window/index.d.ts +1 -1
- package/dist/main/windows/main-window/index.js +1 -1
- package/dist/main/windows/service-host-window/create.d.ts +1 -92
- package/dist/main/windows/service-host-window/create.js +1 -154
- package/dist/native-host/common/common.js +173 -53
- package/dist/native-host/container/pageFrame.css +1 -1
- package/dist/native-host/render/render.js +8278 -3659
- package/dist/native-host/service/service.js +2 -2
- package/dist/preload/index.d.ts +2 -0
- package/dist/preload/index.js +1 -0
- package/dist/preload/instrumentation/app-data.d.ts +2 -2
- package/dist/preload/instrumentation/app-data.js +1 -1
- package/dist/preload/instrumentation/wxml.js +1 -1
- package/dist/preload/runtime/bridge.d.ts +3 -3
- package/dist/preload/runtime/bridge.js +2 -2
- package/dist/preload/runtime/clipboard.d.ts +6 -0
- package/dist/preload/runtime/clipboard.js +12 -0
- package/dist/preload/runtime/host-dialog-advertiser.d.ts +22 -0
- package/dist/preload/runtime/host-dialog-advertiser.js +37 -0
- package/dist/preload/runtime/host-dialog-port.d.ts +44 -0
- package/dist/preload/runtime/host-dialog-port.js +53 -0
- package/dist/preload/runtime/host-dialog-runtime.d.ts +28 -0
- package/dist/preload/runtime/host-dialog-runtime.js +36 -0
- package/dist/preload/runtime/host-sidebar-advertiser.d.ts +19 -0
- package/dist/preload/runtime/host-sidebar-advertiser.js +35 -0
- package/dist/preload/runtime/host-sidebar-port.d.ts +44 -0
- package/dist/preload/runtime/host-sidebar-port.js +53 -0
- package/dist/preload/runtime/host-sidebar-runtime.d.ts +28 -0
- package/dist/preload/runtime/host-sidebar-runtime.js +36 -0
- package/dist/preload/runtime/host-slot-port-bridge.d.ts +18 -0
- package/dist/preload/runtime/host-slot-port-bridge.js +112 -0
- package/dist/preload/runtime/host-toolbar-advertiser.d.ts +5 -13
- package/dist/preload/runtime/host-toolbar-advertiser.js +18 -38
- package/dist/preload/runtime/host-toolbar-port.d.ts +9 -0
- package/dist/preload/runtime/host-toolbar-port.js +11 -95
- package/dist/preload/runtime/native-host.d.ts +14 -0
- package/dist/preload/runtime/native-host.js +5 -8
- package/dist/preload/runtime/node-bindings.d.ts +18 -0
- package/dist/preload/runtime/node-bindings.js +44 -0
- package/dist/preload/runtime/temp-files.js +9 -2
- package/dist/preload/runtime/wait-for-slot-root.d.ts +23 -0
- package/dist/preload/runtime/wait-for-slot-root.js +80 -0
- package/dist/preload/shared/api-compat.js +63 -41
- package/dist/preload/windows/host-dialog-runtime.cjs +360 -0
- package/dist/preload/windows/host-dialog-runtime.cjs.map +7 -0
- package/dist/preload/windows/host-dialog-runtime.d.ts +2 -0
- package/dist/preload/windows/host-dialog-runtime.js +13 -0
- package/dist/preload/windows/host-sidebar-runtime.cjs +361 -0
- package/dist/preload/windows/host-sidebar-runtime.cjs.map +7 -0
- package/dist/preload/windows/host-sidebar-runtime.d.ts +2 -0
- package/dist/preload/windows/host-sidebar-runtime.js +13 -0
- package/dist/preload/windows/host-toolbar-runtime.cjs +142 -52
- package/dist/preload/windows/host-toolbar-runtime.cjs.map +3 -3
- package/dist/preload/windows/main.cjs +4922 -1246
- package/dist/preload/windows/main.cjs.map +4 -4
- package/dist/preload/windows/main.css +428 -0
- package/dist/preload/windows/main.css.map +7 -0
- package/dist/preload/windows/simulator.cjs +376 -322
- package/dist/preload/windows/simulator.cjs.map +4 -4
- package/dist/preload/windows/simulator.js +376 -322
- package/dist/render-host/pageFrame.html +4 -4
- package/dist/render-host/preload.cjs +30 -0
- package/dist/render-host/render-inspect.js +184 -115
- package/dist/renderer/assets/button-CB2MWjHY.js +2 -0
- package/dist/renderer/assets/constants-CkoGPQTS.js +2 -0
- package/dist/renderer/assets/constants-zQZ2-y21.js +2 -0
- package/dist/renderer/assets/createLucideIcon-cZ9FlZZw.js +2 -0
- package/dist/renderer/assets/devicePicker-H2eIO4e1.js +2 -0
- package/dist/renderer/assets/dialog-pHzEA8Vx.js +46 -0
- package/dist/renderer/assets/dist-B5HADirS.js +2 -0
- package/dist/renderer/assets/dist-DIFlRMKe.js +2 -0
- package/dist/renderer/assets/hostSidebarDefault-DRWh6OCt.js +2 -0
- package/dist/renderer/assets/index-CEL_XFge.js +2 -0
- package/dist/renderer/assets/input-CAObw95L.js +2 -0
- package/dist/renderer/assets/ipc-channels-overlays-gIPUFnqc.js +2 -0
- package/dist/renderer/assets/jsx-runtime-DICEQH_0.css +1 -0
- package/dist/renderer/assets/jsx-runtime-DIw5wnYl.js +9 -0
- package/dist/renderer/assets/plus-BQ9u5EbL.js +2 -0
- package/dist/renderer/assets/popover-Cw7G2Ctp.js +2 -0
- package/dist/renderer/assets/presets-DMZOb9ay.js +2 -0
- package/dist/renderer/assets/project-api-YTOr_Yvo.js +2 -0
- package/dist/renderer/assets/projectCreateDialog-BmLqiYxn.js +2 -0
- package/dist/renderer/assets/search-BMvuYF48.js +2 -0
- package/dist/renderer/assets/select-nFP95TxM.js +2 -0
- package/dist/renderer/assets/settings-CnpVfSWt.js +2 -0
- package/dist/renderer/assets/settings-api-Ccsf-Nsj.js +2 -0
- package/dist/renderer/assets/settings-tab-bar-CAzrv32m.js +2 -0
- package/dist/renderer/assets/smartphone-Bb2GdIKy.js +2 -0
- package/dist/renderer/assets/tabs-CPKN3Mmq.js +2 -0
- package/dist/renderer/assets/tooltip-D6AxXRk5.js +2 -0
- package/dist/renderer/assets/types-Bh0hA7El.js +2 -0
- package/dist/renderer/assets/updateDialog-CwndJ0Bl.js +2 -0
- package/dist/renderer/assets/utils-sEB5OZEQ.js +2 -0
- package/dist/renderer/assets/view-api-B-2zPBR5.js +2 -0
- package/dist/renderer/assets/view-ids-BfaDVV5P.js +2 -0
- package/dist/renderer/assets/workbench-C0Jkdlps.js +5 -0
- package/dist/renderer/assets/workbenchSettings-YD0Ctbm_.js +8 -0
- package/dist/renderer/entries/device-picker/index.html +28 -0
- package/dist/renderer/entries/host-sidebar-default/index.html +22 -0
- package/dist/renderer/entries/main/index.html +16 -7
- package/dist/renderer/entries/popover/index.html +16 -6
- package/dist/renderer/entries/project-create-dialog/index.html +27 -0
- package/dist/renderer/entries/settings/index.html +10 -5
- package/dist/renderer/entries/tooltip/index.html +21 -0
- package/dist/renderer/entries/update-dialog/index.html +25 -0
- package/dist/renderer/entries/workbench/index.html +49 -0
- package/dist/renderer/entries/workbench-settings/index.html +12 -5
- package/dist/service-host/appdata-set-data.cjs +39 -0
- package/dist/service-host/host-env-update.cjs +23 -0
- package/dist/service-host/preload.cjs +54 -48
- package/dist/service-host/service-message-queue.cjs +71 -0
- package/dist/service-host/sync-impls/menu-button-geometry.js +16 -5
- package/dist/service-host/sync-impls/menu-button.js +5 -3
- package/dist/service-host/sync-impls/system-info.js +31 -9
- package/dist/shared/bridge-channels.d.ts +1 -416
- package/dist/shared/bridge-channels.js +1 -89
- package/dist/shared/compile-mode-state.d.ts +73 -0
- package/dist/shared/compile-mode-state.js +100 -0
- package/dist/shared/compile-modes.d.ts +152 -0
- package/dist/shared/compile-modes.js +237 -0
- package/dist/shared/constants.d.ts +22 -0
- package/dist/shared/constants.js +22 -0
- package/dist/shared/dmb-resource-url.d.ts +2 -0
- package/dist/shared/dmb-resource-url.js +2 -0
- package/dist/shared/ipc-channels-overlays.d.ts +162 -0
- package/dist/shared/ipc-channels-overlays.js +203 -0
- package/dist/shared/ipc-channels.d.ts +24 -154
- package/dist/shared/ipc-channels.js +48 -96
- package/dist/shared/ipc-schemas.d.ts +143 -54
- package/dist/shared/ipc-schemas.js +137 -45
- package/dist/shared/node-bindings.d.ts +2 -0
- package/dist/shared/node-bindings.js +2 -0
- package/dist/shared/project-window-types.d.ts +42 -0
- package/dist/shared/project-window-types.js +2 -0
- package/dist/shared/simulator-route.d.ts +8 -0
- package/dist/shared/simulator-route.js +15 -0
- package/dist/shared/simulator-ui.d.ts +61 -0
- package/dist/shared/simulator-ui.js +12 -0
- package/dist/shared/types.d.ts +126 -41
- package/dist/shared/view-ids.d.ts +10 -0
- package/dist/shared/view-ids.js +23 -0
- package/dist/simulator/assets/bridge-channels-B3JAmRfl.js +2 -0
- package/dist/simulator/assets/device-shell-ATEhHV2_.css +1 -0
- package/dist/simulator/assets/device-shell-DucLepkm.js +431 -0
- package/dist/simulator/assets/simulator-B4rbcOVt.js +10 -0
- package/dist/simulator/assets/simulator-mini-app-DFo7fhi5.js +2 -0
- package/dist/simulator/assets/simulator-ui-BupATgKo.css +1 -0
- package/dist/simulator/assets/simulator-ui-i3GCc7YJ.js +2 -0
- package/dist/simulator/simulator.html +4 -3
- package/dist/simulator/temp-files.d.ts +35 -0
- package/dist/simulator/temp-files.js +121 -0
- package/dist/simulator/types.d.ts +50 -0
- package/dist/simulator/types.js +2 -0
- package/dist/vscode-workbench/assets/__vite-browser-external-JIkWewFf.js +1 -0
- package/dist/vscode-workbench/assets/{dist-TpGpmMGi.js → dist-CXG-u1VB.js} +3 -3
- package/dist/vscode-workbench/assets/fs-core-worker-urls-DZ1nod84.js +1 -0
- package/dist/vscode-workbench/assets/fs-core.worker-Bnmpp6fo.js +1 -0
- package/dist/vscode-workbench/assets/fs-query.worker-cZ-7Fjch.js +2 -0
- package/dist/vscode-workbench/assets/{iconv-lite-umd-C9tiCAJa.js → iconv-lite-umd-Dxx9Qyb4.js} +1 -1
- package/dist/vscode-workbench/assets/{index-DJ1HyMZ7.js → index-6VJMsaWj.js} +475 -475
- package/dist/vscode-workbench/assets/{jschardet-DE1jV513.js → jschardet-Ba3D16vt.js} +1 -1
- package/dist/vscode-workbench/index.html +21 -1
- package/package.json +23 -13
- package/dist/main/services/views/destroy-child-view.d.ts +0 -9
- package/dist/main/services/views/destroy-child-view.js +0 -23
- package/dist/preload/instrumentation/wxml-extract.d.ts +0 -11
- package/dist/preload/instrumentation/wxml-extract.js +0 -382
- package/dist/preload/shared/sid-registry.d.ts +0 -11
- package/dist/preload/shared/sid-registry.js +0 -38
- package/dist/renderer/assets/constants-EAMiwL9_.js +0 -2
- package/dist/renderer/assets/index-BMqyDx71.js +0 -49
- package/dist/renderer/assets/input-CDAEwpBO.js +0 -2
- package/dist/renderer/assets/ipc-transport-B7eFOR68.css +0 -1
- package/dist/renderer/assets/ipc-transport-_G1k5V1p.js +0 -9
- package/dist/renderer/assets/popover-DEdjK14m.js +0 -2
- package/dist/renderer/assets/select-DpKPCh3y.js +0 -2
- package/dist/renderer/assets/settings-M5q2elUr.js +0 -2
- package/dist/renderer/assets/settings-api-CDlZoHiO.js +0 -2
- package/dist/renderer/assets/workbenchSettings-CT_H1WhV.js +0 -8
- package/dist/shared/appdata-accumulator.d.ts +0 -95
- package/dist/shared/appdata-accumulator.js +0 -218
- package/dist/shared/request-core.d.ts +0 -84
- package/dist/shared/request-core.js +0 -168
- package/dist/shared/simulator-api-metadata.d.ts +0 -26
- package/dist/shared/simulator-api-metadata.js +0 -59
- package/dist/shared/vpath.d.ts +0 -42
- package/dist/shared/vpath.js +0 -105
- package/dist/simulator/assets/bridge-channels-zhsumfky.js +0 -2
- package/dist/simulator/assets/device-shell-C-wcFq3Z.js +0 -2
- package/dist/simulator/assets/device-shell-CS1rqAQz.css +0 -1
- package/dist/simulator/assets/jsx-runtime-BDTY6fEq.js +0 -2
- package/dist/simulator/assets/simulator-DU3-fS3v.js +0 -10
- package/dist/simulator/assets/simulator-mini-app-DzfMfnVM.js +0 -2
- package/dist/simulator/device-shell/menu-button-geometry.js +0 -8
- package/dist/vscode-workbench/assets/__vite-browser-external-CXi6Kz9W.js +0 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decide and emit the post-rebuild status for one completed rebuild.
|
|
3
|
+
*
|
|
4
|
+
* Explicit rebuild (`info.explicit` — the 重新编译 button, via
|
|
5
|
+
* `session.rebuild()`): the renderer's own relaunch drives a hard re-attach
|
|
6
|
+
* once the rebuild IPC resolves, and that re-attach is the run's ONLY
|
|
7
|
+
* reflection. Emitting `hotReload: true` here as well would race a soft
|
|
8
|
+
* reload against it — the two arrive through different channels with no
|
|
9
|
+
* ordering guarantee, so the soft reload can land AFTER the hard re-attach
|
|
10
|
+
* and drag the simulator back to the drifted page. The style fast path is a
|
|
11
|
+
* soft-update path too and is skipped for the same reason.
|
|
12
|
+
*
|
|
13
|
+
* Watcher rebuild (explicit absent/false) — style-only fast path: hot-swap the
|
|
14
|
+
* render-host stylesheets in place instead of respawning the DeviceShell —
|
|
15
|
+
* page stack / form state / scroll / focus survive (no jitter, no focus
|
|
16
|
+
* steal); `hotReload: false` keeps the renderer from bumping its reload token
|
|
17
|
+
* (the respawn signal). Falls through to the full reload when the swap can't
|
|
18
|
+
* run (no live render guest yet) so an edit is never dropped.
|
|
19
|
+
*
|
|
20
|
+
* `getProjectPages` never throws; empty pages are withheld so the renderer
|
|
21
|
+
* keeps its previous launch dropdown.
|
|
22
|
+
*/
|
|
23
|
+
export function reportRebuildStatus(info, deps) {
|
|
24
|
+
const { pages } = deps.repo.getProjectPages(deps.projectPath);
|
|
25
|
+
const pageList = pages.length ? pages : undefined;
|
|
26
|
+
if (info?.explicit) {
|
|
27
|
+
deps.sendStatus('ready', '编译完成', false, pageList);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (info?.styleOnly && deps.autoReload && deps.refreshSimulatorStyles()) {
|
|
31
|
+
deps.sendStatus('ready', '样式已热更新', false, pageList);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
deps.sendStatus('ready', deps.autoReload ? '编译完成,已重启' : '编译完成', deps.autoReload, pageList);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=rebuild-status.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authoritative, queryable record of the active project's compile status in
|
|
3
|
+
* the main process.
|
|
4
|
+
*
|
|
5
|
+
* `notify.projectStatus` is a fire-and-forget push to the renderer; MCP
|
|
6
|
+
* clients instead need to QUERY the latest state and AWAIT the next settled
|
|
7
|
+
* state. The notifier tap (see `status-tap.ts`) records every payload here
|
|
8
|
+
* BEFORE it is broadcast — the store is the authority, the renderer push is
|
|
9
|
+
* derived from the same single gate.
|
|
10
|
+
*
|
|
11
|
+
* "Settled" means the compile pipeline is not mid-flight: every phase except
|
|
12
|
+
* `'compiling'`. `generation` is a monotonic per-record counter so a waiter
|
|
13
|
+
* can ignore states recorded before its own trigger (e.g. `project_open`
|
|
14
|
+
* must not accept the PREVIOUS session's `'ready'` as its own result).
|
|
15
|
+
*/
|
|
16
|
+
export type SessionPhase = 'idle' | 'compiling' | 'ready' | 'error';
|
|
17
|
+
export interface SessionStatusSnapshot {
|
|
18
|
+
phase: SessionPhase;
|
|
19
|
+
message: string;
|
|
20
|
+
/** False once the file watcher died mid-session (saves no longer trigger a rebuild). Reset when the next compile starts. */
|
|
21
|
+
watcherAlive: boolean;
|
|
22
|
+
/** Wall-clock time of the last recorded transition; 0 before the first one. */
|
|
23
|
+
updatedAt: number;
|
|
24
|
+
/** Monotonic counter bumped on every record. */
|
|
25
|
+
generation: number;
|
|
26
|
+
}
|
|
27
|
+
export interface SessionStatusStore {
|
|
28
|
+
get(): SessionStatusSnapshot;
|
|
29
|
+
/** Record one `projectStatus` payload (the notifier tap is the only expected caller). */
|
|
30
|
+
record(payload: {
|
|
31
|
+
status: string;
|
|
32
|
+
message: string;
|
|
33
|
+
watcher?: 'dead';
|
|
34
|
+
}): void;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve with the first snapshot whose phase is settled (not 'compiling')
|
|
37
|
+
* AND whose generation is greater than `afterGeneration` (default: accept
|
|
38
|
+
* the current snapshot when it is already settled). Rejects after
|
|
39
|
+
* `timeoutMs` with the last observed phase in the message.
|
|
40
|
+
*/
|
|
41
|
+
waitForSettled(opts: {
|
|
42
|
+
afterGeneration?: number;
|
|
43
|
+
timeoutMs: number;
|
|
44
|
+
}): Promise<SessionStatusSnapshot>;
|
|
45
|
+
}
|
|
46
|
+
export declare function createSessionStatusStore(): SessionStatusStore;
|
|
47
|
+
//# sourceMappingURL=session-status-store.d.ts.map
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authoritative, queryable record of the active project's compile status in
|
|
3
|
+
* the main process.
|
|
4
|
+
*
|
|
5
|
+
* `notify.projectStatus` is a fire-and-forget push to the renderer; MCP
|
|
6
|
+
* clients instead need to QUERY the latest state and AWAIT the next settled
|
|
7
|
+
* state. The notifier tap (see `status-tap.ts`) records every payload here
|
|
8
|
+
* BEFORE it is broadcast — the store is the authority, the renderer push is
|
|
9
|
+
* derived from the same single gate.
|
|
10
|
+
*
|
|
11
|
+
* "Settled" means the compile pipeline is not mid-flight: every phase except
|
|
12
|
+
* `'compiling'`. `generation` is a monotonic per-record counter so a waiter
|
|
13
|
+
* can ignore states recorded before its own trigger (e.g. `project_open`
|
|
14
|
+
* must not accept the PREVIOUS session's `'ready'` as its own result).
|
|
15
|
+
*/
|
|
16
|
+
function toPhase(status) {
|
|
17
|
+
if (status === 'compiling')
|
|
18
|
+
return 'compiling';
|
|
19
|
+
if (status === 'error')
|
|
20
|
+
return 'error';
|
|
21
|
+
// 'ready' plus any future non-error chatter: the pipeline is not mid-flight.
|
|
22
|
+
return 'ready';
|
|
23
|
+
}
|
|
24
|
+
export function createSessionStatusStore() {
|
|
25
|
+
let snapshot = {
|
|
26
|
+
phase: 'idle',
|
|
27
|
+
message: '',
|
|
28
|
+
watcherAlive: true,
|
|
29
|
+
updatedAt: 0,
|
|
30
|
+
generation: 0,
|
|
31
|
+
};
|
|
32
|
+
const waiters = new Set();
|
|
33
|
+
return {
|
|
34
|
+
get: () => snapshot,
|
|
35
|
+
record(payload) {
|
|
36
|
+
const phase = toPhase(payload.status);
|
|
37
|
+
snapshot = {
|
|
38
|
+
phase,
|
|
39
|
+
message: payload.message,
|
|
40
|
+
// A dead watcher is a session-lifetime fact; only a NEW compile
|
|
41
|
+
// (fresh open) resets it. Rebuild 'ready' chatter keeps it dead.
|
|
42
|
+
watcherAlive: payload.watcher === 'dead'
|
|
43
|
+
? false
|
|
44
|
+
: phase === 'compiling' ? true : snapshot.watcherAlive,
|
|
45
|
+
updatedAt: Date.now(),
|
|
46
|
+
generation: snapshot.generation + 1,
|
|
47
|
+
};
|
|
48
|
+
for (const waiter of [...waiters])
|
|
49
|
+
waiter(snapshot);
|
|
50
|
+
},
|
|
51
|
+
waitForSettled({ afterGeneration = -1, timeoutMs }) {
|
|
52
|
+
const isSettled = (s) => s.phase !== 'compiling' && s.generation > afterGeneration;
|
|
53
|
+
if (isSettled(snapshot))
|
|
54
|
+
return Promise.resolve(snapshot);
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
const timer = setTimeout(() => {
|
|
57
|
+
waiters.delete(onRecord);
|
|
58
|
+
reject(new Error(`timed out after ${timeoutMs}ms waiting for the compile to settle `
|
|
59
|
+
+ `(last phase: ${snapshot.phase})`));
|
|
60
|
+
}, timeoutMs);
|
|
61
|
+
const onRecord = (s) => {
|
|
62
|
+
if (!isSettled(s))
|
|
63
|
+
return;
|
|
64
|
+
clearTimeout(timer);
|
|
65
|
+
waiters.delete(onRecord);
|
|
66
|
+
resolve(s);
|
|
67
|
+
};
|
|
68
|
+
waiters.add(onRecord);
|
|
69
|
+
});
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=session-status-store.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RendererNotifier } from '../notifications/renderer-notifier.js';
|
|
2
|
+
import type { CompileLogBuffer } from './compile-log-buffer.js';
|
|
3
|
+
import type { SessionStatusStore } from './session-status-store.js';
|
|
4
|
+
/**
|
|
5
|
+
* Wraps the renderer notifier so the two compile-state pushes ALSO land in
|
|
6
|
+
* the main-process authorities (session-status store + compile-log buffer)
|
|
7
|
+
* before the renderer broadcast.
|
|
8
|
+
*
|
|
9
|
+
* `ctx.notify` is the single outlet every status transition and log line
|
|
10
|
+
* already flows through (`workspace-service`'s `sendStatus` / `onLog`
|
|
11
|
+
* closures), so tapping at this gate keeps ONE bookkeeping site instead of a
|
|
12
|
+
* second call next to every producer — and the stale-session generation
|
|
13
|
+
* guard upstream of the notify call protects the store/buffer for free.
|
|
14
|
+
*
|
|
15
|
+
* A fresh open (`'compiling'` without `hotReload`) starts a new compile
|
|
16
|
+
* timeline, so it clears the buffer; watcher rebuilds never pass through
|
|
17
|
+
* `'compiling'` and keep appending to the same timeline.
|
|
18
|
+
*/
|
|
19
|
+
export declare function tapNotifierIntoStores(notify: RendererNotifier, status: SessionStatusStore, compileLogs: CompileLogBuffer): RendererNotifier;
|
|
20
|
+
//# sourceMappingURL=status-tap.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps the renderer notifier so the two compile-state pushes ALSO land in
|
|
3
|
+
* the main-process authorities (session-status store + compile-log buffer)
|
|
4
|
+
* before the renderer broadcast.
|
|
5
|
+
*
|
|
6
|
+
* `ctx.notify` is the single outlet every status transition and log line
|
|
7
|
+
* already flows through (`workspace-service`'s `sendStatus` / `onLog`
|
|
8
|
+
* closures), so tapping at this gate keeps ONE bookkeeping site instead of a
|
|
9
|
+
* second call next to every producer — and the stale-session generation
|
|
10
|
+
* guard upstream of the notify call protects the store/buffer for free.
|
|
11
|
+
*
|
|
12
|
+
* A fresh open (`'compiling'` without `hotReload`) starts a new compile
|
|
13
|
+
* timeline, so it clears the buffer; watcher rebuilds never pass through
|
|
14
|
+
* `'compiling'` and keep appending to the same timeline.
|
|
15
|
+
*/
|
|
16
|
+
export function tapNotifierIntoStores(notify, status, compileLogs) {
|
|
17
|
+
return {
|
|
18
|
+
...notify,
|
|
19
|
+
projectStatus(payload) {
|
|
20
|
+
if (payload.status === 'compiling' && payload.hotReload !== true) {
|
|
21
|
+
compileLogs.clear();
|
|
22
|
+
}
|
|
23
|
+
status.record(payload);
|
|
24
|
+
notify.projectStatus(payload);
|
|
25
|
+
},
|
|
26
|
+
compileLog(payload) {
|
|
27
|
+
compileLogs.append(payload);
|
|
28
|
+
notify.compileLog(payload);
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=status-tap.js.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wires a `CompileModeStore` into `WorkspaceService` for whichever project is
|
|
3
|
+
* currently open. Extracted out of workspace-service.ts to keep that file
|
|
4
|
+
* under the repo's file-length ratchet — this is the sole owner of the
|
|
5
|
+
* store's lifecycle (open/replace/dispose); `WorkspaceService` only forwards
|
|
6
|
+
* to it.
|
|
7
|
+
*/
|
|
8
|
+
import { type CompileModeCommand } from '../../../shared/compile-mode-state.js';
|
|
9
|
+
import type { CompileConfig } from '../../../shared/types.js';
|
|
10
|
+
import type { ProjectsProvider } from '../projects/types.js';
|
|
11
|
+
import { type CompileModeChange, type CompileModeSnapshot, type CompileModeStore } from './compile-mode-store.js';
|
|
12
|
+
export interface CompileModeManager {
|
|
13
|
+
/**
|
|
14
|
+
* Creates and returns a store for `projectPath` as a standalone handle —
|
|
15
|
+
* it does NOT touch the current store or subscribe to `onChange`. The
|
|
16
|
+
* caller owns the handle until it either passes it to `adopt` or disposes
|
|
17
|
+
* it itself (e.g. because the open it belongs to was superseded).
|
|
18
|
+
*/
|
|
19
|
+
open(projectPath: string): Promise<CompileModeStore>;
|
|
20
|
+
/**
|
|
21
|
+
* Makes `store` the current one: disposes whatever was current (and its
|
|
22
|
+
* subscription) first, then wires `store` up. The current store must only
|
|
23
|
+
* ever change here, alongside the session it belongs to — never as a side
|
|
24
|
+
* effect of merely opening one.
|
|
25
|
+
*/
|
|
26
|
+
adopt(store: CompileModeStore): void;
|
|
27
|
+
/** Disposes the current store, if any. Safe to call when none is open. */
|
|
28
|
+
disposeCurrent(): void;
|
|
29
|
+
/**
|
|
30
|
+
* `projectPath` omitted returns the currently open project's snapshot
|
|
31
|
+
* (for callers, like the popover, that don't track a project path of
|
|
32
|
+
* their own); given, it must match the open store's project or this
|
|
33
|
+
* throws — a caller that DOES know the path never silently reads another
|
|
34
|
+
* project's modes.
|
|
35
|
+
*/
|
|
36
|
+
getCompileModeState(projectPath?: string): CompileModeSnapshot;
|
|
37
|
+
applyCompileModeCommand(command: CompileModeCommand): Promise<CompileModeChange>;
|
|
38
|
+
getCompileConfig(projectPath: string): Promise<CompileConfig>;
|
|
39
|
+
/** Untouched by the store redesign — a direct provider passthrough. */
|
|
40
|
+
saveCompileConfig(projectPath: string, config: CompileConfig): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
export declare function createCompileModeManager(provider: ProjectsProvider, onChange: (change: CompileModeChange) => void): CompileModeManager;
|
|
43
|
+
/**
|
|
44
|
+
* Opens a store handle for `projectPath` right after a compile succeeds,
|
|
45
|
+
* WITHOUT making it current — the caller decides whether to `adopt` it once
|
|
46
|
+
* it has confirmed (under the op lock) that its open is still the latest
|
|
47
|
+
* one; a superseded open disposes the handle itself instead. On failure,
|
|
48
|
+
* closes `session` (best-effort) and returns the error message. A session
|
|
49
|
+
* that compiled but whose store failed to open must not be left running, so
|
|
50
|
+
* this centralizes that cleanup for callers.
|
|
51
|
+
*/
|
|
52
|
+
export declare function openCompileModeStoreAfterCompile(manager: CompileModeManager, projectPath: string, session: {
|
|
53
|
+
close(): Promise<void>;
|
|
54
|
+
}): Promise<{
|
|
55
|
+
store: CompileModeStore;
|
|
56
|
+
} | {
|
|
57
|
+
error: string;
|
|
58
|
+
}>;
|
|
59
|
+
//# sourceMappingURL=workspace-compile-modes.d.ts.map
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wires a `CompileModeStore` into `WorkspaceService` for whichever project is
|
|
3
|
+
* currently open. Extracted out of workspace-service.ts to keep that file
|
|
4
|
+
* under the repo's file-length ratchet — this is the sole owner of the
|
|
5
|
+
* store's lifecycle (open/replace/dispose); `WorkspaceService` only forwards
|
|
6
|
+
* to it.
|
|
7
|
+
*/
|
|
8
|
+
import { selectedMode } from '../../../shared/compile-mode-state.js';
|
|
9
|
+
import { compileConfigFromMode } from '../../../shared/compile-modes.js';
|
|
10
|
+
import * as repo from '../projects/project-repository.js';
|
|
11
|
+
import { createCompileModeAdapter } from './compile-mode-adapter.js';
|
|
12
|
+
import { openCompileModeStore, } from './compile-mode-store.js';
|
|
13
|
+
export function createCompileModeManager(provider, onChange) {
|
|
14
|
+
const adapter = createCompileModeAdapter(provider);
|
|
15
|
+
let store = null;
|
|
16
|
+
let unsubscribe = null;
|
|
17
|
+
function disposeCurrent() {
|
|
18
|
+
unsubscribe?.();
|
|
19
|
+
unsubscribe = null;
|
|
20
|
+
store?.dispose();
|
|
21
|
+
store = null;
|
|
22
|
+
}
|
|
23
|
+
async function open(projectPath) {
|
|
24
|
+
return openCompileModeStore({
|
|
25
|
+
projectPath,
|
|
26
|
+
load: () => adapter.getCompileModes(projectPath),
|
|
27
|
+
persist: (stored) => adapter.saveCompileModes(projectPath, stored),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function adopt(handle) {
|
|
31
|
+
disposeCurrent();
|
|
32
|
+
store = handle;
|
|
33
|
+
unsubscribe = handle.onChange(onChange);
|
|
34
|
+
}
|
|
35
|
+
function getCompileModeState(projectPath) {
|
|
36
|
+
if (!store || (projectPath !== undefined && projectPath !== store.projectPath)) {
|
|
37
|
+
throw new Error(`no compile-mode store open for ${projectPath ?? ''}`);
|
|
38
|
+
}
|
|
39
|
+
return store.get();
|
|
40
|
+
}
|
|
41
|
+
function applyCompileModeCommand(command) {
|
|
42
|
+
if (!store)
|
|
43
|
+
return Promise.reject(new Error('no compile-mode store open'));
|
|
44
|
+
return store.apply(command);
|
|
45
|
+
}
|
|
46
|
+
// Mirrors project-repository.ts's own getCompileConfig: 普通编译 (and any
|
|
47
|
+
// selected mode that left its start page blank) resolves to an empty
|
|
48
|
+
// startPage, filled in here with the project's real entry page rather than
|
|
49
|
+
// a mini-program-only literal.
|
|
50
|
+
async function getCompileConfig(projectPath) {
|
|
51
|
+
if (store && store.projectPath === projectPath) {
|
|
52
|
+
const config = compileConfigFromMode(selectedMode(store.get().state));
|
|
53
|
+
if (config.startPage)
|
|
54
|
+
return config;
|
|
55
|
+
return { ...config, startPage: repo.getProjectPages(projectPath).entryPagePath };
|
|
56
|
+
}
|
|
57
|
+
return adapter.getCompileConfig(projectPath);
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
open,
|
|
61
|
+
adopt,
|
|
62
|
+
disposeCurrent,
|
|
63
|
+
getCompileModeState,
|
|
64
|
+
applyCompileModeCommand,
|
|
65
|
+
getCompileConfig,
|
|
66
|
+
saveCompileConfig: adapter.saveCompileConfig,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Opens a store handle for `projectPath` right after a compile succeeds,
|
|
71
|
+
* WITHOUT making it current — the caller decides whether to `adopt` it once
|
|
72
|
+
* it has confirmed (under the op lock) that its open is still the latest
|
|
73
|
+
* one; a superseded open disposes the handle itself instead. On failure,
|
|
74
|
+
* closes `session` (best-effort) and returns the error message. A session
|
|
75
|
+
* that compiled but whose store failed to open must not be left running, so
|
|
76
|
+
* this centralizes that cleanup for callers.
|
|
77
|
+
*/
|
|
78
|
+
export async function openCompileModeStoreAfterCompile(manager, projectPath, session) {
|
|
79
|
+
try {
|
|
80
|
+
const store = await manager.open(projectPath);
|
|
81
|
+
return { store };
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
try {
|
|
85
|
+
await session.close();
|
|
86
|
+
}
|
|
87
|
+
catch (closeErr) {
|
|
88
|
+
console.warn('[workspace] closing session after compile-mode store open failure (non-fatal):', closeErr);
|
|
89
|
+
}
|
|
90
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=workspace-compile-modes.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { vi } from 'vitest';
|
|
2
|
+
type WorkbenchContext = Parameters<typeof import('./workspace-service.js').createWorkspaceService>[0];
|
|
3
|
+
export declare function stubProjectsProvider(): import('../projects/types.js').ProjectsProvider;
|
|
4
|
+
export declare function makeViewsSpy(): {
|
|
5
|
+
views: {
|
|
6
|
+
disposeAll: import("vitest").Mock<() => void>;
|
|
7
|
+
holdWorkbenchAttach: import("vitest").Mock<() => (() => void)>;
|
|
8
|
+
cancelWorkbenchAttachHold: import("vitest").Mock<() => void>;
|
|
9
|
+
disposeProjectViews: import("vitest").Mock<() => void>;
|
|
10
|
+
detachWorkbench: import("vitest").Mock<() => void>;
|
|
11
|
+
detachSimulator: import("vitest").Mock<() => void>;
|
|
12
|
+
};
|
|
13
|
+
events: string[];
|
|
14
|
+
};
|
|
15
|
+
export declare function makeCtxWith(views: ReturnType<typeof makeViewsSpy>['views'], adapter: {
|
|
16
|
+
openProject: ReturnType<typeof vi.fn>;
|
|
17
|
+
}): WorkbenchContext;
|
|
18
|
+
export declare function makeClosingHarness(closeBehavior: () => Promise<void>): {
|
|
19
|
+
ctx: WorkbenchContext;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=workspace-lifecycle-race.testutil.d.ts.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// Shared harness for the workspace-service concurrent-lifecycle suites
|
|
2
|
+
// (workspace-lifecycle-race.test.ts): spy-instrumented views, minimal
|
|
3
|
+
// WorkbenchContext stubs, and a close-behavior harness for the isClosing
|
|
4
|
+
// tests. Pure vi.fn factories — the electron/fs/module mocks stay in the
|
|
5
|
+
// test file (vi.mock is hoisted per test module and cannot live here).
|
|
6
|
+
import { vi } from 'vitest';
|
|
7
|
+
export function stubProjectsProvider() {
|
|
8
|
+
return {
|
|
9
|
+
listProjects: vi.fn(() => []),
|
|
10
|
+
addProject: vi.fn((p) => ({ name: 'fake', path: p, lastOpened: null })),
|
|
11
|
+
removeProject: vi.fn(),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export function makeViewsSpy() {
|
|
15
|
+
const events = [];
|
|
16
|
+
const views = {
|
|
17
|
+
disposeAll: vi.fn(() => { events.push('views.disposeAll'); }),
|
|
18
|
+
holdWorkbenchAttach: vi.fn(() => vi.fn()),
|
|
19
|
+
cancelWorkbenchAttachHold: vi.fn(() => { }),
|
|
20
|
+
// Project-scoped teardown: closeProject must call THIS, never disposeAll
|
|
21
|
+
// (which would also kill the host toolbar — see view-manager-dispose-scopes.test.ts).
|
|
22
|
+
disposeProjectViews: vi.fn(() => { events.push('views.disposeProjectViews'); }),
|
|
23
|
+
detachWorkbench: vi.fn(() => { events.push('views.detachWorkbench'); }),
|
|
24
|
+
detachSimulator: vi.fn(() => { events.push('views.detachSimulator'); }),
|
|
25
|
+
};
|
|
26
|
+
return { views, events };
|
|
27
|
+
}
|
|
28
|
+
export function makeCtxWith(views, adapter) {
|
|
29
|
+
return {
|
|
30
|
+
adapter,
|
|
31
|
+
notify: { projectStatus: vi.fn(), compileLog: vi.fn() },
|
|
32
|
+
views,
|
|
33
|
+
projectsProvider: stubProjectsProvider(),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// Minimal harness for the isClosing tests: sessions whose close() calls the given behavior.
|
|
37
|
+
export function makeClosingHarness(closeBehavior) {
|
|
38
|
+
const adapter = {
|
|
39
|
+
openProject: vi.fn(async ({ projectPath }) => ({
|
|
40
|
+
port: 7788,
|
|
41
|
+
appInfo: { appId: `app:${projectPath}` },
|
|
42
|
+
close: vi.fn(closeBehavior),
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
const views = {
|
|
46
|
+
disposeAll: vi.fn(),
|
|
47
|
+
holdWorkbenchAttach: vi.fn(() => vi.fn()),
|
|
48
|
+
cancelWorkbenchAttachHold: vi.fn(() => { }),
|
|
49
|
+
disposeProjectViews: vi.fn(),
|
|
50
|
+
detachWorkbench: vi.fn(),
|
|
51
|
+
detachSimulator: vi.fn(),
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
ctx: {
|
|
55
|
+
adapter,
|
|
56
|
+
notify: { projectStatus: vi.fn(), compileLog: vi.fn() },
|
|
57
|
+
views,
|
|
58
|
+
projectsProvider: stubProjectsProvider(),
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=workspace-lifecycle-race.testutil.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ProjectSession } from '../../../shared/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The forced `servicewechat.com` Referer is stored per project partition, so
|
|
4
|
+
* every workspace call must name the project it is acting for. Both helpers
|
|
5
|
+
* therefore take the session and project path explicitly: a workspace that
|
|
6
|
+
* reached for its own mutable `currentSession` after resetting it would clear
|
|
7
|
+
* nothing, and one that passed no project at all would be asking to wipe a
|
|
8
|
+
* partition that belongs to whichever project happens to be open elsewhere.
|
|
9
|
+
*/
|
|
10
|
+
/** Forces this project's Referer. No-op for a session without a usable appId. */
|
|
11
|
+
export declare function applyRefererForSession(session: ProjectSession, projectPath: string): void;
|
|
12
|
+
/**
|
|
13
|
+
* Clears only this project's own entry. Call BEFORE the caller resets its
|
|
14
|
+
* session/path state, otherwise there is no partition left to name.
|
|
15
|
+
*/
|
|
16
|
+
export declare function clearRefererForSession(session: ProjectSession | null, projectPath: string): void;
|
|
17
|
+
//# sourceMappingURL=workspace-referer.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { clearSimulatorServicewechatReferer, setSimulatorServicewechatReferer, } from '../simulator/referer.js';
|
|
2
|
+
/**
|
|
3
|
+
* The forced `servicewechat.com` Referer is stored per project partition, so
|
|
4
|
+
* every workspace call must name the project it is acting for. Both helpers
|
|
5
|
+
* therefore take the session and project path explicitly: a workspace that
|
|
6
|
+
* reached for its own mutable `currentSession` after resetting it would clear
|
|
7
|
+
* nothing, and one that passed no project at all would be asking to wipe a
|
|
8
|
+
* partition that belongs to whichever project happens to be open elsewhere.
|
|
9
|
+
*/
|
|
10
|
+
/** Forces this project's Referer. No-op for a session without a usable appId. */
|
|
11
|
+
export function applyRefererForSession(session, projectPath) {
|
|
12
|
+
const appInfo = session.appInfo;
|
|
13
|
+
if (!appInfo || typeof appInfo.appId !== 'string' || appInfo.appId.length === 0)
|
|
14
|
+
return;
|
|
15
|
+
setSimulatorServicewechatReferer(appInfo.appId, typeof appInfo.version === 'string' ? appInfo.version : undefined, projectPath);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Clears only this project's own entry. Call BEFORE the caller resets its
|
|
19
|
+
* session/path state, otherwise there is no partition left to name.
|
|
20
|
+
*/
|
|
21
|
+
export function clearRefererForSession(session, projectPath) {
|
|
22
|
+
if (!session)
|
|
23
|
+
return;
|
|
24
|
+
clearSimulatorServicewechatReferer(session.appInfo.appId, projectPath);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=workspace-referer.js.map
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import type { AppInfo, CompileConfig,
|
|
1
|
+
import type { AppInfo, CompileConfig, ProjectSession } from '../../../shared/types.js';
|
|
2
|
+
import type { CompileModeCommand } from '../../../shared/compile-mode-state.js';
|
|
3
|
+
import type { CompileModeChange, CompileModeSnapshot } from './compile-mode-store.js';
|
|
2
4
|
import type { WorkbenchContext } from '../workbench-context.js';
|
|
3
5
|
import type { Project, ProjectPages, ProjectSettings } from '../projects/project-repository.js';
|
|
6
|
+
import type { ProjectPatch } from '../projects/types.js';
|
|
4
7
|
/**
|
|
5
8
|
* Result returned to the renderer after `project:open` finishes.
|
|
6
9
|
* Mirrors the previous inline shape in ipc/session.ts so no
|
|
@@ -28,6 +31,7 @@ export interface WorkspaceService {
|
|
|
28
31
|
listProjects(): Promise<Project[]>;
|
|
29
32
|
addProject(dirPath: string): Promise<Project>;
|
|
30
33
|
removeProject(dirPath: string): Promise<void>;
|
|
34
|
+
updateProject(dirPath: string, patch: ProjectPatch): Promise<Project>;
|
|
31
35
|
hasProject(dirPath: string): Promise<boolean>;
|
|
32
36
|
validateProjectDir(dirPath: string): Promise<string | null>;
|
|
33
37
|
openProject(projectPath: string): Promise<OpenProjectResult>;
|
|
@@ -55,12 +59,10 @@ export interface WorkspaceService {
|
|
|
55
59
|
getProjectPages(projectPath: string): ProjectPages;
|
|
56
60
|
getCompileConfig(projectPath: string): Promise<CompileConfig>;
|
|
57
61
|
saveCompileConfig(projectPath: string, config: CompileConfig): Promise<void>;
|
|
62
|
+
getCompileModeState(projectPath?: string): CompileModeSnapshot;
|
|
63
|
+
applyCompileModeCommand(command: CompileModeCommand): Promise<CompileModeChange>;
|
|
58
64
|
getProjectSettings(projectPath: string): ProjectSettings;
|
|
59
65
|
updateProjectSettings(projectPath: string, patch: Partial<ProjectSettings>): void;
|
|
60
|
-
getLaunchConfigs(projectPath: string): Promise<LaunchConfig[]>;
|
|
61
|
-
saveLaunchConfigs(projectPath: string, configs: LaunchConfig[]): Promise<void>;
|
|
62
|
-
getActiveLaunchConfigId(projectPath: string): Promise<string | null>;
|
|
63
|
-
saveActiveLaunchConfigId(projectPath: string, id: string | null): Promise<void>;
|
|
64
66
|
}
|
|
65
67
|
/** Build a workspace service bound to the given workbench context. */
|
|
66
68
|
export declare function createWorkspaceService(ctx: WorkbenchContext): WorkspaceService;
|