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,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Site config + Gazetta config loader.
|
|
3
|
+
*
|
|
4
|
+
* Per design-config.md, design-config-implementation.md Cut 2, and
|
|
5
|
+
* locked Q1-Q4:
|
|
6
|
+
*
|
|
7
|
+
* - jiti for TS evaluation (reuses template-loader's pattern)
|
|
8
|
+
* - dotenv loaded BEFORE config eval (Q4 lock; project-root only;
|
|
9
|
+
* CI-skip preserved)
|
|
10
|
+
* - Discovery rules per Q2 lock:
|
|
11
|
+
* - Both root site.config.ts AND sites/ dir present → ConfigLayoutError
|
|
12
|
+
* - sites/ dir exists → walk subdirectories with site.config.ts;
|
|
13
|
+
* skip + warn for any subdir without it
|
|
14
|
+
* - Otherwise → flat layout: site.config.ts at project root
|
|
15
|
+
* - gazetta.config.ts at project root is optional; absent = built-in defaults
|
|
16
|
+
* - Zod validation on every load (defense in depth alongside TS types)
|
|
17
|
+
* - Defaults flow per design-config.md: object-fields inherit from
|
|
18
|
+
* gazetta.defaults; arrays (plugins, hooks) are explicit per site
|
|
19
|
+
*/
|
|
20
|
+
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
21
|
+
import { join, resolve } from 'node:path';
|
|
22
|
+
import { pathToFileURL } from 'node:url';
|
|
23
|
+
import { createJiti } from 'jiti';
|
|
24
|
+
import { ConfigEvaluationError, ConfigLayoutError, ConfigValidationError } from './errors.js';
|
|
25
|
+
import { GazettaConfigSchema, SiteConfigSchema } from './schemas.js';
|
|
26
|
+
const SITE_CONFIG_FILES = ['site.config.ts', 'site.config.js', 'site.config.mjs'];
|
|
27
|
+
const GAZETTA_CONFIG_FILES = ['gazetta.config.ts', 'gazetta.config.js', 'gazetta.config.mjs'];
|
|
28
|
+
/**
|
|
29
|
+
* Find the first existing config file in a directory matching the
|
|
30
|
+
* known extensions (.ts / .js / .mjs).
|
|
31
|
+
*/
|
|
32
|
+
function findConfigFile(dir, candidates) {
|
|
33
|
+
for (const name of candidates) {
|
|
34
|
+
const full = join(dir, name);
|
|
35
|
+
if (existsSync(full))
|
|
36
|
+
return full;
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Evaluate a TypeScript / JavaScript config file via jiti.
|
|
42
|
+
*
|
|
43
|
+
* Returns the default export. Throws ConfigEvaluationError on parse /
|
|
44
|
+
* runtime errors.
|
|
45
|
+
*/
|
|
46
|
+
async function evaluateConfig(filePath) {
|
|
47
|
+
const jiti = createJiti(pathToFileURL(filePath).href, {
|
|
48
|
+
jsx: false,
|
|
49
|
+
moduleCache: false,
|
|
50
|
+
});
|
|
51
|
+
// Anchor relative filesystem paths inside the config to the config file's
|
|
52
|
+
// directory (so `filesystemStorage({ path: './dist' })` resolves the same
|
|
53
|
+
// way regardless of which directory the CLI was invoked from). Cleared in
|
|
54
|
+
// a finally block so test harnesses + concurrent loads don't leak state.
|
|
55
|
+
const { setConfigAnchor, configAnchorFromFile } = await import('../providers/factories.js');
|
|
56
|
+
setConfigAnchor(configAnchorFromFile(filePath));
|
|
57
|
+
let mod;
|
|
58
|
+
try {
|
|
59
|
+
mod = (await jiti.import(filePath));
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
throw new ConfigEvaluationError(`Failed to evaluate config: ${err.message}`, filePath, { cause: err });
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
setConfigAnchor(null);
|
|
66
|
+
}
|
|
67
|
+
if (!mod || typeof mod !== 'object') {
|
|
68
|
+
throw new ConfigEvaluationError('Config module did not produce a default export', filePath);
|
|
69
|
+
}
|
|
70
|
+
// Default export shape: jiti normalizes both `export default { ... }` and
|
|
71
|
+
// `module.exports = { ... }` to a `.default` field on the namespace object.
|
|
72
|
+
const value = 'default' in mod ? mod.default : mod;
|
|
73
|
+
if (!value || typeof value !== 'object') {
|
|
74
|
+
throw new ConfigEvaluationError('Config default export must be an object (use defineSite() or defineGazetta())', filePath);
|
|
75
|
+
}
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Validate a loaded config object against its Zod schema.
|
|
80
|
+
*
|
|
81
|
+
* Throws ConfigValidationError with the file path on schema failure.
|
|
82
|
+
*/
|
|
83
|
+
function validateSiteConfig(value, filePath) {
|
|
84
|
+
const result = SiteConfigSchema.safeParse(value);
|
|
85
|
+
if (!result.success) {
|
|
86
|
+
const issues = result.error.issues.map(issue => ` ${issue.path.join('.')}: ${issue.message}`).join('\n');
|
|
87
|
+
throw new ConfigValidationError(`Site config validation failed:\n${issues}`, filePath);
|
|
88
|
+
}
|
|
89
|
+
return result.data;
|
|
90
|
+
}
|
|
91
|
+
function validateGazettaConfig(value, filePath) {
|
|
92
|
+
const result = GazettaConfigSchema.safeParse(value);
|
|
93
|
+
if (!result.success) {
|
|
94
|
+
const issues = result.error.issues.map(issue => ` ${issue.path.join('.')}: ${issue.message}`).join('\n');
|
|
95
|
+
throw new ConfigValidationError(`Gazetta config validation failed:\n${issues}`, filePath);
|
|
96
|
+
}
|
|
97
|
+
return result.data;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Load gazetta.config.ts from the project root.
|
|
101
|
+
*
|
|
102
|
+
* Returns null if no config file is present (built-in defaults apply).
|
|
103
|
+
*/
|
|
104
|
+
export async function loadGazettaConfig(projectRoot) {
|
|
105
|
+
const configPath = findConfigFile(projectRoot, GAZETTA_CONFIG_FILES);
|
|
106
|
+
if (!configPath)
|
|
107
|
+
return null;
|
|
108
|
+
const value = await evaluateConfig(configPath);
|
|
109
|
+
return validateGazettaConfig(value, configPath);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Load a single site.config.ts from a site directory.
|
|
113
|
+
*
|
|
114
|
+
* Per Q2 lock: if the site directory exists but has no config file,
|
|
115
|
+
* returns null (caller decides whether to warn + skip).
|
|
116
|
+
*/
|
|
117
|
+
export async function loadSiteConfig(siteDir) {
|
|
118
|
+
const configPath = findConfigFile(siteDir, SITE_CONFIG_FILES);
|
|
119
|
+
if (!configPath)
|
|
120
|
+
return null;
|
|
121
|
+
const value = await evaluateConfig(configPath);
|
|
122
|
+
const config = validateSiteConfig(value, configPath);
|
|
123
|
+
return { config, configPath };
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Apply gazetta.config.defaults to a site config (object-fields only;
|
|
127
|
+
* arrays do not inherit per design-config.md "Defaults flow").
|
|
128
|
+
*
|
|
129
|
+
* Per the single-Site-per-process invariant (`CONTEXT.md`): each Gazetta
|
|
130
|
+
* process loads exactly one Site, so the gazetta-level cache instance is
|
|
131
|
+
* inherited directly when the Site doesn't set its own `cache:` field.
|
|
132
|
+
* No per-Site reconstruction; each process re-evaluates
|
|
133
|
+
* `gazetta.config.ts` and gets fresh instances at boot.
|
|
134
|
+
*
|
|
135
|
+
* Audit defaults still flow through the `admin` block as a loose record
|
|
136
|
+
* — the audit foundation hasn't migrated to Path X yet.
|
|
137
|
+
*/
|
|
138
|
+
function applyGazettaDefaults(site, defaults) {
|
|
139
|
+
if (!defaults)
|
|
140
|
+
return site;
|
|
141
|
+
const admin = site.admin ?? {};
|
|
142
|
+
return {
|
|
143
|
+
...site,
|
|
144
|
+
cache: site.cache ?? defaults.cache,
|
|
145
|
+
admin: {
|
|
146
|
+
...admin,
|
|
147
|
+
audit: admin.audit ?? defaults.audit,
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Discover and load all sites in a project.
|
|
153
|
+
*
|
|
154
|
+
* Implements Q2 layout-resolution rules:
|
|
155
|
+
* - Both root site.config.ts AND sites/ dir present → ConfigLayoutError
|
|
156
|
+
* - sites/ dir exists → walk subdirectories; warn + skip any without site.config.ts
|
|
157
|
+
* - Otherwise → flat layout: single site at project root
|
|
158
|
+
*/
|
|
159
|
+
export async function discoverSites(projectRoot, gazetta, options) {
|
|
160
|
+
const log = options?.logger ?? ((msg) => console.warn(msg));
|
|
161
|
+
const rootConfigPath = findConfigFile(projectRoot, SITE_CONFIG_FILES);
|
|
162
|
+
const sitesDir = join(projectRoot, 'sites');
|
|
163
|
+
const sitesDirExists = existsSync(sitesDir) && statSync(sitesDir).isDirectory();
|
|
164
|
+
// Q2 conflict check
|
|
165
|
+
if (rootConfigPath && sitesDirExists) {
|
|
166
|
+
throw new ConfigLayoutError(`Conflicting layout: both ${rootConfigPath} (flat) AND ${sitesDir}/ (multi-site) are present. Pick one — either delete the root site.config.ts to use multi-site, or delete the sites/ directory to use flat layout.`);
|
|
167
|
+
}
|
|
168
|
+
const defaults = gazetta?.defaults;
|
|
169
|
+
// Flat layout: single site at project root
|
|
170
|
+
if (rootConfigPath) {
|
|
171
|
+
const value = await evaluateConfig(rootConfigPath);
|
|
172
|
+
const config = applyGazettaDefaults(validateSiteConfig(value, rootConfigPath), defaults);
|
|
173
|
+
return [
|
|
174
|
+
{
|
|
175
|
+
name: config.name,
|
|
176
|
+
dir: projectRoot,
|
|
177
|
+
configPath: rootConfigPath,
|
|
178
|
+
config,
|
|
179
|
+
},
|
|
180
|
+
];
|
|
181
|
+
}
|
|
182
|
+
// Multi-site layout: walk sites/
|
|
183
|
+
if (!sitesDirExists) {
|
|
184
|
+
log(`No site config found: neither ${SITE_CONFIG_FILES[0]} at project root nor sites/ directory exists.`);
|
|
185
|
+
return [];
|
|
186
|
+
}
|
|
187
|
+
const subdirs = readdirSync(sitesDir, { withFileTypes: true })
|
|
188
|
+
.filter(entry => entry.isDirectory())
|
|
189
|
+
.map(entry => entry.name)
|
|
190
|
+
.sort();
|
|
191
|
+
if (subdirs.length === 0) {
|
|
192
|
+
log(`Empty sites/ directory at ${sitesDir} — no sites to load.`);
|
|
193
|
+
return [];
|
|
194
|
+
}
|
|
195
|
+
const sites = [];
|
|
196
|
+
for (const dirName of subdirs) {
|
|
197
|
+
const siteDir = join(sitesDir, dirName);
|
|
198
|
+
const loaded = await loadSiteConfig(siteDir);
|
|
199
|
+
if (!loaded) {
|
|
200
|
+
log(`Skipping ${siteDir}: no ${SITE_CONFIG_FILES[0]} found.`);
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
sites.push({
|
|
204
|
+
name: loaded.config.name,
|
|
205
|
+
dir: siteDir,
|
|
206
|
+
configPath: loaded.configPath,
|
|
207
|
+
config: applyGazettaDefaults(loaded.config, defaults),
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
return sites;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Load the full project config — gazetta.config.ts (optional) + all
|
|
214
|
+
* discovered sites.
|
|
215
|
+
*
|
|
216
|
+
* This is the top-level entry point that boot flows use. dotenv must
|
|
217
|
+
* already have been loaded before this is called (per Q4 lock).
|
|
218
|
+
*/
|
|
219
|
+
export async function loadProjectConfig(projectRoot, options) {
|
|
220
|
+
const absRoot = resolve(projectRoot);
|
|
221
|
+
const gazetta = await loadGazettaConfig(absRoot);
|
|
222
|
+
const sites = await discoverSites(absRoot, gazetta, options);
|
|
223
|
+
return {
|
|
224
|
+
projectRoot: absRoot,
|
|
225
|
+
gazetta,
|
|
226
|
+
sites,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Adapter: convert the user's SiteConfig (input shape) into the
|
|
231
|
+
* runtime SiteManifest shape consumed by site-loader.ts and
|
|
232
|
+
* downstream code.
|
|
233
|
+
*
|
|
234
|
+
* The two shapes are equivalent at runtime — SiteManifest types nested
|
|
235
|
+
* provider blocks (ai, altText, targets, themes.default) more strictly
|
|
236
|
+
* than SiteConfig (which uses Record<string, unknown> for forward-
|
|
237
|
+
* compatibility with foundations that haven't shipped yet).
|
|
238
|
+
*
|
|
239
|
+
* The conversion is structural: pass the values through; cast nested
|
|
240
|
+
* provider blocks to their runtime types. Downstream validation (alt
|
|
241
|
+
* adapter factory, etc.) still runs and rejects malformed nested data.
|
|
242
|
+
*
|
|
243
|
+
* Per design-config-implementation.md Cut 4 — wires the new TS-config
|
|
244
|
+
* loader into existing site-loader.ts without breaking downstream
|
|
245
|
+
* consumers that read site.manifest.{name, locale, targets, ...}.
|
|
246
|
+
*/
|
|
247
|
+
export function siteConfigToManifest(config) {
|
|
248
|
+
// The shapes overlap nearly entirely; runtime values flow through.
|
|
249
|
+
// The cast through `unknown` is required because SiteConfig's
|
|
250
|
+
// permissive `Record<string, unknown>` blocks (ai, altText,
|
|
251
|
+
// targets) don't satisfy SiteManifest's stricter typed shapes by
|
|
252
|
+
// simple assignment, but the runtime data is identical.
|
|
253
|
+
return config;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Convert a `GazettaConfig` (Zod-inferred user input) to a runtime
|
|
257
|
+
* `GazettaManifest`. Same lossless cast as `siteConfigToManifest` —
|
|
258
|
+
* the shapes overlap; runtime values flow through. Gazetta-level
|
|
259
|
+
* `ai.provider` is opaque (`z.unknown()`) in the schema but is the
|
|
260
|
+
* constructed `AIProvider` instance at runtime.
|
|
261
|
+
*/
|
|
262
|
+
export function gazettaConfigToManifest(config) {
|
|
263
|
+
return config;
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for site.config.ts and gazetta.config.ts validation.
|
|
3
|
+
*
|
|
4
|
+
* Per design-config.md and ADR-0005: TS types catch shape errors at
|
|
5
|
+
* edit time; Zod catches env-var-driven errors and shape errors not
|
|
6
|
+
* expressible in TS at load time. Defense in depth.
|
|
7
|
+
*
|
|
8
|
+
* Validation philosophy: enforce the load-bearing structural fields
|
|
9
|
+
* (name, targets, dimensions). Pass-through for nested fields that
|
|
10
|
+
* have their own validation downstream (e.g., target storage configs
|
|
11
|
+
* are validated by their respective providers; AI configs by the alt
|
|
12
|
+
* adapter factory).
|
|
13
|
+
*
|
|
14
|
+
* This keeps the schema small and forward-compatible — adding a new
|
|
15
|
+
* field anywhere in the config tree doesn't require updating this
|
|
16
|
+
* schema.
|
|
17
|
+
*/
|
|
18
|
+
import { z } from 'zod';
|
|
19
|
+
/**
|
|
20
|
+
* Per-site config — `sites/{name}/site.config.ts` (or `site.config.ts`
|
|
21
|
+
* at project root for flat layouts).
|
|
22
|
+
*
|
|
23
|
+
* Required for any site to exist. Carries per-site concerns: targets,
|
|
24
|
+
* dimensions (themes/locales), auth, plugins, hooks, audit, SEO defaults.
|
|
25
|
+
*/
|
|
26
|
+
export declare const SiteConfigSchema: z.ZodObject<{
|
|
27
|
+
name: z.ZodString;
|
|
28
|
+
version: z.ZodOptional<z.ZodString>;
|
|
29
|
+
locales: z.ZodOptional<z.ZodObject<{
|
|
30
|
+
supported: z.ZodArray<z.ZodString>;
|
|
31
|
+
default: z.ZodOptional<z.ZodString>;
|
|
32
|
+
fallbacks: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
33
|
+
defaultPrefix: z.ZodOptional<z.ZodBoolean>;
|
|
34
|
+
detection: z.ZodOptional<z.ZodBoolean>;
|
|
35
|
+
}, z.core.$strip>>;
|
|
36
|
+
themes: z.ZodOptional<z.ZodObject<{
|
|
37
|
+
supported: z.ZodArray<z.ZodString>;
|
|
38
|
+
default: z.ZodOptional<z.ZodString>;
|
|
39
|
+
}, z.core.$strip>>;
|
|
40
|
+
defaultOgImage: z.ZodOptional<z.ZodString>;
|
|
41
|
+
ai: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
42
|
+
altText: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
43
|
+
systemPages: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
44
|
+
targets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
45
|
+
cache: z.ZodOptional<z.ZodUnknown>;
|
|
46
|
+
admin: z.ZodOptional<z.ZodObject<{
|
|
47
|
+
auth: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
48
|
+
hooks: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
49
|
+
audit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
50
|
+
notifications: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
51
|
+
offline: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
52
|
+
}, z.core.$strip>>;
|
|
53
|
+
}, z.core.$strict>;
|
|
54
|
+
/**
|
|
55
|
+
* Project-level Gazetta config — `gazetta.config.ts` at project root.
|
|
56
|
+
*
|
|
57
|
+
* Optional; absent means use built-in defaults.
|
|
58
|
+
*/
|
|
59
|
+
export declare const GazettaConfigSchema: z.ZodObject<{
|
|
60
|
+
logLevel: z.ZodOptional<z.ZodEnum<{
|
|
61
|
+
error: "error";
|
|
62
|
+
trace: "trace";
|
|
63
|
+
debug: "debug";
|
|
64
|
+
info: "info";
|
|
65
|
+
warn: "warn";
|
|
66
|
+
}>>;
|
|
67
|
+
telemetry: z.ZodOptional<z.ZodBoolean>;
|
|
68
|
+
dev: z.ZodOptional<z.ZodObject<{
|
|
69
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
70
|
+
hostname: z.ZodOptional<z.ZodString>;
|
|
71
|
+
}, z.core.$strip>>;
|
|
72
|
+
defaults: z.ZodOptional<z.ZodObject<{
|
|
73
|
+
cache: z.ZodOptional<z.ZodUnknown>;
|
|
74
|
+
audit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
75
|
+
}, z.core.$strip>>;
|
|
76
|
+
ai: z.ZodOptional<z.ZodObject<{
|
|
77
|
+
provider: z.ZodOptional<z.ZodUnknown>;
|
|
78
|
+
model: z.ZodOptional<z.ZodString>;
|
|
79
|
+
}, z.core.$strip>>;
|
|
80
|
+
altText: z.ZodOptional<z.ZodObject<{
|
|
81
|
+
systemPrompt: z.ZodOptional<z.ZodString>;
|
|
82
|
+
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
83
|
+
}, z.core.$strip>>;
|
|
84
|
+
mcp: z.ZodOptional<z.ZodObject<{
|
|
85
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
86
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
87
|
+
}, z.core.$strip>>;
|
|
88
|
+
}, z.core.$strict>;
|
|
89
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/config/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAoBvB;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiElB,CAAA;AAEX;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0DrB,CAAA"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for site.config.ts and gazetta.config.ts validation.
|
|
3
|
+
*
|
|
4
|
+
* Per design-config.md and ADR-0005: TS types catch shape errors at
|
|
5
|
+
* edit time; Zod catches env-var-driven errors and shape errors not
|
|
6
|
+
* expressible in TS at load time. Defense in depth.
|
|
7
|
+
*
|
|
8
|
+
* Validation philosophy: enforce the load-bearing structural fields
|
|
9
|
+
* (name, targets, dimensions). Pass-through for nested fields that
|
|
10
|
+
* have their own validation downstream (e.g., target storage configs
|
|
11
|
+
* are validated by their respective providers; AI configs by the alt
|
|
12
|
+
* adapter factory).
|
|
13
|
+
*
|
|
14
|
+
* This keeps the schema small and forward-compatible — adding a new
|
|
15
|
+
* field anywhere in the config tree doesn't require updating this
|
|
16
|
+
* schema.
|
|
17
|
+
*/
|
|
18
|
+
import { z } from 'zod';
|
|
19
|
+
/**
|
|
20
|
+
* Locale code per BCP 47 — accepts `en`, `en-gb`, `pt-br`, etc.
|
|
21
|
+
* Permissive; downstream resolves the canonical form.
|
|
22
|
+
*/
|
|
23
|
+
const LocaleCodeSchema = z.string().regex(/^[a-z]{2,3}(-[a-z0-9]{2,8})?$/, {
|
|
24
|
+
message: 'Locale code must be BCP 47 (e.g., "en", "en-gb", "pt-br")',
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Theme name — lowercase ASCII; must NOT collide with a BCP 47 locale code
|
|
28
|
+
* (locked invariant per design-media.md). Validation here checks the
|
|
29
|
+
* lowercase-ASCII rule; the full locale-collision check runs at
|
|
30
|
+
* `resolveSiteThemes` time when the config + locales are joined.
|
|
31
|
+
*/
|
|
32
|
+
const ThemeNameSchema = z.string().regex(/^[a-z][a-z0-9-]*$/, {
|
|
33
|
+
message: 'Theme name must be lowercase ASCII letters/digits/hyphens',
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Per-site config — `sites/{name}/site.config.ts` (or `site.config.ts`
|
|
37
|
+
* at project root for flat layouts).
|
|
38
|
+
*
|
|
39
|
+
* Required for any site to exist. Carries per-site concerns: targets,
|
|
40
|
+
* dimensions (themes/locales), auth, plugins, hooks, audit, SEO defaults.
|
|
41
|
+
*/
|
|
42
|
+
export const SiteConfigSchema = z
|
|
43
|
+
.object({
|
|
44
|
+
name: z.string().min(1, 'Site name is required'),
|
|
45
|
+
version: z.string().optional(),
|
|
46
|
+
locales: z
|
|
47
|
+
.object({
|
|
48
|
+
supported: z.array(LocaleCodeSchema).min(1),
|
|
49
|
+
default: LocaleCodeSchema.optional(),
|
|
50
|
+
fallbacks: z.record(z.string(), LocaleCodeSchema).optional(),
|
|
51
|
+
defaultPrefix: z.boolean().optional(),
|
|
52
|
+
detection: z.boolean().optional(),
|
|
53
|
+
})
|
|
54
|
+
.optional(),
|
|
55
|
+
themes: z
|
|
56
|
+
.object({
|
|
57
|
+
supported: z.array(ThemeNameSchema).min(1),
|
|
58
|
+
default: ThemeNameSchema.optional(),
|
|
59
|
+
})
|
|
60
|
+
.optional(),
|
|
61
|
+
defaultOgImage: z.string().optional(),
|
|
62
|
+
/**
|
|
63
|
+
* AI cross-task block. Validated downstream by the alt adapter
|
|
64
|
+
* factory; here we only check it's an object when present.
|
|
65
|
+
*/
|
|
66
|
+
ai: z.record(z.string(), z.unknown()).optional(),
|
|
67
|
+
altText: z.record(z.string(), z.unknown()).optional(),
|
|
68
|
+
systemPages: z.array(z.string()).optional(),
|
|
69
|
+
/**
|
|
70
|
+
* Per-target configurations. Keys are target names; values are
|
|
71
|
+
* TargetConfig shapes validated downstream by storage providers,
|
|
72
|
+
* transform adapters, etc.
|
|
73
|
+
*/
|
|
74
|
+
targets: z.record(z.string(), z.record(z.string(), z.unknown())).optional(),
|
|
75
|
+
/**
|
|
76
|
+
* AdminCache instance (Path X — operator constructs via factory call,
|
|
77
|
+
* e.g., `cache: memoryCache({...})`). Validated downstream by checking
|
|
78
|
+
* for the AdminCache method shape; Zod's role here is to accept the
|
|
79
|
+
* opaque constructed instance.
|
|
80
|
+
*/
|
|
81
|
+
cache: z.unknown().optional(),
|
|
82
|
+
/**
|
|
83
|
+
* Reserved for future foundations (auth, hooks, audit, notifications).
|
|
84
|
+
* Each block is validated by its own factory at load time per the
|
|
85
|
+
* Universal Provider Requirements.
|
|
86
|
+
*
|
|
87
|
+
* Extension surfaces per ADR-0009:
|
|
88
|
+
* - `hooks` is `HookContribution[]` — array of factory-call results
|
|
89
|
+
* (e.g., `[autoSlugify(), cdnPurge({...})]`). Runtime treats
|
|
90
|
+
* `Array.isArray(hooks)`; schema accepts opaque array.
|
|
91
|
+
* - Future `validators` + `routes` follow the same contribution-array
|
|
92
|
+
* shape when they ship.
|
|
93
|
+
*
|
|
94
|
+
* The `plugins` field was retired per ADR-0009 — no `Plugin` runtime
|
|
95
|
+
* contract; operators import per-surface factories.
|
|
96
|
+
*/
|
|
97
|
+
admin: z
|
|
98
|
+
.object({
|
|
99
|
+
auth: z.record(z.string(), z.unknown()).optional(),
|
|
100
|
+
hooks: z.array(z.unknown()).optional(),
|
|
101
|
+
audit: z.record(z.string(), z.unknown()).optional(),
|
|
102
|
+
notifications: z.record(z.string(), z.unknown()).optional(),
|
|
103
|
+
offline: z.record(z.string(), z.unknown()).optional(),
|
|
104
|
+
})
|
|
105
|
+
.optional(),
|
|
106
|
+
})
|
|
107
|
+
.strict();
|
|
108
|
+
/**
|
|
109
|
+
* Project-level Gazetta config — `gazetta.config.ts` at project root.
|
|
110
|
+
*
|
|
111
|
+
* Optional; absent means use built-in defaults.
|
|
112
|
+
*/
|
|
113
|
+
export const GazettaConfigSchema = z
|
|
114
|
+
.object({
|
|
115
|
+
logLevel: z.enum(['trace', 'debug', 'info', 'warn', 'error']).optional(),
|
|
116
|
+
telemetry: z.boolean().optional(),
|
|
117
|
+
dev: z
|
|
118
|
+
.object({
|
|
119
|
+
port: z.number().int().min(1).max(65535).optional(),
|
|
120
|
+
hostname: z.string().optional(),
|
|
121
|
+
})
|
|
122
|
+
.optional(),
|
|
123
|
+
/**
|
|
124
|
+
* Defaults that sites inherit unless they override. Object fields
|
|
125
|
+
* merge per-field; arrays (plugins, hooks) do NOT inherit (locked
|
|
126
|
+
* per design-config.md "Defaults flow").
|
|
127
|
+
*
|
|
128
|
+
* `defaults.cache` is a constructed AdminCache instance (Path X —
|
|
129
|
+
* `defaults: { cache: memoryCache({...}) }`). Per the single-Site-
|
|
130
|
+
* per-process invariant in `CONTEXT.md`, each process re-evaluates
|
|
131
|
+
* `gazetta.config.ts` and gets a fresh instance; no per-Site
|
|
132
|
+
* reconstruction needed. Zod accepts the opaque instance.
|
|
133
|
+
*/
|
|
134
|
+
defaults: z
|
|
135
|
+
.object({
|
|
136
|
+
cache: z.unknown().optional(),
|
|
137
|
+
audit: z.record(z.string(), z.unknown()).optional(),
|
|
138
|
+
})
|
|
139
|
+
.optional(),
|
|
140
|
+
/**
|
|
141
|
+
* Cross-task AI defaults (gazetta-level rung). Inherited by sites
|
|
142
|
+
* that don't override per the three-rung chain (gazetta → site →
|
|
143
|
+
* target). `provider` is a constructed AIProvider instance (factory
|
|
144
|
+
* call); `model` is a data literal. Schema accepts the opaque
|
|
145
|
+
* provider via `z.unknown()`.
|
|
146
|
+
*/
|
|
147
|
+
ai: z
|
|
148
|
+
.object({
|
|
149
|
+
provider: z.unknown().optional(),
|
|
150
|
+
model: z.string().optional(),
|
|
151
|
+
})
|
|
152
|
+
.optional(),
|
|
153
|
+
/**
|
|
154
|
+
* Per-task AI defaults at gazetta level (`altText:` for the alt-text
|
|
155
|
+
* task; future `translation:` etc.). Carry data literals only;
|
|
156
|
+
* provider lives on the cross-task `ai:` block above.
|
|
157
|
+
*/
|
|
158
|
+
altText: z
|
|
159
|
+
.object({
|
|
160
|
+
systemPrompt: z.string().optional(),
|
|
161
|
+
maxTokens: z.number().int().positive().optional(),
|
|
162
|
+
})
|
|
163
|
+
.optional(),
|
|
164
|
+
mcp: z
|
|
165
|
+
.object({
|
|
166
|
+
enabled: z.boolean().optional(),
|
|
167
|
+
port: z.number().int().min(1).max(65535).optional(),
|
|
168
|
+
})
|
|
169
|
+
.optional(),
|
|
170
|
+
})
|
|
171
|
+
.strict();
|
|
172
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/config/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Site config + Gazetta config TypeScript interfaces — the user-facing
|
|
3
|
+
* shape that operators write in `site.config.ts` and `gazetta.config.ts`.
|
|
4
|
+
*
|
|
5
|
+
* Per ADR-0005 and design-config.md:
|
|
6
|
+
* - These types are returned by `defineSite()` / `defineGazetta()` typed
|
|
7
|
+
* identity functions; consumers get full TS inference.
|
|
8
|
+
* - Runtime Zod validation runs on every load (defense in depth — TS
|
|
9
|
+
* catches shape errors at edit time; Zod catches env-var-driven errors
|
|
10
|
+
* at load time).
|
|
11
|
+
* - SiteConfig mirrors the runtime SiteManifest shape but is the user's
|
|
12
|
+
* input contract (more flexible defaults, optional fields).
|
|
13
|
+
*/
|
|
14
|
+
import type { z } from 'zod';
|
|
15
|
+
import type { GazettaConfigSchema, SiteConfigSchema } from './schemas.js';
|
|
16
|
+
/**
|
|
17
|
+
* Project-level Gazetta config — `gazetta.config.ts` at project root.
|
|
18
|
+
* Optional; absent means use built-in defaults.
|
|
19
|
+
*
|
|
20
|
+
* Carries cross-site concerns: telemetry, log level, dev port, MCP
|
|
21
|
+
* server settings, default cache/audit providers that sites inherit.
|
|
22
|
+
*/
|
|
23
|
+
export type GazettaConfig = z.infer<typeof GazettaConfigSchema>;
|
|
24
|
+
/**
|
|
25
|
+
* Per-site config — `sites/{name}/site.config.ts` (or `site.config.ts`
|
|
26
|
+
* at project root for flat layouts).
|
|
27
|
+
*
|
|
28
|
+
* Required for any site to exist. Carries per-site concerns: targets,
|
|
29
|
+
* dimensions (themes/locales), auth, plugins, hooks, audit, SEO defaults.
|
|
30
|
+
*/
|
|
31
|
+
export type SiteConfig = z.infer<typeof SiteConfigSchema>;
|
|
32
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEzE;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Site config + Gazetta config TypeScript interfaces — the user-facing
|
|
3
|
+
* shape that operators write in `site.config.ts` and `gazetta.config.ts`.
|
|
4
|
+
*
|
|
5
|
+
* Per ADR-0005 and design-config.md:
|
|
6
|
+
* - These types are returned by `defineSite()` / `defineGazetta()` typed
|
|
7
|
+
* identity functions; consumers get full TS inference.
|
|
8
|
+
* - Runtime Zod validation runs on every load (defense in depth — TS
|
|
9
|
+
* catches shape errors at edit time; Zod catches env-var-driven errors
|
|
10
|
+
* at load time).
|
|
11
|
+
* - SiteConfig mirrors the runtime SiteManifest shape but is the user's
|
|
12
|
+
* input contract (more flexible defaults, optional fields).
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { WorkerCapableDeployAdapter } from './types.js';
|
|
2
|
+
export interface CloudflareWorkersDeployOptions {
|
|
3
|
+
/** Cloudflare API token with Workers Scripts:Edit + R2 Read:Bucket permissions. */
|
|
4
|
+
apiToken: string;
|
|
5
|
+
/** Cloudflare account ID. */
|
|
6
|
+
accountId: string;
|
|
7
|
+
/** Worker name (also used as the workers.dev subdomain). */
|
|
8
|
+
name: string;
|
|
9
|
+
/** R2 bucket name the worker reads from at request time. */
|
|
10
|
+
bucket: string;
|
|
11
|
+
}
|
|
12
|
+
interface WranglerTomlInput {
|
|
13
|
+
name: string;
|
|
14
|
+
bucket: string;
|
|
15
|
+
siteUrl: string | undefined;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Render the wrangler.toml content. Pure function; unit-testable
|
|
19
|
+
* without mocking fs.
|
|
20
|
+
*/
|
|
21
|
+
export declare function renderWranglerToml(input: WranglerTomlInput): string;
|
|
22
|
+
/**
|
|
23
|
+
* Render the worker entry-point code. Pure function. The
|
|
24
|
+
* `cloudflare-r2` adapter at `packages/gazetta/src/workers/` provides
|
|
25
|
+
* the actual request-handling logic; the entry is a thin re-export.
|
|
26
|
+
*/
|
|
27
|
+
export declare function renderWorkerEntry(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Extract the deployed URL from wrangler stdout. Pure function.
|
|
30
|
+
*
|
|
31
|
+
* Wrangler 4.x stdout opens with a telemetry banner URL pointing at
|
|
32
|
+
* github.com/cloudflare/workers-sdk; the actual deploy URL appears
|
|
33
|
+
* later as either:
|
|
34
|
+
* - `*.workers.dev` — the default subdomain when `workers_dev = true`
|
|
35
|
+
* - the route domain from `[[routes]]` in wrangler.toml (the
|
|
36
|
+
* operator's `target.siteUrl`)
|
|
37
|
+
*
|
|
38
|
+
* Strategy: prefer the configured siteUrl when present in stdout
|
|
39
|
+
* (deploys with a custom route surface it as part of the "Published"
|
|
40
|
+
* line); otherwise pick the first `*.workers.dev` URL; fall through
|
|
41
|
+
* to the first non-github URL.
|
|
42
|
+
*/
|
|
43
|
+
export declare function extractDeployUrl(stdout: string, siteUrl: string | undefined): string | undefined;
|
|
44
|
+
export declare function cloudflareWorkersDeploy(opts: CloudflareWorkersDeployOptions): WorkerCapableDeployAdapter;
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=cloudflare-workers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-workers.d.ts","sourceRoot":"","sources":["../../src/deploy/cloudflare-workers.ts"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EAIV,0BAA0B,EAE3B,MAAM,YAAY,CAAA;AAQnB,MAAM,WAAW,8BAA8B;IAC7C,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAA;IAChB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAA;CACf;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAmBnE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAiBhG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,8BAA8B,GAAG,0BAA0B,CAwHxG"}
|