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,106 @@
1
+ /**
2
+ * Accessibility validator (Validation Cut 3).
3
+ *
4
+ * Runs axe-core (https://github.com/dequelabs/axe-core) against the rendered
5
+ * HTML of each page. axe-core ships ~90 rules covering WCAG 2.1 / 2.2 A + AA;
6
+ * we run a sensible default subset (some rules are too noisy on dynamic
7
+ * content) and surface violations as `warn` at background, `warn` at
8
+ * pre-publish (operator promotes to error via `publishAudit.strict` in Cut 4).
9
+ *
10
+ * jsdom provides the DOM for axe-core to run against. Per-page cost
11
+ * (jsdom parse + axe run) is ~50-100ms at envelope. Acceptable for the
12
+ * background scanner; pre-publish gate is opt-in for heavy validators.
13
+ *
14
+ * Rendered output is supplied via `input.renderedOutput` (Cut 3 contract).
15
+ *
16
+ * # SOLID lenses
17
+ *
18
+ * - SRP: this validator owns the a11y check. Render-for-analysis produces
19
+ * the bytes; jsdom + axe analyze; the validator translates findings.
20
+ * - DIP: depends on `RenderedOutputAccess` interface, not the renderer.
21
+ * - OCP: rule subset is configurable; new operator-tunable rule sets ship
22
+ * via per-site config without changing this file.
23
+ */
24
+ import axe from 'axe-core';
25
+ import { JSDOM } from 'jsdom';
26
+ /**
27
+ * Rules we exclude by default. Each is a documented call:
28
+ * - `region` — fires on every page without a `<main>` / landmark.
29
+ * Many Gazetta sites use simple landing pages where this is noise.
30
+ * - `color-contrast` — requires computed styles, which jsdom doesn't
31
+ * compute reliably. False positives outweigh value in the background
32
+ * scanner. Operators wanting it run lighthouse at pre-publish (Cut 4).
33
+ * - `landmark-one-main` — same rationale as `region`.
34
+ * - `page-has-heading-one` — landing pages legitimately omit h1
35
+ * (the page name is in the nav / breadcrumb).
36
+ */
37
+ const DEFAULT_DISABLED_RULES = ['region', 'color-contrast', 'landmark-one-main', 'page-has-heading-one'];
38
+ export const accessibility = {
39
+ source: 'gazetta',
40
+ name: 'accessibility',
41
+ stages: ['background', 'pre-publish', 'cli'],
42
+ defaultSeverity() {
43
+ // axe findings are warns at every Gazetta stage; operator promotes to
44
+ // error via publishAudit.strict at pre-publish (Cut 4).
45
+ return 'warn';
46
+ },
47
+ async validate(input) {
48
+ const { scope, renderedOutput } = input;
49
+ if (scope.kind !== 'background' && scope.kind !== 'pre-publish')
50
+ return [];
51
+ if (!renderedOutput)
52
+ return [];
53
+ const items = scope.kind === 'background' ? [scope.item] : [...scope.items];
54
+ const issues = [];
55
+ for (const item of items) {
56
+ if (item.kind !== 'page')
57
+ continue; // fragments are partials, not full HTML
58
+ const html = await renderedOutput.htmlFor(item);
59
+ if (!html)
60
+ continue;
61
+ const violations = await runAxe(html);
62
+ for (const v of violations) {
63
+ for (const node of v.nodes) {
64
+ issues.push({
65
+ validator: 'accessibility',
66
+ severity: 'warn',
67
+ message: `${v.id}: ${v.help} — ${node.target.join(' > ')} (${v.helpUrl})`,
68
+ itemPath: item.itemPath,
69
+ });
70
+ }
71
+ }
72
+ }
73
+ return issues;
74
+ },
75
+ };
76
+ /**
77
+ * Run axe-core against `html` in a fresh jsdom. Returns the list of
78
+ * violations found. Falls back to an empty list on any error — we don't
79
+ * want a parse failure to block the entire scan.
80
+ */
81
+ async function runAxe(html) {
82
+ let dom;
83
+ try {
84
+ dom = new JSDOM(html, { runScripts: 'outside-only' });
85
+ }
86
+ catch {
87
+ return [];
88
+ }
89
+ try {
90
+ // Inject axe-core into the jsdom window context. axe.source is the
91
+ // bundled JS string; eval'ing it in the window installs `window.axe`.
92
+ dom.window.eval(axe.source);
93
+ const win = dom.window;
94
+ const results = await win.axe.run(dom.window.document, {
95
+ rules: Object.fromEntries(DEFAULT_DISABLED_RULES.map(id => [id, { enabled: false }])),
96
+ });
97
+ return results.violations ?? [];
98
+ }
99
+ catch {
100
+ return [];
101
+ }
102
+ finally {
103
+ dom.window.close();
104
+ }
105
+ }
106
+ //# sourceMappingURL=accessibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessibility.js","sourceRoot":"","sources":["../../../src/validation/validators/accessibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * P5: aliasOf-points-to-archived.
3
+ *
4
+ * Per `design-soft-delete.md` Q11 stage matrix: warn at background,
5
+ * pre-publish, and cli. Defensive against the Q3 G1 invariant being
6
+ * violated through direct manifest edits or external git pulls.
7
+ *
8
+ * The check: when an archive's `aliasOf` target IS itself archived,
9
+ * warn. Per Q3 G1 lock, archives' aliasOf must point at LIVE items.
10
+ * If it points at another archive, the renderer's one-hop resolution
11
+ * lands on an archived item → which then needs another hop → chain.
12
+ *
13
+ * # Difference from P3 (circular-alias)
14
+ *
15
+ * - P3 detects CYCLES (A → B → A) and chains longer than 1 hop
16
+ * - P5 detects "alias target is archived" specifically (one hop is
17
+ * enough; the target being archived violates Q3 G1 even without
18
+ * a chain)
19
+ *
20
+ * P3 catches the chain pathology; P5 catches the simpler "you aliased
21
+ * to an archive, but archives shouldn't be alias targets" mistake.
22
+ *
23
+ * # Why warn (not error)
24
+ *
25
+ * Per design Q11. The render-time behavior depends on whether the
26
+ * archived target itself has an aliasOf — if it does, the renderer
27
+ * follows the chain (which violates Q3 G1, surfacing as P3 error).
28
+ * If it doesn't (pure soft-delete), the renderer emits 410. Either
29
+ * way, the situation is recoverable — author rewrites the alias to
30
+ * a live target.
31
+ *
32
+ * # SOLID
33
+ *
34
+ * - SRP: one check (aliasOf points at archive); doesn't overlap
35
+ * with P2 (target missing) or P3 (chain).
36
+ * - DIP: consumes Site; no extra I/O.
37
+ */
38
+ import type { Validator } from '../types.js';
39
+ export declare const aliasOfPointsToArchived: Validator;
40
+ //# sourceMappingURL=aliasof-points-to-archived.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aliasof-points-to-archived.d.ts","sourceRoot":"","sources":["../../../src/validation/validators/aliasof-points-to-archived.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,EAAS,SAAS,EAAkB,MAAM,aAAa,CAAA;AAEnE,eAAO,MAAM,uBAAuB,EAAE,SAgCrC,CAAA"}
@@ -0,0 +1,34 @@
1
+ export const aliasOfPointsToArchived = {
2
+ source: 'gazetta',
3
+ name: 'aliasOf-points-to-archived',
4
+ stages: ['background', 'pre-publish', 'cli'],
5
+ defaultSeverity() {
6
+ return 'warn';
7
+ },
8
+ async validate(input) {
9
+ const { scope, site } = input;
10
+ if (scope.kind !== 'background')
11
+ return [];
12
+ const manifest = scope.manifest;
13
+ if (manifest.archived !== true)
14
+ return [];
15
+ if (typeof manifest.aliasOf !== 'string' || manifest.aliasOf.length === 0)
16
+ return [];
17
+ const targetName = manifest.aliasOf;
18
+ const targetMap = scope.item.kind === 'page' ? site.pages : site.fragments;
19
+ const target = targetMap.get(targetName);
20
+ if (!target)
21
+ return []; // P2 (dangling-alias) handles missing
22
+ if (target.archived !== true)
23
+ return []; // target is live — fine
24
+ return [
25
+ {
26
+ validator: 'aliasOf-points-to-archived',
27
+ severity: 'warn',
28
+ message: `${scope.item.kind} "${scope.item.name}" aliases "${targetName}", which is itself archived. Archives' aliasOf must point at live items (Q3 G1 invariant).`,
29
+ itemPath: scope.item.itemPath,
30
+ },
31
+ ];
32
+ },
33
+ };
34
+ //# sourceMappingURL=aliasof-points-to-archived.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aliasof-points-to-archived.js","sourceRoot":"","sources":["../../../src/validation/validators/aliasof-points-to-archived.ts"],"names":[],"mappings":"AAuCA,MAAM,CAAC,MAAM,uBAAuB,GAAc;IAChD,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,4BAA4B;IAClC,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,CAAU;IAErD,eAAe;QACb,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAqB;QAClC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO,EAAE,CAAA;QAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAE/B,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,EAAE,CAAA;QACzC,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAEpF,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAA;QACnC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;QAC1E,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA,CAAC,sCAAsC;QAC7D,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,EAAE,CAAA,CAAC,wBAAwB;QAEhE,OAAO;YACL;gBACE,SAAS,EAAE,4BAA4B;gBACvC,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,cAAc,UAAU,4FAA4F;gBACnK,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ;aAC9B;SACF,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Validator } from '../types.js';
2
+ export declare const altRequired: Validator;
3
+ //# sourceMappingURL=alt-required.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alt-required.d.ts","sourceRoot":"","sources":["../../../src/validation/validators/alt-required.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAS,SAAS,EAAkB,MAAM,aAAa,CAAA;AAQnE,eAAO,MAAM,WAAW,EAAE,SAmDzB,CAAA"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * altRequired validator (Validation Cut 3).
3
+ *
4
+ * Walks the page/fragment's template schema, finds fields declared as
5
+ * `embeddedAsset({ altRequired: true })`, then for each `_asset` reference
6
+ * in content at those paths verifies that the **resolved alt** is non-null.
7
+ *
8
+ * The resolved alt is the per-reference override (`{ _asset, alt }` — alt
9
+ * field on the reference itself); when absent, the asset's own default alt
10
+ * (read from `assets/{name}.asset.json`); when both null, the issue fires.
11
+ *
12
+ * Locked at `error` severity at every stage per design-validation.md:
13
+ * "altRequired is `error` at save-delta + background; warns are not promoted
14
+ * (template author's intent IS the gate)."
15
+ *
16
+ * # SOLID lenses
17
+ *
18
+ * - SRP: validator owns alt-resolution; the schema walker (`findAltRequiredPaths`)
19
+ * is its own module, testable in isolation.
20
+ * - DIP: depends on `loadTemplate` for the schema and `storage.exists` /
21
+ * `storage.readFile` for asset metadata. No direct coupling to a renderer.
22
+ * - OCP: adding new altRequired field shapes (e.g., a future `videoAsset`
23
+ * with required captions) is one new walker case + one validator branch.
24
+ */
25
+ import { z } from 'zod';
26
+ import { loadTemplate } from '../../template-loader.js';
27
+ import { findAltRequiredPaths, readAtPath } from '../alt-required-walker.js';
28
+ export const altRequired = {
29
+ source: 'gazetta',
30
+ name: 'altRequired',
31
+ stages: ['save-delta', 'background', 'pre-publish', 'cli'],
32
+ defaultSeverity() {
33
+ return 'error';
34
+ },
35
+ async validate(input) {
36
+ const { scope, site, storage } = input;
37
+ if (scope.kind !== 'save-delta' && scope.kind !== 'background')
38
+ return [];
39
+ const manifest = scope.kind === 'save-delta' ? scope.after : scope.manifest;
40
+ const templatesDir = site.templatesDir;
41
+ if (!templatesDir)
42
+ return [];
43
+ if (!manifest.template)
44
+ return [];
45
+ const tpl = await tryLoadTemplate(storage, templatesDir, manifest.template);
46
+ if (!tpl)
47
+ return []; // template missing — referenced-template-exists handles it
48
+ const jsonSchema = await safeToJsonSchema(tpl.schema);
49
+ if (!jsonSchema)
50
+ return [];
51
+ const requiredPaths = findAltRequiredPaths(jsonSchema);
52
+ if (requiredPaths.length === 0)
53
+ return [];
54
+ const issues = [];
55
+ for (const path of requiredPaths) {
56
+ const refs = readAtPath(manifest.content, path);
57
+ for (const raw of refs) {
58
+ const ref = raw;
59
+ if (!ref || typeof ref !== 'object' || !ref._asset)
60
+ continue;
61
+ if (typeof ref.alt === 'string' && ref.alt.length > 0)
62
+ continue; // per-ref override satisfies
63
+ // Per-ref alt is empty string ('') means decorative — also valid.
64
+ if (ref.alt === '')
65
+ continue;
66
+ const fallback = await readAssetAlt(storage, ref._asset);
67
+ if (typeof fallback === 'string')
68
+ continue; // asset default satisfies
69
+ issues.push({
70
+ validator: 'altRequired',
71
+ severity: 'error',
72
+ message: `Asset "${ref._asset}" referenced at "${path}" requires alt text. ` +
73
+ `Set alt on the reference, or set the asset's default alt.`,
74
+ itemPath: scope.item.itemPath,
75
+ contentPath: path,
76
+ });
77
+ }
78
+ }
79
+ return issues;
80
+ },
81
+ };
82
+ async function tryLoadTemplate(storage, templatesDir, name) {
83
+ try {
84
+ return await loadTemplate(storage, templatesDir, name);
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ }
90
+ async function safeToJsonSchema(schema) {
91
+ try {
92
+ return z.toJSONSchema(schema);
93
+ }
94
+ catch {
95
+ return null;
96
+ }
97
+ }
98
+ /**
99
+ * Read the asset's default alt from `assets/{name}.asset.json`. Returns
100
+ * the alt string when set (including empty string for decorative); `null`
101
+ * when the asset doesn't exist OR its alt is null/undefined.
102
+ */
103
+ async function readAssetAlt(storage, name) {
104
+ const path = `assets/${name}.asset.json`;
105
+ try {
106
+ if (!(await storage.exists(path)))
107
+ return null;
108
+ const raw = await storage.readFile(path);
109
+ const parsed = JSON.parse(raw);
110
+ if (typeof parsed.alt === 'string')
111
+ return parsed.alt;
112
+ return null;
113
+ }
114
+ catch {
115
+ return null;
116
+ }
117
+ }
118
+ //# sourceMappingURL=alt-required.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alt-required.js","sourceRoot":"","sources":["../../../src/validation/validators/alt-required.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Validator } from '../types.js';
2
+ export declare const archiveNotSupportedOnTarget: Validator;
3
+ //# sourceMappingURL=archive-not-supported-on-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive-not-supported-on-target.d.ts","sourceRoot":"","sources":["../../../src/validation/validators/archive-not-supported-on-target.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAS,SAAS,EAAkB,MAAM,aAAa,CAAA;AAEnE,eAAO,MAAM,2BAA2B,EAAE,SAqCzC,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { canServeRedirects } from '../../runtime/runtime-capabilities.js';
2
+ export const archiveNotSupportedOnTarget = {
3
+ source: 'gazetta',
4
+ name: 'archive-not-supported-on-target',
5
+ stages: ['background', 'pre-publish', 'cli'],
6
+ defaultSeverity() {
7
+ return 'warn';
8
+ },
9
+ async validate(input) {
10
+ const { scope, site } = input;
11
+ if (scope.kind !== 'background')
12
+ return [];
13
+ const manifest = scope.manifest;
14
+ // Only fires for archived items.
15
+ if (manifest.archived !== true)
16
+ return [];
17
+ // Consume the shared runtime-capabilities primitive so all four
18
+ // capability-gap surfaces (boot validate, author modal,
19
+ // validator scanner, pre-publish gate) report the same answer.
20
+ const targets = (site.manifest.targets ?? {});
21
+ const incompatibleTargets = [];
22
+ for (const [name, target] of Object.entries(targets)) {
23
+ if (!canServeRedirects(target))
24
+ incompatibleTargets.push(name);
25
+ }
26
+ if (incompatibleTargets.length === 0)
27
+ return [];
28
+ return [
29
+ {
30
+ validator: 'archive-not-supported-on-target',
31
+ severity: 'warn',
32
+ message: `${scope.item.kind} "${scope.item.name}" is archived. Targets without a worker won't emit 301/410 — visitors will see the host's natural 404 instead. Affected: ${incompatibleTargets.join(', ')}.`,
33
+ itemPath: scope.item.itemPath,
34
+ },
35
+ ];
36
+ },
37
+ };
38
+ //# sourceMappingURL=archive-not-supported-on-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive-not-supported-on-target.js","sourceRoot":"","sources":["../../../src/validation/validators/archive-not-supported-on-target.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAGzE,MAAM,CAAC,MAAM,2BAA2B,GAAc;IACpD,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,iCAAiC;IACvC,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,CAAU;IAErD,eAAe;QACb,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAqB;QAClC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO,EAAE,CAAA;QAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAE/B,iCAAiC;QACjC,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,EAAE,CAAA;QAEzC,gEAAgE;QAChE,wDAAwD;QACxD,+DAA+D;QAC/D,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAiC,CAAA;QAC7E,MAAM,mBAAmB,GAAa,EAAE,CAAA;QACxC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChE,CAAC;QAED,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAE/C,OAAO;YACL;gBACE,SAAS,EAAE,iCAAiC;gBAC5C,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,4HAA4H,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC5M,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ;aAC9B;SACF,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Validator } from '../types.js';
2
+ export declare const brokenLinks: Validator;
3
+ //# sourceMappingURL=broken-links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broken-links.d.ts","sourceRoot":"","sources":["../../../src/validation/validators/broken-links.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAS,SAAS,EAAkB,MAAM,aAAa,CAAA;AAGnE,eAAO,MAAM,WAAW,EAAE,SAyCzB,CAAA"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * broken-links validator (Validation Cut 4).
3
+ *
4
+ * Walks the rendered HTML for `<a href>`, `<link href>`, and `<img src>` /
5
+ * `<source src>` etc., extracts internal-link references (paths that should
6
+ * resolve within this site), and verifies each one points to either:
7
+ * - An existing page route in `site.pages` / `site.pageLocales`
8
+ * - An existing asset path (`/assets/...`)
9
+ *
10
+ * External links (http(s)://other-domain.com) are NOT checked — they go
11
+ * stale independent of publish; a publish gate isn't the right place for
12
+ * URL-rot detection (that's a periodic background concern, deferred).
13
+ *
14
+ * Stages: background + pre-publish. Severity is uniformly `warn`;
15
+ * operators who want broken links to block publish opt into
16
+ * `publishAudit.strict` on the destination target — strict promotion
17
+ * in the publish-audit orchestrator turns warns into errors at the
18
+ * gate (matches the validator matrix in `design-validation.md`).
19
+ *
20
+ * Rendered output is supplied via `input.renderedOutput` (Cut 3 contract).
21
+ *
22
+ * # SOLID lenses
23
+ *
24
+ * - SRP: this validator owns broken-link detection. Render-for-analysis
25
+ * produces the bytes; this consumes them.
26
+ * - DIP: depends on `RenderedOutputAccess` interface, not the renderer.
27
+ * - OCP: external-link rot detection ships as a separate validator
28
+ * (e.g., `link-rot`) when concrete demand surfaces; this one stays
29
+ * focused on internal integrity.
30
+ */
31
+ import { JSDOM } from 'jsdom';
32
+ export const brokenLinks = {
33
+ source: 'gazetta',
34
+ name: 'broken-links',
35
+ stages: ['background', 'pre-publish', 'cli'],
36
+ defaultSeverity() {
37
+ // Per design-validation.md "Stage × validator matrix": broken-links
38
+ // is warn at every stage. Operators who want it to block publish
39
+ // opt into publishAudit.strict on the destination target — strict
40
+ // promotion in the publish-audit orchestrator turns warns into
41
+ // errors. The validator itself stays uniformly warn.
42
+ return 'warn';
43
+ },
44
+ async validate(input) {
45
+ const { scope, site, renderedOutput } = input;
46
+ if (scope.kind !== 'background' && scope.kind !== 'pre-publish')
47
+ return [];
48
+ if (!renderedOutput)
49
+ return [];
50
+ const items = scope.kind === 'background' ? [scope.item] : [...scope.items];
51
+ const issues = [];
52
+ for (const item of items) {
53
+ if (item.kind !== 'page')
54
+ continue; // fragments are partials; rendered output is per-page
55
+ const html = await renderedOutput.htmlFor(item);
56
+ if (!html)
57
+ continue;
58
+ const refs = extractInternalRefs(html);
59
+ for (const ref of refs) {
60
+ const reason = checkRef(ref, site);
61
+ if (reason) {
62
+ issues.push({
63
+ validator: 'broken-links',
64
+ severity: 'warn',
65
+ message: `${ref}: ${reason}`,
66
+ itemPath: item.itemPath,
67
+ });
68
+ }
69
+ }
70
+ }
71
+ return issues;
72
+ },
73
+ };
74
+ /**
75
+ * Extract internal href / src values from rendered HTML. "Internal" means:
76
+ * - relative ("/about", "../foo", "page.html")
77
+ * - same-origin absolute (rare in our render output, but just in case)
78
+ *
79
+ * External links (`http://`, `https://`, `mailto:`, etc.) and anchor-only
80
+ * links (`#section`) are filtered out.
81
+ */
82
+ function extractInternalRefs(html) {
83
+ let dom;
84
+ try {
85
+ dom = new JSDOM(html);
86
+ }
87
+ catch {
88
+ return [];
89
+ }
90
+ const out = [];
91
+ try {
92
+ const selectors = ['a[href]', 'link[href]', 'img[src]', 'source[src]', 'video[src]', 'audio[src]', 'script[src]'];
93
+ for (const sel of selectors) {
94
+ for (const el of dom.window.document.querySelectorAll(sel)) {
95
+ const attr = el.hasAttribute('href') ? 'href' : 'src';
96
+ const value = el.getAttribute(attr);
97
+ if (!value)
98
+ continue;
99
+ if (isInternal(value))
100
+ out.push(value);
101
+ }
102
+ }
103
+ }
104
+ finally {
105
+ dom.window.close();
106
+ }
107
+ return out;
108
+ }
109
+ function isInternal(value) {
110
+ // Anchor-only.
111
+ if (value.startsWith('#'))
112
+ return false;
113
+ // Pseudo-protocols.
114
+ if (/^(?:mailto|tel|javascript|data):/i.test(value))
115
+ return false;
116
+ // Absolute URL with scheme — external by definition.
117
+ if (/^[a-z][a-z0-9+.-]*:\/\//i.test(value))
118
+ return false;
119
+ // Protocol-relative URL — external.
120
+ if (value.startsWith('//'))
121
+ return false;
122
+ return true;
123
+ }
124
+ /**
125
+ * Check one internal reference against the site. Returns null when valid,
126
+ * a human-readable reason when broken.
127
+ */
128
+ function checkRef(ref, site) {
129
+ // Strip query + hash before matching.
130
+ const cleanRef = ref.split('?')[0].split('#')[0];
131
+ if (!cleanRef)
132
+ return null; // pure ?query or #hash — can't validate
133
+ // Asset references: `/assets/{hash}.ext` shape — accept any well-formed
134
+ // assets/ path; the resolver guarantees these were emitted from real
135
+ // refs at render time, so a broken one means the renderer itself failed
136
+ // and we'd already have a different issue.
137
+ if (cleanRef.startsWith('/assets/') || cleanRef.startsWith('assets/'))
138
+ return null;
139
+ // Build the route lookup set from site.pages + locale variants.
140
+ const routes = new Set();
141
+ for (const page of site.pages.values()) {
142
+ if (page.route)
143
+ routes.add(normalizeRoute(page.route));
144
+ }
145
+ for (const entry of site.pageLocales.values()) {
146
+ for (const variant of entry.locales.values()) {
147
+ if (variant.route)
148
+ routes.add(normalizeRoute(variant.route));
149
+ }
150
+ }
151
+ // Exact match against a known route.
152
+ const target = normalizeRoute(cleanRef);
153
+ if (routes.has(target))
154
+ return null;
155
+ // Dynamic-route patterns like `/blog/:slug` — accept any path that matches
156
+ // the pattern's static prefix.
157
+ for (const route of routes) {
158
+ if (matchesDynamicRoute(target, route))
159
+ return null;
160
+ }
161
+ return `link does not match any page route or asset path`;
162
+ }
163
+ function normalizeRoute(path) {
164
+ if (!path.startsWith('/'))
165
+ path = '/' + path;
166
+ if (path.length > 1 && path.endsWith('/'))
167
+ path = path.slice(0, -1);
168
+ return path;
169
+ }
170
+ /**
171
+ * Test whether `target` (concrete path) could match `pattern` (with `:param`
172
+ * placeholders). Same length + every segment is either equal or pattern has
173
+ * `:` prefix.
174
+ */
175
+ function matchesDynamicRoute(target, pattern) {
176
+ if (!pattern.includes(':'))
177
+ return false;
178
+ const ts = target.split('/').filter(Boolean);
179
+ const ps = pattern.split('/').filter(Boolean);
180
+ if (ts.length !== ps.length)
181
+ return false;
182
+ for (let i = 0; i < ps.length; i++) {
183
+ if (ps[i].startsWith(':'))
184
+ continue;
185
+ if (ps[i] !== ts[i])
186
+ return false;
187
+ }
188
+ return true;
189
+ }
190
+ //# sourceMappingURL=broken-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broken-links.js","sourceRoot":"","sources":["../../../src/validation/validators/broken-links.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * P3: circular-alias.
3
+ *
4
+ * Per `design-soft-delete.md` Q11 stage matrix: error at background,
5
+ * pre-publish, and cli (no save-delta — by Q3 G1 invariant the flatten
6
+ * cascade prevents chains-by-construction; this validator is defensive
7
+ * for cases where the invariant breaks via direct manifest edits).
8
+ *
9
+ * The check: walk the alias chain `archive A → aliasOf B → ...`. The
10
+ * Q3 G1 invariant says aliases never chain — every archive's aliasOf
11
+ * points at a LIVE item (or a missing one, which P2 surfaces). If the
12
+ * walk hits a chain longer than 1 hop OR loops back to itself, that's
13
+ * a violation of the invariant and gets flagged.
14
+ *
15
+ * # Why error
16
+ *
17
+ * Chains break the alias-aware renderer's assumption (one-hop resolution
18
+ * per design Q3 G1). Cycles cause infinite resolution loops. Both must
19
+ * block publish.
20
+ *
21
+ * # No save-delta stage
22
+ *
23
+ * The rename route's flatten cascade (Cut 6) maintains the invariant
24
+ * on every rename — chains can't be introduced through normal flow.
25
+ * Save-delta gating exists for direct manifest edits OR external git
26
+ * pulls that re-introduce a chain. The background scanner catches
27
+ * those once it next runs; the publish gate blocks at the next ship.
28
+ *
29
+ * # SOLID
30
+ *
31
+ * - SRP: one check (chain detection); doesn't overlap with P2 or P5.
32
+ * - DIP: consumes Site; no extra I/O.
33
+ */
34
+ import type { Validator } from '../types.js';
35
+ export declare const circularAlias: Validator;
36
+ //# sourceMappingURL=circular-alias.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circular-alias.d.ts","sourceRoot":"","sources":["../../../src/validation/validators/circular-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAS,SAAS,EAAkB,MAAM,aAAa,CAAA;AAInE,eAAO,MAAM,aAAa,EAAE,SA2C3B,CAAA"}