@gtkx/cli 1.6.0 → 2.0.0-beta.10

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 (578) hide show
  1. package/README.md +47 -44
  2. package/bin/gtkx-dev-runner.js +5 -1
  3. package/bin/gtkx.js +5 -1
  4. package/dist/builder.d.ts +1 -0
  5. package/dist/builder.d.ts.map +1 -1
  6. package/dist/builder.js +44 -12
  7. package/dist/builder.js.map +1 -1
  8. package/dist/cli.d.ts +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +14 -2
  11. package/dist/cli.js.map +1 -1
  12. package/dist/codegen/config-dependencies.d.ts +3 -0
  13. package/dist/codegen/config-dependencies.d.ts.map +1 -0
  14. package/dist/codegen/config-dependencies.js +355 -0
  15. package/dist/codegen/config-dependencies.js.map +1 -0
  16. package/dist/codegen/freshness.d.ts.map +1 -1
  17. package/dist/codegen/freshness.js +49 -16
  18. package/dist/codegen/freshness.js.map +1 -1
  19. package/dist/codegen/reference.d.ts.map +1 -1
  20. package/dist/codegen/reference.js +2 -7
  21. package/dist/codegen/reference.js.map +1 -1
  22. package/dist/codegen/report.d.ts.map +1 -1
  23. package/dist/codegen/report.js +5 -16
  24. package/dist/codegen/report.js.map +1 -1
  25. package/dist/codegen/run-codegen.d.ts +9 -8
  26. package/dist/codegen/run-codegen.d.ts.map +1 -1
  27. package/dist/codegen/run-codegen.js +60 -113
  28. package/dist/codegen/run-codegen.js.map +1 -1
  29. package/dist/codegen/store-resolver.d.ts +3 -2
  30. package/dist/codegen/store-resolver.d.ts.map +1 -1
  31. package/dist/codegen/store-resolver.js +14 -20
  32. package/dist/codegen/store-resolver.js.map +1 -1
  33. package/dist/commands/build.d.ts +5 -0
  34. package/dist/commands/build.d.ts.map +1 -1
  35. package/dist/commands/build.js +83 -10
  36. package/dist/commands/build.js.map +1 -1
  37. package/dist/commands/cleanup.d.ts +9 -0
  38. package/dist/commands/cleanup.d.ts.map +1 -0
  39. package/dist/commands/cleanup.js +42 -0
  40. package/dist/commands/cleanup.js.map +1 -0
  41. package/dist/commands/codegen.d.ts +1 -0
  42. package/dist/commands/codegen.d.ts.map +1 -1
  43. package/dist/commands/codegen.js +6 -5
  44. package/dist/commands/codegen.js.map +1 -1
  45. package/dist/commands/deploy.d.ts +5 -0
  46. package/dist/commands/deploy.d.ts.map +1 -1
  47. package/dist/commands/deploy.js +10 -2
  48. package/dist/commands/deploy.js.map +1 -1
  49. package/dist/commands/dev.d.ts +9 -0
  50. package/dist/commands/dev.d.ts.map +1 -1
  51. package/dist/commands/dev.js +31 -4
  52. package/dist/commands/dev.js.map +1 -1
  53. package/dist/commands/docs.d.ts.map +1 -1
  54. package/dist/commands/docs.js +6 -15
  55. package/dist/commands/docs.js.map +1 -1
  56. package/dist/deploy/depends.d.ts.map +1 -1
  57. package/dist/deploy/depends.js +24 -2
  58. package/dist/deploy/depends.js.map +1 -1
  59. package/dist/deploy/download.d.ts +7 -3
  60. package/dist/deploy/download.d.ts.map +1 -1
  61. package/dist/deploy/download.js +19 -20
  62. package/dist/deploy/download.js.map +1 -1
  63. package/dist/deploy/freedesktop/copyright.d.ts.map +1 -1
  64. package/dist/deploy/freedesktop/copyright.js +2 -13
  65. package/dist/deploy/freedesktop/copyright.js.map +1 -1
  66. package/dist/deploy/freedesktop/metainfo.d.ts.map +1 -1
  67. package/dist/deploy/freedesktop/metainfo.js +41 -2
  68. package/dist/deploy/freedesktop/metainfo.js.map +1 -1
  69. package/dist/deploy/freedesktop/validate.d.ts.map +1 -1
  70. package/dist/deploy/freedesktop/validate.js +58 -14
  71. package/dist/deploy/freedesktop/validate.js.map +1 -1
  72. package/dist/deploy/freedesktop/xml.d.ts.map +1 -1
  73. package/dist/deploy/freedesktop/xml.js +21 -25
  74. package/dist/deploy/freedesktop/xml.js.map +1 -1
  75. package/dist/deploy/native-addon.d.ts +5 -0
  76. package/dist/deploy/native-addon.d.ts.map +1 -0
  77. package/dist/deploy/native-addon.js +134 -0
  78. package/dist/deploy/native-addon.js.map +1 -0
  79. package/dist/deploy/nfpm/config.d.ts +3 -2
  80. package/dist/deploy/nfpm/config.d.ts.map +1 -1
  81. package/dist/deploy/nfpm/config.js +7 -4
  82. package/dist/deploy/nfpm/config.js.map +1 -1
  83. package/dist/deploy/nfpm/contents.d.ts.map +1 -1
  84. package/dist/deploy/nfpm/contents.js +8 -0
  85. package/dist/deploy/nfpm/contents.js.map +1 -1
  86. package/dist/deploy/node-runtime/download.js +2 -2
  87. package/dist/deploy/node-runtime/download.js.map +1 -1
  88. package/dist/deploy/node-runtime/elf.d.ts +4 -1
  89. package/dist/deploy/node-runtime/elf.d.ts.map +1 -1
  90. package/dist/deploy/node-runtime/elf.js +34 -5
  91. package/dist/deploy/node-runtime/elf.js.map +1 -1
  92. package/dist/deploy/node-runtime/guard.d.ts.map +1 -1
  93. package/dist/deploy/node-runtime/guard.js +7 -14
  94. package/dist/deploy/node-runtime/guard.js.map +1 -1
  95. package/dist/deploy/node-runtime/index.d.ts +3 -1
  96. package/dist/deploy/node-runtime/index.d.ts.map +1 -1
  97. package/dist/deploy/node-runtime/index.js +103 -10
  98. package/dist/deploy/node-runtime/index.js.map +1 -1
  99. package/dist/deploy/node-runtime/license.d.ts.map +1 -1
  100. package/dist/deploy/node-runtime/license.js +2 -9
  101. package/dist/deploy/node-runtime/license.js.map +1 -1
  102. package/dist/deploy/node-runtime/sonames.d.ts +5 -0
  103. package/dist/deploy/node-runtime/sonames.d.ts.map +1 -0
  104. package/dist/deploy/node-runtime/sonames.js +13 -0
  105. package/dist/deploy/node-runtime/sonames.js.map +1 -0
  106. package/dist/deploy/notices/node-runtime.js +2 -2
  107. package/dist/deploy/notices/node-runtime.js.map +1 -1
  108. package/dist/deploy/notices/packages.d.ts.map +1 -1
  109. package/dist/deploy/notices/packages.js +3 -10
  110. package/dist/deploy/notices/packages.js.map +1 -1
  111. package/dist/deploy/payload/copy-tree.d.ts.map +1 -1
  112. package/dist/deploy/payload/copy-tree.js +3 -3
  113. package/dist/deploy/payload/copy-tree.js.map +1 -1
  114. package/dist/deploy/payload/launcher.d.ts.map +1 -1
  115. package/dist/deploy/payload/launcher.js +14 -1
  116. package/dist/deploy/payload/launcher.js.map +1 -1
  117. package/dist/deploy/payload/stage.d.ts +2 -1
  118. package/dist/deploy/payload/stage.d.ts.map +1 -1
  119. package/dist/deploy/payload/stage.js +47 -8
  120. package/dist/deploy/payload/stage.js.map +1 -1
  121. package/dist/deploy/run-deploy.d.ts +2 -0
  122. package/dist/deploy/run-deploy.d.ts.map +1 -1
  123. package/dist/deploy/run-deploy.js +197 -52
  124. package/dist/deploy/run-deploy.js.map +1 -1
  125. package/dist/deploy/settings/arch.d.ts +9 -3
  126. package/dist/deploy/settings/arch.d.ts.map +1 -1
  127. package/dist/deploy/settings/arch.js +27 -6
  128. package/dist/deploy/settings/arch.js.map +1 -1
  129. package/dist/deploy/settings/build-manifest.d.ts +6 -1
  130. package/dist/deploy/settings/build-manifest.d.ts.map +1 -1
  131. package/dist/deploy/settings/build-manifest.js +17 -17
  132. package/dist/deploy/settings/build-manifest.js.map +1 -1
  133. package/dist/deploy/settings/extra-files.d.ts +1 -1
  134. package/dist/deploy/settings/extra-files.d.ts.map +1 -1
  135. package/dist/deploy/settings/extra-files.js +25 -3
  136. package/dist/deploy/settings/extra-files.js.map +1 -1
  137. package/dist/deploy/settings/index.d.ts +3 -1
  138. package/dist/deploy/settings/index.d.ts.map +1 -1
  139. package/dist/deploy/settings/index.js +4 -2
  140. package/dist/deploy/settings/index.js.map +1 -1
  141. package/dist/deploy/settings/libraries.d.ts.map +1 -1
  142. package/dist/deploy/settings/libraries.js +3 -19
  143. package/dist/deploy/settings/libraries.js.map +1 -1
  144. package/dist/deploy/settings/paths.d.ts +4 -3
  145. package/dist/deploy/settings/paths.d.ts.map +1 -1
  146. package/dist/deploy/settings/paths.js +118 -19
  147. package/dist/deploy/settings/paths.js.map +1 -1
  148. package/dist/deploy/settings/screenshots.d.ts.map +1 -1
  149. package/dist/deploy/settings/screenshots.js +6 -31
  150. package/dist/deploy/settings/screenshots.js.map +1 -1
  151. package/dist/deploy/targets/appimage.d.ts.map +1 -1
  152. package/dist/deploy/targets/appimage.js +1 -0
  153. package/dist/deploy/targets/appimage.js.map +1 -1
  154. package/dist/deploy/targets/flatpak-pnpm.js +4 -4
  155. package/dist/deploy/targets/flatpak-pnpm.js.map +1 -1
  156. package/dist/deploy/targets/flatpak-source.d.ts.map +1 -1
  157. package/dist/deploy/targets/flatpak-source.js +17 -6
  158. package/dist/deploy/targets/flatpak-source.js.map +1 -1
  159. package/dist/deploy/targets/flatpak-sources.js +1 -1
  160. package/dist/deploy/targets/flatpak-sources.js.map +1 -1
  161. package/dist/deploy/targets/flatpak.d.ts.map +1 -1
  162. package/dist/deploy/targets/flatpak.js +1 -0
  163. package/dist/deploy/targets/flatpak.js.map +1 -1
  164. package/dist/deploy/targets/nfpm-target.d.ts.map +1 -1
  165. package/dist/deploy/targets/nfpm-target.js +13 -7
  166. package/dist/deploy/targets/nfpm-target.js.map +1 -1
  167. package/dist/deploy/types.d.ts +5 -2
  168. package/dist/deploy/types.d.ts.map +1 -1
  169. package/dist/deploy/types.js.map +1 -1
  170. package/dist/deploy/vendored/appimagetool.js +2 -2
  171. package/dist/deploy/vendored/appimagetool.js.map +1 -1
  172. package/dist/deploy/vendored/nfpm.js +1 -1
  173. package/dist/deploy/vendored/nfpm.js.map +1 -1
  174. package/dist/dev/catalog-writes.d.ts +8 -0
  175. package/dist/dev/catalog-writes.d.ts.map +1 -0
  176. package/dist/dev/catalog-writes.js +26 -0
  177. package/dist/dev/catalog-writes.js.map +1 -0
  178. package/dist/dev/entry-env.d.ts +2 -1
  179. package/dist/dev/entry-env.d.ts.map +1 -1
  180. package/dist/dev/entry-env.js +2 -1
  181. package/dist/dev/entry-env.js.map +1 -1
  182. package/dist/dev/font-dir.d.ts +3 -0
  183. package/dist/dev/font-dir.d.ts.map +1 -0
  184. package/dist/dev/font-dir.js +9 -0
  185. package/dist/dev/font-dir.js.map +1 -0
  186. package/dist/dev/headless.d.ts +3 -0
  187. package/dist/dev/headless.d.ts.map +1 -0
  188. package/dist/dev/headless.js +35 -0
  189. package/dist/dev/headless.js.map +1 -0
  190. package/dist/dev/runner-deps.d.ts +1 -1
  191. package/dist/dev/runner-deps.d.ts.map +1 -1
  192. package/dist/dev/runner-deps.js +12 -7
  193. package/dist/dev/runner-deps.js.map +1 -1
  194. package/dist/dev/runner-main.d.ts.map +1 -1
  195. package/dist/dev/runner-main.js +11 -5
  196. package/dist/dev/runner-main.js.map +1 -1
  197. package/dist/dev/runner.d.ts +2 -0
  198. package/dist/dev/runner.d.ts.map +1 -1
  199. package/dist/dev/runner.js +26 -7
  200. package/dist/dev/runner.js.map +1 -1
  201. package/dist/dev/schema-dir.d.ts +1 -1
  202. package/dist/dev/schema-dir.d.ts.map +1 -1
  203. package/dist/dev/schema-dir.js +2 -4
  204. package/dist/dev/schema-dir.js.map +1 -1
  205. package/dist/dev/supervisor.d.ts +3 -1
  206. package/dist/dev/supervisor.d.ts.map +1 -1
  207. package/dist/dev/supervisor.js +132 -29
  208. package/dist/dev/supervisor.js.map +1 -1
  209. package/dist/dev/vite-dev-server.d.ts +1 -1
  210. package/dist/dev/vite-dev-server.d.ts.map +1 -1
  211. package/dist/dev/vite-dev-server.js +14 -2
  212. package/dist/dev/vite-dev-server.js.map +1 -1
  213. package/dist/dev/watch-ignore.d.ts +3 -0
  214. package/dist/dev/watch-ignore.d.ts.map +1 -0
  215. package/dist/dev/watch-ignore.js +11 -0
  216. package/dist/dev/watch-ignore.js.map +1 -0
  217. package/dist/i18n/catalogs.d.ts +6 -2
  218. package/dist/i18n/catalogs.d.ts.map +1 -1
  219. package/dist/i18n/catalogs.js +12 -8
  220. package/dist/i18n/catalogs.js.map +1 -1
  221. package/dist/i18n/metadata-templates.d.ts.map +1 -1
  222. package/dist/i18n/metadata-templates.js +2 -1
  223. package/dist/i18n/metadata-templates.js.map +1 -1
  224. package/dist/i18n/source-messages.d.ts +5 -21
  225. package/dist/i18n/source-messages.d.ts.map +1 -1
  226. package/dist/i18n/source-messages.js +1037 -92
  227. package/dist/i18n/source-messages.js.map +1 -1
  228. package/dist/i18n/types.d.ts +6 -7
  229. package/dist/i18n/types.d.ts.map +1 -1
  230. package/dist/i18n/types.js +83 -96
  231. package/dist/i18n/types.js.map +1 -1
  232. package/dist/internal/agent-rules.d.ts.map +1 -1
  233. package/dist/internal/agent-rules.js +7 -2
  234. package/dist/internal/agent-rules.js.map +1 -1
  235. package/dist/internal/banner.d.ts +4 -2
  236. package/dist/internal/banner.d.ts.map +1 -1
  237. package/dist/internal/banner.js +19 -5
  238. package/dist/internal/banner.js.map +1 -1
  239. package/dist/internal/build-manifest.d.ts +5 -2
  240. package/dist/internal/build-manifest.d.ts.map +1 -1
  241. package/dist/internal/build-manifest.js +15 -2
  242. package/dist/internal/build-manifest.js.map +1 -1
  243. package/dist/internal/build-output.d.ts +8 -0
  244. package/dist/internal/build-output.d.ts.map +1 -0
  245. package/dist/internal/build-output.js +116 -0
  246. package/dist/internal/build-output.js.map +1 -0
  247. package/dist/internal/cache-root.d.ts +3 -0
  248. package/dist/internal/cache-root.d.ts.map +1 -0
  249. package/dist/internal/cache-root.js +9 -0
  250. package/dist/internal/cache-root.js.map +1 -0
  251. package/dist/internal/compile-cache-store.d.ts +4 -0
  252. package/dist/internal/compile-cache-store.d.ts.map +1 -0
  253. package/dist/internal/compile-cache-store.js +41 -0
  254. package/dist/internal/compile-cache-store.js.map +1 -0
  255. package/dist/internal/compile-cache.d.ts +4 -0
  256. package/dist/internal/compile-cache.d.ts.map +1 -0
  257. package/dist/internal/compile-cache.js +16 -0
  258. package/dist/internal/compile-cache.js.map +1 -0
  259. package/dist/internal/deploy-out-dir.d.ts +4 -0
  260. package/dist/internal/deploy-out-dir.d.ts.map +1 -0
  261. package/dist/internal/deploy-out-dir.js +5 -0
  262. package/dist/internal/deploy-out-dir.js.map +1 -0
  263. package/dist/internal/docs-elements.d.ts +1 -0
  264. package/dist/internal/docs-elements.d.ts.map +1 -1
  265. package/dist/internal/docs-elements.js +6 -5
  266. package/dist/internal/docs-elements.js.map +1 -1
  267. package/dist/internal/entry-arg.d.ts +4 -1
  268. package/dist/internal/entry-arg.d.ts.map +1 -1
  269. package/dist/internal/entry-arg.js +7 -1
  270. package/dist/internal/entry-arg.js.map +1 -1
  271. package/dist/internal/errors.d.ts +2 -1
  272. package/dist/internal/errors.d.ts.map +1 -1
  273. package/dist/internal/errors.js +1 -1
  274. package/dist/internal/errors.js.map +1 -1
  275. package/dist/internal/font-path.d.ts +4 -0
  276. package/dist/internal/font-path.d.ts.map +1 -0
  277. package/dist/internal/font-path.js +12 -0
  278. package/dist/internal/font-path.js.map +1 -0
  279. package/dist/internal/font-staging.d.ts +6 -0
  280. package/dist/internal/font-staging.d.ts.map +1 -0
  281. package/dist/internal/font-staging.js +94 -0
  282. package/dist/internal/font-staging.js.map +1 -0
  283. package/dist/internal/icon-path.d.ts.map +1 -1
  284. package/dist/internal/icon-path.js +5 -16
  285. package/dist/internal/icon-path.js.map +1 -1
  286. package/dist/internal/icon-staging.d.ts +3 -0
  287. package/dist/internal/icon-staging.d.ts.map +1 -0
  288. package/dist/internal/icon-staging.js +40 -0
  289. package/dist/internal/icon-staging.js.map +1 -0
  290. package/dist/internal/import-scan.d.ts +4 -0
  291. package/dist/internal/import-scan.d.ts.map +1 -0
  292. package/dist/internal/import-scan.js +138 -0
  293. package/dist/internal/import-scan.js.map +1 -0
  294. package/dist/internal/module-hash.d.ts +3 -0
  295. package/dist/internal/module-hash.d.ts.map +1 -0
  296. package/dist/internal/module-hash.js +19 -0
  297. package/dist/internal/module-hash.js.map +1 -0
  298. package/dist/internal/output-directory.d.ts +15 -0
  299. package/dist/internal/output-directory.d.ts.map +1 -0
  300. package/dist/internal/output-directory.js +490 -0
  301. package/dist/internal/output-directory.js.map +1 -0
  302. package/dist/internal/parent-process.d.ts +12 -0
  303. package/dist/internal/parent-process.d.ts.map +1 -0
  304. package/dist/internal/parent-process.js +74 -0
  305. package/dist/internal/parent-process.js.map +1 -0
  306. package/dist/internal/prepare-project.d.ts +3 -0
  307. package/dist/internal/prepare-project.d.ts.map +1 -1
  308. package/dist/internal/prepare-project.js +9 -3
  309. package/dist/internal/prepare-project.js.map +1 -1
  310. package/dist/internal/react-compiler-cache.d.ts +13 -0
  311. package/dist/internal/react-compiler-cache.d.ts.map +1 -0
  312. package/dist/internal/react-compiler-cache.js +182 -0
  313. package/dist/internal/react-compiler-cache.js.map +1 -0
  314. package/dist/internal/source-imports.d.ts +7 -2
  315. package/dist/internal/source-imports.d.ts.map +1 -1
  316. package/dist/internal/source-imports.js +38 -49
  317. package/dist/internal/source-imports.js.map +1 -1
  318. package/dist/internal/staging-file.d.ts +5 -0
  319. package/dist/internal/staging-file.d.ts.map +1 -0
  320. package/dist/internal/staging-file.js +35 -0
  321. package/dist/internal/staging-file.js.map +1 -0
  322. package/dist/internal/xdg-banner.d.ts +4 -0
  323. package/dist/internal/xdg-banner.d.ts.map +1 -0
  324. package/dist/internal/xdg-banner.js +11 -0
  325. package/dist/internal/xdg-banner.js.map +1 -0
  326. package/dist/internal/xdg-data-dirs.d.ts +2 -1
  327. package/dist/internal/xdg-data-dirs.d.ts.map +1 -1
  328. package/dist/internal/xdg-data-dirs.js +1 -1
  329. package/dist/internal/xdg-data-dirs.js.map +1 -1
  330. package/dist/mcp/client.js +2 -2
  331. package/dist/mcp/client.js.map +1 -1
  332. package/dist/settings/render.d.ts +0 -1
  333. package/dist/settings/render.d.ts.map +1 -1
  334. package/dist/settings/render.js +1 -11
  335. package/dist/settings/render.js.map +1 -1
  336. package/dist/settings/schema.d.ts +2 -2
  337. package/dist/settings/schema.d.ts.map +1 -1
  338. package/dist/settings/schema.js +24 -70
  339. package/dist/settings/schema.js.map +1 -1
  340. package/dist/vite-plugins/asset-extensions.d.ts.map +1 -1
  341. package/dist/vite-plugins/asset-extensions.js +2 -0
  342. package/dist/vite-plugins/asset-extensions.js.map +1 -1
  343. package/dist/vite-plugins/asset-imports.d.ts +1 -2
  344. package/dist/vite-plugins/asset-imports.d.ts.map +1 -1
  345. package/dist/vite-plugins/asset-imports.js +36 -35
  346. package/dist/vite-plugins/asset-imports.js.map +1 -1
  347. package/dist/vite-plugins/asset-specifier.d.ts +5 -3
  348. package/dist/vite-plugins/asset-specifier.d.ts.map +1 -1
  349. package/dist/vite-plugins/asset-specifier.js +10 -4
  350. package/dist/vite-plugins/asset-specifier.js.map +1 -1
  351. package/dist/vite-plugins/build-manifest.d.ts +5 -1
  352. package/dist/vite-plugins/build-manifest.d.ts.map +1 -1
  353. package/dist/vite-plugins/build-manifest.js +2 -1
  354. package/dist/vite-plugins/build-manifest.js.map +1 -1
  355. package/dist/vite-plugins/built-url.d.ts.map +1 -1
  356. package/dist/vite-plugins/built-url.js +5 -2
  357. package/dist/vite-plugins/built-url.js.map +1 -1
  358. package/dist/vite-plugins/css.d.ts.map +1 -1
  359. package/dist/vite-plugins/css.js +13 -5
  360. package/dist/vite-plugins/css.js.map +1 -1
  361. package/dist/vite-plugins/ensure-store.d.ts +1 -1
  362. package/dist/vite-plugins/ensure-store.d.ts.map +1 -1
  363. package/dist/vite-plugins/ensure-store.js +2 -2
  364. package/dist/vite-plugins/ensure-store.js.map +1 -1
  365. package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts +6 -1
  366. package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts.map +1 -1
  367. package/dist/vite-plugins/fast-refresh/refresh-filter.js +3 -1
  368. package/dist/vite-plugins/fast-refresh/refresh-filter.js.map +1 -1
  369. package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts.map +1 -1
  370. package/dist/vite-plugins/fast-refresh/swc-refresh.js +23 -14
  371. package/dist/vite-plugins/fast-refresh/swc-refresh.js.map +1 -1
  372. package/dist/vite-plugins/font-name.d.ts +3 -0
  373. package/dist/vite-plugins/font-name.d.ts.map +1 -0
  374. package/dist/vite-plugins/font-name.js +406 -0
  375. package/dist/vite-plugins/font-name.js.map +1 -0
  376. package/dist/vite-plugins/font-worker-env.d.ts +4 -0
  377. package/dist/vite-plugins/font-worker-env.d.ts.map +1 -0
  378. package/dist/vite-plugins/font-worker-env.js +19 -0
  379. package/dist/vite-plugins/font-worker-env.js.map +1 -0
  380. package/dist/vite-plugins/font.d.ts +4 -0
  381. package/dist/vite-plugins/font.d.ts.map +1 -0
  382. package/dist/vite-plugins/font.js +111 -0
  383. package/dist/vite-plugins/font.js.map +1 -0
  384. package/dist/vite-plugins/i18n.d.ts +11 -2
  385. package/dist/vite-plugins/i18n.d.ts.map +1 -1
  386. package/dist/vite-plugins/i18n.js +75 -8
  387. package/dist/vite-plugins/i18n.js.map +1 -1
  388. package/dist/vite-plugins/icon-worker-env.d.ts +4 -0
  389. package/dist/vite-plugins/icon-worker-env.d.ts.map +1 -0
  390. package/dist/vite-plugins/icon-worker-env.js +23 -0
  391. package/dist/vite-plugins/icon-worker-env.js.map +1 -0
  392. package/dist/vite-plugins/icons.d.ts.map +1 -1
  393. package/dist/vite-plugins/icons.js +4 -9
  394. package/dist/vite-plugins/icons.js.map +1 -1
  395. package/dist/vite-plugins/index.d.ts +10 -1
  396. package/dist/vite-plugins/index.d.ts.map +1 -1
  397. package/dist/vite-plugins/index.js +19 -7
  398. package/dist/vite-plugins/index.js.map +1 -1
  399. package/dist/vite-plugins/native.d.ts.map +1 -1
  400. package/dist/vite-plugins/native.js +0 -4
  401. package/dist/vite-plugins/native.js.map +1 -1
  402. package/dist/vite-plugins/react-compiler.d.ts.map +1 -1
  403. package/dist/vite-plugins/react-compiler.js +57 -18
  404. package/dist/vite-plugins/react-compiler.js.map +1 -1
  405. package/dist/vite-plugins/resource-shared.d.ts +3 -1
  406. package/dist/vite-plugins/resource-shared.d.ts.map +1 -1
  407. package/dist/vite-plugins/resource-shared.js +3 -1
  408. package/dist/vite-plugins/resource-shared.js.map +1 -1
  409. package/dist/vite-plugins/resources.d.ts.map +1 -1
  410. package/dist/vite-plugins/resources.js +40 -102
  411. package/dist/vite-plugins/resources.js.map +1 -1
  412. package/dist/vite-plugins/self-contained.d.ts.map +1 -1
  413. package/dist/vite-plugins/self-contained.js +159 -158
  414. package/dist/vite-plugins/self-contained.js.map +1 -1
  415. package/dist/vite-plugins/settings-worker-env.d.ts +1 -1
  416. package/dist/vite-plugins/settings-worker-env.d.ts.map +1 -1
  417. package/dist/vite-plugins/settings-worker-env.js +5 -7
  418. package/dist/vite-plugins/settings-worker-env.js.map +1 -1
  419. package/dist/vite-plugins/settings.d.ts +1 -2
  420. package/dist/vite-plugins/settings.d.ts.map +1 -1
  421. package/dist/vite-plugins/settings.js +32 -27
  422. package/dist/vite-plugins/settings.js.map +1 -1
  423. package/dist/vite-plugins/store-links.d.ts.map +1 -1
  424. package/dist/vite-plugins/store-links.js +9 -5
  425. package/dist/vite-plugins/store-links.js.map +1 -1
  426. package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
  427. package/dist/vite-plugins/undeclared-library.js +25 -25
  428. package/dist/vite-plugins/undeclared-library.js.map +1 -1
  429. package/dist/vite-plugins/worker.d.ts.map +1 -1
  430. package/dist/vite-plugins/worker.js +21 -14
  431. package/dist/vite-plugins/worker.js.map +1 -1
  432. package/dist/vitest-plugin.d.ts +4 -3
  433. package/dist/vitest-plugin.d.ts.map +1 -1
  434. package/dist/vitest-plugin.js +12 -8
  435. package/dist/vitest-plugin.js.map +1 -1
  436. package/env.d.ts +9 -0
  437. package/package.json +28 -17
  438. package/src/builder.ts +45 -12
  439. package/src/cli.ts +15 -2
  440. package/src/codegen/config-dependencies.ts +470 -0
  441. package/src/codegen/freshness.ts +70 -17
  442. package/src/codegen/reference.ts +2 -8
  443. package/src/codegen/report.ts +5 -21
  444. package/src/codegen/run-codegen.ts +73 -160
  445. package/src/codegen/store-resolver.ts +16 -27
  446. package/src/commands/build.ts +13 -2
  447. package/src/commands/cleanup.ts +48 -0
  448. package/src/commands/codegen.ts +6 -5
  449. package/src/commands/deploy.ts +10 -2
  450. package/src/commands/dev.ts +45 -4
  451. package/src/commands/docs.ts +6 -17
  452. package/src/deploy/depends.ts +30 -3
  453. package/src/deploy/download.ts +33 -24
  454. package/src/deploy/freedesktop/copyright.ts +2 -14
  455. package/src/deploy/freedesktop/metainfo.ts +73 -21
  456. package/src/deploy/freedesktop/validate.ts +80 -15
  457. package/src/deploy/freedesktop/xml.ts +24 -32
  458. package/src/deploy/native-addon.ts +183 -0
  459. package/src/deploy/nfpm/config.ts +13 -4
  460. package/src/deploy/nfpm/contents.ts +8 -0
  461. package/src/deploy/node-runtime/download.ts +2 -2
  462. package/src/deploy/node-runtime/elf.ts +46 -5
  463. package/src/deploy/node-runtime/guard.ts +10 -14
  464. package/src/deploy/node-runtime/index.ts +148 -12
  465. package/src/deploy/node-runtime/license.ts +2 -8
  466. package/src/deploy/node-runtime/sonames.ts +17 -0
  467. package/src/deploy/notices/node-runtime.ts +2 -2
  468. package/src/deploy/notices/packages.ts +3 -11
  469. package/src/deploy/payload/copy-tree.ts +3 -4
  470. package/src/deploy/payload/launcher.ts +20 -1
  471. package/src/deploy/payload/stage.ts +78 -11
  472. package/src/deploy/run-deploy.ts +227 -72
  473. package/src/deploy/settings/arch.ts +40 -8
  474. package/src/deploy/settings/build-manifest.ts +30 -17
  475. package/src/deploy/settings/extra-files.ts +30 -4
  476. package/src/deploy/settings/index.ts +7 -2
  477. package/src/deploy/settings/libraries.ts +2 -22
  478. package/src/deploy/settings/paths.ts +78 -21
  479. package/src/deploy/settings/screenshots.ts +8 -46
  480. package/src/deploy/targets/appimage.ts +1 -0
  481. package/src/deploy/targets/flatpak-pnpm.ts +4 -4
  482. package/src/deploy/targets/flatpak-source.ts +19 -6
  483. package/src/deploy/targets/flatpak-sources.ts +1 -1
  484. package/src/deploy/targets/flatpak.ts +1 -0
  485. package/src/deploy/targets/nfpm-target.ts +14 -6
  486. package/src/deploy/types.ts +5 -1
  487. package/src/deploy/vendored/appimagetool.ts +2 -2
  488. package/src/deploy/vendored/nfpm.ts +1 -1
  489. package/src/dev/catalog-writes.ts +35 -0
  490. package/src/dev/entry-env.ts +2 -1
  491. package/src/dev/font-dir.ts +11 -0
  492. package/src/dev/headless.ts +40 -0
  493. package/src/dev/runner-deps.ts +20 -7
  494. package/src/dev/runner-main.ts +13 -5
  495. package/src/dev/runner.ts +37 -7
  496. package/src/dev/schema-dir.ts +2 -4
  497. package/src/dev/supervisor.ts +183 -32
  498. package/src/dev/vite-dev-server.ts +20 -2
  499. package/src/dev/watch-ignore.ts +16 -0
  500. package/src/i18n/catalogs.ts +23 -9
  501. package/src/i18n/metadata-templates.ts +2 -1
  502. package/src/i18n/source-messages.ts +1641 -262
  503. package/src/i18n/types.ts +97 -131
  504. package/src/internal/agent-rules.ts +7 -2
  505. package/src/internal/banner.ts +27 -6
  506. package/src/internal/build-manifest.ts +25 -1
  507. package/src/internal/build-output.ts +171 -0
  508. package/src/internal/cache-root.ts +12 -0
  509. package/src/internal/compile-cache-store.ts +50 -0
  510. package/src/internal/compile-cache.ts +20 -0
  511. package/src/internal/deploy-out-dir.ts +8 -0
  512. package/src/internal/docs-elements.ts +11 -5
  513. package/src/internal/entry-arg.ts +8 -1
  514. package/src/internal/errors.ts +1 -1
  515. package/src/internal/font-path.ts +15 -0
  516. package/src/internal/font-staging.ts +131 -0
  517. package/src/internal/icon-path.ts +6 -19
  518. package/src/internal/icon-staging.ts +58 -0
  519. package/src/internal/import-scan.ts +206 -0
  520. package/src/internal/module-hash.ts +22 -0
  521. package/src/internal/output-directory.ts +699 -0
  522. package/src/internal/parent-process.ts +110 -0
  523. package/src/internal/prepare-project.ts +11 -5
  524. package/src/internal/react-compiler-cache.ts +246 -0
  525. package/src/internal/source-imports.ts +64 -55
  526. package/src/internal/staging-file.ts +42 -0
  527. package/src/internal/xdg-banner.ts +13 -0
  528. package/src/internal/xdg-data-dirs.ts +1 -1
  529. package/src/mcp/client.ts +2 -2
  530. package/src/settings/render.ts +1 -13
  531. package/src/settings/schema.ts +23 -91
  532. package/src/vite-plugins/asset-extensions.ts +2 -0
  533. package/src/vite-plugins/asset-imports.ts +39 -45
  534. package/src/vite-plugins/asset-specifier.ts +17 -5
  535. package/src/vite-plugins/build-manifest.ts +7 -1
  536. package/src/vite-plugins/built-url.ts +6 -2
  537. package/src/vite-plugins/css.ts +16 -5
  538. package/src/vite-plugins/ensure-store.ts +2 -2
  539. package/src/vite-plugins/fast-refresh/refresh-filter.ts +10 -1
  540. package/src/vite-plugins/fast-refresh/swc-refresh.ts +33 -14
  541. package/src/vite-plugins/font-name.ts +582 -0
  542. package/src/vite-plugins/font-worker-env.ts +25 -0
  543. package/src/vite-plugins/font.ts +180 -0
  544. package/src/vite-plugins/i18n.ts +123 -11
  545. package/src/vite-plugins/icon-worker-env.ts +36 -0
  546. package/src/vite-plugins/icons.ts +4 -10
  547. package/src/vite-plugins/index.ts +36 -13
  548. package/src/vite-plugins/native.ts +0 -5
  549. package/src/vite-plugins/react-compiler.ts +83 -19
  550. package/src/vite-plugins/resource-shared.ts +4 -0
  551. package/src/vite-plugins/resources.ts +47 -144
  552. package/src/vite-plugins/self-contained.ts +184 -185
  553. package/src/vite-plugins/settings-worker-env.ts +5 -7
  554. package/src/vite-plugins/settings.ts +44 -33
  555. package/src/vite-plugins/store-links.ts +10 -5
  556. package/src/vite-plugins/undeclared-library.ts +30 -32
  557. package/src/vite-plugins/worker.ts +31 -16
  558. package/src/vitest-plugin.ts +12 -8
  559. package/dist/i18n/binding-extractor.d.ts +0 -30
  560. package/dist/i18n/binding-extractor.d.ts.map +0 -1
  561. package/dist/i18n/binding-extractor.js +0 -1324
  562. package/dist/i18n/binding-extractor.js.map +0 -1
  563. package/dist/i18n/extractor-plugin.d.ts +0 -8
  564. package/dist/i18n/extractor-plugin.d.ts.map +0 -1
  565. package/dist/i18n/extractor-plugin.js +0 -247
  566. package/dist/i18n/extractor-plugin.js.map +0 -1
  567. package/dist/internal/data-dir.d.ts +0 -4
  568. package/dist/internal/data-dir.d.ts.map +0 -1
  569. package/dist/internal/data-dir.js +0 -52
  570. package/dist/internal/data-dir.js.map +0 -1
  571. package/dist/vite-plugins/animated.d.ts +0 -5
  572. package/dist/vite-plugins/animated.d.ts.map +0 -1
  573. package/dist/vite-plugins/animated.js +0 -325
  574. package/dist/vite-plugins/animated.js.map +0 -1
  575. package/src/i18n/binding-extractor.ts +0 -1969
  576. package/src/i18n/extractor-plugin.ts +0 -413
  577. package/src/internal/data-dir.ts +0 -70
  578. package/src/vite-plugins/animated.ts +0 -486
