gazetta 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/admin-dist/assets/index-BO9-CXmW.css +1 -0
  2. package/admin-dist/assets/index-Ufu8zZH_.js +668 -0
  3. package/admin-dist/assets/{vendor-primevue-BnR1c_bQ.js → vendor-primevue-C0Q_YTCb.js} +330 -431
  4. package/admin-dist/assets/vendor-vue-D3wBSmDf.js +1 -0
  5. package/admin-dist/index.html +4 -4
  6. package/dist/admin-api/error-response.d.ts +21 -0
  7. package/dist/admin-api/error-response.d.ts.map +1 -0
  8. package/dist/admin-api/error-response.js +12 -0
  9. package/dist/admin-api/error-response.js.map +1 -0
  10. package/dist/admin-api/index.d.ts +19 -6
  11. package/dist/admin-api/index.d.ts.map +1 -1
  12. package/dist/admin-api/index.js +137 -21
  13. package/dist/admin-api/index.js.map +1 -1
  14. package/dist/admin-api/routes/assets.d.ts +16 -0
  15. package/dist/admin-api/routes/assets.d.ts.map +1 -0
  16. package/dist/admin-api/routes/assets.js +433 -0
  17. package/dist/admin-api/routes/assets.js.map +1 -0
  18. package/dist/admin-api/routes/compare.d.ts +2 -1
  19. package/dist/admin-api/routes/compare.d.ts.map +1 -1
  20. package/dist/admin-api/routes/compare.js +33 -24
  21. package/dist/admin-api/routes/compare.js.map +1 -1
  22. package/dist/admin-api/routes/fields.d.ts +2 -2
  23. package/dist/admin-api/routes/fields.d.ts.map +1 -1
  24. package/dist/admin-api/routes/fields.js +10 -3
  25. package/dist/admin-api/routes/fields.js.map +1 -1
  26. package/dist/admin-api/routes/fragments.d.ts +2 -3
  27. package/dist/admin-api/routes/fragments.d.ts.map +1 -1
  28. package/dist/admin-api/routes/fragments.js +120 -21
  29. package/dist/admin-api/routes/fragments.js.map +1 -1
  30. package/dist/admin-api/routes/history.d.ts +23 -0
  31. package/dist/admin-api/routes/history.d.ts.map +1 -0
  32. package/dist/admin-api/routes/history.js +143 -0
  33. package/dist/admin-api/routes/history.js.map +1 -0
  34. package/dist/admin-api/routes/pages.d.ts +2 -3
  35. package/dist/admin-api/routes/pages.d.ts.map +1 -1
  36. package/dist/admin-api/routes/pages.js +153 -22
  37. package/dist/admin-api/routes/pages.js.map +1 -1
  38. package/dist/admin-api/routes/preview.d.ts +2 -2
  39. package/dist/admin-api/routes/preview.d.ts.map +1 -1
  40. package/dist/admin-api/routes/preview.js +50 -15
  41. package/dist/admin-api/routes/preview.js.map +1 -1
  42. package/dist/admin-api/routes/publish.d.ts +2 -1
  43. package/dist/admin-api/routes/publish.d.ts.map +1 -1
  44. package/dist/admin-api/routes/publish.js +259 -79
  45. package/dist/admin-api/routes/publish.js.map +1 -1
  46. package/dist/admin-api/routes/site.d.ts +2 -2
  47. package/dist/admin-api/routes/site.d.ts.map +1 -1
  48. package/dist/admin-api/routes/site.js +27 -4
  49. package/dist/admin-api/routes/site.js.map +1 -1
  50. package/dist/admin-api/routes/templates.d.ts +2 -2
  51. package/dist/admin-api/routes/templates.d.ts.map +1 -1
  52. package/dist/admin-api/routes/templates.js +19 -9
  53. package/dist/admin-api/routes/templates.js.map +1 -1
  54. package/dist/admin-api/schemas/assets.d.ts +48 -0
  55. package/dist/admin-api/schemas/assets.d.ts.map +1 -0
  56. package/dist/admin-api/schemas/assets.js +44 -0
  57. package/dist/admin-api/schemas/assets.js.map +1 -0
  58. package/dist/admin-api/schemas/compare.d.ts +29 -0
  59. package/dist/admin-api/schemas/compare.d.ts.map +1 -0
  60. package/dist/admin-api/schemas/compare.js +30 -0
  61. package/dist/admin-api/schemas/compare.js.map +1 -0
  62. package/dist/admin-api/schemas/dependents.d.ts +15 -0
  63. package/dist/admin-api/schemas/dependents.d.ts.map +1 -0
  64. package/dist/admin-api/schemas/dependents.js +14 -0
  65. package/dist/admin-api/schemas/dependents.js.map +1 -0
  66. package/dist/admin-api/schemas/fetch.d.ts +12 -0
  67. package/dist/admin-api/schemas/fetch.d.ts.map +1 -0
  68. package/dist/admin-api/schemas/fetch.js +11 -0
  69. package/dist/admin-api/schemas/fetch.js.map +1 -0
  70. package/dist/admin-api/schemas/fields.d.ts +11 -0
  71. package/dist/admin-api/schemas/fields.d.ts.map +1 -0
  72. package/dist/admin-api/schemas/fields.js +11 -0
  73. package/dist/admin-api/schemas/fields.js.map +1 -0
  74. package/dist/admin-api/schemas/fragments.d.ts +27 -0
  75. package/dist/admin-api/schemas/fragments.d.ts.map +1 -0
  76. package/dist/admin-api/schemas/fragments.js +26 -0
  77. package/dist/admin-api/schemas/fragments.js.map +1 -0
  78. package/dist/admin-api/schemas/history.d.ts +73 -0
  79. package/dist/admin-api/schemas/history.d.ts.map +1 -0
  80. package/dist/admin-api/schemas/history.js +35 -0
  81. package/dist/admin-api/schemas/history.js.map +1 -0
  82. package/dist/admin-api/schemas/index.d.ts +34 -0
  83. package/dist/admin-api/schemas/index.d.ts.map +1 -0
  84. package/dist/admin-api/schemas/index.js +34 -0
  85. package/dist/admin-api/schemas/index.js.map +1 -0
  86. package/dist/admin-api/schemas/pages.d.ts +46 -0
  87. package/dist/admin-api/schemas/pages.d.ts.map +1 -0
  88. package/dist/admin-api/schemas/pages.js +47 -0
  89. package/dist/admin-api/schemas/pages.js.map +1 -0
  90. package/dist/admin-api/schemas/publish.d.ts +67 -0
  91. package/dist/admin-api/schemas/publish.d.ts.map +1 -0
  92. package/dist/admin-api/schemas/publish.js +60 -0
  93. package/dist/admin-api/schemas/publish.js.map +1 -0
  94. package/dist/admin-api/schemas/site.d.ts +28 -0
  95. package/dist/admin-api/schemas/site.d.ts.map +1 -0
  96. package/dist/admin-api/schemas/site.js +24 -0
  97. package/dist/admin-api/schemas/site.js.map +1 -0
  98. package/dist/admin-api/schemas/targets.d.ts +36 -0
  99. package/dist/admin-api/schemas/targets.d.ts.map +1 -0
  100. package/dist/admin-api/schemas/targets.js +19 -0
  101. package/dist/admin-api/schemas/targets.js.map +1 -0
  102. package/dist/admin-api/schemas/templates.d.ts +17 -0
  103. package/dist/admin-api/schemas/templates.d.ts.map +1 -0
  104. package/dist/admin-api/schemas/templates.js +16 -0
  105. package/dist/admin-api/schemas/templates.js.map +1 -0
  106. package/dist/admin-api/source-context.d.ts +158 -0
  107. package/dist/admin-api/source-context.d.ts.map +1 -0
  108. package/dist/admin-api/source-context.js +92 -0
  109. package/dist/admin-api/source-context.js.map +1 -0
  110. package/dist/app.js +1 -1
  111. package/dist/app.js.map +1 -1
  112. package/dist/assemble.d.ts.map +1 -1
  113. package/dist/assemble.js +4 -1
  114. package/dist/assemble.js.map +1 -1
  115. package/dist/assets/analyze-audio.d.ts +3 -0
  116. package/dist/assets/analyze-audio.d.ts.map +1 -0
  117. package/dist/assets/analyze-audio.js +80 -0
  118. package/dist/assets/analyze-audio.js.map +1 -0
  119. package/dist/assets/analyze-image.d.ts +19 -0
  120. package/dist/assets/analyze-image.d.ts.map +1 -0
  121. package/dist/assets/analyze-image.js +123 -0
  122. package/dist/assets/analyze-image.js.map +1 -0
  123. package/dist/assets/analyze.d.ts +94 -0
  124. package/dist/assets/analyze.d.ts.map +1 -0
  125. package/dist/assets/analyze.js +45 -0
  126. package/dist/assets/analyze.js.map +1 -0
  127. package/dist/assets/asset-deps.d.ts +30 -0
  128. package/dist/assets/asset-deps.d.ts.map +1 -0
  129. package/dist/assets/asset-deps.js +42 -0
  130. package/dist/assets/asset-deps.js.map +1 -0
  131. package/dist/assets/asset-paths.d.ts +155 -0
  132. package/dist/assets/asset-paths.d.ts.map +1 -0
  133. package/dist/assets/asset-paths.js +197 -0
  134. package/dist/assets/asset-paths.js.map +1 -0
  135. package/dist/assets/delete.d.ts +75 -0
  136. package/dist/assets/delete.d.ts.map +1 -0
  137. package/dist/assets/delete.js +82 -0
  138. package/dist/assets/delete.js.map +1 -0
  139. package/dist/assets/errors.d.ts +241 -0
  140. package/dist/assets/errors.d.ts.map +1 -0
  141. package/dist/assets/errors.js +300 -0
  142. package/dist/assets/errors.js.map +1 -0
  143. package/dist/assets/find-refs.d.ts +37 -0
  144. package/dist/assets/find-refs.d.ts.map +1 -0
  145. package/dist/assets/find-refs.js +35 -0
  146. package/dist/assets/find-refs.js.map +1 -0
  147. package/dist/assets/hash.d.ts +13 -0
  148. package/dist/assets/hash.d.ts.map +1 -0
  149. package/dist/assets/hash.js +43 -0
  150. package/dist/assets/hash.js.map +1 -0
  151. package/dist/assets/image-metadata.d.ts +11 -0
  152. package/dist/assets/image-metadata.d.ts.map +1 -0
  153. package/dist/assets/image-metadata.js +31 -0
  154. package/dist/assets/image-metadata.js.map +1 -0
  155. package/dist/assets/ingest-locale.d.ts +86 -0
  156. package/dist/assets/ingest-locale.d.ts.map +1 -0
  157. package/dist/assets/ingest-locale.js +209 -0
  158. package/dist/assets/ingest-locale.js.map +1 -0
  159. package/dist/assets/ingest.d.ts +96 -0
  160. package/dist/assets/ingest.d.ts.map +1 -0
  161. package/dist/assets/ingest.js +308 -0
  162. package/dist/assets/ingest.js.map +1 -0
  163. package/dist/assets/kind-compat.d.ts +34 -0
  164. package/dist/assets/kind-compat.d.ts.map +1 -0
  165. package/dist/assets/kind-compat.js +33 -0
  166. package/dist/assets/kind-compat.js.map +1 -0
  167. package/dist/assets/list.d.ts +46 -0
  168. package/dist/assets/list.d.ts.map +1 -0
  169. package/dist/assets/list.js +102 -0
  170. package/dist/assets/list.js.map +1 -0
  171. package/dist/assets/manifest-default.d.ts +56 -0
  172. package/dist/assets/manifest-default.d.ts.map +1 -0
  173. package/dist/assets/manifest-default.js +120 -0
  174. package/dist/assets/manifest-default.js.map +1 -0
  175. package/dist/assets/manifest-filename.d.ts +52 -0
  176. package/dist/assets/manifest-filename.d.ts.map +1 -0
  177. package/dist/assets/manifest-filename.js +104 -0
  178. package/dist/assets/manifest-filename.js.map +1 -0
  179. package/dist/assets/manifest-locale.d.ts +60 -0
  180. package/dist/assets/manifest-locale.d.ts.map +1 -0
  181. package/dist/assets/manifest-locale.js +206 -0
  182. package/dist/assets/manifest-locale.js.map +1 -0
  183. package/dist/assets/manifest-merge.d.ts +66 -0
  184. package/dist/assets/manifest-merge.d.ts.map +1 -0
  185. package/dist/assets/manifest-merge.js +82 -0
  186. package/dist/assets/manifest-merge.js.map +1 -0
  187. package/dist/assets/manifest.d.ts +83 -0
  188. package/dist/assets/manifest.d.ts.map +1 -0
  189. package/dist/assets/manifest.js +93 -0
  190. package/dist/assets/manifest.js.map +1 -0
  191. package/dist/assets/mime-sniff.d.ts +18 -0
  192. package/dist/assets/mime-sniff.d.ts.map +1 -0
  193. package/dist/assets/mime-sniff.js +84 -0
  194. package/dist/assets/mime-sniff.js.map +1 -0
  195. package/dist/assets/preprocess-svg.d.ts +3 -0
  196. package/dist/assets/preprocess-svg.d.ts.map +1 -0
  197. package/dist/assets/preprocess-svg.js +49 -0
  198. package/dist/assets/preprocess-svg.js.map +1 -0
  199. package/dist/assets/preprocess.d.ts +62 -0
  200. package/dist/assets/preprocess.d.ts.map +1 -0
  201. package/dist/assets/preprocess.js +86 -0
  202. package/dist/assets/preprocess.js.map +1 -0
  203. package/dist/assets/publish-plan.d.ts +41 -0
  204. package/dist/assets/publish-plan.d.ts.map +1 -0
  205. package/dist/assets/publish-plan.js +49 -0
  206. package/dist/assets/publish-plan.js.map +1 -0
  207. package/dist/assets/publish.d.ts +33 -0
  208. package/dist/assets/publish.d.ts.map +1 -0
  209. package/dist/assets/publish.js +81 -0
  210. package/dist/assets/publish.js.map +1 -0
  211. package/dist/assets/refs.d.ts +37 -0
  212. package/dist/assets/refs.d.ts.map +1 -0
  213. package/dist/assets/refs.js +33 -0
  214. package/dist/assets/refs.js.map +1 -0
  215. package/dist/assets/remove-override.d.ts +42 -0
  216. package/dist/assets/remove-override.d.ts.map +1 -0
  217. package/dist/assets/remove-override.js +53 -0
  218. package/dist/assets/remove-override.js.map +1 -0
  219. package/dist/assets/rename.d.ts +43 -0
  220. package/dist/assets/rename.d.ts.map +1 -0
  221. package/dist/assets/rename.js +271 -0
  222. package/dist/assets/rename.js.map +1 -0
  223. package/dist/assets/replace.d.ts +37 -0
  224. package/dist/assets/replace.d.ts.map +1 -0
  225. package/dist/assets/replace.js +195 -0
  226. package/dist/assets/replace.js.map +1 -0
  227. package/dist/assets/resolve.d.ts +141 -0
  228. package/dist/assets/resolve.d.ts.map +1 -0
  229. package/dist/assets/resolve.js +381 -0
  230. package/dist/assets/resolve.js.map +1 -0
  231. package/dist/assets/rewrite-manifest-asset-ref.d.ts +44 -0
  232. package/dist/assets/rewrite-manifest-asset-ref.d.ts.map +1 -0
  233. package/dist/assets/rewrite-manifest-asset-ref.js +51 -0
  234. package/dist/assets/rewrite-manifest-asset-ref.js.map +1 -0
  235. package/dist/assets/scan-manifest-for-asset.d.ts +63 -0
  236. package/dist/assets/scan-manifest-for-asset.d.ts.map +1 -0
  237. package/dist/assets/scan-manifest-for-asset.js +105 -0
  238. package/dist/assets/scan-manifest-for-asset.js.map +1 -0
  239. package/dist/assets/serve-route.d.ts +45 -0
  240. package/dist/assets/serve-route.d.ts.map +1 -0
  241. package/dist/assets/serve-route.js +123 -0
  242. package/dist/assets/serve-route.js.map +1 -0
  243. package/dist/assets/svg-sanitize.d.ts +38 -0
  244. package/dist/assets/svg-sanitize.d.ts.map +1 -0
  245. package/dist/assets/svg-sanitize.js +209 -0
  246. package/dist/assets/svg-sanitize.js.map +1 -0
  247. package/dist/assets/update-metadata.d.ts +61 -0
  248. package/dist/assets/update-metadata.d.ts.map +1 -0
  249. package/dist/assets/update-metadata.js +82 -0
  250. package/dist/assets/update-metadata.js.map +1 -0
  251. package/dist/assets/url.d.ts +82 -0
  252. package/dist/assets/url.d.ts.map +1 -0
  253. package/dist/assets/url.js +103 -0
  254. package/dist/assets/url.js.map +1 -0
  255. package/dist/assets/validate.d.ts +74 -0
  256. package/dist/assets/validate.d.ts.map +1 -0
  257. package/dist/assets/validate.js +136 -0
  258. package/dist/assets/validate.js.map +1 -0
  259. package/dist/assets/variants.d.ts +23 -0
  260. package/dist/assets/variants.d.ts.map +1 -0
  261. package/dist/assets/variants.js +74 -0
  262. package/dist/assets/variants.js.map +1 -0
  263. package/dist/cli/assets-cli.d.ts +58 -0
  264. package/dist/cli/assets-cli.d.ts.map +1 -0
  265. package/dist/cli/assets-cli.js +233 -0
  266. package/dist/cli/assets-cli.js.map +1 -0
  267. package/dist/cli/assets-display.d.ts +112 -0
  268. package/dist/cli/assets-display.d.ts.map +1 -0
  269. package/dist/cli/assets-display.js +106 -0
  270. package/dist/cli/assets-display.js.map +1 -0
  271. package/dist/cli/bootstrap.d.ts +46 -0
  272. package/dist/cli/bootstrap.d.ts.map +1 -0
  273. package/dist/cli/bootstrap.js +84 -0
  274. package/dist/cli/bootstrap.js.map +1 -0
  275. package/dist/cli/history.d.ts +45 -0
  276. package/dist/cli/history.d.ts.map +1 -0
  277. package/dist/cli/history.js +165 -0
  278. package/dist/cli/history.js.map +1 -0
  279. package/dist/cli/index.js +689 -128
  280. package/dist/cli/index.js.map +1 -1
  281. package/dist/compare.d.ts +8 -5
  282. package/dist/compare.d.ts.map +1 -1
  283. package/dist/compare.js +62 -20
  284. package/dist/compare.js.map +1 -1
  285. package/dist/content-root.d.ts +38 -0
  286. package/dist/content-root.d.ts.map +1 -0
  287. package/dist/content-root.js +29 -0
  288. package/dist/content-root.js.map +1 -0
  289. package/dist/dep-sidecars.d.ts +127 -0
  290. package/dist/dep-sidecars.d.ts.map +1 -0
  291. package/dist/dep-sidecars.js +122 -0
  292. package/dist/dep-sidecars.js.map +1 -0
  293. package/dist/editor/AssetEmbeddedWidget.d.ts +3 -0
  294. package/dist/editor/AssetEmbeddedWidget.d.ts.map +1 -0
  295. package/dist/editor/AssetEmbeddedWidget.js +146 -0
  296. package/dist/editor/AssetEmbeddedWidget.js.map +1 -0
  297. package/dist/editor/mount.d.ts +12 -1
  298. package/dist/editor/mount.d.ts.map +1 -1
  299. package/dist/editor/mount.js +96 -33
  300. package/dist/editor/mount.js.map +1 -1
  301. package/dist/format.d.ts +44 -0
  302. package/dist/format.d.ts.map +1 -0
  303. package/dist/format.js +65 -0
  304. package/dist/format.js.map +1 -0
  305. package/dist/fragment-deps.d.ts +24 -0
  306. package/dist/fragment-deps.d.ts.map +1 -0
  307. package/dist/fragment-deps.js +20 -0
  308. package/dist/fragment-deps.js.map +1 -0
  309. package/dist/hash.d.ts +34 -9
  310. package/dist/hash.d.ts.map +1 -1
  311. package/dist/hash.js +60 -21
  312. package/dist/hash.js.map +1 -1
  313. package/dist/history-provider.d.ts +49 -0
  314. package/dist/history-provider.d.ts.map +1 -0
  315. package/dist/history-provider.js +248 -0
  316. package/dist/history-provider.js.map +1 -0
  317. package/dist/history-recorder.d.ts +102 -0
  318. package/dist/history-recorder.d.ts.map +1 -0
  319. package/dist/history-recorder.js +168 -0
  320. package/dist/history-recorder.js.map +1 -0
  321. package/dist/history-restorer.d.ts +46 -0
  322. package/dist/history-restorer.d.ts.map +1 -0
  323. package/dist/history-restorer.js +137 -0
  324. package/dist/history-restorer.js.map +1 -0
  325. package/dist/history.d.ts +129 -0
  326. package/dist/history.d.ts.map +1 -0
  327. package/dist/history.js +25 -0
  328. package/dist/history.js.map +1 -0
  329. package/dist/index.d.ts +27 -7
  330. package/dist/index.d.ts.map +1 -1
  331. package/dist/index.js +16 -4
  332. package/dist/index.js.map +1 -1
  333. package/dist/locale.d.ts +94 -0
  334. package/dist/locale.d.ts.map +1 -0
  335. package/dist/locale.js +188 -0
  336. package/dist/locale.js.map +1 -0
  337. package/dist/manifest.d.ts.map +1 -1
  338. package/dist/manifest.js +16 -1
  339. package/dist/manifest.js.map +1 -1
  340. package/dist/providers/_atomic-write.d.ts +9 -0
  341. package/dist/providers/_atomic-write.d.ts.map +1 -0
  342. package/dist/providers/_atomic-write.js +72 -0
  343. package/dist/providers/_atomic-write.js.map +1 -0
  344. package/dist/providers/_rm-ignore-missing.d.ts +31 -0
  345. package/dist/providers/_rm-ignore-missing.d.ts.map +1 -0
  346. package/dist/providers/_rm-ignore-missing.js +12 -0
  347. package/dist/providers/_rm-ignore-missing.js.map +1 -0
  348. package/dist/providers/_stream-interop.d.ts +23 -0
  349. package/dist/providers/_stream-interop.d.ts.map +1 -0
  350. package/dist/providers/_stream-interop.js +21 -0
  351. package/dist/providers/_stream-interop.js.map +1 -0
  352. package/dist/providers/azure-blob.d.ts.map +1 -1
  353. package/dist/providers/azure-blob.js +60 -0
  354. package/dist/providers/azure-blob.js.map +1 -1
  355. package/dist/providers/filesystem.d.ts +4 -0
  356. package/dist/providers/filesystem.d.ts.map +1 -1
  357. package/dist/providers/filesystem.js +63 -2
  358. package/dist/providers/filesystem.js.map +1 -1
  359. package/dist/providers/s3.d.ts.map +1 -1
  360. package/dist/providers/s3.js +107 -16
  361. package/dist/providers/s3.js.map +1 -1
  362. package/dist/publish-locale.d.ts +44 -0
  363. package/dist/publish-locale.d.ts.map +1 -0
  364. package/dist/publish-locale.js +103 -0
  365. package/dist/publish-locale.js.map +1 -0
  366. package/dist/publish-rendered.d.ts +52 -21
  367. package/dist/publish-rendered.d.ts.map +1 -1
  368. package/dist/publish-rendered.js +144 -87
  369. package/dist/publish-rendered.js.map +1 -1
  370. package/dist/publish.d.ts +18 -19
  371. package/dist/publish.d.ts.map +1 -1
  372. package/dist/publish.js +41 -56
  373. package/dist/publish.js.map +1 -1
  374. package/dist/renderer.d.ts +14 -4
  375. package/dist/renderer.d.ts.map +1 -1
  376. package/dist/renderer.js +35 -23
  377. package/dist/renderer.js.map +1 -1
  378. package/dist/resolver.d.ts +17 -2
  379. package/dist/resolver.d.ts.map +1 -1
  380. package/dist/resolver.js +112 -16
  381. package/dist/resolver.js.map +1 -1
  382. package/dist/robots.d.ts +22 -0
  383. package/dist/robots.d.ts.map +1 -0
  384. package/dist/robots.js +25 -0
  385. package/dist/robots.js.map +1 -0
  386. package/dist/schema/dimensions.d.ts +78 -0
  387. package/dist/schema/dimensions.d.ts.map +1 -0
  388. package/dist/schema/dimensions.js +97 -0
  389. package/dist/schema/dimensions.js.map +1 -0
  390. package/dist/schema/helpers.d.ts +108 -0
  391. package/dist/schema/helpers.d.ts.map +1 -0
  392. package/dist/schema/helpers.js +133 -0
  393. package/dist/schema/helpers.js.map +1 -0
  394. package/dist/schema/index.d.ts +27 -0
  395. package/dist/schema/index.d.ts.map +1 -0
  396. package/dist/schema/index.js +25 -0
  397. package/dist/schema/index.js.map +1 -0
  398. package/dist/schema/types.d.ts +390 -0
  399. package/dist/schema/types.d.ts.map +1 -0
  400. package/dist/schema/types.js +25 -0
  401. package/dist/schema/types.js.map +1 -0
  402. package/dist/selector-chain.d.ts +63 -0
  403. package/dist/selector-chain.d.ts.map +1 -0
  404. package/dist/selector-chain.js +58 -0
  405. package/dist/selector-chain.js.map +1 -0
  406. package/dist/seo.d.ts +56 -0
  407. package/dist/seo.d.ts.map +1 -0
  408. package/dist/seo.js +72 -0
  409. package/dist/seo.js.map +1 -0
  410. package/dist/serve.d.ts +41 -3
  411. package/dist/serve.d.ts.map +1 -1
  412. package/dist/serve.js +206 -65
  413. package/dist/serve.js.map +1 -1
  414. package/dist/sidecars.d.ts +26 -21
  415. package/dist/sidecars.d.ts.map +1 -1
  416. package/dist/sidecars.js +143 -45
  417. package/dist/sidecars.js.map +1 -1
  418. package/dist/site-loader.d.ts +74 -6
  419. package/dist/site-loader.d.ts.map +1 -1
  420. package/dist/site-loader.js +138 -28
  421. package/dist/site-loader.js.map +1 -1
  422. package/dist/sitemap.d.ts +45 -0
  423. package/dist/sitemap.d.ts.map +1 -0
  424. package/dist/sitemap.js +67 -0
  425. package/dist/sitemap.js.map +1 -0
  426. package/dist/targets.d.ts +47 -1
  427. package/dist/targets.d.ts.map +1 -1
  428. package/dist/targets.js +83 -36
  429. package/dist/targets.js.map +1 -1
  430. package/dist/template-loader.d.ts +7 -3
  431. package/dist/template-loader.d.ts.map +1 -1
  432. package/dist/template-loader.js +27 -12
  433. package/dist/template-loader.js.map +1 -1
  434. package/dist/templates-scan-worker.js +1 -1
  435. package/dist/templates-scan-worker.js.map +1 -1
  436. package/dist/templates-scan.d.ts.map +1 -1
  437. package/dist/templates-scan.js +1 -1
  438. package/dist/templates-scan.js.map +1 -1
  439. package/dist/themes.d.ts +69 -0
  440. package/dist/themes.d.ts.map +1 -0
  441. package/dist/themes.js +85 -0
  442. package/dist/themes.js.map +1 -0
  443. package/dist/transforms/adapter.d.ts +115 -0
  444. package/dist/transforms/adapter.d.ts.map +1 -0
  445. package/dist/transforms/adapter.js +2 -0
  446. package/dist/transforms/adapter.js.map +1 -0
  447. package/dist/transforms/cloudflare.d.ts +17 -0
  448. package/dist/transforms/cloudflare.d.ts.map +1 -0
  449. package/dist/transforms/cloudflare.js +110 -0
  450. package/dist/transforms/cloudflare.js.map +1 -0
  451. package/dist/transforms/index.d.ts +24 -0
  452. package/dist/transforms/index.d.ts.map +1 -0
  453. package/dist/transforms/index.js +30 -0
  454. package/dist/transforms/index.js.map +1 -0
  455. package/dist/transforms/sharp.d.ts +3 -0
  456. package/dist/transforms/sharp.d.ts.map +1 -0
  457. package/dist/transforms/sharp.js +43 -0
  458. package/dist/transforms/sharp.js.map +1 -0
  459. package/dist/types.d.ts +241 -10
  460. package/dist/types.d.ts.map +1 -1
  461. package/dist/types.js +28 -5
  462. package/dist/types.js.map +1 -1
  463. package/dist/workers/cloudflare-r2.d.ts +11 -2
  464. package/dist/workers/cloudflare-r2.d.ts.map +1 -1
  465. package/dist/workers/cloudflare-r2.js +120 -55
  466. package/dist/workers/cloudflare-r2.js.map +1 -1
  467. package/package.json +30 -2
  468. package/admin-dist/assets/index-BZAFKsUp.js +0 -608
  469. package/admin-dist/assets/index-BpRotMuK.css +0 -1
  470. package/admin-dist/assets/vendor-vue-DSjyxCX6.js +0 -1
  471. package/dist/providers/r2.d.ts +0 -8
  472. package/dist/providers/r2.d.ts.map +0 -1
  473. package/dist/providers/r2.js +0 -83
  474. package/dist/providers/r2.js.map +0 -1
  475. package/dist/source-sidecars.d.ts +0 -13
  476. package/dist/source-sidecars.d.ts.map +0 -1
  477. package/dist/source-sidecars.js +0 -52
  478. package/dist/source-sidecars.js.map +0 -1
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Responsive-variant generation for image assets.
3
+ *
4
+ * Single responsibility: given the original bytes of an image, produce
5
+ * resized variants at the v1 target widths. No storage, no manifest, no
6
+ * naming policy — callers (ingest pipeline) compose this with byte
7
+ * persistence and manifest writing.
8
+ *
9
+ * v1 target widths: 400 / 800 / 1200 / 1600. Variants wider than the
10
+ * source image are skipped (no upscaling — the browser's srcset picker
11
+ * is happy with fewer candidates, and upscaled variants would be worse
12
+ * than the original). Same format as input (JPEG → JPEG, PNG → PNG).
13
+ *
14
+ * Format conversion (WebP/AVIF emission) is a separate capability and
15
+ * lives out of scope for this module.
16
+ */
17
+ import sharp from 'sharp';
18
+ /** The v1 srcset ladder. Ordered ascending — callers rely on this. */
19
+ export const VARIANT_WIDTHS = [400, 800, 1200, 1600];
20
+ /**
21
+ * Generate responsive variants from a source image buffer. Produces one
22
+ * variant per `VARIANT_WIDTHS` entry that is ≤ the source image's width.
23
+ *
24
+ * Same output format as the input (JPEG stays JPEG, PNG stays PNG) —
25
+ * re-compression is implicit via sharp's encoder, which applies its
26
+ * quality defaults. Explicit quality/compression tuning is deferred to
27
+ * a future image-pipeline config module.
28
+ *
29
+ * Throws whatever sharp throws on unreadable input — the caller is
30
+ * responsible for treating that as a hard ingest failure (per v1
31
+ * contract: rollback + fail the upload).
32
+ */
33
+ export async function generateVariants(source) {
34
+ // Decode once, reuse for every target width — avoids re-parsing the
35
+ // source for each resize.
36
+ const base = sharp(source);
37
+ const meta = await base.metadata();
38
+ const sourceWidth = meta.width ?? 0;
39
+ const sourceFormat = meta.format;
40
+ if (!sourceFormat) {
41
+ throw new Error('Image format could not be determined for variant generation');
42
+ }
43
+ const picked = VARIANT_WIDTHS.filter(w => w <= sourceWidth);
44
+ const out = [];
45
+ for (const width of picked) {
46
+ // Re-construct per iteration; sharp pipelines are single-use once
47
+ // `.toBuffer()` has run.
48
+ const pipeline = sharp(source).resize({ width });
49
+ const bytes = await toSourceFormat(pipeline, sourceFormat).toBuffer();
50
+ out.push({ width, bytes: new Uint8Array(bytes) });
51
+ }
52
+ return out;
53
+ }
54
+ /**
55
+ * Route a sharp pipeline to the encoder matching the source format.
56
+ * sharp auto-detects on `.toBuffer()` when the input had an explicit
57
+ * format, but being explicit here keeps behavior deterministic and
58
+ * makes future per-format quality tuning a one-line change.
59
+ */
60
+ function toSourceFormat(pipeline, format) {
61
+ switch (format) {
62
+ case 'jpeg':
63
+ case 'jpg':
64
+ return pipeline.jpeg();
65
+ case 'png':
66
+ return pipeline.png();
67
+ default:
68
+ // Should not be reached in v1 (ingest allowlist is JPEG + PNG).
69
+ // If it does (future MIME expansion), the caller's rollback path
70
+ // will fire on the thrown error — safer than silently defaulting.
71
+ throw new Error(`Unsupported source format for variant generation: ${format}`);
72
+ }
73
+ }
74
+ //# sourceMappingURL=variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variants.js","sourceRoot":"","sources":["../../src/assets/variants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,sEAAsE;AACtE,MAAM,CAAC,MAAM,cAAc,GAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AASvE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAkB;IACvD,oEAAoE;IACpE,0BAA0B;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAA;IAChC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC,CAAA;IAE3D,MAAM,GAAG,GAAuB,EAAE,CAAA;IAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,kEAAkE;QAClE,yBAAyB;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAA;QACrE,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,QAAqB,EAAE,MAA8B;IAC3E,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;QACxB,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAA;QACvB;YACE,gEAAgE;YAChE,iEAAiE;YACjE,kEAAkE;YAClE,MAAM,IAAI,KAAK,CAAC,qDAAqD,MAAM,EAAE,CAAC,CAAA;IAClF,CAAC;AACH,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Output sink — anything that accepts text lines. The default
3
+ * (`consoleSink`) writes to `process.stdout` / `process.stderr`;
4
+ * tests use `recordingSink()` to capture lines for assertion.
5
+ *
6
+ * Color is part of the sink's responsibility, not the runner's —
7
+ * the runner emits semantic markers (heading, dim, error) and the
8
+ * sink decides whether to apply ANSI codes.
9
+ */
10
+ export interface OutputSink {
11
+ /** Plain output line. */
12
+ line(text: string): void;
13
+ /** Heading line (typically emphasized). */
14
+ heading(text: string): void;
15
+ /** Dim / muted text. */
16
+ dim(text: string): void;
17
+ /** Error line (goes to stderr in console sinks). */
18
+ error(text: string): void;
19
+ /** Blank line separator. */
20
+ blank(): void;
21
+ }
22
+ export interface AssetsSubcommandInput {
23
+ /** All argv after the `assets` keyword. e.g. `['list']`, `['info', 'hero']`. */
24
+ args: readonly string[];
25
+ /** Project site directory (passed by the top-level CLI dispatcher). */
26
+ siteDir: string;
27
+ /** Optional target name override (positional / auto-detected). */
28
+ targetName?: string;
29
+ /** Sink for output. Defaults to `consoleSink` when omitted. */
30
+ sink?: OutputSink;
31
+ /** Test hook: skip `process.exit` on bad input. */
32
+ exitOnError?: (code: number) => void;
33
+ }
34
+ /**
35
+ * Top-level dispatch for `gazetta assets <subcommand>`. Resolves the
36
+ * subcommand, routes to its handler, and invokes the exit hook on
37
+ * usage errors. The dispatcher itself doesn't know what each handler
38
+ * does — adding a new subcommand means appending to `SUBCOMMANDS`
39
+ * and the switch.
40
+ */
41
+ export declare function runAssetsSubcommand(input: AssetsSubcommandInput): Promise<void>;
42
+ /**
43
+ * Default sink: writes to `process.stdout` / `process.stderr` with
44
+ * ANSI codes (suppressed via `NO_COLOR` env var or non-TTY stdout).
45
+ *
46
+ * Recognises the special `\x00DIM\x00…\x00END\x00` markers emitted by
47
+ * `dimLabel` for inline dim text in lines that are otherwise plain.
48
+ * This keeps the projection layer free of color decisions.
49
+ */
50
+ export declare const consoleSink: OutputSink;
51
+ /**
52
+ * Test sink: captures lines into an array for assertion. Strips
53
+ * the inline-dim markers so tests assert on plain text.
54
+ */
55
+ export declare function recordingSink(): OutputSink & {
56
+ lines: string[];
57
+ };
58
+ //# sourceMappingURL=assets-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets-cli.d.ts","sourceRoot":"","sources":["../../src/cli/assets-cli.ts"],"names":[],"mappings":"AAsBA;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,yBAAyB;IACzB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,2CAA2C;IAC3C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,wBAAwB;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,oDAAoD;IACpD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,4BAA4B;IAC5B,KAAK,IAAI,IAAI,CAAA;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,mDAAmD;IACnD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACrC;AAKD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrF;AA2KD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,UAgCtB,CAAA;AAEJ;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAWhE"}
@@ -0,0 +1,233 @@
1
+ import { projectInfo, projectListRow, renderListTable } from './assets-display.js';
2
+ const SUBCOMMANDS = ['list', 'info', 'reindex'];
3
+ /**
4
+ * Top-level dispatch for `gazetta assets <subcommand>`. Resolves the
5
+ * subcommand, routes to its handler, and invokes the exit hook on
6
+ * usage errors. The dispatcher itself doesn't know what each handler
7
+ * does — adding a new subcommand means appending to `SUBCOMMANDS`
8
+ * and the switch.
9
+ */
10
+ export async function runAssetsSubcommand(input) {
11
+ const sink = input.sink ?? consoleSink;
12
+ const exit = input.exitOnError ?? ((code) => process.exit(code));
13
+ const subcommand = input.args[0];
14
+ if (!subcommand || !isSubcommand(subcommand)) {
15
+ printUsage(sink);
16
+ exit(1);
17
+ return;
18
+ }
19
+ switch (subcommand) {
20
+ case 'list':
21
+ await runList({ siteDir: input.siteDir, targetName: input.targetName, sink });
22
+ return;
23
+ case 'info': {
24
+ const assetName = input.args[1];
25
+ if (!assetName) {
26
+ sink.error('Usage: gazetta assets info <name> [target] [site]');
27
+ exit(1);
28
+ return;
29
+ }
30
+ await runInfo({ siteDir: input.siteDir, targetName: input.targetName, assetName, sink, exit });
31
+ return;
32
+ }
33
+ case 'reindex':
34
+ await runReindex({ siteDir: input.siteDir, targetName: input.targetName, sink });
35
+ return;
36
+ }
37
+ }
38
+ function isSubcommand(s) {
39
+ return SUBCOMMANDS.includes(s);
40
+ }
41
+ function printUsage(sink) {
42
+ sink.error('Usage: gazetta assets <list|info|reindex>');
43
+ sink.error(' list <target> — list assets on a target');
44
+ sink.error(' info <name> [target] — show detail for one asset');
45
+ sink.error(' reindex [target] — rebuild the asset-refs sidecar index');
46
+ }
47
+ async function loadSourceContext(siteDir, targetName) {
48
+ const { buildSourceContext } = await import('./bootstrap.js');
49
+ const { source } = await buildSourceContext({ projectSiteDir: siteDir, targetName });
50
+ return source;
51
+ }
52
+ async function runList(opts) {
53
+ const { sink } = opts;
54
+ sink.blank();
55
+ sink.heading('gazetta assets list');
56
+ sink.blank();
57
+ const source = await loadSourceContext(opts.siteDir, opts.targetName);
58
+ const { listAssets } = await import('../assets/list.js');
59
+ const summaries = await listAssets({ storage: source.storage, assetsRoot: 'assets' });
60
+ if (summaries.length === 0) {
61
+ sink.dim('No assets on this target.');
62
+ sink.blank();
63
+ return;
64
+ }
65
+ const rows = summaries.map(projectListRow);
66
+ const lines = renderListTable(rows);
67
+ // First line is the header — emit dim.
68
+ if (lines.length > 0) {
69
+ sink.dim(lines[0]);
70
+ for (const line of lines.slice(1))
71
+ sink.line(line);
72
+ }
73
+ sink.blank();
74
+ sink.dim(`${rows.length} asset(s).`);
75
+ sink.blank();
76
+ }
77
+ async function runInfo(opts) {
78
+ const { sink, assetName } = opts;
79
+ sink.blank();
80
+ sink.heading(`gazetta assets info ${assetName}`);
81
+ sink.blank();
82
+ const source = await loadSourceContext(opts.siteDir, opts.targetName);
83
+ const { readManifest } = await import('../assets/manifest.js');
84
+ const { enumerateOverrideSlices } = await import('../assets/asset-paths.js');
85
+ const { readRefsForAsset } = await import('../assets/asset-deps.js');
86
+ let manifest;
87
+ try {
88
+ manifest = await readManifest(source.storage, 'assets', assetName);
89
+ }
90
+ catch (err) {
91
+ if (err.code === 'ASSET_MANIFEST_NOT_FOUND') {
92
+ sink.error(`Asset not found: ${assetName}`);
93
+ opts.exit(1);
94
+ return;
95
+ }
96
+ throw err;
97
+ }
98
+ const [overrideSlices, references] = await Promise.all([
99
+ enumerateOverrideSlices(source.storage, 'assets', manifest),
100
+ readRefsForAsset(source.contentRoot, assetName),
101
+ ]);
102
+ const info = projectInfo({ manifest, overrideSlices, references });
103
+ emitInfo(info, sink);
104
+ }
105
+ async function runReindex(opts) {
106
+ const { sink } = opts;
107
+ sink.blank();
108
+ sink.heading('gazetta assets reindex');
109
+ sink.blank();
110
+ sink.dim('Note: stop any running dev server before reindexing to avoid drift.');
111
+ sink.blank();
112
+ const { buildSourceContext } = await import('./bootstrap.js');
113
+ const { source, manifest } = await buildSourceContext({
114
+ projectSiteDir: opts.siteDir,
115
+ targetName: opts.targetName,
116
+ });
117
+ const { loadSite } = await import('../site-loader.js');
118
+ const { rebuildDepIndex } = await import('../publish-rendered.js');
119
+ const { ASSET_REFS } = await import('../assets/asset-deps.js');
120
+ const { FRAGMENT_DEPS } = await import('../fragment-deps.js');
121
+ const site = await loadSite({ contentRoot: source.contentRoot, manifest });
122
+ const t0 = Date.now();
123
+ await Promise.all([
124
+ rebuildDepIndex(ASSET_REFS, site, source.contentRoot.storage, source.contentRoot.rootPath),
125
+ rebuildDepIndex(FRAGMENT_DEPS, site, source.contentRoot.storage, source.contentRoot.rootPath),
126
+ ]);
127
+ const elapsed = Date.now() - t0;
128
+ sink.line(`✓ Rebuilt dep indices for ${site.pages.size} page(s) + ${site.fragments.size} fragment(s) in ${elapsed}ms`);
129
+ }
130
+ /**
131
+ * Emit a structured InfoOutput through the sink. The sink decides
132
+ * styling (color, prefixes); this function decides ordering and
133
+ * which sections appear when empty.
134
+ */
135
+ function emitInfo(info, sink) {
136
+ // Metadata section — always emitted, fixed key-value pairs.
137
+ const labelWidth = Math.max(...info.metadata.rows.map(r => r.label.length));
138
+ for (const row of info.metadata.rows) {
139
+ sink.line(`${dimLabel(row.label, labelWidth)} ${row.value}`);
140
+ }
141
+ // Variant ladder — only when present.
142
+ if (info.variants.length > 0) {
143
+ sink.blank();
144
+ sink.heading('Variants');
145
+ for (const v of info.variants) {
146
+ sink.line(` ${v.width.padStart(5)} ${v.size.padStart(8)} ${v.path}`);
147
+ }
148
+ }
149
+ // Override slices — only when present.
150
+ if (info.overrides.length > 0) {
151
+ sink.blank();
152
+ sink.heading('Locale / theme overrides');
153
+ for (const slice of info.overrides) {
154
+ sink.line(` ${slice.selector.padEnd(20)} ${slice.bytes}`);
155
+ }
156
+ }
157
+ // References — always emitted; "none" when empty.
158
+ sink.blank();
159
+ if (info.references.length === 0) {
160
+ sink.heading(`References ${'(none)'}`);
161
+ }
162
+ else {
163
+ sink.heading(`References (${info.references.length})`);
164
+ for (const ref of info.references) {
165
+ sink.line(` ${ref.path}`);
166
+ }
167
+ }
168
+ sink.blank();
169
+ }
170
+ /** Pad a label to fixed width with a dim hint marker for the sink. */
171
+ function dimLabel(label, width) {
172
+ return `\x00DIM\x00${label.padEnd(width)}\x00END\x00`;
173
+ }
174
+ // ---------- sinks ----------
175
+ /**
176
+ * Default sink: writes to `process.stdout` / `process.stderr` with
177
+ * ANSI codes (suppressed via `NO_COLOR` env var or non-TTY stdout).
178
+ *
179
+ * Recognises the special `\x00DIM\x00…\x00END\x00` markers emitted by
180
+ * `dimLabel` for inline dim text in lines that are otherwise plain.
181
+ * This keeps the projection layer free of color decisions.
182
+ */
183
+ export const consoleSink = (() => {
184
+ const noColor = !!process.env.NO_COLOR || !process.stdout.isTTY;
185
+ const dim = (s) => (noColor ? s : `\x1b[2m${s}\x1b[22m`);
186
+ const bold = (s) => (noColor ? s : `\x1b[1m${s}\x1b[22m`);
187
+ const green = (s) => (noColor ? s : `\x1b[32m${s}\x1b[39m`);
188
+ const bgGreen = (s) => (noColor ? s : `\x1b[42m\x1b[30m${s}\x1b[39m\x1b[49m`);
189
+ const red = (s) => (noColor ? s : `\x1b[31m${s}\x1b[39m`);
190
+ const inlineDim = (s) => s.replace(/\x00DIM\x00([\s\S]*?)\x00END\x00/g, (_m, inner) => dim(inner));
191
+ return {
192
+ line(text) {
193
+ console.log(` ${inlineDim(text)}`);
194
+ },
195
+ heading(text) {
196
+ // Mirror the existing `gazetta assets reindex` heading style.
197
+ const [name, ...rest] = text.split(' ');
198
+ if (name === 'gazetta') {
199
+ const subcmd = rest.join(' ');
200
+ console.log(` ${bgGreen(bold(' gazetta '))} ${green(subcmd)}`);
201
+ }
202
+ else {
203
+ console.log(` ${bold(text)}`);
204
+ }
205
+ },
206
+ dim(text) {
207
+ console.log(` ${dim(text)}`);
208
+ },
209
+ error(text) {
210
+ console.error(` ${red('✗')} ${text}`);
211
+ },
212
+ blank() {
213
+ console.log();
214
+ },
215
+ };
216
+ })();
217
+ /**
218
+ * Test sink: captures lines into an array for assertion. Strips
219
+ * the inline-dim markers so tests assert on plain text.
220
+ */
221
+ export function recordingSink() {
222
+ const lines = [];
223
+ const strip = (s) => s.replace(/\x00DIM\x00([\s\S]*?)\x00END\x00/g, '$1');
224
+ return {
225
+ lines,
226
+ line: text => lines.push(`line: ${strip(text)}`),
227
+ heading: text => lines.push(`heading: ${text}`),
228
+ dim: text => lines.push(`dim: ${strip(text)}`),
229
+ error: text => lines.push(`error: ${strip(text)}`),
230
+ blank: () => lines.push(''),
231
+ };
232
+ }
233
+ //# sourceMappingURL=assets-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets-cli.js","sourceRoot":"","sources":["../../src/cli/assets-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Pure display projections + formatters for `gazetta assets list`
3
+ * and `gazetta assets info`.
4
+ *
5
+ * Why a separate module: the runner (`assets-cli.ts`) does I/O and
6
+ * writes to a sink. The projection logic — "given an asset, what
7
+ * does its row look like in the table" — is testable on its own
8
+ * with no I/O, no `console`, no fixtures beyond a manifest object.
9
+ *
10
+ * SOLID lenses:
11
+ * - SRP: this module owns "asset → display string". Nothing else.
12
+ * - OCP: adding a new column to the list table = new key in
13
+ * `LIST_COLUMNS`, new entry in `projectListRow`. Extending here,
14
+ * not editing the runner.
15
+ * - DIP: pure functions, no transport coupling. The runner adapts
16
+ * this module's output to whatever sink it wants.
17
+ */
18
+ import type { AssetManifest, AssetSummary } from '../schema/types.js';
19
+ /**
20
+ * One row in the `gazetta assets list` table. Stable shape so
21
+ * downstream consumers (output sink, future JSON renderer) can rely
22
+ * on it.
23
+ */
24
+ export interface ListRow {
25
+ name: string;
26
+ kind: string;
27
+ size: string;
28
+ dims: string;
29
+ alt: string;
30
+ locales: string;
31
+ uploaded: string;
32
+ }
33
+ /**
34
+ * The columns rendered in `gazetta assets list`, in display order.
35
+ * Header label + value selector + alignment. Adding a column =
36
+ * append one entry; nothing else needs to change in the renderer.
37
+ */
38
+ export declare const LIST_COLUMNS: readonly {
39
+ key: keyof ListRow;
40
+ header: string;
41
+ align: 'start' | 'end';
42
+ }[];
43
+ /**
44
+ * Project an `AssetSummary` (returned by `listAssets`) into a
45
+ * display row. Pure — no I/O. The summary already includes
46
+ * `overrideLocales` (populated server-side from the directory
47
+ * scan), so this is a pure mapping.
48
+ */
49
+ export declare function projectListRow(summary: AssetSummary): ListRow;
50
+ /**
51
+ * Render rows as a column-aligned table. Returns lines (no
52
+ * embedded newlines) — the caller emits them via its sink. Header
53
+ * line is included as the first entry.
54
+ *
55
+ * `start` columns left-pad; `end` columns right-pad — matches
56
+ * conventional table alignment (text left, numbers right).
57
+ */
58
+ export declare function renderListTable(rows: readonly ListRow[]): string[];
59
+ /**
60
+ * Sections of the `gazetta assets info <name>` output. Each section
61
+ * is "title" + ordered key-value pairs; the runner formats each
62
+ * section uniformly. Decoupling this from the renderer means a future
63
+ * `--format json` consumes the same data structure.
64
+ */
65
+ export interface InfoSection {
66
+ title: string;
67
+ rows: readonly {
68
+ label: string;
69
+ value: string;
70
+ }[];
71
+ }
72
+ export interface InfoVariantRow {
73
+ width: string;
74
+ size: string;
75
+ path: string;
76
+ }
77
+ export interface InfoOverrideRow {
78
+ selector: string;
79
+ bytes: 'bytes' | 'metadata only';
80
+ }
81
+ export interface InfoReferenceRow {
82
+ /** `pages/home`, `fragments/header:fr`, etc. */
83
+ path: string;
84
+ }
85
+ export interface InfoOutput {
86
+ /** Top-level metadata (kind, mime, hash, size, dims, alt, focal, uploaded). */
87
+ metadata: InfoSection;
88
+ /** Variant ladder, when an image with variants. */
89
+ variants: InfoVariantRow[];
90
+ /** Locale/theme overrides (from `enumerateOverrideSlices`). */
91
+ overrides: InfoOverrideRow[];
92
+ /** Pages/fragments that reference this asset. */
93
+ references: InfoReferenceRow[];
94
+ }
95
+ /**
96
+ * Project a default manifest + override slices + ref list into the
97
+ * structured `InfoOutput`. Pure — caller does the I/O to gather
98
+ * inputs.
99
+ */
100
+ export declare function projectInfo(input: {
101
+ manifest: AssetManifest;
102
+ overrideSlices: readonly {
103
+ selector: ReadonlyMap<string, string>;
104
+ bytes: string | null;
105
+ }[];
106
+ references: readonly {
107
+ source: 'page' | 'fragment';
108
+ name: string;
109
+ locale?: string;
110
+ }[];
111
+ }): InfoOutput;
112
+ //# sourceMappingURL=assets-display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets-display.d.ts","sourceRoot":"","sources":["../../src/cli/assets-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGrE;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS;IAAE,GAAG,EAAE,MAAM,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAA;CAAE,EAQjG,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAU7D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,EAAE,CAclE;AAMD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAClD;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,GAAG,eAAe,CAAA;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,UAAU;IACzB,+EAA+E;IAC/E,QAAQ,EAAE,WAAW,CAAA;IACrB,mDAAmD;IACnD,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,+DAA+D;IAC/D,SAAS,EAAE,eAAe,EAAE,CAAA;IAC5B,iDAAiD;IACjD,UAAU,EAAE,gBAAgB,EAAE,CAAA;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,QAAQ,EAAE,aAAa,CAAA;IACvB,cAAc,EAAE,SAAS;QAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAA;IAC1F,UAAU,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACtF,GAAG,UAAU,CAoCb"}
@@ -0,0 +1,106 @@
1
+ import { formatAltStatus, formatBytes, formatFocalPoint, shortDate } from '../format.js';
2
+ /**
3
+ * The columns rendered in `gazetta assets list`, in display order.
4
+ * Header label + value selector + alignment. Adding a column =
5
+ * append one entry; nothing else needs to change in the renderer.
6
+ */
7
+ export const LIST_COLUMNS = [
8
+ { key: 'name', header: 'NAME', align: 'start' },
9
+ { key: 'kind', header: 'KIND', align: 'start' },
10
+ { key: 'size', header: 'SIZE', align: 'end' },
11
+ { key: 'dims', header: 'DIMENSIONS', align: 'end' },
12
+ { key: 'alt', header: 'ALT', align: 'start' },
13
+ { key: 'locales', header: 'LOCALES', align: 'start' },
14
+ { key: 'uploaded', header: 'UPLOADED', align: 'start' },
15
+ ];
16
+ /**
17
+ * Project an `AssetSummary` (returned by `listAssets`) into a
18
+ * display row. Pure — no I/O. The summary already includes
19
+ * `overrideLocales` (populated server-side from the directory
20
+ * scan), so this is a pure mapping.
21
+ */
22
+ export function projectListRow(summary) {
23
+ return {
24
+ name: summary.name,
25
+ kind: summary.kind,
26
+ size: formatBytes(summary.size),
27
+ dims: summary.width !== null && summary.height !== null ? `${summary.width}×${summary.height}` : '—',
28
+ alt: formatAltStatus(summary.alt, 30),
29
+ locales: summary.overrideLocales.length > 0 ? summary.overrideLocales.join(',') : '—',
30
+ uploaded: shortDate(summary.uploadedAt),
31
+ };
32
+ }
33
+ /**
34
+ * Render rows as a column-aligned table. Returns lines (no
35
+ * embedded newlines) — the caller emits them via its sink. Header
36
+ * line is included as the first entry.
37
+ *
38
+ * `start` columns left-pad; `end` columns right-pad — matches
39
+ * conventional table alignment (text left, numbers right).
40
+ */
41
+ export function renderListTable(rows) {
42
+ if (rows.length === 0)
43
+ return [];
44
+ const widths = {};
45
+ for (const col of LIST_COLUMNS) {
46
+ widths[col.key] = Math.max(col.header.length, ...rows.map(r => r[col.key].length));
47
+ }
48
+ const lines = [];
49
+ lines.push(LIST_COLUMNS.map(col => formatCell(col.header, widths[col.key], col.align)).join(' '));
50
+ for (const row of rows) {
51
+ lines.push(LIST_COLUMNS.map(col => formatCell(row[col.key], widths[col.key], col.align)).join(' '));
52
+ }
53
+ return lines;
54
+ }
55
+ function formatCell(value, width, align) {
56
+ return align === 'start' ? value.padEnd(width) : value.padStart(width);
57
+ }
58
+ /**
59
+ * Project a default manifest + override slices + ref list into the
60
+ * structured `InfoOutput`. Pure — caller does the I/O to gather
61
+ * inputs.
62
+ */
63
+ export function projectInfo(input) {
64
+ const { manifest, overrideSlices, references } = input;
65
+ const metadataRows = [
66
+ { label: 'Kind', value: manifest.kind },
67
+ { label: 'Type', value: manifest.mime },
68
+ { label: 'Hash', value: manifest.hash },
69
+ { label: 'Size', value: formatBytes(manifest.size) },
70
+ ];
71
+ if (manifest.width !== null && manifest.height !== null) {
72
+ metadataRows.push({ label: 'Dimensions', value: `${manifest.width} × ${manifest.height}` });
73
+ }
74
+ metadataRows.push({ label: 'Alt', value: formatAltStatus(manifest.alt) });
75
+ if (manifest.focalPoint !== undefined) {
76
+ metadataRows.push({ label: 'Focal', value: formatFocalPoint(manifest.focalPoint) });
77
+ }
78
+ metadataRows.push({
79
+ label: 'Uploaded',
80
+ value: manifest.uploadedAt + (manifest.uploadedBy ? ` by ${manifest.uploadedBy}` : ''),
81
+ });
82
+ return {
83
+ metadata: { title: 'metadata', rows: metadataRows },
84
+ variants: manifest.variants.map(v => ({
85
+ width: `${v.width}w`,
86
+ size: formatBytes(v.size),
87
+ path: v.path,
88
+ })),
89
+ overrides: overrideSlices.map(slice => ({
90
+ selector: selectorToString(slice.selector),
91
+ bytes: slice.bytes !== null ? 'bytes' : 'metadata only',
92
+ })),
93
+ references: references.map(ref => ({
94
+ path: `${ref.source === 'page' ? 'pages' : 'fragments'}/${ref.name}${ref.locale ? `:${ref.locale}` : ''}`,
95
+ })),
96
+ };
97
+ }
98
+ /** Render a Selector map as `locale=fr theme=dark` for display. */
99
+ function selectorToString(selector) {
100
+ const parts = [];
101
+ for (const [dim, value] of selector) {
102
+ parts.push(`${dim}=${value}`);
103
+ }
104
+ return parts.join(' ');
105
+ }
106
+ //# sourceMappingURL=assets-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets-display.js","sourceRoot":"","sources":["../../src/cli/assets-display.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAiBxF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAA8E;IACrG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/C,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/C,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;IAC7C,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;IACnD,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;IAC7C,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;IACrD,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE;CACxD,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAqB;IAClD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/B,IAAI,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG;QACpG,GAAG,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACrC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;QACrF,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;KACxC,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,IAAwB;IACtD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEhC,MAAM,MAAM,GAA2B,EAAE,CAAA;IACzC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACnG,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACvG,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,KAAa,EAAE,KAAsB;IACtE,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACxE,CAAC;AAwCD;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAI3B;IACC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAEtD,MAAM,YAAY,GAAuC;QACvD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE;QACvC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE;QACvC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE;QACvC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;KACrD,CAAA;IACD,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACxD,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC7F,CAAC;IACD,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACzE,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACtC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACrF,CAAC;IACD,YAAY,CAAC,IAAI,CAAC;QAChB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,QAAQ,CAAC,UAAU,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvF,CAAC,CAAA;IAEF,OAAO;QACL,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;QACnD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG;YACpB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;YACzB,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC,CAAC;QACH,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC1C,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SACxD,CAAC,CAAC;QACH,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;SAC1G,CAAC,CAAC;KACJ,CAAA;AACH,CAAC;AAED,mEAAmE;AACnE,SAAS,gBAAgB,CAAC,QAAqC;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC"}