@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
@@ -0,0 +1,102 @@
1
+ import * as GObject from "@gtkx/gi/gobject";
2
+ import * as Gtk from "@gtkx/gi/gtk";
3
+ import { propertyNotFoundError } from "@gtkx/mcp/internal";
4
+ import { getHandle, getInstanceType, TYPE_ENUM, TYPE_FLAGS, typeIsA, typeName, } from "@gtkx/runtime";
5
+ import { fromValue, getValueType } from "@gtkx/runtime/internal";
6
+ import { camelCase, errorMessage, kebabCase } from "@gtkx/utils";
7
+ const SCALAR_TYPES = new Set(["string", "number", "boolean"]);
8
+ const canonicalName = (name) => kebabCase(name).replaceAll("_", "-");
9
+ const widgetTypeName = (widget) => typeName(getInstanceType(widget)) ?? widget.constructor.name;
10
+ const byName = (left, right) => left.localeCompare(right);
11
+ const isScalar = (value) => value === null || SCALAR_TYPES.has(typeof value);
12
+ function prototypesFor(widget) {
13
+ const prototypes = [];
14
+ let prototype = Object.getPrototypeOf(widget);
15
+ while (prototype !== null && prototype !== Object.prototype) {
16
+ prototypes.push(prototype);
17
+ prototype = Object.getPrototypeOf(prototype);
18
+ }
19
+ return prototypes;
20
+ }
21
+ function getAccessor(widget, member) {
22
+ for (const prototype of prototypesFor(widget)) {
23
+ const descriptor = Object.getOwnPropertyDescriptor(prototype, member);
24
+ if (descriptor !== undefined) {
25
+ return descriptor;
26
+ }
27
+ }
28
+ return undefined;
29
+ }
30
+ function getReadableNames(prototype) {
31
+ const descriptors = Object.entries(Object.getOwnPropertyDescriptors(prototype));
32
+ return descriptors.filter(([, descriptor]) => descriptor.get !== undefined).map(([member]) => kebabCase(member));
33
+ }
34
+ function readablePropertyNames(widget) {
35
+ const names = prototypesFor(widget).flatMap((prototype) => getReadableNames(prototype));
36
+ return [...new Set(names)].toSorted(byName);
37
+ }
38
+ const requireReadableProperty = (widget, property) => {
39
+ if (getAccessor(widget, camelCase(property))?.get !== undefined) {
40
+ return;
41
+ }
42
+ throw propertyNotFoundError(widgetTypeName(widget), property, readablePropertyNames(widget));
43
+ };
44
+ function readNativeProperty(widget, property) {
45
+ const value = new GObject.Value();
46
+ widget.getProperty(property, value);
47
+ const handle = getHandle(value);
48
+ return { type: getValueType(handle), handle };
49
+ }
50
+ function describeObjectValue(value, registry) {
51
+ if (typeof value !== "object" || value === null) {
52
+ return { value: String(value) };
53
+ }
54
+ const name = typeName(getInstanceType(value)) ?? value.constructor.name;
55
+ if (!(value instanceof Gtk.Widget)) {
56
+ return { value: name };
57
+ }
58
+ registry.register(value);
59
+ return { value: name, widgetId: registry.getOrCreateId(value) };
60
+ }
61
+ function representValue(value, registry) {
62
+ if (isScalar(value)) {
63
+ return { value };
64
+ }
65
+ if (typeof value === "bigint") {
66
+ return { value: value.toString() };
67
+ }
68
+ if (Array.isArray(value)) {
69
+ return { value: value.map(String) };
70
+ }
71
+ return describeObjectValue(value, registry);
72
+ }
73
+ function representNativeProperty(native, registry) {
74
+ if (typeIsA(native.type, TYPE_ENUM)) {
75
+ return { value: GObject.enumToString(native.type, Number(fromValue(native.handle))) };
76
+ }
77
+ if (typeIsA(native.type, TYPE_FLAGS)) {
78
+ return { value: GObject.flagsToString(native.type, Number(fromValue(native.handle))) };
79
+ }
80
+ return representValue(fromValue(native.handle), registry);
81
+ }
82
+ function serializeProperty(widget, property, registry) {
83
+ const native = readNativeProperty(widget, property);
84
+ const type = typeName(native.type) ?? String(native.type);
85
+ try {
86
+ return { type, ...representNativeProperty(native, registry) };
87
+ }
88
+ catch (error) {
89
+ return { type, value: null, note: `cannot be represented over MCP: ${errorMessage(error)}` };
90
+ }
91
+ }
92
+ function readWidgetProperties(widget, properties, registry) {
93
+ const values = {};
94
+ for (const name of properties) {
95
+ const property = canonicalName(name);
96
+ requireReadableProperty(widget, property);
97
+ values[property] = serializeProperty(widget, property, registry);
98
+ }
99
+ return values;
100
+ }
101
+ export { readWidgetProperties };
102
+ //# sourceMappingURL=widget-properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-properties.js","sourceRoot":"","sources":["../../src/mcp/widget-properties.ts"],"names":[],"mappings":"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","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { propertyNotFoundError, type SerializedProperty } from \"@gtkx/mcp/internal\";\nimport {\n type ExternalObject,\n getHandle,\n getInstanceType,\n type Handle,\n TYPE_ENUM,\n TYPE_FLAGS,\n typeIsA,\n typeName,\n} from \"@gtkx/runtime\";\nimport { fromValue, getValueType } from \"@gtkx/runtime/internal\";\nimport { camelCase, errorMessage, kebabCase } from \"@gtkx/utils\";\nimport type { WidgetRegistry } from \"./widget-registry.js\";\n\ntype PropertyRepresentation = Omit<SerializedProperty, \"type\">;\ntype NativeProperty = { type: bigint; handle: ExternalObject<Handle> };\n\nconst SCALAR_TYPES: Set<string> = new Set([\"string\", \"number\", \"boolean\"]);\n\nconst canonicalName = (name: string): string => kebabCase(name).replaceAll(\"_\", \"-\");\nconst widgetTypeName = (widget: Gtk.Widget): string => typeName(getInstanceType(widget)) ?? widget.constructor.name;\nconst byName = (left: string, right: string): number => left.localeCompare(right);\n\nconst isScalar = (value: unknown): value is string | number | boolean | null =>\n value === null || SCALAR_TYPES.has(typeof value);\n\nfunction prototypesFor(widget: Gtk.Widget): object[] {\n const prototypes: object[] = [];\n let prototype = Object.getPrototypeOf(widget) as object | null;\n\n while (prototype !== null && prototype !== Object.prototype) {\n prototypes.push(prototype);\n prototype = Object.getPrototypeOf(prototype) as object | null;\n }\n\n return prototypes;\n}\n\nfunction getAccessor(widget: Gtk.Widget, member: string): PropertyDescriptor | undefined {\n for (const prototype of prototypesFor(widget)) {\n const descriptor = Object.getOwnPropertyDescriptor(prototype, member);\n\n if (descriptor !== undefined) {\n return descriptor;\n }\n }\n\n return undefined;\n}\n\nfunction getReadableNames(prototype: object): string[] {\n const descriptors = Object.entries(Object.getOwnPropertyDescriptors(prototype));\n\n return descriptors.filter(([, descriptor]) => descriptor.get !== undefined).map(([member]) => kebabCase(member));\n}\n\nfunction readablePropertyNames(widget: Gtk.Widget): string[] {\n const names = prototypesFor(widget).flatMap((prototype) => getReadableNames(prototype));\n\n return [...new Set(names)].toSorted(byName);\n}\n\nconst requireReadableProperty = (widget: Gtk.Widget, property: string): void => {\n if (getAccessor(widget, camelCase(property))?.get !== undefined) {\n return;\n }\n\n throw propertyNotFoundError(widgetTypeName(widget), property, readablePropertyNames(widget));\n};\n\nfunction readNativeProperty(widget: Gtk.Widget, property: string): NativeProperty {\n const value = new GObject.Value();\n widget.getProperty(property, value);\n const handle = getHandle(value);\n\n return { type: getValueType(handle), handle };\n}\n\nfunction describeObjectValue(value: unknown, registry: WidgetRegistry): PropertyRepresentation {\n if (typeof value !== \"object\" || value === null) {\n return { value: String(value) };\n }\n\n const name = typeName(getInstanceType(value)) ?? value.constructor.name;\n\n if (!(value instanceof Gtk.Widget)) {\n return { value: name };\n }\n\n registry.register(value);\n\n return { value: name, widgetId: registry.getOrCreateId(value) };\n}\n\nfunction representValue(value: unknown, registry: WidgetRegistry): PropertyRepresentation {\n if (isScalar(value)) {\n return { value };\n }\n\n if (typeof value === \"bigint\") {\n return { value: value.toString() };\n }\n\n if (Array.isArray(value)) {\n return { value: value.map(String) };\n }\n\n return describeObjectValue(value, registry);\n}\n\nfunction representNativeProperty(native: NativeProperty, registry: WidgetRegistry): PropertyRepresentation {\n if (typeIsA(native.type, TYPE_ENUM)) {\n return { value: GObject.enumToString(native.type, Number(fromValue(native.handle))) };\n }\n\n if (typeIsA(native.type, TYPE_FLAGS)) {\n return { value: GObject.flagsToString(native.type, Number(fromValue(native.handle))) };\n }\n\n return representValue(fromValue(native.handle), registry);\n}\n\nfunction serializeProperty(widget: Gtk.Widget, property: string, registry: WidgetRegistry): SerializedProperty {\n const native = readNativeProperty(widget, property);\n const type = typeName(native.type) ?? String(native.type);\n\n try {\n return { type, ...representNativeProperty(native, registry) };\n } catch (error) {\n return { type, value: null, note: `cannot be represented over MCP: ${errorMessage(error)}` };\n }\n}\n\nfunction readWidgetProperties(\n widget: Gtk.Widget,\n properties: string[],\n registry: WidgetRegistry,\n): Record<string, SerializedProperty> {\n const values: Record<string, SerializedProperty> = {};\n\n for (const name of properties) {\n const property = canonicalName(name);\n requireReadableProperty(widget, property);\n values[property] = serializeProperty(widget, property, registry);\n }\n\n return values;\n}\n\nexport { readWidgetProperties };\n"]}
@@ -6,6 +6,7 @@ declare function createModuleRegistration(moduleId: string): {
6
6
  $RefreshSig$: typeof RefreshRuntime.createSignatureFunctionForTransform;
7
7
  };
