@gtkx/cli 1.0.0 → 1.1.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/run-codegen.d.ts +8 -5
- package/dist/codegen/run-codegen.d.ts.map +1 -1
- package/dist/codegen/run-codegen.js +24 -19
- 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 +27 -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 +85 -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 +153 -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 +15 -0
- package/dist/deploy/settings/package-manifest.d.ts.map +1 -0
- package/dist/deploy/settings/package-manifest.js +41 -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-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 +110 -0
- package/dist/deploy/targets/flatpak-source.js.map +1 -0
- package/dist/deploy/targets/flatpak-sources.d.ts +17 -0
- package/dist/deploy/targets/flatpak-sources.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak-sources.js +108 -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 +112 -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 +18 -0
- package/dist/deploy/tools.d.ts.map +1 -0
- package/dist/deploy/tools.js +92 -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/run-codegen.ts +37 -23
- 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 +39 -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 +108 -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 +235 -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 +66 -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-prebuilt.ts +59 -0
- package/src/deploy/targets/flatpak-source.ts +168 -0
- package/src/deploy/targets/flatpak-sources.ts +171 -0
- package/src/deploy/targets/flatpak.ts +143 -0
- package/src/deploy/targets/nfpm-target.ts +33 -0
- package/src/deploy/targets/rpm.ts +6 -0
- package/src/deploy/tools.ts +135 -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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-deps.d.ts","sourceRoot":"","sources":["../../src/dev/runner-deps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner-deps.d.ts","sourceRoot":"","sources":["../../src/dev/runner-deps.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAsCjD,QAAA,MAAM,oBAAoB,QAAO,aA8C/B,CAAC;AAEH,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
package/dist/dev/runner-deps.js
CHANGED
|
@@ -1,26 +1,33 @@
|
|
|
1
1
|
import { loadConfig } from "@gtkx/config";
|
|
2
2
|
import * as Gio from "@gtkx/gi/gio";
|
|
3
3
|
import { quitApplication } from "@gtkx/runtime";
|
|
4
|
+
import { getApplicationInstance } from "@gtkx/runtime/internal";
|
|
4
5
|
import { info, installGracefulShutdown } from "@gtkx/utils";
|
|
6
|
+
import { readFile } from "node:fs/promises";
|
|
5
7
|
import { createServer } from "vite";
|
|
6
8
|
import { startMcpClient, stopMcpClient } from "../mcp/index.js";
|
|
7
|
-
import { setTestingModuleLoader } from "../mcp/testing-loader.js";
|
|
8
|
-
import { isRefreshBoundary, performRefresh } from "../refresh-runtime.js";
|
|
9
|
+
import { mergeTestingModule, setTestingModuleLoader, } from "../mcp/testing-loader.js";
|
|
10
|
+
import { isRefreshBoundary, performRefresh, staleExportName } from "../refresh-runtime.js";
|
|
9
11
|
import { gtkxFastRefresh } from "../vite-plugins/fast-refresh/swc-refresh.js";
|
|
10
12
|
import { gtkxVitePlugins } from "../vite-plugins/index.js";
|
|
11
13
|
import { gtkxReactDomPrebundle } from "../vite-plugins/react-dom-prebundle.js";
|
|
12
14
|
const DEV_MODE = "development";
|
|
13
15
|
const APPLICATION_POLL_INTERVAL_MS = 50;
|
|
14
16
|
const currentApplicationId = () => Gio.Application.getDefault()?.applicationId ?? null;
|
|
15
|
-
const
|
|
17
|
+
const currentApplicationInstance = () => {
|
|
18
|
+
const application = Gio.Application.getDefault();
|
|
19
|
+
return application === null ? "unregistered" : getApplicationInstance(application);
|
|
20
|
+
};
|
|
21
|
+
const waitForApplicationId = async (timeoutMs, shouldKeepWaiting) => {
|
|
16
22
|
const deadline = Date.now() + timeoutMs;
|
|
17
23
|
let applicationId = currentApplicationId();
|
|
18
|
-
while (applicationId === null && Date.now() < deadline) {
|
|
24
|
+
while (applicationId === null && Date.now() < deadline && shouldKeepWaiting()) {
|
|
19
25
|
await new Promise((resolve) => setTimeout(resolve, APPLICATION_POLL_INTERVAL_MS));
|
|
20
26
|
applicationId = currentApplicationId();
|
|
21
27
|
}
|
|
22
28
|
return applicationId;
|
|
23
29
|
};
|
|
30
|
+
const readFileRevision = (path) => readFile(path, "utf8");
|
|
24
31
|
const defaultDevRunnerDeps = () => ({
|
|
25
32
|
createServer,
|
|
26
33
|
waitForApplicationId,
|
|
@@ -29,14 +36,24 @@ const defaultDevRunnerDeps = () => ({
|
|
|
29
36
|
return loaded.config.applicationId;
|
|
30
37
|
},
|
|
31
38
|
startMcpClient: (applicationId, loadAppModule) => {
|
|
32
|
-
setTestingModuleLoader(() =>
|
|
39
|
+
setTestingModuleLoader(async () => {
|
|
40
|
+
const [publicApi, internals] = await Promise.all([
|
|
41
|
+
loadAppModule("@gtkx/testing"),
|
|
42
|
+
loadAppModule("@gtkx/testing/internal"),
|
|
43
|
+
]);
|
|
44
|
+
return mergeTestingModule(publicApi, internals);
|
|
45
|
+
});
|
|
33
46
|
return startMcpClient(applicationId);
|
|
34
47
|
},
|
|
35
48
|
stopMcpClient,
|
|
36
49
|
watchApplicationShutdown: (onShutdown) => {
|
|
37
50
|
Gio.Application.getDefault()?.on("shutdown", onShutdown);
|
|
38
51
|
},
|
|
39
|
-
|
|
52
|
+
watchUncaughtErrors: (onUncaughtError) => {
|
|
53
|
+
process.on("uncaughtException", onUncaughtError);
|
|
54
|
+
process.on("unhandledRejection", onUncaughtError);
|
|
55
|
+
},
|
|
56
|
+
getApplicationInstance: currentApplicationInstance,
|
|
40
57
|
installShutdownHandlers: (onSignal) => {
|
|
41
58
|
installGracefulShutdown({ onSignal });
|
|
42
59
|
},
|
|
@@ -48,6 +65,8 @@ const defaultDevRunnerDeps = () => ({
|
|
|
48
65
|
},
|
|
49
66
|
performRefresh,
|
|
50
67
|
isRefreshBoundary,
|
|
68
|
+
staleExportName,
|
|
69
|
+
readFileRevision,
|
|
51
70
|
plugins: () => [...gtkxVitePlugins(DEV_MODE), ...gtkxFastRefresh(), gtkxReactDomPrebundle()],
|
|
52
71
|
log: info,
|
|
53
72
|
exit: (code) => process.exit(code),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-deps.js","sourceRoot":"","sources":["../../src/dev/runner-deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"runner-deps.js","sourceRoot":"","sources":["../../src/dev/runner-deps.ts"],"names":[],"mappings":"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","sourcesContent":["import { loadConfig } from \"@gtkx/config\";\nimport * as Gio from \"@gtkx/gi/gio\";\nimport { quitApplication } from \"@gtkx/runtime\";\nimport { type ApplicationInstance, getApplicationInstance } from \"@gtkx/runtime/internal\";\nimport { info, installGracefulShutdown } from \"@gtkx/utils\";\nimport { readFile } from \"node:fs/promises\";\nimport { createServer } from \"vite\";\nimport type { DevRunnerDeps } from \"./runner.js\";\nimport { startMcpClient, stopMcpClient } from \"../mcp/index.js\";\nimport {\n mergeTestingModule,\n setTestingModuleLoader,\n type TestingInternalModule,\n type TestingPublicModule,\n} from \"../mcp/testing-loader.js\";\nimport { isRefreshBoundary, performRefresh, staleExportName } from \"../refresh-runtime.js\";\nimport { gtkxFastRefresh } from \"../vite-plugins/fast-refresh/swc-refresh.js\";\nimport { gtkxVitePlugins } from \"../vite-plugins/index.js\";\nimport { gtkxReactDomPrebundle } from \"../vite-plugins/react-dom-prebundle.js\";\n\nconst DEV_MODE = \"development\";\nconst APPLICATION_POLL_INTERVAL_MS = 50;\n\nconst currentApplicationId = (): string | null => Gio.Application.getDefault()?.applicationId ?? null;\n\nconst currentApplicationInstance = (): ApplicationInstance => {\n const application = Gio.Application.getDefault();\n\n return application === null ? \"unregistered\" : getApplicationInstance(application);\n};\n\nconst waitForApplicationId = async (timeoutMs: number, shouldKeepWaiting: () => boolean): Promise<string | null> => {\n const deadline = Date.now() + timeoutMs;\n let applicationId = currentApplicationId();\n\n while (applicationId === null && Date.now() < deadline && shouldKeepWaiting()) {\n await new Promise((resolve) => setTimeout(resolve, APPLICATION_POLL_INTERVAL_MS));\n applicationId = currentApplicationId();\n }\n\n return applicationId;\n};\n\nconst readFileRevision = (path: string): Promise<string> => readFile(path, \"utf8\");\n\nconst defaultDevRunnerDeps = (): DevRunnerDeps => ({\n createServer,\n waitForApplicationId,\n getConfiguredApplicationId: async (root: string) => {\n const loaded = await loadConfig(root, { mode: DEV_MODE });\n\n return loaded.config.applicationId;\n },\n startMcpClient: (applicationId, loadAppModule) => {\n setTestingModuleLoader(async () => {\n const [publicApi, internals] = await Promise.all([\n loadAppModule(\"@gtkx/testing\") as Promise<TestingPublicModule>,\n loadAppModule(\"@gtkx/testing/internal\") as Promise<TestingInternalModule>,\n ]);\n\n return mergeTestingModule(publicApi, internals);\n });\n\n return startMcpClient(applicationId);\n },\n stopMcpClient,\n watchApplicationShutdown: (onShutdown) => {\n Gio.Application.getDefault()?.on(\"shutdown\", onShutdown);\n },\n watchUncaughtErrors: (onUncaughtError) => {\n process.on(\"uncaughtException\", onUncaughtError);\n process.on(\"unhandledRejection\", onUncaughtError);\n },\n getApplicationInstance: currentApplicationInstance,\n installShutdownHandlers: (onSignal) => {\n installGracefulShutdown({ onSignal });\n },\n quitDefaultApplication: () => {\n const application = Gio.Application.getDefault();\n\n if (application) {\n quitApplication(application);\n }\n },\n performRefresh,\n isRefreshBoundary,\n staleExportName,\n readFileRevision,\n plugins: () => [...gtkxVitePlugins(DEV_MODE), ...gtkxFastRefresh(), gtkxReactDomPrebundle()],\n log: info,\n exit: (code: number): never => process.exit(code),\n});\n\nexport { defaultDevRunnerDeps };\n"]}
|
package/dist/dev/runner.d.ts
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
|
+
import type { ApplicationInstance } from "@gtkx/runtime/internal";
|
|
1
2
|
import type { InlineConfig, Plugin } from "vite";
|
|
2
3
|
import { type DevServer } from "./vite-dev-server.js";
|
|
4
|
+
type LoadAppModule = (id: string) => Promise<Record<string, unknown>>;
|
|
3
5
|
type DevRunnerDeps = {
|
|
4
6
|
createServer(config: InlineConfig): Promise<DevServer>;
|
|
5
|
-
waitForApplicationId(timeoutMs: number): Promise<string | null>;
|
|
7
|
+
waitForApplicationId(timeoutMs: number, shouldKeepWaiting: () => boolean): Promise<string | null>;
|
|
6
8
|
getConfiguredApplicationId(root: string): Promise<string | undefined>;
|
|
7
|
-
startMcpClient(applicationId: string, loadAppModule:
|
|
9
|
+
startMcpClient(applicationId: string, loadAppModule: LoadAppModule): Promise<unknown>;
|
|
8
10
|
stopMcpClient(): void;
|
|
9
11
|
watchApplicationShutdown(onShutdown: () => void): void;
|
|
10
|
-
|
|
12
|
+
watchUncaughtErrors(onUncaughtError: (cause: unknown) => void): void;
|
|
13
|
+
getApplicationInstance(): ApplicationInstance;
|
|
11
14
|
installShutdownHandlers(onSignal: () => void | Promise<void>): void;
|
|
12
15
|
quitDefaultApplication(): void;
|
|
13
16
|
performRefresh: () => void;
|
|
14
17
|
isRefreshBoundary(module: Record<string, unknown>): boolean;
|
|
18
|
+
staleExportName(previous: Record<string, unknown>, current: Record<string, unknown>): string | null;
|
|
19
|
+
readFileRevision(path: string): Promise<string>;
|
|
15
20
|
plugins(): Plugin[];
|
|
16
21
|
log(message: string): void;
|
|
17
22
|
exit(code: number): never;
|
|
@@ -20,6 +25,5 @@ type DevRunner = {
|
|
|
20
25
|
run(entryPath: string): Promise<void>;
|
|
21
26
|
};
|
|
22
27
|
declare const createDevRunner: (deps: DevRunnerDeps) => DevRunner;
|
|
23
|
-
export type { DevServer } from "./vite-dev-server.js";
|
|
24
28
|
export { createDevRunner, type DevRunnerDeps };
|
|
25
29
|
//# sourceMappingURL=runner.d.ts.map
|
package/dist/dev/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/dev/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/dev/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAQjD,OAAO,EAEH,KAAK,SAAS,EAIjB,MAAM,sBAAsB,CAAC;AAE9B,KAAK,aAAa,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtE,KAAK,aAAa,GAAG;IACjB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClG,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtE,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,aAAa,IAAI,IAAI,CAAC;IACtB,wBAAwB,CAAC,UAAU,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACvD,mBAAmB,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IACrE,sBAAsB,IAAI,mBAAmB,CAAC;IAC9C,uBAAuB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE,sBAAsB,IAAI,IAAI,CAAC;IAC/B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IAC5D,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IACpG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,IAAI,MAAM,EAAE,CAAC;IACpB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;CAC7B,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,CAAC;AAijBF,QAAA,MAAM,eAAe,GAAI,MAAM,aAAa,KAAG,SAe7C,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,CAAC"}
|
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 };
|