@gtkx/cli 0.20.0 → 1.0.0-rc.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 +173 -0
- package/bin/gtkx-dev-runner.js +9 -0
- package/dist/builder.d.ts +2 -50
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +22 -48
- package/dist/builder.js.map +1 -1
- package/dist/cli.d.ts +1 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -124
- package/dist/cli.js.map +1 -1
- package/dist/codegen/freshness.d.ts +11 -0
- package/dist/codegen/freshness.d.ts.map +1 -0
- package/dist/codegen/freshness.js +42 -0
- package/dist/codegen/freshness.js.map +1 -0
- package/dist/codegen/report.d.ts +3 -0
- package/dist/codegen/report.d.ts.map +1 -0
- package/dist/codegen/report.js +16 -0
- package/dist/codegen/report.js.map +1 -0
- package/dist/codegen/run-codegen.d.ts +35 -0
- package/dist/codegen/run-codegen.d.ts.map +1 -0
- package/dist/codegen/run-codegen.js +133 -0
- package/dist/codegen/run-codegen.js.map +1 -0
- package/dist/codegen/store-resolver.d.ts +21 -0
- package/dist/codegen/store-resolver.d.ts.map +1 -0
- package/dist/codegen/store-resolver.js +52 -0
- package/dist/codegen/store-resolver.js.map +1 -0
- package/dist/commands/build.d.ts +9 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +33 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/codegen.d.ts +9 -0
- package/dist/commands/codegen.d.ts.map +1 -0
- package/dist/commands/codegen.js +40 -0
- package/dist/commands/codegen.js.map +1 -0
- package/dist/commands/dev.d.ts +5 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +21 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/docs.d.ts +19 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +59 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/dev/icon-dir.d.ts +2 -0
- package/dist/dev/icon-dir.d.ts.map +1 -0
- package/dist/dev/icon-dir.js +13 -0
- package/dist/dev/icon-dir.js.map +1 -0
- package/dist/dev/refresh-tracker.d.ts +6 -0
- package/dist/dev/refresh-tracker.d.ts.map +1 -0
- package/dist/dev/refresh-tracker.js +18 -0
- package/dist/dev/refresh-tracker.js.map +1 -0
- package/dist/dev/runner-deps.d.ts +3 -0
- package/dist/dev/runner-deps.d.ts.map +1 -0
- package/dist/dev/runner-deps.js +39 -0
- package/dist/dev/runner-deps.js.map +1 -0
- package/dist/dev/runner-main.d.ts +2 -0
- package/dist/dev/runner-main.d.ts.map +1 -0
- package/dist/dev/runner-main.js +28 -0
- package/dist/dev/runner-main.js.map +1 -0
- package/dist/dev/runner.d.ts +23 -0
- package/dist/dev/runner.d.ts.map +1 -0
- package/dist/dev/runner.js +88 -0
- package/dist/dev/runner.js.map +1 -0
- package/dist/dev/schema-dir.d.ts +2 -0
- package/dist/dev/schema-dir.d.ts.map +1 -0
- package/dist/dev/schema-dir.js +10 -0
- package/dist/dev/schema-dir.js.map +1 -0
- package/dist/dev/supervisor.d.ts +17 -0
- package/dist/dev/supervisor.d.ts.map +1 -0
- package/dist/dev/supervisor.js +142 -0
- package/dist/dev/supervisor.js.map +1 -0
- package/dist/dev/vite-dev-server.d.ts +21 -0
- package/dist/dev/vite-dev-server.d.ts.map +1 -0
- package/dist/dev/vite-dev-server.js +12 -0
- package/dist/dev/vite-dev-server.js.map +1 -0
- package/dist/internal/banner.d.ts +3 -0
- package/dist/internal/banner.d.ts.map +1 -0
- package/dist/internal/banner.js +8 -0
- package/dist/internal/banner.js.map +1 -0
- package/dist/internal/data-dir.d.ts +3 -0
- package/dist/internal/data-dir.d.ts.map +1 -0
- package/dist/internal/data-dir.js +37 -0
- package/dist/internal/data-dir.js.map +1 -0
- package/dist/internal/entry-arg.d.ts +19 -0
- package/dist/internal/entry-arg.d.ts.map +1 -0
- package/dist/internal/entry-arg.js +33 -0
- package/dist/internal/entry-arg.js.map +1 -0
- package/dist/internal/errors.d.ts +4 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/errors.js +27 -0
- package/dist/internal/errors.js.map +1 -0
- package/dist/internal/list-files.d.ts +6 -0
- package/dist/internal/list-files.d.ts.map +1 -0
- package/dist/internal/list-files.js +13 -0
- package/dist/internal/list-files.js.map +1 -0
- package/dist/internal/resolve-cli-tool.d.ts +2 -0
- package/dist/internal/resolve-cli-tool.d.ts.map +1 -0
- package/dist/internal/resolve-cli-tool.js +20 -0
- package/dist/internal/resolve-cli-tool.js.map +1 -0
- package/dist/internal/staging-dir.d.ts +3 -0
- package/dist/internal/staging-dir.d.ts.map +1 -0
- package/dist/internal/staging-dir.js +16 -0
- package/dist/internal/staging-dir.js.map +1 -0
- package/dist/internal/xdg-data-dirs.d.ts +2 -0
- package/dist/internal/xdg-data-dirs.d.ts.map +1 -0
- package/dist/internal/xdg-data-dirs.js +8 -0
- package/dist/internal/xdg-data-dirs.js.map +1 -0
- package/dist/mcp/client.d.ts +23 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +157 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/handlers.d.ts +8 -0
- package/dist/mcp/handlers.d.ts.map +1 -0
- package/dist/mcp/handlers.js +119 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +17 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/serialize-widget.d.ts +10 -0
- package/dist/mcp/serialize-widget.d.ts.map +1 -0
- package/dist/mcp/serialize-widget.js +20 -0
- package/dist/mcp/serialize-widget.js.map +1 -0
- package/dist/mcp/testing-loader.d.ts +6 -0
- package/dist/mcp/testing-loader.d.ts.map +1 -0
- package/dist/mcp/testing-loader.js +25 -0
- package/dist/mcp/testing-loader.js.map +1 -0
- package/dist/mcp/widget-registry.d.ts +13 -0
- package/dist/mcp/widget-registry.d.ts.map +1 -0
- package/dist/mcp/widget-registry.js +38 -0
- package/dist/mcp/widget-registry.js.map +1 -0
- package/dist/refresh-runtime.d.ts +10 -20
- package/dist/refresh-runtime.d.ts.map +1 -1
- package/dist/refresh-runtime.js +12 -36
- package/dist/refresh-runtime.js.map +1 -1
- package/dist/settings/compile.d.ts +2 -0
- package/dist/settings/compile.d.ts.map +1 -0
- package/dist/settings/compile.js +19 -0
- package/dist/settings/compile.js.map +1 -0
- package/dist/settings/parser.d.ts +23 -0
- package/dist/settings/parser.d.ts.map +1 -0
- package/dist/settings/parser.js +117 -0
- package/dist/settings/parser.js.map +1 -0
- package/dist/settings/render.d.ts +4 -0
- package/dist/settings/render.d.ts.map +1 -0
- package/dist/settings/render.js +148 -0
- package/dist/settings/render.js.map +1 -0
- package/dist/settings/schema.d.ts +13 -0
- package/dist/settings/schema.d.ts.map +1 -0
- package/dist/settings/schema.js +103 -0
- package/dist/settings/schema.js.map +1 -0
- package/dist/vite-plugins/asset-extensions.d.ts +4 -0
- package/dist/vite-plugins/asset-extensions.d.ts.map +1 -0
- package/dist/vite-plugins/asset-extensions.js +27 -0
- package/dist/vite-plugins/asset-extensions.js.map +1 -0
- package/dist/vite-plugins/built-url.d.ts +3 -0
- package/dist/vite-plugins/built-url.d.ts.map +1 -0
- package/dist/{vite-plugin-gtkx-built-url.js → vite-plugins/built-url.js} +4 -17
- package/dist/vite-plugins/built-url.js.map +1 -0
- package/dist/vite-plugins/css.d.ts +3 -0
- package/dist/vite-plugins/css.d.ts.map +1 -0
- package/dist/vite-plugins/css.js +30 -0
- package/dist/vite-plugins/css.js.map +1 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts +7 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts.map +1 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.js +15 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.js.map +1 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts +5 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts.map +1 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.js +66 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.js.map +1 -0
- package/dist/vite-plugins/icons.d.ts +3 -0
- package/dist/vite-plugins/icons.d.ts.map +1 -0
- package/dist/vite-plugins/icons.js +47 -0
- package/dist/vite-plugins/icons.js.map +1 -0
- package/dist/vite-plugins/index.d.ts +3 -0
- package/dist/vite-plugins/index.d.ts.map +1 -0
- package/dist/vite-plugins/index.js +21 -0
- package/dist/vite-plugins/index.js.map +1 -0
- package/dist/vite-plugins/native.d.ts +3 -0
- package/dist/vite-plugins/native.d.ts.map +1 -0
- package/dist/vite-plugins/native.js +60 -0
- package/dist/vite-plugins/native.js.map +1 -0
- package/dist/vite-plugins/react-compiler.d.ts +4 -0
- package/dist/vite-plugins/react-compiler.d.ts.map +1 -0
- package/dist/vite-plugins/react-compiler.js +56 -0
- package/dist/vite-plugins/react-compiler.js.map +1 -0
- package/dist/vite-plugins/react-dom-prebundle.d.ts +3 -0
- package/dist/vite-plugins/react-dom-prebundle.d.ts.map +1 -0
- package/dist/vite-plugins/react-dom-prebundle.js +11 -0
- package/dist/vite-plugins/react-dom-prebundle.js.map +1 -0
- package/dist/vite-plugins/resource-init-module.d.ts +5 -0
- package/dist/vite-plugins/resource-init-module.d.ts.map +1 -0
- package/dist/vite-plugins/resource-init-module.js +50 -0
- package/dist/vite-plugins/resource-init-module.js.map +1 -0
- package/dist/vite-plugins/resource-shared.d.ts +6 -0
- package/dist/vite-plugins/resource-shared.d.ts.map +1 -0
- package/dist/vite-plugins/resource-shared.js +21 -0
- package/dist/vite-plugins/resource-shared.js.map +1 -0
- package/dist/vite-plugins/resources.d.ts +4 -0
- package/dist/vite-plugins/resources.d.ts.map +1 -0
- package/dist/vite-plugins/resources.js +220 -0
- package/dist/vite-plugins/resources.js.map +1 -0
- package/dist/vite-plugins/settings-worker-env.d.ts +3 -0
- package/dist/vite-plugins/settings-worker-env.d.ts.map +1 -0
- package/dist/vite-plugins/settings-worker-env.js +21 -0
- package/dist/vite-plugins/settings-worker-env.js.map +1 -0
- package/dist/vite-plugins/settings.d.ts +3 -0
- package/dist/vite-plugins/settings.d.ts.map +1 -0
- package/dist/vite-plugins/settings.js +190 -0
- package/dist/vite-plugins/settings.js.map +1 -0
- package/dist/vite-plugins/undeclared-library.d.ts +3 -0
- package/dist/vite-plugins/undeclared-library.d.ts.map +1 -0
- package/dist/vite-plugins/undeclared-library.js +47 -0
- package/dist/vite-plugins/undeclared-library.js.map +1 -0
- package/dist/vite-plugins/virtual-module.d.ts +22 -0
- package/dist/vite-plugins/virtual-module.d.ts.map +1 -0
- package/dist/vite-plugins/virtual-module.js +18 -0
- package/dist/vite-plugins/virtual-module.js.map +1 -0
- package/dist/vitest-plugin.d.ts +10 -0
- package/dist/vitest-plugin.d.ts.map +1 -0
- package/dist/vitest-plugin.js +12 -0
- package/dist/vitest-plugin.js.map +1 -0
- package/env.d.ts +131 -3
- package/package.json +32 -38
- package/src/babel-modules.d.ts +13 -0
- package/src/builder.ts +28 -76
- package/src/cli.ts +22 -0
- package/src/codegen/freshness.ts +52 -0
- package/src/codegen/report.ts +20 -0
- package/src/codegen/run-codegen.ts +185 -0
- package/src/codegen/store-resolver.ts +75 -0
- package/src/commands/build.ts +37 -0
- package/src/commands/codegen.ts +44 -0
- package/src/commands/dev.ts +25 -0
- package/src/commands/docs.ts +66 -0
- package/src/dev/icon-dir.ts +11 -0
- package/src/dev/refresh-tracker.ts +21 -0
- package/src/dev/runner-deps.ts +42 -0
- package/src/dev/runner-main.ts +33 -0
- package/src/dev/runner.ts +126 -0
- package/src/dev/schema-dir.ts +11 -0
- package/src/dev/supervisor.ts +178 -0
- package/src/dev/vite-dev-server.ts +34 -0
- package/src/internal/banner.ts +9 -0
- package/src/internal/data-dir.ts +39 -0
- package/src/internal/entry-arg.ts +38 -0
- package/src/internal/errors.ts +28 -0
- package/src/internal/list-files.ts +17 -0
- package/src/internal/resolve-cli-tool.ts +21 -0
- package/src/internal/staging-dir.ts +16 -0
- package/src/internal/xdg-data-dirs.ts +7 -0
- package/src/mcp/client.ts +177 -0
- package/src/mcp/handlers.ts +156 -0
- package/src/mcp/index.ts +22 -0
- package/src/mcp/serialize-widget.ts +34 -0
- package/src/mcp/testing-loader.ts +32 -0
- package/src/mcp/widget-registry.ts +43 -0
- package/src/refresh-runtime.ts +12 -41
- package/src/settings/compile.ts +19 -0
- package/src/settings/parser.ts +154 -0
- package/src/settings/render.ts +167 -0
- package/src/settings/schema.ts +115 -0
- package/src/vite-plugins/asset-extensions.ts +28 -0
- package/src/{vite-plugin-gtkx-built-url.ts → vite-plugins/built-url.ts} +3 -16
- package/src/vite-plugins/css.ts +38 -0
- package/src/vite-plugins/fast-refresh/refresh-filter.ts +18 -0
- package/src/vite-plugins/fast-refresh/swc-refresh.ts +79 -0
- package/src/vite-plugins/icons.ts +58 -0
- package/src/vite-plugins/index.ts +22 -0
- package/src/vite-plugins/native.ts +74 -0
- package/src/vite-plugins/react-compiler.ts +70 -0
- package/src/vite-plugins/react-dom-prebundle.ts +14 -0
- package/src/vite-plugins/resource-init-module.ts +54 -0
- package/src/vite-plugins/resource-shared.ts +27 -0
- package/src/vite-plugins/resources.ts +272 -0
- package/src/vite-plugins/settings-worker-env.ts +25 -0
- package/src/vite-plugins/settings.ts +221 -0
- package/src/vite-plugins/undeclared-library.ts +69 -0
- package/src/vite-plugins/virtual-module.ts +37 -0
- package/src/vitest-plugin.ts +14 -0
- package/dist/create.d.ts +0 -54
- package/dist/create.d.ts.map +0 -1
- package/dist/create.js +0 -221
- package/dist/create.js.map +0 -1
- package/dist/dev-server.d.ts +0 -38
- package/dist/dev-server.d.ts.map +0 -1
- package/dist/dev-server.js +0 -128
- package/dist/dev-server.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -4
- package/dist/index.js.map +0 -1
- package/dist/mcp-client.d.ts +0 -31
- package/dist/mcp-client.d.ts.map +0 -1
- package/dist/mcp-client.js +0 -430
- package/dist/mcp-client.js.map +0 -1
- package/dist/templates.d.ts +0 -9
- package/dist/templates.d.ts.map +0 -1
- package/dist/templates.js +0 -16
- package/dist/templates.js.map +0 -1
- package/dist/vite-plugin-gtkx-assets.d.ts +0 -20
- package/dist/vite-plugin-gtkx-assets.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-assets.js +0 -57
- package/dist/vite-plugin-gtkx-assets.js.map +0 -1
- package/dist/vite-plugin-gtkx-built-url.d.ts +0 -18
- package/dist/vite-plugin-gtkx-built-url.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-built-url.js.map +0 -1
- package/dist/vite-plugin-gtkx-native.d.ts +0 -14
- package/dist/vite-plugin-gtkx-native.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-native.js +0 -53
- package/dist/vite-plugin-gtkx-native.js.map +0 -1
- package/dist/vite-plugin-gtkx-refresh.d.ts +0 -8
- package/dist/vite-plugin-gtkx-refresh.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-refresh.js +0 -37
- package/dist/vite-plugin-gtkx-refresh.js.map +0 -1
- package/dist/vite-plugin-swc-ssr-refresh.d.ts +0 -8
- package/dist/vite-plugin-swc-ssr-refresh.d.ts.map +0 -1
- package/dist/vite-plugin-swc-ssr-refresh.js +0 -46
- package/dist/vite-plugin-swc-ssr-refresh.js.map +0 -1
- package/src/cli.tsx +0 -154
- package/src/create.ts +0 -310
- package/src/dev-server.tsx +0 -162
- package/src/index.ts +0 -3
- package/src/mcp-client.ts +0 -518
- package/src/templates.ts +0 -26
- package/src/vite-plugin-gtkx-assets.ts +0 -69
- package/src/vite-plugin-gtkx-native.ts +0 -64
- package/src/vite-plugin-gtkx-refresh.ts +0 -54
- package/src/vite-plugin-swc-ssr-refresh.ts +0 -61
- package/templates/claude/EXAMPLES.md.ejs +0 -744
- package/templates/claude/SKILL.md.ejs +0 -93
- package/templates/claude/WIDGETS.md.ejs +0 -820
- package/templates/config/vitest.config.ts.ejs +0 -11
- package/templates/gitignore.ejs +0 -4
- package/templates/package.json.ejs +0 -16
- package/templates/src/app.tsx.ejs +0 -32
- package/templates/src/dev.tsx.ejs +0 -5
- package/templates/src/gtkx-env.d.ts.ejs +0 -1
- package/templates/src/index.tsx.ejs +0 -5
- package/templates/tests/app.test.tsx.ejs +0 -16
- package/templates/tsconfig.json.ejs +0 -14
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type Config } from "@gtkx/config";
|
|
2
|
+
import { type CodegenInputs } from "./freshness.js";
|
|
3
|
+
export type RunCodegenOptions = {
|
|
4
|
+
cwd?: string;
|
|
5
|
+
mode?: string | undefined;
|
|
6
|
+
force?: boolean;
|
|
7
|
+
inputs?: CodegenInputs;
|
|
8
|
+
resolved?: LoadedConfig;
|
|
9
|
+
};
|
|
10
|
+
type LoadedConfig = {
|
|
11
|
+
config: Config;
|
|
12
|
+
configFile: string | undefined;
|
|
13
|
+
};
|
|
14
|
+
export type RunCodegenResult = {
|
|
15
|
+
regenerated: boolean;
|
|
16
|
+
namespaces: number;
|
|
17
|
+
intrinsicElements: number;
|
|
18
|
+
duration: number;
|
|
19
|
+
girPath?: string[] | undefined;
|
|
20
|
+
configFile?: string | undefined;
|
|
21
|
+
libraries?: string[] | undefined;
|
|
22
|
+
};
|
|
23
|
+
export declare const runCodegen: (options?: RunCodegenOptions) => Promise<RunCodegenResult>;
|
|
24
|
+
export declare const isCodegenDisabled: (cwd: string, mode?: string) => Promise<boolean>;
|
|
25
|
+
export declare const syncSchemaEnv: (cwd: string) => void;
|
|
26
|
+
export declare const ensureGenerated: (cwd: string, options?: {
|
|
27
|
+
announce?: boolean;
|
|
28
|
+
mode?: string;
|
|
29
|
+
}) => Promise<boolean>;
|
|
30
|
+
export declare const resolveConfigWatch: (cwd: string, mode?: string) => Promise<{
|
|
31
|
+
paths: string[];
|
|
32
|
+
regenerate: () => Promise<void>;
|
|
33
|
+
} | undefined>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=run-codegen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAgC,MAAM,cAAc,CAAC;AAIzE,OAAO,EAAE,KAAK,aAAa,EAAwC,MAAM,gBAAgB,CAAC;AAG1F,MAAM,MAAM,iBAAiB,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,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,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,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;AAuCF,eAAO,MAAM,UAAU,aAAmB,iBAAiB,KAAQ,OAAO,CAAC,gBAAgB,CA+C1F,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAe,MAAM,SAAS,MAAM,KAAG,OAAO,CAAC,OAAO,CAOnF,CAAC;AAEF,eAAO,MAAM,aAAa,QAAS,MAAM,KAAG,IAI3C,CAAC;AAUF,eAAO,MAAM,eAAe,QACnB,MAAM,YACF;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KAC/C,OAAO,CAAC,OAAO,CAyBjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,QACtB,MAAM,SACJ,MAAM,KACd,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAAG,SAAS,CAS1E,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { rmSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { runCodegen as runCodegenCore } from "@gtkx/codegen";
|
|
4
|
+
import { loadConfig } from "@gtkx/config";
|
|
5
|
+
import { info } from "@gtkx/utils";
|
|
6
|
+
import { resolveDataDir } from "../internal/data-dir.js";
|
|
7
|
+
import { emitSchemaEnv } from "../settings/schema.js";
|
|
8
|
+
import { isCodegenStale, resolveCodegenInputs } from "./freshness.js";
|
|
9
|
+
import { resolveCodegenContext } from "./store-resolver.js";
|
|
10
|
+
const removeSharedStoreShadow = (cwd) => {
|
|
11
|
+
for (const path of [
|
|
12
|
+
resolve(cwd, "node_modules/.gtkx/gi"),
|
|
13
|
+
resolve(cwd, "node_modules/.gtkx/jsx"),
|
|
14
|
+
resolve(cwd, "node_modules/@gtkx/gi"),
|
|
15
|
+
resolve(cwd, "node_modules/@gtkx/jsx"),
|
|
16
|
+
]) {
|
|
17
|
+
rmSync(path, { recursive: true, force: true });
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const codegenOptions = ({ store, libraries, girPath, elementProps }) => ({
|
|
21
|
+
libraries,
|
|
22
|
+
girPath,
|
|
23
|
+
elementProps,
|
|
24
|
+
gi: {
|
|
25
|
+
storeDir: store.giStoreDir,
|
|
26
|
+
linkDir: store.giLinkDir,
|
|
27
|
+
version: store.runtimeVersion,
|
|
28
|
+
},
|
|
29
|
+
jsx: store.react !== null
|
|
30
|
+
? {
|
|
31
|
+
storeDir: store.jsxStoreDir,
|
|
32
|
+
linkDir: store.jsxLinkDir,
|
|
33
|
+
version: store.react.version,
|
|
34
|
+
}
|
|
35
|
+
: undefined,
|
|
36
|
+
});
|
|
37
|
+
export const runCodegen = async (options = {}) => {
|
|
38
|
+
const cwd = options.cwd ?? process.cwd();
|
|
39
|
+
const { config, configFile } = options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));
|
|
40
|
+
if (config.codegen === false) {
|
|
41
|
+
removeSharedStoreShadow(cwd);
|
|
42
|
+
return {
|
|
43
|
+
regenerated: false,
|
|
44
|
+
namespaces: 0,
|
|
45
|
+
intrinsicElements: 0,
|
|
46
|
+
duration: 0,
|
|
47
|
+
girPath: [],
|
|
48
|
+
configFile,
|
|
49
|
+
libraries: [],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const { girPath, libraries, elementProps, store } = options.inputs ?? resolveCodegenInputs(cwd, config);
|
|
53
|
+
if (girPath.length === 0) {
|
|
54
|
+
throw new Error("No GIR search paths available. Install gobject-introspection (Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), or set `girPath` in gtkx.config.ts.");
|
|
55
|
+
}
|
|
56
|
+
const force = options.force === true || isCodegenStale({ girPath, libraries, elementProps, store });
|
|
57
|
+
if (options.force) {
|
|
58
|
+
for (const path of [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir]) {
|
|
59
|
+
rmSync(path, { recursive: true, force: true });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const result = await runCodegenCore({
|
|
63
|
+
...codegenOptions({ store, libraries, girPath, elementProps }),
|
|
64
|
+
force,
|
|
65
|
+
});
|
|
66
|
+
return {
|
|
67
|
+
regenerated: result.regenerated,
|
|
68
|
+
namespaces: result.namespaces,
|
|
69
|
+
intrinsicElements: result.intrinsicElements,
|
|
70
|
+
duration: result.duration,
|
|
71
|
+
girPath,
|
|
72
|
+
configFile,
|
|
73
|
+
libraries,
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
export const isCodegenDisabled = async (cwd, mode) => {
|
|
77
|
+
try {
|
|
78
|
+
const { config } = await loadConfig(cwd, { mode });
|
|
79
|
+
return config.codegen === false;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
export const syncSchemaEnv = (cwd) => {
|
|
86
|
+
const dataDir = resolveDataDir(cwd);
|
|
87
|
+
if (dataDir === null)
|
|
88
|
+
return;
|
|
89
|
+
emitSchemaEnv(cwd, dataDir);
|
|
90
|
+
};
|
|
91
|
+
const resolveInputsOrNull = (cwd, config) => {
|
|
92
|
+
try {
|
|
93
|
+
return resolveCodegenInputs(cwd, config);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
export const ensureGenerated = async (cwd, options = {}) => {
|
|
100
|
+
if (options.announce && process.env.GTKX_DISABLE_PREFLIGHT === "1") {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
const context = await resolveCodegenContext(cwd, options.mode);
|
|
104
|
+
if (!context) {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
syncSchemaEnv(cwd);
|
|
108
|
+
if (context.config.codegen === false) {
|
|
109
|
+
removeSharedStoreShadow(context.root);
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
const inputs = resolveInputsOrNull(context.root, context.config);
|
|
113
|
+
if (options.announce && (inputs === null || isCodegenStale(inputs))) {
|
|
114
|
+
info("generated bindings missing; running codegen...");
|
|
115
|
+
}
|
|
116
|
+
const resolved = { config: context.config, configFile: context.configFile };
|
|
117
|
+
const result = await runCodegen(inputs === null
|
|
118
|
+
? { cwd: context.root, mode: options.mode, resolved }
|
|
119
|
+
: { cwd: context.root, mode: options.mode, inputs, resolved });
|
|
120
|
+
return result.regenerated;
|
|
121
|
+
};
|
|
122
|
+
export const resolveConfigWatch = async (cwd, mode) => {
|
|
123
|
+
const { configFile, root } = await loadConfig(cwd, { mode });
|
|
124
|
+
if (configFile === undefined)
|
|
125
|
+
return undefined;
|
|
126
|
+
return {
|
|
127
|
+
paths: [resolve(root, configFile)],
|
|
128
|
+
regenerate: async () => {
|
|
129
|
+
await runCodegen({ cwd: root, mode });
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=run-codegen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-codegen.js","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import { rmSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { runCodegen as runCodegenCore } from \"@gtkx/codegen\";\nimport { type Config, type ElementProp, loadConfig } from \"@gtkx/config\";\nimport { info } from \"@gtkx/utils\";\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\nexport type RunCodegenOptions = {\n cwd?: string;\n mode?: string | undefined;\n force?: boolean;\n inputs?: CodegenInputs;\n resolved?: LoadedConfig;\n};\n\ntype LoadedConfig = {\n config: Config;\n configFile: string | undefined;\n};\n\nexport type RunCodegenResult = {\n regenerated: boolean;\n namespaces: number;\n intrinsicElements: number;\n duration: number;\n girPath?: string[] | undefined;\n configFile?: string | undefined;\n libraries?: string[] | undefined;\n};\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\ntype CodegenOptionsInput = {\n store: CodegenStore;\n libraries: string[];\n girPath: string[];\n elementProps: Record<string, ElementProp[]>;\n};\n\nconst codegenOptions = ({ store, libraries, girPath, elementProps }: CodegenOptionsInput) => ({\n libraries,\n girPath,\n elementProps,\n gi: {\n storeDir: store.giStoreDir,\n linkDir: store.giLinkDir,\n version: store.runtimeVersion,\n },\n jsx:\n store.react !== null\n ? {\n storeDir: store.jsxStoreDir,\n linkDir: store.jsxLinkDir,\n version: store.react.version,\n }\n : undefined,\n});\n\nexport const runCodegen = async (options: RunCodegenOptions = {}): Promise<RunCodegenResult> => {\n const cwd = options.cwd ?? process.cwd();\n\n const { config, configFile } = options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));\n\n if (config.codegen === false) {\n removeSharedStoreShadow(cwd);\n return {\n regenerated: false,\n namespaces: 0,\n intrinsicElements: 0,\n duration: 0,\n girPath: [],\n configFile,\n libraries: [],\n };\n }\n\n const { girPath, libraries, elementProps, store } = options.inputs ?? resolveCodegenInputs(cwd, config);\n\n if (girPath.length === 0) {\n throw new Error(\n \"No GIR search paths available. Install gobject-introspection (Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), or set `girPath` in gtkx.config.ts.\",\n );\n }\n\n const force = options.force === true || isCodegenStale({ girPath, libraries, elementProps, store });\n if (options.force) {\n for (const path of [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir]) {\n rmSync(path, { recursive: true, force: true });\n }\n }\n\n const result = await runCodegenCore({\n ...codegenOptions({ store, libraries, girPath, elementProps }),\n force,\n });\n\n return {\n regenerated: result.regenerated,\n namespaces: result.namespaces,\n intrinsicElements: result.intrinsicElements,\n duration: result.duration,\n girPath,\n configFile,\n libraries,\n };\n};\n\nexport const isCodegenDisabled = async (cwd: string, mode?: string): Promise<boolean> => {\n try {\n const { config } = await loadConfig(cwd, { mode });\n return config.codegen === false;\n } catch {\n return false;\n }\n};\n\nexport const syncSchemaEnv = (cwd: string): void => {\n const dataDir = resolveDataDir(cwd);\n if (dataDir === null) return;\n emitSchemaEnv(cwd, dataDir);\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\nexport const ensureGenerated = async (\n cwd: string,\n options: { announce?: boolean; mode?: string } = {},\n): Promise<boolean> => {\n if (options.announce && process.env.GTKX_DISABLE_PREFLIGHT === \"1\") {\n return false;\n }\n\n const context = await resolveCodegenContext(cwd, options.mode);\n if (!context) {\n return false;\n }\n syncSchemaEnv(cwd);\n if (context.config.codegen === false) {\n removeSharedStoreShadow(context.root);\n return false;\n }\n const inputs = resolveInputsOrNull(context.root, context.config);\n if (options.announce && (inputs === null || isCodegenStale(inputs))) {\n info(\"generated bindings missing; running codegen...\");\n }\n const resolved = { config: context.config, configFile: context.configFile };\n const result = await runCodegen(\n inputs === null\n ? { cwd: context.root, mode: options.mode, resolved }\n : { cwd: context.root, mode: options.mode, inputs, resolved },\n );\n return result.regenerated;\n};\n\nexport const resolveConfigWatch = async (\n cwd: string,\n mode?: string,\n): Promise<{ paths: string[]; regenerate: () => Promise<void> } | undefined> => {\n const { configFile, root } = await loadConfig(cwd, { mode });\n if (configFile === undefined) return undefined;\n return {\n paths: [resolve(root, configFile)],\n regenerate: async () => {\n await runCodegen({ cwd: root, mode });\n },\n };\n};\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type Config } from "@gtkx/config";
|
|
2
|
+
export type CodegenStore = {
|
|
3
|
+
giStoreDir: string;
|
|
4
|
+
giLinkDir: string;
|
|
5
|
+
jsxStoreDir: string;
|
|
6
|
+
jsxLinkDir: string;
|
|
7
|
+
runtimeVersion: string;
|
|
8
|
+
react: CodegenReactPackage | null;
|
|
9
|
+
};
|
|
10
|
+
type CodegenReactPackage = {
|
|
11
|
+
version: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const resolveCodegenStore: (dir: string) => CodegenStore;
|
|
14
|
+
export type CodegenContext = {
|
|
15
|
+
root: string;
|
|
16
|
+
config: Config;
|
|
17
|
+
configFile: string | undefined;
|
|
18
|
+
};
|
|
19
|
+
export declare const resolveCodegenContext: (cwd: string, mode?: string) => Promise<CodegenContext | null>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=store-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-resolver.d.ts","sourceRoot":"","sources":["../../src/codegen/store-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAEvD,MAAM,MAAM,YAAY,GAAG;IACvB,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;CACnB,CAAC;AAsBF,eAAO,MAAM,mBAAmB,QAAS,MAAM,KAAG,YAuBjD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAe,MAAM,SAAS,MAAM,KAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAIrG,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { existsSync, readFileSync, realpathSync } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { pathToFileURL } from "node:url";
|
|
5
|
+
import { loadConfig } from "@gtkx/config";
|
|
6
|
+
const readVersion = (packageJsonPath) => {
|
|
7
|
+
const parsed = JSON.parse(readFileSync(packageJsonPath, "utf8"));
|
|
8
|
+
return parsed.version ?? "0.0.0";
|
|
9
|
+
};
|
|
10
|
+
const resolvePackage = (require, dir, packageName) => {
|
|
11
|
+
try {
|
|
12
|
+
const real = realpathSync(require.resolve(`${packageName}/package.json`));
|
|
13
|
+
return { dir: dirname(real), version: readVersion(real) };
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
const unscoped = packageName.replace(/^@[^/]+\//, "");
|
|
17
|
+
const workspacePkg = join(dir, "packages", unscoped, "package.json");
|
|
18
|
+
if (!existsSync(workspacePkg))
|
|
19
|
+
return null;
|
|
20
|
+
const real = realpathSync(workspacePkg);
|
|
21
|
+
return { dir: dirname(real), version: readVersion(real) };
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export const resolveCodegenStore = (dir) => {
|
|
25
|
+
const require = createRequire(pathToFileURL(join(dir, "__gtkx_resolver__.js")).href);
|
|
26
|
+
const runtime = resolvePackage(require, dir, "@gtkx/runtime");
|
|
27
|
+
if (runtime === null) {
|
|
28
|
+
throw new Error("Cannot resolve @gtkx/runtime from the project; is it installed?");
|
|
29
|
+
}
|
|
30
|
+
const native = resolvePackage(require, dir, "@gtkx/native");
|
|
31
|
+
if (native === null) {
|
|
32
|
+
throw new Error("Cannot resolve @gtkx/native from the project; is it installed?");
|
|
33
|
+
}
|
|
34
|
+
const react = resolvePackage(require, dir, "@gtkx/react");
|
|
35
|
+
const reactRuntime = resolvePackage(require, dir, "react");
|
|
36
|
+
const nodeModules = join(dir, "node_modules");
|
|
37
|
+
return {
|
|
38
|
+
giStoreDir: join(nodeModules, ".gtkx", "gi"),
|
|
39
|
+
giLinkDir: join(nodeModules, "@gtkx", "gi"),
|
|
40
|
+
jsxStoreDir: join(nodeModules, ".gtkx", "jsx"),
|
|
41
|
+
jsxLinkDir: join(nodeModules, "@gtkx", "jsx"),
|
|
42
|
+
runtimeVersion: runtime.version,
|
|
43
|
+
react: react !== null && reactRuntime !== null ? { version: react.version } : null,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
export const resolveCodegenContext = async (cwd, mode) => {
|
|
47
|
+
const { config, configFile } = await loadConfig(cwd, { mode });
|
|
48
|
+
if (configFile === undefined)
|
|
49
|
+
return null;
|
|
50
|
+
return { root: cwd, config, configFile };
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=store-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-resolver.js","sourceRoot":"","sources":["../../src/codegen/store-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync, realpathSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { type Config, loadConfig } from \"@gtkx/config\";\n\nexport type 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};\n\ntype ResolvedPackage = { dir: string; version: string };\n\nconst readVersion = (packageJsonPath: string): string => {\n const parsed = JSON.parse(readFileSync(packageJsonPath, \"utf8\")) as { version?: string };\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 return { dir: dirname(real), version: readVersion(real) };\n } catch {\n const unscoped = packageName.replace(/^@[^/]+\\//, \"\");\n const workspacePkg = join(dir, \"packages\", unscoped, \"package.json\");\n if (!existsSync(workspacePkg)) return null;\n const real = realpathSync(workspacePkg);\n return { dir: dirname(real), version: readVersion(real) };\n }\n};\n\nexport const resolveCodegenStore = (dir: string): CodegenStore => {\n const require = createRequire(pathToFileURL(join(dir, \"__gtkx_resolver__.js\")).href);\n\n const runtime = resolvePackage(require, dir, \"@gtkx/runtime\");\n if (runtime === null) {\n throw new Error(\"Cannot resolve @gtkx/runtime from the project; is it installed?\");\n }\n const native = resolvePackage(require, dir, \"@gtkx/native\");\n if (native === null) {\n throw new Error(\"Cannot resolve @gtkx/native from the project; is it installed?\");\n }\n const react = resolvePackage(require, dir, \"@gtkx/react\");\n const reactRuntime = resolvePackage(require, dir, \"react\");\n\n const nodeModules = join(dir, \"node_modules\");\n return {\n giStoreDir: join(nodeModules, \".gtkx\", \"gi\"),\n giLinkDir: join(nodeModules, \"@gtkx\", \"gi\"),\n jsxStoreDir: join(nodeModules, \".gtkx\", \"jsx\"),\n jsxLinkDir: join(nodeModules, \"@gtkx\", \"jsx\"),\n runtimeVersion: runtime.version,\n react: react !== null && reactRuntime !== null ? { version: react.version } : null,\n };\n};\n\nexport type CodegenContext = {\n root: string;\n config: Config;\n configFile: string | undefined;\n};\n\nexport const resolveCodegenContext = async (cwd: string, mode?: string): Promise<CodegenContext | null> => {\n const { config, configFile } = await loadConfig(cwd, { mode });\n if (configFile === undefined) return null;\n return { root: cwd, config, configFile };\n};\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const build: import("citty").CommandDef<{
|
|
2
|
+
readonly entry: import("citty").PositionalArgDef;
|
|
3
|
+
readonly cwd: import("citty").StringArgDef;
|
|
4
|
+
readonly "asset-base": {
|
|
5
|
+
readonly type: "string";
|
|
6
|
+
readonly description: "Asset base path relative to executable directory (e.g., ../share/my-app)";
|
|
7
|
+
};
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,KAAK;;;;;;;EA4BhB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { info } from "@gtkx/utils";
|
|
2
|
+
import { defineCommand } from "citty";
|
|
3
|
+
import { build as buildApp } from "../builder.js";
|
|
4
|
+
import { ensureGenerated } from "../codegen/run-codegen.js";
|
|
5
|
+
import { entryArg, resolveEntry } from "../internal/entry-arg.js";
|
|
6
|
+
const BUILD_MODE = "production";
|
|
7
|
+
export const build = defineCommand({
|
|
8
|
+
meta: {
|
|
9
|
+
name: "build",
|
|
10
|
+
description: "Build application for production",
|
|
11
|
+
},
|
|
12
|
+
args: {
|
|
13
|
+
...entryArg,
|
|
14
|
+
"asset-base": {
|
|
15
|
+
type: "string",
|
|
16
|
+
description: "Asset base path relative to executable directory (e.g., ../share/my-app)",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
async run({ args }) {
|
|
20
|
+
const { cwd, entry } = resolveEntry(args);
|
|
21
|
+
info(`Building ${entry}`);
|
|
22
|
+
await ensureGenerated(cwd, { announce: true, mode: BUILD_MODE });
|
|
23
|
+
await buildApp({
|
|
24
|
+
entry,
|
|
25
|
+
assetBase: args["asset-base"],
|
|
26
|
+
vite: {
|
|
27
|
+
root: cwd,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
info("Build complete: dist/bundle.js");
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,MAAM,CAAC,MAAM,KAAK,GAAG,aAAa,CAAC;IAC/B,IAAI,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,kCAAkC;KAClD;IACD,IAAI,EAAE;QACF,GAAG,QAAQ;QACX,YAAY,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0EAA0E;SAC1F;KACJ;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;QAE1B,MAAM,eAAe,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAEjE,MAAM,QAAQ,CAAC;YACX,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;YAC7B,IAAI,EAAE;gBACF,IAAI,EAAE,GAAG;aACZ;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC3C,CAAC;CACJ,CAAC,CAAC","sourcesContent":["import { info } from \"@gtkx/utils\";\nimport { defineCommand } from \"citty\";\nimport { build as buildApp } from \"../builder.js\";\nimport { ensureGenerated } from \"../codegen/run-codegen.js\";\nimport { entryArg, resolveEntry } from \"../internal/entry-arg.js\";\n\nconst BUILD_MODE = \"production\";\n\nexport const build = defineCommand({\n meta: {\n name: \"build\",\n description: \"Build application for production\",\n },\n args: {\n ...entryArg,\n \"asset-base\": {\n type: \"string\",\n description: \"Asset base path relative to executable directory (e.g., ../share/my-app)\",\n },\n },\n async run({ args }) {\n const { cwd, entry } = resolveEntry(args);\n info(`Building ${entry}`);\n\n await ensureGenerated(cwd, { announce: true, mode: BUILD_MODE });\n\n await buildApp({\n entry,\n assetBase: args[\"asset-base\"],\n vite: {\n root: cwd,\n },\n });\n\n info(\"Build complete: dist/bundle.js\");\n },\n});\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const codegen: import("citty").CommandDef<{
|
|
2
|
+
readonly cwd: import("citty").StringArgDef;
|
|
3
|
+
readonly force: {
|
|
4
|
+
readonly type: "boolean";
|
|
5
|
+
readonly description: "Wipe the generated store and regenerate unconditionally (recover a corrupted store)";
|
|
6
|
+
readonly default: false;
|
|
7
|
+
};
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=codegen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/commands/codegen.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO;;;;;;;EAqClB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { info } from "@gtkx/utils";
|
|
2
|
+
import { defineCommand } from "citty";
|
|
3
|
+
import { formatCodegenResult } from "../codegen/report.js";
|
|
4
|
+
import { ensureGenerated, isCodegenDisabled, runCodegen, syncSchemaEnv } from "../codegen/run-codegen.js";
|
|
5
|
+
import { cwdArg, resolveCwd } from "../internal/entry-arg.js";
|
|
6
|
+
export const codegen = defineCommand({
|
|
7
|
+
meta: {
|
|
8
|
+
name: "codegen",
|
|
9
|
+
description: "Generate TypeScript bindings for the GIR libraries declared in gtkx.config.ts",
|
|
10
|
+
},
|
|
11
|
+
args: {
|
|
12
|
+
force: {
|
|
13
|
+
type: "boolean",
|
|
14
|
+
description: "Wipe the generated store and regenerate unconditionally (recover a corrupted store)",
|
|
15
|
+
default: false,
|
|
16
|
+
},
|
|
17
|
+
...cwdArg,
|
|
18
|
+
},
|
|
19
|
+
async run({ args }) {
|
|
20
|
+
const cwd = resolveCwd(args);
|
|
21
|
+
if (await isCodegenDisabled(cwd)) {
|
|
22
|
+
await runCodegen({ cwd });
|
|
23
|
+
syncSchemaEnv(cwd);
|
|
24
|
+
info("codegen: disabled for this project; reusing an installed binding store");
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (!args.force) {
|
|
28
|
+
const ran = await ensureGenerated(cwd);
|
|
29
|
+
info(ran ? "codegen: regenerated stale bindings" : "codegen: bindings up to date");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const startedAt = Date.now();
|
|
33
|
+
const result = await runCodegen({ cwd, force: true });
|
|
34
|
+
syncSchemaEnv(cwd);
|
|
35
|
+
for (const line of formatCodegenResult(result, Date.now() - startedAt)) {
|
|
36
|
+
info(line);
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=codegen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/commands/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;IACjC,IAAI,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,+EAA+E;KAC/F;IACD,IAAI,EAAE;QACF,KAAK,EAAE;YACH,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,qFAAqF;YAClG,OAAO,EAAE,KAAK;SACjB;QACD,GAAG,MAAM;KACZ;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,MAAM,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1B,aAAa,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,wEAAwE,CAAC,CAAC;YAC/E,OAAO;QACX,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;YACnF,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,aAAa,CAAC,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;IACL,CAAC;CACJ,CAAC,CAAC","sourcesContent":["import { info } from \"@gtkx/utils\";\nimport { defineCommand } from \"citty\";\nimport { formatCodegenResult } from \"../codegen/report.js\";\nimport { ensureGenerated, isCodegenDisabled, runCodegen, syncSchemaEnv } from \"../codegen/run-codegen.js\";\nimport { cwdArg, resolveCwd } from \"../internal/entry-arg.js\";\n\nexport const codegen = defineCommand({\n meta: {\n name: \"codegen\",\n description: \"Generate TypeScript bindings for the GIR libraries declared in gtkx.config.ts\",\n },\n args: {\n force: {\n type: \"boolean\",\n description: \"Wipe the generated store and regenerate unconditionally (recover a corrupted store)\",\n default: false,\n },\n ...cwdArg,\n },\n async run({ args }) {\n const cwd = resolveCwd(args);\n\n if (await isCodegenDisabled(cwd)) {\n await runCodegen({ cwd });\n syncSchemaEnv(cwd);\n info(\"codegen: disabled for this project; reusing an installed binding store\");\n return;\n }\n\n if (!args.force) {\n const ran = await ensureGenerated(cwd);\n info(ran ? \"codegen: regenerated stale bindings\" : \"codegen: bindings up to date\");\n return;\n }\n\n const startedAt = Date.now();\n const result = await runCodegen({ cwd, force: true });\n syncSchemaEnv(cwd);\n\n for (const line of formatCodegenResult(result, Date.now() - startedAt)) {\n info(line);\n }\n },\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,GAAG;;;EAiBd,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
import { ensureGenerated, resolveConfigWatch } from "../codegen/run-codegen.js";
|
|
3
|
+
import { runDevSupervisor } from "../dev/supervisor.js";
|
|
4
|
+
import { entryArg, resolveEntry } from "../internal/entry-arg.js";
|
|
5
|
+
const DEV_MODE = "development";
|
|
6
|
+
export const dev = defineCommand({
|
|
7
|
+
meta: {
|
|
8
|
+
name: "dev",
|
|
9
|
+
description: "Start development server with HMR",
|
|
10
|
+
},
|
|
11
|
+
args: {
|
|
12
|
+
...entryArg,
|
|
13
|
+
},
|
|
14
|
+
async run({ args }) {
|
|
15
|
+
const { cwd, entry: entryPath } = resolveEntry(args);
|
|
16
|
+
await ensureGenerated(cwd, { announce: true, mode: DEV_MODE });
|
|
17
|
+
const watch = await resolveConfigWatch(cwd, DEV_MODE);
|
|
18
|
+
await runDevSupervisor(entryPath, cwd, watch);
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +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,CAAC,MAAM,GAAG,GAAG,aAAa,CAAC;IAC7B,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;QAErD,MAAM,eAAe,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE/D,MAAM,KAAK,GAAyB,MAAM,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE5E,MAAM,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;CACJ,CAAC,CAAC","sourcesContent":["import { defineCommand } from \"citty\";\nimport { ensureGenerated, resolveConfigWatch } from \"../codegen/run-codegen.js\";\nimport { type DevWatch, runDevSupervisor } from \"../dev/supervisor.js\";\nimport { entryArg, resolveEntry } from \"../internal/entry-arg.js\";\n\nconst DEV_MODE = \"development\";\n\nexport const 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\n await ensureGenerated(cwd, { announce: true, mode: DEV_MODE });\n\n const watch: DevWatch | undefined = await resolveConfigWatch(cwd, DEV_MODE);\n\n await runDevSupervisor(entryPath, cwd, watch);\n },\n});\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const docs: import("citty").CommandDef<{
|
|
2
|
+
readonly cwd: import("citty").StringArgDef;
|
|
3
|
+
readonly out: {
|
|
4
|
+
readonly type: "string";
|
|
5
|
+
readonly description: "Output directory for the generated markdown pages, relative to the project root";
|
|
6
|
+
readonly default: "docs/reference";
|
|
7
|
+
};
|
|
8
|
+
readonly "base-path": {
|
|
9
|
+
readonly type: "string";
|
|
10
|
+
readonly description: "URL base path used for links between generated pages";
|
|
11
|
+
readonly default: "/reference";
|
|
12
|
+
};
|
|
13
|
+
readonly force: {
|
|
14
|
+
readonly type: "boolean";
|
|
15
|
+
readonly description: "Regenerate even when the pages are up to date with the GIR libraries";
|
|
16
|
+
readonly default: false;
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;EA0Df,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
import { resolveGirPath, resolveLibraries, writeDocs } from "@gtkx/codegen";
|
|
3
|
+
import { loadConfig } from "@gtkx/config";
|
|
4
|
+
import { info } from "@gtkx/utils";
|
|
5
|
+
import { defineCommand } from "citty";
|
|
6
|
+
import { cwdArg, resolveCwd } from "../internal/entry-arg.js";
|
|
7
|
+
export const docs = defineCommand({
|
|
8
|
+
meta: {
|
|
9
|
+
name: "docs",
|
|
10
|
+
description: "Generate markdown reference pages for the JSX elements of the GIR libraries declared in gtkx.config.ts",
|
|
11
|
+
},
|
|
12
|
+
args: {
|
|
13
|
+
out: {
|
|
14
|
+
type: "string",
|
|
15
|
+
description: "Output directory for the generated markdown pages, relative to the project root",
|
|
16
|
+
default: "docs/reference",
|
|
17
|
+
},
|
|
18
|
+
"base-path": {
|
|
19
|
+
type: "string",
|
|
20
|
+
description: "URL base path used for links between generated pages",
|
|
21
|
+
default: "/reference",
|
|
22
|
+
},
|
|
23
|
+
force: {
|
|
24
|
+
type: "boolean",
|
|
25
|
+
description: "Regenerate even when the pages are up to date with the GIR libraries",
|
|
26
|
+
default: false,
|
|
27
|
+
},
|
|
28
|
+
...cwdArg,
|
|
29
|
+
},
|
|
30
|
+
async run({ args }) {
|
|
31
|
+
const cwd = resolveCwd(args);
|
|
32
|
+
const { config } = await loadConfig(cwd);
|
|
33
|
+
if (config.codegen === false) {
|
|
34
|
+
throw new Error("codegen is disabled for this project, so there are no GIR libraries to document. Remove `codegen: false` from gtkx.config.ts to use `gtkx docs`.");
|
|
35
|
+
}
|
|
36
|
+
const girPath = resolveGirPath(config.girPath);
|
|
37
|
+
if (girPath.length === 0) {
|
|
38
|
+
throw new Error("No GIR search paths available. Install gobject-introspection (Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), or set `girPath` in gtkx.config.ts.");
|
|
39
|
+
}
|
|
40
|
+
const libraries = resolveLibraries(config.libraries, girPath);
|
|
41
|
+
const startedAt = Date.now();
|
|
42
|
+
const outDir = resolve(cwd, args.out);
|
|
43
|
+
const { regenerated, namespaces } = writeDocs({
|
|
44
|
+
libraries,
|
|
45
|
+
girPath,
|
|
46
|
+
outDir,
|
|
47
|
+
basePath: args["base-path"],
|
|
48
|
+
elementProps: config.elementProps ?? {},
|
|
49
|
+
force: args.force,
|
|
50
|
+
});
|
|
51
|
+
if (!regenerated) {
|
|
52
|
+
info(`docs: pages in ${outDir} are up to date`);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const count = namespaces.reduce((total, namespace) => total + namespace.elements.length, 0);
|
|
56
|
+
info(`docs: wrote ${count} element pages across ${namespaces.length} namespaces to ${outDir} in ${Date.now() - startedAt}ms`);
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC;IAC9B,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EACP,wGAAwG;KAC/G;IACD,IAAI,EAAE;QACF,GAAG,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iFAAiF;YAC9F,OAAO,EAAE,gBAAgB;SAC5B;QACD,WAAW,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,sDAAsD;YACnE,OAAO,EAAE,YAAY;SACxB;QACD,KAAK,EAAE;YACH,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,sEAAsE;YACnF,OAAO,EAAE,KAAK;SACjB;QACD,GAAG,MAAM;KACZ;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACX,kJAAkJ,CACrJ,CAAC;QACN,CAAC;QACD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACX,wMAAwM,CAC3M,CAAC;QACN,CAAC;QACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;YAC1C,SAAS;YACT,OAAO;YACP,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,IAAI,CAAC,kBAAkB,MAAM,iBAAiB,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5F,IAAI,CACA,eAAe,KAAK,yBAAyB,UAAU,CAAC,MAAM,kBAAkB,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,CAC1H,CAAC;IACN,CAAC;CACJ,CAAC,CAAC","sourcesContent":["import { resolve } from \"node:path\";\nimport { resolveGirPath, resolveLibraries, writeDocs } from \"@gtkx/codegen\";\nimport { loadConfig } from \"@gtkx/config\";\nimport { info } from \"@gtkx/utils\";\nimport { defineCommand } from \"citty\";\nimport { cwdArg, resolveCwd } from \"../internal/entry-arg.js\";\n\nexport const docs = defineCommand({\n meta: {\n name: \"docs\",\n description:\n \"Generate markdown reference pages for the JSX elements of the GIR libraries declared in gtkx.config.ts\",\n },\n args: {\n out: {\n type: \"string\",\n description: \"Output directory for the generated markdown pages, relative to the project root\",\n default: \"docs/reference\",\n },\n \"base-path\": {\n type: \"string\",\n description: \"URL base path used for links between generated pages\",\n default: \"/reference\",\n },\n force: {\n type: \"boolean\",\n description: \"Regenerate even when the pages are up to date with the GIR libraries\",\n default: false,\n },\n ...cwdArg,\n },\n async run({ args }) {\n const cwd = resolveCwd(args);\n const { config } = await loadConfig(cwd);\n if (config.codegen === false) {\n throw new Error(\n \"codegen is disabled for this project, so there are no GIR libraries to document. Remove `codegen: false` from gtkx.config.ts to use `gtkx docs`.\",\n );\n }\n const girPath = resolveGirPath(config.girPath);\n if (girPath.length === 0) {\n throw new Error(\n \"No GIR search paths available. Install gobject-introspection (Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), or set `girPath` in gtkx.config.ts.\",\n );\n }\n const libraries = resolveLibraries(config.libraries, girPath);\n const startedAt = Date.now();\n const outDir = resolve(cwd, args.out);\n const { regenerated, namespaces } = writeDocs({\n libraries,\n girPath,\n outDir,\n basePath: args[\"base-path\"],\n elementProps: config.elementProps ?? {},\n force: args.force,\n });\n if (!regenerated) {\n info(`docs: pages in ${outDir} are up to date`);\n return;\n }\n const count = namespaces.reduce((total, namespace) => total + namespace.elements.length, 0);\n info(\n `docs: wrote ${count} element pages across ${namespaces.length} namespaces to ${outDir} in ${Date.now() - startedAt}ms`,\n );\n },\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-dir.d.ts","sourceRoot":"","sources":["../../src/dev/icon-dir.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,SAAU,MAAM,WAAW,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IAMjF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { prependXdgDataDir } from "../internal/xdg-data-dirs.js";
|
|
4
|
+
export const prepareDevIconDir = (root, dataDir) => {
|
|
5
|
+
if (dataDir === null)
|
|
6
|
+
return null;
|
|
7
|
+
const shareDir = join(root, dataDir);
|
|
8
|
+
if (!existsSync(join(shareDir, "icons")))
|
|
9
|
+
return null;
|
|
10
|
+
process.env.XDG_DATA_DIRS = prependXdgDataDir(shareDir, process.env.XDG_DATA_DIRS);
|
|
11
|
+
return shareDir;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=icon-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-dir.js","sourceRoot":"","sources":["../../src/dev/icon-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,OAAsB,EAAiB,EAAE;IACrF,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACnF,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC","sourcesContent":["import { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { prependXdgDataDir } from \"../internal/xdg-data-dirs.js\";\n\nexport const prepareDevIconDir = (root: string, dataDir: string | null): string | null => {\n if (dataDir === null) return null;\n const shareDir = join(root, dataDir);\n if (!existsSync(join(shareDir, \"icons\"))) return null;\n process.env.XDG_DATA_DIRS = prependXdgDataDir(shareDir, process.env.XDG_DATA_DIRS);\n return shareDir;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-tracker.d.ts","sourceRoot":"","sources":["../../src/dev/refresh-tracker.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IACzB,cAAc,IAAI,IAAI,CAAC;IACvB,YAAY,IAAI,OAAO,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,oBAAoB,mBAAoB,MAAM,IAAI,KAAG,cAejE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const createRefreshTracker = (performRefresh) => {
|
|
2
|
+
let refreshing = false;
|
|
3
|
+
return {
|
|
4
|
+
performRefresh: () => {
|
|
5
|
+
refreshing = true;
|
|
6
|
+
try {
|
|
7
|
+
performRefresh();
|
|
8
|
+
}
|
|
9
|
+
finally {
|
|
10
|
+
setTimeout(() => {
|
|
11
|
+
refreshing = false;
|
|
12
|
+
}, 0);
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
isRefreshing: () => refreshing,
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=refresh-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-tracker.js","sourceRoot":"","sources":["../../src/dev/refresh-tracker.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,cAA0B,EAAkB,EAAE;IAC/E,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,OAAO;QACH,cAAc,EAAE,GAAG,EAAE;YACjB,UAAU,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC;gBACD,cAAc,EAAE,CAAC;YACrB,CAAC;oBAAS,CAAC;gBACP,UAAU,CAAC,GAAG,EAAE;oBACZ,UAAU,GAAG,KAAK,CAAC;gBACvB,CAAC,EAAE,CAAC,CAAC,CAAC;YACV,CAAC;QACL,CAAC;QACD,YAAY,EAAE,GAAG,EAAE,CAAC,UAAU;KACjC,CAAC;AACN,CAAC,CAAC","sourcesContent":["export type RefreshTracker = {\n performRefresh(): void;\n isRefreshing(): boolean;\n};\n\nexport const createRefreshTracker = (performRefresh: () => void): RefreshTracker => {\n let refreshing = false;\n return {\n performRefresh: () => {\n refreshing = true;\n try {\n performRefresh();\n } finally {\n setTimeout(() => {\n refreshing = false;\n }, 0);\n }\n },\n isRefreshing: () => refreshing,\n };\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-deps.d.ts","sourceRoot":"","sources":["../../src/dev/runner-deps.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,eAAO,MAAM,oBAAoB,QAAO,aAyBtC,CAAC"}
|