@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,12 +1,26 @@
1
- import { transformAsync } from "@babel/core";
2
- import babelPresetTypescriptNs from "@babel/preset-typescript";
3
- import { createConfigLoader } from "@gtkx/config/internal";
4
- import babelPluginReactCompilerNs from "babel-plugin-react-compiler";
5
- const babelPresetTypescript = babelPresetTypescriptNs.default ?? babelPresetTypescriptNs;
6
- const babelPluginReactCompiler = babelPluginReactCompilerNs.default ?? babelPluginReactCompilerNs;
1
+ import { createConfigLoader, viteProjectRoot } from "@gtkx/config/internal";
2
+ import { createReactCompilerCache, } from "../internal/react-compiler-cache.js";
7
3
  const SOURCE_EXTENSION = /\.[jt]sx?$/;
8
4
  const TYPESCRIPT_EXTENSION = /\.tsx?$/;
9
5
  const NODE_MODULES = /(?:^|\/)node_modules\//;
6
+ const MEMOIZABLE_SOURCE = /use[A-Z0-9]|use memo|use forget/;
7
+ const JSX_MARK = "<";
8
+ const PLAIN_TYPESCRIPT = ".ts";
9
+ const ALL_FUNCTIONS = "all";
10
+ const babel = { toolchain: undefined };
11
+ const loadBabelToolchain = async () => {
12
+ const [core, preset, plugin] = await Promise.all([
13
+ import("@babel/core"),
14
+ import("@babel/preset-typescript"),
15
+ import("babel-plugin-react-compiler"),
16
+ ]);
17
+ return {
18
+ presetTypescript: preset.default.default ?? preset.default,
19
+ reactCompiler: plugin.default.default ?? plugin.default,
20
+ transformAsync: core.transformAsync,
21
+ };
22
+ };
23
+ const babelToolchain = () => (babel.toolchain ??= loadBabelToolchain());
10
24
  const isProjectSource = (root, id) => {
11
25
  if (!SOURCE_EXTENSION.test(id)) {
12
26
  return false;
@@ -19,42 +33,67 @@ const isProjectSource = (root, id) => {
19
33
  }
20
34
  return true;
21
35
  };
36
+ const isMemoizable = (code, id, options) => {
37
+ if (options.compilationMode === ALL_FUNCTIONS || MEMOIZABLE_SOURCE.test(code)) {
38
+ return true;
39
+ }
40
+ return !id.endsWith(PLAIN_TYPESCRIPT) && code.includes(JSX_MARK);
41
+ };
22
42
  const compileSource = async (code, id, options) => {
23
- const result = await transformAsync(code, {
43
+ const toolchain = await babelToolchain();
44
+ const result = await toolchain.transformAsync(code, {
24
45
  filename: id,
25
46
  babelrc: false,
26
47
  configFile: false,
27
48
  sourceMaps: true,
28
- parserOpts: { plugins: id.endsWith(".ts") ? [] : ["jsx"] },
29
- presets: TYPESCRIPT_EXTENSION.test(id) ? [babelPresetTypescript] : [],
30
- plugins: [[babelPluginReactCompiler, options]],
49
+ parserOpts: { plugins: id.endsWith(PLAIN_TYPESCRIPT) ? [] : ["jsx"] },
50
+ presets: TYPESCRIPT_EXTENSION.test(id) ? [toolchain.presetTypescript] : [],
51
+ plugins: [[toolchain.reactCompiler, options]],
31
52
  });
32
53
  if (!result?.code) {
33
54
  return;
34
55
  }
35
56
  return result.map == null ? { code: result.code } : { code: result.code, map: JSON.stringify(result.map) };
36
57
  };
58
+ const cachedSource = async (cache, code, id, options) => {
59
+ const key = cache.keyFor(code, id);
60
+ const cached = cache.read(key);
61
+ if (cached !== undefined) {
62
+ return cached;
63
+ }
64
+ const compiled = await compileSource(code, id, options);
65
+ if (compiled !== undefined) {
66
+ cache.write(key, compiled);
67
+ }
68
+ return compiled;
69
+ };
37
70
  function gtkxReactCompiler(loadConfig = createConfigLoader()) {
38
71
  const state = {
39
- root: "",
72
+ cache: null,
40
73
  options: null,
74
+ root: "",
41
75
  };
42
76
  return {
43
77
  name: "gtkx:react-compiler",
44
78
  enforce: "pre",
45
79
  async config(config) {
46
- const resolved = await loadConfig.resolve(config.root ?? process.cwd());
80
+ const resolved = await loadConfig.resolve(viteProjectRoot(config));
47
81
  state.options = resolved.reactCompiler;
48
82
  },
49
83
  configResolved(config) {
50
84
  state.root = config.root;
85
+ state.cache = state.options === null ? null : createReactCompilerCache(config.cacheDir, state.options);
51
86
  },
52
- async transform(code, id) {
53
- const options = state.options;
54
- if (options === null || !isProjectSource(state.root, id)) {
55
- return;
56
- }
57
- return compileSource(code, id, options);
87
+ transform: {
88
+ filter: { id: { include: SOURCE_EXTENSION, exclude: NODE_MODULES } },
89
+ async handler(code, id) {
90
+ const options = state.options;
91
+ if (options === null || !isProjectSource(state.root, id) || !isMemoizable(code, id, options)) {
92
+ return;
93
+ }
94
+ const cache = state.cache;
95
+ return cache === null ? compileSource(code, id, options) : cachedSource(cache, code, id, options);
96
+ },
58
97
  },
59
98
  };
60
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"react-compiler.js","sourceRoot":"","sources":["../../src/vite-plugins/react-compiler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ConfigLoader } from \"@gtkx/config\";\nimport type { ResolvedReactCompilerOptions } from \"@gtkx/config/internal\";\nimport type { Plugin, ResolvedConfig, UserConfig } from \"vite\";\nimport { transformAsync } from \"@babel/core\";\nimport babelPresetTypescriptNs from \"@babel/preset-typescript\";\nimport { createConfigLoader } from \"@gtkx/config/internal\";\nimport babelPluginReactCompilerNs from \"babel-plugin-react-compiler\";\n\ntype ReactCompilerState = {\n root: string;\n options: ResolvedReactCompilerOptions | null;\n};\n\nconst babelPresetTypescript = babelPresetTypescriptNs.default ?? babelPresetTypescriptNs;\nconst babelPluginReactCompiler = babelPluginReactCompilerNs.default ?? babelPluginReactCompilerNs;\nconst SOURCE_EXTENSION = /\\.[jt]sx?$/;\nconst TYPESCRIPT_EXTENSION = /\\.tsx?$/;\nconst NODE_MODULES = /(?:^|\\/)node_modules\\//;\n\nconst isProjectSource = (root: string, id: string): boolean => {\n if (!SOURCE_EXTENSION.test(id)) {\n return false;\n }\n\n if (NODE_MODULES.test(id)) {\n return false;\n }\n\n if (root !== \"\" && !id.startsWith(`${root}/`)) {\n return false;\n }\n\n return true;\n};\n\nconst compileSource = async (code: string, id: string, options: ResolvedReactCompilerOptions) => {\n const result = await transformAsync(code, {\n filename: id,\n babelrc: false,\n configFile: false,\n sourceMaps: true,\n parserOpts: { plugins: id.endsWith(\".ts\") ? [] : [\"jsx\"] },\n presets: TYPESCRIPT_EXTENSION.test(id) ? [babelPresetTypescript] : [],\n plugins: [[babelPluginReactCompiler, options]],\n });\n\n if (!result?.code) {\n return;\n }\n\n return result.map == null ? { code: result.code } : { code: result.code, map: JSON.stringify(result.map) };\n};\n\nfunction gtkxReactCompiler(loadConfig: ConfigLoader = createConfigLoader()): Plugin {\n const state: ReactCompilerState = {\n root: \"\",\n options: null,\n };\n\n return {\n name: \"gtkx:react-compiler\",\n enforce: \"pre\",\n\n async config(config: UserConfig) {\n const resolved = await loadConfig.resolve(config.root ?? process.cwd());\n state.options = resolved.reactCompiler;\n },\n\n configResolved(config: ResolvedConfig) {\n state.root = config.root;\n },\n\n async transform(code, id) {\n const options = state.options;\n\n if (options === null || !isProjectSource(state.root, id)) {\n return;\n }\n\n return compileSource(code, id, options);\n },\n };\n}\n\nexport { gtkxReactCompiler };\n"]}
1
+ {"version":3,"file":"react-compiler.js","sourceRoot":"","sources":["../../src/vite-plugins/react-compiler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ConfigLoader } from \"@gtkx/config\";\nimport type { ResolvedReactCompilerOptions } from \"@gtkx/config/internal\";\nimport type { Plugin, ResolvedConfig, UserConfig } from \"vite\";\nimport { createConfigLoader, viteProjectRoot } from \"@gtkx/config/internal\";\nimport {\n type CompilerOutput,\n createReactCompilerCache,\n type ReactCompilerCache,\n} from \"../internal/react-compiler-cache.js\";\n\ntype ReactCompilerState = {\n cache: ReactCompilerCache | null;\n options: ResolvedReactCompilerOptions | null;\n root: string;\n};\n\ntype BabelToolchain = Awaited<ReturnType<typeof loadBabelToolchain>>;\n\nconst SOURCE_EXTENSION = /\\.[jt]sx?$/;\nconst TYPESCRIPT_EXTENSION = /\\.tsx?$/;\nconst NODE_MODULES = /(?:^|\\/)node_modules\\//;\nconst MEMOIZABLE_SOURCE = /use[A-Z0-9]|use memo|use forget/;\nconst JSX_MARK = \"<\";\nconst PLAIN_TYPESCRIPT = \".ts\";\nconst ALL_FUNCTIONS = \"all\";\nconst babel: { toolchain: Promise<BabelToolchain> | undefined } = { toolchain: undefined };\n\nconst loadBabelToolchain = async () => {\n const [core, preset, plugin] = await Promise.all([\n import(\"@babel/core\"),\n import(\"@babel/preset-typescript\"),\n import(\"babel-plugin-react-compiler\"),\n ]);\n\n return {\n presetTypescript: preset.default.default ?? preset.default,\n reactCompiler: plugin.default.default ?? plugin.default,\n transformAsync: core.transformAsync,\n };\n};\n\nconst babelToolchain = (): Promise<BabelToolchain> => (babel.toolchain ??= loadBabelToolchain());\n\nconst isProjectSource = (root: string, id: string): boolean => {\n if (!SOURCE_EXTENSION.test(id)) {\n return false;\n }\n\n if (NODE_MODULES.test(id)) {\n return false;\n }\n\n if (root !== \"\" && !id.startsWith(`${root}/`)) {\n return false;\n }\n\n return true;\n};\n\nconst isMemoizable = (code: string, id: string, options: ResolvedReactCompilerOptions): boolean => {\n if (options.compilationMode === ALL_FUNCTIONS || MEMOIZABLE_SOURCE.test(code)) {\n return true;\n }\n\n return !id.endsWith(PLAIN_TYPESCRIPT) && code.includes(JSX_MARK);\n};\n\nconst compileSource = async (code: string, id: string, options: ResolvedReactCompilerOptions) => {\n const toolchain = await babelToolchain();\n\n const result = await toolchain.transformAsync(code, {\n filename: id,\n babelrc: false,\n configFile: false,\n sourceMaps: true,\n parserOpts: { plugins: id.endsWith(PLAIN_TYPESCRIPT) ? [] : [\"jsx\"] },\n presets: TYPESCRIPT_EXTENSION.test(id) ? [toolchain.presetTypescript] : [],\n plugins: [[toolchain.reactCompiler, options]],\n });\n\n if (!result?.code) {\n return;\n }\n\n return result.map == null ? { code: result.code } : { code: result.code, map: JSON.stringify(result.map) };\n};\n\nconst cachedSource = async (\n cache: ReactCompilerCache,\n code: string,\n id: string,\n options: ResolvedReactCompilerOptions,\n): Promise<CompilerOutput | undefined> => {\n const key = cache.keyFor(code, id);\n const cached = cache.read(key);\n\n if (cached !== undefined) {\n return cached;\n }\n\n const compiled = await compileSource(code, id, options);\n\n if (compiled !== undefined) {\n cache.write(key, compiled);\n }\n\n return compiled;\n};\n\nfunction gtkxReactCompiler(loadConfig: ConfigLoader = createConfigLoader()): Plugin {\n const state: ReactCompilerState = {\n cache: null,\n options: null,\n root: \"\",\n };\n\n return {\n name: \"gtkx:react-compiler\",\n enforce: \"pre\",\n\n async config(config: UserConfig) {\n const resolved = await loadConfig.resolve(viteProjectRoot(config));\n state.options = resolved.reactCompiler;\n },\n\n configResolved(config: ResolvedConfig) {\n state.root = config.root;\n state.cache = state.options === null ? null : createReactCompilerCache(config.cacheDir, state.options);\n },\n\n transform: {\n filter: { id: { include: SOURCE_EXTENSION, exclude: NODE_MODULES } },\n\n async handler(code, id) {\n const options = state.options;\n\n if (options === null || !isProjectSource(state.root, id) || !isMemoizable(code, id, options)) {\n return;\n }\n\n const cache = state.cache;\n\n return cache === null ? compileSource(code, id, options) : cachedSource(cache, code, id, options);\n },\n },\n };\n}\n\nexport { gtkxReactCompiler };\n"]}
@@ -5,7 +5,9 @@ declare const ICON_NAME_SEPARATOR = "\0icon=";
5
5
  declare const REFRESH_EXPORT = "__refresh";
6
6
  declare const REGISTER_REFRESH_EXPORT = "__registerRefresh";
7
7
  declare const RESOURCE_PATH_EXPORT = "path";
8
+ declare const VIRTUAL_ID_RE: RegExp;
9
+ declare const VIRTUAL_INIT_RE: RegExp;
8
10
  declare const isVirtual: (id: string) => boolean, toVirtualId: (realId: string) => string, fromVirtualId: (id: string) => string;
9
11
  declare const escapeXml: (value: string) => string;
10
- export { VIRTUAL_INIT, BUNDLE_FILENAME, REL_SEPARATOR, ICON_NAME_SEPARATOR, REFRESH_EXPORT, REGISTER_REFRESH_EXPORT, RESOURCE_PATH_EXPORT, escapeXml, isVirtual, toVirtualId, fromVirtualId, };
12
+ export { VIRTUAL_ID_RE, VIRTUAL_INIT, VIRTUAL_INIT_RE, BUNDLE_FILENAME, REL_SEPARATOR, ICON_NAME_SEPARATOR, REFRESH_EXPORT, REGISTER_REFRESH_EXPORT, RESOURCE_PATH_EXPORT, escapeXml, isVirtual, toVirtualId, fromVirtualId, };
11
13
  //# sourceMappingURL=resource-shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-shared.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/resource-shared.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,YAAY,0BAA0B,CAAC;AAC7C,QAAA,MAAM,eAAe,mBAAmB,CAAC;AACzC,QAAA,MAAM,aAAa,WAAW,CAAC;AAC/B,QAAA,MAAM,mBAAmB,YAAY,CAAC;AACtC,QAAA,MAAM,cAAc,cAAc,CAAC;AACnC,QAAA,MAAM,uBAAuB,sBAAsB,CAAC;AACpD,QAAA,MAAM,oBAAoB,SAAS,CAAC;AACpC,QAAA,MAAQ,SAAS,2BAAE,WAAW,8BAAE,aAAa,wBAA2C,CAAC;AAEzF,QAAA,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MAmB7B,CAAC;AAEP,OAAO,EACH,YAAY,EACZ,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,SAAS,EACT,SAAS,EACT,WAAW,EACX,aAAa,GAChB,CAAC"}
1
+ {"version":3,"file":"resource-shared.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/resource-shared.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,YAAY,0BAA0B,CAAC;AAC7C,QAAA,MAAM,eAAe,mBAAmB,CAAC;AACzC,QAAA,MAAM,aAAa,WAAW,CAAC;AAC/B,QAAA,MAAM,mBAAmB,YAAY,CAAC;AACtC,QAAA,MAAM,cAAc,cAAc,CAAC;AACnC,QAAA,MAAM,uBAAuB,sBAAsB,CAAC;AACpD,QAAA,MAAM,oBAAoB,SAAS,CAAC;AACpC,QAAA,MAAM,aAAa,QAAmC,CAAC;AACvD,QAAA,MAAM,eAAe,QAAkC,CAAC;AACxD,QAAA,MAAQ,SAAS,2BAAE,WAAW,8BAAE,aAAa,wBAA2C,CAAC;AAEzF,QAAA,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MAmB7B,CAAC;AAEP,OAAO,EACH,aAAa,EACb,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,SAAS,EACT,SAAS,EACT,WAAW,EACX,aAAa,GAChB,CAAC"}
@@ -7,6 +7,8 @@ const ICON_NAME_SEPARATOR = "\0icon=";
7
7
  const REFRESH_EXPORT = "__refresh";
8
8
  const REGISTER_REFRESH_EXPORT = "__registerRefresh";
9
9
  const RESOURCE_PATH_EXPORT = "path";
10
+ const VIRTUAL_ID_RE = new RegExp(`^${VIRTUAL_PREFIX}`);
11
+ const VIRTUAL_INIT_RE = new RegExp(`^${VIRTUAL_INIT}$`);
10
12
  const { isVirtual, toVirtualId, fromVirtualId } = createVirtualNamespace(VIRTUAL_PREFIX);
11
13
  const escapeXml = (value) => value.replaceAll(/[<>&"']/g, (char) => {
12
14
  switch (char) {
@@ -27,5 +29,5 @@ const escapeXml = (value) => value.replaceAll(/[<>&"']/g, (char) => {
27
29
  }
28
30
  }
29
31
  });
30
- export { VIRTUAL_INIT, BUNDLE_FILENAME, REL_SEPARATOR, ICON_NAME_SEPARATOR, REFRESH_EXPORT, REGISTER_REFRESH_EXPORT, RESOURCE_PATH_EXPORT, escapeXml, isVirtual, toVirtualId, fromVirtualId, };
32
+ export { VIRTUAL_ID_RE, VIRTUAL_INIT, VIRTUAL_INIT_RE, BUNDLE_FILENAME, REL_SEPARATOR, ICON_NAME_SEPARATOR, REFRESH_EXPORT, REGISTER_REFRESH_EXPORT, RESOURCE_PATH_EXPORT, escapeXml, isVirtual, toVirtualId, fromVirtualId, };
31
33
  //# sourceMappingURL=resource-shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-shared.js","sourceRoot":"","sources":["../../src/vite-plugins/resource-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAC3C,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAC7C,MAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,MAAM,aAAa,GAAG,QAAQ,CAAC;AAC/B,MAAM,mBAAmB,GAAG,SAAS,CAAC;AACtC,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AACpD,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;AAEzF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CACxC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;IAClC,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,GAAG,CAAC,CAAC,CAAC;YACP,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,CAAC;YACP,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,CAAC;YACP,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACR,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACN,OAAO,QAAQ,CAAC;QACpB,CAAC;IACL,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,OAAO,EACH,YAAY,EACZ,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,SAAS,EACT,SAAS,EACT,WAAW,EACX,aAAa,GAChB,CAAC","sourcesContent":["import { createVirtualNamespace } from \"./virtual-module.js\";\n\nconst VIRTUAL_PREFIX = \"\\0gtkx-resources:\";\nconst VIRTUAL_INIT = \"\\0gtkx-resources-init\";\nconst BUNDLE_FILENAME = \"gtkx.gresource\";\nconst REL_SEPARATOR = \"\\0rel=\";\nconst ICON_NAME_SEPARATOR = \"\\0icon=\";\nconst REFRESH_EXPORT = \"__refresh\";\nconst REGISTER_REFRESH_EXPORT = \"__registerRefresh\";\nconst RESOURCE_PATH_EXPORT = \"path\";\nconst { isVirtual, toVirtualId, fromVirtualId } = createVirtualNamespace(VIRTUAL_PREFIX);\n\nconst escapeXml = (value: string): string =>\n value.replaceAll(/[<>&\"']/g, (char) => {\n switch (char) {\n case \"<\": {\n return \"&lt;\";\n }\n case \">\": {\n return \"&gt;\";\n }\n case \"&\": {\n return \"&amp;\";\n }\n case \"\\\"\": {\n return \"&quot;\";\n }\n default: {\n return \"&apos;\";\n }\n }\n });\n\nexport {\n VIRTUAL_INIT,\n BUNDLE_FILENAME,\n REL_SEPARATOR,\n ICON_NAME_SEPARATOR,\n REFRESH_EXPORT,\n REGISTER_REFRESH_EXPORT,\n RESOURCE_PATH_EXPORT,\n escapeXml,\n isVirtual,\n toVirtualId,\n fromVirtualId,\n};\n"]}
1
+ {"version":3,"file":"resource-shared.js","sourceRoot":"","sources":["../../src/vite-plugins/resource-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAC3C,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAC7C,MAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,MAAM,aAAa,GAAG,QAAQ,CAAC;AAC/B,MAAM,mBAAmB,GAAG,SAAS,CAAC;AACtC,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AACpD,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;AACvD,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;AACxD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;AAEzF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CACxC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;IAClC,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,GAAG,CAAC,CAAC,CAAC;YACP,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,CAAC;YACP,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,CAAC;YACP,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACR,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACN,OAAO,QAAQ,CAAC;QACpB,CAAC;IACL,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,OAAO,EACH,aAAa,EACb,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,SAAS,EACT,SAAS,EACT,WAAW,EACX,aAAa,GAChB,CAAC","sourcesContent":["import { createVirtualNamespace } from \"./virtual-module.js\";\n\nconst VIRTUAL_PREFIX = \"\\0gtkx-resources:\";\nconst VIRTUAL_INIT = \"\\0gtkx-resources-init\";\nconst BUNDLE_FILENAME = \"gtkx.gresource\";\nconst REL_SEPARATOR = \"\\0rel=\";\nconst ICON_NAME_SEPARATOR = \"\\0icon=\";\nconst REFRESH_EXPORT = \"__refresh\";\nconst REGISTER_REFRESH_EXPORT = \"__registerRefresh\";\nconst RESOURCE_PATH_EXPORT = \"path\";\nconst VIRTUAL_ID_RE = new RegExp(`^${VIRTUAL_PREFIX}`);\nconst VIRTUAL_INIT_RE = new RegExp(`^${VIRTUAL_INIT}$`);\nconst { isVirtual, toVirtualId, fromVirtualId } = createVirtualNamespace(VIRTUAL_PREFIX);\n\nconst escapeXml = (value: string): string =>\n value.replaceAll(/[<>&\"']/g, (char) => {\n switch (char) {\n case \"<\": {\n return \"&lt;\";\n }\n case \">\": {\n return \"&gt;\";\n }\n case \"&\": {\n return \"&amp;\";\n }\n case \"\\\"\": {\n return \"&quot;\";\n }\n default: {\n return \"&apos;\";\n }\n }\n });\n\nexport {\n VIRTUAL_ID_RE,\n VIRTUAL_INIT,\n VIRTUAL_INIT_RE,\n BUNDLE_FILENAME,\n REL_SEPARATOR,\n ICON_NAME_SEPARATOR,\n REFRESH_EXPORT,\n REGISTER_REFRESH_EXPORT,\n RESOURCE_PATH_EXPORT,\n escapeXml,\n isVirtual,\n toVirtualId,\n fromVirtualId,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAc,MAAM,EAAuD,MAAM,MAAM,CAAC;AAylDpG,iBAAS,aAAa,CAAC,UAAU,GAAE,YAAmC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAyBlG;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAc,MAAM,EAAuD,MAAM,MAAM,CAAC;AA0/CpG,iBAAS,aAAa,CAAC,UAAU,GAAE,YAAmC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAuBlG;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1,22 +1,22 @@
1
- import { createConfigLoader, resolveFuture, resourceBasePath } from "@gtkx/config/internal";
2
- import { error, info, isRecord, sortStrings } from "@gtkx/utils";
1
+ import { createConfigLoader, resourceBasePath, viteProjectRoot } from "@gtkx/config/internal";
2
+ import { error, info, isPathInside, isRecord, sortStrings, toPosixPath } from "@gtkx/utils";
3
3
  import { copyFileSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
4
4
  import { basename, dirname, extname, isAbsolute, join, posix, relative, sep } from "node:path";
5
5
  import { parseSync } from "vite";
6
- import { resolveDataDir } from "../internal/data-dir.js";
7
- import { listFilesRecursive } from "../internal/list-files.js";
6
+ import { withExclusiveLoad } from "../internal/module-loads.js";
8
7
  import { runCliTool } from "../internal/run-cli-tool.js";
9
8
  import { parseRuntimeImportsIn, sourceLanguage } from "../internal/source-imports.js";
10
9
  import { createRetainedStagingDir, withStagingDir } from "../internal/staging-dir.js";
11
10
  import { ASSET_RE } from "./asset-extensions.js";
12
- import { DATA_PREFIX, isBareRelativeAsset, isDataAsset, parseIconSpecifier, parseResourceSpecifier, } from "./asset-specifier.js";
11
+ import { isBareRelativeAsset, parseIconSpecifier, parseResourceSpecifier, } from "./asset-specifier.js";
13
12
  import { renderInitModule } from "./resource-init-module.js";
14
- import { BUNDLE_FILENAME, escapeXml, fromVirtualId, ICON_NAME_SEPARATOR, isVirtual, REFRESH_EXPORT, REGISTER_REFRESH_EXPORT, REL_SEPARATOR, RESOURCE_PATH_EXPORT, toVirtualId, VIRTUAL_INIT, } from "./resource-shared.js";
13
+ import { BUNDLE_FILENAME, escapeXml, fromVirtualId, ICON_NAME_SEPARATOR, isVirtual, REFRESH_EXPORT, REGISTER_REFRESH_EXPORT, REL_SEPARATOR, RESOURCE_PATH_EXPORT, toVirtualId, VIRTUAL_ID_RE, VIRTUAL_INIT, VIRTUAL_INIT_RE, } from "./resource-shared.js";
15
14
  import { stripQuery } from "./strip-query.js";
16
15
  const RESOURCE_COMPILER = "glib-compile-resources";
17
16
  const MANIFEST_PREFIX = "/";
18
17
  const DEV_STAGING_PREFIX = "resources-dev";
19
18
  const MANIFEST_FILENAME = "package.json";
19
+ const DATA_PREFIX = "#data/";
20
20
  const BUNDLED_QUERY_MENTION_RE = /[?&](?:icon|resource)(?:[=&]|$)/;
21
21
  const ICON_EXTENSIONS = new Set([".png", ".svg", ".xpm"]);
22
22
  const ICON_CONTEXTS = new Set([
@@ -49,12 +49,7 @@ const STOCK_ICON_CONTEXTS = new Set([
49
49
  ]);
50
50
  const ICON_SIZE_RE = /^([1-9]\d*)x\1(?:@[1-9]\d*)?$/;
51
51
  const RESERVED_ICON_NAMES = new Set(["", ".", ".."]);
52
- const toForwardSlashes = (value) => value.replaceAll(/[/\\]/g, "/");
53
- const isWithin = (root, path) => {
54
- const rel = relative(root, path);
55
- return rel.length > 0 && !isAbsolute(rel) && rel !== ".." && !rel.startsWith(`..${sep}`);
56
- };
57
- const isDependencyFile = (root, path) => isWithin(root, path) && relative(root, path).split(sep).includes("node_modules");
52
+ const isDependencyFile = (root, path) => isPathInside(root, path) && relative(root, path).split(sep).includes("node_modules");
58
53
  const packageIdentityIn = (dir) => {
59
54
  try {
60
55
  const manifest = JSON.parse(readFileSync(join(dir, MANIFEST_FILENAME), "utf8"));
@@ -84,14 +79,14 @@ const validateResourcePath = (resourcePath) => {
84
79
  return resourcePath;
85
80
  };
86
81
  const derivedResourcePath = (state, sourcePath) => {
87
- if (isWithin(state.root, sourcePath) && !isDependencyFile(state.root, sourcePath)) {
88
- return validateResourcePath(`${state.prefix}/${toForwardSlashes(relative(state.root, sourcePath))}`);
82
+ if (isPathInside(state.root, sourcePath) && !isDependencyFile(state.root, sourcePath)) {
83
+ return validateResourcePath(`${state.prefix}/${toPosixPath(relative(state.root, sourcePath))}`);
89
84
  }
90
85
  const owner = packageForFile(sourcePath);
91
- if (owner === null || !isWithin(owner.dir, sourcePath)) {
86
+ if (owner === null || !isPathInside(owner.dir, sourcePath)) {
92
87
  throw new Error(`${sourcePath} is outside the application and does not belong to a named package`);
93
88
  }
94
- const packagePath = toForwardSlashes(relative(owner.dir, sourcePath));
89
+ const packagePath = toPosixPath(relative(owner.dir, sourcePath));
95
90
  return validateResourcePath(`${state.prefix}/${owner.name}/${packagePath}`);
96
91
  };
97
92
  const iconExtension = (sourcePath) => {
@@ -134,7 +129,7 @@ const iconLayoutInParts = (parts, beforeIndex) => {
134
129
  return isIconLayout(layout) ? layout.join("/") : iconLayoutInParts(parts, index - 1);
135
130
  };
136
131
  const iconLayoutFromTree = (sourcePath) => {
137
- const parts = toForwardSlashes(sourcePath).split("/");
132
+ const parts = toPosixPath(sourcePath).split("/");
138
133
  return iconLayoutInParts(parts, parts.length - 2);
139
134
  };
140
135
  const derivedIconEntry = (state, sourcePath, requestedName) => {
@@ -159,7 +154,7 @@ const hasSideEffectIconImport = (code, id) => {
159
154
  }
160
155
  return parsed.module.staticImports.some((statement) => statement.entries.length === 0 && parseIconSpecifier(statement.moduleRequest.value) !== null);
161
156
  };
162
- const retainSideEffectIconImport = (state, code, id) => state.isV2 && hasSideEffectIconImport(code, id)
157
+ const retainSideEffectIconImport = (code, id) => hasSideEffectIconImport(code, id)
163
158
  ? { code, moduleSideEffects: true }
164
159
  : null;
165
160
  const compileBundle = (state, outputPath) => withStagingDir("resources", (dir) => {
@@ -225,16 +220,6 @@ const refreshRegisteredDevBundle = (state) => {
225
220
  refresh();
226
221
  }
227
222
  };
228
- const scanDataAssets = (dataDir) => listFilesRecursive(dataDir, (name) => ASSET_RE.test(name));
229
- const primeLegacyDevBundle = (state) => {
230
- if (state.dataDir === null) {
231
- return;
232
- }
233
- for (const { absPath, rel } of scanDataAssets(state.dataDir)) {
234
- registerEntry(state, absPath, rel);
235
- }
236
- compileDevBundle(state);
237
- };
238
223
  const registerDevAsset = (state) => {
239
224
  if (entriesSignature(state) !== state.compiledSignature) {
240
225
  compileDevBundle(state);
@@ -268,7 +253,7 @@ const activateEntry = (state, entry) => {
268
253
  state.sourcePaths.add(entry.sourcePath);
269
254
  return entry;
270
255
  };
271
- const isDeclarativeImporter = (state, importer) => !state.isBuild && state.isV2 && importer !== undefined;
256
+ const isDeclarativeImporter = (state, importer) => !state.isBuild && importer !== undefined;
272
257
  const setSourceAvailability = (state, file, isAvailable) => {
273
258
  if (isAvailable) {
274
259
  state.missingSourcePaths.delete(file);
@@ -394,17 +379,6 @@ const resolveIconEntry = async (ctx, state, request) => {
394
379
  iconName: derived.iconName,
395
380
  };
396
381
  };
397
- const resolveLegacyAssetEntry = async (ctx, state, request) => {
398
- const resolved = await ctx.resolve(request.source, request.importer, { ...request.options, skipSelf: true });
399
- if (!resolved || resolved.external) {
400
- return undefined;
401
- }
402
- const sourcePath = stripQuery(resolved.id);
403
- if (!isAbsolute(sourcePath)) {
404
- return undefined;
405
- }
406
- return registerEntry(state, sourcePath, request.source.slice(DATA_PREFIX.length));
407
- };
408
382
  const loadInitModule = (state) => {
409
383
  if (state.isBuild) {
410
384
  if (state.bundleReferenceId === null) {
@@ -479,8 +453,7 @@ const loadAssetModule = (state, virtualId) => {
479
453
  const { absPath, iconName, rel } = virtualAssetMetadata(virtualId);
480
454
  const resourcePath = validateResourcePath(rel);
481
455
  const { entry, isRegistered } = loadedResourceEntry(state, absPath, resourcePath);
482
- const uri = `resource://${entry.resourcePath}`;
483
- const defaultValue = iconName ?? (state.isV2 ? entry.resourcePath : uri);
456
+ const defaultValue = iconName ?? entry.resourcePath;
484
457
  compileLoadedDevAsset(state, isRegistered);
485
458
  return [
486
459
  ...assetModuleImports(iconName),
@@ -524,17 +497,17 @@ const bundledSpecifiersIn = (imports) => new Set(imports
524
497
  .map((entry) => entry.source));
525
498
  const isSourceModule = (file) => sourceLanguage(file) !== undefined;
526
499
  const isBundledSource = (source) => parseResourceSpecifier(source) !== null || parseIconSpecifier(source) !== null;
527
- const validateUnbundledV2Source = (source) => {
500
+ const validateUnbundledSource = (source) => {
528
501
  if (isLegacyDataSpecifier(source)) {
529
502
  throw new Error(`${JSON.stringify(source)} uses the legacy #data asset form`);
530
503
  }
531
- rejectInvalidV2Specifier(source);
504
+ rejectInvalidSpecifier(source);
532
505
  };
533
506
  const resolvedModuleDependency = async (ctx, source, importer) => {
534
507
  if (isBundledSource(source)) {
535
508
  return null;
536
509
  }
537
- validateUnbundledV2Source(source);
510
+ validateUnbundledSource(source);
538
511
  const resolved = await ctx.resolve(source, importer, { skipSelf: true });
539
512
  if (resolved === null) {
540
513
  throw new Error(`${JSON.stringify(source)} could not be resolved from ${importer}`);
@@ -554,7 +527,7 @@ const resolvedModuleDependencies = async (ctx, imports, importer) => {
554
527
  const importerReconciliation = async (ctx, state, id) => {
555
528
  const file = stripQuery(id);
556
529
  const key = importerKey(file);
557
- if (!state.isV2 || state.isBuild || !isSourceModule(file)) {
530
+ if (state.isBuild || !isSourceModule(file)) {
558
531
  return null;
559
532
  }
560
533
  const imports = parseRuntimeImportsIn(file);
@@ -708,27 +681,14 @@ const forgetImporterDeclarations = (state, importer) => {
708
681
  state.declaredEntries.delete(importer);
709
682
  state.declaredIcons.delete(importer);
710
683
  };
711
- const cloneStringSetMap = (source) => {
712
- const clone = new Map();
713
- for (const [key, values] of source) {
714
- clone.set(key, new Set(values));
715
- }
716
- return clone;
717
- };
718
- const cloneDeclarationMap = (source) => {
719
- const clone = new Map();
720
- for (const [key, declarations] of source) {
721
- clone.set(key, new Map(declarations));
722
- }
723
- return clone;
724
- };
684
+ const cloneMapValues = (source, clone) => new Map([...source].map(([key, value]) => [key, clone(value)]));
725
685
  const reconciliationCandidate = (state) => ({
726
686
  ...state,
727
- bundledSpecifiers: cloneStringSetMap(state.bundledSpecifiers),
728
- moduleDependencies: cloneStringSetMap(state.moduleDependencies),
729
- prunedDependencies: cloneStringSetMap(state.prunedDependencies),
730
- declaredEntries: cloneDeclarationMap(state.declaredEntries),
731
- declaredIcons: cloneDeclarationMap(state.declaredIcons),
687
+ bundledSpecifiers: cloneMapValues(state.bundledSpecifiers, (values) => new Set(values)),
688
+ moduleDependencies: cloneMapValues(state.moduleDependencies, (values) => new Set(values)),
689
+ prunedDependencies: cloneMapValues(state.prunedDependencies, (values) => new Set(values)),
690
+ declaredEntries: cloneMapValues(state.declaredEntries, (entries) => new Map(entries)),
691
+ declaredIcons: cloneMapValues(state.declaredIcons, (entries) => new Map(entries)),
732
692
  missingSourcePaths: new Set(state.missingSourcePaths),
733
693
  });
734
694
  const storeBundledSpecifiers = (state, importer, specifiers) => {
@@ -808,7 +768,7 @@ const commitReconciliation = (state, candidate) => {
808
768
  state.sourcePaths = candidate.sourcePaths;
809
769
  state.iconOwners = candidate.iconOwners;
810
770
  };
811
- const reconcileV2Importer = async (ctx, state, id) => {
771
+ const reconcileImporter = async (ctx, state, id) => {
812
772
  const reconciliation = await importerReconciliation(ctx, state, id);
813
773
  if (reconciliation === null) {
814
774
  return;
@@ -821,10 +781,9 @@ const reconcileV2Importer = async (ctx, state, id) => {
821
781
  }
822
782
  };
823
783
  const resolveResourceConfig = async (state, config, loadConfig) => {
824
- const loaded = await loadConfig.load(config.root ?? process.cwd());
784
+ const loaded = await loadConfig.load(viteProjectRoot(config));
825
785
  state.prefix = resourceBasePath(loaded.config.applicationId);
826
786
  state.root = loaded.root;
827
- state.isV2 = resolveFuture(loaded.config.future).isResourceImported;
828
787
  return {
829
788
  assetsInclude: [ASSET_RE],
830
789
  };
@@ -882,12 +841,6 @@ const attachResourceWatcher = (state, server) => {
882
841
  const applyResolvedConfig = (state, config) => {
883
842
  state.isBuild = config.command === "build";
884
843
  state.root = config.root;
885
- state.dataDir = null;
886
- if (state.isBuild || state.isV2) {
887
- return;
888
- }
889
- const relativeDataDir = resolveDataDir(config.root);
890
- state.dataDir = relativeDataDir === null ? null : join(config.root, relativeDataDir);
891
844
  };
892
845
  const loadResourceModule = (state, id) => {
893
846
  if (id === VIRTUAL_INIT) {
@@ -899,14 +852,14 @@ const loadResourceModule = (state, id) => {
899
852
  return loadAssetModule(state, id);
900
853
  };
901
854
  const isLegacyDataSpecifier = (source) => source.startsWith(DATA_PREFIX) && ASSET_RE.test(stripQuery(source));
902
- const rejectInvalidV2Specifier = (source) => {
855
+ const rejectInvalidSpecifier = (source) => {
903
856
  if (BUNDLED_QUERY_MENTION_RE.test(source)) {
904
857
  throw new Error(`${JSON.stringify(source)} is not a valid bundled asset import; use ?resource, ` +
905
858
  "?resource=/absolute/path, ?icon, or ?icon=name");
906
859
  }
907
860
  if (isBareRelativeAsset(source)) {
908
861
  throw new Error(`${JSON.stringify(source)} must choose ?resource for a GResource, ?icon for a themed icon, ` +
909
- "or ?url for an emitted file");
862
+ "?font for a bundled font, or ?url for an emitted file");
910
863
  }
911
864
  };
912
865
  const resolveExplicitResourceId = async (ctx, state, request) => {
@@ -937,7 +890,7 @@ const resolveIconResourceId = async (ctx, state, request) => {
937
890
  ? undefined
938
891
  : { id: virtualIconId(resolved), moduleSideEffects: true };
939
892
  };
940
- const resolveV2ResourceId = async (ctx, state, request) => {
893
+ const resolveBundledResourceId = async (ctx, state, request) => {
941
894
  if (isLegacyDataSpecifier(request.source)) {
942
895
  throw new Error(`${JSON.stringify(request.source)} uses the legacy #data asset form; import it relatively with ` +
943
896
  "?resource or ?url");
@@ -952,30 +905,14 @@ const resolveV2ResourceId = async (ctx, state, request) => {
952
905
  trackBundledSpecifier(state, request.importer, request.source);
953
906
  return resolved;
954
907
  }
955
- rejectInvalidV2Specifier(request.source);
908
+ rejectInvalidSpecifier(request.source);
956
909
  return undefined;
957
910
  };
958
- const resolveLegacyResourceId = async (ctx, state, request) => {
959
- if (BUNDLED_QUERY_MENTION_RE.test(request.source)) {
960
- throw new Error(`${JSON.stringify(request.source)} requires future.v2ResourceImports`);
961
- }
962
- if (!isDataAsset(request.source)) {
963
- return undefined;
964
- }
965
- const entry = await resolveLegacyAssetEntry(ctx, state, request);
966
- return entry === undefined ? undefined : virtualAssetId(entry);
967
- };
968
911
  const resolveResourceId = (ctx, state, request) => {
969
912
  if (request.source === VIRTUAL_INIT) {
970
913
  return Promise.resolve(VIRTUAL_INIT);
971
914
  }
972
- return state.isV2
973
- ? resolveV2ResourceId(ctx, state, request)
974
- : resolveLegacyResourceId(ctx, state, request);
975
- };
976
- const configureResourceServer = (state, server) => {
977
- attachResourceWatcher(state, server);
978
- primeLegacyDevBundle(state);
915
+ return resolveBundledResourceId(ctx, state, request);
979
916
  };
980
917
  const createResourcesPlugin = (state, loadConfig) => ({
981
918
  name: "gtkx:resources",
@@ -986,7 +923,7 @@ const createResourcesPlugin = (state, loadConfig) => ({
986
923
  applyResolvedConfig(state, config);
987
924
  },
988
925
  configureServer: (server) => {
989
- configureResourceServer(state, server);
926
+ attachResourceWatcher(state, server);
990
927
  },
991
928
  buildStart() {
992
929
  if (state.isBuild && state.bundleReferenceId === null) {
@@ -1000,12 +937,15 @@ const createResourcesPlugin = (state, loadConfig) => ({
1000
937
  resolveId(source, importer, options) {
1001
938
  return resolveResourceId(this, state, { source, importer, options });
1002
939
  },
1003
- load(id) {
1004
- return loadResourceModule(state, id);
940
+ load: {
941
+ filter: { id: { include: [VIRTUAL_INIT_RE, VIRTUAL_ID_RE] } },
942
+ handler(id) {
943
+ return loadResourceModule(state, id);
944
+ },
1005
945
  },
1006
946
  async transform(code, id) {
1007
- await reconcileV2Importer(this, state, id);
1008
- return retainSideEffectIconImport(state, code, id);
947
+ await withExclusiveLoad(state, () => reconcileImporter(this, state, id));
948
+ return retainSideEffectIconImport(code, id);
1009
949
  },
1010
950
  generateBundle(_options, bundle) {
1011
951
  finalizeBuildBundle(this, bundle, state);
@@ -1019,7 +959,6 @@ function gtkxResources(loadConfig = createConfigLoader(), entryPath) {
1019
959
  prefix: "",
1020
960
  root: "",
1021
961
  isBuild: false,
1022
- isV2: false,
1023
962
  entries: new Map(),
1024
963
  bundledSpecifiers: new Map(),
1025
964
  moduleDependencies: new Map(),
@@ -1033,7 +972,6 @@ function gtkxResources(loadConfig = createConfigLoader(), entryPath) {
1033
972
  devBundlePath: "",
1034
973
  server: null,
1035
974
  compiledSignature: "",
1036
- dataDir: null,
1037
975
  bundleReferenceId: null,
1038
976
  iconOwners: new Map(),
1039
977
  };