@gtkx/cli 1.6.0 → 2.0.0-beta.10
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 +47 -44
- package/bin/gtkx-dev-runner.js +5 -1
- package/bin/gtkx.js +5 -1
- package/dist/builder.d.ts +1 -0
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +44 -12
- package/dist/builder.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +14 -2
- package/dist/cli.js.map +1 -1
- package/dist/codegen/config-dependencies.d.ts +3 -0
- package/dist/codegen/config-dependencies.d.ts.map +1 -0
- package/dist/codegen/config-dependencies.js +355 -0
- package/dist/codegen/config-dependencies.js.map +1 -0
- package/dist/codegen/freshness.d.ts.map +1 -1
- package/dist/codegen/freshness.js +49 -16
- package/dist/codegen/freshness.js.map +1 -1
- package/dist/codegen/reference.d.ts.map +1 -1
- package/dist/codegen/reference.js +2 -7
- package/dist/codegen/reference.js.map +1 -1
- package/dist/codegen/report.d.ts.map +1 -1
- package/dist/codegen/report.js +5 -16
- package/dist/codegen/report.js.map +1 -1
- package/dist/codegen/run-codegen.d.ts +9 -8
- package/dist/codegen/run-codegen.d.ts.map +1 -1
- package/dist/codegen/run-codegen.js +60 -113
- package/dist/codegen/run-codegen.js.map +1 -1
- package/dist/codegen/store-resolver.d.ts +3 -2
- package/dist/codegen/store-resolver.d.ts.map +1 -1
- package/dist/codegen/store-resolver.js +14 -20
- package/dist/codegen/store-resolver.js.map +1 -1
- package/dist/commands/build.d.ts +5 -0
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +83 -10
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/cleanup.d.ts +9 -0
- package/dist/commands/cleanup.d.ts.map +1 -0
- package/dist/commands/cleanup.js +42 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/codegen.d.ts +1 -0
- package/dist/commands/codegen.d.ts.map +1 -1
- package/dist/commands/codegen.js +6 -5
- package/dist/commands/codegen.js.map +1 -1
- package/dist/commands/deploy.d.ts +5 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +10 -2
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts +9 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +31 -4
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/docs.d.ts.map +1 -1
- package/dist/commands/docs.js +6 -15
- package/dist/commands/docs.js.map +1 -1
- package/dist/deploy/depends.d.ts.map +1 -1
- package/dist/deploy/depends.js +24 -2
- package/dist/deploy/depends.js.map +1 -1
- package/dist/deploy/download.d.ts +7 -3
- package/dist/deploy/download.d.ts.map +1 -1
- package/dist/deploy/download.js +19 -20
- package/dist/deploy/download.js.map +1 -1
- package/dist/deploy/freedesktop/copyright.d.ts.map +1 -1
- package/dist/deploy/freedesktop/copyright.js +2 -13
- package/dist/deploy/freedesktop/copyright.js.map +1 -1
- package/dist/deploy/freedesktop/metainfo.d.ts.map +1 -1
- package/dist/deploy/freedesktop/metainfo.js +41 -2
- package/dist/deploy/freedesktop/metainfo.js.map +1 -1
- package/dist/deploy/freedesktop/validate.d.ts.map +1 -1
- package/dist/deploy/freedesktop/validate.js +58 -14
- package/dist/deploy/freedesktop/validate.js.map +1 -1
- package/dist/deploy/freedesktop/xml.d.ts.map +1 -1
- package/dist/deploy/freedesktop/xml.js +21 -25
- package/dist/deploy/freedesktop/xml.js.map +1 -1
- package/dist/deploy/native-addon.d.ts +5 -0
- package/dist/deploy/native-addon.d.ts.map +1 -0
- package/dist/deploy/native-addon.js +134 -0
- package/dist/deploy/native-addon.js.map +1 -0
- package/dist/deploy/nfpm/config.d.ts +3 -2
- package/dist/deploy/nfpm/config.d.ts.map +1 -1
- package/dist/deploy/nfpm/config.js +7 -4
- package/dist/deploy/nfpm/config.js.map +1 -1
- package/dist/deploy/nfpm/contents.d.ts.map +1 -1
- package/dist/deploy/nfpm/contents.js +8 -0
- package/dist/deploy/nfpm/contents.js.map +1 -1
- package/dist/deploy/node-runtime/download.js +2 -2
- package/dist/deploy/node-runtime/download.js.map +1 -1
- package/dist/deploy/node-runtime/elf.d.ts +4 -1
- package/dist/deploy/node-runtime/elf.d.ts.map +1 -1
- package/dist/deploy/node-runtime/elf.js +34 -5
- package/dist/deploy/node-runtime/elf.js.map +1 -1
- package/dist/deploy/node-runtime/guard.d.ts.map +1 -1
- package/dist/deploy/node-runtime/guard.js +7 -14
- package/dist/deploy/node-runtime/guard.js.map +1 -1
- package/dist/deploy/node-runtime/index.d.ts +3 -1
- package/dist/deploy/node-runtime/index.d.ts.map +1 -1
- package/dist/deploy/node-runtime/index.js +103 -10
- package/dist/deploy/node-runtime/index.js.map +1 -1
- package/dist/deploy/node-runtime/license.d.ts.map +1 -1
- package/dist/deploy/node-runtime/license.js +2 -9
- package/dist/deploy/node-runtime/license.js.map +1 -1
- package/dist/deploy/node-runtime/sonames.d.ts +5 -0
- package/dist/deploy/node-runtime/sonames.d.ts.map +1 -0
- package/dist/deploy/node-runtime/sonames.js +13 -0
- package/dist/deploy/node-runtime/sonames.js.map +1 -0
- package/dist/deploy/notices/node-runtime.js +2 -2
- package/dist/deploy/notices/node-runtime.js.map +1 -1
- package/dist/deploy/notices/packages.d.ts.map +1 -1
- package/dist/deploy/notices/packages.js +3 -10
- package/dist/deploy/notices/packages.js.map +1 -1
- package/dist/deploy/payload/copy-tree.d.ts.map +1 -1
- package/dist/deploy/payload/copy-tree.js +3 -3
- package/dist/deploy/payload/copy-tree.js.map +1 -1
- package/dist/deploy/payload/launcher.d.ts.map +1 -1
- package/dist/deploy/payload/launcher.js +14 -1
- package/dist/deploy/payload/launcher.js.map +1 -1
- package/dist/deploy/payload/stage.d.ts +2 -1
- package/dist/deploy/payload/stage.d.ts.map +1 -1
- package/dist/deploy/payload/stage.js +47 -8
- package/dist/deploy/payload/stage.js.map +1 -1
- package/dist/deploy/run-deploy.d.ts +2 -0
- package/dist/deploy/run-deploy.d.ts.map +1 -1
- package/dist/deploy/run-deploy.js +197 -52
- package/dist/deploy/run-deploy.js.map +1 -1
- package/dist/deploy/settings/arch.d.ts +9 -3
- package/dist/deploy/settings/arch.d.ts.map +1 -1
- package/dist/deploy/settings/arch.js +27 -6
- package/dist/deploy/settings/arch.js.map +1 -1
- package/dist/deploy/settings/build-manifest.d.ts +6 -1
- package/dist/deploy/settings/build-manifest.d.ts.map +1 -1
- package/dist/deploy/settings/build-manifest.js +17 -17
- package/dist/deploy/settings/build-manifest.js.map +1 -1
- package/dist/deploy/settings/extra-files.d.ts +1 -1
- package/dist/deploy/settings/extra-files.d.ts.map +1 -1
- package/dist/deploy/settings/extra-files.js +25 -3
- package/dist/deploy/settings/extra-files.js.map +1 -1
- package/dist/deploy/settings/index.d.ts +3 -1
- package/dist/deploy/settings/index.d.ts.map +1 -1
- package/dist/deploy/settings/index.js +4 -2
- package/dist/deploy/settings/index.js.map +1 -1
- package/dist/deploy/settings/libraries.d.ts.map +1 -1
- package/dist/deploy/settings/libraries.js +3 -19
- package/dist/deploy/settings/libraries.js.map +1 -1
- package/dist/deploy/settings/paths.d.ts +4 -3
- package/dist/deploy/settings/paths.d.ts.map +1 -1
- package/dist/deploy/settings/paths.js +118 -19
- package/dist/deploy/settings/paths.js.map +1 -1
- package/dist/deploy/settings/screenshots.d.ts.map +1 -1
- package/dist/deploy/settings/screenshots.js +6 -31
- package/dist/deploy/settings/screenshots.js.map +1 -1
- package/dist/deploy/targets/appimage.d.ts.map +1 -1
- package/dist/deploy/targets/appimage.js +1 -0
- package/dist/deploy/targets/appimage.js.map +1 -1
- package/dist/deploy/targets/flatpak-pnpm.js +4 -4
- package/dist/deploy/targets/flatpak-pnpm.js.map +1 -1
- package/dist/deploy/targets/flatpak-source.d.ts.map +1 -1
- package/dist/deploy/targets/flatpak-source.js +17 -6
- package/dist/deploy/targets/flatpak-source.js.map +1 -1
- package/dist/deploy/targets/flatpak-sources.js +1 -1
- package/dist/deploy/targets/flatpak-sources.js.map +1 -1
- package/dist/deploy/targets/flatpak.d.ts.map +1 -1
- package/dist/deploy/targets/flatpak.js +1 -0
- package/dist/deploy/targets/flatpak.js.map +1 -1
- package/dist/deploy/targets/nfpm-target.d.ts.map +1 -1
- package/dist/deploy/targets/nfpm-target.js +13 -7
- package/dist/deploy/targets/nfpm-target.js.map +1 -1
- package/dist/deploy/types.d.ts +5 -2
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/deploy/types.js.map +1 -1
- package/dist/deploy/vendored/appimagetool.js +2 -2
- package/dist/deploy/vendored/appimagetool.js.map +1 -1
- package/dist/deploy/vendored/nfpm.js +1 -1
- package/dist/deploy/vendored/nfpm.js.map +1 -1
- package/dist/dev/catalog-writes.d.ts +8 -0
- package/dist/dev/catalog-writes.d.ts.map +1 -0
- package/dist/dev/catalog-writes.js +26 -0
- package/dist/dev/catalog-writes.js.map +1 -0
- package/dist/dev/entry-env.d.ts +2 -1
- package/dist/dev/entry-env.d.ts.map +1 -1
- package/dist/dev/entry-env.js +2 -1
- package/dist/dev/entry-env.js.map +1 -1
- package/dist/dev/font-dir.d.ts +3 -0
- package/dist/dev/font-dir.d.ts.map +1 -0
- package/dist/dev/font-dir.js +9 -0
- package/dist/dev/font-dir.js.map +1 -0
- package/dist/dev/headless.d.ts +3 -0
- package/dist/dev/headless.d.ts.map +1 -0
- package/dist/dev/headless.js +35 -0
- package/dist/dev/headless.js.map +1 -0
- package/dist/dev/runner-deps.d.ts +1 -1
- package/dist/dev/runner-deps.d.ts.map +1 -1
- package/dist/dev/runner-deps.js +12 -7
- package/dist/dev/runner-deps.js.map +1 -1
- package/dist/dev/runner-main.d.ts.map +1 -1
- package/dist/dev/runner-main.js +11 -5
- package/dist/dev/runner-main.js.map +1 -1
- package/dist/dev/runner.d.ts +2 -0
- package/dist/dev/runner.d.ts.map +1 -1
- package/dist/dev/runner.js +26 -7
- package/dist/dev/runner.js.map +1 -1
- package/dist/dev/schema-dir.d.ts +1 -1
- package/dist/dev/schema-dir.d.ts.map +1 -1
- package/dist/dev/schema-dir.js +2 -4
- package/dist/dev/schema-dir.js.map +1 -1
- package/dist/dev/supervisor.d.ts +3 -1
- package/dist/dev/supervisor.d.ts.map +1 -1
- package/dist/dev/supervisor.js +132 -29
- package/dist/dev/supervisor.js.map +1 -1
- package/dist/dev/vite-dev-server.d.ts +1 -1
- package/dist/dev/vite-dev-server.d.ts.map +1 -1
- package/dist/dev/vite-dev-server.js +14 -2
- package/dist/dev/vite-dev-server.js.map +1 -1
- package/dist/dev/watch-ignore.d.ts +3 -0
- package/dist/dev/watch-ignore.d.ts.map +1 -0
- package/dist/dev/watch-ignore.js +11 -0
- package/dist/dev/watch-ignore.js.map +1 -0
- package/dist/i18n/catalogs.d.ts +6 -2
- package/dist/i18n/catalogs.d.ts.map +1 -1
- package/dist/i18n/catalogs.js +12 -8
- package/dist/i18n/catalogs.js.map +1 -1
- package/dist/i18n/metadata-templates.d.ts.map +1 -1
- package/dist/i18n/metadata-templates.js +2 -1
- package/dist/i18n/metadata-templates.js.map +1 -1
- package/dist/i18n/source-messages.d.ts +5 -21
- package/dist/i18n/source-messages.d.ts.map +1 -1
- package/dist/i18n/source-messages.js +1037 -92
- package/dist/i18n/source-messages.js.map +1 -1
- package/dist/i18n/types.d.ts +6 -7
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/i18n/types.js +83 -96
- package/dist/i18n/types.js.map +1 -1
- package/dist/internal/agent-rules.d.ts.map +1 -1
- package/dist/internal/agent-rules.js +7 -2
- package/dist/internal/agent-rules.js.map +1 -1
- package/dist/internal/banner.d.ts +4 -2
- package/dist/internal/banner.d.ts.map +1 -1
- package/dist/internal/banner.js +19 -5
- package/dist/internal/banner.js.map +1 -1
- package/dist/internal/build-manifest.d.ts +5 -2
- package/dist/internal/build-manifest.d.ts.map +1 -1
- package/dist/internal/build-manifest.js +15 -2
- package/dist/internal/build-manifest.js.map +1 -1
- package/dist/internal/build-output.d.ts +8 -0
- package/dist/internal/build-output.d.ts.map +1 -0
- package/dist/internal/build-output.js +116 -0
- package/dist/internal/build-output.js.map +1 -0
- package/dist/internal/cache-root.d.ts +3 -0
- package/dist/internal/cache-root.d.ts.map +1 -0
- package/dist/internal/cache-root.js +9 -0
- package/dist/internal/cache-root.js.map +1 -0
- package/dist/internal/compile-cache-store.d.ts +4 -0
- package/dist/internal/compile-cache-store.d.ts.map +1 -0
- package/dist/internal/compile-cache-store.js +41 -0
- package/dist/internal/compile-cache-store.js.map +1 -0
- package/dist/internal/compile-cache.d.ts +4 -0
- package/dist/internal/compile-cache.d.ts.map +1 -0
- package/dist/internal/compile-cache.js +16 -0
- package/dist/internal/compile-cache.js.map +1 -0
- package/dist/internal/deploy-out-dir.d.ts +4 -0
- package/dist/internal/deploy-out-dir.d.ts.map +1 -0
- package/dist/internal/deploy-out-dir.js +5 -0
- package/dist/internal/deploy-out-dir.js.map +1 -0
- package/dist/internal/docs-elements.d.ts +1 -0
- package/dist/internal/docs-elements.d.ts.map +1 -1
- package/dist/internal/docs-elements.js +6 -5
- package/dist/internal/docs-elements.js.map +1 -1
- package/dist/internal/entry-arg.d.ts +4 -1
- package/dist/internal/entry-arg.d.ts.map +1 -1
- package/dist/internal/entry-arg.js +7 -1
- package/dist/internal/entry-arg.js.map +1 -1
- package/dist/internal/errors.d.ts +2 -1
- package/dist/internal/errors.d.ts.map +1 -1
- package/dist/internal/errors.js +1 -1
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/font-path.d.ts +4 -0
- package/dist/internal/font-path.d.ts.map +1 -0
- package/dist/internal/font-path.js +12 -0
- package/dist/internal/font-path.js.map +1 -0
- package/dist/internal/font-staging.d.ts +6 -0
- package/dist/internal/font-staging.d.ts.map +1 -0
- package/dist/internal/font-staging.js +94 -0
- package/dist/internal/font-staging.js.map +1 -0
- package/dist/internal/icon-path.d.ts.map +1 -1
- package/dist/internal/icon-path.js +5 -16
- package/dist/internal/icon-path.js.map +1 -1
- package/dist/internal/icon-staging.d.ts +3 -0
- package/dist/internal/icon-staging.d.ts.map +1 -0
- package/dist/internal/icon-staging.js +40 -0
- package/dist/internal/icon-staging.js.map +1 -0
- package/dist/internal/import-scan.d.ts +4 -0
- package/dist/internal/import-scan.d.ts.map +1 -0
- package/dist/internal/import-scan.js +138 -0
- package/dist/internal/import-scan.js.map +1 -0
- package/dist/internal/module-hash.d.ts +3 -0
- package/dist/internal/module-hash.d.ts.map +1 -0
- package/dist/internal/module-hash.js +19 -0
- package/dist/internal/module-hash.js.map +1 -0
- package/dist/internal/output-directory.d.ts +15 -0
- package/dist/internal/output-directory.d.ts.map +1 -0
- package/dist/internal/output-directory.js +490 -0
- package/dist/internal/output-directory.js.map +1 -0
- package/dist/internal/parent-process.d.ts +12 -0
- package/dist/internal/parent-process.d.ts.map +1 -0
- package/dist/internal/parent-process.js +74 -0
- package/dist/internal/parent-process.js.map +1 -0
- package/dist/internal/prepare-project.d.ts +3 -0
- package/dist/internal/prepare-project.d.ts.map +1 -1
- package/dist/internal/prepare-project.js +9 -3
- package/dist/internal/prepare-project.js.map +1 -1
- package/dist/internal/react-compiler-cache.d.ts +13 -0
- package/dist/internal/react-compiler-cache.d.ts.map +1 -0
- package/dist/internal/react-compiler-cache.js +182 -0
- package/dist/internal/react-compiler-cache.js.map +1 -0
- package/dist/internal/source-imports.d.ts +7 -2
- package/dist/internal/source-imports.d.ts.map +1 -1
- package/dist/internal/source-imports.js +38 -49
- package/dist/internal/source-imports.js.map +1 -1
- package/dist/internal/staging-file.d.ts +5 -0
- package/dist/internal/staging-file.d.ts.map +1 -0
- package/dist/internal/staging-file.js +35 -0
- package/dist/internal/staging-file.js.map +1 -0
- package/dist/internal/xdg-banner.d.ts +4 -0
- package/dist/internal/xdg-banner.d.ts.map +1 -0
- package/dist/internal/xdg-banner.js +11 -0
- package/dist/internal/xdg-banner.js.map +1 -0
- package/dist/internal/xdg-data-dirs.d.ts +2 -1
- package/dist/internal/xdg-data-dirs.d.ts.map +1 -1
- package/dist/internal/xdg-data-dirs.js +1 -1
- package/dist/internal/xdg-data-dirs.js.map +1 -1
- package/dist/mcp/client.js +2 -2
- package/dist/mcp/client.js.map +1 -1
- package/dist/settings/render.d.ts +0 -1
- package/dist/settings/render.d.ts.map +1 -1
- package/dist/settings/render.js +1 -11
- package/dist/settings/render.js.map +1 -1
- package/dist/settings/schema.d.ts +2 -2
- package/dist/settings/schema.d.ts.map +1 -1
- package/dist/settings/schema.js +24 -70
- package/dist/settings/schema.js.map +1 -1
- package/dist/vite-plugins/asset-extensions.d.ts.map +1 -1
- package/dist/vite-plugins/asset-extensions.js +2 -0
- package/dist/vite-plugins/asset-extensions.js.map +1 -1
- package/dist/vite-plugins/asset-imports.d.ts +1 -2
- package/dist/vite-plugins/asset-imports.d.ts.map +1 -1
- package/dist/vite-plugins/asset-imports.js +36 -35
- package/dist/vite-plugins/asset-imports.js.map +1 -1
- package/dist/vite-plugins/asset-specifier.d.ts +5 -3
- package/dist/vite-plugins/asset-specifier.d.ts.map +1 -1
- package/dist/vite-plugins/asset-specifier.js +10 -4
- package/dist/vite-plugins/asset-specifier.js.map +1 -1
- package/dist/vite-plugins/build-manifest.d.ts +5 -1
- package/dist/vite-plugins/build-manifest.d.ts.map +1 -1
- package/dist/vite-plugins/build-manifest.js +2 -1
- package/dist/vite-plugins/build-manifest.js.map +1 -1
- package/dist/vite-plugins/built-url.d.ts.map +1 -1
- package/dist/vite-plugins/built-url.js +5 -2
- package/dist/vite-plugins/built-url.js.map +1 -1
- package/dist/vite-plugins/css.d.ts.map +1 -1
- package/dist/vite-plugins/css.js +13 -5
- package/dist/vite-plugins/css.js.map +1 -1
- package/dist/vite-plugins/ensure-store.d.ts +1 -1
- package/dist/vite-plugins/ensure-store.d.ts.map +1 -1
- package/dist/vite-plugins/ensure-store.js +2 -2
- package/dist/vite-plugins/ensure-store.js.map +1 -1
- package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts +6 -1
- package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts.map +1 -1
- package/dist/vite-plugins/fast-refresh/refresh-filter.js +3 -1
- package/dist/vite-plugins/fast-refresh/refresh-filter.js.map +1 -1
- package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts.map +1 -1
- package/dist/vite-plugins/fast-refresh/swc-refresh.js +23 -14
- package/dist/vite-plugins/fast-refresh/swc-refresh.js.map +1 -1
- package/dist/vite-plugins/font-name.d.ts +3 -0
- package/dist/vite-plugins/font-name.d.ts.map +1 -0
- package/dist/vite-plugins/font-name.js +406 -0
- package/dist/vite-plugins/font-name.js.map +1 -0
- package/dist/vite-plugins/font-worker-env.d.ts +4 -0
- package/dist/vite-plugins/font-worker-env.d.ts.map +1 -0
- package/dist/vite-plugins/font-worker-env.js +19 -0
- package/dist/vite-plugins/font-worker-env.js.map +1 -0
- package/dist/vite-plugins/font.d.ts +4 -0
- package/dist/vite-plugins/font.d.ts.map +1 -0
- package/dist/vite-plugins/font.js +111 -0
- package/dist/vite-plugins/font.js.map +1 -0
- package/dist/vite-plugins/i18n.d.ts +11 -2
- package/dist/vite-plugins/i18n.d.ts.map +1 -1
- package/dist/vite-plugins/i18n.js +75 -8
- package/dist/vite-plugins/i18n.js.map +1 -1
- package/dist/vite-plugins/icon-worker-env.d.ts +4 -0
- package/dist/vite-plugins/icon-worker-env.d.ts.map +1 -0
- package/dist/vite-plugins/icon-worker-env.js +23 -0
- package/dist/vite-plugins/icon-worker-env.js.map +1 -0
- package/dist/vite-plugins/icons.d.ts.map +1 -1
- package/dist/vite-plugins/icons.js +4 -9
- package/dist/vite-plugins/icons.js.map +1 -1
- package/dist/vite-plugins/index.d.ts +10 -1
- package/dist/vite-plugins/index.d.ts.map +1 -1
- package/dist/vite-plugins/index.js +19 -7
- package/dist/vite-plugins/index.js.map +1 -1
- package/dist/vite-plugins/native.d.ts.map +1 -1
- package/dist/vite-plugins/native.js +0 -4
- package/dist/vite-plugins/native.js.map +1 -1
- package/dist/vite-plugins/react-compiler.d.ts.map +1 -1
- package/dist/vite-plugins/react-compiler.js +57 -18
- package/dist/vite-plugins/react-compiler.js.map +1 -1
- package/dist/vite-plugins/resource-shared.d.ts +3 -1
- package/dist/vite-plugins/resource-shared.d.ts.map +1 -1
- package/dist/vite-plugins/resource-shared.js +3 -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 +40 -102
- package/dist/vite-plugins/resources.js.map +1 -1
- package/dist/vite-plugins/self-contained.d.ts.map +1 -1
- package/dist/vite-plugins/self-contained.js +159 -158
- package/dist/vite-plugins/self-contained.js.map +1 -1
- package/dist/vite-plugins/settings-worker-env.d.ts +1 -1
- package/dist/vite-plugins/settings-worker-env.d.ts.map +1 -1
- package/dist/vite-plugins/settings-worker-env.js +5 -7
- package/dist/vite-plugins/settings-worker-env.js.map +1 -1
- package/dist/vite-plugins/settings.d.ts +1 -2
- package/dist/vite-plugins/settings.d.ts.map +1 -1
- package/dist/vite-plugins/settings.js +32 -27
- package/dist/vite-plugins/settings.js.map +1 -1
- package/dist/vite-plugins/store-links.d.ts.map +1 -1
- package/dist/vite-plugins/store-links.js +9 -5
- package/dist/vite-plugins/store-links.js.map +1 -1
- package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
- package/dist/vite-plugins/undeclared-library.js +25 -25
- 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 +21 -14
- package/dist/vite-plugins/worker.js.map +1 -1
- package/dist/vitest-plugin.d.ts +4 -3
- package/dist/vitest-plugin.d.ts.map +1 -1
- package/dist/vitest-plugin.js +12 -8
- package/dist/vitest-plugin.js.map +1 -1
- package/env.d.ts +9 -0
- package/package.json +28 -17
- package/src/builder.ts +45 -12
- package/src/cli.ts +15 -2
- package/src/codegen/config-dependencies.ts +470 -0
- package/src/codegen/freshness.ts +70 -17
- package/src/codegen/reference.ts +2 -8
- package/src/codegen/report.ts +5 -21
- package/src/codegen/run-codegen.ts +73 -160
- package/src/codegen/store-resolver.ts +16 -27
- package/src/commands/build.ts +13 -2
- package/src/commands/cleanup.ts +48 -0
- package/src/commands/codegen.ts +6 -5
- package/src/commands/deploy.ts +10 -2
- package/src/commands/dev.ts +45 -4
- package/src/commands/docs.ts +6 -17
- package/src/deploy/depends.ts +30 -3
- package/src/deploy/download.ts +33 -24
- package/src/deploy/freedesktop/copyright.ts +2 -14
- package/src/deploy/freedesktop/metainfo.ts +73 -21
- package/src/deploy/freedesktop/validate.ts +80 -15
- package/src/deploy/freedesktop/xml.ts +24 -32
- package/src/deploy/native-addon.ts +183 -0
- package/src/deploy/nfpm/config.ts +13 -4
- package/src/deploy/nfpm/contents.ts +8 -0
- package/src/deploy/node-runtime/download.ts +2 -2
- package/src/deploy/node-runtime/elf.ts +46 -5
- package/src/deploy/node-runtime/guard.ts +10 -14
- package/src/deploy/node-runtime/index.ts +148 -12
- package/src/deploy/node-runtime/license.ts +2 -8
- package/src/deploy/node-runtime/sonames.ts +17 -0
- package/src/deploy/notices/node-runtime.ts +2 -2
- package/src/deploy/notices/packages.ts +3 -11
- package/src/deploy/payload/copy-tree.ts +3 -4
- package/src/deploy/payload/launcher.ts +20 -1
- package/src/deploy/payload/stage.ts +78 -11
- package/src/deploy/run-deploy.ts +227 -72
- package/src/deploy/settings/arch.ts +40 -8
- package/src/deploy/settings/build-manifest.ts +30 -17
- package/src/deploy/settings/extra-files.ts +30 -4
- package/src/deploy/settings/index.ts +7 -2
- package/src/deploy/settings/libraries.ts +2 -22
- package/src/deploy/settings/paths.ts +78 -21
- package/src/deploy/settings/screenshots.ts +8 -46
- package/src/deploy/targets/appimage.ts +1 -0
- package/src/deploy/targets/flatpak-pnpm.ts +4 -4
- package/src/deploy/targets/flatpak-source.ts +19 -6
- package/src/deploy/targets/flatpak-sources.ts +1 -1
- package/src/deploy/targets/flatpak.ts +1 -0
- package/src/deploy/targets/nfpm-target.ts +14 -6
- package/src/deploy/types.ts +5 -1
- package/src/deploy/vendored/appimagetool.ts +2 -2
- package/src/deploy/vendored/nfpm.ts +1 -1
- package/src/dev/catalog-writes.ts +35 -0
- package/src/dev/entry-env.ts +2 -1
- package/src/dev/font-dir.ts +11 -0
- package/src/dev/headless.ts +40 -0
- package/src/dev/runner-deps.ts +20 -7
- package/src/dev/runner-main.ts +13 -5
- package/src/dev/runner.ts +37 -7
- package/src/dev/schema-dir.ts +2 -4
- package/src/dev/supervisor.ts +183 -32
- package/src/dev/vite-dev-server.ts +20 -2
- package/src/dev/watch-ignore.ts +16 -0
- package/src/i18n/catalogs.ts +23 -9
- package/src/i18n/metadata-templates.ts +2 -1
- package/src/i18n/source-messages.ts +1641 -262
- package/src/i18n/types.ts +97 -131
- package/src/internal/agent-rules.ts +7 -2
- package/src/internal/banner.ts +27 -6
- package/src/internal/build-manifest.ts +25 -1
- package/src/internal/build-output.ts +171 -0
- package/src/internal/cache-root.ts +12 -0
- package/src/internal/compile-cache-store.ts +50 -0
- package/src/internal/compile-cache.ts +20 -0
- package/src/internal/deploy-out-dir.ts +8 -0
- package/src/internal/docs-elements.ts +11 -5
- package/src/internal/entry-arg.ts +8 -1
- package/src/internal/errors.ts +1 -1
- package/src/internal/font-path.ts +15 -0
- package/src/internal/font-staging.ts +131 -0
- package/src/internal/icon-path.ts +6 -19
- package/src/internal/icon-staging.ts +58 -0
- package/src/internal/import-scan.ts +206 -0
- package/src/internal/module-hash.ts +22 -0
- package/src/internal/output-directory.ts +699 -0
- package/src/internal/parent-process.ts +110 -0
- package/src/internal/prepare-project.ts +11 -5
- package/src/internal/react-compiler-cache.ts +246 -0
- package/src/internal/source-imports.ts +64 -55
- package/src/internal/staging-file.ts +42 -0
- package/src/internal/xdg-banner.ts +13 -0
- package/src/internal/xdg-data-dirs.ts +1 -1
- package/src/mcp/client.ts +2 -2
- package/src/settings/render.ts +1 -13
- package/src/settings/schema.ts +23 -91
- package/src/vite-plugins/asset-extensions.ts +2 -0
- package/src/vite-plugins/asset-imports.ts +39 -45
- package/src/vite-plugins/asset-specifier.ts +17 -5
- package/src/vite-plugins/build-manifest.ts +7 -1
- package/src/vite-plugins/built-url.ts +6 -2
- package/src/vite-plugins/css.ts +16 -5
- package/src/vite-plugins/ensure-store.ts +2 -2
- package/src/vite-plugins/fast-refresh/refresh-filter.ts +10 -1
- package/src/vite-plugins/fast-refresh/swc-refresh.ts +33 -14
- package/src/vite-plugins/font-name.ts +582 -0
- package/src/vite-plugins/font-worker-env.ts +25 -0
- package/src/vite-plugins/font.ts +180 -0
- package/src/vite-plugins/i18n.ts +123 -11
- package/src/vite-plugins/icon-worker-env.ts +36 -0
- package/src/vite-plugins/icons.ts +4 -10
- package/src/vite-plugins/index.ts +36 -13
- package/src/vite-plugins/native.ts +0 -5
- package/src/vite-plugins/react-compiler.ts +83 -19
- package/src/vite-plugins/resource-shared.ts +4 -0
- package/src/vite-plugins/resources.ts +47 -144
- package/src/vite-plugins/self-contained.ts +184 -185
- package/src/vite-plugins/settings-worker-env.ts +5 -7
- package/src/vite-plugins/settings.ts +44 -33
- package/src/vite-plugins/store-links.ts +10 -5
- package/src/vite-plugins/undeclared-library.ts +30 -32
- package/src/vite-plugins/worker.ts +31 -16
- package/src/vitest-plugin.ts +12 -8
- package/dist/i18n/binding-extractor.d.ts +0 -30
- package/dist/i18n/binding-extractor.d.ts.map +0 -1
- package/dist/i18n/binding-extractor.js +0 -1324
- package/dist/i18n/binding-extractor.js.map +0 -1
- package/dist/i18n/extractor-plugin.d.ts +0 -8
- package/dist/i18n/extractor-plugin.d.ts.map +0 -1
- package/dist/i18n/extractor-plugin.js +0 -247
- package/dist/i18n/extractor-plugin.js.map +0 -1
- package/dist/internal/data-dir.d.ts +0 -4
- package/dist/internal/data-dir.d.ts.map +0 -1
- package/dist/internal/data-dir.js +0 -52
- package/dist/internal/data-dir.js.map +0 -1
- package/dist/vite-plugins/animated.d.ts +0 -5
- package/dist/vite-plugins/animated.d.ts.map +0 -1
- package/dist/vite-plugins/animated.js +0 -325
- package/dist/vite-plugins/animated.js.map +0 -1
- package/src/i18n/binding-extractor.ts +0 -1969
- package/src/i18n/extractor-plugin.ts +0 -413
- package/src/internal/data-dir.ts +0 -70
- package/src/vite-plugins/animated.ts +0 -486
|
@@ -1,21 +1,45 @@
|
|
|
1
1
|
import type { ConfigLoader } from "@gtkx/config";
|
|
2
2
|
import type { ResolvedReactCompilerOptions } from "@gtkx/config/internal";
|
|
3
3
|
import type { Plugin, ResolvedConfig, UserConfig } from "vite";
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
import { createConfigLoader, viteProjectRoot } from "@gtkx/config/internal";
|
|
5
|
+
import {
|
|
6
|
+
type CompilerOutput,
|
|
7
|
+
createReactCompilerCache,
|
|
8
|
+
type ReactCompilerCache,
|
|
9
|
+
} from "../internal/react-compiler-cache.js";
|
|
8
10
|
|
|
9
11
|
type ReactCompilerState = {
|
|
10
|
-
|
|
12
|
+
cache: ReactCompilerCache | null;
|
|
11
13
|
options: ResolvedReactCompilerOptions | null;
|
|
14
|
+
root: string;
|
|
12
15
|
};
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
type BabelToolchain = Awaited<ReturnType<typeof loadBabelToolchain>>;
|
|
18
|
+
|
|
16
19
|
const SOURCE_EXTENSION = /\.[jt]sx?$/;
|
|
17
20
|
const TYPESCRIPT_EXTENSION = /\.tsx?$/;
|
|
18
21
|
const NODE_MODULES = /(?:^|\/)node_modules\//;
|
|
22
|
+
const MEMOIZABLE_SOURCE = /use[A-Z0-9]|use memo|use forget/;
|
|
23
|
+
const JSX_MARK = "<";
|
|
24
|
+
const PLAIN_TYPESCRIPT = ".ts";
|
|
25
|
+
const ALL_FUNCTIONS = "all";
|
|
26
|
+
const babel: { toolchain: Promise<BabelToolchain> | undefined } = { toolchain: undefined };
|
|
27
|
+
|
|
28
|
+
const loadBabelToolchain = async () => {
|
|
29
|
+
const [core, preset, plugin] = await Promise.all([
|
|
30
|
+
import("@babel/core"),
|
|
31
|
+
import("@babel/preset-typescript"),
|
|
32
|
+
import("babel-plugin-react-compiler"),
|
|
33
|
+
]);
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
presetTypescript: preset.default.default ?? preset.default,
|
|
37
|
+
reactCompiler: plugin.default.default ?? plugin.default,
|
|
38
|
+
transformAsync: core.transformAsync,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const babelToolchain = (): Promise<BabelToolchain> => (babel.toolchain ??= loadBabelToolchain());
|
|
19
43
|
|
|
20
44
|
const isProjectSource = (root: string, id: string): boolean => {
|
|
21
45
|
if (!SOURCE_EXTENSION.test(id)) {
|
|
@@ -33,15 +57,25 @@ const isProjectSource = (root: string, id: string): boolean => {
|
|
|
33
57
|
return true;
|
|
34
58
|
};
|
|
35
59
|
|
|
60
|
+
const isMemoizable = (code: string, id: string, options: ResolvedReactCompilerOptions): boolean => {
|
|
61
|
+
if (options.compilationMode === ALL_FUNCTIONS || MEMOIZABLE_SOURCE.test(code)) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return !id.endsWith(PLAIN_TYPESCRIPT) && code.includes(JSX_MARK);
|
|
66
|
+
};
|
|
67
|
+
|
|
36
68
|
const compileSource = async (code: string, id: string, options: ResolvedReactCompilerOptions) => {
|
|
37
|
-
const
|
|
69
|
+
const toolchain = await babelToolchain();
|
|
70
|
+
|
|
71
|
+
const result = await toolchain.transformAsync(code, {
|
|
38
72
|
filename: id,
|
|
39
73
|
babelrc: false,
|
|
40
74
|
configFile: false,
|
|
41
75
|
sourceMaps: true,
|
|
42
|
-
parserOpts: { plugins: id.endsWith(
|
|
43
|
-
presets: TYPESCRIPT_EXTENSION.test(id) ? [
|
|
44
|
-
plugins: [[
|
|
76
|
+
parserOpts: { plugins: id.endsWith(PLAIN_TYPESCRIPT) ? [] : ["jsx"] },
|
|
77
|
+
presets: TYPESCRIPT_EXTENSION.test(id) ? [toolchain.presetTypescript] : [],
|
|
78
|
+
plugins: [[toolchain.reactCompiler, options]],
|
|
45
79
|
});
|
|
46
80
|
|
|
47
81
|
if (!result?.code) {
|
|
@@ -51,10 +85,33 @@ const compileSource = async (code: string, id: string, options: ResolvedReactCom
|
|
|
51
85
|
return result.map == null ? { code: result.code } : { code: result.code, map: JSON.stringify(result.map) };
|
|
52
86
|
};
|
|
53
87
|
|
|
88
|
+
const cachedSource = async (
|
|
89
|
+
cache: ReactCompilerCache,
|
|
90
|
+
code: string,
|
|
91
|
+
id: string,
|
|
92
|
+
options: ResolvedReactCompilerOptions,
|
|
93
|
+
): Promise<CompilerOutput | undefined> => {
|
|
94
|
+
const key = cache.keyFor(code, id);
|
|
95
|
+
const cached = cache.read(key);
|
|
96
|
+
|
|
97
|
+
if (cached !== undefined) {
|
|
98
|
+
return cached;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const compiled = await compileSource(code, id, options);
|
|
102
|
+
|
|
103
|
+
if (compiled !== undefined) {
|
|
104
|
+
cache.write(key, compiled);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return compiled;
|
|
108
|
+
};
|
|
109
|
+
|
|
54
110
|
function gtkxReactCompiler(loadConfig: ConfigLoader = createConfigLoader()): Plugin {
|
|
55
111
|
const state: ReactCompilerState = {
|
|
56
|
-
|
|
112
|
+
cache: null,
|
|
57
113
|
options: null,
|
|
114
|
+
root: "",
|
|
58
115
|
};
|
|
59
116
|
|
|
60
117
|
return {
|
|
@@ -62,22 +119,29 @@ function gtkxReactCompiler(loadConfig: ConfigLoader = createConfigLoader()): Plu
|
|
|
62
119
|
enforce: "pre",
|
|
63
120
|
|
|
64
121
|
async config(config: UserConfig) {
|
|
65
|
-
const resolved = await loadConfig.resolve(config
|
|
122
|
+
const resolved = await loadConfig.resolve(viteProjectRoot(config));
|
|
66
123
|
state.options = resolved.reactCompiler;
|
|
67
124
|
},
|
|
68
125
|
|
|
69
126
|
configResolved(config: ResolvedConfig) {
|
|
70
127
|
state.root = config.root;
|
|
128
|
+
state.cache = state.options === null ? null : createReactCompilerCache(config.cacheDir, state.options);
|
|
71
129
|
},
|
|
72
130
|
|
|
73
|
-
|
|
74
|
-
|
|
131
|
+
transform: {
|
|
132
|
+
filter: { id: { include: SOURCE_EXTENSION, exclude: NODE_MODULES } },
|
|
133
|
+
|
|
134
|
+
async handler(code, id) {
|
|
135
|
+
const options = state.options;
|
|
136
|
+
|
|
137
|
+
if (options === null || !isProjectSource(state.root, id) || !isMemoizable(code, id, options)) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
75
140
|
|
|
76
|
-
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
141
|
+
const cache = state.cache;
|
|
79
142
|
|
|
80
|
-
|
|
143
|
+
return cache === null ? compileSource(code, id, options) : cachedSource(cache, code, id, options);
|
|
144
|
+
},
|
|
81
145
|
},
|
|
82
146
|
};
|
|
83
147
|
}
|
|
@@ -8,6 +8,8 @@ const ICON_NAME_SEPARATOR = "\0icon=";
|
|
|
8
8
|
const REFRESH_EXPORT = "__refresh";
|
|
9
9
|
const REGISTER_REFRESH_EXPORT = "__registerRefresh";
|
|
10
10
|
const RESOURCE_PATH_EXPORT = "path";
|
|
11
|
+
const VIRTUAL_ID_RE = new RegExp(`^${VIRTUAL_PREFIX}`);
|
|
12
|
+
const VIRTUAL_INIT_RE = new RegExp(`^${VIRTUAL_INIT}$`);
|
|
11
13
|
const { isVirtual, toVirtualId, fromVirtualId } = createVirtualNamespace(VIRTUAL_PREFIX);
|
|
12
14
|
|
|
13
15
|
const escapeXml = (value: string): string =>
|
|
@@ -32,7 +34,9 @@ const escapeXml = (value: string): string =>
|
|
|
32
34
|
});
|
|
33
35
|
|
|
34
36
|
export {
|
|
37
|
+
VIRTUAL_ID_RE,
|
|
35
38
|
VIRTUAL_INIT,
|
|
39
|
+
VIRTUAL_INIT_RE,
|
|
36
40
|
BUNDLE_FILENAME,
|
|
37
41
|
REL_SEPARATOR,
|
|
38
42
|
ICON_NAME_SEPARATOR,
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import type { ConfigLoader } from "@gtkx/config";
|
|
2
2
|
import type { ModuleNode, Plugin, ResolvedConfig, Rolldown, UserConfig, ViteDevServer } from "vite";
|
|
3
|
-
import { createConfigLoader,
|
|
4
|
-
import { error, info, isRecord, sortStrings } from "@gtkx/utils";
|
|
3
|
+
import { createConfigLoader, resourceBasePath, viteProjectRoot } from "@gtkx/config/internal";
|
|
4
|
+
import { error, info, isPathInside, isRecord, sortStrings, toPosixPath } from "@gtkx/utils";
|
|
5
5
|
import { copyFileSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
6
6
|
import { basename, dirname, extname, isAbsolute, join, posix, relative, sep } from "node:path";
|
|
7
7
|
import { parseSync } from "vite";
|
|
8
|
-
import {
|
|
9
|
-
import { type ListedFile, listFilesRecursive } from "../internal/list-files.js";
|
|
8
|
+
import { withExclusiveLoad } from "../internal/module-loads.js";
|
|
10
9
|
import { runCliTool } from "../internal/run-cli-tool.js";
|
|
11
10
|
import { parseRuntimeImportsIn, type SourceImport, sourceLanguage } from "../internal/source-imports.js";
|
|
12
11
|
import { createRetainedStagingDir, type RetainedStagingDir, withStagingDir } from "../internal/staging-dir.js";
|
|
13
12
|
import { ASSET_RE } from "./asset-extensions.js";
|
|
14
13
|
import {
|
|
15
|
-
DATA_PREFIX,
|
|
16
14
|
isBareRelativeAsset,
|
|
17
|
-
isDataAsset,
|
|
18
15
|
parseIconSpecifier,
|
|
19
16
|
parseResourceSpecifier,
|
|
20
17
|
} from "./asset-specifier.js";
|
|
@@ -30,7 +27,9 @@ import {
|
|
|
30
27
|
REL_SEPARATOR,
|
|
31
28
|
RESOURCE_PATH_EXPORT,
|
|
32
29
|
toVirtualId,
|
|
30
|
+
VIRTUAL_ID_RE,
|
|
33
31
|
VIRTUAL_INIT,
|
|
32
|
+
VIRTUAL_INIT_RE,
|
|
34
33
|
} from "./resource-shared.js";
|
|
35
34
|
import { stripQuery } from "./strip-query.js";
|
|
36
35
|
|
|
@@ -44,7 +43,6 @@ type PluginState = {
|
|
|
44
43
|
prefix: string;
|
|
45
44
|
root: string;
|
|
46
45
|
isBuild: boolean;
|
|
47
|
-
isV2: boolean;
|
|
48
46
|
entries: Map<string, ResourceEntry>;
|
|
49
47
|
bundledSpecifiers: Map<string, Set<string>>;
|
|
50
48
|
moduleDependencies: Map<string, Set<string>>;
|
|
@@ -58,7 +56,6 @@ type PluginState = {
|
|
|
58
56
|
devBundlePath: string;
|
|
59
57
|
server: ViteDevServer | null;
|
|
60
58
|
compiledSignature: string;
|
|
61
|
-
dataDir: string | null;
|
|
62
59
|
bundleReferenceId: string | null;
|
|
63
60
|
iconOwners: Map<string, ResourceEntry>;
|
|
64
61
|
};
|
|
@@ -118,7 +115,7 @@ type DerivedIconEntry = {
|
|
|
118
115
|
resourcePath: string;
|
|
119
116
|
};
|
|
120
117
|
|
|
121
|
-
type
|
|
118
|
+
type ResolveRequest = {
|
|
122
119
|
source: string;
|
|
123
120
|
importer: string | undefined;
|
|
124
121
|
options: Record<string, unknown> | undefined;
|
|
@@ -128,6 +125,7 @@ const RESOURCE_COMPILER = "glib-compile-resources";
|
|
|
128
125
|
const MANIFEST_PREFIX = "/";
|
|
129
126
|
const DEV_STAGING_PREFIX = "resources-dev";
|
|
130
127
|
const MANIFEST_FILENAME = "package.json";
|
|
128
|
+
const DATA_PREFIX = "#data/";
|
|
131
129
|
const BUNDLED_QUERY_MENTION_RE = /[?&](?:icon|resource)(?:[=&]|$)/;
|
|
132
130
|
const ICON_EXTENSIONS: Set<string> = new Set([".png", ".svg", ".xpm"]);
|
|
133
131
|
|
|
@@ -164,16 +162,8 @@ const STOCK_ICON_CONTEXTS: Set<string> = new Set([
|
|
|
164
162
|
const ICON_SIZE_RE = /^([1-9]\d*)x\1(?:@[1-9]\d*)?$/;
|
|
165
163
|
const RESERVED_ICON_NAMES: Set<string> = new Set(["", ".", ".."]);
|
|
166
164
|
|
|
167
|
-
const toForwardSlashes = (value: string): string => value.replaceAll(/[/\\]/g, "/");
|
|
168
|
-
|
|
169
|
-
const isWithin = (root: string, path: string): boolean => {
|
|
170
|
-
const rel = relative(root, path);
|
|
171
|
-
|
|
172
|
-
return rel.length > 0 && !isAbsolute(rel) && rel !== ".." && !rel.startsWith(`..${sep}`);
|
|
173
|
-
};
|
|
174
|
-
|
|
175
165
|
const isDependencyFile = (root: string, path: string): boolean =>
|
|
176
|
-
|
|
166
|
+
isPathInside(root, path) && relative(root, path).split(sep).includes("node_modules");
|
|
177
167
|
|
|
178
168
|
const packageIdentityIn = (dir: string): string | null => {
|
|
179
169
|
try {
|
|
@@ -216,17 +206,17 @@ const validateResourcePath = (resourcePath: string): string => {
|
|
|
216
206
|
};
|
|
217
207
|
|
|
218
208
|
const derivedResourcePath = (state: PluginState, sourcePath: string): string => {
|
|
219
|
-
if (
|
|
220
|
-
return validateResourcePath(`${state.prefix}/${
|
|
209
|
+
if (isPathInside(state.root, sourcePath) && !isDependencyFile(state.root, sourcePath)) {
|
|
210
|
+
return validateResourcePath(`${state.prefix}/${toPosixPath(relative(state.root, sourcePath))}`);
|
|
221
211
|
}
|
|
222
212
|
|
|
223
213
|
const owner = packageForFile(sourcePath);
|
|
224
214
|
|
|
225
|
-
if (owner === null || !
|
|
215
|
+
if (owner === null || !isPathInside(owner.dir, sourcePath)) {
|
|
226
216
|
throw new Error(`${sourcePath} is outside the application and does not belong to a named package`);
|
|
227
217
|
}
|
|
228
218
|
|
|
229
|
-
const packagePath =
|
|
219
|
+
const packagePath = toPosixPath(relative(owner.dir, sourcePath));
|
|
230
220
|
|
|
231
221
|
return validateResourcePath(`${state.prefix}/${owner.name}/${packagePath}`);
|
|
232
222
|
};
|
|
@@ -292,7 +282,7 @@ const iconLayoutInParts = (parts: string[], beforeIndex: number): string | null
|
|
|
292
282
|
};
|
|
293
283
|
|
|
294
284
|
const iconLayoutFromTree = (sourcePath: string): string | null => {
|
|
295
|
-
const parts =
|
|
285
|
+
const parts = toPosixPath(sourcePath).split("/");
|
|
296
286
|
|
|
297
287
|
return iconLayoutInParts(parts, parts.length - 2);
|
|
298
288
|
};
|
|
@@ -335,11 +325,10 @@ const hasSideEffectIconImport = (code: string, id: string): boolean => {
|
|
|
335
325
|
};
|
|
336
326
|
|
|
337
327
|
const retainSideEffectIconImport = (
|
|
338
|
-
state: PluginState,
|
|
339
328
|
code: string,
|
|
340
329
|
id: string,
|
|
341
330
|
): { code: string; moduleSideEffects: true } | null =>
|
|
342
|
-
|
|
331
|
+
hasSideEffectIconImport(code, id)
|
|
343
332
|
? { code, moduleSideEffects: true }
|
|
344
333
|
: null;
|
|
345
334
|
|
|
@@ -430,20 +419,6 @@ const refreshRegisteredDevBundle = (state: PluginState): void => {
|
|
|
430
419
|
}
|
|
431
420
|
};
|
|
432
421
|
|
|
433
|
-
const scanDataAssets = (dataDir: string): ListedFile[] => listFilesRecursive(dataDir, (name) => ASSET_RE.test(name));
|
|
434
|
-
|
|
435
|
-
const primeLegacyDevBundle = (state: PluginState): void => {
|
|
436
|
-
if (state.dataDir === null) {
|
|
437
|
-
return;
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
for (const { absPath, rel } of scanDataAssets(state.dataDir)) {
|
|
441
|
-
registerEntry(state, absPath, rel);
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
compileDevBundle(state);
|
|
445
|
-
};
|
|
446
|
-
|
|
447
422
|
const registerDevAsset = (state: PluginState): void => {
|
|
448
423
|
if (entriesSignature(state) !== state.compiledSignature) {
|
|
449
424
|
compileDevBundle(state);
|
|
@@ -490,7 +465,7 @@ const activateEntry = (state: PluginState, entry: ResourceEntry): ResourceEntry
|
|
|
490
465
|
};
|
|
491
466
|
|
|
492
467
|
const isDeclarativeImporter = (state: PluginState, importer: string | undefined): importer is string =>
|
|
493
|
-
!state.isBuild &&
|
|
468
|
+
!state.isBuild && importer !== undefined;
|
|
494
469
|
|
|
495
470
|
const setSourceAvailability = (state: PluginState, file: string, isAvailable: boolean): void => {
|
|
496
471
|
if (isAvailable) {
|
|
@@ -713,26 +688,6 @@ const resolveIconEntry = async (
|
|
|
713
688
|
};
|
|
714
689
|
};
|
|
715
690
|
|
|
716
|
-
const resolveLegacyAssetEntry = async (
|
|
717
|
-
ctx: ResolveContext,
|
|
718
|
-
state: PluginState,
|
|
719
|
-
request: LegacyResolveRequest,
|
|
720
|
-
): Promise<ResourceEntry | undefined> => {
|
|
721
|
-
const resolved = await ctx.resolve(request.source, request.importer, { ...request.options, skipSelf: true });
|
|
722
|
-
|
|
723
|
-
if (!resolved || resolved.external) {
|
|
724
|
-
return undefined;
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
const sourcePath = stripQuery(resolved.id);
|
|
728
|
-
|
|
729
|
-
if (!isAbsolute(sourcePath)) {
|
|
730
|
-
return undefined;
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
return registerEntry(state, sourcePath, request.source.slice(DATA_PREFIX.length));
|
|
734
|
-
};
|
|
735
|
-
|
|
736
691
|
const loadInitModule = (state: PluginState): string => {
|
|
737
692
|
if (state.isBuild) {
|
|
738
693
|
if (state.bundleReferenceId === null) {
|
|
@@ -831,8 +786,7 @@ const loadAssetModule = (state: PluginState, virtualId: string): string => {
|
|
|
831
786
|
const { absPath, iconName, rel } = virtualAssetMetadata(virtualId);
|
|
832
787
|
const resourcePath = validateResourcePath(rel);
|
|
833
788
|
const { entry, isRegistered } = loadedResourceEntry(state, absPath, resourcePath);
|
|
834
|
-
const
|
|
835
|
-
const defaultValue = iconName ?? (state.isV2 ? entry.resourcePath : uri);
|
|
789
|
+
const defaultValue = iconName ?? entry.resourcePath;
|
|
836
790
|
compileLoadedDevAsset(state, isRegistered);
|
|
837
791
|
|
|
838
792
|
return [
|
|
@@ -899,12 +853,12 @@ const isSourceModule = (file: string): boolean => sourceLanguage(file) !== undef
|
|
|
899
853
|
const isBundledSource = (source: string): boolean =>
|
|
900
854
|
parseResourceSpecifier(source) !== null || parseIconSpecifier(source) !== null;
|
|
901
855
|
|
|
902
|
-
const
|
|
856
|
+
const validateUnbundledSource = (source: string): void => {
|
|
903
857
|
if (isLegacyDataSpecifier(source)) {
|
|
904
858
|
throw new Error(`${JSON.stringify(source)} uses the legacy #data asset form`);
|
|
905
859
|
}
|
|
906
860
|
|
|
907
|
-
|
|
861
|
+
rejectInvalidSpecifier(source);
|
|
908
862
|
};
|
|
909
863
|
|
|
910
864
|
const resolvedModuleDependency = async (
|
|
@@ -916,7 +870,7 @@ const resolvedModuleDependency = async (
|
|
|
916
870
|
return null;
|
|
917
871
|
}
|
|
918
872
|
|
|
919
|
-
|
|
873
|
+
validateUnbundledSource(source);
|
|
920
874
|
const resolved = await ctx.resolve(source, importer, { skipSelf: true });
|
|
921
875
|
|
|
922
876
|
if (resolved === null) {
|
|
@@ -952,7 +906,7 @@ const importerReconciliation = async (
|
|
|
952
906
|
const file = stripQuery(id);
|
|
953
907
|
const key = importerKey(file);
|
|
954
908
|
|
|
955
|
-
if (
|
|
909
|
+
if (state.isBuild || !isSourceModule(file)) {
|
|
956
910
|
return null;
|
|
957
911
|
}
|
|
958
912
|
|
|
@@ -1171,35 +1125,16 @@ const forgetImporterDeclarations = (state: PluginState, importer: string): void
|
|
|
1171
1125
|
state.declaredIcons.delete(importer);
|
|
1172
1126
|
};
|
|
1173
1127
|
|
|
1174
|
-
const
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
for (const [key, values] of source) {
|
|
1178
|
-
clone.set(key, new Set(values));
|
|
1179
|
-
}
|
|
1180
|
-
|
|
1181
|
-
return clone;
|
|
1182
|
-
};
|
|
1183
|
-
|
|
1184
|
-
const cloneDeclarationMap = (
|
|
1185
|
-
source: Map<string, Map<string, ResourceEntry>>,
|
|
1186
|
-
): Map<string, Map<string, ResourceEntry>> => {
|
|
1187
|
-
const clone: Map<string, Map<string, ResourceEntry>> = new Map();
|
|
1188
|
-
|
|
1189
|
-
for (const [key, declarations] of source) {
|
|
1190
|
-
clone.set(key, new Map(declarations));
|
|
1191
|
-
}
|
|
1192
|
-
|
|
1193
|
-
return clone;
|
|
1194
|
-
};
|
|
1128
|
+
const cloneMapValues = <Value>(source: Map<string, Value>, clone: (value: Value) => Value): Map<string, Value> =>
|
|
1129
|
+
new Map([...source].map(([key, value]) => [key, clone(value)]));
|
|
1195
1130
|
|
|
1196
1131
|
const reconciliationCandidate = (state: PluginState): PluginState => ({
|
|
1197
1132
|
...state,
|
|
1198
|
-
bundledSpecifiers:
|
|
1199
|
-
moduleDependencies:
|
|
1200
|
-
prunedDependencies:
|
|
1201
|
-
declaredEntries:
|
|
1202
|
-
declaredIcons:
|
|
1133
|
+
bundledSpecifiers: cloneMapValues(state.bundledSpecifiers, (values) => new Set(values)),
|
|
1134
|
+
moduleDependencies: cloneMapValues(state.moduleDependencies, (values) => new Set(values)),
|
|
1135
|
+
prunedDependencies: cloneMapValues(state.prunedDependencies, (values) => new Set(values)),
|
|
1136
|
+
declaredEntries: cloneMapValues(state.declaredEntries, (entries) => new Map(entries)),
|
|
1137
|
+
declaredIcons: cloneMapValues(state.declaredIcons, (entries) => new Map(entries)),
|
|
1203
1138
|
missingSourcePaths: new Set(state.missingSourcePaths),
|
|
1204
1139
|
});
|
|
1205
1140
|
|
|
@@ -1333,7 +1268,7 @@ const commitReconciliation = (state: PluginState, candidate: PluginState): void
|
|
|
1333
1268
|
state.iconOwners = candidate.iconOwners;
|
|
1334
1269
|
};
|
|
1335
1270
|
|
|
1336
|
-
const
|
|
1271
|
+
const reconcileImporter = async (ctx: ResolveContext, state: PluginState, id: string): Promise<void> => {
|
|
1337
1272
|
const reconciliation = await importerReconciliation(ctx, state, id);
|
|
1338
1273
|
|
|
1339
1274
|
if (reconciliation === null) {
|
|
@@ -1350,10 +1285,9 @@ const reconcileV2Importer = async (ctx: ResolveContext, state: PluginState, id:
|
|
|
1350
1285
|
};
|
|
1351
1286
|
|
|
1352
1287
|
const resolveResourceConfig = async (state: PluginState, config: UserConfig, loadConfig: ConfigLoader) => {
|
|
1353
|
-
const loaded = await loadConfig.load(config
|
|
1288
|
+
const loaded = await loadConfig.load(viteProjectRoot(config));
|
|
1354
1289
|
state.prefix = resourceBasePath(loaded.config.applicationId);
|
|
1355
1290
|
state.root = loaded.root;
|
|
1356
|
-
state.isV2 = resolveFuture(loaded.config.future).isResourceImported;
|
|
1357
1291
|
|
|
1358
1292
|
return {
|
|
1359
1293
|
assetsInclude: [ASSET_RE],
|
|
@@ -1423,14 +1357,6 @@ const attachResourceWatcher = (state: PluginState, server: ViteDevServer): void
|
|
|
1423
1357
|
const applyResolvedConfig = (state: PluginState, config: ResolvedConfig): void => {
|
|
1424
1358
|
state.isBuild = config.command === "build";
|
|
1425
1359
|
state.root = config.root;
|
|
1426
|
-
state.dataDir = null;
|
|
1427
|
-
|
|
1428
|
-
if (state.isBuild || state.isV2) {
|
|
1429
|
-
return;
|
|
1430
|
-
}
|
|
1431
|
-
|
|
1432
|
-
const relativeDataDir = resolveDataDir(config.root);
|
|
1433
|
-
state.dataDir = relativeDataDir === null ? null : join(config.root, relativeDataDir);
|
|
1434
1360
|
};
|
|
1435
1361
|
|
|
1436
1362
|
const loadResourceModule = (state: PluginState, id: string): string | undefined => {
|
|
@@ -1448,7 +1374,7 @@ const loadResourceModule = (state: PluginState, id: string): string | undefined
|
|
|
1448
1374
|
const isLegacyDataSpecifier = (source: string): boolean =>
|
|
1449
1375
|
source.startsWith(DATA_PREFIX) && ASSET_RE.test(stripQuery(source));
|
|
1450
1376
|
|
|
1451
|
-
const
|
|
1377
|
+
const rejectInvalidSpecifier = (source: string): void => {
|
|
1452
1378
|
if (BUNDLED_QUERY_MENTION_RE.test(source)) {
|
|
1453
1379
|
throw new Error(
|
|
1454
1380
|
`${JSON.stringify(source)} is not a valid bundled asset import; use ?resource, ` +
|
|
@@ -1459,7 +1385,7 @@ const rejectInvalidV2Specifier = (source: string): void => {
|
|
|
1459
1385
|
if (isBareRelativeAsset(source)) {
|
|
1460
1386
|
throw new Error(
|
|
1461
1387
|
`${JSON.stringify(source)} must choose ?resource for a GResource, ?icon for a themed icon, ` +
|
|
1462
|
-
"or ?url for an emitted file",
|
|
1388
|
+
"?font for a bundled font, or ?url for an emitted file",
|
|
1463
1389
|
);
|
|
1464
1390
|
}
|
|
1465
1391
|
};
|
|
@@ -1467,7 +1393,7 @@ const rejectInvalidV2Specifier = (source: string): void => {
|
|
|
1467
1393
|
const resolveExplicitResourceId = async (
|
|
1468
1394
|
ctx: ResolveContext,
|
|
1469
1395
|
state: PluginState,
|
|
1470
|
-
request:
|
|
1396
|
+
request: ResolveRequest,
|
|
1471
1397
|
): Promise<string | undefined> => {
|
|
1472
1398
|
const specifier = parseResourceSpecifier(request.source);
|
|
1473
1399
|
|
|
@@ -1488,7 +1414,7 @@ const resolveExplicitResourceId = async (
|
|
|
1488
1414
|
const resolveIconResourceId = async (
|
|
1489
1415
|
ctx: ResolveContext,
|
|
1490
1416
|
state: PluginState,
|
|
1491
|
-
request:
|
|
1417
|
+
request: ResolveRequest,
|
|
1492
1418
|
): Promise<RetainedIconModuleId | undefined> => {
|
|
1493
1419
|
const specifier = parseIconSpecifier(request.source);
|
|
1494
1420
|
|
|
@@ -1508,10 +1434,10 @@ const resolveIconResourceId = async (
|
|
|
1508
1434
|
: { id: virtualIconId(resolved), moduleSideEffects: true };
|
|
1509
1435
|
};
|
|
1510
1436
|
|
|
1511
|
-
const
|
|
1437
|
+
const resolveBundledResourceId = async (
|
|
1512
1438
|
ctx: ResolveContext,
|
|
1513
1439
|
state: PluginState,
|
|
1514
|
-
request:
|
|
1440
|
+
request: ResolveRequest,
|
|
1515
1441
|
): Promise<ResourceModuleId | undefined> => {
|
|
1516
1442
|
if (isLegacyDataSpecifier(request.source)) {
|
|
1517
1443
|
throw new Error(
|
|
@@ -1534,46 +1460,21 @@ const resolveV2ResourceId = async (
|
|
|
1534
1460
|
return resolved;
|
|
1535
1461
|
}
|
|
1536
1462
|
|
|
1537
|
-
|
|
1463
|
+
rejectInvalidSpecifier(request.source);
|
|
1538
1464
|
|
|
1539
1465
|
return undefined;
|
|
1540
1466
|
};
|
|
1541
1467
|
|
|
1542
|
-
const resolveLegacyResourceId = async (
|
|
1543
|
-
ctx: ResolveContext,
|
|
1544
|
-
state: PluginState,
|
|
1545
|
-
request: LegacyResolveRequest,
|
|
1546
|
-
): Promise<string | undefined> => {
|
|
1547
|
-
if (BUNDLED_QUERY_MENTION_RE.test(request.source)) {
|
|
1548
|
-
throw new Error(`${JSON.stringify(request.source)} requires future.v2ResourceImports`);
|
|
1549
|
-
}
|
|
1550
|
-
|
|
1551
|
-
if (!isDataAsset(request.source)) {
|
|
1552
|
-
return undefined;
|
|
1553
|
-
}
|
|
1554
|
-
|
|
1555
|
-
const entry = await resolveLegacyAssetEntry(ctx, state, request);
|
|
1556
|
-
|
|
1557
|
-
return entry === undefined ? undefined : virtualAssetId(entry);
|
|
1558
|
-
};
|
|
1559
|
-
|
|
1560
1468
|
const resolveResourceId = (
|
|
1561
1469
|
ctx: ResolveContext,
|
|
1562
1470
|
state: PluginState,
|
|
1563
|
-
request:
|
|
1471
|
+
request: ResolveRequest,
|
|
1564
1472
|
): Promise<ResourceModuleId | undefined> => {
|
|
1565
1473
|
if (request.source === VIRTUAL_INIT) {
|
|
1566
1474
|
return Promise.resolve(VIRTUAL_INIT);
|
|
1567
1475
|
}
|
|
1568
1476
|
|
|
1569
|
-
return state
|
|
1570
|
-
? resolveV2ResourceId(ctx, state, request)
|
|
1571
|
-
: resolveLegacyResourceId(ctx, state, request);
|
|
1572
|
-
};
|
|
1573
|
-
|
|
1574
|
-
const configureResourceServer = (state: PluginState, server: ViteDevServer): void => {
|
|
1575
|
-
attachResourceWatcher(state, server);
|
|
1576
|
-
primeLegacyDevBundle(state);
|
|
1477
|
+
return resolveBundledResourceId(ctx, state, request);
|
|
1577
1478
|
};
|
|
1578
1479
|
|
|
1579
1480
|
const createResourcesPlugin = (state: PluginState, loadConfig: ConfigLoader): Plugin => ({
|
|
@@ -1588,7 +1489,7 @@ const createResourcesPlugin = (state: PluginState, loadConfig: ConfigLoader): Pl
|
|
|
1588
1489
|
},
|
|
1589
1490
|
|
|
1590
1491
|
configureServer: (server) => {
|
|
1591
|
-
|
|
1492
|
+
attachResourceWatcher(state, server);
|
|
1592
1493
|
},
|
|
1593
1494
|
|
|
1594
1495
|
buildStart() {
|
|
@@ -1605,14 +1506,18 @@ const createResourcesPlugin = (state: PluginState, loadConfig: ConfigLoader): Pl
|
|
|
1605
1506
|
return resolveResourceId(this, state, { source, importer, options });
|
|
1606
1507
|
},
|
|
1607
1508
|
|
|
1608
|
-
load
|
|
1609
|
-
|
|
1509
|
+
load: {
|
|
1510
|
+
filter: { id: { include: [VIRTUAL_INIT_RE, VIRTUAL_ID_RE] } },
|
|
1511
|
+
|
|
1512
|
+
handler(id) {
|
|
1513
|
+
return loadResourceModule(state, id);
|
|
1514
|
+
},
|
|
1610
1515
|
},
|
|
1611
1516
|
|
|
1612
1517
|
async transform(code, id) {
|
|
1613
|
-
await
|
|
1518
|
+
await withExclusiveLoad(state, () => reconcileImporter(this, state, id));
|
|
1614
1519
|
|
|
1615
|
-
return retainSideEffectIconImport(
|
|
1520
|
+
return retainSideEffectIconImport(code, id);
|
|
1616
1521
|
},
|
|
1617
1522
|
|
|
1618
1523
|
generateBundle(_options, bundle) {
|
|
@@ -1629,7 +1534,6 @@ function gtkxResources(loadConfig: ConfigLoader = createConfigLoader(), entryPat
|
|
|
1629
1534
|
prefix: "",
|
|
1630
1535
|
root: "",
|
|
1631
1536
|
isBuild: false,
|
|
1632
|
-
isV2: false,
|
|
1633
1537
|
entries: new Map(),
|
|
1634
1538
|
bundledSpecifiers: new Map(),
|
|
1635
1539
|
moduleDependencies: new Map(),
|
|
@@ -1643,7 +1547,6 @@ function gtkxResources(loadConfig: ConfigLoader = createConfigLoader(), entryPat
|
|
|
1643
1547
|
devBundlePath: "",
|
|
1644
1548
|
server: null,
|
|
1645
1549
|
compiledSignature: "",
|
|
1646
|
-
dataDir: null,
|
|
1647
1550
|
bundleReferenceId: null,
|
|
1648
1551
|
iconOwners: new Map(),
|
|
1649
1552
|
};
|