@gtkx/cli 1.0.0 → 1.2.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 (458) hide show
  1. package/README.md +1 -1
  2. package/dist/builder.d.ts +1 -1
  3. package/dist/builder.d.ts.map +1 -1
  4. package/dist/builder.js +20 -3
  5. package/dist/builder.js.map +1 -1
  6. package/dist/cli.js +6 -2
  7. package/dist/cli.js.map +1 -1
  8. package/dist/codegen/freshness.js +2 -2
  9. package/dist/codegen/freshness.js.map +1 -1
  10. package/dist/codegen/report.d.ts.map +1 -1
  11. package/dist/codegen/report.js +3 -0
  12. package/dist/codegen/report.js.map +1 -1
  13. package/dist/codegen/run-codegen.d.ts +9 -5
  14. package/dist/codegen/run-codegen.d.ts.map +1 -1
  15. package/dist/codegen/run-codegen.js +31 -20
  16. package/dist/codegen/run-codegen.js.map +1 -1
  17. package/dist/codegen/store-resolver.d.ts +1 -1
  18. package/dist/codegen/store-resolver.d.ts.map +1 -1
  19. package/dist/codegen/store-resolver.js.map +1 -1
  20. package/dist/commands/build.d.ts.map +1 -1
  21. package/dist/commands/build.js +5 -6
  22. package/dist/commands/build.js.map +1 -1
  23. package/dist/commands/codegen.d.ts.map +1 -1
  24. package/dist/commands/codegen.js +11 -1
  25. package/dist/commands/codegen.js.map +1 -1
  26. package/dist/commands/deploy.d.ts +22 -0
  27. package/dist/commands/deploy.d.ts.map +1 -0
  28. package/dist/commands/deploy.js +44 -0
  29. package/dist/commands/deploy.js.map +1 -0
  30. package/dist/commands/dev.d.ts.map +1 -1
  31. package/dist/commands/dev.js +4 -4
  32. package/dist/commands/dev.js.map +1 -1
  33. package/dist/commands/docs.d.ts +2 -2
  34. package/dist/commands/docs.d.ts.map +1 -1
  35. package/dist/commands/docs.js +28 -4
  36. package/dist/commands/docs.js.map +1 -1
  37. package/dist/deploy/depends.d.ts +8 -0
  38. package/dist/deploy/depends.d.ts.map +1 -0
  39. package/dist/deploy/depends.js +27 -0
  40. package/dist/deploy/depends.js.map +1 -0
  41. package/dist/deploy/download.d.ts +20 -0
  42. package/dist/deploy/download.d.ts.map +1 -0
  43. package/dist/deploy/download.js +98 -0
  44. package/dist/deploy/download.js.map +1 -0
  45. package/dist/deploy/freedesktop/copyright.d.ts +4 -0
  46. package/dist/deploy/freedesktop/copyright.d.ts.map +1 -0
  47. package/dist/deploy/freedesktop/copyright.js +33 -0
  48. package/dist/deploy/freedesktop/copyright.js.map +1 -0
  49. package/dist/deploy/freedesktop/dbus-service.d.ts +4 -0
  50. package/dist/deploy/freedesktop/dbus-service.d.ts.map +1 -0
  51. package/dist/deploy/freedesktop/dbus-service.js +15 -0
  52. package/dist/deploy/freedesktop/dbus-service.js.map +1 -0
  53. package/dist/deploy/freedesktop/desktop-entry.d.ts +4 -0
  54. package/dist/deploy/freedesktop/desktop-entry.d.ts.map +1 -0
  55. package/dist/deploy/freedesktop/desktop-entry.js +73 -0
  56. package/dist/deploy/freedesktop/desktop-entry.js.map +1 -0
  57. package/dist/deploy/freedesktop/ini.d.ts +7 -0
  58. package/dist/deploy/freedesktop/ini.d.ts.map +1 -0
  59. package/dist/deploy/freedesktop/ini.js +22 -0
  60. package/dist/deploy/freedesktop/ini.js.map +1 -0
  61. package/dist/deploy/freedesktop/metainfo-sections.d.ts +13 -0
  62. package/dist/deploy/freedesktop/metainfo-sections.d.ts.map +1 -0
  63. package/dist/deploy/freedesktop/metainfo-sections.js +73 -0
  64. package/dist/deploy/freedesktop/metainfo-sections.js.map +1 -0
  65. package/dist/deploy/freedesktop/metainfo.d.ts +4 -0
  66. package/dist/deploy/freedesktop/metainfo.d.ts.map +1 -0
  67. package/dist/deploy/freedesktop/metainfo.js +29 -0
  68. package/dist/deploy/freedesktop/metainfo.js.map +1 -0
  69. package/dist/deploy/freedesktop/mime-package.d.ts +4 -0
  70. package/dist/deploy/freedesktop/mime-package.d.ts.map +1 -0
  71. package/dist/deploy/freedesktop/mime-package.js +16 -0
  72. package/dist/deploy/freedesktop/mime-package.js.map +1 -0
  73. package/dist/deploy/freedesktop/validate.d.ts +4 -0
  74. package/dist/deploy/freedesktop/validate.d.ts.map +1 -0
  75. package/dist/deploy/freedesktop/validate.js +81 -0
  76. package/dist/deploy/freedesktop/validate.js.map +1 -0
  77. package/dist/deploy/freedesktop/xml.d.ts +11 -0
  78. package/dist/deploy/freedesktop/xml.d.ts.map +1 -0
  79. package/dist/deploy/freedesktop/xml.js +33 -0
  80. package/dist/deploy/freedesktop/xml.js.map +1 -0
  81. package/dist/deploy/git.d.ts +4 -0
  82. package/dist/deploy/git.d.ts.map +1 -0
  83. package/dist/deploy/git.js +17 -0
  84. package/dist/deploy/git.js.map +1 -0
  85. package/dist/deploy/install-hints.d.ts +5 -0
  86. package/dist/deploy/install-hints.d.ts.map +1 -0
  87. package/dist/deploy/install-hints.js +88 -0
  88. package/dist/deploy/install-hints.js.map +1 -0
  89. package/dist/deploy/nfpm/config.d.ts +8 -0
  90. package/dist/deploy/nfpm/config.d.ts.map +1 -0
  91. package/dist/deploy/nfpm/config.js +119 -0
  92. package/dist/deploy/nfpm/config.js.map +1 -0
  93. package/dist/deploy/nfpm/contents.d.ts +12 -0
  94. package/dist/deploy/nfpm/contents.d.ts.map +1 -0
  95. package/dist/deploy/nfpm/contents.js +48 -0
  96. package/dist/deploy/nfpm/contents.js.map +1 -0
  97. package/dist/deploy/nfpm/description.d.ts +5 -0
  98. package/dist/deploy/nfpm/description.d.ts.map +1 -0
  99. package/dist/deploy/nfpm/description.js +5 -0
  100. package/dist/deploy/nfpm/description.js.map +1 -0
  101. package/dist/deploy/nfpm/optional.d.ts +5 -0
  102. package/dist/deploy/nfpm/optional.d.ts.map +1 -0
  103. package/dist/deploy/nfpm/optional.js +4 -0
  104. package/dist/deploy/nfpm/optional.js.map +1 -0
  105. package/dist/deploy/nfpm/pack.d.ts +5 -0
  106. package/dist/deploy/nfpm/pack.d.ts.map +1 -0
  107. package/dist/deploy/nfpm/pack.js +32 -0
  108. package/dist/deploy/nfpm/pack.js.map +1 -0
  109. package/dist/deploy/node-runtime/download.d.ts +3 -0
  110. package/dist/deploy/node-runtime/download.d.ts.map +1 -0
  111. package/dist/deploy/node-runtime/download.js +39 -0
  112. package/dist/deploy/node-runtime/download.js.map +1 -0
  113. package/dist/deploy/node-runtime/elf.d.ts +7 -0
  114. package/dist/deploy/node-runtime/elf.d.ts.map +1 -0
  115. package/dist/deploy/node-runtime/elf.js +100 -0
  116. package/dist/deploy/node-runtime/elf.js.map +1 -0
  117. package/dist/deploy/node-runtime/guard.d.ts +4 -0
  118. package/dist/deploy/node-runtime/guard.d.ts.map +1 -0
  119. package/dist/deploy/node-runtime/guard.js +22 -0
  120. package/dist/deploy/node-runtime/guard.js.map +1 -0
  121. package/dist/deploy/node-runtime/index.d.ts +4 -0
  122. package/dist/deploy/node-runtime/index.d.ts.map +1 -0
  123. package/dist/deploy/node-runtime/index.js +61 -0
  124. package/dist/deploy/node-runtime/index.js.map +1 -0
  125. package/dist/deploy/payload/copy-tree.d.ts +7 -0
  126. package/dist/deploy/payload/copy-tree.d.ts.map +1 -0
  127. package/dist/deploy/payload/copy-tree.js +36 -0
  128. package/dist/deploy/payload/copy-tree.js.map +1 -0
  129. package/dist/deploy/payload/icons.d.ts +6 -0
  130. package/dist/deploy/payload/icons.d.ts.map +1 -0
  131. package/dist/deploy/payload/icons.js +53 -0
  132. package/dist/deploy/payload/icons.js.map +1 -0
  133. package/dist/deploy/payload/launcher.d.ts +5 -0
  134. package/dist/deploy/payload/launcher.d.ts.map +1 -0
  135. package/dist/deploy/payload/launcher.js +22 -0
  136. package/dist/deploy/payload/launcher.js.map +1 -0
  137. package/dist/deploy/payload/schemas.d.ts +4 -0
  138. package/dist/deploy/payload/schemas.d.ts.map +1 -0
  139. package/dist/deploy/payload/schemas.js +17 -0
  140. package/dist/deploy/payload/schemas.js.map +1 -0
  141. package/dist/deploy/payload/stage.d.ts +15 -0
  142. package/dist/deploy/payload/stage.d.ts.map +1 -0
  143. package/dist/deploy/payload/stage.js +100 -0
  144. package/dist/deploy/payload/stage.js.map +1 -0
  145. package/dist/deploy/registry.d.ts +7 -0
  146. package/dist/deploy/registry.d.ts.map +1 -0
  147. package/dist/deploy/registry.js +30 -0
  148. package/dist/deploy/registry.js.map +1 -0
  149. package/dist/deploy/run-deploy.d.ts +11 -0
  150. package/dist/deploy/run-deploy.d.ts.map +1 -0
  151. package/dist/deploy/run-deploy.js +157 -0
  152. package/dist/deploy/run-deploy.js.map +1 -0
  153. package/dist/deploy/settings/arch.d.ts +4 -0
  154. package/dist/deploy/settings/arch.d.ts.map +1 -0
  155. package/dist/deploy/settings/arch.js +13 -0
  156. package/dist/deploy/settings/arch.js.map +1 -0
  157. package/dist/deploy/settings/categories.d.ts +4 -0
  158. package/dist/deploy/settings/categories.d.ts.map +1 -0
  159. package/dist/deploy/settings/categories.js +29 -0
  160. package/dist/deploy/settings/categories.js.map +1 -0
  161. package/dist/deploy/settings/exec.d.ts +6 -0
  162. package/dist/deploy/settings/exec.d.ts.map +1 -0
  163. package/dist/deploy/settings/exec.js +20 -0
  164. package/dist/deploy/settings/exec.js.map +1 -0
  165. package/dist/deploy/settings/identity.d.ts +18 -0
  166. package/dist/deploy/settings/identity.d.ts.map +1 -0
  167. package/dist/deploy/settings/identity.js +73 -0
  168. package/dist/deploy/settings/identity.js.map +1 -0
  169. package/dist/deploy/settings/index.d.ts +11 -0
  170. package/dist/deploy/settings/index.d.ts.map +1 -0
  171. package/dist/deploy/settings/index.js +103 -0
  172. package/dist/deploy/settings/index.js.map +1 -0
  173. package/dist/deploy/settings/package-manifest.d.ts +16 -0
  174. package/dist/deploy/settings/package-manifest.d.ts.map +1 -0
  175. package/dist/deploy/settings/package-manifest.js +42 -0
  176. package/dist/deploy/settings/package-manifest.js.map +1 -0
  177. package/dist/deploy/settings/paths.d.ts +9 -0
  178. package/dist/deploy/settings/paths.d.ts.map +1 -0
  179. package/dist/deploy/settings/paths.js +82 -0
  180. package/dist/deploy/settings/paths.js.map +1 -0
  181. package/dist/deploy/settings/screenshots.d.ts +8 -0
  182. package/dist/deploy/settings/screenshots.d.ts.map +1 -0
  183. package/dist/deploy/settings/screenshots.js +79 -0
  184. package/dist/deploy/settings/screenshots.js.map +1 -0
  185. package/dist/deploy/settings/starter.d.ts +4 -0
  186. package/dist/deploy/settings/starter.d.ts.map +1 -0
  187. package/dist/deploy/settings/starter.js +28 -0
  188. package/dist/deploy/settings/starter.js.map +1 -0
  189. package/dist/deploy/settings/version.d.ts +9 -0
  190. package/dist/deploy/settings/version.d.ts.map +1 -0
  191. package/dist/deploy/settings/version.js +37 -0
  192. package/dist/deploy/settings/version.js.map +1 -0
  193. package/dist/deploy/targets/appimage.d.ts +4 -0
  194. package/dist/deploy/targets/appimage.d.ts.map +1 -0
  195. package/dist/deploy/targets/appimage.js +105 -0
  196. package/dist/deploy/targets/appimage.js.map +1 -0
  197. package/dist/deploy/targets/deb.d.ts +4 -0
  198. package/dist/deploy/targets/deb.d.ts.map +1 -0
  199. package/dist/deploy/targets/deb.js +4 -0
  200. package/dist/deploy/targets/deb.js.map +1 -0
  201. package/dist/deploy/targets/flatpak-manifest.d.ts +6 -0
  202. package/dist/deploy/targets/flatpak-manifest.d.ts.map +1 -0
  203. package/dist/deploy/targets/flatpak-manifest.js +48 -0
  204. package/dist/deploy/targets/flatpak-manifest.js.map +1 -0
  205. package/dist/deploy/targets/flatpak-pnpm.d.ts +15 -0
  206. package/dist/deploy/targets/flatpak-pnpm.d.ts.map +1 -0
  207. package/dist/deploy/targets/flatpak-pnpm.js +69 -0
  208. package/dist/deploy/targets/flatpak-pnpm.js.map +1 -0
  209. package/dist/deploy/targets/flatpak-prebuilt.d.ts +8 -0
  210. package/dist/deploy/targets/flatpak-prebuilt.d.ts.map +1 -0
  211. package/dist/deploy/targets/flatpak-prebuilt.js +43 -0
  212. package/dist/deploy/targets/flatpak-prebuilt.js.map +1 -0
  213. package/dist/deploy/targets/flatpak-source.d.ts +5 -0
  214. package/dist/deploy/targets/flatpak-source.d.ts.map +1 -0
  215. package/dist/deploy/targets/flatpak-source.js +119 -0
  216. package/dist/deploy/targets/flatpak-source.js.map +1 -0
  217. package/dist/deploy/targets/flatpak-sources.d.ts +19 -0
  218. package/dist/deploy/targets/flatpak-sources.d.ts.map +1 -0
  219. package/dist/deploy/targets/flatpak-sources.js +122 -0
  220. package/dist/deploy/targets/flatpak-sources.js.map +1 -0
  221. package/dist/deploy/targets/flatpak.d.ts +4 -0
  222. package/dist/deploy/targets/flatpak.d.ts.map +1 -0
  223. package/dist/deploy/targets/flatpak.js +113 -0
  224. package/dist/deploy/targets/flatpak.js.map +1 -0
  225. package/dist/deploy/targets/nfpm-target.d.ts +5 -0
  226. package/dist/deploy/targets/nfpm-target.d.ts.map +1 -0
  227. package/dist/deploy/targets/nfpm-target.js +26 -0
  228. package/dist/deploy/targets/nfpm-target.js.map +1 -0
  229. package/dist/deploy/targets/rpm.d.ts +4 -0
  230. package/dist/deploy/targets/rpm.d.ts.map +1 -0
  231. package/dist/deploy/targets/rpm.js +4 -0
  232. package/dist/deploy/targets/rpm.js.map +1 -0
  233. package/dist/deploy/tools.d.ts +20 -0
  234. package/dist/deploy/tools.d.ts.map +1 -0
  235. package/dist/deploy/tools.js +106 -0
  236. package/dist/deploy/tools.js.map +1 -0
  237. package/dist/deploy/types.d.ts +140 -0
  238. package/dist/deploy/types.d.ts.map +1 -0
  239. package/dist/deploy/types.js +2 -0
  240. package/dist/deploy/types.js.map +1 -0
  241. package/dist/deploy/vendored/appimagetool.d.ts +7 -0
  242. package/dist/deploy/vendored/appimagetool.d.ts.map +1 -0
  243. package/dist/deploy/vendored/appimagetool.js +42 -0
  244. package/dist/deploy/vendored/appimagetool.js.map +1 -0
  245. package/dist/deploy/vendored/nfpm.d.ts +3 -0
  246. package/dist/deploy/vendored/nfpm.d.ts.map +1 -0
  247. package/dist/deploy/vendored/nfpm.js +60 -0
  248. package/dist/deploy/vendored/nfpm.js.map +1 -0
  249. package/dist/dev/change-queue.d.ts +11 -0
  250. package/dist/dev/change-queue.d.ts.map +1 -0
  251. package/dist/dev/change-queue.js +34 -0
  252. package/dist/dev/change-queue.js.map +1 -0
  253. package/dist/dev/failure-tracker.d.ts +10 -0
  254. package/dist/dev/failure-tracker.d.ts.map +1 -0
  255. package/dist/dev/failure-tracker.js +61 -0
  256. package/dist/dev/failure-tracker.js.map +1 -0
  257. package/dist/dev/missing-import.d.ts +4 -0
  258. package/dist/dev/missing-import.d.ts.map +1 -0
  259. package/dist/dev/missing-import.js +23 -0
  260. package/dist/dev/missing-import.js.map +1 -0
  261. package/dist/dev/runner-deps.d.ts.map +1 -1
  262. package/dist/dev/runner-deps.js +25 -6
  263. package/dist/dev/runner-deps.js.map +1 -1
  264. package/dist/dev/runner.d.ts +8 -4
  265. package/dist/dev/runner.d.ts.map +1 -1
  266. package/dist/dev/runner.js +334 -66
  267. package/dist/dev/runner.js.map +1 -1
  268. package/dist/dev/supervisor.d.ts +1 -2
  269. package/dist/dev/supervisor.d.ts.map +1 -1
  270. package/dist/dev/supervisor.js +1 -1
  271. package/dist/dev/supervisor.js.map +1 -1
  272. package/dist/dev/vite-dev-server.d.ts +13 -2
  273. package/dist/dev/vite-dev-server.d.ts.map +1 -1
  274. package/dist/dev/vite-dev-server.js +30 -2
  275. package/dist/dev/vite-dev-server.js.map +1 -1
  276. package/dist/internal/entry-arg.d.ts +1 -7
  277. package/dist/internal/entry-arg.d.ts.map +1 -1
  278. package/dist/internal/entry-arg.js +18 -11
  279. package/dist/internal/entry-arg.js.map +1 -1
  280. package/dist/internal/module-loads.d.ts +7 -0
  281. package/dist/internal/module-loads.d.ts.map +1 -0
  282. package/dist/internal/module-loads.js +21 -0
  283. package/dist/internal/module-loads.js.map +1 -0
  284. package/dist/internal/prepare-project.d.ts +16 -0
  285. package/dist/internal/prepare-project.d.ts.map +1 -0
  286. package/dist/internal/prepare-project.js +15 -0
  287. package/dist/internal/prepare-project.js.map +1 -0
  288. package/dist/internal/run-cli-tool.d.ts +2 -1
  289. package/dist/internal/run-cli-tool.d.ts.map +1 -1
  290. package/dist/internal/run-cli-tool.js +15 -6
  291. package/dist/internal/run-cli-tool.js.map +1 -1
  292. package/dist/internal/staging-dir.d.ts +8 -1
  293. package/dist/internal/staging-dir.d.ts.map +1 -1
  294. package/dist/internal/staging-dir.js +38 -2
  295. package/dist/internal/staging-dir.js.map +1 -1
  296. package/dist/mcp/serialize-widget.d.ts +2 -1
  297. package/dist/mcp/serialize-widget.d.ts.map +1 -1
  298. package/dist/mcp/serialize-widget.js +1 -1
  299. package/dist/mcp/serialize-widget.js.map +1 -1
  300. package/dist/mcp/testing-loader.d.ts +5 -2
  301. package/dist/mcp/testing-loader.d.ts.map +1 -1
  302. package/dist/mcp/testing-loader.js +7 -3
  303. package/dist/mcp/testing-loader.js.map +1 -1
  304. package/dist/refresh-runtime.d.ts +2 -1
  305. package/dist/refresh-runtime.d.ts.map +1 -1
  306. package/dist/refresh-runtime.js +32 -2
  307. package/dist/refresh-runtime.js.map +1 -1
  308. package/dist/settings/schema.d.ts +1 -2
  309. package/dist/settings/schema.d.ts.map +1 -1
  310. package/dist/settings/schema.js +1 -1
  311. package/dist/settings/schema.js.map +1 -1
  312. package/dist/vite-plugins/asset-extensions.d.ts +2 -1
  313. package/dist/vite-plugins/asset-extensions.d.ts.map +1 -1
  314. package/dist/vite-plugins/asset-extensions.js +2 -1
  315. package/dist/vite-plugins/asset-extensions.js.map +1 -1
  316. package/dist/vite-plugins/asset-imports.d.ts +4 -0
  317. package/dist/vite-plugins/asset-imports.d.ts.map +1 -0
  318. package/dist/vite-plugins/asset-imports.js +88 -0
  319. package/dist/vite-plugins/asset-imports.js.map +1 -0
  320. package/dist/vite-plugins/asset-specifier.d.ts +5 -0
  321. package/dist/vite-plugins/asset-specifier.d.ts.map +1 -0
  322. package/dist/vite-plugins/asset-specifier.js +7 -0
  323. package/dist/vite-plugins/asset-specifier.js.map +1 -0
  324. package/dist/vite-plugins/esm-extension.d.ts +4 -0
  325. package/dist/vite-plugins/esm-extension.d.ts.map +1 -0
  326. package/dist/vite-plugins/esm-extension.js +4 -0
  327. package/dist/vite-plugins/esm-extension.js.map +1 -0
  328. package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts +1 -3
  329. package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts.map +1 -1
  330. package/dist/vite-plugins/fast-refresh/swc-refresh.js +1 -1
  331. package/dist/vite-plugins/fast-refresh/swc-refresh.js.map +1 -1
  332. package/dist/vite-plugins/index.d.ts.map +1 -1
  333. package/dist/vite-plugins/index.js +4 -0
  334. package/dist/vite-plugins/index.js.map +1 -1
  335. package/dist/vite-plugins/resource-shared.d.ts +2 -1
  336. package/dist/vite-plugins/resource-shared.d.ts.map +1 -1
  337. package/dist/vite-plugins/resource-shared.js +2 -1
  338. package/dist/vite-plugins/resource-shared.js.map +1 -1
  339. package/dist/vite-plugins/resources.d.ts.map +1 -1
  340. package/dist/vite-plugins/resources.js +30 -29
  341. package/dist/vite-plugins/resources.js.map +1 -1
  342. package/dist/vite-plugins/self-contained.d.ts +4 -0
  343. package/dist/vite-plugins/self-contained.d.ts.map +1 -0
  344. package/dist/vite-plugins/self-contained.js +244 -0
  345. package/dist/vite-plugins/self-contained.js.map +1 -0
  346. package/dist/vite-plugins/settings.d.ts.map +1 -1
  347. package/dist/vite-plugins/settings.js +19 -40
  348. package/dist/vite-plugins/settings.js.map +1 -1
  349. package/dist/vite-plugins/store-links.d.ts +4 -0
  350. package/dist/vite-plugins/store-links.d.ts.map +1 -0
  351. package/dist/vite-plugins/store-links.js +19 -0
  352. package/dist/vite-plugins/store-links.js.map +1 -0
  353. package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
  354. package/dist/vite-plugins/undeclared-library.js +51 -12
  355. package/dist/vite-plugins/undeclared-library.js.map +1 -1
  356. package/dist/vite-plugins/worker.d.ts.map +1 -1
  357. package/dist/vite-plugins/worker.js +3 -1
  358. package/dist/vite-plugins/worker.js.map +1 -1
  359. package/env.d.ts +106 -25
  360. package/package.json +20 -13
  361. package/src/builder.ts +22 -4
  362. package/src/cli.ts +7 -2
  363. package/src/codegen/freshness.ts +2 -2
  364. package/src/codegen/report.ts +4 -0
  365. package/src/codegen/run-codegen.ts +48 -24
  366. package/src/codegen/store-resolver.ts +1 -1
  367. package/src/commands/build.ts +5 -6
  368. package/src/commands/codegen.ts +14 -1
  369. package/src/commands/deploy.ts +47 -0
  370. package/src/commands/dev.ts +4 -4
  371. package/src/commands/docs.ts +40 -4
  372. package/src/deploy/depends.ts +42 -0
  373. package/src/deploy/download.ts +148 -0
  374. package/src/deploy/freedesktop/copyright.ts +41 -0
  375. package/src/deploy/freedesktop/dbus-service.ts +19 -0
  376. package/src/deploy/freedesktop/desktop-entry.ts +102 -0
  377. package/src/deploy/freedesktop/ini.ts +39 -0
  378. package/src/deploy/freedesktop/metainfo-sections.ts +116 -0
  379. package/src/deploy/freedesktop/metainfo.ts +46 -0
  380. package/src/deploy/freedesktop/mime-package.ts +28 -0
  381. package/src/deploy/freedesktop/validate.ts +124 -0
  382. package/src/deploy/freedesktop/xml.ts +53 -0
  383. package/src/deploy/git.ts +20 -0
  384. package/src/deploy/install-hints.ts +111 -0
  385. package/src/deploy/nfpm/config.ts +153 -0
  386. package/src/deploy/nfpm/contents.ts +69 -0
  387. package/src/deploy/nfpm/description.ts +11 -0
  388. package/src/deploy/nfpm/optional.ts +8 -0
  389. package/src/deploy/nfpm/pack.ts +44 -0
  390. package/src/deploy/node-runtime/download.ts +48 -0
  391. package/src/deploy/node-runtime/elf.ts +145 -0
  392. package/src/deploy/node-runtime/guard.ts +29 -0
  393. package/src/deploy/node-runtime/index.ts +80 -0
  394. package/src/deploy/payload/copy-tree.ts +51 -0
  395. package/src/deploy/payload/icons.ts +80 -0
  396. package/src/deploy/payload/launcher.ts +27 -0
  397. package/src/deploy/payload/schemas.ts +27 -0
  398. package/src/deploy/payload/stage.ts +145 -0
  399. package/src/deploy/registry.ts +40 -0
  400. package/src/deploy/run-deploy.ts +241 -0
  401. package/src/deploy/settings/arch.ts +18 -0
  402. package/src/deploy/settings/categories.ts +39 -0
  403. package/src/deploy/settings/exec.ts +29 -0
  404. package/src/deploy/settings/identity.ts +133 -0
  405. package/src/deploy/settings/index.ts +189 -0
  406. package/src/deploy/settings/package-manifest.ts +68 -0
  407. package/src/deploy/settings/paths.ts +115 -0
  408. package/src/deploy/settings/screenshots.ts +125 -0
  409. package/src/deploy/settings/starter.ts +41 -0
  410. package/src/deploy/settings/version.ts +59 -0
  411. package/src/deploy/targets/appimage.ts +140 -0
  412. package/src/deploy/targets/deb.ts +6 -0
  413. package/src/deploy/targets/flatpak-manifest.ts +61 -0
  414. package/src/deploy/targets/flatpak-pnpm.ts +115 -0
  415. package/src/deploy/targets/flatpak-prebuilt.ts +59 -0
  416. package/src/deploy/targets/flatpak-source.ts +181 -0
  417. package/src/deploy/targets/flatpak-sources.ts +198 -0
  418. package/src/deploy/targets/flatpak.ts +144 -0
  419. package/src/deploy/targets/nfpm-target.ts +33 -0
  420. package/src/deploy/targets/rpm.ts +6 -0
  421. package/src/deploy/tools.ts +156 -0
  422. package/src/deploy/types.ts +174 -0
  423. package/src/deploy/vendored/appimagetool.ts +57 -0
  424. package/src/deploy/vendored/nfpm.ts +79 -0
  425. package/src/dev/change-queue.ts +59 -0
  426. package/src/dev/failure-tracker.ts +92 -0
  427. package/src/dev/missing-import.ts +32 -0
  428. package/src/dev/runner-deps.ts +34 -6
  429. package/src/dev/runner.ts +506 -102
  430. package/src/dev/supervisor.ts +0 -3
  431. package/src/dev/vite-dev-server.ts +54 -3
  432. package/src/internal/entry-arg.ts +25 -11
  433. package/src/internal/module-loads.ts +32 -0
  434. package/src/internal/prepare-project.ts +23 -0
  435. package/src/internal/run-cli-tool.ts +22 -6
  436. package/src/internal/staging-dir.ts +57 -2
  437. package/src/mcp/serialize-widget.ts +3 -2
  438. package/src/mcp/testing-loader.ts +19 -4
  439. package/src/refresh-runtime.ts +48 -2
  440. package/src/settings/schema.ts +0 -1
  441. package/src/vite-plugins/asset-extensions.ts +2 -1
  442. package/src/vite-plugins/asset-imports.ts +134 -0
  443. package/src/vite-plugins/asset-specifier.ts +9 -0
  444. package/src/vite-plugins/esm-extension.ts +4 -0
  445. package/src/vite-plugins/fast-refresh/swc-refresh.ts +1 -1
  446. package/src/vite-plugins/index.ts +4 -0
  447. package/src/vite-plugins/resource-shared.ts +2 -0
  448. package/src/vite-plugins/resources.ts +33 -33
  449. package/src/vite-plugins/self-contained.ts +352 -0
  450. package/src/vite-plugins/settings.ts +21 -48
  451. package/src/vite-plugins/store-links.ts +25 -0
  452. package/src/vite-plugins/undeclared-library.ts +74 -12
  453. package/src/vite-plugins/worker.ts +4 -1
  454. package/dist/internal.d.ts +0 -3
  455. package/dist/internal.d.ts.map +0 -1
  456. package/dist/internal.js +0 -3
  457. package/dist/internal.js.map +0 -1
  458. package/src/internal.ts +0 -2