@@ -1,21 +1,45 @@
1
1
  import type { ConfigLoader } from "@gtkx/config";
2
2
  import type { ResolvedReactCompilerOptions } from "@gtkx/config/internal";
3
3
  import type { Plugin, ResolvedConfig, UserConfig } from "vite";
4
- import { transformAsync } from "@babel/core";
5
- import babelPresetTypescriptNs from "@babel/preset-typescript";
6
- import { createConfigLoader } from "@gtkx/config/internal";
7
- import babelPluginReactCompilerNs from "babel-plugin-react-compiler";
4
+ import { createConfigLoader, viteProjectRoot } from "@gtkx/config/internal";
5
+ import {
6
+ type CompilerOutput,
7
+ createReactCompilerCache,
8
+ type ReactCompilerCache,
9
+ } from "../internal/react-compiler-cache.js";
8
10
 
9
11
  type ReactCompilerState = {
10
- root: string;
12
+ cache: ReactCompilerCache | null;
11
13
  options: ResolvedReactCompilerOptions | null;
14
+ root: string;
12
15
  };
13
16
 
14
- const babelPresetTypescript = babelPresetTypescriptNs.default ?? babelPresetTypescriptNs;
15
- const babelPluginReactCompiler = babelPluginReactCompilerNs.default ?? babelPluginReactCompilerNs;
17
+ type BabelToolchain = Awaited<ReturnType<typeof loadBabelToolchain>>;
18
+
16
19
  const SOURCE_EXTENSION = /\.[jt]sx?$/;
