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 @@
|
|
|
1
|
+
{"version":3,"file":"hook-audit-emitter.d.ts","sourceRoot":"","sources":["../../src/admin-api/hook-audit-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,iBAAiB,CAe7E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a HookFiringEmitter that forwards every firing to
|
|
3
|
+
* `audit.record(...)`. Pass into HookContext.auditEmit.
|
|
4
|
+
*/
|
|
5
|
+
export function makeAuditFiringEmitter(audit) {
|
|
6
|
+
return async (event) => {
|
|
7
|
+
await audit.record({
|
|
8
|
+
action: 'hook-fired',
|
|
9
|
+
outcome: event.outcome,
|
|
10
|
+
scope: { kind: 'site' },
|
|
11
|
+
metadata: {
|
|
12
|
+
hookName: event.hookName,
|
|
13
|
+
phase: event.phase,
|
|
14
|
+
source: event.source,
|
|
15
|
+
priority: event.priority,
|
|
16
|
+
durationMs: event.durationMs,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=hook-audit-emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-audit-emitter.js","sourceRoot":"","sources":["../../src/admin-api/hook-audit-emitter.ts"],"names":[],"mappings":"AAiCA;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAmB;IACxD,OAAO,KAAK,EAAC,KAAK,EAAC,EAAE;QACnB,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,QAAQ,EAAE;gBACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B;SACF,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,6 +1,39 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import type { StorageProvider, TargetConfig } from '../types.js';
|
|
3
3
|
import { type SourceContext } from './source-context.js';
|
|
4
|
+
import { HookRegistry, type HookContribution } from '../hooks/index.js';
|
|
5
|
+
export interface BuildHooksRegistryOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Factory contributions from `site.config.ts admin.hooks`.
|
|
8
|
+
* Each contribution carries a `source` + array of phase /
|
|
9
|
+
* handler / options entries.
|
|
10
|
+
*
|
|
11
|
+
* Default per-handler priority is **100** (factory band) when
|
|
12
|
+
* the contribution doesn't specify one explicitly. Site-local
|
|
13
|
+
* factories that want to run last can pass `priority: 1000`
|
|
14
|
+
* via per-entry options.
|
|
15
|
+
*/
|
|
16
|
+
contributions?: ReadonlyArray<HookContribution>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Convenience boot helper: construct a HookRegistry, populate it
|
|
20
|
+
* from `admin.hooks` factory contributions, seal it, return it.
|
|
21
|
+
*
|
|
22
|
+
* Per design-hooks.md "Registration (Q4 locked — factory
|
|
23
|
+
* contributions only)". Site-local hooks AND npm-distributed
|
|
24
|
+
* plugins both produce `HookContribution` from a factory call;
|
|
25
|
+
* both wire identically through `admin.hooks` in `site.config.ts`.
|
|
26
|
+
*
|
|
27
|
+
* Sequence:
|
|
28
|
+
* 1. For each contribution → for each `hooks[i]` entry →
|
|
29
|
+
* register with the contribution's source identity.
|
|
30
|
+
* 2. Seal — subsequent registrations throw
|
|
31
|
+
* RegistrationAfterInitError.
|
|
32
|
+
*
|
|
33
|
+
* `contributions` is optional; an empty registry is a valid
|
|
34
|
+
* result for sites without hooks.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildHooksRegistry(opts?: BuildHooksRegistryOptions): Promise<HookRegistry>;
|
|
4
37
|
export interface AdminAppOptions {
|
|
5
38
|
/**
|
|
6
39
|
* Pre-built SourceContext — preferred when the caller controls source-content
|
|
@@ -21,9 +54,60 @@ export interface AdminAppOptions {
|
|
|
21
54
|
targets?: Map<string, StorageProvider>;
|
|
22
55
|
/** Target configurations — providers are initialized lazily on first publish/fetch/compare. */
|
|
23
56
|
targetConfigs?: Record<string, TargetConfig>;
|
|
57
|
+
/**
|
|
58
|
+
* Disable the periodic cache-stats logger. Defaults to false (logger
|
|
59
|
+
* runs every 5 minutes). Tests pass true to avoid background timers
|
|
60
|
+
* leaking into the test runtime.
|
|
61
|
+
*/
|
|
62
|
+
disableCacheStatsLogger?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Pre-built hook registry. Construct via
|
|
65
|
+
* `buildHooksRegistry({ contributions })` against
|
|
66
|
+
* `manifest.admin?.hooks` from the loaded site config, then pass
|
|
67
|
+
* the sealed registry here. When omitted, hook dispatch is a
|
|
68
|
+
* no-op (sites without hooks pay zero overhead).
|
|
69
|
+
*
|
|
70
|
+
* Tests pass an empty (or pre-populated) registry directly.
|
|
71
|
+
*/
|
|
72
|
+
hooks?: HookRegistry;
|
|
73
|
+
/**
|
|
74
|
+
* Background validation scanner (Cut 2). Constructed by the boot path
|
|
75
|
+
* via `createValidationScanner({...})` against the resolved source. The
|
|
76
|
+
* admin app mounts the read-side route + SSE channel against this
|
|
77
|
+
* instance. When omitted, `/api/validation/issues` returns an empty list
|
|
78
|
+
* and the SSE channel emits no events.
|
|
79
|
+
*/
|
|
80
|
+
validationScanner?: import('../validation/scanner.js').ValidationScanner | null;
|
|
81
|
+
/**
|
|
82
|
+
* Validator registry override. Defaults to `defaultValidatorRegistry()`
|
|
83
|
+
* which ships every Cut 1-4 validator. Tests pass a custom registry to
|
|
84
|
+
* exercise the publish-audit + publish-gate paths with synthetic
|
|
85
|
+
* pre-publish-stage validators.
|
|
86
|
+
*/
|
|
87
|
+
validators?: import('../validation/registry.js').ValidatorRegistry;
|
|
88
|
+
/**
|
|
89
|
+
* Disable the periodic audit retention pruner. Defaults to false
|
|
90
|
+
* (pruner runs at boot + every 6 hours when audit retention is
|
|
91
|
+
* configured). Tests pass true to avoid background timers leaking
|
|
92
|
+
* into the test runtime; the boot pass and the interval both gate
|
|
93
|
+
* on this flag.
|
|
94
|
+
*/
|
|
95
|
+
disableAuditRetentionPruner?: boolean;
|
|
24
96
|
}
|
|
25
97
|
type AdminApp = Hono & {
|
|
26
98
|
invalidateTemplatesCache(): void;
|
|
99
|
+
/**
|
|
100
|
+
* Drop AdminCache entries for content (page + fragment summaries)
|
|
101
|
+
* across every SourceContext the resolver has built. Called by
|
|
102
|
+
* `gazetta dev`'s file watcher on out-of-band manifest changes
|
|
103
|
+
* (git pull, manual edit, e2e wipes) — those bypass the save
|
|
104
|
+
* handler that would normally invalidate the cache.
|
|
105
|
+
*
|
|
106
|
+
* Production (`gazetta serve`) doesn't have a file watcher;
|
|
107
|
+
* out-of-band changes there are vanishingly rare (manifests are
|
|
108
|
+
* deployed-once artifacts).
|
|
109
|
+
*/
|
|
110
|
+
invalidateContentCache(): Promise<void>;
|
|
27
111
|
};
|
|
28
112
|
/**
|
|
29
113
|
* Create an admin API Hono app. Accepts a single options object.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin-api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin-api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAK3B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAMhE,OAAO,EAIL,KAAK,aAAa,EAEnB,MAAM,qBAAqB,CAAA;AAgC5B,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEvE,MAAM,WAAW,yBAAyB;IACxC;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAA;CAChD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,yBAA8B,GAAG,OAAO,CAAC,YAAY,CAAC,CAcpG;AAGD,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wFAAwF;IACxF,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACtC,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAC5C;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,OAAO,0BAA0B,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC/E;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,2BAA2B,EAAE,iBAAiB,CAAA;IAClE;;;;;;OAMG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAA;CACtC;AAED,KAAK,QAAQ,GAAG,IAAI,GAAG;IACrB,wBAAwB,IAAI,IAAI,CAAA;IAChC;;;;;;;;;;OAUG;IACH,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACxC,CAAA;AA4BD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,QAAQ,CAiT9D"}
|
package/dist/admin-api/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
+
import { hostname } from 'node:os';
|
|
4
|
+
import { randomBytes } from 'node:crypto';
|
|
3
5
|
import { logger } from 'hono/logger';
|
|
4
6
|
import { scanTemplates } from '../templates-scan.js';
|
|
5
7
|
import { memoizeAsync } from '../concurrency.js';
|
|
@@ -8,9 +10,14 @@ import { createHistoryProvider } from '../history-provider.js';
|
|
|
8
10
|
import { isHistoryEnabled, getHistoryRetention } from '../types.js';
|
|
9
11
|
import { createSourceContext, staticSourceResolver, registrySourceResolver, } from './source-context.js';
|
|
10
12
|
import { authMiddleware } from './middleware/auth.js';
|
|
13
|
+
import { principalMiddleware } from './middleware/principal.js';
|
|
14
|
+
import { auditMiddleware } from './middleware/audit.js';
|
|
15
|
+
import { AuthConfigSchema, AuthConfigurationError, buildAuthProvider } from '../auth/index.js';
|
|
16
|
+
import { AuditConfigSchema, AuditConfigurationError, createHistoryAuditProvider, DEFAULT_AUDIT_CONFIG, pruneAuditEvents, } from '../audit/index.js';
|
|
11
17
|
import { siteRoutes } from './routes/site.js';
|
|
12
18
|
import { pageRoutes } from './routes/pages.js';
|
|
13
19
|
import { fragmentRoutes } from './routes/fragments.js';
|
|
20
|
+
import { defaultValidatorRegistry } from '../validation/default-registry.js';
|
|
14
21
|
import { templateRoutes } from './routes/templates.js';
|
|
15
22
|
import { previewRoutes } from './routes/preview.js';
|
|
16
23
|
import { publishRoutes } from './routes/publish.js';
|
|
@@ -18,6 +25,76 @@ import { compareRoutes } from './routes/compare.js';
|
|
|
18
25
|
import { fieldRoutes } from './routes/fields.js';
|
|
19
26
|
import { historyRoutes } from './routes/history.js';
|
|
20
27
|
import { assetRoutes } from './routes/assets.js';
|
|
28
|
+
import { systemRoutes } from './routes/system.js';
|
|
29
|
+
import { auditRoutes } from './routes/audit.js';
|
|
30
|
+
import { validationRoutes } from './routes/validation.js';
|
|
31
|
+
import { healthRoutes } from './routes/health.js';
|
|
32
|
+
import { archiveRoutes } from './routes/archive.js';
|
|
33
|
+
import { renameRoutes } from './routes/rename.js';
|
|
34
|
+
import { warnOnCapabilityGaps } from '../runtime/capability-gap-warnings.js';
|
|
35
|
+
import { HookRegistry } from '../hooks/index.js';
|
|
36
|
+
/**
|
|
37
|
+
* Convenience boot helper: construct a HookRegistry, populate it
|
|
38
|
+
* from `admin.hooks` factory contributions, seal it, return it.
|
|
39
|
+
*
|
|
40
|
+
* Per design-hooks.md "Registration (Q4 locked — factory
|
|
41
|
+
* contributions only)". Site-local hooks AND npm-distributed
|
|
42
|
+
* plugins both produce `HookContribution` from a factory call;
|
|
43
|
+
* both wire identically through `admin.hooks` in `site.config.ts`.
|
|
44
|
+
*
|
|
45
|
+
* Sequence:
|
|
46
|
+
* 1. For each contribution → for each `hooks[i]` entry →
|
|
47
|
+
* register with the contribution's source identity.
|
|
48
|
+
* 2. Seal — subsequent registrations throw
|
|
49
|
+
* RegistrationAfterInitError.
|
|
50
|
+
*
|
|
51
|
+
* `contributions` is optional; an empty registry is a valid
|
|
52
|
+
* result for sites without hooks.
|
|
53
|
+
*/
|
|
54
|
+
export async function buildHooksRegistry(opts = {}) {
|
|
55
|
+
const registry = new HookRegistry();
|
|
56
|
+
if (opts.contributions) {
|
|
57
|
+
for (const contribution of opts.contributions) {
|
|
58
|
+
for (const entry of contribution.hooks) {
|
|
59
|
+
// Default factory-supplied hook priority to the factory
|
|
60
|
+
// band (100). Per-entry options.priority overrides.
|
|
61
|
+
const options = { priority: 100, ...(entry.options ?? {}) };
|
|
62
|
+
registry.register(entry.phase, entry.handler, options, contribution.source);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
registry.seal();
|
|
67
|
+
return registry;
|
|
68
|
+
}
|
|
69
|
+
import { startCacheStatsLogger } from './cache-stats-logger.js';
|
|
70
|
+
/**
|
|
71
|
+
* Resolve a per-process instance id for audit JSONL file naming.
|
|
72
|
+
*
|
|
73
|
+
* Chain per `design-logging.md`'s "Multi-instance correlation":
|
|
74
|
+
* 1. `K_REVISION` env (Cloud Run; per-revision)
|
|
75
|
+
* 2. `os.hostname()` — returns the pod name on K8s default config,
|
|
76
|
+
* machine hostname elsewhere
|
|
77
|
+
* 3. Random 8-char hex (only when hostname is empty / unavailable)
|
|
78
|
+
*
|
|
79
|
+
* `process.env.HOSTNAME` is NOT in the chain — Linux containers
|
|
80
|
+
* usually have it via the shell, but Node processes exec'd directly
|
|
81
|
+
* may not inherit shell env, so HOSTNAME can be undefined on K8s
|
|
82
|
+
* pods. `os.hostname()` calls gethostname(2) directly and is reliable
|
|
83
|
+
* across runtimes.
|
|
84
|
+
*/
|
|
85
|
+
function resolveInstanceId() {
|
|
86
|
+
if (process.env.K_REVISION)
|
|
87
|
+
return process.env.K_REVISION;
|
|
88
|
+
try {
|
|
89
|
+
const name = hostname();
|
|
90
|
+
if (name)
|
|
91
|
+
return name;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// hostname() can throw on some Wintertc-style runtimes — fall through.
|
|
95
|
+
}
|
|
96
|
+
return randomBytes(4).toString('hex');
|
|
97
|
+
}
|
|
21
98
|
/**
|
|
22
99
|
* Create an admin API Hono app. Accepts a single options object.
|
|
23
100
|
*
|
|
@@ -29,6 +106,9 @@ import { assetRoutes } from './routes/assets.js';
|
|
|
29
106
|
export function createAdminApp(opts) {
|
|
30
107
|
const app = new Hono();
|
|
31
108
|
app.use(logger());
|
|
109
|
+
// Bearer-token guard (legacy GAZETTA_TOKEN) — orthogonal to
|
|
110
|
+
// upstream-identity extraction. Principal middleware ships
|
|
111
|
+
// below once `source.manifest` is in scope.
|
|
32
112
|
app.use('/api/*', authMiddleware());
|
|
33
113
|
const templatesDir = opts.templatesDir ?? join(opts.siteDir, 'templates');
|
|
34
114
|
const adminDir = opts.adminDir ?? join(opts.siteDir, 'admin');
|
|
@@ -51,7 +131,7 @@ export function createAdminApp(opts) {
|
|
|
51
131
|
// Backfill history on the source if the caller didn't supply one —
|
|
52
132
|
// dev bootstrap builds a bare SourceContext and relies on admin-api
|
|
53
133
|
// to wire history per the target's config. Skip when the target's
|
|
54
|
-
// site.
|
|
134
|
+
// site.config.ts has `history.enabled: false`, or when there's no
|
|
55
135
|
// matching targetConfig (legacy single-storage path).
|
|
56
136
|
if (!opts.source.history) {
|
|
57
137
|
source = { ...opts.source, history: buildHistoryForSource(opts, opts.source) };
|
|
@@ -67,6 +147,14 @@ export function createAdminApp(opts) {
|
|
|
67
147
|
history: buildHistoryForLegacySource(opts),
|
|
68
148
|
});
|
|
69
149
|
}
|
|
150
|
+
// Capability-gap surface #1 (boot config validate) per
|
|
151
|
+
// `feature-design-process.md`'s capability-gap-UX discipline.
|
|
152
|
+
// Walks targets; warns about runtime capability gaps (e.g., a
|
|
153
|
+
// plain-static target can't emit 301 redirects from archive
|
|
154
|
+
// operations). Non-blocking — admin starts. Operators see the
|
|
155
|
+
// warning during deploy so misconfiguration surfaces early.
|
|
156
|
+
if (source.manifest)
|
|
157
|
+
warnOnCapabilityGaps(source.manifest);
|
|
70
158
|
// Build the per-request source resolver. When target configs are
|
|
71
159
|
// declared, routes honor `?target=<name>` to read from any known
|
|
72
160
|
// target. Providers are initialized lazily so dev startup doesn't
|
|
@@ -86,6 +174,7 @@ export function createAdminApp(opts) {
|
|
|
86
174
|
registry,
|
|
87
175
|
projectSiteDir: source.projectSiteDir,
|
|
88
176
|
manifest: source.manifest,
|
|
177
|
+
gazettaManifest: source.gazettaManifest,
|
|
89
178
|
// The registry's filesystem targets are already content-rooted
|
|
90
179
|
// (path=./targets/<key>); siteDir on the resolved context is empty.
|
|
91
180
|
siteDir: '',
|
|
@@ -93,14 +182,16 @@ export function createAdminApp(opts) {
|
|
|
93
182
|
const config = opts.targetConfigs[name];
|
|
94
183
|
if (!config)
|
|
95
184
|
return;
|
|
96
|
-
|
|
97
|
-
|
|
185
|
+
// Storage is already a constructed provider (Path X — operator-facing
|
|
186
|
+
// factory ran at config-eval). Init the connection if the provider
|
|
187
|
+
// exposes one (S3 + Azure use this for connectivity probes).
|
|
188
|
+
const storage = config.storage;
|
|
98
189
|
const maybeInit = storage;
|
|
99
190
|
if (typeof maybeInit.init === 'function')
|
|
100
191
|
await maybeInit.init();
|
|
101
192
|
providers.set(name, storage);
|
|
102
193
|
},
|
|
103
|
-
// Build a HistoryProvider per target, honoring the site.
|
|
194
|
+
// Build a HistoryProvider per target, honoring the site.config.ts
|
|
104
195
|
// `history` block (enabled/retention). Returns undefined when the
|
|
105
196
|
// target has history turned off — routes no-op on absent provider.
|
|
106
197
|
buildHistory: (name, storage) => {
|
|
@@ -114,21 +205,175 @@ export function createAdminApp(opts) {
|
|
|
114
205
|
else {
|
|
115
206
|
resolveSource = staticSourceResolver(source);
|
|
116
207
|
}
|
|
208
|
+
// Validator registry built once per app — Cut 1 ships the 5 reference-
|
|
209
|
+
// existence validators; Cut 2+ extend the default registry. Tests can
|
|
210
|
+
// override via opts.validators.
|
|
211
|
+
const validators = opts.validators ?? defaultValidatorRegistry();
|
|
212
|
+
// Principal middleware — extracts upstream identity (Cloudflare
|
|
213
|
+
// Access JWT, X-Forwarded-User header, etc.) per the configured
|
|
214
|
+
// trust mode in `site.config.ts admin.auth`. Falls back to
|
|
215
|
+
// `none`-mode (anonymous + admin role) when no auth is configured.
|
|
216
|
+
// Must run before route registration so handlers see c.var.principal.
|
|
217
|
+
//
|
|
218
|
+
// The auth config sits under SiteManifest.admin.auth as a loose
|
|
219
|
+
// record (per the existing config schema's reserved-slot pattern);
|
|
220
|
+
// we strict-parse it here against the typed AuthConfigSchema and
|
|
221
|
+
// throw a clear AuthConfigurationError if the operator's block is
|
|
222
|
+
// malformed.
|
|
223
|
+
const rawAuthBlock = source.manifest?.admin?.auth;
|
|
224
|
+
let authProvider;
|
|
225
|
+
if (rawAuthBlock !== undefined) {
|
|
226
|
+
const parsed = AuthConfigSchema.safeParse(rawAuthBlock);
|
|
227
|
+
if (!parsed.success) {
|
|
228
|
+
throw new AuthConfigurationError(`Invalid admin.auth block in site.config.ts: ${parsed.error.issues
|
|
229
|
+
.map(i => `${i.path.join('.')}: ${i.message}`)
|
|
230
|
+
.join('; ')}`);
|
|
231
|
+
}
|
|
232
|
+
authProvider = buildAuthProvider(parsed.data);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
// No admin.auth block — none mode (single-author / dev).
|
|
236
|
+
authProvider = buildAuthProvider(undefined);
|
|
237
|
+
}
|
|
238
|
+
app.use('/api/*', principalMiddleware(authProvider));
|
|
239
|
+
// Audit middleware — per design-audit.md "Recording timing".
|
|
240
|
+
// Resolves admin.audit config; constructs the configured providers;
|
|
241
|
+
// injects c.var.audit so handlers can call `c.var.audit.record(...)`.
|
|
242
|
+
// Defaults to HistoryAuditProvider when admin.audit is absent
|
|
243
|
+
// (zero-config audit; events stored under target's
|
|
244
|
+
// .gazetta/audit/events-{instance}.jsonl).
|
|
245
|
+
const rawAuditBlock = source.manifest?.admin?.audit;
|
|
246
|
+
let auditConfig;
|
|
247
|
+
if (rawAuditBlock !== undefined) {
|
|
248
|
+
const parsed = AuditConfigSchema.safeParse(rawAuditBlock);
|
|
249
|
+
if (!parsed.success) {
|
|
250
|
+
throw new AuditConfigurationError(`Invalid admin.audit block in site.config.ts: ${parsed.error.issues
|
|
251
|
+
.map(i => `${i.path.join('.')}: ${i.message}`)
|
|
252
|
+
.join('; ')}`);
|
|
253
|
+
}
|
|
254
|
+
auditConfig = parsed.data;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
auditConfig = DEFAULT_AUDIT_CONFIG;
|
|
258
|
+
}
|
|
259
|
+
// Salt env var resolution per design-audit.md "Salt management":
|
|
260
|
+
// GAZETTA_AUDIT_ACTOR_SALT for actor pseudonymization;
|
|
261
|
+
// GAZETTA_AUDIT_SOURCEIP_SALT for source-IP hashing.
|
|
262
|
+
const actorPseudonym = auditConfig.actorPseudonym ?? 'none';
|
|
263
|
+
const recordSourceIp = auditConfig.recordSourceIp ?? 'none';
|
|
264
|
+
const recordUserAgent = auditConfig.recordUserAgent ?? 'none';
|
|
265
|
+
if (actorPseudonym === 'sha256' && !process.env.GAZETTA_AUDIT_ACTOR_SALT) {
|
|
266
|
+
throw new AuditConfigurationError('admin.audit.actorPseudonym: sha256 requires the GAZETTA_AUDIT_ACTOR_SALT environment variable');
|
|
267
|
+
}
|
|
268
|
+
if (recordSourceIp === 'hashed' && !process.env.GAZETTA_AUDIT_SOURCEIP_SALT) {
|
|
269
|
+
throw new AuditConfigurationError('admin.audit.recordSourceIp: hashed requires the GAZETTA_AUDIT_SOURCEIP_SALT environment variable');
|
|
270
|
+
}
|
|
271
|
+
// Build the configured providers. v1 ships only HistoryAuditProvider;
|
|
272
|
+
// v2 sinks (webhook, file, OTel, CloudWatch, etc.) extend the build
|
|
273
|
+
// step here when they ship.
|
|
274
|
+
const auditProviders = [];
|
|
275
|
+
if (auditConfig.provider === 'history') {
|
|
276
|
+
auditProviders.push(createHistoryAuditProvider({
|
|
277
|
+
storage: source.storage,
|
|
278
|
+
instance: resolveInstanceId(),
|
|
279
|
+
}));
|
|
280
|
+
}
|
|
281
|
+
app.use('/api/*', auditMiddleware({
|
|
282
|
+
providers: auditProviders,
|
|
283
|
+
strict: auditConfig.strict ?? false,
|
|
284
|
+
actorPseudonym,
|
|
285
|
+
actorSalt: process.env.GAZETTA_AUDIT_ACTOR_SALT,
|
|
286
|
+
recordSourceIp,
|
|
287
|
+
sourceIpSalt: process.env.GAZETTA_AUDIT_SOURCEIP_SALT,
|
|
288
|
+
trustedProxyCount: auditConfig.trustedProxyCount,
|
|
289
|
+
recordUserAgent,
|
|
290
|
+
}));
|
|
117
291
|
app.route('/', siteRoutes(resolveSource));
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
292
|
+
// Archive + rename routes must register BEFORE pageRoutes /
|
|
293
|
+
// fragmentRoutes — those modules use `:name{.+}` greedy regex
|
|
294
|
+
// parameters that would capture `landing/archive` (or `/rename`)
|
|
295
|
+
// when these routes' literal-suffix paths would correctly capture
|
|
296
|
+
// `landing` + the suffix. First-match-wins in Hono's routing trie
|
|
297
|
+
// means specific suffixes register first.
|
|
298
|
+
app.route('/', archiveRoutes(resolveSource, { scanner: opts.validationScanner ?? null }));
|
|
299
|
+
app.route('/', renameRoutes(resolveSource));
|
|
300
|
+
app.route('/', pageRoutes(resolveSource, validators, templatesDir, {
|
|
301
|
+
hooks: opts.hooks,
|
|
302
|
+
scanner: opts.validationScanner ?? null,
|
|
303
|
+
}));
|
|
304
|
+
app.route('/', fragmentRoutes(resolveSource, validators, templatesDir, {
|
|
305
|
+
hooks: opts.hooks,
|
|
306
|
+
scanner: opts.validationScanner ?? null,
|
|
307
|
+
}));
|
|
308
|
+
app.route('/', templateRoutes(resolveSource, templatesDir, adminDir, opts.production, {
|
|
309
|
+
scanner: opts.validationScanner ?? null,
|
|
310
|
+
}));
|
|
121
311
|
app.route('/', previewRoutes(resolveSource, templatesDir));
|
|
122
|
-
app.route('/', publishRoutes(resolveSource, opts.targets, opts.targetConfigs, templatesDir, scan
|
|
312
|
+
app.route('/', publishRoutes(resolveSource, opts.targets, opts.targetConfigs, templatesDir, scan, {
|
|
313
|
+
hooks: opts.hooks,
|
|
314
|
+
validators,
|
|
315
|
+
}));
|
|
123
316
|
app.route('/', compareRoutes(resolveSource, opts.targets, opts.targetConfigs, templatesDir, scan));
|
|
124
317
|
app.route('/', fieldRoutes(resolveSource, adminDir));
|
|
125
318
|
app.route('/', historyRoutes(resolveSource, opts.targets, opts.targetConfigs));
|
|
126
|
-
app.route('/', assetRoutes(resolveSource));
|
|
319
|
+
app.route('/', assetRoutes(resolveSource, { hooks: opts.hooks }));
|
|
320
|
+
app.route('/', systemRoutes(resolveSource));
|
|
321
|
+
app.route('/', auditRoutes({ providers: auditProviders }));
|
|
322
|
+
app.route('/', validationRoutes({ scanner: opts.validationScanner ?? null }));
|
|
323
|
+
app.route('/', healthRoutes());
|
|
324
|
+
// Periodic cache stats log — fires every 5 minutes against the
|
|
325
|
+
// bootstrap source's cache. Runs unobtrusively (timer.unref()
|
|
326
|
+
// means it never blocks process exit). Tests pass
|
|
327
|
+
// `disableCacheStatsLogger: true` to avoid background timers; the
|
|
328
|
+
// route at /api/system/cache/stats still exposes on-demand
|
|
329
|
+
// snapshots either way.
|
|
330
|
+
if (!opts.disableCacheStatsLogger) {
|
|
331
|
+
startCacheStatsLogger({ cache: source.cache });
|
|
332
|
+
}
|
|
333
|
+
// Audit retention pruner — when admin.audit.retention is configured
|
|
334
|
+
// (events cap and/or maxAgeMonths), evict old / overflow events at
|
|
335
|
+
// boot + every 6 hours per design-audit.md "Retention". No-op when
|
|
336
|
+
// retention isn't configured (operator opted out / never opted in).
|
|
337
|
+
// Same pattern as the cache stats logger: timer.unref() so it never
|
|
338
|
+
// blocks process exit; tests pass `disableAuditRetentionPruner:
|
|
339
|
+
// true` to keep background work out of the test runtime.
|
|
340
|
+
if (!opts.disableAuditRetentionPruner &&
|
|
341
|
+
auditConfig.provider === 'history' &&
|
|
342
|
+
auditConfig.retention &&
|
|
343
|
+
(auditConfig.retention.events !== undefined || auditConfig.retention.maxAgeMonths)) {
|
|
344
|
+
const retentionConfig = auditConfig.retention;
|
|
345
|
+
const runPrune = async () => {
|
|
346
|
+
try {
|
|
347
|
+
await pruneAuditEvents(source.storage, {
|
|
348
|
+
events: retentionConfig.events,
|
|
349
|
+
maxAgeMonths: retentionConfig.maxAgeMonths ?? null,
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
catch {
|
|
353
|
+
// Pruner failures fail-open per Universal Provider Requirement
|
|
354
|
+
// #5 — audit accumulates until next successful prune. Operator
|
|
355
|
+
// monitoring sees the failure via structured log (TODO when
|
|
356
|
+
// logging foundation lands; v1 swallows silently).
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
// Boot pass.
|
|
360
|
+
void runPrune();
|
|
361
|
+
// 6-hour interval (21_600_000 ms). unref() so the process can exit
|
|
362
|
+
// independently of this timer.
|
|
363
|
+
const PRUNE_INTERVAL_MS = 6 * 60 * 60 * 1000;
|
|
364
|
+
const timer = setInterval(runPrune, PRUNE_INTERVAL_MS);
|
|
365
|
+
timer.unref();
|
|
366
|
+
}
|
|
127
367
|
// Exposed for the CLI's template file watcher: clears the memoized scan
|
|
128
368
|
// so the next publish/compare picks up template edits. Not part of the
|
|
129
369
|
// Hono Request interface — the CLI casts the return.
|
|
130
370
|
const appWithInvalidate = app;
|
|
131
371
|
appWithInvalidate.invalidateTemplatesCache = () => cachedScan.invalidate();
|
|
372
|
+
appWithInvalidate.invalidateContentCache = async () => {
|
|
373
|
+
await resolveSource.forEachBuilt(async (ctx) => {
|
|
374
|
+
await Promise.all([ctx.cache.invalidatePrefix('pages:'), ctx.cache.invalidatePrefix('fragments:')]);
|
|
375
|
+
});
|
|
376
|
+
};
|
|
132
377
|
return appWithInvalidate;
|
|
133
378
|
}
|
|
134
379
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin-api/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin-api/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ActorPseudonymMode, type AuditContext, type AuditFailureLogger, type AuditProvider, type SourceIpMode, type UserAgentMode } from '../../audit/index.js';
|
|
2
|
+
import type { PrincipalEnv } from './principal.js';
|
|
3
|
+
/**
|
|
4
|
+
* Hono context augmentation — readers see `c.var.audit` typed as
|
|
5
|
+
* `AuditContext` (always populated; never undefined after this
|
|
6
|
+
* middleware runs).
|
|
7
|
+
*/
|
|
8
|
+
export type AuditEnv = PrincipalEnv & {
|
|
9
|
+
Variables: PrincipalEnv['Variables'] & {
|
|
10
|
+
audit: AuditContext;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export interface AuditMiddlewareOptions {
|
|
14
|
+
providers: ReadonlyArray<AuditProvider>;
|
|
15
|
+
strict: boolean;
|
|
16
|
+
actorPseudonym: ActorPseudonymMode;
|
|
17
|
+
actorSalt?: string;
|
|
18
|
+
recordSourceIp: SourceIpMode;
|
|
19
|
+
sourceIpSalt?: string;
|
|
20
|
+
trustedProxyCount?: number;
|
|
21
|
+
recordUserAgent: UserAgentMode;
|
|
22
|
+
logFailure?: AuditFailureLogger;
|
|
23
|
+
}
|
|
24
|
+
export declare function auditMiddleware(opts: AuditMiddlewareOptions): import("hono").MiddlewareHandler<AuditEnv, string, {}, Response>;
|
|
25
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/admin-api/middleware/audit.ts"],"names":[],"mappings":"AA6BA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAEnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG;IACpC,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG;QACrC,KAAK,EAAE,YAAY,CAAA;KACpB,CAAA;CACF,CAAA;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACvC,MAAM,EAAE,OAAO,CAAA;IACf,cAAc,EAAE,kBAAkB,CAAA;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,YAAY,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,eAAe,EAAE,aAAa,CAAA;IAC9B,UAAU,CAAC,EAAE,kBAAkB,CAAA;CAChC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,oEA4B3D"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit middleware — wires the audit subsystem into the per-request
|
|
3
|
+
* Hono context.
|
|
4
|
+
*
|
|
5
|
+
* # What this middleware does
|
|
6
|
+
*
|
|
7
|
+
* 1. Reads `c.var.principal` (set by Cut 7's principalMiddleware).
|
|
8
|
+
* 2. Builds an `AuditContext` for this request (with the principal,
|
|
9
|
+
* request headers, and peer IP bound).
|
|
10
|
+
* 3. Stores the context on `c.var.audit` so route handlers can call
|
|
11
|
+
* `c.var.audit.record({...})`.
|
|
12
|
+
*
|
|
13
|
+
* # Wiring order
|
|
14
|
+
*
|
|
15
|
+
* Must run AFTER principalMiddleware (Cut 7) so `c.var.principal`
|
|
16
|
+
* is populated. Must run BEFORE capability middleware (Cut 8) so
|
|
17
|
+
* the capability-failure path can record `outcome: 'forbidden'`
|
|
18
|
+
* audit events — that path needs `c.var.audit` available too.
|
|
19
|
+
*
|
|
20
|
+
* # SOLID lenses
|
|
21
|
+
*
|
|
22
|
+
* - SRP: middleware-shaped wiring; doesn't construct providers
|
|
23
|
+
* (Cut 2 + Cut 5's boot path do that), doesn't dispatch (the
|
|
24
|
+
* recorder does that), doesn't process privacy fields (the
|
|
25
|
+
* context does that).
|
|
26
|
+
* - DIP: takes pre-built providers + privacy modes; doesn't read
|
|
27
|
+
* site.config.ts directly.
|
|
28
|
+
*/
|
|
29
|
+
import { createMiddleware } from 'hono/factory';
|
|
30
|
+
import { createAuditContext, } from '../../audit/index.js';
|
|
31
|
+
export function auditMiddleware(opts) {
|
|
32
|
+
return createMiddleware(async (c, next) => {
|
|
33
|
+
const principal = c.get('principal');
|
|
34
|
+
const headers = new Map();
|
|
35
|
+
c.req.raw.headers.forEach((value, key) => {
|
|
36
|
+
headers.set(key.toLowerCase(), value);
|
|
37
|
+
});
|
|
38
|
+
const peerIp = headers.get('cf-connecting-ip') ??
|
|
39
|
+
headers.get('x-real-ip') ??
|
|
40
|
+
extractFirstXffEntry(headers.get('x-forwarded-for'));
|
|
41
|
+
const ctx = createAuditContext({
|
|
42
|
+
providers: opts.providers,
|
|
43
|
+
strict: opts.strict,
|
|
44
|
+
actorPseudonym: opts.actorPseudonym,
|
|
45
|
+
actorSalt: opts.actorSalt,
|
|
46
|
+
recordSourceIp: opts.recordSourceIp,
|
|
47
|
+
sourceIpSalt: opts.sourceIpSalt,
|
|
48
|
+
trustedProxyCount: opts.trustedProxyCount,
|
|
49
|
+
recordUserAgent: opts.recordUserAgent,
|
|
50
|
+
principal,
|
|
51
|
+
headers,
|
|
52
|
+
peerIp: peerIp ?? undefined,
|
|
53
|
+
logFailure: opts.logFailure,
|
|
54
|
+
});
|
|
55
|
+
c.set('audit', ctx);
|
|
56
|
+
await next();
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function extractFirstXffEntry(xff) {
|
|
60
|
+
if (!xff)
|
|
61
|
+
return null;
|
|
62
|
+
const first = xff.split(',')[0]?.trim();
|
|
63
|
+
return first || null;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/admin-api/middleware/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAOL,kBAAkB,GACnB,MAAM,sBAAsB,CAAA;AA0B7B,MAAM,UAAU,eAAe,CAAC,IAA4B;IAC1D,OAAO,gBAAgB,CAAW,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAClD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;QACzC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACvC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QACF,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YACxB,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;QACtD,MAAM,GAAG,GAAG,kBAAkB,CAAC;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS;YACT,OAAO;YACP,MAAM,EAAE,MAAM,IAAI,SAAS;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAA;QACF,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QACnB,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,GAA8B;IAC1D,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;IACvC,OAAO,KAAK,IAAI,IAAI,CAAA;AACtB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PrincipalEnv } from './principal.js';
|
|
2
|
+
/**
|
|
3
|
+
* Build a middleware that requires the specified capability.
|
|
4
|
+
* Returns 401 for anonymous requests, 403 for authenticated
|
|
5
|
+
* requests lacking the capability.
|
|
6
|
+
*/
|
|
7
|
+
export declare function requireCapability(capability: string): import("hono").MiddlewareHandler<PrincipalEnv, string, {}, Response>;
|
|
8
|
+
//# sourceMappingURL=capability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../../src/admin-api/middleware/capability.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,wEA0BnD"}
|