gazetta 0.6.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 (983) 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/error-response.d.ts +21 -0
  21. package/dist/admin-api/error-response.d.ts.map +1 -0
  22. package/dist/admin-api/error-response.js +12 -0
  23. package/dist/admin-api/error-response.js.map +1 -0
  24. package/dist/admin-api/hook-audit-emitter.d.ts +38 -0
  25. package/dist/admin-api/hook-audit-emitter.d.ts.map +1 -0
  26. package/dist/admin-api/hook-audit-emitter.js +21 -0
  27. package/dist/admin-api/hook-audit-emitter.js.map +1 -0
  28. package/dist/admin-api/index.d.ts +84 -2
  29. package/dist/admin-api/index.d.ts.map +1 -1
  30. package/dist/admin-api/index.js +257 -32
  31. package/dist/admin-api/index.js.map +1 -1
  32. package/dist/admin-api/middleware/audit.d.ts +25 -0
  33. package/dist/admin-api/middleware/audit.d.ts.map +1 -0
  34. package/dist/admin-api/middleware/audit.js +65 -0
  35. package/dist/admin-api/middleware/audit.js.map +1 -0
  36. package/dist/admin-api/middleware/capability.d.ts +8 -0
  37. package/dist/admin-api/middleware/capability.d.ts.map +1 -0
  38. package/dist/admin-api/middleware/capability.js +65 -0
  39. package/dist/admin-api/middleware/capability.js.map +1 -0
  40. package/dist/admin-api/middleware/principal.d.ts +18 -0
  41. package/dist/admin-api/middleware/principal.d.ts.map +1 -0
  42. package/dist/admin-api/middleware/principal.js +128 -0
  43. package/dist/admin-api/middleware/principal.js.map +1 -0
  44. package/dist/admin-api/routes/archive-review.d.ts +80 -0
  45. package/dist/admin-api/routes/archive-review.d.ts.map +1 -0
  46. package/dist/admin-api/routes/archive-review.js +70 -0
  47. package/dist/admin-api/routes/archive-review.js.map +1 -0
  48. package/dist/admin-api/routes/archive.d.ts +145 -0
  49. package/dist/admin-api/routes/archive.d.ts.map +1 -0
  50. package/dist/admin-api/routes/archive.js +540 -0
  51. package/dist/admin-api/routes/archive.js.map +1 -0
  52. package/dist/admin-api/routes/assets.d.ts +21 -0
  53. package/dist/admin-api/routes/assets.d.ts.map +1 -0
  54. package/dist/admin-api/routes/assets.js +586 -0
  55. package/dist/admin-api/routes/assets.js.map +1 -0
  56. package/dist/admin-api/routes/audit.d.ts +71 -0
  57. package/dist/admin-api/routes/audit.d.ts.map +1 -0
  58. package/dist/admin-api/routes/audit.js +178 -0
  59. package/dist/admin-api/routes/audit.js.map +1 -0
  60. package/dist/admin-api/routes/compare.d.ts.map +1 -1
  61. package/dist/admin-api/routes/compare.js +3 -2
  62. package/dist/admin-api/routes/compare.js.map +1 -1
  63. package/dist/admin-api/routes/fields.d.ts.map +1 -1
  64. package/dist/admin-api/routes/fields.js +2 -1
  65. package/dist/admin-api/routes/fields.js.map +1 -1
  66. package/dist/admin-api/routes/fragments.d.ts +13 -1
  67. package/dist/admin-api/routes/fragments.d.ts.map +1 -1
  68. package/dist/admin-api/routes/fragments.js +128 -67
  69. package/dist/admin-api/routes/fragments.js.map +1 -1
  70. package/dist/admin-api/routes/health.d.ts +60 -0
  71. package/dist/admin-api/routes/health.d.ts.map +1 -0
  72. package/dist/admin-api/routes/health.js +65 -0
  73. package/dist/admin-api/routes/health.js.map +1 -0
  74. package/dist/admin-api/routes/history.d.ts +2 -1
  75. package/dist/admin-api/routes/history.d.ts.map +1 -1
  76. package/dist/admin-api/routes/history.js +26 -4
  77. package/dist/admin-api/routes/history.js.map +1 -1
  78. package/dist/admin-api/routes/pages.d.ts +20 -1
  79. package/dist/admin-api/routes/pages.d.ts.map +1 -1
  80. package/dist/admin-api/routes/pages.js +158 -85
  81. package/dist/admin-api/routes/pages.js.map +1 -1
  82. package/dist/admin-api/routes/preview.d.ts.map +1 -1
  83. package/dist/admin-api/routes/preview.js +56 -17
  84. package/dist/admin-api/routes/preview.js.map +1 -1
  85. package/dist/admin-api/routes/publish.d.ts +19 -1
  86. package/dist/admin-api/routes/publish.d.ts.map +1 -1
  87. package/dist/admin-api/routes/publish.js +548 -99
  88. package/dist/admin-api/routes/publish.js.map +1 -1
  89. package/dist/admin-api/routes/rename.d.ts +62 -0
  90. package/dist/admin-api/routes/rename.d.ts.map +1 -0
  91. package/dist/admin-api/routes/rename.js +366 -0
  92. package/dist/admin-api/routes/rename.js.map +1 -0
  93. package/dist/admin-api/routes/site.d.ts.map +1 -1
  94. package/dist/admin-api/routes/site.js +6 -18
  95. package/dist/admin-api/routes/site.js.map +1 -1
  96. package/dist/admin-api/routes/system.d.ts +23 -0
  97. package/dist/admin-api/routes/system.d.ts.map +1 -0
  98. package/dist/admin-api/routes/system.js +115 -0
  99. package/dist/admin-api/routes/system.js.map +1 -0
  100. package/dist/admin-api/routes/templates.d.ts +11 -1
  101. package/dist/admin-api/routes/templates.d.ts.map +1 -1
  102. package/dist/admin-api/routes/templates.js +36 -3
  103. package/dist/admin-api/routes/templates.js.map +1 -1
  104. package/dist/admin-api/routes/validation.d.ts +47 -0
  105. package/dist/admin-api/routes/validation.d.ts.map +1 -0
  106. package/dist/admin-api/routes/validation.js +120 -0
  107. package/dist/admin-api/routes/validation.js.map +1 -0
  108. package/dist/admin-api/schemas/archive.d.ts +124 -0
  109. package/dist/admin-api/schemas/archive.d.ts.map +1 -0
  110. package/dist/admin-api/schemas/archive.js +93 -0
  111. package/dist/admin-api/schemas/archive.js.map +1 -0
  112. package/dist/admin-api/schemas/assets.d.ts +64 -0
  113. package/dist/admin-api/schemas/assets.d.ts.map +1 -0
  114. package/dist/admin-api/schemas/assets.js +59 -0
  115. package/dist/admin-api/schemas/assets.js.map +1 -0
  116. package/dist/admin-api/schemas/audit.d.ts +175 -0
  117. package/dist/admin-api/schemas/audit.d.ts.map +1 -0
  118. package/dist/admin-api/schemas/audit.js +91 -0
  119. package/dist/admin-api/schemas/audit.js.map +1 -0
  120. package/dist/admin-api/schemas/error.d.ts +94 -0
  121. package/dist/admin-api/schemas/error.d.ts.map +1 -0
  122. package/dist/admin-api/schemas/error.js +79 -0
  123. package/dist/admin-api/schemas/error.js.map +1 -0
  124. package/dist/admin-api/schemas/fragments.d.ts +2 -0
  125. package/dist/admin-api/schemas/fragments.d.ts.map +1 -1
  126. package/dist/admin-api/schemas/fragments.js +4 -0
  127. package/dist/admin-api/schemas/fragments.js.map +1 -1
  128. package/dist/admin-api/schemas/index.d.ts +10 -0
  129. package/dist/admin-api/schemas/index.d.ts.map +1 -1
  130. package/dist/admin-api/schemas/index.js +10 -0
  131. package/dist/admin-api/schemas/index.js.map +1 -1
  132. package/dist/admin-api/schemas/pages.d.ts +2 -0
  133. package/dist/admin-api/schemas/pages.d.ts.map +1 -1
  134. package/dist/admin-api/schemas/pages.js +11 -0
  135. package/dist/admin-api/schemas/pages.js.map +1 -1
  136. package/dist/admin-api/schemas/rename.d.ts +77 -0
  137. package/dist/admin-api/schemas/rename.d.ts.map +1 -0
  138. package/dist/admin-api/schemas/rename.js +75 -0
  139. package/dist/admin-api/schemas/rename.js.map +1 -0
  140. package/dist/admin-api/schemas/site.d.ts +3 -2
  141. package/dist/admin-api/schemas/site.d.ts.map +1 -1
  142. package/dist/admin-api/schemas/site.js +3 -2
  143. package/dist/admin-api/schemas/site.js.map +1 -1
  144. package/dist/admin-api/schemas/system.d.ts +28 -0
  145. package/dist/admin-api/schemas/system.d.ts.map +1 -0
  146. package/dist/admin-api/schemas/system.js +35 -0
  147. package/dist/admin-api/schemas/system.js.map +1 -0
  148. package/dist/admin-api/schemas/targets.d.ts +55 -0
  149. package/dist/admin-api/schemas/targets.d.ts.map +1 -1
  150. package/dist/admin-api/schemas/targets.js +46 -0
  151. package/dist/admin-api/schemas/targets.js.map +1 -1
  152. package/dist/admin-api/schemas/templates.d.ts +54 -0
  153. package/dist/admin-api/schemas/templates.d.ts.map +1 -1
  154. package/dist/admin-api/schemas/templates.js +21 -0
  155. package/dist/admin-api/schemas/templates.js.map +1 -1
  156. package/dist/admin-api/schemas/validation.d.ts +101 -0
  157. package/dist/admin-api/schemas/validation.d.ts.map +1 -0
  158. package/dist/admin-api/schemas/validation.js +57 -0
  159. package/dist/admin-api/schemas/validation.js.map +1 -0
  160. package/dist/admin-api/source-context.d.ts +66 -17
  161. package/dist/admin-api/source-context.d.ts.map +1 -1
  162. package/dist/admin-api/source-context.js +43 -8
  163. package/dist/admin-api/source-context.js.map +1 -1
  164. package/dist/ai/adapter-scaffold.d.ts +63 -0
  165. package/dist/ai/adapter-scaffold.d.ts.map +1 -0
  166. package/dist/ai/adapter-scaffold.js +89 -0
  167. package/dist/ai/adapter-scaffold.js.map +1 -0
  168. package/dist/ai/compose-prompt.d.ts +50 -0
  169. package/dist/ai/compose-prompt.d.ts.map +1 -0
  170. package/dist/ai/compose-prompt.js +49 -0
  171. package/dist/ai/compose-prompt.js.map +1 -0
  172. package/dist/ai/errors.d.ts +65 -0
  173. package/dist/ai/errors.d.ts.map +1 -0
  174. package/dist/ai/errors.js +59 -0
  175. package/dist/ai/errors.js.map +1 -0
  176. package/dist/ai/index.d.ts +17 -0
  177. package/dist/ai/index.d.ts.map +1 -0
  178. package/dist/ai/index.js +16 -0
  179. package/dist/ai/index.js.map +1 -0
  180. package/dist/ai/provider.d.ts +76 -0
  181. package/dist/ai/provider.d.ts.map +1 -0
  182. package/dist/ai/provider.js +13 -0
  183. package/dist/ai/provider.js.map +1 -0
  184. package/dist/ai/refusal.d.ts +50 -0
  185. package/dist/ai/refusal.d.ts.map +1 -0
  186. package/dist/ai/refusal.js +100 -0
  187. package/dist/ai/refusal.js.map +1 -0
  188. package/dist/ai/vision-prep.d.ts +32 -0
  189. package/dist/ai/vision-prep.d.ts.map +1 -0
  190. package/dist/ai/vision-prep.js +113 -0
  191. package/dist/ai/vision-prep.js.map +1 -0
  192. package/dist/alt/adapter.d.ts +140 -0
  193. package/dist/alt/adapter.d.ts.map +1 -0
  194. package/dist/alt/adapter.js +7 -0
  195. package/dist/alt/adapter.js.map +1 -0
  196. package/dist/alt/anthropic.d.ts +63 -0
  197. package/dist/alt/anthropic.d.ts.map +1 -0
  198. package/dist/alt/anthropic.js +147 -0
  199. package/dist/alt/anthropic.js.map +1 -0
  200. package/dist/alt/config.d.ts +67 -0
  201. package/dist/alt/config.d.ts.map +1 -0
  202. package/dist/alt/config.js +41 -0
  203. package/dist/alt/config.js.map +1 -0
  204. package/dist/alt/factory.d.ts +19 -0
  205. package/dist/alt/factory.d.ts.map +1 -0
  206. package/dist/alt/factory.js +69 -0
  207. package/dist/alt/factory.js.map +1 -0
  208. package/dist/alt/null-adapter.d.ts +3 -0
  209. package/dist/alt/null-adapter.d.ts.map +1 -0
  210. package/dist/alt/null-adapter.js +43 -0
  211. package/dist/alt/null-adapter.js.map +1 -0
  212. package/dist/alt/ollama.d.ts +40 -0
  213. package/dist/alt/ollama.d.ts.map +1 -0
  214. package/dist/alt/ollama.js +139 -0
  215. package/dist/alt/ollama.js.map +1 -0
  216. package/dist/alt/openai.d.ts +46 -0
  217. package/dist/alt/openai.d.ts.map +1 -0
  218. package/dist/alt/openai.js +118 -0
  219. package/dist/alt/openai.js.map +1 -0
  220. package/dist/alt/prompt-policies.d.ts +79 -0
  221. package/dist/alt/prompt-policies.d.ts.map +1 -0
  222. package/dist/alt/prompt-policies.js +67 -0
  223. package/dist/alt/prompt-policies.js.map +1 -0
  224. package/dist/alt/route-handler.d.ts +56 -0
  225. package/dist/alt/route-handler.d.ts.map +1 -0
  226. package/dist/alt/route-handler.js +122 -0
  227. package/dist/alt/route-handler.js.map +1 -0
  228. package/dist/alt/suggester.d.ts +57 -0
  229. package/dist/alt/suggester.d.ts.map +1 -0
  230. package/dist/alt/suggester.js +133 -0
  231. package/dist/alt/suggester.js.map +1 -0
  232. package/dist/app.js +1 -1
  233. package/dist/app.js.map +1 -1
  234. package/dist/archive-aliases.d.ts +79 -0
  235. package/dist/archive-aliases.d.ts.map +1 -0
  236. package/dist/archive-aliases.js +60 -0
  237. package/dist/archive-aliases.js.map +1 -0
  238. package/dist/archive-helpers.d.ts +73 -0
  239. package/dist/archive-helpers.d.ts.map +1 -0
  240. package/dist/archive-helpers.js +94 -0
  241. package/dist/archive-helpers.js.map +1 -0
  242. package/dist/assets/analyze-audio.d.ts +3 -0
  243. package/dist/assets/analyze-audio.d.ts.map +1 -0
  244. package/dist/assets/analyze-audio.js +80 -0
  245. package/dist/assets/analyze-audio.js.map +1 -0
  246. package/dist/assets/analyze-image.d.ts +19 -0
  247. package/dist/assets/analyze-image.d.ts.map +1 -0
  248. package/dist/assets/analyze-image.js +123 -0
  249. package/dist/assets/analyze-image.js.map +1 -0
  250. package/dist/assets/analyze.d.ts +94 -0
  251. package/dist/assets/analyze.d.ts.map +1 -0
  252. package/dist/assets/analyze.js +45 -0
  253. package/dist/assets/analyze.js.map +1 -0
  254. package/dist/assets/asset-deps.d.ts +30 -0
  255. package/dist/assets/asset-deps.d.ts.map +1 -0
  256. package/dist/assets/asset-deps.js +42 -0
  257. package/dist/assets/asset-deps.js.map +1 -0
  258. package/dist/assets/asset-paths.d.ts +155 -0
  259. package/dist/assets/asset-paths.d.ts.map +1 -0
  260. package/dist/assets/asset-paths.js +197 -0
  261. package/dist/assets/asset-paths.js.map +1 -0
  262. package/dist/assets/delete.d.ts +75 -0
  263. package/dist/assets/delete.d.ts.map +1 -0
  264. package/dist/assets/delete.js +82 -0
  265. package/dist/assets/delete.js.map +1 -0
  266. package/dist/assets/errors.d.ts +241 -0
  267. package/dist/assets/errors.d.ts.map +1 -0
  268. package/dist/assets/errors.js +300 -0
  269. package/dist/assets/errors.js.map +1 -0
  270. package/dist/assets/find-refs.d.ts +37 -0
  271. package/dist/assets/find-refs.d.ts.map +1 -0
  272. package/dist/assets/find-refs.js +35 -0
  273. package/dist/assets/find-refs.js.map +1 -0
  274. package/dist/assets/hash.d.ts +13 -0
  275. package/dist/assets/hash.d.ts.map +1 -0
  276. package/dist/assets/hash.js +43 -0
  277. package/dist/assets/hash.js.map +1 -0
  278. package/dist/assets/image-metadata.d.ts +11 -0
  279. package/dist/assets/image-metadata.d.ts.map +1 -0
  280. package/dist/assets/image-metadata.js +31 -0
  281. package/dist/assets/image-metadata.js.map +1 -0
  282. package/dist/assets/ingest-locale.d.ts +86 -0
  283. package/dist/assets/ingest-locale.d.ts.map +1 -0
  284. package/dist/assets/ingest-locale.js +209 -0
  285. package/dist/assets/ingest-locale.js.map +1 -0
  286. package/dist/assets/ingest.d.ts +96 -0
  287. package/dist/assets/ingest.d.ts.map +1 -0
  288. package/dist/assets/ingest.js +308 -0
  289. package/dist/assets/ingest.js.map +1 -0
  290. package/dist/assets/kind-compat.d.ts +34 -0
  291. package/dist/assets/kind-compat.d.ts.map +1 -0
  292. package/dist/assets/kind-compat.js +33 -0
  293. package/dist/assets/kind-compat.js.map +1 -0
  294. package/dist/assets/list.d.ts +46 -0
  295. package/dist/assets/list.d.ts.map +1 -0
  296. package/dist/assets/list.js +102 -0
  297. package/dist/assets/list.js.map +1 -0
  298. package/dist/assets/manifest-default.d.ts +56 -0
  299. package/dist/assets/manifest-default.d.ts.map +1 -0
  300. package/dist/assets/manifest-default.js +120 -0
  301. package/dist/assets/manifest-default.js.map +1 -0
  302. package/dist/assets/manifest-filename.d.ts +52 -0
  303. package/dist/assets/manifest-filename.d.ts.map +1 -0
  304. package/dist/assets/manifest-filename.js +104 -0
  305. package/dist/assets/manifest-filename.js.map +1 -0
  306. package/dist/assets/manifest-locale.d.ts +60 -0
  307. package/dist/assets/manifest-locale.d.ts.map +1 -0
  308. package/dist/assets/manifest-locale.js +206 -0
  309. package/dist/assets/manifest-locale.js.map +1 -0
  310. package/dist/assets/manifest-merge.d.ts +66 -0
  311. package/dist/assets/manifest-merge.d.ts.map +1 -0
  312. package/dist/assets/manifest-merge.js +82 -0
  313. package/dist/assets/manifest-merge.js.map +1 -0
  314. package/dist/assets/manifest.d.ts +83 -0
  315. package/dist/assets/manifest.d.ts.map +1 -0
  316. package/dist/assets/manifest.js +93 -0
  317. package/dist/assets/manifest.js.map +1 -0
  318. package/dist/assets/mime-sniff.d.ts +18 -0
  319. package/dist/assets/mime-sniff.d.ts.map +1 -0
  320. package/dist/assets/mime-sniff.js +84 -0
  321. package/dist/assets/mime-sniff.js.map +1 -0
  322. package/dist/assets/preprocess-svg.d.ts +3 -0
  323. package/dist/assets/preprocess-svg.d.ts.map +1 -0
  324. package/dist/assets/preprocess-svg.js +49 -0
  325. package/dist/assets/preprocess-svg.js.map +1 -0
  326. package/dist/assets/preprocess.d.ts +62 -0
  327. package/dist/assets/preprocess.d.ts.map +1 -0
  328. package/dist/assets/preprocess.js +86 -0
  329. package/dist/assets/preprocess.js.map +1 -0
  330. package/dist/assets/publish-plan.d.ts +41 -0
  331. package/dist/assets/publish-plan.d.ts.map +1 -0
  332. package/dist/assets/publish-plan.js +49 -0
  333. package/dist/assets/publish-plan.js.map +1 -0
  334. package/dist/assets/publish.d.ts +33 -0
  335. package/dist/assets/publish.d.ts.map +1 -0
  336. package/dist/assets/publish.js +81 -0
  337. package/dist/assets/publish.js.map +1 -0
  338. package/dist/assets/refs.d.ts +37 -0
  339. package/dist/assets/refs.d.ts.map +1 -0
  340. package/dist/assets/refs.js +33 -0
  341. package/dist/assets/refs.js.map +1 -0
  342. package/dist/assets/remove-override.d.ts +42 -0
  343. package/dist/assets/remove-override.d.ts.map +1 -0
  344. package/dist/assets/remove-override.js +53 -0
  345. package/dist/assets/remove-override.js.map +1 -0
  346. package/dist/assets/rename.d.ts +43 -0
  347. package/dist/assets/rename.d.ts.map +1 -0
  348. package/dist/assets/rename.js +271 -0
  349. package/dist/assets/rename.js.map +1 -0
  350. package/dist/assets/replace.d.ts +37 -0
  351. package/dist/assets/replace.d.ts.map +1 -0
  352. package/dist/assets/replace.js +195 -0
  353. package/dist/assets/replace.js.map +1 -0
  354. package/dist/assets/resolve.d.ts +141 -0
  355. package/dist/assets/resolve.d.ts.map +1 -0
  356. package/dist/assets/resolve.js +381 -0
  357. package/dist/assets/resolve.js.map +1 -0
  358. package/dist/assets/rewrite-manifest-asset-ref.d.ts +44 -0
  359. package/dist/assets/rewrite-manifest-asset-ref.d.ts.map +1 -0
  360. package/dist/assets/rewrite-manifest-asset-ref.js +51 -0
  361. package/dist/assets/rewrite-manifest-asset-ref.js.map +1 -0
  362. package/dist/assets/scan-manifest-for-asset.d.ts +63 -0
  363. package/dist/assets/scan-manifest-for-asset.d.ts.map +1 -0
  364. package/dist/assets/scan-manifest-for-asset.js +105 -0
  365. package/dist/assets/scan-manifest-for-asset.js.map +1 -0
  366. package/dist/assets/serve-route.d.ts +45 -0
  367. package/dist/assets/serve-route.d.ts.map +1 -0
  368. package/dist/assets/serve-route.js +123 -0
  369. package/dist/assets/serve-route.js.map +1 -0
  370. package/dist/assets/svg-sanitize.d.ts +38 -0
  371. package/dist/assets/svg-sanitize.d.ts.map +1 -0
  372. package/dist/assets/svg-sanitize.js +209 -0
  373. package/dist/assets/svg-sanitize.js.map +1 -0
  374. package/dist/assets/update-metadata.d.ts +61 -0
  375. package/dist/assets/update-metadata.d.ts.map +1 -0
  376. package/dist/assets/update-metadata.js +82 -0
  377. package/dist/assets/update-metadata.js.map +1 -0
  378. package/dist/assets/url.d.ts +82 -0
  379. package/dist/assets/url.d.ts.map +1 -0
  380. package/dist/assets/url.js +103 -0
  381. package/dist/assets/url.js.map +1 -0
  382. package/dist/assets/validate.d.ts +74 -0
  383. package/dist/assets/validate.d.ts.map +1 -0
  384. package/dist/assets/validate.js +136 -0
  385. package/dist/assets/validate.js.map +1 -0
  386. package/dist/assets/variants.d.ts +23 -0
  387. package/dist/assets/variants.d.ts.map +1 -0
  388. package/dist/assets/variants.js +74 -0
  389. package/dist/assets/variants.js.map +1 -0
  390. package/dist/audit/config.d.ts +75 -0
  391. package/dist/audit/config.d.ts.map +1 -0
  392. package/dist/audit/config.js +91 -0
  393. package/dist/audit/config.js.map +1 -0
  394. package/dist/audit/context.d.ts +98 -0
  395. package/dist/audit/context.d.ts.map +1 -0
  396. package/dist/audit/context.js +51 -0
  397. package/dist/audit/context.js.map +1 -0
  398. package/dist/audit/errors.d.ts +73 -0
  399. package/dist/audit/errors.d.ts.map +1 -0
  400. package/dist/audit/errors.js +78 -0
  401. package/dist/audit/errors.js.map +1 -0
  402. package/dist/audit/index.d.ts +16 -0
  403. package/dist/audit/index.d.ts.map +1 -0
  404. package/dist/audit/index.js +10 -0
  405. package/dist/audit/index.js.map +1 -0
  406. package/dist/audit/provider.d.ts +73 -0
  407. package/dist/audit/provider.d.ts.map +1 -0
  408. package/dist/audit/provider.js +2 -0
  409. package/dist/audit/provider.js.map +1 -0
  410. package/dist/audit/providers/history.d.ts +66 -0
  411. package/dist/audit/providers/history.d.ts.map +1 -0
  412. package/dist/audit/providers/history.js +102 -0
  413. package/dist/audit/providers/history.js.map +1 -0
  414. package/dist/audit/pseudonymize.d.ts +26 -0
  415. package/dist/audit/pseudonymize.d.ts.map +1 -0
  416. package/dist/audit/pseudonymize.js +86 -0
  417. package/dist/audit/pseudonymize.js.map +1 -0
  418. package/dist/audit/recorder.d.ts +102 -0
  419. package/dist/audit/recorder.d.ts.map +1 -0
  420. package/dist/audit/recorder.js +55 -0
  421. package/dist/audit/recorder.js.map +1 -0
  422. package/dist/audit/retention.d.ts +83 -0
  423. package/dist/audit/retention.d.ts.map +1 -0
  424. package/dist/audit/retention.js +142 -0
  425. package/dist/audit/retention.js.map +1 -0
  426. package/dist/audit/source-ip.d.ts +32 -0
  427. package/dist/audit/source-ip.d.ts.map +1 -0
  428. package/dist/audit/source-ip.js +164 -0
  429. package/dist/audit/source-ip.js.map +1 -0
  430. package/dist/audit/types.d.ts +143 -0
  431. package/dist/audit/types.d.ts.map +1 -0
  432. package/dist/audit/types.js +33 -0
  433. package/dist/audit/types.js.map +1 -0
  434. package/dist/audit/user-agent.d.ts +28 -0
  435. package/dist/audit/user-agent.d.ts.map +1 -0
  436. package/dist/audit/user-agent.js +63 -0
  437. package/dist/audit/user-agent.js.map +1 -0
  438. package/dist/auth/capabilities.d.ts +28 -0
  439. package/dist/auth/capabilities.d.ts.map +1 -0
  440. package/dist/auth/capabilities.js +101 -0
  441. package/dist/auth/capabilities.js.map +1 -0
  442. package/dist/auth/config.d.ts +109 -0
  443. package/dist/auth/config.d.ts.map +1 -0
  444. package/dist/auth/config.js +221 -0
  445. package/dist/auth/config.js.map +1 -0
  446. package/dist/auth/errors.d.ts +72 -0
  447. package/dist/auth/errors.d.ts.map +1 -0
  448. package/dist/auth/errors.js +78 -0
  449. package/dist/auth/errors.js.map +1 -0
  450. package/dist/auth/factory.d.ts +43 -0
  451. package/dist/auth/factory.d.ts.map +1 -0
  452. package/dist/auth/factory.js +48 -0
  453. package/dist/auth/factory.js.map +1 -0
  454. package/dist/auth/index.d.ts +21 -0
  455. package/dist/auth/index.d.ts.map +1 -0
  456. package/dist/auth/index.js +14 -0
  457. package/dist/auth/index.js.map +1 -0
  458. package/dist/auth/ip-match.d.ts +29 -0
  459. package/dist/auth/ip-match.d.ts.map +1 -0
  460. package/dist/auth/ip-match.js +162 -0
  461. package/dist/auth/ip-match.js.map +1 -0
  462. package/dist/auth/provider.d.ts +76 -0
  463. package/dist/auth/provider.d.ts.map +1 -0
  464. package/dist/auth/provider.js +2 -0
  465. package/dist/auth/provider.js.map +1 -0
  466. package/dist/auth/providers/aws-cognito.d.ts +55 -0
  467. package/dist/auth/providers/aws-cognito.d.ts.map +1 -0
  468. package/dist/auth/providers/aws-cognito.js +114 -0
  469. package/dist/auth/providers/aws-cognito.js.map +1 -0
  470. package/dist/auth/providers/azure-easy-auth.d.ts +7 -0
  471. package/dist/auth/providers/azure-easy-auth.d.ts.map +1 -0
  472. package/dist/auth/providers/azure-easy-auth.js +48 -0
  473. package/dist/auth/providers/azure-easy-auth.js.map +1 -0
  474. package/dist/auth/providers/cloudflare-access.d.ts +71 -0
  475. package/dist/auth/providers/cloudflare-access.d.ts.map +1 -0
  476. package/dist/auth/providers/cloudflare-access.js +120 -0
  477. package/dist/auth/providers/cloudflare-access.js.map +1 -0
  478. package/dist/auth/providers/forwarded-user.d.ts +31 -0
  479. package/dist/auth/providers/forwarded-user.d.ts.map +1 -0
  480. package/dist/auth/providers/forwarded-user.js +72 -0
  481. package/dist/auth/providers/forwarded-user.js.map +1 -0
  482. package/dist/auth/providers/none.d.ts +6 -0
  483. package/dist/auth/providers/none.d.ts.map +1 -0
  484. package/dist/auth/providers/none.js +19 -0
  485. package/dist/auth/providers/none.js.map +1 -0
  486. package/dist/auth/providers/tailscale.d.ts +7 -0
  487. package/dist/auth/providers/tailscale.d.ts.map +1 -0
  488. package/dist/auth/providers/tailscale.js +30 -0
  489. package/dist/auth/providers/tailscale.js.map +1 -0
  490. package/dist/auth/role-resolver.d.ts +38 -0
  491. package/dist/auth/role-resolver.d.ts.map +1 -0
  492. package/dist/auth/role-resolver.js +92 -0
  493. package/dist/auth/role-resolver.js.map +1 -0
  494. package/dist/auth/types.d.ts +150 -0
  495. package/dist/auth/types.d.ts.map +1 -0
  496. package/dist/auth/types.js +60 -0
  497. package/dist/auth/types.js.map +1 -0
  498. package/dist/cache/errors.d.ts +41 -0
  499. package/dist/cache/errors.d.ts.map +1 -0
  500. package/dist/cache/errors.js +44 -0
  501. package/dist/cache/errors.js.map +1 -0
  502. package/dist/cache/factories.d.ts +17 -0
  503. package/dist/cache/factories.d.ts.map +1 -0
  504. package/dist/cache/factories.js +17 -0
  505. package/dist/cache/factories.js.map +1 -0
  506. package/dist/cache/keys.d.ts +63 -0
  507. package/dist/cache/keys.d.ts.map +1 -0
  508. package/dist/cache/keys.js +145 -0
  509. package/dist/cache/keys.js.map +1 -0
  510. package/dist/cache/memory.d.ts +51 -0
  511. package/dist/cache/memory.d.ts.map +1 -0
  512. package/dist/cache/memory.js +204 -0
  513. package/dist/cache/memory.js.map +1 -0
  514. package/dist/cache/per-site.d.ts +22 -0
  515. package/dist/cache/per-site.d.ts.map +1 -0
  516. package/dist/cache/per-site.js +114 -0
  517. package/dist/cache/per-site.js.map +1 -0
  518. package/dist/cache/types.d.ts +142 -0
  519. package/dist/cache/types.d.ts.map +1 -0
  520. package/dist/cache/types.js +33 -0
  521. package/dist/cache/types.js.map +1 -0
  522. package/dist/cli/archive.d.ts +44 -0
  523. package/dist/cli/archive.d.ts.map +1 -0
  524. package/dist/cli/archive.js +310 -0
  525. package/dist/cli/archive.js.map +1 -0
  526. package/dist/cli/assets-cli.d.ts +58 -0
  527. package/dist/cli/assets-cli.d.ts.map +1 -0
  528. package/dist/cli/assets-cli.js +233 -0
  529. package/dist/cli/assets-cli.js.map +1 -0
  530. package/dist/cli/assets-display.d.ts +112 -0
  531. package/dist/cli/assets-display.d.ts.map +1 -0
  532. package/dist/cli/assets-display.js +106 -0
  533. package/dist/cli/assets-display.js.map +1 -0
  534. package/dist/cli/bootstrap.d.ts +15 -10
  535. package/dist/cli/bootstrap.d.ts.map +1 -1
  536. package/dist/cli/bootstrap.js +59 -24
  537. package/dist/cli/bootstrap.js.map +1 -1
  538. package/dist/cli/dev-template-watcher.d.ts +29 -0
  539. package/dist/cli/dev-template-watcher.d.ts.map +1 -0
  540. package/dist/cli/dev-template-watcher.js +38 -0
  541. package/dist/cli/dev-template-watcher.js.map +1 -0
  542. package/dist/cli/history.d.ts.map +1 -1
  543. package/dist/cli/history.js +5 -3
  544. package/dist/cli/history.js.map +1 -1
  545. package/dist/cli/index.js +737 -374
  546. package/dist/cli/index.js.map +1 -1
  547. package/dist/cli/validate-flags.d.ts +29 -0
  548. package/dist/cli/validate-flags.d.ts.map +1 -0
  549. package/dist/cli/validate-flags.js +49 -0
  550. package/dist/cli/validate-flags.js.map +1 -0
  551. package/dist/compare.d.ts +1 -1
  552. package/dist/compare.d.ts.map +1 -1
  553. package/dist/compare.js +40 -35
  554. package/dist/compare.js.map +1 -1
  555. package/dist/component-ids.d.ts +25 -0
  556. package/dist/component-ids.d.ts.map +1 -0
  557. package/dist/component-ids.js +83 -0
  558. package/dist/component-ids.js.map +1 -0
  559. package/dist/config/define.d.ts +61 -0
  560. package/dist/config/define.d.ts.map +1 -0
  561. package/dist/config/define.js +64 -0
  562. package/dist/config/define.js.map +1 -0
  563. package/dist/config/errors.d.ts +32 -0
  564. package/dist/config/errors.d.ts.map +1 -0
  565. package/dist/config/errors.js +40 -0
  566. package/dist/config/errors.js.map +1 -0
  567. package/dist/config/index.d.ts +13 -0
  568. package/dist/config/index.d.ts.map +1 -0
  569. package/dist/config/index.js +20 -0
  570. package/dist/config/index.js.map +1 -0
  571. package/dist/config/loader.d.ts +105 -0
  572. package/dist/config/loader.d.ts.map +1 -0
  573. package/dist/config/loader.js +265 -0
  574. package/dist/config/loader.js.map +1 -0
  575. package/dist/config/schemas.d.ts +89 -0
  576. package/dist/config/schemas.d.ts.map +1 -0
  577. package/dist/config/schemas.js +172 -0
  578. package/dist/config/schemas.js.map +1 -0
  579. package/dist/config/types.d.ts +32 -0
  580. package/dist/config/types.d.ts.map +1 -0
  581. package/dist/config/types.js +15 -0
  582. package/dist/config/types.js.map +1 -0
  583. package/dist/dep-sidecars.d.ts +127 -0
  584. package/dist/dep-sidecars.d.ts.map +1 -0
  585. package/dist/dep-sidecars.js +122 -0
  586. package/dist/dep-sidecars.js.map +1 -0
  587. package/dist/deploy/cloudflare-workers.d.ts +46 -0
  588. package/dist/deploy/cloudflare-workers.d.ts.map +1 -0
  589. package/dist/deploy/cloudflare-workers.js +213 -0
  590. package/dist/deploy/cloudflare-workers.js.map +1 -0
  591. package/dist/deploy/errors.d.ts +66 -0
  592. package/dist/deploy/errors.d.ts.map +1 -0
  593. package/dist/deploy/errors.js +82 -0
  594. package/dist/deploy/errors.js.map +1 -0
  595. package/dist/deploy/index.d.ts +9 -0
  596. package/dist/deploy/index.d.ts.map +1 -0
  597. package/dist/deploy/index.js +3 -0
  598. package/dist/deploy/index.js.map +1 -0
  599. package/dist/deploy/types.d.ts +162 -0
  600. package/dist/deploy/types.d.ts.map +1 -0
  601. package/dist/deploy/types.js +2 -0
  602. package/dist/deploy/types.js.map +1 -0
  603. package/dist/editor/AssetEmbeddedWidget.d.ts +3 -0
  604. package/dist/editor/AssetEmbeddedWidget.d.ts.map +1 -0
  605. package/dist/editor/AssetEmbeddedWidget.js +146 -0
  606. package/dist/editor/AssetEmbeddedWidget.js.map +1 -0
  607. package/dist/editor/mount.d.ts +12 -1
  608. package/dist/editor/mount.d.ts.map +1 -1
  609. package/dist/editor/mount.js +36 -5
  610. package/dist/editor/mount.js.map +1 -1
  611. package/dist/format.d.ts +44 -0
  612. package/dist/format.d.ts.map +1 -0
  613. package/dist/format.js +65 -0
  614. package/dist/format.js.map +1 -0
  615. package/dist/fragment-deps.d.ts +24 -0
  616. package/dist/fragment-deps.d.ts.map +1 -0
  617. package/dist/fragment-deps.js +20 -0
  618. package/dist/fragment-deps.js.map +1 -0
  619. package/dist/fragments/create.d.ts +70 -0
  620. package/dist/fragments/create.d.ts.map +1 -0
  621. package/dist/fragments/create.js +93 -0
  622. package/dist/fragments/create.js.map +1 -0
  623. package/dist/fragments/publish.d.ts +37 -0
  624. package/dist/fragments/publish.d.ts.map +1 -0
  625. package/dist/fragments/publish.js +52 -0
  626. package/dist/fragments/publish.js.map +1 -0
  627. package/dist/fragments/save.d.ts +81 -0
  628. package/dist/fragments/save.d.ts.map +1 -0
  629. package/dist/fragments/save.js +105 -0
  630. package/dist/fragments/save.js.map +1 -0
  631. package/dist/hash.d.ts +0 -6
  632. package/dist/hash.d.ts.map +1 -1
  633. package/dist/hash.js +0 -18
  634. package/dist/hash.js.map +1 -1
  635. package/dist/history-provider.d.ts.map +1 -1
  636. package/dist/history-provider.js +30 -8
  637. package/dist/history-provider.js.map +1 -1
  638. package/dist/history-recorder.d.ts +10 -6
  639. package/dist/history-recorder.d.ts.map +1 -1
  640. package/dist/history-recorder.js +13 -5
  641. package/dist/history-recorder.js.map +1 -1
  642. package/dist/history-restorer.d.ts.map +1 -1
  643. package/dist/history-restorer.js +34 -2
  644. package/dist/history-restorer.js.map +1 -1
  645. package/dist/history.d.ts +26 -8
  646. package/dist/history.d.ts.map +1 -1
  647. package/dist/hooks/audit-emitter.d.ts +73 -0
  648. package/dist/hooks/audit-emitter.d.ts.map +1 -0
  649. package/dist/hooks/audit-emitter.js +13 -0
  650. package/dist/hooks/audit-emitter.js.map +1 -0
  651. package/dist/hooks/context.d.ts +78 -0
  652. package/dist/hooks/context.d.ts.map +1 -0
  653. package/dist/hooks/context.js +56 -0
  654. package/dist/hooks/context.js.map +1 -0
  655. package/dist/hooks/contribution.d.ts +90 -0
  656. package/dist/hooks/contribution.d.ts.map +1 -0
  657. package/dist/hooks/contribution.js +2 -0
  658. package/dist/hooks/contribution.js.map +1 -0
  659. package/dist/hooks/dispatch.d.ts +30 -0
  660. package/dist/hooks/dispatch.d.ts.map +1 -0
  661. package/dist/hooks/dispatch.js +252 -0
  662. package/dist/hooks/dispatch.js.map +1 -0
  663. package/dist/hooks/errors.d.ts +100 -0
  664. package/dist/hooks/errors.d.ts.map +1 -0
  665. package/dist/hooks/errors.js +103 -0
  666. package/dist/hooks/errors.js.map +1 -0
  667. package/dist/hooks/index.d.ts +15 -0
  668. package/dist/hooks/index.d.ts.map +1 -0
  669. package/dist/hooks/index.js +6 -0
  670. package/dist/hooks/index.js.map +1 -0
  671. package/dist/hooks/registry.d.ts +53 -0
  672. package/dist/hooks/registry.d.ts.map +1 -0
  673. package/dist/hooks/registry.js +139 -0
  674. package/dist/hooks/registry.js.map +1 -0
  675. package/dist/hooks/storage.d.ts +43 -0
  676. package/dist/hooks/storage.d.ts.map +1 -0
  677. package/dist/hooks/storage.js +2 -0
  678. package/dist/hooks/storage.js.map +1 -0
  679. package/dist/hooks/types.d.ts +324 -0
  680. package/dist/hooks/types.d.ts.map +1 -0
  681. package/dist/hooks/types.js +2 -0
  682. package/dist/hooks/types.js.map +1 -0
  683. package/dist/index.d.ts +27 -9
  684. package/dist/index.d.ts.map +1 -1
  685. package/dist/index.js +50 -7
  686. package/dist/index.js.map +1 -1
  687. package/dist/locale.d.ts +25 -1
  688. package/dist/locale.d.ts.map +1 -1
  689. package/dist/locale.js +44 -2
  690. package/dist/locale.js.map +1 -1
  691. package/dist/manifest-save.d.ts +255 -0
  692. package/dist/manifest-save.d.ts.map +1 -0
  693. package/dist/manifest-save.js +260 -0
  694. package/dist/manifest-save.js.map +1 -0
  695. package/dist/manifest.d.ts +1 -2
  696. package/dist/manifest.d.ts.map +1 -1
  697. package/dist/manifest.js +43 -44
  698. package/dist/manifest.js.map +1 -1
  699. package/dist/node-floor.d.ts +3 -0
  700. package/dist/node-floor.d.ts.map +1 -0
  701. package/dist/node-floor.js +3 -0
  702. package/dist/node-floor.js.map +1 -0
  703. package/dist/pages/create.d.ts +103 -0
  704. package/dist/pages/create.d.ts.map +1 -0
  705. package/dist/pages/create.js +117 -0
  706. package/dist/pages/create.js.map +1 -0
  707. package/dist/pages/publish.d.ts +59 -0
  708. package/dist/pages/publish.d.ts.map +1 -0
  709. package/dist/pages/publish.js +78 -0
  710. package/dist/pages/publish.js.map +1 -0
  711. package/dist/pages/save.d.ts +97 -0
  712. package/dist/pages/save.d.ts.map +1 -0
  713. package/dist/pages/save.js +138 -0
  714. package/dist/pages/save.js.map +1 -0
  715. package/dist/providers/_atomic-write.d.ts +9 -0
  716. package/dist/providers/_atomic-write.d.ts.map +1 -0
  717. package/dist/providers/_atomic-write.js +72 -0
  718. package/dist/providers/_atomic-write.js.map +1 -0
  719. package/dist/providers/_rm-ignore-missing.d.ts +31 -0
  720. package/dist/providers/_rm-ignore-missing.d.ts.map +1 -0
  721. package/dist/providers/_rm-ignore-missing.js +12 -0
  722. package/dist/providers/_rm-ignore-missing.js.map +1 -0
  723. package/dist/providers/_stream-interop.d.ts +23 -0
  724. package/dist/providers/_stream-interop.d.ts.map +1 -0
  725. package/dist/providers/_stream-interop.js +21 -0
  726. package/dist/providers/_stream-interop.js.map +1 -0
  727. package/dist/providers/azure-blob.d.ts.map +1 -1
  728. package/dist/providers/azure-blob.js +60 -0
  729. package/dist/providers/azure-blob.js.map +1 -1
  730. package/dist/providers/factories.d.ts +65 -0
  731. package/dist/providers/factories.d.ts.map +1 -0
  732. package/dist/providers/factories.js +189 -0
  733. package/dist/providers/factories.js.map +1 -0
  734. package/dist/providers/filesystem.d.ts +4 -0
  735. package/dist/providers/filesystem.d.ts.map +1 -1
  736. package/dist/providers/filesystem.js +63 -2
  737. package/dist/providers/filesystem.js.map +1 -1
  738. package/dist/providers/s3.d.ts.map +1 -1
  739. package/dist/providers/s3.js +84 -1
  740. package/dist/providers/s3.js.map +1 -1
  741. package/dist/publish-item.d.ts +225 -0
  742. package/dist/publish-item.d.ts.map +1 -0
  743. package/dist/publish-item.js +210 -0
  744. package/dist/publish-item.js.map +1 -0
  745. package/dist/publish-rendered.d.ts +37 -17
  746. package/dist/publish-rendered.d.ts.map +1 -1
  747. package/dist/publish-rendered.js +144 -71
  748. package/dist/publish-rendered.js.map +1 -1
  749. package/dist/publish-renderers.d.ts +132 -0
  750. package/dist/publish-renderers.d.ts.map +1 -0
  751. package/dist/publish-renderers.js +240 -0
  752. package/dist/publish-renderers.js.map +1 -0
  753. package/dist/publish-run.d.ts +223 -0
  754. package/dist/publish-run.d.ts.map +1 -0
  755. package/dist/publish-run.js +307 -0
  756. package/dist/publish-run.js.map +1 -0
  757. package/dist/publish.d.ts +13 -12
  758. package/dist/publish.d.ts.map +1 -1
  759. package/dist/publish.js +24 -57
  760. package/dist/publish.js.map +1 -1
  761. package/dist/render-for-analysis.d.ts +24 -0
  762. package/dist/render-for-analysis.d.ts.map +1 -0
  763. package/dist/render-for-analysis.js +146 -0
  764. package/dist/render-for-analysis.js.map +1 -0
  765. package/dist/resolver.d.ts +12 -2
  766. package/dist/resolver.d.ts.map +1 -1
  767. package/dist/resolver.js +101 -32
  768. package/dist/resolver.js.map +1 -1
  769. package/dist/runtime/archive-marker.d.ts +62 -0
  770. package/dist/runtime/archive-marker.d.ts.map +1 -0
  771. package/dist/runtime/archive-marker.js +88 -0
  772. package/dist/runtime/archive-marker.js.map +1 -0
  773. package/dist/runtime/capability-gap-warnings.d.ts +42 -0
  774. package/dist/runtime/capability-gap-warnings.d.ts.map +1 -0
  775. package/dist/runtime/capability-gap-warnings.js +28 -0
  776. package/dist/runtime/capability-gap-warnings.js.map +1 -0
  777. package/dist/runtime/redirects-emit.d.ts +93 -0
  778. package/dist/runtime/redirects-emit.d.ts.map +1 -0
  779. package/dist/runtime/redirects-emit.js +89 -0
  780. package/dist/runtime/redirects-emit.js.map +1 -0
  781. package/dist/runtime/runtime-capabilities.d.ts +79 -0
  782. package/dist/runtime/runtime-capabilities.d.ts.map +1 -0
  783. package/dist/runtime/runtime-capabilities.js +60 -0
  784. package/dist/runtime/runtime-capabilities.js.map +1 -0
  785. package/dist/save-etag.d.ts +69 -0
  786. package/dist/save-etag.d.ts.map +1 -0
  787. package/dist/save-etag.js +118 -0
  788. package/dist/save-etag.js.map +1 -0
  789. package/dist/schema/dimensions.d.ts +78 -0
  790. package/dist/schema/dimensions.d.ts.map +1 -0
  791. package/dist/schema/dimensions.js +97 -0
  792. package/dist/schema/dimensions.js.map +1 -0
  793. package/dist/schema/helpers.d.ts +108 -0
  794. package/dist/schema/helpers.d.ts.map +1 -0
  795. package/dist/schema/helpers.js +133 -0
  796. package/dist/schema/helpers.js.map +1 -0
  797. package/dist/schema/index.d.ts +27 -0
  798. package/dist/schema/index.d.ts.map +1 -0
  799. package/dist/schema/index.js +25 -0
  800. package/dist/schema/index.js.map +1 -0
  801. package/dist/schema/types.d.ts +390 -0
  802. package/dist/schema/types.d.ts.map +1 -0
  803. package/dist/schema/types.js +25 -0
  804. package/dist/schema/types.js.map +1 -0
  805. package/dist/selector-chain.d.ts +63 -0
  806. package/dist/selector-chain.d.ts.map +1 -0
  807. package/dist/selector-chain.js +58 -0
  808. package/dist/selector-chain.js.map +1 -0
  809. package/dist/sidecars.d.ts +19 -18
  810. package/dist/sidecars.d.ts.map +1 -1
  811. package/dist/sidecars.js +70 -62
  812. package/dist/sidecars.js.map +1 -1
  813. package/dist/site-loader.d.ts +42 -4
  814. package/dist/site-loader.d.ts.map +1 -1
  815. package/dist/site-loader.js +27 -8
  816. package/dist/site-loader.js.map +1 -1
  817. package/dist/targets.d.ts +21 -12
  818. package/dist/targets.d.ts.map +1 -1
  819. package/dist/targets.js +27 -117
  820. package/dist/targets.js.map +1 -1
  821. package/dist/testing/admin-cache-contract.d.ts +52 -0
  822. package/dist/testing/admin-cache-contract.d.ts.map +1 -0
  823. package/dist/testing/admin-cache-contract.js +203 -0
  824. package/dist/testing/admin-cache-contract.js.map +1 -0
  825. package/dist/testing/index.d.ts +11 -0
  826. package/dist/testing/index.d.ts.map +1 -0
  827. package/dist/testing/index.js +11 -0
  828. package/dist/testing/index.js.map +1 -0
  829. package/dist/themes.d.ts +69 -0
  830. package/dist/themes.d.ts.map +1 -0
  831. package/dist/themes.js +85 -0
  832. package/dist/themes.js.map +1 -0
  833. package/dist/transforms/adapter.d.ts +115 -0
  834. package/dist/transforms/adapter.d.ts.map +1 -0
  835. package/dist/transforms/adapter.js +2 -0
  836. package/dist/transforms/adapter.js.map +1 -0
  837. package/dist/transforms/cloudflare.d.ts +17 -0
  838. package/dist/transforms/cloudflare.d.ts.map +1 -0
  839. package/dist/transforms/cloudflare.js +110 -0
  840. package/dist/transforms/cloudflare.js.map +1 -0
  841. package/dist/transforms/factories.d.ts +16 -0
  842. package/dist/transforms/factories.d.ts.map +1 -0
  843. package/dist/transforms/factories.js +18 -0
  844. package/dist/transforms/factories.js.map +1 -0
  845. package/dist/transforms/index.d.ts +17 -0
  846. package/dist/transforms/index.d.ts.map +1 -0
  847. package/dist/transforms/index.js +6 -0
  848. package/dist/transforms/index.js.map +1 -0
  849. package/dist/transforms/sharp.d.ts +17 -0
  850. package/dist/transforms/sharp.d.ts.map +1 -0
  851. package/dist/transforms/sharp.js +57 -0
  852. package/dist/transforms/sharp.js.map +1 -0
  853. package/dist/types.d.ts +485 -34
  854. package/dist/types.d.ts.map +1 -1
  855. package/dist/types.js +20 -1
  856. package/dist/types.js.map +1 -1
  857. package/dist/validation/alt-required-walker.d.ts +27 -0
  858. package/dist/validation/alt-required-walker.d.ts.map +1 -0
  859. package/dist/validation/alt-required-walker.js +108 -0
  860. package/dist/validation/alt-required-walker.js.map +1 -0
  861. package/dist/validation/default-registry.d.ts +12 -0
  862. package/dist/validation/default-registry.d.ts.map +1 -0
  863. package/dist/validation/default-registry.js +55 -0
  864. package/dist/validation/default-registry.js.map +1 -0
  865. package/dist/validation/publish-audit.d.ts +44 -0
  866. package/dist/validation/publish-audit.d.ts.map +1 -0
  867. package/dist/validation/publish-audit.js +64 -0
  868. package/dist/validation/publish-audit.js.map +1 -0
  869. package/dist/validation/registry.d.ts +23 -0
  870. package/dist/validation/registry.d.ts.map +1 -0
  871. package/dist/validation/registry.js +15 -0
  872. package/dist/validation/registry.js.map +1 -0
  873. package/dist/validation/save-delta.d.ts +46 -0
  874. package/dist/validation/save-delta.d.ts.map +1 -0
  875. package/dist/validation/save-delta.js +57 -0
  876. package/dist/validation/save-delta.js.map +1 -0
  877. package/dist/validation/scanner.d.ts +91 -0
  878. package/dist/validation/scanner.d.ts.map +1 -0
  879. package/dist/validation/scanner.js +327 -0
  880. package/dist/validation/scanner.js.map +1 -0
  881. package/dist/validation/template-impact.d.ts +52 -0
  882. package/dist/validation/template-impact.d.ts.map +1 -0
  883. package/dist/validation/template-impact.js +53 -0
  884. package/dist/validation/template-impact.js.map +1 -0
  885. package/dist/validation/types.d.ts +123 -0
  886. package/dist/validation/types.d.ts.map +1 -0
  887. package/dist/validation/types.js +7 -0
  888. package/dist/validation/types.js.map +1 -0
  889. package/dist/validation/validators/accessibility.d.ts +3 -0
  890. package/dist/validation/validators/accessibility.d.ts.map +1 -0
  891. package/dist/validation/validators/accessibility.js +106 -0
  892. package/dist/validation/validators/accessibility.js.map +1 -0
  893. package/dist/validation/validators/aliasof-points-to-archived.d.ts +40 -0
  894. package/dist/validation/validators/aliasof-points-to-archived.d.ts.map +1 -0
  895. package/dist/validation/validators/aliasof-points-to-archived.js +34 -0
  896. package/dist/validation/validators/aliasof-points-to-archived.js.map +1 -0
  897. package/dist/validation/validators/alt-required.d.ts +3 -0
  898. package/dist/validation/validators/alt-required.d.ts.map +1 -0
  899. package/dist/validation/validators/alt-required.js +118 -0
  900. package/dist/validation/validators/alt-required.js.map +1 -0
  901. package/dist/validation/validators/archive-not-supported-on-target.d.ts +3 -0
  902. package/dist/validation/validators/archive-not-supported-on-target.d.ts.map +1 -0
  903. package/dist/validation/validators/archive-not-supported-on-target.js +38 -0
  904. package/dist/validation/validators/archive-not-supported-on-target.js.map +1 -0
  905. package/dist/validation/validators/broken-links.d.ts +3 -0
  906. package/dist/validation/validators/broken-links.d.ts.map +1 -0
  907. package/dist/validation/validators/broken-links.js +190 -0
  908. package/dist/validation/validators/broken-links.js.map +1 -0
  909. package/dist/validation/validators/circular-alias.d.ts +36 -0
  910. package/dist/validation/validators/circular-alias.d.ts.map +1 -0
  911. package/dist/validation/validators/circular-alias.js +63 -0
  912. package/dist/validation/validators/circular-alias.js.map +1 -0
  913. package/dist/validation/validators/circular-fragment.d.ts +15 -0
  914. package/dist/validation/validators/circular-fragment.d.ts.map +1 -0
  915. package/dist/validation/validators/circular-fragment.js +97 -0
  916. package/dist/validation/validators/circular-fragment.js.map +1 -0
  917. package/dist/validation/validators/dangling-alias.d.ts +38 -0
  918. package/dist/validation/validators/dangling-alias.d.ts.map +1 -0
  919. package/dist/validation/validators/dangling-alias.js +31 -0
  920. package/dist/validation/validators/dangling-alias.js.map +1 -0
  921. package/dist/validation/validators/deploy-target-type-supported.d.ts +3 -0
  922. package/dist/validation/validators/deploy-target-type-supported.d.ts.map +1 -0
  923. package/dist/validation/validators/deploy-target-type-supported.js +32 -0
  924. package/dist/validation/validators/deploy-target-type-supported.js.map +1 -0
  925. package/dist/validation/validators/dynamic-route-conflict.d.ts +18 -0
  926. package/dist/validation/validators/dynamic-route-conflict.d.ts.map +1 -0
  927. package/dist/validation/validators/dynamic-route-conflict.js +80 -0
  928. package/dist/validation/validators/dynamic-route-conflict.js.map +1 -0
  929. package/dist/validation/validators/html-validity.d.ts +3 -0
  930. package/dist/validation/validators/html-validity.d.ts.map +1 -0
  931. package/dist/validation/validators/html-validity.js +89 -0
  932. package/dist/validation/validators/html-validity.js.map +1 -0
  933. package/dist/validation/validators/orphaned-locale-file.d.ts +21 -0
  934. package/dist/validation/validators/orphaned-locale-file.d.ts.map +1 -0
  935. package/dist/validation/validators/orphaned-locale-file.js +84 -0
  936. package/dist/validation/validators/orphaned-locale-file.js.map +1 -0
  937. package/dist/validation/validators/referenced-archived-without-alias.d.ts +3 -0
  938. package/dist/validation/validators/referenced-archived-without-alias.d.ts.map +1 -0
  939. package/dist/validation/validators/referenced-archived-without-alias.js +65 -0
  940. package/dist/validation/validators/referenced-archived-without-alias.js.map +1 -0
  941. package/dist/validation/validators/referenced-asset-exists.d.ts +13 -0
  942. package/dist/validation/validators/referenced-asset-exists.d.ts.map +1 -0
  943. package/dist/validation/validators/referenced-asset-exists.js +80 -0
  944. package/dist/validation/validators/referenced-asset-exists.js.map +1 -0
  945. package/dist/validation/validators/referenced-fragment-exists.d.ts +9 -0
  946. package/dist/validation/validators/referenced-fragment-exists.d.ts.map +1 -0
  947. package/dist/validation/validators/referenced-fragment-exists.js +52 -0
  948. package/dist/validation/validators/referenced-fragment-exists.js.map +1 -0
  949. package/dist/validation/validators/referenced-template-exists.d.ts +10 -0
  950. package/dist/validation/validators/referenced-template-exists.d.ts.map +1 -0
  951. package/dist/validation/validators/referenced-template-exists.js +74 -0
  952. package/dist/validation/validators/referenced-template-exists.js.map +1 -0
  953. package/dist/validation/validators/schema-conformance.d.ts +17 -0
  954. package/dist/validation/validators/schema-conformance.d.ts.map +1 -0
  955. package/dist/validation/validators/schema-conformance.js +94 -0
  956. package/dist/validation/validators/schema-conformance.js.map +1 -0
  957. package/dist/validation/validators/target-deploy-coverage.d.ts +3 -0
  958. package/dist/validation/validators/target-deploy-coverage.d.ts.map +1 -0
  959. package/dist/validation/validators/target-deploy-coverage.js +37 -0
  960. package/dist/validation/validators/target-deploy-coverage.js.map +1 -0
  961. package/dist/validation/validators/unused-fragment.d.ts +16 -0
  962. package/dist/validation/validators/unused-fragment.d.ts.map +1 -0
  963. package/dist/validation/validators/unused-fragment.js +86 -0
  964. package/dist/validation/validators/unused-fragment.js.map +1 -0
  965. package/package.json +69 -27
  966. package/admin-dist/assets/index-B6pVot0Y.css +0 -1
  967. package/admin-dist/assets/index-DniLwxJA.js +0 -609
  968. package/admin-dist/assets/rolldown-runtime-COnpUsM8.js +0 -1
  969. package/admin-dist/assets/vendor-rjsf-HKBAjOmQ.js +0 -32
  970. package/admin-dist/assets/vendor-tiptap-IyO99U4R.js +0 -142
  971. package/admin-dist/assets/vendor-vue-D3wBSmDf.js +0 -1
  972. package/dist/providers/r2.d.ts +0 -8
  973. package/dist/providers/r2.d.ts.map +0 -1
  974. package/dist/providers/r2.js +0 -86
  975. package/dist/providers/r2.js.map +0 -1
  976. package/dist/publish-locale.d.ts +0 -44
  977. package/dist/publish-locale.d.ts.map +0 -1
  978. package/dist/publish-locale.js +0 -103
  979. package/dist/publish-locale.js.map +0 -1
  980. package/dist/source-sidecars.d.ts +0 -32
  981. package/dist/source-sidecars.d.ts.map +0 -1
  982. package/dist/source-sidecars.js +0 -98
  983. package/dist/source-sidecars.js.map +0 -1
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Page Create — POST handler logic for `/api/pages`.
3
+ *
4
+ * Different from `savePage`:
5
+ * - No etag precheck (nothing to compare against; new page)
6
+ * - No locale variant lookup (creates the default Page Manifest)
7
+ * - Name conflict resolution per `design-soft-delete.md` Q5 I3:
8
+ * - Live name in use → typed `LIVE_CONFLICT` outcome
9
+ * - Archived name in use, no `?onConflict` flag → typed
10
+ * `ARCHIVED_CONFLICT` outcome with archive details
11
+ * - Archived name in use, with mode → delegate to
12
+ * `resolveArchivedNameConflict` (restore / replace / moveAside)
13
+ * - Folder creation (`storage.mkdir(pageDir)`)
14
+ * - Initial sidecar wiring (`rebuildAssetRefs` /
15
+ * `rebuildFragmentDeps` against `null` → empty manifest)
16
+ * - Cache invalidation (`pages:`)
17
+ *
18
+ * Same as `savePage` for the post-resolution-or-create write itself —
19
+ * eventually creates pass through `saveManifestCore` once the
20
+ * "before is null" path lands. v1 keeps the create-time path
21
+ * separate because it doesn't need validators / hooks / scanner /
22
+ * audit-on-failure (a new empty page has no validation surface to
23
+ * exercise yet).
24
+ *
25
+ * Per Q6 lock: separate `createPage` instead of folding into
26
+ * `savePage` — Create has its own pre-write phase (conflict prompt,
27
+ * mkdir, route derive) that update doesn't. Branchy A would merge
28
+ * two distinct intents.
29
+ */
30
+ import { join } from 'node:path';
31
+ import { resolveArchivedNameConflict, } from '../admin-api/archived-name-conflict.js';
32
+ import { rebuildAssetRefs } from '../assets/asset-deps.js';
33
+ import { rebuildFragmentDeps } from '../fragment-deps.js';
34
+ import { loadSiteFromSource } from '../admin-api/source-context.js';
35
+ /**
36
+ * Create a Page. Wraps the conflict-resolution decision tree + the
37
+ * fresh-create write path. Routes project the typed `CreatePageResult`
38
+ * to HTTP (200 / 400 / 409).
39
+ */
40
+ export async function createPage(input) {
41
+ const { source, name, template, content, onConflict, principal, audit } = input;
42
+ const { storage } = source;
43
+ const pageDir = source.contentRoot.path('pages', name);
44
+ const manifestPath = join(pageDir, 'page.json');
45
+ // Conflict path — manifest already exists at the target name.
46
+ if (await storage.exists(manifestPath)) {
47
+ const site = await loadSiteFromSource(source);
48
+ const existing = site.pages.get(name);
49
+ const isArchived = existing?.archived === true;
50
+ if (!isArchived) {
51
+ return { ok: false, code: 'LIVE_CONFLICT', name };
52
+ }
53
+ // Archived conflict, no resolution flag → return structured
54
+ // body so the client can prompt the author per Q5 I3.
55
+ if (!onConflict) {
56
+ return {
57
+ ok: false,
58
+ code: 'ARCHIVED_CONFLICT',
59
+ archive: {
60
+ kind: 'page',
61
+ name,
62
+ ...(existing?.archivedAt ? { archivedAt: existing.archivedAt } : {}),
63
+ ...(existing?.archivedBy ? { archivedBy: existing.archivedBy } : {}),
64
+ ...(existing?.aliasOf ? { aliasOf: existing.aliasOf } : {}),
65
+ },
66
+ };
67
+ }
68
+ // Archived conflict + mode → delegate to the resolver.
69
+ const result = await resolveArchivedNameConflict({
70
+ source,
71
+ kind: 'page',
72
+ name,
73
+ existing: existing,
74
+ mode: onConflict,
75
+ newTemplate: template,
76
+ newContent: content,
77
+ actorId: principal.id,
78
+ });
79
+ if (result.kind === 'invalid-mode') {
80
+ return { ok: false, code: 'INVALID_CONFLICT_MODE', mode: onConflict };
81
+ }
82
+ // Audit one event per logical mode — mirror existing route shape.
83
+ const action = result.kind === 'restored' ? 'unarchive' : result.kind === 'replaced' ? 'archive' : 'rename';
84
+ await audit.record({
85
+ // The audit recorder's typed shape limits action to save-flow values;
86
+ // the resolver's audit events use the soft-delete vocabulary. Cast
87
+ // through `unknown` keeps the recorder shape narrow without forcing a
88
+ // wider union into the save pipeline's contract.
89
+ action: action,
90
+ outcome: 'success',
91
+ scope: { kind: 'page', name },
92
+ metadata: { onConflict },
93
+ });
94
+ await source.cache.invalidatePrefix('pages:');
95
+ return { ok: true, name, resolution: result.kind };
96
+ }
97
+ // Fresh create path — no existing manifest at the target name.
98
+ await storage.mkdir(pageDir);
99
+ const manifest = {
100
+ template,
101
+ content: content ?? { title: name },
102
+ components: [],
103
+ };
104
+ await storage.writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`);
105
+ // Sidecar wiring — fresh manifest has empty components[] so the
106
+ // diff against null is mostly a no-op today; wires the dep tracking
107
+ // for the moment templates ship initial content with `_asset` or
108
+ // `@fragment` refs.
109
+ const item = { source: 'page', name };
110
+ await Promise.all([
111
+ rebuildAssetRefs(source.contentRoot, item, null, manifest),
112
+ rebuildFragmentDeps(source.contentRoot, item, null, manifest),
113
+ ]);
114
+ await source.cache.invalidatePrefix('pages:');
115
+ return { ok: true, name };
116
+ }
117
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/pages/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EACL,2BAA2B,GAG5B,MAAM,wCAAwC,CAAA;AAE/C,OAAO,EAAE,gBAAgB,EAAgB,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AA8EnE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAsB;IACrD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAC/E,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAE/C,8DAA8D;IAC9D,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,UAAU,GAAG,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAA;QAE9C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAA;QACnD,CAAC;QAED,4DAA4D;QAC5D,sDAAsD;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI;oBACJ,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5D;aACF,CAAA;QACH,CAAC;QAED,uDAAuD;QACvD,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC;YAC/C,MAAM;YACN,IAAI,EAAE,MAAM;YACZ,IAAI;YACJ,QAAQ,EAAE,QAA0C;YACpD,IAAI,EAAE,UAAsC;YAC5C,WAAW,EAAE,QAAQ;YACrB,UAAU,EAAE,OAAO;YACnB,OAAO,EAAE,SAAS,CAAC,EAAE;SACtB,CAAC,CAAA;QACF,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;QACvE,CAAC;QACD,kEAAkE;QAClE,MAAM,MAAM,GACV,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC9F,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,sEAAsE;YACtE,mEAAmE;YACnE,sEAAsE;YACtE,iDAAiD;YACjD,MAAM,EAAE,MAA2B;YACnC,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;YAC7B,QAAQ,EAAE,EAAE,UAAU,EAAE;SACzB,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC7C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;IACpD,CAAC;IAED,+DAA+D;IAC/D,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,MAAM,QAAQ,GAAG;QACf,QAAQ;QACR,OAAO,EAAE,OAAO,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QACnC,UAAU,EAAE,EAAe;KAC5B,CAAA;IACD,MAAM,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;IAE/E,gEAAgE;IAChE,oEAAoE;IACpE,iEAAiE;IACjE,oBAAoB;IACpB,MAAM,IAAI,GAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IAC9C,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC;QAC1D,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC;KAC9D,CAAC,CAAA;IACF,MAAM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC7C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Page Publish — kind-specific wrapper around `publishItemCore`.
3
+ *
4
+ * Owns the bits unique to Page publishes:
5
+ * - Render-mode resolution from target.type + archive state:
6
+ * - archived → 'archive-marker' regardless of target type
7
+ * - target.type === 'esi' → 'page-rendered' (ESI placeholders)
8
+ * - target.type === 'static' → 'page-static' (full-bake)
9
+ * - target.type === 'dynamic' → 'page-static' (static fallback;
10
+ * dynamic origin handles per-request render)
11
+ * - Page-cache config flow-through (target → page → spine renderer
12
+ * reads it for the cache-control comment)
13
+ *
14
+ * Everything downstream — archive precheck, render dispatch, storage
15
+ * I/O, sidecar writes, cleanup — is `publishItemCore`'s spine.
16
+ *
17
+ * Per Q3 lock: two fns + shared core. The 5 page-vs-fragment diffs
18
+ * (mode resolution, page-cache, sidecar pub-state, etc.) live here in
19
+ * one file the reader can scan top-to-bottom.
20
+ */
21
+ import { type PublishItemResult, type PublishRenderMode, type PublishTarget } from '../publish-item.js';
22
+ import type { ContentRoot } from '../content-root.js';
23
+ import type { Site } from '../site-loader.js';
24
+ /**
25
+ * Inputs to `publishPage`. Routes / CLI / orchestrator destructure
26
+ * their context and pass the parts the pipeline needs.
27
+ */
28
+ export interface PublishPageInput {
29
+ /** Page name (folder name under `pages/`). */
30
+ readonly name: string;
31
+ /** Locale variant being published; undefined = default locale. */
32
+ readonly locale?: string;
33
+ /** Loaded site (caller does `loadSite()` once for the publish run). */
34
+ readonly site: Site;
35
+ /** Source content root (typically not used by core today; reserved for hooks). */
36
+ readonly sourceRoot: ContentRoot;
37
+ /** Target context (storage, type, optional manifestHash, seo, cache). */
38
+ readonly target: PublishTarget;
39
+ }
40
+ /**
41
+ * Resolve the render mode for a page on a target. Pure dispatch
42
+ * function — exported for tests + per-kind reuse.
43
+ */
44
+ export declare function resolvePageRenderMode(page: {
45
+ archived?: boolean;
46
+ }, targetType: PublishTarget['type']): PublishRenderMode;
47
+ /**
48
+ * Publish a page to a target. Wraps `publishItemCore` with the
49
+ * page-specific mode resolution. Returns one of `PublishItemResult`'s
50
+ * typed variants — caller projects to wire shape (HTTP / SSE / CLI
51
+ * stdout / aggregate result).
52
+ *
53
+ * Caller responsibilities (handled by per-run orchestrator in Cut 5):
54
+ * - Capability check (`requireCapability('publish:...')`)
55
+ * - Template scan + loadSite (shared across run)
56
+ * - Per-target init + capability gates
57
+ */
58
+ export declare function publishPage(input: PublishPageInput): Promise<PublishItemResult>;
59
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/pages/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAmB,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACxH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAE7C;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAA;IAChC,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAC/B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAC5B,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAChC,iBAAiB,CAcnB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsBrF"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Page Publish — kind-specific wrapper around `publishItemCore`.
3
+ *
4
+ * Owns the bits unique to Page publishes:
5
+ * - Render-mode resolution from target.type + archive state:
6
+ * - archived → 'archive-marker' regardless of target type
7
+ * - target.type === 'esi' → 'page-rendered' (ESI placeholders)
8
+ * - target.type === 'static' → 'page-static' (full-bake)
9
+ * - target.type === 'dynamic' → 'page-static' (static fallback;
10
+ * dynamic origin handles per-request render)
11
+ * - Page-cache config flow-through (target → page → spine renderer
12
+ * reads it for the cache-control comment)
13
+ *
14
+ * Everything downstream — archive precheck, render dispatch, storage
15
+ * I/O, sidecar writes, cleanup — is `publishItemCore`'s spine.
16
+ *
17
+ * Per Q3 lock: two fns + shared core. The 5 page-vs-fragment diffs
18
+ * (mode resolution, page-cache, sidecar pub-state, etc.) live here in
19
+ * one file the reader can scan top-to-bottom.
20
+ */
21
+ import { isArchived } from '../archive-helpers.js';
22
+ import { publishItemCore } from '../publish-item.js';
23
+ /**
24
+ * Resolve the render mode for a page on a target. Pure dispatch
25
+ * function — exported for tests + per-kind reuse.
26
+ */
27
+ export function resolvePageRenderMode(page, targetType) {
28
+ // Archive precheck wins regardless of target type. The spine's
29
+ // archive-marker renderer body-skips and emits the marker line so
30
+ // the worker reads first 200 bytes and short-circuits to 301/410
31
+ // per design-soft-delete.md Q10.
32
+ if (isArchived(page))
33
+ return 'archive-marker';
34
+ // ESI mode: pages compose ESI placeholders for `@fragment` refs
35
+ // at request time on a worker-served target.
36
+ if (targetType === 'esi')
37
+ return 'page-rendered';
38
+ // Static + dynamic targets bake the full page. Dynamic targets'
39
+ // origin handles per-request rendering for dynamic FRAGMENTS only;
40
+ // pages themselves still get a static fallback (per
41
+ // design-rendering.md compatibility matrix).
42
+ return 'page-static';
43
+ }
44
+ /**
45
+ * Publish a page to a target. Wraps `publishItemCore` with the
46
+ * page-specific mode resolution. Returns one of `PublishItemResult`'s
47
+ * typed variants — caller projects to wire shape (HTTP / SSE / CLI
48
+ * stdout / aggregate result).
49
+ *
50
+ * Caller responsibilities (handled by per-run orchestrator in Cut 5):
51
+ * - Capability check (`requireCapability('publish:...')`)
52
+ * - Template scan + loadSite (shared across run)
53
+ * - Per-target init + capability gates
54
+ */
55
+ export async function publishPage(input) {
56
+ const page = input.site.pages.get(input.name);
57
+ if (!page) {
58
+ return {
59
+ kind: 'page',
60
+ name: input.name,
61
+ locale: input.locale,
62
+ ok: false,
63
+ code: 'NOT_FOUND',
64
+ reason: `Page "${input.name}" not found in source`,
65
+ };
66
+ }
67
+ const mode = resolvePageRenderMode(page, input.target.type);
68
+ return publishItemCore({
69
+ kind: 'page',
70
+ name: input.name,
71
+ locale: input.locale,
72
+ mode,
73
+ site: input.site,
74
+ sourceRoot: input.sourceRoot,
75
+ target: input.target,
76
+ });
77
+ }
78
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/pages/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAsE,MAAM,oBAAoB,CAAA;AAqBxH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAA4B,EAC5B,UAAiC;IAEjC,+DAA+D;IAC/D,kEAAkE;IAClE,iEAAiE;IACjE,iCAAiC;IACjC,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,gBAAgB,CAAA;IAC7C,gEAAgE;IAChE,6CAA6C;IAC7C,IAAI,UAAU,KAAK,KAAK;QAAE,OAAO,eAAe,CAAA;IAChD,gEAAgE;IAChE,mEAAmE;IACnE,oDAAoD;IACpD,6CAA6C;IAC7C,OAAO,aAAa,CAAA;AACtB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,SAAS,KAAK,CAAC,IAAI,uBAAuB;SACnD,CAAA;IACH,CAAC;IACD,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3D,OAAO,eAAe,CAAC;QACrB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI;QACJ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,97 @@
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 { type SaveAuditRecorder, type SaveResult, type SavePrincipal, type SaveSourceWiring } from '../manifest-save.js';
28
+ import type { PageManifest } from '../types.js';
29
+ import type { Site } from '../site-loader.js';
30
+ import type { ValidatorRegistry } from '../validation/registry.js';
31
+ import type { ValidationScanner } from '../validation/scanner.js';
32
+ import type { HookFiringEmitter, HookRegistry } from '../hooks/index.js';
33
+ /**
34
+ * Inputs to `savePage`. Routes destructure their request and pass
35
+ * the parts the pipeline needs; CLI / plugin callers do the same
36
+ * without an HTTP shell. Returns one of `SaveResult`'s typed
37
+ * variants — caller projects to HTTP (200 / 409) or CLI exit code.
38
+ */
39
+ export interface SavePageInput {
40
+ /** Page name (folder name under `pages/`). */
41
+ readonly name: string;
42
+ /** BCP-47 locale when saving a Locale Variant; undefined for default. */
43
+ readonly locale?: string;
44
+ /** Incoming manifest body (template/content/components/metadata). */
45
+ readonly body: Partial<PageManifest> & Record<string, unknown>;
46
+ /** Optional save-etag for concurrency check. */
47
+ readonly ifMatch?: string;
48
+ /** Loaded site (caller does `loadSiteFromSource(source)` once). */
49
+ readonly site: Site;
50
+ /** Source wiring (cache, history, storage, contentRoot, manifest, targetName). */
51
+ readonly source: SaveSourceWiring;
52
+ /** Authenticated principal driving this save. */
53
+ readonly principal: SavePrincipal;
54
+ /** Audit recorder bound to the request. */
55
+ readonly audit: SaveAuditRecorder;
56
+ /** Validator registry built once at admin boot. */
57
+ readonly validators: ValidatorRegistry;
58
+ /** Hook registry; absent when no hooks contributed. */
59
+ readonly hooks?: HookRegistry;
60
+ /** Audit-firing emitter for hook dispatch. */
61
+ readonly hookAuditEmit?: HookFiringEmitter;
62
+ /** Background scanner; absent when scanner not enabled. */
63
+ readonly scanner?: ValidationScanner;
64
+ /** Per-request correlation id; fresh UUID when absent. */
65
+ readonly requestId?: string;
66
+ }
67
+ /**
68
+ * Page-name-not-found error. The route projects this to a 404; the
69
+ * pipeline can't compose the full save without a `before` manifest
70
+ * (etag check, validators, sidecar diffs all need it). Distinct
71
+ * from the typed `SaveResult` variants because absence-of-target is
72
+ * a route-level precondition, not a save-pipeline outcome.
73
+ */
74
+ export declare class PageNotFoundError extends Error {
75
+ readonly name: string;
76
+ constructor(name: string);
77
+ }
78
+ /**
79
+ * Invalid locale code per `isValidLocale`. Routes project to 400.
80
+ */
81
+ export declare class InvalidLocaleError extends Error {
82
+ readonly raw: string;
83
+ constructor(raw: string);
84
+ }
85
+ /**
86
+ * Save a Page Manifest. Wraps `saveManifestCore` with the Page-specific
87
+ * resolution + assembly. Throws `PageNotFoundError` / `InvalidLocaleError`
88
+ * for route-level preconditions; returns `SaveResult` for save outcomes.
89
+ *
90
+ * Caller responsibilities:
91
+ * - Capability check (`requireCapability('edit:pages')`) before calling
92
+ * - HTTP projection of `SaveResult` (200 success, 409 STALE /
93
+ * VALIDATION_FAILED / HOOK_CANCELLED with appropriate body shape)
94
+ * - Setting the `ETag` response header on success from `result.etag`
95
+ */
96
+ export declare function savePage(input: SavePageInput): Promise<SaveResult>;
97
+ //# sourceMappingURL=save.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../src/pages/save.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAKH,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAExE;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9D,gDAAgD;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,iDAAiD;IACjD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IACjC,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAA;IACtC,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAA;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;IAC1C,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aACd,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIzC;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aACf,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CAIxC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAqExE"}
@@ -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,9 @@
1
+ export declare function atomicWriteString(path: string, content: string): Promise<void>;
2
+ /**
3
+ * Atomic byte write — bytes-in, no string round-trip. Used by callers
4
+ * that have a buffer in hand (history blobs, bounded asset writes).
5
+ * Same write-then-rename guarantees as atomicWriteString.
6
+ */
7
+ export declare function atomicWriteBytes(path: string, bytes: Uint8Array): Promise<void>;
8
+ export declare function atomicWriteStream(path: string, stream: ReadableStream<Uint8Array>): Promise<void>;
9
+ //# sourceMappingURL=_atomic-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_atomic-write.d.ts","sourceRoot":"","sources":["../../src/providers/_atomic-write.ts"],"names":[],"mappings":"AA+BA,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpF;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvG"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Atomic file write policy for the filesystem provider.
3
+ *
4
+ * Both text and binary-stream writes use a write-then-rename strategy so
5
+ * readers mid-write never see a partial file:
6
+ *
7
+ * - Text (`atomicWriteString`): delegates to the `write-file-atomic` package
8
+ * (same pattern everyone else in the Node ecosystem uses — sharp's internal
9
+ * config, npm's lockfile writer, etc.).
10
+ * - Binary stream (`atomicWriteStream`): pipes the incoming stream into a
11
+ * same-directory temp file, then renames onto the target. Temp is cleaned
12
+ * up on pipeline failure.
13
+ *
14
+ * Atomicity guarantees:
15
+ * - POSIX `rename(2)` is atomic within a single filesystem. Node's
16
+ * `fs.rename` delegates to it on POSIX systems.
17
+ * - Windows `MoveFileEx` with `MOVEFILE_REPLACE_EXISTING` is atomic on NTFS
18
+ * when source and target are on the same volume — write-file-atomic (for
19
+ * text) and our temp-path scheme (for streams) both place the temp file
20
+ * in the same directory as the target to meet this requirement.
21
+ *
22
+ * This module is filesystem-specific. Cloud storage (R2, S3, Azure) has
23
+ * naturally atomic single-object PUT and does not need this policy.
24
+ */
25
+ import { createWriteStream } from 'node:fs';
26
+ import { mkdir, rename, rm } from 'node:fs/promises';
27
+ import { dirname } from 'node:path';
28
+ import { pipeline } from 'node:stream/promises';
29
+ import writeFileAtomic from 'write-file-atomic';
30
+ import { webReadableToNode } from './_stream-interop.js';
31
+ export async function atomicWriteString(path, content) {
32
+ // Parent directory must exist before write-file-atomic creates its tempfile
33
+ // next to the target. Same contract as atomicWriteStream.
34
+ await mkdir(dirname(path), { recursive: true });
35
+ await writeFileAtomic(path, content, 'utf-8');
36
+ }
37
+ /**
38
+ * Atomic byte write — bytes-in, no string round-trip. Used by callers
39
+ * that have a buffer in hand (history blobs, bounded asset writes).
40
+ * Same write-then-rename guarantees as atomicWriteString.
41
+ */
42
+ export async function atomicWriteBytes(path, bytes) {
43
+ await mkdir(dirname(path), { recursive: true });
44
+ // write-file-atomic accepts Buffer | Uint8Array directly; no encoding
45
+ // applied when the second arg is bytes. Wrap in Buffer for consistent
46
+ // typing across Node versions (Buffer extends Uint8Array).
47
+ await writeFileAtomic(path, Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength));
48
+ }
49
+ export async function atomicWriteStream(path, stream) {
50
+ // Parent directory must exist before createWriteStream can create the file.
51
+ // (`write-file-atomic` handles this for text; for streams we do it ourselves.)
52
+ await mkdir(dirname(path), { recursive: true });
53
+ const tmpPath = `${path}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;
54
+ const writer = createWriteStream(tmpPath);
55
+ try {
56
+ await pipeline(webReadableToNode(stream), writer);
57
+ }
58
+ catch (err) {
59
+ // Clean up the temp file on pipeline failure; swallow rm errors
60
+ // (already-missing temp is fine).
61
+ await rm(tmpPath, { force: true }).catch(() => { });
62
+ throw err;
63
+ }
64
+ try {
65
+ await rename(tmpPath, path);
66
+ }
67
+ catch (err) {
68
+ await rm(tmpPath, { force: true }).catch(() => { });
69
+ throw err;
70
+ }
71
+ }
72
+ //# sourceMappingURL=_atomic-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_atomic-write.js","sourceRoot":"","sources":["../../src/providers/_atomic-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAiB,MAAM,sBAAsB,CAAA;AAEvE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,OAAe;IACnE,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/C,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAiB;IACpE,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/C,sEAAsE;IACtE,sEAAsE;IACtE,2DAA2D;IAC3D,MAAM,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;AAC5F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,MAAkC;IACtF,4EAA4E;IAC5E,+EAA+E;IAC/E,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE/C,MAAM,OAAO,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA;IACnF,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAEzC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAkB,CAAC,CAAA;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gEAAgE;QAChE,kCAAkC;QAClC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAClD,MAAM,GAAG,CAAA;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAClD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Storage adapter utility — idempotent remove via probe-then-delete.
3
+ *
4
+ * Uses `exists()` to determine whether the path is present, then `rm()`
5
+ * only when it is. This delegates the "is it missing?" decision to the
6
+ * provider's own `exists()` implementation — no cross-provider error-
7
+ * shape matching needed.
8
+ *
9
+ * Why probe-then-delete instead of try/catch:
10
+ * - `exists()` is already part of the StorageProvider contract and every
11
+ * provider knows how to answer it correctly for its backend.
12
+ * - Matching raw error messages (`ENOENT`, `NoSuchKey`, etc.) across four
13
+ * providers is fragile and accumulates drift as providers version.
14
+ * - A TOCTOU race (file deleted between probe and rm) just means `rm()`
15
+ * throws, and the caller sees a real error — acceptable because the
16
+ * race is vanishingly rare in our single-writer model (the admin is the
17
+ * only writer on source content during v1).
18
+ *
19
+ * When the storage interface grows a typed `StorageNotFoundError`
20
+ * (separate PR — retrofit across all four providers + all existing `rm`
21
+ * callers), this helper becomes a one-liner try/catch. Until then, the
22
+ * probe is the honest abstraction boundary.
23
+ */
24
+ import type { StorageProvider } from '../types.js';
25
+ /**
26
+ * `rm(path)` that swallows "already missing" — probes with `exists()`
27
+ * first. Returns `true` if a file was actually removed, `false` if it
28
+ * was already gone. Callers that care can distinguish.
29
+ */
30
+ export declare function rmIgnoreMissing(storage: StorageProvider, path: string): Promise<boolean>;
31
+ //# sourceMappingURL=_rm-ignore-missing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_rm-ignore-missing.d.ts","sourceRoot":"","sources":["../../src/providers/_rm-ignore-missing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI9F"}