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,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare Workers deploy adapter (Cut 3 of #203).
|
|
3
|
+
*
|
|
4
|
+
* Refactors the hardcoded `gazetta deploy` flow at
|
|
5
|
+
* `cli/index.ts:1230-1314` into a Pattern 1 Provider factory.
|
|
6
|
+
*
|
|
7
|
+
* Operator usage:
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { defineSite, r2Storage, cloudflareWorkersDeploy } from 'gazetta'
|
|
10
|
+
*
|
|
11
|
+
* defineSite({
|
|
12
|
+
* targets: {
|
|
13
|
+
* production: {
|
|
14
|
+
* type: 'dynamic',
|
|
15
|
+
* storage: r2Storage({...}),
|
|
16
|
+
* deploy: cloudflareWorkersDeploy({
|
|
17
|
+
* apiToken: process.env.CLOUDFLARE_API_TOKEN!,
|
|
18
|
+
* accountId: process.env.CLOUDFLARE_ACCOUNT_ID!,
|
|
19
|
+
* name: 'my-site',
|
|
20
|
+
* bucket: 'my-site',
|
|
21
|
+
* }),
|
|
22
|
+
* },
|
|
23
|
+
* },
|
|
24
|
+
* })
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* # WorkerCapableDeployAdapter
|
|
28
|
+
*
|
|
29
|
+
* Implements the capability extension: `workerRuntimeConfig()`
|
|
30
|
+
* returns the R2 binding metadata `gazetta build` needs.
|
|
31
|
+
*
|
|
32
|
+
* # supports
|
|
33
|
+
*
|
|
34
|
+
* `['dynamic']` in v1 — matches today's `TargetType = 'static' |
|
|
35
|
+
* 'dynamic'` enum where `'dynamic'` plays the ESI role per
|
|
36
|
+
* `getType()` semantics. Widens to `['esi']` when
|
|
37
|
+
* `design-rendering.md` Cut 1 splits the enum into three. Future
|
|
38
|
+
* `dynamic` (CF Workers + Node/Bun origin) deferred to v2.
|
|
39
|
+
*
|
|
40
|
+
* # SOLID
|
|
41
|
+
*
|
|
42
|
+
* - SRP: adapter owns Cloudflare Workers deploy mechanics only;
|
|
43
|
+
* pure helpers (renderWranglerToml, renderWorkerEntry) are
|
|
44
|
+
* unit-testable independently.
|
|
45
|
+
* - DIP: CLI depends on `WorkerCapableDeployAdapter` interface,
|
|
46
|
+
* not on this factory directly. Future CF Pages + Functions
|
|
47
|
+
* adapter substitutes through the same contract.
|
|
48
|
+
*/
|
|
49
|
+
import { execSync } from 'node:child_process';
|
|
50
|
+
import { mkdir, rm, writeFile } from 'node:fs/promises';
|
|
51
|
+
import { join, resolve } from 'node:path';
|
|
52
|
+
import { DeployAuthError, DeployConfigError, DeployTransportError } from './errors.js';
|
|
53
|
+
const ADAPTER_NAME = 'cloudflare-workers';
|
|
54
|
+
const BUCKET_BINDING = 'SITE_BUCKET';
|
|
55
|
+
const COMPAT_DATE = '2024-12-01';
|
|
56
|
+
/**
|
|
57
|
+
* Render the wrangler.toml content. Pure function; unit-testable
|
|
58
|
+
* without mocking fs.
|
|
59
|
+
*/
|
|
60
|
+
export function renderWranglerToml(input) {
|
|
61
|
+
const { name, bucket, siteUrl } = input;
|
|
62
|
+
let out = `name = "${name}"\n` +
|
|
63
|
+
`main = "index.ts"\n` +
|
|
64
|
+
`compatibility_date = "${COMPAT_DATE}"\n` +
|
|
65
|
+
`workers_dev = true\n` +
|
|
66
|
+
`\n` +
|
|
67
|
+
`[[r2_buckets]]\n` +
|
|
68
|
+
`binding = "${BUCKET_BINDING}"\n` +
|
|
69
|
+
`bucket_name = "${bucket}"\n`;
|
|
70
|
+
if (siteUrl) {
|
|
71
|
+
const url = new URL(siteUrl);
|
|
72
|
+
const hostname = url.hostname;
|
|
73
|
+
out += `\n[[routes]]\npattern = "${hostname}/*"\nzone_name = "${hostname}"\n`;
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Render the worker entry-point code. Pure function. The
|
|
79
|
+
* `cloudflare-r2` adapter at `packages/gazetta/src/workers/` provides
|
|
80
|
+
* the actual request-handling logic; the entry is a thin re-export.
|
|
81
|
+
*/
|
|
82
|
+
export function renderWorkerEntry() {
|
|
83
|
+
return `import { createWorker } from 'gazetta/workers/cloudflare-r2'\nexport default createWorker()\n`;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Extract the deployed URL from wrangler stdout. Pure function.
|
|
87
|
+
*
|
|
88
|
+
* Wrangler 4.x stdout opens with a telemetry banner URL pointing at
|
|
89
|
+
* github.com/cloudflare/workers-sdk; the actual deploy URL appears
|
|
90
|
+
* later as either:
|
|
91
|
+
* - `*.workers.dev` — the default subdomain when `workers_dev = true`
|
|
92
|
+
* - the route domain from `[[routes]]` in wrangler.toml (the
|
|
93
|
+
* operator's `target.siteUrl`)
|
|
94
|
+
*
|
|
95
|
+
* Strategy: prefer the configured siteUrl when present in stdout
|
|
96
|
+
* (deploys with a custom route surface it as part of the "Published"
|
|
97
|
+
* line); otherwise pick the first `*.workers.dev` URL; fall through
|
|
98
|
+
* to the first non-github URL.
|
|
99
|
+
*/
|
|
100
|
+
export function extractDeployUrl(stdout, siteUrl) {
|
|
101
|
+
const urls = stdout.match(/https:\/\/[^\s]+/g) ?? [];
|
|
102
|
+
if (urls.length === 0)
|
|
103
|
+
return undefined;
|
|
104
|
+
// Strip trailing punctuation that often follows URLs in logs.
|
|
105
|
+
const clean = (u) => u.replace(/[.,;:!?)]+$/, '');
|
|
106
|
+
if (siteUrl) {
|
|
107
|
+
const hit = urls.map(clean).find(u => u.startsWith(siteUrl));
|
|
108
|
+
if (hit)
|
|
109
|
+
return hit;
|
|
110
|
+
}
|
|
111
|
+
const workersDev = urls.map(clean).find(u => /\.workers\.dev/.test(u));
|
|
112
|
+
if (workersDev)
|
|
113
|
+
return workersDev;
|
|
114
|
+
const nonGithub = urls.map(clean).find(u => !u.startsWith('https://github.com/'));
|
|
115
|
+
return nonGithub;
|
|
116
|
+
}
|
|
117
|
+
export function cloudflareWorkersDeploy(opts) {
|
|
118
|
+
// Construction-time validation per Q7 lock: factories validate
|
|
119
|
+
// operator-supplied input synchronously. Bad credentials surface
|
|
120
|
+
// at execute() as DeployAuthError, not here.
|
|
121
|
+
if (!opts.apiToken) {
|
|
122
|
+
throw new DeployConfigError('cloudflareWorkersDeploy requires `apiToken` (e.g., process.env.CLOUDFLARE_API_TOKEN)', ADAPTER_NAME);
|
|
123
|
+
}
|
|
124
|
+
if (!opts.accountId) {
|
|
125
|
+
throw new DeployConfigError('cloudflareWorkersDeploy requires `accountId` (e.g., process.env.CLOUDFLARE_ACCOUNT_ID)', ADAPTER_NAME);
|
|
126
|
+
}
|
|
127
|
+
if (!opts.name) {
|
|
128
|
+
throw new DeployConfigError('cloudflareWorkersDeploy requires `name` — the worker name + workers.dev subdomain', ADAPTER_NAME);
|
|
129
|
+
}
|
|
130
|
+
if (!opts.bucket) {
|
|
131
|
+
throw new DeployConfigError('cloudflareWorkersDeploy requires `bucket` — the R2 bucket the worker reads from', ADAPTER_NAME);
|
|
132
|
+
}
|
|
133
|
+
const { apiToken, accountId, name: workerName, bucket } = opts;
|
|
134
|
+
return {
|
|
135
|
+
name: ADAPTER_NAME,
|
|
136
|
+
// `TargetType` today is `'static' | 'dynamic'`; `'dynamic'` plays
|
|
137
|
+
// the ESI role per current `getType()` semantics. Widens to
|
|
138
|
+
// `['esi']` when design-rendering.md Cut 1 splits the enum.
|
|
139
|
+
supports: ['dynamic'],
|
|
140
|
+
workerRuntimeConfig() {
|
|
141
|
+
return {
|
|
142
|
+
bucketBinding: BUCKET_BINDING,
|
|
143
|
+
// Routes computed lazily from target.siteUrl at deploy time —
|
|
144
|
+
// not at config-eval. `gazetta build` reads the binding name
|
|
145
|
+
// here; the actual route pattern lands in wrangler.toml at
|
|
146
|
+
// deploy time via renderWranglerToml().
|
|
147
|
+
};
|
|
148
|
+
},
|
|
149
|
+
validate(_ctx) {
|
|
150
|
+
// No cross-field invariants in v1 beyond the construction-time
|
|
151
|
+
// checks above. Reserved for future operator-input validation
|
|
152
|
+
// (e.g., warn when target.siteUrl protocol is `http:`).
|
|
153
|
+
return [];
|
|
154
|
+
},
|
|
155
|
+
async execute(ctx) {
|
|
156
|
+
const { target, logger, signal } = ctx;
|
|
157
|
+
const tmpDir = join(process.cwd(), '.gazetta-deploy');
|
|
158
|
+
await rm(tmpDir, { recursive: true, force: true });
|
|
159
|
+
await mkdir(tmpDir, { recursive: true });
|
|
160
|
+
try {
|
|
161
|
+
const tomlBody = renderWranglerToml({
|
|
162
|
+
name: workerName,
|
|
163
|
+
bucket,
|
|
164
|
+
siteUrl: target.siteUrl,
|
|
165
|
+
});
|
|
166
|
+
await writeFile(join(tmpDir, 'wrangler.toml'), tomlBody);
|
|
167
|
+
await writeFile(join(tmpDir, 'index.ts'), renderWorkerEntry());
|
|
168
|
+
await writeFile(join(tmpDir, 'package.json'), JSON.stringify({ type: 'module', dependencies: { gazetta: '*', hono: '*' } }));
|
|
169
|
+
if (signal.aborted)
|
|
170
|
+
throw new DeployTransportError('Deploy aborted by signal', ADAPTER_NAME);
|
|
171
|
+
logger.info({ workerName, bucket }, 'Deploying worker to Cloudflare');
|
|
172
|
+
// Resolve the gazetta package install root for --install-links.
|
|
173
|
+
// import.meta.dirname is two levels above (src/deploy/).
|
|
174
|
+
const gazettaRoot = resolve(import.meta.dirname, '../..');
|
|
175
|
+
execSync(`npm install --install-links ${gazettaRoot}`, { cwd: tmpDir, stdio: 'pipe' });
|
|
176
|
+
if (signal.aborted)
|
|
177
|
+
throw new DeployTransportError('Deploy aborted by signal', ADAPTER_NAME);
|
|
178
|
+
// Wrangler reads CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID
|
|
179
|
+
// from env per its own convention; pass through.
|
|
180
|
+
const wranglerOut = execSync('npx wrangler deploy', {
|
|
181
|
+
cwd: tmpDir,
|
|
182
|
+
stdio: 'pipe',
|
|
183
|
+
env: { ...process.env, CLOUDFLARE_API_TOKEN: apiToken, CLOUDFLARE_ACCOUNT_ID: accountId },
|
|
184
|
+
}).toString();
|
|
185
|
+
// Wrangler 4.x stdout opens with a telemetry banner pointing at
|
|
186
|
+
// github.com/cloudflare/workers-sdk; the actual deploy URL is
|
|
187
|
+
// either `*.workers.dev` (default subdomain) or the route domain
|
|
188
|
+
// from wrangler.toml. Prefer those over any other URL.
|
|
189
|
+
const url = extractDeployUrl(wranglerOut, target.siteUrl);
|
|
190
|
+
logger.info({ workerName, url }, 'Worker deployed');
|
|
191
|
+
return {
|
|
192
|
+
url,
|
|
193
|
+
details: { wranglerOutput: wranglerOut },
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
catch (err) {
|
|
197
|
+
if (err instanceof DeployTransportError)
|
|
198
|
+
throw err;
|
|
199
|
+
const stderr = err.stderr?.toString() ?? err.message;
|
|
200
|
+
// Heuristic: wrangler exits with auth-related messages when
|
|
201
|
+
// the token is bad. Distinguish auth vs transport here.
|
|
202
|
+
if (/authentication|unauthorized|invalid token/i.test(stderr)) {
|
|
203
|
+
throw new DeployAuthError(`Cloudflare rejected credentials: ${stderr}`, ADAPTER_NAME);
|
|
204
|
+
}
|
|
205
|
+
throw new DeployTransportError(`Wrangler deploy failed: ${stderr}`, ADAPTER_NAME);
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
await rm(tmpDir, { recursive: true, force: true });
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=cloudflare-workers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-workers.js","sourceRoot":"","sources":["../../src/deploy/cloudflare-workers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error taxonomy for the DeployAdapter Pattern 1 Provider surface.
|
|
3
|
+
*
|
|
4
|
+
* Cut 1 of the deploy contract. Per ADR-0004 Universal Provider
|
|
5
|
+
* Requirement #6 ("independent error taxonomy"), every Provider
|
|
6
|
+
* surface declares its own error classes for runtime branching.
|
|
7
|
+
*
|
|
8
|
+
* Adapters translate platform-SDK errors into these classes; the CLI
|
|
9
|
+
* catches `DeployError` and surfaces the `adapter` field plus a
|
|
10
|
+
* human-readable message. Debug logs include the underlying cause.
|
|
11
|
+
*
|
|
12
|
+
* Reference: `.claude/rules/design-deploy.md` "Error taxonomy" section.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Base class for all deploy errors. Carries the adapter name so the
|
|
16
|
+
* CLI can surface "Cloudflare Workers deploy failed: ..." instead of
|
|
17
|
+
* a context-free error message.
|
|
18
|
+
*/
|
|
19
|
+
export declare class DeployError extends Error {
|
|
20
|
+
readonly adapter: string;
|
|
21
|
+
constructor(message: string, adapter: string);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Raised at factory construction (synchronous) when operator-supplied
|
|
25
|
+
* options are missing required fields or malformed. Surfaces in the
|
|
26
|
+
* IDE / at admin boot, not at deploy time.
|
|
27
|
+
*
|
|
28
|
+
* Example: `cloudflareWorkersDeploy({ name: 'foo' })` without
|
|
29
|
+
* `apiToken` throws `DeployConfigError` because the platform SDK
|
|
30
|
+
* can't proceed without credentials.
|
|
31
|
+
*/
|
|
32
|
+
export declare class DeployConfigError extends DeployError {
|
|
33
|
+
constructor(message: string, adapter: string);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Raised at `execute()` time when the platform rejects credentials.
|
|
37
|
+
* Adapters wrap platform-SDK auth failures (401 / 403 from the
|
|
38
|
+
* platform's API) in this class so operators see a consistent
|
|
39
|
+
* "credentials rejected" surface regardless of which platform.
|
|
40
|
+
*/
|
|
41
|
+
export declare class DeployAuthError extends DeployError {
|
|
42
|
+
constructor(message: string, adapter: string);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Raised at `execute()` time when the network or platform SDK call
|
|
46
|
+
* fails for transport reasons (timeout, DNS, 5xx from platform,
|
|
47
|
+
* unexpected protocol error). Distinct from auth failures because
|
|
48
|
+
* the operator's remediation differs: auth = check credentials;
|
|
49
|
+
* transport = retry or investigate platform status.
|
|
50
|
+
*/
|
|
51
|
+
export declare class DeployTransportError extends DeployError {
|
|
52
|
+
constructor(message: string, adapter: string);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Raised at `execute()` time when the adapter expects published
|
|
56
|
+
* content (e.g., a static-host adapter that reads from
|
|
57
|
+
* `target.storage`) but storage is empty.
|
|
58
|
+
*
|
|
59
|
+
* Per Q4 lock: the CLI doesn't gate on prior publish — adapters that
|
|
60
|
+
* need bytes surface this error themselves. Operator's remediation
|
|
61
|
+
* is `gazetta publish <target>` before retrying `gazetta deploy`.
|
|
62
|
+
*/
|
|
63
|
+
export declare class DeployContentError extends DeployError {
|
|
64
|
+
constructor(message: string, adapter: string);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/deploy/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAgB,OAAO,EAAE,MAAM,CAAA;gBAEnB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK7C;AAED;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI7C;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,WAAW;gBAClC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI7C;AAED;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI7C;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI7C"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error taxonomy for the DeployAdapter Pattern 1 Provider surface.
|
|
3
|
+
*
|
|
4
|
+
* Cut 1 of the deploy contract. Per ADR-0004 Universal Provider
|
|
5
|
+
* Requirement #6 ("independent error taxonomy"), every Provider
|
|
6
|
+
* surface declares its own error classes for runtime branching.
|
|
7
|
+
*
|
|
8
|
+
* Adapters translate platform-SDK errors into these classes; the CLI
|
|
9
|
+
* catches `DeployError` and surfaces the `adapter` field plus a
|
|
10
|
+
* human-readable message. Debug logs include the underlying cause.
|
|
11
|
+
*
|
|
12
|
+
* Reference: `.claude/rules/design-deploy.md` "Error taxonomy" section.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Base class for all deploy errors. Carries the adapter name so the
|
|
16
|
+
* CLI can surface "Cloudflare Workers deploy failed: ..." instead of
|
|
17
|
+
* a context-free error message.
|
|
18
|
+
*/
|
|
19
|
+
export class DeployError extends Error {
|
|
20
|
+
adapter;
|
|
21
|
+
constructor(message, adapter) {
|
|
22
|
+
super(message);
|
|
23
|
+
this.name = 'DeployError';
|
|
24
|
+
this.adapter = adapter;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Raised at factory construction (synchronous) when operator-supplied
|
|
29
|
+
* options are missing required fields or malformed. Surfaces in the
|
|
30
|
+
* IDE / at admin boot, not at deploy time.
|
|
31
|
+
*
|
|
32
|
+
* Example: `cloudflareWorkersDeploy({ name: 'foo' })` without
|
|
33
|
+
* `apiToken` throws `DeployConfigError` because the platform SDK
|
|
34
|
+
* can't proceed without credentials.
|
|
35
|
+
*/
|
|
36
|
+
export class DeployConfigError extends DeployError {
|
|
37
|
+
constructor(message, adapter) {
|
|
38
|
+
super(message, adapter);
|
|
39
|
+
this.name = 'DeployConfigError';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Raised at `execute()` time when the platform rejects credentials.
|
|
44
|
+
* Adapters wrap platform-SDK auth failures (401 / 403 from the
|
|
45
|
+
* platform's API) in this class so operators see a consistent
|
|
46
|
+
* "credentials rejected" surface regardless of which platform.
|
|
47
|
+
*/
|
|
48
|
+
export class DeployAuthError extends DeployError {
|
|
49
|
+
constructor(message, adapter) {
|
|
50
|
+
super(message, adapter);
|
|
51
|
+
this.name = 'DeployAuthError';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Raised at `execute()` time when the network or platform SDK call
|
|
56
|
+
* fails for transport reasons (timeout, DNS, 5xx from platform,
|
|
57
|
+
* unexpected protocol error). Distinct from auth failures because
|
|
58
|
+
* the operator's remediation differs: auth = check credentials;
|
|
59
|
+
* transport = retry or investigate platform status.
|
|
60
|
+
*/
|
|
61
|
+
export class DeployTransportError extends DeployError {
|
|
62
|
+
constructor(message, adapter) {
|
|
63
|
+
super(message, adapter);
|
|
64
|
+
this.name = 'DeployTransportError';
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Raised at `execute()` time when the adapter expects published
|
|
69
|
+
* content (e.g., a static-host adapter that reads from
|
|
70
|
+
* `target.storage`) but storage is empty.
|
|
71
|
+
*
|
|
72
|
+
* Per Q4 lock: the CLI doesn't gate on prior publish — adapters that
|
|
73
|
+
* need bytes surface this error themselves. Operator's remediation
|
|
74
|
+
* is `gazetta publish <target>` before retrying `gazetta deploy`.
|
|
75
|
+
*/
|
|
76
|
+
export class DeployContentError extends DeployError {
|
|
77
|
+
constructor(message, adapter) {
|
|
78
|
+
super(message, adapter);
|
|
79
|
+
this.name = 'DeployContentError';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/deploy/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;GAIG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpB,OAAO,CAAQ;IAE/B,YAAY,OAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAChD,YAAY,OAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;IACjC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,YAAY,OAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IACnD,YAAY,OAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;IACpC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,YAAY,OAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deploy barrel. Cut 1 ships the type-only foundation; subsequent
|
|
3
|
+
* cuts add the validators (Cut 2), `cloudflareWorkersDeploy()`
|
|
4
|
+
* factory + CLI refactor (Cut 3), and docs (Cut 4).
|
|
5
|
+
*/
|
|
6
|
+
export type { DeployAdapter, DeployContext, DeployLogger, DeployResult, ValidateContext, WorkerCapableDeployAdapter, WorkerRuntimeConfig, } from './types.js';
|
|
7
|
+
export { DeployAuthError, DeployConfigError, DeployContentError, DeployError, DeployTransportError, } from './errors.js';
|
|
8
|
+
export { cloudflareWorkersDeploy, extractDeployUrl, renderWorkerEntry, renderWranglerToml, type CloudflareWorkersDeployOptions, } from './cloudflare-workers.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/deploy/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,YAAY,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,oBAAoB,GACrB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,8BAA8B,GACpC,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { DeployAuthError, DeployConfigError, DeployContentError, DeployError, DeployTransportError, } from './errors.js';
|
|
2
|
+
export { cloudflareWorkersDeploy, extractDeployUrl, renderWorkerEntry, renderWranglerToml, } from './cloudflare-workers.js';
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/deploy/index.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,oBAAoB,GACrB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GAEnB,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type contract for the DeployAdapter Pattern 1 Provider surface.
|
|
3
|
+
*
|
|
4
|
+
* Cut 1 of the deploy contract — the interface, capability extension,
|
|
5
|
+
* and supporting types. Subsequent cuts add validators (Cut 2), the
|
|
6
|
+
* first real adapter (Cut 3 — `cloudflareWorkersDeploy`), and docs
|
|
7
|
+
* (Cut 4). Per ADR-0008, operators wire adapters via factory calls
|
|
8
|
+
* returning a constructed `DeployAdapter`; the field type IS the
|
|
9
|
+
* runtime interface.
|
|
10
|
+
*
|
|
11
|
+
* Reference: `.claude/rules/design-deploy.md` "The contract" section.
|
|
12
|
+
*
|
|
13
|
+
* Note: `supports: readonly TargetType[]` is forward-compatible with
|
|
14
|
+
* `design-rendering.md` Q1's three-target-type taxonomy (`'static' |
|
|
15
|
+
* 'esi' | 'dynamic'`). Today's `TargetType` is `'static' | 'dynamic'`;
|
|
16
|
+
* Cut 1 of design-rendering.md widens it to include `'esi'`. Adapters
|
|
17
|
+
* declaring `supports: ['static'] as const` today continue compiling
|
|
18
|
+
* after that widening.
|
|
19
|
+
*/
|
|
20
|
+
import type { StorageProvider, TargetConfig, TargetType } from '../types.js';
|
|
21
|
+
import type { Issue } from '../validation/types.js';
|
|
22
|
+
/**
|
|
23
|
+
* The deploy adapter contract. One implementation per platform.
|
|
24
|
+
*
|
|
25
|
+
* - `name` — stable identifier for diagnostics, logs, validation
|
|
26
|
+
* messages. Kebab-case matching the `module:` convention in
|
|
27
|
+
* design-logging.md (e.g., `'cloudflare-workers'`, `'github-pages'`).
|
|
28
|
+
* Plugin adapters use their package name (`'@example/custom-deploy'`).
|
|
29
|
+
* - `supports` — which target types this adapter supports. The
|
|
30
|
+
* `deploy-target-type-supported` validator (Cut 2) enforces
|
|
31
|
+
* compatibility against `target.type`.
|
|
32
|
+
* - `execute(ctx)` — run the deploy. Throws `DeployError` variants on
|
|
33
|
+
* failure; returns `DeployResult` on success.
|
|
34
|
+
* - `validate?(ctx)` — optional pre-flight validation for cross-field
|
|
35
|
+
* invariants beyond target-type compatibility (e.g., "Cloudflare
|
|
36
|
+
* Workers requires bucket binding"). Returns the standard `Issue[]`
|
|
37
|
+
* shape from design-validation.md; runs at `cli` + `pre-publish`
|
|
38
|
+
* stages of the validation framework.
|
|
39
|
+
*/
|
|
40
|
+
export interface DeployAdapter {
|
|
41
|
+
readonly name: string;
|
|
42
|
+
readonly supports: readonly TargetType[];
|
|
43
|
+
execute(ctx: DeployContext): Promise<DeployResult>;
|
|
44
|
+
validate?(ctx: ValidateContext): Issue[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Capability extension for adapters that bundle worker code
|
|
48
|
+
* (Cloudflare Workers, Cloudflare Pages + Functions, Vercel Edge,
|
|
49
|
+
* Netlify Edge, Deno Deploy). `gazetta build` detects this capability
|
|
50
|
+
* via `'workerRuntimeConfig' in target.deploy` and reads the runtime
|
|
51
|
+
* config at build time.
|
|
52
|
+
*
|
|
53
|
+
* Static-only adapters (GitHub Pages, S3 static, Netlify static,
|
|
54
|
+
* CF Pages plain-static, Azure Blob static) do NOT implement this
|
|
55
|
+
* interface — their `target.deploy` value satisfies just
|
|
56
|
+
* `DeployAdapter`.
|
|
57
|
+
*
|
|
58
|
+
* Per Q1 of the design grilling: the capability split keeps
|
|
59
|
+
* worker-bundling concerns out of the base contract; same pattern as
|
|
60
|
+
* `BinaryCapableStorageProvider` in design-media-implementation.md.
|
|
61
|
+
*/
|
|
62
|
+
export interface WorkerCapableDeployAdapter extends DeployAdapter {
|
|
63
|
+
/**
|
|
64
|
+
* Returns the worker runtime config that `gazetta build` needs to
|
|
65
|
+
* generate the worker code (R2 bucket binding name, route patterns,
|
|
66
|
+
* KV bindings, etc.). Called at build time, not at execute time.
|
|
67
|
+
*/
|
|
68
|
+
workerRuntimeConfig(): WorkerRuntimeConfig;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Runtime metadata for the worker code `gazetta build` generates.
|
|
72
|
+
*
|
|
73
|
+
* - `bucketBinding` — name the worker code uses to access storage
|
|
74
|
+
* (e.g., `'SITE_BUCKET'` for the R2 binding). Adapter decides;
|
|
75
|
+
* wrangler.toml / equivalent platform config picks it up.
|
|
76
|
+
* - `routes` — optional route patterns the worker should handle.
|
|
77
|
+
* When unset, the adapter relies on platform defaults (e.g.,
|
|
78
|
+
* Cloudflare Workers' `workers_dev = true` route).
|
|
79
|
+
* - `bindings` — adapter-specific extras (Cloudflare KV / D1 /
|
|
80
|
+
* Queues, Vercel Edge Config, etc.). Opaque to `gazetta build`;
|
|
81
|
+
* the adapter consumes its own structure.
|
|
82
|
+
*/
|
|
83
|
+
export interface WorkerRuntimeConfig {
|
|
84
|
+
readonly bucketBinding: string;
|
|
85
|
+
readonly routes?: readonly {
|
|
86
|
+
pattern: string;
|
|
87
|
+
zone?: string;
|
|
88
|
+
}[];
|
|
89
|
+
readonly bindings?: Record<string, unknown>;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Context passed to `DeployAdapter.execute()`. Carries everything the
|
|
93
|
+
* adapter needs to deploy without reading from globals.
|
|
94
|
+
*
|
|
95
|
+
* - `target` / `targetName` — the resolved target being deployed.
|
|
96
|
+
* - `outputDir` — path to pre-rendered output (static + esi targets).
|
|
97
|
+
* Adapters that need bytes read from this path; adapters that don't
|
|
98
|
+
* (worker-only deploys to platforms reading from external storage
|
|
99
|
+
* at request time) ignore it.
|
|
100
|
+
* - `storage` — the target's `StorageProvider`. Adapters that read
|
|
101
|
+
* content during deploy use this; adapters that don't ignore it.
|
|
102
|
+
* Per Q4 lock, the CLI doesn't gate on whether storage has been
|
|
103
|
+
* published; adapters that need published content surface a
|
|
104
|
+
* `DeployContentError` at execute time when missing.
|
|
105
|
+
* - `env` — `process.env` passthrough. Adapters read platform-specific
|
|
106
|
+
* env vars (CLOUDFLARE_API_TOKEN, VERCEL_TOKEN, etc.) per their own
|
|
107
|
+
* documentation. Per Q7 lock: adapter-namespaced env vars matching
|
|
108
|
+
* platform SDK conventions.
|
|
109
|
+
* - `logger` — module-scoped logger per design-logging.md. Adapter
|
|
110
|
+
* uses `logger.info({...}, 'message')` for operational events.
|
|
111
|
+
* - `signal` — cancellation signal for long-running deploys. Adapters
|
|
112
|
+
* honor it best-effort; not all platform CLIs support mid-deploy
|
|
113
|
+
* cancellation.
|
|
114
|
+
*/
|
|
115
|
+
export interface DeployContext {
|
|
116
|
+
readonly target: TargetConfig;
|
|
117
|
+
readonly targetName: string;
|
|
118
|
+
readonly outputDir: string;
|
|
119
|
+
readonly storage: StorageProvider;
|
|
120
|
+
readonly env: Record<string, string | undefined>;
|
|
121
|
+
readonly logger: DeployLogger;
|
|
122
|
+
readonly signal: AbortSignal;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Context passed to `DeployAdapter.validate?()`. Narrower than
|
|
126
|
+
* `DeployContext` because pre-flight validation is a pure function
|
|
127
|
+
* over config — no I/O, no env, no cancellation.
|
|
128
|
+
*/
|
|
129
|
+
export interface ValidateContext {
|
|
130
|
+
readonly target: TargetConfig;
|
|
131
|
+
readonly targetName: string;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Result returned by `DeployAdapter.execute()` on success.
|
|
135
|
+
*
|
|
136
|
+
* - `url` — deployed URL when known. Some platforms surface one
|
|
137
|
+
* (Wrangler returns `https://workers-name.workers.dev` after
|
|
138
|
+
* deploy); others don't until DNS propagates. Optional.
|
|
139
|
+
* - `details` — adapter-specific extras (Cloudflare worker version
|
|
140
|
+
* ID, Netlify deploy ID, etc.). Surfaced in CLI output for operator
|
|
141
|
+
* inspection. Opaque structure.
|
|
142
|
+
*/
|
|
143
|
+
export interface DeployResult {
|
|
144
|
+
readonly url?: string;
|
|
145
|
+
readonly details?: Record<string, unknown>;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Minimal logger interface scoped to a deploy adapter. Mirrors the
|
|
149
|
+
* shape from design-logging.md (and `HookLogger` in hooks/types.ts).
|
|
150
|
+
* Concrete logger implementation lives in the logging foundation
|
|
151
|
+
* (Tier 3); v1 deploy dispatch supplies a no-op logger or pino child
|
|
152
|
+
* as available.
|
|
153
|
+
*
|
|
154
|
+
* No `trace` level — deploy is operator-tier, info-and-up sufficient.
|
|
155
|
+
*/
|
|
156
|
+
export interface DeployLogger {
|
|
157
|
+
debug(obj: object | string, msg?: string): void;
|
|
158
|
+
info(obj: object | string, msg?: string): void;
|
|
159
|
+
warn(obj: object | string, msg?: string): void;
|
|
160
|
+
error(obj: object | string, msg?: string): void;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/deploy/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAEnD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAA;IACxC,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAClD,QAAQ,CAAC,CAAC,GAAG,EAAE,eAAe,GAAG,KAAK,EAAE,CAAA;CACzC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,0BAA2B,SAAQ,aAAa;IAC/D;;;;OAIG;IACH,mBAAmB,IAAI,mBAAmB,CAAA;CAC3C;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC5C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAChD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC3C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9C,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/deploy/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fragment Create — POST handler logic for `/api/fragments`.
|
|
3
|
+
*
|
|
4
|
+
* Peer of `pages/create.ts`. Differs from Page Create in three places:
|
|
5
|
+
*
|
|
6
|
+
* 1. Loader lookup: `site.fragments` (not `site.pages`)
|
|
7
|
+
* 2. No `content` field on the manifest (Fragments don't ship
|
|
8
|
+
* initial content; templates supply defaults)
|
|
9
|
+
* 3. Cache invalidation hits both `fragments:` AND `pages:` because
|
|
10
|
+
* Fragment References compose into Page summaries (same diff as
|
|
11
|
+
* `saveFragment` per Q3 lock)
|
|
12
|
+
*
|
|
13
|
+
* Decision tree is the same as `createPage`:
|
|
14
|
+
* - Live name in use → `LIVE_CONFLICT`
|
|
15
|
+
* - Archived name + no flag → `ARCHIVED_CONFLICT` with details
|
|
16
|
+
* - Archived name + mode → `resolveArchivedNameConflict`
|
|
17
|
+
* - Otherwise → fresh create
|
|
18
|
+
*/
|
|
19
|
+
import { type ArchivedNameConflictResult } from '../admin-api/archived-name-conflict.js';
|
|
20
|
+
import type { SourceContext } from '../admin-api/source-context.js';
|
|
21
|
+
import type { SaveAuditRecorder, SavePrincipal } from '../manifest-save.js';
|
|
22
|
+
/** Inputs to `createFragment`. Body is already Zod-validated by the route. */
|
|
23
|
+
export interface CreateFragmentInput {
|
|
24
|
+
/** Fragment name (folder name under `fragments/`). */
|
|
25
|
+
readonly name: string;
|
|
26
|
+
/** Template the new fragment uses. */
|
|
27
|
+
readonly template: string;
|
|
28
|
+
/** `?onConflict` query param when archived name in use. */
|
|
29
|
+
readonly onConflict?: string;
|
|
30
|
+
/** Source wiring + admin-api SourceContext. */
|
|
31
|
+
readonly source: SourceContext;
|
|
32
|
+
/** Authenticated principal driving this create. */
|
|
33
|
+
readonly principal: SavePrincipal;
|
|
34
|
+
/** Audit recorder bound to the request. */
|
|
35
|
+
readonly audit: SaveAuditRecorder;
|
|
36
|
+
}
|
|
37
|
+
export interface CreateFragmentOk {
|
|
38
|
+
readonly ok: true;
|
|
39
|
+
readonly name: string;
|
|
40
|
+
readonly resolution?: ArchivedNameConflictResult['kind'];
|
|
41
|
+
}
|
|
42
|
+
export interface CreateFragmentLiveConflict {
|
|
43
|
+
readonly ok: false;
|
|
44
|
+
readonly code: 'LIVE_CONFLICT';
|
|
45
|
+
readonly name: string;
|
|
46
|
+
}
|
|
47
|
+
export interface CreateFragmentArchivedConflict {
|
|
48
|
+
readonly ok: false;
|
|
49
|
+
readonly code: 'ARCHIVED_CONFLICT';
|
|
50
|
+
readonly archive: {
|
|
51
|
+
readonly kind: 'fragment';
|
|
52
|
+
readonly name: string;
|
|
53
|
+
readonly archivedAt?: string;
|
|
54
|
+
readonly archivedBy?: string;
|
|
55
|
+
readonly aliasOf?: string;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export interface CreateFragmentInvalidMode {
|
|
59
|
+
readonly ok: false;
|
|
60
|
+
readonly code: 'INVALID_CONFLICT_MODE';
|
|
61
|
+
readonly mode: string;
|
|
62
|
+
}
|
|
63
|
+
export type CreateFragmentResult = CreateFragmentOk | CreateFragmentLiveConflict | CreateFragmentArchivedConflict | CreateFragmentInvalidMode;
|
|
64
|
+
/**
|
|
65
|
+
* Create a Fragment. Wraps the conflict-resolution decision tree +
|
|
66
|
+
* the fresh-create write path. Routes project the typed
|
|
67
|
+
* `CreateFragmentResult` to HTTP (200 / 400 / 409).
|
|
68
|
+
*/
|
|
69
|
+
export declare function createFragment(input: CreateFragmentInput): Promise<CreateFragmentResult>;
|
|
70
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/fragments/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAKnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAE3E,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IACjC,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAA;CACzD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;QAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;QAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAC1B,CAAA;CACF;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAA;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,MAAM,oBAAoB,GAC5B,gBAAgB,GAChB,0BAA0B,GAC1B,8BAA8B,GAC9B,yBAAyB,CAAA;AAE7B;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAsE9F"}
|