17
20
  const TYPESCRIPT_EXTENSION = /\.tsx?$/;
18
21
  const NODE_MODULES = /(?:^|\/)node_modules\//;
22
+ const MEMOIZABLE_SOURCE = /use[A-Z0-9]|use memo|use forget/;
23
+ const JSX_MARK = "<";
24
+ const PLAIN_TYPESCRIPT = ".ts";
25
+ const ALL_FUNCTIONS = "all";
26
+ const babel: { toolchain: Promise<BabelToolchain> | undefined } = { toolchain: undefined };
27
+
28
+ const loadBabelToolchain = async () => {
29
+ const [core, preset, plugin] = await Promise.all([
30
+ import("@babel/core"),
31
+ import("@babel/preset-typescript"),
32
+ import("babel-plugin-react-compiler"),
33
+ ]);
34
+
35
+ return {
36
+ presetTypescript: preset.default.default ?? preset.default,
37
+ reactCompiler: plugin.default.default ?? plugin.default,
38
+ transformAsync: core.transformAsync,
39
+ };
40
+ };
41
+
42
+ const babelToolchain = (): Promise<BabelToolchain> => (babel.toolchain ??= loadBabelToolchain());
19
43
 
20
44
  const isProjectSource = (root: string, id: string): boolean => {
21
45
  if (!SOURCE_EXTENSION.test(id)) {
@@ -33,15 +57,25 @@ const isProjectSource = (root: string, id: string): boolean => {
33
57
  return true;
34
58
  };
35
59
 
60
+ const isMemoizable = (code: string, id: string, options: ResolvedReactCompilerOptions): boolean => {
61
+ if (options.compilationMode === ALL_FUNCTIONS || MEMOIZABLE_SOURCE.test(code)) {
62
+ return true;
63
+ }
64
+
65
+ return !id.endsWith(PLAIN_TYPESCRIPT) && code.includes(JSX_MARK);
66
+ };
67
+
36
68
  const compileSource = async (code: string, id: string, options: ResolvedReactCompilerOptions) => {
37
- const result = await transformAsync(code, {
69
+ const toolchain = await babelToolchain();
70
+
71
+ const result = await toolchain.transformAsync(code, {
38
72
  filename: id,
39
73
  babelrc: false,
40
74
  configFile: false,
41
75
  sourceMaps: true,
42
- parserOpts: { plugins: id.endsWith(".ts") ? [] : ["jsx"] },
43
- presets: TYPESCRIPT_EXTENSION.test(id) ? [babelPresetTypescript] : [],
44
- plugins: [[babelPluginReactCompiler, options]],
76
+ parserOpts: { plugins: id.endsWith(PLAIN_TYPESCRIPT) ? [] : ["jsx"] },
77
+ presets: TYPESCRIPT_EXTENSION.test(id) ? [toolchain.presetTypescript] : [],
78
+ plugins: [[toolchain.reactCompiler, options]],
45
79
  });
46
80
 
47
81
  if (!result?.code) {
@@ -51,10 +85,33 @@ const compileSource = async (code: string, id: string, options: ResolvedReactCom
51
85
  return result.map == null ? { code: result.code } : { code: result.code, map: JSON.stringify(result.map) };
52
86
  };
53
87
 
88
+ const cachedSource = async (
89
+ cache: ReactCompilerCache,
90
+ code: string,
91
+ id: string,
92
+ options: ResolvedReactCompilerOptions,
93
+ ): Promise<CompilerOutput | undefined> => {
94
+ const key = cache.keyFor(code, id);
95
+ const cached = cache.read(key);
96
+
97
+ if (cached !== undefined) {
98
+ return cached;
99
+ }
100
+
101
+ const compiled = await compileSource(code, id, options);
102
+
103
+ if (compiled !== undefined) {
104
+ cache.write(key, compiled);
105
+ }
106
+
107
+ return compiled;
108
+ };
109
+
54
110
  function gtkxReactCompiler(loadConfig: ConfigLoader = createConfigLoader()): Plugin {
55
111
  const state: ReactCompilerState = {
56
- root: "",
112
+ cache: null,
57
113
  options: null,
114
+ root: "",
58
115
  };
59
116
 
60
117
  return {
@@ -62,22 +119,29 @@ function gtkxReactCompiler(loadConfig: ConfigLoader = createConfigLoader()): Plu
62
119
  enforce: "pre",
63
120
 
64
121
  async config(config: UserConfig) {
65
- const resolved = await loadConfig.resolve(config.root ?? process.cwd());
122
+ const resolved = await loadConfig.resolve(viteProjectRoot(config));
66
123
  state.options = resolved.reactCompiler;
67
124
  },
68
125
 
69
126
  configResolved(config: ResolvedConfig) {
70
127
  state.root = config.root;
128
+ state.cache = state.options === null ? null : createReactCompilerCache(config.cacheDir, state.options);
71
129
  },
72
130
 
73
- async transform(code, id) {
74
- const options = state.options;
131
+ transform: {
132
+ filter: { id: { include: SOURCE_EXTENSION, exclude: NODE_MODULES } },
133
+
134
+ async handler(code, id) {
135
+ const options = state.options;
136
+
137
+ if (options === null || !isProjectSource(state.root, id) || !isMemoizable(code, id, options)) {
138
+ return;
139
+ }
75
140
 
76
- if (options === null || !isProjectSource(state.root, id)) {
77
- return;
78
- }
141
+ const cache = state.cache;
79
142
 
80
- return compileSource(code, id, options);
143
+ return cache === null ? compileSource(code, id, options) : cachedSource(cache, code, id, options);
144
+ },
81
145
  },
82
146
  };
83
147
  }
@@ -8,6 +8,8 @@ const ICON_NAME_SEPARATOR = "\0icon=";
8
8
  const REFRESH_EXPORT = "__refresh";
9
9
  const REGISTER_REFRESH_EXPORT = "__registerRefresh";
10
10
  const RESOURCE_PATH_EXPORT = "path";
11
+ const VIRTUAL_ID_RE = new RegExp(`^${VIRTUAL_PREFIX}`);
12
+ const VIRTUAL_INIT_RE = new RegExp(`^${VIRTUAL_INIT}$`);
11
13
  const { isVirtual, toVirtualId, fromVirtualId } = createVirtualNamespace(VIRTUAL_PREFIX);
12
14
 
13
15
  const escapeXml = (value: string): string =>
@@ -32,7 +34,9 @@ const escapeXml = (value: string): string =>
32
34
  });
33
35
 
34
36
  export {
37
+ VIRTUAL_ID_RE,
35
38
  VIRTUAL_INIT,
39
+ VIRTUAL_INIT_RE,
36
40
  BUNDLE_FILENAME,
37
41
  REL_SEPARATOR,
38
42
  ICON_NAME_SEPARATOR,
@@ -1,20 +1,17 @@
1
1
  import type { ConfigLoader } from "@gtkx/config";
2
2
  import type { ModuleNode, Plugin, ResolvedConfig, Rolldown, UserConfig, ViteDevServer } from "vite";
3
- import { createConfigLoader, resolveFuture, resourceBasePath } from "@gtkx/config/internal";
4
- import { error, info, isRecord, sortStrings } from "@gtkx/utils";
3
+ import { createConfigLoader, resourceBasePath, viteProjectRoot } from "@gtkx/config/internal";
4
+ import { error, info, isPathInside, isRecord, sortStrings, toPosixPath } from "@gtkx/utils";
5
5
  import { copyFileSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
6
6
  import { basename, dirname, extname, isAbsolute, join, posix, relative, sep } from "node:path";
7
7
  import { parseSync } from "vite";
8
- import { resolveDataDir } from "../internal/data-dir.js";
9
- import { type ListedFile, listFilesRecursive } from "../internal/list-files.js";
8
+ import { withExclusiveLoad } from "../internal/module-loads.js";
10
9
  import { runCliTool } from "../internal/run-cli-tool.js";
11
10
  import { parseRuntimeImportsIn, type SourceImport, sourceLanguage } from "../internal/source-imports.js";
12
11
  import { createRetainedStagingDir, type RetainedStagingDir, withStagingDir } from "../internal/staging-dir.js";
13
12
  import { ASSET_RE } from "./asset-extensions.js";
14
13
  import {
15
- DATA_PREFIX,
16
14
  isBareRelativeAsset,
17
- isDataAsset,
18
15
  parseIconSpecifier,
19
16
  parseResourceSpecifier,
20
17
  } from "./asset-specifier.js";
@@ -30,7 +27,9 @@ import {
30
27
  REL_SEPARATOR,
31
28
  RESOURCE_PATH_EXPORT,
32
29
  toVirtualId,
30
+ VIRTUAL_ID_RE,
33
31
  VIRTUAL_INIT,
32
+ VIRTUAL_INIT_RE,
34
33
  } from "./resource-shared.js";
35
34
  import { stripQuery } from "./strip-query.js";
36
35
 
@@ -44,7 +43,6 @@ type PluginState = {
44
43
  prefix: string;
45
44
  root: string;
46
45
  isBuild: boolean;
47
- isV2: boolean;
48
46
  entries: Map<string, ResourceEntry>;
49
47
  bundledSpecifiers: Map<string, Set<string>>;
50
48
  moduleDependencies: Map<string, Set<string>>;
@@ -58,7 +56,6 @@ type PluginState = {
58
56
  devBundlePath: string;
59
57
  server: ViteDevServer | null;
60
58
  compiledSignature: string;
61
- dataDir: string | null;
62
59
  bundleReferenceId: string | null;
63
60
  iconOwners: Map<string, ResourceEntry>;
64
61
  };
@@ -118,7 +115,7 @@ type DerivedIconEntry = {
118
115
  resourcePath: string;
119
116
  };
120
117
 
121
- type LegacyResolveRequest = {
118
+ type ResolveRequest = {
122
119
  source: string;
123
120
  importer: string | undefined;
124
121
  options: Record<string, unknown> | undefined;
@@ -128,6 +125,7 @@ const RESOURCE_COMPILER = "glib-compile-resources";
128
125
  const MANIFEST_PREFIX = "/";
129
126
  const DEV_STAGING_PREFIX = "resources-dev";
130
127
  const MANIFEST_FILENAME = "package.json";
128
+ const DATA_PREFIX = "#data/";
131
129
  const BUNDLED_QUERY_MENTION_RE = /[?&](?:icon|resource)(?:[=&]|$)/;
132
130
  const ICON_EXTENSIONS: Set<string> = new Set([".png", ".svg", ".xpm"]);
133
131
 
@@ -164,16 +162,8 @@ const STOCK_ICON_CONTEXTS: Set<string> = new Set([
164
162
  const ICON_SIZE_RE = /^([1-9]\d*)x\1(?:@[1-9]\d*)?$/;
165
163
  const RESERVED_ICON_NAMES: Set<string> = new Set(["", ".", ".."]);
166
164
 
167
- const toForwardSlashes = (value: string): string => value.replaceAll(/[/\\]/g, "/");
168
-
169
- const isWithin = (root: string, path: string): boolean => {
170
- const rel = relative(root, path);
171
-
172
- return rel.length > 0 && !isAbsolute(rel) && rel !== ".." && !rel.startsWith(`..${sep}`);
173
- };
174
-
175
165
  const isDependencyFile = (root: string, path: string): boolean =>
176
- isWithin(root, path) && relative(root, path).split(sep).includes("node_modules");
166
+ isPathInside(root, path) && relative(root, path).split(sep).includes("node_modules");
177
167
 
178
168
  const packageIdentityIn = (dir: string): string | null => {
179
169
  try {
@@ -216,17 +206,17 @@ const validateResourcePath = (resourcePath: string): string => {
216
206
  };
217
207
 
218
208
  const derivedResourcePath = (state: PluginState, sourcePath: string): string => {
219
- if (isWithin(state.root, sourcePath) && !isDependencyFile(state.root, sourcePath)) {
220
- return validateResourcePath(`${state.prefix}/${toForwardSlashes(relative(state.root, sourcePath))}`);
209
+ if (isPathInside(state.root, sourcePath) && !isDependencyFile(state.root, sourcePath)) {
210
+ return validateResourcePath(`${state.prefix}/${toPosixPath(relative(state.root, sourcePath))}`);
221
211
  }
222
212
 
223
213
  const owner = packageForFile(sourcePath);
224
214
 
225
- if (owner === null || !isWithin(owner.dir, sourcePath)) {
215
+ if (owner === null || !isPathInside(owner.dir, sourcePath)) {
226
216
  throw new Error(`${sourcePath} is outside the application and does not belong to a named package`);
227
217
  }
228
218
 
229
- const packagePath = toForwardSlashes(relative(owner.dir, sourcePath));
219
+ const packagePath = toPosixPath(relative(owner.dir, sourcePath));
230
220
 
231
221
  return validateResourcePath(`${state.prefix}/${owner.name}/${packagePath}`);
232
222
  };
@@ -292,7 +282,7 @@ const iconLayoutInParts = (parts: string[], beforeIndex: number): string | null
292
282
  };
293
283
 
294
284
  const iconLayoutFromTree = (sourcePath: string): string | null => {
295
- const parts = toForwardSlashes(sourcePath).split("/");
285
+ const parts = toPosixPath(sourcePath).split("/");
296
286
 
297
287
  return iconLayoutInParts(parts, parts.length - 2);
298
288
  };
@@ -335,11 +325,10 @@ const hasSideEffectIconImport = (code: string, id: string): boolean => {
335
325
  };
336
326
 
337
327
  const retainSideEffectIconImport = (
338
- state: PluginState,
339
328
  code: string,
340
329
  id: string,
341
330
  ): { code: string; moduleSideEffects: true } | null =>
342
- state.isV2 && hasSideEffectIconImport(code, id)
331
+ hasSideEffectIconImport(code, id)
343
332
  ? { code, moduleSideEffects: true }
344
333
  : null;
345
334
 
@@ -430,20 +419,6 @@ const refreshRegisteredDevBundle = (state: PluginState): void => {
430
419
  }
431
420
  };
432
421
 
433
- const scanDataAssets = (dataDir: string): ListedFile[] => listFilesRecursive(dataDir, (name) => ASSET_RE.test(name));
434
-
435
- const primeLegacyDevBundle = (state: PluginState): void => {
436
- if (state.dataDir === null) {
437
- return;
438
- }
439
-
440
- for (const { absPath, rel } of scanDataAssets(state.dataDir)) {
441
- registerEntry(state, absPath, rel);
442
- }
443
-
444
- compileDevBundle(state);
445
- };
446
-
447
422
  const registerDevAsset = (state: PluginState): void => {
448
423
  if (entriesSignature(state) !== state.compiledSignature) {
449
424
  compileDevBundle(state);
@@ -490,7 +465,7 @@ const activateEntry = (state: PluginState, entry: ResourceEntry): ResourceEntry
490
465
  };
491
466
 
492
467
  const isDeclarativeImporter = (state: PluginState, importer: string | undefined): importer is string =>
493
- !state.isBuild && state.isV2 && importer !== undefined;
468
+ !state.isBuild && importer !== undefined;
494
469
 
495
470
  const setSourceAvailability = (state: PluginState, file: string, isAvailable: boolean): void => {
496
471
  if (isAvailable) {
@@ -713,26 +688,6 @@ const resolveIconEntry = async (
713
688
  };
714
689
  };
715
690
 
716
- const resolveLegacyAssetEntry = async (
717
- ctx: ResolveContext,
718
- state: PluginState,
719
- request: LegacyResolveRequest,
720
- ): Promise<ResourceEntry | undefined> => {
721
- const resolved = await ctx.resolve(request.source, request.importer, { ...request.options, skipSelf: true });
722
-
723
- if (!resolved || resolved.external) {
724
- return undefined;
725
- }
726
-
727
- const sourcePath = stripQuery(resolved.id);
728
-
729
- if (!isAbsolute(sourcePath)) {
730
- return undefined;
731
- }
732
-
733
- return registerEntry(state, sourcePath, request.source.slice(DATA_PREFIX.length));
734
- };
735
-
736
691
  const loadInitModule = (state: PluginState): string => {
737
692
  if (state.isBuild) {
738
693
  if (state.bundleReferenceId === null) {
@@ -831,8 +786,7 @@ const loadAssetModule = (state: PluginState, virtualId: string): string => {
831
786
  const { absPath, iconName, rel } = virtualAssetMetadata(virtualId);
832
787
  const resourcePath = validateResourcePath(rel);
833
788
  const { entry, isRegistered } = loadedResourceEntry(state, absPath, resourcePath);
834
- const uri = `resource://${entry.resourcePath}`;
835
- const defaultValue = iconName ?? (state.isV2 ? entry.resourcePath : uri);
789
+ const defaultValue = iconName ?? entry.resourcePath;
836
790
  compileLoadedDevAsset(state, isRegistered);
837
791
 
838
792
  return [
@@ -899,12 +853,12 @@ const isSourceModule = (file: string): boolean => sourceLanguage(file) !== undef
899
853
  const isBundledSource = (source: string): boolean =>
900
854
  parseResourceSpecifier(source) !== null || parseIconSpecifier(source) !== null;
901
855
 
902
- const validateUnbundledV2Source = (source: string): void => {
856
+ const validateUnbundledSource = (source: string): void => {
903
857
  if (isLegacyDataSpecifier(source)) {
904
858
  throw new Error(`${JSON.stringify(source)} uses the legacy #data asset form`);
905
859
  }
906
860
 
907
- rejectInvalidV2Specifier(source);
861
+ rejectInvalidSpecifier(source);
908
862
  };
909
863
 
910
864
  const resolvedModuleDependency = async (
@@ -916,7 +870,7 @@ const resolvedModuleDependency = async (
916
870
  return null;
917
871
  }
918
872
 
919
- validateUnbundledV2Source(source);
873
+ validateUnbundledSource(source);
920
874
  const resolved = await ctx.resolve(source, importer, { skipSelf: true });
921
875
 
922
876
  if (resolved === null) {
@@ -952,7 +906,7 @@ const importerReconciliation = async (
952
906
  const file = stripQuery(id);
953
907
  const key = importerKey(file);
954
908
 
955
- if (!state.isV2 || state.isBuild || !isSourceModule(file)) {
909
+ if (state.isBuild || !isSourceModule(file)) {
956
910
  return null;
957
911
  }
958
912
 
@@ -1171,35 +1125,16 @@ const forgetImporterDeclarations = (state: PluginState, importer: string): void
1171
1125
  state.declaredIcons.delete(importer);
1172
1126
  };
1173
1127
 
1174
- const cloneStringSetMap = (source: Map<string, Set<string>>): Map<string, Set<string>> => {
1175
- const clone: Map<string, Set<string>> = new Map();
1176
-
1177
- for (const [key, values] of source) {
1178
- clone.set(key, new Set(values));
1179
- }
1180
-
1181
- return clone;
1182
- };
1183
-
1184
- const cloneDeclarationMap = (
1185
- source: Map<string, Map<string, ResourceEntry>>,
1186
- ): Map<string, Map<string, ResourceEntry>> => {
1187
- const clone: Map<string, Map<string, ResourceEntry>> = new Map();
1188
-
1189
- for (const [key, declarations] of source) {
1190
- clone.set(key, new Map(declarations));
1191
- }
1192
-
1193
- return clone;
1194
- };
1128
+ const cloneMapValues = <Value>(source: Map<string, Value>, clone: (value: Value) => Value): Map<string, Value> =>
1129
+ new Map([...source].map(([key, value]) => [key, clone(value)]));
1195
1130
 
1196
1131
  const reconciliationCandidate = (state: PluginState): PluginState => ({
1197
1132
  ...state,
1198
- bundledSpecifiers: cloneStringSetMap(state.bundledSpecifiers),
1199
- moduleDependencies: cloneStringSetMap(state.moduleDependencies),
1200
- prunedDependencies: cloneStringSetMap(state.prunedDependencies),
1201
- declaredEntries: cloneDeclarationMap(state.declaredEntries),
1202
- declaredIcons: cloneDeclarationMap(state.declaredIcons),
1133
+ bundledSpecifiers: cloneMapValues(state.bundledSpecifiers, (values) => new Set(values)),
1134
+ moduleDependencies: cloneMapValues(state.moduleDependencies, (values) => new Set(values)),
1135
+ prunedDependencies: cloneMapValues(state.prunedDependencies, (values) => new Set(values)),
1136
+ declaredEntries: cloneMapValues(state.declaredEntries, (entries) => new Map(entries)),
1137
+ declaredIcons: cloneMapValues(state.declaredIcons, (entries) => new Map(entries)),
1203
1138
  missingSourcePaths: new Set(state.missingSourcePaths),
1204
1139
  });
1205
1140
 
@@ -1333,7 +1268,7 @@ const commitReconciliation = (state: PluginState, candidate: PluginState): void
1333
1268
  state.iconOwners = candidate.iconOwners;
1334
1269
  };
1335
1270
 
1336
- const reconcileV2Importer = async (ctx: ResolveContext, state: PluginState, id: string): Promise<void> => {
1271
+ const reconcileImporter = async (ctx: ResolveContext, state: PluginState, id: string): Promise<void> => {
1337
1272
  const reconciliation = await importerReconciliation(ctx, state, id);
1338
1273
 
1339
1274
  if (reconciliation === null) {
@@ -1350,10 +1285,9 @@ const reconcileV2Importer = async (ctx: ResolveContext, state: PluginState, id:
1350
1285
  };
1351
1286
 
1352
1287
  const resolveResourceConfig = async (state: PluginState, config: UserConfig, loadConfig: ConfigLoader) => {
1353
- const loaded = await loadConfig.load(config.root ?? process.cwd());
1288
+ const loaded = await loadConfig.load(viteProjectRoot(config));
1354
1289
  state.prefix = resourceBasePath(loaded.config.applicationId);
1355
1290
  state.root = loaded.root;
1356
- state.isV2 = resolveFuture(loaded.config.future).isResourceImported;
1357
1291
 
1358
1292
  return {
1359
1293
  assetsInclude: [ASSET_RE],
@@ -1423,14 +1357,6 @@ const attachResourceWatcher = (state: PluginState, server: ViteDevServer): void
1423
1357
  const applyResolvedConfig = (state: PluginState, config: ResolvedConfig): void => {
1424
1358
  state.isBuild = config.command === "build";
1425
1359
  state.root = config.root;
1426
- state.dataDir = null;
1427
-
1428
- if (state.isBuild || state.isV2) {
1429
- return;
1430
- }
1431
-
1432
- const relativeDataDir = resolveDataDir(config.root);
1433
- state.dataDir = relativeDataDir === null ? null : join(config.root, relativeDataDir);
1434
1360
  };
1435
1361
 
1436
1362
  const loadResourceModule = (state: PluginState, id: string): string | undefined => {
@@ -1448,7 +1374,7 @@ const loadResourceModule = (state: PluginState, id: string): string | undefined
1448
1374
  const isLegacyDataSpecifier = (source: string): boolean =>
1449
1375
  source.startsWith(DATA_PREFIX) && ASSET_RE.test(stripQuery(source));
1450
1376
 
1451
- const rejectInvalidV2Specifier = (source: string): void => {
1377
+ const rejectInvalidSpecifier = (source: string): void => {
1452
1378
  if (BUNDLED_QUERY_MENTION_RE.test(source)) {
1453
1379
  throw new Error(
1454
1380
  `${JSON.stringify(source)} is not a valid bundled asset import; use ?resource, ` +
@@ -1459,7 +1385,7 @@ const rejectInvalidV2Specifier = (source: string): void => {
1459
1385
  if (isBareRelativeAsset(source)) {
1460
1386
  throw new Error(
1461
1387
  `${JSON.stringify(source)} must choose ?resource for a GResource, ?icon for a themed icon, ` +
1462
- "or ?url for an emitted file",
1388
+ "?font for a bundled font, or ?url for an emitted file",
1463
1389
  );
1464
1390
  }
1465
1391
  };
@@ -1467,7 +1393,7 @@ const rejectInvalidV2Specifier = (source: string): void => {
1467
1393
  const resolveExplicitResourceId = async (
1468
1394
  ctx: ResolveContext,
1469
1395
  state: PluginState,
1470
- request: LegacyResolveRequest,
1396
+ request: ResolveRequest,
1471
1397
  ): Promise<string | undefined> => {
1472
1398
  const specifier = parseResourceSpecifier(request.source);
1473
1399
 
@@ -1488,7 +1414,7 @@ const resolveExplicitResourceId = async (
1488
1414
  const resolveIconResourceId = async (
1489
1415
  ctx: ResolveContext,
1490
1416
  state: PluginState,
1491
- request: LegacyResolveRequest,
1417
+ request: ResolveRequest,
1492
1418
  ): Promise<RetainedIconModuleId | undefined> => {
1493
1419
  const specifier = parseIconSpecifier(request.source);
1494
1420
 
@@ -1508,10 +1434,10 @@ const resolveIconResourceId = async (
1508
1434
  : { id: virtualIconId(resolved), moduleSideEffects: true };
1509
1435
  };
1510
1436
 
1511
- const resolveV2ResourceId = async (
1437
+ const resolveBundledResourceId = async (
1512
1438
  ctx: ResolveContext,
1513
1439
  state: PluginState,
1514
- request: LegacyResolveRequest,
1440
+ request: ResolveRequest,
1515
1441
  ): Promise<ResourceModuleId | undefined> => {
1516
1442
  if (isLegacyDataSpecifier(request.source)) {
1517
1443
  throw new Error(
@@ -1534,46 +1460,21 @@ const resolveV2ResourceId = async (
1534
1460
  return resolved;
1535
1461
  }
1536
1462
 
1537
- rejectInvalidV2Specifier(request.source);
1463
+ rejectInvalidSpecifier(request.source);
1538
1464
 
1539
1465
  return undefined;
1540
1466
  };
1541
1467
 
1542
- const resolveLegacyResourceId = async (
1543
- ctx: ResolveContext,
1544
- state: PluginState,
1545
- request: LegacyResolveRequest,
1546
- ): Promise<string | undefined> => {
1547
- if (BUNDLED_QUERY_MENTION_RE.test(request.source)) {
1548
- throw new Error(`${JSON.stringify(request.source)} requires future.v2ResourceImports`);
1549
- }
1550
-
1551
- if (!isDataAsset(request.source)) {
1552
- return undefined;
1553
- }
1554
-
1555
- const entry = await resolveLegacyAssetEntry(ctx, state, request);
1556
-
1557
- return entry === undefined ? undefined : virtualAssetId(entry);
1558
- };
1559
-
1560
1468
  const resolveResourceId = (
1561
1469
  ctx: ResolveContext,
1562
1470
  state: PluginState,
1563
- request: LegacyResolveRequest,
1471
+ request: ResolveRequest,
1564
1472
  ): Promise<ResourceModuleId | undefined> => {
1565
1473
  if (request.source === VIRTUAL_INIT) {
1566
1474
  return Promise.resolve(VIRTUAL_INIT);
1567
1475
  }
1568
1476
 
1569
- return state.isV2
1570
- ? resolveV2ResourceId(ctx, state, request)
1571
- : resolveLegacyResourceId(ctx, state, request);
1572
- };
1573
-
1574
- const configureResourceServer = (state: PluginState, server: ViteDevServer): void => {
1575
- attachResourceWatcher(state, server);
1576
- primeLegacyDevBundle(state);
1477
+ return resolveBundledResourceId(ctx, state, request);
1577
1478
  };
1578
1479
 
1579
1480
  const createResourcesPlugin = (state: PluginState, loadConfig: ConfigLoader): Plugin => ({
@@ -1588,7 +1489,7 @@ const createResourcesPlugin = (state: PluginState, loadConfig: ConfigLoader): Pl
1588
1489
  },
1589
1490
 
1590
1491
  configureServer: (server) => {
1591
- configureResourceServer(state, server);
1492
+ attachResourceWatcher(state, server);
1592
1493
  },
1593
1494
 
1594
1495
  buildStart() {
@@ -1605,14 +1506,18 @@ const createResourcesPlugin = (state: PluginState, loadConfig: ConfigLoader): Pl
1605
1506
  return resolveResourceId(this, state, { source, importer, options });
1606
1507
  },
1607
1508
 
1608
- load(id) {
1609
- return loadResourceModule(state, id);
1509
+ load: {
1510
+ filter: { id: { include: [VIRTUAL_INIT_RE, VIRTUAL_ID_RE] } },
1511
+
1512
+ handler(id) {
1513
+ return loadResourceModule(state, id);
1514
+ },
1610
1515
  },
1611
1516
 
1612
1517
  async transform(code, id) {
1613
- await reconcileV2Importer(this, state, id);
1518
+ await withExclusiveLoad(state, () => reconcileImporter(this, state, id));
1614
1519
 
1615
- return retainSideEffectIconImport(state, code, id);
1520
+ return retainSideEffectIconImport(code, id);
1616
1521
  },
1617
1522
 
1618
1523
  generateBundle(_options, bundle) {
@@ -1629,7 +1534,6 @@ function gtkxResources(loadConfig: ConfigLoader = createConfigLoader(), entryPat
1629
1534
  prefix: "",
1630
1535
  root: "",
1631
1536
  isBuild: false,
1632
- isV2: false,
1633
1537
  entries: new Map(),
1634
1538
  bundledSpecifiers: new Map(),
1635
1539
  moduleDependencies: new Map(),
@@ -1643,7 +1547,6 @@ function gtkxResources(loadConfig: ConfigLoader = createConfigLoader(), entryPat
1643
1547
  devBundlePath: "",
1644
1548
  server: null,
1645
1549
  compiledSignature: "",
1646
- dataDir: null,
1647
1550
  bundleReferenceId: null,
1648
1551
  iconOwners: new Map(),
1649
1552
  };