@gtkx/cli 0.21.0 → 1.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +173 -0
- package/bin/gtkx-dev-runner.js +9 -0
- package/dist/builder.d.ts +5 -52
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +24 -57
- package/dist/builder.js.map +1 -1
- package/dist/cli.d.ts +1 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +24 -122
- package/dist/cli.js.map +1 -1
- package/dist/codegen/freshness.d.ts +11 -0
- package/dist/codegen/freshness.d.ts.map +1 -0
- package/dist/codegen/freshness.js +45 -0
- package/dist/codegen/freshness.js.map +1 -0
- package/dist/codegen/report.d.ts +4 -0
- package/dist/codegen/report.d.ts.map +1 -0
- package/dist/codegen/report.js +18 -0
- package/dist/codegen/report.js.map +1 -0
- package/dist/codegen/run-codegen.d.ts +35 -0
- package/dist/codegen/run-codegen.d.ts.map +1 -0
- package/dist/codegen/run-codegen.js +162 -0
- package/dist/codegen/run-codegen.js.map +1 -0
- package/dist/codegen/store-resolver.d.ts +24 -0
- package/dist/codegen/store-resolver.d.ts.map +1 -0
- package/dist/codegen/store-resolver.js +72 -0
- package/dist/codegen/store-resolver.js.map +1 -0
- package/dist/commands/build.d.ts +10 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +34 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/codegen.d.ts +10 -0
- package/dist/commands/codegen.d.ts.map +1 -0
- package/dist/commands/codegen.js +42 -0
- package/dist/commands/codegen.js.map +1 -0
- package/dist/commands/dev.d.ts +6 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +22 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/docs.d.ts +20 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +74 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/dev/icon-dir.d.ts +3 -0
- package/dist/dev/icon-dir.d.ts.map +1 -0
- package/dist/dev/icon-dir.js +16 -0
- package/dist/dev/icon-dir.js.map +1 -0
- package/dist/dev/refresh-tracker.d.ts +7 -0
- package/dist/dev/refresh-tracker.d.ts.map +1 -0
- package/dist/dev/refresh-tracker.js +19 -0
- package/dist/dev/refresh-tracker.js.map +1 -0
- package/dist/dev/runner-deps.d.ts +4 -0
- package/dist/dev/runner-deps.d.ts.map +1 -0
- package/dist/dev/runner-deps.js +55 -0
- package/dist/dev/runner-deps.js.map +1 -0
- package/dist/dev/runner-main.d.ts +3 -0
- package/dist/dev/runner-main.d.ts.map +1 -0
- package/dist/dev/runner-main.js +29 -0
- package/dist/dev/runner-main.js.map +1 -0
- package/dist/dev/runner.d.ts +24 -0
- package/dist/dev/runner.d.ts.map +1 -0
- package/dist/dev/runner.js +119 -0
- package/dist/dev/runner.js.map +1 -0
- package/dist/dev/schema-dir.d.ts +3 -0
- package/dist/dev/schema-dir.d.ts.map +1 -0
- package/dist/dev/schema-dir.js +12 -0
- package/dist/dev/schema-dir.js.map +1 -0
- package/dist/dev/supervisor.d.ts +18 -0
- package/dist/dev/supervisor.d.ts.map +1 -0
- package/dist/dev/supervisor.js +182 -0
- package/dist/dev/supervisor.js.map +1 -0
- package/dist/dev/vite-dev-server.d.ts +21 -0
- package/dist/dev/vite-dev-server.d.ts.map +1 -0
- package/dist/dev/vite-dev-server.js +13 -0
- package/dist/dev/vite-dev-server.js.map +1 -0
- package/dist/internal/banner.d.ts +4 -0
- package/dist/internal/banner.d.ts.map +1 -0
- package/dist/internal/banner.js +9 -0
- package/dist/internal/banner.js.map +1 -0
- package/dist/internal/data-dir.d.ts +4 -0
- package/dist/internal/data-dir.d.ts.map +1 -0
- package/dist/internal/data-dir.js +52 -0
- package/dist/internal/data-dir.js.map +1 -0
- package/dist/internal/entry-arg.d.ts +20 -0
- package/dist/internal/entry-arg.d.ts.map +1 -0
- package/dist/internal/entry-arg.js +36 -0
- package/dist/internal/entry-arg.js.map +1 -0
- package/dist/internal/errors.d.ts +5 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/errors.js +29 -0
- package/dist/internal/errors.js.map +1 -0
- package/dist/internal/list-files.d.ts +7 -0
- package/dist/internal/list-files.d.ts.map +1 -0
- package/dist/internal/list-files.js +15 -0
- package/dist/internal/list-files.js.map +1 -0
- package/dist/internal/resolve-cli-tool.d.ts +3 -0
- package/dist/internal/resolve-cli-tool.d.ts.map +1 -0
- package/dist/internal/resolve-cli-tool.js +27 -0
- package/dist/internal/resolve-cli-tool.js.map +1 -0
- package/dist/internal/staging-dir.d.ts +4 -0
- package/dist/internal/staging-dir.d.ts.map +1 -0
- package/dist/internal/staging-dir.js +17 -0
- package/dist/internal/staging-dir.js.map +1 -0
- package/dist/internal/xdg-data-dirs.d.ts +3 -0
- package/dist/internal/xdg-data-dirs.d.ts.map +1 -0
- package/dist/internal/xdg-data-dirs.js +10 -0
- package/dist/internal/xdg-data-dirs.js.map +1 -0
- package/dist/mcp/client.d.ts +28 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +182 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/handlers.d.ts +9 -0
- package/dist/mcp/handlers.d.ts.map +1 -0
- package/dist/mcp/handlers.js +147 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +34 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/serialize-widget.d.ts +10 -0
- package/dist/mcp/serialize-widget.d.ts.map +1 -0
- package/dist/mcp/serialize-widget.js +23 -0
- package/dist/mcp/serialize-widget.js.map +1 -0
- package/dist/mcp/testing-loader.d.ts +5 -0
- package/dist/mcp/testing-loader.d.ts.map +1 -0
- package/dist/mcp/testing-loader.js +47 -0
- package/dist/mcp/testing-loader.js.map +1 -0
- package/dist/mcp/widget-registry.d.ts +14 -0
- package/dist/mcp/widget-registry.d.ts.map +1 -0
- package/dist/mcp/widget-registry.js +39 -0
- package/dist/mcp/widget-registry.js.map +1 -0
- package/dist/refresh-globals.d.ts +2 -0
- package/dist/refresh-globals.d.ts.map +1 -0
- package/dist/refresh-globals.js +8 -0
- package/dist/refresh-globals.js.map +1 -0
- package/dist/refresh-runtime.d.ts +10 -26
- package/dist/refresh-runtime.d.ts.map +1 -1
- package/dist/refresh-runtime.js +26 -48
- package/dist/refresh-runtime.js.map +1 -1
- package/dist/settings/compile.d.ts +3 -0
- package/dist/settings/compile.d.ts.map +1 -0
- package/dist/settings/compile.js +21 -0
- package/dist/settings/compile.js.map +1 -0
- package/dist/settings/parser.d.ts +24 -0
- package/dist/settings/parser.d.ts.map +1 -0
- package/dist/settings/parser.js +121 -0
- package/dist/settings/parser.js.map +1 -0
- package/dist/settings/render.d.ts +5 -0
- package/dist/settings/render.d.ts.map +1 -0
- package/dist/settings/render.js +122 -0
- package/dist/settings/render.js.map +1 -0
- package/dist/settings/schema.d.ts +13 -0
- package/dist/settings/schema.d.ts.map +1 -0
- package/dist/settings/schema.js +121 -0
- package/dist/settings/schema.js.map +1 -0
- package/dist/vite-plugins/asset-extensions.d.ts +5 -0
- package/dist/vite-plugins/asset-extensions.d.ts.map +1 -0
- package/dist/vite-plugins/asset-extensions.js +28 -0
- package/dist/vite-plugins/asset-extensions.js.map +1 -0
- package/dist/vite-plugins/built-url.d.ts +4 -0
- package/dist/vite-plugins/built-url.d.ts.map +1 -0
- package/dist/vite-plugins/built-url.js +36 -0
- package/dist/vite-plugins/built-url.js.map +1 -0
- package/dist/vite-plugins/css.d.ts +4 -0
- package/dist/vite-plugins/css.d.ts.map +1 -0
- package/dist/vite-plugins/css.js +38 -0
- package/dist/vite-plugins/css.js.map +1 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts +8 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts.map +1 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.js +19 -0
- package/dist/vite-plugins/fast-refresh/refresh-filter.js.map +1 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts +6 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts.map +1 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.js +70 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.js.map +1 -0
- package/dist/vite-plugins/icons.d.ts +4 -0
- package/dist/vite-plugins/icons.d.ts.map +1 -0
- package/dist/vite-plugins/icons.js +51 -0
- package/dist/vite-plugins/icons.js.map +1 -0
- package/dist/vite-plugins/index.d.ts +4 -0
- package/dist/vite-plugins/index.d.ts.map +1 -0
- package/dist/vite-plugins/index.js +22 -0
- package/dist/vite-plugins/index.js.map +1 -0
- package/dist/vite-plugins/native.d.ts +4 -0
- package/dist/vite-plugins/native.d.ts.map +1 -0
- package/dist/vite-plugins/native.js +62 -0
- package/dist/vite-plugins/native.js.map +1 -0
- package/dist/vite-plugins/react-compiler.d.ts +5 -0
- package/dist/vite-plugins/react-compiler.d.ts.map +1 -0
- package/dist/vite-plugins/react-compiler.js +62 -0
- package/dist/vite-plugins/react-compiler.js.map +1 -0
- package/dist/vite-plugins/react-dom-prebundle.d.ts +4 -0
- package/dist/vite-plugins/react-dom-prebundle.d.ts.map +1 -0
- package/dist/vite-plugins/react-dom-prebundle.js +12 -0
- package/dist/vite-plugins/react-dom-prebundle.js.map +1 -0
- package/dist/vite-plugins/resource-init-module.d.ts +6 -0
- package/dist/vite-plugins/resource-init-module.d.ts.map +1 -0
- package/dist/vite-plugins/resource-init-module.js +51 -0
- package/dist/vite-plugins/resource-init-module.js.map +1 -0
- package/dist/vite-plugins/resource-shared.d.ts +8 -0
- package/dist/vite-plugins/resource-shared.d.ts.map +1 -0
- package/dist/vite-plugins/resource-shared.js +28 -0
- package/dist/vite-plugins/resource-shared.js.map +1 -0
- package/dist/vite-plugins/resources.d.ts +5 -0
- package/dist/vite-plugins/resources.d.ts.map +1 -0
- package/dist/vite-plugins/resources.js +260 -0
- package/dist/vite-plugins/resources.js.map +1 -0
- package/dist/vite-plugins/settings-worker-env.d.ts +4 -0
- package/dist/vite-plugins/settings-worker-env.d.ts.map +1 -0
- package/dist/vite-plugins/settings-worker-env.js +23 -0
- package/dist/vite-plugins/settings-worker-env.js.map +1 -0
- package/dist/vite-plugins/settings.d.ts +4 -0
- package/dist/vite-plugins/settings.d.ts.map +1 -0
- package/dist/vite-plugins/settings.js +214 -0
- package/dist/vite-plugins/settings.js.map +1 -0
- package/dist/vite-plugins/strip-query.d.ts +3 -0
- package/dist/vite-plugins/strip-query.d.ts.map +1 -0
- package/dist/vite-plugins/strip-query.js +6 -0
- package/dist/vite-plugins/strip-query.js.map +1 -0
- package/dist/vite-plugins/undeclared-library.d.ts +4 -0
- package/dist/vite-plugins/undeclared-library.d.ts.map +1 -0
- package/dist/vite-plugins/undeclared-library.js +50 -0
- package/dist/vite-plugins/undeclared-library.js.map +1 -0
- package/dist/vite-plugins/virtual-module.d.ts +22 -0
- package/dist/vite-plugins/virtual-module.d.ts.map +1 -0
- package/dist/vite-plugins/virtual-module.js +20 -0
- package/dist/vite-plugins/virtual-module.js.map +1 -0
- package/dist/vitest-plugin.d.ts +10 -0
- package/dist/vitest-plugin.d.ts.map +1 -0
- package/dist/vitest-plugin.js +12 -0
- package/dist/vitest-plugin.js.map +1 -0
- package/env.d.ts +91 -8
- package/package.json +30 -38
- package/src/babel-modules.d.ts +11 -0
- package/src/builder.ts +31 -86
- package/src/cli.ts +42 -0
- package/src/codegen/freshness.ts +65 -0
- package/src/codegen/report.ts +28 -0
- package/src/codegen/run-codegen.ts +260 -0
- package/src/codegen/store-resolver.ts +116 -0
- package/src/commands/build.ts +38 -0
- package/src/commands/codegen.ts +49 -0
- package/src/commands/dev.ts +24 -0
- package/src/commands/docs.ts +95 -0
- package/src/dev/icon-dir.ts +21 -0
- package/src/dev/refresh-tracker.ts +25 -0
- package/src/dev/runner-deps.ts +65 -0
- package/src/dev/runner-main.ts +34 -0
- package/src/dev/runner.ts +185 -0
- package/src/dev/schema-dir.ts +16 -0
- package/src/dev/supervisor.ts +276 -0
- package/src/dev/vite-dev-server.ts +36 -0
- package/src/internal/banner.ts +13 -0
- package/src/internal/data-dir.ts +70 -0
- package/src/internal/entry-arg.ts +46 -0
- package/src/internal/errors.ts +36 -0
- package/src/internal/list-files.ts +23 -0
- package/src/internal/resolve-cli-tool.ts +37 -0
- package/src/internal/staging-dir.ts +19 -0
- package/src/internal/xdg-data-dirs.ts +13 -0
- package/src/mcp/client.ts +235 -0
- package/src/mcp/handlers.ts +213 -0
- package/src/mcp/index.ts +46 -0
- package/src/mcp/serialize-widget.ts +41 -0
- package/src/mcp/testing-loader.ts +73 -0
- package/src/mcp/widget-registry.ts +49 -0
- package/src/refresh-globals.ts +10 -0
- package/src/refresh-runtime.ts +30 -55
- package/src/settings/compile.ts +22 -0
- package/src/settings/parser.ts +193 -0
- package/src/settings/render.ts +167 -0
- package/src/settings/schema.ts +169 -0
- package/src/vite-plugins/asset-extensions.ts +29 -0
- package/src/vite-plugins/built-url.ts +50 -0
- package/src/vite-plugins/css.ts +53 -0
- package/src/vite-plugins/fast-refresh/refresh-filter.ts +26 -0
- package/src/vite-plugins/fast-refresh/swc-refresh.ts +92 -0
- package/src/vite-plugins/icons.ts +74 -0
- package/src/vite-plugins/index.ts +25 -0
- package/src/vite-plugins/native.ts +83 -0
- package/src/vite-plugins/react-compiler.ts +84 -0
- package/src/vite-plugins/react-dom-prebundle.ts +17 -0
- package/src/vite-plugins/resource-init-module.ts +57 -0
- package/src/vite-plugins/resource-shared.ts +40 -0
- package/src/vite-plugins/resources.ts +366 -0
- package/src/vite-plugins/settings-worker-env.ts +30 -0
- package/src/vite-plugins/settings.ts +286 -0
- package/src/vite-plugins/strip-query.ts +7 -0
- package/src/vite-plugins/undeclared-library.ts +78 -0
- package/src/vite-plugins/virtual-module.ts +44 -0
- package/src/vitest-plugin.ts +13 -0
- package/dist/create.d.ts +0 -55
- package/dist/create.d.ts.map +0 -1
- package/dist/create.js +0 -236
- package/dist/create.js.map +0 -1
- package/dist/dev-server.d.ts +0 -37
- package/dist/dev-server.d.ts.map +0 -1
- package/dist/dev-server.js +0 -130
- package/dist/dev-server.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -4
- package/dist/index.js.map +0 -1
- package/dist/mcp-client.d.ts +0 -31
- package/dist/mcp-client.d.ts.map +0 -1
- package/dist/mcp-client.js +0 -430
- package/dist/mcp-client.js.map +0 -1
- package/dist/templates.d.ts +0 -9
- package/dist/templates.d.ts.map +0 -1
- package/dist/templates.js +0 -16
- package/dist/templates.js.map +0 -1
- package/dist/vite-plugin-gtkx-assets.d.ts +0 -20
- package/dist/vite-plugin-gtkx-assets.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-assets.js +0 -57
- package/dist/vite-plugin-gtkx-assets.js.map +0 -1
- package/dist/vite-plugin-gtkx-built-url.d.ts +0 -18
- package/dist/vite-plugin-gtkx-built-url.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-built-url.js +0 -43
- package/dist/vite-plugin-gtkx-built-url.js.map +0 -1
- package/dist/vite-plugin-gtkx-gsettings.d.ts +0 -28
- package/dist/vite-plugin-gtkx-gsettings.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-gsettings.js +0 -147
- package/dist/vite-plugin-gtkx-gsettings.js.map +0 -1
- package/dist/vite-plugin-gtkx-native.d.ts +0 -14
- package/dist/vite-plugin-gtkx-native.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-native.js +0 -53
- package/dist/vite-plugin-gtkx-native.js.map +0 -1
- package/dist/vite-plugin-gtkx-refresh.d.ts +0 -8
- package/dist/vite-plugin-gtkx-refresh.d.ts.map +0 -1
- package/dist/vite-plugin-gtkx-refresh.js +0 -37
- package/dist/vite-plugin-gtkx-refresh.js.map +0 -1
- package/dist/vite-plugin-swc-ssr-refresh.d.ts +0 -8
- package/dist/vite-plugin-swc-ssr-refresh.d.ts.map +0 -1
- package/dist/vite-plugin-swc-ssr-refresh.js +0 -46
- package/dist/vite-plugin-swc-ssr-refresh.js.map +0 -1
- package/src/cli.tsx +0 -154
- package/src/create.ts +0 -326
- package/src/dev-server.tsx +0 -162
- package/src/index.ts +0 -3
- package/src/mcp-client.ts +0 -518
- package/src/templates.ts +0 -26
- package/src/vite-plugin-gtkx-assets.ts +0 -69
- package/src/vite-plugin-gtkx-built-url.ts +0 -48
- package/src/vite-plugin-gtkx-gsettings.ts +0 -168
- package/src/vite-plugin-gtkx-native.ts +0 -64
- package/src/vite-plugin-gtkx-refresh.ts +0 -54
- package/src/vite-plugin-swc-ssr-refresh.ts +0 -61
- package/templates/claude/EXAMPLES.md.ejs +0 -744
- package/templates/claude/SKILL.md.ejs +0 -93
- package/templates/claude/WIDGETS.md.ejs +0 -820
- package/templates/config/vitest.config.ts.ejs +0 -11
- package/templates/gitignore.ejs +0 -4
- package/templates/package.json.ejs +0 -16
- package/templates/src/app.tsx.ejs +0 -32
- package/templates/src/dev.tsx.ejs +0 -5
- package/templates/src/gtkx-env.d.ts.ejs +0 -1
- package/templates/src/index.tsx.ejs +0 -5
- package/templates/tests/app.test.tsx.ejs +0 -16
- package/templates/tsconfig.json.ejs +0 -14
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { error, errorMessage, info } from "@gtkx/utils";
|
|
2
|
+
import { mkdtempSync, readFileSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { basename, join } from "node:path";
|
|
5
|
+
import { prependBanner } from "../internal/banner.js";
|
|
6
|
+
import { resolveDataDir } from "../internal/data-dir.js";
|
|
7
|
+
import { removeTempDir, withStagingDir } from "../internal/staging-dir.js";
|
|
8
|
+
import { compileSchemas } from "../settings/compile.js";
|
|
9
|
+
import { parseSchemaXml, SchemaParseError } from "../settings/parser.js";
|
|
10
|
+
import { renderRuntimeModule } from "../settings/render.js";
|
|
11
|
+
import { emitSchemaEnv, prependSchemaDir, SCHEMA_SUFFIX, stageSchema } from "../settings/schema.js";
|
|
12
|
+
import { createVirtualNamespace } from "./virtual-module.js";
|
|
13
|
+
const VIRTUAL_PREFIX = "\0gtkx-settings:";
|
|
14
|
+
const { isVirtual, fromVirtualId, resolveToVirtual } = createVirtualNamespace(VIRTUAL_PREFIX);
|
|
15
|
+
const SCHEMA_ENV_BANNER = [
|
|
16
|
+
"process.env.GSETTINGS_SCHEMA_DIR = [",
|
|
17
|
+
" decodeURIComponent(new URL(\".\", import.meta.url).pathname),",
|
|
18
|
+
" process.env.GSETTINGS_SCHEMA_DIR,",
|
|
19
|
+
"]",
|
|
20
|
+
" .filter(Boolean)",
|
|
21
|
+
" .join(\":\");",
|
|
22
|
+
].join("\n");
|
|
23
|
+
const ensureSchemaDir = (state) => {
|
|
24
|
+
if (!state.schemaDir) {
|
|
25
|
+
const runnerDir = process.env.GTKX_DEV_SCHEMA_DIR;
|
|
26
|
+
if (runnerDir) {
|
|
27
|
+
state.schemaDir = runnerDir;
|
|
28
|
+
return runnerDir;
|
|
29
|
+
}
|
|
30
|
+
const dir = mkdtempSync(join(tmpdir(), "gtkx-schemas-"));
|
|
31
|
+
state.schemaDir = dir;
|
|
32
|
+
const cleanup = () => {
|
|
33
|
+
removeTempDir(dir);
|
|
34
|
+
};
|
|
35
|
+
state.cleanupProcessExit = cleanup;
|
|
36
|
+
process.once("exit", cleanup);
|
|
37
|
+
}
|
|
38
|
+
return state.schemaDir;
|
|
39
|
+
};
|
|
40
|
+
const releaseSchemaDir = (state) => {
|
|
41
|
+
if (!state.schemaDir) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (state.cleanupProcessExit) {
|
|
45
|
+
removeTempDir(state.schemaDir);
|
|
46
|
+
process.removeListener("exit", state.cleanupProcessExit);
|
|
47
|
+
state.cleanupProcessExit = null;
|
|
48
|
+
}
|
|
49
|
+
state.schemaDir = null;
|
|
50
|
+
};
|
|
51
|
+
const compileSchemaDir = (state) => {
|
|
52
|
+
if (!state.schemaDir) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
compileSchemas(state.schemaDir);
|
|
56
|
+
process.env.GSETTINGS_SCHEMA_DIR = prependSchemaDir(state.schemaDir, process.env.GSETTINGS_SCHEMA_DIR);
|
|
57
|
+
};
|
|
58
|
+
const syncSchemaEnv = (state) => {
|
|
59
|
+
if (state.rootDir === null) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
emitSchemaEnv(state.rootDir, state.dataDir);
|
|
64
|
+
}
|
|
65
|
+
catch (error_) {
|
|
66
|
+
error(`Failed to generate GSettings schema types: ${errorMessage(error_)}`);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const applyUserConfig = (state, config) => {
|
|
70
|
+
state.dataDir = resolveDataDir(config.root ?? process.cwd());
|
|
71
|
+
};
|
|
72
|
+
const applyResolvedConfig = (state, config) => {
|
|
73
|
+
state.isBuild = config.command === "build";
|
|
74
|
+
state.rootDir = typeof config.root === "string" ? config.root : null;
|
|
75
|
+
syncSchemaEnv(state);
|
|
76
|
+
};
|
|
77
|
+
const registerSchemaForMode = (state, filePath, id) => {
|
|
78
|
+
const fileName = basename(filePath);
|
|
79
|
+
if (state.isBuild) {
|
|
80
|
+
state.buildSchemas.add(filePath);
|
|
81
|
+
info(`Queued GSettings schema: ${fileName}`);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
state.trackedSchemas.set(filePath, id);
|
|
85
|
+
const dir = ensureSchemaDir(state);
|
|
86
|
+
stageSchema(dir, filePath);
|
|
87
|
+
compileSchemaDir(state);
|
|
88
|
+
info(`Compiled GSettings schema: ${fileName}`);
|
|
89
|
+
};
|
|
90
|
+
const loadSchemaModule = (ctx, state, id) => {
|
|
91
|
+
if (!isVirtual(id)) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
const filePath = fromVirtualId(id);
|
|
95
|
+
const xml = readFileSync(filePath, "utf8");
|
|
96
|
+
const fileName = basename(filePath);
|
|
97
|
+
registerSchemaForMode(state, filePath, id);
|
|
98
|
+
let parsed;
|
|
99
|
+
try {
|
|
100
|
+
parsed = parseSchemaXml(xml, fileName);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (!(error instanceof SchemaParseError)) {
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
ctx.error(error.message);
|
|
107
|
+
}
|
|
108
|
+
if (parsed.schemas.length === 0) {
|
|
109
|
+
ctx.error(`No <schema id="..."> found in ${fileName}`);
|
|
110
|
+
}
|
|
111
|
+
return renderRuntimeModule(parsed);
|
|
112
|
+
};
|
|
113
|
+
const emitCompiledSchemas = (ctx, state) => {
|
|
114
|
+
if (!state.isBuild || state.buildSchemas.size === 0) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const compiled = withStagingDir("schemas-build", (dir) => {
|
|
118
|
+
for (const filePath of state.buildSchemas) {
|
|
119
|
+
stageSchema(dir, filePath);
|
|
120
|
+
}
|
|
121
|
+
compileSchemas(dir);
|
|
122
|
+
return readFileSync(join(dir, "gschemas.compiled"));
|
|
123
|
+
});
|
|
124
|
+
ctx.emitFile({
|
|
125
|
+
type: "asset",
|
|
126
|
+
fileName: "gschemas.compiled",
|
|
127
|
+
source: compiled,
|
|
128
|
+
});
|
|
129
|
+
info(`Compiled ${String(state.buildSchemas.size)} GSettings schema(s)`);
|
|
130
|
+
};
|
|
131
|
+
const handleSchemaHotUpdate = (state, file, server) => {
|
|
132
|
+
if (file.endsWith(SCHEMA_SUFFIX)) {
|
|
133
|
+
syncSchemaEnv(state);
|
|
134
|
+
}
|
|
135
|
+
const virtualId = state.trackedSchemas.get(file);
|
|
136
|
+
if (!virtualId) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const dir = ensureSchemaDir(state);
|
|
140
|
+
stageSchema(dir, file);
|
|
141
|
+
compileSchemaDir(state);
|
|
142
|
+
info(`Recompiled GSettings schema: ${basename(file)}`);
|
|
143
|
+
const mod = server.moduleGraph.getModuleById(virtualId);
|
|
144
|
+
if (mod) {
|
|
145
|
+
server.moduleGraph.invalidateModule(mod);
|
|
146
|
+
return [mod];
|
|
147
|
+
}
|
|
148
|
+
return undefined;
|
|
149
|
+
};
|
|
150
|
+
const watchSchemaFiles = (state, server) => {
|
|
151
|
+
server.httpServer?.once("close", () => {
|
|
152
|
+
releaseSchemaDir(state);
|
|
153
|
+
});
|
|
154
|
+
server.watcher.once("close", () => {
|
|
155
|
+
releaseSchemaDir(state);
|
|
156
|
+
});
|
|
157
|
+
const refreshSchemaTypes = (file) => {
|
|
158
|
+
if (file.endsWith(SCHEMA_SUFFIX)) {
|
|
159
|
+
syncSchemaEnv(state);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
server.watcher.on("add", refreshSchemaTypes);
|
|
163
|
+
server.watcher.on("unlink", refreshSchemaTypes);
|
|
164
|
+
};
|
|
165
|
+
function gtkxSettings() {
|
|
166
|
+
const state = {
|
|
167
|
+
schemaDir: null,
|
|
168
|
+
rootDir: null,
|
|
169
|
+
dataDir: null,
|
|
170
|
+
isBuild: false,
|
|
171
|
+
trackedSchemas: new Map(),
|
|
172
|
+
buildSchemas: new Set(),
|
|
173
|
+
cleanupProcessExit: null,
|
|
174
|
+
};
|
|
175
|
+
return {
|
|
176
|
+
name: "gtkx:settings",
|
|
177
|
+
enforce: "pre",
|
|
178
|
+
config(config) {
|
|
179
|
+
applyUserConfig(state, config);
|
|
180
|
+
},
|
|
181
|
+
configResolved(config) {
|
|
182
|
+
applyResolvedConfig(state, config);
|
|
183
|
+
},
|
|
184
|
+
configureServer(server) {
|
|
185
|
+
watchSchemaFiles(state, server);
|
|
186
|
+
},
|
|
187
|
+
outputOptions(options) {
|
|
188
|
+
if (!state.isBuild) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
return prependBanner(options, SCHEMA_ENV_BANNER);
|
|
192
|
+
},
|
|
193
|
+
async resolveId(source, importer, options) {
|
|
194
|
+
if (!source.endsWith(SCHEMA_SUFFIX)) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
return resolveToVirtual(this, { source, importer, options });
|
|
198
|
+
},
|
|
199
|
+
load(id) {
|
|
200
|
+
return loadSchemaModule(this, state, id);
|
|
201
|
+
},
|
|
202
|
+
buildEnd() {
|
|
203
|
+
emitCompiledSchemas(this, state);
|
|
204
|
+
},
|
|
205
|
+
closeBundle() {
|
|
206
|
+
releaseSchemaDir(state);
|
|
207
|
+
},
|
|
208
|
+
handleHotUpdate({ file, server }) {
|
|
209
|
+
return handleSchemaHotUpdate(state, file, server);
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
export { gtkxSettings };
|
|
214
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/vite-plugins/settings.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ModuleNode, Plugin, ResolvedConfig, UserConfig, ViteDevServer } from \"vite\";\nimport { error, errorMessage, info } from \"@gtkx/utils\";\nimport { mkdtempSync, readFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { basename, join } from \"node:path\";\nimport { prependBanner } from \"../internal/banner.js\";\nimport { resolveDataDir } from \"../internal/data-dir.js\";\nimport { removeTempDir, withStagingDir } from \"../internal/staging-dir.js\";\nimport { compileSchemas } from \"../settings/compile.js\";\nimport { parseSchemaXml, SchemaParseError } from \"../settings/parser.js\";\nimport { renderRuntimeModule } from \"../settings/render.js\";\nimport { emitSchemaEnv, prependSchemaDir, SCHEMA_SUFFIX, stageSchema } from \"../settings/schema.js\";\nimport { createVirtualNamespace } from \"./virtual-module.js\";\n\ntype PluginState = {\n schemaDir: string | null;\n rootDir: string | null;\n dataDir: string | null;\n isBuild: boolean;\n trackedSchemas: Map<string, string>;\n buildSchemas: Set<string>;\n cleanupProcessExit: (() => void) | null;\n};\n\ntype PluginContext = {\n error: (message: string) => never;\n emitFile: (file: { type: \"asset\"; fileName: string; source: Buffer }) => void;\n};\n\nconst VIRTUAL_PREFIX = \"\\0gtkx-settings:\";\nconst { isVirtual, fromVirtualId, resolveToVirtual } = createVirtualNamespace(VIRTUAL_PREFIX);\n\nconst SCHEMA_ENV_BANNER = [\n \"process.env.GSETTINGS_SCHEMA_DIR = [\",\n \" decodeURIComponent(new URL(\\\".\\\", import.meta.url).pathname),\",\n \" process.env.GSETTINGS_SCHEMA_DIR,\",\n \"]\",\n \" .filter(Boolean)\",\n \" .join(\\\":\\\");\",\n].join(\"\\n\");\n\nconst ensureSchemaDir = (state: PluginState): string => {\n if (!state.schemaDir) {\n const runnerDir = process.env.GTKX_DEV_SCHEMA_DIR;\n\n if (runnerDir) {\n state.schemaDir = runnerDir;\n\n return runnerDir;\n }\n\n const dir = mkdtempSync(join(tmpdir(), \"gtkx-schemas-\"));\n state.schemaDir = dir;\n\n const cleanup = (): void => {\n removeTempDir(dir);\n };\n\n state.cleanupProcessExit = cleanup;\n process.once(\"exit\", cleanup);\n }\n\n return state.schemaDir;\n};\n\nconst releaseSchemaDir = (state: PluginState): void => {\n if (!state.schemaDir) {\n return;\n }\n\n if (state.cleanupProcessExit) {\n removeTempDir(state.schemaDir);\n process.removeListener(\"exit\", state.cleanupProcessExit);\n state.cleanupProcessExit = null;\n }\n\n state.schemaDir = null;\n};\n\nconst compileSchemaDir = (state: PluginState): void => {\n if (!state.schemaDir) {\n return;\n }\n\n compileSchemas(state.schemaDir);\n process.env.GSETTINGS_SCHEMA_DIR = prependSchemaDir(state.schemaDir, process.env.GSETTINGS_SCHEMA_DIR);\n};\n\nconst syncSchemaEnv = (state: PluginState): void => {\n if (state.rootDir === null) {\n return;\n }\n\n try {\n emitSchemaEnv(state.rootDir, state.dataDir);\n } catch (error_) {\n error(`Failed to generate GSettings schema types: ${errorMessage(error_)}`);\n }\n};\n\nconst applyUserConfig = (state: PluginState, config: UserConfig): void => {\n state.dataDir = resolveDataDir(config.root ?? process.cwd());\n};\n\nconst applyResolvedConfig = (state: PluginState, config: ResolvedConfig): void => {\n state.isBuild = config.command === \"build\";\n state.rootDir = typeof config.root === \"string\" ? config.root : null;\n syncSchemaEnv(state);\n};\n\nconst registerSchemaForMode = (state: PluginState, filePath: string, id: string): void => {\n const fileName = basename(filePath);\n\n if (state.isBuild) {\n state.buildSchemas.add(filePath);\n info(`Queued GSettings schema: ${fileName}`);\n\n return;\n }\n\n state.trackedSchemas.set(filePath, id);\n const dir = ensureSchemaDir(state);\n stageSchema(dir, filePath);\n compileSchemaDir(state);\n info(`Compiled GSettings schema: ${fileName}`);\n};\n\nconst loadSchemaModule = (ctx: PluginContext, state: PluginState, id: string): string | undefined => {\n if (!isVirtual(id)) {\n return undefined;\n }\n\n const filePath = fromVirtualId(id);\n const xml = readFileSync(filePath, \"utf8\");\n const fileName = basename(filePath);\n registerSchemaForMode(state, filePath, id);\n let parsed: ReturnType<typeof parseSchemaXml>;\n\n try {\n parsed = parseSchemaXml(xml, fileName);\n } catch (error) {\n if (!(error instanceof SchemaParseError)) {\n throw error;\n }\n\n ctx.error(error.message);\n }\n\n if (parsed.schemas.length === 0) {\n ctx.error(`No <schema id=\"...\"> found in ${fileName}`);\n }\n\n return renderRuntimeModule(parsed);\n};\n\nconst emitCompiledSchemas = (ctx: PluginContext, state: PluginState): void => {\n if (!state.isBuild || state.buildSchemas.size === 0) {\n return;\n }\n\n const compiled = withStagingDir(\"schemas-build\", (dir) => {\n for (const filePath of state.buildSchemas) {\n stageSchema(dir, filePath);\n }\n\n compileSchemas(dir);\n\n return readFileSync(join(dir, \"gschemas.compiled\"));\n });\n\n ctx.emitFile({\n type: \"asset\",\n fileName: \"gschemas.compiled\",\n source: compiled,\n });\n\n info(`Compiled ${String(state.buildSchemas.size)} GSettings schema(s)`);\n};\n\nconst handleSchemaHotUpdate = (state: PluginState, file: string, server: ViteDevServer): ModuleNode[] | undefined => {\n if (file.endsWith(SCHEMA_SUFFIX)) {\n syncSchemaEnv(state);\n }\n\n const virtualId = state.trackedSchemas.get(file);\n\n if (!virtualId) {\n return;\n }\n\n const dir = ensureSchemaDir(state);\n stageSchema(dir, file);\n compileSchemaDir(state);\n info(`Recompiled GSettings schema: ${basename(file)}`);\n const mod = server.moduleGraph.getModuleById(virtualId);\n\n if (mod) {\n server.moduleGraph.invalidateModule(mod);\n\n return [mod];\n }\n\n return undefined;\n};\n\nconst watchSchemaFiles = (state: PluginState, server: ViteDevServer): void => {\n server.httpServer?.once(\"close\", () => {\n releaseSchemaDir(state);\n });\n\n server.watcher.once(\"close\", () => {\n releaseSchemaDir(state);\n });\n\n const refreshSchemaTypes = (file: string): void => {\n if (file.endsWith(SCHEMA_SUFFIX)) {\n syncSchemaEnv(state);\n }\n };\n\n server.watcher.on(\"add\", refreshSchemaTypes);\n server.watcher.on(\"unlink\", refreshSchemaTypes);\n};\n\nfunction gtkxSettings(): Plugin {\n const state: PluginState = {\n schemaDir: null,\n rootDir: null,\n dataDir: null,\n isBuild: false,\n trackedSchemas: new Map(),\n buildSchemas: new Set(),\n cleanupProcessExit: null,\n };\n\n return {\n name: \"gtkx:settings\",\n enforce: \"pre\",\n\n config(config: UserConfig) {\n applyUserConfig(state, config);\n },\n\n configResolved(config) {\n applyResolvedConfig(state, config);\n },\n\n configureServer(server) {\n watchSchemaFiles(state, server);\n },\n\n outputOptions(options) {\n if (!state.isBuild) {\n return;\n }\n\n return prependBanner(options, SCHEMA_ENV_BANNER);\n },\n\n async resolveId(source, importer, options) {\n if (!source.endsWith(SCHEMA_SUFFIX)) {\n return;\n }\n\n return resolveToVirtual(this, { source, importer, options });\n },\n\n load(id) {\n return loadSchemaModule(this, state, id);\n },\n\n buildEnd() {\n emitCompiledSchemas(this, state);\n },\n\n closeBundle() {\n releaseSchemaDir(state);\n },\n\n handleHotUpdate({ file, server }) {\n return handleSchemaHotUpdate(state, file, server);\n },\n };\n}\n\nexport { gtkxSettings };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strip-query.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/strip-query.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,UAAU,GAAI,QAAQ,MAAM,KAAG,MAIpC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strip-query.js","sourceRoot":"","sources":["../../src/vite-plugins/strip-query.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,CAAC,MAAc,EAAU,EAAE;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEvC,OAAO,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["const stripQuery = (source: string): string => {\n const queryIndex = source.indexOf(\"?\");\n\n return queryIndex === -1 ? source : source.slice(0, queryIndex);\n};\n\nexport { stripQuery };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undeclared-library.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/undeclared-library.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;AA4C/C,iBAAS,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CA+BpD;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { discoverGirNamespaces, resolveGirPath } from "@gtkx/codegen";
|
|
2
|
+
import { loadConfig } from "@gtkx/config";
|
|
3
|
+
const GENERATED_MODULE_PATTERN = /^@gtkx\/(?:gi|jsx)\/([a-z0-9]+)$/;
|
|
4
|
+
const girSearchPaths = async (state) => {
|
|
5
|
+
if (state.girPath === null) {
|
|
6
|
+
const { config } = await loadConfig(state.root, { mode: state.mode });
|
|
7
|
+
state.girPath = resolveGirPath(config.girPath);
|
|
8
|
+
}
|
|
9
|
+
return state.girPath;
|
|
10
|
+
};
|
|
11
|
+
const getNamespace = (identifier) => identifier.slice(0, identifier.indexOf("-")).toLowerCase();
|
|
12
|
+
const findGirIdentifier = (girPath, namespace) => discoverGirNamespaces(girPath).find((identifier) => getNamespace(identifier) === namespace);
|
|
13
|
+
const undeclaredLibraryError = (source, namespace, girPath) => {
|
|
14
|
+
const identifier = findGirIdentifier(girPath, namespace);
|
|
15
|
+
if (identifier === undefined) {
|
|
16
|
+
return new Error(`Cannot resolve "${source}": the binding store has no "${namespace}" module, and no GIR data for it ` +
|
|
17
|
+
`was found in [${girPath.join(", ")}]. If "${namespace}" is a library, install its ` +
|
|
18
|
+
"gobject-introspection data package and add its GIR identifier to `libraries` in gtkx.config.ts. " +
|
|
19
|
+
"Otherwise run gtkx codegen to regenerate the store.");
|
|
20
|
+
}
|
|
21
|
+
return new Error(`Cannot resolve "${source}": the "${identifier}" bindings have not been generated. ` +
|
|
22
|
+
`Add "${identifier}" to \`libraries\` in gtkx.config.ts, then run gtkx dev or gtkx build again.`);
|
|
23
|
+
};
|
|
24
|
+
function gtkxUndeclaredLibrary(mode) {
|
|
25
|
+
const state = {
|
|
26
|
+
root: "",
|
|
27
|
+
mode,
|
|
28
|
+
girPath: null,
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
name: "gtkx:undeclared-library",
|
|
32
|
+
enforce: "pre",
|
|
33
|
+
config(config) {
|
|
34
|
+
state.root = config.root ?? process.cwd();
|
|
35
|
+
},
|
|
36
|
+
async resolveId(source, importer, options) {
|
|
37
|
+
const namespace = GENERATED_MODULE_PATTERN.exec(source)?.[1];
|
|
38
|
+
if (namespace === undefined) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const resolved = await this.resolve(source, importer, { ...options, skipSelf: true });
|
|
42
|
+
if (resolved !== null) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
throw undeclaredLibraryError(source, namespace, await girSearchPaths(state));
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export { gtkxUndeclaredLibrary };
|
|
50
|
+
//# sourceMappingURL=undeclared-library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undeclared-library.js","sourceRoot":"","sources":["../../src/vite-plugins/undeclared-library.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ1C,MAAM,wBAAwB,GAAG,kCAAkC,CAAC;AAEpE,MAAM,cAAc,GAAG,KAAK,EAAE,KAAkB,EAAqB,EAAE;IACnE,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAU,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEhH,MAAM,iBAAiB,GAAG,CAAC,OAAiB,EAAE,SAAiB,EAAsB,EAAE,CACnF,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC;AAEhG,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAE,SAAiB,EAAE,OAAiB,EAAS,EAAE;IAC3F,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAEzD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,KAAK,CACZ,mBAAmB,MAAM,gCAAgC,SAAS,mCAAmC;YACrG,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,SAAS,8BAA8B;YACpF,kGAAkG;YAClG,qDAAqD,CACxD,CAAC;IACN,CAAC;IAED,OAAO,IAAI,KAAK,CACZ,mBAAmB,MAAM,WAAW,UAAU,sCAAsC;QACpF,QAAQ,UAAU,8EAA8E,CACnG,CAAC;AACN,CAAC,CAAC;AAEF,SAAS,qBAAqB,CAAC,IAAa;IACxC,MAAM,KAAK,GAAgB;QACvB,IAAI,EAAE,EAAE;QACR,IAAI;QACJ,OAAO,EAAE,IAAI;KAChB,CAAC;IAEF,OAAO;QACH,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,KAAK;QAEd,MAAM,CAAC,MAAkB;YACrB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9C,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;YACrC,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAE7D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO;YACX,CAAC;YAED,MAAM,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACjF,CAAC;KACJ,CAAC;AACN,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC","sourcesContent":["import type { Plugin, UserConfig } from \"vite\";\nimport { discoverGirNamespaces, resolveGirPath } from \"@gtkx/codegen\";\nimport { loadConfig } from \"@gtkx/config\";\n\ntype PluginState = {\n root: string;\n mode: string | undefined;\n girPath: string[] | null;\n};\n\nconst GENERATED_MODULE_PATTERN = /^@gtkx\\/(?:gi|jsx)\\/([a-z0-9]+)$/;\n\nconst girSearchPaths = async (state: PluginState): Promise<string[]> => {\n if (state.girPath === null) {\n const { config } = await loadConfig(state.root, { mode: state.mode });\n state.girPath = resolveGirPath(config.girPath);\n }\n\n return state.girPath;\n};\n\nconst getNamespace = (identifier: string): string => identifier.slice(0, identifier.indexOf(\"-\")).toLowerCase();\n\nconst findGirIdentifier = (girPath: string[], namespace: string): string | undefined =>\n discoverGirNamespaces(girPath).find((identifier) => getNamespace(identifier) === namespace);\n\nconst undeclaredLibraryError = (source: string, namespace: string, girPath: string[]): Error => {\n const identifier = findGirIdentifier(girPath, namespace);\n\n if (identifier === undefined) {\n return new Error(\n `Cannot resolve \"${source}\": the binding store has no \"${namespace}\" module, and no GIR data for it ` +\n `was found in [${girPath.join(\", \")}]. If \"${namespace}\" is a library, install its ` +\n \"gobject-introspection data package and add its GIR identifier to `libraries` in gtkx.config.ts. \" +\n \"Otherwise run gtkx codegen to regenerate the store.\",\n );\n }\n\n return new Error(\n `Cannot resolve \"${source}\": the \"${identifier}\" bindings have not been generated. ` +\n `Add \"${identifier}\" to \\`libraries\\` in gtkx.config.ts, then run gtkx dev or gtkx build again.`,\n );\n};\n\nfunction gtkxUndeclaredLibrary(mode?: string): Plugin {\n const state: PluginState = {\n root: \"\",\n mode,\n girPath: null,\n };\n\n return {\n name: \"gtkx:undeclared-library\",\n enforce: \"pre\",\n\n config(config: UserConfig) {\n state.root = config.root ?? process.cwd();\n },\n\n async resolveId(source, importer, options) {\n const namespace = GENERATED_MODULE_PATTERN.exec(source)?.[1];\n\n if (namespace === undefined) {\n return;\n }\n\n const resolved = await this.resolve(source, importer, { ...options, skipSelf: true });\n\n if (resolved !== null) {\n return;\n }\n\n throw undeclaredLibraryError(source, namespace, await girSearchPaths(state));\n },\n };\n}\n\nexport { gtkxUndeclaredLibrary };\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type VirtualResolveContext = {
|
|
2
|
+
resolve: (source: string, importer?: string, options?: {
|
|
3
|
+
skipSelf?: boolean;
|
|
4
|
+
} & Record<string, unknown>) => Promise<{
|
|
5
|
+
id: string;
|
|
6
|
+
external?: boolean | "absolute" | "relative";
|
|
7
|
+
} | null>;
|
|
8
|
+
};
|
|
9
|
+
type VirtualResolveRequest = {
|
|
10
|
+
source: string;
|
|
11
|
+
importer: string | undefined;
|
|
12
|
+
options: Record<string, unknown> | undefined;
|
|
13
|
+
};
|
|
14
|
+
type VirtualNamespace = {
|
|
15
|
+
isVirtual: (id: string) => boolean;
|
|
16
|
+
toVirtualId: (realId: string) => string;
|
|
17
|
+
fromVirtualId: (id: string) => string;
|
|
18
|
+
resolveToVirtual: (ctx: VirtualResolveContext, request: VirtualResolveRequest) => Promise<string | undefined>;
|
|
19
|
+
};
|
|
20
|
+
declare const createVirtualNamespace: (prefix: string) => VirtualNamespace;
|
|
21
|
+
export { createVirtualNamespace };
|
|
22
|
+
//# sourceMappingURL=virtual-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-module.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/virtual-module.ts"],"names":[],"mappings":"AAAA,KAAK,qBAAqB,GAAG;IACzB,OAAO,EAAE,CACL,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACzD,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACrF,CAAC;AAEF,KAAK,qBAAqB,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAChD,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,gBAAgB,EAAE,CAAC,GAAG,EAAE,qBAAqB,EAAE,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACjH,CAAC;AAEF,QAAA,MAAM,sBAAsB,GAAI,QAAQ,MAAM,KAAG,gBAoBhD,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const createVirtualNamespace = (prefix) => {
|
|
2
|
+
const toVirtualId = (realId) => prefix + realId;
|
|
3
|
+
return {
|
|
4
|
+
isVirtual: (id) => id.startsWith(prefix),
|
|
5
|
+
toVirtualId,
|
|
6
|
+
fromVirtualId: (id) => id.slice(prefix.length),
|
|
7
|
+
resolveToVirtual: async (ctx, request) => {
|
|
8
|
+
const resolved = await ctx.resolve(request.source, request.importer, {
|
|
9
|
+
...request.options,
|
|
10
|
+
skipSelf: true,
|
|
11
|
+
});
|
|
12
|
+
if (!resolved || resolved.external) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
return toVirtualId(resolved.id);
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export { createVirtualNamespace };
|
|
20
|
+
//# sourceMappingURL=virtual-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-module.js","sourceRoot":"","sources":["../../src/vite-plugins/virtual-module.ts"],"names":[],"mappings":"AAqBA,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAoB,EAAE;IAChE,MAAM,WAAW,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;IAEhE,OAAO;QACH,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QACxC,WAAW;QACX,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9C,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE;gBACjE,GAAG,OAAO,CAAC,OAAO;gBAClB,QAAQ,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACjC,OAAO;YACX,CAAC;YAED,OAAO,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;KACJ,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC","sourcesContent":["type VirtualResolveContext = {\n resolve: (\n source: string,\n importer?: string,\n options?: { skipSelf?: boolean } & Record<string, unknown>,\n ) => Promise<{ id: string; external?: boolean | \"absolute\" | \"relative\" } | null>;\n};\n\ntype VirtualResolveRequest = {\n source: string;\n importer: string | undefined;\n options: Record<string, unknown> | undefined;\n};\n\ntype VirtualNamespace = {\n isVirtual: (id: string) => boolean;\n toVirtualId: (realId: string) => string;\n fromVirtualId: (id: string) => string;\n resolveToVirtual: (ctx: VirtualResolveContext, request: VirtualResolveRequest) => Promise<string | undefined>;\n};\n\nconst createVirtualNamespace = (prefix: string): VirtualNamespace => {\n const toVirtualId = (realId: string): string => prefix + realId;\n\n return {\n isVirtual: (id) => id.startsWith(prefix),\n toVirtualId,\n fromVirtualId: (id) => id.slice(prefix.length),\n resolveToVirtual: async (ctx, request) => {\n const resolved = await ctx.resolve(request.source, request.importer, {\n ...request.options,\n skipSelf: true,\n });\n\n if (!resolved || resolved.external) {\n return;\n }\n\n return toVirtualId(resolved.id);\n },\n };\n};\n\nexport { createVirtualNamespace };\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Plugin } from "vite";
|
|
2
|
+
/**
|
|
3
|
+
* Vite plugin factory that assembles the plugins needed to run GTKX apps under Vitest,
|
|
4
|
+
* combining the shared GTKX Vite plugins with the `@gtkx/vitest` test integration.
|
|
5
|
+
*
|
|
6
|
+
* @returns The ordered array of Vite plugins to include in a Vitest configuration.
|
|
7
|
+
*/
|
|
8
|
+
declare const gtkx: () => Plugin[];
|
|
9
|
+
export default gtkx;
|
|
10
|
+
//# sourceMappingURL=vitest-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest-plugin.d.ts","sourceRoot":"","sources":["../src/vitest-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC;;;;;GAKG;AACH,QAAA,MAAM,IAAI,QAAO,MAAM,EAAmE,CAAC;AAC3F,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import gtkxVitest from "@gtkx/vitest";
|
|
2
|
+
import { gtkxVitePlugins } from "./vite-plugins/index.js";
|
|
3
|
+
import { gtkxSettingsWorkerEnv } from "./vite-plugins/settings-worker-env.js";
|
|
4
|
+
/**
|
|
5
|
+
* Vite plugin factory that assembles the plugins needed to run GTKX apps under Vitest,
|
|
6
|
+
* combining the shared GTKX Vite plugins with the `@gtkx/vitest` test integration.
|
|
7
|
+
*
|
|
8
|
+
* @returns The ordered array of Vite plugins to include in a Vitest configuration.
|
|
9
|
+
*/
|
|
10
|
+
const gtkx = () => [...gtkxVitePlugins(), gtkxSettingsWorkerEnv(), gtkxVitest()];
|
|
11
|
+
export default gtkx;
|
|
12
|
+
//# sourceMappingURL=vitest-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest-plugin.js","sourceRoot":"","sources":["../src/vitest-plugin.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,IAAI,GAAG,GAAa,EAAE,CAAC,CAAC,GAAG,eAAe,EAAE,EAAE,qBAAqB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;AAC3F,eAAe,IAAI,CAAC","sourcesContent":["import type { Plugin } from \"vite\";\nimport gtkxVitest from \"@gtkx/vitest\";\nimport { gtkxVitePlugins } from \"./vite-plugins/index.js\";\nimport { gtkxSettingsWorkerEnv } from \"./vite-plugins/settings-worker-env.js\";\n\n/**\n * Vite plugin factory that assembles the plugins needed to run GTKX apps under Vitest,\n * combining the shared GTKX Vite plugins with the `@gtkx/vitest` test integration.\n *\n * @returns The ordered array of Vite plugins to include in a Vitest configuration.\n */\nconst gtkx = (): Plugin[] => [...gtkxVitePlugins(), gtkxSettingsWorkerEnv(), gtkxVitest()];\nexport default gtkx;\n"]}
|
package/env.d.ts
CHANGED
|
@@ -1,16 +1,99 @@
|
|
|
1
1
|
/// <reference types="vite/client" />
|
|
2
|
+
/// <reference types="@gtkx/react/env" />
|
|
2
3
|
|
|
3
|
-
declare module "*.
|
|
4
|
-
const path: string;
|
|
5
|
-
|
|
4
|
+
declare module "*.aac" {
|
|
5
|
+
export const path: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
declare module "*.avif" {
|
|
9
|
+
export const path: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
declare module "*.eot" {
|
|
13
|
+
export const path: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare module "*.flac" {
|
|
17
|
+
export const path: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
declare module "*.gif" {
|
|
21
|
+
export const path: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare module "*.ico" {
|
|
25
|
+
export const path: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
declare module "*.jpeg" {
|
|
29
|
+
export const path: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
declare module "*.jpg" {
|
|
33
|
+
export const path: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
declare module "*.mp3" {
|
|
37
|
+
export const path: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
declare module "*.mp4" {
|
|
41
|
+
export const path: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
declare module "*.ogg" {
|
|
45
|
+
export const path: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
declare module "*.otf" {
|
|
49
|
+
export const path: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
declare module "*.png" {
|
|
53
|
+
export const path: string;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
declare module "*.svg" {
|
|
57
|
+
export const path: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
declare module "*.ttf" {
|
|
61
|
+
export const path: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
declare module "*.wav" {
|
|
65
|
+
export const path: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare module "*.webm" {
|
|
69
|
+
export const path: string;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
declare module "*.webp" {
|
|
73
|
+
export const path: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
declare module "*.woff" {
|
|
77
|
+
export const path: string;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
declare module "*.woff2" {
|
|
81
|
+
export const path: string;
|
|
6
82
|
}
|
|
7
83
|
|
|
8
84
|
declare module "*.data" {
|
|
9
|
-
const
|
|
10
|
-
export
|
|
85
|
+
const resourceUri: string;
|
|
86
|
+
export const path: string;
|
|
87
|
+
export default resourceUri;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
declare module "*.gpa" {
|
|
91
|
+
const resourceUri: string;
|
|
92
|
+
export const path: string;
|
|
93
|
+
export default resourceUri;
|
|
11
94
|
}
|
|
12
95
|
|
|
13
|
-
declare module "*.
|
|
14
|
-
const
|
|
15
|
-
export default
|
|
96
|
+
declare module "*.css?url" {
|
|
97
|
+
const path: string;
|
|
98
|
+
export default path;
|
|
16
99
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gtkx/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.0-rc.2",
|
|
4
|
+
"description": "Command-line tool and Vite plugin stack that scaffolds, develops, builds, and documents GTKX applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"gtkx",
|
|
7
7
|
"gtk",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"repository": {
|
|
24
24
|
"type": "git",
|
|
25
|
-
"url": "https://github.com/gtkx-org/gtkx.git",
|
|
25
|
+
"url": "git+https://github.com/gtkx-org/gtkx.git",
|
|
26
26
|
"directory": "packages/cli"
|
|
27
27
|
},
|
|
28
28
|
"license": "MPL-2.0",
|
|
@@ -30,22 +30,14 @@
|
|
|
30
30
|
"type": "module",
|
|
31
31
|
"exports": {
|
|
32
32
|
"./package.json": "./package.json",
|
|
33
|
-
".": {
|
|
34
|
-
"types": "./dist/index.d.ts",
|
|
35
|
-
"default": "./dist/index.js"
|
|
36
|
-
},
|
|
37
|
-
"./builder": {
|
|
38
|
-
"types": "./dist/builder.d.ts",
|
|
39
|
-
"default": "./dist/builder.js"
|
|
40
|
-
},
|
|
41
|
-
"./dev-server": {
|
|
42
|
-
"types": "./dist/dev-server.d.ts",
|
|
43
|
-
"default": "./dist/dev-server.js"
|
|
44
|
-
},
|
|
45
33
|
"./refresh-runtime": {
|
|
46
34
|
"types": "./dist/refresh-runtime.d.ts",
|
|
47
35
|
"default": "./dist/refresh-runtime.js"
|
|
48
36
|
},
|
|
37
|
+
"./vitest-plugin": {
|
|
38
|
+
"types": "./dist/vitest-plugin.d.ts",
|
|
39
|
+
"default": "./dist/vitest-plugin.js"
|
|
40
|
+
},
|
|
49
41
|
"./env": "./env.d.ts"
|
|
50
42
|
},
|
|
51
43
|
"bin": {
|
|
@@ -56,38 +48,38 @@
|
|
|
56
48
|
"bin",
|
|
57
49
|
"dist",
|
|
58
50
|
"env.d.ts",
|
|
59
|
-
"src"
|
|
60
|
-
"templates"
|
|
51
|
+
"src"
|
|
61
52
|
],
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=24"
|
|
55
|
+
},
|
|
62
56
|
"dependencies": {
|
|
63
|
-
"@
|
|
64
|
-
"@
|
|
65
|
-
"
|
|
66
|
-
"
|
|
57
|
+
"@babel/core": "^8.0.1",
|
|
58
|
+
"@babel/preset-typescript": "^8.0.1",
|
|
59
|
+
"@swc/core": "^1.15.46",
|
|
60
|
+
"babel-plugin-react-compiler": "^1.0.0",
|
|
61
|
+
"citty": "^0.2.2",
|
|
62
|
+
"fast-xml-parser": "^5.10.1",
|
|
67
63
|
"react-refresh": "^0.18.0",
|
|
68
|
-
"vite": "^8.
|
|
69
|
-
"@gtkx/
|
|
70
|
-
"@gtkx/
|
|
71
|
-
"@gtkx/
|
|
64
|
+
"vite": "^8.1.5",
|
|
65
|
+
"@gtkx/codegen": "1.0.0-rc.2",
|
|
66
|
+
"@gtkx/config": "1.0.0-rc.2",
|
|
67
|
+
"@gtkx/mcp": "1.0.0-rc.2",
|
|
68
|
+
"@gtkx/runtime": "1.0.0-rc.2",
|
|
69
|
+
"@gtkx/utils": "1.0.0-rc.2",
|
|
70
|
+
"@gtkx/vitest": "1.0.0-rc.2",
|
|
71
|
+
"create-gtkx": "1.0.0-rc.2"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
|
-
"@types/
|
|
74
|
+
"@types/babel__core": "^7.20.5",
|
|
75
75
|
"@types/react-refresh": "^0.14.7",
|
|
76
|
-
"
|
|
77
|
-
"@gtkx/testing": "0.
|
|
76
|
+
"vitest": "^4.1.10",
|
|
77
|
+
"@gtkx/testing": "1.0.0-rc.2"
|
|
78
78
|
},
|
|
79
79
|
"peerDependencies": {
|
|
80
|
-
"react": "^19"
|
|
81
|
-
"@gtkx/testing": "0.21.0"
|
|
82
|
-
},
|
|
83
|
-
"peerDependenciesMeta": {
|
|
84
|
-
"@gtkx/testing": {
|
|
85
|
-
"optional": true
|
|
86
|
-
}
|
|
80
|
+
"react": "^19"
|
|
87
81
|
},
|
|
88
82
|
"scripts": {
|
|
89
|
-
"
|
|
90
|
-
"test": "vitest run",
|
|
91
|
-
"typecheck": "tsc -b --emitDeclarationOnly"
|
|
83
|
+
"release": "tsx ../../scripts/release-package.ts"
|
|
92
84
|
}
|
|
93
85
|
}
|