8
8
  declare function isRefreshBoundary(moduleExports: Record<string, unknown>): boolean;
9
+ declare const staleExportName: (previous: Record<string, unknown>, current: Record<string, unknown>) => string | null;
9
10
  declare function performRefresh(): void;
10
- export { createModuleRegistration, isRefreshBoundary, performRefresh };
11
+ export { createModuleRegistration, isRefreshBoundary, performRefresh, staleExportName };
11
12
  //# sourceMappingURL=refresh-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-runtime.d.ts","sourceRoot":"","sources":["../src/refresh-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,sBAAsB,CAAC;AAE9B,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAErD,iBAAS,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACjD,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,OAAO,cAAc,CAAC,mCAAmC,CAAC;CAC3E,CAOA;AAeD,iBAAS,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAU1E;AAED,iBAAS,cAAc,IAAI,IAAI,CAE9B;AAED,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"refresh-runtime.d.ts","sourceRoot":"","sources":["../src/refresh-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,cAA+B,MAAM,uBAAuB,CAAC;AACpE,OAAO,sBAAsB,CAAC;AAE9B,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAOrD,iBAAS,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACjD,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,OAAO,cAAc,CAAC,mCAAmC,CAAC;CAC3E,CAOA;AAeD,iBAAS,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAU1E;AA+BD,QAAA,MAAM,eAAe,GAAI,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,GAAG,IAUvG,CAAC;AAEF,iBAAS,cAAc,IAAI,IAAI,CAE9B;AAED,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import RefreshRuntime from "react-refresh/runtime";
1
+ import RefreshRuntime, {} from "react-refresh/runtime";
2
2
  import "./refresh-globals.js";
