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,93 @@
|
|
|
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 { join } from 'node:path';
|
|
20
|
+
import { resolveArchivedNameConflict, } from '../admin-api/archived-name-conflict.js';
|
|
21
|
+
import { loadSiteFromSource } from '../admin-api/source-context.js';
|
|
22
|
+
import { rebuildAssetRefs } from '../assets/asset-deps.js';
|
|
23
|
+
import { rebuildFragmentDeps } from '../fragment-deps.js';
|
|
24
|
+
/**
|
|
25
|
+
* Create a Fragment. Wraps the conflict-resolution decision tree +
|
|
26
|
+
* the fresh-create write path. Routes project the typed
|
|
27
|
+
* `CreateFragmentResult` to HTTP (200 / 400 / 409).
|
|
28
|
+
*/
|
|
29
|
+
export async function createFragment(input) {
|
|
30
|
+
const { source, name, template, onConflict, principal, audit } = input;
|
|
31
|
+
const { storage } = source;
|
|
32
|
+
const fragDir = source.contentRoot.path('fragments', name);
|
|
33
|
+
const manifestPath = join(fragDir, 'fragment.json');
|
|
34
|
+
if (await storage.exists(manifestPath)) {
|
|
35
|
+
const site = await loadSiteFromSource(source);
|
|
36
|
+
const existing = site.fragments.get(name);
|
|
37
|
+
const isArchived = existing?.archived === true;
|
|
38
|
+
if (!isArchived) {
|
|
39
|
+
return { ok: false, code: 'LIVE_CONFLICT', name };
|
|
40
|
+
}
|
|
41
|
+
if (!onConflict) {
|
|
42
|
+
return {
|
|
43
|
+
ok: false,
|
|
44
|
+
code: 'ARCHIVED_CONFLICT',
|
|
45
|
+
archive: {
|
|
46
|
+
kind: 'fragment',
|
|
47
|
+
name,
|
|
48
|
+
...(existing?.archivedAt ? { archivedAt: existing.archivedAt } : {}),
|
|
49
|
+
...(existing?.archivedBy ? { archivedBy: existing.archivedBy } : {}),
|
|
50
|
+
...(existing?.aliasOf ? { aliasOf: existing.aliasOf } : {}),
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const result = await resolveArchivedNameConflict({
|
|
55
|
+
source,
|
|
56
|
+
kind: 'fragment',
|
|
57
|
+
name,
|
|
58
|
+
existing: existing,
|
|
59
|
+
mode: onConflict,
|
|
60
|
+
newTemplate: template,
|
|
61
|
+
actorId: principal.id,
|
|
62
|
+
});
|
|
63
|
+
if (result.kind === 'invalid-mode') {
|
|
64
|
+
return { ok: false, code: 'INVALID_CONFLICT_MODE', mode: onConflict };
|
|
65
|
+
}
|
|
66
|
+
const action = result.kind === 'restored' ? 'unarchive' : result.kind === 'replaced' ? 'archive' : 'rename';
|
|
67
|
+
await audit.record({
|
|
68
|
+
// Same cast posture as `pages/create.ts`: the resolver's audit
|
|
69
|
+
// events use the soft-delete vocabulary; the recorder type is
|
|
70
|
+
// narrow to the save-flow values.
|
|
71
|
+
action: action,
|
|
72
|
+
outcome: 'success',
|
|
73
|
+
scope: { kind: 'fragment', name },
|
|
74
|
+
metadata: { onConflict },
|
|
75
|
+
});
|
|
76
|
+
await Promise.all([source.cache.invalidatePrefix('fragments:'), source.cache.invalidatePrefix('pages:')]);
|
|
77
|
+
return { ok: true, name, resolution: result.kind };
|
|
78
|
+
}
|
|
79
|
+
// Fresh create — no existing manifest.
|
|
80
|
+
await storage.mkdir(fragDir);
|
|
81
|
+
const manifest = { template, components: [] };
|
|
82
|
+
await storage.writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`);
|
|
83
|
+
const item = { source: 'fragment', name };
|
|
84
|
+
await Promise.all([
|
|
85
|
+
rebuildAssetRefs(source.contentRoot, item, null, manifest),
|
|
86
|
+
rebuildFragmentDeps(source.contentRoot, item, null, manifest),
|
|
87
|
+
]);
|
|
88
|
+
// Fragment writes invalidate both summaries — page summaries reflect
|
|
89
|
+
// resolvable fragment refs.
|
|
90
|
+
await Promise.all([source.cache.invalidatePrefix('fragments:'), source.cache.invalidatePrefix('pages:')]);
|
|
91
|
+
return { ok: true, name };
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/fragments/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fragment Publish — kind-specific wrapper around `publishItemCore`.
|
|
3
|
+
*
|
|
4
|
+
* Peer of `pages/publish.ts`. Differs from Page Publish in two places:
|
|
5
|
+
*
|
|
6
|
+
* 1. Mode resolution simpler: fragments have ONE rendering mode
|
|
7
|
+
* (`fragment-rendered`) regardless of target type. Archive
|
|
8
|
+
* short-circuit applies; otherwise always rendered.
|
|
9
|
+
* 2. No page-cache flow-through (fragments don't carry pub-state
|
|
10
|
+
* sidecars; spine handles).
|
|
11
|
+
*
|
|
12
|
+
* Everything downstream is the spine.
|
|
13
|
+
*/
|
|
14
|
+
import { type PublishItemResult, type PublishRenderMode, type PublishTarget } from '../publish-item.js';
|
|
15
|
+
import type { ContentRoot } from '../content-root.js';
|
|
16
|
+
import type { Site } from '../site-loader.js';
|
|
17
|
+
/** Inputs to `publishFragment`. Same shape as `PublishPageInput`. */
|
|
18
|
+
export interface PublishFragmentInput {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly locale?: string;
|
|
21
|
+
readonly site: Site;
|
|
22
|
+
readonly sourceRoot: ContentRoot;
|
|
23
|
+
readonly target: PublishTarget;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolve the render mode for a fragment on a target. Pure dispatch
|
|
27
|
+
* fn. Always either 'archive-marker' or 'fragment-rendered'.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveFragmentRenderMode(fragment: {
|
|
30
|
+
archived?: boolean;
|
|
31
|
+
}): PublishRenderMode;
|
|
32
|
+
/**
|
|
33
|
+
* Publish a fragment to a target. Wraps `publishItemCore` with the
|
|
34
|
+
* fragment-specific mode resolution.
|
|
35
|
+
*/
|
|
36
|
+
export declare function publishFragment(input: PublishFragmentInput): Promise<PublishItemResult>;
|
|
37
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/fragments/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAmB,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACxH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAE7C,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAC/B;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,iBAAiB,CAG7F;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsB7F"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fragment Publish — kind-specific wrapper around `publishItemCore`.
|
|
3
|
+
*
|
|
4
|
+
* Peer of `pages/publish.ts`. Differs from Page Publish in two places:
|
|
5
|
+
*
|
|
6
|
+
* 1. Mode resolution simpler: fragments have ONE rendering mode
|
|
7
|
+
* (`fragment-rendered`) regardless of target type. Archive
|
|
8
|
+
* short-circuit applies; otherwise always rendered.
|
|
9
|
+
* 2. No page-cache flow-through (fragments don't carry pub-state
|
|
10
|
+
* sidecars; spine handles).
|
|
11
|
+
*
|
|
12
|
+
* Everything downstream is the spine.
|
|
13
|
+
*/
|
|
14
|
+
import { isArchived } from '../archive-helpers.js';
|
|
15
|
+
import { publishItemCore } from '../publish-item.js';
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the render mode for a fragment on a target. Pure dispatch
|
|
18
|
+
* fn. Always either 'archive-marker' or 'fragment-rendered'.
|
|
19
|
+
*/
|
|
20
|
+
export function resolveFragmentRenderMode(fragment) {
|
|
21
|
+
if (isArchived(fragment))
|
|
22
|
+
return 'archive-marker';
|
|
23
|
+
return 'fragment-rendered';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Publish a fragment to a target. Wraps `publishItemCore` with the
|
|
27
|
+
* fragment-specific mode resolution.
|
|
28
|
+
*/
|
|
29
|
+
export async function publishFragment(input) {
|
|
30
|
+
const fragment = input.site.fragments.get(input.name);
|
|
31
|
+
if (!fragment) {
|
|
32
|
+
return {
|
|
33
|
+
kind: 'fragment',
|
|
34
|
+
name: input.name,
|
|
35
|
+
locale: input.locale,
|
|
36
|
+
ok: false,
|
|
37
|
+
code: 'NOT_FOUND',
|
|
38
|
+
reason: `Fragment "${input.name}" not found in source`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const mode = resolveFragmentRenderMode(fragment);
|
|
42
|
+
return publishItemCore({
|
|
43
|
+
kind: 'fragment',
|
|
44
|
+
name: input.name,
|
|
45
|
+
locale: input.locale,
|
|
46
|
+
mode,
|
|
47
|
+
site: input.site,
|
|
48
|
+
sourceRoot: input.sourceRoot,
|
|
49
|
+
target: input.target,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/fragments/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAsE,MAAM,oBAAoB,CAAA;AAaxH;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAgC;IACxE,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,gBAAgB,CAAA;IACjD,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAA2B;IAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,aAAa,KAAK,CAAC,IAAI,uBAAuB;SACvD,CAAA;IACH,CAAC;IACD,MAAM,IAAI,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAChD,OAAO,eAAe,CAAC;QACrB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI;QACJ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fragment Save — kind-specific wrapper around `saveManifestCore`.
|
|
3
|
+
*
|
|
4
|
+
* Peer of `pages/save.ts`. Differs from Page Save in five places (per
|
|
5
|
+
* Q3 lock — the 5 page-vs-fragment diffs):
|
|
6
|
+
*
|
|
7
|
+
* 1. Loader lookup: `site.fragments` + `site.fragmentLocales` (not
|
|
8
|
+
* `site.pages` / `site.pageLocales`)
|
|
9
|
+
* 2. Filename: `fragment.json` / `fragment.{locale}.json`
|
|
10
|
+
* 3. No `route` field (Fragments aren't routable) → `etagExtras` is
|
|
11
|
+
* empty; manifest assembly omits route preservation
|
|
12
|
+
* 4. No `metadata` field carry-through
|
|
13
|
+
* 5. Cache invalidation hits both `fragments:` AND `pages:` because
|
|
14
|
+
* Fragment References compose into Page summaries (a Fragment
|
|
15
|
+
* edit can change the rendered Page output)
|
|
16
|
+
*
|
|
17
|
+
* Plus one scanner difference: `RescanCause` is `{ kind: 'fragment',
|
|
18
|
+
* name }` to walk transitive dependents via the Usage Sidecar
|
|
19
|
+
* primitive `findDependentsFromSidecars` — Page Saves use
|
|
20
|
+
* `{ kind: 'manifest', item }` to invalidate just the page.
|
|
21
|
+
*
|
|
22
|
+
* Everything downstream — etag check, validators, beforeSave hooks,
|
|
23
|
+
* history, write, sidecars, audit, afterSave hooks — is the spine.
|
|
24
|
+
*/
|
|
25
|
+
import { type SaveAuditRecorder, type SavePrincipal, type SaveResult, type SaveSourceWiring } from '../manifest-save.js';
|
|
26
|
+
import type { FragmentManifest } from '../types.js';
|
|
27
|
+
import type { Site } from '../site-loader.js';
|
|
28
|
+
import type { ValidatorRegistry } from '../validation/registry.js';
|
|
29
|
+
import type { ValidationScanner } from '../validation/scanner.js';
|
|
30
|
+
import type { HookFiringEmitter, HookRegistry } from '../hooks/index.js';
|
|
31
|
+
/**
|
|
32
|
+
* Inputs to `saveFragment`. Same shape as `SavePageInput` minus the
|
|
33
|
+
* route field (Fragments aren't routable). Routes destructure their
|
|
34
|
+
* request and pass the parts the pipeline needs.
|
|
35
|
+
*/
|
|
36
|
+
export interface SaveFragmentInput {
|
|
37
|
+
/** Fragment name (folder name under `fragments/`). */
|
|
38
|
+
readonly name: string;
|
|
39
|
+
/** BCP-47 locale when saving a Locale Variant; undefined for default. */
|
|
40
|
+
readonly locale?: string;
|
|
41
|
+
/** Incoming manifest body (template/content/components). */
|
|
42
|
+
readonly body: Partial<FragmentManifest> & Record<string, unknown>;
|
|
43
|
+
/** Optional save-etag for concurrency check. */
|
|
44
|
+
readonly ifMatch?: string;
|
|
45
|
+
/** Loaded site (caller does `loadSiteFromSource(source)` once). */
|
|
46
|
+
readonly site: Site;
|
|
47
|
+
/** Source wiring (cache, history, storage, contentRoot, manifest, targetName). */
|
|
48
|
+
readonly source: SaveSourceWiring;
|
|
49
|
+
/** Authenticated principal driving this save. */
|
|
50
|
+
readonly principal: SavePrincipal;
|
|
51
|
+
/** Audit recorder bound to the request. */
|
|
52
|
+
readonly audit: SaveAuditRecorder;
|
|
53
|
+
/** Validator registry built once at admin boot. */
|
|
54
|
+
readonly validators: ValidatorRegistry;
|
|
55
|
+
/** Hook registry; absent when no hooks contributed. */
|
|
56
|
+
readonly hooks?: HookRegistry;
|
|
57
|
+
/** Audit-firing emitter for hook dispatch. */
|
|
58
|
+
readonly hookAuditEmit?: HookFiringEmitter;
|
|
59
|
+
/** Background scanner; absent when scanner not enabled. */
|
|
60
|
+
readonly scanner?: ValidationScanner;
|
|
61
|
+
/** Per-request correlation id; fresh UUID when absent. */
|
|
62
|
+
readonly requestId?: string;
|
|
63
|
+
}
|
|
64
|
+
/** Fragment-name-not-found — routes project to 404. */
|
|
65
|
+
export declare class FragmentNotFoundError extends Error {
|
|
66
|
+
readonly name: string;
|
|
67
|
+
constructor(name: string);
|
|
68
|
+
}
|
|
69
|
+
/** Invalid locale code per `isValidLocale` — routes project to 400. */
|
|
70
|
+
export declare class InvalidLocaleError extends Error {
|
|
71
|
+
readonly raw: string;
|
|
72
|
+
constructor(raw: string);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Save a Fragment Manifest. Wraps `saveManifestCore` with the
|
|
76
|
+
* Fragment-specific resolution + assembly. Throws
|
|
77
|
+
* `FragmentNotFoundError` / `InvalidLocaleError` for route-level
|
|
78
|
+
* preconditions; returns `SaveResult` for save outcomes.
|
|
79
|
+
*/
|
|
80
|
+
export declare function saveFragment(input: SaveFragmentInput): Promise<SaveResult>;
|
|
81
|
+
//# sourceMappingURL=save.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../src/fragments/save.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAExE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClE,gDAAgD;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,iDAAiD;IACjD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IACjC,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAA;IACtC,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAA;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;IAC1C,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,uDAAuD;AACvD,qBAAa,qBAAsB,SAAQ,KAAK;aAClB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIzC;AAED,uEAAuE;AACvE,qBAAa,kBAAmB,SAAQ,KAAK;aACf,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CAIxC;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDhF"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fragment Save — kind-specific wrapper around `saveManifestCore`.
|
|
3
|
+
*
|
|
4
|
+
* Peer of `pages/save.ts`. Differs from Page Save in five places (per
|
|
5
|
+
* Q3 lock — the 5 page-vs-fragment diffs):
|
|
6
|
+
*
|
|
7
|
+
* 1. Loader lookup: `site.fragments` + `site.fragmentLocales` (not
|
|
8
|
+
* `site.pages` / `site.pageLocales`)
|
|
9
|
+
* 2. Filename: `fragment.json` / `fragment.{locale}.json`
|
|
10
|
+
* 3. No `route` field (Fragments aren't routable) → `etagExtras` is
|
|
11
|
+
* empty; manifest assembly omits route preservation
|
|
12
|
+
* 4. No `metadata` field carry-through
|
|
13
|
+
* 5. Cache invalidation hits both `fragments:` AND `pages:` because
|
|
14
|
+
* Fragment References compose into Page summaries (a Fragment
|
|
15
|
+
* edit can change the rendered Page output)
|
|
16
|
+
*
|
|
17
|
+
* Plus one scanner difference: `RescanCause` is `{ kind: 'fragment',
|
|
18
|
+
* name }` to walk transitive dependents via the Usage Sidecar
|
|
19
|
+
* primitive `findDependentsFromSidecars` — Page Saves use
|
|
20
|
+
* `{ kind: 'manifest', item }` to invalidate just the page.
|
|
21
|
+
*
|
|
22
|
+
* Everything downstream — etag check, validators, beforeSave hooks,
|
|
23
|
+
* history, write, sidecars, audit, afterSave hooks — is the spine.
|
|
24
|
+
*/
|
|
25
|
+
import { join } from 'node:path';
|
|
26
|
+
import { ensureComponentIds } from '../component-ids.js';
|
|
27
|
+
import { isValidLocale } from '../locale.js';
|
|
28
|
+
import { saveManifestCore, } from '../manifest-save.js';
|
|
29
|
+
/** Fragment-name-not-found — routes project to 404. */
|
|
30
|
+
export class FragmentNotFoundError extends Error {
|
|
31
|
+
name;
|
|
32
|
+
constructor(name) {
|
|
33
|
+
super(`Fragment "${name}" not found`);
|
|
34
|
+
this.name = name;
|
|
35
|
+
this.name = 'FragmentNotFoundError';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Invalid locale code per `isValidLocale` — routes project to 400. */
|
|
39
|
+
export class InvalidLocaleError extends Error {
|
|
40
|
+
raw;
|
|
41
|
+
constructor(raw) {
|
|
42
|
+
super(`Invalid locale code: "${raw}"`);
|
|
43
|
+
this.raw = raw;
|
|
44
|
+
this.name = 'InvalidLocaleError';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Save a Fragment Manifest. Wraps `saveManifestCore` with the
|
|
49
|
+
* Fragment-specific resolution + assembly. Throws
|
|
50
|
+
* `FragmentNotFoundError` / `InvalidLocaleError` for route-level
|
|
51
|
+
* preconditions; returns `SaveResult` for save outcomes.
|
|
52
|
+
*/
|
|
53
|
+
export async function saveFragment(input) {
|
|
54
|
+
let locale;
|
|
55
|
+
if (input.locale !== undefined) {
|
|
56
|
+
if (!isValidLocale(input.locale))
|
|
57
|
+
throw new InvalidLocaleError(input.locale);
|
|
58
|
+
locale = input.locale.toLowerCase();
|
|
59
|
+
}
|
|
60
|
+
const defaultFragment = input.site.fragments.get(input.name);
|
|
61
|
+
if (!defaultFragment)
|
|
62
|
+
throw new FragmentNotFoundError(input.name);
|
|
63
|
+
const localeVariant = locale ? input.site.fragmentLocales.get(input.name)?.locales.get(locale) : undefined;
|
|
64
|
+
const fragment = localeVariant ?? defaultFragment;
|
|
65
|
+
const components = ensureComponentIds(input.body.components ?? fragment.components);
|
|
66
|
+
// Fragments don't carry route or metadata. Plain three-field manifest.
|
|
67
|
+
const manifest = {
|
|
68
|
+
template: input.body.template ?? fragment.template,
|
|
69
|
+
content: input.body.content ?? fragment.content,
|
|
70
|
+
components,
|
|
71
|
+
};
|
|
72
|
+
const filename = locale ? `fragment.${locale}.json` : 'fragment.json';
|
|
73
|
+
const manifestPath = join(defaultFragment.dir, filename);
|
|
74
|
+
return saveManifestCore({
|
|
75
|
+
kind: 'fragment',
|
|
76
|
+
name: input.name,
|
|
77
|
+
locale,
|
|
78
|
+
manifest,
|
|
79
|
+
before: fragment,
|
|
80
|
+
manifestPath,
|
|
81
|
+
ifMatch: input.ifMatch,
|
|
82
|
+
site: input.site,
|
|
83
|
+
// Fragment Saves invalidate `pages:` too because Fragment
|
|
84
|
+
// References compose into Page summaries (Page summaries reflect
|
|
85
|
+
// resolved fragment content). Order matches what fragments.ts
|
|
86
|
+
// PUT did before the cutover.
|
|
87
|
+
cacheInvalidatePrefixes: ['fragments:', 'pages:'],
|
|
88
|
+
// No route or metadata to fold in — etag is pure manifest.
|
|
89
|
+
etagExtras: {},
|
|
90
|
+
source: input.source,
|
|
91
|
+
audit: input.audit,
|
|
92
|
+
principal: input.principal,
|
|
93
|
+
hookAuditEmit: input.hookAuditEmit,
|
|
94
|
+
validators: input.validators,
|
|
95
|
+
hooks: input.hooks,
|
|
96
|
+
scanner: input.scanner,
|
|
97
|
+
// Scanner cause: Fragment Saves walk transitive dependents via
|
|
98
|
+
// findDependentsFromSidecars (a fragment edit can affect every
|
|
99
|
+
// page that references @{name}). The 'fragment' RescanCause
|
|
100
|
+
// variant tells the scanner to expand the dependency set.
|
|
101
|
+
scannerCause: { kind: 'fragment', name: input.name },
|
|
102
|
+
requestId: input.requestId,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=save.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/fragments/save.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* right thing:
|
|
9
9
|
*
|
|
10
10
|
* - First revision on a target: walks the content tree once to
|
|
11
|
-
* snapshot every manifest (page.json, fragment.json
|
|
11
|
+
* snapshot every manifest (page.json, fragment.json).
|
|
12
12
|
* - Subsequent revisions: reads the previous snapshot and overlays
|
|
13
13
|
* the delta (changed items the caller passes in). `readBlob` for
|
|
14
14
|
* each carried-over path gives us the content for the new
|
|
@@ -28,8 +28,8 @@ export interface WrittenItem {
|
|
|
28
28
|
path: string;
|
|
29
29
|
/**
|
|
30
30
|
* Current content as stored. `string` for text items (manifests,
|
|
31
|
-
*
|
|
32
|
-
* `null` marks a deletion.
|
|
31
|
+
* site config), `Uint8Array` for binary items (asset bytes,
|
|
32
|
+
* variants). `null` marks a deletion.
|
|
33
33
|
*/
|
|
34
34
|
content: BlobContent | null;
|
|
35
35
|
}
|
|
@@ -53,7 +53,7 @@ export interface ScanLocation {
|
|
|
53
53
|
export declare const DEFAULT_SCAN_LOCATIONS: readonly ScanLocation[];
|
|
54
54
|
/**
|
|
55
55
|
* Flat files at the content root to capture in the baseline snapshot
|
|
56
|
-
* (no per-subdirectory recursion).
|
|
56
|
+
* (no per-subdirectory recursion).
|
|
57
57
|
*/
|
|
58
58
|
export declare const DEFAULT_SCAN_ROOT_FILES: readonly string[];
|
|
59
59
|
export interface RecordWriteOptions {
|
|
@@ -82,7 +82,7 @@ export interface RecordWriteOptions {
|
|
|
82
82
|
scanLocations?: readonly ScanLocation[];
|
|
83
83
|
/**
|
|
84
84
|
* Override the flat files captured from the content root. Defaults
|
|
85
|
-
* to `DEFAULT_SCAN_ROOT_FILES` (`site.
|
|
85
|
+
* to `DEFAULT_SCAN_ROOT_FILES` (`site.config.ts`). Missing files are
|
|
86
86
|
* silently skipped so empty publish-targets still record cleanly.
|
|
87
87
|
*/
|
|
88
88
|
scanRootFiles?: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-recorder.d.ts","sourceRoot":"","sources":["../src/history-recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAiB,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,2DAA2D;AAC3D,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAA;IACX,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,YAAY,EAGzD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"history-recorder.d.ts","sourceRoot":"","sources":["../src/history-recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAiB,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,2DAA2D;AAC3D,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAA;IACX,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,YAAY,EAGzD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAAuB,CAAA;AAE5E,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,OAAO,EAAE,eAAe,CAAA;IACxB,mEAAmE;IACnE,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,6DAA6D;IAC7D,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;IACvC;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,4CAmCzD"}
|
package/dist/history-recorder.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* right thing:
|
|
9
9
|
*
|
|
10
10
|
* - First revision on a target: walks the content tree once to
|
|
11
|
-
* snapshot every manifest (page.json, fragment.json
|
|
11
|
+
* snapshot every manifest (page.json, fragment.json).
|
|
12
12
|
* - Subsequent revisions: reads the previous snapshot and overlays
|
|
13
13
|
* the delta (changed items the caller passes in). `readBlob` for
|
|
14
14
|
* each carried-over path gives us the content for the new
|
|
@@ -33,9 +33,9 @@ export const DEFAULT_SCAN_LOCATIONS = [
|
|
|
33
33
|
];
|
|
34
34
|
/**
|
|
35
35
|
* Flat files at the content root to capture in the baseline snapshot
|
|
36
|
-
* (no per-subdirectory recursion).
|
|
36
|
+
* (no per-subdirectory recursion).
|
|
37
37
|
*/
|
|
38
|
-
export const DEFAULT_SCAN_ROOT_FILES = ['site.
|
|
38
|
+
export const DEFAULT_SCAN_ROOT_FILES = ['site.config.ts'];
|
|
39
39
|
/**
|
|
40
40
|
* Build + record a revision for the given write. Reads the previous
|
|
41
41
|
* snapshot (if any), overlays the delta, and calls
|
|
@@ -87,7 +87,7 @@ export async function recordWrite(opts) {
|
|
|
87
87
|
* Materialize the previous revision's full content snapshot as
|
|
88
88
|
* `path → content`. If there is no previous revision, fall back to a
|
|
89
89
|
* one-time scan of the target's content tree (pages, fragments,
|
|
90
|
-
*
|
|
90
|
+
* root files). That makes the first revision a proper baseline even
|
|
91
91
|
* when history was turned on after content already existed.
|
|
92
92
|
*/
|
|
93
93
|
async function loadPreviousSnapshot(history, contentRoot, scanLocations, scanRootFiles) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-recorder.js","sourceRoot":"","sources":["../src/history-recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AA6BhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA4B;IAC7D,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;IACvC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE;CAChD,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"history-recorder.js","sourceRoot":"","sources":["../src/history-recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AA6BhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA4B;IAC7D,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;IACvC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE;CAChD,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB,CAAC,gBAAgB,CAAC,CAAA;AAkC5E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAwB;IACxD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,sBAAsB,CAAA;IAClE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,uBAAuB,CAAA;IAEnE,oEAAoE;IACpE,oEAAoE;IACpE,gEAAgE;IAChE,kEAAkE;IAClE,mEAAmE;IACnE,uBAAuB;IACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;QACtF,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;YAChC,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,kBAAkB;YAC3B,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;IAC1G,MAAM,SAAS,GAAG,IAAI,GAAG,CAAsB,SAAS,CAAC,CAAA;IACzD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI;YAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;;YAC7C,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;IACzC,CAAC;IACD,MAAM,KAAK,GAAkB;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,KAAK,EAAE,SAAS;KACjB,CAAA;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,oBAAoB,CACjC,OAAwB,EACxB,WAAwB,EACxB,aAAsC,EACtC,aAAgC;IAEhC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAC7C,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAA;QAC5C,8DAA8D;QAC9D,mEAAmE;QACnE,gEAAgE;QAChE,mEAAmE;QACnE,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACjD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA;QAC7D,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,eAAe,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;AACnE,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,eAAe,CAC5B,IAAiB,EACjB,aAAsC,EACtC,aAAgC;IAEhC,sEAAsE;IACtE,mEAAmE;IACnE,oEAAoE;IACpE,wDAAwD;IACxD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC5C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAExB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC1B,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACpF,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,iBAAiB,CAC9B,OAAwB,EACxB,MAAc,EACd,SAAiB,EACjB,YAAoB,EACpB,KAA+B;IAE/B,IAAI,OAAwD,CAAA;IAC5D,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAM,CAAC,iEAAiE;IAC1E,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,WAAW;YAAE,SAAQ;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QAC5C,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,YAAY,EAAE,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;QAC9E,CAAC;QACD,2DAA2D;QAC3D,MAAM,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;IACpE,CAAC;AACH,CAAC"}
|
package/dist/history-restorer.js
CHANGED
|
@@ -78,14 +78,14 @@ export async function restoreRevision(opts) {
|
|
|
78
78
|
const { rebuildDepIndex } = await import('./publish-rendered.js');
|
|
79
79
|
const { ASSET_REFS } = await import('./assets/asset-deps.js');
|
|
80
80
|
const { FRAGMENT_DEPS } = await import('./fragment-deps.js');
|
|
81
|
-
const site = await loadSite({ contentRoot });
|
|
81
|
+
const site = await loadSite({ contentRoot, manifest: { name: '(history-restore)' } });
|
|
82
82
|
await Promise.all([
|
|
83
83
|
rebuildDepIndex(ASSET_REFS, site, contentRoot.storage, contentRoot.rootPath),
|
|
84
84
|
rebuildDepIndex(FRAGMENT_DEPS, site, contentRoot.storage, contentRoot.rootPath),
|
|
85
85
|
]);
|
|
86
86
|
}
|
|
87
87
|
catch (err) {
|
|
88
|
-
// Non-fatal: if site
|
|
88
|
+
// Non-fatal: if site config is missing or load fails, dep indices
|
|
89
89
|
// might drift. Reindex CLI recovers.
|
|
90
90
|
// eslint-disable-next-line no-console
|
|
91
91
|
console.warn(`dep-sidecar rebuild after restore failed: ${err.message}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-restorer.js","sourceRoot":"","sources":["../src/history-restorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAkBH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAA4B;IAChE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IACjD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IACrD,+DAA+D;IAC/D,oEAAoE;IACpE,sCAAsC;IACtC,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAEvD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAClF,oEAAoE;IACpE,uEAAuE;IACvE,mEAAmE;IACnE,oEAAoE;IACpE,iEAAiE;IACjE,iCAAiC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IAExG,sEAAsE;IACtE,kEAAkE;IAClE,+DAA+D;IAC/D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;QACrD,IAAI,MAAM;YAAE,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACnD,8DAA8D;QAC9D,qDAAqD;QACrD,6DAA6D;QAC7D,uDAAuD;QACvD,MAAM,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAClD,CAAC;IAED,mEAAmE;IACnE,gEAAgE;IAChE,mEAAmE;IACnE,sEAAsE;IACtE,0DAA0D;IAC1D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;YACrD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAA;YACjE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAA;YAC7D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;YAC5D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"history-restorer.js","sourceRoot":"","sources":["../src/history-restorer.ts"],"names":[],"mappings":"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"}
|
package/dist/history.d.ts
CHANGED
|
@@ -111,7 +111,7 @@ export interface HistoryProvider {
|
|
|
111
111
|
readRevision(id: string): Promise<RevisionManifest>;
|
|
112
112
|
/**
|
|
113
113
|
* Read a content blob by hash. Returns raw bytes — callers that
|
|
114
|
-
* expect text (page/fragment manifests, site.
|
|
114
|
+
* expect text (page/fragment manifests, site.config.ts) decode UTF-8 on
|
|
115
115
|
* receipt. Callers that expect binary (asset bytes, variants) use
|
|
116
116
|
* the bytes as-is.
|
|
117
117
|
*
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook firing audit emitter — the seam between the hooks
|
|
3
|
+
* dispatcher and the audit recorder.
|
|
4
|
+
*
|
|
5
|
+
* Per design-hooks.md "Audit events" + design-audit.md's locked
|
|
6
|
+
* `action: 'hook-fired'` + `outcome: 'hook-cancelled' | 'timeout'`
|
|
7
|
+
* extensions:
|
|
8
|
+
*
|
|
9
|
+
* - Every hook firing emits an audit event with hook name +
|
|
10
|
+
* priority + phase + durationMs.
|
|
11
|
+
* - `outcome` reflects the hook firing's result:
|
|
12
|
+
* 'success' — completed within timeout
|
|
13
|
+
* 'hook-cancelled' — `before*` threw (or non-cancellation
|
|
14
|
+
* error wrapped as HookCancellation)
|
|
15
|
+
* 'timeout' — per-handler timeout fired before
|
|
16
|
+
* resolve
|
|
17
|
+
* - One firing = one event; correlation across firings in the
|
|
18
|
+
* same operation is via shared `requestId` (audit + log).
|
|
19
|
+
*
|
|
20
|
+
* # Why a callback, not a direct audit dependency
|
|
21
|
+
*
|
|
22
|
+
* dispatch.ts must stay independent of audit-context wiring so
|
|
23
|
+
* the same code path runs in tests (no audit) and in production
|
|
24
|
+
* (full audit). The callback shape lets the caller decide
|
|
25
|
+
* whether/how to record. When the callback is undefined, dispatch
|
|
26
|
+
* is silent.
|
|
27
|
+
*
|
|
28
|
+
* # SOLID lenses
|
|
29
|
+
*
|
|
30
|
+
* - SRP: this module owns the emitter contract; doesn't construct
|
|
31
|
+
* audit providers, doesn't run hooks.
|
|
32
|
+
* - DIP: dispatch depends on the `HookFiringEmitter` callback;
|
|
33
|
+
* callers (admin-api wiring) supply an implementation that
|
|
34
|
+
* forwards to `c.var.audit.record(...)`.
|
|
35
|
+
*/
|
|
36
|
+
import type { HookContext, HookPhase, HookRegistration } from './types.js';
|
|
37
|
+
/**
|
|
38
|
+
* One audit-emittable hook firing event. Captured by the
|
|
39
|
+
* dispatcher and forwarded to the caller-supplied emitter.
|
|
40
|
+
*/
|
|
41
|
+
export interface HookFiringEvent {
|
|
42
|
+
/** Phase the hook fired in. */
|
|
43
|
+
phase: HookPhase;
|
|
44
|
+
/** Hook name (from registration meta or file basename). */
|
|
45
|
+
hookName: string;
|
|
46
|
+
/** Source identity ('site-local', plugin name, 'built-in'). */
|
|
47
|
+
source: string;
|
|
48
|
+
/** Priority at registration time. */
|
|
49
|
+
priority: number;
|
|
50
|
+
/**
|
|
51
|
+
* Outcome of the firing. `'success'` for handlers that resolved
|
|
52
|
+
* within the timeout window; `'hook-cancelled'` for `before*`
|
|
53
|
+
* handlers that threw; `'timeout'` for handlers that exceeded
|
|
54
|
+
* their per-handler timeout.
|
|
55
|
+
*/
|
|
56
|
+
outcome: 'success' | 'hook-cancelled' | 'timeout';
|
|
57
|
+
/** Wall-clock duration (ms) from invocation to resolve / throw. */
|
|
58
|
+
durationMs: number;
|
|
59
|
+
/** Triggering request's HookContext (carries actor, requestId, etc.). */
|
|
60
|
+
ctx: HookContext;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Caller-supplied audit emitter. Invoked synchronously per hook
|
|
64
|
+
* firing; consumer typically forwards to `c.var.audit.record(...)`.
|
|
65
|
+
*
|
|
66
|
+
* The emitter MUST NOT throw — failures isolate to the dispatcher
|
|
67
|
+
* via try/catch. Consumers wanting to surface emit failures use
|
|
68
|
+
* their own logging.
|
|
69
|
+
*/
|
|
70
|
+
export type HookFiringEmitter = (event: HookFiringEvent) => void | Promise<void>;
|
|
71
|
+
/** Helper for registrations — extracts the metadata the emitter needs. */
|
|
72
|
+
export declare function eventFromRegistration<P extends HookPhase>(reg: HookRegistration<P>, ctx: HookContext, outcome: HookFiringEvent['outcome'], durationMs: number): HookFiringEvent;
|
|
73
|
+
//# sourceMappingURL=audit-emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-emitter.d.ts","sourceRoot":"","sources":["../../src/hooks/audit-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE1E;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,KAAK,EAAE,SAAS,CAAA;IAChB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAA;IACd,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,OAAO,EAAE,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAAA;IACjD,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,GAAG,EAAE,WAAW,CAAA;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEhF,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,SAAS,EACvD,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACxB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,EACnC,UAAU,EAAE,MAAM,GACjB,eAAe,CAUjB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Helper for registrations — extracts the metadata the emitter needs. */
|
|
2
|
+
export function eventFromRegistration(reg, ctx, outcome, durationMs) {
|
|
3
|
+
return {
|
|
4
|
+
phase: reg.phase,
|
|
5
|
+
hookName: reg.name,
|
|
6
|
+
source: reg.source,
|
|
7
|
+
priority: reg.priority,
|
|
8
|
+
outcome,
|
|
9
|
+
durationMs,
|
|
10
|
+
ctx,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=audit-emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-emitter.js","sourceRoot":"","sources":["../../src/hooks/audit-emitter.ts"],"names":[],"mappings":"AAyEA,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB,CACnC,GAAwB,EACxB,GAAgB,EAChB,OAAmC,EACnC,UAAkB;IAElB,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,QAAQ,EAAE,GAAG,CAAC,IAAI;QAClB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,OAAO;QACP,UAAU;QACV,GAAG;KACJ,CAAA;AACH,CAAC"}
|