@gtkx/cli 1.0.0-rc.4 → 1.1.0

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 (520) hide show
  1. package/README.md +5 -5
  2. package/dist/builder.d.ts +2 -2
  3. package/dist/builder.d.ts.map +1 -1
  4. package/dist/builder.js +21 -3
  5. package/dist/builder.js.map +1 -1
  6. package/dist/cli.js +9 -3
  7. package/dist/cli.js.map +1 -1
  8. package/dist/codegen/freshness.d.ts.map +1 -1
  9. package/dist/codegen/freshness.js +2 -4
  10. package/dist/codegen/freshness.js.map +1 -1
  11. package/dist/codegen/run-codegen.d.ts +8 -5
  12. package/dist/codegen/run-codegen.d.ts.map +1 -1
  13. package/dist/codegen/run-codegen.js +25 -19
  14. package/dist/codegen/run-codegen.js.map +1 -1
  15. package/dist/codegen/store-resolver.d.ts +1 -1
  16. package/dist/codegen/store-resolver.d.ts.map +1 -1
  17. package/dist/codegen/store-resolver.js.map +1 -1
  18. package/dist/commands/build.d.ts.map +1 -1
  19. package/dist/commands/build.js +5 -6
  20. package/dist/commands/build.js.map +1 -1
  21. package/dist/commands/codegen.d.ts.map +1 -1
  22. package/dist/commands/codegen.js +11 -1
  23. package/dist/commands/codegen.js.map +1 -1
  24. package/dist/commands/deploy.d.ts +22 -0
  25. package/dist/commands/deploy.d.ts.map +1 -0
  26. package/dist/commands/deploy.js +44 -0
  27. package/dist/commands/deploy.js.map +1 -0
  28. package/dist/commands/dev.d.ts.map +1 -1
  29. package/dist/commands/dev.js +7 -5
  30. package/dist/commands/dev.js.map +1 -1
  31. package/dist/commands/docs.d.ts +2 -2
  32. package/dist/commands/docs.d.ts.map +1 -1
  33. package/dist/commands/docs.js +27 -4
  34. package/dist/commands/docs.js.map +1 -1
  35. package/dist/deploy/depends.d.ts +8 -0
  36. package/dist/deploy/depends.d.ts.map +1 -0
  37. package/dist/deploy/depends.js +27 -0
  38. package/dist/deploy/depends.js.map +1 -0
  39. package/dist/deploy/download.d.ts +20 -0
  40. package/dist/deploy/download.d.ts.map +1 -0
  41. package/dist/deploy/download.js +98 -0
  42. package/dist/deploy/download.js.map +1 -0
  43. package/dist/deploy/freedesktop/copyright.d.ts +4 -0
  44. package/dist/deploy/freedesktop/copyright.d.ts.map +1 -0
  45. package/dist/deploy/freedesktop/copyright.js +33 -0
  46. package/dist/deploy/freedesktop/copyright.js.map +1 -0
  47. package/dist/deploy/freedesktop/dbus-service.d.ts +4 -0
  48. package/dist/deploy/freedesktop/dbus-service.d.ts.map +1 -0
  49. package/dist/deploy/freedesktop/dbus-service.js +15 -0
  50. package/dist/deploy/freedesktop/dbus-service.js.map +1 -0
  51. package/dist/deploy/freedesktop/desktop-entry.d.ts +4 -0
  52. package/dist/deploy/freedesktop/desktop-entry.d.ts.map +1 -0
  53. package/dist/deploy/freedesktop/desktop-entry.js +73 -0
  54. package/dist/deploy/freedesktop/desktop-entry.js.map +1 -0
  55. package/dist/deploy/freedesktop/ini.d.ts +7 -0
  56. package/dist/deploy/freedesktop/ini.d.ts.map +1 -0
  57. package/dist/deploy/freedesktop/ini.js +22 -0
  58. package/dist/deploy/freedesktop/ini.js.map +1 -0
  59. package/dist/deploy/freedesktop/metainfo-sections.d.ts +13 -0
  60. package/dist/deploy/freedesktop/metainfo-sections.d.ts.map +1 -0
  61. package/dist/deploy/freedesktop/metainfo-sections.js +73 -0
  62. package/dist/deploy/freedesktop/metainfo-sections.js.map +1 -0
  63. package/dist/deploy/freedesktop/metainfo.d.ts +4 -0
  64. package/dist/deploy/freedesktop/metainfo.d.ts.map +1 -0
  65. package/dist/deploy/freedesktop/metainfo.js +29 -0
  66. package/dist/deploy/freedesktop/metainfo.js.map +1 -0
  67. package/dist/deploy/freedesktop/mime-package.d.ts +4 -0
  68. package/dist/deploy/freedesktop/mime-package.d.ts.map +1 -0
  69. package/dist/deploy/freedesktop/mime-package.js +16 -0
  70. package/dist/deploy/freedesktop/mime-package.js.map +1 -0
  71. package/dist/deploy/freedesktop/validate.d.ts +4 -0
  72. package/dist/deploy/freedesktop/validate.d.ts.map +1 -0
  73. package/dist/deploy/freedesktop/validate.js +81 -0
  74. package/dist/deploy/freedesktop/validate.js.map +1 -0
  75. package/dist/deploy/freedesktop/xml.d.ts +11 -0
  76. package/dist/deploy/freedesktop/xml.d.ts.map +1 -0
  77. package/dist/deploy/freedesktop/xml.js +33 -0
  78. package/dist/deploy/freedesktop/xml.js.map +1 -0
  79. package/dist/deploy/git.d.ts +4 -0
  80. package/dist/deploy/git.d.ts.map +1 -0
  81. package/dist/deploy/git.js +17 -0
  82. package/dist/deploy/git.js.map +1 -0
  83. package/dist/deploy/install-hints.d.ts +5 -0
  84. package/dist/deploy/install-hints.d.ts.map +1 -0
  85. package/dist/deploy/install-hints.js +85 -0
  86. package/dist/deploy/install-hints.js.map +1 -0
  87. package/dist/deploy/nfpm/config.d.ts +8 -0
  88. package/dist/deploy/nfpm/config.d.ts.map +1 -0
  89. package/dist/deploy/nfpm/config.js +119 -0
  90. package/dist/deploy/nfpm/config.js.map +1 -0
  91. package/dist/deploy/nfpm/contents.d.ts +12 -0
  92. package/dist/deploy/nfpm/contents.d.ts.map +1 -0
  93. package/dist/deploy/nfpm/contents.js +48 -0
  94. package/dist/deploy/nfpm/contents.js.map +1 -0
  95. package/dist/deploy/nfpm/description.d.ts +5 -0
  96. package/dist/deploy/nfpm/description.d.ts.map +1 -0
  97. package/dist/deploy/nfpm/description.js +5 -0
  98. package/dist/deploy/nfpm/description.js.map +1 -0
  99. package/dist/deploy/nfpm/optional.d.ts +5 -0
  100. package/dist/deploy/nfpm/optional.d.ts.map +1 -0
  101. package/dist/deploy/nfpm/optional.js +4 -0
  102. package/dist/deploy/nfpm/optional.js.map +1 -0
  103. package/dist/deploy/nfpm/pack.d.ts +5 -0
  104. package/dist/deploy/nfpm/pack.d.ts.map +1 -0
  105. package/dist/deploy/nfpm/pack.js +32 -0
  106. package/dist/deploy/nfpm/pack.js.map +1 -0
  107. package/dist/deploy/node-runtime/download.d.ts +3 -0
  108. package/dist/deploy/node-runtime/download.d.ts.map +1 -0
  109. package/dist/deploy/node-runtime/download.js +39 -0
  110. package/dist/deploy/node-runtime/download.js.map +1 -0
  111. package/dist/deploy/node-runtime/elf.d.ts +7 -0
  112. package/dist/deploy/node-runtime/elf.d.ts.map +1 -0
  113. package/dist/deploy/node-runtime/elf.js +100 -0
  114. package/dist/deploy/node-runtime/elf.js.map +1 -0
  115. package/dist/deploy/node-runtime/guard.d.ts +4 -0
  116. package/dist/deploy/node-runtime/guard.d.ts.map +1 -0
  117. package/dist/deploy/node-runtime/guard.js +22 -0
  118. package/dist/deploy/node-runtime/guard.js.map +1 -0
  119. package/dist/deploy/node-runtime/index.d.ts +4 -0
  120. package/dist/deploy/node-runtime/index.d.ts.map +1 -0
  121. package/dist/deploy/node-runtime/index.js +61 -0
  122. package/dist/deploy/node-runtime/index.js.map +1 -0
  123. package/dist/deploy/payload/copy-tree.d.ts +7 -0
  124. package/dist/deploy/payload/copy-tree.d.ts.map +1 -0
  125. package/dist/deploy/payload/copy-tree.js +36 -0
  126. package/dist/deploy/payload/copy-tree.js.map +1 -0
  127. package/dist/deploy/payload/icons.d.ts +6 -0
  128. package/dist/deploy/payload/icons.d.ts.map +1 -0
  129. package/dist/deploy/payload/icons.js +53 -0
  130. package/dist/deploy/payload/icons.js.map +1 -0
  131. package/dist/deploy/payload/launcher.d.ts +5 -0
  132. package/dist/deploy/payload/launcher.d.ts.map +1 -0
  133. package/dist/deploy/payload/launcher.js +22 -0
  134. package/dist/deploy/payload/launcher.js.map +1 -0
  135. package/dist/deploy/payload/schemas.d.ts +4 -0
  136. package/dist/deploy/payload/schemas.d.ts.map +1 -0
  137. package/dist/deploy/payload/schemas.js +17 -0
  138. package/dist/deploy/payload/schemas.js.map +1 -0
  139. package/dist/deploy/payload/stage.d.ts +15 -0
  140. package/dist/deploy/payload/stage.d.ts.map +1 -0
  141. package/dist/deploy/payload/stage.js +100 -0
  142. package/dist/deploy/payload/stage.js.map +1 -0
  143. package/dist/deploy/registry.d.ts +7 -0
  144. package/dist/deploy/registry.d.ts.map +1 -0
  145. package/dist/deploy/registry.js +30 -0
  146. package/dist/deploy/registry.js.map +1 -0
  147. package/dist/deploy/run-deploy.d.ts +11 -0
  148. package/dist/deploy/run-deploy.d.ts.map +1 -0
  149. package/dist/deploy/run-deploy.js +153 -0
  150. package/dist/deploy/run-deploy.js.map +1 -0
  151. package/dist/deploy/settings/arch.d.ts +4 -0
  152. package/dist/deploy/settings/arch.d.ts.map +1 -0
  153. package/dist/deploy/settings/arch.js +13 -0
  154. package/dist/deploy/settings/arch.js.map +1 -0
  155. package/dist/deploy/settings/categories.d.ts +4 -0
  156. package/dist/deploy/settings/categories.d.ts.map +1 -0
  157. package/dist/deploy/settings/categories.js +29 -0
  158. package/dist/deploy/settings/categories.js.map +1 -0
  159. package/dist/deploy/settings/exec.d.ts +6 -0
  160. package/dist/deploy/settings/exec.d.ts.map +1 -0
  161. package/dist/deploy/settings/exec.js +20 -0
  162. package/dist/deploy/settings/exec.js.map +1 -0
  163. package/dist/deploy/settings/identity.d.ts +18 -0
  164. package/dist/deploy/settings/identity.d.ts.map +1 -0
  165. package/dist/deploy/settings/identity.js +73 -0
  166. package/dist/deploy/settings/identity.js.map +1 -0
  167. package/dist/deploy/settings/index.d.ts +11 -0
  168. package/dist/deploy/settings/index.d.ts.map +1 -0
  169. package/dist/deploy/settings/index.js +103 -0
  170. package/dist/deploy/settings/index.js.map +1 -0
  171. package/dist/deploy/settings/package-manifest.d.ts +15 -0
  172. package/dist/deploy/settings/package-manifest.d.ts.map +1 -0
  173. package/dist/deploy/settings/package-manifest.js +41 -0
  174. package/dist/deploy/settings/package-manifest.js.map +1 -0
  175. package/dist/deploy/settings/paths.d.ts +9 -0
  176. package/dist/deploy/settings/paths.d.ts.map +1 -0
  177. package/dist/deploy/settings/paths.js +82 -0
  178. package/dist/deploy/settings/paths.js.map +1 -0
  179. package/dist/deploy/settings/screenshots.d.ts +8 -0
  180. package/dist/deploy/settings/screenshots.d.ts.map +1 -0
  181. package/dist/deploy/settings/screenshots.js +79 -0
  182. package/dist/deploy/settings/screenshots.js.map +1 -0
  183. package/dist/deploy/settings/starter.d.ts +4 -0
  184. package/dist/deploy/settings/starter.d.ts.map +1 -0
  185. package/dist/deploy/settings/starter.js +28 -0
  186. package/dist/deploy/settings/starter.js.map +1 -0
  187. package/dist/deploy/settings/version.d.ts +9 -0
  188. package/dist/deploy/settings/version.d.ts.map +1 -0
  189. package/dist/deploy/settings/version.js +37 -0
  190. package/dist/deploy/settings/version.js.map +1 -0
  191. package/dist/deploy/targets/appimage.d.ts +4 -0
  192. package/dist/deploy/targets/appimage.d.ts.map +1 -0
  193. package/dist/deploy/targets/appimage.js +105 -0
  194. package/dist/deploy/targets/appimage.js.map +1 -0
  195. package/dist/deploy/targets/deb.d.ts +4 -0
  196. package/dist/deploy/targets/deb.d.ts.map +1 -0
  197. package/dist/deploy/targets/deb.js +4 -0
  198. package/dist/deploy/targets/deb.js.map +1 -0
  199. package/dist/deploy/targets/flatpak-manifest.d.ts +6 -0
  200. package/dist/deploy/targets/flatpak-manifest.d.ts.map +1 -0
  201. package/dist/deploy/targets/flatpak-manifest.js +48 -0
  202. package/dist/deploy/targets/flatpak-manifest.js.map +1 -0
  203. package/dist/deploy/targets/flatpak-prebuilt.d.ts +8 -0
  204. package/dist/deploy/targets/flatpak-prebuilt.d.ts.map +1 -0
  205. package/dist/deploy/targets/flatpak-prebuilt.js +43 -0
  206. package/dist/deploy/targets/flatpak-prebuilt.js.map +1 -0
  207. package/dist/deploy/targets/flatpak-source.d.ts +5 -0
  208. package/dist/deploy/targets/flatpak-source.d.ts.map +1 -0
  209. package/dist/deploy/targets/flatpak-source.js +110 -0
  210. package/dist/deploy/targets/flatpak-source.js.map +1 -0
  211. package/dist/deploy/targets/flatpak-sources.d.ts +17 -0
  212. package/dist/deploy/targets/flatpak-sources.d.ts.map +1 -0
  213. package/dist/deploy/targets/flatpak-sources.js +108 -0
  214. package/dist/deploy/targets/flatpak-sources.js.map +1 -0
  215. package/dist/deploy/targets/flatpak.d.ts +4 -0
  216. package/dist/deploy/targets/flatpak.d.ts.map +1 -0
  217. package/dist/deploy/targets/flatpak.js +112 -0
  218. package/dist/deploy/targets/flatpak.js.map +1 -0
  219. package/dist/deploy/targets/nfpm-target.d.ts +5 -0
  220. package/dist/deploy/targets/nfpm-target.d.ts.map +1 -0
  221. package/dist/deploy/targets/nfpm-target.js +26 -0
  222. package/dist/deploy/targets/nfpm-target.js.map +1 -0
  223. package/dist/deploy/targets/rpm.d.ts +4 -0
  224. package/dist/deploy/targets/rpm.d.ts.map +1 -0
  225. package/dist/deploy/targets/rpm.js +4 -0
  226. package/dist/deploy/targets/rpm.js.map +1 -0
  227. package/dist/deploy/tools.d.ts +18 -0
  228. package/dist/deploy/tools.d.ts.map +1 -0
  229. package/dist/deploy/tools.js +92 -0
  230. package/dist/deploy/tools.js.map +1 -0
  231. package/dist/deploy/types.d.ts +140 -0
  232. package/dist/deploy/types.d.ts.map +1 -0
  233. package/dist/deploy/types.js +2 -0
  234. package/dist/deploy/types.js.map +1 -0
  235. package/dist/deploy/vendored/appimagetool.d.ts +7 -0
  236. package/dist/deploy/vendored/appimagetool.d.ts.map +1 -0
  237. package/dist/deploy/vendored/appimagetool.js +42 -0
  238. package/dist/deploy/vendored/appimagetool.js.map +1 -0
  239. package/dist/deploy/vendored/nfpm.d.ts +3 -0
  240. package/dist/deploy/vendored/nfpm.d.ts.map +1 -0
  241. package/dist/deploy/vendored/nfpm.js +60 -0
  242. package/dist/deploy/vendored/nfpm.js.map +1 -0
  243. package/dist/dev/change-queue.d.ts +11 -0
  244. package/dist/dev/change-queue.d.ts.map +1 -0
  245. package/dist/dev/change-queue.js +34 -0
  246. package/dist/dev/change-queue.js.map +1 -0
  247. package/dist/dev/entry-env.d.ts +3 -0
  248. package/dist/dev/entry-env.d.ts.map +1 -0
  249. package/dist/dev/entry-env.js +3 -0
  250. package/dist/dev/entry-env.js.map +1 -0
  251. package/dist/dev/failure-tracker.d.ts +10 -0
  252. package/dist/dev/failure-tracker.d.ts.map +1 -0
  253. package/dist/dev/failure-tracker.js +61 -0
  254. package/dist/dev/failure-tracker.js.map +1 -0
  255. package/dist/dev/missing-import.d.ts +4 -0
  256. package/dist/dev/missing-import.d.ts.map +1 -0
  257. package/dist/dev/missing-import.js +23 -0
  258. package/dist/dev/missing-import.js.map +1 -0
  259. package/dist/dev/runner-deps.d.ts.map +1 -1
  260. package/dist/dev/runner-deps.js +25 -5
  261. package/dist/dev/runner-deps.js.map +1 -1
  262. package/dist/dev/runner-main.d.ts.map +1 -1
  263. package/dist/dev/runner-main.js +3 -3
  264. package/dist/dev/runner-main.js.map +1 -1
  265. package/dist/dev/runner.d.ts +8 -3
  266. package/dist/dev/runner.d.ts.map +1 -1
  267. package/dist/dev/runner.js +343 -65
  268. package/dist/dev/runner.js.map +1 -1
  269. package/dist/dev/supervisor.d.ts +10 -4
  270. package/dist/dev/supervisor.d.ts.map +1 -1
  271. package/dist/dev/supervisor.js +23 -4
  272. package/dist/dev/supervisor.js.map +1 -1
  273. package/dist/dev/vite-dev-server.d.ts +13 -2
  274. package/dist/dev/vite-dev-server.d.ts.map +1 -1
  275. package/dist/dev/vite-dev-server.js +30 -2
  276. package/dist/dev/vite-dev-server.js.map +1 -1
  277. package/dist/internal/application-args.d.ts +6 -0
  278. package/dist/internal/application-args.d.ts.map +1 -0
  279. package/dist/internal/application-args.js +10 -0
  280. package/dist/internal/application-args.js.map +1 -0
  281. package/dist/internal/entry-arg.d.ts +1 -7
  282. package/dist/internal/entry-arg.d.ts.map +1 -1
  283. package/dist/internal/entry-arg.js +18 -11
  284. package/dist/internal/entry-arg.js.map +1 -1
  285. package/dist/internal/errors.d.ts +1 -2
  286. package/dist/internal/errors.d.ts.map +1 -1
  287. package/dist/internal/errors.js +1 -1
  288. package/dist/internal/errors.js.map +1 -1
  289. package/dist/internal/module-loads.d.ts +7 -0
  290. package/dist/internal/module-loads.d.ts.map +1 -0
  291. package/dist/internal/module-loads.js +21 -0
  292. package/dist/internal/module-loads.js.map +1 -0
  293. package/dist/internal/prepare-project.d.ts +16 -0
  294. package/dist/internal/prepare-project.d.ts.map +1 -0
  295. package/dist/internal/prepare-project.js +15 -0
  296. package/dist/internal/prepare-project.js.map +1 -0
  297. package/dist/internal/run-cli-tool.d.ts +11 -0
  298. package/dist/internal/run-cli-tool.d.ts.map +1 -0
  299. package/dist/internal/run-cli-tool.js +24 -0
  300. package/dist/internal/run-cli-tool.js.map +1 -0
  301. package/dist/internal/staging-dir.d.ts +8 -1
  302. package/dist/internal/staging-dir.d.ts.map +1 -1
  303. package/dist/internal/staging-dir.js +38 -2
  304. package/dist/internal/staging-dir.js.map +1 -1
  305. package/dist/mcp/client.d.ts +1 -1
  306. package/dist/mcp/client.d.ts.map +1 -1
  307. package/dist/mcp/client.js.map +1 -1
  308. package/dist/mcp/handlers.d.ts +1 -1
  309. package/dist/mcp/handlers.d.ts.map +1 -1
  310. package/dist/mcp/handlers.js +78 -41
  311. package/dist/mcp/handlers.js.map +1 -1
  312. package/dist/mcp/index.d.ts.map +1 -1
  313. package/dist/mcp/index.js +1 -0
  314. package/dist/mcp/index.js.map +1 -1
  315. package/dist/mcp/serialize-widget.d.ts +4 -3
  316. package/dist/mcp/serialize-widget.d.ts.map +1 -1
  317. package/dist/mcp/serialize-widget.js +47 -17
  318. package/dist/mcp/serialize-widget.js.map +1 -1
  319. package/dist/mcp/testing-loader.d.ts +5 -2
  320. package/dist/mcp/testing-loader.d.ts.map +1 -1
  321. package/dist/mcp/testing-loader.js +7 -3
  322. package/dist/mcp/testing-loader.js.map +1 -1
  323. package/dist/mcp/widget-properties.d.ts +6 -0
  324. package/dist/mcp/widget-properties.d.ts.map +1 -0
  325. package/dist/mcp/widget-properties.js +102 -0
  326. package/dist/mcp/widget-properties.js.map +1 -0
  327. package/dist/refresh-runtime.d.ts +2 -1
  328. package/dist/refresh-runtime.d.ts.map +1 -1
  329. package/dist/refresh-runtime.js +32 -2
  330. package/dist/refresh-runtime.js.map +1 -1
  331. package/dist/settings/compile.d.ts.map +1 -1
  332. package/dist/settings/compile.js +8 -12
  333. package/dist/settings/compile.js.map +1 -1
  334. package/dist/settings/schema.d.ts +1 -2
  335. package/dist/settings/schema.d.ts.map +1 -1
  336. package/dist/settings/schema.js +1 -1
  337. package/dist/settings/schema.js.map +1 -1
  338. package/dist/vite-plugins/asset-emitter.d.ts +9 -0
  339. package/dist/vite-plugins/asset-emitter.d.ts.map +1 -0
  340. package/dist/vite-plugins/asset-emitter.js +2 -0
  341. package/dist/vite-plugins/asset-emitter.js.map +1 -0
  342. package/dist/vite-plugins/asset-extensions.d.ts +2 -2
  343. package/dist/vite-plugins/asset-extensions.d.ts.map +1 -1
  344. package/dist/vite-plugins/asset-extensions.js +2 -1
  345. package/dist/vite-plugins/asset-extensions.js.map +1 -1
  346. package/dist/vite-plugins/asset-imports.d.ts +4 -0
  347. package/dist/vite-plugins/asset-imports.d.ts.map +1 -0
  348. package/dist/vite-plugins/asset-imports.js +88 -0
  349. package/dist/vite-plugins/asset-imports.js.map +1 -0
  350. package/dist/vite-plugins/asset-specifier.d.ts +5 -0
  351. package/dist/vite-plugins/asset-specifier.d.ts.map +1 -0
  352. package/dist/vite-plugins/asset-specifier.js +7 -0
  353. package/dist/vite-plugins/asset-specifier.js.map +1 -0
  354. package/dist/vite-plugins/built-url.d.ts.map +1 -1
  355. package/dist/vite-plugins/built-url.js +14 -10
  356. package/dist/vite-plugins/built-url.js.map +1 -1
  357. package/dist/vite-plugins/ensure-store.d.ts +4 -0
  358. package/dist/vite-plugins/ensure-store.d.ts.map +1 -0
  359. package/dist/vite-plugins/ensure-store.js +10 -0
  360. package/dist/vite-plugins/ensure-store.js.map +1 -0
  361. package/dist/vite-plugins/esm-extension.d.ts +4 -0
  362. package/dist/vite-plugins/esm-extension.d.ts.map +1 -0
  363. package/dist/vite-plugins/esm-extension.js +4 -0
  364. package/dist/vite-plugins/esm-extension.js.map +1 -0
  365. package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts +1 -3
  366. package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts.map +1 -1
  367. package/dist/vite-plugins/fast-refresh/swc-refresh.js +1 -1
  368. package/dist/vite-plugins/fast-refresh/swc-refresh.js.map +1 -1
  369. package/dist/vite-plugins/icons.d.ts.map +1 -1
  370. package/dist/vite-plugins/icons.js.map +1 -1
  371. package/dist/vite-plugins/index.d.ts.map +1 -1
  372. package/dist/vite-plugins/index.js +4 -0
  373. package/dist/vite-plugins/index.js.map +1 -1
  374. package/dist/vite-plugins/react-compiler.d.ts +1 -1
  375. package/dist/vite-plugins/react-compiler.d.ts.map +1 -1
  376. package/dist/vite-plugins/react-compiler.js.map +1 -1
  377. package/dist/vite-plugins/resource-shared.d.ts +2 -1
  378. package/dist/vite-plugins/resource-shared.d.ts.map +1 -1
  379. package/dist/vite-plugins/resource-shared.js +2 -1
  380. package/dist/vite-plugins/resource-shared.js.map +1 -1
  381. package/dist/vite-plugins/resources.d.ts +1 -1
  382. package/dist/vite-plugins/resources.d.ts.map +1 -1
  383. package/dist/vite-plugins/resources.js +36 -44
  384. package/dist/vite-plugins/resources.js.map +1 -1
  385. package/dist/vite-plugins/self-contained.d.ts +4 -0
  386. package/dist/vite-plugins/self-contained.d.ts.map +1 -0
  387. package/dist/vite-plugins/self-contained.js +244 -0
  388. package/dist/vite-plugins/self-contained.js.map +1 -0
  389. package/dist/vite-plugins/settings.d.ts.map +1 -1
  390. package/dist/vite-plugins/settings.js +19 -40
  391. package/dist/vite-plugins/settings.js.map +1 -1
  392. package/dist/vite-plugins/store-links.d.ts +4 -0
  393. package/dist/vite-plugins/store-links.d.ts.map +1 -0
  394. package/dist/vite-plugins/store-links.js +19 -0
  395. package/dist/vite-plugins/store-links.js.map +1 -0
  396. package/dist/vite-plugins/undeclared-library.d.ts +1 -1
  397. package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
  398. package/dist/vite-plugins/undeclared-library.js +51 -12
  399. package/dist/vite-plugins/undeclared-library.js.map +1 -1
  400. package/dist/vite-plugins/worker.d.ts +4 -0
  401. package/dist/vite-plugins/worker.d.ts.map +1 -0
  402. package/dist/vite-plugins/worker.js +138 -0
  403. package/dist/vite-plugins/worker.js.map +1 -0
  404. package/dist/vitest-plugin.d.ts +7 -0
  405. package/dist/vitest-plugin.d.ts.map +1 -1
  406. package/dist/vitest-plugin.js +14 -1
  407. package/dist/vitest-plugin.js.map +1 -1
  408. package/env.d.ts +106 -25
  409. package/package.json +23 -12
  410. package/src/builder.ts +24 -5
  411. package/src/cli.ts +10 -3
  412. package/src/codegen/freshness.ts +2 -4
  413. package/src/codegen/run-codegen.ts +37 -23
  414. package/src/codegen/store-resolver.ts +1 -1
  415. package/src/commands/build.ts +5 -6
  416. package/src/commands/codegen.ts +14 -1
  417. package/src/commands/deploy.ts +47 -0
  418. package/src/commands/dev.ts +7 -5
  419. package/src/commands/docs.ts +39 -4
  420. package/src/deploy/depends.ts +42 -0
  421. package/src/deploy/download.ts +148 -0
  422. package/src/deploy/freedesktop/copyright.ts +41 -0
  423. package/src/deploy/freedesktop/dbus-service.ts +19 -0
  424. package/src/deploy/freedesktop/desktop-entry.ts +102 -0
  425. package/src/deploy/freedesktop/ini.ts +39 -0
  426. package/src/deploy/freedesktop/metainfo-sections.ts +116 -0
  427. package/src/deploy/freedesktop/metainfo.ts +46 -0
  428. package/src/deploy/freedesktop/mime-package.ts +28 -0
  429. package/src/deploy/freedesktop/validate.ts +124 -0
  430. package/src/deploy/freedesktop/xml.ts +53 -0
  431. package/src/deploy/git.ts +20 -0
  432. package/src/deploy/install-hints.ts +108 -0
  433. package/src/deploy/nfpm/config.ts +153 -0
  434. package/src/deploy/nfpm/contents.ts +69 -0
  435. package/src/deploy/nfpm/description.ts +11 -0
  436. package/src/deploy/nfpm/optional.ts +8 -0
  437. package/src/deploy/nfpm/pack.ts +44 -0
  438. package/src/deploy/node-runtime/download.ts +48 -0
  439. package/src/deploy/node-runtime/elf.ts +145 -0
  440. package/src/deploy/node-runtime/guard.ts +29 -0
  441. package/src/deploy/node-runtime/index.ts +80 -0
  442. package/src/deploy/payload/copy-tree.ts +51 -0
  443. package/src/deploy/payload/icons.ts +80 -0
  444. package/src/deploy/payload/launcher.ts +27 -0
  445. package/src/deploy/payload/schemas.ts +27 -0
  446. package/src/deploy/payload/stage.ts +145 -0
  447. package/src/deploy/registry.ts +40 -0
  448. package/src/deploy/run-deploy.ts +235 -0
  449. package/src/deploy/settings/arch.ts +18 -0
  450. package/src/deploy/settings/categories.ts +39 -0
  451. package/src/deploy/settings/exec.ts +29 -0
  452. package/src/deploy/settings/identity.ts +133 -0
  453. package/src/deploy/settings/index.ts +189 -0
  454. package/src/deploy/settings/package-manifest.ts +66 -0
  455. package/src/deploy/settings/paths.ts +115 -0
  456. package/src/deploy/settings/screenshots.ts +125 -0
  457. package/src/deploy/settings/starter.ts +41 -0
  458. package/src/deploy/settings/version.ts +59 -0
  459. package/src/deploy/targets/appimage.ts +140 -0
  460. package/src/deploy/targets/deb.ts +6 -0
  461. package/src/deploy/targets/flatpak-manifest.ts +61 -0
  462. package/src/deploy/targets/flatpak-prebuilt.ts +59 -0
  463. package/src/deploy/targets/flatpak-source.ts +168 -0
  464. package/src/deploy/targets/flatpak-sources.ts +171 -0
  465. package/src/deploy/targets/flatpak.ts +143 -0
  466. package/src/deploy/targets/nfpm-target.ts +33 -0
  467. package/src/deploy/targets/rpm.ts +6 -0
  468. package/src/deploy/tools.ts +135 -0
  469. package/src/deploy/types.ts +174 -0
  470. package/src/deploy/vendored/appimagetool.ts +57 -0
  471. package/src/deploy/vendored/nfpm.ts +79 -0
  472. package/src/dev/change-queue.ts +59 -0
  473. package/src/dev/entry-env.ts +3 -0
  474. package/src/dev/failure-tracker.ts +92 -0
  475. package/src/dev/missing-import.ts +32 -0
  476. package/src/dev/runner-deps.ts +34 -5
  477. package/src/dev/runner-main.ts +3 -4
  478. package/src/dev/runner.ts +524 -89
  479. package/src/dev/supervisor.ts +51 -11
  480. package/src/dev/vite-dev-server.ts +54 -3
  481. package/src/internal/application-args.ts +13 -0
  482. package/src/internal/entry-arg.ts +25 -11
  483. package/src/internal/errors.ts +1 -1
  484. package/src/internal/module-loads.ts +32 -0
  485. package/src/internal/prepare-project.ts +23 -0
  486. package/src/internal/run-cli-tool.ts +38 -0
  487. package/src/internal/staging-dir.ts +57 -2
  488. package/src/mcp/client.ts +1 -1
  489. package/src/mcp/handlers.ts +123 -56
  490. package/src/mcp/index.ts +1 -0
  491. package/src/mcp/serialize-widget.ts +73 -22
  492. package/src/mcp/testing-loader.ts +19 -4
  493. package/src/mcp/widget-properties.ts +153 -0
  494. package/src/refresh-runtime.ts +48 -2
  495. package/src/settings/compile.ts +8 -11
  496. package/src/settings/schema.ts +0 -1
  497. package/src/vite-plugins/asset-emitter.ts +5 -0
  498. package/src/vite-plugins/asset-extensions.ts +2 -1
  499. package/src/vite-plugins/asset-imports.ts +134 -0
  500. package/src/vite-plugins/asset-specifier.ts +9 -0
  501. package/src/vite-plugins/built-url.ts +19 -13
  502. package/src/vite-plugins/ensure-store.ts +14 -0
  503. package/src/vite-plugins/esm-extension.ts +4 -0
  504. package/src/vite-plugins/fast-refresh/swc-refresh.ts +1 -1
  505. package/src/vite-plugins/icons.ts +2 -5
  506. package/src/vite-plugins/index.ts +4 -0
  507. package/src/vite-plugins/react-compiler.ts +2 -1
  508. package/src/vite-plugins/resource-shared.ts +2 -0
  509. package/src/vite-plugins/resources.ts +43 -52
  510. package/src/vite-plugins/self-contained.ts +352 -0
  511. package/src/vite-plugins/settings.ts +23 -50
  512. package/src/vite-plugins/store-links.ts +25 -0
  513. package/src/vite-plugins/undeclared-library.ts +75 -13
  514. package/src/vite-plugins/worker.ts +238 -0
  515. package/src/vitest-plugin.ts +15 -1
  516. package/dist/internal/resolve-cli-tool.d.ts +0 -3
  517. package/dist/internal/resolve-cli-tool.d.ts.map +0 -1
  518. package/dist/internal/resolve-cli-tool.js +0 -27
  519. package/dist/internal/resolve-cli-tool.js.map +0 -1
  520. package/src/internal/resolve-cli-tool.ts +0 -37