3
3
  function createModuleRegistration(moduleId) {
4
4
  return {
@@ -26,8 +26,38 @@ function isRefreshBoundary(moduleExports) {
26
26
  }
27
27
  return Object.keys(moduleExports).some((k) => k !== "__esModule");
28
28
  }
29
+ const exportedFamilies = (moduleExports) => {
30
+ const families = new Set();
31
+ for (const key in moduleExports) {
32
+ const family = RefreshRuntime.getFamilyByType(moduleExports[key]);
33
+ if (family) {
34
+ families.add(family);
35
+ }
36
+ }
37
+ return families;
38
+ };
39
+ const patchedExports = (moduleExports) => ({
40
+ values: new Set(Object.values(moduleExports)),
41
+ families: exportedFamilies(moduleExports),
42
+ });
43
+ const isPatchedExport = (patched, value) => {
44
+ if (patched.values.has(value)) {
45
+ return true;
46
+ }
47
+ const family = RefreshRuntime.getFamilyByType(value);
48
+ return family !== undefined && patched.families.has(family);
49
+ };
50
+ const staleExportName = (previous, current) => {
51
+ const patched = patchedExports(current);
52
+ for (const key in previous) {
53
+ if (!isPatchedExport(patched, previous[key])) {
54
+ return key;
55
+ }
56
+ }
57
+ return null;
58
+ };
29
59
  function performRefresh() {
30
60
  RefreshRuntime.performReactRefresh();
31
61
  }
32
- export { createModuleRegistration, isRefreshBoundary, performRefresh };
62
+ export { createModuleRegistration, isRefreshBoundary, performRefresh, staleExportName };
33
63
  //# sourceMappingURL=refresh-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-runtime.js","sourceRoot":"","sources":["../src/refresh-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,sBAAsB,CAAC;AAI9B,SAAS,wBAAwB,CAAC,QAAgB;IAI9C,OAAO;QACH,YAAY,EAAE,CAAC,IAAmB,EAAE,EAAU,EAAE,EAAE;YAC9C,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,YAAY,EAAE,cAAc,CAAC,mCAAmC;KACnE,CAAC;AACN,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,KAAc,EAAW,EAAE,CAC/D,GAAG,KAAK,YAAY,IAAI,cAAc,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAExE,MAAM,uBAAuB,GAAG,CAAC,aAAsC,EAAW,EAAE;IAChF,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,SAAS,iBAAiB,CAAC,aAAsC;IAC7D,IAAI,cAAc,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,cAAc;IACnB,cAAc,CAAC,mBAAmB,EAAE,CAAC;AACzC,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import RefreshRuntime from \"react-refresh/runtime\";\nimport \"./refresh-globals.js\";\n\ntype ComponentType = (...args: unknown[]) => unknown;\n\nfunction createModuleRegistration(moduleId: string): {\n $RefreshReg$: (type: ComponentType, id: string) => void;\n $RefreshSig$: typeof RefreshRuntime.createSignatureFunctionForTransform;\n} {\n return {\n $RefreshReg$: (type: ComponentType, id: string) => {\n RefreshRuntime.register(type, `${moduleId} ${id}`);\n },\n $RefreshSig$: RefreshRuntime.createSignatureFunctionForTransform,\n };\n}\n\nconst isComponentExport = (key: string, value: unknown): boolean =>\n key === \"__esModule\" || RefreshRuntime.isLikelyComponentType(value);\n\nconst areAllExportsComponents = (moduleExports: Record<string, unknown>): boolean => {\n for (const key in moduleExports) {\n if (!isComponentExport(key, moduleExports[key])) {\n return false;\n }\n }\n\n return true;\n};\n\nfunction isRefreshBoundary(moduleExports: Record<string, unknown>): boolean {\n if (RefreshRuntime.isLikelyComponentType(moduleExports)) {\n return true;\n }\n\n if (!areAllExportsComponents(moduleExports)) {\n return false;\n }\n\n return Object.keys(moduleExports).some((k) => k !== \"__esModule\");\n}\n\nfunction performRefresh(): void {\n RefreshRuntime.performReactRefresh();\n}\n\nexport { createModuleRegistration, isRefreshBoundary, performRefresh };\n"]}
1
+ {"version":3,"file":"refresh-runtime.js","sourceRoot":"","sources":["../src/refresh-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import RefreshRuntime, { type Family } from \"react-refresh/runtime\";\nimport \"./refresh-globals.js\";\n\ntype ComponentType = (...args: unknown[]) => unknown;\n\ntype PatchedExports = {\n values: Set<unknown>;\n families: Set<Family>;\n};\n\nfunction createModuleRegistration(moduleId: string): {\n $RefreshReg$: (type: ComponentType, id: string) => void;\n $RefreshSig$: typeof RefreshRuntime.createSignatureFunctionForTransform;\n} {\n return {\n $RefreshReg$: (type: ComponentType, id: string) => {\n RefreshRuntime.register(type, `${moduleId} ${id}`);\n },\n $RefreshSig$: RefreshRuntime.createSignatureFunctionForTransform,\n };\n}\n\nconst isComponentExport = (key: string, value: unknown): boolean =>\n key === \"__esModule\" || RefreshRuntime.isLikelyComponentType(value);\n\nconst areAllExportsComponents = (moduleExports: Record<string, unknown>): boolean => {\n for (const key in moduleExports) {\n if (!isComponentExport(key, moduleExports[key])) {\n return false;\n }\n }\n\n return true;\n};\n\nfunction isRefreshBoundary(moduleExports: Record<string, unknown>): boolean {\n if (RefreshRuntime.isLikelyComponentType(moduleExports)) {\n return true;\n }\n\n if (!areAllExportsComponents(moduleExports)) {\n return false;\n }\n\n return Object.keys(moduleExports).some((k) => k !== \"__esModule\");\n}\n\nconst exportedFamilies = (moduleExports: Record<string, unknown>): Set<Family> => {\n const families: Set<Family> = new Set();\n\n for (const key in moduleExports) {\n const family = RefreshRuntime.getFamilyByType(moduleExports[key]);\n\n if (family) {\n families.add(family);\n }\n }\n\n return families;\n};\n\nconst patchedExports = (moduleExports: Record<string, unknown>): PatchedExports => ({\n values: new Set(Object.values(moduleExports)),\n families: exportedFamilies(moduleExports),\n});\n\nconst isPatchedExport = (patched: PatchedExports, value: unknown): boolean => {\n if (patched.values.has(value)) {\n return true;\n }\n\n const family = RefreshRuntime.getFamilyByType(value);\n\n return family !== undefined && patched.families.has(family);\n};\n\nconst staleExportName = (previous: Record<string, unknown>, current: Record<string, unknown>): string | null => {\n const patched = patchedExports(current);\n\n for (const key in previous) {\n if (!isPatchedExport(patched, previous[key])) {\n return key;\n }\n }\n\n return null;\n};\n\nfunction performRefresh(): void {\n RefreshRuntime.performReactRefresh();\n}\n\nexport { createModuleRegistration, isRefreshBoundary, performRefresh, staleExportName };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/settings/compile.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,IAYrC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/settings/compile.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,IAWrC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,21 +1,17 @@
1
- import { formatChildProcessError } from "@gtkx/utils";
2
- import { execFileSync } from "node:child_process";
3
- import { resolveCliTool } from "../internal/resolve-cli-tool.js";
1
+ import { runCliTool } from "../internal/run-cli-tool.js";
4
2
  const SCHEMA_COMPILER = "glib-compile-schemas";
5
3
  const SCHEMA_COMPILE_TIMEOUT_MS = 30_000;
6
4
  const compileSchemas = (dir) => {
7
- try {
8
- execFileSync(resolveCliTool(SCHEMA_COMPILER), ["--strict", dir], {
5
+ runCliTool({
6
+ tool: SCHEMA_COMPILER,
7
+ args: ["--strict", dir],
8
+ target: dir,
9
+ options: {
9
10
  stdio: ["ignore", "pipe", "pipe"],
10
11
  timeout: SCHEMA_COMPILE_TIMEOUT_MS,
11
12
  encoding: "utf8",
12
- });
13
- }
14
- catch (error) {
15
- const details = formatChildProcessError(error);
16
- const suffix = details ? `:\n${details}` : "";
17
- throw new Error(`glib-compile-schemas failed for ${dir}${suffix}`, { cause: error });
18
- }
13
+ },
14
+ });
19
15
  };
20
16
  export { compileSchemas };
21
17
  //# sourceMappingURL=compile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/settings/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAC/C,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEzC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAQ,EAAE;IACzC,IAAI,CAAC;QACD,YAAY,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;YAC7D,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,yBAAyB;YAClC,QAAQ,EAAE,MAAM;SACnB,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,GAAG,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACzF,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import { formatChildProcessError } from \"@gtkx/utils\";\nimport { execFileSync } from \"node:child_process\";\nimport { resolveCliTool } from \"../internal/resolve-cli-tool.js\";\n\nconst SCHEMA_COMPILER = \"glib-compile-schemas\";\nconst SCHEMA_COMPILE_TIMEOUT_MS = 30_000;\n\nconst compileSchemas = (dir: string): void => {\n try {\n execFileSync(resolveCliTool(SCHEMA_COMPILER), [\"--strict\", dir], {\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n timeout: SCHEMA_COMPILE_TIMEOUT_MS,\n encoding: \"utf8\",\n });\n } catch (error) {\n const details = formatChildProcessError(error);\n const suffix = details ? `:\\n${details}` : \"\";\n throw new Error(`glib-compile-schemas failed for ${dir}${suffix}`, { cause: error });\n }\n};\n\nexport { compileSchemas };\n"]}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/settings/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAC/C,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEzC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAQ,EAAE;IACzC,UAAU,CAAC;QACP,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC;QACvB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE;YACL,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,yBAAyB;YAClC,QAAQ,EAAE,MAAM;SACnB;KACJ,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import { runCliTool } from \"../internal/run-cli-tool.js\";\n\nconst SCHEMA_COMPILER = \"glib-compile-schemas\";\nconst SCHEMA_COMPILE_TIMEOUT_MS = 30_000;\n\nconst compileSchemas = (dir: string): void => {\n runCliTool({\n tool: SCHEMA_COMPILER,\n args: [\"--strict\", dir],\n target: dir,\n options: {\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n timeout: SCHEMA_COMPILE_TIMEOUT_MS,\n encoding: \"utf8\",\n },\n });\n};\n\nexport { compileSchemas };\n"]}
@@ -7,7 +7,6 @@ declare const prependSchemaDir: (dir: string, existing: string | undefined) => s
7
7
  declare const stageSchema: (dir: string, filePath: string) => void;
8
8
  declare const findSchemaFiles: (dataDir: string) => string[];
9
9
  declare const stageAndCompileProjectSchemas: (root: string, dataDir: string | null) => string | null;
10
- declare const schemaEnvPath: (rootDir: string) => string;
11
10
  declare const emitSchemaEnv: (rootDir: string, dataDir: string | null) => SchemaEnvResult;
12
- export { SCHEMA_SUFFIX, prependSchemaDir, stageSchema, findSchemaFiles, stageAndCompileProjectSchemas, schemaEnvPath, emitSchemaEnv, };
11
+ export { SCHEMA_SUFFIX, prependSchemaDir, stageSchema, findSchemaFiles, stageAndCompileProjectSchemas, emitSchemaEnv, };
13
12
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/settings/schema.ts"],"names":[],"mappings":"AAWA,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,aAAa,iBAAiB,CAAC;AAGrC,QAAA,MAAM,gBAAgB,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,GAAG,SAAS,KAAG,MAUrE,CAAC;AAKF,QAAA,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,KAAG,IAEpD,CAAC;AA6BF,QAAA,MAAM,eAAe,GAAI,SAAS,MAAM,KAAG,MAAM,EAKhD,CAAC;AAEF,QAAA,MAAM,6BAA6B,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IAwBtF,CAAC;AAEF,QAAA,MAAM,aAAa,GAAI,SAAS,MAAM,KAAG,MAA4D,CAAC;AAmDtG,QAAA,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,SAAS,MAAM,GAAG,IAAI,KAAG,eAShE,CAAC;AAEF,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,6BAA6B,EAC7B,aAAa,EACb,aAAa,GAChB,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/settings/schema.ts"],"names":[],"mappings":"AAWA,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,aAAa,iBAAiB,CAAC;AAGrC,QAAA,MAAM,gBAAgB,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,GAAG,SAAS,KAAG,MAUrE,CAAC;AAKF,QAAA,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,KAAG,IAEpD,CAAC;AA6BF,QAAA,MAAM,eAAe,GAAI,SAAS,MAAM,KAAG,MAAM,EAKhD,CAAC;AAEF,QAAA,MAAM,6BAA6B,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IAwBtF,CAAC;AAqDF,QAAA,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,SAAS,MAAM,GAAG,IAAI,KAAG,eAShE,CAAC;AAEF,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,6BAA6B,EAC7B,aAAa,GAChB,CAAC"}
@@ -117,5 +117,5 @@ const emitSchemaEnv = (rootDir, dataDir) => {
117
117
  const isWritten = didWriteChanges(path, content);
118
118
  return { path, isWritten };
119
119
  };
120
- export { SCHEMA_SUFFIX, prependSchemaDir, stageSchema, findSchemaFiles, stageAndCompileProjectSchemas, schemaEnvPath, emitSchemaEnv, };
120
+ export { SCHEMA_SUFFIX, prependSchemaDir, stageSchema, findSchemaFiles, stageAndCompileProjectSchemas, emitSchemaEnv, };
121
121
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/settings/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStrings, warn } from \"@gtkx/utils\";\nimport { createHash } from \"node:crypto\";\nimport { copyFileSync, type Dirent, mkdirSync, mkdtempSync, readdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { dirname, join, relative } from \"node:path\";\nimport { DATA_IMPORT_PREFIX } from \"../internal/data-dir.js\";\nimport { removeTempDir } from \"../internal/staging-dir.js\";\nimport { compileSchemas } from \"./compile.js\";\nimport { type ParsedSchemaFile, parseSchemaXml, SchemaParseError } from \"./parser.js\";\nimport { renderEnvModule } from \"./render.js\";\n\ntype SchemaEnvResult = {\n path: string;\n isWritten: boolean;\n};\n\nconst SCHEMA_SUFFIX = \".gschema.xml\";\nconst STAGED_NAME_LENGTH = 16;\n\nconst prependSchemaDir = (dir: string, existing: string | undefined): string => {\n if (existing === undefined || existing.length === 0) {\n return dir;\n }\n\n if (existing.split(\":\").includes(dir)) {\n return existing;\n }\n\n return `${dir}:${existing}`;\n};\n\nconst stagedSchemaName = (filePath: string): string =>\n `${createHash(\"sha1\").update(filePath).digest(\"hex\").slice(0, STAGED_NAME_LENGTH)}${SCHEMA_SUFFIX}`;\n\nconst stageSchema = (dir: string, filePath: string): void => {\n copyFileSync(filePath, join(dir, stagedSchemaName(filePath)));\n};\n\nconst toForwardSlashes = (value: string): string => value.replaceAll(/[/\\\\]/g, \"/\");\n\nconst getModuleSpecifier = (dataDirAbs: string, filePath: string): string =>\n `${DATA_IMPORT_PREFIX}/${toForwardSlashes(relative(dataDirAbs, filePath))}`;\n\nconst readVisibleEntries = (dir: string): Dirent[] => {\n try {\n return readdirSync(dir, { withFileTypes: true }).filter((entry) => !entry.name.startsWith(\".\"));\n } catch {\n return [];\n }\n};\n\nconst isSchemaFile = (entry: Dirent): boolean => entry.isFile() && entry.name.endsWith(SCHEMA_SUFFIX);\n\nconst collectSchemaFiles = (dir: string, found: string[]): void => {\n for (const entry of readVisibleEntries(dir)) {\n const full = join(dir, entry.name);\n\n if (entry.isDirectory()) {\n collectSchemaFiles(full, found);\n } else if (isSchemaFile(entry)) {\n found.push(full);\n }\n }\n};\n\nconst findSchemaFiles = (dataDir: string): string[] => {\n const found: string[] = [];\n collectSchemaFiles(dataDir, found);\n\n return sortStrings(found);\n};\n\nconst stageAndCompileProjectSchemas = (root: string, dataDir: string | null): string | null => {\n if (dataDir === null) {\n return null;\n }\n\n const schemaFiles = findSchemaFiles(join(root, dataDir));\n\n if (schemaFiles.length === 0) {\n return null;\n }\n\n const dir = mkdtempSync(join(tmpdir(), \"gtkx-schemas-\"));\n\n for (const filePath of schemaFiles) {\n stageSchema(dir, filePath);\n }\n\n compileSchemas(dir);\n\n process.once(\"exit\", () => {\n removeTempDir(dir);\n });\n\n return dir;\n};\n\nconst schemaEnvPath = (rootDir: string): string => join(rootDir, \"node_modules\", \".gtkx\", \"env.d.ts\");\n\nconst parseSchemaFileOrWarn = (filePath: string, dataDirAbs: string): ParsedSchemaFile | null => {\n const specifier = getModuleSpecifier(dataDirAbs, filePath);\n\n try {\n return parseSchemaXml(readFileSync(filePath, \"utf8\"), specifier);\n } catch (error) {\n if (!(error instanceof SchemaParseError)) {\n throw error;\n }\n\n warn(`Skipping ${filePath} in schema type generation: ${error.message}`);\n\n return null;\n }\n};\n\nconst parseProjectSchemas = (schemaFiles: string[], dataDirAbs: string): ParsedSchemaFile[] => {\n const parsed: ParsedSchemaFile[] = [];\n\n for (const filePath of schemaFiles) {\n const result = parseSchemaFileOrWarn(filePath, dataDirAbs);\n\n if (result !== null) {\n parsed.push(result);\n }\n }\n\n return parsed;\n};\n\nconst readFileOrNull = (path: string): string | null => {\n try {\n return readFileSync(path, \"utf8\");\n } catch {\n return null;\n }\n};\n\nconst didWriteChanges = (path: string, content: string): boolean => {\n if (readFileOrNull(path) === content) {\n return false;\n }\n\n mkdirSync(dirname(path), { recursive: true });\n writeFileSync(path, content);\n\n return true;\n};\n\nconst emitSchemaEnv = (rootDir: string, dataDir: string | null): SchemaEnvResult => {\n const dataDirAbs = dataDir === null ? null : join(rootDir, dataDir);\n const schemaFiles = dataDirAbs === null ? [] : findSchemaFiles(dataDirAbs);\n const parsed = dataDirAbs === null ? [] : parseProjectSchemas(schemaFiles, dataDirAbs);\n const content = renderEnvModule(parsed);\n const path = schemaEnvPath(rootDir);\n const isWritten = didWriteChanges(path, content);\n\n return { path, isWritten };\n};\n\nexport {\n SCHEMA_SUFFIX,\n prependSchemaDir,\n stageSchema,\n findSchemaFiles,\n stageAndCompileProjectSchemas,\n schemaEnvPath,\n emitSchemaEnv,\n};\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/settings/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStrings, warn } from \"@gtkx/utils\";\nimport { createHash } from \"node:crypto\";\nimport { copyFileSync, type Dirent, mkdirSync, mkdtempSync, readdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { dirname, join, relative } from \"node:path\";\nimport { DATA_IMPORT_PREFIX } from \"../internal/data-dir.js\";\nimport { removeTempDir } from \"../internal/staging-dir.js\";\nimport { compileSchemas } from \"./compile.js\";\nimport { type ParsedSchemaFile, parseSchemaXml, SchemaParseError } from \"./parser.js\";\nimport { renderEnvModule } from \"./render.js\";\n\ntype SchemaEnvResult = {\n path: string;\n isWritten: boolean;\n};\n\nconst SCHEMA_SUFFIX = \".gschema.xml\";\nconst STAGED_NAME_LENGTH = 16;\n\nconst prependSchemaDir = (dir: string, existing: string | undefined): string => {\n if (existing === undefined || existing.length === 0) {\n return dir;\n }\n\n if (existing.split(\":\").includes(dir)) {\n return existing;\n }\n\n return `${dir}:${existing}`;\n};\n\nconst stagedSchemaName = (filePath: string): string =>\n `${createHash(\"sha1\").update(filePath).digest(\"hex\").slice(0, STAGED_NAME_LENGTH)}${SCHEMA_SUFFIX}`;\n\nconst stageSchema = (dir: string, filePath: string): void => {\n copyFileSync(filePath, join(dir, stagedSchemaName(filePath)));\n};\n\nconst toForwardSlashes = (value: string): string => value.replaceAll(/[/\\\\]/g, \"/\");\n\nconst getModuleSpecifier = (dataDirAbs: string, filePath: string): string =>\n `${DATA_IMPORT_PREFIX}/${toForwardSlashes(relative(dataDirAbs, filePath))}`;\n\nconst readVisibleEntries = (dir: string): Dirent[] => {\n try {\n return readdirSync(dir, { withFileTypes: true }).filter((entry) => !entry.name.startsWith(\".\"));\n } catch {\n return [];\n }\n};\n\nconst isSchemaFile = (entry: Dirent): boolean => entry.isFile() && entry.name.endsWith(SCHEMA_SUFFIX);\n\nconst collectSchemaFiles = (dir: string, found: string[]): void => {\n for (const entry of readVisibleEntries(dir)) {\n const full = join(dir, entry.name);\n\n if (entry.isDirectory()) {\n collectSchemaFiles(full, found);\n } else if (isSchemaFile(entry)) {\n found.push(full);\n }\n }\n};\n\nconst findSchemaFiles = (dataDir: string): string[] => {\n const found: string[] = [];\n collectSchemaFiles(dataDir, found);\n\n return sortStrings(found);\n};\n\nconst stageAndCompileProjectSchemas = (root: string, dataDir: string | null): string | null => {\n if (dataDir === null) {\n return null;\n }\n\n const schemaFiles = findSchemaFiles(join(root, dataDir));\n\n if (schemaFiles.length === 0) {\n return null;\n }\n\n const dir = mkdtempSync(join(tmpdir(), \"gtkx-schemas-\"));\n\n for (const filePath of schemaFiles) {\n stageSchema(dir, filePath);\n }\n\n compileSchemas(dir);\n\n process.once(\"exit\", () => {\n removeTempDir(dir);\n });\n\n return dir;\n};\n\nconst schemaEnvPath = (rootDir: string): string => join(rootDir, \"node_modules\", \".gtkx\", \"env.d.ts\");\n\nconst parseSchemaFileOrWarn = (filePath: string, dataDirAbs: string): ParsedSchemaFile | null => {\n const specifier = getModuleSpecifier(dataDirAbs, filePath);\n\n try {\n return parseSchemaXml(readFileSync(filePath, \"utf8\"), specifier);\n } catch (error) {\n if (!(error instanceof SchemaParseError)) {\n throw error;\n }\n\n warn(`Skipping ${filePath} in schema type generation: ${error.message}`);\n\n return null;\n }\n};\n\nconst parseProjectSchemas = (schemaFiles: string[], dataDirAbs: string): ParsedSchemaFile[] => {\n const parsed: ParsedSchemaFile[] = [];\n\n for (const filePath of schemaFiles) {\n const result = parseSchemaFileOrWarn(filePath, dataDirAbs);\n\n if (result !== null) {\n parsed.push(result);\n }\n }\n\n return parsed;\n};\n\nconst readFileOrNull = (path: string): string | null => {\n try {\n return readFileSync(path, \"utf8\");\n } catch {\n return null;\n }\n};\n\nconst didWriteChanges = (path: string, content: string): boolean => {\n if (readFileOrNull(path) === content) {\n return false;\n }\n\n mkdirSync(dirname(path), { recursive: true });\n writeFileSync(path, content);\n\n return true;\n};\n\nconst emitSchemaEnv = (rootDir: string, dataDir: string | null): SchemaEnvResult => {\n const dataDirAbs = dataDir === null ? null : join(rootDir, dataDir);\n const schemaFiles = dataDirAbs === null ? [] : findSchemaFiles(dataDirAbs);\n const parsed = dataDirAbs === null ? [] : parseProjectSchemas(schemaFiles, dataDirAbs);\n const content = renderEnvModule(parsed);\n const path = schemaEnvPath(rootDir);\n const isWritten = didWriteChanges(path, content);\n\n return { path, isWritten };\n};\n\nexport {\n SCHEMA_SUFFIX,\n prependSchemaDir,\n stageSchema,\n findSchemaFiles,\n stageAndCompileProjectSchemas,\n emitSchemaEnv,\n};\n"]}
@@ -0,0 +1,9 @@
1
+ type AssetEmitter = {
2
+ emitFile: (file: {
3
+ type: "asset";
4
+ fileName: string;
5
+ source: Buffer;
6
+ }) => void;
7
+ };
8
+ export { type AssetEmitter };
9
+ //# sourceMappingURL=asset-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-emitter.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/asset-emitter.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GAAG;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACjF,CAAC;AAEF,OAAO,EAAE,KAAK,YAAY,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=asset-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-emitter.js","sourceRoot":"","sources":["../../src/vite-plugins/asset-emitter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,CAAC","sourcesContent":["type AssetEmitter = {\n emitFile: (file: { type: \"asset\"; fileName: string; source: Buffer }) => void;\n};\n\nexport { type AssetEmitter };\n"]}
@@ -1,5 +1,5 @@
1
- declare const ASSET_EXTENSIONS: string[];
2
1
  declare const ASSET_RE: RegExp;
