@gtkx/cli 1.5.0 → 2.0.0-beta.1
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/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/codegen/freshness.d.ts.map +1 -1
- package/dist/codegen/freshness.js +45 -15
- package/dist/codegen/freshness.js.map +1 -1
- package/dist/codegen/reference.d.ts +17 -0
- package/dist/codegen/reference.d.ts.map +1 -0
- package/dist/codegen/reference.js +31 -0
- package/dist/codegen/reference.js.map +1 -0
- package/dist/codegen/report.d.ts.map +1 -1
- package/dist/codegen/report.js +18 -15
- package/dist/codegen/report.js.map +1 -1
- package/dist/codegen/run-codegen.d.ts +5 -5
- package/dist/codegen/run-codegen.d.ts.map +1 -1
- package/dist/codegen/run-codegen.js +24 -59
- package/dist/codegen/run-codegen.js.map +1 -1
- package/dist/codegen/store-resolver.d.ts +0 -1
- package/dist/codegen/store-resolver.d.ts.map +1 -1
- package/dist/codegen/store-resolver.js +8 -17
- package/dist/codegen/store-resolver.js.map +1 -1
- package/dist/commands/docs.d.ts.map +1 -1
- package/dist/commands/docs.js +6 -22
- package/dist/commands/docs.js.map +1 -1
- package/dist/commands/mcp.d.ts +13 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +68 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/deploy/freedesktop/copyright.d.ts.map +1 -1
- package/dist/deploy/freedesktop/copyright.js +2 -13
- package/dist/deploy/freedesktop/copyright.js.map +1 -1
- package/dist/deploy/freedesktop/xml.d.ts.map +1 -1
- package/dist/deploy/freedesktop/xml.js +21 -25
- package/dist/deploy/freedesktop/xml.js.map +1 -1
- package/dist/deploy/node-runtime/license.d.ts.map +1 -1
- package/dist/deploy/node-runtime/license.js +2 -9
- package/dist/deploy/node-runtime/license.js.map +1 -1
- package/dist/deploy/notices/gtkx.js +1 -1
- package/dist/deploy/notices/gtkx.js.map +1 -1
- package/dist/deploy/notices/libraries.d.ts.map +1 -1
- package/dist/deploy/notices/libraries.js +2 -1
- package/dist/deploy/notices/libraries.js.map +1 -1
- package/dist/deploy/notices/packages.d.ts.map +1 -1
- package/dist/deploy/notices/packages.js +3 -10
- package/dist/deploy/notices/packages.js.map +1 -1
- package/dist/deploy/payload/copy-tree.d.ts.map +1 -1
- package/dist/deploy/payload/copy-tree.js +3 -3
- package/dist/deploy/payload/copy-tree.js.map +1 -1
- package/dist/deploy/payload/stage.d.ts.map +1 -1
- package/dist/deploy/payload/stage.js +1 -3
- package/dist/deploy/payload/stage.js.map +1 -1
- package/dist/deploy/settings/build-manifest.d.ts.map +1 -1
- package/dist/deploy/settings/build-manifest.js +4 -15
- package/dist/deploy/settings/build-manifest.js.map +1 -1
- package/dist/deploy/settings/libraries.d.ts.map +1 -1
- package/dist/deploy/settings/libraries.js +2 -21
- package/dist/deploy/settings/libraries.js.map +1 -1
- package/dist/deploy/settings/paths.d.ts +1 -2
- package/dist/deploy/settings/paths.d.ts.map +1 -1
- package/dist/deploy/settings/paths.js +5 -15
- package/dist/deploy/settings/paths.js.map +1 -1
- package/dist/deploy/settings/screenshots.d.ts.map +1 -1
- package/dist/deploy/settings/screenshots.js +6 -31
- package/dist/deploy/settings/screenshots.js.map +1 -1
- package/dist/deploy/targets/flatpak-pnpm.js +4 -4
- package/dist/deploy/targets/flatpak-pnpm.js.map +1 -1
- package/dist/deploy/targets/flatpak-source.d.ts.map +1 -1
- package/dist/deploy/targets/flatpak-source.js +4 -4
- package/dist/deploy/targets/flatpak-source.js.map +1 -1
- package/dist/deploy/targets/flatpak-sources.js +1 -1
- package/dist/deploy/targets/flatpak-sources.js.map +1 -1
- package/dist/deploy/tools.d.ts.map +1 -1
- package/dist/deploy/tools.js +1 -3
- package/dist/deploy/tools.js.map +1 -1
- package/dist/dev/runner-main.js +1 -1
- package/dist/dev/runner-main.js.map +1 -1
- package/dist/dev/schema-dir.d.ts +1 -1
- package/dist/dev/schema-dir.d.ts.map +1 -1
- package/dist/dev/schema-dir.js +2 -4
- package/dist/dev/schema-dir.js.map +1 -1
- package/dist/i18n/catalogs.d.ts.map +1 -1
- package/dist/i18n/catalogs.js +2 -1
- package/dist/i18n/catalogs.js.map +1 -1
- package/dist/i18n/metadata-templates.d.ts.map +1 -1
- package/dist/i18n/metadata-templates.js +2 -1
- package/dist/i18n/metadata-templates.js.map +1 -1
- package/dist/i18n/source-messages.d.ts +3 -21
- package/dist/i18n/source-messages.d.ts.map +1 -1
- package/dist/i18n/source-messages.js +66 -85
- package/dist/i18n/source-messages.js.map +1 -1
- package/dist/i18n/types.d.ts +6 -7
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/i18n/types.js +83 -96
- package/dist/i18n/types.js.map +1 -1
- package/dist/internal/agent-rules.d.ts +7 -0
- package/dist/internal/agent-rules.d.ts.map +1 -0
- package/dist/internal/agent-rules.js +106 -0
- package/dist/internal/agent-rules.js.map +1 -0
- package/dist/internal/docs-elements.d.ts +8 -0
- package/dist/internal/docs-elements.d.ts.map +1 -0
- package/dist/internal/docs-elements.js +12 -0
- package/dist/internal/docs-elements.js.map +1 -0
- package/dist/internal/icon-path.d.ts.map +1 -1
- package/dist/internal/icon-path.js +5 -16
- package/dist/internal/icon-path.js.map +1 -1
- package/dist/internal/source-imports.d.ts.map +1 -1
- package/dist/internal/source-imports.js +10 -42
- package/dist/internal/source-imports.js.map +1 -1
- package/dist/mcp/client-config.d.ts +22 -0
- package/dist/mcp/client-config.d.ts.map +1 -0
- package/dist/mcp/client-config.js +94 -0
- package/dist/mcp/client-config.js.map +1 -0
- package/dist/settings/render.d.ts +0 -1
- package/dist/settings/render.d.ts.map +1 -1
- package/dist/settings/render.js +1 -11
- package/dist/settings/render.js.map +1 -1
- package/dist/settings/schema.d.ts +2 -2
- package/dist/settings/schema.d.ts.map +1 -1
- package/dist/settings/schema.js +21 -62
- package/dist/settings/schema.js.map +1 -1
- package/dist/vite-plugins/asset-imports.d.ts +1 -2
- package/dist/vite-plugins/asset-imports.d.ts.map +1 -1
- package/dist/vite-plugins/asset-imports.js +19 -32
- package/dist/vite-plugins/asset-imports.js.map +1 -1
- package/dist/vite-plugins/asset-specifier.d.ts +1 -3
- package/dist/vite-plugins/asset-specifier.d.ts.map +1 -1
- package/dist/vite-plugins/asset-specifier.js +1 -4
- package/dist/vite-plugins/asset-specifier.js.map +1 -1
- package/dist/vite-plugins/i18n.d.ts.map +1 -1
- package/dist/vite-plugins/i18n.js +2 -1
- package/dist/vite-plugins/i18n.js.map +1 -1
- package/dist/vite-plugins/index.js +2 -2
- package/dist/vite-plugins/index.js.map +1 -1
- package/dist/vite-plugins/resources.d.ts.map +1 -1
- package/dist/vite-plugins/resources.js +31 -96
- package/dist/vite-plugins/resources.js.map +1 -1
- package/dist/vite-plugins/settings-worker-env.d.ts.map +1 -1
- package/dist/vite-plugins/settings-worker-env.js +1 -3
- package/dist/vite-plugins/settings-worker-env.js.map +1 -1
- package/dist/vite-plugins/settings.d.ts +1 -2
- package/dist/vite-plugins/settings.d.ts.map +1 -1
- package/dist/vite-plugins/settings.js +8 -13
- package/dist/vite-plugins/settings.js.map +1 -1
- package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
- package/dist/vite-plugins/undeclared-library.js +10 -13
- package/dist/vite-plugins/undeclared-library.js.map +1 -1
- package/dist/vite-plugins/worker.d.ts.map +1 -1
- package/dist/vite-plugins/worker.js +0 -1
- package/dist/vite-plugins/worker.js.map +1 -1
- package/package.json +21 -14
- package/src/cli.ts +5 -0
- package/src/codegen/freshness.ts +66 -16
- package/src/codegen/reference.ts +52 -0
- package/src/codegen/report.ts +16 -17
- package/src/codegen/run-codegen.ts +31 -91
- package/src/codegen/store-resolver.ts +8 -24
- package/src/commands/docs.ts +6 -36
- package/src/commands/mcp.ts +81 -0
- package/src/deploy/freedesktop/copyright.ts +2 -14
- package/src/deploy/freedesktop/xml.ts +24 -32
- package/src/deploy/node-runtime/license.ts +2 -8
- package/src/deploy/notices/gtkx.ts +1 -1
- package/src/deploy/notices/libraries.ts +2 -1
- package/src/deploy/notices/packages.ts +3 -11
- package/src/deploy/payload/copy-tree.ts +3 -4
- package/src/deploy/payload/stage.ts +2 -6
- package/src/deploy/settings/build-manifest.ts +4 -16
- package/src/deploy/settings/libraries.ts +1 -25
- package/src/deploy/settings/paths.ts +6 -16
- package/src/deploy/settings/screenshots.ts +8 -46
- package/src/deploy/targets/flatpak-pnpm.ts +4 -4
- package/src/deploy/targets/flatpak-source.ts +4 -4
- package/src/deploy/targets/flatpak-sources.ts +1 -1
- package/src/deploy/tools.ts +1 -3
- package/src/dev/runner-main.ts +1 -1
- package/src/dev/schema-dir.ts +2 -4
- package/src/i18n/catalogs.ts +2 -1
- package/src/i18n/metadata-templates.ts +2 -1
- package/src/i18n/source-messages.ts +77 -115
- package/src/i18n/types.ts +97 -131
- package/src/internal/agent-rules.ts +135 -0
- package/src/internal/docs-elements.ts +21 -0
- package/src/internal/icon-path.ts +6 -19
- package/src/internal/source-imports.ts +14 -50
- package/src/mcp/client-config.ts +130 -0
- package/src/settings/render.ts +1 -13
- package/src/settings/schema.ts +19 -81
- package/src/vite-plugins/asset-imports.ts +20 -44
- package/src/vite-plugins/asset-specifier.ts +0 -5
- package/src/vite-plugins/i18n.ts +2 -1
- package/src/vite-plugins/index.ts +2 -2
- package/src/vite-plugins/resources.ts +36 -139
- package/src/vite-plugins/settings-worker-env.ts +1 -3
- package/src/vite-plugins/settings.ts +11 -19
- package/src/vite-plugins/undeclared-library.ts +14 -20
- package/src/vite-plugins/worker.ts +0 -1
- package/dist/i18n/binding-extractor.d.ts +0 -30
- package/dist/i18n/binding-extractor.d.ts.map +0 -1
- package/dist/i18n/binding-extractor.js +0 -1324
- package/dist/i18n/binding-extractor.js.map +0 -1
- package/dist/i18n/extractor-plugin.d.ts +0 -8
- package/dist/i18n/extractor-plugin.d.ts.map +0 -1
- package/dist/i18n/extractor-plugin.js +0 -247
- package/dist/i18n/extractor-plugin.js.map +0 -1
- package/dist/internal/data-dir.d.ts +0 -4
- package/dist/internal/data-dir.d.ts.map +0 -1
- package/dist/internal/data-dir.js +0 -52
- package/dist/internal/data-dir.js.map +0 -1
- package/src/i18n/binding-extractor.ts +0 -1969
- package/src/i18n/extractor-plugin.ts +0 -413
- package/src/internal/data-dir.ts +0 -70
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<p align="center">
|
|
14
14
|
<a href="https://www.npmjs.com/package/create-gtkx"><img src="https://img.shields.io/npm/v/create-gtkx?color=cb3837&logo=npm&label=create-gtkx" alt="npm version" /></a>
|
|
15
15
|
<a href="https://www.npmjs.com/package/create-gtkx"><img src="https://img.shields.io/npm/dm/create-gtkx?color=cb3837&logo=npm&label=downloads" alt="npm downloads" /></a>
|
|
16
|
-
<img src="https://img.shields.io/badge/node-%E2%89%
|
|
16
|
+
<img src="https://img.shields.io/badge/node-%E2%89%A526.7-339933?logo=node.js&logoColor=white" alt="Node >= 26.7" />
|
|
17
17
|
<a href="https://github.com/gtkx-org/gtkx/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MPL--2.0-blue.svg" alt="License: MPL-2.0" /></a>
|
|
18
18
|
<a href="https://github.com/gtkx-org/gtkx/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/gtkx-org/gtkx/ci.yml?branch=main&logo=github&label=CI" alt="CI status" /></a>
|
|
19
19
|
<img src="https://img.shields.io/badge/TypeScript-strict-3178c6?logo=typescript&logoColor=white" alt="TypeScript" />
|
|
@@ -116,7 +116,7 @@ At runtime, the native Rust core calls straight into the system GTK4, Adwaita, a
|
|
|
116
116
|
|
|
117
117
|
## Quick start
|
|
118
118
|
|
|
119
|
-
GTKX is Linux-only and needs Node.js
|
|
119
|
+
GTKX is Linux-only and needs Node.js 26.7 or later. See [Requirements](#requirements).
|
|
120
120
|
|
|
121
121
|
Scaffold a new app with the `create-gtkx` initializer:
|
|
122
122
|
|
|
@@ -145,8 +145,8 @@ 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)
|
|
149
|
-
- Node.js
|
|
148
|
+
- Linux with the GTK4 (4.20 or later), Adwaita (1.8 or later), and GLib development libraries
|
|
149
|
+
- Node.js 26.7 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.
|
|
152
152
|
|
|
@@ -167,7 +167,7 @@ GTKX is stable and ready for production use.
|
|
|
167
167
|
|
|
168
168
|
## Contributing
|
|
169
169
|
|
|
170
|
-
Contributions are welcome. See [CONTRIBUTING.md](https://github.com/gtkx-org/gtkx/blob/main/CONTRIBUTING.md), the [Code of Conduct](https://github.com/gtkx-org/gtkx/blob/main/CODE_OF_CONDUCT.md), and the [security policy](https://github.com/gtkx-org/gtkx/blob/main/SECURITY.md). Building the repo needs Node.js
|
|
170
|
+
Contributions are welcome. See [CONTRIBUTING.md](https://github.com/gtkx-org/gtkx/blob/main/CONTRIBUTING.md), the [Code of Conduct](https://github.com/gtkx-org/gtkx/blob/main/CODE_OF_CONDUCT.md), and the [security policy](https://github.com/gtkx-org/gtkx/blob/main/SECURITY.md). Building the repo needs Node.js 26.7 or later, pnpm, and a Rust toolchain.
|
|
171
171
|
|
|
172
172
|
## License
|
|
173
173
|
|
package/dist/cli.js
CHANGED
|
@@ -31,6 +31,10 @@ const main = defineCommand({
|
|
|
31
31
|
const { docs } = await import("./commands/docs.js");
|
|
32
32
|
return withErrorBoundary(docs);
|
|
33
33
|
},
|
|
34
|
+
mcp: async () => {
|
|
35
|
+
const { mcp } = await import("./commands/mcp.js");
|
|
36
|
+
return withErrorBoundary(mcp);
|
|
37
|
+
},
|
|
34
38
|
create: async () => {
|
|
35
39
|
const { scaffoldCommand } = await import("create-gtkx");
|
|
36
40
|
return withErrorBoundary(scaffoldCommand);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,eAAe,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;AACxC,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,MAAM,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAExD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACrC,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 { defineCommand, runMain } from \"citty\";\nimport packageManifest from \"../package.json\" with { type: \"json\" };\nimport { splitApplicationArgs } from \"./internal/application-args.js\";\nimport { withErrorBoundary } from \"./internal/errors.js\";\n\nconst version = packageManifest.version;\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 deploy: async () => {\n const { deploy } = await import(\"./commands/deploy.js\");\n\n return withErrorBoundary(deploy);\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
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,eAAe,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;AACxC,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,MAAM,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAExD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACrC,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,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,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 { defineCommand, runMain } from \"citty\";\nimport packageManifest from \"../package.json\" with { type: \"json\" };\nimport { splitApplicationArgs } from \"./internal/application-args.js\";\nimport { withErrorBoundary } from \"./internal/errors.js\";\n\nconst version = packageManifest.version;\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 deploy: async () => {\n const { deploy } = await import(\"./commands/deploy.js\");\n\n return withErrorBoundary(deploy);\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 mcp: async () => {\n const { mcp } = await import(\"./commands/mcp.js\");\n\n return withErrorBoundary(mcp);\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;
|
|
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;AAK7E,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACvB,CAAC;AAKF,QAAA,MAAM,oBAAoB,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,aAM3D,CAAC;AA6EF,QAAA,MAAM,cAAc,GAAI,QAAQ,aAAa,KAAG,OAM/C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,CAAC"}
|
|
@@ -1,34 +1,64 @@
|
|
|
1
1
|
import { resolveGirPath, resolveLibraries } from "@gtkx/codegen";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
import { join } from "node:path";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { basename, dirname, join } from "node:path";
|
|
4
4
|
import { resolveCodegenStore } from "./store-resolver.js";
|
|
5
|
-
const
|
|
5
|
+
const PACKAGE_EXPORT = "./package.json";
|
|
6
|
+
const JSX_REQUIRED_EXPORTS = [PACKAGE_EXPORT, "./metadata", "./gtk", "./adw"];
|
|
6
7
|
const resolveCodegenInputs = (cwd, config) => {
|
|
7
8
|
const girPath = resolveGirPath(config.girPath);
|
|
8
|
-
const libraries = resolveLibraries(config.libraries
|
|
9
|
+
const libraries = resolveLibraries(config.libraries);
|
|
9
10
|
const store = resolveCodegenStore(cwd);
|
|
10
11
|
return { girPath, libraries, store };
|
|
11
12
|
};
|
|
12
|
-
const
|
|
13
|
+
const namespaceExport = (library) => {
|
|
13
14
|
const separator = library.indexOf("-");
|
|
14
15
|
const namespace = (separator === -1 ? library : library.slice(0, separator)).toLowerCase();
|
|
15
|
-
return
|
|
16
|
+
return `./${namespace}`;
|
|
16
17
|
};
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
if (
|
|
20
|
-
return
|
|
18
|
+
const targetFiles = (target) => typeof target === "string" ? [target] : Object.values(target).flatMap((nested) => targetFiles(nested));
|
|
19
|
+
const indexExtension = (target) => {
|
|
20
|
+
if (target.endsWith("/index.d.ts")) {
|
|
21
|
+
return ".d.ts";
|
|
22
|
+
}
|
|
23
|
+
return target.endsWith("/index.js") ? ".js" : undefined;
|
|
24
|
+
};
|
|
25
|
+
const implementationFile = (target) => {
|
|
26
|
+
const extension = indexExtension(target);
|
|
27
|
+
if (extension === undefined) {
|
|
28
|
+
return undefined;
|
|
21
29
|
}
|
|
22
|
-
|
|
30
|
+
const directory = dirname(target);
|
|
31
|
+
return join(directory, `${basename(directory)}${extension}`);
|
|
32
|
+
};
|
|
33
|
+
const generatedFiles = (exports) => Object.values(exports)
|
|
34
|
+
.flatMap((target) => targetFiles(target))
|
|
35
|
+
.flatMap((target) => {
|
|
36
|
+
const implementation = implementationFile(target);
|
|
37
|
+
return implementation === undefined ? [target] : [target, implementation];
|
|
38
|
+
});
|
|
39
|
+
const hasStoreExports = (storeDir, required, forbidden = []) => {
|
|
40
|
+
const manifestPath = join(storeDir, "package.json");
|
|
41
|
+
if (!existsSync(manifestPath)) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
|
|
45
|
+
const exports = manifest.exports;
|
|
46
|
+
if (exports === undefined || required.some((key) => !Object.hasOwn(exports, key)) ||
|
|
47
|
+
forbidden.some((key) => Object.hasOwn(exports, key))) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
const files = generatedFiles(exports);
|
|
51
|
+
return files.length > 0 && files.every((file) => existsSync(join(storeDir, file)));
|
|
52
|
+
};
|
|
53
|
+
const isGiStoreStale = (store, libraries) => {
|
|
54
|
+
const required = [PACKAGE_EXPORT, ...libraries.map((library) => namespaceExport(library))];
|
|
55
|
+
return !hasStoreExports(store.giStoreDir, required);
|
|
23
56
|
};
|
|
24
57
|
const isReactStoreStale = (store) => {
|
|
25
58
|
if (store.react === null) {
|
|
26
59
|
return false;
|
|
27
60
|
}
|
|
28
|
-
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
return REACT_GENERATED_MODULES.some((module) => !existsSync(join(store.jsxStoreDir, module)));
|
|
61
|
+
return !hasStoreExports(store.jsxStoreDir, JSX_REQUIRED_EXPORTS, ["."]);
|
|
32
62
|
};
|
|
33
63
|
const isCodegenStale = (inputs) => {
|
|
34
64
|
try {
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Config } from \"@gtkx/config\";\nimport { resolveGirPath, resolveLibraries } from \"@gtkx/codegen\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { basename, dirname, join } from \"node:path\";\nimport { type CodegenStore, resolveCodegenStore } from \"./store-resolver.js\";\n\ntype ExportTarget = string | { [condition: string]: ExportTarget };\ntype StoreExports = Record<string, ExportTarget>;\n\ntype CodegenInputs = {\n girPath: string[];\n libraries: string[];\n store: CodegenStore;\n};\n\nconst PACKAGE_EXPORT = \"./package.json\";\nconst JSX_REQUIRED_EXPORTS = [PACKAGE_EXPORT, \"./metadata\", \"./gtk\", \"./adw\"];\n\nconst resolveCodegenInputs = (cwd: string, config: Config): CodegenInputs => {\n const girPath = resolveGirPath(config.girPath);\n const libraries = resolveLibraries(config.libraries);\n const store = resolveCodegenStore(cwd);\n\n return { girPath, libraries, store };\n};\n\nconst namespaceExport = (library: string): string => {\n const separator = library.indexOf(\"-\");\n const namespace = (separator === -1 ? library : library.slice(0, separator)).toLowerCase();\n\n return `./${namespace}`;\n};\n\nconst targetFiles = (target: ExportTarget): string[] =>\n typeof target === \"string\" ? [target] : Object.values(target).flatMap((nested) => targetFiles(nested));\n\nconst indexExtension = (target: string): string | undefined => {\n if (target.endsWith(\"/index.d.ts\")) {\n return \".d.ts\";\n }\n\n return target.endsWith(\"/index.js\") ? \".js\" : undefined;\n};\n\nconst implementationFile = (target: string): string | undefined => {\n const extension = indexExtension(target);\n\n if (extension === undefined) {\n return undefined;\n }\n\n const directory = dirname(target);\n\n return join(directory, `${basename(directory)}${extension}`);\n};\n\nconst generatedFiles = (exports: StoreExports): string[] =>\n Object.values(exports)\n .flatMap((target) => targetFiles(target))\n .flatMap((target) => {\n const implementation = implementationFile(target);\n\n return implementation === undefined ? [target] : [target, implementation];\n });\n\nconst hasStoreExports = (storeDir: string, required: string[], forbidden: string[] = []): boolean => {\n const manifestPath = join(storeDir, \"package.json\");\n\n if (!existsSync(manifestPath)) {\n return false;\n }\n\n const manifest = JSON.parse(readFileSync(manifestPath, \"utf8\")) as {\n exports?: StoreExports;\n };\n const exports = manifest.exports;\n\n if (exports === undefined || required.some((key) => !Object.hasOwn(exports, key)) ||\n forbidden.some((key) => Object.hasOwn(exports, key))) {\n return false;\n }\n\n const files = generatedFiles(exports);\n\n return files.length > 0 && files.every((file) => existsSync(join(storeDir, file)));\n};\n\nconst isGiStoreStale = (store: CodegenStore, libraries: string[]): boolean => {\n const required = [PACKAGE_EXPORT, ...libraries.map((library) => namespaceExport(library))];\n\n return !hasStoreExports(store.giStoreDir, required);\n};\n\nconst isReactStoreStale = (store: CodegenStore): boolean => {\n if (store.react === null) {\n return false;\n }\n\n return !hasStoreExports(store.jsxStoreDir, JSX_REQUIRED_EXPORTS, [\".\"]);\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"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Config } from "@gtkx/config";
|
|
2
|
+
type WriteReferenceOptions = {
|
|
3
|
+
root: string;
|
|
4
|
+
config: Config;
|
|
5
|
+
girPath: string[];
|
|
6
|
+
libraries: string[];
|
|
7
|
+
isForced?: boolean;
|
|
8
|
+
};
|
|
9
|
+
type ReferenceResult = {
|
|
10
|
+
isRegenerated: boolean;
|
|
11
|
+
elements: number;
|
|
12
|
+
namespaces: number;
|
|
13
|
+
};
|
|
14
|
+
declare const REFERENCE_PATH = ".gtkx/reference";
|
|
15
|
+
declare const writeReference: (options: WriteReferenceOptions) => Promise<ReferenceResult>;
|
|
16
|
+
export { REFERENCE_PATH, writeReference, type ReferenceResult };
|
|
17
|
+
//# sourceMappingURL=reference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/codegen/reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,KAAK,qBAAqB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,KAAK,eAAe,GAAG;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,cAAc,oBAAoB,CAAC;AAGzC,QAAA,MAAM,cAAc,GAAU,SAAS,qBAAqB,KAAG,OAAO,CAAC,eAAe,CAyBrF,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { mergeOmittedProps } from "@gtkx/codegen";
|
|
2
|
+
import { writeDocs } from "@gtkx/codegen/internal";
|
|
3
|
+
import { isAgentReferenceEnabled, resolveOmittedProps } from "@gtkx/config/internal";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { resolveDocsElements } from "../internal/docs-elements.js";
|
|
6
|
+
const REFERENCE_PATH = ".gtkx/reference";
|
|
7
|
+
const SKIPPED = { isRegenerated: false, elements: 0, namespaces: 0 };
|
|
8
|
+
const writeReference = async (options) => {
|
|
9
|
+
const { root, config, girPath, libraries } = options;
|
|
10
|
+
if (!isAgentReferenceEnabled(config) || girPath.length === 0 || libraries.length === 0) {
|
|
11
|
+
return SKIPPED;
|
|
12
|
+
}
|
|
13
|
+
const builtin = await resolveDocsElements(root);
|
|
14
|
+
const { isRegenerated, namespaces } = writeDocs({
|
|
15
|
+
libraries,
|
|
16
|
+
girPath,
|
|
17
|
+
outDir: join(root, REFERENCE_PATH),
|
|
18
|
+
basePath: REFERENCE_PATH,
|
|
19
|
+
linkStyle: "file",
|
|
20
|
+
props: builtin.props,
|
|
21
|
+
omittedProps: mergeOmittedProps(builtin.omittedProps, resolveOmittedProps(config.elements)),
|
|
22
|
+
isForced: options.isForced === true,
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
isRegenerated,
|
|
26
|
+
elements: namespaces.reduce((total, namespace) => total + namespace.elements.length, 0),
|
|
27
|
+
namespaces: namespaces.length,
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export { REFERENCE_PATH, writeReference };
|
|
31
|
+
//# sourceMappingURL=reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/codegen/reference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAgBnE,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,OAAO,GAAoB,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AAEtF,MAAM,cAAc,GAAG,KAAK,EAAE,OAA8B,EAA4B,EAAE;IACtF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAErD,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrF,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QAC5C,SAAS;QACT,OAAO;QACP,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;QAClC,QAAQ,EAAE,cAAc;QACxB,SAAS,EAAE,MAAM;QACjB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3F,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,IAAI;KACtC,CAAC,CAAC;IAEH,OAAO;QACH,aAAa;QACb,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,UAAU,EAAE,UAAU,CAAC,MAAM;KAChC,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAwB,CAAC","sourcesContent":["import type { Config } from \"@gtkx/config\";\nimport { mergeOmittedProps } from \"@gtkx/codegen\";\nimport { writeDocs } from \"@gtkx/codegen/internal\";\nimport { isAgentReferenceEnabled, resolveOmittedProps } from \"@gtkx/config/internal\";\nimport { join } from \"node:path\";\nimport { resolveDocsElements } from \"../internal/docs-elements.js\";\n\ntype WriteReferenceOptions = {\n root: string;\n config: Config;\n girPath: string[];\n libraries: string[];\n isForced?: boolean;\n};\n\ntype ReferenceResult = {\n isRegenerated: boolean;\n elements: number;\n namespaces: number;\n};\n\nconst REFERENCE_PATH = \".gtkx/reference\";\nconst SKIPPED: ReferenceResult = { isRegenerated: false, elements: 0, namespaces: 0 };\n\nconst writeReference = async (options: WriteReferenceOptions): Promise<ReferenceResult> => {\n const { root, config, girPath, libraries } = options;\n\n if (!isAgentReferenceEnabled(config) || girPath.length === 0 || libraries.length === 0) {\n return SKIPPED;\n }\n\n const builtin = await resolveDocsElements(root);\n\n const { isRegenerated, namespaces } = writeDocs({\n libraries,\n girPath,\n outDir: join(root, REFERENCE_PATH),\n basePath: REFERENCE_PATH,\n linkStyle: \"file\",\n props: builtin.props,\n omittedProps: mergeOmittedProps(builtin.omittedProps, resolveOmittedProps(config.elements)),\n isForced: options.isForced === true,\n });\n\n return {\n isRegenerated,\n elements: namespaces.reduce((total, namespace) => total + namespace.elements.length, 0),\n namespaces: namespaces.length,\n };\n};\n\nexport { REFERENCE_PATH, writeReference, type ReferenceResult };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/codegen/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/codegen/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAmBzD,QAAA,MAAM,mBAAmB,GAAI,QAAQ,gBAAgB,EAAE,SAAS,MAAM,KAAG,MAAM,EAS9E,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
package/dist/codegen/report.js
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
|
+
import { REFERENCE_PATH } from "./reference.js";
|
|
1
2
|
const PREFIX = "codegen: ";
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (result.girPath) {
|
|
11
|
-
details.push(`girPath=${result.girPath.join(":")}`);
|
|
3
|
+
const contextDetails = (result) => [
|
|
4
|
+
`config=${result.configFile}`,
|
|
5
|
+
`libraries=${result.libraries.join(", ")}`,
|
|
6
|
+
`girPath=${result.girPath.join(":")}`,
|
|
7
|
+
];
|
|
8
|
+
const referenceDetails = (result) => {
|
|
9
|
+
if (result.reference?.isRegenerated !== true) {
|
|
10
|
+
return [];
|
|
12
11
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
details
|
|
17
|
-
|
|
12
|
+
return [`${String(result.reference.elements)} reference pages in ${REFERENCE_PATH}`];
|
|
13
|
+
};
|
|
14
|
+
const formatCodegenResult = (result, totalMs) => {
|
|
15
|
+
const details = [
|
|
16
|
+
...contextDetails(result),
|
|
17
|
+
`${String(result.namespaces)} namespaces, ${String(result.intrinsicElements)} intrinsic elements ` +
|
|
18
|
+
`in ${String(result.duration)}ms (total ${String(totalMs)}ms)`,
|
|
19
|
+
...referenceDetails(result),
|
|
20
|
+
];
|
|
18
21
|
return details.map((detail) => PREFIX + detail);
|
|
19
22
|
};
|
|
20
23
|
export { formatCodegenResult };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/codegen/report.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/codegen/report.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,GAAG,WAAW,CAAC;AAE3B,MAAM,cAAc,GAAG,CAAC,MAAwB,EAAY,EAAE,CAAC;IAC3D,UAAU,MAAM,CAAC,UAAU,EAAE;IAC7B,aAAa,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC1C,WAAW,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;CACxC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAAwB,EAAY,EAAE;IAC5D,IAAI,MAAM,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,EAAE,CAAC;IACd,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,MAAwB,EAAE,OAAe,EAAY,EAAE;IAChF,MAAM,OAAO,GAAG;QACZ,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB;YAClG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,KAAK;QAC9D,GAAG,gBAAgB,CAAC,MAAM,CAAC;KAC9B,CAAC;IAEF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import type { RunCodegenResult } from \"./run-codegen.js\";\nimport { REFERENCE_PATH } from \"./reference.js\";\n\nconst PREFIX = \"codegen: \";\n\nconst contextDetails = (result: RunCodegenResult): string[] => [\n `config=${result.configFile}`,\n `libraries=${result.libraries.join(\", \")}`,\n `girPath=${result.girPath.join(\":\")}`,\n];\n\nconst referenceDetails = (result: RunCodegenResult): string[] => {\n if (result.reference?.isRegenerated !== true) {\n return [];\n }\n\n return [`${String(result.reference.elements)} reference pages in ${REFERENCE_PATH}`];\n};\n\nconst formatCodegenResult = (result: RunCodegenResult, totalMs: number): string[] => {\n const details = [\n ...contextDetails(result),\n `${String(result.namespaces)} namespaces, ${String(result.intrinsicElements)} intrinsic elements ` +\n `in ${String(result.duration)}ms (total ${String(totalMs)}ms)`,\n ...referenceDetails(result),\n ];\n\n return details.map((detail) => PREFIX + detail);\n};\n\nexport { formatCodegenResult };\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Config } from "@gtkx/config";
|
|
2
2
|
import { type CodegenInputs } from "./freshness.js";
|
|
3
|
+
import { type ReferenceResult } from "./reference.js";
|
|
3
4
|
import { type CodegenContext } from "./store-resolver.js";
|
|
4
5
|
type RunCodegenOptions = {
|
|
5
6
|
cwd?: string;
|
|
@@ -17,12 +18,11 @@ type RunCodegenResult = {
|
|
|
17
18
|
isRegenerated: boolean;
|
|
18
19
|
namespaces: number;
|
|
19
20
|
intrinsicElements: number;
|
|
20
|
-
notices: string[];
|
|
21
21
|
duration: number;
|
|
22
|
-
girPath
|
|
23
|
-
configFile
|
|
24
|
-
libraries
|
|
25
|
-
|
|
22
|
+
girPath: string[];
|
|
23
|
+
configFile: string;
|
|
24
|
+
libraries: string[];
|
|
25
|
+
reference?: ReferenceResult | undefined;
|
|
26
26
|
};
|
|
27
27
|
type EnsureGeneratedOptions = {
|
|
28
28
|
shouldAnnounce?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"run-codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAiBvD,OAAO,EAAE,KAAK,aAAa,EAAwC,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,KAAK,cAAc,EAA4C,MAAM,qBAAqB,CAAC;AAEpG,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;IACxB,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpD,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,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAC3C,CAAC;AAWF,KAAK,sBAAsB,GAAG;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpD,CAAC;AAsEF,QAAA,MAAM,UAAU,GAAU,UAAS,iBAAsB,KAAG,OAAO,CAAC,gBAAgB,CAuCnF,CAAC;AAsBF,QAAA,MAAM,iBAAiB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,OAAO,CAQ5E,CAAC;AAoDF,QAAA,MAAM,iBAAiB,GACnB,SAAS,cAAc,EACvB,UAAS,sBAA2B,KACrC,OAAO,CAAC,OAAO,CAAuE,CAAC;AAG1F,QAAA,MAAM,eAAe,GAAU,KAAK,MAAM,EAAE,UAAS,sBAA2B,KAAG,OAAO,CAAC,OAAO,CACS,CAAC;AAE5G,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,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,gBAAgB,GACxB,CAAC"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { runCodegen as runCodegenCore } from "@gtkx/codegen";
|
|
2
2
|
import { getShadowingStorePaths, sweepProjectStaging } from "@gtkx/codegen/internal";
|
|
3
3
|
import { loadConfig } from "@gtkx/config";
|
|
4
|
-
import { resolveElementComponents, resolveElementProps, resolveLazyElements, resolveOmittedProps, } from "@gtkx/config/internal";
|
|
5
|
-
import { info
|
|
4
|
+
import { isAgentRulesEnabled, resolveElementComponents, resolveElementProps, resolveLazyElements, resolveOmittedProps, } from "@gtkx/config/internal";
|
|
5
|
+
import { info } from "@gtkx/utils";
|
|
6
6
|
import { existsSync, rmSync } from "node:fs";
|
|
7
7
|
import { join, resolve } from "node:path";
|
|
8
8
|
import { resolveCatalogProject, synchronizeCatalogs } from "../i18n/catalogs.js";
|
|
9
9
|
import { extractSourceCatalog } from "../i18n/source-messages.js";
|
|
10
|
-
import { emitI18nTypes } from "../i18n/types.js";
|
|
11
|
-
import {
|
|
10
|
+
import { clearI18nTypes, emitI18nTypes } from "../i18n/types.js";
|
|
11
|
+
import { upsertAgentRules } from "../internal/agent-rules.js";
|
|
12
12
|
import { discoverSourceFiles } from "../internal/source-imports.js";
|
|
13
13
|
import { emitSchemaEnv } from "../settings/schema.js";
|
|
14
14
|
import { isCodegenStale, resolveCodegenInputs } from "./freshness.js";
|
|
15
|
+
import { writeReference } from "./reference.js";
|
|
15
16
|
import { resolveCodegenContext } from "./store-resolver.js";
|
|
16
17
|
const GIR_PATH_MISSING_MESSAGE = "No GIR search paths available. Install gobject-introspection " +
|
|
17
18
|
"(Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), " +
|
|
@@ -25,13 +26,9 @@ const removeShadowingStores = (cwd) => {
|
|
|
25
26
|
sweepProjectStaging(cwd);
|
|
26
27
|
removeStores(getShadowingStorePaths(cwd));
|
|
27
28
|
};
|
|
28
|
-
const codegenOptions = ({ store, libraries, girPath, elements
|
|
29
|
+
const codegenOptions = ({ store, libraries, girPath, elements }) => ({
|
|
29
30
|
libraries,
|
|
30
31
|
girPath,
|
|
31
|
-
isByteArrayTyped: future.isByteArrayTyped,
|
|
32
|
-
isValueUnwrapped: future.isValueUnwrapped,
|
|
33
|
-
isFinishTrimmed: future.isFinishTrimmed,
|
|
34
|
-
isInoutInPlace: future.isInoutInPlace,
|
|
35
32
|
gi: {
|
|
36
33
|
storeDir: store.giStoreDir,
|
|
37
34
|
linkDir: store.giLinkDir,
|
|
@@ -44,40 +41,25 @@ const codegenOptions = ({ store, libraries, girPath, elements, ...future }) => (
|
|
|
44
41
|
linkDir: store.jsxLinkDir,
|
|
45
42
|
version: store.react.version,
|
|
46
43
|
},
|
|
47
|
-
reactSubexports: store.react?.subexports ?? [],
|
|
48
44
|
userComponents: resolveElementComponents(elements),
|
|
49
45
|
userProps: resolveElementProps(elements),
|
|
50
46
|
userLazyElements: resolveLazyElements(elements),
|
|
51
47
|
userOmittedProps: resolveOmittedProps(elements),
|
|
52
48
|
});
|
|
53
|
-
const enabledFutureFlags = (config) => Object.entries(config.future ?? {})
|
|
54
|
-
.filter(([, value]) => value === true)
|
|
55
|
-
.map(([name]) => name);
|
|
56
49
|
const disabledCodegenResult = (configFile) => ({
|
|
57
50
|
isRegenerated: false,
|
|
58
51
|
namespaces: 0,
|
|
59
52
|
intrinsicElements: 0,
|
|
60
|
-
notices: [],
|
|
61
53
|
duration: 0,
|
|
62
54
|
girPath: [],
|
|
63
55
|
configFile,
|
|
64
56
|
libraries: [],
|
|
65
57
|
});
|
|
66
|
-
const warnNotices = (notices) => {
|
|
67
|
-
for (const notice of notices) {
|
|
68
|
-
warn(notice);
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
const regeneratedStorePaths = (store) => {
|
|
72
|
-
if (store.react === null) {
|
|
73
|
-
return [store.giStoreDir, store.giLinkDir];
|
|
74
|
-
}
|
|
75
|
-
return [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir];
|
|
76
|
-
};
|
|
77
58
|
const clearGeneratedStores = (store) => {
|
|
78
|
-
removeStores(
|
|
59
|
+
removeStores(store.react === null
|
|
60
|
+
? [store.giStoreDir, store.giLinkDir]
|
|
61
|
+
: [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir]);
|
|
79
62
|
};
|
|
80
|
-
const resolveLoadedConfig = async (options, cwd) => options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));
|
|
81
63
|
const prepareCodegen = (options, cwd, config) => {
|
|
82
64
|
const { girPath, libraries, store } = options.inputs ?? resolveCodegenInputs(cwd, config);
|
|
83
65
|
if (girPath.length === 0) {
|
|
@@ -88,9 +70,9 @@ const prepareCodegen = (options, cwd, config) => {
|
|
|
88
70
|
};
|
|
89
71
|
const runCodegen = async (options = {}) => {
|
|
90
72
|
const cwd = options.cwd ?? process.cwd();
|
|
91
|
-
const { config, configFile } = await
|
|
73
|
+
const { config, configFile } = options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));
|
|
92
74
|
await syncI18n(cwd, config.applicationId, options.shouldPreserveI18nMetadata);
|
|
93
|
-
|
|
75
|
+
emitSchemaEnv(cwd);
|
|
94
76
|
if (config.codegen === false) {
|
|
95
77
|
removeShadowingStores(cwd);
|
|
96
78
|
return disabledCodegenResult(configFile);
|
|
@@ -100,42 +82,35 @@ const runCodegen = async (options = {}) => {
|
|
|
100
82
|
clearGeneratedStores(store);
|
|
101
83
|
}
|
|
102
84
|
const result = await runCodegenCore({
|
|
103
|
-
...codegenOptions({
|
|
104
|
-
store,
|
|
105
|
-
libraries,
|
|
106
|
-
girPath,
|
|
107
|
-
elements: config.elements,
|
|
108
|
-
isByteArrayTyped: config.future?.v2ByteArrays === true,
|
|
109
|
-
isValueUnwrapped: config.future?.v2ValueReturns === true,
|
|
110
|
-
isFinishTrimmed: config.future?.v2FinishResults === true,
|
|
111
|
-
isInoutInPlace: config.future?.v2InoutReturns === true,
|
|
112
|
-
}),
|
|
85
|
+
...codegenOptions({ store, libraries, girPath, elements: config.elements }),
|
|
113
86
|
isForced,
|
|
114
87
|
});
|
|
115
|
-
|
|
88
|
+
const reference = await writeReference({ root: cwd, config, girPath, libraries, isForced });
|
|
89
|
+
if (isAgentRulesEnabled(config)) {
|
|
90
|
+
upsertAgentRules(cwd);
|
|
91
|
+
}
|
|
116
92
|
return {
|
|
117
93
|
isRegenerated: result.isRegenerated,
|
|
118
94
|
namespaces: result.namespaces,
|
|
119
95
|
intrinsicElements: result.intrinsicElements,
|
|
120
|
-
notices: result.notices,
|
|
121
96
|
duration: result.duration,
|
|
122
97
|
girPath,
|
|
123
98
|
configFile,
|
|
124
99
|
libraries,
|
|
125
|
-
|
|
100
|
+
reference,
|
|
126
101
|
};
|
|
127
102
|
};
|
|
128
103
|
const syncI18n = async (root, applicationId, shouldPreserveMetadataMessages = true) => {
|
|
129
104
|
const project = resolveCatalogProject(root, applicationId);
|
|
130
105
|
if (project === null) {
|
|
131
|
-
|
|
106
|
+
clearI18nTypes(root);
|
|
132
107
|
return;
|
|
133
108
|
}
|
|
134
109
|
const srcDir = join(root, "src");
|
|
135
110
|
const sourceFiles = discoverSourceFiles(existsSync(srcDir) ? srcDir : root);
|
|
136
|
-
|
|
111
|
+
await extractSourceCatalog(project, sourceFiles, shouldPreserveMetadataMessages);
|
|
137
112
|
synchronizeCatalogs(project);
|
|
138
|
-
emitI18nTypes(root
|
|
113
|
+
await emitI18nTypes(root);
|
|
139
114
|
};
|
|
140
115
|
const isCodegenDisabled = async (cwd, mode) => {
|
|
141
116
|
try {
|
|
@@ -146,10 +121,6 @@ const isCodegenDisabled = async (cwd, mode) => {
|
|
|
146
121
|
return false;
|
|
147
122
|
}
|
|
148
123
|
};
|
|
149
|
-
const syncSchemaEnv = (cwd, isV2ResourceImports = false) => {
|
|
150
|
-
const dataDir = isV2ResourceImports ? null : resolveDataDir(cwd);
|
|
151
|
-
emitSchemaEnv(cwd, dataDir, isV2ResourceImports);
|
|
152
|
-
};
|
|
153
124
|
const resolveInputsOrNull = (cwd, config) => {
|
|
154
125
|
try {
|
|
155
126
|
return resolveCodegenInputs(cwd, config);
|
|
@@ -166,12 +137,6 @@ const maybeAnnounceStale = (shouldAnnounce, inputs) => {
|
|
|
166
137
|
info("generated bindings missing; running codegen...");
|
|
167
138
|
}
|
|
168
139
|
};
|
|
169
|
-
const getRunOptions = ({ root, mode, inputs, resolved, shouldPreserveI18nMetadata, }) => {
|
|
170
|
-
if (inputs === null) {
|
|
171
|
-
return { cwd: root, mode, resolved, shouldPreserveI18nMetadata };
|
|
172
|
-
}
|
|
173
|
-
return { cwd: root, mode, inputs, resolved, shouldPreserveI18nMetadata };
|
|
174
|
-
};
|
|
175
140
|
const isPreflightSkipped = (options) => options.shouldAnnounce === true && process.env.GTKX_DISABLE_PREFLIGHT === "1";
|
|
176
141
|
/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */
|
|
177
142
|
const generate = async (context, options) => {
|
|
@@ -187,13 +152,13 @@ const generate = async (context, options) => {
|
|
|
187
152
|
const inputs = resolveInputsOrNull(context.root, context.config);
|
|
188
153
|
maybeAnnounceStale(options.shouldAnnounce, inputs);
|
|
189
154
|
const resolved = { config: context.config, configFile: context.configFile };
|
|
190
|
-
const result = await runCodegen(
|
|
191
|
-
|
|
155
|
+
const result = await runCodegen({
|
|
156
|
+
cwd: context.root,
|
|
192
157
|
mode: options.mode,
|
|
193
|
-
inputs,
|
|
194
158
|
resolved,
|
|
195
159
|
shouldPreserveI18nMetadata: options.shouldPreserveI18nMetadata,
|
|
196
|
-
|
|
160
|
+
...(inputs !== null && { inputs }),
|
|
161
|
+
});
|
|
197
162
|
return result.isRegenerated;
|
|
198
163
|
};
|
|
199
164
|
/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */
|