package/README.md CHANGED
@@ -108,7 +108,7 @@ React Native and similar frameworks hide the native toolkit so one API can run e
108
108
 
109
109
  ### Why Node.js, and why generated bindings
110
110
 
111
- GTKX runs on Node.js, which puts native modules, the npm ecosystem, and the tooling built for Node.js APIs within reach. GJS is GNOME's own runtime, built on SpiderMonkey rather than V8; node-gtk runs on Node.js but is lightly maintained, on the older nan/V8 ABI rather than N-API, and still centered on GTK3. The [Why GTKX guide](https://gtkx.dev/guide/why-gtkx) covers the comparison in full.
111
+ GTKX runs on Node.js, which puts native modules, the npm ecosystem, and the tooling built for Node.js APIs within reach. GJS is GNOME's own runtime, built on SpiderMonkey rather than V8; node-gtk runs on Node.js but is lightly maintained, on the older nan/V8 ABI rather than N-API, and still centered on GTK3. The [Why GTKX guide](https://gtkx.dev/guide/why-gtkx) covers what running on Node.js means day to day.
112
112
 
113
113
  GTKX generates the TypeScript types and the native FFI calls from the same GObject-Introspection data, so the types cannot drift from the calls they back. Codegen covers the whole GTK4 and Adwaita surface.