3
2
  declare const ASSET_PATH_RE: RegExp;
4
- export { ASSET_EXTENSIONS, ASSET_RE, ASSET_PATH_RE };
3
+ declare const ASSET_MENTION_RE: RegExp;
4
+ export { ASSET_MENTION_RE, ASSET_PATH_RE, ASSET_RE };
5
5
  //# sourceMappingURL=asset-extensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"asset-extensions.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/asset-extensions.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gBAAgB,UAuBrB,CAAC;AAEF,QAAA,MAAM,QAAQ,QAAoE,CAAC;AACnF,QAAA,MAAM,aAAa,QAA6E,CAAC;AAEjG,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"asset-extensions.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/asset-extensions.ts"],"names":[],"mappings":"AAyBA,QAAA,MAAM,QAAQ,QAAoE,CAAC;AACnF,QAAA,MAAM,aAAa,QAA6E,CAAC;AACjG,QAAA,MAAM,gBAAgB,QAAmE,CAAC;AAE1F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC"}
@@ -24,5 +24,6 @@ const ASSET_EXTENSIONS = [
24
24
  ];
25
25
  const ASSET_RE = new RegExp(String.raw `\.(?:${ASSET_EXTENSIONS.join("|")})$`, "i");
26
26
  const ASSET_PATH_RE = new RegExp(String.raw `\.(?:${ASSET_EXTENSIONS.join("|")})(?:\?.*)?$`, "i");
