@gtkx/cli 2.0.0-beta.1 → 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 (501) hide show
  1. package/README.md +43 -40
  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 +5 -1
  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 +1 -0
  21. package/dist/codegen/reference.js.map +1 -1
  22. package/dist/codegen/run-codegen.d.ts +6 -3
  23. package/dist/codegen/run-codegen.d.ts.map +1 -1
  24. package/dist/codegen/run-codegen.js +42 -18
  25. package/dist/codegen/run-codegen.js.map +1 -1
  26. package/dist/codegen/store-resolver.d.ts +3 -1
  27. package/dist/codegen/store-resolver.d.ts.map +1 -1
  28. package/dist/codegen/store-resolver.js +7 -4
  29. package/dist/codegen/store-resolver.js.map +1 -1
  30. package/dist/commands/build.d.ts +5 -0
  31. package/dist/commands/build.d.ts.map +1 -1
  32. package/dist/commands/build.js +83 -10
  33. package/dist/commands/build.js.map +1 -1
  34. package/dist/commands/cleanup.d.ts +9 -0
  35. package/dist/commands/cleanup.d.ts.map +1 -0
  36. package/dist/commands/cleanup.js +42 -0
  37. package/dist/commands/cleanup.js.map +1 -0
  38. package/dist/commands/codegen.d.ts +1 -0
  39. package/dist/commands/codegen.d.ts.map +1 -1
  40. package/dist/commands/codegen.js +6 -5
  41. package/dist/commands/codegen.js.map +1 -1
  42. package/dist/commands/deploy.d.ts +5 -0
  43. package/dist/commands/deploy.d.ts.map +1 -1
  44. package/dist/commands/deploy.js +10 -2
  45. package/dist/commands/deploy.js.map +1 -1
  46. package/dist/commands/dev.d.ts +9 -0
  47. package/dist/commands/dev.d.ts.map +1 -1
  48. package/dist/commands/dev.js +31 -4
  49. package/dist/commands/dev.js.map +1 -1
  50. package/dist/commands/docs.d.ts.map +1 -1
  51. package/dist/commands/docs.js +1 -0
  52. package/dist/commands/docs.js.map +1 -1
  53. package/dist/deploy/depends.d.ts.map +1 -1
  54. package/dist/deploy/depends.js +24 -2
  55. package/dist/deploy/depends.js.map +1 -1
  56. package/dist/deploy/download.d.ts +7 -3
  57. package/dist/deploy/download.d.ts.map +1 -1
  58. package/dist/deploy/download.js +19 -20
  59. package/dist/deploy/download.js.map +1 -1
  60. package/dist/deploy/freedesktop/metainfo.d.ts.map +1 -1
  61. package/dist/deploy/freedesktop/metainfo.js +41 -2
  62. package/dist/deploy/freedesktop/metainfo.js.map +1 -1
  63. package/dist/deploy/freedesktop/validate.d.ts.map +1 -1
  64. package/dist/deploy/freedesktop/validate.js +58 -14
  65. package/dist/deploy/freedesktop/validate.js.map +1 -1
  66. package/dist/deploy/native-addon.d.ts +5 -0
  67. package/dist/deploy/native-addon.d.ts.map +1 -0
  68. package/dist/deploy/native-addon.js +134 -0
  69. package/dist/deploy/native-addon.js.map +1 -0
  70. package/dist/deploy/nfpm/config.d.ts +3 -2
  71. package/dist/deploy/nfpm/config.d.ts.map +1 -1
  72. package/dist/deploy/nfpm/config.js +7 -4
  73. package/dist/deploy/nfpm/config.js.map +1 -1
  74. package/dist/deploy/nfpm/contents.d.ts.map +1 -1
  75. package/dist/deploy/nfpm/contents.js +8 -0
  76. package/dist/deploy/nfpm/contents.js.map +1 -1
  77. package/dist/deploy/node-runtime/download.js +2 -2
  78. package/dist/deploy/node-runtime/download.js.map +1 -1
  79. package/dist/deploy/node-runtime/elf.d.ts +4 -1
  80. package/dist/deploy/node-runtime/elf.d.ts.map +1 -1
  81. package/dist/deploy/node-runtime/elf.js +34 -5
  82. package/dist/deploy/node-runtime/elf.js.map +1 -1
  83. package/dist/deploy/node-runtime/guard.d.ts.map +1 -1
  84. package/dist/deploy/node-runtime/guard.js +7 -14
  85. package/dist/deploy/node-runtime/guard.js.map +1 -1
  86. package/dist/deploy/node-runtime/index.d.ts +3 -1
  87. package/dist/deploy/node-runtime/index.d.ts.map +1 -1
  88. package/dist/deploy/node-runtime/index.js +103 -10
  89. package/dist/deploy/node-runtime/index.js.map +1 -1
  90. package/dist/deploy/node-runtime/sonames.d.ts +5 -0
  91. package/dist/deploy/node-runtime/sonames.d.ts.map +1 -0
  92. package/dist/deploy/node-runtime/sonames.js +13 -0
  93. package/dist/deploy/node-runtime/sonames.js.map +1 -0
  94. package/dist/deploy/notices/node-runtime.js +2 -2
  95. package/dist/deploy/notices/node-runtime.js.map +1 -1
  96. package/dist/deploy/payload/launcher.d.ts.map +1 -1
  97. package/dist/deploy/payload/launcher.js +14 -1
  98. package/dist/deploy/payload/launcher.js.map +1 -1
  99. package/dist/deploy/payload/stage.d.ts +2 -1
  100. package/dist/deploy/payload/stage.d.ts.map +1 -1
  101. package/dist/deploy/payload/stage.js +46 -5
  102. package/dist/deploy/payload/stage.js.map +1 -1
  103. package/dist/deploy/run-deploy.d.ts +2 -0
  104. package/dist/deploy/run-deploy.d.ts.map +1 -1
  105. package/dist/deploy/run-deploy.js +197 -52
  106. package/dist/deploy/run-deploy.js.map +1 -1
  107. package/dist/deploy/settings/arch.d.ts +9 -3
  108. package/dist/deploy/settings/arch.d.ts.map +1 -1
  109. package/dist/deploy/settings/arch.js +27 -6
  110. package/dist/deploy/settings/arch.js.map +1 -1
  111. package/dist/deploy/settings/build-manifest.d.ts +6 -1
  112. package/dist/deploy/settings/build-manifest.d.ts.map +1 -1
  113. package/dist/deploy/settings/build-manifest.js +15 -4
  114. package/dist/deploy/settings/build-manifest.js.map +1 -1
  115. package/dist/deploy/settings/extra-files.d.ts +1 -1
  116. package/dist/deploy/settings/extra-files.d.ts.map +1 -1
  117. package/dist/deploy/settings/extra-files.js +25 -3
  118. package/dist/deploy/settings/extra-files.js.map +1 -1
  119. package/dist/deploy/settings/index.d.ts +3 -1
  120. package/dist/deploy/settings/index.d.ts.map +1 -1
  121. package/dist/deploy/settings/index.js +4 -2
  122. package/dist/deploy/settings/index.js.map +1 -1
  123. package/dist/deploy/settings/libraries.d.ts.map +1 -1
  124. package/dist/deploy/settings/libraries.js +2 -1
  125. package/dist/deploy/settings/libraries.js.map +1 -1
  126. package/dist/deploy/settings/paths.d.ts +4 -2
  127. package/dist/deploy/settings/paths.d.ts.map +1 -1
  128. package/dist/deploy/settings/paths.js +121 -12
  129. package/dist/deploy/settings/paths.js.map +1 -1
  130. package/dist/deploy/targets/appimage.d.ts.map +1 -1
  131. package/dist/deploy/targets/appimage.js +1 -0
  132. package/dist/deploy/targets/appimage.js.map +1 -1
  133. package/dist/deploy/targets/flatpak-pnpm.js +4 -4
  134. package/dist/deploy/targets/flatpak-pnpm.js.map +1 -1
  135. package/dist/deploy/targets/flatpak-source.d.ts.map +1 -1
  136. package/dist/deploy/targets/flatpak-source.js +13 -2
  137. package/dist/deploy/targets/flatpak-source.js.map +1 -1
  138. package/dist/deploy/targets/flatpak.d.ts.map +1 -1
  139. package/dist/deploy/targets/flatpak.js +1 -0
  140. package/dist/deploy/targets/flatpak.js.map +1 -1
  141. package/dist/deploy/targets/nfpm-target.d.ts.map +1 -1
  142. package/dist/deploy/targets/nfpm-target.js +13 -7
  143. package/dist/deploy/targets/nfpm-target.js.map +1 -1
  144. package/dist/deploy/types.d.ts +5 -2
  145. package/dist/deploy/types.d.ts.map +1 -1
  146. package/dist/deploy/types.js.map +1 -1
  147. package/dist/deploy/vendored/appimagetool.js +2 -2
  148. package/dist/deploy/vendored/appimagetool.js.map +1 -1
  149. package/dist/deploy/vendored/nfpm.js +1 -1
  150. package/dist/deploy/vendored/nfpm.js.map +1 -1
  151. package/dist/dev/catalog-writes.d.ts +8 -0
  152. package/dist/dev/catalog-writes.d.ts.map +1 -0
  153. package/dist/dev/catalog-writes.js +26 -0
  154. package/dist/dev/catalog-writes.js.map +1 -0
  155. package/dist/dev/entry-env.d.ts +2 -1
  156. package/dist/dev/entry-env.d.ts.map +1 -1
  157. package/dist/dev/entry-env.js +2 -1
  158. package/dist/dev/entry-env.js.map +1 -1
  159. package/dist/dev/font-dir.d.ts +3 -0
  160. package/dist/dev/font-dir.d.ts.map +1 -0
  161. package/dist/dev/font-dir.js +9 -0
  162. package/dist/dev/font-dir.js.map +1 -0
  163. package/dist/dev/headless.d.ts +3 -0
  164. package/dist/dev/headless.d.ts.map +1 -0
  165. package/dist/dev/headless.js +35 -0
  166. package/dist/dev/headless.js.map +1 -0
  167. package/dist/dev/runner-deps.d.ts +1 -1
  168. package/dist/dev/runner-deps.d.ts.map +1 -1
  169. package/dist/dev/runner-deps.js +12 -7
  170. package/dist/dev/runner-deps.js.map +1 -1
  171. package/dist/dev/runner-main.d.ts.map +1 -1
  172. package/dist/dev/runner-main.js +10 -3
  173. package/dist/dev/runner-main.js.map +1 -1
  174. package/dist/dev/runner.d.ts +2 -0
  175. package/dist/dev/runner.d.ts.map +1 -1
  176. package/dist/dev/runner.js +26 -7
  177. package/dist/dev/runner.js.map +1 -1
  178. package/dist/dev/supervisor.d.ts +3 -1
  179. package/dist/dev/supervisor.d.ts.map +1 -1
  180. package/dist/dev/supervisor.js +132 -29
  181. package/dist/dev/supervisor.js.map +1 -1
  182. package/dist/dev/vite-dev-server.d.ts +1 -1
  183. package/dist/dev/vite-dev-server.d.ts.map +1 -1
  184. package/dist/dev/vite-dev-server.js +14 -2
  185. package/dist/dev/vite-dev-server.js.map +1 -1
  186. package/dist/dev/watch-ignore.d.ts +3 -0
  187. package/dist/dev/watch-ignore.d.ts.map +1 -0
  188. package/dist/dev/watch-ignore.js +11 -0
  189. package/dist/dev/watch-ignore.js.map +1 -0
  190. package/dist/i18n/catalogs.d.ts +6 -2
  191. package/dist/i18n/catalogs.d.ts.map +1 -1
  192. package/dist/i18n/catalogs.js +10 -7
  193. package/dist/i18n/catalogs.js.map +1 -1
  194. package/dist/i18n/source-messages.d.ts +3 -1
  195. package/dist/i18n/source-messages.d.ts.map +1 -1
  196. package/dist/i18n/source-messages.js +973 -9
  197. package/dist/i18n/source-messages.js.map +1 -1
  198. package/dist/internal/agent-rules.d.ts.map +1 -1
  199. package/dist/internal/agent-rules.js +7 -2
  200. package/dist/internal/agent-rules.js.map +1 -1
  201. package/dist/internal/banner.d.ts +4 -2
  202. package/dist/internal/banner.d.ts.map +1 -1
  203. package/dist/internal/banner.js +19 -5
  204. package/dist/internal/banner.js.map +1 -1
  205. package/dist/internal/build-manifest.d.ts +5 -2
  206. package/dist/internal/build-manifest.d.ts.map +1 -1
  207. package/dist/internal/build-manifest.js +15 -2
  208. package/dist/internal/build-manifest.js.map +1 -1
  209. package/dist/internal/build-output.d.ts +8 -0
  210. package/dist/internal/build-output.d.ts.map +1 -0
  211. package/dist/internal/build-output.js +116 -0
  212. package/dist/internal/build-output.js.map +1 -0
  213. package/dist/internal/cache-root.d.ts +3 -0
  214. package/dist/internal/cache-root.d.ts.map +1 -0
  215. package/dist/internal/cache-root.js +9 -0
  216. package/dist/internal/cache-root.js.map +1 -0
  217. package/dist/internal/compile-cache-store.d.ts +4 -0
  218. package/dist/internal/compile-cache-store.d.ts.map +1 -0
  219. package/dist/internal/compile-cache-store.js +41 -0
  220. package/dist/internal/compile-cache-store.js.map +1 -0
  221. package/dist/internal/compile-cache.d.ts +4 -0
  222. package/dist/internal/compile-cache.d.ts.map +1 -0
  223. package/dist/internal/compile-cache.js +16 -0
  224. package/dist/internal/compile-cache.js.map +1 -0
  225. package/dist/internal/deploy-out-dir.d.ts +4 -0
  226. package/dist/internal/deploy-out-dir.d.ts.map +1 -0
  227. package/dist/internal/deploy-out-dir.js +5 -0
  228. package/dist/internal/deploy-out-dir.js.map +1 -0
  229. package/dist/internal/docs-elements.d.ts +1 -0
  230. package/dist/internal/docs-elements.d.ts.map +1 -1
  231. package/dist/internal/docs-elements.js +5 -4
  232. package/dist/internal/docs-elements.js.map +1 -1
  233. package/dist/internal/entry-arg.d.ts +4 -1
  234. package/dist/internal/entry-arg.d.ts.map +1 -1
  235. package/dist/internal/entry-arg.js +7 -1
  236. package/dist/internal/entry-arg.js.map +1 -1
  237. package/dist/internal/errors.d.ts +2 -1
  238. package/dist/internal/errors.d.ts.map +1 -1
  239. package/dist/internal/errors.js +1 -1
  240. package/dist/internal/errors.js.map +1 -1
  241. package/dist/internal/font-path.d.ts +4 -0
  242. package/dist/internal/font-path.d.ts.map +1 -0
  243. package/dist/internal/font-path.js +12 -0
  244. package/dist/internal/font-path.js.map +1 -0
  245. package/dist/internal/font-staging.d.ts +6 -0
  246. package/dist/internal/font-staging.d.ts.map +1 -0
  247. package/dist/internal/font-staging.js +94 -0
  248. package/dist/internal/font-staging.js.map +1 -0
  249. package/dist/internal/icon-staging.d.ts +3 -0
  250. package/dist/internal/icon-staging.d.ts.map +1 -0
  251. package/dist/internal/icon-staging.js +40 -0
  252. package/dist/internal/icon-staging.js.map +1 -0
  253. package/dist/internal/import-scan.d.ts +4 -0
  254. package/dist/internal/import-scan.d.ts.map +1 -0
  255. package/dist/internal/import-scan.js +138 -0
  256. package/dist/internal/import-scan.js.map +1 -0
  257. package/dist/internal/module-hash.d.ts +3 -0
  258. package/dist/internal/module-hash.d.ts.map +1 -0
  259. package/dist/internal/module-hash.js +19 -0
  260. package/dist/internal/module-hash.js.map +1 -0
  261. package/dist/internal/output-directory.d.ts +15 -0
  262. package/dist/internal/output-directory.d.ts.map +1 -0
  263. package/dist/internal/output-directory.js +490 -0
  264. package/dist/internal/output-directory.js.map +1 -0
  265. package/dist/internal/parent-process.d.ts +12 -0
  266. package/dist/internal/parent-process.d.ts.map +1 -0
  267. package/dist/internal/parent-process.js +74 -0
  268. package/dist/internal/parent-process.js.map +1 -0
  269. package/dist/internal/prepare-project.d.ts +3 -0
  270. package/dist/internal/prepare-project.d.ts.map +1 -1
  271. package/dist/internal/prepare-project.js +9 -3
  272. package/dist/internal/prepare-project.js.map +1 -1
  273. package/dist/internal/react-compiler-cache.d.ts +13 -0
  274. package/dist/internal/react-compiler-cache.d.ts.map +1 -0
  275. package/dist/internal/react-compiler-cache.js +182 -0
  276. package/dist/internal/react-compiler-cache.js.map +1 -0
  277. package/dist/internal/source-imports.d.ts +7 -2
  278. package/dist/internal/source-imports.d.ts.map +1 -1
  279. package/dist/internal/source-imports.js +31 -11
  280. package/dist/internal/source-imports.js.map +1 -1
  281. package/dist/internal/staging-file.d.ts +5 -0
  282. package/dist/internal/staging-file.d.ts.map +1 -0
  283. package/dist/internal/staging-file.js +35 -0
  284. package/dist/internal/staging-file.js.map +1 -0
  285. package/dist/internal/xdg-banner.d.ts +4 -0
  286. package/dist/internal/xdg-banner.d.ts.map +1 -0
  287. package/dist/internal/xdg-banner.js +11 -0
  288. package/dist/internal/xdg-banner.js.map +1 -0
  289. package/dist/internal/xdg-data-dirs.d.ts +2 -1
  290. package/dist/internal/xdg-data-dirs.d.ts.map +1 -1
  291. package/dist/internal/xdg-data-dirs.js +1 -1
  292. package/dist/internal/xdg-data-dirs.js.map +1 -1
  293. package/dist/mcp/client.js +2 -2
  294. package/dist/mcp/client.js.map +1 -1
  295. package/dist/settings/schema.d.ts.map +1 -1
  296. package/dist/settings/schema.js +3 -8
  297. package/dist/settings/schema.js.map +1 -1
  298. package/dist/vite-plugins/asset-extensions.d.ts.map +1 -1
  299. package/dist/vite-plugins/asset-extensions.js +2 -0
  300. package/dist/vite-plugins/asset-extensions.js.map +1 -1
  301. package/dist/vite-plugins/asset-imports.d.ts.map +1 -1
  302. package/dist/vite-plugins/asset-imports.js +20 -6
  303. package/dist/vite-plugins/asset-imports.js.map +1 -1
  304. package/dist/vite-plugins/asset-specifier.d.ts +5 -1
  305. package/dist/vite-plugins/asset-specifier.d.ts.map +1 -1
  306. package/dist/vite-plugins/asset-specifier.js +10 -1
  307. package/dist/vite-plugins/asset-specifier.js.map +1 -1
  308. package/dist/vite-plugins/build-manifest.d.ts +5 -1
  309. package/dist/vite-plugins/build-manifest.d.ts.map +1 -1
  310. package/dist/vite-plugins/build-manifest.js +2 -1
  311. package/dist/vite-plugins/build-manifest.js.map +1 -1
  312. package/dist/vite-plugins/built-url.d.ts.map +1 -1
  313. package/dist/vite-plugins/built-url.js +5 -2
  314. package/dist/vite-plugins/built-url.js.map +1 -1
  315. package/dist/vite-plugins/css.d.ts.map +1 -1
  316. package/dist/vite-plugins/css.js +13 -5
  317. package/dist/vite-plugins/css.js.map +1 -1
  318. package/dist/vite-plugins/ensure-store.d.ts +1 -1
  319. package/dist/vite-plugins/ensure-store.d.ts.map +1 -1
  320. package/dist/vite-plugins/ensure-store.js +2 -2
  321. package/dist/vite-plugins/ensure-store.js.map +1 -1
  322. package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts +6 -1
  323. package/dist/vite-plugins/fast-refresh/refresh-filter.d.ts.map +1 -1
  324. package/dist/vite-plugins/fast-refresh/refresh-filter.js +3 -1
  325. package/dist/vite-plugins/fast-refresh/refresh-filter.js.map +1 -1
  326. package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts.map +1 -1
  327. package/dist/vite-plugins/fast-refresh/swc-refresh.js +23 -14
  328. package/dist/vite-plugins/fast-refresh/swc-refresh.js.map +1 -1
  329. package/dist/vite-plugins/font-name.d.ts +3 -0
  330. package/dist/vite-plugins/font-name.d.ts.map +1 -0
  331. package/dist/vite-plugins/font-name.js +406 -0
  332. package/dist/vite-plugins/font-name.js.map +1 -0
  333. package/dist/vite-plugins/font-worker-env.d.ts +4 -0
  334. package/dist/vite-plugins/font-worker-env.d.ts.map +1 -0
  335. package/dist/vite-plugins/font-worker-env.js +19 -0
  336. package/dist/vite-plugins/font-worker-env.js.map +1 -0
  337. package/dist/vite-plugins/font.d.ts +4 -0
  338. package/dist/vite-plugins/font.d.ts.map +1 -0
  339. package/dist/vite-plugins/font.js +111 -0
  340. package/dist/vite-plugins/font.js.map +1 -0
  341. package/dist/vite-plugins/i18n.d.ts +11 -2
  342. package/dist/vite-plugins/i18n.d.ts.map +1 -1
  343. package/dist/vite-plugins/i18n.js +74 -8
  344. package/dist/vite-plugins/i18n.js.map +1 -1
  345. package/dist/vite-plugins/icon-worker-env.d.ts +4 -0
  346. package/dist/vite-plugins/icon-worker-env.d.ts.map +1 -0
  347. package/dist/vite-plugins/icon-worker-env.js +23 -0
  348. package/dist/vite-plugins/icon-worker-env.js.map +1 -0
  349. package/dist/vite-plugins/icons.d.ts.map +1 -1
  350. package/dist/vite-plugins/icons.js +4 -9
  351. package/dist/vite-plugins/icons.js.map +1 -1
  352. package/dist/vite-plugins/index.d.ts +10 -1
  353. package/dist/vite-plugins/index.d.ts.map +1 -1
  354. package/dist/vite-plugins/index.js +17 -3
  355. package/dist/vite-plugins/index.js.map +1 -1
  356. package/dist/vite-plugins/native.d.ts.map +1 -1
  357. package/dist/vite-plugins/native.js +0 -4
  358. package/dist/vite-plugins/native.js.map +1 -1
  359. package/dist/vite-plugins/react-compiler.d.ts.map +1 -1
  360. package/dist/vite-plugins/react-compiler.js +57 -18
  361. package/dist/vite-plugins/react-compiler.js.map +1 -1
  362. package/dist/vite-plugins/resource-shared.d.ts +3 -1
  363. package/dist/vite-plugins/resource-shared.d.ts.map +1 -1
  364. package/dist/vite-plugins/resource-shared.js +3 -1
  365. package/dist/vite-plugins/resource-shared.js.map +1 -1
  366. package/dist/vite-plugins/resources.d.ts.map +1 -1
  367. package/dist/vite-plugins/resources.js +9 -6
  368. package/dist/vite-plugins/resources.js.map +1 -1
  369. package/dist/vite-plugins/self-contained.d.ts.map +1 -1
  370. package/dist/vite-plugins/self-contained.js +159 -158
  371. package/dist/vite-plugins/self-contained.js.map +1 -1
  372. package/dist/vite-plugins/settings-worker-env.d.ts +1 -1
  373. package/dist/vite-plugins/settings-worker-env.d.ts.map +1 -1
  374. package/dist/vite-plugins/settings-worker-env.js +4 -4
  375. package/dist/vite-plugins/settings-worker-env.js.map +1 -1
  376. package/dist/vite-plugins/settings.d.ts.map +1 -1
  377. package/dist/vite-plugins/settings.js +25 -14
  378. package/dist/vite-plugins/settings.js.map +1 -1
  379. package/dist/vite-plugins/store-links.d.ts.map +1 -1
  380. package/dist/vite-plugins/store-links.js +9 -5
  381. package/dist/vite-plugins/store-links.js.map +1 -1
  382. package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
  383. package/dist/vite-plugins/undeclared-library.js +18 -15
  384. package/dist/vite-plugins/undeclared-library.js.map +1 -1
  385. package/dist/vite-plugins/worker.d.ts.map +1 -1
  386. package/dist/vite-plugins/worker.js +21 -13
  387. package/dist/vite-plugins/worker.js.map +1 -1
  388. package/dist/vitest-plugin.d.ts +4 -3
  389. package/dist/vitest-plugin.d.ts.map +1 -1
  390. package/dist/vitest-plugin.js +12 -8
  391. package/dist/vitest-plugin.js.map +1 -1
  392. package/env.d.ts +9 -0
  393. package/package.json +18 -13
  394. package/src/builder.ts +45 -12
  395. package/src/cli.ts +15 -2
  396. package/src/codegen/config-dependencies.ts +470 -0
  397. package/src/codegen/freshness.ts +5 -1
  398. package/src/codegen/reference.ts +1 -0
  399. package/src/codegen/run-codegen.ts +51 -21
  400. package/src/codegen/store-resolver.ts +9 -4
  401. package/src/commands/build.ts +13 -2
  402. package/src/commands/cleanup.ts +48 -0
  403. package/src/commands/codegen.ts +6 -5
  404. package/src/commands/deploy.ts +10 -2
  405. package/src/commands/dev.ts +45 -4
  406. package/src/commands/docs.ts +1 -0
  407. package/src/deploy/depends.ts +30 -3
  408. package/src/deploy/download.ts +33 -24
  409. package/src/deploy/freedesktop/metainfo.ts +73 -21
  410. package/src/deploy/freedesktop/validate.ts +80 -15
  411. package/src/deploy/native-addon.ts +183 -0
  412. package/src/deploy/nfpm/config.ts +13 -4
  413. package/src/deploy/nfpm/contents.ts +8 -0
  414. package/src/deploy/node-runtime/download.ts +2 -2
  415. package/src/deploy/node-runtime/elf.ts +46 -5
  416. package/src/deploy/node-runtime/guard.ts +10 -14
  417. package/src/deploy/node-runtime/index.ts +148 -12
  418. package/src/deploy/node-runtime/sonames.ts +17 -0
  419. package/src/deploy/notices/node-runtime.ts +2 -2
  420. package/src/deploy/payload/launcher.ts +20 -1
  421. package/src/deploy/payload/stage.ts +76 -5
  422. package/src/deploy/run-deploy.ts +227 -72
  423. package/src/deploy/settings/arch.ts +40 -8
  424. package/src/deploy/settings/build-manifest.ts +28 -3
  425. package/src/deploy/settings/extra-files.ts +30 -4
  426. package/src/deploy/settings/index.ts +7 -2
  427. package/src/deploy/settings/libraries.ts +2 -1
  428. package/src/deploy/settings/paths.ts +80 -13
  429. package/src/deploy/targets/appimage.ts +1 -0
  430. package/src/deploy/targets/flatpak-pnpm.ts +4 -4
  431. package/src/deploy/targets/flatpak-source.ts +15 -2
  432. package/src/deploy/targets/flatpak.ts +1 -0
  433. package/src/deploy/targets/nfpm-target.ts +14 -6
  434. package/src/deploy/types.ts +5 -1
  435. package/src/deploy/vendored/appimagetool.ts +2 -2
  436. package/src/deploy/vendored/nfpm.ts +1 -1
  437. package/src/dev/catalog-writes.ts +35 -0
  438. package/src/dev/entry-env.ts +2 -1
  439. package/src/dev/font-dir.ts +11 -0
  440. package/src/dev/headless.ts +40 -0
  441. package/src/dev/runner-deps.ts +20 -7
  442. package/src/dev/runner-main.ts +12 -3
  443. package/src/dev/runner.ts +37 -7
  444. package/src/dev/supervisor.ts +183 -32
  445. package/src/dev/vite-dev-server.ts +20 -2
  446. package/src/dev/watch-ignore.ts +16 -0
  447. package/src/i18n/catalogs.ts +21 -8
  448. package/src/i18n/source-messages.ts +1446 -29
  449. package/src/internal/agent-rules.ts +7 -2
  450. package/src/internal/banner.ts +27 -6
  451. package/src/internal/build-manifest.ts +25 -1
  452. package/src/internal/build-output.ts +171 -0
  453. package/src/internal/cache-root.ts +12 -0
  454. package/src/internal/compile-cache-store.ts +50 -0
  455. package/src/internal/compile-cache.ts +20 -0
  456. package/src/internal/deploy-out-dir.ts +8 -0
  457. package/src/internal/docs-elements.ts +10 -4
  458. package/src/internal/entry-arg.ts +8 -1
  459. package/src/internal/errors.ts +1 -1
  460. package/src/internal/font-path.ts +15 -0
  461. package/src/internal/font-staging.ts +131 -0
  462. package/src/internal/icon-staging.ts +58 -0
  463. package/src/internal/import-scan.ts +206 -0
  464. package/src/internal/module-hash.ts +22 -0
  465. package/src/internal/output-directory.ts +699 -0
  466. package/src/internal/parent-process.ts +110 -0
  467. package/src/internal/prepare-project.ts +11 -5
  468. package/src/internal/react-compiler-cache.ts +246 -0
  469. package/src/internal/source-imports.ts +57 -12
  470. package/src/internal/staging-file.ts +42 -0
  471. package/src/internal/xdg-banner.ts +13 -0
  472. package/src/internal/xdg-data-dirs.ts +1 -1
  473. package/src/mcp/client.ts +2 -2
  474. package/src/settings/schema.ts +4 -10
  475. package/src/vite-plugins/asset-extensions.ts +2 -0
  476. package/src/vite-plugins/asset-imports.ts +23 -5
  477. package/src/vite-plugins/asset-specifier.ts +17 -0
  478. package/src/vite-plugins/build-manifest.ts +7 -1
  479. package/src/vite-plugins/built-url.ts +6 -2
  480. package/src/vite-plugins/css.ts +16 -5
  481. package/src/vite-plugins/ensure-store.ts +2 -2
  482. package/src/vite-plugins/fast-refresh/refresh-filter.ts +10 -1
  483. package/src/vite-plugins/fast-refresh/swc-refresh.ts +33 -14
  484. package/src/vite-plugins/font-name.ts +582 -0
  485. package/src/vite-plugins/font-worker-env.ts +25 -0
  486. package/src/vite-plugins/font.ts +180 -0
  487. package/src/vite-plugins/i18n.ts +122 -11
  488. package/src/vite-plugins/icon-worker-env.ts +36 -0
  489. package/src/vite-plugins/icons.ts +4 -10
  490. package/src/vite-plugins/index.ts +34 -9
  491. package/src/vite-plugins/native.ts +0 -5
  492. package/src/vite-plugins/react-compiler.ts +83 -19
  493. package/src/vite-plugins/resource-shared.ts +4 -0
  494. package/src/vite-plugins/resources.ts +11 -5
  495. package/src/vite-plugins/self-contained.ts +184 -185
  496. package/src/vite-plugins/settings-worker-env.ts +4 -4
  497. package/src/vite-plugins/settings.ts +36 -16
  498. package/src/vite-plugins/store-links.ts +10 -5
  499. package/src/vite-plugins/undeclared-library.ts +19 -15
  500. package/src/vite-plugins/worker.ts +31 -15
  501. package/src/vitest-plugin.ts +12 -8
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/vite-plugins/resources.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ConfigLoader } from \"@gtkx/config\";\nimport type { ModuleNode, Plugin, ResolvedConfig, Rolldown, UserConfig, ViteDevServer } from \"vite\";\nimport { createConfigLoader, resourceBasePath } from \"@gtkx/config/internal\";\nimport { error, info, isPathInside, isRecord, sortStrings, toPosixPath } from \"@gtkx/utils\";\nimport { copyFileSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from \"node:fs\";\nimport { basename, dirname, extname, isAbsolute, join, posix, relative, sep } from \"node:path\";\nimport { parseSync } from \"vite\";\nimport { withExclusiveLoad } from \"../internal/module-loads.js\";\nimport { runCliTool } from \"../internal/run-cli-tool.js\";\nimport { parseRuntimeImportsIn, type SourceImport, sourceLanguage } from \"../internal/source-imports.js\";\nimport { createRetainedStagingDir, type RetainedStagingDir, withStagingDir } from \"../internal/staging-dir.js\";\nimport { ASSET_RE } from \"./asset-extensions.js\";\nimport {\n isBareRelativeAsset,\n parseIconSpecifier,\n parseResourceSpecifier,\n} from \"./asset-specifier.js\";\nimport { renderInitModule } from \"./resource-init-module.js\";\nimport {\n BUNDLE_FILENAME,\n escapeXml,\n fromVirtualId,\n ICON_NAME_SEPARATOR,\n isVirtual,\n REFRESH_EXPORT,\n REGISTER_REFRESH_EXPORT,\n REL_SEPARATOR,\n RESOURCE_PATH_EXPORT,\n toVirtualId,\n VIRTUAL_INIT,\n} from \"./resource-shared.js\";\nimport { stripQuery } from \"./strip-query.js\";\n\ntype ResourceEntry = {\n sourcePath: string;\n stagedRelPath: string;\n resourcePath: string;\n};\n\ntype PluginState = {\n prefix: string;\n root: string;\n isBuild: boolean;\n entries: Map<string, ResourceEntry>;\n bundledSpecifiers: Map<string, Set<string>>;\n moduleDependencies: Map<string, Set<string>>;\n prunedDependencies: Map<string, Set<string>>;\n declaredEntries: Map<string, Map<string, ResourceEntry>>;\n declaredIcons: Map<string, Map<string, ResourceEntry>>;\n entryModule: string | null;\n sourcePaths: Set<string>;\n missingSourcePaths: Set<string>;\n stagingDir: RetainedStagingDir;\n devBundlePath: string;\n server: ViteDevServer | null;\n compiledSignature: string;\n bundleReferenceId: string | null;\n iconOwners: Map<string, ResourceEntry>;\n};\n\ntype ResolveContext = {\n resolve: (\n source: string,\n importer?: string,\n options?: Record<string, unknown>,\n ) => Promise<{ id: string; external?: boolean | string } | null>;\n};\n\ntype PackageOwner = {\n dir: string;\n name: string;\n};\n\ntype AssetResolveRequest = {\n assetSource: string;\n importer: string | undefined;\n resourcePath: string | null;\n options: Record<string, unknown> | undefined;\n};\n\ntype IconResolveRequest = {\n assetSource: string;\n iconName: string | null;\n importer: string | undefined;\n options: Record<string, unknown> | undefined;\n};\n\ntype ResolvedIconEntry = {\n entry: ResourceEntry;\n iconName: string;\n};\n\ntype RetainedIconModuleId = {\n id: string;\n moduleSideEffects: true;\n};\n\ntype ResourceModuleId = string | RetainedIconModuleId;\n\ntype ImporterReconciliation = {\n currentBundled: Set<string>;\n currentDependencies: Set<string>;\n file: string;\n imports: SourceImport[];\n key: string;\n previousBundled: Set<string> | undefined;\n previousDependencies: Set<string> | undefined;\n};\n\ntype DerivedIconEntry = {\n iconIdentity: string;\n iconName: string;\n resourcePath: string;\n};\n\ntype ResolveRequest = {\n source: string;\n importer: string | undefined;\n options: Record<string, unknown> | undefined;\n};\n\nconst RESOURCE_COMPILER = \"glib-compile-resources\";\nconst MANIFEST_PREFIX = \"/\";\nconst DEV_STAGING_PREFIX = \"resources-dev\";\nconst MANIFEST_FILENAME = \"package.json\";\nconst DATA_PREFIX = \"#data/\";\nconst BUNDLED_QUERY_MENTION_RE = /[?&](?:icon|resource)(?:[=&]|$)/;\nconst ICON_EXTENSIONS: Set<string> = new Set([\".png\", \".svg\", \".xpm\"]);\n\nconst ICON_CONTEXTS: Set<string> = new Set([\n \"actions\",\n \"animations\",\n \"apps\",\n \"categories\",\n \"devices\",\n \"emblems\",\n \"emotes\",\n \"filesystems\",\n \"intl\",\n \"mimetypes\",\n \"places\",\n \"status\",\n]);\n\nconst STOCK_ICON_CONTEXTS: Set<string> = new Set([\n \"chart\",\n \"code\",\n \"data\",\n \"form\",\n \"image\",\n \"io\",\n \"media\",\n \"navigation\",\n \"net\",\n \"object\",\n \"table\",\n \"text\",\n]);\n\nconst ICON_SIZE_RE = /^([1-9]\\d*)x\\1(?:@[1-9]\\d*)?$/;\nconst RESERVED_ICON_NAMES: Set<string> = new Set([\"\", \".\", \"..\"]);\n\nconst isDependencyFile = (root: string, path: string): boolean =>\n isPathInside(root, path) && relative(root, path).split(sep).includes(\"node_modules\");\n\nconst packageIdentityIn = (dir: string): string | null => {\n try {\n const manifest: unknown = JSON.parse(readFileSync(join(dir, MANIFEST_FILENAME), \"utf8\"));\n\n return isRecord(manifest) && typeof manifest.name === \"string\" ? manifest.name : null;\n } catch {\n return null;\n }\n};\n\nconst packageIn = (dir: string): PackageOwner | null => {\n const name = packageIdentityIn(dir);\n\n if (name !== null) {\n return { dir, name };\n }\n\n const parent = dirname(dir);\n\n return parent === dir ? null : packageIn(parent);\n};\n\nconst packageForFile = (file: string): PackageOwner | null => packageIn(dirname(file));\n\nconst validateResourcePath = (resourcePath: string): string => {\n if (\n resourcePath === \"/\" ||\n !resourcePath.startsWith(\"/\") ||\n resourcePath.endsWith(\"/\") ||\n resourcePath.includes(\"\\0\") ||\n posix.normalize(resourcePath) !== resourcePath\n ) {\n throw new Error(\n `${JSON.stringify(resourcePath)} is not a valid GResource path; use an absolute normalized path`,\n );\n }\n\n return resourcePath;\n};\n\nconst derivedResourcePath = (state: PluginState, sourcePath: string): string => {\n if (isPathInside(state.root, sourcePath) && !isDependencyFile(state.root, sourcePath)) {\n return validateResourcePath(`${state.prefix}/${toPosixPath(relative(state.root, sourcePath))}`);\n }\n\n const owner = packageForFile(sourcePath);\n\n if (owner === null || !isPathInside(owner.dir, sourcePath)) {\n throw new Error(`${sourcePath} is outside the application and does not belong to a named package`);\n }\n\n const packagePath = toPosixPath(relative(owner.dir, sourcePath));\n\n return validateResourcePath(`${state.prefix}/${owner.name}/${packagePath}`);\n};\n\nconst iconExtension = (sourcePath: string): string => {\n const extension = extname(sourcePath).toLowerCase();\n\n if (!ICON_EXTENSIONS.has(extension)) {\n throw new Error(`${sourcePath} is not a supported themed icon; use an SVG, PNG, or XPM file`);\n }\n\n return extension;\n};\n\nconst hasIconNamePathSeparator = (value: string): boolean =>\n value.includes(\"\\0\") || value.includes(\"/\") || value.includes(\"\\\\\");\n\nconst validateIconName = (value: string): string => {\n if (\n RESERVED_ICON_NAMES.has(value) ||\n hasIconNamePathSeparator(value) ||\n ICON_EXTENSIONS.has(extname(value).toLowerCase())\n ) {\n throw new Error(\n `${JSON.stringify(value)} is not a valid icon name; use an extensionless filename without slashes`,\n );\n }\n\n return value;\n};\n\nconst isIconContext = (parts: string[]): boolean => {\n const [first, second] = parts;\n\n if (parts.length === 1) {\n return first !== undefined && ICON_CONTEXTS.has(first);\n }\n\n return parts.length === 2 && first === \"stock\" && second !== undefined && STOCK_ICON_CONTEXTS.has(second);\n};\n\nconst isIconLayout = (parts: string[]): boolean => {\n const [size, ...context] = parts;\n\n if (size === \"symbolic\") {\n return context.length === 1 && context[0] === \"apps\";\n }\n\n return size !== undefined && (size === \"scalable\" || ICON_SIZE_RE.test(size)) && isIconContext(context);\n};\n\nconst iconLayoutInParts = (parts: string[], beforeIndex: number): string | null => {\n const index = parts.lastIndexOf(\"icons\", beforeIndex);\n\n if (index === -1) {\n return null;\n }\n\n const treePath = parts.slice(index + 1, -1);\n const layout = treePath[0] === \"hicolor\" ? treePath.slice(1) : treePath;\n\n return isIconLayout(layout) ? layout.join(\"/\") : iconLayoutInParts(parts, index - 1);\n};\n\nconst iconLayoutFromTree = (sourcePath: string): string | null => {\n const parts = toPosixPath(sourcePath).split(\"/\");\n\n return iconLayoutInParts(parts, parts.length - 2);\n};\n\nconst derivedIconEntry = (\n state: PluginState,\n sourcePath: string,\n requestedName: string | null,\n): DerivedIconEntry => {\n const extension = iconExtension(sourcePath);\n const sourceName = basename(sourcePath, extname(sourcePath));\n const iconName = validateIconName(requestedName ?? sourceName);\n const layout = iconLayoutFromTree(sourcePath);\n\n const iconIdentity = layout === null\n ? `${state.prefix}/icons/${iconName}`\n : `${state.prefix}/icons/${layout}/${iconName}`;\n\n const resourcePath = validateResourcePath(`${iconIdentity}${extension}`);\n\n return { iconIdentity, iconName, resourcePath };\n};\n\nconst hasSideEffectIconImport = (code: string, id: string): boolean => {\n const lang = sourceLanguage(stripQuery(id));\n\n if (lang === undefined || !code.includes(\"?icon\")) {\n return false;\n }\n\n const parsed = parseSync(id, code, { lang });\n\n if (parsed.errors.length > 0) {\n return false;\n }\n\n return parsed.module.staticImports.some(\n (statement) => statement.entries.length === 0 && parseIconSpecifier(statement.moduleRequest.value) !== null,\n );\n};\n\nconst retainSideEffectIconImport = (\n code: string,\n id: string,\n): { code: string; moduleSideEffects: true } | null =>\n hasSideEffectIconImport(code, id)\n ? { code, moduleSideEffects: true }\n : null;\n\nconst compileBundle = (state: PluginState, outputPath: string): Buffer =>\n withStagingDir(\"resources\", (dir) => {\n const manifest = stageBundle(dir, state.entries);\n\n return runCompiler(dir, manifest, outputPath);\n });\n\nconst stageBundle = (dir: string, entries: Map<string, ResourceEntry>): string => {\n const fileNodes: string[] = [];\n\n for (const entry of entries.values()) {\n const targetPath = join(dir, entry.stagedRelPath);\n mkdirSync(dirname(targetPath), { recursive: true });\n copyFileSync(entry.sourcePath, targetPath);\n fileNodes.push(` <file>${escapeXml(entry.stagedRelPath)}</file>`);\n }\n\n const prefix = escapeXml(MANIFEST_PREFIX);\n const manifest = join(dir, \"gtkx.gresource.xml\");\n\n const xml = [\n \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\",\n \"<gresources>\",\n ` <gresource prefix=\"${prefix}\">`,\n ...fileNodes,\n \" </gresource>\",\n \"</gresources>\",\n \"\",\n ].join(\"\\n\");\n\n writeFileSync(manifest, xml);\n\n return manifest;\n};\n\nconst runCompiler = (sourceDir: string, manifest: string, outputPath: string): Buffer => {\n runCliTool({\n tool: RESOURCE_COMPILER,\n args: [`--sourcedir=${sourceDir}`, `--target=${outputPath}`, manifest],\n });\n\n return readFileSync(outputPath);\n};\n\nconst ensureStagingDir = (state: PluginState): void => {\n state.devBundlePath = join(state.stagingDir.retain(), BUNDLE_FILENAME);\n};\n\nconst releaseStagingDir = (state: PluginState): void => {\n state.stagingDir.release();\n state.devBundlePath = \"\";\n state.compiledSignature = \"\";\n};\n\nconst entriesSignature = (state: PluginState): string =>\n sortStrings([...state.entries].map(([resourcePath, entry]) => `${resourcePath}\\0${entry.sourcePath}`)).join(\"\\0\");\n\nconst compileDevBundle = (state: PluginState): void => {\n ensureStagingDir(state);\n\n if (state.entries.size === 0) {\n rmSync(state.devBundlePath, { force: true });\n state.compiledSignature = \"\";\n\n return;\n }\n\n compileBundle(state, state.devBundlePath);\n state.compiledSignature = entriesSignature(state);\n};\n\nconst isRefreshHook = (value: unknown): value is () => void => typeof value === \"function\";\n\nconst refreshRegisteredDevBundle = (state: PluginState): void => {\n const server = state.server;\n\n if (!server) {\n return;\n }\n\n const refresh: unknown = server.moduleGraph.getModuleById(VIRTUAL_INIT)?.ssrModule?.[REFRESH_EXPORT];\n\n if (isRefreshHook(refresh)) {\n refresh();\n }\n};\n\nconst registerDevAsset = (state: PluginState): void => {\n if (entriesSignature(state) !== state.compiledSignature) {\n compileDevBundle(state);\n }\n};\n\nconst importerKey = (importer: string): string => stripQuery(importer);\n\nconst trackBundledSpecifier = (state: PluginState, importer: string | undefined, source: string): void => {\n if (importer === undefined) {\n return;\n }\n\n const key = importerKey(importer);\n const specifiers = state.bundledSpecifiers.get(key) ?? new Set<string>();\n specifiers.add(source);\n state.bundledSpecifiers.set(key, specifiers);\n};\n\nconst createResourceEntry = (sourcePath: string, resourcePath: string): ResourceEntry => ({\n sourcePath,\n stagedRelPath: resourcePath.replace(/^\\/+/, \"\"),\n resourcePath,\n});\n\nconst activateEntry = (state: PluginState, entry: ResourceEntry): ResourceEntry => {\n const existing = state.entries.get(entry.resourcePath);\n\n if (existing !== undefined) {\n if (existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both resolve to the GResource path ` +\n entry.resourcePath,\n );\n }\n\n return existing;\n }\n\n state.entries.set(entry.resourcePath, entry);\n state.sourcePaths.add(entry.sourcePath);\n\n return entry;\n};\n\nconst isDeclarativeImporter = (state: PluginState, importer: string | undefined): importer is string =>\n !state.isBuild && importer !== undefined;\n\nconst setSourceAvailability = (state: PluginState, file: string, isAvailable: boolean): void => {\n if (isAvailable) {\n state.missingSourcePaths.delete(file);\n\n return;\n }\n\n state.missingSourcePaths.add(file);\n};\n\nconst isDeclaredSourceAvailable = (state: PluginState, sourcePath: string): boolean => {\n const isAvailable = existsSync(sourcePath);\n setSourceAvailability(state, sourcePath, isAvailable);\n\n return isAvailable;\n};\n\nconst declareEntry = (state: PluginState, importer: string, entry: ResourceEntry): ResourceEntry => {\n const key = importerKey(importer);\n const declarations = state.declaredEntries.get(key) ?? new Map<string, ResourceEntry>();\n const existing = declarations.get(entry.resourcePath);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both resolve to the GResource path ` +\n entry.resourcePath,\n );\n }\n\n const declared = existing ?? entry;\n declarations.set(entry.resourcePath, declared);\n state.declaredEntries.set(key, declarations);\n state.server?.watcher.add(dirname(declared.sourcePath));\n\n return declared;\n};\n\nconst declareIcon = (\n state: PluginState,\n importer: string,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n const key = importerKey(importer);\n const declarations = state.declaredIcons.get(key) ?? new Map<string, ResourceEntry>();\n const existing = declarations.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n\n declarations.set(iconIdentity, existing ?? entry);\n state.declaredIcons.set(key, declarations);\n};\n\nconst assertIconIdentityAvailable = (\n state: PluginState,\n iconIdentity: string,\n sourcePath: string,\n): void => {\n const existing = state.iconOwners.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n};\n\nconst declareResolvedIcon = (\n state: PluginState,\n importer: string | undefined,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n if (isDeclarativeImporter(state, importer)) {\n declareIcon(state, importer, iconIdentity, entry);\n }\n};\n\nconst registerEntry = (\n state: PluginState,\n absPath: string,\n rel: string,\n importer?: string,\n): ResourceEntry => {\n const resourcePath = validateResourcePath(rel.startsWith(\"/\") ? rel : `${state.prefix}/${rel}`);\n let entry = createResourceEntry(absPath, resourcePath);\n\n if (isDeclarativeImporter(state, importer)) {\n entry = declareEntry(state, importer, entry);\n\n if (!isImporterActive(state, importer) || !isDeclaredSourceAvailable(state, absPath)) {\n return entry;\n }\n }\n\n return activateEntry(state, entry);\n};\n\nconst registerIconEntry = (\n state: PluginState,\n sourcePath: string,\n derived: DerivedIconEntry,\n importer: string | undefined,\n): ResourceEntry => {\n const shouldActivate = !isDeclarativeImporter(state, importer) ||\n (isImporterActive(state, importer) && isDeclaredSourceAvailable(state, sourcePath));\n\n if (shouldActivate) {\n assertIconIdentityAvailable(state, derived.iconIdentity, sourcePath);\n }\n\n const entry = registerEntry(state, sourcePath, derived.resourcePath, importer);\n declareResolvedIcon(state, importer, derived.iconIdentity, entry);\n\n if (shouldActivate) {\n state.iconOwners.set(derived.iconIdentity, entry);\n }\n\n return entry;\n};\n\nconst isTrackedSource = (state: PluginState, file: string): boolean => state.sourcePaths.has(file);\n\nconst hasSourceEntry = (entries: Map<string, ResourceEntry>, file: string): boolean => {\n for (const entry of entries.values()) {\n if (entry.sourcePath === file) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasDeclaredSource = (\n declarations: Map<string, Map<string, ResourceEntry>>,\n file: string,\n): boolean => {\n for (const entries of declarations.values()) {\n if (hasSourceEntry(entries, file)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst isDeclaredSource = (state: PluginState, file: string): boolean =>\n hasDeclaredSource(state.declaredEntries, file) || hasDeclaredSource(state.declaredIcons, file);\n\nconst virtualAssetId = (entry: ResourceEntry): string =>\n toVirtualId(entry.sourcePath) + REL_SEPARATOR + entry.resourcePath;\n\nconst virtualIconId = ({ entry, iconName }: ResolvedIconEntry): string =>\n virtualAssetId(entry) + ICON_NAME_SEPARATOR + iconName;\n\nconst resolveAssetSource = async (\n ctx: ResolveContext,\n request: { assetSource: string; importer: string | undefined; options: Record<string, unknown> | undefined },\n): Promise<string | undefined> => {\n const resolved = await ctx.resolve(request.assetSource, request.importer, {\n ...request.options,\n skipSelf: true,\n });\n\n if (!resolved || resolved.external) {\n return undefined;\n }\n\n const sourcePath = stripQuery(resolved.id);\n\n if (!isAbsolute(sourcePath)) {\n throw new Error(`${JSON.stringify(request.assetSource)} did not resolve to a file-backed asset`);\n }\n\n return sourcePath;\n};\n\nconst resolveAssetEntry = async (\n ctx: ResolveContext,\n state: PluginState,\n request: AssetResolveRequest,\n): Promise<ResourceEntry | undefined> => {\n const sourcePath = await resolveAssetSource(ctx, request);\n\n if (sourcePath === undefined) {\n return undefined;\n }\n\n return registerEntry(\n state,\n sourcePath,\n request.resourcePath === null\n ? derivedResourcePath(state, sourcePath)\n : validateResourcePath(request.resourcePath),\n request.importer,\n );\n};\n\nconst resolveIconEntry = async (\n ctx: ResolveContext,\n state: PluginState,\n request: IconResolveRequest,\n): Promise<ResolvedIconEntry | undefined> => {\n const sourcePath = await resolveAssetSource(ctx, request);\n\n if (sourcePath === undefined) {\n return undefined;\n }\n\n const derived = derivedIconEntry(state, sourcePath, request.iconName);\n\n return {\n entry: registerIconEntry(state, sourcePath, derived, request.importer),\n iconName: derived.iconName,\n };\n};\n\nconst loadInitModule = (state: PluginState): string => {\n if (state.isBuild) {\n if (state.bundleReferenceId === null) {\n throw new Error(\"Cannot render the GResource loader before its bundle has been emitted\");\n }\n\n return renderInitModule({ isBuild: true, bundleReferenceId: state.bundleReferenceId });\n }\n\n ensureStagingDir(state);\n\n return renderInitModule({ isBuild: false, devBundlePath: state.devBundlePath });\n};\n\nconst virtualAssetMetadata = (virtualId: string): { absPath: string; iconName: string | null; rel: string } => {\n const rest = fromVirtualId(virtualId);\n const separatorIndex = rest.indexOf(REL_SEPARATOR);\n const relAndMetadata = rest.slice(separatorIndex + REL_SEPARATOR.length);\n const iconSeparatorIndex = relAndMetadata.indexOf(ICON_NAME_SEPARATOR);\n\n return {\n absPath: rest.slice(0, separatorIndex),\n iconName: iconSeparatorIndex === -1\n ? null\n : relAndMetadata.slice(iconSeparatorIndex + ICON_NAME_SEPARATOR.length),\n rel: iconSeparatorIndex === -1 ? relAndMetadata : relAndMetadata.slice(0, iconSeparatorIndex),\n };\n};\n\nconst resourcePathExport = (entry: ResourceEntry, iconName: string | null): string[] =>\n iconName === null ? [`export const ${RESOURCE_PATH_EXPORT} = ${JSON.stringify(entry.resourcePath)};`] : [];\n\nconst assetModuleImports = (iconName: string | null): string[] => {\n const initBindings = iconName === null\n ? \"ensureRegistered\"\n : `ensureRegistered, ${REGISTER_REFRESH_EXPORT}`;\n\n return [\n `import { ${initBindings} } from ${JSON.stringify(VIRTUAL_INIT)};`,\n ...(iconName === null\n ? []\n : [\n \"import { Display } from \\\"@gtkx/gi/gdk\\\";\",\n \"import { IconTheme } from \\\"@gtkx/gi/gtk\\\";\",\n ]),\n ];\n};\n\nconst iconThemeRegistration = (state: PluginState, iconName: string | null): string[] => {\n if (iconName === null) {\n return [];\n }\n\n const resourceIconPath = `${state.prefix}/icons`;\n\n return [\n `const resourceIconPath = ${JSON.stringify(resourceIconPath)};`,\n \"function refreshIconTheme() {\",\n \" const display = Display.getDefault();\",\n \" if (!display) return;\",\n \" const theme = IconTheme.getForDisplay(display);\",\n \" const paths = theme.getResourcePath() ?? [];\",\n \" theme.setResourcePath(paths.includes(resourceIconPath) ? [...paths] : [...paths, resourceIconPath]);\",\n \"}\",\n `${REGISTER_REFRESH_EXPORT}(resourceIconPath, refreshIconTheme);`,\n ];\n};\n\nconst loadedResourceEntry = (\n state: PluginState,\n sourcePath: string,\n resourcePath: string,\n): { entry: ResourceEntry; isRegistered: boolean } => {\n const registered = state.entries.get(resourcePath);\n\n if (registered === undefined) {\n return { entry: createResourceEntry(sourcePath, resourcePath), isRegistered: false };\n }\n\n if (registered.sourcePath !== sourcePath) {\n throw new Error(\n `${registered.sourcePath} and ${sourcePath} both resolve to the GResource path ${resourcePath}`,\n );\n }\n\n return { entry: registered, isRegistered: true };\n};\n\nconst compileLoadedDevAsset = (state: PluginState, isRegistered: boolean): void => {\n if (isRegistered && !state.isBuild) {\n registerDevAsset(state);\n }\n};\n\nconst loadAssetModule = (state: PluginState, virtualId: string): string => {\n const { absPath, iconName, rel } = virtualAssetMetadata(virtualId);\n const resourcePath = validateResourcePath(rel);\n const { entry, isRegistered } = loadedResourceEntry(state, absPath, resourcePath);\n const defaultValue = iconName ?? entry.resourcePath;\n compileLoadedDevAsset(state, isRegistered);\n\n return [\n ...assetModuleImports(iconName),\n \"ensureRegistered();\",\n ...iconThemeRegistration(state, iconName),\n `export default ${JSON.stringify(defaultValue)};`,\n ...resourcePathExport(entry, iconName),\n ].join(\"\\n\");\n};\n\nconst finalizeBuildBundle = (\n ctx: Pick<Rolldown.PluginContext, \"getFileName\">,\n bundle: Rolldown.OutputBundle,\n state: PluginState,\n): void => {\n if (!state.isBuild || state.bundleReferenceId === null) {\n return;\n }\n\n const fileName = ctx.getFileName(state.bundleReferenceId);\n const output = bundle[fileName];\n\n if (output?.type !== \"asset\") {\n throw new Error(`Cannot find the emitted ${BUNDLE_FILENAME} asset`);\n }\n\n if (state.entries.size === 0) {\n Reflect.deleteProperty(bundle, fileName);\n\n return;\n }\n\n const compiled = withStagingDir(\"resources-out\", (outDir) => compileBundle(state, join(outDir, BUNDLE_FILENAME)));\n output.source = compiled;\n info(`Compiled ${String(state.entries.size)} resource(s) into ${BUNDLE_FILENAME}`);\n};\n\nconst refreshDevRegistration = (state: PluginState): void => {\n compileDevBundle(state);\n\n try {\n refreshRegisteredDevBundle(state);\n } catch (error_) {\n error(\"Failed to refresh GResource bundle:\", error_);\n }\n};\n\nconst isSameSpecifiers = (left: Set<string> | undefined, right: Set<string>): boolean =>\n left === undefined\n ? right.size === 0\n : left.size === right.size && [...right].every((source) => left.has(source));\n\nconst bundledSpecifiersIn = (imports: SourceImport[]): Set<string> =>\n new Set(\n imports\n .filter((entry) =>\n parseResourceSpecifier(entry.source) !== null || parseIconSpecifier(entry.source) !== null)\n .map((entry) => entry.source),\n );\n\nconst isSourceModule = (file: string): boolean => sourceLanguage(file) !== undefined;\n\nconst isBundledSource = (source: string): boolean =>\n parseResourceSpecifier(source) !== null || parseIconSpecifier(source) !== null;\n\nconst validateUnbundledSource = (source: string): void => {\n if (isLegacyDataSpecifier(source)) {\n throw new Error(`${JSON.stringify(source)} uses the legacy #data asset form`);\n }\n\n rejectInvalidSpecifier(source);\n};\n\nconst resolvedModuleDependency = async (\n ctx: ResolveContext,\n source: string,\n importer: string,\n): Promise<string | null> => {\n if (isBundledSource(source)) {\n return null;\n }\n\n validateUnbundledSource(source);\n const resolved = await ctx.resolve(source, importer, { skipSelf: true });\n\n if (resolved === null) {\n throw new Error(`${JSON.stringify(source)} could not be resolved from ${importer}`);\n }\n\n return resolved.external ? null : importerKey(resolved.id);\n};\n\nconst resolvedModuleDependencies = async (\n ctx: ResolveContext,\n imports: SourceImport[],\n importer: string,\n): Promise<Set<string>> => {\n const dependencies: Set<string> = new Set();\n\n for (const entry of imports) {\n const dependency = await resolvedModuleDependency(ctx, entry.source, importer);\n\n if (dependency !== null) {\n dependencies.add(dependency);\n }\n }\n\n return dependencies;\n};\n\nconst importerReconciliation = async (\n ctx: ResolveContext,\n state: PluginState,\n id: string,\n): Promise<ImporterReconciliation | null> => {\n const file = stripQuery(id);\n const key = importerKey(file);\n\n if (state.isBuild || !isSourceModule(file)) {\n return null;\n }\n\n const imports = parseRuntimeImportsIn(file);\n\n if (imports === null) {\n return null;\n }\n\n return {\n currentBundled: bundledSpecifiersIn(imports),\n currentDependencies: await resolvedModuleDependencies(ctx, imports, file),\n file,\n imports,\n key,\n previousBundled: state.bundledSpecifiers.get(key),\n previousDependencies: state.moduleDependencies.get(key),\n };\n};\n\nconst moduleNodeKey = (module: ModuleNode): string => importerKey(module.id ?? module.file ?? module.url);\n\nconst moduleNodeFor = (state: PluginState, id: string): ModuleNode | undefined => {\n const server = state.server;\n\n if (server === null) {\n return undefined;\n }\n\n return server.moduleGraph.getModuleById(id) ?? server.moduleGraph.getModuleById(importerKey(id));\n};\n\nconst restoreDependencies = (pruned: Set<string>, current: Set<string>): void => {\n for (const dependency of current) {\n pruned.delete(dependency);\n }\n};\n\nconst pruneRemovedDependencies = (\n pruned: Set<string>,\n previous: Set<string> | undefined,\n current: Set<string>,\n): void => {\n if (previous === undefined) {\n return;\n }\n\n for (const dependency of previous) {\n if (!current.has(dependency)) {\n pruned.add(dependency);\n }\n }\n};\n\nconst storePrunedDependencies = (state: PluginState, key: string, pruned: Set<string>): void => {\n if (pruned.size === 0) {\n state.prunedDependencies.delete(key);\n\n return;\n }\n\n state.prunedDependencies.set(key, pruned);\n};\n\nconst updatePrunedDependencies = (\n state: PluginState,\n key: string,\n previous: Set<string> | undefined,\n current: Set<string>,\n): void => {\n const pruned = state.prunedDependencies.get(key) ?? new Set<string>();\n restoreDependencies(pruned, current);\n pruneRemovedDependencies(pruned, previous, current);\n storePrunedDependencies(state, key, pruned);\n};\n\nconst isPrunedDependency = (state: PluginState, importer: ModuleNode, imported: ModuleNode): boolean =>\n state.prunedDependencies.get(moduleNodeKey(importer))?.has(moduleNodeKey(imported)) === true;\n\nconst fallbackRootModules = (state: PluginState): string[] => {\n const roots: string[] = [];\n\n for (const key of state.moduleDependencies.keys()) {\n if (moduleNodeFor(state, key)?.importers.size === 0) {\n roots.push(key);\n }\n }\n\n return roots;\n};\n\nconst enqueueCurrentDependencies = (state: PluginState, key: string, pending: string[]): void => {\n const dependencies = state.moduleDependencies.get(key) ?? [];\n\n for (const dependency of dependencies) {\n pending.push(dependency);\n }\n};\n\nconst enqueueGraphDependencies = (state: PluginState, key: string, pending: string[]): void => {\n const module = moduleNodeFor(state, key);\n\n if (module === undefined) {\n return;\n }\n\n for (const imported of module.importedModules) {\n if (!isPrunedDependency(state, module, imported)) {\n pending.push(moduleNodeKey(imported));\n }\n }\n};\n\nconst visitActiveImporter = (\n state: PluginState,\n active: Set<string>,\n pending: string[],\n key: string,\n): void => {\n if (active.has(key)) {\n return;\n }\n\n active.add(key);\n enqueueCurrentDependencies(state, key, pending);\n enqueueGraphDependencies(state, key, pending);\n};\n\nconst activeImporterKeys = (state: PluginState): Set<string> => {\n const active: Set<string> = new Set();\n const roots = state.entryModule === null ? fallbackRootModules(state) : [state.entryModule];\n const pending = [...roots];\n\n while (pending.length > 0) {\n const key = pending.pop();\n\n if (key === undefined || active.has(key)) {\n continue;\n }\n\n visitActiveImporter(state, active, pending, key);\n }\n\n return active;\n};\n\nconst isImporterActive = (state: PluginState, importer: string): boolean =>\n activeImporterKeys(state).has(importerKey(importer));\n\nconst activateDeclaredIcon = (\n state: PluginState,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n const existing = state.iconOwners.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n\n state.iconOwners.set(iconIdentity, activateEntry(state, entry));\n};\n\nconst activateDeclaredEntries = (state: PluginState, importer: string): void => {\n const entries = state.declaredEntries.get(importer)?.values() ?? [];\n\n for (const entry of entries) {\n if (isDeclaredSourceAvailable(state, entry.sourcePath)) {\n activateEntry(state, entry);\n }\n }\n};\n\nconst activateDeclaredIcons = (state: PluginState, importer: string): void => {\n const icons = state.declaredIcons.get(importer) ?? [];\n\n for (const [iconIdentity, entry] of icons) {\n if (isDeclaredSourceAvailable(state, entry.sourcePath)) {\n activateDeclaredIcon(state, iconIdentity, entry);\n }\n }\n};\n\nconst activateDeclaredClaims = (state: PluginState, active: Set<string>): void => {\n for (const importer of sortStrings(active)) {\n activateDeclaredEntries(state, importer);\n activateDeclaredIcons(state, importer);\n }\n};\n\nconst rebuildActiveClaims = (state: PluginState): void => {\n const previous = {\n entries: state.entries,\n iconOwners: state.iconOwners,\n sourcePaths: state.sourcePaths,\n };\n\n state.entries = new Map();\n state.iconOwners = new Map();\n state.sourcePaths = new Set();\n\n try {\n activateDeclaredClaims(state, activeImporterKeys(state));\n } catch (error_) {\n state.entries = previous.entries;\n state.iconOwners = previous.iconOwners;\n state.sourcePaths = previous.sourcePaths;\n throw error_;\n }\n};\n\nconst forgetImporterDeclarations = (state: PluginState, importer: string): void => {\n state.declaredEntries.delete(importer);\n state.declaredIcons.delete(importer);\n};\n\nconst cloneMapValues = <Value>(source: Map<string, Value>, clone: (value: Value) => Value): Map<string, Value> =>\n new Map([...source].map(([key, value]) => [key, clone(value)]));\n\nconst reconciliationCandidate = (state: PluginState): PluginState => ({\n ...state,\n bundledSpecifiers: cloneMapValues(state.bundledSpecifiers, (values) => new Set(values)),\n moduleDependencies: cloneMapValues(state.moduleDependencies, (values) => new Set(values)),\n prunedDependencies: cloneMapValues(state.prunedDependencies, (values) => new Set(values)),\n declaredEntries: cloneMapValues(state.declaredEntries, (entries) => new Map(entries)),\n declaredIcons: cloneMapValues(state.declaredIcons, (entries) => new Map(entries)),\n missingSourcePaths: new Set(state.missingSourcePaths),\n});\n\nconst storeBundledSpecifiers = (state: PluginState, importer: string, specifiers: Set<string>): void => {\n if (specifiers.size === 0) {\n state.bundledSpecifiers.delete(importer);\n\n return;\n }\n\n state.bundledSpecifiers.set(importer, specifiers);\n};\n\nconst applyImporterGraph = (state: PluginState, reconciliation: ImporterReconciliation): void => {\n updatePrunedDependencies(\n state,\n reconciliation.key,\n reconciliation.previousDependencies,\n reconciliation.currentDependencies,\n );\n\n state.moduleDependencies.set(reconciliation.key, reconciliation.currentDependencies);\n storeBundledSpecifiers(state, reconciliation.key, reconciliation.currentBundled);\n};\n\nconst declareReconciledResource = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n const resourceSpecifier = parseResourceSpecifier(source);\n\n if (resourceSpecifier === null) {\n return;\n }\n\n const entry = await resolveAssetEntry(ctx, state, {\n assetSource: resourceSpecifier.assetSource,\n importer,\n resourcePath: resourceSpecifier.resourcePath,\n options: undefined,\n });\n\n if (entry === undefined || state.missingSourcePaths.has(entry.sourcePath)) {\n throw new Error(`${JSON.stringify(source)} did not resolve to a bundled resource`);\n }\n};\n\nconst declareReconciledIcon = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n const iconSpecifier = parseIconSpecifier(source);\n\n if (iconSpecifier === null) {\n return;\n }\n\n const entry = await resolveIconEntry(ctx, state, {\n assetSource: iconSpecifier.assetSource,\n iconName: iconSpecifier.iconName,\n importer,\n options: undefined,\n });\n\n if (entry === undefined || state.missingSourcePaths.has(entry.entry.sourcePath)) {\n throw new Error(`${JSON.stringify(source)} did not resolve to a bundled icon`);\n }\n};\n\nconst declareReconciledSource = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n await declareReconciledResource(ctx, state, importer, source);\n await declareReconciledIcon(ctx, state, importer, source);\n};\n\nconst declareReconciledImports = async (\n ctx: ResolveContext,\n state: PluginState,\n reconciliation: ImporterReconciliation,\n): Promise<void> => {\n for (const entry of reconciliation.imports) {\n if (isBundledSource(entry.source)) {\n await declareReconciledSource(ctx, state, reconciliation.file, entry.source);\n }\n }\n};\n\nconst prepareReconciliation = async (\n ctx: ResolveContext,\n state: PluginState,\n reconciliation: ImporterReconciliation,\n): Promise<PluginState> => {\n const candidate = reconciliationCandidate(state);\n\n const isBundledChanged = !isSameSpecifiers(\n reconciliation.previousBundled,\n reconciliation.currentBundled,\n );\n\n if (isBundledChanged) {\n forgetImporterDeclarations(candidate, reconciliation.key);\n }\n\n applyImporterGraph(candidate, reconciliation);\n rebuildActiveClaims(candidate);\n\n if (isBundledChanged) {\n await declareReconciledImports(ctx, candidate, reconciliation);\n }\n\n return candidate;\n};\n\nconst commitReconciliation = (state: PluginState, candidate: PluginState): void => {\n state.entries = candidate.entries;\n state.bundledSpecifiers = candidate.bundledSpecifiers;\n state.moduleDependencies = candidate.moduleDependencies;\n state.prunedDependencies = candidate.prunedDependencies;\n state.declaredEntries = candidate.declaredEntries;\n state.declaredIcons = candidate.declaredIcons;\n state.missingSourcePaths = candidate.missingSourcePaths;\n state.sourcePaths = candidate.sourcePaths;\n state.iconOwners = candidate.iconOwners;\n};\n\nconst reconcileImporter = async (ctx: ResolveContext, state: PluginState, id: string): Promise<void> => {\n const reconciliation = await importerReconciliation(ctx, state, id);\n\n if (reconciliation === null) {\n return;\n }\n\n const previousSignature = entriesSignature(state);\n const candidate = await prepareReconciliation(ctx, state, reconciliation);\n commitReconciliation(state, candidate);\n\n if (entriesSignature(state) !== previousSignature) {\n refreshDevRegistration(state);\n }\n};\n\nconst resolveResourceConfig = async (state: PluginState, config: UserConfig, loadConfig: ConfigLoader) => {\n const loaded = await loadConfig.load(config.root ?? process.cwd());\n state.prefix = resourceBasePath(loaded.config.applicationId);\n state.root = loaded.root;\n\n return {\n assetsInclude: [ASSET_RE],\n };\n};\n\nconst refreshTrackedSource = (state: PluginState, file: string): void => {\n if (!isTrackedSource(state, file)) {\n return;\n }\n\n try {\n refreshDevRegistration(state);\n } catch (error_) {\n error(\"GResource refresh failed:\", error_);\n }\n};\n\nconst rebuildForSourceAvailability = (state: PluginState, previousSignature: string): void => {\n try {\n rebuildActiveClaims(state);\n\n if (entriesSignature(state) !== previousSignature) {\n refreshDevRegistration(state);\n }\n } catch (error_) {\n error(\"GResource source update failed:\", error_);\n }\n};\n\nconst updateTrackedSourceAvailability = (state: PluginState, file: string, isAvailable: boolean): void => {\n if (!isTrackedSource(state, file) && !state.missingSourcePaths.has(file) && !isDeclaredSource(state, file)) {\n return;\n }\n\n const previousSignature = entriesSignature(state);\n setSourceAvailability(state, file, isAvailable);\n rebuildForSourceAvailability(state, previousSignature);\n};\n\nconst attachResourceWatcher = (state: PluginState, server: ViteDevServer): void => {\n state.server = server;\n\n const onChange = (file: string): void => {\n refreshTrackedSource(state, file);\n };\n\n const onAdd = (file: string): void => {\n updateTrackedSourceAvailability(state, file, true);\n };\n\n const onUnlink = (file: string): void => {\n updateTrackedSourceAvailability(state, file, false);\n };\n\n const onClose = (): void => {\n releaseStagingDir(state);\n };\n\n server.httpServer?.once(\"close\", onClose);\n server.watcher.once(\"close\", onClose);\n server.watcher.on(\"change\", onChange);\n server.watcher.on(\"add\", onAdd);\n server.watcher.on(\"unlink\", onUnlink);\n};\n\nconst applyResolvedConfig = (state: PluginState, config: ResolvedConfig): void => {\n state.isBuild = config.command === \"build\";\n state.root = config.root;\n};\n\nconst loadResourceModule = (state: PluginState, id: string): string | undefined => {\n if (id === VIRTUAL_INIT) {\n return loadInitModule(state);\n }\n\n if (!isVirtual(id)) {\n return undefined;\n }\n\n return loadAssetModule(state, id);\n};\n\nconst isLegacyDataSpecifier = (source: string): boolean =>\n source.startsWith(DATA_PREFIX) && ASSET_RE.test(stripQuery(source));\n\nconst rejectInvalidSpecifier = (source: string): void => {\n if (BUNDLED_QUERY_MENTION_RE.test(source)) {\n throw new Error(\n `${JSON.stringify(source)} is not a valid bundled asset import; use ?resource, ` +\n \"?resource=/absolute/path, ?icon, or ?icon=name\",\n );\n }\n\n if (isBareRelativeAsset(source)) {\n throw new Error(\n `${JSON.stringify(source)} must choose ?resource for a GResource, ?icon for a themed icon, ` +\n \"or ?url for an emitted file\",\n );\n }\n};\n\nconst resolveExplicitResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<string | undefined> => {\n const specifier = parseResourceSpecifier(request.source);\n\n if (specifier === null) {\n return undefined;\n }\n\n const entry = await resolveAssetEntry(ctx, state, {\n assetSource: specifier.assetSource,\n importer: request.importer,\n resourcePath: specifier.resourcePath,\n options: request.options,\n });\n\n return entry === undefined ? undefined : virtualAssetId(entry);\n};\n\nconst resolveIconResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<RetainedIconModuleId | undefined> => {\n const specifier = parseIconSpecifier(request.source);\n\n if (specifier === null) {\n return undefined;\n }\n\n const resolved = await resolveIconEntry(ctx, state, {\n assetSource: specifier.assetSource,\n iconName: specifier.iconName,\n importer: request.importer,\n options: request.options,\n });\n\n return resolved === undefined\n ? undefined\n : { id: virtualIconId(resolved), moduleSideEffects: true };\n};\n\nconst resolveBundledResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<ResourceModuleId | undefined> => {\n if (isLegacyDataSpecifier(request.source)) {\n throw new Error(\n `${JSON.stringify(request.source)} uses the legacy #data asset form; import it relatively with ` +\n \"?resource or ?url\",\n );\n }\n\n if (parseResourceSpecifier(request.source) !== null) {\n const resolved = await resolveExplicitResourceId(ctx, state, request);\n trackBundledSpecifier(state, request.importer, request.source);\n\n return resolved;\n }\n\n if (parseIconSpecifier(request.source) !== null) {\n const resolved = await resolveIconResourceId(ctx, state, request);\n trackBundledSpecifier(state, request.importer, request.source);\n\n return resolved;\n }\n\n rejectInvalidSpecifier(request.source);\n\n return undefined;\n};\n\nconst resolveResourceId = (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<ResourceModuleId | undefined> => {\n if (request.source === VIRTUAL_INIT) {\n return Promise.resolve(VIRTUAL_INIT);\n }\n\n return resolveBundledResourceId(ctx, state, request);\n};\n\nconst createResourcesPlugin = (state: PluginState, loadConfig: ConfigLoader): Plugin => ({\n name: \"gtkx:resources\",\n enforce: \"pre\",\n perEnvironmentStartEndDuringDev: true,\n\n config: (config: UserConfig) => resolveResourceConfig(state, config, loadConfig),\n\n configResolved: (config: ResolvedConfig) => {\n applyResolvedConfig(state, config);\n },\n\n configureServer: (server) => {\n attachResourceWatcher(state, server);\n },\n\n buildStart() {\n if (state.isBuild && state.bundleReferenceId === null) {\n state.bundleReferenceId = this.emitFile({\n type: \"asset\",\n fileName: BUNDLE_FILENAME,\n source: \"\",\n });\n }\n },\n\n resolveId(source, importer, options) {\n return resolveResourceId(this, state, { source, importer, options });\n },\n\n load(id) {\n return loadResourceModule(state, id);\n },\n\n async transform(code, id) {\n await withExclusiveLoad(state, () => reconcileImporter(this, state, id));\n\n return retainSideEffectIconImport(code, id);\n },\n\n generateBundle(_options, bundle) {\n finalizeBuildBundle(this, bundle, state);\n },\n\n closeBundle() {\n releaseStagingDir(state);\n },\n});\n\nfunction gtkxResources(loadConfig: ConfigLoader = createConfigLoader(), entryPath?: string): Plugin {\n const state: PluginState = {\n prefix: \"\",\n root: \"\",\n isBuild: false,\n entries: new Map(),\n bundledSpecifiers: new Map(),\n moduleDependencies: new Map(),\n prunedDependencies: new Map(),\n declaredEntries: new Map(),\n declaredIcons: new Map(),\n entryModule: entryPath === undefined ? null : importerKey(entryPath),\n sourcePaths: new Set(),\n missingSourcePaths: new Set(),\n stagingDir: createRetainedStagingDir(DEV_STAGING_PREFIX),\n devBundlePath: \"\",\n server: null,\n compiledSignature: \"\",\n bundleReferenceId: null,\n iconOwners: new Map(),\n };\n\n return createResourcesPlugin(state, loadConfig);\n}\n\nexport { gtkxResources };\n"]}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/vite-plugins/resources.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ConfigLoader } from \"@gtkx/config\";\nimport type { ModuleNode, Plugin, ResolvedConfig, Rolldown, UserConfig, ViteDevServer } from \"vite\";\nimport { createConfigLoader, resourceBasePath, viteProjectRoot } from \"@gtkx/config/internal\";\nimport { error, info, isPathInside, isRecord, sortStrings, toPosixPath } from \"@gtkx/utils\";\nimport { copyFileSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from \"node:fs\";\nimport { basename, dirname, extname, isAbsolute, join, posix, relative, sep } from \"node:path\";\nimport { parseSync } from \"vite\";\nimport { withExclusiveLoad } from \"../internal/module-loads.js\";\nimport { runCliTool } from \"../internal/run-cli-tool.js\";\nimport { parseRuntimeImportsIn, type SourceImport, sourceLanguage } from \"../internal/source-imports.js\";\nimport { createRetainedStagingDir, type RetainedStagingDir, withStagingDir } from \"../internal/staging-dir.js\";\nimport { ASSET_RE } from \"./asset-extensions.js\";\nimport {\n isBareRelativeAsset,\n parseIconSpecifier,\n parseResourceSpecifier,\n} from \"./asset-specifier.js\";\nimport { renderInitModule } from \"./resource-init-module.js\";\nimport {\n BUNDLE_FILENAME,\n escapeXml,\n fromVirtualId,\n ICON_NAME_SEPARATOR,\n isVirtual,\n REFRESH_EXPORT,\n REGISTER_REFRESH_EXPORT,\n REL_SEPARATOR,\n RESOURCE_PATH_EXPORT,\n toVirtualId,\n VIRTUAL_ID_RE,\n VIRTUAL_INIT,\n VIRTUAL_INIT_RE,\n} from \"./resource-shared.js\";\nimport { stripQuery } from \"./strip-query.js\";\n\ntype ResourceEntry = {\n sourcePath: string;\n stagedRelPath: string;\n resourcePath: string;\n};\n\ntype PluginState = {\n prefix: string;\n root: string;\n isBuild: boolean;\n entries: Map<string, ResourceEntry>;\n bundledSpecifiers: Map<string, Set<string>>;\n moduleDependencies: Map<string, Set<string>>;\n prunedDependencies: Map<string, Set<string>>;\n declaredEntries: Map<string, Map<string, ResourceEntry>>;\n declaredIcons: Map<string, Map<string, ResourceEntry>>;\n entryModule: string | null;\n sourcePaths: Set<string>;\n missingSourcePaths: Set<string>;\n stagingDir: RetainedStagingDir;\n devBundlePath: string;\n server: ViteDevServer | null;\n compiledSignature: string;\n bundleReferenceId: string | null;\n iconOwners: Map<string, ResourceEntry>;\n};\n\ntype ResolveContext = {\n resolve: (\n source: string,\n importer?: string,\n options?: Record<string, unknown>,\n ) => Promise<{ id: string; external?: boolean | string } | null>;\n};\n\ntype PackageOwner = {\n dir: string;\n name: string;\n};\n\ntype AssetResolveRequest = {\n assetSource: string;\n importer: string | undefined;\n resourcePath: string | null;\n options: Record<string, unknown> | undefined;\n};\n\ntype IconResolveRequest = {\n assetSource: string;\n iconName: string | null;\n importer: string | undefined;\n options: Record<string, unknown> | undefined;\n};\n\ntype ResolvedIconEntry = {\n entry: ResourceEntry;\n iconName: string;\n};\n\ntype RetainedIconModuleId = {\n id: string;\n moduleSideEffects: true;\n};\n\ntype ResourceModuleId = string | RetainedIconModuleId;\n\ntype ImporterReconciliation = {\n currentBundled: Set<string>;\n currentDependencies: Set<string>;\n file: string;\n imports: SourceImport[];\n key: string;\n previousBundled: Set<string> | undefined;\n previousDependencies: Set<string> | undefined;\n};\n\ntype DerivedIconEntry = {\n iconIdentity: string;\n iconName: string;\n resourcePath: string;\n};\n\ntype ResolveRequest = {\n source: string;\n importer: string | undefined;\n options: Record<string, unknown> | undefined;\n};\n\nconst RESOURCE_COMPILER = \"glib-compile-resources\";\nconst MANIFEST_PREFIX = \"/\";\nconst DEV_STAGING_PREFIX = \"resources-dev\";\nconst MANIFEST_FILENAME = \"package.json\";\nconst DATA_PREFIX = \"#data/\";\nconst BUNDLED_QUERY_MENTION_RE = /[?&](?:icon|resource)(?:[=&]|$)/;\nconst ICON_EXTENSIONS: Set<string> = new Set([\".png\", \".svg\", \".xpm\"]);\n\nconst ICON_CONTEXTS: Set<string> = new Set([\n \"actions\",\n \"animations\",\n \"apps\",\n \"categories\",\n \"devices\",\n \"emblems\",\n \"emotes\",\n \"filesystems\",\n \"intl\",\n \"mimetypes\",\n \"places\",\n \"status\",\n]);\n\nconst STOCK_ICON_CONTEXTS: Set<string> = new Set([\n \"chart\",\n \"code\",\n \"data\",\n \"form\",\n \"image\",\n \"io\",\n \"media\",\n \"navigation\",\n \"net\",\n \"object\",\n \"table\",\n \"text\",\n]);\n\nconst ICON_SIZE_RE = /^([1-9]\\d*)x\\1(?:@[1-9]\\d*)?$/;\nconst RESERVED_ICON_NAMES: Set<string> = new Set([\"\", \".\", \"..\"]);\n\nconst isDependencyFile = (root: string, path: string): boolean =>\n isPathInside(root, path) && relative(root, path).split(sep).includes(\"node_modules\");\n\nconst packageIdentityIn = (dir: string): string | null => {\n try {\n const manifest: unknown = JSON.parse(readFileSync(join(dir, MANIFEST_FILENAME), \"utf8\"));\n\n return isRecord(manifest) && typeof manifest.name === \"string\" ? manifest.name : null;\n } catch {\n return null;\n }\n};\n\nconst packageIn = (dir: string): PackageOwner | null => {\n const name = packageIdentityIn(dir);\n\n if (name !== null) {\n return { dir, name };\n }\n\n const parent = dirname(dir);\n\n return parent === dir ? null : packageIn(parent);\n};\n\nconst packageForFile = (file: string): PackageOwner | null => packageIn(dirname(file));\n\nconst validateResourcePath = (resourcePath: string): string => {\n if (\n resourcePath === \"/\" ||\n !resourcePath.startsWith(\"/\") ||\n resourcePath.endsWith(\"/\") ||\n resourcePath.includes(\"\\0\") ||\n posix.normalize(resourcePath) !== resourcePath\n ) {\n throw new Error(\n `${JSON.stringify(resourcePath)} is not a valid GResource path; use an absolute normalized path`,\n );\n }\n\n return resourcePath;\n};\n\nconst derivedResourcePath = (state: PluginState, sourcePath: string): string => {\n if (isPathInside(state.root, sourcePath) && !isDependencyFile(state.root, sourcePath)) {\n return validateResourcePath(`${state.prefix}/${toPosixPath(relative(state.root, sourcePath))}`);\n }\n\n const owner = packageForFile(sourcePath);\n\n if (owner === null || !isPathInside(owner.dir, sourcePath)) {\n throw new Error(`${sourcePath} is outside the application and does not belong to a named package`);\n }\n\n const packagePath = toPosixPath(relative(owner.dir, sourcePath));\n\n return validateResourcePath(`${state.prefix}/${owner.name}/${packagePath}`);\n};\n\nconst iconExtension = (sourcePath: string): string => {\n const extension = extname(sourcePath).toLowerCase();\n\n if (!ICON_EXTENSIONS.has(extension)) {\n throw new Error(`${sourcePath} is not a supported themed icon; use an SVG, PNG, or XPM file`);\n }\n\n return extension;\n};\n\nconst hasIconNamePathSeparator = (value: string): boolean =>\n value.includes(\"\\0\") || value.includes(\"/\") || value.includes(\"\\\\\");\n\nconst validateIconName = (value: string): string => {\n if (\n RESERVED_ICON_NAMES.has(value) ||\n hasIconNamePathSeparator(value) ||\n ICON_EXTENSIONS.has(extname(value).toLowerCase())\n ) {\n throw new Error(\n `${JSON.stringify(value)} is not a valid icon name; use an extensionless filename without slashes`,\n );\n }\n\n return value;\n};\n\nconst isIconContext = (parts: string[]): boolean => {\n const [first, second] = parts;\n\n if (parts.length === 1) {\n return first !== undefined && ICON_CONTEXTS.has(first);\n }\n\n return parts.length === 2 && first === \"stock\" && second !== undefined && STOCK_ICON_CONTEXTS.has(second);\n};\n\nconst isIconLayout = (parts: string[]): boolean => {\n const [size, ...context] = parts;\n\n if (size === \"symbolic\") {\n return context.length === 1 && context[0] === \"apps\";\n }\n\n return size !== undefined && (size === \"scalable\" || ICON_SIZE_RE.test(size)) && isIconContext(context);\n};\n\nconst iconLayoutInParts = (parts: string[], beforeIndex: number): string | null => {\n const index = parts.lastIndexOf(\"icons\", beforeIndex);\n\n if (index === -1) {\n return null;\n }\n\n const treePath = parts.slice(index + 1, -1);\n const layout = treePath[0] === \"hicolor\" ? treePath.slice(1) : treePath;\n\n return isIconLayout(layout) ? layout.join(\"/\") : iconLayoutInParts(parts, index - 1);\n};\n\nconst iconLayoutFromTree = (sourcePath: string): string | null => {\n const parts = toPosixPath(sourcePath).split(\"/\");\n\n return iconLayoutInParts(parts, parts.length - 2);\n};\n\nconst derivedIconEntry = (\n state: PluginState,\n sourcePath: string,\n requestedName: string | null,\n): DerivedIconEntry => {\n const extension = iconExtension(sourcePath);\n const sourceName = basename(sourcePath, extname(sourcePath));\n const iconName = validateIconName(requestedName ?? sourceName);\n const layout = iconLayoutFromTree(sourcePath);\n\n const iconIdentity = layout === null\n ? `${state.prefix}/icons/${iconName}`\n : `${state.prefix}/icons/${layout}/${iconName}`;\n\n const resourcePath = validateResourcePath(`${iconIdentity}${extension}`);\n\n return { iconIdentity, iconName, resourcePath };\n};\n\nconst hasSideEffectIconImport = (code: string, id: string): boolean => {\n const lang = sourceLanguage(stripQuery(id));\n\n if (lang === undefined || !code.includes(\"?icon\")) {\n return false;\n }\n\n const parsed = parseSync(id, code, { lang });\n\n if (parsed.errors.length > 0) {\n return false;\n }\n\n return parsed.module.staticImports.some(\n (statement) => statement.entries.length === 0 && parseIconSpecifier(statement.moduleRequest.value) !== null,\n );\n};\n\nconst retainSideEffectIconImport = (\n code: string,\n id: string,\n): { code: string; moduleSideEffects: true } | null =>\n hasSideEffectIconImport(code, id)\n ? { code, moduleSideEffects: true }\n : null;\n\nconst compileBundle = (state: PluginState, outputPath: string): Buffer =>\n withStagingDir(\"resources\", (dir) => {\n const manifest = stageBundle(dir, state.entries);\n\n return runCompiler(dir, manifest, outputPath);\n });\n\nconst stageBundle = (dir: string, entries: Map<string, ResourceEntry>): string => {\n const fileNodes: string[] = [];\n\n for (const entry of entries.values()) {\n const targetPath = join(dir, entry.stagedRelPath);\n mkdirSync(dirname(targetPath), { recursive: true });\n copyFileSync(entry.sourcePath, targetPath);\n fileNodes.push(` <file>${escapeXml(entry.stagedRelPath)}</file>`);\n }\n\n const prefix = escapeXml(MANIFEST_PREFIX);\n const manifest = join(dir, \"gtkx.gresource.xml\");\n\n const xml = [\n \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\",\n \"<gresources>\",\n ` <gresource prefix=\"${prefix}\">`,\n ...fileNodes,\n \" </gresource>\",\n \"</gresources>\",\n \"\",\n ].join(\"\\n\");\n\n writeFileSync(manifest, xml);\n\n return manifest;\n};\n\nconst runCompiler = (sourceDir: string, manifest: string, outputPath: string): Buffer => {\n runCliTool({\n tool: RESOURCE_COMPILER,\n args: [`--sourcedir=${sourceDir}`, `--target=${outputPath}`, manifest],\n });\n\n return readFileSync(outputPath);\n};\n\nconst ensureStagingDir = (state: PluginState): void => {\n state.devBundlePath = join(state.stagingDir.retain(), BUNDLE_FILENAME);\n};\n\nconst releaseStagingDir = (state: PluginState): void => {\n state.stagingDir.release();\n state.devBundlePath = \"\";\n state.compiledSignature = \"\";\n};\n\nconst entriesSignature = (state: PluginState): string =>\n sortStrings([...state.entries].map(([resourcePath, entry]) => `${resourcePath}\\0${entry.sourcePath}`)).join(\"\\0\");\n\nconst compileDevBundle = (state: PluginState): void => {\n ensureStagingDir(state);\n\n if (state.entries.size === 0) {\n rmSync(state.devBundlePath, { force: true });\n state.compiledSignature = \"\";\n\n return;\n }\n\n compileBundle(state, state.devBundlePath);\n state.compiledSignature = entriesSignature(state);\n};\n\nconst isRefreshHook = (value: unknown): value is () => void => typeof value === \"function\";\n\nconst refreshRegisteredDevBundle = (state: PluginState): void => {\n const server = state.server;\n\n if (!server) {\n return;\n }\n\n const refresh: unknown = server.moduleGraph.getModuleById(VIRTUAL_INIT)?.ssrModule?.[REFRESH_EXPORT];\n\n if (isRefreshHook(refresh)) {\n refresh();\n }\n};\n\nconst registerDevAsset = (state: PluginState): void => {\n if (entriesSignature(state) !== state.compiledSignature) {\n compileDevBundle(state);\n }\n};\n\nconst importerKey = (importer: string): string => stripQuery(importer);\n\nconst trackBundledSpecifier = (state: PluginState, importer: string | undefined, source: string): void => {\n if (importer === undefined) {\n return;\n }\n\n const key = importerKey(importer);\n const specifiers = state.bundledSpecifiers.get(key) ?? new Set<string>();\n specifiers.add(source);\n state.bundledSpecifiers.set(key, specifiers);\n};\n\nconst createResourceEntry = (sourcePath: string, resourcePath: string): ResourceEntry => ({\n sourcePath,\n stagedRelPath: resourcePath.replace(/^\\/+/, \"\"),\n resourcePath,\n});\n\nconst activateEntry = (state: PluginState, entry: ResourceEntry): ResourceEntry => {\n const existing = state.entries.get(entry.resourcePath);\n\n if (existing !== undefined) {\n if (existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both resolve to the GResource path ` +\n entry.resourcePath,\n );\n }\n\n return existing;\n }\n\n state.entries.set(entry.resourcePath, entry);\n state.sourcePaths.add(entry.sourcePath);\n\n return entry;\n};\n\nconst isDeclarativeImporter = (state: PluginState, importer: string | undefined): importer is string =>\n !state.isBuild && importer !== undefined;\n\nconst setSourceAvailability = (state: PluginState, file: string, isAvailable: boolean): void => {\n if (isAvailable) {\n state.missingSourcePaths.delete(file);\n\n return;\n }\n\n state.missingSourcePaths.add(file);\n};\n\nconst isDeclaredSourceAvailable = (state: PluginState, sourcePath: string): boolean => {\n const isAvailable = existsSync(sourcePath);\n setSourceAvailability(state, sourcePath, isAvailable);\n\n return isAvailable;\n};\n\nconst declareEntry = (state: PluginState, importer: string, entry: ResourceEntry): ResourceEntry => {\n const key = importerKey(importer);\n const declarations = state.declaredEntries.get(key) ?? new Map<string, ResourceEntry>();\n const existing = declarations.get(entry.resourcePath);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both resolve to the GResource path ` +\n entry.resourcePath,\n );\n }\n\n const declared = existing ?? entry;\n declarations.set(entry.resourcePath, declared);\n state.declaredEntries.set(key, declarations);\n state.server?.watcher.add(dirname(declared.sourcePath));\n\n return declared;\n};\n\nconst declareIcon = (\n state: PluginState,\n importer: string,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n const key = importerKey(importer);\n const declarations = state.declaredIcons.get(key) ?? new Map<string, ResourceEntry>();\n const existing = declarations.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n\n declarations.set(iconIdentity, existing ?? entry);\n state.declaredIcons.set(key, declarations);\n};\n\nconst assertIconIdentityAvailable = (\n state: PluginState,\n iconIdentity: string,\n sourcePath: string,\n): void => {\n const existing = state.iconOwners.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n};\n\nconst declareResolvedIcon = (\n state: PluginState,\n importer: string | undefined,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n if (isDeclarativeImporter(state, importer)) {\n declareIcon(state, importer, iconIdentity, entry);\n }\n};\n\nconst registerEntry = (\n state: PluginState,\n absPath: string,\n rel: string,\n importer?: string,\n): ResourceEntry => {\n const resourcePath = validateResourcePath(rel.startsWith(\"/\") ? rel : `${state.prefix}/${rel}`);\n let entry = createResourceEntry(absPath, resourcePath);\n\n if (isDeclarativeImporter(state, importer)) {\n entry = declareEntry(state, importer, entry);\n\n if (!isImporterActive(state, importer) || !isDeclaredSourceAvailable(state, absPath)) {\n return entry;\n }\n }\n\n return activateEntry(state, entry);\n};\n\nconst registerIconEntry = (\n state: PluginState,\n sourcePath: string,\n derived: DerivedIconEntry,\n importer: string | undefined,\n): ResourceEntry => {\n const shouldActivate = !isDeclarativeImporter(state, importer) ||\n (isImporterActive(state, importer) && isDeclaredSourceAvailable(state, sourcePath));\n\n if (shouldActivate) {\n assertIconIdentityAvailable(state, derived.iconIdentity, sourcePath);\n }\n\n const entry = registerEntry(state, sourcePath, derived.resourcePath, importer);\n declareResolvedIcon(state, importer, derived.iconIdentity, entry);\n\n if (shouldActivate) {\n state.iconOwners.set(derived.iconIdentity, entry);\n }\n\n return entry;\n};\n\nconst isTrackedSource = (state: PluginState, file: string): boolean => state.sourcePaths.has(file);\n\nconst hasSourceEntry = (entries: Map<string, ResourceEntry>, file: string): boolean => {\n for (const entry of entries.values()) {\n if (entry.sourcePath === file) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasDeclaredSource = (\n declarations: Map<string, Map<string, ResourceEntry>>,\n file: string,\n): boolean => {\n for (const entries of declarations.values()) {\n if (hasSourceEntry(entries, file)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst isDeclaredSource = (state: PluginState, file: string): boolean =>\n hasDeclaredSource(state.declaredEntries, file) || hasDeclaredSource(state.declaredIcons, file);\n\nconst virtualAssetId = (entry: ResourceEntry): string =>\n toVirtualId(entry.sourcePath) + REL_SEPARATOR + entry.resourcePath;\n\nconst virtualIconId = ({ entry, iconName }: ResolvedIconEntry): string =>\n virtualAssetId(entry) + ICON_NAME_SEPARATOR + iconName;\n\nconst resolveAssetSource = async (\n ctx: ResolveContext,\n request: { assetSource: string; importer: string | undefined; options: Record<string, unknown> | undefined },\n): Promise<string | undefined> => {\n const resolved = await ctx.resolve(request.assetSource, request.importer, {\n ...request.options,\n skipSelf: true,\n });\n\n if (!resolved || resolved.external) {\n return undefined;\n }\n\n const sourcePath = stripQuery(resolved.id);\n\n if (!isAbsolute(sourcePath)) {\n throw new Error(`${JSON.stringify(request.assetSource)} did not resolve to a file-backed asset`);\n }\n\n return sourcePath;\n};\n\nconst resolveAssetEntry = async (\n ctx: ResolveContext,\n state: PluginState,\n request: AssetResolveRequest,\n): Promise<ResourceEntry | undefined> => {\n const sourcePath = await resolveAssetSource(ctx, request);\n\n if (sourcePath === undefined) {\n return undefined;\n }\n\n return registerEntry(\n state,\n sourcePath,\n request.resourcePath === null\n ? derivedResourcePath(state, sourcePath)\n : validateResourcePath(request.resourcePath),\n request.importer,\n );\n};\n\nconst resolveIconEntry = async (\n ctx: ResolveContext,\n state: PluginState,\n request: IconResolveRequest,\n): Promise<ResolvedIconEntry | undefined> => {\n const sourcePath = await resolveAssetSource(ctx, request);\n\n if (sourcePath === undefined) {\n return undefined;\n }\n\n const derived = derivedIconEntry(state, sourcePath, request.iconName);\n\n return {\n entry: registerIconEntry(state, sourcePath, derived, request.importer),\n iconName: derived.iconName,\n };\n};\n\nconst loadInitModule = (state: PluginState): string => {\n if (state.isBuild) {\n if (state.bundleReferenceId === null) {\n throw new Error(\"Cannot render the GResource loader before its bundle has been emitted\");\n }\n\n return renderInitModule({ isBuild: true, bundleReferenceId: state.bundleReferenceId });\n }\n\n ensureStagingDir(state);\n\n return renderInitModule({ isBuild: false, devBundlePath: state.devBundlePath });\n};\n\nconst virtualAssetMetadata = (virtualId: string): { absPath: string; iconName: string | null; rel: string } => {\n const rest = fromVirtualId(virtualId);\n const separatorIndex = rest.indexOf(REL_SEPARATOR);\n const relAndMetadata = rest.slice(separatorIndex + REL_SEPARATOR.length);\n const iconSeparatorIndex = relAndMetadata.indexOf(ICON_NAME_SEPARATOR);\n\n return {\n absPath: rest.slice(0, separatorIndex),\n iconName: iconSeparatorIndex === -1\n ? null\n : relAndMetadata.slice(iconSeparatorIndex + ICON_NAME_SEPARATOR.length),\n rel: iconSeparatorIndex === -1 ? relAndMetadata : relAndMetadata.slice(0, iconSeparatorIndex),\n };\n};\n\nconst resourcePathExport = (entry: ResourceEntry, iconName: string | null): string[] =>\n iconName === null ? [`export const ${RESOURCE_PATH_EXPORT} = ${JSON.stringify(entry.resourcePath)};`] : [];\n\nconst assetModuleImports = (iconName: string | null): string[] => {\n const initBindings = iconName === null\n ? \"ensureRegistered\"\n : `ensureRegistered, ${REGISTER_REFRESH_EXPORT}`;\n\n return [\n `import { ${initBindings} } from ${JSON.stringify(VIRTUAL_INIT)};`,\n ...(iconName === null\n ? []\n : [\n \"import { Display } from \\\"@gtkx/gi/gdk\\\";\",\n \"import { IconTheme } from \\\"@gtkx/gi/gtk\\\";\",\n ]),\n ];\n};\n\nconst iconThemeRegistration = (state: PluginState, iconName: string | null): string[] => {\n if (iconName === null) {\n return [];\n }\n\n const resourceIconPath = `${state.prefix}/icons`;\n\n return [\n `const resourceIconPath = ${JSON.stringify(resourceIconPath)};`,\n \"function refreshIconTheme() {\",\n \" const display = Display.getDefault();\",\n \" if (!display) return;\",\n \" const theme = IconTheme.getForDisplay(display);\",\n \" const paths = theme.getResourcePath() ?? [];\",\n \" theme.setResourcePath(paths.includes(resourceIconPath) ? [...paths] : [...paths, resourceIconPath]);\",\n \"}\",\n `${REGISTER_REFRESH_EXPORT}(resourceIconPath, refreshIconTheme);`,\n ];\n};\n\nconst loadedResourceEntry = (\n state: PluginState,\n sourcePath: string,\n resourcePath: string,\n): { entry: ResourceEntry; isRegistered: boolean } => {\n const registered = state.entries.get(resourcePath);\n\n if (registered === undefined) {\n return { entry: createResourceEntry(sourcePath, resourcePath), isRegistered: false };\n }\n\n if (registered.sourcePath !== sourcePath) {\n throw new Error(\n `${registered.sourcePath} and ${sourcePath} both resolve to the GResource path ${resourcePath}`,\n );\n }\n\n return { entry: registered, isRegistered: true };\n};\n\nconst compileLoadedDevAsset = (state: PluginState, isRegistered: boolean): void => {\n if (isRegistered && !state.isBuild) {\n registerDevAsset(state);\n }\n};\n\nconst loadAssetModule = (state: PluginState, virtualId: string): string => {\n const { absPath, iconName, rel } = virtualAssetMetadata(virtualId);\n const resourcePath = validateResourcePath(rel);\n const { entry, isRegistered } = loadedResourceEntry(state, absPath, resourcePath);\n const defaultValue = iconName ?? entry.resourcePath;\n compileLoadedDevAsset(state, isRegistered);\n\n return [\n ...assetModuleImports(iconName),\n \"ensureRegistered();\",\n ...iconThemeRegistration(state, iconName),\n `export default ${JSON.stringify(defaultValue)};`,\n ...resourcePathExport(entry, iconName),\n ].join(\"\\n\");\n};\n\nconst finalizeBuildBundle = (\n ctx: Pick<Rolldown.PluginContext, \"getFileName\">,\n bundle: Rolldown.OutputBundle,\n state: PluginState,\n): void => {\n if (!state.isBuild || state.bundleReferenceId === null) {\n return;\n }\n\n const fileName = ctx.getFileName(state.bundleReferenceId);\n const output = bundle[fileName];\n\n if (output?.type !== \"asset\") {\n throw new Error(`Cannot find the emitted ${BUNDLE_FILENAME} asset`);\n }\n\n if (state.entries.size === 0) {\n Reflect.deleteProperty(bundle, fileName);\n\n return;\n }\n\n const compiled = withStagingDir(\"resources-out\", (outDir) => compileBundle(state, join(outDir, BUNDLE_FILENAME)));\n output.source = compiled;\n info(`Compiled ${String(state.entries.size)} resource(s) into ${BUNDLE_FILENAME}`);\n};\n\nconst refreshDevRegistration = (state: PluginState): void => {\n compileDevBundle(state);\n\n try {\n refreshRegisteredDevBundle(state);\n } catch (error_) {\n error(\"Failed to refresh GResource bundle:\", error_);\n }\n};\n\nconst isSameSpecifiers = (left: Set<string> | undefined, right: Set<string>): boolean =>\n left === undefined\n ? right.size === 0\n : left.size === right.size && [...right].every((source) => left.has(source));\n\nconst bundledSpecifiersIn = (imports: SourceImport[]): Set<string> =>\n new Set(\n imports\n .filter((entry) =>\n parseResourceSpecifier(entry.source) !== null || parseIconSpecifier(entry.source) !== null)\n .map((entry) => entry.source),\n );\n\nconst isSourceModule = (file: string): boolean => sourceLanguage(file) !== undefined;\n\nconst isBundledSource = (source: string): boolean =>\n parseResourceSpecifier(source) !== null || parseIconSpecifier(source) !== null;\n\nconst validateUnbundledSource = (source: string): void => {\n if (isLegacyDataSpecifier(source)) {\n throw new Error(`${JSON.stringify(source)} uses the legacy #data asset form`);\n }\n\n rejectInvalidSpecifier(source);\n};\n\nconst resolvedModuleDependency = async (\n ctx: ResolveContext,\n source: string,\n importer: string,\n): Promise<string | null> => {\n if (isBundledSource(source)) {\n return null;\n }\n\n validateUnbundledSource(source);\n const resolved = await ctx.resolve(source, importer, { skipSelf: true });\n\n if (resolved === null) {\n throw new Error(`${JSON.stringify(source)} could not be resolved from ${importer}`);\n }\n\n return resolved.external ? null : importerKey(resolved.id);\n};\n\nconst resolvedModuleDependencies = async (\n ctx: ResolveContext,\n imports: SourceImport[],\n importer: string,\n): Promise<Set<string>> => {\n const dependencies: Set<string> = new Set();\n\n for (const entry of imports) {\n const dependency = await resolvedModuleDependency(ctx, entry.source, importer);\n\n if (dependency !== null) {\n dependencies.add(dependency);\n }\n }\n\n return dependencies;\n};\n\nconst importerReconciliation = async (\n ctx: ResolveContext,\n state: PluginState,\n id: string,\n): Promise<ImporterReconciliation | null> => {\n const file = stripQuery(id);\n const key = importerKey(file);\n\n if (state.isBuild || !isSourceModule(file)) {\n return null;\n }\n\n const imports = parseRuntimeImportsIn(file);\n\n if (imports === null) {\n return null;\n }\n\n return {\n currentBundled: bundledSpecifiersIn(imports),\n currentDependencies: await resolvedModuleDependencies(ctx, imports, file),\n file,\n imports,\n key,\n previousBundled: state.bundledSpecifiers.get(key),\n previousDependencies: state.moduleDependencies.get(key),\n };\n};\n\nconst moduleNodeKey = (module: ModuleNode): string => importerKey(module.id ?? module.file ?? module.url);\n\nconst moduleNodeFor = (state: PluginState, id: string): ModuleNode | undefined => {\n const server = state.server;\n\n if (server === null) {\n return undefined;\n }\n\n return server.moduleGraph.getModuleById(id) ?? server.moduleGraph.getModuleById(importerKey(id));\n};\n\nconst restoreDependencies = (pruned: Set<string>, current: Set<string>): void => {\n for (const dependency of current) {\n pruned.delete(dependency);\n }\n};\n\nconst pruneRemovedDependencies = (\n pruned: Set<string>,\n previous: Set<string> | undefined,\n current: Set<string>,\n): void => {\n if (previous === undefined) {\n return;\n }\n\n for (const dependency of previous) {\n if (!current.has(dependency)) {\n pruned.add(dependency);\n }\n }\n};\n\nconst storePrunedDependencies = (state: PluginState, key: string, pruned: Set<string>): void => {\n if (pruned.size === 0) {\n state.prunedDependencies.delete(key);\n\n return;\n }\n\n state.prunedDependencies.set(key, pruned);\n};\n\nconst updatePrunedDependencies = (\n state: PluginState,\n key: string,\n previous: Set<string> | undefined,\n current: Set<string>,\n): void => {\n const pruned = state.prunedDependencies.get(key) ?? new Set<string>();\n restoreDependencies(pruned, current);\n pruneRemovedDependencies(pruned, previous, current);\n storePrunedDependencies(state, key, pruned);\n};\n\nconst isPrunedDependency = (state: PluginState, importer: ModuleNode, imported: ModuleNode): boolean =>\n state.prunedDependencies.get(moduleNodeKey(importer))?.has(moduleNodeKey(imported)) === true;\n\nconst fallbackRootModules = (state: PluginState): string[] => {\n const roots: string[] = [];\n\n for (const key of state.moduleDependencies.keys()) {\n if (moduleNodeFor(state, key)?.importers.size === 0) {\n roots.push(key);\n }\n }\n\n return roots;\n};\n\nconst enqueueCurrentDependencies = (state: PluginState, key: string, pending: string[]): void => {\n const dependencies = state.moduleDependencies.get(key) ?? [];\n\n for (const dependency of dependencies) {\n pending.push(dependency);\n }\n};\n\nconst enqueueGraphDependencies = (state: PluginState, key: string, pending: string[]): void => {\n const module = moduleNodeFor(state, key);\n\n if (module === undefined) {\n return;\n }\n\n for (const imported of module.importedModules) {\n if (!isPrunedDependency(state, module, imported)) {\n pending.push(moduleNodeKey(imported));\n }\n }\n};\n\nconst visitActiveImporter = (\n state: PluginState,\n active: Set<string>,\n pending: string[],\n key: string,\n): void => {\n if (active.has(key)) {\n return;\n }\n\n active.add(key);\n enqueueCurrentDependencies(state, key, pending);\n enqueueGraphDependencies(state, key, pending);\n};\n\nconst activeImporterKeys = (state: PluginState): Set<string> => {\n const active: Set<string> = new Set();\n const roots = state.entryModule === null ? fallbackRootModules(state) : [state.entryModule];\n const pending = [...roots];\n\n while (pending.length > 0) {\n const key = pending.pop();\n\n if (key === undefined || active.has(key)) {\n continue;\n }\n\n visitActiveImporter(state, active, pending, key);\n }\n\n return active;\n};\n\nconst isImporterActive = (state: PluginState, importer: string): boolean =>\n activeImporterKeys(state).has(importerKey(importer));\n\nconst activateDeclaredIcon = (\n state: PluginState,\n iconIdentity: string,\n entry: ResourceEntry,\n): void => {\n const existing = state.iconOwners.get(iconIdentity);\n\n if (existing !== undefined && existing.sourcePath !== entry.sourcePath) {\n throw new Error(\n `${existing.sourcePath} and ${entry.sourcePath} both claim the themed icon ${iconIdentity}`,\n );\n }\n\n state.iconOwners.set(iconIdentity, activateEntry(state, entry));\n};\n\nconst activateDeclaredEntries = (state: PluginState, importer: string): void => {\n const entries = state.declaredEntries.get(importer)?.values() ?? [];\n\n for (const entry of entries) {\n if (isDeclaredSourceAvailable(state, entry.sourcePath)) {\n activateEntry(state, entry);\n }\n }\n};\n\nconst activateDeclaredIcons = (state: PluginState, importer: string): void => {\n const icons = state.declaredIcons.get(importer) ?? [];\n\n for (const [iconIdentity, entry] of icons) {\n if (isDeclaredSourceAvailable(state, entry.sourcePath)) {\n activateDeclaredIcon(state, iconIdentity, entry);\n }\n }\n};\n\nconst activateDeclaredClaims = (state: PluginState, active: Set<string>): void => {\n for (const importer of sortStrings(active)) {\n activateDeclaredEntries(state, importer);\n activateDeclaredIcons(state, importer);\n }\n};\n\nconst rebuildActiveClaims = (state: PluginState): void => {\n const previous = {\n entries: state.entries,\n iconOwners: state.iconOwners,\n sourcePaths: state.sourcePaths,\n };\n\n state.entries = new Map();\n state.iconOwners = new Map();\n state.sourcePaths = new Set();\n\n try {\n activateDeclaredClaims(state, activeImporterKeys(state));\n } catch (error_) {\n state.entries = previous.entries;\n state.iconOwners = previous.iconOwners;\n state.sourcePaths = previous.sourcePaths;\n throw error_;\n }\n};\n\nconst forgetImporterDeclarations = (state: PluginState, importer: string): void => {\n state.declaredEntries.delete(importer);\n state.declaredIcons.delete(importer);\n};\n\nconst cloneMapValues = <Value>(source: Map<string, Value>, clone: (value: Value) => Value): Map<string, Value> =>\n new Map([...source].map(([key, value]) => [key, clone(value)]));\n\nconst reconciliationCandidate = (state: PluginState): PluginState => ({\n ...state,\n bundledSpecifiers: cloneMapValues(state.bundledSpecifiers, (values) => new Set(values)),\n moduleDependencies: cloneMapValues(state.moduleDependencies, (values) => new Set(values)),\n prunedDependencies: cloneMapValues(state.prunedDependencies, (values) => new Set(values)),\n declaredEntries: cloneMapValues(state.declaredEntries, (entries) => new Map(entries)),\n declaredIcons: cloneMapValues(state.declaredIcons, (entries) => new Map(entries)),\n missingSourcePaths: new Set(state.missingSourcePaths),\n});\n\nconst storeBundledSpecifiers = (state: PluginState, importer: string, specifiers: Set<string>): void => {\n if (specifiers.size === 0) {\n state.bundledSpecifiers.delete(importer);\n\n return;\n }\n\n state.bundledSpecifiers.set(importer, specifiers);\n};\n\nconst applyImporterGraph = (state: PluginState, reconciliation: ImporterReconciliation): void => {\n updatePrunedDependencies(\n state,\n reconciliation.key,\n reconciliation.previousDependencies,\n reconciliation.currentDependencies,\n );\n\n state.moduleDependencies.set(reconciliation.key, reconciliation.currentDependencies);\n storeBundledSpecifiers(state, reconciliation.key, reconciliation.currentBundled);\n};\n\nconst declareReconciledResource = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n const resourceSpecifier = parseResourceSpecifier(source);\n\n if (resourceSpecifier === null) {\n return;\n }\n\n const entry = await resolveAssetEntry(ctx, state, {\n assetSource: resourceSpecifier.assetSource,\n importer,\n resourcePath: resourceSpecifier.resourcePath,\n options: undefined,\n });\n\n if (entry === undefined || state.missingSourcePaths.has(entry.sourcePath)) {\n throw new Error(`${JSON.stringify(source)} did not resolve to a bundled resource`);\n }\n};\n\nconst declareReconciledIcon = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n const iconSpecifier = parseIconSpecifier(source);\n\n if (iconSpecifier === null) {\n return;\n }\n\n const entry = await resolveIconEntry(ctx, state, {\n assetSource: iconSpecifier.assetSource,\n iconName: iconSpecifier.iconName,\n importer,\n options: undefined,\n });\n\n if (entry === undefined || state.missingSourcePaths.has(entry.entry.sourcePath)) {\n throw new Error(`${JSON.stringify(source)} did not resolve to a bundled icon`);\n }\n};\n\nconst declareReconciledSource = async (\n ctx: ResolveContext,\n state: PluginState,\n importer: string,\n source: string,\n): Promise<void> => {\n await declareReconciledResource(ctx, state, importer, source);\n await declareReconciledIcon(ctx, state, importer, source);\n};\n\nconst declareReconciledImports = async (\n ctx: ResolveContext,\n state: PluginState,\n reconciliation: ImporterReconciliation,\n): Promise<void> => {\n for (const entry of reconciliation.imports) {\n if (isBundledSource(entry.source)) {\n await declareReconciledSource(ctx, state, reconciliation.file, entry.source);\n }\n }\n};\n\nconst prepareReconciliation = async (\n ctx: ResolveContext,\n state: PluginState,\n reconciliation: ImporterReconciliation,\n): Promise<PluginState> => {\n const candidate = reconciliationCandidate(state);\n\n const isBundledChanged = !isSameSpecifiers(\n reconciliation.previousBundled,\n reconciliation.currentBundled,\n );\n\n if (isBundledChanged) {\n forgetImporterDeclarations(candidate, reconciliation.key);\n }\n\n applyImporterGraph(candidate, reconciliation);\n rebuildActiveClaims(candidate);\n\n if (isBundledChanged) {\n await declareReconciledImports(ctx, candidate, reconciliation);\n }\n\n return candidate;\n};\n\nconst commitReconciliation = (state: PluginState, candidate: PluginState): void => {\n state.entries = candidate.entries;\n state.bundledSpecifiers = candidate.bundledSpecifiers;\n state.moduleDependencies = candidate.moduleDependencies;\n state.prunedDependencies = candidate.prunedDependencies;\n state.declaredEntries = candidate.declaredEntries;\n state.declaredIcons = candidate.declaredIcons;\n state.missingSourcePaths = candidate.missingSourcePaths;\n state.sourcePaths = candidate.sourcePaths;\n state.iconOwners = candidate.iconOwners;\n};\n\nconst reconcileImporter = async (ctx: ResolveContext, state: PluginState, id: string): Promise<void> => {\n const reconciliation = await importerReconciliation(ctx, state, id);\n\n if (reconciliation === null) {\n return;\n }\n\n const previousSignature = entriesSignature(state);\n const candidate = await prepareReconciliation(ctx, state, reconciliation);\n commitReconciliation(state, candidate);\n\n if (entriesSignature(state) !== previousSignature) {\n refreshDevRegistration(state);\n }\n};\n\nconst resolveResourceConfig = async (state: PluginState, config: UserConfig, loadConfig: ConfigLoader) => {\n const loaded = await loadConfig.load(viteProjectRoot(config));\n state.prefix = resourceBasePath(loaded.config.applicationId);\n state.root = loaded.root;\n\n return {\n assetsInclude: [ASSET_RE],\n };\n};\n\nconst refreshTrackedSource = (state: PluginState, file: string): void => {\n if (!isTrackedSource(state, file)) {\n return;\n }\n\n try {\n refreshDevRegistration(state);\n } catch (error_) {\n error(\"GResource refresh failed:\", error_);\n }\n};\n\nconst rebuildForSourceAvailability = (state: PluginState, previousSignature: string): void => {\n try {\n rebuildActiveClaims(state);\n\n if (entriesSignature(state) !== previousSignature) {\n refreshDevRegistration(state);\n }\n } catch (error_) {\n error(\"GResource source update failed:\", error_);\n }\n};\n\nconst updateTrackedSourceAvailability = (state: PluginState, file: string, isAvailable: boolean): void => {\n if (!isTrackedSource(state, file) && !state.missingSourcePaths.has(file) && !isDeclaredSource(state, file)) {\n return;\n }\n\n const previousSignature = entriesSignature(state);\n setSourceAvailability(state, file, isAvailable);\n rebuildForSourceAvailability(state, previousSignature);\n};\n\nconst attachResourceWatcher = (state: PluginState, server: ViteDevServer): void => {\n state.server = server;\n\n const onChange = (file: string): void => {\n refreshTrackedSource(state, file);\n };\n\n const onAdd = (file: string): void => {\n updateTrackedSourceAvailability(state, file, true);\n };\n\n const onUnlink = (file: string): void => {\n updateTrackedSourceAvailability(state, file, false);\n };\n\n const onClose = (): void => {\n releaseStagingDir(state);\n };\n\n server.httpServer?.once(\"close\", onClose);\n server.watcher.once(\"close\", onClose);\n server.watcher.on(\"change\", onChange);\n server.watcher.on(\"add\", onAdd);\n server.watcher.on(\"unlink\", onUnlink);\n};\n\nconst applyResolvedConfig = (state: PluginState, config: ResolvedConfig): void => {\n state.isBuild = config.command === \"build\";\n state.root = config.root;\n};\n\nconst loadResourceModule = (state: PluginState, id: string): string | undefined => {\n if (id === VIRTUAL_INIT) {\n return loadInitModule(state);\n }\n\n if (!isVirtual(id)) {\n return undefined;\n }\n\n return loadAssetModule(state, id);\n};\n\nconst isLegacyDataSpecifier = (source: string): boolean =>\n source.startsWith(DATA_PREFIX) && ASSET_RE.test(stripQuery(source));\n\nconst rejectInvalidSpecifier = (source: string): void => {\n if (BUNDLED_QUERY_MENTION_RE.test(source)) {\n throw new Error(\n `${JSON.stringify(source)} is not a valid bundled asset import; use ?resource, ` +\n \"?resource=/absolute/path, ?icon, or ?icon=name\",\n );\n }\n\n if (isBareRelativeAsset(source)) {\n throw new Error(\n `${JSON.stringify(source)} must choose ?resource for a GResource, ?icon for a themed icon, ` +\n \"?font for a bundled font, or ?url for an emitted file\",\n );\n }\n};\n\nconst resolveExplicitResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<string | undefined> => {\n const specifier = parseResourceSpecifier(request.source);\n\n if (specifier === null) {\n return undefined;\n }\n\n const entry = await resolveAssetEntry(ctx, state, {\n assetSource: specifier.assetSource,\n importer: request.importer,\n resourcePath: specifier.resourcePath,\n options: request.options,\n });\n\n return entry === undefined ? undefined : virtualAssetId(entry);\n};\n\nconst resolveIconResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<RetainedIconModuleId | undefined> => {\n const specifier = parseIconSpecifier(request.source);\n\n if (specifier === null) {\n return undefined;\n }\n\n const resolved = await resolveIconEntry(ctx, state, {\n assetSource: specifier.assetSource,\n iconName: specifier.iconName,\n importer: request.importer,\n options: request.options,\n });\n\n return resolved === undefined\n ? undefined\n : { id: virtualIconId(resolved), moduleSideEffects: true };\n};\n\nconst resolveBundledResourceId = async (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<ResourceModuleId | undefined> => {\n if (isLegacyDataSpecifier(request.source)) {\n throw new Error(\n `${JSON.stringify(request.source)} uses the legacy #data asset form; import it relatively with ` +\n \"?resource or ?url\",\n );\n }\n\n if (parseResourceSpecifier(request.source) !== null) {\n const resolved = await resolveExplicitResourceId(ctx, state, request);\n trackBundledSpecifier(state, request.importer, request.source);\n\n return resolved;\n }\n\n if (parseIconSpecifier(request.source) !== null) {\n const resolved = await resolveIconResourceId(ctx, state, request);\n trackBundledSpecifier(state, request.importer, request.source);\n\n return resolved;\n }\n\n rejectInvalidSpecifier(request.source);\n\n return undefined;\n};\n\nconst resolveResourceId = (\n ctx: ResolveContext,\n state: PluginState,\n request: ResolveRequest,\n): Promise<ResourceModuleId | undefined> => {\n if (request.source === VIRTUAL_INIT) {\n return Promise.resolve(VIRTUAL_INIT);\n }\n\n return resolveBundledResourceId(ctx, state, request);\n};\n\nconst createResourcesPlugin = (state: PluginState, loadConfig: ConfigLoader): Plugin => ({\n name: \"gtkx:resources\",\n enforce: \"pre\",\n perEnvironmentStartEndDuringDev: true,\n\n config: (config: UserConfig) => resolveResourceConfig(state, config, loadConfig),\n\n configResolved: (config: ResolvedConfig) => {\n applyResolvedConfig(state, config);\n },\n\n configureServer: (server) => {\n attachResourceWatcher(state, server);\n },\n\n buildStart() {\n if (state.isBuild && state.bundleReferenceId === null) {\n state.bundleReferenceId = this.emitFile({\n type: \"asset\",\n fileName: BUNDLE_FILENAME,\n source: \"\",\n });\n }\n },\n\n resolveId(source, importer, options) {\n return resolveResourceId(this, state, { source, importer, options });\n },\n\n load: {\n filter: { id: { include: [VIRTUAL_INIT_RE, VIRTUAL_ID_RE] } },\n\n handler(id) {\n return loadResourceModule(state, id);\n },\n },\n\n async transform(code, id) {\n await withExclusiveLoad(state, () => reconcileImporter(this, state, id));\n\n return retainSideEffectIconImport(code, id);\n },\n\n generateBundle(_options, bundle) {\n finalizeBuildBundle(this, bundle, state);\n },\n\n closeBundle() {\n releaseStagingDir(state);\n },\n});\n\nfunction gtkxResources(loadConfig: ConfigLoader = createConfigLoader(), entryPath?: string): Plugin {\n const state: PluginState = {\n prefix: \"\",\n root: \"\",\n isBuild: false,\n entries: new Map(),\n bundledSpecifiers: new Map(),\n moduleDependencies: new Map(),\n prunedDependencies: new Map(),\n declaredEntries: new Map(),\n declaredIcons: new Map(),\n entryModule: entryPath === undefined ? null : importerKey(entryPath),\n sourcePaths: new Set(),\n missingSourcePaths: new Set(),\n stagingDir: createRetainedStagingDir(DEV_STAGING_PREFIX),\n devBundlePath: \"\",\n server: null,\n compiledSignature: \"\",\n bundleReferenceId: null,\n iconOwners: new Map(),\n };\n\n return createResourcesPlugin(state, loadConfig);\n}\n\nexport { gtkxResources };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"self-contained.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/self-contained.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAiB,MAAM,MAAM,CAAC;AA2T1D,iBAAS,iBAAiB,IAAI,MAAM,CAenC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"self-contained.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/self-contained.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AA0TnC,iBAAS,iBAAiB,IAAI,MAAM,CAenC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}