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
package/dist/sidecars.js CHANGED
@@ -1,28 +1,23 @@
1
1
  /**
2
2
  * Sidecar file I/O for pages and fragments — one module owning all reads
3
- * and writes of the three sidecar kinds:
3
+ * and writes of the two sidecar kinds:
4
4
  *
5
5
  * .{8hex}.hash — content hash, used by compare-targets
6
- * .uses-{fragment} one per @ reference; used by dependents lookup
7
- * .tpl-{template} — template name; used to flag republish-needed
6
+ * .pub-... publish timestamp + noindex flag
8
7
  *
9
- * Filenames encode the whole picture — a single readDir returns the full
10
- * dependency state of an item without any content reads. Scaling goal:
11
- * listing calls, not GETs, at 10k pages.
8
+ * Filenames encode the publish-state picture — a single readDir returns
9
+ * the full sidecar state of an item without any content reads. Scaling
10
+ * goal: listing calls, not GETs, at 10k pages.
12
11
  *
13
- * Publish-rendered.ts, compare.ts, publish.ts all used to inline this
14
- * logic separately; centralizing here reduces duplication and gives us
15
- * one place to swap the storage shape (e.g. future single-index file)
16
- * without touching every caller.
12
+ * Reverse dep relationships (fragment-deps, asset-refs) live in
13
+ * `.gazetta/{relation}/{target}/{source}` per-edge sidecars (see
14
+ * dep-sidecars.ts), not in per-item filename suffixes.
17
15
  */
18
- import { parseSidecarName, sidecarNameFor, parseUsesSidecarName, usesSidecarNameFor, parseTemplateSidecarName, templateSidecarNameFor, } from './hash.js';
16
+ import { parseSidecarName, parseSidecarLocale, sidecarNameFor, parsePubSidecarName, parsePubSidecarLocale, pubSidecarNameFor, } from './hash.js';
19
17
  import { mapLimit } from './concurrency.js';
20
18
  /**
21
19
  * Read sidecar filenames for a single item directory. Returns null if
22
- * the directory doesn't exist or has no hash sidecar. `uses` and
23
- * `template` default to empty/null when their sidecars are absent —
24
- * old items published before we started writing them will still work,
25
- * the caller just won't have dependency info for them.
20
+ * the directory doesn't exist or has no hash sidecar.
26
21
  */
27
22
  export async function readSidecars(storage, dir) {
28
23
  let entries;
@@ -33,8 +28,7 @@ export async function readSidecars(storage, dir) {
33
28
  return null;
34
29
  }
35
30
  let hash = null;
36
- const uses = [];
37
- let template = null;
31
+ let pub = null;
38
32
  for (const e of entries) {
39
33
  if (e.isDirectory)
40
34
  continue;
@@ -43,50 +37,111 @@ export async function readSidecars(storage, dir) {
43
37
  hash = h;
44
38
  continue;
45
39
  }
46
- const u = parseUsesSidecarName(e.name);
47
- if (u) {
48
- uses.push(u);
49
- continue;
50
- }
51
- const t = parseTemplateSidecarName(e.name);
52
- if (t)
53
- template = t;
40
+ const p = parsePubSidecarName(e.name);
41
+ if (p)
42
+ pub = p;
54
43
  }
55
44
  if (!hash)
56
45
  return null;
57
- return { hash, uses, template };
46
+ return { hash, pub };
58
47
  }
59
48
  /**
60
- * Write (or rewrite) all three sidecar kinds for one item. Stale sidecars
61
- * of any kind that aren't in the new state are removed first, so
62
- * fragment-references removed from a page's components don't linger as
63
- * .uses-*.
49
+ * Write (or rewrite) sidecars for one item, optionally locale-scoped.
50
+ * When `locale` is set, only locale-specific sidecars (.hash.fr, .pub.fr)
51
+ * are written/cleaned default-locale sidecars are untouched.
52
+ *
53
+ * Concurrency:
54
+ * Calls targeting the same directory are serialized via `withDirLock`.
55
+ * Without serialization, Call A's cleanup phase (readDir → rm stale)
56
+ * would see Call B's in-flight `write-file-atomic` temp files and
57
+ * mistake them for stale sidecars — B's rename would then fail with
58
+ * ENOENT. Queueing at dir granularity eliminates the race class,
59
+ * matching the same idiom `write-file-atomic` itself uses per-file
60
+ * within a process.
64
61
  */