27
- export { ASSET_EXTENSIONS, ASSET_RE, ASSET_PATH_RE };
27
+ const ASSET_MENTION_RE = new RegExp(String.raw `\.(?:${ASSET_EXTENSIONS.join("|")})`, "i");
28
+ export { ASSET_MENTION_RE, ASSET_PATH_RE, ASSET_RE };
28
29
  //# sourceMappingURL=asset-extensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"asset-extensions.js","sourceRoot":"","sources":["../../src/vite-plugins/asset-extensions.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG;IACrB,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;CACR,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,QAAQ,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnF,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,QAAQ,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AAEjG,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC","sourcesContent":["const ASSET_EXTENSIONS = [\n \"png\",\n \"jpg\",\n \"jpeg\",\n \"gif\",\n \"svg\",\n \"webp\",\n \"webm\",\n \"mp4\",\n \"ogg\",\n \"mp3\",\n \"wav\",\n \"flac\",\n \"aac\",\n \"woff\",\n \"woff2\",\n \"eot\",\n \"ttf\",\n \"otf\",\n \"ico\",\n \"avif\",\n \"data\",\n \"gpa\",\n];\n\nconst ASSET_RE = new RegExp(String.raw`\\.(?:${ASSET_EXTENSIONS.join(\"|\")})$`, \"i\");\nconst ASSET_PATH_RE = new RegExp(String.raw`\\.(?:${ASSET_EXTENSIONS.join(\"|\")})(?:\\?.*)?$`, \"i\");\n\nexport { ASSET_EXTENSIONS, ASSET_RE, ASSET_PATH_RE };\n"]}