114
114
 
@@ -121,10 +121,10 @@ GTKX is Linux-only and needs Node.js 24 or later. See [Requirements](#requiremen
121
121
  Scaffold a new app with the `create-gtkx` initializer:
122
122
 
123
123
  ```sh
124
- npm create gtkx@rc
124
+ npm create gtkx
125
125
  ```
126
126
 
127
- The same command works with other package managers: `pnpm create gtkx@rc` or `yarn create gtkx@rc`.
127
+ The same command works with other package managers: `pnpm create gtkx` or `yarn create gtkx`.
128
128
 
129
129
  Then run your new app:
130
130
 
@@ -145,7 +145,7 @@ The documentation at **[gtkx.dev](https://gtkx.dev)** includes a step-by-step tu
145
145
 
146
146
  GTKX is Linux-only. You need:
147
147
 
148
- - Linux with the GTK4 (4.20 or later), Adwaita (1.8 or later), and GLib development libraries
148
+ - Linux with the GTK4 (4.20 or later) and GLib development libraries, plus Adwaita (1.8 or later) once your project binds `Adw-1`
149
149
  - Node.js 24 or later
150
150
 
151
151
  The `@gtkx/native` addon ships prebuilt for x64 and arm64 glibc Linux; other targets need to build it from the GTKX repository, which requires a Rust toolchain.
@@ -161,7 +161,7 @@ Explore the [example apps](https://github.com/gtkx-org/gtkx/tree/main/examples):
161
161
 
162
162
  ## Status
163
163
 
164
- GTKX 1.0 is at the release candidate stage.
164
+ GTKX is stable and ready for production use.
165
165
 
166
166
  ## Contributing
167
167
 
package/dist/builder.d.ts CHANGED
@@ -4,6 +4,6 @@ type BuildOptions = {
4
4
  assetBase?: string | undefined;
5
5
  vite?: InlineConfig | undefined;
6
6
  };
7
- declare const build: (options: BuildOptions) => Promise<void>;
8
- export { build, type BuildOptions };
7
+ declare const build: (options: BuildOptions) => Promise<string>;
8
+ export { build };
9
9
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAmC,MAAM,MAAM,CAAC;AAK1E,KAAK,YAAY,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACnC,CAAC;AAgBF,QAAA,MAAM,KAAK,GAAU,SAAS,YAAY,KAAG,OAAO,CAAC,IAAI,CAmBxD,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAmC,MAAM,MAAM,CAAC;AAQ1E,KAAK,YAAY,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACnC,CAAC;AAoBF,QAAA,MAAM,KAAK,GAAU,SAAS,YAAY,KAAG,OAAO,CAAC,MAAM,CA8B1D,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC"}
package/dist/builder.js CHANGED
@@ -1,12 +1,20 @@
1
+ import { join, posix } from "node:path";
1
2
  import { mergeConfig, build as viteBuild } from "vite";
2
3
  import { gtkxBuiltUrl } from "./vite-plugins/built-url.js";
4
+ import { BUNDLE_FILENAME, ESM_EXTENSION } from "./vite-plugins/esm-extension.js";
3
5
  import { gtkxVitePlugins } from "./vite-plugins/index.js";
4
6
  import { gtkxNative } from "./vite-plugins/native.js";
7
+ import { gtkxSelfContained } from "./vite-plugins/self-contained.js";
8
+ import { gtkxWorker } from "./vite-plugins/worker.js";
5
9
  const BUILD_MODE = "production";
10
+ const CHUNK_STEM = "[name]-[hash]";
11
+ const DEFAULT_OUT_DIR = "dist";
12
+ const DEFAULT_ASSETS_DIR = "assets";
13
+ const ENTRY_FILE_NAMES = BUNDLE_FILENAME;
6
14
  const buildDefaults = {
7
15
  build: {
8
16
  ssrEmitAssets: true,
9
- outDir: "dist",
17
+ outDir: DEFAULT_OUT_DIR,
10
18
  minify: true,
11
19
  cssMinify: false,
12
20
  },
@@ -17,20 +25,30 @@ const buildDefaults = {
17
25
  const build = async (options) => {
18
26
  const { entry, assetBase, vite: viteConfig } = options;
19
27
  const root = viteConfig?.root ?? process.cwd();
28
+ const assetsDir = viteConfig?.build?.assetsDir ?? DEFAULT_ASSETS_DIR;
20
29
  const forced = {
21
- plugins: [...gtkxVitePlugins(BUILD_MODE), gtkxBuiltUrl(assetBase), gtkxNative(root)],
30
+ plugins: [
31
+ ...gtkxVitePlugins(BUILD_MODE),
32
+ gtkxWorker(),
33
+ gtkxBuiltUrl(assetBase),
34
+ gtkxNative(root),
35
+ gtkxSelfContained(),
36
+ ],
22
37
  build: {
23
38
  ssr: entry,
24
39
  assetsInlineLimit: 0,
25
40
  rolldownOptions: {
26
41
  output: {
27
- entryFileNames: "bundle.js",
42
+ entryFileNames: ENTRY_FILE_NAMES,
43
+ chunkFileNames: posix.join(assetsDir, CHUNK_STEM + ESM_EXTENSION),
44
+ keepNames: true,
28
45
  },
29
46
  },
30
47
  },
31
48
  };
32
49
  const merged = mergeConfig(mergeConfig(buildDefaults, viteConfig ?? {}), forced);
33
50
  await viteBuild({ ...merged, ssr: { ...merged.ssr, noExternal: true } });
51
+ return join(merged.build?.outDir ?? DEFAULT_OUT_DIR, ENTRY_FILE_NAMES);
34
52
  };
35
53
  export { build };
36
54
  //# sourceMappingURL=builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,WAAW,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAQtD,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,MAAM,aAAa,GAAiB;IAChC,KAAK,EAAE;QACH,aAAa,EAAE,IAAI;QACnB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,KAAK;KACnB;IACD,MAAM,EAAE;QACJ,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;KACrD;CACJ,CAAC;AAEF,MAAM,KAAK,GAAG,KAAK,EAAE,OAAqB,EAAiB,EAAE;IACzD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACvD,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAE/C,MAAM,MAAM,GAAiB;QACzB,OAAO,EAAE,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QACpF,KAAK,EAAE;YACH,GAAG,EAAE,KAAK;YACV,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE;gBACb,MAAM,EAAE;oBACJ,cAAc,EAAE,WAAW;iBAC9B;aACJ;SACJ;KACJ,CAAC;IAEF,MAAM,MAAM,GAAiB,WAAW,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/F,MAAM,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,OAAO,EAAE,KAAK,EAAqB,CAAC","sourcesContent":["import { type InlineConfig, mergeConfig, build as viteBuild } from \"vite\";\nimport { gtkxBuiltUrl } from \"./vite-plugins/built-url.js\";\nimport { gtkxVitePlugins } from \"./vite-plugins/index.js\";\nimport { gtkxNative } from \"./vite-plugins/native.js\";\n\ntype BuildOptions = {\n entry: string;\n assetBase?: string | undefined;\n vite?: InlineConfig | undefined;\n};\n\nconst BUILD_MODE = \"production\";\n\nconst buildDefaults: InlineConfig = {\n build: {\n ssrEmitAssets: true,\n outDir: \"dist\",\n minify: true,\n cssMinify: false,\n },\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(BUILD_MODE),\n },\n};\n\nconst build = async (options: BuildOptions): Promise<void> => {\n const { entry, assetBase, vite: viteConfig } = options;\n const root = viteConfig?.root ?? process.cwd();\n\n const forced: InlineConfig = {\n plugins: [...gtkxVitePlugins(BUILD_MODE), gtkxBuiltUrl(assetBase), gtkxNative(root)],\n build: {\n ssr: entry,\n assetsInlineLimit: 0,\n rolldownOptions: {\n output: {\n entryFileNames: \"bundle.js\",\n },\n },\n },\n };\n\n const merged: InlineConfig = mergeConfig(mergeConfig(buildDefaults, viteConfig ?? {}), forced);\n await viteBuild({ ...merged, ssr: { ...merged.ssr, noExternal: true } });\n};\n\nexport { build, type BuildOptions };\n"]}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAqB,WAAW,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAQtD,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,UAAU,GAAG,eAAe,CAAC;AACnC,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AACpC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAEzC,MAAM,aAAa,GAAiB;IAChC,KAAK,EAAE;QACH,aAAa,EAAE,IAAI;QACnB,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,KAAK;KACnB;IACD,MAAM,EAAE;QACJ,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;KACrD;CACJ,CAAC;AAEF,MAAM,KAAK,GAAG,KAAK,EAAE,OAAqB,EAAmB,EAAE;IAC3D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACvD,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/C,MAAM,SAAS,GAAG,UAAU,EAAE,KAAK,EAAE,SAAS,IAAI,kBAAkB,CAAC;IAErE,MAAM,MAAM,GAAiB;QACzB,OAAO,EAAE;YACL,GAAG,eAAe,CAAC,UAAU,CAAC;YAC9B,UAAU,EAAE;YACZ,YAAY,CAAC,SAAS,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC;YAChB,iBAAiB,EAAE;SACtB;QACD,KAAK,EAAE;YACH,GAAG,EAAE,KAAK;YACV,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE;gBACb,MAAM,EAAE;oBACJ,cAAc,EAAE,gBAAgB;oBAChC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,aAAa,CAAC;oBACjE,SAAS,EAAE,IAAI;iBAClB;aACJ;SACJ;KACJ,CAAC;IAEF,MAAM,MAAM,GAAiB,WAAW,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/F,MAAM,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAEzE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC","sourcesContent":["import { join, posix } from \"node:path\";\nimport { type InlineConfig, mergeConfig, build as viteBuild } from \"vite\";\nimport { gtkxBuiltUrl } from \"./vite-plugins/built-url.js\";\nimport { BUNDLE_FILENAME, ESM_EXTENSION } from \"./vite-plugins/esm-extension.js\";\nimport { gtkxVitePlugins } from \"./vite-plugins/index.js\";\nimport { gtkxNative } from \"./vite-plugins/native.js\";\nimport { gtkxSelfContained } from \"./vite-plugins/self-contained.js\";\nimport { gtkxWorker } from \"./vite-plugins/worker.js\";\n\ntype BuildOptions = {\n entry: string;\n assetBase?: string | undefined;\n vite?: InlineConfig | undefined;\n};\n\nconst BUILD_MODE = \"production\";\nconst CHUNK_STEM = \"[name]-[hash]\";\nconst DEFAULT_OUT_DIR = \"dist\";\nconst DEFAULT_ASSETS_DIR = \"assets\";\nconst ENTRY_FILE_NAMES = BUNDLE_FILENAME;\n\nconst buildDefaults: InlineConfig = {\n build: {\n ssrEmitAssets: true,\n outDir: DEFAULT_OUT_DIR,\n minify: true,\n cssMinify: false,\n },\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(BUILD_MODE),\n },\n};\n\nconst build = async (options: BuildOptions): Promise<string> => {\n const { entry, assetBase, vite: viteConfig } = options;\n const root = viteConfig?.root ?? process.cwd();\n const assetsDir = viteConfig?.build?.assetsDir ?? DEFAULT_ASSETS_DIR;\n\n const forced: InlineConfig = {\n plugins: [\n ...gtkxVitePlugins(BUILD_MODE),\n gtkxWorker(),\n gtkxBuiltUrl(assetBase),\n gtkxNative(root),\n gtkxSelfContained(),\n ],\n build: {\n ssr: entry,\n assetsInlineLimit: 0,\n rolldownOptions: {\n output: {\n entryFileNames: ENTRY_FILE_NAMES,\n chunkFileNames: posix.join(assetsDir, CHUNK_STEM + ESM_EXTENSION),\n keepNames: true,\n },\n },\n },\n };\n\n const merged: InlineConfig = mergeConfig(mergeConfig(buildDefaults, viteConfig ?? {}), forced);\n await viteBuild({ ...merged, ssr: { ...merged.ssr, noExternal: true } });\n\n return join(merged.build?.outDir ?? DEFAULT_OUT_DIR, ENTRY_FILE_NAMES);\n};\n\nexport { build };\n"]}
package/dist/cli.js CHANGED
@@ -1,7 +1,9 @@
1
- import { packageVersion } from "@gtkx/utils";
2
1
  import { defineCommand, runMain } from "citty";
2
+ import packageManifest from "../package.json" with { type: "json" };
3
+ import { splitApplicationArgs } from "./internal/application-args.js";
3
4
  import { withErrorBoundary } from "./internal/errors.js";
4
- const version = packageVersion(import.meta.url);
5
+ const version = packageManifest.version;
6
+ const { cliArgs } = splitApplicationArgs(process.argv.slice(2));
5
7
  const main = defineCommand({
6
8
  meta: {
7
9
  name: "gtkx",
@@ -17,6 +19,10 @@ const main = defineCommand({
17
19
  const { build } = await import("./commands/build.js");
18
20
  return withErrorBoundary(build);
19
21
  },
22
+ deploy: async () => {
23
+ const { deploy } = await import("./commands/deploy.js");
24
+ return withErrorBoundary(deploy);
25
+ },
20
26
  codegen: async () => {
21
27
  const { codegen } = await import("./commands/codegen.js");
22
28
  return withErrorBoundary(codegen);
@@ -31,5 +37,5 @@ const main = defineCommand({
31
37
  },
32
38
  },
33
39
  });
34
- await runMain(main);
40
+ await runMain(main, { rawArgs: cliArgs });
35
41
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEhD,MAAM,IAAI,GAAG,aAAa,CAAC;IACvB,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,WAAW,EAAE,0DAA0D;KAC1E;IACD,WAAW,EAAE;QACT,GAAG,EAAE,KAAK,IAAI,EAAE;YACZ,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAElD,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAEtD,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAE1D,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACb,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAEpD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAExD,OAAO,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;KACJ;CACJ,CAAC,CAAC;AAEH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC","sourcesContent":["import { packageVersion } from \"@gtkx/utils\";\nimport { defineCommand, runMain } from \"citty\";\nimport { withErrorBoundary } from \"./internal/errors.js\";\n\nconst version = packageVersion(import.meta.url);\n\nconst main = defineCommand({\n meta: {\n name: \"gtkx\",\n version,\n description: \"CLI for GTKX: create and develop GTK4 React applications\",\n },\n subCommands: {\n dev: async () => {\n const { dev } = await import(\"./commands/dev.js\");\n\n return withErrorBoundary(dev);\n },\n build: async () => {\n const { build } = await import(\"./commands/build.js\");\n\n return withErrorBoundary(build);\n },\n codegen: async () => {\n const { codegen } = await import(\"./commands/codegen.js\");\n\n return withErrorBoundary(codegen);\n },\n docs: async () => {\n const { docs } = await import(\"./commands/docs.js\");\n\n return withErrorBoundary(docs);\n },\n create: async () => {\n const { scaffoldCommand } = await import(\"create-gtkx\");\n\n return withErrorBoundary(scaffoldCommand);\n },\n },\n});\n\nawait runMain(main);\n"]}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,eAAe,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;AACxC,MAAM,EAAE,OAAO,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhE,MAAM,IAAI,GAAG,aAAa,CAAC;IACvB,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,WAAW,EAAE,0DAA0D;KAC1E;IACD,WAAW,EAAE;QACT,GAAG,EAAE,KAAK,IAAI,EAAE;YACZ,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAElD,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAEtD,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAExD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAE1D,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACb,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAEpD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAExD,OAAO,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;KACJ;CACJ,CAAC,CAAC;AAEH,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC","sourcesContent":["import { defineCommand, runMain } from \"citty\";\nimport packageManifest from \"../package.json\" with { type: \"json\" };\nimport { splitApplicationArgs } from \"./internal/application-args.js\";\nimport { withErrorBoundary } from \"./internal/errors.js\";\n\nconst version = packageManifest.version;\nconst { cliArgs } = splitApplicationArgs(process.argv.slice(2));\n\nconst main = defineCommand({\n meta: {\n name: \"gtkx\",\n version,\n description: \"CLI for GTKX: create and develop GTK4 React applications\",\n },\n subCommands: {\n dev: async () => {\n const { dev } = await import(\"./commands/dev.js\");\n\n return withErrorBoundary(dev);\n },\n build: async () => {\n const { build } = await import(\"./commands/build.js\");\n\n return withErrorBoundary(build);\n },\n deploy: async () => {\n const { deploy } = await import(\"./commands/deploy.js\");\n\n return withErrorBoundary(deploy);\n },\n codegen: async () => {\n const { codegen } = await import(\"./commands/codegen.js\");\n\n return withErrorBoundary(codegen);\n },\n docs: async () => {\n const { docs } = await import(\"./commands/docs.js\");\n\n return withErrorBoundary(docs);\n },\n create: async () => {\n const { scaffoldCommand } = await import(\"create-gtkx\");\n\n return withErrorBoundary(scaffoldCommand);\n },\n },\n});\n\nawait runMain(main, { rawArgs: cliArgs });\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AAE7E,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACvB,CAAC;AAIF,QAAA,MAAM,oBAAoB,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,aAM3D,CAAC;AAiCF,QAAA,MAAM,cAAc,GAAI,QAAQ,aAAa,KAAG,OAM/C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AAE7E,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACvB,CAAC;AAIF,QAAA,MAAM,oBAAoB,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,aAM3D,CAAC;AA+BF,QAAA,MAAM,cAAc,GAAI,QAAQ,aAAa,KAAG,OAM/C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,CAAC"}
@@ -14,11 +14,9 @@ const namespaceBarrelPath = (giStoreDir, library) => {
14
14
  const namespace = (separator === -1 ? library : library.slice(0, separator)).toLowerCase();
15
15
  return join(giStoreDir, namespace, "index.js");
16
16
  };
17
- // The manifest is what makes the store resolvable as a package, and npm's prune of a generated store
18
- // removes the link while leaving the directory behind, so both have to be checked.
19
17
  const hasManifest = (storeDir) => existsSync(join(storeDir, "package.json"));
20
18
  const isGiStoreStale = (store, libraries) => {
21
- if (!existsSync(store.giLinkDir) || !hasManifest(store.giStoreDir)) {
19
+ if (!hasManifest(store.giStoreDir)) {
22
20
  return true;
23
21
  }
24
22
  return libraries.some((library) => !existsSync(namespaceBarrelPath(store.giStoreDir, library)));
@@ -27,7 +25,7 @@ const isReactStoreStale = (store) => {
27
25
  if (store.react === null) {
28
26
  return false;
29
27
  }
30
- if (!existsSync(store.jsxLinkDir) || !hasManifest(store.jsxStoreDir)) {
28
+ if (!hasManifest(store.jsxStoreDir)) {
31
29
  return true;
32
30
  }
33
31
  return REACT_GENERATED_MODULES.some((module) => !existsSync(join(store.jsxStoreDir, module)));
@@ -1 +1 @@
1
- {"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAqB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ7E,MAAM,uBAAuB,GAAa,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEjF,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,MAAc,EAAiB,EAAE;IACxE,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAEvC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAE,OAAe,EAAU,EAAE;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAE3F,OAAO,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,qGAAqG;AACrG,mFAAmF;AACnF,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;AAE9F,MAAM,cAAc,GAAG,CAAC,KAAmB,EAAE,SAAmB,EAAW,EAAE;IACzE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,KAAmB,EAAW,EAAE;IACvD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAqB,EAAW,EAAE;IACtD,IAAI,CAAC;QACD,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7F,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAsB,CAAC","sourcesContent":["import type { Config } from \"@gtkx/config\";\nimport { resolveGirPath, resolveLibraries } from \"@gtkx/codegen\";\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { type CodegenStore, resolveCodegenStore } from \"./store-resolver.js\";\n\ntype CodegenInputs = {\n girPath: string[];\n libraries: string[];\n store: CodegenStore;\n};\n\nconst REACT_GENERATED_MODULES: string[] = [\"metadata.js\", join(\"gtk\", \"gtk.js\")];\n\nconst resolveCodegenInputs = (cwd: string, config: Config): CodegenInputs => {\n const girPath = resolveGirPath(config.girPath);\n const libraries = resolveLibraries(config.libraries, girPath);\n const store = resolveCodegenStore(cwd);\n\n return { girPath, libraries, store };\n};\n\nconst namespaceBarrelPath = (giStoreDir: string, library: string): string => {\n const separator = library.indexOf(\"-\");\n const namespace = (separator === -1 ? library : library.slice(0, separator)).toLowerCase();\n\n return join(giStoreDir, namespace, \"index.js\");\n};\n\n// The manifest is what makes the store resolvable as a package, and npm's prune of a generated store\n// removes the link while leaving the directory behind, so both have to be checked.\nconst hasManifest = (storeDir: string): boolean => existsSync(join(storeDir, \"package.json\"));\n\nconst isGiStoreStale = (store: CodegenStore, libraries: string[]): boolean => {\n if (!existsSync(store.giLinkDir) || !hasManifest(store.giStoreDir)) {\n return true;\n }\n\n return libraries.some((library) => !existsSync(namespaceBarrelPath(store.giStoreDir, library)));\n};\n\nconst isReactStoreStale = (store: CodegenStore): boolean => {\n if (store.react === null) {\n return false;\n }\n\n if (!existsSync(store.jsxLinkDir) || !hasManifest(store.jsxStoreDir)) {\n return true;\n }\n\n return REACT_GENERATED_MODULES.some((module) => !existsSync(join(store.jsxStoreDir, module)));\n};\n\nconst isCodegenStale = (inputs: CodegenInputs): boolean => {\n try {\n return isGiStoreStale(inputs.store, inputs.libraries) || isReactStoreStale(inputs.store);\n } catch {\n return true;\n }\n};\n\nexport { resolveCodegenInputs, isCodegenStale, type CodegenInputs };\n"]}
1
+ {"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAqB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ7E,MAAM,uBAAuB,GAAa,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEjF,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,MAAc,EAAiB,EAAE;IACxE,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAEvC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAE,OAAe,EAAU,EAAE;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAE3F,OAAO,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;AAE9F,MAAM,cAAc,GAAG,CAAC,KAAmB,EAAE,SAAmB,EAAW,EAAE;IACzE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,KAAmB,EAAW,EAAE;IACvD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAqB,EAAW,EAAE;IACtD,IAAI,CAAC;QACD,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7F,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAsB,CAAC","sourcesContent":["import type { Config } from \"@gtkx/config\";\nimport { resolveGirPath, resolveLibraries } from \"@gtkx/codegen\";\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { type CodegenStore, resolveCodegenStore } from \"./store-resolver.js\";\n\ntype CodegenInputs = {\n girPath: string[];\n libraries: string[];\n store: CodegenStore;\n};\n\nconst REACT_GENERATED_MODULES: string[] = [\"metadata.js\", join(\"gtk\", \"gtk.js\")];\n\nconst resolveCodegenInputs = (cwd: string, config: Config): CodegenInputs => {\n const girPath = resolveGirPath(config.girPath);\n const libraries = resolveLibraries(config.libraries, girPath);\n const store = resolveCodegenStore(cwd);\n\n return { girPath, libraries, store };\n};\n\nconst namespaceBarrelPath = (giStoreDir: string, library: string): string => {\n const separator = library.indexOf(\"-\");\n const namespace = (separator === -1 ? library : library.slice(0, separator)).toLowerCase();\n\n return join(giStoreDir, namespace, \"index.js\");\n};\n\nconst hasManifest = (storeDir: string): boolean => existsSync(join(storeDir, \"package.json\"));\n\nconst isGiStoreStale = (store: CodegenStore, libraries: string[]): boolean => {\n if (!hasManifest(store.giStoreDir)) {\n return true;\n }\n\n return libraries.some((library) => !existsSync(namespaceBarrelPath(store.giStoreDir, library)));\n};\n\nconst isReactStoreStale = (store: CodegenStore): boolean => {\n if (store.react === null) {\n return false;\n }\n\n if (!hasManifest(store.jsxStoreDir)) {\n return true;\n }\n\n return REACT_GENERATED_MODULES.some((module) => !existsSync(join(store.jsxStoreDir, module)));\n};\n\nconst isCodegenStale = (inputs: CodegenInputs): boolean => {\n try {\n return isGiStoreStale(inputs.store, inputs.libraries) || isReactStoreStale(inputs.store);\n } catch {\n return true;\n }\n};\n\nexport { resolveCodegenInputs, isCodegenStale, type CodegenInputs };\n"]}
@@ -1,5 +1,6 @@
1
1
  import { type Config } from "@gtkx/config";
2
2
  import { type CodegenInputs } from "./freshness.js";
3
+ import { type CodegenContext } from "./store-resolver.js";
3
4
  type RunCodegenOptions = {
4
5
  cwd?: string;
5
6
  mode?: string | undefined;
@@ -20,16 +21,18 @@ type RunCodegenResult = {
20
21
  configFile?: string | undefined;
21
22
  libraries?: string[] | undefined;
22
23
  };
24
+ type EnsureGeneratedOptions = {
25
+ shouldAnnounce?: boolean;
26
+ mode?: string;
27
+ };
23
28
  declare const runCodegen: (options?: RunCodegenOptions) => Promise<RunCodegenResult>;
24
29
  declare const isCodegenDisabled: (cwd: string, mode?: string) => Promise<boolean>;
25
30
  declare const syncSchemaEnv: (cwd: string) => void;
26
- declare const ensureGenerated: (cwd: string, options?: {
27
- shouldAnnounce?: boolean;
28
- mode?: string;
29
- }) => Promise<boolean>;
31
+ declare const ensureGeneratedIn: (context: CodegenContext, options?: EnsureGeneratedOptions) => Promise<boolean>;
32
+ declare const ensureGenerated: (cwd: string, options?: EnsureGeneratedOptions) => Promise<boolean>;
30
33
  declare const resolveConfigWatch: (cwd: string, mode?: string) => Promise<{
31
34
  paths: string[];
32
35
  regenerate: () => Promise<void>;
33
36
  }>;
34
- export { runCodegen, isCodegenDisabled, syncSchemaEnv, ensureGenerated, resolveConfigWatch, type RunCodegenOptions, type RunCodegenResult, };
37
+ export { runCodegen, isCodegenDisabled, syncSchemaEnv, ensureGenerated, ensureGeneratedIn, resolveConfigWatch, type RunCodegenResult, };
35
38
  //# sourceMappingURL=run-codegen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAYvD,OAAO,EAAE,KAAK,aAAa,EAAwC,MAAM,gBAAgB,CAAC;AAG1F,KAAK,iBAAiB,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAC;CAC3B,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACpC,CAAC;AAwFF,QAAA,MAAM,UAAU,GAAU,UAAS,iBAAsB,KAAG,OAAO,CAAC,gBAAgB,CAmCnF,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,OAAO,CAQ5E,CAAC;AAEF,QAAA,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,IAEpC,CAAC;AA4BF,QAAA,MAAM,eAAe,GACjB,KAAK,MAAM,EACX,UAAS;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,KAC1D,OAAO,CAAC,OAAO,CAoBjB,CAAC;AAEF,QAAA,MAAM,kBAAkB,GACpB,KAAK,MAAM,EACX,OAAO,MAAM,KACd,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAS9D,CAAC;AAEF,OAAO,EACH,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACxB,CAAC"}
1
+ {"version":3,"file":"run-codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAYvD,OAAO,EAAE,KAAK,aAAa,EAAwC,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAA4C,MAAM,qBAAqB,CAAC;AAEpG,KAAK,iBAAiB,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAC;CAC3B,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACpC,CAAC;AAUF,KAAK,sBAAsB,GAAG;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAqF1E,QAAA,MAAM,UAAU,GAAU,UAAS,iBAAsB,KAAG,OAAO,CAAC,gBAAgB,CAmCnF,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,OAAO,CAQ5E,CAAC;AAEF,QAAA,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,IAEpC,CAAC;AAkDF,QAAA,MAAM,iBAAiB,GACnB,SAAS,cAAc,EACvB,UAAS,sBAA2B,KACrC,OAAO,CAAC,OAAO,CAAuE,CAAC;AAG1F,QAAA,MAAM,eAAe,GAAU,KAAK,MAAM,EAAE,UAAS,sBAA2B,KAAG,OAAO,CAAC,OAAO,CACS,CAAC;AAE5G,QAAA,MAAM,kBAAkB,GACpB,KAAK,MAAM,EACX,OAAO,MAAM,KACd,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAS9D,CAAC;AAEF,OAAO,EACH,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,gBAAgB,GACxB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { runCodegen as runCodegenCore } from "@gtkx/codegen";
2
+ import { getShadowingStorePaths, sweepProjectStaging } from "@gtkx/codegen/internal";
2
3
  import { loadConfig } from "@gtkx/config";
3
4
  import { resolveElementComponents, resolveElementProps, resolveLazyElements, resolveOmittedProps, } from "@gtkx/config/internal";
4
5
  import { info } from "@gtkx/utils";
@@ -11,16 +12,15 @@ import { resolveCodegenContext } from "./store-resolver.js";
11
12
  const GIR_PATH_MISSING_MESSAGE = "No GIR search paths available. Install gobject-introspection " +
12
13
  "(Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), " +
13
14
  "or set `girPath` in gtkx.config.ts.";
14
- const removeSharedStoreShadow = (cwd) => {
15
- for (const path of [
16
- resolve(cwd, "node_modules/.gtkx/gi"),
17
- resolve(cwd, "node_modules/.gtkx/jsx"),
18
- resolve(cwd, "node_modules/@gtkx/gi"),
19
- resolve(cwd, "node_modules/@gtkx/jsx"),
20
- ]) {
15
+ const removeStores = (paths) => {
16
+ for (const path of paths) {
21
17
  rmSync(path, { recursive: true, force: true });
22
18
  }
23
19
  };
20
+ const removeShadowingStores = (cwd) => {
21
+ sweepProjectStaging(cwd);
22
+ removeStores(getShadowingStorePaths(cwd));
23
+ };
24
24
  const codegenOptions = ({ store, libraries, girPath, elements }) => ({
25
25
  libraries,
26
26
  girPath,
@@ -51,10 +51,14 @@ const disabledCodegenResult = (configFile) => ({
51
51
  configFile,
52
52
  libraries: [],
53
53
  });
54
- const clearGeneratedStores = (store) => {
55
- for (const path of [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir]) {
56
- rmSync(path, { recursive: true, force: true });
54
+ const regeneratedStorePaths = (store) => {
55
+ if (store.react === null) {
56
+ return [store.giStoreDir, store.giLinkDir];
57
57
  }
58
+ return [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir];
59
+ };
60
+ const clearGeneratedStores = (store) => {
61
+ removeStores(regeneratedStorePaths(store));
58
62
  };
59
63
  const resolveLoadedConfig = async (options, cwd) => options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));
60
64
  const prepareCodegen = (options, cwd, config) => {
@@ -69,7 +73,7 @@ const runCodegen = async (options = {}) => {
69
73
  const cwd = options.cwd ?? process.cwd();
70
74
  const { config, configFile } = await resolveLoadedConfig(options, cwd);
71
75
  if (config.codegen === false) {
72
- removeSharedStoreShadow(cwd);
76
+ removeShadowingStores(cwd);
73
77
  return disabledCodegenResult(configFile);
74
78
  }
75
79
  const { girPath, libraries, store, isForced } = prepareCodegen(options, cwd, config);
@@ -129,14 +133,12 @@ const getRunOptions = ({ root, mode, inputs, resolved }) => {
129
133
  }
130
134
  return { cwd: root, mode, inputs, resolved };
131
135
  };
132
- const ensureGenerated = async (cwd, options = {}) => {
133
- if (options.shouldAnnounce && process.env.GTKX_DISABLE_PREFLIGHT === "1") {
134
- return false;
135
- }
136
- const context = await resolveCodegenContext(cwd, options.mode);
137
- syncSchemaEnv(cwd);
136
+ const isPreflightSkipped = (options) => options.shouldAnnounce === true && process.env.GTKX_DISABLE_PREFLIGHT === "1";
137
+ /* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */
138
+ const generate = async (context, options) => {
139
+ syncSchemaEnv(context.root);
138
140
  if (context.config.codegen === false) {
139
- removeSharedStoreShadow(context.root);
141
+ removeShadowingStores(context.root);
140
142
  return false;
141
143
  }
142
144
  const inputs = resolveInputsOrNull(context.root, context.config);
@@ -145,6 +147,10 @@ const ensureGenerated = async (cwd, options = {}) => {
145
147
  const result = await runCodegen(getRunOptions({ root: context.root, mode: options.mode, inputs, resolved }));
146
148
  return result.isRegenerated;
147
149
  };
150
+ /* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */
151
+ const ensureGeneratedIn = async (context, options = {}) => (isPreflightSkipped(options) ? false : generate(context, options));
152
+ /* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */
153
+ const ensureGenerated = async (cwd, options = {}) => isPreflightSkipped(options) ? false : generate(await resolveCodegenContext(cwd, options.mode), options);
148
154
  const resolveConfigWatch = async (cwd, mode) => {
149
155
  const { configFile, root } = await loadConfig(cwd, { mode });
150
156
  return {
@@ -154,5 +160,5 @@ const resolveConfigWatch = async (cwd, mode) => {
154
160
  },
155
161
  };
156
162
  };
157
- export { runCodegen, isCodegenDisabled, syncSchemaEnv, ensureGenerated, resolveConfigWatch, };
163
+ export { runCodegen, isCodegenDisabled, syncSchemaEnv, ensureGenerated, ensureGeneratedIn, resolveConfigWatch, };
158
164
  //# sourceMappingURL=run-codegen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-codegen.js","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import { runCodegen as runCodegenCore } from \"@gtkx/codegen\";\nimport { type Config, loadConfig } from \"@gtkx/config\";\nimport {\n resolveElementComponents,\n resolveElementProps,\n resolveLazyElements,\n resolveOmittedProps,\n} from \"@gtkx/config/internal\";\nimport { info } from \"@gtkx/utils\";\nimport { rmSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { resolveDataDir } from \"../internal/data-dir.js\";\nimport { emitSchemaEnv } from \"../settings/schema.js\";\nimport { type CodegenInputs, isCodegenStale, resolveCodegenInputs } from \"./freshness.js\";\nimport { type CodegenStore, resolveCodegenContext } from \"./store-resolver.js\";\n\ntype RunCodegenOptions = {\n cwd?: string;\n mode?: string | undefined;\n isForced?: boolean;\n inputs?: CodegenInputs;\n resolved?: LoadedConfig;\n};\n\ntype LoadedConfig = {\n config: Config;\n configFile: string;\n};\n\ntype RunCodegenResult = {\n isRegenerated: boolean;\n namespaces: number;\n intrinsicElements: number;\n duration: number;\n girPath?: string[] | undefined;\n configFile?: string | undefined;\n libraries?: string[] | undefined;\n};\n\ntype CodegenOptionsInput = {\n store: CodegenStore;\n libraries: string[];\n girPath: string[];\n elements: Config[\"elements\"];\n};\n\ntype PreparedCodegen = CodegenInputs & { isForced: boolean };\n\ntype RunOptionsInput = {\n root: string;\n mode: string | undefined;\n inputs: CodegenInputs | null;\n resolved: LoadedConfig;\n};\n\nconst GIR_PATH_MISSING_MESSAGE =\n \"No GIR search paths available. Install gobject-introspection \" +\n \"(Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), \" +\n \"or set `girPath` in gtkx.config.ts.\";\n\nconst removeSharedStoreShadow = (cwd: string): void => {\n for (const path of [\n resolve(cwd, \"node_modules/.gtkx/gi\"),\n resolve(cwd, \"node_modules/.gtkx/jsx\"),\n resolve(cwd, \"node_modules/@gtkx/gi\"),\n resolve(cwd, \"node_modules/@gtkx/jsx\"),\n ]) {\n rmSync(path, { recursive: true, force: true });\n }\n};\n\nconst codegenOptions = ({ store, libraries, girPath, elements }: CodegenOptionsInput) => ({\n libraries,\n girPath,\n gi: {\n storeDir: store.giStoreDir,\n linkDir: store.giLinkDir,\n version: store.runtimeVersion,\n },\n jsx:\n store.react === null\n ? undefined\n : {\n storeDir: store.jsxStoreDir,\n linkDir: store.jsxLinkDir,\n version: store.react.version,\n },\n reactSubexports: store.react?.subexports ?? [],\n userComponents: resolveElementComponents(elements),\n userProps: resolveElementProps(elements),\n userLazyElements: resolveLazyElements(elements),\n userOmittedProps: resolveOmittedProps(elements),\n});\n\nconst disabledCodegenResult = (configFile: string): RunCodegenResult => ({\n isRegenerated: false,\n namespaces: 0,\n intrinsicElements: 0,\n duration: 0,\n girPath: [],\n configFile,\n libraries: [],\n});\n\nconst clearGeneratedStores = (store: CodegenStore): void => {\n for (const path of [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir]) {\n rmSync(path, { recursive: true, force: true });\n }\n};\n\nconst resolveLoadedConfig = async (options: RunCodegenOptions, cwd: string): Promise<LoadedConfig> =>\n options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));\n\nconst prepareCodegen = (options: RunCodegenOptions, cwd: string, config: Config): PreparedCodegen => {\n const { girPath, libraries, store } = options.inputs ?? resolveCodegenInputs(cwd, config);\n\n if (girPath.length === 0) {\n throw new Error(GIR_PATH_MISSING_MESSAGE);\n }\n\n const isForced = options.isForced === true || isCodegenStale({ girPath, libraries, store });\n\n return { girPath, libraries, store, isForced };\n};\n\nconst runCodegen = async (options: RunCodegenOptions = {}): Promise<RunCodegenResult> => {\n const cwd = options.cwd ?? process.cwd();\n const { config, configFile } = await resolveLoadedConfig(options, cwd);\n\n if (config.codegen === false) {\n removeSharedStoreShadow(cwd);\n\n return disabledCodegenResult(configFile);\n }\n\n const { girPath, libraries, store, isForced } = prepareCodegen(options, cwd, config);\n\n if (options.isForced) {\n clearGeneratedStores(store);\n }\n\n const result = await runCodegenCore({\n ...codegenOptions({\n store,\n libraries,\n girPath,\n elements: config.elements,\n }),\n isForced,\n });\n\n return {\n isRegenerated: result.isRegenerated,\n namespaces: result.namespaces,\n intrinsicElements: result.intrinsicElements,\n duration: result.duration,\n girPath,\n configFile,\n libraries,\n };\n};\n\nconst isCodegenDisabled = async (cwd: string, mode?: string): Promise<boolean> => {\n try {\n const { config } = await loadConfig(cwd, { mode });\n\n return config.codegen === false;\n } catch {\n return false;\n }\n};\n\nconst syncSchemaEnv = (cwd: string): void => {\n emitSchemaEnv(cwd, resolveDataDir(cwd));\n};\n\nconst resolveInputsOrNull = (cwd: string, config: Config): CodegenInputs | null => {\n try {\n return resolveCodegenInputs(cwd, config);\n } catch {\n return null;\n }\n};\n\nconst maybeAnnounceStale = (shouldAnnounce: boolean | undefined, inputs: CodegenInputs | null): void => {\n if (!shouldAnnounce) {\n return;\n }\n\n if (inputs === null || isCodegenStale(inputs)) {\n info(\"generated bindings missing; running codegen...\");\n }\n};\n\nconst getRunOptions = ({ root, mode, inputs, resolved }: RunOptionsInput): RunCodegenOptions => {\n if (inputs === null) {\n return { cwd: root, mode, resolved };\n }\n\n return { cwd: root, mode, inputs, resolved };\n};\n\nconst ensureGenerated = async (\n cwd: string,\n options: { shouldAnnounce?: boolean; mode?: string } = {},\n): Promise<boolean> => {\n if (options.shouldAnnounce && process.env.GTKX_DISABLE_PREFLIGHT === \"1\") {\n return false;\n }\n\n const context = await resolveCodegenContext(cwd, options.mode);\n syncSchemaEnv(cwd);\n\n if (context.config.codegen === false) {\n removeSharedStoreShadow(context.root);\n\n return false;\n }\n\n const inputs = resolveInputsOrNull(context.root, context.config);\n maybeAnnounceStale(options.shouldAnnounce, inputs);\n const resolved = { config: context.config, configFile: context.configFile };\n const result = await runCodegen(getRunOptions({ root: context.root, mode: options.mode, inputs, resolved }));\n\n return result.isRegenerated;\n};\n\nconst resolveConfigWatch = async (\n cwd: string,\n mode?: string,\n): Promise<{ paths: string[]; regenerate: () => Promise<void> }> => {\n const { configFile, root } = await loadConfig(cwd, { mode });\n\n return {\n paths: [resolve(root, configFile)],\n regenerate: async () => {\n await runCodegen({ cwd: root, mode });\n },\n };\n};\n\nexport {\n runCodegen,\n isCodegenDisabled,\n syncSchemaEnv,\n ensureGenerated,\n resolveConfigWatch,\n type RunCodegenOptions,\n type RunCodegenResult,\n};\n"]}
1
+ {"version":3,"file":"run-codegen.js","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import { runCodegen as runCodegenCore } from \"@gtkx/codegen\";\nimport { getShadowingStorePaths, sweepProjectStaging } from \"@gtkx/codegen/internal\";\nimport { type Config, loadConfig } from \"@gtkx/config\";\nimport {\n resolveElementComponents,\n resolveElementProps,\n resolveLazyElements,\n resolveOmittedProps,\n} from \"@gtkx/config/internal\";\nimport { info } from \"@gtkx/utils\";\nimport { rmSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { resolveDataDir } from \"../internal/data-dir.js\";\nimport { emitSchemaEnv } from \"../settings/schema.js\";\nimport { type CodegenInputs, isCodegenStale, resolveCodegenInputs } from \"./freshness.js\";\nimport { type CodegenContext, type CodegenStore, resolveCodegenContext } from \"./store-resolver.js\";\n\ntype RunCodegenOptions = {\n cwd?: string;\n mode?: string | undefined;\n isForced?: boolean;\n inputs?: CodegenInputs;\n resolved?: LoadedConfig;\n};\n\ntype LoadedConfig = {\n config: Config;\n configFile: string;\n};\n\ntype RunCodegenResult = {\n isRegenerated: boolean;\n namespaces: number;\n intrinsicElements: number;\n duration: number;\n girPath?: string[] | undefined;\n configFile?: string | undefined;\n libraries?: string[] | undefined;\n};\n\ntype CodegenOptionsInput = {\n store: CodegenStore;\n libraries: string[];\n girPath: string[];\n elements: Config[\"elements\"];\n};\n\ntype PreparedCodegen = CodegenInputs & { isForced: boolean };\ntype EnsureGeneratedOptions = { shouldAnnounce?: boolean; mode?: string };\n\ntype RunOptionsInput = {\n root: string;\n mode: string | undefined;\n inputs: CodegenInputs | null;\n resolved: LoadedConfig;\n};\n\nconst GIR_PATH_MISSING_MESSAGE =\n \"No GIR search paths available. Install gobject-introspection \" +\n \"(Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), \" +\n \"or set `girPath` in gtkx.config.ts.\";\n\nconst removeStores = (paths: string[]): void => {\n for (const path of paths) {\n rmSync(path, { recursive: true, force: true });\n }\n};\n\nconst removeShadowingStores = (cwd: string): void => {\n sweepProjectStaging(cwd);\n removeStores(getShadowingStorePaths(cwd));\n};\n\nconst codegenOptions = ({ store, libraries, girPath, elements }: CodegenOptionsInput) => ({\n libraries,\n girPath,\n gi: {\n storeDir: store.giStoreDir,\n linkDir: store.giLinkDir,\n version: store.runtimeVersion,\n },\n jsx:\n store.react === null\n ? undefined\n : {\n storeDir: store.jsxStoreDir,\n linkDir: store.jsxLinkDir,\n version: store.react.version,\n },\n reactSubexports: store.react?.subexports ?? [],\n userComponents: resolveElementComponents(elements),\n userProps: resolveElementProps(elements),\n userLazyElements: resolveLazyElements(elements),\n userOmittedProps: resolveOmittedProps(elements),\n});\n\nconst disabledCodegenResult = (configFile: string): RunCodegenResult => ({\n isRegenerated: false,\n namespaces: 0,\n intrinsicElements: 0,\n duration: 0,\n girPath: [],\n configFile,\n libraries: [],\n});\n\nconst regeneratedStorePaths = (store: CodegenStore): string[] => {\n if (store.react === null) {\n return [store.giStoreDir, store.giLinkDir];\n }\n\n return [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir];\n};\n\nconst clearGeneratedStores = (store: CodegenStore): void => {\n removeStores(regeneratedStorePaths(store));\n};\n\nconst resolveLoadedConfig = async (options: RunCodegenOptions, cwd: string): Promise<LoadedConfig> =>\n options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));\n\nconst prepareCodegen = (options: RunCodegenOptions, cwd: string, config: Config): PreparedCodegen => {\n const { girPath, libraries, store } = options.inputs ?? resolveCodegenInputs(cwd, config);\n\n if (girPath.length === 0) {\n throw new Error(GIR_PATH_MISSING_MESSAGE);\n }\n\n const isForced = options.isForced === true || isCodegenStale({ girPath, libraries, store });\n\n return { girPath, libraries, store, isForced };\n};\n\nconst runCodegen = async (options: RunCodegenOptions = {}): Promise<RunCodegenResult> => {\n const cwd = options.cwd ?? process.cwd();\n const { config, configFile } = await resolveLoadedConfig(options, cwd);\n\n if (config.codegen === false) {\n removeShadowingStores(cwd);\n\n return disabledCodegenResult(configFile);\n }\n\n const { girPath, libraries, store, isForced } = prepareCodegen(options, cwd, config);\n\n if (options.isForced) {\n clearGeneratedStores(store);\n }\n\n const result = await runCodegenCore({\n ...codegenOptions({\n store,\n libraries,\n girPath,\n elements: config.elements,\n }),\n isForced,\n });\n\n return {\n isRegenerated: result.isRegenerated,\n namespaces: result.namespaces,\n intrinsicElements: result.intrinsicElements,\n duration: result.duration,\n girPath,\n configFile,\n libraries,\n };\n};\n\nconst isCodegenDisabled = async (cwd: string, mode?: string): Promise<boolean> => {\n try {\n const { config } = await loadConfig(cwd, { mode });\n\n return config.codegen === false;\n } catch {\n return false;\n }\n};\n\nconst syncSchemaEnv = (cwd: string): void => {\n emitSchemaEnv(cwd, resolveDataDir(cwd));\n};\n\nconst resolveInputsOrNull = (cwd: string, config: Config): CodegenInputs | null => {\n try {\n return resolveCodegenInputs(cwd, config);\n } catch {\n return null;\n }\n};\n\nconst maybeAnnounceStale = (shouldAnnounce: boolean | undefined, inputs: CodegenInputs | null): void => {\n if (!shouldAnnounce) {\n return;\n }\n\n if (inputs === null || isCodegenStale(inputs)) {\n info(\"generated bindings missing; running codegen...\");\n }\n};\n\nconst getRunOptions = ({ root, mode, inputs, resolved }: RunOptionsInput): RunCodegenOptions => {\n if (inputs === null) {\n return { cwd: root, mode, resolved };\n }\n\n return { cwd: root, mode, inputs, resolved };\n};\n\nconst isPreflightSkipped = (options: EnsureGeneratedOptions): boolean =>\n options.shouldAnnounce === true && process.env.GTKX_DISABLE_PREFLIGHT === \"1\";\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */\nconst generate = async (context: CodegenContext, options: EnsureGeneratedOptions): Promise<boolean> => {\n syncSchemaEnv(context.root);\n\n if (context.config.codegen === false) {\n removeShadowingStores(context.root);\n\n return false;\n }\n\n const inputs = resolveInputsOrNull(context.root, context.config);\n maybeAnnounceStale(options.shouldAnnounce, inputs);\n const resolved = { config: context.config, configFile: context.configFile };\n const result = await runCodegen(getRunOptions({ root: context.root, mode: options.mode, inputs, resolved }));\n\n return result.isRegenerated;\n};\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */\nconst ensureGeneratedIn = async (\n context: CodegenContext,\n options: EnsureGeneratedOptions = {},\n): Promise<boolean> => (isPreflightSkipped(options) ? false : generate(context, options));\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */\nconst ensureGenerated = async (cwd: string, options: EnsureGeneratedOptions = {}): Promise<boolean> =>\n isPreflightSkipped(options) ? false : generate(await resolveCodegenContext(cwd, options.mode), options);\n\nconst resolveConfigWatch = async (\n cwd: string,\n mode?: string,\n): Promise<{ paths: string[]; regenerate: () => Promise<void> }> => {\n const { configFile, root } = await loadConfig(cwd, { mode });\n\n return {\n paths: [resolve(root, configFile)],\n regenerate: async () => {\n await runCodegen({ cwd: root, mode });\n },\n };\n};\n\nexport {\n runCodegen,\n isCodegenDisabled,\n syncSchemaEnv,\n ensureGenerated,\n ensureGeneratedIn,\n resolveConfigWatch,\n type RunCodegenResult,\n};\n"]}
@@ -18,5 +18,5 @@ type CodegenContext = {
18
18
  };
19
19
  declare const resolveCodegenStore: (dir: string) => CodegenStore;
20
20
  declare const resolveCodegenContext: (cwd: string, mode?: string) => Promise<CodegenContext>;
21
- export { resolveCodegenStore, resolveCodegenContext, type CodegenStore, type CodegenContext };
21
+ export { resolveCodegenStore, resolveCodegenContext, type CodegenContext, type CodegenStore };
22
22
  //# sourceMappingURL=store-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-resolver.d.ts","sourceRoot":"","sources":["../../src/codegen/store-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAMvD,KAAK,YAAY,GAAG;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAIF,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AA6BF,QAAA,MAAM,mBAAmB,GAAI,KAAK,MAAM,KAAG,YAqB1C,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,cAAc,CAIvF,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"store-resolver.d.ts","sourceRoot":"","sources":["../../src/codegen/store-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAMvD,KAAK,YAAY,GAAG;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAIF,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AA6BF,QAAA,MAAM,mBAAmB,GAAI,KAAK,MAAM,KAAG,YAqB1C,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,cAAc,CAIvF,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"store-resolver.js","sourceRoot":"","sources":["../../src/codegen/store-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveStore } from \"@gtkx/codegen\";\nimport { type Config, loadConfig } from \"@gtkx/config\";\nimport { existsSync, readFileSync, realpathSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\ntype CodegenStore = {\n giStoreDir: string;\n giLinkDir: string;\n jsxStoreDir: string;\n jsxLinkDir: string;\n runtimeVersion: string;\n react: CodegenReactPackage | null;\n};\n\ntype CodegenReactPackage = {\n version: string;\n subexports: string[];\n};\n\ntype ResolvedPackage = { dir: string; version: string };\n\ntype CodegenContext = {\n root: string;\n config: Config;\n configFile: string;\n};\n\nconst readVersion = (packageJsonPath: string): string => {\n const parsed = JSON.parse(readFileSync(packageJsonPath, \"utf8\")) as { version?: string };\n\n return parsed.version ?? \"0.0.0\";\n};\n\nconst resolvePackage = (require: NodeJS.Require, dir: string, packageName: string): ResolvedPackage | null => {\n try {\n const real = realpathSync(require.resolve(`${packageName}/package.json`));\n\n return { dir: dirname(real), version: readVersion(real) };\n } catch {\n const unscoped = packageName.replace(/^@[^/]+\\//, \"\");\n const workspacePkg = join(dir, \"packages\", unscoped, \"package.json\");\n\n if (!existsSync(workspacePkg)) {\n return null;\n }\n\n const real = realpathSync(workspacePkg);\n\n return { dir: dirname(real), version: readVersion(real) };\n }\n};\n\nconst siblingStore = (giDir: string): string => join(dirname(giDir), \"jsx\");\n\nconst resolveCodegenStore = (dir: string): CodegenStore => {\n const require = createRequire(pathToFileURL(join(dir, \"__gtkx_resolver__.js\")).href);\n\n if (resolvePackage(require, dir, \"@gtkx/native\") === null) {\n throw new Error(\"Cannot resolve @gtkx/native from the project; is it installed?\");\n }\n\n const store = resolveStore(dir);\n const hasReactRuntime = resolvePackage(require, dir, \"react\") !== null;\n\n return {\n giStoreDir: store.gi.storeDir,\n giLinkDir: store.gi.linkDir,\n jsxStoreDir: store.jsx?.storeDir ?? siblingStore(store.gi.storeDir),\n jsxLinkDir: store.jsx?.linkDir ?? siblingStore(store.gi.linkDir),\n runtimeVersion: store.gi.version,\n react:\n hasReactRuntime && store.jsx !== null\n ? { version: store.jsx.version, subexports: store.reactSubexports }\n : null,\n };\n};\n\nconst resolveCodegenContext = async (cwd: string, mode?: string): Promise<CodegenContext> => {\n const { config, configFile } = await loadConfig(cwd, { mode });\n\n return { root: cwd, config, configFile };\n};\n\nexport { resolveCodegenStore, resolveCodegenContext, type CodegenStore, type CodegenContext };\n"]}
1
+ {"version":3,"file":"store-resolver.js","sourceRoot":"","sources":["../../src/codegen/store-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveStore } from \"@gtkx/codegen\";\nimport { type Config, loadConfig } from \"@gtkx/config\";\nimport { existsSync, readFileSync, realpathSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\ntype CodegenStore = {\n giStoreDir: string;\n giLinkDir: string;\n jsxStoreDir: string;\n jsxLinkDir: string;\n runtimeVersion: string;\n react: CodegenReactPackage | null;\n};\n\ntype CodegenReactPackage = {\n version: string;\n subexports: string[];\n};\n\ntype ResolvedPackage = { dir: string; version: string };\n\ntype CodegenContext = {\n root: string;\n config: Config;\n configFile: string;\n};\n\nconst readVersion = (packageJsonPath: string): string => {\n const parsed = JSON.parse(readFileSync(packageJsonPath, \"utf8\")) as { version?: string };\n\n return parsed.version ?? \"0.0.0\";\n};\n\nconst resolvePackage = (require: NodeJS.Require, dir: string, packageName: string): ResolvedPackage | null => {\n try {\n const real = realpathSync(require.resolve(`${packageName}/package.json`));\n\n return { dir: dirname(real), version: readVersion(real) };\n } catch {\n const unscoped = packageName.replace(/^@[^/]+\\//, \"\");\n const workspacePkg = join(dir, \"packages\", unscoped, \"package.json\");\n\n if (!existsSync(workspacePkg)) {\n return null;\n }\n\n const real = realpathSync(workspacePkg);\n\n return { dir: dirname(real), version: readVersion(real) };\n }\n};\n\nconst siblingStore = (giDir: string): string => join(dirname(giDir), \"jsx\");\n\nconst resolveCodegenStore = (dir: string): CodegenStore => {\n const require = createRequire(pathToFileURL(join(dir, \"__gtkx_resolver__.js\")).href);\n\n if (resolvePackage(require, dir, \"@gtkx/native\") === null) {\n throw new Error(\"Cannot resolve @gtkx/native from the project; is it installed?\");\n }\n\n const store = resolveStore(dir);\n const hasReactRuntime = resolvePackage(require, dir, \"react\") !== null;\n\n return {\n giStoreDir: store.gi.storeDir,\n giLinkDir: store.gi.linkDir,\n jsxStoreDir: store.jsx?.storeDir ?? siblingStore(store.gi.storeDir),\n jsxLinkDir: store.jsx?.linkDir ?? siblingStore(store.gi.linkDir),\n runtimeVersion: store.gi.version,\n react:\n hasReactRuntime && store.jsx !== null\n ? { version: store.jsx.version, subexports: store.reactSubexports }\n : null,\n };\n};\n\nconst resolveCodegenContext = async (cwd: string, mode?: string): Promise<CodegenContext> => {\n const { config, configFile } = await loadConfig(cwd, { mode });\n\n return { root: cwd, config, configFile };\n};\n\nexport { resolveCodegenStore, resolveCodegenContext, type CodegenContext, type CodegenStore };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,KAAK;;;;;;;EA2BT,CAAC;AAEH,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,KAAK;;;;;;;EA0BT,CAAC;AAEH,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { info } from "@gtkx/utils";
2
2
  import { defineCommand } from "citty";
3
3
  import { build as buildApp } from "../builder.js";
4
- import { ensureGenerated } from "../codegen/run-codegen.js";
5
- import { entryArg, resolveEntry } from "../internal/entry-arg.js";
4
+ import { entryArg } from "../internal/entry-arg.js";
5
+ import { prepareProject } from "../internal/prepare-project.js";
6
6
  const BUILD_MODE = "production";
7
7
  const build = defineCommand({
8
8
  meta: {
@@ -17,17 +17,16 @@ const build = defineCommand({
17
17
  },
18
18
  },
19
19
  async run({ args }) {
20
- const { cwd, entry } = resolveEntry(args);
20
+ const { cwd, entry } = await prepareProject(args, BUILD_MODE);
21
21
  info(`Building ${entry}`);
22
- await ensureGenerated(cwd, { shouldAnnounce: true, mode: BUILD_MODE });
23
- await buildApp({
22
+ const bundlePath = await buildApp({
24
23
  entry,
25
24
  assetBase: args["asset-base"],
26
25
  vite: {
27
26
  root: cwd,
28
27
  },
29
28
  });
30
- info("Build complete: dist/bundle.js");
29
+ info(`Build complete: ${bundlePath}`);
31
30
  },
32
31
  });
33
32
  export { build };
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,MAAM,KAAK,GAAG,aAAa,CAAC;IACxB,IAAI,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,kCAAkC;KAClD;IACD,IAAI,EAAE;QACF,GAAG,QAAQ;QACX,YAAY,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0EAA0E;SAC1F;KACJ;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;QAC1B,MAAM,eAAe,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAEvE,MAAM,QAAQ,CAAC;YACX,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;YAC7B,IAAI,EAAE;gBACF,IAAI,EAAE,GAAG;aACZ;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC3C,CAAC;CACJ,CAAC,CAAC;AAEH,OAAO,EAAE,KAAK,EAAE,CAAC","sourcesContent":["import { info } from \"@gtkx/utils\";\nimport { defineCommand } from \"citty\";\nimport { build as buildApp } from \"../builder.js\";\nimport { ensureGenerated } from \"../codegen/run-codegen.js\";\nimport { entryArg, resolveEntry } from \"../internal/entry-arg.js\";\n\nconst BUILD_MODE = \"production\";\n\nconst build = defineCommand({\n meta: {\n name: \"build\",\n description: \"Build application for production\",\n },\n args: {\n ...entryArg,\n \"asset-base\": {\n type: \"string\",\n description: \"Asset base path relative to executable directory (e.g., ../share/my-app)\",\n },\n },\n async run({ args }) {\n const { cwd, entry } = resolveEntry(args);\n info(`Building ${entry}`);\n await ensureGenerated(cwd, { shouldAnnounce: true, mode: BUILD_MODE });\n\n await buildApp({\n entry,\n assetBase: args[\"asset-base\"],\n vite: {\n root: cwd,\n },\n });\n\n info(\"Build complete: dist/bundle.js\");\n },\n});\n\nexport { build };\n"]}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,MAAM,KAAK,GAAG,aAAa,CAAC;IACxB,IAAI,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,kCAAkC;KAClD;IACD,IAAI,EAAE;QACF,GAAG,QAAQ;QACX,YAAY,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0EAA0E;SAC1F;KACJ;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;QAE1B,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC;YAC9B,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;YAC7B,IAAI,EAAE;gBACF,IAAI,EAAE,GAAG;aACZ;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;IAC1C,CAAC;CACJ,CAAC,CAAC;AAEH,OAAO,EAAE,KAAK,EAAE,CAAC","sourcesContent":["import { info } from \"@gtkx/utils\";\nimport { defineCommand } from \"citty\";\nimport { build as buildApp } from \"../builder.js\";\nimport { entryArg } from \"../internal/entry-arg.js\";\nimport { prepareProject } from \"../internal/prepare-project.js\";\n\nconst BUILD_MODE = \"production\";\n\nconst build = defineCommand({\n meta: {\n name: \"build\",\n description: \"Build application for production\",\n },\n args: {\n ...entryArg,\n \"asset-base\": {\n type: \"string\",\n description: \"Asset base path relative to executable directory (e.g., ../share/my-app)\",\n },\n },\n async run({ args }) {\n const { cwd, entry } = await prepareProject(args, BUILD_MODE);\n info(`Building ${entry}`);\n\n const bundlePath = await buildApp({\n entry,\n assetBase: args[\"asset-base\"],\n vite: {\n root: cwd,\n },\n });\n\n info(`Build complete: ${bundlePath}`);\n },\n});\n\nexport { build };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/commands/codegen.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,OAAO;;;;;;;EAwCX,CAAC;AAEH,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/commands/codegen.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,OAAO;;;;;;;EA0CX,CAAC;AAQH,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -3,6 +3,9 @@ import { defineCommand } from "citty";
3
3
  import { formatCodegenResult } from "../codegen/report.js";
4
4
  import { ensureGenerated, isCodegenDisabled, runCodegen, syncSchemaEnv } from "../codegen/run-codegen.js";
5
5
  import { cwdArg, resolveCwd } from "../internal/entry-arg.js";
6
+ const FORCED_WHILE_DISABLED_MESSAGE = "codegen is disabled for this project, so --force has no store to regenerate here. " +
7
+ "Remove `codegen: false` from gtkx.config.ts, or run `gtkx codegen --force` where the installed " +
8
+ "binding store is generated.";
6
9
  const codegen = defineCommand({
7
10
  meta: {
8
11
  name: "codegen",
@@ -18,7 +21,9 @@ const codegen = defineCommand({
18
21
  },
19
22
  async run({ args }) {
20
23
  const cwd = resolveCwd(args);
21
- if (await isCodegenDisabled(cwd)) {
24
+ const isDisabled = await isCodegenDisabled(cwd);
25
+ checkForce(isDisabled, args.force);
26
+ if (isDisabled) {
22
27
  await runCodegen({ cwd });
23
28
  syncSchemaEnv(cwd);
24
29
  info("codegen: disabled for this project; reusing an installed binding store");
@@ -38,5 +43,10 @@ const codegen = defineCommand({
38
43
  }
39
44
  },
40
45
  });
46
+ const checkForce = (isDisabled, isForced) => {
47
+ if (isDisabled && isForced) {
48
+ throw new Error(FORCED_WHILE_DISABLED_MESSAGE);
49
+ }
50
+ };
41
51
  export { codegen };
42
52
  //# sourceMappingURL=codegen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/commands/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,OAAO,GAAG,aAAa,CAAC;IAC1B,IAAI,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,+EAA+E;KAC/F;IACD,IAAI,EAAE;QACF,KAAK,EAAE;YACH,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,qFAAqF;YAClG,OAAO,EAAE,KAAK;SACjB;QACD,GAAG,MAAM;KACZ;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,MAAM,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1B,aAAa,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,wEAAwE,CAAC,CAAC;YAE/E,OAAO;QACX,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;YAErF,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,aAAa,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QAElE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;IACL,CAAC;CACJ,CAAC,CAAC;AAEH,OAAO,EAAE,OAAO,EAAE,CAAC","sourcesContent":["import { info } from \"@gtkx/utils\";\nimport { defineCommand } from \"citty\";\nimport { formatCodegenResult } from \"../codegen/report.js\";\nimport { ensureGenerated, isCodegenDisabled, runCodegen, syncSchemaEnv } from \"../codegen/run-codegen.js\";\nimport { cwdArg, resolveCwd } from \"../internal/entry-arg.js\";\n\nconst codegen = defineCommand({\n meta: {\n name: \"codegen\",\n description: \"Generate TypeScript bindings for the GIR libraries declared in gtkx.config.ts\",\n },\n args: {\n force: {\n type: \"boolean\",\n description: \"Wipe the generated store and regenerate unconditionally (recover a corrupted store)\",\n default: false,\n },\n ...cwdArg,\n },\n async run({ args }) {\n const cwd = resolveCwd(args);\n\n if (await isCodegenDisabled(cwd)) {\n await runCodegen({ cwd });\n syncSchemaEnv(cwd);\n info(\"codegen: disabled for this project; reusing an installed binding store\");\n\n return;\n }\n\n if (!args.force) {\n const isRan = await ensureGenerated(cwd);\n info(isRan ? \"codegen: regenerated stale bindings\" : \"codegen: bindings up to date\");\n\n return;\n }\n\n const startedAt = Date.now();\n const result = await runCodegen({ cwd, isForced: true });\n syncSchemaEnv(cwd);\n const lines = formatCodegenResult(result, Date.now() - startedAt);\n\n for (const line of lines) {\n info(line);\n }\n },\n});\n\nexport { codegen };\n"]}
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/commands/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,6BAA6B,GAC/B,oFAAoF;IACpF,iGAAiG;IACjG,6BAA6B,CAAC;AAElC,MAAM,OAAO,GAAG,aAAa,CAAC;IAC1B,IAAI,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,+EAA+E;KAC/F;IACD,IAAI,EAAE;QACF,KAAK,EAAE;YACH,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,qFAAqF;YAClG,OAAO,EAAE,KAAK;SACjB;QACD,GAAG,MAAM;KACZ;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChD,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1B,aAAa,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,wEAAwE,CAAC,CAAC;YAE/E,OAAO;QACX,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;YAErF,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,aAAa,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QAElE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;IACL,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,UAAmB,EAAE,QAAiB,EAAQ,EAAE;IAChE,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC","sourcesContent":["import { info } from \"@gtkx/utils\";\nimport { defineCommand } from \"citty\";\nimport { formatCodegenResult } from \"../codegen/report.js\";\nimport { ensureGenerated, isCodegenDisabled, runCodegen, syncSchemaEnv } from \"../codegen/run-codegen.js\";\nimport { cwdArg, resolveCwd } from \"../internal/entry-arg.js\";\n\nconst FORCED_WHILE_DISABLED_MESSAGE =\n \"codegen is disabled for this project, so --force has no store to regenerate here. \" +\n \"Remove `codegen: false` from gtkx.config.ts, or run `gtkx codegen --force` where the installed \" +\n \"binding store is generated.\";\n\nconst codegen = defineCommand({\n meta: {\n name: \"codegen\",\n description: \"Generate TypeScript bindings for the GIR libraries declared in gtkx.config.ts\",\n },\n args: {\n force: {\n type: \"boolean\",\n description: \"Wipe the generated store and regenerate unconditionally (recover a corrupted store)\",\n default: false,\n },\n ...cwdArg,\n },\n async run({ args }) {\n const cwd = resolveCwd(args);\n const isDisabled = await isCodegenDisabled(cwd);\n checkForce(isDisabled, args.force);\n\n if (isDisabled) {\n await runCodegen({ cwd });\n syncSchemaEnv(cwd);\n info(\"codegen: disabled for this project; reusing an installed binding store\");\n\n return;\n }\n\n if (!args.force) {\n const isRan = await ensureGenerated(cwd);\n info(isRan ? \"codegen: regenerated stale bindings\" : \"codegen: bindings up to date\");\n\n return;\n }\n\n const startedAt = Date.now();\n const result = await runCodegen({ cwd, isForced: true });\n syncSchemaEnv(cwd);\n const lines = formatCodegenResult(result, Date.now() - startedAt);\n\n for (const line of lines) {\n info(line);\n }\n },\n});\n\nconst checkForce = (isDisabled: boolean, isForced: boolean): void => {\n if (isDisabled && isForced) {\n throw new Error(FORCED_WHILE_DISABLED_MESSAGE);\n }\n};\n\nexport { codegen };\n"]}