gazetta 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin-dist/assets/index-CBeq0rRb.js +693 -0
- package/admin-dist/assets/index-Dtg1dTZQ.css +1 -0
- package/admin-dist/assets/rolldown-runtime-BYbx6iT9.js +1 -0
- package/admin-dist/assets/{vendor-primevue-C0Q_YTCb.js → vendor-primevue-CBGHkaXv.js} +183 -39
- package/admin-dist/assets/{vendor-react-BipDVGow.js → vendor-react-BdW_kNCG.js} +2 -2
- package/admin-dist/assets/vendor-rjsf-lN2SztQt.js +33 -0
- package/admin-dist/assets/vendor-tiptap-C36yDquB.js +141 -0
- package/admin-dist/assets/vendor-vue-Bt5uR1VW.js +1 -0
- package/admin-dist/assets/workbox-window.prod.es5-DGMtIXHc.js +2 -0
- package/admin-dist/index.html +8 -8
- package/admin-dist/sw.js +1 -0
- package/dist/admin-api/archived-name-conflict.d.ts +31 -0
- package/dist/admin-api/archived-name-conflict.d.ts.map +1 -0
- package/dist/admin-api/archived-name-conflict.js +226 -0
- package/dist/admin-api/archived-name-conflict.js.map +1 -0
- package/dist/admin-api/cache-stats-logger.d.ts +83 -0
- package/dist/admin-api/cache-stats-logger.d.ts.map +1 -0
- package/dist/admin-api/cache-stats-logger.js +59 -0
- package/dist/admin-api/cache-stats-logger.js.map +1 -0
- package/dist/admin-api/hook-audit-emitter.d.ts +38 -0
- package/dist/admin-api/hook-audit-emitter.d.ts.map +1 -0
- package/dist/admin-api/hook-audit-emitter.js +21 -0
- package/dist/admin-api/hook-audit-emitter.js.map +1 -0
- package/dist/admin-api/index.d.ts +84 -0
- package/dist/admin-api/index.d.ts.map +1 -1
- package/dist/admin-api/index.js +254 -9
- package/dist/admin-api/index.js.map +1 -1
- package/dist/admin-api/middleware/audit.d.ts +25 -0
- package/dist/admin-api/middleware/audit.d.ts.map +1 -0
- package/dist/admin-api/middleware/audit.js +65 -0
- package/dist/admin-api/middleware/audit.js.map +1 -0
- package/dist/admin-api/middleware/capability.d.ts +8 -0
- package/dist/admin-api/middleware/capability.d.ts.map +1 -0
- package/dist/admin-api/middleware/capability.js +65 -0
- package/dist/admin-api/middleware/capability.js.map +1 -0
- package/dist/admin-api/middleware/principal.d.ts +18 -0
- package/dist/admin-api/middleware/principal.d.ts.map +1 -0
- package/dist/admin-api/middleware/principal.js +128 -0
- package/dist/admin-api/middleware/principal.js.map +1 -0
- package/dist/admin-api/routes/archive-review.d.ts +80 -0
- package/dist/admin-api/routes/archive-review.d.ts.map +1 -0
- package/dist/admin-api/routes/archive-review.js +70 -0
- package/dist/admin-api/routes/archive-review.js.map +1 -0
- package/dist/admin-api/routes/archive.d.ts +145 -0
- package/dist/admin-api/routes/archive.d.ts.map +1 -0
- package/dist/admin-api/routes/archive.js +540 -0
- package/dist/admin-api/routes/archive.js.map +1 -0
- package/dist/admin-api/routes/assets.d.ts +6 -1
- package/dist/admin-api/routes/assets.d.ts.map +1 -1
- package/dist/admin-api/routes/assets.js +167 -14
- package/dist/admin-api/routes/assets.js.map +1 -1
- package/dist/admin-api/routes/audit.d.ts +71 -0
- package/dist/admin-api/routes/audit.d.ts.map +1 -0
- package/dist/admin-api/routes/audit.js +178 -0
- package/dist/admin-api/routes/audit.js.map +1 -0
- package/dist/admin-api/routes/compare.d.ts.map +1 -1
- package/dist/admin-api/routes/compare.js +3 -2
- package/dist/admin-api/routes/compare.js.map +1 -1
- package/dist/admin-api/routes/fields.d.ts.map +1 -1
- package/dist/admin-api/routes/fields.js +2 -1
- package/dist/admin-api/routes/fields.js.map +1 -1
- package/dist/admin-api/routes/fragments.d.ts +13 -1
- package/dist/admin-api/routes/fragments.d.ts.map +1 -1
- package/dist/admin-api/routes/fragments.js +127 -92
- package/dist/admin-api/routes/fragments.js.map +1 -1
- package/dist/admin-api/routes/health.d.ts +60 -0
- package/dist/admin-api/routes/health.d.ts.map +1 -0
- package/dist/admin-api/routes/health.js +65 -0
- package/dist/admin-api/routes/health.js.map +1 -0
- package/dist/admin-api/routes/history.d.ts +2 -1
- package/dist/admin-api/routes/history.d.ts.map +1 -1
- package/dist/admin-api/routes/history.js +26 -4
- package/dist/admin-api/routes/history.js.map +1 -1
- package/dist/admin-api/routes/pages.d.ts +20 -1
- package/dist/admin-api/routes/pages.d.ts.map +1 -1
- package/dist/admin-api/routes/pages.js +157 -117
- package/dist/admin-api/routes/pages.js.map +1 -1
- package/dist/admin-api/routes/preview.d.ts.map +1 -1
- package/dist/admin-api/routes/preview.js +56 -17
- package/dist/admin-api/routes/preview.js.map +1 -1
- package/dist/admin-api/routes/publish.d.ts +19 -1
- package/dist/admin-api/routes/publish.d.ts.map +1 -1
- package/dist/admin-api/routes/publish.js +508 -92
- package/dist/admin-api/routes/publish.js.map +1 -1
- package/dist/admin-api/routes/rename.d.ts +62 -0
- package/dist/admin-api/routes/rename.d.ts.map +1 -0
- package/dist/admin-api/routes/rename.js +366 -0
- package/dist/admin-api/routes/rename.js.map +1 -0
- package/dist/admin-api/routes/site.d.ts.map +1 -1
- package/dist/admin-api/routes/site.js +6 -18
- package/dist/admin-api/routes/site.js.map +1 -1
- package/dist/admin-api/routes/system.d.ts +23 -0
- package/dist/admin-api/routes/system.d.ts.map +1 -0
- package/dist/admin-api/routes/system.js +115 -0
- package/dist/admin-api/routes/system.js.map +1 -0
- package/dist/admin-api/routes/templates.d.ts +11 -1
- package/dist/admin-api/routes/templates.d.ts.map +1 -1
- package/dist/admin-api/routes/templates.js +36 -3
- package/dist/admin-api/routes/templates.js.map +1 -1
- package/dist/admin-api/routes/validation.d.ts +47 -0
- package/dist/admin-api/routes/validation.d.ts.map +1 -0
- package/dist/admin-api/routes/validation.js +120 -0
- package/dist/admin-api/routes/validation.js.map +1 -0
- package/dist/admin-api/schemas/archive.d.ts +124 -0
- package/dist/admin-api/schemas/archive.d.ts.map +1 -0
- package/dist/admin-api/schemas/archive.js +93 -0
- package/dist/admin-api/schemas/archive.js.map +1 -0
- package/dist/admin-api/schemas/assets.d.ts +16 -0
- package/dist/admin-api/schemas/assets.d.ts.map +1 -1
- package/dist/admin-api/schemas/assets.js +15 -0
- package/dist/admin-api/schemas/assets.js.map +1 -1
- package/dist/admin-api/schemas/audit.d.ts +175 -0
- package/dist/admin-api/schemas/audit.d.ts.map +1 -0
- package/dist/admin-api/schemas/audit.js +91 -0
- package/dist/admin-api/schemas/audit.js.map +1 -0
- package/dist/admin-api/schemas/error.d.ts +94 -0
- package/dist/admin-api/schemas/error.d.ts.map +1 -0
- package/dist/admin-api/schemas/error.js +79 -0
- package/dist/admin-api/schemas/error.js.map +1 -0
- package/dist/admin-api/schemas/fragments.d.ts +2 -0
- package/dist/admin-api/schemas/fragments.d.ts.map +1 -1
- package/dist/admin-api/schemas/fragments.js +4 -0
- package/dist/admin-api/schemas/fragments.js.map +1 -1
- package/dist/admin-api/schemas/index.d.ts +8 -0
- package/dist/admin-api/schemas/index.d.ts.map +1 -1
- package/dist/admin-api/schemas/index.js +8 -0
- package/dist/admin-api/schemas/index.js.map +1 -1
- package/dist/admin-api/schemas/pages.d.ts +2 -0
- package/dist/admin-api/schemas/pages.d.ts.map +1 -1
- package/dist/admin-api/schemas/pages.js +11 -0
- package/dist/admin-api/schemas/pages.js.map +1 -1
- package/dist/admin-api/schemas/rename.d.ts +77 -0
- package/dist/admin-api/schemas/rename.d.ts.map +1 -0
- package/dist/admin-api/schemas/rename.js +75 -0
- package/dist/admin-api/schemas/rename.js.map +1 -0
- package/dist/admin-api/schemas/site.d.ts +3 -2
- package/dist/admin-api/schemas/site.d.ts.map +1 -1
- package/dist/admin-api/schemas/site.js +3 -2
- package/dist/admin-api/schemas/site.js.map +1 -1
- package/dist/admin-api/schemas/system.d.ts +28 -0
- package/dist/admin-api/schemas/system.d.ts.map +1 -0
- package/dist/admin-api/schemas/system.js +35 -0
- package/dist/admin-api/schemas/system.js.map +1 -0
- package/dist/admin-api/schemas/targets.d.ts +55 -0
- package/dist/admin-api/schemas/targets.d.ts.map +1 -1
- package/dist/admin-api/schemas/targets.js +46 -0
- package/dist/admin-api/schemas/targets.js.map +1 -1
- package/dist/admin-api/schemas/templates.d.ts +54 -0
- package/dist/admin-api/schemas/templates.d.ts.map +1 -1
- package/dist/admin-api/schemas/templates.js +21 -0
- package/dist/admin-api/schemas/templates.js.map +1 -1
- package/dist/admin-api/schemas/validation.d.ts +101 -0
- package/dist/admin-api/schemas/validation.d.ts.map +1 -0
- package/dist/admin-api/schemas/validation.js +57 -0
- package/dist/admin-api/schemas/validation.js.map +1 -0
- package/dist/admin-api/source-context.d.ts +66 -10
- package/dist/admin-api/source-context.d.ts.map +1 -1
- package/dist/admin-api/source-context.js +43 -5
- package/dist/admin-api/source-context.js.map +1 -1
- package/dist/ai/adapter-scaffold.d.ts +63 -0
- package/dist/ai/adapter-scaffold.d.ts.map +1 -0
- package/dist/ai/adapter-scaffold.js +89 -0
- package/dist/ai/adapter-scaffold.js.map +1 -0
- package/dist/ai/compose-prompt.d.ts +50 -0
- package/dist/ai/compose-prompt.d.ts.map +1 -0
- package/dist/ai/compose-prompt.js +49 -0
- package/dist/ai/compose-prompt.js.map +1 -0
- package/dist/ai/errors.d.ts +65 -0
- package/dist/ai/errors.d.ts.map +1 -0
- package/dist/ai/errors.js +59 -0
- package/dist/ai/errors.js.map +1 -0
- package/dist/ai/index.d.ts +17 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +16 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/provider.d.ts +76 -0
- package/dist/ai/provider.d.ts.map +1 -0
- package/dist/ai/provider.js +13 -0
- package/dist/ai/provider.js.map +1 -0
- package/dist/ai/refusal.d.ts +50 -0
- package/dist/ai/refusal.d.ts.map +1 -0
- package/dist/ai/refusal.js +100 -0
- package/dist/ai/refusal.js.map +1 -0
- package/dist/ai/vision-prep.d.ts +32 -0
- package/dist/ai/vision-prep.d.ts.map +1 -0
- package/dist/ai/vision-prep.js +113 -0
- package/dist/ai/vision-prep.js.map +1 -0
- package/dist/alt/adapter.d.ts +140 -0
- package/dist/alt/adapter.d.ts.map +1 -0
- package/dist/alt/adapter.js +7 -0
- package/dist/alt/adapter.js.map +1 -0
- package/dist/alt/anthropic.d.ts +63 -0
- package/dist/alt/anthropic.d.ts.map +1 -0
- package/dist/alt/anthropic.js +147 -0
- package/dist/alt/anthropic.js.map +1 -0
- package/dist/alt/config.d.ts +67 -0
- package/dist/alt/config.d.ts.map +1 -0
- package/dist/alt/config.js +41 -0
- package/dist/alt/config.js.map +1 -0
- package/dist/alt/factory.d.ts +19 -0
- package/dist/alt/factory.d.ts.map +1 -0
- package/dist/alt/factory.js +69 -0
- package/dist/alt/factory.js.map +1 -0
- package/dist/alt/null-adapter.d.ts +3 -0
- package/dist/alt/null-adapter.d.ts.map +1 -0
- package/dist/alt/null-adapter.js +43 -0
- package/dist/alt/null-adapter.js.map +1 -0
- package/dist/alt/ollama.d.ts +40 -0
- package/dist/alt/ollama.d.ts.map +1 -0
- package/dist/alt/ollama.js +139 -0
- package/dist/alt/ollama.js.map +1 -0
- package/dist/alt/openai.d.ts +46 -0
- package/dist/alt/openai.d.ts.map +1 -0
- package/dist/alt/openai.js +118 -0
- package/dist/alt/openai.js.map +1 -0
- package/dist/alt/prompt-policies.d.ts +79 -0
- package/dist/alt/prompt-policies.d.ts.map +1 -0
- package/dist/alt/prompt-policies.js +67 -0
- package/dist/alt/prompt-policies.js.map +1 -0
- package/dist/alt/route-handler.d.ts +56 -0
- package/dist/alt/route-handler.d.ts.map +1 -0
- package/dist/alt/route-handler.js +122 -0
- package/dist/alt/route-handler.js.map +1 -0
- package/dist/alt/suggester.d.ts +57 -0
- package/dist/alt/suggester.d.ts.map +1 -0
- package/dist/alt/suggester.js +133 -0
- package/dist/alt/suggester.js.map +1 -0
- package/dist/app.js +1 -1
- package/dist/app.js.map +1 -1
- package/dist/archive-aliases.d.ts +79 -0
- package/dist/archive-aliases.d.ts.map +1 -0
- package/dist/archive-aliases.js +60 -0
- package/dist/archive-aliases.js.map +1 -0
- package/dist/archive-helpers.d.ts +73 -0
- package/dist/archive-helpers.d.ts.map +1 -0
- package/dist/archive-helpers.js +94 -0
- package/dist/archive-helpers.js.map +1 -0
- package/dist/assets/find-refs.d.ts +1 -1
- package/dist/assets/find-refs.js +1 -1
- package/dist/assets/find-refs.js.map +1 -1
- package/dist/assets/rename.js +1 -1
- package/dist/assets/rename.js.map +1 -1
- package/dist/assets/replace.js +1 -1
- package/dist/assets/replace.js.map +1 -1
- package/dist/assets/resolve.js +4 -4
- package/dist/assets/resolve.js.map +1 -1
- package/dist/assets/serve-route.js +2 -2
- package/dist/assets/serve-route.js.map +1 -1
- package/dist/assets/validate.d.ts +1 -1
- package/dist/assets/validate.js +1 -1
- package/dist/audit/config.d.ts +75 -0
- package/dist/audit/config.d.ts.map +1 -0
- package/dist/audit/config.js +91 -0
- package/dist/audit/config.js.map +1 -0
- package/dist/audit/context.d.ts +98 -0
- package/dist/audit/context.d.ts.map +1 -0
- package/dist/audit/context.js +51 -0
- package/dist/audit/context.js.map +1 -0
- package/dist/audit/errors.d.ts +73 -0
- package/dist/audit/errors.d.ts.map +1 -0
- package/dist/audit/errors.js +78 -0
- package/dist/audit/errors.js.map +1 -0
- package/dist/audit/index.d.ts +16 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +10 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/provider.d.ts +73 -0
- package/dist/audit/provider.d.ts.map +1 -0
- package/dist/audit/provider.js +2 -0
- package/dist/audit/provider.js.map +1 -0
- package/dist/audit/providers/history.d.ts +66 -0
- package/dist/audit/providers/history.d.ts.map +1 -0
- package/dist/audit/providers/history.js +102 -0
- package/dist/audit/providers/history.js.map +1 -0
- package/dist/audit/pseudonymize.d.ts +26 -0
- package/dist/audit/pseudonymize.d.ts.map +1 -0
- package/dist/audit/pseudonymize.js +86 -0
- package/dist/audit/pseudonymize.js.map +1 -0
- package/dist/audit/recorder.d.ts +102 -0
- package/dist/audit/recorder.d.ts.map +1 -0
- package/dist/audit/recorder.js +55 -0
- package/dist/audit/recorder.js.map +1 -0
- package/dist/audit/retention.d.ts +83 -0
- package/dist/audit/retention.d.ts.map +1 -0
- package/dist/audit/retention.js +142 -0
- package/dist/audit/retention.js.map +1 -0
- package/dist/audit/source-ip.d.ts +32 -0
- package/dist/audit/source-ip.d.ts.map +1 -0
- package/dist/audit/source-ip.js +164 -0
- package/dist/audit/source-ip.js.map +1 -0
- package/dist/audit/types.d.ts +143 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/audit/types.js +33 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/audit/user-agent.d.ts +28 -0
- package/dist/audit/user-agent.d.ts.map +1 -0
- package/dist/audit/user-agent.js +63 -0
- package/dist/audit/user-agent.js.map +1 -0
- package/dist/auth/capabilities.d.ts +28 -0
- package/dist/auth/capabilities.d.ts.map +1 -0
- package/dist/auth/capabilities.js +101 -0
- package/dist/auth/capabilities.js.map +1 -0
- package/dist/auth/config.d.ts +109 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +221 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/errors.d.ts +72 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +78 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/factory.d.ts +43 -0
- package/dist/auth/factory.d.ts.map +1 -0
- package/dist/auth/factory.js +48 -0
- package/dist/auth/factory.js.map +1 -0
- package/dist/auth/index.d.ts +21 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +14 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/ip-match.d.ts +29 -0
- package/dist/auth/ip-match.d.ts.map +1 -0
- package/dist/auth/ip-match.js +162 -0
- package/dist/auth/ip-match.js.map +1 -0
- package/dist/auth/provider.d.ts +76 -0
- package/dist/auth/provider.d.ts.map +1 -0
- package/dist/auth/provider.js +2 -0
- package/dist/auth/provider.js.map +1 -0
- package/dist/auth/providers/aws-cognito.d.ts +55 -0
- package/dist/auth/providers/aws-cognito.d.ts.map +1 -0
- package/dist/auth/providers/aws-cognito.js +114 -0
- package/dist/auth/providers/aws-cognito.js.map +1 -0
- package/dist/auth/providers/azure-easy-auth.d.ts +7 -0
- package/dist/auth/providers/azure-easy-auth.d.ts.map +1 -0
- package/dist/auth/providers/azure-easy-auth.js +48 -0
- package/dist/auth/providers/azure-easy-auth.js.map +1 -0
- package/dist/auth/providers/cloudflare-access.d.ts +71 -0
- package/dist/auth/providers/cloudflare-access.d.ts.map +1 -0
- package/dist/auth/providers/cloudflare-access.js +120 -0
- package/dist/auth/providers/cloudflare-access.js.map +1 -0
- package/dist/auth/providers/forwarded-user.d.ts +31 -0
- package/dist/auth/providers/forwarded-user.d.ts.map +1 -0
- package/dist/auth/providers/forwarded-user.js +72 -0
- package/dist/auth/providers/forwarded-user.js.map +1 -0
- package/dist/auth/providers/none.d.ts +6 -0
- package/dist/auth/providers/none.d.ts.map +1 -0
- package/dist/auth/providers/none.js +19 -0
- package/dist/auth/providers/none.js.map +1 -0
- package/dist/auth/providers/tailscale.d.ts +7 -0
- package/dist/auth/providers/tailscale.d.ts.map +1 -0
- package/dist/auth/providers/tailscale.js +30 -0
- package/dist/auth/providers/tailscale.js.map +1 -0
- package/dist/auth/role-resolver.d.ts +38 -0
- package/dist/auth/role-resolver.d.ts.map +1 -0
- package/dist/auth/role-resolver.js +92 -0
- package/dist/auth/role-resolver.js.map +1 -0
- package/dist/auth/types.d.ts +150 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +60 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cache/errors.d.ts +41 -0
- package/dist/cache/errors.d.ts.map +1 -0
- package/dist/cache/errors.js +44 -0
- package/dist/cache/errors.js.map +1 -0
- package/dist/cache/factories.d.ts +17 -0
- package/dist/cache/factories.d.ts.map +1 -0
- package/dist/cache/factories.js +17 -0
- package/dist/cache/factories.js.map +1 -0
- package/dist/cache/keys.d.ts +63 -0
- package/dist/cache/keys.d.ts.map +1 -0
- package/dist/cache/keys.js +145 -0
- package/dist/cache/keys.js.map +1 -0
- package/dist/cache/memory.d.ts +51 -0
- package/dist/cache/memory.d.ts.map +1 -0
- package/dist/cache/memory.js +204 -0
- package/dist/cache/memory.js.map +1 -0
- package/dist/cache/per-site.d.ts +22 -0
- package/dist/cache/per-site.d.ts.map +1 -0
- package/dist/cache/per-site.js +114 -0
- package/dist/cache/per-site.js.map +1 -0
- package/dist/cache/types.d.ts +142 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +33 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/cli/archive.d.ts +44 -0
- package/dist/cli/archive.d.ts.map +1 -0
- package/dist/cli/archive.js +310 -0
- package/dist/cli/archive.js.map +1 -0
- package/dist/cli/bootstrap.d.ts +15 -8
- package/dist/cli/bootstrap.d.ts.map +1 -1
- package/dist/cli/bootstrap.js +59 -23
- package/dist/cli/bootstrap.js.map +1 -1
- package/dist/cli/dev-template-watcher.d.ts +29 -0
- package/dist/cli/dev-template-watcher.d.ts.map +1 -0
- package/dist/cli/dev-template-watcher.js +38 -0
- package/dist/cli/dev-template-watcher.js.map +1 -0
- package/dist/cli/history.d.ts.map +1 -1
- package/dist/cli/history.js +5 -3
- package/dist/cli/history.js.map +1 -1
- package/dist/cli/index.js +712 -395
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/validate-flags.d.ts +29 -0
- package/dist/cli/validate-flags.d.ts.map +1 -0
- package/dist/cli/validate-flags.js +49 -0
- package/dist/cli/validate-flags.js.map +1 -0
- package/dist/compare.d.ts +1 -1
- package/dist/compare.d.ts.map +1 -1
- package/dist/compare.js +25 -23
- package/dist/compare.js.map +1 -1
- package/dist/component-ids.d.ts +25 -0
- package/dist/component-ids.d.ts.map +1 -0
- package/dist/component-ids.js +83 -0
- package/dist/component-ids.js.map +1 -0
- package/dist/config/define.d.ts +61 -0
- package/dist/config/define.d.ts.map +1 -0
- package/dist/config/define.js +64 -0
- package/dist/config/define.js.map +1 -0
- package/dist/config/errors.d.ts +32 -0
- package/dist/config/errors.d.ts.map +1 -0
- package/dist/config/errors.js +40 -0
- package/dist/config/errors.js.map +1 -0
- package/dist/config/index.d.ts +13 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +20 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +105 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +265 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schemas.d.ts +89 -0
- package/dist/config/schemas.d.ts.map +1 -0
- package/dist/config/schemas.js +172 -0
- package/dist/config/schemas.js.map +1 -0
- package/dist/config/types.d.ts +32 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +15 -0
- package/dist/config/types.js.map +1 -0
- package/dist/deploy/cloudflare-workers.d.ts +46 -0
- package/dist/deploy/cloudflare-workers.d.ts.map +1 -0
- package/dist/deploy/cloudflare-workers.js +213 -0
- package/dist/deploy/cloudflare-workers.js.map +1 -0
- package/dist/deploy/errors.d.ts +66 -0
- package/dist/deploy/errors.d.ts.map +1 -0
- package/dist/deploy/errors.js +82 -0
- package/dist/deploy/errors.js.map +1 -0
- package/dist/deploy/index.d.ts +9 -0
- package/dist/deploy/index.d.ts.map +1 -0
- package/dist/deploy/index.js +3 -0
- package/dist/deploy/index.js.map +1 -0
- package/dist/deploy/types.d.ts +162 -0
- package/dist/deploy/types.d.ts.map +1 -0
- package/dist/deploy/types.js +2 -0
- package/dist/deploy/types.js.map +1 -0
- package/dist/fragments/create.d.ts +70 -0
- package/dist/fragments/create.d.ts.map +1 -0
- package/dist/fragments/create.js +93 -0
- package/dist/fragments/create.js.map +1 -0
- package/dist/fragments/publish.d.ts +37 -0
- package/dist/fragments/publish.d.ts.map +1 -0
- package/dist/fragments/publish.js +52 -0
- package/dist/fragments/publish.js.map +1 -0
- package/dist/fragments/save.d.ts +81 -0
- package/dist/fragments/save.d.ts.map +1 -0
- package/dist/fragments/save.js +105 -0
- package/dist/fragments/save.js.map +1 -0
- package/dist/history-recorder.d.ts +5 -5
- package/dist/history-recorder.d.ts.map +1 -1
- package/dist/history-recorder.js +4 -4
- package/dist/history-recorder.js.map +1 -1
- package/dist/history-restorer.js +2 -2
- package/dist/history-restorer.js.map +1 -1
- package/dist/history.d.ts +1 -1
- package/dist/hooks/audit-emitter.d.ts +73 -0
- package/dist/hooks/audit-emitter.d.ts.map +1 -0
- package/dist/hooks/audit-emitter.js +13 -0
- package/dist/hooks/audit-emitter.js.map +1 -0
- package/dist/hooks/context.d.ts +78 -0
- package/dist/hooks/context.d.ts.map +1 -0
- package/dist/hooks/context.js +56 -0
- package/dist/hooks/context.js.map +1 -0
- package/dist/hooks/contribution.d.ts +90 -0
- package/dist/hooks/contribution.d.ts.map +1 -0
- package/dist/hooks/contribution.js +2 -0
- package/dist/hooks/contribution.js.map +1 -0
- package/dist/hooks/dispatch.d.ts +30 -0
- package/dist/hooks/dispatch.d.ts.map +1 -0
- package/dist/hooks/dispatch.js +252 -0
- package/dist/hooks/dispatch.js.map +1 -0
- package/dist/hooks/errors.d.ts +100 -0
- package/dist/hooks/errors.d.ts.map +1 -0
- package/dist/hooks/errors.js +103 -0
- package/dist/hooks/errors.js.map +1 -0
- package/dist/hooks/index.d.ts +15 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +6 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/registry.d.ts +53 -0
- package/dist/hooks/registry.d.ts.map +1 -0
- package/dist/hooks/registry.js +139 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/storage.d.ts +43 -0
- package/dist/hooks/storage.d.ts.map +1 -0
- package/dist/hooks/storage.js +2 -0
- package/dist/hooks/storage.js.map +1 -0
- package/dist/hooks/types.d.ts +324 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +2 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +26 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -5
- package/dist/index.js.map +1 -1
- package/dist/locale.d.ts +5 -1
- package/dist/locale.d.ts.map +1 -1
- package/dist/locale.js +6 -2
- package/dist/locale.js.map +1 -1
- package/dist/manifest-save.d.ts +255 -0
- package/dist/manifest-save.d.ts.map +1 -0
- package/dist/manifest-save.js +260 -0
- package/dist/manifest-save.js.map +1 -0
- package/dist/manifest.d.ts +1 -2
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +43 -44
- package/dist/manifest.js.map +1 -1
- package/dist/node-floor.d.ts +3 -0
- package/dist/node-floor.d.ts.map +1 -0
- package/dist/node-floor.js +3 -0
- package/dist/node-floor.js.map +1 -0
- package/dist/pages/create.d.ts +103 -0
- package/dist/pages/create.d.ts.map +1 -0
- package/dist/pages/create.js +117 -0
- package/dist/pages/create.js.map +1 -0
- package/dist/pages/publish.d.ts +59 -0
- package/dist/pages/publish.d.ts.map +1 -0
- package/dist/pages/publish.js +78 -0
- package/dist/pages/publish.js.map +1 -0
- package/dist/pages/save.d.ts +97 -0
- package/dist/pages/save.d.ts.map +1 -0
- package/dist/pages/save.js +138 -0
- package/dist/pages/save.js.map +1 -0
- package/dist/providers/factories.d.ts +65 -0
- package/dist/providers/factories.d.ts.map +1 -0
- package/dist/providers/factories.js +189 -0
- package/dist/providers/factories.js.map +1 -0
- package/dist/publish-item.d.ts +225 -0
- package/dist/publish-item.d.ts.map +1 -0
- package/dist/publish-item.js +210 -0
- package/dist/publish-item.js.map +1 -0
- package/dist/publish-rendered.d.ts.map +1 -1
- package/dist/publish-rendered.js +75 -6
- package/dist/publish-rendered.js.map +1 -1
- package/dist/publish-renderers.d.ts +132 -0
- package/dist/publish-renderers.d.ts.map +1 -0
- package/dist/publish-renderers.js +240 -0
- package/dist/publish-renderers.js.map +1 -0
- package/dist/publish-run.d.ts +223 -0
- package/dist/publish-run.d.ts.map +1 -0
- package/dist/publish-run.js +307 -0
- package/dist/publish-run.js.map +1 -0
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +1 -10
- package/dist/publish.js.map +1 -1
- package/dist/render-for-analysis.d.ts +24 -0
- package/dist/render-for-analysis.d.ts.map +1 -0
- package/dist/render-for-analysis.js +146 -0
- package/dist/render-for-analysis.js.map +1 -0
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +47 -23
- package/dist/resolver.js.map +1 -1
- package/dist/runtime/archive-marker.d.ts +62 -0
- package/dist/runtime/archive-marker.d.ts.map +1 -0
- package/dist/runtime/archive-marker.js +88 -0
- package/dist/runtime/archive-marker.js.map +1 -0
- package/dist/runtime/capability-gap-warnings.d.ts +42 -0
- package/dist/runtime/capability-gap-warnings.d.ts.map +1 -0
- package/dist/runtime/capability-gap-warnings.js +28 -0
- package/dist/runtime/capability-gap-warnings.js.map +1 -0
- package/dist/runtime/redirects-emit.d.ts +93 -0
- package/dist/runtime/redirects-emit.d.ts.map +1 -0
- package/dist/runtime/redirects-emit.js +89 -0
- package/dist/runtime/redirects-emit.js.map +1 -0
- package/dist/runtime/runtime-capabilities.d.ts +79 -0
- package/dist/runtime/runtime-capabilities.d.ts.map +1 -0
- package/dist/runtime/runtime-capabilities.js +60 -0
- package/dist/runtime/runtime-capabilities.js.map +1 -0
- package/dist/save-etag.d.ts +69 -0
- package/dist/save-etag.d.ts.map +1 -0
- package/dist/save-etag.js +118 -0
- package/dist/save-etag.js.map +1 -0
- package/dist/site-loader.d.ts +42 -4
- package/dist/site-loader.d.ts.map +1 -1
- package/dist/site-loader.js +27 -8
- package/dist/site-loader.js.map +1 -1
- package/dist/targets.d.ts +21 -12
- package/dist/targets.d.ts.map +1 -1
- package/dist/targets.js +27 -95
- package/dist/targets.js.map +1 -1
- package/dist/testing/admin-cache-contract.d.ts +52 -0
- package/dist/testing/admin-cache-contract.d.ts.map +1 -0
- package/dist/testing/admin-cache-contract.js +203 -0
- package/dist/testing/admin-cache-contract.js.map +1 -0
- package/dist/testing/index.d.ts +11 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +11 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/transforms/factories.d.ts +16 -0
- package/dist/transforms/factories.d.ts.map +1 -0
- package/dist/transforms/factories.js +18 -0
- package/dist/transforms/factories.js.map +1 -0
- package/dist/transforms/index.d.ts +10 -17
- package/dist/transforms/index.d.ts.map +1 -1
- package/dist/transforms/index.js +4 -28
- package/dist/transforms/index.js.map +1 -1
- package/dist/transforms/sharp.d.ts +15 -1
- package/dist/transforms/sharp.d.ts.map +1 -1
- package/dist/transforms/sharp.js +34 -20
- package/dist/transforms/sharp.js.map +1 -1
- package/dist/types.d.ts +379 -52
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +20 -1
- package/dist/types.js.map +1 -1
- package/dist/validation/alt-required-walker.d.ts +27 -0
- package/dist/validation/alt-required-walker.d.ts.map +1 -0
- package/dist/validation/alt-required-walker.js +108 -0
- package/dist/validation/alt-required-walker.js.map +1 -0
- package/dist/validation/default-registry.d.ts +12 -0
- package/dist/validation/default-registry.d.ts.map +1 -0
- package/dist/validation/default-registry.js +55 -0
- package/dist/validation/default-registry.js.map +1 -0
- package/dist/validation/publish-audit.d.ts +44 -0
- package/dist/validation/publish-audit.d.ts.map +1 -0
- package/dist/validation/publish-audit.js +64 -0
- package/dist/validation/publish-audit.js.map +1 -0
- package/dist/validation/registry.d.ts +23 -0
- package/dist/validation/registry.d.ts.map +1 -0
- package/dist/validation/registry.js +15 -0
- package/dist/validation/registry.js.map +1 -0
- package/dist/validation/save-delta.d.ts +46 -0
- package/dist/validation/save-delta.d.ts.map +1 -0
- package/dist/validation/save-delta.js +57 -0
- package/dist/validation/save-delta.js.map +1 -0
- package/dist/validation/scanner.d.ts +91 -0
- package/dist/validation/scanner.d.ts.map +1 -0
- package/dist/validation/scanner.js +327 -0
- package/dist/validation/scanner.js.map +1 -0
- package/dist/validation/template-impact.d.ts +52 -0
- package/dist/validation/template-impact.d.ts.map +1 -0
- package/dist/validation/template-impact.js +53 -0
- package/dist/validation/template-impact.js.map +1 -0
- package/dist/validation/types.d.ts +123 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +7 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/validators/accessibility.d.ts +3 -0
- package/dist/validation/validators/accessibility.d.ts.map +1 -0
- package/dist/validation/validators/accessibility.js +106 -0
- package/dist/validation/validators/accessibility.js.map +1 -0
- package/dist/validation/validators/aliasof-points-to-archived.d.ts +40 -0
- package/dist/validation/validators/aliasof-points-to-archived.d.ts.map +1 -0
- package/dist/validation/validators/aliasof-points-to-archived.js +34 -0
- package/dist/validation/validators/aliasof-points-to-archived.js.map +1 -0
- package/dist/validation/validators/alt-required.d.ts +3 -0
- package/dist/validation/validators/alt-required.d.ts.map +1 -0
- package/dist/validation/validators/alt-required.js +118 -0
- package/dist/validation/validators/alt-required.js.map +1 -0
- package/dist/validation/validators/archive-not-supported-on-target.d.ts +3 -0
- package/dist/validation/validators/archive-not-supported-on-target.d.ts.map +1 -0
- package/dist/validation/validators/archive-not-supported-on-target.js +38 -0
- package/dist/validation/validators/archive-not-supported-on-target.js.map +1 -0
- package/dist/validation/validators/broken-links.d.ts +3 -0
- package/dist/validation/validators/broken-links.d.ts.map +1 -0
- package/dist/validation/validators/broken-links.js +190 -0
- package/dist/validation/validators/broken-links.js.map +1 -0
- package/dist/validation/validators/circular-alias.d.ts +36 -0
- package/dist/validation/validators/circular-alias.d.ts.map +1 -0
- package/dist/validation/validators/circular-alias.js +63 -0
- package/dist/validation/validators/circular-alias.js.map +1 -0
- package/dist/validation/validators/circular-fragment.d.ts +15 -0
- package/dist/validation/validators/circular-fragment.d.ts.map +1 -0
- package/dist/validation/validators/circular-fragment.js +97 -0
- package/dist/validation/validators/circular-fragment.js.map +1 -0
- package/dist/validation/validators/dangling-alias.d.ts +38 -0
- package/dist/validation/validators/dangling-alias.d.ts.map +1 -0
- package/dist/validation/validators/dangling-alias.js +31 -0
- package/dist/validation/validators/dangling-alias.js.map +1 -0
- package/dist/validation/validators/deploy-target-type-supported.d.ts +3 -0
- package/dist/validation/validators/deploy-target-type-supported.d.ts.map +1 -0
- package/dist/validation/validators/deploy-target-type-supported.js +32 -0
- package/dist/validation/validators/deploy-target-type-supported.js.map +1 -0
- package/dist/validation/validators/dynamic-route-conflict.d.ts +18 -0
- package/dist/validation/validators/dynamic-route-conflict.d.ts.map +1 -0
- package/dist/validation/validators/dynamic-route-conflict.js +80 -0
- package/dist/validation/validators/dynamic-route-conflict.js.map +1 -0
- package/dist/validation/validators/html-validity.d.ts +3 -0
- package/dist/validation/validators/html-validity.d.ts.map +1 -0
- package/dist/validation/validators/html-validity.js +89 -0
- package/dist/validation/validators/html-validity.js.map +1 -0
- package/dist/validation/validators/orphaned-locale-file.d.ts +21 -0
- package/dist/validation/validators/orphaned-locale-file.d.ts.map +1 -0
- package/dist/validation/validators/orphaned-locale-file.js +84 -0
- package/dist/validation/validators/orphaned-locale-file.js.map +1 -0
- package/dist/validation/validators/referenced-archived-without-alias.d.ts +3 -0
- package/dist/validation/validators/referenced-archived-without-alias.d.ts.map +1 -0
- package/dist/validation/validators/referenced-archived-without-alias.js +65 -0
- package/dist/validation/validators/referenced-archived-without-alias.js.map +1 -0
- package/dist/validation/validators/referenced-asset-exists.d.ts +13 -0
- package/dist/validation/validators/referenced-asset-exists.d.ts.map +1 -0
- package/dist/validation/validators/referenced-asset-exists.js +80 -0
- package/dist/validation/validators/referenced-asset-exists.js.map +1 -0
- package/dist/validation/validators/referenced-fragment-exists.d.ts +9 -0
- package/dist/validation/validators/referenced-fragment-exists.d.ts.map +1 -0
- package/dist/validation/validators/referenced-fragment-exists.js +52 -0
- package/dist/validation/validators/referenced-fragment-exists.js.map +1 -0
- package/dist/validation/validators/referenced-template-exists.d.ts +10 -0
- package/dist/validation/validators/referenced-template-exists.d.ts.map +1 -0
- package/dist/validation/validators/referenced-template-exists.js +74 -0
- package/dist/validation/validators/referenced-template-exists.js.map +1 -0
- package/dist/validation/validators/schema-conformance.d.ts +17 -0
- package/dist/validation/validators/schema-conformance.d.ts.map +1 -0
- package/dist/validation/validators/schema-conformance.js +94 -0
- package/dist/validation/validators/schema-conformance.js.map +1 -0
- package/dist/validation/validators/target-deploy-coverage.d.ts +3 -0
- package/dist/validation/validators/target-deploy-coverage.d.ts.map +1 -0
- package/dist/validation/validators/target-deploy-coverage.js +37 -0
- package/dist/validation/validators/target-deploy-coverage.js.map +1 -0
- package/dist/validation/validators/unused-fragment.d.ts +16 -0
- package/dist/validation/validators/unused-fragment.d.ts.map +1 -0
- package/dist/validation/validators/unused-fragment.js +86 -0
- package/dist/validation/validators/unused-fragment.js.map +1 -0
- package/package.json +54 -31
- package/admin-dist/assets/index-BO9-CXmW.css +0 -1
- package/admin-dist/assets/index-Ufu8zZH_.js +0 -668
- package/admin-dist/assets/rolldown-runtime-COnpUsM8.js +0 -1
- package/admin-dist/assets/vendor-rjsf-HKBAjOmQ.js +0 -32
- package/admin-dist/assets/vendor-tiptap-IyO99U4R.js +0 -142
- package/admin-dist/assets/vendor-vue-D3wBSmDf.js +0 -1
- package/dist/publish-locale.d.ts +0 -44
- package/dist/publish-locale.d.ts.map +0 -1
- package/dist/publish-locale.js +0 -103
- package/dist/publish-locale.js.map +0 -1
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Save pipeline — orchestrator for Page and Fragment Manifest writes.
|
|
3
|
+
*
|
|
4
|
+
* Today's `admin-api/routes/pages.ts` PUT handler and the matching
|
|
5
|
+
* fragments.ts handler each inline the same 13-step orchestration:
|
|
6
|
+
* etag check → validate → beforeSave hooks → history → write → sidecars
|
|
7
|
+
* → cache → audit → afterSave hooks → scanner. Two route files, one deep
|
|
8
|
+
* concept duplicated.
|
|
9
|
+
*
|
|
10
|
+
* `saveManifestCore` is the seam that hides the orchestration. Routes
|
|
11
|
+
* become protocol translators (parse Hono request → call → project
|
|
12
|
+
* SaveResult to HTTP). The CLI, plugin-contributed routes, and any
|
|
13
|
+
* future Save-shaped consumer call the same function.
|
|
14
|
+
*
|
|
15
|
+
* Per-kind entry points (`savePage`, `saveFragment` in pages/save.ts +
|
|
16
|
+
* fragments/save.ts — Cuts 3+4) wrap this with kind-specific concerns:
|
|
17
|
+
* locale resolution from `site.pages` vs `site.fragments`, the `route`
|
|
18
|
+
* field preservation Page Manifests need, and per-kind cache prefixes
|
|
19
|
+
* (Fragment Saves invalidate `pages:` too because Fragment References
|
|
20
|
+
* compose into Page summaries).
|
|
21
|
+
*
|
|
22
|
+
* Pipeline order is locked semantics, not configuration. Per
|
|
23
|
+
* `design-hooks.md` "Save flow with hooks": validators run first
|
|
24
|
+
* (validators are pure functions over a manifest), then beforeSave
|
|
25
|
+
* hooks see validated payload, then storage write, then afterSave
|
|
26
|
+
* hooks observe the result. Reordering breaks invariants — audit
|
|
27
|
+
* before write would lie about success.
|
|
28
|
+
*
|
|
29
|
+
* Reserved slots in the sequence (no-ops today; wired by future cuts):
|
|
30
|
+
* - Review-state precheck (Review-Workflow Cut 5: pending-review
|
|
31
|
+
* state → 409 EDIT_LOCKED)
|
|
32
|
+
* - Cascades (Soft-Delete Q6: auto-cancel scheduled actions on
|
|
33
|
+
* archive transition; Review Cut 5: invalidateOnSave policy
|
|
34
|
+
* transitions approved → draft)
|
|
35
|
+
*
|
|
36
|
+
* Throws are reserved for infrastructure failures (storage write
|
|
37
|
+
* fail, audit infra fail per locked fail-open). Expected outcomes
|
|
38
|
+
* — STALE / VALIDATION_FAILED / HOOK_CANCELLED — are typed
|
|
39
|
+
* `SaveResult` variants. Callers `switch` exhaustively; TS narrows.
|
|
40
|
+
*/
|
|
41
|
+
import type { Principal } from './auth/types.js';
|
|
42
|
+
import type { ContentRoot } from './content-root.js';
|
|
43
|
+
import type { HistoryProvider } from './history.js';
|
|
44
|
+
import { type HookRegistry } from './hooks/index.js';
|
|
45
|
+
import type { Site } from './site-loader.js';
|
|
46
|
+
import type { StorageProvider } from './types.js';
|
|
47
|
+
import type { ValidatorRegistry } from './validation/registry.js';
|
|
48
|
+
import type { RescanCause, ValidationScanner } from './validation/scanner.js';
|
|
49
|
+
import type { Issue } from './validation/types.js';
|
|
50
|
+
/**
|
|
51
|
+
* Discriminator for the kind of manifest being saved. The pipeline
|
|
52
|
+
* spine is the same for every kind; per-kind wrappers in
|
|
53
|
+
* `pages/save.ts` and `fragments/save.ts` carry the kind through to
|
|
54
|
+
* audit + sidecar + cache invalidation calls.
|
|
55
|
+
*/
|
|
56
|
+
export type SaveManifestKind = 'page' | 'fragment';
|
|
57
|
+
/**
|
|
58
|
+
* Successful save outcome. `etag` is the recomputed save-etag for
|
|
59
|
+
* the new on-disk content; clients update their baseline without a
|
|
60
|
+
* separate GET so offline replay chains work (per
|
|
61
|
+
* `design-offline.md` Q3 — chained If-Match projections).
|
|
62
|
+
*/
|
|
63
|
+
export interface SaveOk {
|
|
64
|
+
readonly ok: true;
|
|
65
|
+
readonly etag: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Save-etag mismatch (per `design-offline.md` Q3). Server returned
|
|
69
|
+
* the current manifest body so the client can render a diff. The
|
|
70
|
+
* `currentEtag` lets the client retry-without-conflict if it accepts
|
|
71
|
+
* the server's version verbatim.
|
|
72
|
+
*/
|
|
73
|
+
export interface SaveStale {
|
|
74
|
+
readonly ok: false;
|
|
75
|
+
readonly code: 'STALE';
|
|
76
|
+
readonly current: Record<string, unknown>;
|
|
77
|
+
readonly currentEtag: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Save-delta validation produced blocking issues (per
|
|
81
|
+
* `design-validation.md` four-phase model). Only issues introduced
|
|
82
|
+
* by THIS edit are surfaced — pre-existing site debt is the
|
|
83
|
+
* background scanner's surface, not the save handler's.
|
|
84
|
+
*/
|
|
85
|
+
export interface SaveValidationFailed {
|
|
86
|
+
readonly ok: false;
|
|
87
|
+
readonly code: 'VALIDATION_FAILED';
|
|
88
|
+
readonly issues: readonly Issue[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* A `beforeSave` hook threw `HookCancellation` or `HookTimeout`
|
|
92
|
+
* (per `design-hooks.md` "Composition" — `before*` hooks chain;
|
|
93
|
+
* one throw stops the chain and cancels the operation). The hook's
|
|
94
|
+
* name is surfaced so clients can discriminate which hook
|
|
95
|
+
* cancelled.
|
|
96
|
+
*/
|
|
97
|
+
export interface SaveHookCancelled {
|
|
98
|
+
readonly ok: false;
|
|
99
|
+
readonly code: 'HOOK_CANCELLED';
|
|
100
|
+
readonly hook: string;
|
|
101
|
+
readonly reason: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Typed union of expected save outcomes. Routes project each
|
|
105
|
+
* variant to HTTP (200 / 409). Callers (CLI, plugin-routes, future
|
|
106
|
+
* save-via-hook) `switch` exhaustively. Adding a new variant is a
|
|
107
|
+
* compile error at every call site — intentional, per the locked
|
|
108
|
+
* decision in Q1.
|
|
109
|
+
*/
|
|
110
|
+
export type SaveResult = SaveOk | SaveStale | SaveValidationFailed | SaveHookCancelled;
|
|
111
|
+
/**
|
|
112
|
+
* Audit recorder shape the pipeline calls. Matches the existing
|
|
113
|
+
* `c.var.audit.record` surface from admin-api/middleware/audit.ts
|
|
114
|
+
* — the pipeline doesn't construct events differently from routes.
|
|
115
|
+
*
|
|
116
|
+
* Returns `unknown` (not `RecordResult`) so the pipeline doesn't
|
|
117
|
+
* couple to the audit module's return shape. Strict-mode operators
|
|
118
|
+
* branch on `result.failed > 0`; the pipeline doesn't.
|
|
119
|
+
*/
|
|
120
|
+
export interface SaveAuditRecorder {
|
|
121
|
+
record(event: {
|
|
122
|
+
action: 'save';
|
|
123
|
+
/**
|
|
124
|
+
* Closed-enum subset of AuditOutcome the save pipeline emits.
|
|
125
|
+
* 'hook-cancelled' fires when a beforeSave hook throws or times
|
|
126
|
+
* out (per design-hooks.md Q3); 'validation-failed' fires when
|
|
127
|
+
* save-delta validators flag blocking issues. Pre-fix shape
|
|
128
|
+
* conflated the two paths under 'validation-failed' — fixed
|
|
129
|
+
* 2026-05 alongside cross-foundation gap #1 coverage.
|
|
130
|
+
*/
|
|
131
|
+
outcome: 'success' | 'validation-failed' | 'forbidden' | 'hook-cancelled';
|
|
132
|
+
scope: {
|
|
133
|
+
kind: SaveManifestKind;
|
|
134
|
+
name: string;
|
|
135
|
+
};
|
|
136
|
+
metadata?: Record<string, unknown>;
|
|
137
|
+
}): Promise<unknown>;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Principal shape the pipeline needs. Re-exports `auth/types.ts:Principal`
|
|
141
|
+
* so callers (`c.var.principal`) pass the real type without conversion.
|
|
142
|
+
* The pipeline doesn't construct principals — only forwards them to
|
|
143
|
+
* `buildHookContext`.
|
|
144
|
+
*/
|
|
145
|
+
export type SavePrincipal = Principal;
|
|
146
|
+
/**
|
|
147
|
+
* Source wiring the pipeline needs. Mirrors the relevant subset of
|
|
148
|
+
* `admin-api/source-context.ts:SourceContext` without importing the
|
|
149
|
+
* admin-api type — the pipeline is a domain primitive, not bound to
|
|
150
|
+
* the admin-api boundary. Wrappers (`savePage`, `saveFragment`) pass
|
|
151
|
+
* `source` straight through; the structural compatibility with
|
|
152
|
+
* `SourceContext` lets that work without conversion.
|
|
153
|
+
*/
|
|
154
|
+
export interface SaveSourceWiring {
|
|
155
|
+
readonly storage: StorageProvider;
|
|
156
|
+
readonly contentRoot: ContentRoot;
|
|
157
|
+
readonly cache: {
|
|
158
|
+
invalidatePrefix(prefix: string): Promise<number>;
|
|
159
|
+
};
|
|
160
|
+
readonly history?: HistoryProvider;
|
|
161
|
+
readonly targetName?: string;
|
|
162
|
+
readonly manifest?: {
|
|
163
|
+
name?: string;
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Inputs to `saveManifestCore`. Carries everything the pipeline
|
|
168
|
+
* needs without reaching into route or HTTP concerns.
|
|
169
|
+
*
|
|
170
|
+
* Per Q2 lock: target wiring (cache, history, storage, contentRoot)
|
|
171
|
+
* comes from `SourceContext` upstream; orchestration deps
|
|
172
|
+
* (validators, hooks, scanner, audit) are injected per request.
|
|
173
|
+
* The wrapper functions (`savePage`, `saveFragment`) destructure
|
|
174
|
+
* `source` and assemble this shape.
|
|
175
|
+
*/
|
|
176
|
+
export interface SaveManifestInput {
|
|
177
|
+
/** Discriminator for downstream audit + sidecar calls. */
|
|
178
|
+
readonly kind: SaveManifestKind;
|
|
179
|
+
/** Item name (folder name under `pages/` or `fragments/`). */
|
|
180
|
+
readonly name: string;
|
|
181
|
+
/** BCP-47 locale when saving a Locale Variant; undefined for default. */
|
|
182
|
+
readonly locale?: string;
|
|
183
|
+
/** New manifest body (post-component-id, pre-validation). */
|
|
184
|
+
readonly manifest: Record<string, unknown>;
|
|
185
|
+
/** Pre-save manifest from the loaded `Site`; null when creating. */
|
|
186
|
+
readonly before: Record<string, unknown> | null;
|
|
187
|
+
/** Absolute path the new manifest serializes to. */
|
|
188
|
+
readonly manifestPath: string;
|
|
189
|
+
/** Optional save-etag for concurrency check (per design-offline.md Q3). */
|
|
190
|
+
readonly ifMatch?: string;
|
|
191
|
+
/**
|
|
192
|
+
* Loaded `Site` (the same instance that resolved `before`). Save-delta
|
|
193
|
+
* validation needs it to walk template + fragment + asset refs.
|
|
194
|
+
*/
|
|
195
|
+
readonly site: Site;
|
|
196
|
+
/**
|
|
197
|
+
* Cache prefixes to invalidate after the write. Page Saves pass
|
|
198
|
+
* `['pages:']`; Fragment Saves pass `['fragments:', 'pages:']`
|
|
199
|
+
* because Fragment References compose into Page summaries.
|
|
200
|
+
*/
|
|
201
|
+
readonly cacheInvalidatePrefixes: readonly string[];
|
|
202
|
+
/**
|
|
203
|
+
* Optional fields to include in the recomputed save-etag.
|
|
204
|
+
* Page Saves include `route` (folder-derived; not stored in the
|
|
205
|
+
* file but part of the etag projection chain). Fragment Saves
|
|
206
|
+
* pass an empty object.
|
|
207
|
+
*/
|
|
208
|
+
readonly etagExtras: Record<string, unknown>;
|
|
209
|
+
/** Source wiring; opaque to the pipeline beyond the typed fields below. */
|
|
210
|
+
readonly source: SaveSourceWiring;
|
|
211
|
+
/** Audit recorder bound to the request (typically `c.var.audit`). */
|
|
212
|
+
readonly audit: SaveAuditRecorder;
|
|
213
|
+
/** Authenticated principal driving this save (for hook context). */
|
|
214
|
+
readonly principal: SavePrincipal;
|
|
215
|
+
/** Audit-firing emitter used by hook dispatch (forwarded to buildHookContext). */
|
|
216
|
+
readonly hookAuditEmit?: import('./hooks/index.js').HookFiringEmitter;
|
|
217
|
+
/** Validator registry (built once at admin boot per design-validation.md Cut 1). */
|
|
218
|
+
readonly validators: ValidatorRegistry;
|
|
219
|
+
/** Hook registry; absent when the site has no hooks contributed. */
|
|
220
|
+
readonly hooks?: HookRegistry;
|
|
221
|
+
/** Background scanner; absent when scanner not enabled for this admin. */
|
|
222
|
+
readonly scanner?: ValidationScanner;
|
|
223
|
+
/**
|
|
224
|
+
* Scanner rescan cause. Per-kind because the scanner's `RescanCause`
|
|
225
|
+
* union differs by kind (Page Saves use `{ kind: 'manifest', item }`
|
|
226
|
+
* to invalidate just the page; Fragment Saves use
|
|
227
|
+
* `{ kind: 'fragment', name }` to walk transitive dependents via
|
|
228
|
+
* `findDependentsFromSidecars`). Wrappers build the right shape.
|
|
229
|
+
*/
|
|
230
|
+
readonly scannerCause?: RescanCause;
|
|
231
|
+
/** Per-request correlation id; fresh UUID when absent. */
|
|
232
|
+
readonly requestId?: string;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Save pipeline orchestrator — Cut 2.
|
|
236
|
+
*
|
|
237
|
+
* Ports the 13-step spine from `admin-api/routes/pages.ts:290-510`.
|
|
238
|
+
* Pipeline sequence (locked per Q5):
|
|
239
|
+
*
|
|
240
|
+
* 1. etag precheck → STALE
|
|
241
|
+
* 2. review-state precheck (reserved slot — no-op today)
|
|
242
|
+
* 3. validators → VALIDATION_FAILED
|
|
243
|
+
* 4. beforeSave hooks → HOOK_CANCELLED
|
|
244
|
+
* 5. history record (pre-write)
|
|
245
|
+
* 6. storage write
|
|
246
|
+
* 7. sidecars (asset/fragment/alias) in parallel
|
|
247
|
+
* 8. cache invalidate (per per-kind prefixes)
|
|
248
|
+
* 9. compute new etag
|
|
249
|
+
* 10. audit success
|
|
250
|
+
* 11. afterSave hooks (fail-open observers)
|
|
251
|
+
* 12. cascades (reserved slot — no-op today)
|
|
252
|
+
* 13. scanner.rescan (fire-and-forget)
|
|
253
|
+
*/
|
|
254
|
+
export declare function saveManifestCore(input: SaveManifestInput): Promise<SaveResult>;
|
|
255
|
+
//# sourceMappingURL=manifest-save.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-save.d.ts","sourceRoot":"","sources":["../src/manifest-save.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Save pipeline — orchestrator for Page and Fragment Manifest writes.
|
|
3
|
+
*
|
|
4
|
+
* Today's `admin-api/routes/pages.ts` PUT handler and the matching
|
|
5
|
+
* fragments.ts handler each inline the same 13-step orchestration:
|
|
6
|
+
* etag check → validate → beforeSave hooks → history → write → sidecars
|
|
7
|
+
* → cache → audit → afterSave hooks → scanner. Two route files, one deep
|
|
8
|
+
* concept duplicated.
|
|
9
|
+
*
|
|
10
|
+
* `saveManifestCore` is the seam that hides the orchestration. Routes
|
|
11
|
+
* become protocol translators (parse Hono request → call → project
|
|
12
|
+
* SaveResult to HTTP). The CLI, plugin-contributed routes, and any
|
|
13
|
+
* future Save-shaped consumer call the same function.
|
|
14
|
+
*
|
|
15
|
+
* Per-kind entry points (`savePage`, `saveFragment` in pages/save.ts +
|
|
16
|
+
* fragments/save.ts — Cuts 3+4) wrap this with kind-specific concerns:
|
|
17
|
+
* locale resolution from `site.pages` vs `site.fragments`, the `route`
|
|
18
|
+
* field preservation Page Manifests need, and per-kind cache prefixes
|
|
19
|
+
* (Fragment Saves invalidate `pages:` too because Fragment References
|
|
20
|
+
* compose into Page summaries).
|
|
21
|
+
*
|
|
22
|
+
* Pipeline order is locked semantics, not configuration. Per
|
|
23
|
+
* `design-hooks.md` "Save flow with hooks": validators run first
|
|
24
|
+
* (validators are pure functions over a manifest), then beforeSave
|
|
25
|
+
* hooks see validated payload, then storage write, then afterSave
|
|
26
|
+
* hooks observe the result. Reordering breaks invariants — audit
|
|
27
|
+
* before write would lie about success.
|
|
28
|
+
*
|
|
29
|
+
* Reserved slots in the sequence (no-ops today; wired by future cuts):
|
|
30
|
+
* - Review-state precheck (Review-Workflow Cut 5: pending-review
|
|
31
|
+
* state → 409 EDIT_LOCKED)
|
|
32
|
+
* - Cascades (Soft-Delete Q6: auto-cancel scheduled actions on
|
|
33
|
+
* archive transition; Review Cut 5: invalidateOnSave policy
|
|
34
|
+
* transitions approved → draft)
|
|
35
|
+
*
|
|
36
|
+
* Throws are reserved for infrastructure failures (storage write
|
|
37
|
+
* fail, audit infra fail per locked fail-open). Expected outcomes
|
|
38
|
+
* — STALE / VALIDATION_FAILED / HOOK_CANCELLED — are typed
|
|
39
|
+
* `SaveResult` variants. Callers `switch` exhaustively; TS narrows.
|
|
40
|
+
*/
|
|
41
|
+
import { recordWrite } from './history-recorder.js';
|
|
42
|
+
import { buildHookContext, dispatchAfterSave, dispatchBeforeSave, HookCancellation, HookTimeout, } from './hooks/index.js';
|
|
43
|
+
import { rebuildAssetRefs } from './assets/asset-deps.js';
|
|
44
|
+
import { rebuildFragmentDeps } from './fragment-deps.js';
|
|
45
|
+
import { rebuildArchiveAliases } from './archive-aliases.js';
|
|
46
|
+
import { computeSaveEtag } from './save-etag.js';
|
|
47
|
+
import { hasBlockingIssues, runSaveDelta } from './validation/save-delta.js';
|
|
48
|
+
/**
|
|
49
|
+
* Save pipeline orchestrator — Cut 2.
|
|
50
|
+
*
|
|
51
|
+
* Ports the 13-step spine from `admin-api/routes/pages.ts:290-510`.
|
|
52
|
+
* Pipeline sequence (locked per Q5):
|
|
53
|
+
*
|
|
54
|
+
* 1. etag precheck → STALE
|
|
55
|
+
* 2. review-state precheck (reserved slot — no-op today)
|
|
56
|
+
* 3. validators → VALIDATION_FAILED
|
|
57
|
+
* 4. beforeSave hooks → HOOK_CANCELLED
|
|
58
|
+
* 5. history record (pre-write)
|
|
59
|
+
* 6. storage write
|
|
60
|
+
* 7. sidecars (asset/fragment/alias) in parallel
|
|
61
|
+
* 8. cache invalidate (per per-kind prefixes)
|
|
62
|
+
* 9. compute new etag
|
|
63
|
+
* 10. audit success
|
|
64
|
+
* 11. afterSave hooks (fail-open observers)
|
|
65
|
+
* 12. cascades (reserved slot — no-op today)
|
|
66
|
+
* 13. scanner.rescan (fire-and-forget)
|
|
67
|
+
*/
|
|
68
|
+
export async function saveManifestCore(input) {
|
|
69
|
+
// Step 1 — etag precheck. Mirrors pages.ts:312-339. The current
|
|
70
|
+
// on-disk etag is computed from the in-memory `before` manifest
|
|
71
|
+
// plus the per-kind extras (Page passes route; Fragment passes
|
|
72
|
+
// empty). Absent ifMatch = no concurrency check (last-write-wins).
|
|
73
|
+
if (input.ifMatch && input.before) {
|
|
74
|
+
const currentEtag = await computeSaveEtag({
|
|
75
|
+
...input.before,
|
|
76
|
+
...input.etagExtras,
|
|
77
|
+
});
|
|
78
|
+
if (currentEtag !== input.ifMatch) {
|
|
79
|
+
return {
|
|
80
|
+
ok: false,
|
|
81
|
+
code: 'STALE',
|
|
82
|
+
current: { ...input.before, ...input.etagExtras },
|
|
83
|
+
currentEtag,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Step 2 — review-state precheck. Reserved slot for Review-Workflow
|
|
88
|
+
// Cut 5 (pending-review state → 409 EDIT_LOCKED). No-op today.
|
|
89
|
+
// Step 3 — save-delta validation. Same shape as pages.ts:370-394.
|
|
90
|
+
// Validators are pure functions; orchestrator catches infra errors
|
|
91
|
+
// and surfaces them as synthetic issues so the save flow stays
|
|
92
|
+
// predictable. Audit failure with `outcome: 'validation-failed'`
|
|
93
|
+
// before returning the typed result.
|
|
94
|
+
const issues = await runSaveDelta({
|
|
95
|
+
item: {
|
|
96
|
+
kind: input.kind,
|
|
97
|
+
name: input.name,
|
|
98
|
+
itemPath: input.source.contentRoot.relative(input.manifestPath),
|
|
99
|
+
},
|
|
100
|
+
// Cast preserves the validator's structural expectation; the
|
|
101
|
+
// pipeline treats manifests as opaque bags of fields here.
|
|
102
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
103
|
+
before: input.before,
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
105
|
+
after: { ...input.manifest, ...input.etagExtras },
|
|
106
|
+
site: input.site,
|
|
107
|
+
contentRoot: input.source.contentRoot,
|
|
108
|
+
storage: input.source.storage,
|
|
109
|
+
}, input.validators);
|
|
110
|
+
if (hasBlockingIssues(issues)) {
|
|
111
|
+
await input.audit.record({
|
|
112
|
+
action: 'save',
|
|
113
|
+
outcome: 'validation-failed',
|
|
114
|
+
scope: { kind: input.kind, name: input.name },
|
|
115
|
+
metadata: input.locale ? { locale: input.locale } : undefined,
|
|
116
|
+
});
|
|
117
|
+
return { ok: false, code: 'VALIDATION_FAILED', issues };
|
|
118
|
+
}
|
|
119
|
+
// Step 4 — beforeSave hooks. Build the HookContext ONCE per
|
|
120
|
+
// request — design-hooks.md "HookContext shape" locks `now` +
|
|
121
|
+
// `requestId` as deterministic across all hooks in a request.
|
|
122
|
+
// Reused for the afterSave dispatch in step 11.
|
|
123
|
+
const hooks = input.hooks;
|
|
124
|
+
const hookCtx = hooks
|
|
125
|
+
? buildHookContext({
|
|
126
|
+
principal: input.principal,
|
|
127
|
+
storage: input.source.storage,
|
|
128
|
+
target: input.source.targetName,
|
|
129
|
+
requestId: input.requestId ?? crypto.randomUUID(),
|
|
130
|
+
site: { name: input.source.manifest?.name },
|
|
131
|
+
auditEmit: input.hookAuditEmit,
|
|
132
|
+
})
|
|
133
|
+
: null;
|
|
134
|
+
const hookScope = {
|
|
135
|
+
kind: input.kind,
|
|
136
|
+
name: input.name,
|
|
137
|
+
locale: input.locale ?? undefined,
|
|
138
|
+
};
|
|
139
|
+
let finalManifest = input.manifest;
|
|
140
|
+
if (hooks && hookCtx) {
|
|
141
|
+
try {
|
|
142
|
+
finalManifest = (await dispatchBeforeSave(hooks, hookScope, input.manifest, hookCtx));
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
if (err instanceof HookCancellation || err instanceof HookTimeout) {
|
|
146
|
+
// Per design-hooks.md Q3 audit lock: cancelled saves record
|
|
147
|
+
// outcome 'hook-cancelled' (closed-enum extension to
|
|
148
|
+
// AuditOutcome already in audit/types.ts). Earlier behavior
|
|
149
|
+
// emitted 'validation-failed' which conflated hook policy
|
|
150
|
+
// with validator semantics — forensic queries filtering on
|
|
151
|
+
// outcome would mistakenly include hook cancellations.
|
|
152
|
+
// metadata.hookCancelled vs metadata.hookTimeout still
|
|
153
|
+
// distinguishes the two cancellation paths for forensics.
|
|
154
|
+
await input.audit.record({
|
|
155
|
+
action: 'save',
|
|
156
|
+
outcome: 'hook-cancelled',
|
|
157
|
+
scope: { kind: input.kind, name: input.name },
|
|
158
|
+
metadata: {
|
|
159
|
+
...(input.locale ? { locale: input.locale } : {}),
|
|
160
|
+
hookCancelled: err instanceof HookCancellation ? err.hookName : undefined,
|
|
161
|
+
hookTimeout: err instanceof HookTimeout ? err.hookName : undefined,
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
return {
|
|
165
|
+
ok: false,
|
|
166
|
+
code: 'HOOK_CANCELLED',
|
|
167
|
+
hook: err.hookName,
|
|
168
|
+
reason: err.message,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
throw err;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Re-serialize the (potentially mutated) manifest. When no hooks
|
|
175
|
+
// ran, finalManifest === input.manifest so the same serialization
|
|
176
|
+
// is recomputed once — cost is negligible vs the conditional.
|
|
177
|
+
const serialized = JSON.stringify(finalManifest, null, 2) + '\n';
|
|
178
|
+
// Step 5 — history. Record BEFORE the disk write per the
|
|
179
|
+
// recordWrite first-call invariant (pages.ts:442-456). Baseline
|
|
180
|
+
// scan reads current disk state (pre-save); recordWrite overlays
|
|
181
|
+
// the incoming delta to build the snapshot.
|
|
182
|
+
if (input.source.history) {
|
|
183
|
+
await recordWrite({
|
|
184
|
+
history: input.source.history,
|
|
185
|
+
contentRoot: input.source.contentRoot,
|
|
186
|
+
operation: 'save',
|
|
187
|
+
items: [
|
|
188
|
+
{
|
|
189
|
+
path: input.source.contentRoot.relative(input.manifestPath),
|
|
190
|
+
content: serialized,
|
|
191
|
+
},
|
|
192
|
+
],
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
// Step 6 — storage write.
|
|
196
|
+
await input.source.storage.writeFile(input.manifestPath, serialized);
|
|
197
|
+
// Step 7 — sidecars in parallel. Three Usage Sidecar relations
|
|
198
|
+
// (per `sidecars.md`): asset-refs, fragment-deps, archive-aliases.
|
|
199
|
+
// Future asset-soft-delete adds a fourth here in one place.
|
|
200
|
+
const item = input.locale
|
|
201
|
+
? {
|
|
202
|
+
source: input.kind === 'page' ? 'page' : 'fragment',
|
|
203
|
+
name: input.name,
|
|
204
|
+
locale: input.locale,
|
|
205
|
+
}
|
|
206
|
+
: { source: input.kind === 'page' ? 'page' : 'fragment', name: input.name };
|
|
207
|
+
await Promise.all([
|
|
208
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
209
|
+
rebuildAssetRefs(input.source.contentRoot, item, input.before, finalManifest),
|
|
210
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
211
|
+
rebuildFragmentDeps(input.source.contentRoot, item, input.before, finalManifest),
|
|
212
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
213
|
+
rebuildArchiveAliases(input.source.contentRoot, item, input.before, finalManifest),
|
|
214
|
+
]);
|
|
215
|
+
// Step 8 — cache invalidate. Per-kind prefixes from caller. Page
|
|
216
|
+
// Saves pass ['pages:']; Fragment Saves pass ['fragments:',
|
|
217
|
+
// 'pages:'] because Fragment References compose into Page
|
|
218
|
+
// summaries.
|
|
219
|
+
await Promise.all(input.cacheInvalidatePrefixes.map(p => input.source.cache.invalidatePrefix(p)));
|
|
220
|
+
// Step 9 — recompute save-etag for the new on-disk content. Echo
|
|
221
|
+
// shape MUST match what the next GET produces — extras (route)
|
|
222
|
+
// are folded in here so offline replay projection chains work
|
|
223
|
+
// (design-offline.md Q3).
|
|
224
|
+
const echoShape = { ...finalManifest, ...input.etagExtras };
|
|
225
|
+
const newEtag = await computeSaveEtag(echoShape);
|
|
226
|
+
// Step 10 — audit success. Records actor + scope + locale (when
|
|
227
|
+
// locale variant). Strict-mode operators check the result.failed
|
|
228
|
+
// count; fail-open default ignores. Recorder never throws.
|
|
229
|
+
await input.audit.record({
|
|
230
|
+
action: 'save',
|
|
231
|
+
outcome: 'success',
|
|
232
|
+
scope: { kind: input.kind, name: input.name },
|
|
233
|
+
metadata: input.locale ? { locale: input.locale } : undefined,
|
|
234
|
+
});
|
|
235
|
+
// Step 11 — afterSave hooks. Observational; failures logged but
|
|
236
|
+
// never propagated. Runs AFTER the audit record so the forensic
|
|
237
|
+
// record is durably committed before observational hooks fire.
|
|
238
|
+
// Per-hook timeout applies; one slow hook bounded by its
|
|
239
|
+
// timeout, not the total.
|
|
240
|
+
if (hooks && hookCtx) {
|
|
241
|
+
await dispatchAfterSave(hooks, hookScope, { payload: finalManifest, etag: newEtag }, hookCtx);
|
|
242
|
+
}
|
|
243
|
+
// Step 12 — cascades. Reserved slot for Soft-Delete Q6
|
|
244
|
+
// (auto-cancel scheduled actions on archive transition) and
|
|
245
|
+
// Review Cut 5 (invalidateOnSave policy → approved → draft).
|
|
246
|
+
// No-op today.
|
|
247
|
+
// Step 13 — background validation scanner. Fire-and-forget — the
|
|
248
|
+
// save response shouldn't block on scanner work; the scanner
|
|
249
|
+
// emits its own SSE event when the pass completes and the admin
|
|
250
|
+
// UI store re-fetches `/api/validation/issues` on the event.
|
|
251
|
+
if (input.scanner) {
|
|
252
|
+
const cause = input.scannerCause ?? {
|
|
253
|
+
kind: 'manifest',
|
|
254
|
+
item: { kind: input.kind, name: input.name, itemPath: input.manifestPath },
|
|
255
|
+
};
|
|
256
|
+
void input.scanner.rescan(cause);
|
|
257
|
+
}
|
|
258
|
+
return { ok: true, etag: newEtag };
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=manifest-save.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-save.js","sourceRoot":"","sources":["../src/manifest-save.ts"],"names":[],"mappings":"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"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { FragmentManifest, PageManifest,
|
|
2
|
-
export declare function parseSiteManifest(storage: StorageProvider, filePath: string): Promise<SiteManifest>;
|
|
1
|
+
import type { FragmentManifest, PageManifest, StorageProvider } from './types.js';
|
|
3
2
|
export declare function parsePageManifest(storage: StorageProvider, filePath: string): Promise<PageManifest>;
|
|
4
3
|
export declare function parseFragmentManifest(storage: StorageProvider, filePath: string): Promise<FragmentManifest>;
|
|
5
4
|
//# sourceMappingURL=manifest.d.ts.map
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiC,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAoEhH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAezG;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAYjH"}
|