@gtkx/cli 1.0.0-rc.4 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/builder.d.ts +1 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +2 -1
- package/dist/builder.js.map +1 -1
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/codegen/freshness.d.ts.map +1 -1
- package/dist/codegen/freshness.js +0 -2
- package/dist/codegen/freshness.js.map +1 -1
- package/dist/codegen/run-codegen.d.ts +1 -1
- package/dist/codegen/run-codegen.d.ts.map +1 -1
- package/dist/codegen/run-codegen.js +1 -0
- package/dist/codegen/run-codegen.js.map +1 -1
- package/dist/codegen/store-resolver.d.ts +1 -1
- package/dist/codegen/store-resolver.d.ts.map +1 -1
- package/dist/codegen/store-resolver.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +3 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/dev/entry-env.d.ts +3 -0
- package/dist/dev/entry-env.d.ts.map +1 -0
- package/dist/dev/entry-env.js +3 -0
- package/dist/dev/entry-env.js.map +1 -0
- package/dist/dev/runner-deps.d.ts.map +1 -1
- package/dist/dev/runner-deps.js +1 -0
- 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 +3 -3
- package/dist/dev/runner-main.js.map +1 -1
- package/dist/dev/runner.d.ts +1 -0
- package/dist/dev/runner.d.ts.map +1 -1
- package/dist/dev/runner.js +22 -12
- package/dist/dev/runner.js.map +1 -1
- package/dist/dev/supervisor.d.ts +10 -3
- package/dist/dev/supervisor.d.ts.map +1 -1
- package/dist/dev/supervisor.js +23 -4
- package/dist/dev/supervisor.js.map +1 -1
- package/dist/internal/application-args.d.ts +6 -0
- package/dist/internal/application-args.d.ts.map +1 -0
- package/dist/internal/application-args.js +10 -0
- package/dist/internal/application-args.js.map +1 -0
- package/dist/internal/errors.d.ts +1 -2
- 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/run-cli-tool.d.ts +10 -0
- package/dist/internal/run-cli-tool.d.ts.map +1 -0
- package/dist/internal/run-cli-tool.js +15 -0
- package/dist/internal/run-cli-tool.js.map +1 -0
- package/dist/internal.d.ts +3 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +3 -0
- package/dist/internal.js.map +1 -0
- package/dist/mcp/client.d.ts +1 -1
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/handlers.d.ts +1 -1
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js +78 -41
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/serialize-widget.d.ts +2 -2
- package/dist/mcp/serialize-widget.d.ts.map +1 -1
- package/dist/mcp/serialize-widget.js +47 -17
- package/dist/mcp/serialize-widget.js.map +1 -1
- package/dist/mcp/widget-properties.d.ts +6 -0
- package/dist/mcp/widget-properties.d.ts.map +1 -0
- package/dist/mcp/widget-properties.js +102 -0
- package/dist/mcp/widget-properties.js.map +1 -0
- package/dist/settings/compile.d.ts.map +1 -1
- package/dist/settings/compile.js +8 -12
- package/dist/settings/compile.js.map +1 -1
- package/dist/vite-plugins/asset-emitter.d.ts +9 -0
- package/dist/vite-plugins/asset-emitter.d.ts.map +1 -0
- package/dist/vite-plugins/asset-emitter.js +2 -0
- package/dist/vite-plugins/asset-emitter.js.map +1 -0
- package/dist/vite-plugins/asset-extensions.d.ts +1 -2
- package/dist/vite-plugins/asset-extensions.d.ts.map +1 -1
- package/dist/vite-plugins/asset-extensions.js +1 -1
- package/dist/vite-plugins/asset-extensions.js.map +1 -1
- package/dist/vite-plugins/built-url.d.ts.map +1 -1
- package/dist/vite-plugins/built-url.js +14 -10
- package/dist/vite-plugins/built-url.js.map +1 -1
- package/dist/vite-plugins/ensure-store.d.ts +4 -0
- package/dist/vite-plugins/ensure-store.d.ts.map +1 -0
- package/dist/vite-plugins/ensure-store.js +10 -0
- package/dist/vite-plugins/ensure-store.js.map +1 -0
- package/dist/vite-plugins/icons.d.ts.map +1 -1
- package/dist/vite-plugins/icons.js.map +1 -1
- package/dist/vite-plugins/react-compiler.d.ts +1 -1
- package/dist/vite-plugins/react-compiler.d.ts.map +1 -1
- package/dist/vite-plugins/react-compiler.js.map +1 -1
- package/dist/vite-plugins/resources.d.ts +1 -1
- package/dist/vite-plugins/resources.d.ts.map +1 -1
- package/dist/vite-plugins/resources.js +6 -15
- package/dist/vite-plugins/resources.js.map +1 -1
- package/dist/vite-plugins/settings.js.map +1 -1
- package/dist/vite-plugins/undeclared-library.d.ts +1 -1
- package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
- package/dist/vite-plugins/undeclared-library.js.map +1 -1
- package/dist/vite-plugins/worker.d.ts +4 -0
- package/dist/vite-plugins/worker.d.ts.map +1 -0
- package/dist/vite-plugins/worker.js +136 -0
- package/dist/vite-plugins/worker.js.map +1 -0
- package/dist/vitest-plugin.d.ts +7 -0
- package/dist/vitest-plugin.d.ts.map +1 -1
- package/dist/vitest-plugin.js +14 -1
- package/dist/vitest-plugin.js.map +1 -1
- package/package.json +16 -12
- package/src/builder.ts +3 -2
- package/src/cli.ts +4 -2
- package/src/codegen/freshness.ts +0 -2
- package/src/codegen/run-codegen.ts +1 -1
- package/src/codegen/store-resolver.ts +1 -1
- package/src/commands/dev.ts +3 -1
- package/src/dev/entry-env.ts +3 -0
- package/src/dev/runner-deps.ts +1 -0
- package/src/dev/runner-main.ts +3 -4
- package/src/dev/runner.ts +44 -13
- package/src/dev/supervisor.ts +54 -11
- package/src/internal/application-args.ts +13 -0
- package/src/internal/errors.ts +1 -1
- package/src/internal/run-cli-tool.ts +22 -0
- package/src/internal.ts +2 -0
- package/src/mcp/client.ts +1 -1
- package/src/mcp/handlers.ts +123 -56
- package/src/mcp/index.ts +1 -0
- package/src/mcp/serialize-widget.ts +71 -21
- package/src/mcp/widget-properties.ts +153 -0
- package/src/settings/compile.ts +8 -11
- package/src/vite-plugins/asset-emitter.ts +5 -0
- package/src/vite-plugins/asset-extensions.ts +1 -1
- package/src/vite-plugins/built-url.ts +19 -13
- package/src/vite-plugins/ensure-store.ts +14 -0
- package/src/vite-plugins/icons.ts +2 -5
- package/src/vite-plugins/react-compiler.ts +2 -1
- package/src/vite-plugins/resources.ts +10 -19
- package/src/vite-plugins/settings.ts +2 -2
- package/src/vite-plugins/undeclared-library.ts +1 -1
- package/src/vite-plugins/worker.ts +235 -0
- package/src/vitest-plugin.ts +15 -1
- package/dist/internal/resolve-cli-tool.d.ts +0 -3
- package/dist/internal/resolve-cli-tool.d.ts.map +0 -1
- package/dist/internal/resolve-cli-tool.js +0 -27
- package/dist/internal/resolve-cli-tool.js.map +0 -1
- package/src/internal/resolve-cli-tool.ts +0 -37
package/README.md
CHANGED
|
@@ -108,7 +108,7 @@ React Native and similar frameworks hide the native toolkit so one API can run e
|
|
|
108
108
|
|
|
109
109
|
### Why Node.js, and why generated bindings
|
|
110
110
|
|
|
111
|
-
GTKX runs on Node.js, which puts native modules, the npm ecosystem, and the tooling built for Node.js APIs within reach. GJS is GNOME's own runtime, built on SpiderMonkey rather than V8; node-gtk runs on Node.js but is lightly maintained, on the older nan/V8 ABI rather than N-API, and still centered on GTK3. The [Why GTKX guide](https://gtkx.dev/guide/why-gtkx) covers
|
|
111
|
+
GTKX runs on Node.js, which puts native modules, the npm ecosystem, and the tooling built for Node.js APIs within reach. GJS is GNOME's own runtime, built on SpiderMonkey rather than V8; node-gtk runs on Node.js but is lightly maintained, on the older nan/V8 ABI rather than N-API, and still centered on GTK3. The [Why GTKX guide](https://gtkx.dev/guide/why-gtkx) covers what running on Node.js means day to day.
|
|
112
112
|
|
|
113
113
|
GTKX generates the TypeScript types and the native FFI calls from the same GObject-Introspection data, so the types cannot drift from the calls they back. Codegen covers the whole GTK4 and Adwaita surface.
|
|
114
114
|
|
|
@@ -121,10 +121,10 @@ GTKX is Linux-only and needs Node.js 24 or later. See [Requirements](#requiremen
|
|
|
121
121
|
Scaffold a new app with the `create-gtkx` initializer:
|
|
122
122
|
|
|
123
123
|
```sh
|
|
124
|
-
npm create gtkx
|
|
124
|
+
npm create gtkx
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
-
The same command works with other package managers: `pnpm create gtkx
|
|
127
|
+
The same command works with other package managers: `pnpm create gtkx` or `yarn create gtkx`.
|
|
128
128
|
|
|
129
129
|
Then run your new app:
|
|
130
130
|
|
|
@@ -145,7 +145,7 @@ The documentation at **[gtkx.dev](https://gtkx.dev)** includes a step-by-step tu
|
|
|
145
145
|
|
|
146
146
|
GTKX is Linux-only. You need:
|
|
147
147
|
|
|
148
|
-
- Linux with the GTK4 (4.20 or later), Adwaita (1.8 or later)
|
|
148
|
+
- Linux with the GTK4 (4.20 or later) and GLib development libraries, plus Adwaita (1.8 or later) once your project binds `Adw-1`
|
|
149
149
|
- Node.js 24 or later
|
|
150
150
|
|
|
151
151
|
The `@gtkx/native` addon ships prebuilt for x64 and arm64 glibc Linux; other targets need to build it from the GTKX repository, which requires a Rust toolchain.
|
|
@@ -161,7 +161,7 @@ Explore the [example apps](https://github.com/gtkx-org/gtkx/tree/main/examples):
|
|
|
161
161
|
|
|
162
162
|
## Status
|
|
163
163
|
|
|
164
|
-
GTKX 1.0 is
|
|
164
|
+
GTKX 1.0 is released.
|
|
165
165
|
|
|
166
166
|
## Contributing
|
|
167
167
|
|
package/dist/builder.d.ts
CHANGED
package/dist/builder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAmC,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAmC,MAAM,MAAM,CAAC;AAM1E,KAAK,YAAY,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACnC,CAAC;AAgBF,QAAA,MAAM,KAAK,GAAU,SAAS,YAAY,KAAG,OAAO,CAAC,IAAI,CAmBxD,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
package/dist/builder.js
CHANGED
|
@@ -2,6 +2,7 @@ import { mergeConfig, build as viteBuild } from "vite";
|
|
|
2
2
|
import { gtkxBuiltUrl } from "./vite-plugins/built-url.js";
|
|
3
3
|
import { gtkxVitePlugins } from "./vite-plugins/index.js";
|
|
4
4
|
import { gtkxNative } from "./vite-plugins/native.js";
|
|
5
|
+
import { gtkxWorker } from "./vite-plugins/worker.js";
|
|
5
6
|
const BUILD_MODE = "production";
|
|
6
7
|
const buildDefaults = {
|
|
7
8
|
build: {
|
|
@@ -18,7 +19,7 @@ const build = async (options) => {
|
|
|
18
19
|
const { entry, assetBase, vite: viteConfig } = options;
|
|
19
20
|
const root = viteConfig?.root ?? process.cwd();
|
|
20
21
|
const forced = {
|
|
21
|
-
plugins: [...gtkxVitePlugins(BUILD_MODE), gtkxBuiltUrl(assetBase), gtkxNative(root)],
|
|
22
|
+
plugins: [...gtkxVitePlugins(BUILD_MODE), gtkxWorker(), gtkxBuiltUrl(assetBase), gtkxNative(root)],
|
|
22
23
|
build: {
|
|
23
24
|
ssr: entry,
|
|
24
25
|
assetsInlineLimit: 0,
|
package/dist/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,WAAW,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAQtD,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,MAAM,aAAa,GAAiB;IAChC,KAAK,EAAE;QACH,aAAa,EAAE,IAAI;QACnB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,KAAK;KACnB;IACD,MAAM,EAAE;QACJ,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;KACrD;CACJ,CAAC;AAEF,MAAM,KAAK,GAAG,KAAK,EAAE,OAAqB,EAAiB,EAAE;IACzD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACvD,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAE/C,MAAM,MAAM,GAAiB;QACzB,OAAO,EAAE,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,WAAW,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAQtD,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,MAAM,aAAa,GAAiB;IAChC,KAAK,EAAE;QACH,aAAa,EAAE,IAAI;QACnB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,KAAK;KACnB;IACD,MAAM,EAAE;QACJ,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;KACrD;CACJ,CAAC;AAEF,MAAM,KAAK,GAAG,KAAK,EAAE,OAAqB,EAAiB,EAAE;IACzD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACvD,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAE/C,MAAM,MAAM,GAAiB;QACzB,OAAO,EAAE,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAClG,KAAK,EAAE;YACH,GAAG,EAAE,KAAK;YACV,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE;gBACb,MAAM,EAAE;oBACJ,cAAc,EAAE,WAAW;iBAC9B;aACJ;SACJ;KACJ,CAAC;IAEF,MAAM,MAAM,GAAiB,WAAW,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/F,MAAM,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC","sourcesContent":["import { type InlineConfig, mergeConfig, build as viteBuild } from \"vite\";\nimport { gtkxBuiltUrl } from \"./vite-plugins/built-url.js\";\nimport { gtkxVitePlugins } from \"./vite-plugins/index.js\";\nimport { gtkxNative } from \"./vite-plugins/native.js\";\nimport { gtkxWorker } from \"./vite-plugins/worker.js\";\n\ntype BuildOptions = {\n entry: string;\n assetBase?: string | undefined;\n vite?: InlineConfig | undefined;\n};\n\nconst BUILD_MODE = \"production\";\n\nconst buildDefaults: InlineConfig = {\n build: {\n ssrEmitAssets: true,\n outDir: \"dist\",\n minify: true,\n cssMinify: false,\n },\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(BUILD_MODE),\n },\n};\n\nconst build = async (options: BuildOptions): Promise<void> => {\n const { entry, assetBase, vite: viteConfig } = options;\n const root = viteConfig?.root ?? process.cwd();\n\n const forced: InlineConfig = {\n plugins: [...gtkxVitePlugins(BUILD_MODE), gtkxWorker(), gtkxBuiltUrl(assetBase), gtkxNative(root)],\n build: {\n ssr: entry,\n assetsInlineLimit: 0,\n rolldownOptions: {\n output: {\n entryFileNames: \"bundle.js\",\n },\n },\n },\n };\n\n const merged: InlineConfig = mergeConfig(mergeConfig(buildDefaults, viteConfig ?? {}), forced);\n await viteBuild({ ...merged, ssr: { ...merged.ssr, noExternal: true } });\n};\n\nexport { build };\n"]}
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { packageVersion } from "@gtkx/utils";
|
|
2
2
|
import { defineCommand, runMain } from "citty";
|
|
3
|
+
import { splitApplicationArgs } from "./internal/application-args.js";
|
|
3
4
|
import { withErrorBoundary } from "./internal/errors.js";
|
|
4
|
-
const version = packageVersion(import.meta.url);
|
|
5
|
+
const version = packageVersion(import.meta.url, "../package.json");
|
|
6
|
+
const { cliArgs } = splitApplicationArgs(process.argv.slice(2));
|
|
5
7
|
const main = defineCommand({
|
|
6
8
|
meta: {
|
|
7
9
|
name: "gtkx",
|
|
@@ -31,5 +33,5 @@ const main = defineCommand({
|
|
|
31
33
|
},
|
|
32
34
|
},
|
|
33
35
|
});
|
|
34
|
-
await runMain(main);
|
|
36
|
+
await runMain(main, { rawArgs: cliArgs });
|
|
35
37
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;AACnE,MAAM,EAAE,OAAO,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhE,MAAM,IAAI,GAAG,aAAa,CAAC;IACvB,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,WAAW,EAAE,0DAA0D;KAC1E;IACD,WAAW,EAAE;QACT,GAAG,EAAE,KAAK,IAAI,EAAE;YACZ,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAElD,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAEtD,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAE1D,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACb,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAEpD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAExD,OAAO,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;KACJ;CACJ,CAAC,CAAC;AAEH,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC","sourcesContent":["import { packageVersion } from \"@gtkx/utils\";\nimport { defineCommand, runMain } from \"citty\";\nimport { splitApplicationArgs } from \"./internal/application-args.js\";\nimport { withErrorBoundary } from \"./internal/errors.js\";\n\nconst version = packageVersion(import.meta.url, \"../package.json\");\nconst { cliArgs } = splitApplicationArgs(process.argv.slice(2));\n\nconst main = defineCommand({\n meta: {\n name: \"gtkx\",\n version,\n description: \"CLI for GTKX: create and develop GTK4 React applications\",\n },\n subCommands: {\n dev: async () => {\n const { dev } = await import(\"./commands/dev.js\");\n\n return withErrorBoundary(dev);\n },\n build: async () => {\n const { build } = await import(\"./commands/build.js\");\n\n return withErrorBoundary(build);\n },\n codegen: async () => {\n const { codegen } = await import(\"./commands/codegen.js\");\n\n return withErrorBoundary(codegen);\n },\n docs: async () => {\n const { docs } = await import(\"./commands/docs.js\");\n\n return withErrorBoundary(docs);\n },\n create: async () => {\n const { scaffoldCommand } = await import(\"create-gtkx\");\n\n return withErrorBoundary(scaffoldCommand);\n },\n },\n});\n\nawait runMain(main, { rawArgs: cliArgs });\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AAE7E,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACvB,CAAC;AAIF,QAAA,MAAM,oBAAoB,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,aAM3D,CAAC;
|
|
1
|
+
{"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AAE7E,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACvB,CAAC;AAIF,QAAA,MAAM,oBAAoB,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,aAM3D,CAAC;AA+BF,QAAA,MAAM,cAAc,GAAI,QAAQ,aAAa,KAAG,OAM/C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,CAAC"}
|
|
@@ -14,8 +14,6 @@ const namespaceBarrelPath = (giStoreDir, library) => {
|
|
|
14
14
|
const namespace = (separator === -1 ? library : library.slice(0, separator)).toLowerCase();
|
|
15
15
|
return join(giStoreDir, namespace, "index.js");
|
|
16
16
|
};
|
|
17
|
-
// The manifest is what makes the store resolvable as a package, and npm's prune of a generated store
|
|
18
|
-
// removes the link while leaving the directory behind, so both have to be checked.
|
|
19
17
|
const hasManifest = (storeDir) => existsSync(join(storeDir, "package.json"));
|
|
20
18
|
const isGiStoreStale = (store, libraries) => {
|
|
21
19
|
if (!existsSync(store.giLinkDir) || !hasManifest(store.giStoreDir)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAqB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ7E,MAAM,uBAAuB,GAAa,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEjF,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,MAAc,EAAiB,EAAE;IACxE,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAEvC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAE,OAAe,EAAU,EAAE;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAE3F,OAAO,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAqB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ7E,MAAM,uBAAuB,GAAa,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEjF,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,MAAc,EAAiB,EAAE;IACxE,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAEvC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAE,OAAe,EAAU,EAAE;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAE3F,OAAO,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;AAE9F,MAAM,cAAc,GAAG,CAAC,KAAmB,EAAE,SAAmB,EAAW,EAAE;IACzE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,KAAmB,EAAW,EAAE;IACvD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAqB,EAAW,EAAE;IACtD,IAAI,CAAC;QACD,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7F,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAsB,CAAC","sourcesContent":["import type { Config } from \"@gtkx/config\";\nimport { resolveGirPath, resolveLibraries } from \"@gtkx/codegen\";\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { type CodegenStore, resolveCodegenStore } from \"./store-resolver.js\";\n\ntype CodegenInputs = {\n girPath: string[];\n libraries: string[];\n store: CodegenStore;\n};\n\nconst REACT_GENERATED_MODULES: string[] = [\"metadata.js\", join(\"gtk\", \"gtk.js\")];\n\nconst resolveCodegenInputs = (cwd: string, config: Config): CodegenInputs => {\n const girPath = resolveGirPath(config.girPath);\n const libraries = resolveLibraries(config.libraries, girPath);\n const store = resolveCodegenStore(cwd);\n\n return { girPath, libraries, store };\n};\n\nconst namespaceBarrelPath = (giStoreDir: string, library: string): string => {\n const separator = library.indexOf(\"-\");\n const namespace = (separator === -1 ? library : library.slice(0, separator)).toLowerCase();\n\n return join(giStoreDir, namespace, \"index.js\");\n};\n\nconst hasManifest = (storeDir: string): boolean => existsSync(join(storeDir, \"package.json\"));\n\nconst isGiStoreStale = (store: CodegenStore, libraries: string[]): boolean => {\n if (!existsSync(store.giLinkDir) || !hasManifest(store.giStoreDir)) {\n return true;\n }\n\n return libraries.some((library) => !existsSync(namespaceBarrelPath(store.giStoreDir, library)));\n};\n\nconst isReactStoreStale = (store: CodegenStore): boolean => {\n if (store.react === null) {\n return false;\n }\n\n if (!existsSync(store.jsxLinkDir) || !hasManifest(store.jsxStoreDir)) {\n return true;\n }\n\n return REACT_GENERATED_MODULES.some((module) => !existsSync(join(store.jsxStoreDir, module)));\n};\n\nconst isCodegenStale = (inputs: CodegenInputs): boolean => {\n try {\n return isGiStoreStale(inputs.store, inputs.libraries) || isReactStoreStale(inputs.store);\n } catch {\n return true;\n }\n};\n\nexport { resolveCodegenInputs, isCodegenStale, type CodegenInputs };\n"]}
|
|
@@ -31,5 +31,5 @@ declare const resolveConfigWatch: (cwd: string, mode?: string) => Promise<{
|
|
|
31
31
|
paths: string[];
|
|
32
32
|
regenerate: () => Promise<void>;
|
|
33
33
|
}>;
|
|
34
|
-
export { runCodegen, isCodegenDisabled, syncSchemaEnv, ensureGenerated, resolveConfigWatch, type
|
|
34
|
+
export { runCodegen, isCodegenDisabled, syncSchemaEnv, ensureGenerated, resolveConfigWatch, type RunCodegenResult, };
|
|
35
35
|
//# sourceMappingURL=run-codegen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAYvD,OAAO,EAAE,KAAK,aAAa,EAAwC,MAAM,gBAAgB,CAAC;AAG1F,KAAK,iBAAiB,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAC;CAC3B,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACpC,CAAC;AAwFF,QAAA,MAAM,UAAU,GAAU,UAAS,iBAAsB,KAAG,OAAO,CAAC,gBAAgB,CAmCnF,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,OAAO,CAQ5E,CAAC;AAEF,QAAA,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,IAEpC,CAAC;
|
|
1
|
+
{"version":3,"file":"run-codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAYvD,OAAO,EAAE,KAAK,aAAa,EAAwC,MAAM,gBAAgB,CAAC;AAG1F,KAAK,iBAAiB,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAC;CAC3B,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACpC,CAAC;AAwFF,QAAA,MAAM,UAAU,GAAU,UAAS,iBAAsB,KAAG,OAAO,CAAC,gBAAgB,CAmCnF,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,OAAO,CAQ5E,CAAC;AAEF,QAAA,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,IAEpC,CAAC;AA6BF,QAAA,MAAM,eAAe,GACjB,KAAK,MAAM,EACX,UAAS;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,KAC1D,OAAO,CAAC,OAAO,CAoBjB,CAAC;AAEF,QAAA,MAAM,kBAAkB,GACpB,KAAK,MAAM,EACX,OAAO,MAAM,KACd,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAS9D,CAAC;AAEF,OAAO,EACH,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,KAAK,gBAAgB,GACxB,CAAC"}
|
|
@@ -129,6 +129,7 @@ const getRunOptions = ({ root, mode, inputs, resolved }) => {
|
|
|
129
129
|
}
|
|
130
130
|
return { cwd: root, mode, inputs, resolved };
|
|
131
131
|
};
|
|
132
|
+
/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */
|
|
132
133
|
const ensureGenerated = async (cwd, options = {}) => {
|
|
133
134
|
if (options.shouldAnnounce && process.env.GTKX_DISABLE_PREFLIGHT === "1") {
|
|
134
135
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-codegen.js","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import { runCodegen as runCodegenCore } from \"@gtkx/codegen\";\nimport { type Config, loadConfig } from \"@gtkx/config\";\nimport {\n resolveElementComponents,\n resolveElementProps,\n resolveLazyElements,\n resolveOmittedProps,\n} from \"@gtkx/config/internal\";\nimport { info } from \"@gtkx/utils\";\nimport { rmSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { resolveDataDir } from \"../internal/data-dir.js\";\nimport { emitSchemaEnv } from \"../settings/schema.js\";\nimport { type CodegenInputs, isCodegenStale, resolveCodegenInputs } from \"./freshness.js\";\nimport { type CodegenStore, resolveCodegenContext } from \"./store-resolver.js\";\n\ntype RunCodegenOptions = {\n cwd?: string;\n mode?: string | undefined;\n isForced?: boolean;\n inputs?: CodegenInputs;\n resolved?: LoadedConfig;\n};\n\ntype LoadedConfig = {\n config: Config;\n configFile: string;\n};\n\ntype RunCodegenResult = {\n isRegenerated: boolean;\n namespaces: number;\n intrinsicElements: number;\n duration: number;\n girPath?: string[] | undefined;\n configFile?: string | undefined;\n libraries?: string[] | undefined;\n};\n\ntype CodegenOptionsInput = {\n store: CodegenStore;\n libraries: string[];\n girPath: string[];\n elements: Config[\"elements\"];\n};\n\ntype PreparedCodegen = CodegenInputs & { isForced: boolean };\n\ntype RunOptionsInput = {\n root: string;\n mode: string | undefined;\n inputs: CodegenInputs | null;\n resolved: LoadedConfig;\n};\n\nconst GIR_PATH_MISSING_MESSAGE =\n \"No GIR search paths available. Install gobject-introspection \" +\n \"(Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), \" +\n \"or set `girPath` in gtkx.config.ts.\";\n\nconst removeSharedStoreShadow = (cwd: string): void => {\n for (const path of [\n resolve(cwd, \"node_modules/.gtkx/gi\"),\n resolve(cwd, \"node_modules/.gtkx/jsx\"),\n resolve(cwd, \"node_modules/@gtkx/gi\"),\n resolve(cwd, \"node_modules/@gtkx/jsx\"),\n ]) {\n rmSync(path, { recursive: true, force: true });\n }\n};\n\nconst codegenOptions = ({ store, libraries, girPath, elements }: CodegenOptionsInput) => ({\n libraries,\n girPath,\n gi: {\n storeDir: store.giStoreDir,\n linkDir: store.giLinkDir,\n version: store.runtimeVersion,\n },\n jsx:\n store.react === null\n ? undefined\n : {\n storeDir: store.jsxStoreDir,\n linkDir: store.jsxLinkDir,\n version: store.react.version,\n },\n reactSubexports: store.react?.subexports ?? [],\n userComponents: resolveElementComponents(elements),\n userProps: resolveElementProps(elements),\n userLazyElements: resolveLazyElements(elements),\n userOmittedProps: resolveOmittedProps(elements),\n});\n\nconst disabledCodegenResult = (configFile: string): RunCodegenResult => ({\n isRegenerated: false,\n namespaces: 0,\n intrinsicElements: 0,\n duration: 0,\n girPath: [],\n configFile,\n libraries: [],\n});\n\nconst clearGeneratedStores = (store: CodegenStore): void => {\n for (const path of [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir]) {\n rmSync(path, { recursive: true, force: true });\n }\n};\n\nconst resolveLoadedConfig = async (options: RunCodegenOptions, cwd: string): Promise<LoadedConfig> =>\n options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));\n\nconst prepareCodegen = (options: RunCodegenOptions, cwd: string, config: Config): PreparedCodegen => {\n const { girPath, libraries, store } = options.inputs ?? resolveCodegenInputs(cwd, config);\n\n if (girPath.length === 0) {\n throw new Error(GIR_PATH_MISSING_MESSAGE);\n }\n\n const isForced = options.isForced === true || isCodegenStale({ girPath, libraries, store });\n\n return { girPath, libraries, store, isForced };\n};\n\nconst runCodegen = async (options: RunCodegenOptions = {}): Promise<RunCodegenResult> => {\n const cwd = options.cwd ?? process.cwd();\n const { config, configFile } = await resolveLoadedConfig(options, cwd);\n\n if (config.codegen === false) {\n removeSharedStoreShadow(cwd);\n\n return disabledCodegenResult(configFile);\n }\n\n const { girPath, libraries, store, isForced } = prepareCodegen(options, cwd, config);\n\n if (options.isForced) {\n clearGeneratedStores(store);\n }\n\n const result = await runCodegenCore({\n ...codegenOptions({\n store,\n libraries,\n girPath,\n elements: config.elements,\n }),\n isForced,\n });\n\n return {\n isRegenerated: result.isRegenerated,\n namespaces: result.namespaces,\n intrinsicElements: result.intrinsicElements,\n duration: result.duration,\n girPath,\n configFile,\n libraries,\n };\n};\n\nconst isCodegenDisabled = async (cwd: string, mode?: string): Promise<boolean> => {\n try {\n const { config } = await loadConfig(cwd, { mode });\n\n return config.codegen === false;\n } catch {\n return false;\n }\n};\n\nconst syncSchemaEnv = (cwd: string): void => {\n emitSchemaEnv(cwd, resolveDataDir(cwd));\n};\n\nconst resolveInputsOrNull = (cwd: string, config: Config): CodegenInputs | null => {\n try {\n return resolveCodegenInputs(cwd, config);\n } catch {\n return null;\n }\n};\n\nconst maybeAnnounceStale = (shouldAnnounce: boolean | undefined, inputs: CodegenInputs | null): void => {\n if (!shouldAnnounce) {\n return;\n }\n\n if (inputs === null || isCodegenStale(inputs)) {\n info(\"generated bindings missing; running codegen...\");\n }\n};\n\nconst getRunOptions = ({ root, mode, inputs, resolved }: RunOptionsInput): RunCodegenOptions => {\n if (inputs === null) {\n return { cwd: root, mode, resolved };\n }\n\n return { cwd: root, mode, inputs, resolved };\n};\n\nconst ensureGenerated = async (\n cwd: string,\n options: { shouldAnnounce?: boolean; mode?: string } = {},\n): Promise<boolean> => {\n if (options.shouldAnnounce && process.env.GTKX_DISABLE_PREFLIGHT === \"1\") {\n return false;\n }\n\n const context = await resolveCodegenContext(cwd, options.mode);\n syncSchemaEnv(cwd);\n\n if (context.config.codegen === false) {\n removeSharedStoreShadow(context.root);\n\n return false;\n }\n\n const inputs = resolveInputsOrNull(context.root, context.config);\n maybeAnnounceStale(options.shouldAnnounce, inputs);\n const resolved = { config: context.config, configFile: context.configFile };\n const result = await runCodegen(getRunOptions({ root: context.root, mode: options.mode, inputs, resolved }));\n\n return result.isRegenerated;\n};\n\nconst resolveConfigWatch = async (\n cwd: string,\n mode?: string,\n): Promise<{ paths: string[]; regenerate: () => Promise<void> }> => {\n const { configFile, root } = await loadConfig(cwd, { mode });\n\n return {\n paths: [resolve(root, configFile)],\n regenerate: async () => {\n await runCodegen({ cwd: root, mode });\n },\n };\n};\n\nexport {\n runCodegen,\n isCodegenDisabled,\n syncSchemaEnv,\n ensureGenerated,\n resolveConfigWatch,\n type RunCodegenOptions,\n type RunCodegenResult,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"run-codegen.js","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import { runCodegen as runCodegenCore } from \"@gtkx/codegen\";\nimport { type Config, loadConfig } from \"@gtkx/config\";\nimport {\n resolveElementComponents,\n resolveElementProps,\n resolveLazyElements,\n resolveOmittedProps,\n} from \"@gtkx/config/internal\";\nimport { info } from \"@gtkx/utils\";\nimport { rmSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { resolveDataDir } from \"../internal/data-dir.js\";\nimport { emitSchemaEnv } from \"../settings/schema.js\";\nimport { type CodegenInputs, isCodegenStale, resolveCodegenInputs } from \"./freshness.js\";\nimport { type CodegenStore, resolveCodegenContext } from \"./store-resolver.js\";\n\ntype RunCodegenOptions = {\n cwd?: string;\n mode?: string | undefined;\n isForced?: boolean;\n inputs?: CodegenInputs;\n resolved?: LoadedConfig;\n};\n\ntype LoadedConfig = {\n config: Config;\n configFile: string;\n};\n\ntype RunCodegenResult = {\n isRegenerated: boolean;\n namespaces: number;\n intrinsicElements: number;\n duration: number;\n girPath?: string[] | undefined;\n configFile?: string | undefined;\n libraries?: string[] | undefined;\n};\n\ntype CodegenOptionsInput = {\n store: CodegenStore;\n libraries: string[];\n girPath: string[];\n elements: Config[\"elements\"];\n};\n\ntype PreparedCodegen = CodegenInputs & { isForced: boolean };\n\ntype RunOptionsInput = {\n root: string;\n mode: string | undefined;\n inputs: CodegenInputs | null;\n resolved: LoadedConfig;\n};\n\nconst GIR_PATH_MISSING_MESSAGE =\n \"No GIR search paths available. Install gobject-introspection \" +\n \"(Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), \" +\n \"or set `girPath` in gtkx.config.ts.\";\n\nconst removeSharedStoreShadow = (cwd: string): void => {\n for (const path of [\n resolve(cwd, \"node_modules/.gtkx/gi\"),\n resolve(cwd, \"node_modules/.gtkx/jsx\"),\n resolve(cwd, \"node_modules/@gtkx/gi\"),\n resolve(cwd, \"node_modules/@gtkx/jsx\"),\n ]) {\n rmSync(path, { recursive: true, force: true });\n }\n};\n\nconst codegenOptions = ({ store, libraries, girPath, elements }: CodegenOptionsInput) => ({\n libraries,\n girPath,\n gi: {\n storeDir: store.giStoreDir,\n linkDir: store.giLinkDir,\n version: store.runtimeVersion,\n },\n jsx:\n store.react === null\n ? undefined\n : {\n storeDir: store.jsxStoreDir,\n linkDir: store.jsxLinkDir,\n version: store.react.version,\n },\n reactSubexports: store.react?.subexports ?? [],\n userComponents: resolveElementComponents(elements),\n userProps: resolveElementProps(elements),\n userLazyElements: resolveLazyElements(elements),\n userOmittedProps: resolveOmittedProps(elements),\n});\n\nconst disabledCodegenResult = (configFile: string): RunCodegenResult => ({\n isRegenerated: false,\n namespaces: 0,\n intrinsicElements: 0,\n duration: 0,\n girPath: [],\n configFile,\n libraries: [],\n});\n\nconst clearGeneratedStores = (store: CodegenStore): void => {\n for (const path of [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir]) {\n rmSync(path, { recursive: true, force: true });\n }\n};\n\nconst resolveLoadedConfig = async (options: RunCodegenOptions, cwd: string): Promise<LoadedConfig> =>\n options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));\n\nconst prepareCodegen = (options: RunCodegenOptions, cwd: string, config: Config): PreparedCodegen => {\n const { girPath, libraries, store } = options.inputs ?? resolveCodegenInputs(cwd, config);\n\n if (girPath.length === 0) {\n throw new Error(GIR_PATH_MISSING_MESSAGE);\n }\n\n const isForced = options.isForced === true || isCodegenStale({ girPath, libraries, store });\n\n return { girPath, libraries, store, isForced };\n};\n\nconst runCodegen = async (options: RunCodegenOptions = {}): Promise<RunCodegenResult> => {\n const cwd = options.cwd ?? process.cwd();\n const { config, configFile } = await resolveLoadedConfig(options, cwd);\n\n if (config.codegen === false) {\n removeSharedStoreShadow(cwd);\n\n return disabledCodegenResult(configFile);\n }\n\n const { girPath, libraries, store, isForced } = prepareCodegen(options, cwd, config);\n\n if (options.isForced) {\n clearGeneratedStores(store);\n }\n\n const result = await runCodegenCore({\n ...codegenOptions({\n store,\n libraries,\n girPath,\n elements: config.elements,\n }),\n isForced,\n });\n\n return {\n isRegenerated: result.isRegenerated,\n namespaces: result.namespaces,\n intrinsicElements: result.intrinsicElements,\n duration: result.duration,\n girPath,\n configFile,\n libraries,\n };\n};\n\nconst isCodegenDisabled = async (cwd: string, mode?: string): Promise<boolean> => {\n try {\n const { config } = await loadConfig(cwd, { mode });\n\n return config.codegen === false;\n } catch {\n return false;\n }\n};\n\nconst syncSchemaEnv = (cwd: string): void => {\n emitSchemaEnv(cwd, resolveDataDir(cwd));\n};\n\nconst resolveInputsOrNull = (cwd: string, config: Config): CodegenInputs | null => {\n try {\n return resolveCodegenInputs(cwd, config);\n } catch {\n return null;\n }\n};\n\nconst maybeAnnounceStale = (shouldAnnounce: boolean | undefined, inputs: CodegenInputs | null): void => {\n if (!shouldAnnounce) {\n return;\n }\n\n if (inputs === null || isCodegenStale(inputs)) {\n info(\"generated bindings missing; running codegen...\");\n }\n};\n\nconst getRunOptions = ({ root, mode, inputs, resolved }: RunOptionsInput): RunCodegenOptions => {\n if (inputs === null) {\n return { cwd: root, mode, resolved };\n }\n\n return { cwd: root, mode, inputs, resolved };\n};\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */\nconst ensureGenerated = async (\n cwd: string,\n options: { shouldAnnounce?: boolean; mode?: string } = {},\n): Promise<boolean> => {\n if (options.shouldAnnounce && process.env.GTKX_DISABLE_PREFLIGHT === \"1\") {\n return false;\n }\n\n const context = await resolveCodegenContext(cwd, options.mode);\n syncSchemaEnv(cwd);\n\n if (context.config.codegen === false) {\n removeSharedStoreShadow(context.root);\n\n return false;\n }\n\n const inputs = resolveInputsOrNull(context.root, context.config);\n maybeAnnounceStale(options.shouldAnnounce, inputs);\n const resolved = { config: context.config, configFile: context.configFile };\n const result = await runCodegen(getRunOptions({ root: context.root, mode: options.mode, inputs, resolved }));\n\n return result.isRegenerated;\n};\n\nconst resolveConfigWatch = async (\n cwd: string,\n mode?: string,\n): Promise<{ paths: string[]; regenerate: () => Promise<void> }> => {\n const { configFile, root } = await loadConfig(cwd, { mode });\n\n return {\n paths: [resolve(root, configFile)],\n regenerate: async () => {\n await runCodegen({ cwd: root, mode });\n },\n };\n};\n\nexport {\n runCodegen,\n isCodegenDisabled,\n syncSchemaEnv,\n ensureGenerated,\n resolveConfigWatch,\n type RunCodegenResult,\n};\n"]}
|
|
@@ -18,5 +18,5 @@ type CodegenContext = {
|
|
|
18
18
|
};
|
|
19
19
|
declare const resolveCodegenStore: (dir: string) => CodegenStore;
|
|
20
20
|
declare const resolveCodegenContext: (cwd: string, mode?: string) => Promise<CodegenContext>;
|
|
21
|
-
export { resolveCodegenStore, resolveCodegenContext, type CodegenStore
|
|
21
|
+
export { resolveCodegenStore, resolveCodegenContext, type CodegenStore };
|
|
22
22
|
//# sourceMappingURL=store-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-resolver.d.ts","sourceRoot":"","sources":["../../src/codegen/store-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAMvD,KAAK,YAAY,GAAG;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAIF,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AA6BF,QAAA,MAAM,mBAAmB,GAAI,KAAK,MAAM,KAAG,YAqB1C,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,cAAc,CAIvF,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,KAAK,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"store-resolver.d.ts","sourceRoot":"","sources":["../../src/codegen/store-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAMvD,KAAK,YAAY,GAAG;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAIF,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AA6BF,QAAA,MAAM,mBAAmB,GAAI,KAAK,MAAM,KAAG,YAqB1C,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,cAAc,CAIvF,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,KAAK,YAAY,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-resolver.js","sourceRoot":"","sources":["../../src/codegen/store-resolver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"store-resolver.js","sourceRoot":"","sources":["../../src/codegen/store-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveStore } from \"@gtkx/codegen\";\nimport { type Config, loadConfig } from \"@gtkx/config\";\nimport { existsSync, readFileSync, realpathSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\ntype CodegenStore = {\n giStoreDir: string;\n giLinkDir: string;\n jsxStoreDir: string;\n jsxLinkDir: string;\n runtimeVersion: string;\n react: CodegenReactPackage | null;\n};\n\ntype CodegenReactPackage = {\n version: string;\n subexports: string[];\n};\n\ntype ResolvedPackage = { dir: string; version: string };\n\ntype CodegenContext = {\n root: string;\n config: Config;\n configFile: string;\n};\n\nconst readVersion = (packageJsonPath: string): string => {\n const parsed = JSON.parse(readFileSync(packageJsonPath, \"utf8\")) as { version?: string };\n\n return parsed.version ?? \"0.0.0\";\n};\n\nconst resolvePackage = (require: NodeJS.Require, dir: string, packageName: string): ResolvedPackage | null => {\n try {\n const real = realpathSync(require.resolve(`${packageName}/package.json`));\n\n return { dir: dirname(real), version: readVersion(real) };\n } catch {\n const unscoped = packageName.replace(/^@[^/]+\\//, \"\");\n const workspacePkg = join(dir, \"packages\", unscoped, \"package.json\");\n\n if (!existsSync(workspacePkg)) {\n return null;\n }\n\n const real = realpathSync(workspacePkg);\n\n return { dir: dirname(real), version: readVersion(real) };\n }\n};\n\nconst siblingStore = (giDir: string): string => join(dirname(giDir), \"jsx\");\n\nconst resolveCodegenStore = (dir: string): CodegenStore => {\n const require = createRequire(pathToFileURL(join(dir, \"__gtkx_resolver__.js\")).href);\n\n if (resolvePackage(require, dir, \"@gtkx/native\") === null) {\n throw new Error(\"Cannot resolve @gtkx/native from the project; is it installed?\");\n }\n\n const store = resolveStore(dir);\n const hasReactRuntime = resolvePackage(require, dir, \"react\") !== null;\n\n return {\n giStoreDir: store.gi.storeDir,\n giLinkDir: store.gi.linkDir,\n jsxStoreDir: store.jsx?.storeDir ?? siblingStore(store.gi.storeDir),\n jsxLinkDir: store.jsx?.linkDir ?? siblingStore(store.gi.linkDir),\n runtimeVersion: store.gi.version,\n react:\n hasReactRuntime && store.jsx !== null\n ? { version: store.jsx.version, subexports: store.reactSubexports }\n : null,\n };\n};\n\nconst resolveCodegenContext = async (cwd: string, mode?: string): Promise<CodegenContext> => {\n const { config, configFile } = await loadConfig(cwd, { mode });\n\n return { root: cwd, config, configFile };\n};\n\nexport { resolveCodegenStore, resolveCodegenContext, type CodegenStore };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,GAAG;;;EAeP,CAAC;AAEH,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { defineCommand } from "citty";
|
|
2
2
|
import { ensureGenerated, resolveConfigWatch } from "../codegen/run-codegen.js";
|
|
3
3
|
import { runDevSupervisor } from "../dev/supervisor.js";
|
|
4
|
+
import { splitApplicationArgs } from "../internal/application-args.js";
|
|
4
5
|
import { entryArg, resolveEntry } from "../internal/entry-arg.js";
|
|
5
6
|
const DEV_MODE = "development";
|
|
6
7
|
const dev = defineCommand({
|
|
@@ -15,7 +16,8 @@ const dev = defineCommand({
|
|
|
15
16
|
const { cwd, entry: entryPath } = resolveEntry(args);
|
|
16
17
|
await ensureGenerated(cwd, { shouldAnnounce: true, mode: DEV_MODE });
|
|
17
18
|
const watch = await resolveConfigWatch(cwd, DEV_MODE);
|
|
18
|
-
|
|
19
|
+
const { applicationArgs } = splitApplicationArgs(process.argv.slice(2));
|
|
20
|
+
await runDevSupervisor({ entryPath, cwd, args: applicationArgs, watch });
|
|
19
21
|
},
|
|
20
22
|
});
|
|
21
23
|
export { dev };
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAiB,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,QAAQ,GAAG,aAAa,CAAC;AAE/B,MAAM,GAAG,GAAG,aAAa,CAAC;IACtB,IAAI,EAAE;QACF,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,mCAAmC;KACnD;IACD,IAAI,EAAE;QACF,GAAG,QAAQ;KACd;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,eAAe,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrE,MAAM,KAAK,GAAyB,MAAM,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC5E,MAAM,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAiB,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,QAAQ,GAAG,aAAa,CAAC;AAE/B,MAAM,GAAG,GAAG,aAAa,CAAC;IACtB,IAAI,EAAE;QACF,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,mCAAmC;KACnD;IACD,IAAI,EAAE;QACF,GAAG,QAAQ;KACd;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,eAAe,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrE,MAAM,KAAK,GAAyB,MAAM,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC5E,MAAM,EAAE,eAAe,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;CACJ,CAAC,CAAC;AAEH,OAAO,EAAE,GAAG,EAAE,CAAC","sourcesContent":["import { defineCommand } from \"citty\";\nimport { ensureGenerated, resolveConfigWatch } from \"../codegen/run-codegen.js\";\nimport { type DevWatch, runDevSupervisor } from \"../dev/supervisor.js\";\nimport { splitApplicationArgs } from \"../internal/application-args.js\";\nimport { entryArg, resolveEntry } from \"../internal/entry-arg.js\";\n\nconst DEV_MODE = \"development\";\n\nconst dev = defineCommand({\n meta: {\n name: \"dev\",\n description: \"Start development server with HMR\",\n },\n args: {\n ...entryArg,\n },\n async run({ args }) {\n const { cwd, entry: entryPath } = resolveEntry(args);\n await ensureGenerated(cwd, { shouldAnnounce: true, mode: DEV_MODE });\n const watch: DevWatch | undefined = await resolveConfigWatch(cwd, DEV_MODE);\n const { applicationArgs } = splitApplicationArgs(process.argv.slice(2));\n await runDevSupervisor({ entryPath, cwd, args: applicationArgs, watch });\n },\n});\n\nexport { dev };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-env.d.ts","sourceRoot":"","sources":["../../src/dev/entry-env.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,aAAa,mBAAmB,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-env.js","sourceRoot":"","sources":["../../src/dev/entry-env.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,CAAC","sourcesContent":["const DEV_ENTRY_ENV = \"GTKX_DEV_ENTRY\";\n\nexport { DEV_ENTRY_ENV };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-deps.d.ts","sourceRoot":"","sources":["../../src/dev/runner-deps.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAyBjD,QAAA,MAAM,oBAAoB,QAAO,
|
|
1
|
+
{"version":3,"file":"runner-deps.d.ts","sourceRoot":"","sources":["../../src/dev/runner-deps.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAyBjD,QAAA,MAAM,oBAAoB,QAAO,aAiC/B,CAAC;AAEH,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
package/dist/dev/runner-deps.js
CHANGED
|
@@ -36,6 +36,7 @@ const defaultDevRunnerDeps = () => ({
|
|
|
36
36
|
watchApplicationShutdown: (onShutdown) => {
|
|
37
37
|
Gio.Application.getDefault()?.on("shutdown", onShutdown);
|
|
38
38
|
},
|
|
39
|
+
isApplicationRegistered: () => Gio.Application.getDefault()?.getIsRegistered() === true,
|
|
39
40
|
installShutdownHandlers: (onSignal) => {
|
|
40
41
|
installGracefulShutdown({ onSignal });
|
|
41
42
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-deps.js","sourceRoot":"","sources":["../../src/dev/runner-deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,MAAM,QAAQ,GAAG,aAAa,CAAC;AAC/B,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAExC,MAAM,oBAAoB,GAAG,GAAkB,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,IAAI,IAAI,CAAC;AAEtG,MAAM,oBAAoB,GAAG,KAAK,EAAE,SAAiB,EAA0B,EAAE;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,aAAa,GAAG,oBAAoB,EAAE,CAAC;IAE3C,OAAO,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QACrD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC,CAAC;QAClF,aAAa,GAAG,oBAAoB,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,GAAkB,EAAE,CAAC,CAAC;IAC/C,YAAY;IACZ,oBAAoB;IACpB,0BAA0B,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE1D,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;IACvC,CAAC;IACD,cAAc,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE;QAC7C,sBAAsB,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,eAAe,CAA4C,CAAC,CAAC;QAExG,OAAO,cAAc,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IACD,aAAa;IACb,wBAAwB,EAAE,CAAC,UAAU,EAAE,EAAE;QACrC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IACD,uBAAuB,EAAE,CAAC,QAAQ,EAAE,EAAE;QAClC,uBAAuB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,sBAAsB,EAAE,GAAG,EAAE;QACzB,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAEjD,IAAI,WAAW,EAAE,CAAC;YACd,eAAe,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IACD,cAAc;IACd,iBAAiB;IACjB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,EAAE,GAAG,eAAe,EAAE,EAAE,qBAAqB,EAAE,CAAC;IAC5F,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,CAAC,IAAY,EAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;CACpD,CAAC,CAAC;AAEH,OAAO,EAAE,oBAAoB,EAAE,CAAC","sourcesContent":["import { loadConfig } from \"@gtkx/config\";\nimport * as Gio from \"@gtkx/gi/gio\";\nimport { quitApplication } from \"@gtkx/runtime\";\nimport { info, installGracefulShutdown } from \"@gtkx/utils\";\nimport { createServer } from \"vite\";\nimport type { DevRunnerDeps } from \"./runner.js\";\nimport { startMcpClient, stopMcpClient } from \"../mcp/index.js\";\nimport { setTestingModuleLoader } from \"../mcp/testing-loader.js\";\nimport { isRefreshBoundary, performRefresh } from \"../refresh-runtime.js\";\nimport { gtkxFastRefresh } from \"../vite-plugins/fast-refresh/swc-refresh.js\";\nimport { gtkxVitePlugins } from \"../vite-plugins/index.js\";\nimport { gtkxReactDomPrebundle } from \"../vite-plugins/react-dom-prebundle.js\";\n\nconst DEV_MODE = \"development\";\nconst APPLICATION_POLL_INTERVAL_MS = 50;\n\nconst currentApplicationId = (): string | null => Gio.Application.getDefault()?.applicationId ?? null;\n\nconst waitForApplicationId = async (timeoutMs: number): Promise<string | null> => {\n const deadline = Date.now() + timeoutMs;\n let applicationId = currentApplicationId();\n\n while (applicationId === null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, APPLICATION_POLL_INTERVAL_MS));\n applicationId = currentApplicationId();\n }\n\n return applicationId;\n};\n\nconst defaultDevRunnerDeps = (): DevRunnerDeps => ({\n createServer,\n waitForApplicationId,\n getConfiguredApplicationId: async (root: string) => {\n const loaded = await loadConfig(root, { mode: DEV_MODE });\n\n return loaded.config.applicationId;\n },\n startMcpClient: (applicationId, loadAppModule) => {\n setTestingModuleLoader(() => loadAppModule(\"@gtkx/testing\") as Promise<typeof import(\"@gtkx/testing\")>);\n\n return startMcpClient(applicationId);\n },\n stopMcpClient,\n watchApplicationShutdown: (onShutdown) => {\n Gio.Application.getDefault()?.on(\"shutdown\", onShutdown);\n },\n installShutdownHandlers: (onSignal) => {\n installGracefulShutdown({ onSignal });\n },\n quitDefaultApplication: () => {\n const application = Gio.Application.getDefault();\n\n if (application) {\n quitApplication(application);\n }\n },\n performRefresh,\n isRefreshBoundary,\n plugins: () => [...gtkxVitePlugins(DEV_MODE), ...gtkxFastRefresh(), gtkxReactDomPrebundle()],\n log: info,\n exit: (code: number): never => process.exit(code),\n});\n\nexport { defaultDevRunnerDeps };\n"]}
|
|
1
|
+
{"version":3,"file":"runner-deps.js","sourceRoot":"","sources":["../../src/dev/runner-deps.ts"],"names":[],"mappings":"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","sourcesContent":["import { loadConfig } from \"@gtkx/config\";\nimport * as Gio from \"@gtkx/gi/gio\";\nimport { quitApplication } from \"@gtkx/runtime\";\nimport { info, installGracefulShutdown } from \"@gtkx/utils\";\nimport { createServer } from \"vite\";\nimport type { DevRunnerDeps } from \"./runner.js\";\nimport { startMcpClient, stopMcpClient } from \"../mcp/index.js\";\nimport { setTestingModuleLoader } from \"../mcp/testing-loader.js\";\nimport { isRefreshBoundary, performRefresh } from \"../refresh-runtime.js\";\nimport { gtkxFastRefresh } from \"../vite-plugins/fast-refresh/swc-refresh.js\";\nimport { gtkxVitePlugins } from \"../vite-plugins/index.js\";\nimport { gtkxReactDomPrebundle } from \"../vite-plugins/react-dom-prebundle.js\";\n\nconst DEV_MODE = \"development\";\nconst APPLICATION_POLL_INTERVAL_MS = 50;\n\nconst currentApplicationId = (): string | null => Gio.Application.getDefault()?.applicationId ?? null;\n\nconst waitForApplicationId = async (timeoutMs: number): Promise<string | null> => {\n const deadline = Date.now() + timeoutMs;\n let applicationId = currentApplicationId();\n\n while (applicationId === null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, APPLICATION_POLL_INTERVAL_MS));\n applicationId = currentApplicationId();\n }\n\n return applicationId;\n};\n\nconst defaultDevRunnerDeps = (): DevRunnerDeps => ({\n createServer,\n waitForApplicationId,\n getConfiguredApplicationId: async (root: string) => {\n const loaded = await loadConfig(root, { mode: DEV_MODE });\n\n return loaded.config.applicationId;\n },\n startMcpClient: (applicationId, loadAppModule) => {\n setTestingModuleLoader(() => loadAppModule(\"@gtkx/testing\") as Promise<typeof import(\"@gtkx/testing\")>);\n\n return startMcpClient(applicationId);\n },\n stopMcpClient,\n watchApplicationShutdown: (onShutdown) => {\n Gio.Application.getDefault()?.on(\"shutdown\", onShutdown);\n },\n isApplicationRegistered: () => Gio.Application.getDefault()?.getIsRegistered() === true,\n installShutdownHandlers: (onSignal) => {\n installGracefulShutdown({ onSignal });\n },\n quitDefaultApplication: () => {\n const application = Gio.Application.getDefault();\n\n if (application) {\n quitApplication(application);\n }\n },\n performRefresh,\n isRefreshBoundary,\n plugins: () => [...gtkxVitePlugins(DEV_MODE), ...gtkxFastRefresh(), gtkxReactDomPrebundle()],\n log: info,\n exit: (code: number): never => process.exit(code),\n});\n\nexport { defaultDevRunnerDeps };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-main.d.ts","sourceRoot":"","sources":["../../src/dev/runner-main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner-main.d.ts","sourceRoot":"","sources":["../../src/dev/runner-main.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,IAAI,QAAa,OAAO,CAAC,IAAI,CAsBlC,CAAC;AAEF,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
package/dist/dev/runner-main.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { error } from "@gtkx/utils";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
3
|
import { resolveDataDir } from "../internal/data-dir.js";
|
|
4
|
+
import { DEV_ENTRY_ENV } from "./entry-env.js";
|
|
4
5
|
import { prepareDevIconDir } from "./icon-dir.js";
|
|
5
6
|
import { createDevRunner } from "./runner.js";
|
|
6
7
|
import { prepareDevSchemaDir } from "./schema-dir.js";
|
|
7
|
-
const ENTRY_ARG_INDEX = 2;
|
|
8
8
|
const main = async () => {
|
|
9
9
|
if (process.channel) {
|
|
10
10
|
process.once("disconnect", () => {
|
|
@@ -12,9 +12,9 @@ const main = async () => {
|
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
14
|
const cwd = process.cwd();
|
|
15
|
-
const entryArg = process.
|
|
15
|
+
const entryArg = process.env[DEV_ENTRY_ENV];
|
|
16
16
|
if (!entryArg) {
|
|
17
|
-
error(
|
|
17
|
+
error(`Missing ${DEV_ENTRY_ENV}`);
|
|
18
18
|
process.exit(1);
|
|
19
19
|
}
|
|
20
20
|
const dataDir = resolveDataDir(cwd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-main.js","sourceRoot":"","sources":["../../src/dev/runner-main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,
|
|
1
|
+
{"version":3,"file":"runner-main.js","sourceRoot":"","sources":["../../src/dev/runner-main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IACnC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAE5C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,KAAK,CAAC,WAAW,aAAa,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACpC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAClC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,eAAe,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACvD,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,OAAO,EAAE,IAAI,EAAE,CAAC","sourcesContent":["import { error } from \"@gtkx/utils\";\nimport { resolve } from \"node:path\";\nimport { resolveDataDir } from \"../internal/data-dir.js\";\nimport { DEV_ENTRY_ENV } from \"./entry-env.js\";\nimport { prepareDevIconDir } from \"./icon-dir.js\";\nimport { createDevRunner } from \"./runner.js\";\nimport { prepareDevSchemaDir } from \"./schema-dir.js\";\n\nconst main = async (): Promise<void> => {\n if (process.channel) {\n process.once(\"disconnect\", () => {\n process.exit(0);\n });\n }\n\n const cwd = process.cwd();\n const entryArg = process.env[DEV_ENTRY_ENV];\n\n if (!entryArg) {\n error(`Missing ${DEV_ENTRY_ENV}`);\n process.exit(1);\n }\n\n const dataDir = resolveDataDir(cwd);\n prepareDevSchemaDir(cwd, dataDir);\n prepareDevIconDir(cwd, dataDir);\n const entryPath = resolve(cwd, entryArg);\n const { defaultDevRunnerDeps } = await import(\"./runner-deps.js\");\n const runner = createDevRunner(defaultDevRunnerDeps());\n await runner.run(entryPath);\n};\n\nexport { main };\n"]}
|
package/dist/dev/runner.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ type DevRunnerDeps = {
|
|
|
7
7
|
startMcpClient(applicationId: string, loadAppModule: (id: string) => Promise<Record<string, unknown>>): Promise<unknown>;
|
|
8
8
|
stopMcpClient(): void;
|
|
9
9
|
watchApplicationShutdown(onShutdown: () => void): void;
|
|
10
|
+
isApplicationRegistered(): boolean;
|
|
10
11
|
installShutdownHandlers(onSignal: () => void | Promise<void>): void;
|
|
11
12
|
quitDefaultApplication(): void;
|
|
12
13
|
performRefresh: () => void;
|
package/dist/dev/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/dev/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAIjD,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE7E,KAAK,aAAa,GAAG;IACjB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChE,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtE,cAAc,CACV,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAChE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,aAAa,IAAI,IAAI,CAAC;IACtB,wBAAwB,CAAC,UAAU,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACvD,uBAAuB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE,sBAAsB,IAAI,IAAI,CAAC;IAC/B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IAC5D,OAAO,IAAI,MAAM,EAAE,CAAC;IACpB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;CAC7B,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/dev/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAIjD,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE7E,KAAK,aAAa,GAAG;IACjB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChE,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtE,cAAc,CACV,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAChE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,aAAa,IAAI,IAAI,CAAC;IACtB,wBAAwB,CAAC,UAAU,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACvD,uBAAuB,IAAI,OAAO,CAAC;IACnC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE,sBAAsB,IAAI,IAAI,CAAC;IAC/B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IAC5D,OAAO,IAAI,MAAM,EAAE,CAAC;IACpB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;CAC7B,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,CAAC;AA0KF,QAAA,MAAM,eAAe,GAAI,MAAM,aAAa,KAAG,SAc7C,CAAC;AAEH,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,CAAC"}
|
package/dist/dev/runner.js
CHANGED
|
@@ -70,7 +70,7 @@ const onShutdownSignal = (deps, controller) => async () => {
|
|
|
70
70
|
deps.quitDefaultApplication();
|
|
71
71
|
});
|
|
72
72
|
};
|
|
73
|
-
const closeAndExit = async (deps, controller) => {
|
|
73
|
+
const closeAndExit = async (deps, controller, code = 0) => {
|
|
74
74
|
try {
|
|
75
75
|
await controller.shutdown(() => undefined);
|
|
76
76
|
}
|
|
@@ -78,7 +78,7 @@ const closeAndExit = async (deps, controller) => {
|
|
|
78
78
|
error("Error closing server:", error_);
|
|
79
79
|
return deps.exit(1);
|
|
80
80
|
}
|
|
81
|
-
return deps.exit(
|
|
81
|
+
return deps.exit(code);
|
|
82
82
|
};
|
|
83
83
|
const onApplicationShutdown = (deps, refreshTracker, controller) => () => {
|
|
84
84
|
if (controller.isShuttingDown()) {
|
|
@@ -91,6 +91,25 @@ const onApplicationShutdown = (deps, refreshTracker, controller) => () => {
|
|
|
91
91
|
deps.log("Application quit - stopping dev runner...");
|
|
92
92
|
void closeAndExit(deps, controller);
|
|
93
93
|
};
|
|
94
|
+
const refusedExitCode = () => (process.exitCode === undefined ? 1 : Number(process.exitCode));
|
|
95
|
+
const connectApplication = async (deps, server, liveApplicationId, tracked) => {
|
|
96
|
+
deps.watchApplicationShutdown(onApplicationShutdown(deps, tracked.refreshTracker, tracked.controller));
|
|
97
|
+
const applicationId = (await deps.getConfiguredApplicationId(process.cwd())) ?? liveApplicationId;
|
|
98
|
+
deps.log(`Connected application ID: ${applicationId}`);
|
|
99
|
+
await deps.startMcpClient(applicationId, (id) => server.ssrLoadModule(id));
|
|
100
|
+
};
|
|
101
|
+
const attachApplication = async (deps, server, tracked) => {
|
|
102
|
+
const liveApplicationId = await deps.waitForApplicationId(APPLICATION_MOUNT_TIMEOUT_MS);
|
|
103
|
+
if (liveApplicationId === null) {
|
|
104
|
+
deps.log("Entry did not mount an application - MCP client not started.");
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (!deps.isApplicationRegistered()) {
|
|
108
|
+
deps.log("Application refused its command line - stopping dev runner...");
|
|
109
|
+
return closeAndExit(deps, tracked.controller, refusedExitCode());
|
|
110
|
+
}
|
|
111
|
+
await connectApplication(deps, server, liveApplicationId, tracked);
|
|
112
|
+
};
|
|
94
113
|
const createDevRunner = (deps) => ({
|
|
95
114
|
async run(entryPath) {
|
|
96
115
|
const root = process.cwd();
|
|
@@ -102,16 +121,7 @@ const createDevRunner = (deps) => ({
|
|
|
102
121
|
server.watcher.on("change", onFileChange(server, refreshTrackingDeps, controller));
|
|
103
122
|
deps.log(`Loading entry: ${entryPath}`);
|
|
104
123
|
await server.ssrLoadModule(entryPath);
|
|
105
|
-
|
|
106
|
-
if (liveApplicationId) {
|
|
107
|
-
deps.watchApplicationShutdown(onApplicationShutdown(deps, refreshTracker, controller));
|
|
108
|
-
const applicationId = (await deps.getConfiguredApplicationId(root)) ?? liveApplicationId;
|
|
109
|
-
deps.log(`Connected application ID: ${applicationId}`);
|
|
110
|
-
await deps.startMcpClient(applicationId, (id) => server.ssrLoadModule(id));
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
deps.log("Entry did not mount an application - MCP client not started.");
|
|
114
|
-
}
|
|
124
|
+
await attachApplication(deps, server, { refreshTracker, controller });
|
|
115
125
|
deps.log("HMR enabled - watching for changes...");
|
|
116
126
|
},
|
|
117
127
|
});
|
package/dist/dev/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/dev/runner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InlineConfig, Plugin } from \"vite\";\nimport { error } from \"@gtkx/utils\";\nimport { createRefreshTracker, type RefreshTracker } from \"./refresh-tracker.js\";\nimport { RESTART_EXIT_CODE } from \"./supervisor.js\";\nimport { createDevServerConfig, type DevServer } from \"./vite-dev-server.js\";\n\ntype DevRunnerDeps = {\n createServer(config: InlineConfig): Promise<DevServer>;\n waitForApplicationId(timeoutMs: number): Promise<string | null>;\n getConfiguredApplicationId(root: string): Promise<string | undefined>;\n startMcpClient(\n applicationId: string,\n loadAppModule: (id: string) => Promise<Record<string, unknown>>,\n ): Promise<unknown>;\n stopMcpClient(): void;\n watchApplicationShutdown(onShutdown: () => void): void;\n installShutdownHandlers(onSignal: () => void | Promise<void>): void;\n quitDefaultApplication(): void;\n performRefresh: () => void;\n isRefreshBoundary(module: Record<string, unknown>): boolean;\n plugins(): Plugin[];\n log(message: string): void;\n exit(code: number): never;\n};\n\ntype DevRunner = {\n run(entryPath: string): Promise<void>;\n};\n\ntype ShutdownController = {\n isShuttingDown: () => boolean;\n shutdown: (quitApplication: () => void) => Promise<void>;\n};\n\nconst APPLICATION_MOUNT_TIMEOUT_MS = 10_000;\n\nconst requestRestart = async (server: DevServer, deps: DevRunnerDeps): Promise<never> => {\n deps.log(\"Full restart (process restart)\");\n await server.close();\n\n return deps.exit(RESTART_EXIT_CODE);\n};\n\nconst handleFileChange = async (server: DevServer, deps: DevRunnerDeps, changedPath: string): Promise<void> => {\n const module = server.moduleGraph.getModuleById(changedPath);\n\n if (!module) {\n return;\n }\n\n deps.log(`File changed: ${changedPath}`);\n const loadedExports = module.ssrModule;\n\n if (loadedExports && !deps.isRefreshBoundary(loadedExports)) {\n await requestRestart(server, deps);\n\n return;\n }\n\n server.moduleGraph.invalidateModule(module);\n\n for (const importer of module.importers) {\n server.moduleGraph.invalidateModule(importer);\n }\n\n const newMod = await server.ssrLoadModule(changedPath);\n\n if (deps.isRefreshBoundary(newMod)) {\n deps.log(\"Running Fast Refresh...\");\n deps.performRefresh();\n deps.log(\"Fast Refresh complete\");\n\n return;\n }\n\n await requestRestart(server, deps);\n};\n\nconst createShutdownController = (server: DevServer, deps: DevRunnerDeps): ShutdownController => {\n let isShuttingDown = false;\n\n return {\n isShuttingDown: () => isShuttingDown,\n shutdown: async (quitApplication: () => void): Promise<void> => {\n if (isShuttingDown) {\n return;\n }\n\n isShuttingDown = true;\n quitApplication();\n deps.stopMcpClient();\n await server.close();\n },\n };\n};\n\nconst reloadChangedFile = async (server: DevServer, deps: DevRunnerDeps, changedPath: string): Promise<void> => {\n try {\n await handleFileChange(server, deps, changedPath);\n } catch (error_) {\n error(\"Hot reload failed:\", error_);\n }\n};\n\nconst onFileChange =\n (server: DevServer, deps: DevRunnerDeps, controller: ShutdownController): ((changedPath: string) => void) =>\n (changedPath) => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n void reloadChangedFile(server, deps, changedPath);\n };\n\nconst onShutdownSignal =\n (deps: DevRunnerDeps, controller: ShutdownController): (() => Promise<void>) =>\n async () => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n deps.log(\"Received shutdown signal - stopping dev runner...\");\n\n await controller.shutdown(() => {\n deps.quitDefaultApplication();\n });\n };\n\nconst closeAndExit = async (deps: DevRunnerDeps, controller: ShutdownController): Promise<never> => {\n try {\n await controller.shutdown((): void => undefined);\n } catch (error_) {\n error(\"Error closing server:\", error_);\n\n return deps.exit(1);\n }\n\n return deps.exit(0);\n};\n\nconst onApplicationShutdown =\n (deps: DevRunnerDeps, refreshTracker: RefreshTracker, controller: ShutdownController): (() => void) =>\n () => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n if (refreshTracker.isRefreshing()) {\n deps.log(\"Application unmounted during Fast Refresh - restarting dev runner...\");\n\n return deps.exit(RESTART_EXIT_CODE);\n }\n\n deps.log(\"Application quit - stopping dev runner...\");\n void closeAndExit(deps, controller);\n };\n\nconst createDevRunner = (deps: DevRunnerDeps): DevRunner => ({\n async run(entryPath: string): Promise<void> {\n const root = process.cwd();\n const server = await deps.createServer(createDevServerConfig(root, deps.plugins()));\n const refreshTracker = createRefreshTracker(deps.performRefresh);\n const refreshTrackingDeps: DevRunnerDeps = { ...deps, performRefresh: refreshTracker.performRefresh };\n const controller = createShutdownController(server, deps);\n deps.installShutdownHandlers(onShutdownSignal(deps, controller));\n server.watcher.on(\"change\", onFileChange(server, refreshTrackingDeps, controller));\n deps.log(`Loading entry: ${entryPath}`);\n await server.ssrLoadModule(entryPath);\n const liveApplicationId = await deps.waitForApplicationId(APPLICATION_MOUNT_TIMEOUT_MS);\n\n if (liveApplicationId) {\n deps.watchApplicationShutdown(onApplicationShutdown(deps, refreshTracker, controller));\n const applicationId = (await deps.getConfiguredApplicationId(root)) ?? liveApplicationId;\n deps.log(`Connected application ID: ${applicationId}`);\n await deps.startMcpClient(applicationId, (id) => server.ssrLoadModule(id));\n } else {\n deps.log(\"Entry did not mount an application - MCP client not started.\");\n }\n\n deps.log(\"HMR enabled - watching for changes...\");\n },\n});\n\nexport type { DevServer } from \"./vite-dev-server.js\";\nexport { createDevRunner, type DevRunnerDeps };\n"]}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/dev/runner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InlineConfig, Plugin } from \"vite\";\nimport { error } from \"@gtkx/utils\";\nimport { createRefreshTracker, type RefreshTracker } from \"./refresh-tracker.js\";\nimport { RESTART_EXIT_CODE } from \"./supervisor.js\";\nimport { createDevServerConfig, type DevServer } from \"./vite-dev-server.js\";\n\ntype DevRunnerDeps = {\n createServer(config: InlineConfig): Promise<DevServer>;\n waitForApplicationId(timeoutMs: number): Promise<string | null>;\n getConfiguredApplicationId(root: string): Promise<string | undefined>;\n startMcpClient(\n applicationId: string,\n loadAppModule: (id: string) => Promise<Record<string, unknown>>,\n ): Promise<unknown>;\n stopMcpClient(): void;\n watchApplicationShutdown(onShutdown: () => void): void;\n isApplicationRegistered(): boolean;\n installShutdownHandlers(onSignal: () => void | Promise<void>): void;\n quitDefaultApplication(): void;\n performRefresh: () => void;\n isRefreshBoundary(module: Record<string, unknown>): boolean;\n plugins(): Plugin[];\n log(message: string): void;\n exit(code: number): never;\n};\n\ntype DevRunner = {\n run(entryPath: string): Promise<void>;\n};\n\ntype ShutdownController = {\n isShuttingDown: () => boolean;\n shutdown: (quitApplication: () => void) => Promise<void>;\n};\n\nconst APPLICATION_MOUNT_TIMEOUT_MS = 10_000;\n\nconst requestRestart = async (server: DevServer, deps: DevRunnerDeps): Promise<never> => {\n deps.log(\"Full restart (process restart)\");\n await server.close();\n\n return deps.exit(RESTART_EXIT_CODE);\n};\n\nconst handleFileChange = async (server: DevServer, deps: DevRunnerDeps, changedPath: string): Promise<void> => {\n const module = server.moduleGraph.getModuleById(changedPath);\n\n if (!module) {\n return;\n }\n\n deps.log(`File changed: ${changedPath}`);\n const loadedExports = module.ssrModule;\n\n if (loadedExports && !deps.isRefreshBoundary(loadedExports)) {\n await requestRestart(server, deps);\n\n return;\n }\n\n server.moduleGraph.invalidateModule(module);\n\n for (const importer of module.importers) {\n server.moduleGraph.invalidateModule(importer);\n }\n\n const newMod = await server.ssrLoadModule(changedPath);\n\n if (deps.isRefreshBoundary(newMod)) {\n deps.log(\"Running Fast Refresh...\");\n deps.performRefresh();\n deps.log(\"Fast Refresh complete\");\n\n return;\n }\n\n await requestRestart(server, deps);\n};\n\nconst createShutdownController = (server: DevServer, deps: DevRunnerDeps): ShutdownController => {\n let isShuttingDown = false;\n\n return {\n isShuttingDown: () => isShuttingDown,\n shutdown: async (quitApplication: () => void): Promise<void> => {\n if (isShuttingDown) {\n return;\n }\n\n isShuttingDown = true;\n quitApplication();\n deps.stopMcpClient();\n await server.close();\n },\n };\n};\n\nconst reloadChangedFile = async (server: DevServer, deps: DevRunnerDeps, changedPath: string): Promise<void> => {\n try {\n await handleFileChange(server, deps, changedPath);\n } catch (error_) {\n error(\"Hot reload failed:\", error_);\n }\n};\n\nconst onFileChange =\n (server: DevServer, deps: DevRunnerDeps, controller: ShutdownController): ((changedPath: string) => void) =>\n (changedPath) => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n void reloadChangedFile(server, deps, changedPath);\n };\n\nconst onShutdownSignal =\n (deps: DevRunnerDeps, controller: ShutdownController): (() => Promise<void>) =>\n async () => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n deps.log(\"Received shutdown signal - stopping dev runner...\");\n\n await controller.shutdown(() => {\n deps.quitDefaultApplication();\n });\n };\n\nconst closeAndExit = async (\n deps: DevRunnerDeps,\n controller: ShutdownController,\n code = 0,\n): Promise<never> => {\n try {\n await controller.shutdown((): void => undefined);\n } catch (error_) {\n error(\"Error closing server:\", error_);\n\n return deps.exit(1);\n }\n\n return deps.exit(code);\n};\n\nconst onApplicationShutdown =\n (deps: DevRunnerDeps, refreshTracker: RefreshTracker, controller: ShutdownController): (() => void) =>\n () => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n if (refreshTracker.isRefreshing()) {\n deps.log(\"Application unmounted during Fast Refresh - restarting dev runner...\");\n\n return deps.exit(RESTART_EXIT_CODE);\n }\n\n deps.log(\"Application quit - stopping dev runner...\");\n void closeAndExit(deps, controller);\n };\n\nconst refusedExitCode = (): number => (process.exitCode === undefined ? 1 : Number(process.exitCode));\n\nconst connectApplication = async (\n deps: DevRunnerDeps,\n server: DevServer,\n liveApplicationId: string,\n tracked: { refreshTracker: RefreshTracker; controller: ShutdownController },\n): Promise<void> => {\n deps.watchApplicationShutdown(onApplicationShutdown(deps, tracked.refreshTracker, tracked.controller));\n const applicationId = (await deps.getConfiguredApplicationId(process.cwd())) ?? liveApplicationId;\n deps.log(`Connected application ID: ${applicationId}`);\n await deps.startMcpClient(applicationId, (id) => server.ssrLoadModule(id));\n};\n\nconst attachApplication = async (\n deps: DevRunnerDeps,\n server: DevServer,\n tracked: { refreshTracker: RefreshTracker; controller: ShutdownController },\n): Promise<void> => {\n const liveApplicationId = await deps.waitForApplicationId(APPLICATION_MOUNT_TIMEOUT_MS);\n\n if (liveApplicationId === null) {\n deps.log(\"Entry did not mount an application - MCP client not started.\");\n\n return;\n }\n\n if (!deps.isApplicationRegistered()) {\n deps.log(\"Application refused its command line - stopping dev runner...\");\n\n return closeAndExit(deps, tracked.controller, refusedExitCode());\n }\n\n await connectApplication(deps, server, liveApplicationId, tracked);\n};\n\nconst createDevRunner = (deps: DevRunnerDeps): DevRunner => ({\n async run(entryPath: string): Promise<void> {\n const root = process.cwd();\n const server = await deps.createServer(createDevServerConfig(root, deps.plugins()));\n const refreshTracker = createRefreshTracker(deps.performRefresh);\n const refreshTrackingDeps: DevRunnerDeps = { ...deps, performRefresh: refreshTracker.performRefresh };\n const controller = createShutdownController(server, deps);\n deps.installShutdownHandlers(onShutdownSignal(deps, controller));\n server.watcher.on(\"change\", onFileChange(server, refreshTrackingDeps, controller));\n deps.log(`Loading entry: ${entryPath}`);\n await server.ssrLoadModule(entryPath);\n await attachApplication(deps, server, { refreshTracker, controller });\n deps.log(\"HMR enabled - watching for changes...\");\n },\n});\n\nexport type { DevServer } from \"./vite-dev-server.js\";\nexport { createDevRunner, type DevRunnerDeps };\n"]}
|