@gtkx/cli 1.0.0 → 1.2.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 +1 -1
- package/dist/builder.d.ts +1 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +20 -3
- package/dist/builder.js.map +1 -1
- package/dist/cli.js +6 -2
- package/dist/cli.js.map +1 -1
- package/dist/codegen/freshness.js +2 -2
- package/dist/codegen/freshness.js.map +1 -1
- package/dist/codegen/report.d.ts.map +1 -1
- package/dist/codegen/report.js +3 -0
- package/dist/codegen/report.js.map +1 -1
- package/dist/codegen/run-codegen.d.ts +9 -5
- package/dist/codegen/run-codegen.d.ts.map +1 -1
- package/dist/codegen/run-codegen.js +31 -20
- package/dist/codegen/run-codegen.js.map +1 -1
- package/dist/codegen/store-resolver.d.ts +1 -1
- package/dist/codegen/store-resolver.d.ts.map +1 -1
- package/dist/codegen/store-resolver.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +5 -6
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/codegen.d.ts.map +1 -1
- package/dist/commands/codegen.js +11 -1
- package/dist/commands/codegen.js.map +1 -1
- package/dist/commands/deploy.d.ts +22 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +44 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +4 -4
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/docs.d.ts +2 -2
- package/dist/commands/docs.d.ts.map +1 -1
- package/dist/commands/docs.js +28 -4
- package/dist/commands/docs.js.map +1 -1
- package/dist/deploy/depends.d.ts +8 -0
- package/dist/deploy/depends.d.ts.map +1 -0
- package/dist/deploy/depends.js +27 -0
- package/dist/deploy/depends.js.map +1 -0
- package/dist/deploy/download.d.ts +20 -0
- package/dist/deploy/download.d.ts.map +1 -0
- package/dist/deploy/download.js +98 -0
- package/dist/deploy/download.js.map +1 -0
- package/dist/deploy/freedesktop/copyright.d.ts +4 -0
- package/dist/deploy/freedesktop/copyright.d.ts.map +1 -0
- package/dist/deploy/freedesktop/copyright.js +33 -0
- package/dist/deploy/freedesktop/copyright.js.map +1 -0
- package/dist/deploy/freedesktop/dbus-service.d.ts +4 -0
- package/dist/deploy/freedesktop/dbus-service.d.ts.map +1 -0
- package/dist/deploy/freedesktop/dbus-service.js +15 -0
- package/dist/deploy/freedesktop/dbus-service.js.map +1 -0
- package/dist/deploy/freedesktop/desktop-entry.d.ts +4 -0
- package/dist/deploy/freedesktop/desktop-entry.d.ts.map +1 -0
- package/dist/deploy/freedesktop/desktop-entry.js +73 -0
- package/dist/deploy/freedesktop/desktop-entry.js.map +1 -0
- package/dist/deploy/freedesktop/ini.d.ts +7 -0
- package/dist/deploy/freedesktop/ini.d.ts.map +1 -0
- package/dist/deploy/freedesktop/ini.js +22 -0
- package/dist/deploy/freedesktop/ini.js.map +1 -0
- package/dist/deploy/freedesktop/metainfo-sections.d.ts +13 -0
- package/dist/deploy/freedesktop/metainfo-sections.d.ts.map +1 -0
- package/dist/deploy/freedesktop/metainfo-sections.js +73 -0
- package/dist/deploy/freedesktop/metainfo-sections.js.map +1 -0
- package/dist/deploy/freedesktop/metainfo.d.ts +4 -0
- package/dist/deploy/freedesktop/metainfo.d.ts.map +1 -0
- package/dist/deploy/freedesktop/metainfo.js +29 -0
- package/dist/deploy/freedesktop/metainfo.js.map +1 -0
- package/dist/deploy/freedesktop/mime-package.d.ts +4 -0
- package/dist/deploy/freedesktop/mime-package.d.ts.map +1 -0
- package/dist/deploy/freedesktop/mime-package.js +16 -0
- package/dist/deploy/freedesktop/mime-package.js.map +1 -0
- package/dist/deploy/freedesktop/validate.d.ts +4 -0
- package/dist/deploy/freedesktop/validate.d.ts.map +1 -0
- package/dist/deploy/freedesktop/validate.js +81 -0
- package/dist/deploy/freedesktop/validate.js.map +1 -0
- package/dist/deploy/freedesktop/xml.d.ts +11 -0
- package/dist/deploy/freedesktop/xml.d.ts.map +1 -0
- package/dist/deploy/freedesktop/xml.js +33 -0
- package/dist/deploy/freedesktop/xml.js.map +1 -0
- package/dist/deploy/git.d.ts +4 -0
- package/dist/deploy/git.d.ts.map +1 -0
- package/dist/deploy/git.js +17 -0
- package/dist/deploy/git.js.map +1 -0
- package/dist/deploy/install-hints.d.ts +5 -0
- package/dist/deploy/install-hints.d.ts.map +1 -0
- package/dist/deploy/install-hints.js +88 -0
- package/dist/deploy/install-hints.js.map +1 -0
- package/dist/deploy/nfpm/config.d.ts +8 -0
- package/dist/deploy/nfpm/config.d.ts.map +1 -0
- package/dist/deploy/nfpm/config.js +119 -0
- package/dist/deploy/nfpm/config.js.map +1 -0
- package/dist/deploy/nfpm/contents.d.ts +12 -0
- package/dist/deploy/nfpm/contents.d.ts.map +1 -0
- package/dist/deploy/nfpm/contents.js +48 -0
- package/dist/deploy/nfpm/contents.js.map +1 -0
- package/dist/deploy/nfpm/description.d.ts +5 -0
- package/dist/deploy/nfpm/description.d.ts.map +1 -0
- package/dist/deploy/nfpm/description.js +5 -0
- package/dist/deploy/nfpm/description.js.map +1 -0
- package/dist/deploy/nfpm/optional.d.ts +5 -0
- package/dist/deploy/nfpm/optional.d.ts.map +1 -0
- package/dist/deploy/nfpm/optional.js +4 -0
- package/dist/deploy/nfpm/optional.js.map +1 -0
- package/dist/deploy/nfpm/pack.d.ts +5 -0
- package/dist/deploy/nfpm/pack.d.ts.map +1 -0
- package/dist/deploy/nfpm/pack.js +32 -0
- package/dist/deploy/nfpm/pack.js.map +1 -0
- package/dist/deploy/node-runtime/download.d.ts +3 -0
- package/dist/deploy/node-runtime/download.d.ts.map +1 -0
- package/dist/deploy/node-runtime/download.js +39 -0
- package/dist/deploy/node-runtime/download.js.map +1 -0
- package/dist/deploy/node-runtime/elf.d.ts +7 -0
- package/dist/deploy/node-runtime/elf.d.ts.map +1 -0
- package/dist/deploy/node-runtime/elf.js +100 -0
- package/dist/deploy/node-runtime/elf.js.map +1 -0
- package/dist/deploy/node-runtime/guard.d.ts +4 -0
- package/dist/deploy/node-runtime/guard.d.ts.map +1 -0
- package/dist/deploy/node-runtime/guard.js +22 -0
- package/dist/deploy/node-runtime/guard.js.map +1 -0
- package/dist/deploy/node-runtime/index.d.ts +4 -0
- package/dist/deploy/node-runtime/index.d.ts.map +1 -0
- package/dist/deploy/node-runtime/index.js +61 -0
- package/dist/deploy/node-runtime/index.js.map +1 -0
- package/dist/deploy/payload/copy-tree.d.ts +7 -0
- package/dist/deploy/payload/copy-tree.d.ts.map +1 -0
- package/dist/deploy/payload/copy-tree.js +36 -0
- package/dist/deploy/payload/copy-tree.js.map +1 -0
- package/dist/deploy/payload/icons.d.ts +6 -0
- package/dist/deploy/payload/icons.d.ts.map +1 -0
- package/dist/deploy/payload/icons.js +53 -0
- package/dist/deploy/payload/icons.js.map +1 -0
- package/dist/deploy/payload/launcher.d.ts +5 -0
- package/dist/deploy/payload/launcher.d.ts.map +1 -0
- package/dist/deploy/payload/launcher.js +22 -0
- package/dist/deploy/payload/launcher.js.map +1 -0
- package/dist/deploy/payload/schemas.d.ts +4 -0
- package/dist/deploy/payload/schemas.d.ts.map +1 -0
- package/dist/deploy/payload/schemas.js +17 -0
- package/dist/deploy/payload/schemas.js.map +1 -0
- package/dist/deploy/payload/stage.d.ts +15 -0
- package/dist/deploy/payload/stage.d.ts.map +1 -0
- package/dist/deploy/payload/stage.js +100 -0
- package/dist/deploy/payload/stage.js.map +1 -0
- package/dist/deploy/registry.d.ts +7 -0
- package/dist/deploy/registry.d.ts.map +1 -0
- package/dist/deploy/registry.js +30 -0
- package/dist/deploy/registry.js.map +1 -0
- package/dist/deploy/run-deploy.d.ts +11 -0
- package/dist/deploy/run-deploy.d.ts.map +1 -0
- package/dist/deploy/run-deploy.js +157 -0
- package/dist/deploy/run-deploy.js.map +1 -0
- package/dist/deploy/settings/arch.d.ts +4 -0
- package/dist/deploy/settings/arch.d.ts.map +1 -0
- package/dist/deploy/settings/arch.js +13 -0
- package/dist/deploy/settings/arch.js.map +1 -0
- package/dist/deploy/settings/categories.d.ts +4 -0
- package/dist/deploy/settings/categories.d.ts.map +1 -0
- package/dist/deploy/settings/categories.js +29 -0
- package/dist/deploy/settings/categories.js.map +1 -0
- package/dist/deploy/settings/exec.d.ts +6 -0
- package/dist/deploy/settings/exec.d.ts.map +1 -0
- package/dist/deploy/settings/exec.js +20 -0
- package/dist/deploy/settings/exec.js.map +1 -0
- package/dist/deploy/settings/identity.d.ts +18 -0
- package/dist/deploy/settings/identity.d.ts.map +1 -0
- package/dist/deploy/settings/identity.js +73 -0
- package/dist/deploy/settings/identity.js.map +1 -0
- package/dist/deploy/settings/index.d.ts +11 -0
- package/dist/deploy/settings/index.d.ts.map +1 -0
- package/dist/deploy/settings/index.js +103 -0
- package/dist/deploy/settings/index.js.map +1 -0
- package/dist/deploy/settings/package-manifest.d.ts +16 -0
- package/dist/deploy/settings/package-manifest.d.ts.map +1 -0
- package/dist/deploy/settings/package-manifest.js +42 -0
- package/dist/deploy/settings/package-manifest.js.map +1 -0
- package/dist/deploy/settings/paths.d.ts +9 -0
- package/dist/deploy/settings/paths.d.ts.map +1 -0
- package/dist/deploy/settings/paths.js +82 -0
- package/dist/deploy/settings/paths.js.map +1 -0
- package/dist/deploy/settings/screenshots.d.ts +8 -0
- package/dist/deploy/settings/screenshots.d.ts.map +1 -0
- package/dist/deploy/settings/screenshots.js +79 -0
- package/dist/deploy/settings/screenshots.js.map +1 -0
- package/dist/deploy/settings/starter.d.ts +4 -0
- package/dist/deploy/settings/starter.d.ts.map +1 -0
- package/dist/deploy/settings/starter.js +28 -0
- package/dist/deploy/settings/starter.js.map +1 -0
- package/dist/deploy/settings/version.d.ts +9 -0
- package/dist/deploy/settings/version.d.ts.map +1 -0
- package/dist/deploy/settings/version.js +37 -0
- package/dist/deploy/settings/version.js.map +1 -0
- package/dist/deploy/targets/appimage.d.ts +4 -0
- package/dist/deploy/targets/appimage.d.ts.map +1 -0
- package/dist/deploy/targets/appimage.js +105 -0
- package/dist/deploy/targets/appimage.js.map +1 -0
- package/dist/deploy/targets/deb.d.ts +4 -0
- package/dist/deploy/targets/deb.d.ts.map +1 -0
- package/dist/deploy/targets/deb.js +4 -0
- package/dist/deploy/targets/deb.js.map +1 -0
- package/dist/deploy/targets/flatpak-manifest.d.ts +6 -0
- package/dist/deploy/targets/flatpak-manifest.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak-manifest.js +48 -0
- package/dist/deploy/targets/flatpak-manifest.js.map +1 -0
- package/dist/deploy/targets/flatpak-pnpm.d.ts +15 -0
- package/dist/deploy/targets/flatpak-pnpm.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak-pnpm.js +69 -0
- package/dist/deploy/targets/flatpak-pnpm.js.map +1 -0
- package/dist/deploy/targets/flatpak-prebuilt.d.ts +8 -0
- package/dist/deploy/targets/flatpak-prebuilt.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak-prebuilt.js +43 -0
- package/dist/deploy/targets/flatpak-prebuilt.js.map +1 -0
- package/dist/deploy/targets/flatpak-source.d.ts +5 -0
- package/dist/deploy/targets/flatpak-source.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak-source.js +119 -0
- package/dist/deploy/targets/flatpak-source.js.map +1 -0
- package/dist/deploy/targets/flatpak-sources.d.ts +19 -0
- package/dist/deploy/targets/flatpak-sources.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak-sources.js +122 -0
- package/dist/deploy/targets/flatpak-sources.js.map +1 -0
- package/dist/deploy/targets/flatpak.d.ts +4 -0
- package/dist/deploy/targets/flatpak.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak.js +113 -0
- package/dist/deploy/targets/flatpak.js.map +1 -0
- package/dist/deploy/targets/nfpm-target.d.ts +5 -0
- package/dist/deploy/targets/nfpm-target.d.ts.map +1 -0
- package/dist/deploy/targets/nfpm-target.js +26 -0
- package/dist/deploy/targets/nfpm-target.js.map +1 -0
- package/dist/deploy/targets/rpm.d.ts +4 -0
- package/dist/deploy/targets/rpm.d.ts.map +1 -0
- package/dist/deploy/targets/rpm.js +4 -0
- package/dist/deploy/targets/rpm.js.map +1 -0
- package/dist/deploy/tools.d.ts +20 -0
- package/dist/deploy/tools.d.ts.map +1 -0
- package/dist/deploy/tools.js +106 -0
- package/dist/deploy/tools.js.map +1 -0
- package/dist/deploy/types.d.ts +140 -0
- package/dist/deploy/types.d.ts.map +1 -0
- package/dist/deploy/types.js +2 -0
- package/dist/deploy/types.js.map +1 -0
- package/dist/deploy/vendored/appimagetool.d.ts +7 -0
- package/dist/deploy/vendored/appimagetool.d.ts.map +1 -0
- package/dist/deploy/vendored/appimagetool.js +42 -0
- package/dist/deploy/vendored/appimagetool.js.map +1 -0
- package/dist/deploy/vendored/nfpm.d.ts +3 -0
- package/dist/deploy/vendored/nfpm.d.ts.map +1 -0
- package/dist/deploy/vendored/nfpm.js +60 -0
- package/dist/deploy/vendored/nfpm.js.map +1 -0
- package/dist/dev/change-queue.d.ts +11 -0
- package/dist/dev/change-queue.d.ts.map +1 -0
- package/dist/dev/change-queue.js +34 -0
- package/dist/dev/change-queue.js.map +1 -0
- package/dist/dev/failure-tracker.d.ts +10 -0
- package/dist/dev/failure-tracker.d.ts.map +1 -0
- package/dist/dev/failure-tracker.js +61 -0
- package/dist/dev/failure-tracker.js.map +1 -0
- package/dist/dev/missing-import.d.ts +4 -0
- package/dist/dev/missing-import.d.ts.map +1 -0
- package/dist/dev/missing-import.js +23 -0
- package/dist/dev/missing-import.js.map +1 -0
- package/dist/dev/runner-deps.d.ts.map +1 -1
- package/dist/dev/runner-deps.js +25 -6
- package/dist/dev/runner-deps.js.map +1 -1
- package/dist/dev/runner.d.ts +8 -4
- package/dist/dev/runner.d.ts.map +1 -1
- package/dist/dev/runner.js +334 -66
- package/dist/dev/runner.js.map +1 -1
- package/dist/dev/supervisor.d.ts +1 -2
- package/dist/dev/supervisor.d.ts.map +1 -1
- package/dist/dev/supervisor.js +1 -1
- package/dist/dev/supervisor.js.map +1 -1
- package/dist/dev/vite-dev-server.d.ts +13 -2
- package/dist/dev/vite-dev-server.d.ts.map +1 -1
- package/dist/dev/vite-dev-server.js +30 -2
- package/dist/dev/vite-dev-server.js.map +1 -1
- package/dist/internal/entry-arg.d.ts +1 -7
- package/dist/internal/entry-arg.d.ts.map +1 -1
- package/dist/internal/entry-arg.js +18 -11
- package/dist/internal/entry-arg.js.map +1 -1
- package/dist/internal/module-loads.d.ts +7 -0
- package/dist/internal/module-loads.d.ts.map +1 -0
- package/dist/internal/module-loads.js +21 -0
- package/dist/internal/module-loads.js.map +1 -0
- package/dist/internal/prepare-project.d.ts +16 -0
- package/dist/internal/prepare-project.d.ts.map +1 -0
- package/dist/internal/prepare-project.js +15 -0
- package/dist/internal/prepare-project.js.map +1 -0
- package/dist/internal/run-cli-tool.d.ts +2 -1
- package/dist/internal/run-cli-tool.d.ts.map +1 -1
- package/dist/internal/run-cli-tool.js +15 -6
- package/dist/internal/run-cli-tool.js.map +1 -1
- package/dist/internal/staging-dir.d.ts +8 -1
- package/dist/internal/staging-dir.d.ts.map +1 -1
- package/dist/internal/staging-dir.js +38 -2
- package/dist/internal/staging-dir.js.map +1 -1
- package/dist/mcp/serialize-widget.d.ts +2 -1
- package/dist/mcp/serialize-widget.d.ts.map +1 -1
- package/dist/mcp/serialize-widget.js +1 -1
- package/dist/mcp/serialize-widget.js.map +1 -1
- package/dist/mcp/testing-loader.d.ts +5 -2
- package/dist/mcp/testing-loader.d.ts.map +1 -1
- package/dist/mcp/testing-loader.js +7 -3
- package/dist/mcp/testing-loader.js.map +1 -1
- package/dist/refresh-runtime.d.ts +2 -1
- package/dist/refresh-runtime.d.ts.map +1 -1
- package/dist/refresh-runtime.js +32 -2
- package/dist/refresh-runtime.js.map +1 -1
- package/dist/settings/schema.d.ts +1 -2
- package/dist/settings/schema.d.ts.map +1 -1
- package/dist/settings/schema.js +1 -1
- package/dist/settings/schema.js.map +1 -1
- package/dist/vite-plugins/asset-extensions.d.ts +2 -1
- package/dist/vite-plugins/asset-extensions.d.ts.map +1 -1
- package/dist/vite-plugins/asset-extensions.js +2 -1
- package/dist/vite-plugins/asset-extensions.js.map +1 -1
- package/dist/vite-plugins/asset-imports.d.ts +4 -0
- package/dist/vite-plugins/asset-imports.d.ts.map +1 -0
- package/dist/vite-plugins/asset-imports.js +88 -0
- package/dist/vite-plugins/asset-imports.js.map +1 -0
- package/dist/vite-plugins/asset-specifier.d.ts +5 -0
- package/dist/vite-plugins/asset-specifier.d.ts.map +1 -0
- package/dist/vite-plugins/asset-specifier.js +7 -0
- package/dist/vite-plugins/asset-specifier.js.map +1 -0
- package/dist/vite-plugins/esm-extension.d.ts +4 -0
- package/dist/vite-plugins/esm-extension.d.ts.map +1 -0
- package/dist/vite-plugins/esm-extension.js +4 -0
- package/dist/vite-plugins/esm-extension.js.map +1 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts +1 -3
- package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts.map +1 -1
- package/dist/vite-plugins/fast-refresh/swc-refresh.js +1 -1
- package/dist/vite-plugins/fast-refresh/swc-refresh.js.map +1 -1
- package/dist/vite-plugins/index.d.ts.map +1 -1
- package/dist/vite-plugins/index.js +4 -0
- package/dist/vite-plugins/index.js.map +1 -1
- package/dist/vite-plugins/resource-shared.d.ts +2 -1
- package/dist/vite-plugins/resource-shared.d.ts.map +1 -1
- package/dist/vite-plugins/resource-shared.js +2 -1
- package/dist/vite-plugins/resource-shared.js.map +1 -1
- package/dist/vite-plugins/resources.d.ts.map +1 -1
- package/dist/vite-plugins/resources.js +30 -29
- package/dist/vite-plugins/resources.js.map +1 -1
- package/dist/vite-plugins/self-contained.d.ts +4 -0
- package/dist/vite-plugins/self-contained.d.ts.map +1 -0
- package/dist/vite-plugins/self-contained.js +244 -0
- package/dist/vite-plugins/self-contained.js.map +1 -0
- package/dist/vite-plugins/settings.d.ts.map +1 -1
- package/dist/vite-plugins/settings.js +19 -40
- package/dist/vite-plugins/settings.js.map +1 -1
- package/dist/vite-plugins/store-links.d.ts +4 -0
- package/dist/vite-plugins/store-links.d.ts.map +1 -0
- package/dist/vite-plugins/store-links.js +19 -0
- package/dist/vite-plugins/store-links.js.map +1 -0
- package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
- package/dist/vite-plugins/undeclared-library.js +51 -12
- package/dist/vite-plugins/undeclared-library.js.map +1 -1
- package/dist/vite-plugins/worker.d.ts.map +1 -1
- package/dist/vite-plugins/worker.js +3 -1
- package/dist/vite-plugins/worker.js.map +1 -1
- package/env.d.ts +106 -25
- package/package.json +20 -13
- package/src/builder.ts +22 -4
- package/src/cli.ts +7 -2
- package/src/codegen/freshness.ts +2 -2
- package/src/codegen/report.ts +4 -0
- package/src/codegen/run-codegen.ts +48 -24
- package/src/codegen/store-resolver.ts +1 -1
- package/src/commands/build.ts +5 -6
- package/src/commands/codegen.ts +14 -1
- package/src/commands/deploy.ts +47 -0
- package/src/commands/dev.ts +4 -4
- package/src/commands/docs.ts +40 -4
- package/src/deploy/depends.ts +42 -0
- package/src/deploy/download.ts +148 -0
- package/src/deploy/freedesktop/copyright.ts +41 -0
- package/src/deploy/freedesktop/dbus-service.ts +19 -0
- package/src/deploy/freedesktop/desktop-entry.ts +102 -0
- package/src/deploy/freedesktop/ini.ts +39 -0
- package/src/deploy/freedesktop/metainfo-sections.ts +116 -0
- package/src/deploy/freedesktop/metainfo.ts +46 -0
- package/src/deploy/freedesktop/mime-package.ts +28 -0
- package/src/deploy/freedesktop/validate.ts +124 -0
- package/src/deploy/freedesktop/xml.ts +53 -0
- package/src/deploy/git.ts +20 -0
- package/src/deploy/install-hints.ts +111 -0
- package/src/deploy/nfpm/config.ts +153 -0
- package/src/deploy/nfpm/contents.ts +69 -0
- package/src/deploy/nfpm/description.ts +11 -0
- package/src/deploy/nfpm/optional.ts +8 -0
- package/src/deploy/nfpm/pack.ts +44 -0
- package/src/deploy/node-runtime/download.ts +48 -0
- package/src/deploy/node-runtime/elf.ts +145 -0
- package/src/deploy/node-runtime/guard.ts +29 -0
- package/src/deploy/node-runtime/index.ts +80 -0
- package/src/deploy/payload/copy-tree.ts +51 -0
- package/src/deploy/payload/icons.ts +80 -0
- package/src/deploy/payload/launcher.ts +27 -0
- package/src/deploy/payload/schemas.ts +27 -0
- package/src/deploy/payload/stage.ts +145 -0
- package/src/deploy/registry.ts +40 -0
- package/src/deploy/run-deploy.ts +241 -0
- package/src/deploy/settings/arch.ts +18 -0
- package/src/deploy/settings/categories.ts +39 -0
- package/src/deploy/settings/exec.ts +29 -0
- package/src/deploy/settings/identity.ts +133 -0
- package/src/deploy/settings/index.ts +189 -0
- package/src/deploy/settings/package-manifest.ts +68 -0
- package/src/deploy/settings/paths.ts +115 -0
- package/src/deploy/settings/screenshots.ts +125 -0
- package/src/deploy/settings/starter.ts +41 -0
- package/src/deploy/settings/version.ts +59 -0
- package/src/deploy/targets/appimage.ts +140 -0
- package/src/deploy/targets/deb.ts +6 -0
- package/src/deploy/targets/flatpak-manifest.ts +61 -0
- package/src/deploy/targets/flatpak-pnpm.ts +115 -0
- package/src/deploy/targets/flatpak-prebuilt.ts +59 -0
- package/src/deploy/targets/flatpak-source.ts +181 -0
- package/src/deploy/targets/flatpak-sources.ts +198 -0
- package/src/deploy/targets/flatpak.ts +144 -0
- package/src/deploy/targets/nfpm-target.ts +33 -0
- package/src/deploy/targets/rpm.ts +6 -0
- package/src/deploy/tools.ts +156 -0
- package/src/deploy/types.ts +174 -0
- package/src/deploy/vendored/appimagetool.ts +57 -0
- package/src/deploy/vendored/nfpm.ts +79 -0
- package/src/dev/change-queue.ts +59 -0
- package/src/dev/failure-tracker.ts +92 -0
- package/src/dev/missing-import.ts +32 -0
- package/src/dev/runner-deps.ts +34 -6
- package/src/dev/runner.ts +506 -102
- package/src/dev/supervisor.ts +0 -3
- package/src/dev/vite-dev-server.ts +54 -3
- package/src/internal/entry-arg.ts +25 -11
- package/src/internal/module-loads.ts +32 -0
- package/src/internal/prepare-project.ts +23 -0
- package/src/internal/run-cli-tool.ts +22 -6
- package/src/internal/staging-dir.ts +57 -2
- package/src/mcp/serialize-widget.ts +3 -2
- package/src/mcp/testing-loader.ts +19 -4
- package/src/refresh-runtime.ts +48 -2
- package/src/settings/schema.ts +0 -1
- package/src/vite-plugins/asset-extensions.ts +2 -1
- package/src/vite-plugins/asset-imports.ts +134 -0
- package/src/vite-plugins/asset-specifier.ts +9 -0
- package/src/vite-plugins/esm-extension.ts +4 -0
- package/src/vite-plugins/fast-refresh/swc-refresh.ts +1 -1
- package/src/vite-plugins/index.ts +4 -0
- package/src/vite-plugins/resource-shared.ts +2 -0
- package/src/vite-plugins/resources.ts +33 -33
- package/src/vite-plugins/self-contained.ts +352 -0
- package/src/vite-plugins/settings.ts +21 -48
- package/src/vite-plugins/store-links.ts +25 -0
- package/src/vite-plugins/undeclared-library.ts +74 -12
- package/src/vite-plugins/worker.ts +4 -1
- package/dist/internal.d.ts +0 -3
- package/dist/internal.d.ts.map +0 -1
- package/dist/internal.js +0 -3
- package/dist/internal.js.map +0 -1
- package/src/internal.ts +0 -2
package/dist/dev/runner.js
CHANGED
|
@@ -1,36 +1,198 @@
|
|
|
1
|
-
import { error } from "@gtkx/utils";
|
|
1
|
+
import { error, warn } from "@gtkx/utils";
|
|
2
|
+
import { loadModuleExclusively, withExclusiveLoad } from "../internal/module-loads.js";
|
|
3
|
+
import { createChangeQueue } from "./change-queue.js";
|
|
4
|
+
import { createFailureTracker } from "./failure-tracker.js";
|
|
5
|
+
import { isMissingImport, missingImportName } from "./missing-import.js";
|
|
2
6
|
import { createRefreshTracker } from "./refresh-tracker.js";
|
|
3
7
|
import { RESTART_EXIT_CODE } from "./supervisor.js";
|
|
4
|
-
import { createDevServerConfig } from "./vite-dev-server.js";
|
|
8
|
+
import { createDevServerConfig, isServerConfigFile, } from "./vite-dev-server.js";
|
|
5
9
|
const APPLICATION_MOUNT_TIMEOUT_MS = 10_000;
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
const OWNED_ID_EXIT_CODE = 1;
|
|
11
|
+
const LOAD_ATTEMPT_LIMIT = 5;
|
|
12
|
+
const WATCH_EVENTS = ["add", "change", "unlink"];
|
|
13
|
+
const SKIP_REASON = `did not settle in ${String(LOAD_ATTEMPT_LIMIT)} attempts; save it again to patch the window.`;
|
|
14
|
+
const DROPPED_REFRESH = "Fast Refresh dropped";
|
|
15
|
+
const SAVE_ACTION = "File changed";
|
|
16
|
+
const RETRY_ACTION = "Retrying pending save";
|
|
17
|
+
const announceFailure = (server, cause) => {
|
|
18
|
+
if (cause instanceof Error) {
|
|
19
|
+
server.ssrFixStacktrace(cause);
|
|
20
|
+
}
|
|
21
|
+
error("Application error; keeping the dev server up. Fix the error and save again.", cause);
|
|
22
|
+
};
|
|
23
|
+
const parkSession = (session) => {
|
|
24
|
+
session.deps.log("Waiting for a change to restart the application...");
|
|
25
|
+
};
|
|
26
|
+
const requestRestart = async (session) => {
|
|
27
|
+
session.deps.log("Full restart (process restart)");
|
|
28
|
+
try {
|
|
29
|
+
await session.server.close();
|
|
30
|
+
}
|
|
31
|
+
catch (error_) {
|
|
32
|
+
error("Error closing server before the restart:", error_);
|
|
33
|
+
}
|
|
34
|
+
return session.deps.exit(RESTART_EXIT_CODE);
|
|
35
|
+
};
|
|
36
|
+
const requiresRestart = (session, module) => {
|
|
37
|
+
if (session.failure.isDown()) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
const loadedExports = module.ssrModule;
|
|
41
|
+
if (!loadedExports) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
return !session.deps.isRefreshBoundary(loadedExports);
|
|
45
|
+
};
|
|
46
|
+
const invalidateChangedModule = (session, module) => {
|
|
47
|
+
session.server.moduleGraph.invalidateModule(module);
|
|
48
|
+
for (const importer of module.importers) {
|
|
49
|
+
session.server.moduleGraph.invalidateModule(importer);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const isEvaluationCurrent = (session, changedPath, loadedExports) => {
|
|
53
|
+
const evaluated = session.server.moduleGraph.getModuleById(changedPath);
|
|
54
|
+
if (!evaluated?.ssrTransformResult) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return evaluated.ssrModule === loadedExports;
|
|
10
58
|
};
|
|
11
|
-
const
|
|
12
|
-
const
|
|
59
|
+
const loadInvalidatedModule = (session, changedPath, module) => withExclusiveLoad(session.server, async () => {
|
|
60
|
+
const revision = await session.deps.readFileRevision(changedPath);
|
|
61
|
+
invalidateChangedModule(session, module);
|
|
62
|
+
const loadedExports = await session.server.ssrLoadModule(changedPath);
|
|
63
|
+
const settledRevision = await session.deps.readFileRevision(changedPath);
|
|
64
|
+
return {
|
|
65
|
+
loadedExports,
|
|
66
|
+
isSettled: settledRevision === revision && isEvaluationCurrent(session, changedPath, loadedExports),
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
const settleAttempt = async (session, changedPath, module) => {
|
|
70
|
+
const { loadedExports, isSettled } = await loadInvalidatedModule(session, changedPath, module);
|
|
71
|
+
if (isSettled) {
|
|
72
|
+
return { loadedExports, module };
|
|
73
|
+
}
|
|
74
|
+
return { loadedExports: null, module: session.server.moduleGraph.getModuleById(changedPath) ?? module };
|
|
75
|
+
};
|
|
76
|
+
const loadSettledExports = async (session, changedPath, changedModule) => {
|
|
77
|
+
let module = changedModule;
|
|
78
|
+
for (let round = 0; round < LOAD_ATTEMPT_LIMIT && !session.controller.isShuttingDown(); round++) {
|
|
79
|
+
const attempt = await settleAttempt(session, changedPath, module);
|
|
80
|
+
if (attempt.loadedExports) {
|
|
81
|
+
return attempt.loadedExports;
|
|
82
|
+
}
|
|
83
|
+
module = attempt.module;
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
};
|
|
87
|
+
const droppedExportName = (previous, current) => {
|
|
88
|
+
const kept = new Set(Object.keys(current));
|
|
89
|
+
for (const name of Object.keys(previous)) {
|
|
90
|
+
if (!kept.has(name)) {
|
|
91
|
+
return name;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
};
|
|
96
|
+
const unpatchedExportReason = (session, previous, current) => {
|
|
97
|
+
if (!previous) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
const dropped = droppedExportName(previous, current);
|
|
101
|
+
if (dropped !== null) {
|
|
102
|
+
return `no longer exports ${dropped}, which its importers still hold`;
|
|
103
|
+
}
|
|
104
|
+
const stale = session.deps.staleExportName(previous, current);
|
|
105
|
+
if (stale === null) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
return `renamed the component it exports as ${stale}, which the window is still rendering`;
|
|
109
|
+
};
|
|
110
|
+
const refreshChangedModule = async (session, changedPath, changedModule, previous) => {
|
|
111
|
+
const loadedExports = await loadSettledExports(session, changedPath, changedModule);
|
|
112
|
+
if (session.controller.isShuttingDown()) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (!loadedExports) {
|
|
116
|
+
warn(`Fast Refresh skipped: ${changedPath} ${SKIP_REASON}`);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (!session.deps.isRefreshBoundary(loadedExports)) {
|
|
120
|
+
await requestRestart(session);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const unpatched = unpatchedExportReason(session, previous, loadedExports);
|
|
124
|
+
if (unpatched !== null) {
|
|
125
|
+
warn(`${DROPPED_REFRESH}: ${changedPath} ${unpatched}`);
|
|
126
|
+
await requestRestart(session);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
session.pendingSaves.delete(changedPath);
|
|
130
|
+
session.deps.log("Running Fast Refresh...");
|
|
131
|
+
session.deps.performRefresh();
|
|
132
|
+
session.deps.log("Fast Refresh complete");
|
|
133
|
+
};
|
|
134
|
+
const applyModuleChange = async (session, changedPath, action) => {
|
|
135
|
+
const module = session.server.moduleGraph.getModuleById(changedPath);
|
|
13
136
|
if (!module) {
|
|
14
137
|
return;
|
|
15
138
|
}
|
|
16
|
-
deps.log(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
await requestRestart(server, deps);
|
|
139
|
+
session.deps.log(`${action}: ${changedPath}`);
|
|
140
|
+
if (requiresRestart(session, module)) {
|
|
141
|
+
await requestRestart(session);
|
|
20
142
|
return;
|
|
21
143
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
144
|
+
await refreshChangedModule(session, changedPath, module, module.ssrModule ?? null);
|
|
145
|
+
};
|
|
146
|
+
const awaitMissingImport = (session, changedPath, cause) => {
|
|
147
|
+
const missingName = missingImportName(cause);
|
|
148
|
+
if (missingName === null) {
|
|
149
|
+
session.pendingSaves.delete(changedPath);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
session.pendingSaves.set(changedPath, missingName);
|
|
153
|
+
};
|
|
154
|
+
const applySave = async (session, changedPath, action) => {
|
|
155
|
+
try {
|
|
156
|
+
await applyModuleChange(session, changedPath, action);
|
|
25
157
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
158
|
+
catch (error_) {
|
|
159
|
+
if (session.controller.isShuttingDown()) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
awaitMissingImport(session, changedPath, error_);
|
|
163
|
+
error("Hot reload failed:", error_);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
const savesAwaiting = (session, createdPath) => [...session.pendingSaves]
|
|
167
|
+
.filter(([, missingName]) => isMissingImport(createdPath, missingName))
|
|
168
|
+
.map(([changedPath]) => changedPath);
|
|
169
|
+
const retryPendingSaves = async (session, waiting) => {
|
|
170
|
+
for (const changedPath of waiting) {
|
|
171
|
+
if (session.controller.isShuttingDown()) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
session.pendingSaves.delete(changedPath);
|
|
175
|
+
await applySave(session, changedPath, RETRY_ACTION);
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
const handleFileCreate = async (session, createdPath) => {
|
|
179
|
+
const waiting = savesAwaiting(session, createdPath);
|
|
180
|
+
if (waiting.length === 0) {
|
|
31
181
|
return;
|
|
32
182
|
}
|
|
33
|
-
|
|
183
|
+
session.deps.log(`File created: ${createdPath}`);
|
|
184
|
+
if (session.failure.isDown()) {
|
|
185
|
+
await requestRestart(session);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
await retryPendingSaves(session, waiting);
|
|
189
|
+
};
|
|
190
|
+
const handleFileRemove = async (session, removedPath) => {
|
|
191
|
+
if (!session.server.moduleGraph.getModuleById(removedPath)) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
session.deps.log(`File removed: ${removedPath}`);
|
|
195
|
+
await requestRestart(session);
|
|
34
196
|
};
|
|
35
197
|
const createShutdownController = (server, deps) => {
|
|
36
198
|
let isShuttingDown = false;
|
|
@@ -47,82 +209,188 @@ const createShutdownController = (server, deps) => {
|
|
|
47
209
|
},
|
|
48
210
|
};
|
|
49
211
|
};
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
212
|
+
const restartForServerConfig = async (session, changedPath) => {
|
|
213
|
+
session.deps.log(`Server config changed: ${changedPath}`);
|
|
214
|
+
await requestRestart(session);
|
|
215
|
+
};
|
|
216
|
+
const applyChange = async (session, change) => {
|
|
217
|
+
if (session.controller.isShuttingDown()) {
|
|
218
|
+
return;
|
|
53
219
|
}
|
|
54
|
-
|
|
55
|
-
|
|
220
|
+
if (isServerConfigFile(session.server.config, change.path)) {
|
|
221
|
+
await restartForServerConfig(session, change.path);
|
|
222
|
+
return;
|
|
56
223
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (controller.isShuttingDown()) {
|
|
224
|
+
if (change.event === "add") {
|
|
225
|
+
await handleFileCreate(session, change.path);
|
|
60
226
|
return;
|
|
61
227
|
}
|
|
62
|
-
|
|
228
|
+
if (change.event === "unlink") {
|
|
229
|
+
await handleFileRemove(session, change.path);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
await applySave(session, change.path, SAVE_ACTION);
|
|
233
|
+
};
|
|
234
|
+
const watchProjectFiles = (session) => {
|
|
235
|
+
const queue = createChangeQueue((change) => applyChange(session, change));
|
|
236
|
+
for (const event of WATCH_EVENTS) {
|
|
237
|
+
session.server.watcher.on(event, (path) => {
|
|
238
|
+
queue.enqueue({ event, path });
|
|
239
|
+
});
|
|
240
|
+
}
|
|
63
241
|
};
|
|
64
|
-
const onShutdownSignal = (
|
|
65
|
-
if (controller.isShuttingDown()) {
|
|
242
|
+
const onShutdownSignal = (session) => async () => {
|
|
243
|
+
if (session.controller.isShuttingDown()) {
|
|
66
244
|
return;
|
|
67
245
|
}
|
|
68
|
-
deps.log("Received shutdown signal - stopping dev runner...");
|
|
69
|
-
await controller.shutdown(() => {
|
|
70
|
-
deps.quitDefaultApplication();
|
|
246
|
+
session.deps.log("Received shutdown signal - stopping dev runner...");
|
|
247
|
+
await session.controller.shutdown(() => {
|
|
248
|
+
session.deps.quitDefaultApplication();
|
|
71
249
|
});
|
|
72
250
|
};
|
|
73
|
-
const closeAndExit = async (
|
|
251
|
+
const closeAndExit = async (session, code = 0) => {
|
|
74
252
|
try {
|
|
75
|
-
await controller.shutdown(() => undefined);
|
|
253
|
+
await session.controller.shutdown(() => undefined);
|
|
76
254
|
}
|
|
77
255
|
catch (error_) {
|
|
78
256
|
error("Error closing server:", error_);
|
|
79
|
-
return deps.exit(1);
|
|
257
|
+
return session.deps.exit(1);
|
|
258
|
+
}
|
|
259
|
+
return session.deps.exit(code);
|
|
260
|
+
};
|
|
261
|
+
const isSessionInactive = (session) => {
|
|
262
|
+
if (session.controller.isShuttingDown()) {
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
if (!session.failure.isDown()) {
|
|
266
|
+
return false;
|
|
80
267
|
}
|
|
81
|
-
|
|
268
|
+
parkSession(session);
|
|
269
|
+
return true;
|
|
82
270
|
};
|
|
83
|
-
const
|
|
84
|
-
|
|
271
|
+
const stopForApplicationQuit = (session) => {
|
|
272
|
+
session.deps.log("Application quit - stopping dev runner...");
|
|
273
|
+
return closeAndExit(session);
|
|
274
|
+
};
|
|
275
|
+
const settleUnmount = (session, wasRefreshing) => {
|
|
276
|
+
if (isSessionInactive(session)) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
if (!wasRefreshing) {
|
|
280
|
+
void stopForApplicationQuit(session);
|
|
85
281
|
return;
|
|
86
282
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
283
|
+
session.deps.log("Application unmounted during Fast Refresh - restarting dev runner...");
|
|
284
|
+
session.deps.exit(RESTART_EXIT_CODE);
|
|
285
|
+
};
|
|
286
|
+
const handleApplicationShutdown = (session) => {
|
|
287
|
+
if (isSessionInactive(session)) {
|
|
288
|
+
return;
|
|
90
289
|
}
|
|
91
|
-
|
|
92
|
-
|
|
290
|
+
const wasRefreshing = session.refreshTracker.isRefreshing();
|
|
291
|
+
session.failure.settleUnmount(() => {
|
|
292
|
+
settleUnmount(session, wasRefreshing);
|
|
293
|
+
});
|
|
294
|
+
};
|
|
295
|
+
const onApplicationShutdown = (session) => () => {
|
|
296
|
+
handleApplicationShutdown(session);
|
|
93
297
|
};
|
|
94
298
|
const refusedExitCode = () => (process.exitCode === undefined ? 1 : Number(process.exitCode));
|
|
95
|
-
const connectApplication = async (
|
|
96
|
-
deps
|
|
299
|
+
const connectApplication = async (session, liveApplicationId) => {
|
|
300
|
+
const { deps, server } = session;
|
|
301
|
+
deps.watchApplicationShutdown(onApplicationShutdown(session));
|
|
97
302
|
const applicationId = (await deps.getConfiguredApplicationId(process.cwd())) ?? liveApplicationId;
|
|
98
303
|
deps.log(`Connected application ID: ${applicationId}`);
|
|
99
|
-
await deps.startMcpClient(applicationId, (id) => server
|
|
304
|
+
await deps.startMcpClient(applicationId, (id) => loadModuleExclusively(server, id));
|
|
305
|
+
};
|
|
306
|
+
const stopForOwnedApplicationId = async (session, liveApplicationId) => {
|
|
307
|
+
session.deps.log(`Another process already owns ${liveApplicationId}, so this session can never show a window - ` +
|
|
308
|
+
"stopping dev runner. Quit that instance or change applicationId, then start gtkx dev again.");
|
|
309
|
+
await closeAndExit(session, OWNED_ID_EXIT_CODE);
|
|
310
|
+
};
|
|
311
|
+
const stopForStoppedApplication = async (session, instance) => {
|
|
312
|
+
if (session.failure.hasReported()) {
|
|
313
|
+
session.deps.log("Application stopped before the dev runner attached.");
|
|
314
|
+
session.failure.fail();
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
if (instance === "shutDown") {
|
|
318
|
+
await stopForApplicationQuit(session);
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
session.deps.log("Application refused its command line - stopping dev runner...");
|
|
322
|
+
await closeAndExit(session, refusedExitCode());
|
|
100
323
|
};
|
|
101
|
-
const
|
|
102
|
-
const
|
|
324
|
+
const connectLiveApplication = async (session, liveApplicationId) => {
|
|
325
|
+
const instance = session.deps.getApplicationInstance();
|
|
326
|
+
if (instance === "primary") {
|
|
327
|
+
await connectApplication(session, liveApplicationId);
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
if (instance === "remote") {
|
|
331
|
+
await stopForOwnedApplicationId(session, liveApplicationId);
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
await stopForStoppedApplication(session, instance);
|
|
335
|
+
};
|
|
336
|
+
const attachApplication = async (session) => {
|
|
337
|
+
const { deps, failure } = session;
|
|
338
|
+
const liveApplicationId = await deps.waitForApplicationId(APPLICATION_MOUNT_TIMEOUT_MS, () => !failure.isDown());
|
|
339
|
+
if (failure.isDown()) {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
103
342
|
if (liveApplicationId === null) {
|
|
104
343
|
deps.log("Entry did not mount an application - MCP client not started.");
|
|
105
344
|
return;
|
|
106
345
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
346
|
+
await connectLiveApplication(session, liveApplicationId);
|
|
347
|
+
};
|
|
348
|
+
const loadEntry = async (session, entryPath) => {
|
|
349
|
+
session.deps.log(`Loading entry: ${entryPath}`);
|
|
350
|
+
try {
|
|
351
|
+
await loadModuleExclusively(session.server, entryPath);
|
|
352
|
+
}
|
|
353
|
+
catch (error_) {
|
|
354
|
+
awaitMissingImport(session, entryPath, error_);
|
|
355
|
+
session.failure.fail(error_);
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
const hasApplicationStopped = (instance) => instance === "shutDown" || instance === "unregistered";
|
|
359
|
+
const isApplicationLost = (session) => session.failure.hasReported() && hasApplicationStopped(session.deps.getApplicationInstance());
|
|
360
|
+
const announceReady = (session) => {
|
|
361
|
+
if (isApplicationLost(session)) {
|
|
362
|
+
session.failure.fail();
|
|
363
|
+
}
|
|
364
|
+
if (isSessionInactive(session)) {
|
|
365
|
+
return;
|
|
110
366
|
}
|
|
111
|
-
|
|
367
|
+
session.deps.log("HMR enabled - watching for changes...");
|
|
368
|
+
};
|
|
369
|
+
const createSession = (server, deps) => {
|
|
370
|
+
const refreshTracker = createRefreshTracker(deps.performRefresh);
|
|
371
|
+
return {
|
|
372
|
+
server,
|
|
373
|
+
deps: { ...deps, performRefresh: refreshTracker.performRefresh },
|
|
374
|
+
controller: createShutdownController(server, deps),
|
|
375
|
+
refreshTracker,
|
|
376
|
+
failure: createFailureTracker((cause) => {
|
|
377
|
+
announceFailure(server, cause);
|
|
378
|
+
}, refreshTracker.isRefreshing),
|
|
379
|
+
pendingSaves: new Map(),
|
|
380
|
+
};
|
|
112
381
|
};
|
|
113
382
|
const createDevRunner = (deps) => ({
|
|
114
383
|
async run(entryPath) {
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
await
|
|
124
|
-
|
|
125
|
-
deps.log("HMR enabled - watching for changes...");
|
|
384
|
+
const server = await deps.createServer(createDevServerConfig(process.cwd(), deps.plugins()));
|
|
385
|
+
const session = createSession(server, deps);
|
|
386
|
+
deps.installShutdownHandlers(onShutdownSignal(session));
|
|
387
|
+
deps.watchUncaughtErrors((cause) => {
|
|
388
|
+
session.failure.report(cause);
|
|
389
|
+
});
|
|
390
|
+
watchProjectFiles(session);
|
|
391
|
+
await loadEntry(session, entryPath);
|
|
392
|
+
await attachApplication(session);
|
|
393
|
+
announceReady(session);
|
|
126
394
|
},
|
|
127
395
|
});
|
|
128
396
|
export { createDevRunner };
|
package/dist/dev/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/dev/runner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InlineConfig, Plugin } from \"vite\";\nimport { error } from \"@gtkx/utils\";\nimport { createRefreshTracker, type RefreshTracker } from \"./refresh-tracker.js\";\nimport { RESTART_EXIT_CODE } from \"./supervisor.js\";\nimport { createDevServerConfig, type DevServer } from \"./vite-dev-server.js\";\n\ntype DevRunnerDeps = {\n createServer(config: InlineConfig): Promise<DevServer>;\n waitForApplicationId(timeoutMs: number): Promise<string | null>;\n getConfiguredApplicationId(root: string): Promise<string | undefined>;\n startMcpClient(\n applicationId: string,\n loadAppModule: (id: string) => Promise<Record<string, unknown>>,\n ): Promise<unknown>;\n stopMcpClient(): void;\n watchApplicationShutdown(onShutdown: () => void): void;\n isApplicationRegistered(): boolean;\n installShutdownHandlers(onSignal: () => void | Promise<void>): void;\n quitDefaultApplication(): void;\n performRefresh: () => void;\n isRefreshBoundary(module: Record<string, unknown>): boolean;\n plugins(): Plugin[];\n log(message: string): void;\n exit(code: number): never;\n};\n\ntype DevRunner = {\n run(entryPath: string): Promise<void>;\n};\n\ntype ShutdownController = {\n isShuttingDown: () => boolean;\n shutdown: (quitApplication: () => void) => Promise<void>;\n};\n\nconst APPLICATION_MOUNT_TIMEOUT_MS = 10_000;\n\nconst requestRestart = async (server: DevServer, deps: DevRunnerDeps): Promise<never> => {\n deps.log(\"Full restart (process restart)\");\n await server.close();\n\n return deps.exit(RESTART_EXIT_CODE);\n};\n\nconst handleFileChange = async (server: DevServer, deps: DevRunnerDeps, changedPath: string): Promise<void> => {\n const module = server.moduleGraph.getModuleById(changedPath);\n\n if (!module) {\n return;\n }\n\n deps.log(`File changed: ${changedPath}`);\n const loadedExports = module.ssrModule;\n\n if (loadedExports && !deps.isRefreshBoundary(loadedExports)) {\n await requestRestart(server, deps);\n\n return;\n }\n\n server.moduleGraph.invalidateModule(module);\n\n for (const importer of module.importers) {\n server.moduleGraph.invalidateModule(importer);\n }\n\n const newMod = await server.ssrLoadModule(changedPath);\n\n if (deps.isRefreshBoundary(newMod)) {\n deps.log(\"Running Fast Refresh...\");\n deps.performRefresh();\n deps.log(\"Fast Refresh complete\");\n\n return;\n }\n\n await requestRestart(server, deps);\n};\n\nconst createShutdownController = (server: DevServer, deps: DevRunnerDeps): ShutdownController => {\n let isShuttingDown = false;\n\n return {\n isShuttingDown: () => isShuttingDown,\n shutdown: async (quitApplication: () => void): Promise<void> => {\n if (isShuttingDown) {\n return;\n }\n\n isShuttingDown = true;\n quitApplication();\n deps.stopMcpClient();\n await server.close();\n },\n };\n};\n\nconst reloadChangedFile = async (server: DevServer, deps: DevRunnerDeps, changedPath: string): Promise<void> => {\n try {\n await handleFileChange(server, deps, changedPath);\n } catch (error_) {\n error(\"Hot reload failed:\", error_);\n }\n};\n\nconst onFileChange =\n (server: DevServer, deps: DevRunnerDeps, controller: ShutdownController): ((changedPath: string) => void) =>\n (changedPath) => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n void reloadChangedFile(server, deps, changedPath);\n };\n\nconst onShutdownSignal =\n (deps: DevRunnerDeps, controller: ShutdownController): (() => Promise<void>) =>\n async () => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n deps.log(\"Received shutdown signal - stopping dev runner...\");\n\n await controller.shutdown(() => {\n deps.quitDefaultApplication();\n });\n };\n\nconst closeAndExit = async (\n deps: DevRunnerDeps,\n controller: ShutdownController,\n code = 0,\n): Promise<never> => {\n try {\n await controller.shutdown((): void => undefined);\n } catch (error_) {\n error(\"Error closing server:\", error_);\n\n return deps.exit(1);\n }\n\n return deps.exit(code);\n};\n\nconst onApplicationShutdown =\n (deps: DevRunnerDeps, refreshTracker: RefreshTracker, controller: ShutdownController): (() => void) =>\n () => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n if (refreshTracker.isRefreshing()) {\n deps.log(\"Application unmounted during Fast Refresh - restarting dev runner...\");\n\n return deps.exit(RESTART_EXIT_CODE);\n }\n\n deps.log(\"Application quit - stopping dev runner...\");\n void closeAndExit(deps, controller);\n };\n\nconst refusedExitCode = (): number => (process.exitCode === undefined ? 1 : Number(process.exitCode));\n\nconst connectApplication = async (\n deps: DevRunnerDeps,\n server: DevServer,\n liveApplicationId: string,\n tracked: { refreshTracker: RefreshTracker; controller: ShutdownController },\n): Promise<void> => {\n deps.watchApplicationShutdown(onApplicationShutdown(deps, tracked.refreshTracker, tracked.controller));\n const applicationId = (await deps.getConfiguredApplicationId(process.cwd())) ?? liveApplicationId;\n deps.log(`Connected application ID: ${applicationId}`);\n await deps.startMcpClient(applicationId, (id) => server.ssrLoadModule(id));\n};\n\nconst attachApplication = async (\n deps: DevRunnerDeps,\n server: DevServer,\n tracked: { refreshTracker: RefreshTracker; controller: ShutdownController },\n): Promise<void> => {\n const liveApplicationId = await deps.waitForApplicationId(APPLICATION_MOUNT_TIMEOUT_MS);\n\n if (liveApplicationId === null) {\n deps.log(\"Entry did not mount an application - MCP client not started.\");\n\n return;\n }\n\n if (!deps.isApplicationRegistered()) {\n deps.log(\"Application refused its command line - stopping dev runner...\");\n\n return closeAndExit(deps, tracked.controller, refusedExitCode());\n }\n\n await connectApplication(deps, server, liveApplicationId, tracked);\n};\n\nconst createDevRunner = (deps: DevRunnerDeps): DevRunner => ({\n async run(entryPath: string): Promise<void> {\n const root = process.cwd();\n const server = await deps.createServer(createDevServerConfig(root, deps.plugins()));\n const refreshTracker = createRefreshTracker(deps.performRefresh);\n const refreshTrackingDeps: DevRunnerDeps = { ...deps, performRefresh: refreshTracker.performRefresh };\n const controller = createShutdownController(server, deps);\n deps.installShutdownHandlers(onShutdownSignal(deps, controller));\n server.watcher.on(\"change\", onFileChange(server, refreshTrackingDeps, controller));\n deps.log(`Loading entry: ${entryPath}`);\n await server.ssrLoadModule(entryPath);\n await attachApplication(deps, server, { refreshTracker, controller });\n deps.log(\"HMR enabled - watching for changes...\");\n },\n});\n\nexport type { DevServer } from \"./vite-dev-server.js\";\nexport { createDevRunner, type DevRunnerDeps };\n"]}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/dev/runner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ApplicationInstance } from \"@gtkx/runtime/internal\";\nimport type { InlineConfig, Plugin } from \"vite\";\nimport { error, warn } from \"@gtkx/utils\";\nimport { loadModuleExclusively, withExclusiveLoad } from \"../internal/module-loads.js\";\nimport { createChangeQueue, type WatchedChange } from \"./change-queue.js\";\nimport { createFailureTracker, type FailureTracker } from \"./failure-tracker.js\";\nimport { isMissingImport, missingImportName } from \"./missing-import.js\";\nimport { createRefreshTracker, type RefreshTracker } from \"./refresh-tracker.js\";\nimport { RESTART_EXIT_CODE } from \"./supervisor.js\";\nimport {\n createDevServerConfig,\n type DevServer,\n type DevServerChangedModule,\n type DevServerWatchEvent,\n isServerConfigFile,\n} from \"./vite-dev-server.js\";\n\ntype LoadAppModule = (id: string) => Promise<Record<string, unknown>>;\n\ntype DevRunnerDeps = {\n createServer(config: InlineConfig): Promise<DevServer>;\n waitForApplicationId(timeoutMs: number, shouldKeepWaiting: () => boolean): Promise<string | null>;\n getConfiguredApplicationId(root: string): Promise<string | undefined>;\n startMcpClient(applicationId: string, loadAppModule: LoadAppModule): Promise<unknown>;\n stopMcpClient(): void;\n watchApplicationShutdown(onShutdown: () => void): void;\n watchUncaughtErrors(onUncaughtError: (cause: unknown) => void): void;\n getApplicationInstance(): ApplicationInstance;\n installShutdownHandlers(onSignal: () => void | Promise<void>): void;\n quitDefaultApplication(): void;\n performRefresh: () => void;\n isRefreshBoundary(module: Record<string, unknown>): boolean;\n staleExportName(previous: Record<string, unknown>, current: Record<string, unknown>): string | null;\n readFileRevision(path: string): Promise<string>;\n plugins(): Plugin[];\n log(message: string): void;\n exit(code: number): never;\n};\n\ntype DevRunner = {\n run(entryPath: string): Promise<void>;\n};\n\ntype ShutdownController = {\n isShuttingDown: () => boolean;\n shutdown: (quitApplication: () => void) => Promise<void>;\n};\n\ntype DevSession = {\n server: DevServer;\n deps: DevRunnerDeps;\n controller: ShutdownController;\n refreshTracker: RefreshTracker;\n failure: FailureTracker;\n pendingSaves: Map<string, string>;\n};\n\ntype SettledLoad = {\n loadedExports: Record<string, unknown>;\n isSettled: boolean;\n};\n\ntype SettleAttempt = {\n loadedExports: Record<string, unknown> | null;\n module: DevServerChangedModule;\n};\n\nconst APPLICATION_MOUNT_TIMEOUT_MS = 10_000;\nconst OWNED_ID_EXIT_CODE = 1;\nconst LOAD_ATTEMPT_LIMIT = 5;\nconst WATCH_EVENTS: DevServerWatchEvent[] = [\"add\", \"change\", \"unlink\"];\nconst SKIP_REASON = `did not settle in ${String(LOAD_ATTEMPT_LIMIT)} attempts; save it again to patch the window.`;\nconst DROPPED_REFRESH = \"Fast Refresh dropped\";\nconst SAVE_ACTION = \"File changed\";\nconst RETRY_ACTION = \"Retrying pending save\";\n\nconst announceFailure = (server: DevServer, cause: unknown): void => {\n if (cause instanceof Error) {\n server.ssrFixStacktrace(cause);\n }\n\n error(\"Application error; keeping the dev server up. Fix the error and save again.\", cause);\n};\n\nconst parkSession = (session: DevSession): void => {\n session.deps.log(\"Waiting for a change to restart the application...\");\n};\n\nconst requestRestart = async (session: DevSession): Promise<never> => {\n session.deps.log(\"Full restart (process restart)\");\n\n try {\n await session.server.close();\n } catch (error_) {\n error(\"Error closing server before the restart:\", error_);\n }\n\n return session.deps.exit(RESTART_EXIT_CODE);\n};\n\nconst requiresRestart = (session: DevSession, module: DevServerChangedModule): boolean => {\n if (session.failure.isDown()) {\n return true;\n }\n\n const loadedExports = module.ssrModule;\n\n if (!loadedExports) {\n return false;\n }\n\n return !session.deps.isRefreshBoundary(loadedExports);\n};\n\nconst invalidateChangedModule = (session: DevSession, module: DevServerChangedModule): void => {\n session.server.moduleGraph.invalidateModule(module);\n\n for (const importer of module.importers) {\n session.server.moduleGraph.invalidateModule(importer);\n }\n};\n\nconst isEvaluationCurrent = (\n session: DevSession,\n changedPath: string,\n loadedExports: Record<string, unknown>,\n): boolean => {\n const evaluated = session.server.moduleGraph.getModuleById(changedPath);\n\n if (!evaluated?.ssrTransformResult) {\n return false;\n }\n\n return evaluated.ssrModule === loadedExports;\n};\n\nconst loadInvalidatedModule = (\n session: DevSession,\n changedPath: string,\n module: DevServerChangedModule,\n): Promise<SettledLoad> =>\n withExclusiveLoad(session.server, async () => {\n const revision = await session.deps.readFileRevision(changedPath);\n invalidateChangedModule(session, module);\n const loadedExports = await session.server.ssrLoadModule(changedPath);\n const settledRevision = await session.deps.readFileRevision(changedPath);\n\n return {\n loadedExports,\n isSettled: settledRevision === revision && isEvaluationCurrent(session, changedPath, loadedExports),\n };\n });\n\nconst settleAttempt = async (\n session: DevSession,\n changedPath: string,\n module: DevServerChangedModule,\n): Promise<SettleAttempt> => {\n const { loadedExports, isSettled } = await loadInvalidatedModule(session, changedPath, module);\n\n if (isSettled) {\n return { loadedExports, module };\n }\n\n return { loadedExports: null, module: session.server.moduleGraph.getModuleById(changedPath) ?? module };\n};\n\nconst loadSettledExports = async (\n session: DevSession,\n changedPath: string,\n changedModule: DevServerChangedModule,\n): Promise<Record<string, unknown> | null> => {\n let module = changedModule;\n\n for (let round = 0; round < LOAD_ATTEMPT_LIMIT && !session.controller.isShuttingDown(); round++) {\n const attempt = await settleAttempt(session, changedPath, module);\n\n if (attempt.loadedExports) {\n return attempt.loadedExports;\n }\n\n module = attempt.module;\n }\n\n return null;\n};\n\nconst droppedExportName = (previous: Record<string, unknown>, current: Record<string, unknown>): string | null => {\n const kept = new Set(Object.keys(current));\n\n for (const name of Object.keys(previous)) {\n if (!kept.has(name)) {\n return name;\n }\n }\n\n return null;\n};\n\nconst unpatchedExportReason = (\n session: DevSession,\n previous: Record<string, unknown> | null,\n current: Record<string, unknown>,\n): string | null => {\n if (!previous) {\n return null;\n }\n\n const dropped = droppedExportName(previous, current);\n\n if (dropped !== null) {\n return `no longer exports ${dropped}, which its importers still hold`;\n }\n\n const stale = session.deps.staleExportName(previous, current);\n\n if (stale === null) {\n return null;\n }\n\n return `renamed the component it exports as ${stale}, which the window is still rendering`;\n};\n\nconst refreshChangedModule = async (\n session: DevSession,\n changedPath: string,\n changedModule: DevServerChangedModule,\n previous: Record<string, unknown> | null,\n): Promise<void> => {\n const loadedExports = await loadSettledExports(session, changedPath, changedModule);\n\n if (session.controller.isShuttingDown()) {\n return;\n }\n\n if (!loadedExports) {\n warn(`Fast Refresh skipped: ${changedPath} ${SKIP_REASON}`);\n\n return;\n }\n\n if (!session.deps.isRefreshBoundary(loadedExports)) {\n await requestRestart(session);\n\n return;\n }\n\n const unpatched = unpatchedExportReason(session, previous, loadedExports);\n\n if (unpatched !== null) {\n warn(`${DROPPED_REFRESH}: ${changedPath} ${unpatched}`);\n await requestRestart(session);\n\n return;\n }\n\n session.pendingSaves.delete(changedPath);\n session.deps.log(\"Running Fast Refresh...\");\n session.deps.performRefresh();\n session.deps.log(\"Fast Refresh complete\");\n};\n\nconst applyModuleChange = async (session: DevSession, changedPath: string, action: string): Promise<void> => {\n const module = session.server.moduleGraph.getModuleById(changedPath);\n\n if (!module) {\n return;\n }\n\n session.deps.log(`${action}: ${changedPath}`);\n\n if (requiresRestart(session, module)) {\n await requestRestart(session);\n\n return;\n }\n\n await refreshChangedModule(session, changedPath, module, module.ssrModule ?? null);\n};\n\nconst awaitMissingImport = (session: DevSession, changedPath: string, cause: unknown): void => {\n const missingName = missingImportName(cause);\n\n if (missingName === null) {\n session.pendingSaves.delete(changedPath);\n\n return;\n }\n\n session.pendingSaves.set(changedPath, missingName);\n};\n\nconst applySave = async (session: DevSession, changedPath: string, action: string): Promise<void> => {\n try {\n await applyModuleChange(session, changedPath, action);\n } catch (error_) {\n if (session.controller.isShuttingDown()) {\n return;\n }\n\n awaitMissingImport(session, changedPath, error_);\n error(\"Hot reload failed:\", error_);\n }\n};\n\nconst savesAwaiting = (session: DevSession, createdPath: string): string[] =>\n [...session.pendingSaves]\n .filter(([, missingName]) => isMissingImport(createdPath, missingName))\n .map(([changedPath]) => changedPath);\n\nconst retryPendingSaves = async (session: DevSession, waiting: string[]): Promise<void> => {\n for (const changedPath of waiting) {\n if (session.controller.isShuttingDown()) {\n return;\n }\n\n session.pendingSaves.delete(changedPath);\n await applySave(session, changedPath, RETRY_ACTION);\n }\n};\n\nconst handleFileCreate = async (session: DevSession, createdPath: string): Promise<void> => {\n const waiting = savesAwaiting(session, createdPath);\n\n if (waiting.length === 0) {\n return;\n }\n\n session.deps.log(`File created: ${createdPath}`);\n\n if (session.failure.isDown()) {\n await requestRestart(session);\n\n return;\n }\n\n await retryPendingSaves(session, waiting);\n};\n\nconst handleFileRemove = async (session: DevSession, removedPath: string): Promise<void> => {\n if (!session.server.moduleGraph.getModuleById(removedPath)) {\n return;\n }\n\n session.deps.log(`File removed: ${removedPath}`);\n await requestRestart(session);\n};\n\nconst createShutdownController = (server: DevServer, deps: DevRunnerDeps): ShutdownController => {\n let isShuttingDown = false;\n\n return {\n isShuttingDown: () => isShuttingDown,\n shutdown: async (quitApplication: () => void): Promise<void> => {\n if (isShuttingDown) {\n return;\n }\n\n isShuttingDown = true;\n quitApplication();\n deps.stopMcpClient();\n await server.close();\n },\n };\n};\n\nconst restartForServerConfig = async (session: DevSession, changedPath: string): Promise<void> => {\n session.deps.log(`Server config changed: ${changedPath}`);\n await requestRestart(session);\n};\n\nconst applyChange = async (session: DevSession, change: WatchedChange): Promise<void> => {\n if (session.controller.isShuttingDown()) {\n return;\n }\n\n if (isServerConfigFile(session.server.config, change.path)) {\n await restartForServerConfig(session, change.path);\n\n return;\n }\n\n if (change.event === \"add\") {\n await handleFileCreate(session, change.path);\n\n return;\n }\n\n if (change.event === \"unlink\") {\n await handleFileRemove(session, change.path);\n\n return;\n }\n\n await applySave(session, change.path, SAVE_ACTION);\n};\n\nconst watchProjectFiles = (session: DevSession): void => {\n const queue = createChangeQueue((change) => applyChange(session, change));\n\n for (const event of WATCH_EVENTS) {\n session.server.watcher.on(event, (path) => {\n queue.enqueue({ event, path });\n });\n }\n};\n\nconst onShutdownSignal = (session: DevSession): (() => Promise<void>) => async () => {\n if (session.controller.isShuttingDown()) {\n return;\n }\n\n session.deps.log(\"Received shutdown signal - stopping dev runner...\");\n\n await session.controller.shutdown(() => {\n session.deps.quitDefaultApplication();\n });\n};\n\nconst closeAndExit = async (session: DevSession, code = 0): Promise<never> => {\n try {\n await session.controller.shutdown((): void => undefined);\n } catch (error_) {\n error(\"Error closing server:\", error_);\n\n return session.deps.exit(1);\n }\n\n return session.deps.exit(code);\n};\n\nconst isSessionInactive = (session: DevSession): boolean => {\n if (session.controller.isShuttingDown()) {\n return true;\n }\n\n if (!session.failure.isDown()) {\n return false;\n }\n\n parkSession(session);\n\n return true;\n};\n\nconst stopForApplicationQuit = (session: DevSession): Promise<never> => {\n session.deps.log(\"Application quit - stopping dev runner...\");\n\n return closeAndExit(session);\n};\n\nconst settleUnmount = (session: DevSession, wasRefreshing: boolean): void => {\n if (isSessionInactive(session)) {\n return;\n }\n\n if (!wasRefreshing) {\n void stopForApplicationQuit(session);\n\n return;\n }\n\n session.deps.log(\"Application unmounted during Fast Refresh - restarting dev runner...\");\n session.deps.exit(RESTART_EXIT_CODE);\n};\n\nconst handleApplicationShutdown = (session: DevSession): void => {\n if (isSessionInactive(session)) {\n return;\n }\n\n const wasRefreshing = session.refreshTracker.isRefreshing();\n\n session.failure.settleUnmount(() => {\n settleUnmount(session, wasRefreshing);\n });\n};\n\nconst onApplicationShutdown = (session: DevSession): (() => void) => () => {\n handleApplicationShutdown(session);\n};\n\nconst refusedExitCode = (): number => (process.exitCode === undefined ? 1 : Number(process.exitCode));\n\nconst connectApplication = async (session: DevSession, liveApplicationId: string): Promise<void> => {\n const { deps, server } = session;\n deps.watchApplicationShutdown(onApplicationShutdown(session));\n const applicationId = (await deps.getConfiguredApplicationId(process.cwd())) ?? liveApplicationId;\n deps.log(`Connected application ID: ${applicationId}`);\n await deps.startMcpClient(applicationId, (id) => loadModuleExclusively(server, id));\n};\n\nconst stopForOwnedApplicationId = async (session: DevSession, liveApplicationId: string): Promise<void> => {\n session.deps.log(\n `Another process already owns ${liveApplicationId}, so this session can never show a window - ` +\n \"stopping dev runner. Quit that instance or change applicationId, then start gtkx dev again.\",\n );\n\n await closeAndExit(session, OWNED_ID_EXIT_CODE);\n};\n\nconst stopForStoppedApplication = async (session: DevSession, instance: ApplicationInstance): Promise<void> => {\n if (session.failure.hasReported()) {\n session.deps.log(\"Application stopped before the dev runner attached.\");\n session.failure.fail();\n\n return;\n }\n\n if (instance === \"shutDown\") {\n await stopForApplicationQuit(session);\n\n return;\n }\n\n session.deps.log(\"Application refused its command line - stopping dev runner...\");\n await closeAndExit(session, refusedExitCode());\n};\n\nconst connectLiveApplication = async (session: DevSession, liveApplicationId: string): Promise<void> => {\n const instance = session.deps.getApplicationInstance();\n\n if (instance === \"primary\") {\n await connectApplication(session, liveApplicationId);\n\n return;\n }\n\n if (instance === \"remote\") {\n await stopForOwnedApplicationId(session, liveApplicationId);\n\n return;\n }\n\n await stopForStoppedApplication(session, instance);\n};\n\nconst attachApplication = async (session: DevSession): Promise<void> => {\n const { deps, failure } = session;\n\n const liveApplicationId = await deps.waitForApplicationId(\n APPLICATION_MOUNT_TIMEOUT_MS,\n () => !failure.isDown(),\n );\n\n if (failure.isDown()) {\n return;\n }\n\n if (liveApplicationId === null) {\n deps.log(\"Entry did not mount an application - MCP client not started.\");\n\n return;\n }\n\n await connectLiveApplication(session, liveApplicationId);\n};\n\nconst loadEntry = async (session: DevSession, entryPath: string): Promise<void> => {\n session.deps.log(`Loading entry: ${entryPath}`);\n\n try {\n await loadModuleExclusively(session.server, entryPath);\n } catch (error_) {\n awaitMissingImport(session, entryPath, error_);\n session.failure.fail(error_);\n }\n};\n\nconst hasApplicationStopped = (instance: ApplicationInstance): boolean =>\n instance === \"shutDown\" || instance === \"unregistered\";\n\nconst isApplicationLost = (session: DevSession): boolean =>\n session.failure.hasReported() && hasApplicationStopped(session.deps.getApplicationInstance());\n\nconst announceReady = (session: DevSession): void => {\n if (isApplicationLost(session)) {\n session.failure.fail();\n }\n\n if (isSessionInactive(session)) {\n return;\n }\n\n session.deps.log(\"HMR enabled - watching for changes...\");\n};\n\nconst createSession = (server: DevServer, deps: DevRunnerDeps): DevSession => {\n const refreshTracker = createRefreshTracker(deps.performRefresh);\n\n return {\n server,\n deps: { ...deps, performRefresh: refreshTracker.performRefresh },\n controller: createShutdownController(server, deps),\n refreshTracker,\n failure: createFailureTracker((cause) => {\n announceFailure(server, cause);\n }, refreshTracker.isRefreshing),\n pendingSaves: new Map(),\n };\n};\n\nconst createDevRunner = (deps: DevRunnerDeps): DevRunner => ({\n async run(entryPath: string): Promise<void> {\n const server = await deps.createServer(createDevServerConfig(process.cwd(), deps.plugins()));\n const session = createSession(server, deps);\n deps.installShutdownHandlers(onShutdownSignal(session));\n\n deps.watchUncaughtErrors((cause) => {\n session.failure.report(cause);\n });\n\n watchProjectFiles(session);\n await loadEntry(session, entryPath);\n await attachApplication(session);\n announceReady(session);\n },\n});\n\nexport { createDevRunner, type DevRunnerDeps };\n"]}
|
package/dist/dev/supervisor.d.ts
CHANGED
|
@@ -19,7 +19,6 @@ type DevSupervisorOptions = {
|
|
|
19
19
|
fork?: ForkRunner | undefined;
|
|
20
20
|
};
|
|
21
21
|
declare const RESTART_EXIT_CODE = 75;
|
|
22
|
-
declare const defaultForkRunner: ForkRunner;
|
|
23
22
|
declare const runDevSupervisor: (options: DevSupervisorOptions) => Promise<never>;
|
|
24
|
-
export { RESTART_EXIT_CODE,
|
|
23
|
+
export { RESTART_EXIT_CODE, runDevSupervisor, type DevWatch, };
|
|
25
24
|
//# sourceMappingURL=supervisor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/dev/supervisor.ts"],"names":[],"mappings":"AAOA,KAAK,eAAe,GAAG;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAChD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IAChG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;CACrG,CAAC;AAEF,KAAK,UAAU,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,KAAK,eAAe,CAAC;AAE/G,KAAK,QAAQ,GAAG;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC,CAAC;AAgBF,KAAK,oBAAoB,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CACjC,CAAC;AAOF,QAAA,MAAM,iBAAiB,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/dev/supervisor.ts"],"names":[],"mappings":"AAOA,KAAK,eAAe,GAAG;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAChD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IAChG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;CACrG,CAAC;AAEF,KAAK,UAAU,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,KAAK,eAAe,CAAC;AAE/G,KAAK,QAAQ,GAAG;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC,CAAC;AAgBF,KAAK,oBAAoB,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CACjC,CAAC;AAOF,QAAA,MAAM,iBAAiB,KAAK,CAAC;AA6O7B,QAAA,MAAM,gBAAgB,GAAU,SAAS,oBAAoB,KAAG,OAAO,CAAC,KAAK,CAsB5E,CAAC;AAEF,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,QAAQ,GAChB,CAAC"}
|
package/dist/dev/supervisor.js
CHANGED
|
@@ -197,5 +197,5 @@ const runDevSupervisor = async (options) => {
|
|
|
197
197
|
launch(state);
|
|
198
198
|
return new Promise(() => undefined);
|
|
199
199
|
};
|
|
200
|
-
export { RESTART_EXIT_CODE,
|
|
200
|
+
export { RESTART_EXIT_CODE, runDevSupervisor, };
|
|
201
201
|
//# sourceMappingURL=supervisor.js.map
|