gazetta 0.7.0 → 0.8.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 (738) hide show
  1. package/admin-dist/assets/index-CBeq0rRb.js +693 -0
  2. package/admin-dist/assets/index-Dtg1dTZQ.css +1 -0
  3. package/admin-dist/assets/rolldown-runtime-BYbx6iT9.js +1 -0
  4. package/admin-dist/assets/{vendor-primevue-C0Q_YTCb.js → vendor-primevue-CBGHkaXv.js} +183 -39
  5. package/admin-dist/assets/{vendor-react-BipDVGow.js → vendor-react-BdW_kNCG.js} +2 -2
  6. package/admin-dist/assets/vendor-rjsf-lN2SztQt.js +33 -0
  7. package/admin-dist/assets/vendor-tiptap-C36yDquB.js +141 -0
  8. package/admin-dist/assets/vendor-vue-Bt5uR1VW.js +1 -0
  9. package/admin-dist/assets/workbox-window.prod.es5-DGMtIXHc.js +2 -0
  10. package/admin-dist/index.html +8 -8
  11. package/admin-dist/sw.js +1 -0
  12. package/dist/admin-api/archived-name-conflict.d.ts +31 -0
  13. package/dist/admin-api/archived-name-conflict.d.ts.map +1 -0
  14. package/dist/admin-api/archived-name-conflict.js +226 -0
  15. package/dist/admin-api/archived-name-conflict.js.map +1 -0
  16. package/dist/admin-api/cache-stats-logger.d.ts +83 -0
  17. package/dist/admin-api/cache-stats-logger.d.ts.map +1 -0
  18. package/dist/admin-api/cache-stats-logger.js +59 -0
  19. package/dist/admin-api/cache-stats-logger.js.map +1 -0
  20. package/dist/admin-api/hook-audit-emitter.d.ts +38 -0
  21. package/dist/admin-api/hook-audit-emitter.d.ts.map +1 -0
  22. package/dist/admin-api/hook-audit-emitter.js +21 -0
  23. package/dist/admin-api/hook-audit-emitter.js.map +1 -0
  24. package/dist/admin-api/index.d.ts +84 -0
  25. package/dist/admin-api/index.d.ts.map +1 -1
  26. package/dist/admin-api/index.js +254 -9
  27. package/dist/admin-api/index.js.map +1 -1
  28. package/dist/admin-api/middleware/audit.d.ts +25 -0
  29. package/dist/admin-api/middleware/audit.d.ts.map +1 -0
  30. package/dist/admin-api/middleware/audit.js +65 -0
  31. package/dist/admin-api/middleware/audit.js.map +1 -0
  32. package/dist/admin-api/middleware/capability.d.ts +8 -0
  33. package/dist/admin-api/middleware/capability.d.ts.map +1 -0
  34. package/dist/admin-api/middleware/capability.js +65 -0
  35. package/dist/admin-api/middleware/capability.js.map +1 -0
  36. package/dist/admin-api/middleware/principal.d.ts +18 -0
  37. package/dist/admin-api/middleware/principal.d.ts.map +1 -0
  38. package/dist/admin-api/middleware/principal.js +128 -0
  39. package/dist/admin-api/middleware/principal.js.map +1 -0
  40. package/dist/admin-api/routes/archive-review.d.ts +80 -0
  41. package/dist/admin-api/routes/archive-review.d.ts.map +1 -0
  42. package/dist/admin-api/routes/archive-review.js +70 -0
  43. package/dist/admin-api/routes/archive-review.js.map +1 -0
  44. package/dist/admin-api/routes/archive.d.ts +145 -0
  45. package/dist/admin-api/routes/archive.d.ts.map +1 -0
  46. package/dist/admin-api/routes/archive.js +540 -0
  47. package/dist/admin-api/routes/archive.js.map +1 -0
  48. package/dist/admin-api/routes/assets.d.ts +6 -1
  49. package/dist/admin-api/routes/assets.d.ts.map +1 -1
  50. package/dist/admin-api/routes/assets.js +167 -14
  51. package/dist/admin-api/routes/assets.js.map +1 -1
  52. package/dist/admin-api/routes/audit.d.ts +71 -0
  53. package/dist/admin-api/routes/audit.d.ts.map +1 -0
  54. package/dist/admin-api/routes/audit.js +178 -0
  55. package/dist/admin-api/routes/audit.js.map +1 -0
  56. package/dist/admin-api/routes/compare.d.ts.map +1 -1
  57. package/dist/admin-api/routes/compare.js +3 -2
  58. package/dist/admin-api/routes/compare.js.map +1 -1
  59. package/dist/admin-api/routes/fields.d.ts.map +1 -1
  60. package/dist/admin-api/routes/fields.js +2 -1
  61. package/dist/admin-api/routes/fields.js.map +1 -1
  62. package/dist/admin-api/routes/fragments.d.ts +13 -1
  63. package/dist/admin-api/routes/fragments.d.ts.map +1 -1
  64. package/dist/admin-api/routes/fragments.js +127 -92
  65. package/dist/admin-api/routes/fragments.js.map +1 -1
  66. package/dist/admin-api/routes/health.d.ts +60 -0
  67. package/dist/admin-api/routes/health.d.ts.map +1 -0
  68. package/dist/admin-api/routes/health.js +65 -0
  69. package/dist/admin-api/routes/health.js.map +1 -0
  70. package/dist/admin-api/routes/history.d.ts +2 -1
  71. package/dist/admin-api/routes/history.d.ts.map +1 -1
  72. package/dist/admin-api/routes/history.js +26 -4
  73. package/dist/admin-api/routes/history.js.map +1 -1
  74. package/dist/admin-api/routes/pages.d.ts +20 -1
  75. package/dist/admin-api/routes/pages.d.ts.map +1 -1
  76. package/dist/admin-api/routes/pages.js +157 -117
  77. package/dist/admin-api/routes/pages.js.map +1 -1
  78. package/dist/admin-api/routes/preview.d.ts.map +1 -1
  79. package/dist/admin-api/routes/preview.js +56 -17
  80. package/dist/admin-api/routes/preview.js.map +1 -1
  81. package/dist/admin-api/routes/publish.d.ts +19 -1
  82. package/dist/admin-api/routes/publish.d.ts.map +1 -1
  83. package/dist/admin-api/routes/publish.js +508 -92
  84. package/dist/admin-api/routes/publish.js.map +1 -1
  85. package/dist/admin-api/routes/rename.d.ts +62 -0
  86. package/dist/admin-api/routes/rename.d.ts.map +1 -0
  87. package/dist/admin-api/routes/rename.js +366 -0
  88. package/dist/admin-api/routes/rename.js.map +1 -0
  89. package/dist/admin-api/routes/site.d.ts.map +1 -1
  90. package/dist/admin-api/routes/site.js +6 -18
  91. package/dist/admin-api/routes/site.js.map +1 -1
  92. package/dist/admin-api/routes/system.d.ts +23 -0
  93. package/dist/admin-api/routes/system.d.ts.map +1 -0
  94. package/dist/admin-api/routes/system.js +115 -0
  95. package/dist/admin-api/routes/system.js.map +1 -0
  96. package/dist/admin-api/routes/templates.d.ts +11 -1
  97. package/dist/admin-api/routes/templates.d.ts.map +1 -1
  98. package/dist/admin-api/routes/templates.js +36 -3
  99. package/dist/admin-api/routes/templates.js.map +1 -1
  100. package/dist/admin-api/routes/validation.d.ts +47 -0
  101. package/dist/admin-api/routes/validation.d.ts.map +1 -0
  102. package/dist/admin-api/routes/validation.js +120 -0
  103. package/dist/admin-api/routes/validation.js.map +1 -0
  104. package/dist/admin-api/schemas/archive.d.ts +124 -0
  105. package/dist/admin-api/schemas/archive.d.ts.map +1 -0
  106. package/dist/admin-api/schemas/archive.js +93 -0
  107. package/dist/admin-api/schemas/archive.js.map +1 -0
  108. package/dist/admin-api/schemas/assets.d.ts +16 -0
  109. package/dist/admin-api/schemas/assets.d.ts.map +1 -1
  110. package/dist/admin-api/schemas/assets.js +15 -0
  111. package/dist/admin-api/schemas/assets.js.map +1 -1
  112. package/dist/admin-api/schemas/audit.d.ts +175 -0
  113. package/dist/admin-api/schemas/audit.d.ts.map +1 -0
  114. package/dist/admin-api/schemas/audit.js +91 -0
  115. package/dist/admin-api/schemas/audit.js.map +1 -0
  116. package/dist/admin-api/schemas/error.d.ts +94 -0
  117. package/dist/admin-api/schemas/error.d.ts.map +1 -0
  118. package/dist/admin-api/schemas/error.js +79 -0
  119. package/dist/admin-api/schemas/error.js.map +1 -0
  120. package/dist/admin-api/schemas/fragments.d.ts +2 -0
  121. package/dist/admin-api/schemas/fragments.d.ts.map +1 -1
  122. package/dist/admin-api/schemas/fragments.js +4 -0
  123. package/dist/admin-api/schemas/fragments.js.map +1 -1
  124. package/dist/admin-api/schemas/index.d.ts +8 -0
  125. package/dist/admin-api/schemas/index.d.ts.map +1 -1
  126. package/dist/admin-api/schemas/index.js +8 -0
  127. package/dist/admin-api/schemas/index.js.map +1 -1
  128. package/dist/admin-api/schemas/pages.d.ts +2 -0
  129. package/dist/admin-api/schemas/pages.d.ts.map +1 -1
  130. package/dist/admin-api/schemas/pages.js +11 -0
  131. package/dist/admin-api/schemas/pages.js.map +1 -1
  132. package/dist/admin-api/schemas/rename.d.ts +77 -0
  133. package/dist/admin-api/schemas/rename.d.ts.map +1 -0
  134. package/dist/admin-api/schemas/rename.js +75 -0
  135. package/dist/admin-api/schemas/rename.js.map +1 -0
  136. package/dist/admin-api/schemas/site.d.ts +3 -2
  137. package/dist/admin-api/schemas/site.d.ts.map +1 -1
  138. package/dist/admin-api/schemas/site.js +3 -2
  139. package/dist/admin-api/schemas/site.js.map +1 -1
  140. package/dist/admin-api/schemas/system.d.ts +28 -0
  141. package/dist/admin-api/schemas/system.d.ts.map +1 -0
  142. package/dist/admin-api/schemas/system.js +35 -0
  143. package/dist/admin-api/schemas/system.js.map +1 -0
  144. package/dist/admin-api/schemas/targets.d.ts +55 -0
  145. package/dist/admin-api/schemas/targets.d.ts.map +1 -1
  146. package/dist/admin-api/schemas/targets.js +46 -0
  147. package/dist/admin-api/schemas/targets.js.map +1 -1
  148. package/dist/admin-api/schemas/templates.d.ts +54 -0
  149. package/dist/admin-api/schemas/templates.d.ts.map +1 -1
  150. package/dist/admin-api/schemas/templates.js +21 -0
  151. package/dist/admin-api/schemas/templates.js.map +1 -1
  152. package/dist/admin-api/schemas/validation.d.ts +101 -0
  153. package/dist/admin-api/schemas/validation.d.ts.map +1 -0
  154. package/dist/admin-api/schemas/validation.js +57 -0
  155. package/dist/admin-api/schemas/validation.js.map +1 -0
  156. package/dist/admin-api/source-context.d.ts +66 -10
  157. package/dist/admin-api/source-context.d.ts.map +1 -1
  158. package/dist/admin-api/source-context.js +43 -5
  159. package/dist/admin-api/source-context.js.map +1 -1
  160. package/dist/ai/adapter-scaffold.d.ts +63 -0
  161. package/dist/ai/adapter-scaffold.d.ts.map +1 -0
  162. package/dist/ai/adapter-scaffold.js +89 -0
  163. package/dist/ai/adapter-scaffold.js.map +1 -0
  164. package/dist/ai/compose-prompt.d.ts +50 -0
  165. package/dist/ai/compose-prompt.d.ts.map +1 -0
  166. package/dist/ai/compose-prompt.js +49 -0
  167. package/dist/ai/compose-prompt.js.map +1 -0
  168. package/dist/ai/errors.d.ts +65 -0
  169. package/dist/ai/errors.d.ts.map +1 -0
  170. package/dist/ai/errors.js +59 -0
  171. package/dist/ai/errors.js.map +1 -0
  172. package/dist/ai/index.d.ts +17 -0
  173. package/dist/ai/index.d.ts.map +1 -0
  174. package/dist/ai/index.js +16 -0
  175. package/dist/ai/index.js.map +1 -0
  176. package/dist/ai/provider.d.ts +76 -0
  177. package/dist/ai/provider.d.ts.map +1 -0
  178. package/dist/ai/provider.js +13 -0
  179. package/dist/ai/provider.js.map +1 -0
  180. package/dist/ai/refusal.d.ts +50 -0
  181. package/dist/ai/refusal.d.ts.map +1 -0
  182. package/dist/ai/refusal.js +100 -0
  183. package/dist/ai/refusal.js.map +1 -0
  184. package/dist/ai/vision-prep.d.ts +32 -0
  185. package/dist/ai/vision-prep.d.ts.map +1 -0
  186. package/dist/ai/vision-prep.js +113 -0
  187. package/dist/ai/vision-prep.js.map +1 -0
  188. package/dist/alt/adapter.d.ts +140 -0
  189. package/dist/alt/adapter.d.ts.map +1 -0
  190. package/dist/alt/adapter.js +7 -0
  191. package/dist/alt/adapter.js.map +1 -0
  192. package/dist/alt/anthropic.d.ts +63 -0
  193. package/dist/alt/anthropic.d.ts.map +1 -0
  194. package/dist/alt/anthropic.js +147 -0
  195. package/dist/alt/anthropic.js.map +1 -0
  196. package/dist/alt/config.d.ts +67 -0
  197. package/dist/alt/config.d.ts.map +1 -0
  198. package/dist/alt/config.js +41 -0
  199. package/dist/alt/config.js.map +1 -0
  200. package/dist/alt/factory.d.ts +19 -0
  201. package/dist/alt/factory.d.ts.map +1 -0
  202. package/dist/alt/factory.js +69 -0
  203. package/dist/alt/factory.js.map +1 -0
  204. package/dist/alt/null-adapter.d.ts +3 -0
  205. package/dist/alt/null-adapter.d.ts.map +1 -0
  206. package/dist/alt/null-adapter.js +43 -0
  207. package/dist/alt/null-adapter.js.map +1 -0
  208. package/dist/alt/ollama.d.ts +40 -0
  209. package/dist/alt/ollama.d.ts.map +1 -0
  210. package/dist/alt/ollama.js +139 -0
  211. package/dist/alt/ollama.js.map +1 -0
  212. package/dist/alt/openai.d.ts +46 -0
  213. package/dist/alt/openai.d.ts.map +1 -0
  214. package/dist/alt/openai.js +118 -0
  215. package/dist/alt/openai.js.map +1 -0
  216. package/dist/alt/prompt-policies.d.ts +79 -0
  217. package/dist/alt/prompt-policies.d.ts.map +1 -0
  218. package/dist/alt/prompt-policies.js +67 -0
  219. package/dist/alt/prompt-policies.js.map +1 -0
  220. package/dist/alt/route-handler.d.ts +56 -0
  221. package/dist/alt/route-handler.d.ts.map +1 -0
  222. package/dist/alt/route-handler.js +122 -0
  223. package/dist/alt/route-handler.js.map +1 -0
  224. package/dist/alt/suggester.d.ts +57 -0
  225. package/dist/alt/suggester.d.ts.map +1 -0
  226. package/dist/alt/suggester.js +133 -0
  227. package/dist/alt/suggester.js.map +1 -0
  228. package/dist/app.js +1 -1
  229. package/dist/app.js.map +1 -1
  230. package/dist/archive-aliases.d.ts +79 -0
  231. package/dist/archive-aliases.d.ts.map +1 -0
  232. package/dist/archive-aliases.js +60 -0
  233. package/dist/archive-aliases.js.map +1 -0
  234. package/dist/archive-helpers.d.ts +73 -0
  235. package/dist/archive-helpers.d.ts.map +1 -0
  236. package/dist/archive-helpers.js +94 -0
  237. package/dist/archive-helpers.js.map +1 -0
  238. package/dist/assets/find-refs.d.ts +1 -1
  239. package/dist/assets/find-refs.js +1 -1
  240. package/dist/assets/find-refs.js.map +1 -1
  241. package/dist/assets/rename.js +1 -1
  242. package/dist/assets/rename.js.map +1 -1
  243. package/dist/assets/replace.js +1 -1
  244. package/dist/assets/replace.js.map +1 -1
  245. package/dist/assets/resolve.js +4 -4
  246. package/dist/assets/resolve.js.map +1 -1
  247. package/dist/assets/serve-route.js +2 -2
  248. package/dist/assets/serve-route.js.map +1 -1
  249. package/dist/assets/validate.d.ts +1 -1
  250. package/dist/assets/validate.js +1 -1
  251. package/dist/audit/config.d.ts +75 -0
  252. package/dist/audit/config.d.ts.map +1 -0
  253. package/dist/audit/config.js +91 -0
  254. package/dist/audit/config.js.map +1 -0
  255. package/dist/audit/context.d.ts +98 -0
  256. package/dist/audit/context.d.ts.map +1 -0
  257. package/dist/audit/context.js +51 -0
  258. package/dist/audit/context.js.map +1 -0
  259. package/dist/audit/errors.d.ts +73 -0
  260. package/dist/audit/errors.d.ts.map +1 -0
  261. package/dist/audit/errors.js +78 -0
  262. package/dist/audit/errors.js.map +1 -0
  263. package/dist/audit/index.d.ts +16 -0
  264. package/dist/audit/index.d.ts.map +1 -0
  265. package/dist/audit/index.js +10 -0
  266. package/dist/audit/index.js.map +1 -0
  267. package/dist/audit/provider.d.ts +73 -0
  268. package/dist/audit/provider.d.ts.map +1 -0
  269. package/dist/audit/provider.js +2 -0
  270. package/dist/audit/provider.js.map +1 -0
  271. package/dist/audit/providers/history.d.ts +66 -0
  272. package/dist/audit/providers/history.d.ts.map +1 -0
  273. package/dist/audit/providers/history.js +102 -0
  274. package/dist/audit/providers/history.js.map +1 -0
  275. package/dist/audit/pseudonymize.d.ts +26 -0
  276. package/dist/audit/pseudonymize.d.ts.map +1 -0
  277. package/dist/audit/pseudonymize.js +86 -0
  278. package/dist/audit/pseudonymize.js.map +1 -0
  279. package/dist/audit/recorder.d.ts +102 -0
  280. package/dist/audit/recorder.d.ts.map +1 -0
  281. package/dist/audit/recorder.js +55 -0
  282. package/dist/audit/recorder.js.map +1 -0
  283. package/dist/audit/retention.d.ts +83 -0
  284. package/dist/audit/retention.d.ts.map +1 -0
  285. package/dist/audit/retention.js +142 -0
  286. package/dist/audit/retention.js.map +1 -0
  287. package/dist/audit/source-ip.d.ts +32 -0
  288. package/dist/audit/source-ip.d.ts.map +1 -0
  289. package/dist/audit/source-ip.js +164 -0
  290. package/dist/audit/source-ip.js.map +1 -0
  291. package/dist/audit/types.d.ts +143 -0
  292. package/dist/audit/types.d.ts.map +1 -0
  293. package/dist/audit/types.js +33 -0
  294. package/dist/audit/types.js.map +1 -0
  295. package/dist/audit/user-agent.d.ts +28 -0
  296. package/dist/audit/user-agent.d.ts.map +1 -0
  297. package/dist/audit/user-agent.js +63 -0
  298. package/dist/audit/user-agent.js.map +1 -0
  299. package/dist/auth/capabilities.d.ts +28 -0
  300. package/dist/auth/capabilities.d.ts.map +1 -0
  301. package/dist/auth/capabilities.js +101 -0
  302. package/dist/auth/capabilities.js.map +1 -0
  303. package/dist/auth/config.d.ts +109 -0
  304. package/dist/auth/config.d.ts.map +1 -0
  305. package/dist/auth/config.js +221 -0
  306. package/dist/auth/config.js.map +1 -0
  307. package/dist/auth/errors.d.ts +72 -0
  308. package/dist/auth/errors.d.ts.map +1 -0
  309. package/dist/auth/errors.js +78 -0
  310. package/dist/auth/errors.js.map +1 -0
  311. package/dist/auth/factory.d.ts +43 -0
  312. package/dist/auth/factory.d.ts.map +1 -0
  313. package/dist/auth/factory.js +48 -0
  314. package/dist/auth/factory.js.map +1 -0
  315. package/dist/auth/index.d.ts +21 -0
  316. package/dist/auth/index.d.ts.map +1 -0
  317. package/dist/auth/index.js +14 -0
  318. package/dist/auth/index.js.map +1 -0
  319. package/dist/auth/ip-match.d.ts +29 -0
  320. package/dist/auth/ip-match.d.ts.map +1 -0
  321. package/dist/auth/ip-match.js +162 -0
  322. package/dist/auth/ip-match.js.map +1 -0
  323. package/dist/auth/provider.d.ts +76 -0
  324. package/dist/auth/provider.d.ts.map +1 -0
  325. package/dist/auth/provider.js +2 -0
  326. package/dist/auth/provider.js.map +1 -0
  327. package/dist/auth/providers/aws-cognito.d.ts +55 -0
  328. package/dist/auth/providers/aws-cognito.d.ts.map +1 -0
  329. package/dist/auth/providers/aws-cognito.js +114 -0
  330. package/dist/auth/providers/aws-cognito.js.map +1 -0
  331. package/dist/auth/providers/azure-easy-auth.d.ts +7 -0
  332. package/dist/auth/providers/azure-easy-auth.d.ts.map +1 -0
  333. package/dist/auth/providers/azure-easy-auth.js +48 -0
  334. package/dist/auth/providers/azure-easy-auth.js.map +1 -0
  335. package/dist/auth/providers/cloudflare-access.d.ts +71 -0
  336. package/dist/auth/providers/cloudflare-access.d.ts.map +1 -0
  337. package/dist/auth/providers/cloudflare-access.js +120 -0
  338. package/dist/auth/providers/cloudflare-access.js.map +1 -0
  339. package/dist/auth/providers/forwarded-user.d.ts +31 -0
  340. package/dist/auth/providers/forwarded-user.d.ts.map +1 -0
  341. package/dist/auth/providers/forwarded-user.js +72 -0
  342. package/dist/auth/providers/forwarded-user.js.map +1 -0
  343. package/dist/auth/providers/none.d.ts +6 -0
  344. package/dist/auth/providers/none.d.ts.map +1 -0
  345. package/dist/auth/providers/none.js +19 -0
  346. package/dist/auth/providers/none.js.map +1 -0
  347. package/dist/auth/providers/tailscale.d.ts +7 -0
  348. package/dist/auth/providers/tailscale.d.ts.map +1 -0
  349. package/dist/auth/providers/tailscale.js +30 -0
  350. package/dist/auth/providers/tailscale.js.map +1 -0
  351. package/dist/auth/role-resolver.d.ts +38 -0
  352. package/dist/auth/role-resolver.d.ts.map +1 -0
  353. package/dist/auth/role-resolver.js +92 -0
  354. package/dist/auth/role-resolver.js.map +1 -0
  355. package/dist/auth/types.d.ts +150 -0
  356. package/dist/auth/types.d.ts.map +1 -0
  357. package/dist/auth/types.js +60 -0
  358. package/dist/auth/types.js.map +1 -0
  359. package/dist/cache/errors.d.ts +41 -0
  360. package/dist/cache/errors.d.ts.map +1 -0
  361. package/dist/cache/errors.js +44 -0
  362. package/dist/cache/errors.js.map +1 -0
  363. package/dist/cache/factories.d.ts +17 -0
  364. package/dist/cache/factories.d.ts.map +1 -0
  365. package/dist/cache/factories.js +17 -0
  366. package/dist/cache/factories.js.map +1 -0
  367. package/dist/cache/keys.d.ts +63 -0
  368. package/dist/cache/keys.d.ts.map +1 -0
  369. package/dist/cache/keys.js +145 -0
  370. package/dist/cache/keys.js.map +1 -0
  371. package/dist/cache/memory.d.ts +51 -0
  372. package/dist/cache/memory.d.ts.map +1 -0
  373. package/dist/cache/memory.js +204 -0
  374. package/dist/cache/memory.js.map +1 -0
  375. package/dist/cache/per-site.d.ts +22 -0
  376. package/dist/cache/per-site.d.ts.map +1 -0
  377. package/dist/cache/per-site.js +114 -0
  378. package/dist/cache/per-site.js.map +1 -0
  379. package/dist/cache/types.d.ts +142 -0
  380. package/dist/cache/types.d.ts.map +1 -0
  381. package/dist/cache/types.js +33 -0
  382. package/dist/cache/types.js.map +1 -0
  383. package/dist/cli/archive.d.ts +44 -0
  384. package/dist/cli/archive.d.ts.map +1 -0
  385. package/dist/cli/archive.js +310 -0
  386. package/dist/cli/archive.js.map +1 -0
  387. package/dist/cli/bootstrap.d.ts +15 -8
  388. package/dist/cli/bootstrap.d.ts.map +1 -1
  389. package/dist/cli/bootstrap.js +59 -23
  390. package/dist/cli/bootstrap.js.map +1 -1
  391. package/dist/cli/dev-template-watcher.d.ts +29 -0
  392. package/dist/cli/dev-template-watcher.d.ts.map +1 -0
  393. package/dist/cli/dev-template-watcher.js +38 -0
  394. package/dist/cli/dev-template-watcher.js.map +1 -0
  395. package/dist/cli/history.d.ts.map +1 -1
  396. package/dist/cli/history.js +5 -3
  397. package/dist/cli/history.js.map +1 -1
  398. package/dist/cli/index.js +712 -395
  399. package/dist/cli/index.js.map +1 -1
  400. package/dist/cli/validate-flags.d.ts +29 -0
  401. package/dist/cli/validate-flags.d.ts.map +1 -0
  402. package/dist/cli/validate-flags.js +49 -0
  403. package/dist/cli/validate-flags.js.map +1 -0
  404. package/dist/compare.d.ts +1 -1
  405. package/dist/compare.d.ts.map +1 -1
  406. package/dist/compare.js +25 -23
  407. package/dist/compare.js.map +1 -1
  408. package/dist/component-ids.d.ts +25 -0
  409. package/dist/component-ids.d.ts.map +1 -0
  410. package/dist/component-ids.js +83 -0
  411. package/dist/component-ids.js.map +1 -0
  412. package/dist/config/define.d.ts +61 -0
  413. package/dist/config/define.d.ts.map +1 -0
  414. package/dist/config/define.js +64 -0
  415. package/dist/config/define.js.map +1 -0
  416. package/dist/config/errors.d.ts +32 -0
  417. package/dist/config/errors.d.ts.map +1 -0
  418. package/dist/config/errors.js +40 -0
  419. package/dist/config/errors.js.map +1 -0
  420. package/dist/config/index.d.ts +13 -0
  421. package/dist/config/index.d.ts.map +1 -0
  422. package/dist/config/index.js +20 -0
  423. package/dist/config/index.js.map +1 -0
  424. package/dist/config/loader.d.ts +105 -0
  425. package/dist/config/loader.d.ts.map +1 -0
  426. package/dist/config/loader.js +265 -0
  427. package/dist/config/loader.js.map +1 -0
  428. package/dist/config/schemas.d.ts +89 -0
  429. package/dist/config/schemas.d.ts.map +1 -0
  430. package/dist/config/schemas.js +172 -0
  431. package/dist/config/schemas.js.map +1 -0
  432. package/dist/config/types.d.ts +32 -0
  433. package/dist/config/types.d.ts.map +1 -0
  434. package/dist/config/types.js +15 -0
  435. package/dist/config/types.js.map +1 -0
  436. package/dist/deploy/cloudflare-workers.d.ts +46 -0
  437. package/dist/deploy/cloudflare-workers.d.ts.map +1 -0
  438. package/dist/deploy/cloudflare-workers.js +213 -0
  439. package/dist/deploy/cloudflare-workers.js.map +1 -0
  440. package/dist/deploy/errors.d.ts +66 -0
  441. package/dist/deploy/errors.d.ts.map +1 -0
  442. package/dist/deploy/errors.js +82 -0
  443. package/dist/deploy/errors.js.map +1 -0
  444. package/dist/deploy/index.d.ts +9 -0
  445. package/dist/deploy/index.d.ts.map +1 -0
  446. package/dist/deploy/index.js +3 -0
  447. package/dist/deploy/index.js.map +1 -0
  448. package/dist/deploy/types.d.ts +162 -0
  449. package/dist/deploy/types.d.ts.map +1 -0
  450. package/dist/deploy/types.js +2 -0
  451. package/dist/deploy/types.js.map +1 -0
  452. package/dist/fragments/create.d.ts +70 -0
  453. package/dist/fragments/create.d.ts.map +1 -0
  454. package/dist/fragments/create.js +93 -0
  455. package/dist/fragments/create.js.map +1 -0
  456. package/dist/fragments/publish.d.ts +37 -0
  457. package/dist/fragments/publish.d.ts.map +1 -0
  458. package/dist/fragments/publish.js +52 -0
  459. package/dist/fragments/publish.js.map +1 -0
  460. package/dist/fragments/save.d.ts +81 -0
  461. package/dist/fragments/save.d.ts.map +1 -0
  462. package/dist/fragments/save.js +105 -0
  463. package/dist/fragments/save.js.map +1 -0
  464. package/dist/history-recorder.d.ts +5 -5
  465. package/dist/history-recorder.d.ts.map +1 -1
  466. package/dist/history-recorder.js +4 -4
  467. package/dist/history-recorder.js.map +1 -1
  468. package/dist/history-restorer.js +2 -2
  469. package/dist/history-restorer.js.map +1 -1
  470. package/dist/history.d.ts +1 -1
  471. package/dist/hooks/audit-emitter.d.ts +73 -0
  472. package/dist/hooks/audit-emitter.d.ts.map +1 -0
  473. package/dist/hooks/audit-emitter.js +13 -0
  474. package/dist/hooks/audit-emitter.js.map +1 -0
  475. package/dist/hooks/context.d.ts +78 -0
  476. package/dist/hooks/context.d.ts.map +1 -0
  477. package/dist/hooks/context.js +56 -0
  478. package/dist/hooks/context.js.map +1 -0
  479. package/dist/hooks/contribution.d.ts +90 -0
  480. package/dist/hooks/contribution.d.ts.map +1 -0
  481. package/dist/hooks/contribution.js +2 -0
  482. package/dist/hooks/contribution.js.map +1 -0
  483. package/dist/hooks/dispatch.d.ts +30 -0
  484. package/dist/hooks/dispatch.d.ts.map +1 -0
  485. package/dist/hooks/dispatch.js +252 -0
  486. package/dist/hooks/dispatch.js.map +1 -0
  487. package/dist/hooks/errors.d.ts +100 -0
  488. package/dist/hooks/errors.d.ts.map +1 -0
  489. package/dist/hooks/errors.js +103 -0
  490. package/dist/hooks/errors.js.map +1 -0
  491. package/dist/hooks/index.d.ts +15 -0
  492. package/dist/hooks/index.d.ts.map +1 -0
  493. package/dist/hooks/index.js +6 -0
  494. package/dist/hooks/index.js.map +1 -0
  495. package/dist/hooks/registry.d.ts +53 -0
  496. package/dist/hooks/registry.d.ts.map +1 -0
  497. package/dist/hooks/registry.js +139 -0
  498. package/dist/hooks/registry.js.map +1 -0
  499. package/dist/hooks/storage.d.ts +43 -0
  500. package/dist/hooks/storage.d.ts.map +1 -0
  501. package/dist/hooks/storage.js +2 -0
  502. package/dist/hooks/storage.js.map +1 -0
  503. package/dist/hooks/types.d.ts +324 -0
  504. package/dist/hooks/types.d.ts.map +1 -0
  505. package/dist/hooks/types.js +2 -0
  506. package/dist/hooks/types.js.map +1 -0
  507. package/dist/index.d.ts +26 -6
  508. package/dist/index.d.ts.map +1 -1
  509. package/dist/index.js +49 -5
  510. package/dist/index.js.map +1 -1
  511. package/dist/locale.d.ts +5 -1
  512. package/dist/locale.d.ts.map +1 -1
  513. package/dist/locale.js +6 -2
  514. package/dist/locale.js.map +1 -1
  515. package/dist/manifest-save.d.ts +255 -0
  516. package/dist/manifest-save.d.ts.map +1 -0
  517. package/dist/manifest-save.js +260 -0
  518. package/dist/manifest-save.js.map +1 -0
  519. package/dist/manifest.d.ts +1 -2
  520. package/dist/manifest.d.ts.map +1 -1
  521. package/dist/manifest.js +43 -44
  522. package/dist/manifest.js.map +1 -1
  523. package/dist/node-floor.d.ts +3 -0
  524. package/dist/node-floor.d.ts.map +1 -0
  525. package/dist/node-floor.js +3 -0
  526. package/dist/node-floor.js.map +1 -0
  527. package/dist/pages/create.d.ts +103 -0
  528. package/dist/pages/create.d.ts.map +1 -0
  529. package/dist/pages/create.js +117 -0
  530. package/dist/pages/create.js.map +1 -0
  531. package/dist/pages/publish.d.ts +59 -0
  532. package/dist/pages/publish.d.ts.map +1 -0
  533. package/dist/pages/publish.js +78 -0
  534. package/dist/pages/publish.js.map +1 -0
  535. package/dist/pages/save.d.ts +97 -0
  536. package/dist/pages/save.d.ts.map +1 -0
  537. package/dist/pages/save.js +138 -0
  538. package/dist/pages/save.js.map +1 -0
  539. package/dist/providers/factories.d.ts +65 -0
  540. package/dist/providers/factories.d.ts.map +1 -0
  541. package/dist/providers/factories.js +189 -0
  542. package/dist/providers/factories.js.map +1 -0
  543. package/dist/publish-item.d.ts +225 -0
  544. package/dist/publish-item.d.ts.map +1 -0
  545. package/dist/publish-item.js +210 -0
  546. package/dist/publish-item.js.map +1 -0
  547. package/dist/publish-rendered.d.ts.map +1 -1
  548. package/dist/publish-rendered.js +75 -6
  549. package/dist/publish-rendered.js.map +1 -1
  550. package/dist/publish-renderers.d.ts +132 -0
  551. package/dist/publish-renderers.d.ts.map +1 -0
  552. package/dist/publish-renderers.js +240 -0
  553. package/dist/publish-renderers.js.map +1 -0
  554. package/dist/publish-run.d.ts +223 -0
  555. package/dist/publish-run.d.ts.map +1 -0
  556. package/dist/publish-run.js +307 -0
  557. package/dist/publish-run.js.map +1 -0
  558. package/dist/publish.d.ts.map +1 -1
  559. package/dist/publish.js +1 -10
  560. package/dist/publish.js.map +1 -1
  561. package/dist/render-for-analysis.d.ts +24 -0
  562. package/dist/render-for-analysis.d.ts.map +1 -0
  563. package/dist/render-for-analysis.js +146 -0
  564. package/dist/render-for-analysis.js.map +1 -0
  565. package/dist/resolver.d.ts.map +1 -1
  566. package/dist/resolver.js +47 -23
  567. package/dist/resolver.js.map +1 -1
  568. package/dist/runtime/archive-marker.d.ts +62 -0
  569. package/dist/runtime/archive-marker.d.ts.map +1 -0
  570. package/dist/runtime/archive-marker.js +88 -0
  571. package/dist/runtime/archive-marker.js.map +1 -0
  572. package/dist/runtime/capability-gap-warnings.d.ts +42 -0
  573. package/dist/runtime/capability-gap-warnings.d.ts.map +1 -0
  574. package/dist/runtime/capability-gap-warnings.js +28 -0
  575. package/dist/runtime/capability-gap-warnings.js.map +1 -0
  576. package/dist/runtime/redirects-emit.d.ts +93 -0
  577. package/dist/runtime/redirects-emit.d.ts.map +1 -0
  578. package/dist/runtime/redirects-emit.js +89 -0
  579. package/dist/runtime/redirects-emit.js.map +1 -0
  580. package/dist/runtime/runtime-capabilities.d.ts +79 -0
  581. package/dist/runtime/runtime-capabilities.d.ts.map +1 -0
  582. package/dist/runtime/runtime-capabilities.js +60 -0
  583. package/dist/runtime/runtime-capabilities.js.map +1 -0
  584. package/dist/save-etag.d.ts +69 -0
  585. package/dist/save-etag.d.ts.map +1 -0
  586. package/dist/save-etag.js +118 -0
  587. package/dist/save-etag.js.map +1 -0
  588. package/dist/site-loader.d.ts +42 -4
  589. package/dist/site-loader.d.ts.map +1 -1
  590. package/dist/site-loader.js +27 -8
  591. package/dist/site-loader.js.map +1 -1
  592. package/dist/targets.d.ts +21 -12
  593. package/dist/targets.d.ts.map +1 -1
  594. package/dist/targets.js +27 -95
  595. package/dist/targets.js.map +1 -1
  596. package/dist/testing/admin-cache-contract.d.ts +52 -0
  597. package/dist/testing/admin-cache-contract.d.ts.map +1 -0
  598. package/dist/testing/admin-cache-contract.js +203 -0
  599. package/dist/testing/admin-cache-contract.js.map +1 -0
  600. package/dist/testing/index.d.ts +11 -0
  601. package/dist/testing/index.d.ts.map +1 -0
  602. package/dist/testing/index.js +11 -0
  603. package/dist/testing/index.js.map +1 -0
  604. package/dist/transforms/factories.d.ts +16 -0
  605. package/dist/transforms/factories.d.ts.map +1 -0
  606. package/dist/transforms/factories.js +18 -0
  607. package/dist/transforms/factories.js.map +1 -0
  608. package/dist/transforms/index.d.ts +10 -17
  609. package/dist/transforms/index.d.ts.map +1 -1
  610. package/dist/transforms/index.js +4 -28
  611. package/dist/transforms/index.js.map +1 -1
  612. package/dist/transforms/sharp.d.ts +15 -1
  613. package/dist/transforms/sharp.d.ts.map +1 -1
  614. package/dist/transforms/sharp.js +34 -20
  615. package/dist/transforms/sharp.js.map +1 -1
  616. package/dist/types.d.ts +379 -52
  617. package/dist/types.d.ts.map +1 -1
  618. package/dist/types.js +20 -1
  619. package/dist/types.js.map +1 -1
  620. package/dist/validation/alt-required-walker.d.ts +27 -0
  621. package/dist/validation/alt-required-walker.d.ts.map +1 -0
  622. package/dist/validation/alt-required-walker.js +108 -0
  623. package/dist/validation/alt-required-walker.js.map +1 -0
  624. package/dist/validation/default-registry.d.ts +12 -0
  625. package/dist/validation/default-registry.d.ts.map +1 -0
  626. package/dist/validation/default-registry.js +55 -0
  627. package/dist/validation/default-registry.js.map +1 -0
  628. package/dist/validation/publish-audit.d.ts +44 -0
  629. package/dist/validation/publish-audit.d.ts.map +1 -0
  630. package/dist/validation/publish-audit.js +64 -0
  631. package/dist/validation/publish-audit.js.map +1 -0
  632. package/dist/validation/registry.d.ts +23 -0
  633. package/dist/validation/registry.d.ts.map +1 -0
  634. package/dist/validation/registry.js +15 -0
  635. package/dist/validation/registry.js.map +1 -0
  636. package/dist/validation/save-delta.d.ts +46 -0
  637. package/dist/validation/save-delta.d.ts.map +1 -0
  638. package/dist/validation/save-delta.js +57 -0
  639. package/dist/validation/save-delta.js.map +1 -0
  640. package/dist/validation/scanner.d.ts +91 -0
  641. package/dist/validation/scanner.d.ts.map +1 -0
  642. package/dist/validation/scanner.js +327 -0
  643. package/dist/validation/scanner.js.map +1 -0
  644. package/dist/validation/template-impact.d.ts +52 -0
  645. package/dist/validation/template-impact.d.ts.map +1 -0
  646. package/dist/validation/template-impact.js +53 -0
  647. package/dist/validation/template-impact.js.map +1 -0
  648. package/dist/validation/types.d.ts +123 -0
  649. package/dist/validation/types.d.ts.map +1 -0
  650. package/dist/validation/types.js +7 -0
  651. package/dist/validation/types.js.map +1 -0
  652. package/dist/validation/validators/accessibility.d.ts +3 -0
  653. package/dist/validation/validators/accessibility.d.ts.map +1 -0
  654. package/dist/validation/validators/accessibility.js +106 -0
  655. package/dist/validation/validators/accessibility.js.map +1 -0
  656. package/dist/validation/validators/aliasof-points-to-archived.d.ts +40 -0
  657. package/dist/validation/validators/aliasof-points-to-archived.d.ts.map +1 -0
  658. package/dist/validation/validators/aliasof-points-to-archived.js +34 -0
  659. package/dist/validation/validators/aliasof-points-to-archived.js.map +1 -0
  660. package/dist/validation/validators/alt-required.d.ts +3 -0
  661. package/dist/validation/validators/alt-required.d.ts.map +1 -0
  662. package/dist/validation/validators/alt-required.js +118 -0
  663. package/dist/validation/validators/alt-required.js.map +1 -0
  664. package/dist/validation/validators/archive-not-supported-on-target.d.ts +3 -0
  665. package/dist/validation/validators/archive-not-supported-on-target.d.ts.map +1 -0
  666. package/dist/validation/validators/archive-not-supported-on-target.js +38 -0
  667. package/dist/validation/validators/archive-not-supported-on-target.js.map +1 -0
  668. package/dist/validation/validators/broken-links.d.ts +3 -0
  669. package/dist/validation/validators/broken-links.d.ts.map +1 -0
  670. package/dist/validation/validators/broken-links.js +190 -0
  671. package/dist/validation/validators/broken-links.js.map +1 -0
  672. package/dist/validation/validators/circular-alias.d.ts +36 -0
  673. package/dist/validation/validators/circular-alias.d.ts.map +1 -0
  674. package/dist/validation/validators/circular-alias.js +63 -0
  675. package/dist/validation/validators/circular-alias.js.map +1 -0
  676. package/dist/validation/validators/circular-fragment.d.ts +15 -0
  677. package/dist/validation/validators/circular-fragment.d.ts.map +1 -0
  678. package/dist/validation/validators/circular-fragment.js +97 -0
  679. package/dist/validation/validators/circular-fragment.js.map +1 -0
  680. package/dist/validation/validators/dangling-alias.d.ts +38 -0
  681. package/dist/validation/validators/dangling-alias.d.ts.map +1 -0
  682. package/dist/validation/validators/dangling-alias.js +31 -0
  683. package/dist/validation/validators/dangling-alias.js.map +1 -0
  684. package/dist/validation/validators/deploy-target-type-supported.d.ts +3 -0
  685. package/dist/validation/validators/deploy-target-type-supported.d.ts.map +1 -0
  686. package/dist/validation/validators/deploy-target-type-supported.js +32 -0
  687. package/dist/validation/validators/deploy-target-type-supported.js.map +1 -0
  688. package/dist/validation/validators/dynamic-route-conflict.d.ts +18 -0
  689. package/dist/validation/validators/dynamic-route-conflict.d.ts.map +1 -0
  690. package/dist/validation/validators/dynamic-route-conflict.js +80 -0
  691. package/dist/validation/validators/dynamic-route-conflict.js.map +1 -0
  692. package/dist/validation/validators/html-validity.d.ts +3 -0
  693. package/dist/validation/validators/html-validity.d.ts.map +1 -0
  694. package/dist/validation/validators/html-validity.js +89 -0
  695. package/dist/validation/validators/html-validity.js.map +1 -0
  696. package/dist/validation/validators/orphaned-locale-file.d.ts +21 -0
  697. package/dist/validation/validators/orphaned-locale-file.d.ts.map +1 -0
  698. package/dist/validation/validators/orphaned-locale-file.js +84 -0
  699. package/dist/validation/validators/orphaned-locale-file.js.map +1 -0
  700. package/dist/validation/validators/referenced-archived-without-alias.d.ts +3 -0
  701. package/dist/validation/validators/referenced-archived-without-alias.d.ts.map +1 -0
  702. package/dist/validation/validators/referenced-archived-without-alias.js +65 -0
  703. package/dist/validation/validators/referenced-archived-without-alias.js.map +1 -0
  704. package/dist/validation/validators/referenced-asset-exists.d.ts +13 -0
  705. package/dist/validation/validators/referenced-asset-exists.d.ts.map +1 -0
  706. package/dist/validation/validators/referenced-asset-exists.js +80 -0
  707. package/dist/validation/validators/referenced-asset-exists.js.map +1 -0
  708. package/dist/validation/validators/referenced-fragment-exists.d.ts +9 -0
  709. package/dist/validation/validators/referenced-fragment-exists.d.ts.map +1 -0
  710. package/dist/validation/validators/referenced-fragment-exists.js +52 -0
  711. package/dist/validation/validators/referenced-fragment-exists.js.map +1 -0
  712. package/dist/validation/validators/referenced-template-exists.d.ts +10 -0
  713. package/dist/validation/validators/referenced-template-exists.d.ts.map +1 -0
  714. package/dist/validation/validators/referenced-template-exists.js +74 -0
  715. package/dist/validation/validators/referenced-template-exists.js.map +1 -0
  716. package/dist/validation/validators/schema-conformance.d.ts +17 -0
  717. package/dist/validation/validators/schema-conformance.d.ts.map +1 -0
  718. package/dist/validation/validators/schema-conformance.js +94 -0
  719. package/dist/validation/validators/schema-conformance.js.map +1 -0
  720. package/dist/validation/validators/target-deploy-coverage.d.ts +3 -0
  721. package/dist/validation/validators/target-deploy-coverage.d.ts.map +1 -0
  722. package/dist/validation/validators/target-deploy-coverage.js +37 -0
  723. package/dist/validation/validators/target-deploy-coverage.js.map +1 -0
  724. package/dist/validation/validators/unused-fragment.d.ts +16 -0
  725. package/dist/validation/validators/unused-fragment.d.ts.map +1 -0
  726. package/dist/validation/validators/unused-fragment.js +86 -0
  727. package/dist/validation/validators/unused-fragment.js.map +1 -0
  728. package/package.json +54 -31
  729. package/admin-dist/assets/index-BO9-CXmW.css +0 -1
  730. package/admin-dist/assets/index-Ufu8zZH_.js +0 -668
  731. package/admin-dist/assets/rolldown-runtime-COnpUsM8.js +0 -1
  732. package/admin-dist/assets/vendor-rjsf-HKBAjOmQ.js +0 -32
  733. package/admin-dist/assets/vendor-tiptap-IyO99U4R.js +0 -142
  734. package/admin-dist/assets/vendor-vue-D3wBSmDf.js +0 -1
  735. package/dist/publish-locale.d.ts +0 -44
  736. package/dist/publish-locale.d.ts.map +0 -1
  737. package/dist/publish-locale.js +0 -103
  738. package/dist/publish-locale.js.map +0 -1
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Page Save — kind-specific wrapper around `saveManifestCore`.
3
+ *
4
+ * Owns the bits unique to Page Manifest writes:
5
+ * - Locale resolution (default vs `page.{locale}.json` variant)
6
+ * using `site.pages` + `site.pageLocales`
7
+ * - Component-ID auto-assignment via `ensureComponentIds`
8
+ * - Filename composition (`page.json` vs `page.{locale}.json`)
9
+ * - Manifest assembly (template/content/components/metadata, plus
10
+ * route preservation for locale variants)
11
+ * - The `route` field in `etagExtras` (folder-derived; not stored
12
+ * in the file but part of the etag projection chain per
13
+ * `design-offline.md` Q3)
14
+ * - Per-kind cache prefix `pages:`
15
+ *
16
+ * Everything downstream — etag check, validators, beforeSave hooks,
17
+ * history, write, sidecars, cache invalidate, audit, afterSave hooks,
18
+ * scanner — is `saveManifestCore`'s spine. This wrapper is the
19
+ * Page-flavored thin entry point routes (and the future CLI / plugin
20
+ * routes) call.
21
+ *
22
+ * Per Q3 lock: two fns + shared core. The 5 page-specific diffs
23
+ * (route field, locale lookup in `site.pages`, page-cache prefix,
24
+ * filename, route preservation in locale variants) live here in
25
+ * one file the reader can scan top-to-bottom.
26
+ */
27
+ import { join } from 'node:path';
28
+ import { ensureComponentIds } from '../component-ids.js';
29
+ import { isValidLocale } from '../locale.js';
30
+ import { saveManifestCore, } from '../manifest-save.js';
31
+ /**
32
+ * Page-name-not-found error. The route projects this to a 404; the
33
+ * pipeline can't compose the full save without a `before` manifest
34
+ * (etag check, validators, sidecar diffs all need it). Distinct
35
+ * from the typed `SaveResult` variants because absence-of-target is
36
+ * a route-level precondition, not a save-pipeline outcome.
37
+ */
38
+ export class PageNotFoundError extends Error {
39
+ name;
40
+ constructor(name) {
41
+ super(`Page "${name}" not found`);
42
+ this.name = name;
43
+ this.name = 'PageNotFoundError';
44
+ }
45
+ }
46
+ /**
47
+ * Invalid locale code per `isValidLocale`. Routes project to 400.
48
+ */
49
+ export class InvalidLocaleError extends Error {
50
+ raw;
51
+ constructor(raw) {
52
+ super(`Invalid locale code: "${raw}"`);
53
+ this.raw = raw;
54
+ this.name = 'InvalidLocaleError';
55
+ }
56
+ }
57
+ /**
58
+ * Save a Page Manifest. Wraps `saveManifestCore` with the Page-specific
59
+ * resolution + assembly. Throws `PageNotFoundError` / `InvalidLocaleError`
60
+ * for route-level preconditions; returns `SaveResult` for save outcomes.
61
+ *
62
+ * Caller responsibilities:
63
+ * - Capability check (`requireCapability('edit:pages')`) before calling
64
+ * - HTTP projection of `SaveResult` (200 success, 409 STALE /
65
+ * VALIDATION_FAILED / HOOK_CANCELLED with appropriate body shape)
66
+ * - Setting the `ETag` response header on success from `result.etag`
67
+ */
68
+ export async function savePage(input) {
69
+ // Locale validation — surface invalid codes as a typed error so
70
+ // routes can project to 400 without parsing the message. Mirrors
71
+ // pages.ts:292-294.
72
+ let locale;
73
+ if (input.locale !== undefined) {
74
+ if (!isValidLocale(input.locale))
75
+ throw new InvalidLocaleError(input.locale);
76
+ locale = input.locale.toLowerCase();
77
+ }
78
+ // Resolve the page to update — locale variant or default. Mirrors
79
+ // pages.ts:300-304. The default page MUST exist (creates go through
80
+ // a separate `createPage` entry point — Cut 5).
81
+ const defaultPage = input.site.pages.get(input.name);
82
+ if (!defaultPage)
83
+ throw new PageNotFoundError(input.name);
84
+ const localeVariant = locale ? input.site.pageLocales.get(input.name)?.locales.get(locale) : undefined;
85
+ const page = localeVariant ?? defaultPage;
86
+ // Component-ID auto-assignment. Existing IDs preserved; ID-less
87
+ // components get NanoIDs. Per `design-collaboration.md` IDs are the
88
+ // load-bearing anchor for inline comments — running this on every
89
+ // save migrates pre-existing pages without a separate migration
90
+ // step. Mirrors pages.ts:349.
91
+ const components = ensureComponentIds(input.body.components ?? page.components);
92
+ // Manifest assembly — body fields override page fields; route
93
+ // preserved for locale variants (so preview resolution works).
94
+ // Mirrors pages.ts:350-358.
95
+ const manifest = {
96
+ template: input.body.template ?? page.template,
97
+ content: input.body.content ?? page.content,
98
+ components,
99
+ };
100
+ if (input.body.metadata !== undefined)
101
+ manifest.metadata = input.body.metadata;
102
+ else if (page.metadata)
103
+ manifest.metadata = page.metadata;
104
+ // Locale variants store their route for preview resolution
105
+ if (locale && page.route)
106
+ manifest.route = page.route;
107
+ // Filename + path composition. Default → `page.json`; locale
108
+ // variant → `page.{locale}.json`. Both live in the default page's
109
+ // dir (locale variants don't get their own folder).
110
+ const filename = locale ? `page.${locale}.json` : 'page.json';
111
+ const manifestPath = join(defaultPage.dir, filename);
112
+ // Hand off to the spine. Page-specific extras:
113
+ // - cacheInvalidatePrefixes: ['pages:'] only (Page Saves don't
114
+ // dirty fragments)
115
+ // - etagExtras: { route } — folder-derived, not stored in the
116
+ // file but part of the etag projection chain
117
+ return saveManifestCore({
118
+ kind: 'page',
119
+ name: input.name,
120
+ locale,
121
+ manifest,
122
+ before: page,
123
+ manifestPath,
124
+ ifMatch: input.ifMatch,
125
+ site: input.site,
126
+ cacheInvalidatePrefixes: ['pages:'],
127
+ etagExtras: { route: page.route },
128
+ source: input.source,
129
+ audit: input.audit,
130
+ principal: input.principal,
131
+ hookAuditEmit: input.hookAuditEmit,
132
+ validators: input.validators,
133
+ hooks: input.hooks,
134
+ scanner: input.scanner,
135
+ requestId: input.requestId,
136
+ });
137
+ }
138
+ //# sourceMappingURL=save.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/pages/save.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { StorageProvider } from '../types.js';
2
+ /** @internal — used by the config loader. Not part of the operator API. */
3
+ export declare function setConfigAnchor(absolutePath: string | null): void;
4
+ /** @internal — derive a config anchor from a config file path. */
5
+ export declare function configAnchorFromFile(filePath: string): string;
6
+ /**
7
+ * Operator-facing storage provider factories. Operators import these into
8
+ * `site.config.ts` and call them inline; the field's value IS the constructed
9
+ * `StorageProvider` instance (Path X — see `design-provider-config.md`).
10
+ *
11
+ * Each factory:
12
+ * 1. Validates required options at construction; throws Error with a message
13
+ * naming the missing/invalid field.
14
+ * 2. Delegates to the internal `create*Provider` factory for the actual
15
+ * construction. Internal factories stay public for tests + advanced wiring.
16
+ *
17
+ * Optional SDK dependencies (Azure, AWS S3) are loaded lazily on first method
18
+ * call so sites that don't use those providers don't pay the install cost.
19
+ *
20
+ * Filesystem path semantics: paths are resolved by Node's filesystem APIs
21
+ * relative to `process.cwd()` (which is the project root when CLI commands
22
+ * run). Default `path` is `./targets/local`; operators wanting per-target
23
+ * paths specify them explicitly per the locked Phase 1 contract.
24
+ */
25
+ export interface FilesystemStorageOptions {
26
+ /** Storage root path. Relative paths resolve against CWD (project root
27
+ * when invoked via `gazetta` CLI). Absolute paths are used as-is.
28
+ * Default: `./targets/local`. */
29
+ path?: string;
30
+ }
31
+ /** Filesystem storage. Defaults `path` to `./targets/local`. Relative paths
32
+ * resolve against the directory of the `site.config.ts` (or
33
+ * `gazetta.config.ts`) that called this factory. Absolute paths are used
34
+ * as-is. Outside config-evaluation (tests, advanced wiring), relative
35
+ * paths fall back to CWD-relative resolution. */
36
+ export declare function filesystemStorage(opts?: FilesystemStorageOptions): StorageProvider;
37
+ export interface R2StorageOptions {
38
+ accountId: string;
39
+ bucket: string;
40
+ accessKeyId: string;
41
+ secretAccessKey: string;
42
+ /** Optional S3 region. Defaults to 'auto' for R2 per the SDK. */
43
+ region?: string;
44
+ }
45
+ /** Cloudflare R2 storage (S3-compatible). Requires `@aws-sdk/client-s3` +
46
+ * `@aws-sdk/lib-storage` as optional peer deps. */
47
+ export declare function r2Storage(opts: R2StorageOptions): StorageProvider;
48
+ export interface S3StorageOptions {
49
+ endpoint: string;
50
+ bucket: string;
51
+ accessKeyId: string;
52
+ secretAccessKey: string;
53
+ region?: string;
54
+ }
55
+ /** AWS S3 / MinIO / S3-compatible storage. Requires `@aws-sdk/client-s3` +
56
+ * `@aws-sdk/lib-storage`. */
57
+ export declare function s3Storage(opts: S3StorageOptions): StorageProvider;
58
+ export interface AzureBlobStorageOptions {
59
+ connectionString: string;
60
+ container: string;
61
+ }
62
+ /** Azure Blob storage. Requires `@azure/storage-blob`. Use
63
+ * `connectionString: 'UseDevelopmentStorage=true'` for the Azurite emulator. */
64
+ export declare function azureBlobStorage(opts: AzureBlobStorageOptions): StorageProvider;
65
+ //# sourceMappingURL=factories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../src/providers/factories.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AA0BlD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAEjE;AAMD,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,wBAAwB;IACvC;;sCAEkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;kDAIkD;AAClD,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,wBAA6B,GAAG,eAAe,CAKtF;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;oDACoD;AACpD,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,eAAe,CAwBjE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;8BAC8B;AAC9B,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,eAAe,CAiBjE;AAED,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;iFACiF;AACjF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,eAAe,CAI/E"}
@@ -0,0 +1,189 @@
1
+ import { dirname, isAbsolute, resolve } from 'node:path';
2
+ import { createFilesystemProvider } from './filesystem.js';
3
+ /**
4
+ * Anchor for relative filesystem paths during config evaluation. The config
5
+ * loader sets this to the directory of the config file currently being
6
+ * evaluated; `filesystemStorage()` reads it to resolve relative `path:`
7
+ * arguments against the config file's directory rather than CWD.
8
+ *
9
+ * Why `globalThis` rather than a module-level variable: jiti loads the
10
+ * operator's `site.config.ts` in a separate module graph from the host
11
+ * process. The `gazetta` package the operator imports inside the config
12
+ * is a different module instance from the one the loader imports — so
13
+ * a module-level variable set by the loader doesn't reach the factory
14
+ * called from the config. `globalThis` is shared across module graphs in
15
+ * the same process, so the state crosses the boundary.
16
+ *
17
+ * Cleared in a `finally` block by the loader after evaluation completes,
18
+ * preventing test harnesses + concurrent loads from leaking state.
19
+ */
20
+ const ANCHOR_KEY = '__gazettaConfigAnchor__';
21
+ /** @internal — used by the config loader. Not part of the operator API. */
22
+ export function setConfigAnchor(absolutePath) {
23
+ ;
24
+ globalThis[ANCHOR_KEY] = absolutePath;
25
+ }
26
+ function getConfigAnchor() {
27
+ return globalThis[ANCHOR_KEY] ?? null;
28
+ }
29
+ /** @internal — derive a config anchor from a config file path. */
30
+ export function configAnchorFromFile(filePath) {
31
+ return dirname(filePath);
32
+ }
33
+ /** Filesystem storage. Defaults `path` to `./targets/local`. Relative paths
34
+ * resolve against the directory of the `site.config.ts` (or
35
+ * `gazetta.config.ts`) that called this factory. Absolute paths are used
36
+ * as-is. Outside config-evaluation (tests, advanced wiring), relative
37
+ * paths fall back to CWD-relative resolution. */
38
+ export function filesystemStorage(opts = {}) {
39
+ const path = opts.path ?? './targets/local';
40
+ if (isAbsolute(path))
41
+ return createFilesystemProvider(path);
42
+ const anchor = getConfigAnchor();
43
+ return createFilesystemProvider(anchor ? resolve(anchor, path) : resolve(path));
44
+ }
45
+ /** Cloudflare R2 storage (S3-compatible). Requires `@aws-sdk/client-s3` +
46
+ * `@aws-sdk/lib-storage` as optional peer deps. */
47
+ export function r2Storage(opts) {
48
+ if (!opts.accountId)
49
+ throw new Error('r2Storage: "accountId" is required');
50
+ if (!opts.bucket)
51
+ throw new Error('r2Storage: "bucket" is required');
52
+ if (!opts.accessKeyId) {
53
+ throw new Error('r2Storage: "accessKeyId" is required. Set R2_ACCESS_KEY_ID and pass `process.env.R2_ACCESS_KEY_ID!`.\n' +
54
+ ' Create an R2 API token at https://dash.cloudflare.com/<account>/r2/api-tokens');
55
+ }
56
+ if (!opts.secretAccessKey) {
57
+ throw new Error('r2Storage: "secretAccessKey" is required. Set R2_SECRET_ACCESS_KEY in your env.');
58
+ }
59
+ return lazyS3Provider('r2Storage', {
60
+ endpoint: `https://${opts.accountId}.r2.cloudflarestorage.com`,
61
+ bucket: opts.bucket,
62
+ accessKeyId: opts.accessKeyId,
63
+ secretAccessKey: opts.secretAccessKey,
64
+ region: opts.region,
65
+ }, 'R2 storage requires @aws-sdk/client-s3 and @aws-sdk/lib-storage. ' +
66
+ 'Install them: npm install @aws-sdk/client-s3 @aws-sdk/lib-storage');
67
+ }
68
+ /** AWS S3 / MinIO / S3-compatible storage. Requires `@aws-sdk/client-s3` +
69
+ * `@aws-sdk/lib-storage`. */
70
+ export function s3Storage(opts) {
71
+ if (!opts.endpoint)
72
+ throw new Error('s3Storage: "endpoint" is required');
73
+ if (!opts.bucket)
74
+ throw new Error('s3Storage: "bucket" is required');
75
+ if (!opts.accessKeyId)
76
+ throw new Error('s3Storage: "accessKeyId" is required');
77
+ if (!opts.secretAccessKey)
78
+ throw new Error('s3Storage: "secretAccessKey" is required');
79
+ return lazyS3Provider('s3Storage', {
80
+ endpoint: opts.endpoint,
81
+ bucket: opts.bucket,
82
+ accessKeyId: opts.accessKeyId,
83
+ secretAccessKey: opts.secretAccessKey,
84
+ region: opts.region,
85
+ }, 'S3 storage requires @aws-sdk/client-s3 and @aws-sdk/lib-storage. ' +
86
+ 'Install them: npm install @aws-sdk/client-s3 @aws-sdk/lib-storage');
87
+ }
88
+ /** Azure Blob storage. Requires `@azure/storage-blob`. Use
89
+ * `connectionString: 'UseDevelopmentStorage=true'` for the Azurite emulator. */
90
+ export function azureBlobStorage(opts) {
91
+ if (!opts.connectionString)
92
+ throw new Error('azureBlobStorage: "connectionString" is required');
93
+ if (!opts.container)
94
+ throw new Error('azureBlobStorage: "container" is required');
95
+ return lazyAzureProvider(opts.connectionString, opts.container);
96
+ }
97
+ /**
98
+ * Wraps the internal S3 factory in a lazy-init proxy: the SDK is imported on
99
+ * the first method call, not at construction time. Construction always
100
+ * succeeds with valid options; auth + connectivity errors surface on first
101
+ * use (per Path X's construction-timing convention — see
102
+ * `design-provider-config.md` "Construction timing").
103
+ */
104
+ function lazyS3Provider(factoryName, args, missingSdkMessage) {
105
+ let real = null;
106
+ const ensure = async () => {
107
+ if (real)
108
+ return real;
109
+ let createS3Provider;
110
+ try {
111
+ ;
112
+ ({ createS3Provider } = await import('./s3.js'));
113
+ }
114
+ catch {
115
+ throw new Error(`${factoryName}: ${missingSdkMessage}`);
116
+ }
117
+ real = createS3Provider(args);
118
+ return real;
119
+ };
120
+ return makeLazyStorageProxy(ensure);
121
+ }
122
+ function lazyAzureProvider(connectionString, container) {
123
+ let real = null;
124
+ const ensure = async () => {
125
+ if (real)
126
+ return real;
127
+ let createAzureBlobProvider;
128
+ try {
129
+ ;
130
+ ({ createAzureBlobProvider } = await import('./azure-blob.js'));
131
+ }
132
+ catch {
133
+ throw new Error('azureBlobStorage: Azure Blob storage requires @azure/storage-blob. Install it: npm install @azure/storage-blob');
134
+ }
135
+ real = createAzureBlobProvider({ connectionString, container });
136
+ return real;
137
+ };
138
+ return makeLazyStorageProxy(ensure);
139
+ }
140
+ /**
141
+ * Returns a `StorageProvider` whose methods all defer to a real provider
142
+ * resolved on first invocation via `ensure()`. Per-method passthrough means
143
+ * the proxy contract matches `StorageProvider` exactly without inheritance.
144
+ *
145
+ * `init()` is exposed because the internal S3 + Azure providers offer it for
146
+ * connectivity probes (target registry's parallel-init pattern); the proxy
147
+ * forwards to the real provider's `init` when present.
148
+ */
149
+ function makeLazyStorageProxy(ensure) {
150
+ return {
151
+ async readFile(path) {
152
+ return (await ensure()).readFile(path);
153
+ },
154
+ async readDir(path) {
155
+ return (await ensure()).readDir(path);
156
+ },
157
+ async exists(path) {
158
+ return (await ensure()).exists(path);
159
+ },
160
+ async writeFile(path, content) {
161
+ return (await ensure()).writeFile(path, content);
162
+ },
163
+ async readBytes(path) {
164
+ return (await ensure()).readBytes(path);
165
+ },
166
+ async writeBytes(path, content) {
167
+ return (await ensure()).writeBytes(path, content);
168
+ },
169
+ async mkdir(path) {
170
+ return (await ensure()).mkdir(path);
171
+ },
172
+ async rm(path) {
173
+ return (await ensure()).rm(path);
174
+ },
175
+ async readStream(path, range) {
176
+ return (await ensure()).readStream(path, range);
177
+ },
178
+ async writeStream(path, stream) {
179
+ return (await ensure()).writeStream(path, stream);
180
+ },
181
+ async init() {
182
+ const real = await ensure();
183
+ const initFn = real.init;
184
+ if (typeof initFn === 'function')
185
+ await initFn.call(real);
186
+ },
187
+ };
188
+ }
189
+ //# sourceMappingURL=factories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factories.js","sourceRoot":"","sources":["../../src/providers/factories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Publish pipeline (per-item) — orchestrator for one Page or Fragment
3
+ * write to one Target.
4
+ *
5
+ * Today's `publish-rendered.ts` has 5 publish-* exports
6
+ * (`publishPageRendered`, `publishPageStatic`, `publishFragmentRendered`,
7
+ * `publishArchiveMarker`, `publishSiteManifest`) each repeating the same
8
+ * 13-step sequence: archive precheck → resolve → render → assemble →
9
+ * list-old-files → write-new → cleanup → write hash sidecar → write
10
+ * publish-state sidecar. Adding the soft-delete archive marker (Cut 3)
11
+ * had to land in three places. Adding scheduled-publish or review-state
12
+ * gates would too.
13
+ *
14
+ * `publishItemCore` is the seam that hides the orchestration. Per-kind
15
+ * wrappers (`publishPage`, `publishFragment` in pages/publish.ts +
16
+ * fragments/publish.ts — Cut 4) own kind-specific dispatch:
17
+ * page resolves render-mode from target.type (static vs esi vs dynamic);
18
+ * fragment has only one mode; archive short-circuit applies to both.
19
+ *
20
+ * Pipeline order is locked semantics, not configuration. Per-item:
21
+ *
22
+ * 1. (RESERVED) review-state precheck — Review Cut 5 (pending-review
23
+ * behavior at publish time)
24
+ * 2. archive precheck (isArchived → route to archive-marker renderer)
25
+ * 3. resolve item from preloadedSite (locale variant if applicable)
26
+ * 4. (RESERVED) dispatchBeforePublishItem hooks
27
+ * 5. invoke renderer (page-rendered / page-static / fragment-rendered /
28
+ * archive-marker)
29
+ * 6. assemble HTML + CSS + JS (per renderer's output)
30
+ * 7. list old hashed files at item dir
31
+ * 8. write new hashed files (per-file atomic via storage.writeFile;
32
+ * transient failures retry inline 3x with backoff)
33
+ * 9. write item HTML + content-hash sidecar (.{8hex}.hash)
34
+ * 10. cleanup oldFiles − newFiles
35
+ * 11. write publish-state sidecar (.pub-{ts}, includes noindex flag)
36
+ * 12. (RESERVED) dispatchAfterPublishItem hooks
37
+ * 13. return PublishItemResult
38
+ *
39
+ * Throws are reserved for storage transport failures after retries
40
+ * exhausted, AND for prerequisite breaches (caller must supply a
41
+ * preloadedSite and target init must have completed). Expected
42
+ * outcomes — NOT_FOUND / RENDER_FAILED / TEMPLATE_INVALID /
43
+ * VALIDATION_FAILED — are typed `PublishItemResult` variants.
44
+ */
45
+ import type { CacheConfig, StorageProvider } from './types.js';
46
+ import type { Site } from './site-loader.js';
47
+ import type { ContentRoot } from './content-root.js';
48
+ import type { Issue } from './validation/types.js';
49
+ /**
50
+ * Discriminator for the kind of item being published. Spine is the
51
+ * same per kind; per-kind wrappers in `pages/publish.ts` and
52
+ * `fragments/publish.ts` carry the kind through to dispatch +
53
+ * sidecar + audit calls.
54
+ */
55
+ export type PublishItemKind = 'page' | 'fragment';
56
+ /**
57
+ * Render mode the item is being published with. Resolved by
58
+ * per-kind wrappers from target.type + archive state:
59
+ * - `'page-rendered'` — ESI placeholders for `@fragment` refs;
60
+ * fragments composed at request time. Used for `esi` targets.
61
+ * - `'page-static'` — full-bake; fragments inlined into page HTML.
62
+ * Used for `static` targets and as the static fallback for
63
+ * `dynamic` targets.
64
+ * - `'fragment-rendered'` — fragment rendered standalone for ESI
65
+ * composition. Used for ALL fragment publishes regardless of
66
+ * target type.
67
+ * - `'archive-marker'` — body-skip; emit ONLY the HTML comment
68
+ * marker line so the worker reads first 200 bytes and
69
+ * short-circuits to 301/410 per design-soft-delete.md Q10.
70
+ */
71
+ export type PublishRenderMode = 'page-rendered' | 'page-static' | 'fragment-rendered' | 'archive-marker';
72
+ /**
73
+ * Successful publish outcome. `files` and `removed` mirror today's
74
+ * publish-rendered return shape so consumers (CLI progress, admin
75
+ * SSE) need no projection.
76
+ */
77
+ export interface PublishItemOk {
78
+ readonly kind: PublishItemKind;
79
+ readonly name: string;
80
+ readonly locale?: string;
81
+ readonly ok: true;
82
+ readonly mode: PublishRenderMode;
83
+ readonly files: number;
84
+ readonly removed: number;
85
+ }
86
+ /**
87
+ * Item not found at the source — caller passed a name that
88
+ * doesn't exist in the preloaded site. Routes/CLI project to a
89
+ * 404 / non-zero exit; orchestrator continues to next item per
90
+ * Q4 fail-soft.
91
+ */
92
+ export interface PublishItemNotFound {
93
+ readonly kind: PublishItemKind;
94
+ readonly name: string;
95
+ readonly locale?: string;
96
+ readonly ok: false;
97
+ readonly code: 'NOT_FOUND';
98
+ readonly reason: string;
99
+ }
100
+ /**
101
+ * Renderer threw OR returned malformed output (non-string html,
102
+ * missing required field). Per design-rendering.md the renderer
103
+ * is best-effort; one bad page doesn't abort the run.
104
+ */
105
+ export interface PublishItemRenderFailed {
106
+ readonly kind: PublishItemKind;
107
+ readonly name: string;
108
+ readonly locale?: string;
109
+ readonly ok: false;
110
+ readonly code: 'RENDER_FAILED';
111
+ readonly reason: string;
112
+ }
113
+ /**
114
+ * Template the item references is invalid (didn't pass scan).
115
+ * Run-level template scan happens once at boot per Q5 step 3;
116
+ * surface here for items that reference a scan-failed template.
117
+ */
118
+ export interface PublishItemTemplateInvalid {
119
+ readonly kind: PublishItemKind;
120
+ readonly name: string;
121
+ readonly locale?: string;
122
+ readonly ok: false;
123
+ readonly code: 'TEMPLATE_INVALID';
124
+ readonly reason: string;
125
+ }
126
+ /**
127
+ * Pre-publish validators (per validation Cut 4) emitted blocking
128
+ * issues for this item. Caller (orchestrator) decides whether to
129
+ * include validators in the per-item run; today admin's POST
130
+ * /api/publish/audit gates separately.
131
+ */
132
+ export interface PublishItemValidationFailed {
133
+ readonly kind: PublishItemKind;
134
+ readonly name: string;
135
+ readonly locale?: string;
136
+ readonly ok: false;
137
+ readonly code: 'VALIDATION_FAILED';
138
+ readonly issues: readonly Issue[];
139
+ }
140
+ /**
141
+ * Storage write retries exhausted (transport blip). Item-level
142
+ * fail-soft per Q4; run continues with next item.
143
+ */
144
+ export interface PublishItemStorageWriteFailed {
145
+ readonly kind: PublishItemKind;
146
+ readonly name: string;
147
+ readonly locale?: string;
148
+ readonly ok: false;
149
+ readonly code: 'STORAGE_WRITE_FAILED';
150
+ readonly reason: string;
151
+ }
152
+ /**
153
+ * Typed union of expected per-item publish outcomes. Routes/CLI
154
+ * `switch` exhaustively to project to wire shape (HTTP / SSE /
155
+ * stdout). Adding a variant produces a TS error at every
156
+ * consumer — intentional, per Q1 lock.
157
+ */
158
+ export type PublishItemResult = PublishItemOk | PublishItemNotFound | PublishItemRenderFailed | PublishItemTemplateInvalid | PublishItemValidationFailed | PublishItemStorageWriteFailed;
159
+ /**
160
+ * Inputs to `publishItemCore`. Carries the resolved render-mode
161
+ * decision (per-kind wrappers compute it from target.type +
162
+ * archive state) plus the renderer strategy that owns mode-specific
163
+ * assembly.
164
+ */
165
+ export interface PublishItemInput {
166
+ readonly kind: PublishItemKind;
167
+ readonly name: string;
168
+ readonly locale?: string;
169
+ /** Render mode resolved by per-kind wrapper before calling core. */
170
+ readonly mode: PublishRenderMode;
171
+ /** Loaded site, shared across the publish run (loaded ONCE in publishRun). */
172
+ readonly site: Site;
173
+ /** Source content tree the item is read from. */
174
+ readonly sourceRoot: ContentRoot;
175
+ /** Target storage being published TO. */
176
+ readonly target: PublishTarget;
177
+ }
178
+ /**
179
+ * Per-target context. Mirrors the relevant subset of `TargetConfig`
180
+ * + provider handle without importing the admin-api boundary type.
181
+ * `publishRun` builds this once per target during boot phase 6
182
+ * (init target storage); per-item core consumes it.
183
+ */
184
+ export interface PublishTarget {
185
+ readonly name: string;
186
+ readonly storage: StorageProvider;
187
+ /** Target type resolved per design-rendering.md (static / esi / dynamic). */
188
+ readonly type: 'static' | 'esi' | 'dynamic';
189
+ /**
190
+ * Optional per-target manifest content hash for the item being
191
+ * published. publishRun precomputes via hashManifest so per-item
192
+ * core doesn't recompute.
193
+ */
194
+ readonly manifestHash?: string;
195
+ /** Optional SEO context for fallback-chain rendering. */
196
+ readonly seo?: import('./seo.js').SeoContext;
197
+ /** Optional target-level cache config (browser / edge TTL); page-level overrides win in renderer. */
198
+ readonly cache?: CacheConfig;
199
+ }
200
+ /**
201
+ * Publish pipeline orchestrator (per-item) — Cut 3.
202
+ *
203
+ * Ports the 13-step spine from `publish-rendered.ts`'s 5 publish-*
204
+ * functions. Mode dispatch (page-rendered / page-static /
205
+ * fragment-rendered / archive-marker) consumes pure-fn renderers
206
+ * from `publish-renderers.ts` (Cut 2). Storage I/O + sidecar writes
207
+ * + cleanup live here.
208
+ *
209
+ * Pipeline sequence (locked per Q5):
210
+ *
211
+ * 1. (RESERVED) review-state precheck — Review Cut 5
212
+ * 2. archive precheck — `mode: 'archive-marker'` → renderArchiveMarker
213
+ * 3. resolve item from preloadedSite (NOT_FOUND if missing)
214
+ * 4. (RESERVED) dispatchBeforePublishItem hooks
215
+ * 5. invoke renderer (mode dispatch)
216
+ * 6-7. (renderer produces RenderOutput; assembly + hashing internal)
217
+ * 8. list old hashed files
218
+ * 9. mkdir + write index file + write hashed files
219
+ * 10. cleanup oldFiles − newFiles
220
+ * 11. write content-hash + publish-state sidecars
221
+ * 12. (RESERVED) dispatchAfterPublishItem hooks
222
+ * 13. return PublishItemResult
223
+ */
224
+ export declare function publishItemCore(input: PublishItemInput): Promise<PublishItemResult>;
225
+ //# sourceMappingURL=publish-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-item.d.ts","sourceRoot":"","sources":["../src/publish-item.ts"],"names":[],"mappings":"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"}