@@ -1,36 +1,198 @@
1
- import { error } from "@gtkx/utils";
1
+ import { error, warn } from "@gtkx/utils";
2
+ import { loadModuleExclusively, withExclusiveLoad } from "../internal/module-loads.js";
3
+ import { createChangeQueue } from "./change-queue.js";
4
+ import { createFailureTracker } from "./failure-tracker.js";
5
+ import { isMissingImport, missingImportName } from "./missing-import.js";
2
6
  import { createRefreshTracker } from "./refresh-tracker.js";
3
7
  import { RESTART_EXIT_CODE } from "./supervisor.js";
4
- import { createDevServerConfig } from "./vite-dev-server.js";
8
+ import { createDevServerConfig, isServerConfigFile, } from "./vite-dev-server.js";
5
9
  const APPLICATION_MOUNT_TIMEOUT_MS = 10_000;
6
- const requestRestart = async (server, deps) => {
7
- deps.log("Full restart (process restart)");
8
- await server.close();
9
- return deps.exit(RESTART_EXIT_CODE);
10
+ const OWNED_ID_EXIT_CODE = 1;
11
+ const LOAD_ATTEMPT_LIMIT = 5;
12
+ const WATCH_EVENTS = ["add", "change", "unlink"];
13
+ const SKIP_REASON = `did not settle in ${String(LOAD_ATTEMPT_LIMIT)} attempts; save it again to patch the window.`;
14
+ const DROPPED_REFRESH = "Fast Refresh dropped";
15
+ const SAVE_ACTION = "File changed";
16
+ const RETRY_ACTION = "Retrying pending save";
17
+ const announceFailure = (server, cause) => {
18
+ if (cause instanceof Error) {
19
+ server.ssrFixStacktrace(cause);
20
+ }
21
+ error("Application error; keeping the dev server up. Fix the error and save again.", cause);
22
+ };
23
+ const parkSession = (session) => {
24
+ session.deps.log("Waiting for a change to restart the application...");
25
+ };
26
+ const requestRestart = async (session) => {
27
+ session.deps.log("Full restart (process restart)");
28
+ try {
29
+ await session.server.close();
30
+ }
31
+ catch (error_) {
32
+ error("Error closing server before the restart:", error_);
33
+ }
34
+ return session.deps.exit(RESTART_EXIT_CODE);
35
+ };
36
+ const requiresRestart = (session, module) => {
37
+ if (session.failure.isDown()) {
38
+ return true;
39
+ }
40
+ const loadedExports = module.ssrModule;
41
+ if (!loadedExports) {
42
+ return false;
43
+ }
44
+ return !session.deps.isRefreshBoundary(loadedExports);
45
+ };
46
+ const invalidateChangedModule = (session, module) => {
47
+ session.server.moduleGraph.invalidateModule(module);
48
+ for (const importer of module.importers) {
49
+ session.server.moduleGraph.invalidateModule(importer);
50
+ }
51
+ };
52
+ const isEvaluationCurrent = (session, changedPath, loadedExports) => {
53
+ const evaluated = session.server.moduleGraph.getModuleById(changedPath);
54
+ if (!evaluated?.ssrTransformResult) {
55
+ return false;
56
+ }
57
+ return evaluated.ssrModule === loadedExports;
10
58
  };
11
- const handleFileChange = async (server, deps, changedPath) => {
12
- const module = server.moduleGraph.getModuleById(changedPath);
59
+ const loadInvalidatedModule = (session, changedPath, module) => withExclusiveLoad(session.server, async () => {
60
+ const revision = await session.deps.readFileRevision(changedPath);
61
+ invalidateChangedModule(session, module);
62
+ const loadedExports = await session.server.ssrLoadModule(changedPath);
63
+ const settledRevision = await session.deps.readFileRevision(changedPath);
64
+ return {
65
+ loadedExports,
66
+ isSettled: settledRevision === revision && isEvaluationCurrent(session, changedPath, loadedExports),
67
+ };
68
+ });
69
+ const settleAttempt = async (session, changedPath, module) => {
70
+ const { loadedExports, isSettled } = await loadInvalidatedModule(session, changedPath, module);
71
+ if (isSettled) {
72
+ return { loadedExports, module };
73
+ }
74
+ return { loadedExports: null, module: session.server.moduleGraph.getModuleById(changedPath) ?? module };
75
+ };
76
+ const loadSettledExports = async (session, changedPath, changedModule) => {
77
+ let module = changedModule;
78
+ for (let round = 0; round < LOAD_ATTEMPT_LIMIT && !session.controller.isShuttingDown(); round++) {
79
+ const attempt = await settleAttempt(session, changedPath, module);
80
+ if (attempt.loadedExports) {
81
+ return attempt.loadedExports;
82
+ }
83
+ module = attempt.module;
84
+ }
85
+ return null;
86
+ };
87
+ const droppedExportName = (previous, current) => {
88
+ const kept = new Set(Object.keys(current));
89
+ for (const name of Object.keys(previous)) {
90
+ if (!kept.has(name)) {
91
+ return name;
92
+ }
93
+ }
94
+ return null;
95
+ };
96
+ const unpatchedExportReason = (session, previous, current) => {
97
+ if (!previous) {
98
+ return null;
99
+ }
100
+ const dropped = droppedExportName(previous, current);
101
+ if (dropped !== null) {
102
+ return `no longer exports ${dropped}, which its importers still hold`;
103
+ }
104
+ const stale = session.deps.staleExportName(previous, current);
105
+ if (stale === null) {
106
+ return null;
107
+ }
108
+ return `renamed the component it exports as ${stale}, which the window is still rendering`;
109
+ };
110
+ const refreshChangedModule = async (session, changedPath, changedModule, previous) => {
111
+ const loadedExports = await loadSettledExports(session, changedPath, changedModule);
112
+ if (session.controller.isShuttingDown()) {
113
+ return;
114
+ }
115
+ if (!loadedExports) {
116
+ warn(`Fast Refresh skipped: ${changedPath} ${SKIP_REASON}`);
117
+ return;
118
+ }
119
+ if (!session.deps.isRefreshBoundary(loadedExports)) {
120
+ await requestRestart(session);
121
+ return;
122
+ }
123
+ const unpatched = unpatchedExportReason(session, previous, loadedExports);
124
+ if (unpatched !== null) {
125
+ warn(`${DROPPED_REFRESH}: ${changedPath} ${unpatched}`);
126
+ await requestRestart(session);
127
+ return;
128
+ }
129
+ session.pendingSaves.delete(changedPath);
130
+ session.deps.log("Running Fast Refresh...");
131
+ session.deps.performRefresh();
132
+ session.deps.log("Fast Refresh complete");
133
+ };
134
+ const applyModuleChange = async (session, changedPath, action) => {
135
+ const module = session.server.moduleGraph.getModuleById(changedPath);
13
136
  if (!module) {
14
137
  return;
15
138
  }
16
- deps.log(`File changed: ${changedPath}`);
17
- const loadedExports = module.ssrModule;
18
- if (loadedExports && !deps.isRefreshBoundary(loadedExports)) {
19
- await requestRestart(server, deps);
139
+ session.deps.log(`${action}: ${changedPath}`);
140
+ if (requiresRestart(session, module)) {
141
+ await requestRestart(session);
20
142
  return;
21
143
  }
22
- server.moduleGraph.invalidateModule(module);
23
- for (const importer of module.importers) {
24
- server.moduleGraph.invalidateModule(importer);
144
+ await refreshChangedModule(session, changedPath, module, module.ssrModule ?? null);
145
+ };
146
+ const awaitMissingImport = (session, changedPath, cause) => {
147
+ const missingName = missingImportName(cause);
148
+ if (missingName === null) {
149
+ session.pendingSaves.delete(changedPath);
150
+ return;
151
+ }
152
+ session.pendingSaves.set(changedPath, missingName);
153
+ };
154
+ const applySave = async (session, changedPath, action) => {
155
+ try {
156
+ await applyModuleChange(session, changedPath, action);
25
157
  }
26
- const newMod = await server.ssrLoadModule(changedPath);
27
- if (deps.isRefreshBoundary(newMod)) {
28
- deps.log("Running Fast Refresh...");
29
- deps.performRefresh();
30
- deps.log("Fast Refresh complete");
158
+ catch (error_) {
159
+ if (session.controller.isShuttingDown()) {
160
+ return;
161
+ }
162
+ awaitMissingImport(session, changedPath, error_);
163
+ error("Hot reload failed:", error_);
164
+ }
165
+ };
166
+ const savesAwaiting = (session, createdPath) => [...session.pendingSaves]
167
+ .filter(([, missingName]) => isMissingImport(createdPath, missingName))
168
+ .map(([changedPath]) => changedPath);
169
+ const retryPendingSaves = async (session, waiting) => {
170
+ for (const changedPath of waiting) {
171
+ if (session.controller.isShuttingDown()) {
172
+ return;
173
+ }
174
+ session.pendingSaves.delete(changedPath);
175
+ await applySave(session, changedPath, RETRY_ACTION);
176
+ }
177
+ };
178
+ const handleFileCreate = async (session, createdPath) => {
179
+ const waiting = savesAwaiting(session, createdPath);
180
+ if (waiting.length === 0) {
31
181
  return;
32
182
  }
33
- await requestRestart(server, deps);
183
+ session.deps.log(`File created: ${createdPath}`);
184
+ if (session.failure.isDown()) {
185
+ await requestRestart(session);
186
+ return;
187
+ }
188
+ await retryPendingSaves(session, waiting);
189
+ };
190
+ const handleFileRemove = async (session, removedPath) => {
191
+ if (!session.server.moduleGraph.getModuleById(removedPath)) {
192
+ return;
193
+ }
194
+ session.deps.log(`File removed: ${removedPath}`);
195
+ await requestRestart(session);
34
196
  };
35
197
  const createShutdownController = (server, deps) => {
36
198
  let isShuttingDown = false;
@@ -47,82 +209,188 @@ const createShutdownController = (server, deps) => {
47
209
  },
48
210
  };
49
211
  };
50
- const reloadChangedFile = async (server, deps, changedPath) => {
51
- try {
52
- await handleFileChange(server, deps, changedPath);
212
+ const restartForServerConfig = async (session, changedPath) => {
213
+ session.deps.log(`Server config changed: ${changedPath}`);
214
+ await requestRestart(session);
215
+ };
216
+ const applyChange = async (session, change) => {
217
+ if (session.controller.isShuttingDown()) {
218
+ return;
53
219
  }
54
- catch (error_) {
55
- error("Hot reload failed:", error_);
220
+ if (isServerConfigFile(session.server.config, change.path)) {
221
+ await restartForServerConfig(session, change.path);
222
+ return;
56
223
  }
57
- };
58
- const onFileChange = (server, deps, controller) => (changedPath) => {
59
- if (controller.isShuttingDown()) {
224
+ if (change.event === "add") {
225
+ await handleFileCreate(session, change.path);
60
226
  return;
61
227
  }
62
- void reloadChangedFile(server, deps, changedPath);
228
+ if (change.event === "unlink") {
229
+ await handleFileRemove(session, change.path);
230
+ return;
231
+ }
232
+ await applySave(session, change.path, SAVE_ACTION);
233
+ };
234
+ const watchProjectFiles = (session) => {
235
+ const queue = createChangeQueue((change) => applyChange(session, change));
236
+ for (const event of WATCH_EVENTS) {
237
+ session.server.watcher.on(event, (path) => {
238
+ queue.enqueue({ event, path });
239
+ });
240
+ }
63
241
  };
64
- const onShutdownSignal = (deps, controller) => async () => {
65
- if (controller.isShuttingDown()) {
242
+ const onShutdownSignal = (session) => async () => {
243
+ if (session.controller.isShuttingDown()) {
66
244
  return;
67
245
  }
68
- deps.log("Received shutdown signal - stopping dev runner...");
69
- await controller.shutdown(() => {
70
- deps.quitDefaultApplication();
246
+ session.deps.log("Received shutdown signal - stopping dev runner...");
247
+ await session.controller.shutdown(() => {
248
+ session.deps.quitDefaultApplication();
71
249
  });
72
250
  };
73
- const closeAndExit = async (deps, controller, code = 0) => {
251
+ const closeAndExit = async (session, code = 0) => {
74
252
  try {
75
- await controller.shutdown(() => undefined);
253
+ await session.controller.shutdown(() => undefined);
76
254
  }
77
255
  catch (error_) {
78
256
  error("Error closing server:", error_);
79
- return deps.exit(1);
257
+ return session.deps.exit(1);
258
+ }
259
+ return session.deps.exit(code);
260
+ };
261
+ const isSessionInactive = (session) => {
262
+ if (session.controller.isShuttingDown()) {
263
+ return true;
264
+ }
265
+ if (!session.failure.isDown()) {
266
+ return false;
80
267
  }
81
- return deps.exit(code);
268
+ parkSession(session);
269
+ return true;
82
270
  };
83
- const onApplicationShutdown = (deps, refreshTracker, controller) => () => {
84
- if (controller.isShuttingDown()) {
271
+ const stopForApplicationQuit = (session) => {
272
+ session.deps.log("Application quit - stopping dev runner...");
273
+ return closeAndExit(session);
274
+ };
275
+ const settleUnmount = (session, wasRefreshing) => {
276
+ if (isSessionInactive(session)) {
277
+ return;
278
+ }
279
+ if (!wasRefreshing) {
280
+ void stopForApplicationQuit(session);
85
281
  return;
86
282
  }
87
- if (refreshTracker.isRefreshing()) {
88
- deps.log("Application unmounted during Fast Refresh - restarting dev runner...");
89
- return deps.exit(RESTART_EXIT_CODE);
283
+ session.deps.log("Application unmounted during Fast Refresh - restarting dev runner...");
284
+ session.deps.exit(RESTART_EXIT_CODE);
285
+ };
286
+ const handleApplicationShutdown = (session) => {
287
+ if (isSessionInactive(session)) {
288
+ return;
90
289
  }
91
- deps.log("Application quit - stopping dev runner...");
92
- void closeAndExit(deps, controller);
290
+ const wasRefreshing = session.refreshTracker.isRefreshing();
291
+ session.failure.settleUnmount(() => {
292
+ settleUnmount(session, wasRefreshing);
293
+ });
294
+ };
295
+ const onApplicationShutdown = (session) => () => {
296
+ handleApplicationShutdown(session);
93
297
  };
94
298
  const refusedExitCode = () => (process.exitCode === undefined ? 1 : Number(process.exitCode));
95
- const connectApplication = async (deps, server, liveApplicationId, tracked) => {
96
- deps.watchApplicationShutdown(onApplicationShutdown(deps, tracked.refreshTracker, tracked.controller));
299
+ const connectApplication = async (session, liveApplicationId) => {
300
+ const { deps, server } = session;
301
+ deps.watchApplicationShutdown(onApplicationShutdown(session));
97
302
  const applicationId = (await deps.getConfiguredApplicationId(process.cwd())) ?? liveApplicationId;
98
303
  deps.log(`Connected application ID: ${applicationId}`);
99
- await deps.startMcpClient(applicationId, (id) => server.ssrLoadModule(id));
304
+ await deps.startMcpClient(applicationId, (id) => loadModuleExclusively(server, id));
305
+ };
306
+ const stopForOwnedApplicationId = async (session, liveApplicationId) => {
307
+ session.deps.log(`Another process already owns ${liveApplicationId}, so this session can never show a window - ` +
308
+ "stopping dev runner. Quit that instance or change applicationId, then start gtkx dev again.");
309
+ await closeAndExit(session, OWNED_ID_EXIT_CODE);
310
+ };
311
+ const stopForStoppedApplication = async (session, instance) => {
312
+ if (session.failure.hasReported()) {
313
+ session.deps.log("Application stopped before the dev runner attached.");
314
+ session.failure.fail();
315
+ return;
316
+ }
317
+ if (instance === "shutDown") {
318
+ await stopForApplicationQuit(session);
319
+ return;
320
+ }
321
+ session.deps.log("Application refused its command line - stopping dev runner...");
322
+ await closeAndExit(session, refusedExitCode());
100
323
  };
101
- const attachApplication = async (deps, server, tracked) => {
102
- const liveApplicationId = await deps.waitForApplicationId(APPLICATION_MOUNT_TIMEOUT_MS);
324
+ const connectLiveApplication = async (session, liveApplicationId) => {
325
+ const instance = session.deps.getApplicationInstance();
326
+ if (instance === "primary") {
327
+ await connectApplication(session, liveApplicationId);
328
+ return;
329
+ }
330
+ if (instance === "remote") {
331
+ await stopForOwnedApplicationId(session, liveApplicationId);
332
+ return;
333
+ }
334
+ await stopForStoppedApplication(session, instance);
335
+ };
336
+ const attachApplication = async (session) => {
337
+ const { deps, failure } = session;
338
+ const liveApplicationId = await deps.waitForApplicationId(APPLICATION_MOUNT_TIMEOUT_MS, () => !failure.isDown());
339
+ if (failure.isDown()) {
340
+ return;
341
+ }
103
342
  if (liveApplicationId === null) {
104
343
  deps.log("Entry did not mount an application - MCP client not started.");
105
344
  return;
106
345
  }
107
- if (!deps.isApplicationRegistered()) {
108
- deps.log("Application refused its command line - stopping dev runner...");
109
- return closeAndExit(deps, tracked.controller, refusedExitCode());
346
+ await connectLiveApplication(session, liveApplicationId);
347
+ };
348
+ const loadEntry = async (session, entryPath) => {
349
+ session.deps.log(`Loading entry: ${entryPath}`);
350
+ try {
351
+ await loadModuleExclusively(session.server, entryPath);
352
+ }
353
+ catch (error_) {
354
+ awaitMissingImport(session, entryPath, error_);
355
+ session.failure.fail(error_);
356
+ }
357
+ };
358
+ const hasApplicationStopped = (instance) => instance === "shutDown" || instance === "unregistered";
359
+ const isApplicationLost = (session) => session.failure.hasReported() && hasApplicationStopped(session.deps.getApplicationInstance());
360
+ const announceReady = (session) => {
361
+ if (isApplicationLost(session)) {
362
+ session.failure.fail();
363
+ }
364
+ if (isSessionInactive(session)) {
365
+ return;
110
366
  }
111
- await connectApplication(deps, server, liveApplicationId, tracked);
367
+ session.deps.log("HMR enabled - watching for changes...");
368
+ };
369
+ const createSession = (server, deps) => {
370
+ const refreshTracker = createRefreshTracker(deps.performRefresh);
371
+ return {
372
+ server,
373
+ deps: { ...deps, performRefresh: refreshTracker.performRefresh },
374
+ controller: createShutdownController(server, deps),
375
+ refreshTracker,
376
+ failure: createFailureTracker((cause) => {
377
+ announceFailure(server, cause);
378
+ }, refreshTracker.isRefreshing),
379
+ pendingSaves: new Map(),
380
+ };
112
381
  };
113
382
  const createDevRunner = (deps) => ({
114
383
  async run(entryPath) {
115
- const root = process.cwd();
116
- const server = await deps.createServer(createDevServerConfig(root, deps.plugins()));
117
- const refreshTracker = createRefreshTracker(deps.performRefresh);
118
- const refreshTrackingDeps = { ...deps, performRefresh: refreshTracker.performRefresh };
119
- const controller = createShutdownController(server, deps);
120
- deps.installShutdownHandlers(onShutdownSignal(deps, controller));
121
- server.watcher.on("change", onFileChange(server, refreshTrackingDeps, controller));
122
- deps.log(`Loading entry: ${entryPath}`);
123
- await server.ssrLoadModule(entryPath);
124
- await attachApplication(deps, server, { refreshTracker, controller });
125
- deps.log("HMR enabled - watching for changes...");
384
+ const server = await deps.createServer(createDevServerConfig(process.cwd(), deps.plugins()));
385
+ const session = createSession(server, deps);
386
+ deps.installShutdownHandlers(onShutdownSignal(session));
387
+ deps.watchUncaughtErrors((cause) => {
388
+ session.failure.report(cause);
389
+ });
390
+ watchProjectFiles(session);
391
+ await loadEntry(session, entryPath);
392
+ await attachApplication(session);
393
+ announceReady(session);
126
394
  },
127
395
  });
128
396
  export { createDevRunner };
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/dev/runner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InlineConfig, Plugin } from \"vite\";\nimport { error } from \"@gtkx/utils\";\nimport { createRefreshTracker, type RefreshTracker } from \"./refresh-tracker.js\";\nimport { RESTART_EXIT_CODE } from \"./supervisor.js\";\nimport { createDevServerConfig, type DevServer } from \"./vite-dev-server.js\";\n\ntype DevRunnerDeps = {\n createServer(config: InlineConfig): Promise<DevServer>;\n waitForApplicationId(timeoutMs: number): Promise<string | null>;\n getConfiguredApplicationId(root: string): Promise<string | undefined>;\n startMcpClient(\n applicationId: string,\n loadAppModule: (id: string) => Promise<Record<string, unknown>>,\n ): Promise<unknown>;\n stopMcpClient(): void;\n watchApplicationShutdown(onShutdown: () => void): void;\n isApplicationRegistered(): boolean;\n installShutdownHandlers(onSignal: () => void | Promise<void>): void;\n quitDefaultApplication(): void;\n performRefresh: () => void;\n isRefreshBoundary(module: Record<string, unknown>): boolean;\n plugins(): Plugin[];\n log(message: string): void;\n exit(code: number): never;\n};\n\ntype DevRunner = {\n run(entryPath: string): Promise<void>;\n};\n\ntype ShutdownController = {\n isShuttingDown: () => boolean;\n shutdown: (quitApplication: () => void) => Promise<void>;\n};\n\nconst APPLICATION_MOUNT_TIMEOUT_MS = 10_000;\n\nconst requestRestart = async (server: DevServer, deps: DevRunnerDeps): Promise<never> => {\n deps.log(\"Full restart (process restart)\");\n await server.close();\n\n return deps.exit(RESTART_EXIT_CODE);\n};\n\nconst handleFileChange = async (server: DevServer, deps: DevRunnerDeps, changedPath: string): Promise<void> => {\n const module = server.moduleGraph.getModuleById(changedPath);\n\n if (!module) {\n return;\n }\n\n deps.log(`File changed: ${changedPath}`);\n const loadedExports = module.ssrModule;\n\n if (loadedExports && !deps.isRefreshBoundary(loadedExports)) {\n await requestRestart(server, deps);\n\n return;\n }\n\n server.moduleGraph.invalidateModule(module);\n\n for (const importer of module.importers) {\n server.moduleGraph.invalidateModule(importer);\n }\n\n const newMod = await server.ssrLoadModule(changedPath);\n\n if (deps.isRefreshBoundary(newMod)) {\n deps.log(\"Running Fast Refresh...\");\n deps.performRefresh();\n deps.log(\"Fast Refresh complete\");\n\n return;\n }\n\n await requestRestart(server, deps);\n};\n\nconst createShutdownController = (server: DevServer, deps: DevRunnerDeps): ShutdownController => {\n let isShuttingDown = false;\n\n return {\n isShuttingDown: () => isShuttingDown,\n shutdown: async (quitApplication: () => void): Promise<void> => {\n if (isShuttingDown) {\n return;\n }\n\n isShuttingDown = true;\n quitApplication();\n deps.stopMcpClient();\n await server.close();\n },\n };\n};\n\nconst reloadChangedFile = async (server: DevServer, deps: DevRunnerDeps, changedPath: string): Promise<void> => {\n try {\n await handleFileChange(server, deps, changedPath);\n } catch (error_) {\n error(\"Hot reload failed:\", error_);\n }\n};\n\nconst onFileChange =\n (server: DevServer, deps: DevRunnerDeps, controller: ShutdownController): ((changedPath: string) => void) =>\n (changedPath) => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n void reloadChangedFile(server, deps, changedPath);\n };\n\nconst onShutdownSignal =\n (deps: DevRunnerDeps, controller: ShutdownController): (() => Promise<void>) =>\n async () => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n deps.log(\"Received shutdown signal - stopping dev runner...\");\n\n await controller.shutdown(() => {\n deps.quitDefaultApplication();\n });\n };\n\nconst closeAndExit = async (\n deps: DevRunnerDeps,\n controller: ShutdownController,\n code = 0,\n): Promise<never> => {\n try {\n await controller.shutdown((): void => undefined);\n } catch (error_) {\n error(\"Error closing server:\", error_);\n\n return deps.exit(1);\n }\n\n return deps.exit(code);\n};\n\nconst onApplicationShutdown =\n (deps: DevRunnerDeps, refreshTracker: RefreshTracker, controller: ShutdownController): (() => void) =>\n () => {\n if (controller.isShuttingDown()) {\n return;\n }\n\n if (refreshTracker.isRefreshing()) {\n deps.log(\"Application unmounted during Fast Refresh - restarting dev runner...\");\n\n return deps.exit(RESTART_EXIT_CODE);\n }\n\n deps.log(\"Application quit - stopping dev runner...\");\n void closeAndExit(deps, controller);\n };\n\nconst refusedExitCode = (): number => (process.exitCode === undefined ? 1 : Number(process.exitCode));\n\nconst connectApplication = async (\n deps: DevRunnerDeps,\n server: DevServer,\n liveApplicationId: string,\n tracked: { refreshTracker: RefreshTracker; controller: ShutdownController },\n): Promise<void> => {\n deps.watchApplicationShutdown(onApplicationShutdown(deps, tracked.refreshTracker, tracked.controller));\n const applicationId = (await deps.getConfiguredApplicationId(process.cwd())) ?? liveApplicationId;\n deps.log(`Connected application ID: ${applicationId}`);\n await deps.startMcpClient(applicationId, (id) => server.ssrLoadModule(id));\n};\n\nconst attachApplication = async (\n deps: DevRunnerDeps,\n server: DevServer,\n tracked: { refreshTracker: RefreshTracker; controller: ShutdownController },\n): Promise<void> => {\n const liveApplicationId = await deps.waitForApplicationId(APPLICATION_MOUNT_TIMEOUT_MS);\n\n if (liveApplicationId === null) {\n deps.log(\"Entry did not mount an application - MCP client not started.\");\n\n return;\n }\n\n if (!deps.isApplicationRegistered()) {\n deps.log(\"Application refused its command line - stopping dev runner...\");\n\n return closeAndExit(deps, tracked.controller, refusedExitCode());\n }\n\n await connectApplication(deps, server, liveApplicationId, tracked);\n};\n\nconst createDevRunner = (deps: DevRunnerDeps): DevRunner => ({\n async run(entryPath: string): Promise<void> {\n const root = process.cwd();\n const server = await deps.createServer(createDevServerConfig(root, deps.plugins()));\n const refreshTracker = createRefreshTracker(deps.performRefresh);\n const refreshTrackingDeps: DevRunnerDeps = { ...deps, performRefresh: refreshTracker.performRefresh };\n const controller = createShutdownController(server, deps);\n deps.installShutdownHandlers(onShutdownSignal(deps, controller));\n server.watcher.on(\"change\", onFileChange(server, refreshTrackingDeps, controller));\n deps.log(`Loading entry: ${entryPath}`);\n await server.ssrLoadModule(entryPath);\n await attachApplication(deps, server, { refreshTracker, controller });\n deps.log(\"HMR enabled - watching for changes...\");\n },\n});\n\nexport type { DevServer } from \"./vite-dev-server.js\";\nexport { createDevRunner, type DevRunnerDeps };\n"]}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/dev/runner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ApplicationInstance } from \"@gtkx/runtime/internal\";\nimport type { InlineConfig, Plugin } from \"vite\";\nimport { error, warn } from \"@gtkx/utils\";\nimport { loadModuleExclusively, withExclusiveLoad } from \"../internal/module-loads.js\";\nimport { createChangeQueue, type WatchedChange } from \"./change-queue.js\";\nimport { createFailureTracker, type FailureTracker } from \"./failure-tracker.js\";\nimport { isMissingImport, missingImportName } from \"./missing-import.js\";\nimport { createRefreshTracker, type RefreshTracker } from \"./refresh-tracker.js\";\nimport { RESTART_EXIT_CODE } from \"./supervisor.js\";\nimport {\n createDevServerConfig,\n type DevServer,\n type DevServerChangedModule,\n type DevServerWatchEvent,\n isServerConfigFile,\n} from \"./vite-dev-server.js\";\n\ntype LoadAppModule = (id: string) => Promise<Record<string, unknown>>;\n\ntype DevRunnerDeps = {\n createServer(config: InlineConfig): Promise<DevServer>;\n waitForApplicationId(timeoutMs: number, shouldKeepWaiting: () => boolean): Promise<string | null>;\n getConfiguredApplicationId(root: string): Promise<string | undefined>;\n startMcpClient(applicationId: string, loadAppModule: LoadAppModule): Promise<unknown>;\n stopMcpClient(): void;\n watchApplicationShutdown(onShutdown: () => void): void;\n watchUncaughtErrors(onUncaughtError: (cause: unknown) => void): void;\n getApplicationInstance(): ApplicationInstance;\n installShutdownHandlers(onSignal: () => void | Promise<void>): void;\n quitDefaultApplication(): void;\n performRefresh: () => void;\n isRefreshBoundary(module: Record<string, unknown>): boolean;\n staleExportName(previous: Record<string, unknown>, current: Record<string, unknown>): string | null;\n readFileRevision(path: string): Promise<string>;\n plugins(): Plugin[];\n log(message: string): void;\n exit(code: number): never;\n};\n\ntype DevRunner = {\n run(entryPath: string): Promise<void>;\n};\n\ntype ShutdownController = {\n isShuttingDown: () => boolean;\n shutdown: (quitApplication: () => void) => Promise<void>;\n};\n\ntype DevSession = {\n server: DevServer;\n deps: DevRunnerDeps;\n controller: ShutdownController;\n refreshTracker: RefreshTracker;\n failure: FailureTracker;\n pendingSaves: Map<string, string>;\n};\n\ntype SettledLoad = {\n loadedExports: Record<string, unknown>;\n isSettled: boolean;\n};\n\ntype SettleAttempt = {\n loadedExports: Record<string, unknown> | null;\n module: DevServerChangedModule;\n};\n\nconst APPLICATION_MOUNT_TIMEOUT_MS = 10_000;\nconst OWNED_ID_EXIT_CODE = 1;\nconst LOAD_ATTEMPT_LIMIT = 5;\nconst WATCH_EVENTS: DevServerWatchEvent[] = [\"add\", \"change\", \"unlink\"];\nconst SKIP_REASON = `did not settle in ${String(LOAD_ATTEMPT_LIMIT)} attempts; save it again to patch the window.`;\nconst DROPPED_REFRESH = \"Fast Refresh dropped\";\nconst SAVE_ACTION = \"File changed\";\nconst RETRY_ACTION = \"Retrying pending save\";\n\nconst announceFailure = (server: DevServer, cause: unknown): void => {\n if (cause instanceof Error) {\n server.ssrFixStacktrace(cause);\n }\n\n error(\"Application error; keeping the dev server up. Fix the error and save again.\", cause);\n};\n\nconst parkSession = (session: DevSession): void => {\n session.deps.log(\"Waiting for a change to restart the application...\");\n};\n\nconst requestRestart = async (session: DevSession): Promise<never> => {\n session.deps.log(\"Full restart (process restart)\");\n\n try {\n await session.server.close();\n } catch (error_) {\n error(\"Error closing server before the restart:\", error_);\n }\n\n return session.deps.exit(RESTART_EXIT_CODE);\n};\n\nconst requiresRestart = (session: DevSession, module: DevServerChangedModule): boolean => {\n if (session.failure.isDown()) {\n return true;\n }\n\n const loadedExports = module.ssrModule;\n\n if (!loadedExports) {\n return false;\n }\n\n return !session.deps.isRefreshBoundary(loadedExports);\n};\n\nconst invalidateChangedModule = (session: DevSession, module: DevServerChangedModule): void => {\n session.server.moduleGraph.invalidateModule(module);\n\n for (const importer of module.importers) {\n session.server.moduleGraph.invalidateModule(importer);\n }\n};\n\nconst isEvaluationCurrent = (\n session: DevSession,\n changedPath: string,\n loadedExports: Record<string, unknown>,\n): boolean => {\n const evaluated = session.server.moduleGraph.getModuleById(changedPath);\n\n if (!evaluated?.ssrTransformResult) {\n return false;\n }\n\n return evaluated.ssrModule === loadedExports;\n};\n\nconst loadInvalidatedModule = (\n session: DevSession,\n changedPath: string,\n module: DevServerChangedModule,\n): Promise<SettledLoad> =>\n withExclusiveLoad(session.server, async () => {\n const revision = await session.deps.readFileRevision(changedPath);\n invalidateChangedModule(session, module);\n const loadedExports = await session.server.ssrLoadModule(changedPath);\n const settledRevision = await session.deps.readFileRevision(changedPath);\n\n return {\n loadedExports,\n isSettled: settledRevision === revision && isEvaluationCurrent(session, changedPath, loadedExports),\n };\n });\n\nconst settleAttempt = async (\n session: DevSession,\n changedPath: string,\n module: DevServerChangedModule,\n): Promise<SettleAttempt> => {\n const { loadedExports, isSettled } = await loadInvalidatedModule(session, changedPath, module);\n\n if (isSettled) {\n return { loadedExports, module };\n }\n\n return { loadedExports: null, module: session.server.moduleGraph.getModuleById(changedPath) ?? module };\n};\n\nconst loadSettledExports = async (\n session: DevSession,\n changedPath: string,\n changedModule: DevServerChangedModule,\n): Promise<Record<string, unknown> | null> => {\n let module = changedModule;\n\n for (let round = 0; round < LOAD_ATTEMPT_LIMIT && !session.controller.isShuttingDown(); round++) {\n const attempt = await settleAttempt(session, changedPath, module);\n\n if (attempt.loadedExports) {\n return attempt.loadedExports;\n }\n\n module = attempt.module;\n }\n\n return null;\n};\n\nconst droppedExportName = (previous: Record<string, unknown>, current: Record<string, unknown>): string | null => {\n const kept = new Set(Object.keys(current));\n\n for (const name of Object.keys(previous)) {\n if (!kept.has(name)) {\n return name;\n }\n }\n\n return null;\n};\n\nconst unpatchedExportReason = (\n session: DevSession,\n previous: Record<string, unknown> | null,\n current: Record<string, unknown>,\n): string | null => {\n if (!previous) {\n return null;\n }\n\n const dropped = droppedExportName(previous, current);\n\n if (dropped !== null) {\n return `no longer exports ${dropped}, which its importers still hold`;\n }\n\n const stale = session.deps.staleExportName(previous, current);\n\n if (stale === null) {\n return null;\n }\n\n return `renamed the component it exports as ${stale}, which the window is still rendering`;\n};\n\nconst refreshChangedModule = async (\n session: DevSession,\n changedPath: string,\n changedModule: DevServerChangedModule,\n previous: Record<string, unknown> | null,\n): Promise<void> => {\n const loadedExports = await loadSettledExports(session, changedPath, changedModule);\n\n if (session.controller.isShuttingDown()) {\n return;\n }\n\n if (!loadedExports) {\n warn(`Fast Refresh skipped: ${changedPath} ${SKIP_REASON}`);\n\n return;\n }\n\n if (!session.deps.isRefreshBoundary(loadedExports)) {\n await requestRestart(session);\n\n return;\n }\n\n const unpatched = unpatchedExportReason(session, previous, loadedExports);\n\n if (unpatched !== null) {\n warn(`${DROPPED_REFRESH}: ${changedPath} ${unpatched}`);\n await requestRestart(session);\n\n return;\n }\n\n session.pendingSaves.delete(changedPath);\n session.deps.log(\"Running Fast Refresh...\");\n session.deps.performRefresh();\n session.deps.log(\"Fast Refresh complete\");\n};\n\nconst applyModuleChange = async (session: DevSession, changedPath: string, action: string): Promise<void> => {\n const module = session.server.moduleGraph.getModuleById(changedPath);\n\n if (!module) {\n return;\n }\n\n session.deps.log(`${action}: ${changedPath}`);\n\n if (requiresRestart(session, module)) {\n await requestRestart(session);\n\n return;\n }\n\n await refreshChangedModule(session, changedPath, module, module.ssrModule ?? null);\n};\n\nconst awaitMissingImport = (session: DevSession, changedPath: string, cause: unknown): void => {\n const missingName = missingImportName(cause);\n\n if (missingName === null) {\n session.pendingSaves.delete(changedPath);\n\n return;\n }\n\n session.pendingSaves.set(changedPath, missingName);\n};\n\nconst applySave = async (session: DevSession, changedPath: string, action: string): Promise<void> => {\n try {\n await applyModuleChange(session, changedPath, action);\n } catch (error_) {\n if (session.controller.isShuttingDown()) {\n return;\n }\n\n awaitMissingImport(session, changedPath, error_);\n error(\"Hot reload failed:\", error_);\n }\n};\n\nconst savesAwaiting = (session: DevSession, createdPath: string): string[] =>\n [...session.pendingSaves]\n .filter(([, missingName]) => isMissingImport(createdPath, missingName))\n .map(([changedPath]) => changedPath);\n\nconst retryPendingSaves = async (session: DevSession, waiting: string[]): Promise<void> => {\n for (const changedPath of waiting) {\n if (session.controller.isShuttingDown()) {\n return;\n }\n\n session.pendingSaves.delete(changedPath);\n await applySave(session, changedPath, RETRY_ACTION);\n }\n};\n\nconst handleFileCreate = async (session: DevSession, createdPath: string): Promise<void> => {\n const waiting = savesAwaiting(session, createdPath);\n\n if (waiting.length === 0) {\n return;\n }\n\n session.deps.log(`File created: ${createdPath}`);\n\n if (session.failure.isDown()) {\n await requestRestart(session);\n\n return;\n }\n\n await retryPendingSaves(session, waiting);\n};\n\nconst handleFileRemove = async (session: DevSession, removedPath: string): Promise<void> => {\n if (!session.server.moduleGraph.getModuleById(removedPath)) {\n return;\n }\n\n session.deps.log(`File removed: ${removedPath}`);\n await requestRestart(session);\n};\n\nconst createShutdownController = (server: DevServer, deps: DevRunnerDeps): ShutdownController => {\n let isShuttingDown = false;\n\n return {\n isShuttingDown: () => isShuttingDown,\n shutdown: async (quitApplication: () => void): Promise<void> => {\n if (isShuttingDown) {\n return;\n }\n\n isShuttingDown = true;\n quitApplication();\n deps.stopMcpClient();\n await server.close();\n },\n };\n};\n\nconst restartForServerConfig = async (session: DevSession, changedPath: string): Promise<void> => {\n session.deps.log(`Server config changed: ${changedPath}`);\n await requestRestart(session);\n};\n\nconst applyChange = async (session: DevSession, change: WatchedChange): Promise<void> => {\n if (session.controller.isShuttingDown()) {\n return;\n }\n\n if (isServerConfigFile(session.server.config, change.path)) {\n await restartForServerConfig(session, change.path);\n\n return;\n }\n\n if (change.event === \"add\") {\n await handleFileCreate(session, change.path);\n\n return;\n }\n\n if (change.event === \"unlink\") {\n await handleFileRemove(session, change.path);\n\n return;\n }\n\n await applySave(session, change.path, SAVE_ACTION);\n};\n\nconst watchProjectFiles = (session: DevSession): void => {\n const queue = createChangeQueue((change) => applyChange(session, change));\n\n for (const event of WATCH_EVENTS) {\n session.server.watcher.on(event, (path) => {\n queue.enqueue({ event, path });\n });\n }\n};\n\nconst onShutdownSignal = (session: DevSession): (() => Promise<void>) => async () => {\n if (session.controller.isShuttingDown()) {\n return;\n }\n\n session.deps.log(\"Received shutdown signal - stopping dev runner...\");\n\n await session.controller.shutdown(() => {\n session.deps.quitDefaultApplication();\n });\n};\n\nconst closeAndExit = async (session: DevSession, code = 0): Promise<never> => {\n try {\n await session.controller.shutdown((): void => undefined);\n } catch (error_) {\n error(\"Error closing server:\", error_);\n\n return session.deps.exit(1);\n }\n\n return session.deps.exit(code);\n};\n\nconst isSessionInactive = (session: DevSession): boolean => {\n if (session.controller.isShuttingDown()) {\n return true;\n }\n\n if (!session.failure.isDown()) {\n return false;\n }\n\n parkSession(session);\n\n return true;\n};\n\nconst stopForApplicationQuit = (session: DevSession): Promise<never> => {\n session.deps.log(\"Application quit - stopping dev runner...\");\n\n return closeAndExit(session);\n};\n\nconst settleUnmount = (session: DevSession, wasRefreshing: boolean): void => {\n if (isSessionInactive(session)) {\n return;\n }\n\n if (!wasRefreshing) {\n void stopForApplicationQuit(session);\n\n return;\n }\n\n session.deps.log(\"Application unmounted during Fast Refresh - restarting dev runner...\");\n session.deps.exit(RESTART_EXIT_CODE);\n};\n\nconst handleApplicationShutdown = (session: DevSession): void => {\n if (isSessionInactive(session)) {\n return;\n }\n\n const wasRefreshing = session.refreshTracker.isRefreshing();\n\n session.failure.settleUnmount(() => {\n settleUnmount(session, wasRefreshing);\n });\n};\n\nconst onApplicationShutdown = (session: DevSession): (() => void) => () => {\n handleApplicationShutdown(session);\n};\n\nconst refusedExitCode = (): number => (process.exitCode === undefined ? 1 : Number(process.exitCode));\n\nconst connectApplication = async (session: DevSession, liveApplicationId: string): Promise<void> => {\n const { deps, server } = session;\n deps.watchApplicationShutdown(onApplicationShutdown(session));\n const applicationId = (await deps.getConfiguredApplicationId(process.cwd())) ?? liveApplicationId;\n deps.log(`Connected application ID: ${applicationId}`);\n await deps.startMcpClient(applicationId, (id) => loadModuleExclusively(server, id));\n};\n\nconst stopForOwnedApplicationId = async (session: DevSession, liveApplicationId: string): Promise<void> => {\n session.deps.log(\n `Another process already owns ${liveApplicationId}, so this session can never show a window - ` +\n \"stopping dev runner. Quit that instance or change applicationId, then start gtkx dev again.\",\n );\n\n await closeAndExit(session, OWNED_ID_EXIT_CODE);\n};\n\nconst stopForStoppedApplication = async (session: DevSession, instance: ApplicationInstance): Promise<void> => {\n if (session.failure.hasReported()) {\n session.deps.log(\"Application stopped before the dev runner attached.\");\n session.failure.fail();\n\n return;\n }\n\n if (instance === \"shutDown\") {\n await stopForApplicationQuit(session);\n\n return;\n }\n\n session.deps.log(\"Application refused its command line - stopping dev runner...\");\n await closeAndExit(session, refusedExitCode());\n};\n\nconst connectLiveApplication = async (session: DevSession, liveApplicationId: string): Promise<void> => {\n const instance = session.deps.getApplicationInstance();\n\n if (instance === \"primary\") {\n await connectApplication(session, liveApplicationId);\n\n return;\n }\n\n if (instance === \"remote\") {\n await stopForOwnedApplicationId(session, liveApplicationId);\n\n return;\n }\n\n await stopForStoppedApplication(session, instance);\n};\n\nconst attachApplication = async (session: DevSession): Promise<void> => {\n const { deps, failure } = session;\n\n const liveApplicationId = await deps.waitForApplicationId(\n APPLICATION_MOUNT_TIMEOUT_MS,\n () => !failure.isDown(),\n );\n\n if (failure.isDown()) {\n return;\n }\n\n if (liveApplicationId === null) {\n deps.log(\"Entry did not mount an application - MCP client not started.\");\n\n return;\n }\n\n await connectLiveApplication(session, liveApplicationId);\n};\n\nconst loadEntry = async (session: DevSession, entryPath: string): Promise<void> => {\n session.deps.log(`Loading entry: ${entryPath}`);\n\n try {\n await loadModuleExclusively(session.server, entryPath);\n } catch (error_) {\n awaitMissingImport(session, entryPath, error_);\n session.failure.fail(error_);\n }\n};\n\nconst hasApplicationStopped = (instance: ApplicationInstance): boolean =>\n instance === \"shutDown\" || instance === \"unregistered\";\n\nconst isApplicationLost = (session: DevSession): boolean =>\n session.failure.hasReported() && hasApplicationStopped(session.deps.getApplicationInstance());\n\nconst announceReady = (session: DevSession): void => {\n if (isApplicationLost(session)) {\n session.failure.fail();\n }\n\n if (isSessionInactive(session)) {\n return;\n }\n\n session.deps.log(\"HMR enabled - watching for changes...\");\n};\n\nconst createSession = (server: DevServer, deps: DevRunnerDeps): DevSession => {\n const refreshTracker = createRefreshTracker(deps.performRefresh);\n\n return {\n server,\n deps: { ...deps, performRefresh: refreshTracker.performRefresh },\n controller: createShutdownController(server, deps),\n refreshTracker,\n failure: createFailureTracker((cause) => {\n announceFailure(server, cause);\n }, refreshTracker.isRefreshing),\n pendingSaves: new Map(),\n };\n};\n\nconst createDevRunner = (deps: DevRunnerDeps): DevRunner => ({\n async run(entryPath: string): Promise<void> {\n const server = await deps.createServer(createDevServerConfig(process.cwd(), deps.plugins()));\n const session = createSession(server, deps);\n deps.installShutdownHandlers(onShutdownSignal(session));\n\n deps.watchUncaughtErrors((cause) => {\n session.failure.report(cause);\n });\n\n watchProjectFiles(session);\n await loadEntry(session, entryPath);\n await attachApplication(session);\n announceReady(session);\n },\n});\n\nexport { createDevRunner, type DevRunnerDeps };\n"]}
@@ -19,7 +19,6 @@ type DevSupervisorOptions = {
19
19
  fork?: ForkRunner | undefined;
20
20
  };
21
21
  declare const RESTART_EXIT_CODE = 75;
22
- declare const defaultForkRunner: ForkRunner;
23
22
  declare const runDevSupervisor: (options: DevSupervisorOptions) => Promise<never>;
24
- export { RESTART_EXIT_CODE, defaultForkRunner, runDevSupervisor, type DevWatch, type ForkRunner, type SupervisedChild, };
23
+ export { RESTART_EXIT_CODE, runDevSupervisor, type DevWatch, };
25
24
  //# sourceMappingURL=supervisor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/dev/supervisor.ts"],"names":[],"mappings":"AAOA,KAAK,eAAe,GAAG;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAChD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IAChG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;CACrG,CAAC;AAEF,KAAK,UAAU,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,KAAK,eAAe,CAAC;AAE/G,KAAK,QAAQ,GAAG;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC,CAAC;AAgBF,KAAK,oBAAoB,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CACjC,CAAC;AAOF,QAAA,MAAM,iBAAiB,KAAK,CAAC;AAe7B,QAAA,MAAM,iBAAiB,EAAE,UAUxB,CAAC;AAoNF,QAAA,MAAM,gBAAgB,GAAU,SAAS,oBAAoB,KAAG,OAAO,CAAC,KAAK,CAsB5E,CAAC;AAEF,OAAO,EACH,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,eAAe,GACvB,CAAC"}
1
+ {"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/dev/supervisor.ts"],"names":[],"mappings":"AAOA,KAAK,eAAe,GAAG;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAChD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IAChG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;CACrG,CAAC;AAEF,KAAK,UAAU,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,KAAK,eAAe,CAAC;AAE/G,KAAK,QAAQ,GAAG;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC,CAAC;AAgBF,KAAK,oBAAoB,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CACjC,CAAC;AAOF,QAAA,MAAM,iBAAiB,KAAK,CAAC;AA6O7B,QAAA,MAAM,gBAAgB,GAAU,SAAS,oBAAoB,KAAG,OAAO,CAAC,KAAK,CAsB5E,CAAC;AAEF,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,QAAQ,GAChB,CAAC"}
@@ -197,5 +197,5 @@ const runDevSupervisor = async (options) => {
197
197
  launch(state);
198
198
  return new Promise(() => undefined);
199
199
  };
200
- export { RESTART_EXIT_CODE, defaultForkRunner, runDevSupervisor, };
200
+ export { RESTART_EXIT_CODE, runDevSupervisor, };
201
201
  //# sourceMappingURL=supervisor.js.map