@gtkx/cli 1.0.0-rc.1 → 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.
Files changed (286) hide show
  1. package/dist/builder.d.ts +3 -2
  2. package/dist/builder.d.ts.map +1 -1
  3. package/dist/builder.js +2 -1
  4. package/dist/builder.js.map +1 -1
  5. package/dist/cli.d.ts +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +21 -6
  8. package/dist/cli.js.map +1 -1
  9. package/dist/codegen/freshness.d.ts +5 -5
  10. package/dist/codegen/freshness.d.ts.map +1 -1
  11. package/dist/codegen/freshness.js +26 -23
  12. package/dist/codegen/freshness.js.map +1 -1
  13. package/dist/codegen/report.d.ts +2 -1
  14. package/dist/codegen/report.d.ts.map +1 -1
  15. package/dist/codegen/report.js +4 -2
  16. package/dist/codegen/report.js.map +1 -1
  17. package/dist/codegen/run-codegen.d.ts +8 -8
  18. package/dist/codegen/run-codegen.d.ts.map +1 -1
  19. package/dist/codegen/run-codegen.js +72 -43
  20. package/dist/codegen/run-codegen.js.map +1 -1
  21. package/dist/codegen/store-resolver.d.ts +8 -5
  22. package/dist/codegen/store-resolver.d.ts.map +1 -1
  23. package/dist/codegen/store-resolver.js +26 -6
  24. package/dist/codegen/store-resolver.js.map +1 -1
  25. package/dist/commands/build.d.ts +4 -3
  26. package/dist/commands/build.d.ts.map +1 -1
  27. package/dist/commands/build.js +2 -1
  28. package/dist/commands/build.js.map +1 -1
  29. package/dist/commands/codegen.d.ts +2 -1
  30. package/dist/commands/codegen.d.ts.map +1 -1
  31. package/dist/commands/codegen.js +6 -4
  32. package/dist/commands/codegen.js.map +1 -1
  33. package/dist/commands/dev.d.ts +2 -1
  34. package/dist/commands/dev.d.ts.map +1 -1
  35. package/dist/commands/dev.js +2 -1
  36. package/dist/commands/dev.js.map +1 -1
  37. package/dist/commands/docs.d.ts +2 -1
  38. package/dist/commands/docs.d.ts.map +1 -1
  39. package/dist/commands/docs.js +22 -7
  40. package/dist/commands/docs.js.map +1 -1
  41. package/dist/dev/icon-dir.d.ts +2 -1
  42. package/dist/dev/icon-dir.d.ts.map +1 -1
  43. package/dist/dev/icon-dir.js +6 -3
  44. package/dist/dev/icon-dir.js.map +1 -1
  45. package/dist/dev/refresh-tracker.d.ts +5 -4
  46. package/dist/dev/refresh-tracker.d.ts.map +1 -1
  47. package/dist/dev/refresh-tracker.js +6 -5
  48. package/dist/dev/refresh-tracker.js.map +1 -1
  49. package/dist/dev/runner-deps.d.ts +2 -1
  50. package/dist/dev/runner-deps.d.ts.map +1 -1
  51. package/dist/dev/runner-deps.js +20 -4
  52. package/dist/dev/runner-deps.js.map +1 -1
  53. package/dist/dev/runner-main.d.ts +2 -1
  54. package/dist/dev/runner-main.d.ts.map +1 -1
  55. package/dist/dev/runner-main.js +3 -2
  56. package/dist/dev/runner-main.js.map +1 -1
  57. package/dist/dev/runner.d.ts +6 -5
  58. package/dist/dev/runner.d.ts.map +1 -1
  59. package/dist/dev/runner.js +69 -38
  60. package/dist/dev/runner.js.map +1 -1
  61. package/dist/dev/schema-dir.d.ts +2 -1
  62. package/dist/dev/schema-dir.d.ts.map +1 -1
  63. package/dist/dev/schema-dir.js +4 -2
  64. package/dist/dev/schema-dir.js.map +1 -1
  65. package/dist/dev/supervisor.d.ts +7 -6
  66. package/dist/dev/supervisor.d.ts.map +1 -1
  67. package/dist/dev/supervisor.js +107 -67
  68. package/dist/dev/supervisor.js.map +1 -1
  69. package/dist/dev/vite-dev-server.d.ts +3 -3
  70. package/dist/dev/vite-dev-server.d.ts.map +1 -1
  71. package/dist/dev/vite-dev-server.js +2 -1
  72. package/dist/dev/vite-dev-server.js.map +1 -1
  73. package/dist/internal/banner.d.ts +2 -1
  74. package/dist/internal/banner.d.ts.map +1 -1
  75. package/dist/internal/banner.js +2 -1
  76. package/dist/internal/banner.js.map +1 -1
  77. package/dist/internal/data-dir.d.ts +3 -2
  78. package/dist/internal/data-dir.d.ts.map +1 -1
  79. package/dist/internal/data-dir.js +29 -14
  80. package/dist/internal/data-dir.js.map +1 -1
  81. package/dist/internal/entry-arg.d.ts +5 -4
  82. package/dist/internal/entry-arg.d.ts.map +1 -1
  83. package/dist/internal/entry-arg.js +10 -7
  84. package/dist/internal/entry-arg.js.map +1 -1
  85. package/dist/internal/errors.d.ts +3 -2
  86. package/dist/internal/errors.d.ts.map +1 -1
  87. package/dist/internal/errors.js +7 -5
  88. package/dist/internal/errors.js.map +1 -1
  89. package/dist/internal/list-files.d.ts +3 -2
  90. package/dist/internal/list-files.d.ts.map +1 -1
  91. package/dist/internal/list-files.js +5 -3
  92. package/dist/internal/list-files.js.map +1 -1
  93. package/dist/internal/resolve-cli-tool.d.ts +2 -1
  94. package/dist/internal/resolve-cli-tool.d.ts.map +1 -1
  95. package/dist/internal/resolve-cli-tool.js +17 -10
  96. package/dist/internal/resolve-cli-tool.js.map +1 -1
  97. package/dist/internal/staging-dir.d.ts +3 -2
  98. package/dist/internal/staging-dir.d.ts.map +1 -1
  99. package/dist/internal/staging-dir.js +3 -2
  100. package/dist/internal/staging-dir.js.map +1 -1
  101. package/dist/internal/xdg-data-dirs.d.ts +2 -1
  102. package/dist/internal/xdg-data-dirs.d.ts.map +1 -1
  103. package/dist/internal/xdg-data-dirs.js +4 -2
  104. package/dist/internal/xdg-data-dirs.js.map +1 -1
  105. package/dist/mcp/client.d.ts +9 -4
  106. package/dist/mcp/client.d.ts.map +1 -1
  107. package/dist/mcp/client.js +106 -81
  108. package/dist/mcp/client.js.map +1 -1
  109. package/dist/mcp/handlers.d.ts +3 -2
  110. package/dist/mcp/handlers.d.ts.map +1 -1
  111. package/dist/mcp/handlers.js +89 -61
  112. package/dist/mcp/handlers.js.map +1 -1
  113. package/dist/mcp/index.d.ts +2 -2
  114. package/dist/mcp/index.d.ts.map +1 -1
  115. package/dist/mcp/index.js +30 -13
  116. package/dist/mcp/index.js.map +1 -1
  117. package/dist/mcp/serialize-widget.d.ts +3 -3
  118. package/dist/mcp/serialize-widget.d.ts.map +1 -1
  119. package/dist/mcp/serialize-widget.js +9 -6
  120. package/dist/mcp/serialize-widget.js.map +1 -1
  121. package/dist/mcp/testing-loader.d.ts +3 -4
  122. package/dist/mcp/testing-loader.d.ts.map +1 -1
  123. package/dist/mcp/testing-loader.js +43 -21
  124. package/dist/mcp/testing-loader.js.map +1 -1
  125. package/dist/mcp/widget-registry.d.ts +3 -2
  126. package/dist/mcp/widget-registry.d.ts.map +1 -1
  127. package/dist/mcp/widget-registry.js +4 -3
  128. package/dist/mcp/widget-registry.js.map +1 -1
  129. package/dist/refresh-globals.d.ts +2 -0
  130. package/dist/refresh-globals.d.ts.map +1 -0
  131. package/dist/refresh-globals.js +8 -0
  132. package/dist/refresh-globals.js.map +1 -0
  133. package/dist/refresh-runtime.d.ts +5 -11
  134. package/dist/refresh-runtime.d.ts.map +1 -1
  135. package/dist/refresh-runtime.js +16 -14
  136. package/dist/refresh-runtime.js.map +1 -1
  137. package/dist/settings/compile.d.ts +2 -1
  138. package/dist/settings/compile.d.ts.map +1 -1
  139. package/dist/settings/compile.js +6 -4
  140. package/dist/settings/compile.js.map +1 -1
  141. package/dist/settings/parser.d.ts +6 -5
  142. package/dist/settings/parser.d.ts.map +1 -1
  143. package/dist/settings/parser.js +26 -22
  144. package/dist/settings/parser.js.map +1 -1
  145. package/dist/settings/render.d.ts +3 -2
  146. package/dist/settings/render.d.ts.map +1 -1
  147. package/dist/settings/render.js +38 -64
  148. package/dist/settings/render.js.map +1 -1
  149. package/dist/settings/schema.d.ts +8 -8
  150. package/dist/settings/schema.d.ts.map +1 -1
  151. package/dist/settings/schema.js +61 -43
  152. package/dist/settings/schema.js.map +1 -1
  153. package/dist/vite-plugins/asset-extensions.d.ts +4 -3
  154. package/dist/vite-plugins/asset-extensions.d.ts.map +1 -1
  155. package/dist/vite-plugins/asset-extensions.js +4 -3
  156. package/dist/vite-plugins/asset-extensions.js.map +1 -1
  157. package/dist/vite-plugins/built-url.d.ts +2 -1
  158. package/dist/vite-plugins/built-url.d.ts.map +1 -1
  159. package/dist/vite-plugins/built-url.js +19 -13
  160. package/dist/vite-plugins/built-url.js.map +1 -1
  161. package/dist/vite-plugins/css.d.ts +2 -1
  162. package/dist/vite-plugins/css.d.ts.map +1 -1
  163. package/dist/vite-plugins/css.js +23 -15
  164. package/dist/vite-plugins/css.js.map +1 -1
  165. package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts +5 -4
  166. package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts.map +1 -1
  167. package/dist/vite-plugins/fast-refresh/refresh-filter.js +11 -7
  168. package/dist/vite-plugins/fast-refresh/refresh-filter.js.map +1 -1
  169. package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts +4 -3
  170. package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts.map +1 -1
  171. package/dist/vite-plugins/fast-refresh/swc-refresh.js +45 -41
  172. package/dist/vite-plugins/fast-refresh/swc-refresh.js.map +1 -1
  173. package/dist/vite-plugins/icons.d.ts +2 -1
  174. package/dist/vite-plugins/icons.d.ts.map +1 -1
  175. package/dist/vite-plugins/icons.js +24 -20
  176. package/dist/vite-plugins/icons.js.map +1 -1
  177. package/dist/vite-plugins/index.d.ts +2 -1
  178. package/dist/vite-plugins/index.d.ts.map +1 -1
  179. package/dist/vite-plugins/index.js +3 -2
  180. package/dist/vite-plugins/index.js.map +1 -1
  181. package/dist/vite-plugins/native.d.ts +2 -1
  182. package/dist/vite-plugins/native.d.ts.map +1 -1
  183. package/dist/vite-plugins/native.js +6 -4
  184. package/dist/vite-plugins/native.js.map +1 -1
  185. package/dist/vite-plugins/react-compiler.d.ts +3 -2
  186. package/dist/vite-plugins/react-compiler.d.ts.map +1 -1
  187. package/dist/vite-plugins/react-compiler.js +26 -20
  188. package/dist/vite-plugins/react-compiler.js.map +1 -1
  189. package/dist/vite-plugins/react-dom-prebundle.d.ts +2 -1
  190. package/dist/vite-plugins/react-dom-prebundle.d.ts.map +1 -1
  191. package/dist/vite-plugins/react-dom-prebundle.js +2 -1
  192. package/dist/vite-plugins/react-dom-prebundle.js.map +1 -1
  193. package/dist/vite-plugins/resource-init-module.d.ts +2 -1
  194. package/dist/vite-plugins/resource-init-module.d.ts.map +1 -1
  195. package/dist/vite-plugins/resource-init-module.js +39 -38
  196. package/dist/vite-plugins/resource-init-module.js.map +1 -1
  197. package/dist/vite-plugins/resource-shared.d.ts +7 -5
  198. package/dist/vite-plugins/resource-shared.d.ts.map +1 -1
  199. package/dist/vite-plugins/resource-shared.js +17 -10
  200. package/dist/vite-plugins/resource-shared.js.map +1 -1
  201. package/dist/vite-plugins/resources.d.ts +3 -2
  202. package/dist/vite-plugins/resources.d.ts.map +1 -1
  203. package/dist/vite-plugins/resources.js +94 -54
  204. package/dist/vite-plugins/resources.js.map +1 -1
  205. package/dist/vite-plugins/settings-worker-env.d.ts +2 -1
  206. package/dist/vite-plugins/settings-worker-env.d.ts.map +1 -1
  207. package/dist/vite-plugins/settings-worker-env.js +4 -2
  208. package/dist/vite-plugins/settings-worker-env.js.map +1 -1
  209. package/dist/vite-plugins/settings.d.ts +2 -1
  210. package/dist/vite-plugins/settings.d.ts.map +1 -1
  211. package/dist/vite-plugins/settings.js +56 -32
  212. package/dist/vite-plugins/settings.js.map +1 -1
  213. package/dist/vite-plugins/strip-query.d.ts +3 -0
  214. package/dist/vite-plugins/strip-query.d.ts.map +1 -0
  215. package/dist/vite-plugins/strip-query.js +6 -0
  216. package/dist/vite-plugins/strip-query.js.map +1 -0
  217. package/dist/vite-plugins/undeclared-library.d.ts +2 -1
  218. package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
  219. package/dist/vite-plugins/undeclared-library.js +8 -5
  220. package/dist/vite-plugins/undeclared-library.js.map +1 -1
  221. package/dist/vite-plugins/virtual-module.d.ts +2 -2
  222. package/dist/vite-plugins/virtual-module.d.ts.map +1 -1
  223. package/dist/vite-plugins/virtual-module.js +5 -3
  224. package/dist/vite-plugins/virtual-module.js.map +1 -1
  225. package/dist/vitest-plugin.d.ts.map +1 -1
  226. package/dist/vitest-plugin.js.map +1 -1
  227. package/env.d.ts +21 -61
  228. package/package.json +12 -14
  229. package/src/babel-modules.d.ts +0 -2
  230. package/src/builder.ts +7 -6
  231. package/src/cli.ts +26 -6
  232. package/src/codegen/freshness.ts +38 -25
  233. package/src/codegen/report.ts +10 -2
  234. package/src/codegen/run-codegen.ts +135 -60
  235. package/src/codegen/store-resolver.ts +56 -15
  236. package/src/commands/build.ts +3 -2
  237. package/src/commands/codegen.ts +9 -4
  238. package/src/commands/dev.ts +3 -4
  239. package/src/commands/docs.ts +36 -7
  240. package/src/dev/icon-dir.ts +13 -3
  241. package/src/dev/refresh-tracker.ts +12 -8
  242. package/src/dev/runner-deps.ts +30 -7
  243. package/src/dev/runner-main.ts +4 -3
  244. package/src/dev/runner.ts +100 -41
  245. package/src/dev/schema-dir.ts +7 -2
  246. package/src/dev/supervisor.ts +169 -71
  247. package/src/dev/vite-dev-server.ts +4 -2
  248. package/src/internal/banner.ts +5 -1
  249. package/src/internal/data-dir.ts +47 -16
  250. package/src/internal/entry-arg.ts +16 -8
  251. package/src/internal/errors.ts +15 -7
  252. package/src/internal/list-files.ts +10 -4
  253. package/src/internal/resolve-cli-tool.ts +28 -12
  254. package/src/internal/staging-dir.ts +5 -2
  255. package/src/internal/xdg-data-dirs.ts +8 -2
  256. package/src/mcp/client.ts +143 -85
  257. package/src/mcp/handlers.ts +126 -69
  258. package/src/mcp/index.ts +38 -14
  259. package/src/mcp/serialize-widget.ts +15 -8
  260. package/src/mcp/testing-loader.ts +64 -23
  261. package/src/mcp/widget-registry.ts +11 -5
  262. package/src/refresh-globals.ts +10 -0
  263. package/src/refresh-runtime.ts +20 -16
  264. package/src/settings/compile.ts +7 -4
  265. package/src/settings/parser.ts +69 -30
  266. package/src/settings/render.ts +66 -66
  267. package/src/settings/schema.ts +100 -46
  268. package/src/vite-plugins/asset-extensions.ts +4 -3
  269. package/src/vite-plugins/built-url.ts +30 -15
  270. package/src/vite-plugins/css.ts +35 -20
  271. package/src/vite-plugins/fast-refresh/refresh-filter.ts +18 -10
  272. package/src/vite-plugins/fast-refresh/swc-refresh.ts +60 -47
  273. package/src/vite-plugins/icons.ts +40 -24
  274. package/src/vite-plugins/index.ts +6 -3
  275. package/src/vite-plugins/native.ts +14 -5
  276. package/src/vite-plugins/react-compiler.ts +44 -30
  277. package/src/vite-plugins/react-dom-prebundle.ts +4 -1
  278. package/src/vite-plugins/resource-init-module.ts +41 -38
  279. package/src/vite-plugins/resource-shared.ts +27 -14
  280. package/src/vite-plugins/resources.ts +153 -59
  281. package/src/vite-plugins/settings-worker-env.ts +7 -2
  282. package/src/vite-plugins/settings.ts +107 -42
  283. package/src/vite-plugins/strip-query.ts +7 -0
  284. package/src/vite-plugins/undeclared-library.ts +21 -12
  285. package/src/vite-plugins/virtual-module.ts +9 -2
  286. package/src/vitest-plugin.ts +1 -2
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/vite-plugins/settings.ts"],"names":[],"mappings":"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","sourcesContent":["import { mkdtempSync, readFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { basename, join } from \"node:path\";\nimport { error, errorMessage, info } from \"@gtkx/utils\";\nimport type { ModuleNode, Plugin, UserConfig, ViteDevServer } from \"vite\";\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\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\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 ensureSchemaDir = (state: PluginState): string => {\n if (!state.schemaDir) {\n const runnerDir = process.env.GTKX_DEV_SCHEMA_DIR;\n if (runnerDir) {\n state.schemaDir = runnerDir;\n return runnerDir;\n }\n const dir = mkdtempSync(join(tmpdir(), \"gtkx-schemas-\"));\n state.schemaDir = dir;\n const cleanup = (): void => removeTempDir(dir);\n state.cleanupProcessExit = cleanup;\n process.once(\"exit\", cleanup);\n }\n return state.schemaDir;\n};\n\nconst releaseSchemaDir = (state: PluginState): void => {\n if (!state.schemaDir) return;\n if (state.cleanupProcessExit) {\n removeTempDir(state.schemaDir);\n process.removeListener(\"exit\", state.cleanupProcessExit);\n state.cleanupProcessExit = null;\n }\n state.schemaDir = null;\n};\n\nconst compileSchemaDir = (state: PluginState): void => {\n if (!state.schemaDir) return;\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) return;\n try {\n emitSchemaEnv(state.rootDir, state.dataDir);\n } catch (cause) {\n error(`Failed to generate GSettings schema types: ${errorMessage(cause)}`);\n }\n};\n\nconst registerSchemaForMode = (state: PluginState, filePath: string, id: string): void => {\n const fileName = basename(filePath);\n if (state.isBuild) {\n state.buildSchemas.add(filePath);\n info(`Queued GSettings schema: ${fileName}`);\n return;\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 => {\n const filePath = fromVirtualId(id);\n const xml = readFileSync(filePath, \"utf-8\");\n const fileName = basename(filePath);\n\n registerSchemaForMode(state, filePath, id);\n\n let parsed: ReturnType<typeof parseSchemaXml>;\n try {\n parsed = parseSchemaXml(xml, fileName);\n } catch (error) {\n if (!(error instanceof SchemaParseError)) throw error;\n ctx.error(error.message);\n }\n if (parsed.schemas.length === 0) {\n ctx.error(`No <schema id=\"...\"> found in ${fileName}`);\n }\n return renderRuntimeModule(parsed);\n};\n\nconst emitCompiledSchemas = (ctx: PluginContext, state: PluginState): void => {\n if (!state.isBuild || state.buildSchemas.size === 0) return;\n\n const compiled = withStagingDir(\"schemas-build\", (dir) => {\n for (const filePath of state.buildSchemas) {\n stageSchema(dir, filePath);\n }\n compileSchemas(dir);\n return readFileSync(join(dir, \"gschemas.compiled\"));\n });\n ctx.emitFile({\n type: \"asset\",\n fileName: \"gschemas.compiled\",\n source: compiled,\n });\n\n info(`Compiled ${state.buildSchemas.size} GSettings schema(s)`);\n};\n\nconst handleSchemaHotUpdate = (state: PluginState, file: string, server: ViteDevServer): ModuleNode[] | undefined => {\n const virtualId = state.trackedSchemas.get(file);\n if (!virtualId) return;\n\n const dir = ensureSchemaDir(state);\n stageSchema(dir, file);\n compileSchemaDir(state);\n\n info(`Recompiled GSettings schema: ${basename(file)}`);\n\n const mod = server.moduleGraph.getModuleById(virtualId);\n if (mod) {\n server.moduleGraph.invalidateModule(mod);\n return [mod];\n }\n return undefined;\n};\n\nconst watchSchemaFiles = (state: PluginState, server: ViteDevServer): void => {\n server.httpServer?.once(\"close\", () => releaseSchemaDir(state));\n server.watcher.once(\"close\", () => releaseSchemaDir(state));\n const refreshSchemaTypes = (file: string): void => {\n if (file.endsWith(SCHEMA_SUFFIX)) syncSchemaEnv(state);\n };\n server.watcher.on(\"add\", refreshSchemaTypes);\n server.watcher.on(\"unlink\", refreshSchemaTypes);\n};\n\nexport function 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 state.dataDir = resolveDataDir(config.root ?? process.cwd());\n },\n\n configResolved(config) {\n state.isBuild = config.command === \"build\";\n state.rootDir = typeof config.root === \"string\" ? config.root : null;\n syncSchemaEnv(state);\n },\n\n configureServer(server) {\n watchSchemaFiles(state, server);\n },\n\n outputOptions(options) {\n if (!state.isBuild) return;\n return prependBanner(options, SCHEMA_ENV_BANNER);\n },\n\n async resolveId(source, importer, options) {\n if (!source.endsWith(SCHEMA_SUFFIX)) return;\n return resolveToVirtual(this, { source, importer, options });\n },\n\n load(id) {\n if (!isVirtual(id)) return;\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 if (file.endsWith(SCHEMA_SUFFIX)) syncSchemaEnv(state);\n return handleSchemaHotUpdate(state, file, server);\n },\n };\n}\n"]}
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,3 @@
1
+ declare const stripQuery: (source: string) => string;
2
+ export { stripQuery };
3
+ //# sourceMappingURL=strip-query.d.ts.map
@@ -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,6 @@
1
+ const stripQuery = (source) => {
2
+ const queryIndex = source.indexOf("?");
3
+ return queryIndex === -1 ? source : source.slice(0, queryIndex);
4
+ };
5
+ export { stripQuery };
6
+ //# sourceMappingURL=strip-query.js.map
@@ -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"]}
@@ -1,3 +1,4 @@
1
1
  import type { Plugin } from "vite";
