@gtkx/cli 0.21.0 → 1.0.0-rc.2
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 +173 -0
- package/bin/gtkx-dev-runner.js +9 -0
- package/dist/builder.d.ts +5 -52
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +24 -57
- package/dist/builder.js.map +1 -1
- package/dist/cli.d.ts +1 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +24 -122
- package/dist/cli.js.map +1 -1
- package/dist/codegen/freshness.d.ts +11 -0
- package/dist/codegen/freshness.d.ts.map +1 -0
- package/dist/codegen/freshness.js +45 -0
- package/dist/codegen/freshness.js.map +1 -0
- package/dist/codegen/report.d.ts +4 -0
- package/dist/codegen/report.d.ts.map +1 -0
- package/dist/codegen/report.js +18 -0
- package/dist/codegen/report.js.map +1 -0
- package/dist/codegen/run-codegen.d.ts +35 -0
- package/dist/codegen/run-codegen.d.ts.map +1 -0
- package/dist/codegen/run-codegen.js +162 -0
- package/dist/codegen/run-codegen.js.map +1 -0
- package/dist/codegen/store-resolver.d.ts +24 -0
- package/dist/codegen/store-resolver.d.ts.map +1 -0
- package/dist/codegen/store-resolver.js +72 -0
- package/dist/codegen/store-resolver.js.map +1 -0
- package/dist/commands/build.d.ts +10 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +34 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/codegen.d.ts +10 -0
- package/dist/commands/codegen.d.ts.map +1 -0
- package/dist/commands/codegen.js +42 -0
- package/dist/commands/codegen.js.map +1 -0
- package/dist/commands/dev.d.ts +6 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +22 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/docs.d.ts +20 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +74 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/dev/icon-dir.d.ts +3 -0
- package/dist/dev/icon-dir.d.ts.map +1 -0
- package/dist/dev/icon-dir.js +16 -0
- package/dist/dev/icon-dir.js.map +1 -0
- package/dist/dev/refresh-tracker.d.ts +7 -0
- package/dist/dev/refresh-tracker.d.ts.map +1 -0
- package/dist/dev/refresh-tracker.js +19 -0
- package/dist/dev/refresh-tracker.js.map +1 -0
- package/dist/dev/runner-deps.d.ts +4 -0
- package/dist/dev/runner-deps.d.ts.map +1 -0
- package/dist/dev/runner-deps.js +55 -0
- package/dist/dev/runner-deps.js.map +1 -0
- package/dist/dev/runner-main.d.ts +3 -0
- package/dist/dev/runner-main.d.ts.map +1 -0
- package/dist/dev/runner-main.js +29 -0
- package/dist/dev/runner-main.js.map +1 -0
- package/dist/dev/runner.d.ts +24 -0
- package/dist/dev/runner.d.ts.map +1 -0
- package/dist/dev/runner.js +119 -0
- package/dist/dev/runner.js.map +1 -0
- package/dist/dev/schema-dir.d.ts +3 -0
- package/dist/dev/schema-dir.d.ts.map +1 -0
- package/dist/dev/schema-dir.js +12 -0
- package/dist/dev/schema-dir.js.map +1 -0
- package/dist/dev/supervisor.d.ts +18 -0
- package/dist/dev/supervisor.d.ts.map +1 -0
- package/dist/dev/supervisor.js +182 -0
- package/dist/dev/supervisor.js.map +1 -0
- package/dist/dev/vite-dev-server.d.ts +21 -0
- package/dist/dev/vite-dev-server.d.ts.map +1 -0
- package/dist/dev/vite-dev-server.js +13 -0
- package/dist/dev/vite-dev-server.js.map +1 -0
- package/dist/internal/banner.d.ts +4 -0
- package/dist/internal/banner.d.ts.map +1 -0
- package/dist/internal/banner.js +9 -0
- package/dist/internal/banner.js.map +1 -0
- package/dist/internal/data-dir.d.ts +4 -0
- package/dist/internal/data-dir.d.ts.map +1 -0
- package/dist/internal/data-dir.js +52 -0
- package/dist/internal/data-dir.js.map +1 -0
- package/dist/internal/entry-arg.d.ts +20 -0
- package/dist/internal/entry-arg.d.ts.map +1 -0
- package/dist/internal/entry-arg.js +36 -0
- package/dist/internal/entry-arg.js.map +1 -0
- package/dist/internal/errors.d.ts +5 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/errors.js +29 -0
- package/dist/internal/errors.js.map +1 -0
- package/dist/internal/list-files.d.ts +7 -0
- package/dist/internal/list-files.d.ts.map +1 -0
- package/dist/internal/list-files.js +15 -0
- package/dist/internal/list-files.js.map +1 -0
- package/dist/internal/resolve-cli-tool.d.ts +3 -0
- package/dist/internal/resolve-cli-tool.d.ts.map +1 -0
- package/dist/internal/resolve-cli-tool.js +27 -0
- package/dist/internal/resolve-cli-tool.js.map +1 -0
- package/dist/internal/staging-dir.d.ts +4 -0
- package/dist/internal/staging-dir.d.ts.map +1 -0
- package/dist/internal/staging-dir.js +17 -0
- package/dist/internal/staging-dir.js.map +1 -0
- package/dist/internal/xdg-data-dirs.d.ts +3 -0
- package/dist/internal/xdg-data-dirs.d.ts.map +1 -0
- package/dist/internal/xdg-data-dirs.js +10 -0
- package/dist/internal/xdg-data-dirs.js.map +1 -0
- package/dist/mcp/client.d.ts +28 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +182 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/handlers.d.ts +9 -0
- package/dist/mcp/handlers.d.ts.map +1 -0
- package/dist/mcp/handlers.js +147 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +34 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/serialize-widget.d.ts +10 -0
- package/dist/mcp/serialize-widget.d.ts.map +1 -0
- package/dist/mcp/serialize-widget.js +23 -0
- package/dist/mcp/serialize-widget.js.map +1 -0
- package/dist/mcp/testing-loader.d.ts +5 -0
- package/dist/mcp/testing-loader.d.ts.map +1 -0
- package/dist/mcp/testing-loader.js +47 -0
- package/dist/mcp/testing-loader.js.map +1 -0
- package/dist/mcp/widget-registry.d.ts +14 -0
- package/dist/mcp/widget-registry.d.ts.map +1 -0
- package/dist/mcp/widget-registry.js +39 -0
- package/dist/mcp/widget-registry.js.map +1 -0
- package/dist/refresh-globals.d.ts +2 -0
- package/dist/refresh-globals.d.ts.map +1 -0
- package/dist/refresh-globals.js +8 -0
- package/dist/refresh-globals.js.map +1 -0
- package/dist/refresh-runtime.d.ts +10 -26
- package/dist/refresh-runtime.d.ts.map +1 -1
- package/dist/refresh-runtime.js +26 -48
- package/dist/refresh-runtime.js.map +1 -1
- package/dist/settings/compile.d.ts +3 -0
- package/dist/settings/compile.d.ts.map +1 -0
- package/dist/settings/compile.js +21 -0
- package/dist/settings/compile.js.map +1 -0
- package/dist/settings/parser.d.ts +24 -0
- package/dist/settings/parser.d.ts.map +1 -0
- package/dist/settings/parser.js +121 -0
- package/dist/settings/parser.js.map +1 -0
- package/dist/settings/render.d.ts +5 -0
- package/dist/settings/render.d.ts.map +1 -0
- package/dist/settings/render.js +122 -0
- package/dist/settings/render.js.map +1 -0
- package/dist/settings/schema.d.ts +13 -0
- package/dist/settings/schema.d.ts.map +1 -0
- package/dist/settings/schema.js +121 -0
- package/dist/settings/schema.js.map +1 -0
- package/dist/vite-plugins/asset-extensions.d.ts +5 -0
- package/dist/vite-plugins/asset-extensions.d.ts.map +1 -0
- package/dist/vite-plugins/asset-extensions.js +28 -0
- package/dist/vite-plugins/asset-extensions.js.map +1 -0
- package/dist/vite-plugins/built-url.d.ts +4 -0
- package/dist/vite-plugins/built-url.d.ts.map +1 -0
- package/dist/vite-plugins/built-url.js +36 -0
- package/dist/vite-plugins/built-url.js.map +1 -0
- package/dist/vite-plugins/css.d.ts +4 -0
- package/dist/vite-plugins/css.d.ts.map +1 -0
- package/dist/vite-plugins/css.js +38 -0
- package/dist/vite-plugins/css.js.map +1 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts +8 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts.map +1 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.js +19 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.js.map +1 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts +6 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts.map +1 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.js +70 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.js.map +1 -0
- package/dist/vite-plugins/icons.d.ts +4 -0
- package/dist/vite-plugins/icons.d.ts.map +1 -0
- package/dist/vite-plugins/icons.js +51 -0
- package/dist/vite-plugins/icons.js.map +1 -0
- package/dist/vite-plugins/index.d.ts +4 -0
- package/dist/vite-plugins/index.d.ts.map +1 -0
- package/dist/vite-plugins/index.js +22 -0
- package/dist/vite-plugins/index.js.map +1 -0
- package/dist/vite-plugins/native.d.ts +4 -0
- package/dist/vite-plugins/native.d.ts.map +1 -0
- package/dist/vite-plugins/native.js +62 -0
- package/dist/vite-plugins/native.js.map +1 -0
- package/dist/vite-plugins/react-compiler.d.ts +5 -0
- package/dist/vite-plugins/react-compiler.d.ts.map +1 -0
- package/dist/vite-plugins/react-compiler.js +62 -0
- package/dist/vite-plugins/react-compiler.js.map +1 -0
- package/dist/vite-plugins/react-dom-prebundle.d.ts +4 -0
- package/dist/vite-plugins/react-dom-prebundle.d.ts.map +1 -0
- package/dist/vite-plugins/react-dom-prebundle.js +12 -0
- package/dist/vite-plugins/react-dom-prebundle.js.map +1 -0
- package/dist/vite-plugins/resource-init-module.d.ts +6 -0
- package/dist/vite-plugins/resource-init-module.d.ts.map +1 -0
- package/dist/vite-plugins/resource-init-module.js +51 -0
- package/dist/vite-plugins/resource-init-module.js.map +1 -0
- package/dist/vite-plugins/resource-shared.d.ts +8 -0
- package/dist/vite-plugins/resource-shared.d.ts.map +1 -0
- package/dist/vite-plugins/resource-shared.js +28 -0
- package/dist/vite-plugins/resource-shared.js.map +1 -0
- package/dist/vite-plugins/resources.d.ts +5 -0
- package/dist/vite-plugins/resources.d.ts.map +1 -0
- package/dist/vite-plugins/resources.js +260 -0
- package/dist/vite-plugins/resources.js.map +1 -0
- package/dist/vite-plugins/settings-worker-env.d.ts +4 -0
- package/dist/vite-plugins/settings-worker-env.d.ts.map +1 -0
- package/dist/vite-plugins/settings-worker-env.js +23 -0
- package/dist/vite-plugins/settings-worker-env.js.map +1 -0
- package/dist/vite-plugins/settings.d.ts +4 -0
- package/dist/vite-plugins/settings.d.ts.map +1 -0
- package/dist/vite-plugins/settings.js +214 -0
- package/dist/vite-plugins/settings.js.map +1 -0
- package/dist/vite-plugins/strip-query.d.ts +3 -0
- package/dist/vite-plugins/strip-query.d.ts.map +1 -0
- package/dist/vite-plugins/strip-query.js +6 -0
- package/dist/vite-plugins/strip-query.js.map +1 -0
- package/dist/vite-plugins/undeclared-library.d.ts +4 -0
- package/dist/vite-plugins/undeclared-library.d.ts.map +1 -0
- package/dist/vite-plugins/undeclared-library.js +50 -0
- package/dist/vite-plugins/undeclared-library.js.map +1 -0
- package/dist/vite-plugins/virtual-module.d.ts +22 -0
- package/dist/vite-plugins/virtual-module.d.ts.map +1 -0
- package/dist/vite-plugins/virtual-module.js +20 -0
- package/dist/vite-plugins/virtual-module.js.map +1 -0
- package/dist/vitest-plugin.d.ts +10 -0
- package/dist/vitest-plugin.d.ts.map +1 -0
- package/dist/vitest-plugin.js +12 -0
- package/dist/vitest-plugin.js.map +1 -0
- package/env.d.ts +91 -8
- package/package.json +30 -38
- package/src/babel-modules.d.ts +11 -0
- package/src/builder.ts +31 -86
- package/src/cli.ts +42 -0
- package/src/codegen/freshness.ts +65 -0
- package/src/codegen/report.ts +28 -0
- package/src/codegen/run-codegen.ts +260 -0
- package/src/codegen/store-resolver.ts +116 -0
- package/src/commands/build.ts +38 -0
- package/src/commands/codegen.ts +49 -0
- package/src/commands/dev.ts +24 -0
- package/src/commands/docs.ts +95 -0
- package/src/dev/icon-dir.ts +21 -0
- package/src/dev/refresh-tracker.ts +25 -0
- package/src/dev/runner-deps.ts +65 -0
- package/src/dev/runner-main.ts +34 -0
- package/src/dev/runner.ts +185 -0
- package/src/dev/schema-dir.ts +16 -0
- package/src/dev/supervisor.ts +276 -0
- package/src/dev/vite-dev-server.ts +36 -0
- package/src/internal/banner.ts +13 -0
- package/src/internal/data-dir.ts +70 -0
- package/src/internal/entry-arg.ts +46 -0
- package/src/internal/errors.ts +36 -0
- package/src/internal/list-files.ts +23 -0
- package/src/internal/resolve-cli-tool.ts +37 -0
- package/src/internal/staging-dir.ts +19 -0
- package/src/internal/xdg-data-dirs.ts +13 -0
- package/src/mcp/client.ts +235 -0
- package/src/mcp/handlers.ts +213 -0
- package/src/mcp/index.ts +46 -0
- package/src/mcp/serialize-widget.ts +41 -0
- package/src/mcp/testing-loader.ts +73 -0
- package/src/mcp/widget-registry.ts +49 -0
- package/src/refresh-globals.ts +10 -0
- package/src/refresh-runtime.ts +30 -55
- package/src/settings/compile.ts +22 -0
- package/src/settings/parser.ts +193 -0
- package/src/settings/render.ts +167 -0
- package/src/settings/schema.ts +169 -0
- package/src/vite-plugins/asset-extensions.ts +29 -0
- package/src/vite-plugins/built-url.ts +50 -0
- package/src/vite-plugins/css.ts +53 -0
- package/src/vite-plugins/fast-refresh/refresh-filter.ts +26 -0
- package/src/vite-plugins/fast-refresh/swc-refresh.ts +92 -0
- package/src/vite-plugins/icons.ts +74 -0
- package/src/vite-plugins/index.ts +25 -0
- package/src/vite-plugins/native.ts +83 -0
- package/src/vite-plugins/react-compiler.ts +84 -0
- package/src/vite-plugins/react-dom-prebundle.ts +17 -0
- package/src/vite-plugins/resource-init-module.ts +57 -0
- package/src/vite-plugins/resource-shared.ts +40 -0
- package/src/vite-plugins/resources.ts +366 -0
- package/src/vite-plugins/settings-worker-env.ts +30 -0
- package/src/vite-plugins/settings.ts +286 -0
- package/src/vite-plugins/strip-query.ts +7 -0
- package/src/vite-plugins/undeclared-library.ts +78 -0
- package/src/vite-plugins/virtual-module.ts +44 -0
- package/src/vitest-plugin.ts +13 -0
- package/dist/create.d.ts +0 -55
- package/dist/create.d.ts.map +0 -1
- package/dist/create.js +0 -236
- package/dist/create.js.map +0 -1
- package/dist/dev-server.d.ts +0 -37
- package/dist/dev-server.d.ts.map +0 -1
- package/dist/dev-server.js +0 -130
- package/dist/dev-server.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -4
- package/dist/index.js.map +0 -1
- package/dist/mcp-client.d.ts +0 -31
- package/dist/mcp-client.d.ts.map +0 -1
- package/dist/mcp-client.js +0 -430
- package/dist/mcp-client.js.map +0 -1
- package/dist/templates.d.ts +0 -9
- package/dist/templates.d.ts.map +0 -1
- package/dist/templates.js +0 -16
- package/dist/templates.js.map +0 -1
- package/dist/vite-plugin-gtkx-assets.d.ts +0 -20
- package/dist/vite-plugin-gtkx-assets.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-assets.js +0 -57
- package/dist/vite-plugin-gtkx-assets.js.map +0 -1
- package/dist/vite-plugin-gtkx-built-url.d.ts +0 -18
- package/dist/vite-plugin-gtkx-built-url.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-built-url.js +0 -43
- package/dist/vite-plugin-gtkx-built-url.js.map +0 -1
- package/dist/vite-plugin-gtkx-gsettings.d.ts +0 -28
- package/dist/vite-plugin-gtkx-gsettings.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-gsettings.js +0 -147
- package/dist/vite-plugin-gtkx-gsettings.js.map +0 -1
- package/dist/vite-plugin-gtkx-native.d.ts +0 -14
- package/dist/vite-plugin-gtkx-native.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-native.js +0 -53
- package/dist/vite-plugin-gtkx-native.js.map +0 -1
- package/dist/vite-plugin-gtkx-refresh.d.ts +0 -8
- package/dist/vite-plugin-gtkx-refresh.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-refresh.js +0 -37
- package/dist/vite-plugin-gtkx-refresh.js.map +0 -1
- package/dist/vite-plugin-swc-ssr-refresh.d.ts +0 -8
- package/dist/vite-plugin-swc-ssr-refresh.d.ts.map +0 -1
- package/dist/vite-plugin-swc-ssr-refresh.js +0 -46
- package/dist/vite-plugin-swc-ssr-refresh.js.map +0 -1
- package/src/cli.tsx +0 -154
- package/src/create.ts +0 -326
- package/src/dev-server.tsx +0 -162
- package/src/index.ts +0 -3
- package/src/mcp-client.ts +0 -518
- package/src/templates.ts +0 -26
- package/src/vite-plugin-gtkx-assets.ts +0 -69
- package/src/vite-plugin-gtkx-built-url.ts +0 -48
- package/src/vite-plugin-gtkx-gsettings.ts +0 -168
- package/src/vite-plugin-gtkx-native.ts +0 -64
- package/src/vite-plugin-gtkx-refresh.ts +0 -54
- package/src/vite-plugin-swc-ssr-refresh.ts +0 -61
- package/templates/claude/EXAMPLES.md.ejs +0 -744
- package/templates/claude/SKILL.md.ejs +0 -93
- package/templates/claude/WIDGETS.md.ejs +0 -820
- package/templates/config/vitest.config.ts.ejs +0 -11
- package/templates/gitignore.ejs +0 -4
- package/templates/package.json.ejs +0 -16
- package/templates/src/app.tsx.ejs +0 -32
- package/templates/src/dev.tsx.ejs +0 -5
- package/templates/src/gtkx-env.d.ts.ejs +0 -1
- package/templates/src/index.tsx.ejs +0 -5
- package/templates/tests/app.test.tsx.ejs +0 -16
- package/templates/tsconfig.json.ejs +0 -14
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Vite plugin that configures `renderBuiltUrl` for resolving asset imports
|
|
3
|
-
* to filesystem paths at runtime.
|
|
4
|
-
*
|
|
5
|
-
* When `assetBase` is provided, assets resolve relative to the executable
|
|
6
|
-
* directory using `path.join(path.dirname(process.execPath), assetBase, filename)`.
|
|
7
|
-
* This supports FHS-compliant layouts where assets live in `../share/<app>/`.
|
|
8
|
-
*
|
|
9
|
-
* When `assetBase` is omitted, assets resolve relative to the bundle file
|
|
10
|
-
* via `import.meta.url`, which works when assets are co-located with the
|
|
11
|
-
* executable.
|
|
12
|
-
*
|
|
13
|
-
* Only applies when the user has not already configured
|
|
14
|
-
* `experimental.renderBuiltUrl` in their Vite config.
|
|
15
|
-
*/
|
|
16
|
-
export function gtkxBuiltUrl(assetBase) {
|
|
17
|
-
return {
|
|
18
|
-
name: "gtkx:built-url",
|
|
19
|
-
config(userConfig) {
|
|
20
|
-
if (userConfig.experimental?.renderBuiltUrl) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
return {
|
|
24
|
-
experimental: {
|
|
25
|
-
renderBuiltUrl(filename, { type }) {
|
|
26
|
-
if (type !== "asset") {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
if (assetBase) {
|
|
30
|
-
return {
|
|
31
|
-
runtime: `require("path").join(require("path").dirname(process.execPath),${JSON.stringify(assetBase)},${JSON.stringify(filename)})`,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
return {
|
|
35
|
-
runtime: `new URL(${JSON.stringify(`./${filename}`)}, import.meta.url).pathname`,
|
|
36
|
-
};
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=vite-plugin-gtkx-built-url.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-gtkx-built-url.js","sourceRoot":"","sources":["../src/vite-plugin-gtkx-built-url.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,SAAkB;IAC3C,OAAO;QACH,IAAI,EAAE,gBAAgB;QAEtB,MAAM,CAAC,UAAU;YACb,IAAI,UAAU,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC;gBAC1C,OAAO;YACX,CAAC;YAED,OAAO;gBACH,YAAY,EAAE;oBACV,cAAc,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;wBAC7B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;4BACnB,OAAO;wBACX,CAAC;wBAED,IAAI,SAAS,EAAE,CAAC;4BACZ,OAAO;gCACH,OAAO,EAAE,kEAAkE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;6BACtI,CAAC;wBACN,CAAC;wBAED,OAAO;4BACH,OAAO,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC,6BAA6B;yBACnF,CAAC;oBACN,CAAC;iBACJ;aACJ,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { Plugin } from "vite";
|
|
2
|
-
/**
|
|
3
|
-
* Vite plugin that compiles GSettings schemas when imported.
|
|
4
|
-
*
|
|
5
|
-
* Intercepts imports of `.gschema.xml` files. The import's default export
|
|
6
|
-
* is the schema ID extracted from the XML, so downstream code can use it
|
|
7
|
-
* directly with `useSetting`. When the file contains multiple `<schema>`
|
|
8
|
-
* elements, each ID is also available as a named export (with dots
|
|
9
|
-
* replaced by underscores).
|
|
10
|
-
*
|
|
11
|
-
* **Dev mode:** Copies the schema to a temporary directory, runs
|
|
12
|
-
* `glib-compile-schemas`, and sets `GSETTINGS_SCHEMA_DIR` so
|
|
13
|
-
* `Gio.Settings` can find the compiled result. Schema file changes
|
|
14
|
-
* trigger recompilation via HMR.
|
|
15
|
-
*
|
|
16
|
-
* **Build mode:** All imported schemas are compiled together at build time
|
|
17
|
-
* into a single `gschemas.compiled` asset emitted next to the bundle. At
|
|
18
|
-
* runtime a shared init module sets `GSETTINGS_SCHEMA_DIR` to the
|
|
19
|
-
* bundle's directory once, regardless of how many schemas are imported.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```ts
|
|
23
|
-
* import schemaId from "./com.example.myapp.gschema.xml";
|
|
24
|
-
* const [value, setValue] = useSetting(schemaId, "my-key", "string");
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export declare function gtkxGSettings(): Plugin;
|
|
28
|
-
//# sourceMappingURL=vite-plugin-gtkx-gsettings.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-gtkx-gsettings.d.ts","sourceRoot":"","sources":["../src/vite-plugin-gtkx-gsettings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAOnC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAmItC"}
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { execFileSync } from "node:child_process";
|
|
2
|
-
import { copyFileSync, mkdtempSync, readFileSync } from "node:fs";
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
4
|
-
import { basename, join } from "node:path";
|
|
5
|
-
const SCHEMA_RE = /\.gschema\.xml$/;
|
|
6
|
-
const SCHEMA_ID_RE = /<schema\s+id="([^"]+)"/g;
|
|
7
|
-
const VIRTUAL_PREFIX = "\0gtkx-gsettings:";
|
|
8
|
-
const VIRTUAL_INIT = "\0gtkx-gsettings-init";
|
|
9
|
-
/**
|
|
10
|
-
* Vite plugin that compiles GSettings schemas when imported.
|
|
11
|
-
*
|
|
12
|
-
* Intercepts imports of `.gschema.xml` files. The import's default export
|
|
13
|
-
* is the schema ID extracted from the XML, so downstream code can use it
|
|
14
|
-
* directly with `useSetting`. When the file contains multiple `<schema>`
|
|
15
|
-
* elements, each ID is also available as a named export (with dots
|
|
16
|
-
* replaced by underscores).
|
|
17
|
-
*
|
|
18
|
-
* **Dev mode:** Copies the schema to a temporary directory, runs
|
|
19
|
-
* `glib-compile-schemas`, and sets `GSETTINGS_SCHEMA_DIR` so
|
|
20
|
-
* `Gio.Settings` can find the compiled result. Schema file changes
|
|
21
|
-
* trigger recompilation via HMR.
|
|
22
|
-
*
|
|
23
|
-
* **Build mode:** All imported schemas are compiled together at build time
|
|
24
|
-
* into a single `gschemas.compiled` asset emitted next to the bundle. At
|
|
25
|
-
* runtime a shared init module sets `GSETTINGS_SCHEMA_DIR` to the
|
|
26
|
-
* bundle's directory once, regardless of how many schemas are imported.
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
* ```ts
|
|
30
|
-
* import schemaId from "./com.example.myapp.gschema.xml";
|
|
31
|
-
* const [value, setValue] = useSetting(schemaId, "my-key", "string");
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
export function gtkxGSettings() {
|
|
35
|
-
let schemaDir = null;
|
|
36
|
-
let isBuild = false;
|
|
37
|
-
const trackedSchemas = new Map();
|
|
38
|
-
const buildSchemas = new Map();
|
|
39
|
-
const ensureSchemaDir = () => {
|
|
40
|
-
if (!schemaDir) {
|
|
41
|
-
schemaDir = mkdtempSync(join(tmpdir(), "gtkx-schemas-"));
|
|
42
|
-
}
|
|
43
|
-
return schemaDir;
|
|
44
|
-
};
|
|
45
|
-
const compile = () => {
|
|
46
|
-
if (!schemaDir)
|
|
47
|
-
return;
|
|
48
|
-
execFileSync("glib-compile-schemas", [schemaDir]);
|
|
49
|
-
const existing = process.env.GSETTINGS_SCHEMA_DIR;
|
|
50
|
-
process.env.GSETTINGS_SCHEMA_DIR = existing ? `${schemaDir}:${existing}` : schemaDir;
|
|
51
|
-
};
|
|
52
|
-
return {
|
|
53
|
-
name: "gtkx:gsettings",
|
|
54
|
-
enforce: "pre",
|
|
55
|
-
configResolved(config) {
|
|
56
|
-
isBuild = config.command === "build";
|
|
57
|
-
},
|
|
58
|
-
async resolveId(source, importer, options) {
|
|
59
|
-
if (source === VIRTUAL_INIT)
|
|
60
|
-
return VIRTUAL_INIT;
|
|
61
|
-
if (!SCHEMA_RE.test(source))
|
|
62
|
-
return;
|
|
63
|
-
const resolved = await this.resolve(source, importer, {
|
|
64
|
-
...options,
|
|
65
|
-
skipSelf: true,
|
|
66
|
-
});
|
|
67
|
-
if (!resolved || resolved.external)
|
|
68
|
-
return;
|
|
69
|
-
return VIRTUAL_PREFIX + resolved.id;
|
|
70
|
-
},
|
|
71
|
-
load(id) {
|
|
72
|
-
if (id === VIRTUAL_INIT) {
|
|
73
|
-
return [
|
|
74
|
-
`import { dirname } from "node:path";`,
|
|
75
|
-
`import { fileURLToPath } from "node:url";`,
|
|
76
|
-
``,
|
|
77
|
-
`const bundleDir = dirname(fileURLToPath(import.meta.url));`,
|
|
78
|
-
`const existing = process.env.GSETTINGS_SCHEMA_DIR;`,
|
|
79
|
-
`process.env.GSETTINGS_SCHEMA_DIR = existing ? bundleDir + ":" + existing : bundleDir;`,
|
|
80
|
-
].join("\n");
|
|
81
|
-
}
|
|
82
|
-
if (!id.startsWith(VIRTUAL_PREFIX))
|
|
83
|
-
return;
|
|
84
|
-
const filePath = id.slice(VIRTUAL_PREFIX.length);
|
|
85
|
-
const xml = readFileSync(filePath, "utf-8");
|
|
86
|
-
const fileName = basename(filePath);
|
|
87
|
-
if (isBuild) {
|
|
88
|
-
buildSchemas.set(filePath, fileName);
|
|
89
|
-
console.log(`[gtkx] Queued GSettings schema: ${fileName}`);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
trackedSchemas.set(filePath, id);
|
|
93
|
-
const dir = ensureSchemaDir();
|
|
94
|
-
copyFileSync(filePath, join(dir, fileName));
|
|
95
|
-
compile();
|
|
96
|
-
console.log(`[gtkx] Compiled GSettings schema: ${fileName}`);
|
|
97
|
-
}
|
|
98
|
-
const schemaIds = [];
|
|
99
|
-
for (const match of xml.matchAll(SCHEMA_ID_RE)) {
|
|
100
|
-
schemaIds.push(match[1]);
|
|
101
|
-
}
|
|
102
|
-
if (schemaIds.length === 0) {
|
|
103
|
-
this.error(`No <schema id="..."> found in ${fileName}`);
|
|
104
|
-
}
|
|
105
|
-
const exports = [`export default ${JSON.stringify(schemaIds[0])};`];
|
|
106
|
-
for (const schemaId of schemaIds) {
|
|
107
|
-
const exportName = schemaId.replaceAll(".", "_");
|
|
108
|
-
exports.push(`export const ${exportName} = ${JSON.stringify(schemaId)};`);
|
|
109
|
-
}
|
|
110
|
-
if (isBuild) {
|
|
111
|
-
return [`import ${JSON.stringify(VIRTUAL_INIT)};`, "", ...exports].join("\n");
|
|
112
|
-
}
|
|
113
|
-
return exports.join("\n");
|
|
114
|
-
},
|
|
115
|
-
buildEnd() {
|
|
116
|
-
if (!isBuild || buildSchemas.size === 0)
|
|
117
|
-
return;
|
|
118
|
-
const dir = mkdtempSync(join(tmpdir(), "gtkx-schemas-build-"));
|
|
119
|
-
for (const [filePath, fileName] of buildSchemas) {
|
|
120
|
-
copyFileSync(filePath, join(dir, fileName));
|
|
121
|
-
}
|
|
122
|
-
execFileSync("glib-compile-schemas", [dir]);
|
|
123
|
-
const compiled = readFileSync(join(dir, "gschemas.compiled"));
|
|
124
|
-
this.emitFile({
|
|
125
|
-
type: "asset",
|
|
126
|
-
fileName: "gschemas.compiled",
|
|
127
|
-
source: compiled,
|
|
128
|
-
});
|
|
129
|
-
console.log(`[gtkx] Compiled ${buildSchemas.size} GSettings schema(s)`);
|
|
130
|
-
},
|
|
131
|
-
handleHotUpdate({ file, server }) {
|
|
132
|
-
const virtualId = trackedSchemas.get(file);
|
|
133
|
-
if (!virtualId)
|
|
134
|
-
return;
|
|
135
|
-
const dir = ensureSchemaDir();
|
|
136
|
-
copyFileSync(file, join(dir, basename(file)));
|
|
137
|
-
compile();
|
|
138
|
-
console.log(`[gtkx] Recompiled GSettings schema: ${basename(file)}`);
|
|
139
|
-
const mod = server.moduleGraph.getModuleById(virtualId);
|
|
140
|
-
if (mod) {
|
|
141
|
-
server.moduleGraph.invalidateModule(mod);
|
|
142
|
-
return [mod];
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=vite-plugin-gtkx-gsettings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-gtkx-gsettings.js","sourceRoot":"","sources":["../src/vite-plugin-gtkx-gsettings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Plugin } from "vite";
|
|
2
|
-
/**
|
|
3
|
-
* Vite plugin that embeds the native `.node` binary into the build output.
|
|
4
|
-
*
|
|
5
|
-
* During production builds, resolves the platform-specific `.node` binary,
|
|
6
|
-
* copies it into the output directory as `gtkx.node`, and transforms the
|
|
7
|
-
* `loadNativeBinding` function in `@gtkx/native` to load `./gtkx.node`
|
|
8
|
-
* directly. This makes the bundle self-contained with no `node_modules`
|
|
9
|
-
* dependency at runtime.
|
|
10
|
-
*
|
|
11
|
-
* @param root - Project root directory used to resolve native packages
|
|
12
|
-
*/
|
|
13
|
-
export declare function gtkxNative(root: string): Plugin;
|
|
14
|
-
//# sourceMappingURL=vite-plugin-gtkx-native.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-gtkx-native.d.ts","sourceRoot":"","sources":["../src/vite-plugin-gtkx-native.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA2C/C"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
import { createRequire } from "node:module";
|
|
3
|
-
import { arch, platform } from "node:os";
|
|
4
|
-
import { join } from "node:path";
|
|
5
|
-
const LOAD_NATIVE_BINDING_RE = /function loadNativeBinding\(\) \{[\s\S]*?\n\}/;
|
|
6
|
-
const NODE_OS_IMPORT_RE = /import\s*\{[^}]*\}\s*from\s*["']node:os["'];?\n?/;
|
|
7
|
-
/**
|
|
8
|
-
* Vite plugin that embeds the native `.node` binary into the build output.
|
|
9
|
-
*
|
|
10
|
-
* During production builds, resolves the platform-specific `.node` binary,
|
|
11
|
-
* copies it into the output directory as `gtkx.node`, and transforms the
|
|
12
|
-
* `loadNativeBinding` function in `@gtkx/native` to load `./gtkx.node`
|
|
13
|
-
* directly. This makes the bundle self-contained with no `node_modules`
|
|
14
|
-
* dependency at runtime.
|
|
15
|
-
*
|
|
16
|
-
* @param root - Project root directory used to resolve native packages
|
|
17
|
-
*/
|
|
18
|
-
export function gtkxNative(root) {
|
|
19
|
-
const projectRequire = createRequire(join(root, "package.json"));
|
|
20
|
-
let nativeIndexPath;
|
|
21
|
-
return {
|
|
22
|
-
name: "gtkx:native",
|
|
23
|
-
enforce: "pre",
|
|
24
|
-
buildStart() {
|
|
25
|
-
const currentPlatform = platform();
|
|
26
|
-
const currentArch = arch();
|
|
27
|
-
const packageName = `@gtkx/native-linux-${currentArch}`;
|
|
28
|
-
if (currentPlatform !== "linux") {
|
|
29
|
-
throw new Error(`Unsupported build platform: ${currentPlatform}, only Linux is supported`);
|
|
30
|
-
}
|
|
31
|
-
if (currentArch !== "x64" && currentArch !== "arm64") {
|
|
32
|
-
throw new Error(`Unsupported build architecture: ${currentArch}, only x64 and arm64 are supported`);
|
|
33
|
-
}
|
|
34
|
-
nativeIndexPath = projectRequire.resolve("@gtkx/native");
|
|
35
|
-
const nodePath = projectRequire.resolve(`${packageName}/index.node`);
|
|
36
|
-
const source = readFileSync(nodePath);
|
|
37
|
-
this.emitFile({
|
|
38
|
-
type: "asset",
|
|
39
|
-
fileName: "gtkx.node",
|
|
40
|
-
source,
|
|
41
|
-
});
|
|
42
|
-
},
|
|
43
|
-
transform(code, id) {
|
|
44
|
-
if (id !== nativeIndexPath) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
return code
|
|
48
|
-
.replace(NODE_OS_IMPORT_RE, "")
|
|
49
|
-
.replace(LOAD_NATIVE_BINDING_RE, 'function loadNativeBinding() { return require("./gtkx.node"); }');
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=vite-plugin-gtkx-native.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-gtkx-native.js","sourceRoot":"","sources":["../src/vite-plugin-gtkx-native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,sBAAsB,GAAG,+CAA+C,CAAC;AAC/E,MAAM,iBAAiB,GAAG,kDAAkD,CAAC;AAE7E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACnC,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IACjE,IAAI,eAAuB,CAAC;IAE5B,OAAO;QACH,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,KAAK;QAEd,UAAU;YACN,MAAM,eAAe,GAAG,QAAQ,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,IAAI,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,sBAAsB,WAAW,EAAE,CAAC;YAExD,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,eAAe,2BAA2B,CAAC,CAAC;YAC/F,CAAC;YAED,IAAI,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,mCAAmC,WAAW,oCAAoC,CAAC,CAAC;YACxG,CAAC;YAED,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAEzD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,WAAW,aAAa,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEtC,IAAI,CAAC,QAAQ,CAAC;gBACV,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,WAAW;gBACrB,MAAM;aACT,CAAC,CAAC;QACP,CAAC;QAED,SAAS,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;gBACzB,OAAO;YACX,CAAC;YAED,OAAO,IAAI;iBACN,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;iBAC9B,OAAO,CAAC,sBAAsB,EAAE,iEAAiE,CAAC,CAAC;QAC5G,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-gtkx-refresh.d.ts","sourceRoot":"","sources":["../src/vite-plugin-gtkx-refresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,KAAK,kBAAkB,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAOF,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAyCpE"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const defaultInclude = /\.[tj]sx?$/;
|
|
2
|
-
const defaultExclude = /node_modules/;
|
|
3
|
-
const refreshRuntimePath = "@gtkx/cli/refresh-runtime";
|
|
4
|
-
export function gtkxRefresh(options = {}) {
|
|
5
|
-
const include = options.include ?? defaultInclude;
|
|
6
|
-
const exclude = options.exclude ?? defaultExclude;
|
|
7
|
-
return {
|
|
8
|
-
name: "gtkx:refresh",
|
|
9
|
-
enforce: "post",
|
|
10
|
-
transform(code, id, transformOptions) {
|
|
11
|
-
if (!transformOptions?.ssr) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
if (!include.test(id)) {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
if (exclude.test(id)) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const hasRefreshReg = code.includes("$RefreshReg$");
|
|
21
|
-
const hasRefreshSig = code.includes("$RefreshSig$");
|
|
22
|
-
if (!hasRefreshReg && !hasRefreshSig) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const moduleIdJson = JSON.stringify(id);
|
|
26
|
-
const header = `
|
|
27
|
-
import { createModuleRegistration as __createModuleRegistration__ } from "${refreshRuntimePath}";
|
|
28
|
-
const { $RefreshReg$, $RefreshSig$ } = __createModuleRegistration__(${moduleIdJson});
|
|
29
|
-
`;
|
|
30
|
-
return {
|
|
31
|
-
code: header + code,
|
|
32
|
-
map: null,
|
|
33
|
-
};
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=vite-plugin-gtkx-refresh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-gtkx-refresh.js","sourceRoot":"","sources":["../src/vite-plugin-gtkx-refresh.ts"],"names":[],"mappings":"AAOA,MAAM,cAAc,GAAG,YAAY,CAAC;AACpC,MAAM,cAAc,GAAG,cAAc,CAAC;AAEtC,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAEvD,MAAM,UAAU,WAAW,CAAC,UAA8B,EAAE;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;IAElD,OAAO;QACH,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM;QAEf,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,gBAAgB;YAChC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC;gBACzB,OAAO;YACX,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpB,OAAO;YACX,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnB,OAAO;YACX,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEpD,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnC,OAAO;YACX,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAExC,MAAM,MAAM,GAAG;4EACiD,kBAAkB;sEACxB,YAAY;CACjF,CAAC;YAEU,OAAO;gBACH,IAAI,EAAE,MAAM,GAAG,IAAI;gBACnB,GAAG,EAAE,IAAI;aACZ,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { Plugin } from "vite";
|
|
2
|
-
type SwcSsrRefreshOptions = {
|
|
3
|
-
include?: RegExp;
|
|
4
|
-
exclude?: RegExp;
|
|
5
|
-
};
|
|
6
|
-
export declare function swcSsrRefresh(options?: SwcSsrRefreshOptions): Plugin;
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=vite-plugin-swc-ssr-refresh.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-swc-ssr-refresh.d.ts","sourceRoot":"","sources":["../src/vite-plugin-swc-ssr-refresh.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,KAAK,oBAAoB,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAKF,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,MAAM,CAiDxE"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { transform } from "@swc/core";
|
|
2
|
-
const defaultInclude = /\.[tj]sx?$/;
|
|
3
|
-
const defaultExclude = /node_modules/;
|
|
4
|
-
export function swcSsrRefresh(options = {}) {
|
|
5
|
-
const include = options.include ?? defaultInclude;
|
|
6
|
-
const exclude = options.exclude ?? defaultExclude;
|
|
7
|
-
return {
|
|
8
|
-
name: "gtkx:swc-ssr-refresh",
|
|
9
|
-
enforce: "pre",
|
|
10
|
-
async transform(code, id, transformOptions) {
|
|
11
|
-
if (!transformOptions?.ssr) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
if (!include.test(id)) {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
if (exclude.test(id)) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const isTsx = id.endsWith(".tsx");
|
|
21
|
-
const isTs = id.endsWith(".ts") || isTsx;
|
|
22
|
-
const swcOptions = {
|
|
23
|
-
filename: id,
|
|
24
|
-
sourceFileName: id,
|
|
25
|
-
sourceMaps: true,
|
|
26
|
-
jsc: {
|
|
27
|
-
parser: isTs ? { syntax: "typescript", tsx: isTsx } : { syntax: "ecmascript", jsx: true },
|
|
28
|
-
transform: {
|
|
29
|
-
react: {
|
|
30
|
-
runtime: "automatic",
|
|
31
|
-
development: true,
|
|
32
|
-
refresh: true,
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
target: "es2022",
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
const result = await transform(code, swcOptions);
|
|
39
|
-
return {
|
|
40
|
-
code: result.code,
|
|
41
|
-
map: result.map,
|
|
42
|
-
};
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=vite-plugin-swc-ssr-refresh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-swc-ssr-refresh.js","sourceRoot":"","sources":["../src/vite-plugin-swc-ssr-refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,SAAS,EAAE,MAAM,WAAW,CAAC;AAQlE,MAAM,cAAc,GAAG,YAAY,CAAC;AACpC,MAAM,cAAc,GAAG,cAAc,CAAC;AAEtC,MAAM,UAAU,aAAa,CAAC,UAAgC,EAAE;IAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;IAElD,OAAO;QACH,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,KAAK;QAEd,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,gBAAgB;YACtC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC;gBACzB,OAAO;YACX,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpB,OAAO;YACX,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnB,OAAO;YACX,CAAC;YAED,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;YAEzC,MAAM,UAAU,GAAe;gBAC3B,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE,EAAE;gBAClB,UAAU,EAAE,IAAI;gBAChB,GAAG,EAAE;oBACD,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE;oBACzF,SAAS,EAAE;wBACP,KAAK,EAAE;4BACH,OAAO,EAAE,WAAW;4BACpB,WAAW,EAAE,IAAI;4BACjB,OAAO,EAAE,IAAI;yBAChB;qBACJ;oBACD,MAAM,EAAE,QAAQ;iBACnB;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAEjD,OAAO;gBACH,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;aAClB,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC"}
|
package/src/cli.tsx
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import "./refresh-runtime.js";
|
|
4
|
-
|
|
5
|
-
import { createRequire } from "node:module";
|
|
6
|
-
import { resolve } from "node:path";
|
|
7
|
-
import { events } from "@gtkx/ffi";
|
|
8
|
-
import type * as Gio from "@gtkx/ffi/gio";
|
|
9
|
-
import { render } from "@gtkx/react";
|
|
10
|
-
import { defineCommand, runMain } from "citty";
|
|
11
|
-
import { build } from "./builder.js";
|
|
12
|
-
import { createApp } from "./create.js";
|
|
13
|
-
import { createDevServer } from "./dev-server.js";
|
|
14
|
-
import { startMcpClient, stopMcpClient } from "./mcp-client.js";
|
|
15
|
-
|
|
16
|
-
const require = createRequire(import.meta.url);
|
|
17
|
-
const { version } = require("../package.json") as { version: string };
|
|
18
|
-
|
|
19
|
-
interface AppModule {
|
|
20
|
-
default: () => React.ReactNode;
|
|
21
|
-
appId?: string;
|
|
22
|
-
appFlags?: Gio.ApplicationFlags;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const dev = defineCommand({
|
|
26
|
-
meta: {
|
|
27
|
-
name: "dev",
|
|
28
|
-
description: "Start development server with HMR",
|
|
29
|
-
},
|
|
30
|
-
args: {
|
|
31
|
-
entry: {
|
|
32
|
-
type: "positional",
|
|
33
|
-
description: "Entry file (e.g., src/app.tsx)",
|
|
34
|
-
required: true,
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
async run({ args }) {
|
|
38
|
-
const entryPath = resolve(process.cwd(), args.entry);
|
|
39
|
-
console.log(`[gtkx] Starting dev server for ${entryPath}`);
|
|
40
|
-
|
|
41
|
-
const server = await createDevServer({
|
|
42
|
-
entry: entryPath,
|
|
43
|
-
vite: {
|
|
44
|
-
root: process.cwd(),
|
|
45
|
-
},
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
const mod = (await server.ssrLoadModule(entryPath)) as AppModule;
|
|
49
|
-
const App = mod.default;
|
|
50
|
-
const appId = mod.appId ?? "org.gtkx.dev";
|
|
51
|
-
const appFlags = mod.appFlags;
|
|
52
|
-
|
|
53
|
-
if (typeof App !== "function") {
|
|
54
|
-
console.error("[gtkx] Entry file must export a default function component");
|
|
55
|
-
process.exit(1);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
console.log(`[gtkx] Rendering app with ID: ${appId}`);
|
|
59
|
-
render(<App />, appId, appFlags);
|
|
60
|
-
|
|
61
|
-
await startMcpClient(appId);
|
|
62
|
-
events.on("stop", () => {
|
|
63
|
-
stopMcpClient();
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
console.log("[gtkx] HMR enabled - watching for changes...");
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
const buildCmd = defineCommand({
|
|
71
|
-
meta: {
|
|
72
|
-
name: "build",
|
|
73
|
-
description: "Build application for production",
|
|
74
|
-
},
|
|
75
|
-
args: {
|
|
76
|
-
entry: {
|
|
77
|
-
type: "positional",
|
|
78
|
-
description: "Entry file (default: src/index.tsx)",
|
|
79
|
-
required: false,
|
|
80
|
-
},
|
|
81
|
-
"asset-base": {
|
|
82
|
-
type: "string",
|
|
83
|
-
description: "Asset base path relative to executable directory (e.g., ../share/my-app)",
|
|
84
|
-
},
|
|
85
|
-
},
|
|
86
|
-
async run({ args }) {
|
|
87
|
-
const entry = resolve(process.cwd(), args.entry ?? "src/index.tsx");
|
|
88
|
-
console.log(`[gtkx] Building ${entry}`);
|
|
89
|
-
|
|
90
|
-
await build({
|
|
91
|
-
entry,
|
|
92
|
-
assetBase: args["asset-base"],
|
|
93
|
-
vite: {
|
|
94
|
-
root: process.cwd(),
|
|
95
|
-
},
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
console.log("[gtkx] Build complete: dist/bundle.js");
|
|
99
|
-
},
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
const create = defineCommand({
|
|
103
|
-
meta: {
|
|
104
|
-
name: "create",
|
|
105
|
-
description: "Create a new GTKX application",
|
|
106
|
-
},
|
|
107
|
-
args: {
|
|
108
|
-
name: {
|
|
109
|
-
type: "positional",
|
|
110
|
-
description: "Project name",
|
|
111
|
-
required: false,
|
|
112
|
-
},
|
|
113
|
-
"app-id": {
|
|
114
|
-
type: "string",
|
|
115
|
-
description: "App ID (e.g., com.example.myapp)",
|
|
116
|
-
},
|
|
117
|
-
pm: {
|
|
118
|
-
type: "string",
|
|
119
|
-
description: "Package manager (pnpm, npm, yarn)",
|
|
120
|
-
},
|
|
121
|
-
testing: {
|
|
122
|
-
type: "string",
|
|
123
|
-
description: "Testing setup (vitest, none)",
|
|
124
|
-
},
|
|
125
|
-
"claude-skills": {
|
|
126
|
-
type: "boolean",
|
|
127
|
-
description: "Include Claude Code skills for AI assistance",
|
|
128
|
-
},
|
|
129
|
-
},
|
|
130
|
-
async run({ args }) {
|
|
131
|
-
await createApp({
|
|
132
|
-
name: args.name,
|
|
133
|
-
appId: args["app-id"],
|
|
134
|
-
packageManager: args.pm as "pnpm" | "npm" | "yarn" | undefined,
|
|
135
|
-
testing: args.testing as "vitest" | "none" | undefined,
|
|
136
|
-
claudeSkills: args["claude-skills"],
|
|
137
|
-
});
|
|
138
|
-
},
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
const main = defineCommand({
|
|
142
|
-
meta: {
|
|
143
|
-
name: "gtkx",
|
|
144
|
-
version,
|
|
145
|
-
description: "CLI for GTKX - create and develop GTK4 React applications",
|
|
146
|
-
},
|
|
147
|
-
subCommands: {
|
|
148
|
-
dev,
|
|
149
|
-
build: buildCmd,
|
|
150
|
-
create,
|
|
151
|
-
},
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
runMain(main);
|