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 @@
1
+ {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG5D,0CAA0C;AAC1C,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAA;CAChB;AAQD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMnD;AAED,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,GAAG,IAAI,CA8B3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,IAAI,CAGrH"}
package/dist/themes.js ADDED
@@ -0,0 +1,85 @@
1
+ import { isValidLocale } from './locale.js';
2
+ /**
3
+ * Theme name pattern: lowercase ASCII letters, digits, hyphens, underscores.
4
+ * No dots (collide with filename composition), no whitespace, non-empty.
5
+ */
6
+ const THEME_PATTERN = /^[a-z][a-z0-9_-]*$/;
7
+ /**
8
+ * Validate a theme name as it would appear in storage / filenames.
9
+ *
10
+ * Strict on input — does NOT normalize. Mixed case, leading dots, etc.
11
+ * fail. Callers that want lenient parsing should `normalizeTheme` first
12
+ * and then check.
13
+ *
14
+ * Rejects:
15
+ * - empty / whitespace
16
+ * - dots (would collide with filename suffix scheme)
17
+ * - any uppercase character (filenames must be normalized to lowercase
18
+ * before reaching storage; uppercase reaching this validator is a bug)
19
+ * - BCP 47 locale codes (would be ambiguous in filename composition —
20
+ * `hero.asset.en.json` could be locale `en` or theme `en`)
21
+ */
22
+ export function isValidTheme(theme) {
23
+ if (!THEME_PATTERN.test(theme))
24
+ return false;
25
+ // Theme names must not collide with valid BCP 47 locale codes.
26
+ // `en`, `fr`, `pt-br`, etc. are reserved for the locale dimension.
27
+ if (isValidLocale(theme))
28
+ return false;
29
+ return true;
30
+ }
31
+ /** Normalize a theme name to lowercase for filenames. */
32
+ export function normalizeTheme(theme) {
33
+ return theme.toLowerCase();
34
+ }
35
+ /**
36
+ * Resolve theme settings from a site manifest. Throws when the config is
37
+ * present but invalid (collision with locale codes, malformed names) so
38
+ * misconfiguration surfaces at boot rather than silently at render time.
39
+ *
40
+ * Returns `null` when `themes` is unset — that's the "no theme dimension
41
+ * for this site" signal. Asset overrides keyed by theme are rejected
42
+ * downstream when this is null.
43
+ */
44
+ export function resolveSiteThemes(site) {
45
+ const config = site.themes;
46
+ if (!config)
47
+ return null;
48
+ if (!Array.isArray(config.supported) || config.supported.length === 0) {
49
+ throw new Error('themes.supported must be a non-empty array of theme names');
50
+ }
51
+ const supported = [];
52
+ for (const raw of config.supported) {
53
+ const norm = normalizeTheme(raw);
54
+ if (!isValidTheme(norm)) {
55
+ throw new Error(`Invalid theme name "${raw}". Must be lowercase ASCII (a-z, 0-9, -, _), ` +
56
+ `start with a letter, and not collide with BCP 47 locale codes.`);
57
+ }
58
+ if (supported.includes(norm)) {
59
+ throw new Error(`Duplicate theme name "${norm}" in themes.supported`);
60
+ }
61
+ supported.push(norm);
62
+ }
63
+ const defaultRaw = config.default ?? supported[0];
64
+ const defaultTheme = normalizeTheme(defaultRaw);
65
+ if (!supported.includes(defaultTheme)) {
66
+ throw new Error(`themes.default "${config.default}" is not in themes.supported [${supported.join(', ')}]`);
67
+ }
68
+ return { supported, default: defaultTheme };
69
+ }
70
+ /**
71
+ * Subset themes to a config — used when a target overrides the site's theme
72
+ * set. Falls back to the site's resolved themes when the target doesn't
73
+ * narrow.
74
+ *
75
+ * v1 doesn't expose target-level theme override (assets are global to the
76
+ * site's theme set). The function is here for symmetry with locale
77
+ * resolution and future-proofs the API when targets may want to ship a
78
+ * subset (e.g. a target that only serves light mode).
79
+ */
80
+ export function resolveTargetThemes(siteThemes, override) {
81
+ if (override)
82
+ return resolveSiteThemes({ name: '', themes: override });
83
+ return siteThemes;
84
+ }
85
+ //# sourceMappingURL=themes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.js","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAU3C;;;GAGG;AACH,MAAM,aAAa,GAAG,oBAAoB,CAAA;AAE1C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5C,+DAA+D;IAC/D,mEAAmE;IACnE,IAAI,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACtC,OAAO,IAAI,CAAA;AACb,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAkB;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;IAC9E,CAAC;IAED,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,uBAAuB,GAAG,+CAA+C;gBACvE,gEAAgE,CACnE,CAAA;QACH,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,uBAAuB,CAAC,CAAA;QACvE,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAE,CAAA;IAClD,MAAM,YAAY,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;IAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,OAAO,iCAAiC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5G,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAA;AAC7C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAiC,EAAE,QAAuB;IAC5F,IAAI,QAAQ;QAAE,OAAO,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAkB,CAAC,CAAA;IACtF,OAAO,UAAU,CAAA;AACnB,CAAC"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * TransformAdapter — delivery strategy for asset bytes.
3
+ *
4
+ * Per Q8 lock, an adapter owns three coupled concerns:
5
+ * 1. URL composition for the primary asset URL and srcset (where
6
+ * different from the origin's pre-generated ladder)
7
+ * 2. Cache policy for the URLs it produces (since cache semantics
8
+ * depend on whether bytes are origin-served vs CDN-served)
9
+ * 3. Optional server-side route mounting for adapters that mediate
10
+ * delivery (e.g. proxy adapters that route through our origin)
11
+ *
12
+ * # Why all three on one interface
13
+ *
14
+ * URL + cache + delivery are coupled. The hardcoded
15
+ * `Cache-Control: immutable` in the serve-route was correct for the
16
+ * sharp adapter but wrong for any adapter that signs URLs with a
17
+ * short-TTL HMAC (future imgproxy) or routes through a CDN with its
18
+ * own cache (cloudflare). Co-locating the policy with the URL builder
19
+ * keeps the contract honest.
20
+ *
21
+ * # Why mountRoutes is optional
22
+ *
23
+ * Origin-passthrough (sharp) and CDN adapters (cloudflare) don't need
24
+ * server-side routes — the existing `assets/serve-route.ts` handles
25
+ * origin bytes; the CDN handles its own. Future proxy adapters
26
+ * (imgproxy, signed-URL workers) would implement `mountRoutes` to
27
+ * add their own handlers.
28
+ *
29
+ * # Why required (not optional) in the resolver context
30
+ *
31
+ * Adapter is always present. Resolver code paths don't branch on
32
+ * "does an adapter exist" — the factory at boot constructs one
33
+ * (defaulting to `sharpAdapter`), and every URL goes through it.
34
+ * Eliminates the conditional URL construction throughout the resolver.
35
+ */
36
+ import type { Hono } from 'hono';
37
+ import type { Selector } from '../schema/dimensions.js';
38
+ import type { AssetVariant } from '../schema/types.js';
39
+ /**
40
+ * Input for adapter URL builders. Carries everything an adapter could
41
+ * possibly need; concrete adapters pick what they use. The sharp
42
+ * adapter reads `variants` for srcset; the cloudflare adapter reads
43
+ * `width`/`height` to skip upscaling but ignores `variants`.
44
+ */
45
+ export interface AssetUrlInput {
46
+ /** Asset name (the canonical identifier). */
47
+ name: string;
48
+ /** 8-char SHA-256 prefix of the bytes. For locale-bytes overrides this is the override's hash. */
49
+ hash: string;
50
+ /** File extension without the dot (e.g., 'jpg'). */
51
+ ext: string;
52
+ /** Selector identifying which override these bytes are (null = default). */
53
+ selector: Selector | null;
54
+ /** Optional site URL — absolute prefix for cross-origin delivery. */
55
+ siteUrl?: string;
56
+ /** Pre-generated variants from the manifest. Adapters that ignore this (cloudflare) don't read it. */
57
+ variants: readonly AssetVariant[];
58
+ /** Source width in pixels. Null for non-images. */
59
+ width: number | null;
60
+ /** Source height in pixels. Null for non-images. */
61
+ height: number | null;
62
+ }
63
+ /**
64
+ * Cache headers an adapter dictates for the URLs it produced. The
65
+ * asset-serve route applies these when serving origin bytes; CDN
66
+ * adapters return the same policy for documentation (the CDN owns
67
+ * actual caching, but the origin response still carries headers
68
+ * because the CDN re-emits or honors them depending on config).
69
+ */
70
+ export interface CachePolicy {
71
+ /** `Cache-Control` header value. */
72
+ cacheControl: string;
73
+ /** Optional `Vary` header (theme/locale-aware delivery, format negotiation). */
74
+ vary?: string;
75
+ }
76
+ /**
77
+ * Delivery strategy for asset bytes. Per-target — wired into the
78
+ * resolver context at boot via the `transforms` factory.
79
+ */
80
+ export interface TransformAdapter {
81
+ /** Stable identifier — used in telemetry, logs, and adapter selection. */
82
+ readonly name: string;
83
+ /**
84
+ * Build the primary URL for an asset's bytes-of-record. This is the
85
+ * URL that goes into `<img src>`, `<a href>`, or `@font-face src`.
86
+ */
87
+ primaryUrl(input: AssetUrlInput): string;
88
+ /**
89
+ * Build a `srcset` string for responsive image delivery, OR return
90
+ * null when responsive delivery isn't supported (non-image assets,
91
+ * or images with no variant ladder).
92
+ *
93
+ * Adapter decides ladder semantics:
94
+ * - sharp adapter reads `input.variants` (pre-generated at upload)
95
+ * - cloudflare adapter generates ladder from a width set the
96
+ * adapter chooses (typically 400/800/1200/1600)
97
+ */
98
+ srcset(input: AssetUrlInput): string | null;
99
+ /**
100
+ * Cache policy for a URL this adapter produced. Returned headers
101
+ * are applied by whichever serving layer handles the URL — origin
102
+ * route for origin-served adapters, propagated to CDN config for
103
+ * upstream adapters.
104
+ */
105
+ cachePolicy(input: AssetUrlInput): CachePolicy;
106
+ /**
107
+ * Mount adapter-specific server-side routes. Called once per app
108
+ * construction by the bootstrap. Origin-passthrough adapters
109
+ * (sharp) and pure CDN adapters (cloudflare) leave this undefined;
110
+ * mediating adapters (future imgproxy, signed URL workers)
111
+ * implement it.
112
+ */
113
+ mountRoutes?(app: Hono): void;
114
+ }
115
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/transforms/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,kGAAkG;IAClG,IAAI,EAAE,MAAM,CAAA;IACZ,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAA;IACX,4EAA4E;IAC5E,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sGAAsG;IACtG,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAA;IACjC,mDAAmD;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,oDAAoD;IACpD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAA;IAExC;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAAA;IAE3C;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAAA;IAE9C;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAA;CAC9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/transforms/adapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import type { TransformAdapter } from './adapter.js';
2
+ export interface CloudflareAdapterOptions {
3
+ /**
4
+ * The zone (hostname) where `/cdn-cgi/image/` is served. Typically
5
+ * the same hostname as `siteUrl`. Required — without it we can't
6
+ * compose a CDN URL.
7
+ */
8
+ zone: string;
9
+ }
10
+ /**
11
+ * Build a Cloudflare-Images-flavored TransformAdapter for the given zone.
12
+ * Factory function (not a singleton) because the zone is per-target —
13
+ * sites with multiple Cloudflare zones get one adapter instance per
14
+ * configured target.
15
+ */
16
+ export declare function createCloudflareAdapter(opts: CloudflareAdapterOptions): TransformAdapter;
17
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/transforms/cloudflare.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAA8B,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAYhF,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,wBAAwB,GAAG,gBAAgB,CAgCxF"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Cloudflare Images transform adapter.
3
+ *
4
+ * Routes URLs through Cloudflare's `/cdn-cgi/image/` endpoint at the
5
+ * configured zone. Cloudflare fetches the origin URL (the asset bytes
6
+ * served from the target's storage), applies the requested transforms
7
+ * (resize, format conversion, quality), and returns the transformed
8
+ * bytes to the browser.
9
+ *
10
+ * URL shape:
11
+ * https://{zone}/cdn-cgi/image/{params}/{originUrl}
12
+ *
13
+ * Where params is a comma-separated list (e.g. `format=auto,width=800`).
14
+ * For the primary URL we use `format=auto` only — Cloudflare picks the
15
+ * best supported format (AVIF, WebP, JPEG) per the browser's Accept
16
+ * header. For srcset entries we add `width={W}` per ladder rung.
17
+ *
18
+ * # Why a fixed ladder
19
+ *
20
+ * Sharp generates 400/800/1200/1600 widths at upload. Cloudflare can
21
+ * generate any width on the fly, but srcset still needs a concrete
22
+ * ladder for the browser to pick from. We use the same widths as the
23
+ * sharp adapter — consistent visual delivery between targets that
24
+ * happen to use different adapters.
25
+ *
26
+ * # Why `Vary: Accept`
27
+ *
28
+ * `format=auto` returns AVIF or WebP per browser support. Caches MUST
29
+ * vary on `Accept` to avoid serving an AVIF response to a WebP-only
30
+ * browser. The cache policy carries that header.
31
+ *
32
+ * # What this adapter ignores
33
+ *
34
+ * `input.variants` — Cloudflare generates widths on demand; the
35
+ * pre-generated ladder is irrelevant. Sites that use Cloudflare can
36
+ * still upload variants (they cost nothing on egress, just a tiny bit
37
+ * of storage), but the URLs the browser receives won't reference them.
38
+ */
39
+ import { buildAssetUrl } from '../assets/url.js';
40
+ /** Widths the srcset ladder generates. Same as sharp's `VARIANT_WIDTHS`. */
41
+ const LADDER_WIDTHS = [400, 800, 1200, 1600];
42
+ const CDN_CACHE_POLICY = {
43
+ cacheControl: 'public, max-age=31536000, immutable',
44
+ // Cloudflare's `format=auto` returns different bytes per Accept header;
45
+ // caches must vary or they'll serve AVIF to WebP-only clients.
46
+ vary: 'Accept',
47
+ };
48
+ /**
49
+ * Build a Cloudflare-Images-flavored TransformAdapter for the given zone.
50
+ * Factory function (not a singleton) because the zone is per-target —
51
+ * sites with multiple Cloudflare zones get one adapter instance per
52
+ * configured target.
53
+ */
54
+ export function createCloudflareAdapter(opts) {
55
+ if (!opts.zone || typeof opts.zone !== 'string') {
56
+ throw new Error('cloudflareAdapter requires a `zone` (e.g. "cdn.example.com")');
57
+ }
58
+ const zone = opts.zone.replace(/^https?:\/\//, '').replace(/\/+$/, '');
59
+ return {
60
+ name: 'cloudflare',
61
+ primaryUrl(input) {
62
+ const origin = absoluteOriginUrl(input);
63
+ // Primary URL uses format=auto only — no width; the browser gets
64
+ // the source-resolution version (within Cloudflare's max).
65
+ return `https://${zone}/cdn-cgi/image/format=auto/${origin}`;
66
+ },
67
+ srcset(input) {
68
+ // No srcset for non-images — same skip rule as sharp adapter.
69
+ // We detect by extension; future kinds can refine this.
70
+ if (!isImageExt(input.ext))
71
+ return null;
72
+ // Skip widths larger than the source image (no point upscaling).
73
+ const sourceWidth = input.width ?? Infinity;
74
+ const widths = LADDER_WIDTHS.filter(w => w <= sourceWidth);
75
+ if (widths.length === 0)
76
+ return null;
77
+ const origin = absoluteOriginUrl(input);
78
+ return widths.map(w => `https://${zone}/cdn-cgi/image/format=auto,width=${w}/${origin} ${w}w`).join(', ');
79
+ },
80
+ cachePolicy(_input) {
81
+ return CDN_CACHE_POLICY;
82
+ },
83
+ };
84
+ }
85
+ /**
86
+ * Compose the absolute origin URL for the asset bytes — the URL
87
+ * Cloudflare fetches from. Always absolute because Cloudflare's
88
+ * `/cdn-cgi/image/` endpoint requires it. When `siteUrl` isn't set
89
+ * the adapter can't function — origin URLs need to be reachable
90
+ * from Cloudflare's edge.
91
+ */
92
+ function absoluteOriginUrl(input) {
93
+ if (!input.siteUrl) {
94
+ throw new Error(`cloudflareAdapter requires siteUrl on the resolve context — Cloudflare needs an absolute origin URL to fetch.`);
95
+ }
96
+ // Use buildAssetUrl for path composition (handles selector suffix);
97
+ // it returns the full URL when siteUrl is set.
98
+ return buildAssetUrl({
99
+ name: input.name,
100
+ hash: input.hash,
101
+ ext: input.ext,
102
+ siteUrl: input.siteUrl,
103
+ selector: input.selector,
104
+ });
105
+ }
106
+ /** Whether the extension is one Cloudflare can transform. */
107
+ function isImageExt(ext) {
108
+ return ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'webp' || ext === 'avif' || ext === 'gif';
109
+ }
110
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/transforms/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGhD,4EAA4E;AAC5E,MAAM,aAAa,GAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE/D,MAAM,gBAAgB,GAAgB;IACpC,YAAY,EAAE,qCAAqC;IACnD,wEAAwE;IACxE,+DAA+D;IAC/D,IAAI,EAAE,QAAQ;CACf,CAAA;AAWD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAA8B;IACpE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAEtE,OAAO;QACL,IAAI,EAAE,YAAY;QAElB,UAAU,CAAC,KAAoB;YAC7B,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;YACvC,iEAAiE;YACjE,2DAA2D;YAC3D,OAAO,WAAW,IAAI,8BAA8B,MAAM,EAAE,CAAA;QAC9D,CAAC;QAED,MAAM,CAAC,KAAoB;YACzB,8DAA8D;YAC9D,wDAAwD;YACxD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAA;YACvC,iEAAiE;YACjE,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAA;YAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC,CAAA;YAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;YACvC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,IAAI,oCAAoC,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3G,CAAC;QAED,WAAW,CAAC,MAAqB;YAC/B,OAAO,gBAAgB,CAAA;QACzB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,KAAoB;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,+GAA+G,CAChH,CAAA;IACH,CAAC;IACD,oEAAoE;IACpE,+CAA+C;IAC/C,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAA;AACJ,CAAC;AAED,6DAA6D;AAC7D,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,CAAA;AAC9G,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Transform-adapter factory.
3
+ *
4
+ * One switch over `target.transforms?.adapter`, the only place that
5
+ * knows adapter names. Adding a new adapter is one new module + one
6
+ * case here — no edits to resolver, walker, kind resolvers, or
7
+ * serve-route.
8
+ *
9
+ * Default (no `transforms` config) = `sharpAdapter`. This matches the
10
+ * pre-step-18 hardcoded behavior — sites that don't opt into a CDN
11
+ * adapter get the same URLs and cache headers they had before.
12
+ */
13
+ import type { TargetConfig } from '../types.js';
14
+ import type { TransformAdapter } from './adapter.js';
15
+ /**
16
+ * Construct a `TransformAdapter` from a target's config. Throws on
17
+ * unknown adapter names so misconfiguration surfaces at boot, not
18
+ * silently at render time.
19
+ */
20
+ export declare function buildTransformAdapter(target: TargetConfig): TransformAdapter;
21
+ export type { AssetUrlInput, CachePolicy, TransformAdapter } from './adapter.js';
22
+ export { sharpAdapter } from './sharp.js';
23
+ export { createCloudflareAdapter, type CloudflareAdapterOptions } from './cloudflare.js';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transforms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAIpD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAkB5E;AAGD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,KAAK,wBAAwB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { sharpAdapter } from './sharp.js';
2
+ import { createCloudflareAdapter } from './cloudflare.js';
3
+ /**
4
+ * Construct a `TransformAdapter` from a target's config. Throws on
5
+ * unknown adapter names so misconfiguration surfaces at boot, not
6
+ * silently at render time.
7
+ */
8
+ export function buildTransformAdapter(target) {
9
+ const config = target.transforms;
10
+ if (!config || config.adapter === 'sharp')
11
+ return sharpAdapter;
12
+ switch (config.adapter) {
13
+ case 'cloudflare': {
14
+ if (!config.zone) {
15
+ throw new Error('transforms.adapter "cloudflare" requires a `zone` field (e.g. "cdn.example.com")');
16
+ }
17
+ return createCloudflareAdapter({ zone: config.zone });
18
+ }
19
+ default: {
20
+ // Exhaustive check — TypeScript ensures we don't miss a known adapter.
21
+ // Runtime fallthrough is for when site.yaml carries an adapter name
22
+ // this build doesn't know.
23
+ const unknown = config.adapter;
24
+ throw new Error(`Unknown transforms.adapter "${unknown}". Supported: sharp, cloudflare.`);
25
+ }
26
+ }
27
+ }
28
+ export { sharpAdapter } from './sharp.js';
29
+ export { createCloudflareAdapter } from './cloudflare.js';
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transforms/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEzD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAA;IAChC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO;QAAE,OAAO,YAAY,CAAA;IAC9D,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;YACrG,CAAC;YACD,OAAO,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACvD,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,uEAAuE;YACvE,oEAAoE;YACpE,2BAA2B;YAC3B,MAAM,OAAO,GAAI,MAA8B,CAAC,OAAO,CAAA;YACvD,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,kCAAkC,CAAC,CAAA;QAC3F,CAAC;IACH,CAAC;AACH,CAAC;AAID,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAiC,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { TransformAdapter } from './adapter.js';
2
+ export declare const sharpAdapter: TransformAdapter;
3
+ //# sourceMappingURL=sharp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharp.d.ts","sourceRoot":"","sources":["../../src/transforms/sharp.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAA8B,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAMhF,eAAO,MAAM,YAAY,EAAE,gBAqB1B,CAAA"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Default `TransformAdapter`: origin bytes + pre-generated variant ladder.
3
+ *
4
+ * Bytes are served from the target's storage via `assets/serve-route.ts`.
5
+ * Variants are pre-generated at upload by sharp (see `assets/variants.ts`)
6
+ * and listed in the manifest's `variants` array. Both URLs and srcset
7
+ * descriptors point at origin paths — the CDN, if any, caches as-is.
8
+ *
9
+ * Cache policy: `public, max-age=31536000, immutable`. Safe because
10
+ * hash-in-path is content-addressed — new bytes mean a new URL, so
11
+ * the URL's response is genuinely immutable.
12
+ *
13
+ * Single responsibility: wrap `buildAssetUrl` + `buildSrcset` from
14
+ * `assets/url.ts` behind the `TransformAdapter` interface. No extra
15
+ * logic — the adapter is the right shape for swap-out, and the URL
16
+ * helpers stay reusable for tests and future adapters that compose
17
+ * origin URLs (cloudflare prefixes them; imgproxy wraps them).
18
+ */
19
+ import { buildAssetUrl, buildSrcset } from '../assets/url.js';
20
+ const IMMUTABLE_CACHE = {
21
+ cacheControl: 'public, max-age=31536000, immutable',
22
+ };
23
+ export const sharpAdapter = {
24
+ name: 'sharp',
25
+ primaryUrl(input) {
26
+ return buildAssetUrl({
27
+ name: input.name,
28
+ hash: input.hash,
29
+ ext: input.ext,
30
+ siteUrl: input.siteUrl,
31
+ selector: input.selector,
32
+ });
33
+ },
34
+ srcset(input) {
35
+ if (input.variants.length === 0)
36
+ return null;
37
+ return buildSrcset(input.variants, input.siteUrl);
38
+ },
39
+ cachePolicy(_input) {
40
+ return IMMUTABLE_CACHE;
41
+ },
42
+ };
43
+ //# sourceMappingURL=sharp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharp.js","sourceRoot":"","sources":["../../src/transforms/sharp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG7D,MAAM,eAAe,GAAgB;IACnC,YAAY,EAAE,qCAAqC;CACpD,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC5C,IAAI,EAAE,OAAO;IAEb,UAAU,CAAC,KAAoB;QAC7B,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,KAAoB;QACzB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAC5C,OAAO,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;IAED,WAAW,CAAC,MAAqB;QAC/B,OAAO,eAAe,CAAA;IACxB,CAAC;CACF,CAAA"}