@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
package/dist/mcp/index.js CHANGED
@@ -1,17 +1,34 @@
1
1
  import { McpClient } from "./client.js";
2
- let globalClient = null;
3
- export const startMcpClient = async (applicationId) => {
4
- if (globalClient) {
5
- return globalClient;
2
+ const { start: startMcpClient, stop: stopMcpClient } = createMcpClientController();
3
+ async function connectQuietly(client) {
4
+ try {
5
+ await client.connect();
6
+ return true;
6
7
  }
7
- globalClient = new McpClient({ applicationId });
8
- await globalClient.connect().catch(() => { });
9
- return globalClient;
10
- };
11
- export const stopMcpClient = () => {
12
- if (globalClient) {
13
- globalClient.disconnect();
14
- globalClient = null;
8
+ catch {
9
+ return false;
15
10
  }
16
- };
11
+ }
12
+ function createMcpClientController() {
13
+ let current = null;
14
+ return {
15
+ start: async (applicationId) => {
16
+ if (current) {
17
+ return current;
18
+ }
19
+ const client = new McpClient({ applicationId });
20
+ current = client;
21
+ await connectQuietly(client);
22
+ return client;
23
+ },
24
+ stop: () => {
25
+ if (!current) {
26
+ return;
27
+ }
28
+ current.disconnect();
29
+ current = null;
30
+ },
31
+ };
32
+ }
33
+ export { startMcpClient, stopMcpClient };
17
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,IAAI,YAAY,GAAqB,IAAI,CAAC;AAE1C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,aAAqB,EAAsB,EAAE;IAC9E,IAAI,YAAY,EAAE,CAAC;QACf,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,YAAY,GAAG,IAAI,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IAEhD,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAE7C,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAS,EAAE;IACpC,IAAI,YAAY,EAAE,CAAC;QACf,YAAY,CAAC,UAAU,EAAE,CAAC;QAC1B,YAAY,GAAG,IAAI,CAAC;IACxB,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { McpClient } from \"./client.js\";\n\nlet globalClient: McpClient | null = null;\n\nexport const startMcpClient = async (applicationId: string): Promise<McpClient> => {\n if (globalClient) {\n return globalClient;\n }\n\n globalClient = new McpClient({ applicationId });\n\n await globalClient.connect().catch(() => {});\n\n return globalClient;\n};\n\nexport const stopMcpClient = (): void => {\n if (globalClient) {\n globalClient.disconnect();\n globalClient = null;\n }\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOxC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,yBAAyB,EAAE,CAAC;AAEnF,KAAK,UAAU,cAAc,CAAC,MAAiB;IAC3C,IAAI,CAAC;QACD,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB;IAC9B,IAAI,OAAO,GAAqB,IAAI,CAAC;IAErC,OAAO;QACH,KAAK,EAAE,KAAK,EAAE,aAAqB,EAAsB,EAAE;YACvD,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,OAAO,CAAC;YACnB,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;YAChD,OAAO,GAAG,MAAM,CAAC;YACjB,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;YAE7B,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,IAAI,EAAE,GAAS,EAAE;YACb,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO;YACX,CAAC;YAED,OAAO,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;KACJ,CAAC;AACN,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC","sourcesContent":["import { McpClient } from \"./client.js\";\n\ntype McpClientController = {\n start: (applicationId: string) => Promise<McpClient>;\n stop: () => void;\n};\n\nconst { start: startMcpClient, stop: stopMcpClient } = createMcpClientController();\n\nasync function connectQuietly(client: McpClient): Promise<boolean> {\n try {\n await client.connect();\n\n return true;\n } catch {\n return false;\n }\n}\n\nfunction createMcpClientController(): McpClientController {\n let current: McpClient | null = null;\n\n return {\n start: async (applicationId: string): Promise<McpClient> => {\n if (current) {\n return current;\n }\n\n const client = new McpClient({ applicationId });\n current = client;\n await connectQuietly(client);\n\n return client;\n },\n stop: (): void => {\n if (!current) {\n return;\n }\n\n current.disconnect();\n current = null;\n },\n };\n}\n\nexport { startMcpClient, stopMcpClient };\n"]}
@@ -1,10 +1,10 @@
1
1
  import type * as Gtk from "@gtkx/gi/gtk";
2
2
  import type { SerializedWidget } from "@gtkx/mcp/internal";
3
3
  type WidgetIdResolver = (widget: Gtk.Widget) => string;
4
- export type WidgetFormatting = {
4
+ type WidgetFormatting = {
5
5
  formatRole(role: Gtk.AccessibleRole): string;
6
6
  getWidgetNodeText(widget: Gtk.Widget): string | null;
7
7
  };
8
- export declare const serializeWidget: (widget: Gtk.Widget, idFor: WidgetIdResolver, testing: WidgetFormatting) => SerializedWidget;
9
- export {};
8
+ declare const serializeWidget: (widget: Gtk.Widget, resolveId: WidgetIdResolver, testing: WidgetFormatting, maxDepth?: number) => SerializedWidget;
9
+ export { serializeWidget, type WidgetFormatting };
10
10
  //# sourceMappingURL=serialize-widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialize-widget.d.ts","sourceRoot":"","sources":["../../src/mcp/serialize-widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC;IAC7C,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACxD,CAAC;AAEF,eAAO,MAAM,eAAe,WAChB,GAAG,CAAC,MAAM,SACX,gBAAgB,WACd,gBAAgB,KAC1B,gBAmBF,CAAC"}
1
+ {"version":3,"file":"serialize-widget.d.ts","sourceRoot":"","sources":["../../src/mcp/serialize-widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC;AAEvD,KAAK,gBAAgB,GAAG;IACpB,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC;IAC7C,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACxD,CAAC;AAEF,QAAA,MAAM,eAAe,GACjB,QAAQ,GAAG,CAAC,MAAM,EAClB,WAAW,gBAAgB,EAC3B,SAAS,gBAAgB,EACzB,iBAAmB,KACpB,gBAuBF,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,CAAC"}
@@ -1,12 +1,14 @@
1
- export const serializeWidget = (widget, idFor, testing) => {
1
+ const serializeWidget = (widget, resolveId, testing, maxDepth = Infinity) => {
2
2
  const children = [];
3
- let child = widget.getFirstChild();
4
- while (child) {
5
- children.push(serializeWidget(child, idFor, testing));
6
- child = child.getNextSibling();
3
+ if (maxDepth > 0) {
4
+ let child = widget.getFirstChild();
5
+ while (child) {
6
+ children.push(serializeWidget(child, resolveId, testing, maxDepth - 1));
7
+ child = child.getNextSibling();
8
+ }
7
9
  }
8
10
  return {
9
- id: idFor(widget),
11
+ id: resolveId(widget),
10
12
  type: widget.constructor.name,
11
13
  role: testing.formatRole(widget.getAccessibleRole()),
12
14
  name: widget.getName() || null,
@@ -17,4 +19,5 @@ export const serializeWidget = (widget, idFor, testing) => {
17
19
  children,
18
20
  };
19
21
  };
22
+ export { serializeWidget };
20
23
  //# sourceMappingURL=serialize-widget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialize-widget.js","sourceRoot":"","sources":["../../src/mcp/serialize-widget.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,MAAkB,EAClB,KAAuB,EACvB,OAAyB,EACT,EAAE;IAClB,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,IAAI,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IACnC,OAAO,KAAK,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACtD,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACH,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;QAC7B,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACpD,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI;QAC9B,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE;QAChC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE;QAClC,QAAQ;KACX,CAAC;AACN,CAAC,CAAC","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport type { SerializedWidget } from \"@gtkx/mcp/internal\";\n\ntype WidgetIdResolver = (widget: Gtk.Widget) => string;\n\nexport type WidgetFormatting = {\n formatRole(role: Gtk.AccessibleRole): string;\n getWidgetNodeText(widget: Gtk.Widget): string | null;\n};\n\nexport const serializeWidget = (\n widget: Gtk.Widget,\n idFor: WidgetIdResolver,\n testing: WidgetFormatting,\n): SerializedWidget => {\n const children: SerializedWidget[] = [];\n let child = widget.getFirstChild();\n while (child) {\n children.push(serializeWidget(child, idFor, testing));\n child = child.getNextSibling();\n }\n\n return {\n id: idFor(widget),\n type: widget.constructor.name,\n role: testing.formatRole(widget.getAccessibleRole()),\n name: widget.getName() || null,\n text: testing.getWidgetNodeText(widget),\n sensitive: widget.getSensitive(),\n visible: widget.getVisible(),\n cssClasses: widget.getCssClasses(),\n children,\n };\n};\n"]}
1
+ {"version":3,"file":"serialize-widget.js","sourceRoot":"","sources":["../../src/mcp/serialize-widget.ts"],"names":[],"mappings":"AAUA,MAAM,eAAe,GAAG,CACpB,MAAkB,EAClB,SAA2B,EAC3B,OAAyB,EACzB,QAAQ,GAAG,QAAQ,EACH,EAAE;IAClB,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACf,IAAI,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAEnC,OAAO,KAAK,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAED,OAAO;QACH,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;QAC7B,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACpD,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI;QAC9B,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE;QAChC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE;QAClC,QAAQ;KACX,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAyB,CAAC","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport type { SerializedWidget } from \"@gtkx/mcp/internal\";\n\ntype WidgetIdResolver = (widget: Gtk.Widget) => string;\n\ntype WidgetFormatting = {\n formatRole(role: Gtk.AccessibleRole): string;\n getWidgetNodeText(widget: Gtk.Widget): string | null;\n};\n\nconst serializeWidget = (\n widget: Gtk.Widget,\n resolveId: WidgetIdResolver,\n testing: WidgetFormatting,\n maxDepth = Infinity,\n): SerializedWidget => {\n const children: SerializedWidget[] = [];\n\n if (maxDepth > 0) {\n let child = widget.getFirstChild();\n\n while (child) {\n children.push(serializeWidget(child, resolveId, testing, maxDepth - 1));\n child = child.getNextSibling();\n }\n }\n\n return {\n id: resolveId(widget),\n type: widget.constructor.name,\n role: testing.formatRole(widget.getAccessibleRole()),\n name: widget.getName() || null,\n text: testing.getWidgetNodeText(widget),\n sensitive: widget.getSensitive(),\n visible: widget.getVisible(),\n cssClasses: widget.getCssClasses(),\n children,\n };\n};\n\nexport { serializeWidget, type WidgetFormatting };\n"]}
@@ -1,6 +1,5 @@
1
1
  type TestingModule = typeof import("@gtkx/testing");
2
- export type TestingModuleLoader = () => Promise<TestingModule>;
3
- export declare const setTestingModuleLoader: (next: TestingModuleLoader | null) => void;
4
- export declare const loadTestingModule: () => Promise<TestingModule>;
5
- export {};
2
+ type TestingModuleLoader = () => Promise<TestingModule>;
3
+ declare const setTestingModuleLoader: (next: TestingModuleLoader | null) => void, loadTestingModule: () => Promise<TestingModule>;
4
+ export { setTestingModuleLoader, loadTestingModule, type TestingModule, type TestingModuleLoader };
6
5
  //# sourceMappingURL=testing-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing-loader.d.ts","sourceRoot":"","sources":["../../src/mcp/testing-loader.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,cAAc,eAAe,CAAC,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;AAQ/D,eAAO,MAAM,sBAAsB,SAAU,mBAAmB,GAAG,IAAI,KAAG,IAIzE,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,aAAa,CAe/D,CAAC"}
1
+ {"version":3,"file":"testing-loader.d.ts","sourceRoot":"","sources":["../../src/mcp/testing-loader.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,cAAc,eAAe,CAAC,CAAC;AACpD,KAAK,mBAAmB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;AAaxD,QAAA,MAAmB,sBAAsB,SAVnB,mBAAmB,GAAG,IAAI,KAAK,IAAI,EAUR,iBAAiB,QATlD,OAAO,CAAC,aAAa,CAS4D,CAAC;AA0DlG,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,CAAC"}
@@ -1,25 +1,47 @@
1
- const defaultLoader = () => import("@gtkx/testing");
2
- let loader = defaultLoader;
3
- let testingModule = null;
4
- let testingLoadError = null;
5
- export const setTestingModuleLoader = (next) => {
6
- loader = next ?? defaultLoader;
7
- testingModule = null;
8
- testingLoadError = null;
9
- };
10
- export const loadTestingModule = async () => {
11
- if (testingModule)
12
- return testingModule;
13
- if (testingLoadError)
14
- throw testingLoadError;
1
+ const { setLoader: setTestingModuleLoader, load: loadTestingModule } = createTestingModuleCache();
2
+ function defaultLoader() {
3
+ return import("@gtkx/testing");
4
+ }
5
+ function missingTestingPackageError(cause) {
6
+ return new Error("@gtkx/testing is not installed, install it to enable MCP widget interactions: " +
7
+ `pnpm add -D @gtkx/testing (import failed: ${String(cause)})`, { cause });
8
+ }
9
+ function replaceLoader(state, next) {
10
+ state.loader = next ?? defaultLoader;
11
+ state.testingModule = null;
12
+ state.testingLoadError = null;
13
+ }
14
+ async function importTestingModule(state) {
15
15
  try {
16
- testingModule = await loader();
17
- return testingModule;
16
+ state.testingModule = await state.loader();
17
+ return state.testingModule;
18
18
  }
19
- catch (cause) {
20
- testingLoadError = new Error("@gtkx/testing is not installed, install it to enable MCP widget interactions: " +
21
- `pnpm add -D @gtkx/testing (import failed: ${String(cause)})`, { cause });
22
- throw testingLoadError;
19
+ catch (error) {
20
+ state.testingLoadError = missingTestingPackageError(error);
21
+ throw state.testingLoadError;
23
22
  }
24
- };
23
+ }
24
+ function loadCachedTestingModule(state) {
25
+ if (state.testingModule) {
26
+ return Promise.resolve(state.testingModule);
27
+ }
28
+ if (state.testingLoadError) {
29
+ return Promise.reject(state.testingLoadError);
30
+ }
31
+ return importTestingModule(state);
32
+ }
33
+ function createTestingModuleCache() {
34
+ const state = {
35
+ loader: defaultLoader,
36
+ testingModule: null,
37
+ testingLoadError: null,
38
+ };
39
+ return {
40
+ setLoader: (next) => {
41
+ replaceLoader(state, next);
42
+ },
43
+ load: () => loadCachedTestingModule(state),
44
+ };
45
+ }
46
+ export { setTestingModuleLoader, loadTestingModule };
25
47
  //# sourceMappingURL=testing-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing-loader.js","sourceRoot":"","sources":["../../src/mcp/testing-loader.ts"],"names":[],"mappings":"AAIA,MAAM,aAAa,GAAwB,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAEzE,IAAI,MAAM,GAAwB,aAAa,CAAC;AAChD,IAAI,aAAa,GAAyB,IAAI,CAAC;AAC/C,IAAI,gBAAgB,GAAiB,IAAI,CAAC;AAE1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAgC,EAAQ,EAAE;IAC7E,MAAM,GAAG,IAAI,IAAI,aAAa,CAAC;IAC/B,aAAa,GAAG,IAAI,CAAC;IACrB,gBAAgB,GAAG,IAAI,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,IAA4B,EAAE;IAChE,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IACxC,IAAI,gBAAgB;QAAE,MAAM,gBAAgB,CAAC;IAE7C,IAAI,CAAC;QACD,aAAa,GAAG,MAAM,MAAM,EAAE,CAAC;QAC/B,OAAO,aAAa,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,gBAAgB,GAAG,IAAI,KAAK,CACxB,gFAAgF;YAC5E,6CAA6C,MAAM,CAAC,KAAK,CAAC,GAAG,EACjE,EAAE,KAAK,EAAE,CACZ,CAAC;QACF,MAAM,gBAAgB,CAAC;IAC3B,CAAC;AACL,CAAC,CAAC","sourcesContent":["type TestingModule = typeof import(\"@gtkx/testing\");\n\nexport type TestingModuleLoader = () => Promise<TestingModule>;\n\nconst defaultLoader: TestingModuleLoader = () => import(\"@gtkx/testing\");\n\nlet loader: TestingModuleLoader = defaultLoader;\nlet testingModule: TestingModule | null = null;\nlet testingLoadError: Error | null = null;\n\nexport const setTestingModuleLoader = (next: TestingModuleLoader | null): void => {\n loader = next ?? defaultLoader;\n testingModule = null;\n testingLoadError = null;\n};\n\nexport const loadTestingModule = async (): Promise<TestingModule> => {\n if (testingModule) return testingModule;\n if (testingLoadError) throw testingLoadError;\n\n try {\n testingModule = await loader();\n return testingModule;\n } catch (cause) {\n testingLoadError = new Error(\n \"@gtkx/testing is not installed, install it to enable MCP widget interactions: \" +\n `pnpm add -D @gtkx/testing (import failed: ${String(cause)})`,\n { cause },\n );\n throw testingLoadError;\n }\n};\n"]}
1
+ {"version":3,"file":"testing-loader.js","sourceRoot":"","sources":["../../src/mcp/testing-loader.ts"],"names":[],"mappings":"AAcA,MAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,wBAAwB,EAAE,CAAC;AAElG,SAAS,aAAa;IAClB,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAc;IAC9C,OAAO,IAAI,KAAK,CACZ,gFAAgF;QAChF,6CAA6C,MAAM,CAAC,KAAK,CAAC,GAAG,EAC7D,EAAE,KAAK,EAAE,CACZ,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,KAAyB,EAAE,IAAgC;IAC9E,KAAK,CAAC,MAAM,GAAG,IAAI,IAAI,aAAa,CAAC;IACrC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,KAAyB;IACxD,IAAI,CAAC;QACD,KAAK,CAAC,aAAa,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;QAE3C,OAAO,KAAK,CAAC,aAAa,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,KAAK,CAAC,gBAAgB,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,KAAK,CAAC,gBAAgB,CAAC;IACjC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAyB;IACtD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,wBAAwB;IAC7B,MAAM,KAAK,GAAuB;QAC9B,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;KACzB,CAAC;IAEF,OAAO;QACH,SAAS,EAAE,CAAC,IAAgC,EAAQ,EAAE;YAClD,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,EAAE,GAA2B,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC;KACrE,CAAC;AACN,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAgD,CAAC","sourcesContent":["type TestingModule = typeof import(\"@gtkx/testing\");\ntype TestingModuleLoader = () => Promise<TestingModule>;\n\ntype TestingModuleCache = {\n setLoader: (next: TestingModuleLoader | null) => void;\n load: () => Promise<TestingModule>;\n};\n\ntype TestingModuleState = {\n loader: TestingModuleLoader;\n testingModule: TestingModule | null;\n testingLoadError: Error | null;\n};\n\nconst { setLoader: setTestingModuleLoader, load: loadTestingModule } = createTestingModuleCache();\n\nfunction defaultLoader(): Promise<TestingModule> {\n return import(\"@gtkx/testing\");\n}\n\nfunction missingTestingPackageError(cause: unknown): Error {\n return new Error(\n \"@gtkx/testing is not installed, install it to enable MCP widget interactions: \" +\n `pnpm add -D @gtkx/testing (import failed: ${String(cause)})`,\n { cause },\n );\n}\n\nfunction replaceLoader(state: TestingModuleState, next: TestingModuleLoader | null): void {\n state.loader = next ?? defaultLoader;\n state.testingModule = null;\n state.testingLoadError = null;\n}\n\nasync function importTestingModule(state: TestingModuleState): Promise<TestingModule> {\n try {\n state.testingModule = await state.loader();\n\n return state.testingModule;\n } catch (error) {\n state.testingLoadError = missingTestingPackageError(error);\n throw state.testingLoadError;\n }\n}\n\nfunction loadCachedTestingModule(state: TestingModuleState): Promise<TestingModule> {\n if (state.testingModule) {\n return Promise.resolve(state.testingModule);\n }\n\n if (state.testingLoadError) {\n return Promise.reject(state.testingLoadError);\n }\n\n return importTestingModule(state);\n}\n\nfunction createTestingModuleCache(): TestingModuleCache {\n const state: TestingModuleState = {\n loader: defaultLoader,\n testingModule: null,\n testingLoadError: null,\n };\n\n return {\n setLoader: (next: TestingModuleLoader | null): void => {\n replaceLoader(state, next);\n },\n load: (): Promise<TestingModule> => loadCachedTestingModule(state),\n };\n}\n\nexport { setTestingModuleLoader, loadTestingModule, type TestingModule, type TestingModuleLoader };\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as Gtk from "@gtkx/gi/gtk";
2
- export declare class WidgetRegistry {
2
+ declare class WidgetRegistry {
3
3
  private idByWidget;
4
4
  private nextId;
5
5
  private widgetById;
@@ -7,7 +7,8 @@ export declare class WidgetRegistry {
7
7
  refresh(): void;
8
8
  toplevels(): Gtk.Window[];
9
9
  register(widget: Gtk.Widget): void;
10
- idFor(widget: Gtk.Widget): string;
10
+ getOrCreateId(widget: Gtk.Widget): string;
11
11
  get(id: string): Gtk.Widget | undefined;
12
12
  }
13
+ export { WidgetRegistry };
13
14
  //# sourceMappingURL=widget-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget-registry.d.ts","sourceRoot":"","sources":["../../src/mcp/widget-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,qBAAa,cAAc;IACvB,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,eAAe,CAAoB;IAE3C,OAAO,IAAI,IAAI,CAMd;IAED,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,CAExB;IAED,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAQjC;IAED,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAOhC;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,SAAS,CAEtC;CACJ"}
1
+ {"version":3,"file":"widget-registry.d.ts","sourceRoot":"","sources":["../../src/mcp/widget-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,cAAM,cAAc;IAChB,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,UAAU,CAAsC;IACxD,OAAO,CAAC,eAAe,CAAoB;IAE3C,OAAO,IAAI,IAAI;IASf,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE;IAIzB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI;IAWlC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM;IAWzC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,SAAS;CAG1C;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import * as Gtk from "@gtkx/gi/gtk";
2
- export class WidgetRegistry {
2
+ class WidgetRegistry {
3
3
  idByWidget = new WeakMap();
4
4
  nextId = 0;
5
5
  widgetById = new Map();
@@ -15,7 +15,7 @@ export class WidgetRegistry {
15
15
  return this.toplevelWindows;
16
16
  }
17
17
  register(widget) {
18
- const id = this.idFor(widget);
18
+ const id = this.getOrCreateId(widget);
19
19
  this.widgetById.set(id, widget);
20
20
  let child = widget.getFirstChild();
21
21
  while (child) {
@@ -23,7 +23,7 @@ export class WidgetRegistry {
23
23
  child = child.getNextSibling();
24
24
  }
25
25
  }
26
- idFor(widget) {
26
+ getOrCreateId(widget) {
27
27
  let id = this.idByWidget.get(widget);
28
28
  if (!id) {
29
29
  id = String(this.nextId++);
@@ -35,4 +35,5 @@ export class WidgetRegistry {
35
35
  return this.widgetById.get(id);
36
36
  }
37
37
  }
38
+ export { WidgetRegistry };
38
39
  //# sourceMappingURL=widget-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget-registry.js","sourceRoot":"","sources":["../../src/mcp/widget-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,MAAM,OAAO,cAAc;IACf,UAAU,GAAG,IAAI,OAAO,EAAsB,CAAC;IAC/C,MAAM,GAAG,CAAC,CAAC;IACX,UAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC3C,eAAe,GAAiB,EAAE,CAAC;IAE3C,OAAO;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,EAAkB,CAAC;QAClE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,QAAQ,CAAC,MAAkB;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QACnC,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAkB;QACpB,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,GAAG,CAAC,EAAU;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;CACJ","sourcesContent":["import * as Gtk from \"@gtkx/gi/gtk\";\n\nexport class WidgetRegistry {\n private idByWidget = new WeakMap<Gtk.Widget, string>();\n private nextId = 0;\n private widgetById = new Map<string, Gtk.Widget>();\n private toplevelWindows: Gtk.Window[] = [];\n\n refresh(): void {\n this.widgetById.clear();\n this.toplevelWindows = Gtk.Window.listToplevels() as Gtk.Window[];\n for (const window of this.toplevelWindows) {\n this.register(window);\n }\n }\n\n toplevels(): Gtk.Window[] {\n return this.toplevelWindows;\n }\n\n register(widget: Gtk.Widget): void {\n const id = this.idFor(widget);\n this.widgetById.set(id, widget);\n let child = widget.getFirstChild();\n while (child) {\n this.register(child);\n child = child.getNextSibling();\n }\n }\n\n idFor(widget: Gtk.Widget): string {\n let id = this.idByWidget.get(widget);\n if (!id) {\n id = String(this.nextId++);\n this.idByWidget.set(widget, id);\n }\n return id;\n }\n\n get(id: string): Gtk.Widget | undefined {\n return this.widgetById.get(id);\n }\n}\n"]}
1
+ {"version":3,"file":"widget-registry.js","sourceRoot":"","sources":["../../src/mcp/widget-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,MAAM,cAAc;IACR,UAAU,GAAgC,IAAI,OAAO,EAAE,CAAC;IACxD,MAAM,GAAG,CAAC,CAAC;IACX,UAAU,GAA4B,IAAI,GAAG,EAAE,CAAC;IAChD,eAAe,GAAiB,EAAE,CAAC;IAE3C,OAAO;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,EAAkB,CAAC;QAElE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,QAAQ,CAAC,MAAkB;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAEnC,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,MAAkB;QAC5B,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAED,GAAG,CAAC,EAAU;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;CACJ;AAED,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import * as Gtk from \"@gtkx/gi/gtk\";\n\nclass WidgetRegistry {\n private idByWidget: WeakMap<Gtk.Widget, string> = new WeakMap();\n private nextId = 0;\n private widgetById: Map<string, Gtk.Widget> = new Map();\n private toplevelWindows: Gtk.Window[] = [];\n\n refresh(): void {\n this.widgetById.clear();\n this.toplevelWindows = Gtk.Window.listToplevels() as Gtk.Window[];\n\n for (const window of this.toplevelWindows) {\n this.register(window);\n }\n }\n\n toplevels(): Gtk.Window[] {\n return this.toplevelWindows;\n }\n\n register(widget: Gtk.Widget): void {\n const id = this.getOrCreateId(widget);\n this.widgetById.set(id, widget);\n let child = widget.getFirstChild();\n\n while (child) {\n this.register(child);\n child = child.getNextSibling();\n }\n }\n\n getOrCreateId(widget: Gtk.Widget): string {\n let id = this.idByWidget.get(widget);\n\n if (!id) {\n id = String(this.nextId++);\n this.idByWidget.set(widget, id);\n }\n\n return id;\n }\n\n get(id: string): Gtk.Widget | undefined {\n return this.widgetById.get(id);\n }\n}\n\nexport { WidgetRegistry };\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=refresh-globals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-globals.d.ts","sourceRoot":"","sources":["../src/refresh-globals.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import RefreshRuntime from "react-refresh/runtime";
2
+ const identity = (type) => type;
3
+ RefreshRuntime.injectIntoGlobalHook(globalThis);
4
+ Object.assign(globalThis, {
5
+ $RefreshReg$: () => undefined,
6
+ $RefreshSig$: () => identity,
7
+ });
8
+ //# sourceMappingURL=refresh-globals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-globals.js","sourceRoot":"","sources":["../src/refresh-globals.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AAEnD,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAW,EAAE,CAAC,IAAI,CAAC;AAElD,cAAc,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;IACtB,YAAY,EAAE,GAAS,EAAE,CAAC,SAAS;IACnC,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ;CAC/B,CAAC,CAAC","sourcesContent":["import RefreshRuntime from \"react-refresh/runtime\";\n\nconst identity = (type: unknown): unknown => type;\n\nRefreshRuntime.injectIntoGlobalHook(globalThis);\n\nObject.assign(globalThis, {\n $RefreshReg$: (): void => undefined,\n $RefreshSig$: () => identity,\n});\n"]}
@@ -1,4 +1,5 @@
1
1
  import RefreshRuntime from "react-refresh/runtime";
2
+ import "./refresh-globals.js";
2
3
  type ComponentType = (...args: unknown[]) => unknown;
3
4
  /**
4
5
  * Builds the per-module `$RefreshReg$` and `$RefreshSig$` hooks that React Refresh
@@ -7,21 +8,14 @@ type ComponentType = (...args: unknown[]) => unknown;
7
8
  * @param moduleId Identifier used to namespace registered component types so they are unique across modules.
8
9
  * @returns An object with `$RefreshReg$` and `$RefreshSig$` to install as module-local globals.
9
10
  */
10
- export declare function createModuleRegistration(moduleId: string): {
11
+ declare function createModuleRegistration(moduleId: string): {
11
12
  $RefreshReg$: (type: ComponentType, id: string) => void;
12
13
  $RefreshSig$: typeof RefreshRuntime.createSignatureFunctionForTransform;
13
14
  };
14
- /**
15
- * Determines whether a module can act as a React Refresh boundary, meaning every one of
16
- * its exports (ignoring `__esModule`) looks like a React component type.
17
- *
18
- * @param moduleExports The module's export object to inspect.
19
- * @returns `true` when the module qualifies as a refresh boundary, `false` otherwise.
20
- */
21
- export declare function isRefreshBoundary(moduleExports: Record<string, unknown>): boolean;
15
+ declare function isRefreshBoundary(moduleExports: Record<string, unknown>): boolean;
22
16
  /**
23
17
  * Applies all pending React Refresh updates, re-rendering components whose modules have changed.
24
18
  */
25
- export declare function performRefresh(): void;
26
- export {};
19
+ declare function performRefresh(): void;
20
+ export { createModuleRegistration, isRefreshBoundary, performRefresh };
27
21
  //# sourceMappingURL=refresh-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-runtime.d.ts","sourceRoot":"","sources":["../src/refresh-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AAEnD,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAMrD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACxD,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,OAAO,cAAc,CAAC,mCAAmC,CAAC;CAC3E,CAOA;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAkBjF;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
1
+ {"version":3,"file":"refresh-runtime.d.ts","sourceRoot":"","sources":["../src/refresh-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,sBAAsB,CAAC;AAE9B,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAErD;;;;;;GAMG;AACH,iBAAS,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACjD,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,OAAO,cAAc,CAAC,mCAAmC,CAAC;CAC3E,CAOA;AAsBD,iBAAS,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAU1E;AAED;;GAEG;AACH,iBAAS,cAAc,IAAI,IAAI,CAE9B;AAED,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC"}
@@ -1,7 +1,5 @@
1
1
  import RefreshRuntime from "react-refresh/runtime";
2
- RefreshRuntime.injectIntoGlobalHook(globalThis);
3
- globalThis.$RefreshReg$ = () => { };
4
- globalThis.$RefreshSig$ = () => (type) => type;
2
+ import "./refresh-globals.js";
5
3
  /**
6
4
  * Builds the per-module `$RefreshReg$` and `$RefreshSig$` hooks that React Refresh
7
5
  * transformed code expects, scoping every registered component to the given module.
@@ -9,7 +7,7 @@ globalThis.$RefreshSig$ = () => (type) => type;
9
7
  * @param moduleId Identifier used to namespace registered component types so they are unique across modules.
10
8
  * @returns An object with `$RefreshReg$` and `$RefreshSig$` to install as module-local globals.
11
9
  */
12
- export function createModuleRegistration(moduleId) {
10
+ function createModuleRegistration(moduleId) {
13
11
  return {
14
12
  $RefreshReg$: (type, id) => {
15
13
  RefreshRuntime.register(type, `${moduleId} ${id}`);
@@ -24,25 +22,29 @@ export function createModuleRegistration(moduleId) {
24
22
  * @param moduleExports The module's export object to inspect.
25
23
  * @returns `true` when the module qualifies as a refresh boundary, `false` otherwise.
26
24
  */
27
- export function isRefreshBoundary(moduleExports) {
28
- if (RefreshRuntime.isLikelyComponentType(moduleExports)) {
29
- return true;
30
- }
25
+ const isComponentExport = (key, value) => key === "__esModule" || RefreshRuntime.isLikelyComponentType(value);
26
+ const areAllExportsComponents = (moduleExports) => {
31
27
  for (const key in moduleExports) {
32
- if (key === "__esModule") {
33
- continue;
34
- }
35
- const value = moduleExports[key];
36
- if (!RefreshRuntime.isLikelyComponentType(value)) {
28
+ if (!isComponentExport(key, moduleExports[key])) {
37
29
  return false;
38
30
  }
39
31
  }
32
+ return true;
33
+ };
34
+ function isRefreshBoundary(moduleExports) {
35
+ if (RefreshRuntime.isLikelyComponentType(moduleExports)) {
36
+ return true;
37
+ }
38
+ if (!areAllExportsComponents(moduleExports)) {
39
+ return false;
40
+ }
40
41
  return Object.keys(moduleExports).some((k) => k !== "__esModule");
41
42
  }
42
43
  /**
43
44
  * Applies all pending React Refresh updates, re-rendering components whose modules have changed.
44
45
  */
45
- export function performRefresh() {
46
+ function performRefresh() {
46
47
  RefreshRuntime.performReactRefresh();
47
48
  }
49
+ export { createModuleRegistration, isRefreshBoundary, performRefresh };
48
50
  //# sourceMappingURL=refresh-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-runtime.js","sourceRoot":"","sources":["../src/refresh-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AAInD,cAAc,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAChD,UAAU,CAAC,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AACnC,UAAU,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,IAAI,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IAIrD,OAAO;QACH,YAAY,EAAE,CAAC,IAAmB,EAAE,EAAU,EAAE,EAAE;YAC9C,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,YAAY,EAAE,cAAc,CAAC,mCAAmC;KACnE,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAsC;IACpE,IAAI,cAAc,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC1B,cAAc,CAAC,mBAAmB,EAAE,CAAC;AACzC,CAAC","sourcesContent":["import RefreshRuntime from \"react-refresh/runtime\";\n\ntype ComponentType = (...args: unknown[]) => unknown;\n\nRefreshRuntime.injectIntoGlobalHook(globalThis);\nglobalThis.$RefreshReg$ = () => {};\nglobalThis.$RefreshSig$ = () => (type: unknown) => type;\n\n/**\n * Builds the per-module `$RefreshReg$` and `$RefreshSig$` hooks that React Refresh\n * transformed code expects, scoping every registered component to the given module.\n *\n * @param moduleId Identifier used to namespace registered component types so they are unique across modules.\n * @returns An object with `$RefreshReg$` and `$RefreshSig$` to install as module-local globals.\n */\nexport function createModuleRegistration(moduleId: string): {\n $RefreshReg$: (type: ComponentType, id: string) => void;\n $RefreshSig$: typeof RefreshRuntime.createSignatureFunctionForTransform;\n} {\n return {\n $RefreshReg$: (type: ComponentType, id: string) => {\n RefreshRuntime.register(type, `${moduleId} ${id}`);\n },\n $RefreshSig$: RefreshRuntime.createSignatureFunctionForTransform,\n };\n}\n\n/**\n * Determines whether a module can act as a React Refresh boundary, meaning every one of\n * its exports (ignoring `__esModule`) looks like a React component type.\n *\n * @param moduleExports The module's export object to inspect.\n * @returns `true` when the module qualifies as a refresh boundary, `false` otherwise.\n */\nexport function isRefreshBoundary(moduleExports: Record<string, unknown>): boolean {\n if (RefreshRuntime.isLikelyComponentType(moduleExports)) {\n return true;\n }\n\n for (const key in moduleExports) {\n if (key === \"__esModule\") {\n continue;\n }\n\n const value = moduleExports[key];\n\n if (!RefreshRuntime.isLikelyComponentType(value)) {\n return false;\n }\n }\n\n return Object.keys(moduleExports).some((k) => k !== \"__esModule\");\n}\n\n/**\n * Applies all pending React Refresh updates, re-rendering components whose modules have changed.\n */\nexport function performRefresh(): void {\n RefreshRuntime.performReactRefresh();\n}\n"]}
1
+ {"version":3,"file":"refresh-runtime.js","sourceRoot":"","sources":["../src/refresh-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,sBAAsB,CAAC;AAI9B;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,QAAgB;IAI9C,OAAO;QACH,YAAY,EAAE,CAAC,IAAmB,EAAE,EAAU,EAAE,EAAE;YAC9C,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,YAAY,EAAE,cAAc,CAAC,mCAAmC;KACnE,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,KAAc,EAAW,EAAE,CAC/D,GAAG,KAAK,YAAY,IAAI,cAAc,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAExE,MAAM,uBAAuB,GAAG,CAAC,aAAsC,EAAW,EAAE;IAChF,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,SAAS,iBAAiB,CAAC,aAAsC;IAC7D,IAAI,cAAc,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,SAAS,cAAc;IACnB,cAAc,CAAC,mBAAmB,EAAE,CAAC;AACzC,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import RefreshRuntime from \"react-refresh/runtime\";\nimport \"./refresh-globals.js\";\n\ntype ComponentType = (...args: unknown[]) => unknown;\n\n/**\n * Builds the per-module `$RefreshReg$` and `$RefreshSig$` hooks that React Refresh\n * transformed code expects, scoping every registered component to the given module.\n *\n * @param moduleId Identifier used to namespace registered component types so they are unique across modules.\n * @returns An object with `$RefreshReg$` and `$RefreshSig$` to install as module-local globals.\n */\nfunction createModuleRegistration(moduleId: string): {\n $RefreshReg$: (type: ComponentType, id: string) => void;\n $RefreshSig$: typeof RefreshRuntime.createSignatureFunctionForTransform;\n} {\n return {\n $RefreshReg$: (type: ComponentType, id: string) => {\n RefreshRuntime.register(type, `${moduleId} ${id}`);\n },\n $RefreshSig$: RefreshRuntime.createSignatureFunctionForTransform,\n };\n}\n\n/**\n * Determines whether a module can act as a React Refresh boundary, meaning every one of\n * its exports (ignoring `__esModule`) looks like a React component type.\n *\n * @param moduleExports The module's export object to inspect.\n * @returns `true` when the module qualifies as a refresh boundary, `false` otherwise.\n */\nconst isComponentExport = (key: string, value: unknown): boolean =>\n key === \"__esModule\" || RefreshRuntime.isLikelyComponentType(value);\n\nconst areAllExportsComponents = (moduleExports: Record<string, unknown>): boolean => {\n for (const key in moduleExports) {\n if (!isComponentExport(key, moduleExports[key])) {\n return false;\n }\n }\n\n return true;\n};\n\nfunction isRefreshBoundary(moduleExports: Record<string, unknown>): boolean {\n if (RefreshRuntime.isLikelyComponentType(moduleExports)) {\n return true;\n }\n\n if (!areAllExportsComponents(moduleExports)) {\n return false;\n }\n\n return Object.keys(moduleExports).some((k) => k !== \"__esModule\");\n}\n\n/**\n * Applies all pending React Refresh updates, re-rendering components whose modules have changed.\n */\nfunction performRefresh(): void {\n RefreshRuntime.performReactRefresh();\n}\n\nexport { createModuleRegistration, isRefreshBoundary, performRefresh };\n"]}
@@ -1,2 +1,3 @@
1
- export declare const compileSchemas: (dir: string) => void;
1
+ declare const compileSchemas: (dir: string) => void;
2
+ export { compileSchemas };
2
3
  //# sourceMappingURL=compile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/settings/compile.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,cAAc,QAAS,MAAM,KAAG,IAW5C,CAAC"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/settings/compile.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,IAYrC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,19 +1,21 @@
1
- import { execFileSync } from "node:child_process";
2
1
  import { formatChildProcessError } from "@gtkx/utils";
2
+ import { execFileSync } from "node:child_process";
3
3
  import { resolveCliTool } from "../internal/resolve-cli-tool.js";
4
4
  const SCHEMA_COMPILER = "glib-compile-schemas";
5
5
  const SCHEMA_COMPILE_TIMEOUT_MS = 30_000;
6
- export const compileSchemas = (dir) => {
6
+ const compileSchemas = (dir) => {
7
7
  try {
8
8
  execFileSync(resolveCliTool(SCHEMA_COMPILER), ["--strict", dir], {
9
9
  stdio: ["ignore", "pipe", "pipe"],
10
10
  timeout: SCHEMA_COMPILE_TIMEOUT_MS,
11
- encoding: "utf-8",
11
+ encoding: "utf8",
12
12
  });
13
13
  }
14
14
  catch (error) {
15
15
  const details = formatChildProcessError(error);
16
- throw new Error(`glib-compile-schemas failed for ${dir}${details ? `:\n${details}` : ""}`, { cause: error });
16
+ const suffix = details ? `:\n${details}` : "";
17
+ throw new Error(`glib-compile-schemas failed for ${dir}${suffix}`, { cause: error });
17
18
  }
18
19
  };
20
+ export { compileSchemas };
19
21
  //# sourceMappingURL=compile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/settings/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAC/C,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAQ,EAAE;IAChD,IAAI,CAAC;QACD,YAAY,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;YAC7D,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,yBAAyB;YAClC,QAAQ,EAAE,OAAO;SACpB,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACjH,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { execFileSync } from \"node:child_process\";\nimport { formatChildProcessError } from \"@gtkx/utils\";\nimport { resolveCliTool } from \"../internal/resolve-cli-tool.js\";\n\nconst SCHEMA_COMPILER = \"glib-compile-schemas\";\nconst SCHEMA_COMPILE_TIMEOUT_MS = 30_000;\n\nexport const compileSchemas = (dir: string): void => {\n try {\n execFileSync(resolveCliTool(SCHEMA_COMPILER), [\"--strict\", dir], {\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n timeout: SCHEMA_COMPILE_TIMEOUT_MS,\n encoding: \"utf-8\",\n });\n } catch (error) {\n const details = formatChildProcessError(error);\n throw new Error(`glib-compile-schemas failed for ${dir}${details ? `:\\n${details}` : \"\"}`, { cause: error });\n }\n};\n"]}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/settings/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAC/C,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEzC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAQ,EAAE;IACzC,IAAI,CAAC;QACD,YAAY,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;YAC7D,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,yBAAyB;YAClC,QAAQ,EAAE,MAAM;SACnB,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,GAAG,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACzF,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import { formatChildProcessError } from \"@gtkx/utils\";\nimport { execFileSync } from \"node:child_process\";\nimport { resolveCliTool } from \"../internal/resolve-cli-tool.js\";\n\nconst SCHEMA_COMPILER = \"glib-compile-schemas\";\nconst SCHEMA_COMPILE_TIMEOUT_MS = 30_000;\n\nconst compileSchemas = (dir: string): void => {\n try {\n execFileSync(resolveCliTool(SCHEMA_COMPILER), [\"--strict\", dir], {\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n timeout: SCHEMA_COMPILE_TIMEOUT_MS,\n encoding: \"utf8\",\n });\n } catch (error) {\n const details = formatChildProcessError(error);\n const suffix = details ? `:\\n${details}` : \"\";\n throw new Error(`glib-compile-schemas failed for ${dir}${suffix}`, { cause: error });\n }\n};\n\nexport { compileSchemas };\n"]}
@@ -1,4 +1,4 @@
1
- export type ParsedKey = {
1
+ type ParsedKey = {
2
2
  name: string;
3
3
  variantType: string | null;
4
4
  enumId: string | null;
@@ -6,18 +6,19 @@ export type ParsedKey = {
6
6
  choices: string[];
7
7
  summary: string | null;
8
8
  };
9
- export type ParsedSchema = {
9
+ type ParsedSchema = {
10
10
  id: string;
11
11
  path: string | null;
12
12
  keys: ParsedKey[];
13
13
  };
14
- export type ParsedSchemaFile = {
14
+ type ParsedSchemaFile = {
15
15
  fileName: string;
16
16
  schemas: ParsedSchema[];
17
17
  enums: Map<string, string[]>;
18
18
  flags: Map<string, string[]>;
19
19
  };
20
- export declare class SchemaParseError extends Error {
20
+ declare const parseSchemaXml: (xml: string, fileName: string) => ParsedSchemaFile;
21
+ declare class SchemaParseError extends Error {
21
22
  }
22
- export declare const parseSchemaXml: (xml: string, fileName: string) => ParsedSchemaFile;
23
+ export { parseSchemaXml, SchemaParseError, type ParsedKey, type ParsedSchema, type ParsedSchemaFile };
23
24
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/settings/parser.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,SAAS,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAChC,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,KAAK;CAAG;AA0G9C,eAAO,MAAM,cAAc,QAAS,MAAM,YAAY,MAAM,KAAG,gBAuB9D,CAAC"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/settings/parser.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,SAAS,EAAE,CAAC;CACrB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAChC,CAAC;AA2IF,QAAA,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,KAAG,gBA2BvD,CAAC;AAEF,cAAM,gBAAiB,SAAQ,KAAK;CAAG;AAEvC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,CAAC"}