2
- export declare function gtkxUndeclaredLibrary(mode?: string): Plugin;
2
+ declare function gtkxUndeclaredLibrary(mode?: string): Plugin;
3
+ export { gtkxUndeclaredLibrary };
3
4
  //# sourceMappingURL=undeclared-library.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"undeclared-library.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/undeclared-library.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;AAyC/C,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAyB3D"}
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"}
@@ -8,8 +8,8 @@ const girSearchPaths = async (state) => {
8
8
  }
9
9
  return state.girPath;
10
10
  };
11
- const namespaceOf = (identifier) => identifier.slice(0, identifier.indexOf("-")).toLowerCase();
12
- const findGirIdentifier = (girPath, namespace) => discoverGirNamespaces(girPath).find((identifier) => namespaceOf(identifier) === namespace);
11
+ const getNamespace = (identifier) => identifier.slice(0, identifier.indexOf("-")).toLowerCase();
12
+ const findGirIdentifier = (girPath, namespace) => discoverGirNamespaces(girPath).find((identifier) => getNamespace(identifier) === namespace);
13
13
  const undeclaredLibraryError = (source, namespace, girPath) => {
14
14
  const identifier = findGirIdentifier(girPath, namespace);
15
15
  if (identifier === undefined) {
@@ -21,7 +21,7 @@ const undeclaredLibraryError = (source, namespace, girPath) => {
21
21
  return new Error(`Cannot resolve "${source}": the "${identifier}" bindings have not been generated. ` +
22
22
  `Add "${identifier}" to \`libraries\` in gtkx.config.ts, then run gtkx dev or gtkx build again.`);
23
23
  };
24
- export function gtkxUndeclaredLibrary(mode) {
24
+ function gtkxUndeclaredLibrary(mode) {
25
25
  const state = {
26
26
  root: "",
27
27
  mode,
@@ -35,13 +35,16 @@ export function gtkxUndeclaredLibrary(mode) {
35
35
  },
36
36
  async resolveId(source, importer, options) {
37
37
  const namespace = GENERATED_MODULE_PATTERN.exec(source)?.[1];
38
- if (namespace === undefined)
38
+ if (namespace === undefined) {
39
39
  return;
40
+ }
40
41
  const resolved = await this.resolve(source, importer, { ...options, skipSelf: true });
41
- if (resolved !== null)
42
+ if (resolved !== null) {
42
43
  return;
44
+ }
43
45
  throw undeclaredLibraryError(source, namespace, await girSearchPaths(state));
44
46
  },
45
47
  };
46
48
  }
49
+ export { gtkxUndeclaredLibrary };
47
50
  //# sourceMappingURL=undeclared-library.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"undeclared-library.js","sourceRoot":"","sources":["../../src/vite-plugins/undeclared-library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,MAAM,wBAAwB,GAAG,kCAAkC,CAAC;AAQpE,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;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAU,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAE/G,MAAM,iBAAiB,GAAG,CAAC,OAAiB,EAAE,SAAiB,EAAsB,EAAE,CACnF,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC;AAE/F,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;YACjG,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,SAAS,8BAA8B;YACpF,kGAAkG;YAClG,qDAAqD,CAC5D,CAAC;IACN,CAAC;IAED,OAAO,IAAI,KAAK,CACZ,mBAAmB,MAAM,WAAW,UAAU,sCAAsC;QAChF,QAAQ,UAAU,8EAA8E,CACvG,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,IAAa;IAC/C,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;YAC7D,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO;YAEpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACtF,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO;YAE9B,MAAM,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACjF,CAAC;KACJ,CAAC;AACN,CAAC","sourcesContent":["import { discoverGirNamespaces, resolveGirPath } from \"@gtkx/codegen\";\nimport { loadConfig } from \"@gtkx/config\";\nimport type { Plugin, UserConfig } from \"vite\";\n\nconst GENERATED_MODULE_PATTERN = /^@gtkx\\/(?:gi|jsx)\\/([a-z0-9]+)$/;\n\ntype PluginState = {\n root: string;\n mode: string | undefined;\n girPath: string[] | null;\n};\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 return state.girPath;\n};\n\nconst namespaceOf = (identifier: string): string => identifier.slice(0, identifier.indexOf(\"-\")).toLowerCase();\n\nconst findGirIdentifier = (girPath: string[], namespace: string): string | undefined =>\n discoverGirNamespaces(girPath).find((identifier) => namespaceOf(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\nexport function 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 if (namespace === undefined) return;\n\n const resolved = await this.resolve(source, importer, { ...options, skipSelf: true });\n if (resolved !== null) return;\n\n throw undeclaredLibraryError(source, namespace, await girSearchPaths(state));\n },\n };\n}\n"]}
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"]}
@@ -17,6 +17,6 @@ type VirtualNamespace = {
17
17
  fromVirtualId: (id: string) => string;
18
18
  resolveToVirtual: (ctx: VirtualResolveContext, request: VirtualResolveRequest) => Promise<string | undefined>;
19
19
  };
20
- export declare const createVirtualNamespace: (prefix: string) => VirtualNamespace;
21
- export {};
20
+ declare const createVirtualNamespace: (prefix: string) => VirtualNamespace;
21
+ export { createVirtualNamespace };
22
22
  //# sourceMappingURL=virtual-module.d.ts.map
@@ -1 +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,eAAO,MAAM,sBAAsB,WAAY,MAAM,KAAG,gBAevD,CAAC"}
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"}
@@ -1,4 +1,4 @@
1
- export const createVirtualNamespace = (prefix) => {
1
+ const createVirtualNamespace = (prefix) => {
2
2
  const toVirtualId = (realId) => prefix + realId;
3
3
  return {
4
4
  isVirtual: (id) => id.startsWith(prefix),
@@ -9,10 +9,12 @@ export const createVirtualNamespace = (prefix) => {
9
9
  ...request.options,
10
10
  skipSelf: true,
11
11
  });
12
- if (!resolved || resolved.external)
13
- return undefined;
12
+ if (!resolved || resolved.external) {
13
+ return;
14
+ }
14
15
  return toVirtualId(resolved.id);
15
16
  },
16
17
  };
17
18
  };
19
+ export { createVirtualNamespace };
18
20
  //# sourceMappingURL=virtual-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-module.js","sourceRoot":"","sources":["../../src/vite-plugins/virtual-module.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAoB,EAAE;IACvE,MAAM,WAAW,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;IAChE,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;YACH,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;gBAAE,OAAO,SAAS,CAAC;YACrD,OAAO,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;KACJ,CAAC;AACN,CAAC,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\nexport const createVirtualNamespace = (prefix: string): VirtualNamespace => {\n const toVirtualId = (realId: string): string => prefix + realId;\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 if (!resolved || resolved.external) return undefined;\n return toVirtualId(resolved.id);\n },\n };\n};\n"]}
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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"vitest-plugin.d.ts","sourceRoot":"","sources":["../src/vitest-plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC;;;;;GAKG;AACH,QAAA,MAAM,IAAI,QAAO,MAAM,EAAmE,CAAC;eAE5E,IAAI"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vitest-plugin.js","sourceRoot":"","sources":["../src/vitest-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,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;AAE3F,eAAe,IAAI,CAAC","sourcesContent":["import gtkxVitest from \"@gtkx/vitest\";\nimport type { Plugin } from \"vite\";\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()];\n\nexport default gtkx;\n"]}
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,124 +1,84 @@
1
1
  /// <reference types="vite/client" />
2
- /// <reference types="@gtkx/config/env" />
2
+ /// <reference types="@gtkx/react/env" />
3
3
 
4
- declare module "*.png" {
5
- const resourceUri: string;
4
+ declare module "*.aac" {
6
5
  export const path: string;
7
- export default resourceUri;
8
6
  }
9
7
 
10
- declare module "*.jpg" {
11
- const resourceUri: string;
8
+ declare module "*.avif" {
12
9
  export const path: string;
13
- export default resourceUri;
14
10
  }
15
11
 
16
- declare module "*.jpeg" {
17
- const resourceUri: string;
12
+ declare module "*.eot" {
18
13
  export const path: string;
19
- export default resourceUri;
20
14
  }
21
15
 
22
- declare module "*.gif" {
23
- const resourceUri: string;
16
+ declare module "*.flac" {
24
17
  export const path: string;
25
- export default resourceUri;
26
18
  }
27
19
 
28
- declare module "*.svg" {
29
- const resourceUri: string;
20
+ declare module "*.gif" {
30
21
  export const path: string;
31
- export default resourceUri;
32
22
  }
33
23
 
34
- declare module "*.webp" {
35
- const resourceUri: string;
24
+ declare module "*.ico" {
36
25
  export const path: string;
37
- export default resourceUri;
38
26
  }
39
27
 
40
- declare module "*.webm" {
41
- const resourceUri: string;
28
+ declare module "*.jpeg" {
42
29
  export const path: string;
43
- export default resourceUri;
44
30
  }
45
31
 
46
- declare module "*.mp4" {
47
- const resourceUri: string;
32
+ declare module "*.jpg" {
48
33
  export const path: string;
49
- export default resourceUri;
50
34
  }
51
35
 
52
- declare module "*.ogg" {
53
- const resourceUri: string;
36
+ declare module "*.mp3" {
54
37
  export const path: string;
55
- export default resourceUri;
56
38
  }
57
39
 
58
- declare module "*.mp3" {
59
- const resourceUri: string;
40
+ declare module "*.mp4" {
60
41
  export const path: string;
61
- export default resourceUri;
62
42
  }
63
43
 
64
- declare module "*.wav" {
65
- const resourceUri: string;
44
+ declare module "*.ogg" {
66
45
  export const path: string;
67
- export default resourceUri;
68
46
  }
69
47
 
70
- declare module "*.flac" {
71
- const resourceUri: string;
48
+ declare module "*.otf" {
72
49
  export const path: string;
73
- export default resourceUri;
74
50
  }
75
51
 
76
- declare module "*.aac" {
77
- const resourceUri: string;
52
+ declare module "*.png" {
78
53
  export const path: string;
79
- export default resourceUri;
80
54
  }
81
55
 
82
- declare module "*.woff" {
83
- const resourceUri: string;
56
+ declare module "*.svg" {
84
57
  export const path: string;
85
- export default resourceUri;
86
58
  }
87
59
 
88
- declare module "*.woff2" {
89
- const resourceUri: string;
60
+ declare module "*.ttf" {
90
61
  export const path: string;
91
- export default resourceUri;
92
62
  }
93
63
 
94
- declare module "*.eot" {
95
- const resourceUri: string;
64
+ declare module "*.wav" {
96
65
  export const path: string;
97
- export default resourceUri;
98
66
  }
99
67
 
100
- declare module "*.ttf" {
101
- const resourceUri: string;
68
+ declare module "*.webm" {
102
69
  export const path: string;
103
- export default resourceUri;
104
70
  }
105
71
 
106
- declare module "*.otf" {
107
- const resourceUri: string;
72
+ declare module "*.webp" {
108
73
  export const path: string;
109
- export default resourceUri;
110
74
  }
111
75
 
112
- declare module "*.ico" {
113
- const resourceUri: string;
76
+ declare module "*.woff" {
114
77
  export const path: string;
115
- export default resourceUri;
116
78
  }
117
79
 
118
- declare module "*.avif" {
119
- const resourceUri: string;
80
+ declare module "*.woff2" {
120
81
  export const path: string;
121
- export default resourceUri;
122
82
  }
123
83
 
124
84
  declare module "*.data" {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gtkx/cli",
3
- "version": "1.0.0-rc.1",
3
+ "version": "1.0.0-rc.2",
4
4
  "description": "Command-line tool and Vite plugin stack that scaffolds, develops, builds, and documents GTKX applications",
5
5
  "keywords": [
6
6
  "gtkx",
@@ -56,32 +56,30 @@
56
56
  "dependencies": {
57
57
  "@babel/core": "^8.0.1",
58
58
  "@babel/preset-typescript": "^8.0.1",
59
- "@swc/core": "^1.15.43",
59
+ "@swc/core": "^1.15.46",
60
60
  "babel-plugin-react-compiler": "^1.0.0",
61
61
  "citty": "^0.2.2",
62
- "fast-xml-parser": "^5.10.0",
62
+ "fast-xml-parser": "^5.10.1",
63
63
  "react-refresh": "^0.18.0",
64
- "vite": "^8.1.4",
65
- "@gtkx/codegen": "1.0.0-rc.1",
66
- "@gtkx/runtime": "1.0.0-rc.1",
67
- "@gtkx/mcp": "1.0.0-rc.1",
68
- "@gtkx/utils": "1.0.0-rc.1",
69
- "@gtkx/config": "1.0.0-rc.1",
70
- "create-gtkx": "1.0.0-rc.1",
71
- "@gtkx/vitest": "1.0.0-rc.1"
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
74
  "@types/babel__core": "^7.20.5",
75
75
  "@types/react-refresh": "^0.14.7",
76
76
  "vitest": "^4.1.10",
77
- "@gtkx/testing": "1.0.0-rc.1"
77
+ "@gtkx/testing": "1.0.0-rc.2"
78
78
  },
79
79
  "peerDependencies": {
80
80
  "react": "^19"
81
81
  },
82
82
  "scripts": {
83
- "build": "tsc -b tsconfig.lib.json",
84
- "typecheck": "tsc -b --emitDeclarationOnly",
85
83
  "release": "tsx ../../scripts/release-package.ts"
86
84
  }
87
85
  }
@@ -1,13 +1,11 @@
1
1
  declare module "babel-plugin-react-compiler" {
2
2
  import type { PluginTarget } from "@babel/core";
3
-
4
3
  const plugin: PluginTarget & { default?: PluginTarget };
5
4
  export default plugin;
6
5
  }
7
6
 
8
7
  declare module "@babel/preset-typescript" {
9
8
  import type { PresetTarget } from "@babel/core";
10
-
11
9
  const preset: PresetTarget & { default?: PresetTarget };
12
10
  export default preset;
13
11
  }
package/src/builder.ts CHANGED
@@ -3,14 +3,14 @@ import { gtkxBuiltUrl } from "./vite-plugins/built-url.js";
3
3
  import { gtkxVitePlugins } from "./vite-plugins/index.js";
4
4
  import { gtkxNative } from "./vite-plugins/native.js";
5
5
 
6
- const BUILD_MODE = "production";
7
-
8
- export type BuildOptions = {
6
+ type BuildOptions = {
9
7
  entry: string;
10
8
  assetBase?: string | undefined;
11
9
  vite?: InlineConfig | undefined;
12
10
  };
13
11
 
12
+ const BUILD_MODE = "production";
13
+
14
14
  const buildDefaults: InlineConfig = {
15
15
  build: {
16
16
  ssrEmitAssets: true,
@@ -23,7 +23,7 @@ const buildDefaults: InlineConfig = {
23
23
  },
24
24
  };
25
25
 
26
- export const build = async (options: BuildOptions): Promise<void> => {
26
+ const build = async (options: BuildOptions): Promise<void> => {
27
27
  const { entry, assetBase, vite: viteConfig } = options;
28
28
  const root = viteConfig?.root ?? process.cwd();
29
29
 
@@ -40,7 +40,8 @@ export const build = async (options: BuildOptions): Promise<void> => {
40
40
  },
41
41
  };
42
42
 
43
- const merged = mergeConfig(mergeConfig(buildDefaults, viteConfig ?? {}), forced);
44
-
43
+ const merged: InlineConfig = mergeConfig(mergeConfig(buildDefaults, viteConfig ?? {}), forced);
45
44
  await viteBuild({ ...merged, ssr: { ...merged.ssr, noExternal: true } });
46
45
  };
46
+
47
+ export { build, type BuildOptions };
package/src/cli.ts CHANGED
@@ -4,18 +4,38 @@ import { withErrorBoundary } from "./internal/errors.js";
4
4
 
5
5
  const version = packageVersion(import.meta.url);
6
6
 
7
- export const main = defineCommand({
7
+ const main = defineCommand({
8
8
  meta: {
9
9
  name: "gtkx",
10
10
  version,
11
11
  description: "CLI for GTKX: create and develop GTK4 React applications",
12
12
  },
13
13
  subCommands: {
14
- dev: () => import("./commands/dev.js").then((m) => withErrorBoundary(m.dev)),
15
- build: () => import("./commands/build.js").then((m) => withErrorBoundary(m.build)),
16
- codegen: () => import("./commands/codegen.js").then((m) => withErrorBoundary(m.codegen)),
17
- docs: () => import("./commands/docs.js").then((m) => withErrorBoundary(m.docs)),
18
- create: () => import("create-gtkx").then((m) => withErrorBoundary(m.createCommand)),
14
+ dev: async () => {
15
+ const { dev } = await import("./commands/dev.js");
16
+
17
+ return withErrorBoundary(dev);
18
+ },
19
+ build: async () => {
20
+ const { build } = await import("./commands/build.js");
21
+
22
+ return withErrorBoundary(build);
23
+ },
24
+ codegen: async () => {
25
+ const { codegen } = await import("./commands/codegen.js");
26
+
27
+ return withErrorBoundary(codegen);
28
+ },
29
+ docs: async () => {
30
+ const { docs } = await import("./commands/docs.js");
31
+
32
+ return withErrorBoundary(docs);
33
+ },
34
+ create: async () => {
35
+ const { scaffoldCommand } = await import("create-gtkx");
36
+
37
+ return withErrorBoundary(scaffoldCommand);
38
+ },
19
39
  },
20
40
  });
21
41
 
@@ -1,52 +1,65 @@
1
+ import type { Config } from "@gtkx/config";
2
+ import { resolveGirPath, resolveLibraries } from "@gtkx/codegen";
1
3
  import { existsSync } from "node:fs";
2
4
  import { join } from "node:path";
3
- import { resolveGirPath, resolveLibraries } from "@gtkx/codegen";
4
- import type { Config, ElementProp } from "@gtkx/config";
5
5
  import { type CodegenStore, resolveCodegenStore } from "./store-resolver.js";
6
6
 
7
- export type CodegenInputs = {
7
+ type CodegenInputs = {
8
8
  girPath: string[];
9
9
  libraries: string[];
10
- elementProps: Record<string, ElementProp[]>;
11
10
  store: CodegenStore;
12
11
  };
13
12
 
14
- export const resolveCodegenInputs = (cwd: string, config: Config): CodegenInputs => {
13
+ const REACT_GENERATED_MODULES: string[] = ["metadata.js", join("gtk", "gtk.js")];
14
+
15
+ const resolveCodegenInputs = (cwd: string, config: Config): CodegenInputs => {
15
16
  const girPath = resolveGirPath(config.girPath);
16
17
  const libraries = resolveLibraries(config.libraries, girPath);
17
18
  const store = resolveCodegenStore(cwd);
18
- return { girPath, libraries, elementProps: config.elementProps ?? {}, store };
19
- };
20
19
 
21
- const REACT_GENERATED_MODULES: string[] = ["metadata.js", join("gtk", "gtk.js")];
20
+ return { girPath, libraries, store };
21
+ };
22
22
 
23
23
  const namespaceBarrelPath = (giStoreDir: string, library: string): string => {
24
24
  const separator = library.indexOf("-");
25
25
  const namespace = (separator === -1 ? library : library.slice(0, separator)).toLowerCase();
26
+
26
27
  return join(giStoreDir, namespace, "index.js");
27
28
  };
28
29
 
29
- const giStoreLinksResolve = (giStoreDir: string): boolean =>
30
+ const canResolveGiStoreLinks = (giStoreDir: string): boolean =>
30
31
  existsSync(join(giStoreDir, "node_modules", "@gtkx", "gi", "package.json"));
31
32
 
32
- export const isCodegenStale = (inputs: CodegenInputs): boolean => {
33
- try {
34
- const { store, libraries } = inputs;
35
- if (!existsSync(store.giLinkDir) || !existsSync(store.giStoreDir)) {
36
- return true;
37
- }
38
- if (!giStoreLinksResolve(store.giStoreDir)) {
39
- return true;
40
- }
41
- if (libraries.some((library) => !existsSync(namespaceBarrelPath(store.giStoreDir, library)))) {
42
- return true;
43
- }
44
- if (store.react !== null) {
45
- if (!existsSync(store.jsxLinkDir)) return true;
46
- if (REACT_GENERATED_MODULES.some((module) => !existsSync(join(store.jsxStoreDir, module)))) return true;
47
- }
33
+ const isGiStoreStale = (store: CodegenStore, libraries: string[]): boolean => {
34
+ if (!existsSync(store.giLinkDir) || !existsSync(store.giStoreDir)) {
35
+ return true;
36
+ }
37
+
38
+ if (!canResolveGiStoreLinks(store.giStoreDir)) {
39
+ return true;
40
+ }
41
+
42
+ return libraries.some((library) => !existsSync(namespaceBarrelPath(store.giStoreDir, library)));
43
+ };
44
+
45
+ const isReactStoreStale = (store: CodegenStore): boolean => {
46
+ if (store.react === null) {
48
47
  return false;
48
+ }
49
+
50
+ if (!existsSync(store.jsxLinkDir)) {
51
+ return true;
52
+ }
53
+
54
+ return REACT_GENERATED_MODULES.some((module) => !existsSync(join(store.jsxStoreDir, module)));
55
+ };
56
+
57
+ const isCodegenStale = (inputs: CodegenInputs): boolean => {
58
+ try {
59
+ return isGiStoreStale(inputs.store, inputs.libraries) || isReactStoreStale(inputs.store);
49
60
  } catch {
50
61
  return true;
51
62
  }
52
63
  };
64
+
65
+ export { resolveCodegenInputs, isCodegenStale, type CodegenInputs };