65
- export async function writeSidecars(storage, dir, state) {
66
- const want = new Set([sidecarNameFor(state.hash)]);
67
- for (const frag of state.uses)
68
- want.add(usesSidecarNameFor(frag));
69
- if (state.template)
70
- want.add(templateSidecarNameFor(state.template));
71
- // Remove stale sidecars of known kinds that aren't in `want`.
62
+ export async function writeSidecars(storage, dir, state, locale) {
63
+ return withDirLock(dir, () => doWriteSidecars(storage, dir, state, locale));
64
+ }
65
+ async function doWriteSidecars(storage, dir, state, locale) {
66
+ const want = new Set([sidecarNameFor(state.hash, locale)]);
67
+ if (state.pub)
68
+ want.add(pubSidecarNameFor(new Date(state.pub.lastPublished), state.pub.noindex, locale));
69
+ // Remove stale sidecars of the SAME locale scope that aren't in `want`.
70
+ // Safe because `withDirLock` serializes concurrent callers on this dir —
71
+ // no other writer's atomic-write temp files can be in flight right now.
72
72
  try {
73
73
  const entries = await storage.readDir(dir);
74
74
  for (const e of entries) {
75
75
  if (want.has(e.name))
76
76
  continue;
77
- if (parseSidecarName(e.name) || parseUsesSidecarName(e.name) || parseTemplateSidecarName(e.name)) {
77
+ const hashLocale = parseSidecarLocale(e.name);
78
+ const pubLocale = parsePubSidecarLocale(e.name);
79
+ if (parseSidecarName(e.name) && hashLocale === (locale ?? undefined)) {
80
+ try {
81
+ await storage.rm(`${dir}/${e.name}`);
82
+ }
83
+ catch {
84
+ /* already gone */
85
+ }
86
+ }
87
+ else if (parsePubSidecarName(e.name) && pubLocale === (locale ?? undefined)) {
78
88
  try {
79
89
  await storage.rm(`${dir}/${e.name}`);
80
90
  }
81
- catch { /* already gone */ }
91
+ catch {
92
+ /* already gone */
93
+ }
82
94
  }
83
95
  }
84
96
  }
85
- catch { /* dir doesn't exist yet — mkdir below */ }
97
+ catch {
98
+ /* dir doesn't exist yet — mkdir below */
99
+ }
86
100
  await storage.mkdir(dir);
87
- // Parallel tiny writes; each is a zero-byte file.
88
101
  await Promise.all([...want].map(name => storage.writeFile(`${dir}/${name}`, '')));
89
102
  }
103
+ /**
104
+ * Per-directory Promise-queue serialization for `writeSidecars`.
105
+ *
106
+ * Single responsibility: ensure at most one `writeSidecars` call is
107
+ * operating on a given directory at a time within this process. The
108
+ * race we're closing:
109
+ *
110
+ * Call A: readDir → sees `.hash` → rm `.hash` → writeFile new `.hash`
111
+ * ↑ creates temp
112
+ * Call B (parallel): readDir → sees A's temp file
113
+ * → matches permissive regex → rm temp
114
+ * → A's rename ENOENTs
115
+ *
116
+ * With serialization, B's readDir can only observe finalized state from
117
+ * A's completed run. No temp files exist when any call does its cleanup.
118
+ *
119
+ * Shape: per-key Promise chain. Each caller awaits the prior Promise for
120
+ * its key before running, and publishes its own Promise as the next
121
+ * "current holder" for that key. Matches the pattern `write-file-atomic`
122
+ * uses per-file (node_modules/write-file-atomic/lib/index.js, the
123
+ * `activeFiles` map), lifted here to per-directory granularity.
124
+ *
125
+ * Cross-process safety: not provided — the map is in-process state.
126
+ * Gazetta's admin is a single writer (one dev server, one publish
127
+ * process); cross-process coordination would require a sibling `.lock`
128
+ * file (git's pattern), which we don't need in this regime.
129
+ */
130
+ const dirLocks = new Map();
131
+ async function withDirLock(dir, fn) {
132
+ const prev = dirLocks.get(dir) ?? Promise.resolve();
133
+ const current = prev.then(fn, fn); // run `fn` whether prev resolved or rejected
134
+ dirLocks.set(dir, current);
135
+ try {
136
+ return await current;
137
+ }
138
+ finally {
139
+ // Clean up the map entry only if we're still the tail of the chain.
140
+ // Otherwise a later caller's Promise is in flight and owns the slot.
141
+ if (dirLocks.get(dir) === current)
142
+ dirLocks.delete(dir);
143
+ }
144
+ }
90
145
  /**
91
146
  * Walk a directory tree collecting every sub-directory's sidecar state.
92
147
  * Bounded-parallel recursion — flat Promise.all over 10k dirs would blow
@@ -106,17 +161,60 @@ export async function listSidecars(storage, rootDir) {
106
161
  catch {
107
162
  return;
108
163
  }
164
+ // Parse sidecar state directly from the entries we already have —
165
+ // avoids a second readDir per directory (readSidecars would re-read
166
+ // the same dir). At 10k pages this halves the I/O calls.
109
167
  if (relative) {
110
- const state = await readSidecars(storage, dir).catch(() => null);
111
- if (state)
112
- out.set(relative, state);
168
+ const parsed = parseSidecarEntries(entries);
169
+ if (parsed.default)
170
+ out.set(relative, parsed.default);
171
+ for (const [loc, locState] of parsed.locales) {
172
+ out.set(`${relative}:${loc}`, locState);
173
+ }
113
174
  }
114
175
  const subdirs = entries.filter(e => e.isDirectory);
115
- await mapLimit(subdirs, (e) => walk(`${dir}/${e.name}`, relative ? `${relative}/${e.name}` : e.name));
176
+ await mapLimit(subdirs, e => walk(`${dir}/${e.name}`, relative ? `${relative}/${e.name}` : e.name));
116
177
  }
117
178
  await walk(rootDir, '');
118
179
  return out;
119
180
  }
181
+ /**
182
+ * Parse sidecar state from already-read directory entries.
183
+ * Returns the default-locale state plus any locale variants.
184
+ */
185
+ function parseSidecarEntries(entries) {
186
+ let hash = null;
187
+ let pub = null;
188
+ const localeHashes = new Map();
189
+ const localePubs = new Map();
190
+ for (const e of entries) {
191
+ if (e.isDirectory)
192
+ continue;
193
+ const h = parseSidecarName(e.name);
194
+ if (h) {
195
+ const loc = parseSidecarLocale(e.name);
196
+ if (loc)
197
+ localeHashes.set(loc, h);
198
+ else
199
+ hash = h;
200
+ continue;
201
+ }
202
+ const p = parsePubSidecarName(e.name);
203
+ if (p) {
204
+ const loc = parsePubSidecarLocale(e.name);
205
+ if (loc)
206
+ localePubs.set(loc, p);
207
+ else
208
+ pub = p;
209
+ }
210
+ }
211
+ const defaultState = hash ? { hash, pub } : null;
212
+ const locales = new Map();
213
+ for (const [loc, lHash] of localeHashes) {
214
+ locales.set(loc, { hash: lHash, pub: localePubs.get(loc) ?? null });
215
+ }
216
+ return { default: defaultState, locales };
217
+ }
120
218
  /**
121
219
  * Walk a component tree and collect every @fragment reference, recursing
122
220
  * into inline components' children. Used when building SidecarState from
@@ -1 +1 @@
1
- {"version":3,"file":"sidecars.js","sourceRoot":"","sources":["../src/sidecars.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidecars.js","sourceRoot":"","sources":["../src/sidecars.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,92 @@
1
1
  import type { PageManifest, FragmentManifest, SiteManifest, StorageProvider } from './types.js';
2
+ import { type ContentRoot } from './content-root.js';
3
+ /** A page entry with its name, manifest, and optional locale. */
4
+ export interface PageEntry {
5
+ name: string;
6
+ page: PageManifest & {
7
+ dir: string;
8
+ };
9
+ locale?: string;
10
+ }
11
+ /** A fragment entry with its name, manifest, and optional locale. */
12
+ export interface FragmentEntry {
13
+ name: string;
14
+ fragment: FragmentManifest & {
15
+ dir: string;
16
+ };
17
+ locale?: string;
18
+ }
19
+ /** Flatten all pages including locale variants into a single list. */
20
+ export declare function allPageEntries(site: Site): PageEntry[];
21
+ /** Flatten all fragments including locale variants into a single list. */
22
+ export declare function allFragmentEntries(site: Site): FragmentEntry[];
2
23
  /** Derive route from page folder name: home → /, about → /about, blog/[slug] → /blog/:slug */
3
24
  export declare function deriveRoute(pageName: string): string;
25
+ /** A page or fragment with its locale variants. */
26
+ export interface LocalizedEntry<T> {
27
+ /** Default locale manifest (from page.json / fragment.json). */
28
+ default: T;
29
+ /** Locale variants keyed by normalized locale code. Empty if single-locale. */
30
+ locales: Map<string, T>;
31
+ }
4
32
  export interface Site {
5
33
  manifest: SiteManifest;
6
34
  pages: Map<string, PageManifest & {
7
35
  dir: string;
8
36
  }>;
37
+ /** Locale variants for pages. Only populated when site has `locales` config. */
38
+ pageLocales: Map<string, LocalizedEntry<PageManifest & {
39
+ dir: string;
40
+ }>>;
9
41
  fragments: Map<string, FragmentManifest & {
10
42
  dir: string;
11
43
  }>;
44
+ /** Locale variants for fragments. Only populated when site has `locales` config. */
45
+ fragmentLocales: Map<string, LocalizedEntry<FragmentManifest & {
46
+ dir: string;
47
+ }>>;
48
+ /** Content root — `{storage, rootPath}` pair for accessing site content. */
49
+ contentRoot: ContentRoot;
50
+ /**
51
+ * Storage provider for site content. Equivalent to `contentRoot.storage` —
52
+ * kept as a convenience because resolver and template loading use it directly.
53
+ */
54
+ storage: StorageProvider;
55
+ /**
56
+ * Rooting prefix for content under `storage`. Equivalent to `contentRoot.rootPath`.
57
+ * Empty string when storage is target-rooted.
58
+ */
12
59
  siteDir: string;
13
- /** Directory containing template packages. Defaults to siteDir/templates for flat projects. */
60
+ /** Directory containing template packages. Project-level, separate from content rooting. */
14
61
  templatesDir: string;
15
- storage: StorageProvider;
16
62
  }
17
63
  export interface LoadSiteOptions {
18
- siteDir: string;
19
- storage: StorageProvider;
20
- /** Override templates directory (default: siteDir/templates) */
64
+ /** @deprecated Pass `contentRoot` instead (preferred for new code). */
65
+ siteDir?: string;
66
+ /** @deprecated Pass `contentRoot` instead (preferred for new code). */
67
+ storage?: StorageProvider;
68
+ /** Content root — where site content lives. Preferred over siteDir/storage. */
69
+ contentRoot?: ContentRoot;
70
+ /** Override templates directory (default: siteDir/templates). */
21
71
  templatesDir?: string;
72
+ /**
73
+ * Pre-parsed site manifest. If provided, site.yaml is not read from the
74
+ * content root. Used when site.yaml is a project-level bootstrap file
75
+ * that lives outside target storage.
76
+ */
77
+ manifest?: SiteManifest;
22
78
  }
23
- export declare function loadSite(siteDirOrOpts: string | LoadSiteOptions, storage?: StorageProvider): Promise<Site>;
79
+ /**
80
+ * Load a site from a storage provider.
81
+ *
82
+ * Two input shapes are supported:
83
+ * - **Preferred**: `{ contentRoot, templatesDir }` — storage rooting is
84
+ * whatever the caller chose (cwd-rooted with siteDir prefix, or target-
85
+ * rooted with empty prefix). Callers construct the root once; this
86
+ * function doesn't care.
87
+ * - **Legacy**: `{ siteDir, storage, templatesDir? }` — the pair is wrapped
88
+ * in a ContentRoot internally. Retained for callers that haven't
89
+ * migrated yet.
90
+ */
91
+ export declare function loadSite(opts: LoadSiteOptions): Promise<Site>;
24
92
  //# sourceMappingURL=site-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"site-loader.d.ts","sourceRoot":"","sources":["../src/site-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAI/F,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,YAAY,CAAA;IACtB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC1D,OAAO,EAAE,MAAM,CAAA;IACf,+FAA+F;IAC/F,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,eAAe,CAAA;CACzB;AAoED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,eAAe,CAAA;IACxB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAsB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhH"}
1
+ {"version":3,"file":"site-loader.d.ts","sourceRoot":"","sources":["../src/site-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAG/F,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAGvE,iEAAiE;AACjE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,YAAY,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,qEAAqE;AACrE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,gBAAgB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,CAOtD;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,EAAE,CAO9D;AAED,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,gEAAgE;IAChE,OAAO,EAAE,CAAC,CAAA;IACV,+EAA+E;IAC/E,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;CACxB;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,YAAY,CAAA;IACtB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD,gFAAgF;IAChF,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IACxE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC1D,oFAAoF;IACpF,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,gBAAgB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAChF,4EAA4E;IAC5E,WAAW,EAAE,WAAW,CAAA;IACxB;;;OAGG;IACH,OAAO,EAAE,eAAe,CAAA;IACxB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,4FAA4F;IAC5F,YAAY,EAAE,MAAM,CAAA;CACrB;AAmHD,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uEAAuE;IACvE,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDnE"}
@@ -1,17 +1,41 @@
1
1
  import { join } from 'node:path';
2
2
  import { parseSiteManifest, parsePageManifest, parseFragmentManifest } from './manifest.js';
3
3
  import { mapLimit } from './concurrency.js';
4
+ import { createContentRoot } from './content-root.js';
5
+ import { localeFromFilename, localeRoutePrefix, resolveSiteLocales } from './locale.js';
6
+ /** Flatten all pages including locale variants into a single list. */
7
+ export function allPageEntries(site) {
8
+ const entries = [];
9
+ for (const [name, page] of site.pages)
10
+ entries.push({ name, page });
11
+ for (const [name, entry] of site.pageLocales) {
12
+ for (const [locale, page] of entry.locales)
13
+ entries.push({ name, page, locale });
14
+ }
15
+ return entries;
16
+ }
17
+ /** Flatten all fragments including locale variants into a single list. */
18
+ export function allFragmentEntries(site) {
19
+ const entries = [];
20
+ for (const [name, fragment] of site.fragments)
21
+ entries.push({ name, fragment });
22
+ for (const [name, entry] of site.fragmentLocales) {
23
+ for (const [locale, fragment] of entry.locales)
24
+ entries.push({ name, fragment, locale });
25
+ }
26
+ return entries;
27
+ }
4
28
  /** Derive route from page folder name: home → /, about → /about, blog/[slug] → /blog/:slug */
5
29
  export function deriveRoute(pageName) {
6
30
  if (pageName === 'home')
7
31
  return '/';
8
32
  return '/' + pageName.replace(/\[([^\]]+)\]/g, ':$1');
9
33
  }
10
- async function discoverPages(storage, pagesDir, pages = new Map(), prefix = '') {
11
- if (!await storage.exists(pagesDir)) {
34
+ async function discoverPages(storage, pagesDir, siteManifest, result = { pages: new Map(), pageLocales: new Map() }, prefix = '') {
35
+ if (!(await storage.exists(pagesDir))) {
12
36
  if (!prefix)
13
37
  console.warn(` Warning: pages/ directory not found at ${pagesDir}`);
14
- return pages;
38
+ return result;
15
39
  }
16
40
  const entries = await storage.readDir(pagesDir);
17
41
  const subdirs = entries.filter(e => e.isDirectory);
@@ -25,58 +49,144 @@ async function discoverPages(storage, pagesDir, pages = new Map(), prefix = '')
25
49
  try {
26
50
  const manifest = await parsePageManifest(storage, manifestPath);
27
51
  const route = deriveRoute(name);
28
- pages.set(name, { ...manifest, route, dir });
52
+ const pageWithDir = { ...manifest, route, dir };
53
+ result.pages.set(name, pageWithDir);
54
+ // Discover locale variants (page.fr.json, page.en-gb.json, etc.)
55
+ const locales = new Map();
56
+ const dirEntries = await storage.readDir(dir);
57
+ for (const f of dirEntries) {
58
+ if (f.isDirectory)
59
+ continue;
60
+ const locale = localeFromFilename(f.name, 'page');
61
+ if (!locale)
62
+ continue;
63
+ try {
64
+ const localeManifest = await parsePageManifest(storage, join(dir, f.name));
65
+ const siteLocales = resolveSiteLocales(siteManifest);
66
+ const routePrefix = siteLocales ? localeRoutePrefix(locale, siteLocales) : `/${locale}`;
67
+ const localeRoute = `${routePrefix}${route === '/' ? '' : route}` || '/';
68
+ locales.set(locale, { ...localeManifest, route: localeRoute, dir });
69
+ }
70
+ catch (err) {
71
+ console.warn(` Warning: skipping page "${name}" locale "${locale}": ${err.message}`);
72
+ }
73
+ }
74
+ if (locales.size > 0) {
75
+ result.pageLocales.set(name, { default: pageWithDir, locales });
76
+ }
29
77
  }
30
78
  catch (err) {
31
79
  console.warn(` Warning: skipping page "${name}": ${err.message}`);
32
80
  }
33
81
  }
34
82
  // Recurse into subdirectories to find nested pages (e.g., blog/[slug]).
35
- // Recursive call inherits the same bounded mapLimit — workers at each
36
- // level compete for the same concurrency budget.
37
- await discoverPages(storage, dir, pages, name);
83
+ await discoverPages(storage, dir, siteManifest, result, name);
38
84
  });
39
- return pages;
85
+ return result;
40
86
  }
41
87
  async function discoverFragments(storage, fragmentsDir) {
42
- const fragments = new Map();
43
- if (!await storage.exists(fragmentsDir)) {
88
+ const result = { fragments: new Map(), fragmentLocales: new Map() };
89
+ if (!(await storage.exists(fragmentsDir))) {
44
90
  console.warn(` Warning: fragments/ directory not found at ${fragmentsDir}`);
45
- return fragments;
91
+ return result;
46
92
  }
47
93
  const entries = await storage.readDir(fragmentsDir);
48
94
  const subdirs = entries.filter(e => e.isDirectory);
49
95
  await mapLimit(subdirs, async (entry) => {
50
96
  const fragDir = join(fragmentsDir, entry.name);
51
97
  const manifestPath = join(fragDir, 'fragment.json');
52
- if (!await storage.exists(manifestPath))
98
+ if (!(await storage.exists(manifestPath)))
53
99
  return;
54
100
  try {
55
101
  const manifest = await parseFragmentManifest(storage, manifestPath);
56
- fragments.set(entry.name, { ...manifest, dir: fragDir });
102
+ const fragWithDir = { ...manifest, dir: fragDir };
103
+ result.fragments.set(entry.name, fragWithDir);
104
+ // Discover locale variants (fragment.fr.json, etc.)
105
+ const locales = new Map();
106
+ const dirEntries = await storage.readDir(fragDir);
107
+ for (const f of dirEntries) {
108
+ if (f.isDirectory)
109
+ continue;
110
+ const locale = localeFromFilename(f.name, 'fragment');
111
+ if (!locale)
112
+ continue;
113
+ try {
114
+ const localeManifest = await parseFragmentManifest(storage, join(fragDir, f.name));
115
+ locales.set(locale, { ...localeManifest, dir: fragDir });
116
+ }
117
+ catch (err) {
118
+ console.warn(` Warning: skipping fragment "${entry.name}" locale "${locale}": ${err.message}`);
119
+ }
120
+ }
121
+ if (locales.size > 0) {
122
+ result.fragmentLocales.set(entry.name, { default: fragWithDir, locales });
123
+ }
57
124
  }
58
125
  catch (err) {
59
126
  console.warn(` Warning: skipping fragment "${entry.name}": ${err.message}`);
60
127
  }
61
128
  });
62
- return fragments;
129
+ return result;
63
130
  }
64
- export async function loadSite(siteDirOrOpts, storage) {
65
- const opts = typeof siteDirOrOpts === 'string'
66
- ? { siteDir: siteDirOrOpts, storage: storage }
67
- : siteDirOrOpts;
68
- const { siteDir } = opts;
69
- const templatesDir = opts.templatesDir ?? join(siteDir, 'templates');
70
- const siteYaml = join(siteDir, 'site.yaml');
71
- if (!await opts.storage.exists(siteYaml)) {
72
- throw new Error(`No site.yaml found at ${siteDir}. Is this a Gazetta site directory?`);
131
+ /**
132
+ * Load a site from a storage provider.
133
+ *
134
+ * Two input shapes are supported:
135
+ * - **Preferred**: `{ contentRoot, templatesDir }` storage rooting is
136
+ * whatever the caller chose (cwd-rooted with siteDir prefix, or target-
137
+ * rooted with empty prefix). Callers construct the root once; this
138
+ * function doesn't care.
139
+ * - **Legacy**: `{ siteDir, storage, templatesDir? }` the pair is wrapped
140
+ * in a ContentRoot internally. Retained for callers that haven't
141
+ * migrated yet.
142
+ */
143
+ export async function loadSite(opts) {
144
+ let contentRoot;
145
+ let siteDir;
146
+ let templatesDir;
147
+ if (opts.contentRoot) {
148
+ // Preferred: caller built the ContentRoot
149
+ contentRoot = opts.contentRoot;
150
+ siteDir = contentRoot.rootPath;
151
+ templatesDir = opts.templatesDir ?? join(siteDir, 'templates');
152
+ }
153
+ else {
154
+ // Legacy options bag: { siteDir, storage, templatesDir? }
155
+ if (!opts.siteDir || !opts.storage) {
156
+ throw new Error('loadSite: either contentRoot, or both siteDir and storage, must be provided');
157
+ }
158
+ siteDir = opts.siteDir;
159
+ contentRoot = createContentRoot(opts.storage, siteDir);
160
+ templatesDir = opts.templatesDir ?? join(siteDir, 'templates');
161
+ }
162
+ let manifest;
163
+ if (opts.manifest) {
164
+ // Project-level bootstrap passed in the manifest — skip the storage read.
165
+ manifest = opts.manifest;
166
+ }
167
+ else {
168
+ const siteYamlPath = contentRoot.path('site.yaml');
169
+ if (!(await contentRoot.storage.exists(siteYamlPath))) {
170
+ throw new Error(`No site.yaml found at ${siteYamlPath}. Is this a Gazetta site directory?`);
171
+ }
172
+ manifest = await parseSiteManifest(contentRoot.storage, siteYamlPath);
73
173
  }
74
- const manifest = await parseSiteManifest(opts.storage, siteYaml);
75
- const pages = await discoverPages(opts.storage, join(siteDir, 'pages'));
76
- const fragments = await discoverFragments(opts.storage, join(siteDir, 'fragments'));
174
+ const { pages, pageLocales } = await discoverPages(contentRoot.storage, contentRoot.path('pages'), manifest);
175
+ const { fragments, fragmentLocales } = await discoverFragments(contentRoot.storage, contentRoot.path('fragments'));
77
176
  if (pages.size === 0) {
78
- console.warn(` Warning: no pages found in ${join(siteDir, 'pages')}`);
177
+ console.warn(` Warning: no pages found in ${contentRoot.path('pages')}`);
79
178
  }
80
- return { manifest, pages, fragments, siteDir, templatesDir, storage: opts.storage };
179
+ return {
180
+ manifest,
181
+ pages,
182
+ pageLocales,
183
+ fragments,
184
+ fragmentLocales,
185
+ contentRoot,
186
+ // backward-compat fields
187
+ siteDir,
188
+ templatesDir,
189
+ storage: contentRoot.storage,
190
+ };
81
191
  }
82
192
  //# sourceMappingURL=site-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"site-loader.js","sourceRoot":"","sources":["../src/site-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"site-loader.js","sourceRoot":"","sources":["../src/site-loader.ts"],"names":[],"mappings":"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"}