1
+ {"version":3,"file":"asset-extensions.js","sourceRoot":"","sources":["../../src/vite-plugins/asset-extensions.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG;IACrB,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;CACR,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,QAAQ,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnF,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,QAAQ,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACjG,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,QAAQ,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE1F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC","sourcesContent":["const ASSET_EXTENSIONS = [\n \"png\",\n \"jpg\",\n \"jpeg\",\n \"gif\",\n \"svg\",\n \"webp\",\n \"webm\",\n \"mp4\",\n \"ogg\",\n \"mp3\",\n \"wav\",\n \"flac\",\n \"aac\",\n \"woff\",\n \"woff2\",\n \"eot\",\n \"ttf\",\n \"otf\",\n \"ico\",\n \"avif\",\n \"data\",\n \"gpa\",\n];\n\nconst ASSET_RE = new RegExp(String.raw`\\.(?:${ASSET_EXTENSIONS.join(\"|\")})$`, \"i\");\nconst ASSET_PATH_RE = new RegExp(String.raw`\\.(?:${ASSET_EXTENSIONS.join(\"|\")})(?:\\?.*)?$`, \"i\");\nconst ASSET_MENTION_RE = new RegExp(String.raw`\\.(?:${ASSET_EXTENSIONS.join(\"|\")})`, \"i\");\n\nexport { ASSET_MENTION_RE, ASSET_PATH_RE, ASSET_RE };\n"]}
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from "vite";
2
+ declare function gtkxAssetImports(): Plugin;
3
+ export { gtkxAssetImports };
4
+ //# sourceMappingURL=asset-imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-imports.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/asset-imports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8B,MAAM,EAAE,MAAM,MAAM,CAAC;AA0H/D,iBAAS,gBAAgB,IAAI,MAAM,CASlC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,88 @@
1
+ import { extname } from "node:path";
2
+ import { parseSync } from "vite";
3
+ import { ASSET_MENTION_RE } from "./asset-extensions.js";
4
+ import { DATA_PREFIX, isAssetSpecifier, isDataAsset } from "./asset-specifier.js";
5
+ import { RESOURCE_PATH_EXPORT } from "./resource-shared.js";
6
+ import { stripQuery } from "./strip-query.js";
7
+ const SOURCE_LANGUAGES = new Map([
8
+ [".cjs", "jsx"],
9
+ [".cts", "ts"],
10
+ [".js", "jsx"],
11
+ [".jsx", "jsx"],
12
+ [".mjs", "jsx"],
13
+ [".mts", "ts"],
14
+ [".ts", "ts"],
15
+ [".tsx", "tsx"],
16
+ ]);
17
+ const NODE_MODULES = /(?:^|\/)node_modules\//;
18
+ const VIRTUAL_PREFIX = "\0";
19
+ const DEFAULT_BINDING = "default";
20
+ const RESOURCE_BINDING = JSON.stringify(RESOURCE_PATH_EXPORT);
21
+ const DATA_IMPORT_EXAMPLE = `"${DATA_PREFIX}<path>"`;
22
+ const URL_FALLBACK = ", or import the default for the asset URL.";
23
+ const BUNDLE_ADVICE = `An asset staged into the GResource bundle exports ${RESOURCE_BINDING} and a "resource://" default, and ` +
24
+ "nothing else.";
25
+ const QUERY_ADVICE = "A query suffix hands the import to the Vite asset pipeline instead of the GResource bundle; drop the " +
26
+ `query to keep ${RESOURCE_BINDING}${URL_FALLBACK}`;
27
+ const RELATIVE_ADVICE = `Only assets imported through "${DATA_PREFIX}" are staged into the GResource bundle and export ` +
28
+ `${RESOURCE_BINDING}; move the file under the data directory and import it as ` +
29
+ `${DATA_IMPORT_EXAMPLE}${URL_FALLBACK}`;
30
+ const boundName = (entry) => {
31
+ const { name } = entry.importName;
32
+ if (name === null || name === DEFAULT_BINDING || entry.isType) {
33
+ return null;
34
+ }
35
+ return name;
36
+ };
37
+ const importBindings = (statement) => statement.entries
38
+ .map((entry) => boundName(entry))
39
+ .filter((name) => name !== null)
40
+ .map((name) => ({ name, source: statement.moduleRequest.value }));
41
+ const exportBinding = (entry) => {
42
+ const name = boundName(entry);
43
+ const source = entry.moduleRequest?.value;
44
+ return name === null || source === undefined ? null : { name, source };
45
+ };
46
+ const exportBindings = (statement) => statement.entries.map((entry) => exportBinding(entry)).filter((binding) => binding !== null);
47
+ const bindings = (parsed) => [
48
+ ...parsed.staticImports.flatMap((statement) => importBindings(statement)),
49
+ ...parsed.staticExports.flatMap((statement) => exportBindings(statement)),
50
+ ];
51
+ const isBacked = ({ name, source }) => isDataAsset(source) && name === RESOURCE_PATH_EXPORT;
52
+ const unbackedBinding = (parsed) => bindings(parsed).find((binding) => isAssetSpecifier(binding.source) && !isBacked(binding));
53
+ const bundleAdvice = (source) => {
54
+ if (isDataAsset(source)) {
55
+ return BUNDLE_ADVICE;
56
+ }
57
+ return source.startsWith(DATA_PREFIX) ? QUERY_ADVICE : RELATIVE_ADVICE;
58
+ };
59
+ const unbackedBindingError = (path, binding) => new Error(`${path}: ${JSON.stringify(binding.source)} does not export ${JSON.stringify(binding.name)}, which ` +
60
+ "gtkx build rejects and gtkx dev would bind as undefined. " +
61
+ bundleAdvice(binding.source));
62
+ const isCheckedSource = (path) => !path.startsWith(VIRTUAL_PREFIX) && !NODE_MODULES.test(path);
63
+ const checkAssetImports = (code, id) => {
64
+ const path = stripQuery(id);
65
+ const lang = SOURCE_LANGUAGES.get(extname(path).toLowerCase());
66
+ if (lang === undefined || !isCheckedSource(path) || !ASSET_MENTION_RE.test(code)) {
67
+ return;
68
+ }
69
+ const parsed = parseSync(path, code, { lang });
70
+ if (parsed.errors.length > 0) {
71
+ return;
72
+ }
73
+ const binding = unbackedBinding(parsed.module);
74
+ if (binding !== undefined) {
75
+ throw unbackedBindingError(path, binding);
76
+ }
77
+ };
78
+ function gtkxAssetImports() {
79
+ return {
80
+ name: "gtkx:asset-imports",
81
+ enforce: "pre",
82
+ transform(code, id) {
83
+ checkAssetImports(code, id);
84
+ },
85
+ };
86
+ }
87
+ export { gtkxAssetImports };
88
+ //# sourceMappingURL=asset-imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-imports.js","sourceRoot":"","sources":["../../src/vite-plugins/asset-imports.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ParseResult, ParserOptions, Plugin } from \"vite\";\nimport { extname } from \"node:path\";\nimport { parseSync } from \"vite\";\nimport { ASSET_MENTION_RE } from \"./asset-extensions.js\";\nimport { DATA_PREFIX, isAssetSpecifier, isDataAsset } from \"./asset-specifier.js\";\nimport { RESOURCE_PATH_EXPORT } from \"./resource-shared.js\";\nimport { stripQuery } from \"./strip-query.js\";\n\ntype SourceLanguage = NonNullable<ParserOptions[\"lang\"]>;\ntype ParsedModule = ParseResult[\"module\"];\ntype ImportStatement = ParsedModule[\"staticImports\"][number];\ntype ExportStatement = ParsedModule[\"staticExports\"][number];\ntype ExportEntry = ExportStatement[\"entries\"][number];\ntype BindingEntry = { importName: { name: string | null }; isType: boolean };\ntype NamedBinding = { name: string; source: string };\n\nconst SOURCE_LANGUAGES: Map<string, SourceLanguage> = new Map([\n [\".cjs\", \"jsx\"],\n [\".cts\", \"ts\"],\n [\".js\", \"jsx\"],\n [\".jsx\", \"jsx\"],\n [\".mjs\", \"jsx\"],\n [\".mts\", \"ts\"],\n [\".ts\", \"ts\"],\n [\".tsx\", \"tsx\"],\n]);\n\nconst NODE_MODULES = /(?:^|\\/)node_modules\\//;\nconst VIRTUAL_PREFIX = \"\\0\";\nconst DEFAULT_BINDING = \"default\";\nconst RESOURCE_BINDING = JSON.stringify(RESOURCE_PATH_EXPORT);\nconst DATA_IMPORT_EXAMPLE = `\"${DATA_PREFIX}<path>\"`;\nconst URL_FALLBACK = \", or import the default for the asset URL.\";\n\nconst BUNDLE_ADVICE =\n `An asset staged into the GResource bundle exports ${RESOURCE_BINDING} and a \"resource://\" default, and ` +\n \"nothing else.\";\n\nconst QUERY_ADVICE =\n \"A query suffix hands the import to the Vite asset pipeline instead of the GResource bundle; drop the \" +\n `query to keep ${RESOURCE_BINDING}${URL_FALLBACK}`;\n\nconst RELATIVE_ADVICE =\n `Only assets imported through \"${DATA_PREFIX}\" are staged into the GResource bundle and export ` +\n `${RESOURCE_BINDING}; move the file under the data directory and import it as ` +\n `${DATA_IMPORT_EXAMPLE}${URL_FALLBACK}`;\n\nconst boundName = (entry: BindingEntry): string | null => {\n const { name } = entry.importName;\n\n if (name === null || name === DEFAULT_BINDING || entry.isType) {\n return null;\n }\n\n return name;\n};\n\nconst importBindings = (statement: ImportStatement): NamedBinding[] =>\n statement.entries\n .map((entry) => boundName(entry))\n .filter((name) => name !== null)\n .map((name) => ({ name, source: statement.moduleRequest.value }));\n\nconst exportBinding = (entry: ExportEntry): NamedBinding | null => {\n const name = boundName(entry);\n const source = entry.moduleRequest?.value;\n\n return name === null || source === undefined ? null : { name, source };\n};\n\nconst exportBindings = (statement: ExportStatement): NamedBinding[] =>\n statement.entries.map((entry) => exportBinding(entry)).filter((binding) => binding !== null);\n\nconst bindings = (parsed: ParsedModule): NamedBinding[] => [\n ...parsed.staticImports.flatMap((statement) => importBindings(statement)),\n ...parsed.staticExports.flatMap((statement) => exportBindings(statement)),\n];\n\nconst isBacked = ({ name, source }: NamedBinding): boolean =>\n isDataAsset(source) && name === RESOURCE_PATH_EXPORT;\n\nconst unbackedBinding = (parsed: ParsedModule): NamedBinding | undefined =>\n bindings(parsed).find((binding) => isAssetSpecifier(binding.source) && !isBacked(binding));\n\nconst bundleAdvice = (source: string): string => {\n if (isDataAsset(source)) {\n return BUNDLE_ADVICE;\n }\n\n return source.startsWith(DATA_PREFIX) ? QUERY_ADVICE : RELATIVE_ADVICE;\n};\n\nconst unbackedBindingError = (path: string, binding: NamedBinding): Error =>\n new Error(\n `${path}: ${JSON.stringify(binding.source)} does not export ${JSON.stringify(binding.name)}, which ` +\n \"gtkx build rejects and gtkx dev would bind as undefined. \" +\n bundleAdvice(binding.source),\n );\n\nconst isCheckedSource = (path: string): boolean => !path.startsWith(VIRTUAL_PREFIX) && !NODE_MODULES.test(path);\n\nconst checkAssetImports = (code: string, id: string): void => {\n const path = stripQuery(id);\n const lang = SOURCE_LANGUAGES.get(extname(path).toLowerCase());\n\n if (lang === undefined || !isCheckedSource(path) || !ASSET_MENTION_RE.test(code)) {\n return;\n }\n\n const parsed = parseSync(path, code, { lang });\n\n if (parsed.errors.length > 0) {\n return;\n }\n\n const binding = unbackedBinding(parsed.module);\n\n if (binding !== undefined) {\n throw unbackedBindingError(path, binding);\n }\n};\n\nfunction gtkxAssetImports(): Plugin {\n return {\n name: \"gtkx:asset-imports\",\n enforce: \"pre\",\n\n transform(code, id) {\n checkAssetImports(code, id);\n },\n };\n}\n\nexport { gtkxAssetImports };\n"]}
@@ -0,0 +1,5 @@
1
+ declare const DATA_PREFIX = "#data/";
2
+ declare const isAssetSpecifier: (source: string) => boolean;
3
+ declare const isDataAsset: (source: string) => boolean;
4
+ export { DATA_PREFIX, isAssetSpecifier, isDataAsset };
5
+ //# sourceMappingURL=asset-specifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-specifier.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/asset-specifier.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,WAAW,WAA2B,CAAC;AAE7C,QAAA,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,OAAqC,CAAC;AACjF,QAAA,MAAM,WAAW,GAAI,QAAQ,MAAM,KAAG,OAAkE,CAAC;AAEzG,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { DATA_IMPORT_PREFIX } from "../internal/data-dir.js";
2
+ import { ASSET_PATH_RE, ASSET_RE } from "./asset-extensions.js";
3
+ const DATA_PREFIX = `${DATA_IMPORT_PREFIX}/`;
4
+ const isAssetSpecifier = (source) => ASSET_PATH_RE.test(source);
5
+ const isDataAsset = (source) => source.startsWith(DATA_PREFIX) && ASSET_RE.test(source);
6
+ export { DATA_PREFIX, isAssetSpecifier, isDataAsset };
7
+ //# sourceMappingURL=asset-specifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-specifier.js","sourceRoot":"","sources":["../../src/vite-plugins/asset-specifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,WAAW,GAAG,GAAG,kBAAkB,GAAG,CAAC;AAE7C,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAW,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjF,MAAM,WAAW,GAAG,CAAC,MAAc,EAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEzG,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import { DATA_IMPORT_PREFIX } from \"../internal/data-dir.js\";\nimport { ASSET_PATH_RE, ASSET_RE } from \"./asset-extensions.js\";\n\nconst DATA_PREFIX = `${DATA_IMPORT_PREFIX}/`;\n\nconst isAssetSpecifier = (source: string): boolean => ASSET_PATH_RE.test(source);\nconst isDataAsset = (source: string): boolean => source.startsWith(DATA_PREFIX) && ASSET_RE.test(source);\n\nexport { DATA_PREFIX, isAssetSpecifier, isDataAsset };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"built-url.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/built-url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AA4BnC,iBAAS,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBhD;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"built-url.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/built-url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAkCnC,iBAAS,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBhD;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -1,18 +1,22 @@
1
+ import { posix } from "node:path";
2
+ const EXECUTABLE_URL_BASE = "`file://${process.execPath}`";
3
+ const LEADING_SLASHES = /^\/+/;
4
+ const executableRelativeUrl = (target) => {
5
+ const specifier = JSON.stringify(target.replace(LEADING_SLASHES, "./"));
6
+ return `decodeURIComponent(new URL(${specifier}, ${EXECUTABLE_URL_BASE}).pathname)`;
7
+ };
8
+ const bundleRelativeUrl = (filename) => {
9
+ const specifier = JSON.stringify(`./${filename}`);
10
+ return `decodeURIComponent(new URL(${specifier}, import.meta.url).pathname)`;
11
+ };
1
12
  const renderAssetUrl = (filename, type, assetBase) => {
2
13
  if (type !== "asset") {
3
14
  return undefined;
4
15
  }
5
- if (assetBase) {
6
- const executableDir = "require(\"path\").dirname(process.execPath)";
7
- return {
8
- runtime: `require("path").join(${executableDir},` +
9
- `${JSON.stringify(assetBase)},${JSON.stringify(filename)})`,
10
- };
16
+ if (assetBase === undefined) {
17
+ return { runtime: bundleRelativeUrl(filename) };
11
18
  }
12
- const filenameLiteral = JSON.stringify(`./${filename}`);
13
- return {
14
- runtime: `new URL(${filenameLiteral}, import.meta.url).pathname`,
15
- };
19
+ return { runtime: executableRelativeUrl(posix.join(assetBase, filename)) };
16
20
  };
17
21
  function gtkxBuiltUrl(assetBase) {
18
22
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"built-url.js","sourceRoot":"","sources":["../../src/vite-plugins/built-url.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,CACnB,QAAgB,EAChB,IAAY,EACZ,SAA6B,EACE,EAAE;IACjC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACZ,MAAM,aAAa,GAAG,6CAA6C,CAAC;QAEpE,OAAO;YACH,OAAO,EACH,wBAAwB,aAAa,GAAG;gBACxC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;SAClE,CAAC;IACN,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAExD,OAAO;QACH,OAAO,EAAE,WAAW,eAAe,6BAA6B;KACnE,CAAC;AACN,CAAC,CAAC;AAEF,SAAS,YAAY,CAAC,SAAkB;IACpC,OAAO;QACH,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,OAAO;QAEd,MAAM,CAAC,UAAU;YACb,IAAI,UAAU,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC;gBAC1C,OAAO;YACX,CAAC;YAED,OAAO;gBACH,YAAY,EAAE;oBACV,cAAc,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;wBAC7B,OAAO,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBACrD,CAAC;iBACJ;aACJ,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import type { Plugin } from \"vite\";\n\nconst renderAssetUrl = (\n filename: string,\n type: string,\n assetBase: string | undefined,\n): { runtime: string } | undefined => {\n if (type !== \"asset\") {\n return undefined;\n }\n\n if (assetBase) {\n const executableDir = \"require(\\\"path\\\").dirname(process.execPath)\";\n\n return {\n runtime:\n `require(\"path\").join(${executableDir},` +\n `${JSON.stringify(assetBase)},${JSON.stringify(filename)})`,\n };\n }\n\n const filenameLiteral = JSON.stringify(`./${filename}`);\n\n return {\n runtime: `new URL(${filenameLiteral}, import.meta.url).pathname`,\n };\n};\n\nfunction gtkxBuiltUrl(assetBase?: string): Plugin {\n return {\n name: \"gtkx:built-url\",\n apply: \"build\",\n\n config(userConfig) {\n if (userConfig.experimental?.renderBuiltUrl) {\n return;\n }\n\n return {\n experimental: {\n renderBuiltUrl(filename, { type }) {\n return renderAssetUrl(filename, type, assetBase);\n },\n },\n };\n },\n };\n}\n\nexport { gtkxBuiltUrl };\n"]}
1
+ {"version":3,"file":"built-url.js","sourceRoot":"","sources":["../../src/vite-plugins/built-url.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAC3D,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAU,EAAE;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC;IAExE,OAAO,8BAA8B,SAAS,KAAK,mBAAmB,aAAa,CAAC;AACxF,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAU,EAAE;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAElD,OAAO,8BAA8B,SAAS,8BAA8B,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACnB,QAAgB,EAChB,IAAY,EACZ,SAA6B,EACE,EAAE;IACjC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;AAC/E,CAAC,CAAC;AAEF,SAAS,YAAY,CAAC,SAAkB;IACpC,OAAO;QACH,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,OAAO;QAEd,MAAM,CAAC,UAAU;YACb,IAAI,UAAU,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC;gBAC1C,OAAO;YACX,CAAC;YAED,OAAO;gBACH,YAAY,EAAE;oBACV,cAAc,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;wBAC7B,OAAO,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBACrD,CAAC;iBACJ;aACJ,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import type { Plugin } from \"vite\";\nimport { posix } from \"node:path\";\n\nconst EXECUTABLE_URL_BASE = \"`file://${process.execPath}`\";\nconst LEADING_SLASHES = /^\\/+/;\n\nconst executableRelativeUrl = (target: string): string => {\n const specifier = JSON.stringify(target.replace(LEADING_SLASHES, \"./\"));\n\n return `decodeURIComponent(new URL(${specifier}, ${EXECUTABLE_URL_BASE}).pathname)`;\n};\n\nconst bundleRelativeUrl = (filename: string): string => {\n const specifier = JSON.stringify(`./${filename}`);\n\n return `decodeURIComponent(new URL(${specifier}, import.meta.url).pathname)`;\n};\n\nconst renderAssetUrl = (\n filename: string,\n type: string,\n assetBase: string | undefined,\n): { runtime: string } | undefined => {\n if (type !== \"asset\") {\n return undefined;\n }\n\n if (assetBase === undefined) {\n return { runtime: bundleRelativeUrl(filename) };\n }\n\n return { runtime: executableRelativeUrl(posix.join(assetBase, filename)) };\n};\n\nfunction gtkxBuiltUrl(assetBase?: string): Plugin {\n return {\n name: \"gtkx:built-url\",\n apply: \"build\",\n\n config(userConfig) {\n if (userConfig.experimental?.renderBuiltUrl) {\n return;\n }\n\n return {\n experimental: {\n renderBuiltUrl(filename, { type }) {\n return renderAssetUrl(filename, type, assetBase);\n },\n },\n };\n },\n };\n}\n\nexport { gtkxBuiltUrl };\n"]}
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from "vite";
2
+ declare const gtkxEnsureStore: () => Plugin;
3
+ export { gtkxEnsureStore };
4
+ //# sourceMappingURL=ensure-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-store.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/ensure-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,QAAA,MAAM,eAAe,QAAO,MAM1B,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,CAAC"}