@prenta/core 0.118.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/CHANGELOG.md +2974 -0
- package/LICENSE +21 -0
- package/README.md +33 -0
- package/dist/a11y/index.d.ts +25 -0
- package/dist/a11y/index.d.ts.map +1 -0
- package/dist/a11y/index.js +91 -0
- package/dist/a11y/index.js.map +1 -0
- package/dist/actions.d.ts +130 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +1324 -0
- package/dist/actions.js.map +1 -0
- package/dist/ai/brand-voice-alignment.d.ts +17 -0
- package/dist/ai/brand-voice-alignment.d.ts.map +1 -0
- package/dist/ai/brand-voice-alignment.js +40 -0
- package/dist/ai/brand-voice-alignment.js.map +1 -0
- package/dist/ai/brand-voice-analyze.d.ts +71 -0
- package/dist/ai/brand-voice-analyze.d.ts.map +1 -0
- package/dist/ai/brand-voice-analyze.js +151 -0
- package/dist/ai/brand-voice-analyze.js.map +1 -0
- package/dist/ai/brand-voice-document.d.ts +56 -0
- package/dist/ai/brand-voice-document.d.ts.map +1 -0
- package/dist/ai/brand-voice-document.js +335 -0
- package/dist/ai/brand-voice-document.js.map +1 -0
- package/dist/ai/brand-voice-fix.d.ts +26 -0
- package/dist/ai/brand-voice-fix.d.ts.map +1 -0
- package/dist/ai/brand-voice-fix.js +97 -0
- package/dist/ai/brand-voice-fix.js.map +1 -0
- package/dist/ai/brand-voice-save.d.ts +11 -0
- package/dist/ai/brand-voice-save.d.ts.map +1 -0
- package/dist/ai/brand-voice-save.js +51 -0
- package/dist/ai/brand-voice-save.js.map +1 -0
- package/dist/ai/brand-voice-sources.d.ts +16 -0
- package/dist/ai/brand-voice-sources.d.ts.map +1 -0
- package/dist/ai/brand-voice-sources.js +106 -0
- package/dist/ai/brand-voice-sources.js.map +1 -0
- package/dist/ai/brand-voice-structured.d.ts +87 -0
- package/dist/ai/brand-voice-structured.d.ts.map +1 -0
- package/dist/ai/brand-voice-structured.js +438 -0
- package/dist/ai/brand-voice-structured.js.map +1 -0
- package/dist/ai/brand-voice.d.ts +40 -0
- package/dist/ai/brand-voice.d.ts.map +1 -0
- package/dist/ai/brand-voice.js +103 -0
- package/dist/ai/brand-voice.js.map +1 -0
- package/dist/ai/catalog.d.ts +35 -0
- package/dist/ai/catalog.d.ts.map +1 -0
- package/dist/ai/catalog.js +370 -0
- package/dist/ai/catalog.js.map +1 -0
- package/dist/ai/config-store.d.ts +55 -0
- package/dist/ai/config-store.d.ts.map +1 -0
- package/dist/ai/config-store.js +177 -0
- package/dist/ai/config-store.js.map +1 -0
- package/dist/ai/content-writing-generate.d.ts +19 -0
- package/dist/ai/content-writing-generate.d.ts.map +1 -0
- package/dist/ai/content-writing-generate.js +64 -0
- package/dist/ai/content-writing-generate.js.map +1 -0
- package/dist/ai/feature-defaults.d.ts +20 -0
- package/dist/ai/feature-defaults.d.ts.map +1 -0
- package/dist/ai/feature-defaults.js +104 -0
- package/dist/ai/feature-defaults.js.map +1 -0
- package/dist/ai/index.d.ts +24 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +24 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/models.d.ts +37 -0
- package/dist/ai/models.d.ts.map +1 -0
- package/dist/ai/models.js +126 -0
- package/dist/ai/models.js.map +1 -0
- package/dist/ai/providers/anthropic.d.ts +10 -0
- package/dist/ai/providers/anthropic.d.ts.map +1 -0
- package/dist/ai/providers/anthropic.js +63 -0
- package/dist/ai/providers/anthropic.js.map +1 -0
- package/dist/ai/providers/custom.d.ts +12 -0
- package/dist/ai/providers/custom.d.ts.map +1 -0
- package/dist/ai/providers/custom.js +76 -0
- package/dist/ai/providers/custom.js.map +1 -0
- package/dist/ai/providers/http.d.ts +66 -0
- package/dist/ai/providers/http.d.ts.map +1 -0
- package/dist/ai/providers/http.js +185 -0
- package/dist/ai/providers/http.js.map +1 -0
- package/dist/ai/providers/index.d.ts +18 -0
- package/dist/ai/providers/index.d.ts.map +1 -0
- package/dist/ai/providers/index.js +28 -0
- package/dist/ai/providers/index.js.map +1 -0
- package/dist/ai/providers/openai.d.ts +11 -0
- package/dist/ai/providers/openai.d.ts.map +1 -0
- package/dist/ai/providers/openai.js +44 -0
- package/dist/ai/providers/openai.js.map +1 -0
- package/dist/ai/providers/xai.d.ts +10 -0
- package/dist/ai/providers/xai.d.ts.map +1 -0
- package/dist/ai/providers/xai.js +38 -0
- package/dist/ai/providers/xai.js.map +1 -0
- package/dist/ai/resolve.d.ts +41 -0
- package/dist/ai/resolve.d.ts.map +1 -0
- package/dist/ai/resolve.js +143 -0
- package/dist/ai/resolve.js.map +1 -0
- package/dist/ai/runtime.d.ts +88 -0
- package/dist/ai/runtime.d.ts.map +1 -0
- package/dist/ai/runtime.js +192 -0
- package/dist/ai/runtime.js.map +1 -0
- package/dist/ai/sampling.d.ts +17 -0
- package/dist/ai/sampling.d.ts.map +1 -0
- package/dist/ai/sampling.js +51 -0
- package/dist/ai/sampling.js.map +1 -0
- package/dist/ai/types.d.ts +193 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +11 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/ai/usage.d.ts +18 -0
- package/dist/ai/usage.d.ts.map +1 -0
- package/dist/ai/usage.js +70 -0
- package/dist/ai/usage.js.map +1 -0
- package/dist/api/collection-introspection.d.ts +46 -0
- package/dist/api/collection-introspection.d.ts.map +1 -0
- package/dist/api/collection-introspection.js +82 -0
- package/dist/api/collection-introspection.js.map +1 -0
- package/dist/api/guarded-db.d.ts +14 -0
- package/dist/api/guarded-db.d.ts.map +1 -0
- package/dist/api/guarded-db.js +62 -0
- package/dist/api/guarded-db.js.map +1 -0
- package/dist/api/handler-factory.d.ts +7 -0
- package/dist/api/handler-factory.d.ts.map +1 -0
- package/dist/api/handler-factory.js +380 -0
- package/dist/api/handler-factory.js.map +1 -0
- package/dist/api/handlers.d.ts +8 -0
- package/dist/api/handlers.d.ts.map +1 -0
- package/dist/api/handlers.js +62 -0
- package/dist/api/handlers.js.map +1 -0
- package/dist/api/index.d.ts +8 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +8 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/openapi.d.ts +3 -0
- package/dist/api/openapi.d.ts.map +1 -0
- package/dist/api/openapi.js +539 -0
- package/dist/api/openapi.js.map +1 -0
- package/dist/api/route-helpers.d.ts +369 -0
- package/dist/api/route-helpers.d.ts.map +1 -0
- package/dist/api/route-helpers.js +1574 -0
- package/dist/api/route-helpers.js.map +1 -0
- package/dist/api/router.d.ts +21 -0
- package/dist/api/router.d.ts.map +1 -0
- package/dist/api/router.js +75 -0
- package/dist/api/router.js.map +1 -0
- package/dist/api/routes/ai-seo.d.ts +3 -0
- package/dist/api/routes/ai-seo.d.ts.map +1 -0
- package/dist/api/routes/ai-seo.js +482 -0
- package/dist/api/routes/ai-seo.js.map +1 -0
- package/dist/api/routes/ai-settings.d.ts +3 -0
- package/dist/api/routes/ai-settings.d.ts.map +1 -0
- package/dist/api/routes/ai-settings.js +1078 -0
- package/dist/api/routes/ai-settings.js.map +1 -0
- package/dist/api/routes/auth.d.ts +3 -0
- package/dist/api/routes/auth.d.ts.map +1 -0
- package/dist/api/routes/auth.js +877 -0
- package/dist/api/routes/auth.js.map +1 -0
- package/dist/api/routes/collab.d.ts +3 -0
- package/dist/api/routes/collab.d.ts.map +1 -0
- package/dist/api/routes/collab.js +426 -0
- package/dist/api/routes/collab.js.map +1 -0
- package/dist/api/routes/dashboard.d.ts +7 -0
- package/dist/api/routes/dashboard.d.ts.map +1 -0
- package/dist/api/routes/dashboard.js +540 -0
- package/dist/api/routes/dashboard.js.map +1 -0
- package/dist/api/routes/documents.d.ts +11 -0
- package/dist/api/routes/documents.d.ts.map +1 -0
- package/dist/api/routes/documents.js +340 -0
- package/dist/api/routes/documents.js.map +1 -0
- package/dist/api/routes/email-settings.d.ts +3 -0
- package/dist/api/routes/email-settings.d.ts.map +1 -0
- package/dist/api/routes/email-settings.js +248 -0
- package/dist/api/routes/email-settings.js.map +1 -0
- package/dist/api/routes/folders.d.ts +3 -0
- package/dist/api/routes/folders.d.ts.map +1 -0
- package/dist/api/routes/folders.js +195 -0
- package/dist/api/routes/folders.js.map +1 -0
- package/dist/api/routes/forms.d.ts +3 -0
- package/dist/api/routes/forms.d.ts.map +1 -0
- package/dist/api/routes/forms.js +776 -0
- package/dist/api/routes/forms.js.map +1 -0
- package/dist/api/routes/globals.d.ts +3 -0
- package/dist/api/routes/globals.d.ts.map +1 -0
- package/dist/api/routes/globals.js +157 -0
- package/dist/api/routes/globals.js.map +1 -0
- package/dist/api/routes/media.d.ts +3 -0
- package/dist/api/routes/media.d.ts.map +1 -0
- package/dist/api/routes/media.js +807 -0
- package/dist/api/routes/media.js.map +1 -0
- package/dist/api/routes/meta.d.ts +3 -0
- package/dist/api/routes/meta.d.ts.map +1 -0
- package/dist/api/routes/meta.js +97 -0
- package/dist/api/routes/meta.js.map +1 -0
- package/dist/api/routes/navigations.d.ts +7 -0
- package/dist/api/routes/navigations.d.ts.map +1 -0
- package/dist/api/routes/navigations.js +81 -0
- package/dist/api/routes/navigations.js.map +1 -0
- package/dist/api/routes/page-templates.d.ts +3 -0
- package/dist/api/routes/page-templates.d.ts.map +1 -0
- package/dist/api/routes/page-templates.js +265 -0
- package/dist/api/routes/page-templates.js.map +1 -0
- package/dist/api/routes/presence.d.ts +3 -0
- package/dist/api/routes/presence.d.ts.map +1 -0
- package/dist/api/routes/presence.js +35 -0
- package/dist/api/routes/presence.js.map +1 -0
- package/dist/api/routes/preview.d.ts +3 -0
- package/dist/api/routes/preview.d.ts.map +1 -0
- package/dist/api/routes/preview.js +111 -0
- package/dist/api/routes/preview.js.map +1 -0
- package/dist/api/routes/redirects.d.ts +3 -0
- package/dist/api/routes/redirects.d.ts.map +1 -0
- package/dist/api/routes/redirects.js +937 -0
- package/dist/api/routes/redirects.js.map +1 -0
- package/dist/api/routes/saved-sections.d.ts +3 -0
- package/dist/api/routes/saved-sections.d.ts.map +1 -0
- package/dist/api/routes/saved-sections.js +1071 -0
- package/dist/api/routes/saved-sections.js.map +1 -0
- package/dist/api/routes/scheduling.d.ts +3 -0
- package/dist/api/routes/scheduling.d.ts.map +1 -0
- package/dist/api/routes/scheduling.js +391 -0
- package/dist/api/routes/scheduling.js.map +1 -0
- package/dist/api/routes/sections.d.ts +3 -0
- package/dist/api/routes/sections.d.ts.map +1 -0
- package/dist/api/routes/sections.js +512 -0
- package/dist/api/routes/sections.js.map +1 -0
- package/dist/api/routes/security-center.d.ts +3 -0
- package/dist/api/routes/security-center.d.ts.map +1 -0
- package/dist/api/routes/security-center.js +71 -0
- package/dist/api/routes/security-center.js.map +1 -0
- package/dist/api/routes/seo-public.d.ts +14 -0
- package/dist/api/routes/seo-public.d.ts.map +1 -0
- package/dist/api/routes/seo-public.js +1366 -0
- package/dist/api/routes/seo-public.js.map +1 -0
- package/dist/api/routes/seo.d.ts +8 -0
- package/dist/api/routes/seo.d.ts.map +1 -0
- package/dist/api/routes/seo.js +2256 -0
- package/dist/api/routes/seo.js.map +1 -0
- package/dist/api/routes/system.d.ts +3 -0
- package/dist/api/routes/system.d.ts.map +1 -0
- package/dist/api/routes/system.js +353 -0
- package/dist/api/routes/system.js.map +1 -0
- package/dist/api/routes/url-resolution.d.ts +3 -0
- package/dist/api/routes/url-resolution.d.ts.map +1 -0
- package/dist/api/routes/url-resolution.js +522 -0
- package/dist/api/routes/url-resolution.js.map +1 -0
- package/dist/api/routes/users.d.ts +3 -0
- package/dist/api/routes/users.d.ts.map +1 -0
- package/dist/api/routes/users.js +1177 -0
- package/dist/api/routes/users.js.map +1 -0
- package/dist/api/routes/webhooks.d.ts +3 -0
- package/dist/api/routes/webhooks.d.ts.map +1 -0
- package/dist/api/routes/webhooks.js +422 -0
- package/dist/api/routes/webhooks.js.map +1 -0
- package/dist/appearance/color.d.ts +24 -0
- package/dist/appearance/color.d.ts.map +1 -0
- package/dist/appearance/color.js +90 -0
- package/dist/appearance/color.js.map +1 -0
- package/dist/appearance/favicon-icon.d.ts +12 -0
- package/dist/appearance/favicon-icon.d.ts.map +1 -0
- package/dist/appearance/favicon-icon.js +58 -0
- package/dist/appearance/favicon-icon.js.map +1 -0
- package/dist/appearance/favicon-paths.d.ts +6 -0
- package/dist/appearance/favicon-paths.d.ts.map +1 -0
- package/dist/appearance/favicon-paths.js +6 -0
- package/dist/appearance/favicon-paths.js.map +1 -0
- package/dist/appearance/index.d.ts +15 -0
- package/dist/appearance/index.d.ts.map +1 -0
- package/dist/appearance/index.js +7 -0
- package/dist/appearance/index.js.map +1 -0
- package/dist/appearance/logo-shape.d.ts +26 -0
- package/dist/appearance/logo-shape.d.ts.map +1 -0
- package/dist/appearance/logo-shape.js +62 -0
- package/dist/appearance/logo-shape.js.map +1 -0
- package/dist/appearance/resolve.d.ts +52 -0
- package/dist/appearance/resolve.d.ts.map +1 -0
- package/dist/appearance/resolve.js +219 -0
- package/dist/appearance/resolve.js.map +1 -0
- package/dist/appearance/theme-tokens.d.ts +49 -0
- package/dist/appearance/theme-tokens.d.ts.map +1 -0
- package/dist/appearance/theme-tokens.js +229 -0
- package/dist/appearance/theme-tokens.js.map +1 -0
- package/dist/appearance/types.d.ts +110 -0
- package/dist/appearance/types.d.ts.map +1 -0
- package/dist/appearance/types.js +16 -0
- package/dist/appearance/types.js.map +1 -0
- package/dist/astro-cache.d.ts +80 -0
- package/dist/astro-cache.d.ts.map +1 -0
- package/dist/astro-cache.js +108 -0
- package/dist/astro-cache.js.map +1 -0
- package/dist/astro-content.d.ts +81 -0
- package/dist/astro-content.d.ts.map +1 -0
- package/dist/astro-content.js +151 -0
- package/dist/astro-content.js.map +1 -0
- package/dist/astro-redirects.d.ts +38 -0
- package/dist/astro-redirects.d.ts.map +1 -0
- package/dist/astro-redirects.js +45 -0
- package/dist/astro-redirects.js.map +1 -0
- package/dist/astro-security.d.ts +34 -0
- package/dist/astro-security.d.ts.map +1 -0
- package/dist/astro-security.js +31 -0
- package/dist/astro-security.js.map +1 -0
- package/dist/astro-site.d.ts +69 -0
- package/dist/astro-site.d.ts.map +1 -0
- package/dist/astro-site.js +81 -0
- package/dist/astro-site.js.map +1 -0
- package/dist/auth/index.d.ts +17 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +12 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/invite-email.d.ts +12 -0
- package/dist/auth/invite-email.d.ts.map +1 -0
- package/dist/auth/invite-email.js +57 -0
- package/dist/auth/invite-email.js.map +1 -0
- package/dist/auth/invites.d.ts +72 -0
- package/dist/auth/invites.d.ts.map +1 -0
- package/dist/auth/invites.js +279 -0
- package/dist/auth/invites.js.map +1 -0
- package/dist/auth/mfa-pending.d.ts +24 -0
- package/dist/auth/mfa-pending.d.ts.map +1 -0
- package/dist/auth/mfa-pending.js +38 -0
- package/dist/auth/mfa-pending.js.map +1 -0
- package/dist/auth/oauth.d.ts +139 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +376 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/password.d.ts +57 -0
- package/dist/auth/password.d.ts.map +1 -0
- package/dist/auth/password.js +150 -0
- package/dist/auth/password.js.map +1 -0
- package/dist/auth/providers/github.d.ts +9 -0
- package/dist/auth/providers/github.d.ts.map +1 -0
- package/dist/auth/providers/github.js +10 -0
- package/dist/auth/providers/github.js.map +1 -0
- package/dist/auth/providers/google.d.ts +9 -0
- package/dist/auth/providers/google.d.ts.map +1 -0
- package/dist/auth/providers/google.js +10 -0
- package/dist/auth/providers/google.js.map +1 -0
- package/dist/auth/providers/microsoft.d.ts +9 -0
- package/dist/auth/providers/microsoft.d.ts.map +1 -0
- package/dist/auth/providers/microsoft.js +11 -0
- package/dist/auth/providers/microsoft.js.map +1 -0
- package/dist/auth/reset-email.d.ts +10 -0
- package/dist/auth/reset-email.d.ts.map +1 -0
- package/dist/auth/reset-email.js +30 -0
- package/dist/auth/reset-email.js.map +1 -0
- package/dist/auth/reset.d.ts +42 -0
- package/dist/auth/reset.d.ts.map +1 -0
- package/dist/auth/reset.js +142 -0
- package/dist/auth/reset.js.map +1 -0
- package/dist/auth/roles.d.ts +51 -0
- package/dist/auth/roles.d.ts.map +1 -0
- package/dist/auth/roles.js +159 -0
- package/dist/auth/roles.js.map +1 -0
- package/dist/auth/session.d.ts +38 -0
- package/dist/auth/session.d.ts.map +1 -0
- package/dist/auth/session.js +106 -0
- package/dist/auth/session.js.map +1 -0
- package/dist/auth/team.d.ts +99 -0
- package/dist/auth/team.d.ts.map +1 -0
- package/dist/auth/team.js +327 -0
- package/dist/auth/team.js.map +1 -0
- package/dist/auth/totp.d.ts +31 -0
- package/dist/auth/totp.d.ts.map +1 -0
- package/dist/auth/totp.js +134 -0
- package/dist/auth/totp.js.map +1 -0
- package/dist/auth/user-admin.d.ts +119 -0
- package/dist/auth/user-admin.d.ts.map +1 -0
- package/dist/auth/user-admin.js +292 -0
- package/dist/auth/user-admin.js.map +1 -0
- package/dist/backup/index.d.ts +19 -0
- package/dist/backup/index.d.ts.map +1 -0
- package/dist/backup/index.js +24 -0
- package/dist/backup/index.js.map +1 -0
- package/dist/billing/stripe-meter.d.ts +22 -0
- package/dist/billing/stripe-meter.d.ts.map +1 -0
- package/dist/billing/stripe-meter.js +101 -0
- package/dist/billing/stripe-meter.js.map +1 -0
- package/dist/brand-voice/index.d.ts +7 -0
- package/dist/brand-voice/index.d.ts.map +1 -0
- package/dist/brand-voice/index.js +7 -0
- package/dist/brand-voice/index.js.map +1 -0
- package/dist/cache/http.d.ts +140 -0
- package/dist/cache/http.d.ts.map +1 -0
- package/dist/cache/http.js +213 -0
- package/dist/cache/http.js.map +1 -0
- package/dist/cache/index.d.ts +15 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +32 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/client.d.ts +51 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +59 -0
- package/dist/client.js.map +1 -0
- package/dist/codegen/index.d.ts +4 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/index.js +366 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/collections/index.d.ts +19 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/index.js +30 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/collections/presets.d.ts +90 -0
- package/dist/collections/presets.d.ts.map +1 -0
- package/dist/collections/presets.js +573 -0
- package/dist/collections/presets.js.map +1 -0
- package/dist/config/define.d.ts +8 -0
- package/dist/config/define.d.ts.map +1 -0
- package/dist/config/define.js +7 -0
- package/dist/config/define.js.map +1 -0
- package/dist/config/index.d.ts +31 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +196 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/runtime.d.ts +107 -0
- package/dist/config/runtime.d.ts.map +1 -0
- package/dist/config/runtime.js +77 -0
- package/dist/config/runtime.js.map +1 -0
- package/dist/config/types.d.ts +924 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/content/ai-api.d.ts +21 -0
- package/dist/content/ai-api.d.ts.map +1 -0
- package/dist/content/ai-api.js +25 -0
- package/dist/content/ai-api.js.map +1 -0
- package/dist/content/content-graph.d.ts +25 -0
- package/dist/content/content-graph.d.ts.map +1 -0
- package/dist/content/content-graph.js +40 -0
- package/dist/content/content-graph.js.map +1 -0
- package/dist/content/extract.d.ts +7 -0
- package/dist/content/extract.d.ts.map +1 -0
- package/dist/content/extract.js +33 -0
- package/dist/content/extract.js.map +1 -0
- package/dist/content/index.d.ts +9 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +6 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/slug.d.ts +40 -0
- package/dist/content/slug.d.ts.map +1 -0
- package/dist/content/slug.js +78 -0
- package/dist/content/slug.js.map +1 -0
- package/dist/content/structured-data.d.ts +163 -0
- package/dist/content/structured-data.d.ts.map +1 -0
- package/dist/content/structured-data.js +479 -0
- package/dist/content/structured-data.js.map +1 -0
- package/dist/content-health/cron.d.ts +68 -0
- package/dist/content-health/cron.d.ts.map +1 -0
- package/dist/content-health/cron.js +167 -0
- package/dist/content-health/cron.js.map +1 -0
- package/dist/content-health/scanner.d.ts +119 -0
- package/dist/content-health/scanner.d.ts.map +1 -0
- package/dist/content-health/scanner.js +257 -0
- package/dist/content-health/scanner.js.map +1 -0
- package/dist/cron/index.d.ts +90 -0
- package/dist/cron/index.d.ts.map +1 -0
- package/dist/cron/index.js +299 -0
- package/dist/cron/index.js.map +1 -0
- package/dist/db/adapters/mysql.d.ts +5 -0
- package/dist/db/adapters/mysql.d.ts.map +1 -0
- package/dist/db/adapters/mysql.js +26 -0
- package/dist/db/adapters/mysql.js.map +1 -0
- package/dist/db/adapters/postgres.d.ts +7 -0
- package/dist/db/adapters/postgres.d.ts.map +1 -0
- package/dist/db/adapters/postgres.js +25 -0
- package/dist/db/adapters/postgres.js.map +1 -0
- package/dist/db/adapters/sqlite.d.ts +5 -0
- package/dist/db/adapters/sqlite.d.ts.map +1 -0
- package/dist/db/adapters/sqlite.js +27 -0
- package/dist/db/adapters/sqlite.js.map +1 -0
- package/dist/db/client-types.d.ts +75 -0
- package/dist/db/client-types.d.ts.map +1 -0
- package/dist/db/client-types.js +2 -0
- package/dist/db/client-types.js.map +1 -0
- package/dist/db/create-adapter.d.ts +11 -0
- package/dist/db/create-adapter.d.ts.map +1 -0
- package/dist/db/create-adapter.js +43 -0
- package/dist/db/create-adapter.js.map +1 -0
- package/dist/db/find-in-batches.d.ts +12 -0
- package/dist/db/find-in-batches.d.ts.map +1 -0
- package/dist/db/find-in-batches.js +20 -0
- package/dist/db/find-in-batches.js.map +1 -0
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +5 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/model-types.d.ts +602 -0
- package/dist/db/model-types.d.ts.map +1 -0
- package/dist/db/model-types.js +14 -0
- package/dist/db/model-types.js.map +1 -0
- package/dist/db.d.ts +20 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +35 -0
- package/dist/db.js.map +1 -0
- package/dist/diagnostics/api-metrics.d.ts +135 -0
- package/dist/diagnostics/api-metrics.d.ts.map +1 -0
- package/dist/diagnostics/api-metrics.js +376 -0
- package/dist/diagnostics/api-metrics.js.map +1 -0
- package/dist/diagnostics/env.d.ts +44 -0
- package/dist/diagnostics/env.d.ts.map +1 -0
- package/dist/diagnostics/env.js +354 -0
- package/dist/diagnostics/env.js.map +1 -0
- package/dist/diagnostics/logger.d.ts +38 -0
- package/dist/diagnostics/logger.d.ts.map +1 -0
- package/dist/diagnostics/logger.js +89 -0
- package/dist/diagnostics/logger.js.map +1 -0
- package/dist/diagnostics/sentry.d.ts +8 -0
- package/dist/diagnostics/sentry.d.ts.map +1 -0
- package/dist/diagnostics/sentry.js +54 -0
- package/dist/diagnostics/sentry.js.map +1 -0
- package/dist/email/resolve.d.ts +27 -0
- package/dist/email/resolve.d.ts.map +1 -0
- package/dist/email/resolve.js +68 -0
- package/dist/email/resolve.js.map +1 -0
- package/dist/email/sender.d.ts +71 -0
- package/dist/email/sender.d.ts.map +1 -0
- package/dist/email/sender.js +41 -0
- package/dist/email/sender.js.map +1 -0
- package/dist/email/settings-store.d.ts +116 -0
- package/dist/email/settings-store.d.ts.map +1 -0
- package/dist/email/settings-store.js +222 -0
- package/dist/email/settings-store.js.map +1 -0
- package/dist/fields/component-block.d.ts +23 -0
- package/dist/fields/component-block.d.ts.map +1 -0
- package/dist/fields/component-block.js +137 -0
- package/dist/fields/component-block.js.map +1 -0
- package/dist/fields/index.d.ts +19 -0
- package/dist/fields/index.d.ts.map +1 -0
- package/dist/fields/index.js +95 -0
- package/dist/fields/index.js.map +1 -0
- package/dist/fields/presets.d.ts +144 -0
- package/dist/fields/presets.d.ts.map +1 -0
- package/dist/fields/presets.js +350 -0
- package/dist/fields/presets.js.map +1 -0
- package/dist/fields/relations.d.ts +87 -0
- package/dist/fields/relations.d.ts.map +1 -0
- package/dist/fields/relations.js +231 -0
- package/dist/fields/relations.js.map +1 -0
- package/dist/forms/analytics.d.ts +62 -0
- package/dist/forms/analytics.d.ts.map +1 -0
- package/dist/forms/analytics.js +95 -0
- package/dist/forms/analytics.js.map +1 -0
- package/dist/forms/attribution.d.ts +175 -0
- package/dist/forms/attribution.d.ts.map +1 -0
- package/dist/forms/attribution.js +577 -0
- package/dist/forms/attribution.js.map +1 -0
- package/dist/forms/client-validation.d.ts +50 -0
- package/dist/forms/client-validation.d.ts.map +1 -0
- package/dist/forms/client-validation.js +215 -0
- package/dist/forms/client-validation.js.map +1 -0
- package/dist/forms/delivery.d.ts +89 -0
- package/dist/forms/delivery.d.ts.map +1 -0
- package/dist/forms/delivery.js +477 -0
- package/dist/forms/delivery.js.map +1 -0
- package/dist/forms/encryption.d.ts +20 -0
- package/dist/forms/encryption.d.ts.map +1 -0
- package/dist/forms/encryption.js +80 -0
- package/dist/forms/encryption.js.map +1 -0
- package/dist/forms/entries.d.ts +68 -0
- package/dist/forms/entries.d.ts.map +1 -0
- package/dist/forms/entries.js +557 -0
- package/dist/forms/entries.js.map +1 -0
- package/dist/forms/files.d.ts +38 -0
- package/dist/forms/files.d.ts.map +1 -0
- package/dist/forms/files.js +134 -0
- package/dist/forms/files.js.map +1 -0
- package/dist/forms/index.d.ts +21 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +20 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/notify.d.ts +80 -0
- package/dist/forms/notify.d.ts.map +1 -0
- package/dist/forms/notify.js +357 -0
- package/dist/forms/notify.js.map +1 -0
- package/dist/forms/prefetch.d.ts +17 -0
- package/dist/forms/prefetch.d.ts.map +1 -0
- package/dist/forms/prefetch.js +36 -0
- package/dist/forms/prefetch.js.map +1 -0
- package/dist/forms/public-html.d.ts +22 -0
- package/dist/forms/public-html.d.ts.map +1 -0
- package/dist/forms/public-html.js +145 -0
- package/dist/forms/public-html.js.map +1 -0
- package/dist/forms/service.d.ts +102 -0
- package/dist/forms/service.d.ts.map +1 -0
- package/dist/forms/service.js +625 -0
- package/dist/forms/service.js.map +1 -0
- package/dist/forms/spam.d.ts +33 -0
- package/dist/forms/spam.d.ts.map +1 -0
- package/dist/forms/spam.js +93 -0
- package/dist/forms/spam.js.map +1 -0
- package/dist/forms/submission.d.ts +132 -0
- package/dist/forms/submission.d.ts.map +1 -0
- package/dist/forms/submission.js +348 -0
- package/dist/forms/submission.js.map +1 -0
- package/dist/forms/types.d.ts +259 -0
- package/dist/forms/types.d.ts.map +1 -0
- package/dist/forms/types.js +20 -0
- package/dist/forms/types.js.map +1 -0
- package/dist/forms/validation.d.ts +19 -0
- package/dist/forms/validation.d.ts.map +1 -0
- package/dist/forms/validation.js +166 -0
- package/dist/forms/validation.js.map +1 -0
- package/dist/forms/webhooks.d.ts +60 -0
- package/dist/forms/webhooks.d.ts.map +1 -0
- package/dist/forms/webhooks.js +360 -0
- package/dist/forms/webhooks.js.map +1 -0
- package/dist/forms/webmcp.d.ts +36 -0
- package/dist/forms/webmcp.d.ts.map +1 -0
- package/dist/forms/webmcp.js +67 -0
- package/dist/forms/webmcp.js.map +1 -0
- package/dist/forms/xlsx.d.ts +10 -0
- package/dist/forms/xlsx.d.ts.map +1 -0
- package/dist/forms/xlsx.js +207 -0
- package/dist/forms/xlsx.js.map +1 -0
- package/dist/generated/browser.d.ts +220 -0
- package/dist/generated/browser.js +17 -0
- package/dist/generated/client.d.ts +239 -0
- package/dist/generated/client.js +34 -0
- package/dist/generated/commonInputTypes.d.ts +887 -0
- package/dist/generated/commonInputTypes.js +10 -0
- package/dist/generated/enums.d.ts +83 -0
- package/dist/generated/enums.js +81 -0
- package/dist/generated/internal/class.d.ts +517 -0
- package/dist/generated/internal/class.js +52 -0
- package/dist/generated/internal/prismaNamespace.d.ts +4184 -0
- package/dist/generated/internal/prismaNamespace.js +932 -0
- package/dist/generated/internal/prismaNamespaceBrowser.d.ts +968 -0
- package/dist/generated/internal/prismaNamespaceBrowser.js +903 -0
- package/dist/generated/models/AiCrawlerHit.d.ts +1115 -0
- package/dist/generated/models/AiCrawlerHit.js +1 -0
- package/dist/generated/models/ApiKey.d.ts +1388 -0
- package/dist/generated/models/ApiKey.js +1 -0
- package/dist/generated/models/ApiRequestMetric.d.ts +1229 -0
- package/dist/generated/models/ApiRequestMetric.js +1 -0
- package/dist/generated/models/AuditLog.d.ts +1062 -0
- package/dist/generated/models/AuditLog.js +1 -0
- package/dist/generated/models/BackupRecord.d.ts +1100 -0
- package/dist/generated/models/BackupRecord.js +1 -0
- package/dist/generated/models/ContentIssue.d.ts +1318 -0
- package/dist/generated/models/ContentIssue.js +1 -0
- package/dist/generated/models/ContentLock.d.ts +1295 -0
- package/dist/generated/models/ContentLock.js +1 -0
- package/dist/generated/models/ContentTemplate.d.ts +1254 -0
- package/dist/generated/models/ContentTemplate.js +1 -0
- package/dist/generated/models/Document.d.ts +3443 -0
- package/dist/generated/models/Document.js +1 -0
- package/dist/generated/models/Folder.d.ts +1689 -0
- package/dist/generated/models/Folder.js +1 -0
- package/dist/generated/models/FormDeliveryAttempt.d.ts +1705 -0
- package/dist/generated/models/FormDeliveryAttempt.js +1 -0
- package/dist/generated/models/FormSchemaVersion.d.ts +1105 -0
- package/dist/generated/models/FormSchemaVersion.js +1 -0
- package/dist/generated/models/FormSubmission.d.ts +2125 -0
- package/dist/generated/models/FormSubmission.js +1 -0
- package/dist/generated/models/FormSubmissionFile.d.ts +1438 -0
- package/dist/generated/models/FormSubmissionFile.js +1 -0
- package/dist/generated/models/FormWebhook.d.ts +1271 -0
- package/dist/generated/models/FormWebhook.js +1 -0
- package/dist/generated/models/InAppNotification.d.ts +1295 -0
- package/dist/generated/models/InAppNotification.js +1 -0
- package/dist/generated/models/Invite.d.ts +1240 -0
- package/dist/generated/models/Invite.js +1 -0
- package/dist/generated/models/Media.d.ts +2759 -0
- package/dist/generated/models/Media.js +1 -0
- package/dist/generated/models/MediaUsage.d.ts +1301 -0
- package/dist/generated/models/MediaUsage.js +1 -0
- package/dist/generated/models/OAuthAccount.d.ts +1300 -0
- package/dist/generated/models/OAuthAccount.js +1 -0
- package/dist/generated/models/PageTemplate.d.ts +1118 -0
- package/dist/generated/models/PageTemplate.js +1 -0
- package/dist/generated/models/PasswordResetToken.d.ts +1225 -0
- package/dist/generated/models/PasswordResetToken.js +1 -0
- package/dist/generated/models/Redirect.d.ts +1342 -0
- package/dist/generated/models/Redirect.js +1 -0
- package/dist/generated/models/Redirect404Hit.d.ts +1107 -0
- package/dist/generated/models/Redirect404Hit.js +1 -0
- package/dist/generated/models/RedirectSuggestion.d.ts +1185 -0
- package/dist/generated/models/RedirectSuggestion.js +1 -0
- package/dist/generated/models/SavedSection.d.ts +1156 -0
- package/dist/generated/models/SavedSection.js +1 -0
- package/dist/generated/models/ScriptTag.d.ts +1291 -0
- package/dist/generated/models/ScriptTag.js +1 -0
- package/dist/generated/models/SeoAuditRun.d.ts +1570 -0
- package/dist/generated/models/SeoAuditRun.js +1 -0
- package/dist/generated/models/SeoIssue.d.ts +1873 -0
- package/dist/generated/models/SeoIssue.js +1 -0
- package/dist/generated/models/Session.d.ts +1330 -0
- package/dist/generated/models/Session.js +1 -0
- package/dist/generated/models/Site.d.ts +1062 -0
- package/dist/generated/models/Site.js +1 -0
- package/dist/generated/models/User.d.ts +4344 -0
- package/dist/generated/models/User.js +1 -0
- package/dist/generated/models/Version.d.ts +1334 -0
- package/dist/generated/models/Version.js +1 -0
- package/dist/generated/models/WebhookDeliveryLog.d.ts +1479 -0
- package/dist/generated/models/WebhookDeliveryLog.js +1 -0
- package/dist/generated/models/WebhookEndpoint.d.ts +1331 -0
- package/dist/generated/models/WebhookEndpoint.js +1 -0
- package/dist/generated/models/WorkflowState.d.ts +1436 -0
- package/dist/generated/models/WorkflowState.js +1 -0
- package/dist/generated/models.d.ts +37 -0
- package/dist/generated/models.js +1 -0
- package/dist/graphql/index.d.ts +11 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/index.js +74 -0
- package/dist/graphql/index.js.map +1 -0
- package/dist/graphql/resolvers.d.ts +8 -0
- package/dist/graphql/resolvers.d.ts.map +1 -0
- package/dist/graphql/resolvers.js +89 -0
- package/dist/graphql/resolvers.js.map +1 -0
- package/dist/graphql/schema-builder.d.ts +3 -0
- package/dist/graphql/schema-builder.d.ts.map +1 -0
- package/dist/graphql/schema-builder.js +103 -0
- package/dist/graphql/schema-builder.js.map +1 -0
- package/dist/health/index.d.ts +27 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/health/index.js +43 -0
- package/dist/health/index.js.map +1 -0
- package/dist/i18n/index.d.ts +22 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +37 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +125 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +132 -0
- package/dist/index.js.map +1 -0
- package/dist/media/content-hash.d.ts +3 -0
- package/dist/media/content-hash.d.ts.map +1 -0
- package/dist/media/content-hash.js +11 -0
- package/dist/media/content-hash.js.map +1 -0
- package/dist/media/denormalize.d.ts +23 -0
- package/dist/media/denormalize.d.ts.map +1 -0
- package/dist/media/denormalize.js +170 -0
- package/dist/media/denormalize.js.map +1 -0
- package/dist/media/index.d.ts +8 -0
- package/dist/media/index.d.ts.map +1 -0
- package/dist/media/index.js +5 -0
- package/dist/media/index.js.map +1 -0
- package/dist/media/merge-document-media.d.ts +23 -0
- package/dist/media/merge-document-media.d.ts.map +1 -0
- package/dist/media/merge-document-media.js +146 -0
- package/dist/media/merge-document-media.js.map +1 -0
- package/dist/media/metadata-patch.d.ts +21 -0
- package/dist/media/metadata-patch.d.ts.map +1 -0
- package/dist/media/metadata-patch.js +37 -0
- package/dist/media/metadata-patch.js.map +1 -0
- package/dist/media/optimize.d.ts +61 -0
- package/dist/media/optimize.d.ts.map +1 -0
- package/dist/media/optimize.js +168 -0
- package/dist/media/optimize.js.map +1 -0
- package/dist/media/seo.d.ts +110 -0
- package/dist/media/seo.d.ts.map +1 -0
- package/dist/media/seo.js +263 -0
- package/dist/media/seo.js.map +1 -0
- package/dist/media/usage-sync.d.ts +37 -0
- package/dist/media/usage-sync.d.ts.map +1 -0
- package/dist/media/usage-sync.js +234 -0
- package/dist/media/usage-sync.js.map +1 -0
- package/dist/middleware.d.ts +17 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +159 -0
- package/dist/middleware.js.map +1 -0
- package/dist/multisite/index.d.ts +20 -0
- package/dist/multisite/index.d.ts.map +1 -0
- package/dist/multisite/index.js +26 -0
- package/dist/multisite/index.js.map +1 -0
- package/dist/navigation/unresolved-targets.d.ts +35 -0
- package/dist/navigation/unresolved-targets.d.ts.map +1 -0
- package/dist/navigation/unresolved-targets.js +109 -0
- package/dist/navigation/unresolved-targets.js.map +1 -0
- package/dist/next/preview.d.ts +10 -0
- package/dist/next/preview.d.ts.map +1 -0
- package/dist/next/preview.js +17 -0
- package/dist/next/preview.js.map +1 -0
- package/dist/next/script-tags.d.ts +15 -0
- package/dist/next/script-tags.d.ts.map +1 -0
- package/dist/next/script-tags.js +58 -0
- package/dist/next/script-tags.js.map +1 -0
- package/dist/next-site.d.ts +29 -0
- package/dist/next-site.d.ts.map +1 -0
- package/dist/next-site.js +60 -0
- package/dist/next-site.js.map +1 -0
- package/dist/next.d.ts +33 -0
- package/dist/next.d.ts.map +1 -0
- package/dist/next.js +142 -0
- package/dist/next.js.map +1 -0
- package/dist/notifications/index.d.ts +20 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +22 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/page-builder/a11y-fix.d.ts +20 -0
- package/dist/page-builder/a11y-fix.d.ts.map +1 -0
- package/dist/page-builder/a11y-fix.js +182 -0
- package/dist/page-builder/a11y-fix.js.map +1 -0
- package/dist/page-builder/ai-pipeline.d.ts +43 -0
- package/dist/page-builder/ai-pipeline.d.ts.map +1 -0
- package/dist/page-builder/ai-pipeline.js +165 -0
- package/dist/page-builder/ai-pipeline.js.map +1 -0
- package/dist/page-builder/blocks.d.ts +27 -0
- package/dist/page-builder/blocks.d.ts.map +1 -0
- package/dist/page-builder/blocks.js +313 -0
- package/dist/page-builder/blocks.js.map +1 -0
- package/dist/page-builder/design-scorer.d.ts +27 -0
- package/dist/page-builder/design-scorer.d.ts.map +1 -0
- package/dist/page-builder/design-scorer.js +612 -0
- package/dist/page-builder/design-scorer.js.map +1 -0
- package/dist/page-builder/index.d.ts +18 -0
- package/dist/page-builder/index.d.ts.map +1 -0
- package/dist/page-builder/index.js +20 -0
- package/dist/page-builder/index.js.map +1 -0
- package/dist/page-builder/schema.d.ts +107 -0
- package/dist/page-builder/schema.d.ts.map +1 -0
- package/dist/page-builder/schema.js +90 -0
- package/dist/page-builder/schema.js.map +1 -0
- package/dist/page-builder/seo-analyzer.d.ts +61 -0
- package/dist/page-builder/seo-analyzer.d.ts.map +1 -0
- package/dist/page-builder/seo-analyzer.js +778 -0
- package/dist/page-builder/seo-analyzer.js.map +1 -0
- package/dist/page-builder/templates.d.ts +9 -0
- package/dist/page-builder/templates.d.ts.map +1 -0
- package/dist/page-builder/templates.js +742 -0
- package/dist/page-builder/templates.js.map +1 -0
- package/dist/page-builder/tree.d.ts +17 -0
- package/dist/page-builder/tree.d.ts.map +1 -0
- package/dist/page-builder/tree.js +160 -0
- package/dist/page-builder/tree.js.map +1 -0
- package/dist/page-builder/types.d.ts +112 -0
- package/dist/page-builder/types.d.ts.map +1 -0
- package/dist/page-builder/types.js +4 -0
- package/dist/page-builder/types.js.map +1 -0
- package/dist/page-builder/validate.d.ts +6 -0
- package/dist/page-builder/validate.d.ts.map +1 -0
- package/dist/page-builder/validate.js +87 -0
- package/dist/page-builder/validate.js.map +1 -0
- package/dist/plan/features.d.ts +17 -0
- package/dist/plan/features.d.ts.map +1 -0
- package/dist/plan/features.js +73 -0
- package/dist/plan/features.js.map +1 -0
- package/dist/posts/query.d.ts +50 -0
- package/dist/posts/query.d.ts.map +1 -0
- package/dist/posts/query.js +105 -0
- package/dist/posts/query.js.map +1 -0
- package/dist/presence/index.d.ts +24 -0
- package/dist/presence/index.d.ts.map +1 -0
- package/dist/presence/index.js +99 -0
- package/dist/presence/index.js.map +1 -0
- package/dist/preview/event-bus.d.ts +39 -0
- package/dist/preview/event-bus.d.ts.map +1 -0
- package/dist/preview/event-bus.js +73 -0
- package/dist/preview/event-bus.js.map +1 -0
- package/dist/preview/index.d.ts +36 -0
- package/dist/preview/index.d.ts.map +1 -0
- package/dist/preview/index.js +68 -0
- package/dist/preview/index.js.map +1 -0
- package/dist/preview/sse-stream.d.ts +47 -0
- package/dist/preview/sse-stream.d.ts.map +1 -0
- package/dist/preview/sse-stream.js +111 -0
- package/dist/preview/sse-stream.js.map +1 -0
- package/dist/privacy/index.d.ts +33 -0
- package/dist/privacy/index.d.ts.map +1 -0
- package/dist/privacy/index.js +15 -0
- package/dist/privacy/index.js.map +1 -0
- package/dist/public-redirects.d.ts +78 -0
- package/dist/public-redirects.d.ts.map +1 -0
- package/dist/public-redirects.js +187 -0
- package/dist/public-redirects.js.map +1 -0
- package/dist/public-security-headers.d.ts +27 -0
- package/dist/public-security-headers.d.ts.map +1 -0
- package/dist/public-security-headers.js +40 -0
- package/dist/public-security-headers.js.map +1 -0
- package/dist/publishing/publish-sync.d.ts +50 -0
- package/dist/publishing/publish-sync.d.ts.map +1 -0
- package/dist/publishing/publish-sync.js +124 -0
- package/dist/publishing/publish-sync.js.map +1 -0
- package/dist/purge/adapters.d.ts +60 -0
- package/dist/purge/adapters.d.ts.map +1 -0
- package/dist/purge/adapters.js +81 -0
- package/dist/purge/adapters.js.map +1 -0
- package/dist/purge/index.d.ts +12 -0
- package/dist/purge/index.d.ts.map +1 -0
- package/dist/purge/index.js +10 -0
- package/dist/purge/index.js.map +1 -0
- package/dist/purge/receiver.d.ts +95 -0
- package/dist/purge/receiver.d.ts.map +1 -0
- package/dist/purge/receiver.js +176 -0
- package/dist/purge/receiver.js.map +1 -0
- package/dist/realtime/comments.d.ts +217 -0
- package/dist/realtime/comments.d.ts.map +1 -0
- package/dist/realtime/comments.js +282 -0
- package/dist/realtime/comments.js.map +1 -0
- package/dist/realtime/gateway.d.ts +107 -0
- package/dist/realtime/gateway.d.ts.map +1 -0
- package/dist/realtime/gateway.js +215 -0
- package/dist/realtime/gateway.js.map +1 -0
- package/dist/realtime/index.d.ts +21 -0
- package/dist/realtime/index.d.ts.map +1 -0
- package/dist/realtime/index.js +27 -0
- package/dist/realtime/index.js.map +1 -0
- package/dist/realtime/notification-bus.d.ts +60 -0
- package/dist/realtime/notification-bus.d.ts.map +1 -0
- package/dist/realtime/notification-bus.js +77 -0
- package/dist/realtime/notification-bus.js.map +1 -0
- package/dist/realtime/notification-stream.d.ts +50 -0
- package/dist/realtime/notification-stream.d.ts.map +1 -0
- package/dist/realtime/notification-stream.js +148 -0
- package/dist/realtime/notification-stream.js.map +1 -0
- package/dist/realtime/notifications.d.ts +201 -0
- package/dist/realtime/notifications.d.ts.map +1 -0
- package/dist/realtime/notifications.js +233 -0
- package/dist/realtime/notifications.js.map +1 -0
- package/dist/realtime/persistence.d.ts +72 -0
- package/dist/realtime/persistence.d.ts.map +1 -0
- package/dist/realtime/persistence.js +53 -0
- package/dist/realtime/persistence.js.map +1 -0
- package/dist/realtime/sse.d.ts +20 -0
- package/dist/realtime/sse.d.ts.map +1 -0
- package/dist/realtime/sse.js +31 -0
- package/dist/realtime/sse.js.map +1 -0
- package/dist/redirects/auto.d.ts +45 -0
- package/dist/redirects/auto.d.ts.map +1 -0
- package/dist/redirects/auto.js +60 -0
- package/dist/redirects/auto.js.map +1 -0
- package/dist/redirects/fix-link.d.ts +15 -0
- package/dist/redirects/fix-link.d.ts.map +1 -0
- package/dist/redirects/fix-link.js +66 -0
- package/dist/redirects/fix-link.js.map +1 -0
- package/dist/redirects/graph.d.ts +92 -0
- package/dist/redirects/graph.d.ts.map +1 -0
- package/dist/redirects/graph.js +176 -0
- package/dist/redirects/graph.js.map +1 -0
- package/dist/redirects/index.d.ts +17 -0
- package/dist/redirects/index.d.ts.map +1 -0
- package/dist/redirects/index.js +10 -0
- package/dist/redirects/index.js.map +1 -0
- package/dist/redirects/legitimacy.d.ts +23 -0
- package/dist/redirects/legitimacy.d.ts.map +1 -0
- package/dist/redirects/legitimacy.js +64 -0
- package/dist/redirects/legitimacy.js.map +1 -0
- package/dist/redirects/recovery.d.ts +92 -0
- package/dist/redirects/recovery.d.ts.map +1 -0
- package/dist/redirects/recovery.js +210 -0
- package/dist/redirects/recovery.js.map +1 -0
- package/dist/redirects/rerank.d.ts +24 -0
- package/dist/redirects/rerank.d.ts.map +1 -0
- package/dist/redirects/rerank.js +82 -0
- package/dist/redirects/rerank.js.map +1 -0
- package/dist/redirects/suggest.d.ts +23 -0
- package/dist/redirects/suggest.d.ts.map +1 -0
- package/dist/redirects/suggest.js +80 -0
- package/dist/redirects/suggest.js.map +1 -0
- package/dist/redirects/typo.d.ts +10 -0
- package/dist/redirects/typo.d.ts.map +1 -0
- package/dist/redirects/typo.js +51 -0
- package/dist/redirects/typo.js.map +1 -0
- package/dist/redirects/validate-destination.d.ts +13 -0
- package/dist/redirects/validate-destination.d.ts.map +1 -0
- package/dist/redirects/validate-destination.js +51 -0
- package/dist/redirects/validate-destination.js.map +1 -0
- package/dist/relationships/index.d.ts +13 -0
- package/dist/relationships/index.d.ts.map +1 -0
- package/dist/relationships/index.js +12 -0
- package/dist/relationships/index.js.map +1 -0
- package/dist/scheduling/index.d.ts +45 -0
- package/dist/scheduling/index.d.ts.map +1 -0
- package/dist/scheduling/index.js +141 -0
- package/dist/scheduling/index.js.map +1 -0
- package/dist/script-tags/index.d.ts +3 -0
- package/dist/script-tags/index.d.ts.map +1 -0
- package/dist/script-tags/index.js +3 -0
- package/dist/script-tags/index.js.map +1 -0
- package/dist/script-tags/invalidate.d.ts +3 -0
- package/dist/script-tags/invalidate.d.ts.map +1 -0
- package/dist/script-tags/invalidate.js +16 -0
- package/dist/script-tags/invalidate.js.map +1 -0
- package/dist/script-tags/resolve.d.ts +41 -0
- package/dist/script-tags/resolve.d.ts.map +1 -0
- package/dist/script-tags/resolve.js +130 -0
- package/dist/script-tags/resolve.js.map +1 -0
- package/dist/search/index.d.ts +25 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +189 -0
- package/dist/search/index.js.map +1 -0
- package/dist/sections/bridge.d.ts +8 -0
- package/dist/sections/bridge.d.ts.map +1 -0
- package/dist/sections/bridge.js +211 -0
- package/dist/sections/bridge.js.map +1 -0
- package/dist/sections/define.d.ts +21 -0
- package/dist/sections/define.d.ts.map +1 -0
- package/dist/sections/define.js +160 -0
- package/dist/sections/define.js.map +1 -0
- package/dist/sections/embed.d.ts +24 -0
- package/dist/sections/embed.d.ts.map +1 -0
- package/dist/sections/embed.js +78 -0
- package/dist/sections/embed.js.map +1 -0
- package/dist/sections/fields.d.ts +37 -0
- package/dist/sections/fields.d.ts.map +1 -0
- package/dist/sections/fields.js +50 -0
- package/dist/sections/fields.js.map +1 -0
- package/dist/sections/helpers.d.ts +149 -0
- package/dist/sections/helpers.d.ts.map +1 -0
- package/dist/sections/helpers.js +373 -0
- package/dist/sections/helpers.js.map +1 -0
- package/dist/sections/index.d.ts +22 -0
- package/dist/sections/index.d.ts.map +1 -0
- package/dist/sections/index.js +18 -0
- package/dist/sections/index.js.map +1 -0
- package/dist/sections/media-enrich.d.ts +45 -0
- package/dist/sections/media-enrich.d.ts.map +1 -0
- package/dist/sections/media-enrich.js +137 -0
- package/dist/sections/media-enrich.js.map +1 -0
- package/dist/sections/migrate.d.ts +42 -0
- package/dist/sections/migrate.d.ts.map +1 -0
- package/dist/sections/migrate.js +66 -0
- package/dist/sections/migrate.js.map +1 -0
- package/dist/sections/registry.d.ts +46 -0
- package/dist/sections/registry.d.ts.map +1 -0
- package/dist/sections/registry.js +598 -0
- package/dist/sections/registry.js.map +1 -0
- package/dist/sections/types.d.ts +192 -0
- package/dist/sections/types.d.ts.map +1 -0
- package/dist/sections/types.js +21 -0
- package/dist/sections/types.js.map +1 -0
- package/dist/sections/validate.d.ts +12 -0
- package/dist/sections/validate.d.ts.map +1 -0
- package/dist/sections/validate.js +186 -0
- package/dist/sections/validate.js.map +1 -0
- package/dist/sections/widget-embed.d.ts +45 -0
- package/dist/sections/widget-embed.d.ts.map +1 -0
- package/dist/sections/widget-embed.js +129 -0
- package/dist/sections/widget-embed.js.map +1 -0
- package/dist/security/access.d.ts +35 -0
- package/dist/security/access.d.ts.map +1 -0
- package/dist/security/access.js +133 -0
- package/dist/security/access.js.map +1 -0
- package/dist/security/anomaly-detection.d.ts +17 -0
- package/dist/security/anomaly-detection.d.ts.map +1 -0
- package/dist/security/anomaly-detection.js +39 -0
- package/dist/security/anomaly-detection.js.map +1 -0
- package/dist/security/api-key-enhanced.d.ts +68 -0
- package/dist/security/api-key-enhanced.d.ts.map +1 -0
- package/dist/security/api-key-enhanced.js +76 -0
- package/dist/security/api-key-enhanced.js.map +1 -0
- package/dist/security/audit.d.ts +46 -0
- package/dist/security/audit.d.ts.map +1 -0
- package/dist/security/audit.js +67 -0
- package/dist/security/audit.js.map +1 -0
- package/dist/security/breach-check.d.ts +3 -0
- package/dist/security/breach-check.d.ts.map +1 -0
- package/dist/security/breach-check.js +27 -0
- package/dist/security/breach-check.js.map +1 -0
- package/dist/security/captcha.d.ts +67 -0
- package/dist/security/captcha.d.ts.map +1 -0
- package/dist/security/captcha.js +186 -0
- package/dist/security/captcha.js.map +1 -0
- package/dist/security/center/gather.d.ts +20 -0
- package/dist/security/center/gather.d.ts.map +1 -0
- package/dist/security/center/gather.js +240 -0
- package/dist/security/center/gather.js.map +1 -0
- package/dist/security/center/index.d.ts +13 -0
- package/dist/security/center/index.d.ts.map +1 -0
- package/dist/security/center/index.js +4 -0
- package/dist/security/center/index.js.map +1 -0
- package/dist/security/center/settings.d.ts +48 -0
- package/dist/security/center/settings.d.ts.map +1 -0
- package/dist/security/center/settings.js +218 -0
- package/dist/security/center/settings.js.map +1 -0
- package/dist/security/center/status.d.ts +10 -0
- package/dist/security/center/status.d.ts.map +1 -0
- package/dist/security/center/status.js +249 -0
- package/dist/security/center/status.js.map +1 -0
- package/dist/security/center/summaries.d.ts +21 -0
- package/dist/security/center/summaries.d.ts.map +1 -0
- package/dist/security/center/summaries.js +65 -0
- package/dist/security/center/summaries.js.map +1 -0
- package/dist/security/center/types.d.ts +142 -0
- package/dist/security/center/types.d.ts.map +1 -0
- package/dist/security/center/types.js +12 -0
- package/dist/security/center/types.js.map +1 -0
- package/dist/security/client-ip.d.ts +23 -0
- package/dist/security/client-ip.d.ts.map +1 -0
- package/dist/security/client-ip.js +97 -0
- package/dist/security/client-ip.js.map +1 -0
- package/dist/security/cors.d.ts +11 -0
- package/dist/security/cors.d.ts.map +1 -0
- package/dist/security/cors.js +33 -0
- package/dist/security/cors.js.map +1 -0
- package/dist/security/csp-nonces.d.ts +5 -0
- package/dist/security/csp-nonces.d.ts.map +1 -0
- package/dist/security/csp-nonces.js +24 -0
- package/dist/security/csp-nonces.js.map +1 -0
- package/dist/security/csrf.d.ts +5 -0
- package/dist/security/csrf.d.ts.map +1 -0
- package/dist/security/csrf.js +20 -0
- package/dist/security/csrf.js.map +1 -0
- package/dist/security/encrypted-fields.d.ts +14 -0
- package/dist/security/encrypted-fields.d.ts.map +1 -0
- package/dist/security/encrypted-fields.js +94 -0
- package/dist/security/encrypted-fields.js.map +1 -0
- package/dist/security/headers.d.ts +11 -0
- package/dist/security/headers.d.ts.map +1 -0
- package/dist/security/headers.js +32 -0
- package/dist/security/headers.js.map +1 -0
- package/dist/security/index.d.ts +40 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +26 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/internal-keys.d.ts +15 -0
- package/dist/security/internal-keys.d.ts.map +1 -0
- package/dist/security/internal-keys.js +33 -0
- package/dist/security/internal-keys.js.map +1 -0
- package/dist/security/ip-allowlist.d.ts +15 -0
- package/dist/security/ip-allowlist.d.ts.map +1 -0
- package/dist/security/ip-allowlist.js +141 -0
- package/dist/security/ip-allowlist.js.map +1 -0
- package/dist/security/ip-canon.d.ts +71 -0
- package/dist/security/ip-canon.d.ts.map +1 -0
- package/dist/security/ip-canon.js +352 -0
- package/dist/security/ip-canon.js.map +1 -0
- package/dist/security/middleware.d.ts +20 -0
- package/dist/security/middleware.d.ts.map +1 -0
- package/dist/security/middleware.js +45 -0
- package/dist/security/middleware.js.map +1 -0
- package/dist/security/rate-limit-policy.d.ts +40 -0
- package/dist/security/rate-limit-policy.d.ts.map +1 -0
- package/dist/security/rate-limit-policy.js +57 -0
- package/dist/security/rate-limit-policy.js.map +1 -0
- package/dist/security/rate-limit.d.ts +55 -0
- package/dist/security/rate-limit.d.ts.map +1 -0
- package/dist/security/rate-limit.js +298 -0
- package/dist/security/rate-limit.js.map +1 -0
- package/dist/security/reauth.d.ts +16 -0
- package/dist/security/reauth.d.ts.map +1 -0
- package/dist/security/reauth.js +56 -0
- package/dist/security/reauth.js.map +1 -0
- package/dist/security/redact.d.ts +12 -0
- package/dist/security/redact.d.ts.map +1 -0
- package/dist/security/redact.js +44 -0
- package/dist/security/redact.js.map +1 -0
- package/dist/security/safe-fetch.d.ts +57 -0
- package/dist/security/safe-fetch.d.ts.map +1 -0
- package/dist/security/safe-fetch.js +71 -0
- package/dist/security/safe-fetch.js.map +1 -0
- package/dist/security/sanitize-document.d.ts +14 -0
- package/dist/security/sanitize-document.d.ts.map +1 -0
- package/dist/security/sanitize-document.js +117 -0
- package/dist/security/sanitize-document.js.map +1 -0
- package/dist/security/sanitize.d.ts +13 -0
- package/dist/security/sanitize.d.ts.map +1 -0
- package/dist/security/sanitize.js +64 -0
- package/dist/security/sanitize.js.map +1 -0
- package/dist/security/secret-storage.d.ts +22 -0
- package/dist/security/secret-storage.d.ts.map +1 -0
- package/dist/security/secret-storage.js +75 -0
- package/dist/security/secret-storage.js.map +1 -0
- package/dist/security/security-txt.d.ts +12 -0
- package/dist/security/security-txt.d.ts.map +1 -0
- package/dist/security/security-txt.js +19 -0
- package/dist/security/security-txt.js.map +1 -0
- package/dist/security/session-limits.d.ts +17 -0
- package/dist/security/session-limits.d.ts.map +1 -0
- package/dist/security/session-limits.js +14 -0
- package/dist/security/session-limits.js.map +1 -0
- package/dist/security/upload.d.ts +32 -0
- package/dist/security/upload.d.ts.map +1 -0
- package/dist/security/upload.js +129 -0
- package/dist/security/upload.js.map +1 -0
- package/dist/security/webhook.d.ts +30 -0
- package/dist/security/webhook.d.ts.map +1 -0
- package/dist/security/webhook.js +133 -0
- package/dist/security/webhook.js.map +1 -0
- package/dist/seo/ai-bots.d.ts +56 -0
- package/dist/seo/ai-bots.d.ts.map +1 -0
- package/dist/seo/ai-bots.js +125 -0
- package/dist/seo/ai-bots.js.map +1 -0
- package/dist/seo/ai-crawler-log.d.ts +14 -0
- package/dist/seo/ai-crawler-log.d.ts.map +1 -0
- package/dist/seo/ai-crawler-log.js +48 -0
- package/dist/seo/ai-crawler-log.js.map +1 -0
- package/dist/seo/alt-text.d.ts +39 -0
- package/dist/seo/alt-text.d.ts.map +1 -0
- package/dist/seo/alt-text.js +67 -0
- package/dist/seo/alt-text.js.map +1 -0
- package/dist/seo/analysis.d.ts +75 -0
- package/dist/seo/analysis.d.ts.map +1 -0
- package/dist/seo/analysis.js +641 -0
- package/dist/seo/analysis.js.map +1 -0
- package/dist/seo/audit-engine.d.ts +124 -0
- package/dist/seo/audit-engine.d.ts.map +1 -0
- package/dist/seo/audit-engine.js +534 -0
- package/dist/seo/audit-engine.js.map +1 -0
- package/dist/seo/audit-runner.d.ts +84 -0
- package/dist/seo/audit-runner.d.ts.map +1 -0
- package/dist/seo/audit-runner.js +372 -0
- package/dist/seo/audit-runner.js.map +1 -0
- package/dist/seo/audit-signals.d.ts +28 -0
- package/dist/seo/audit-signals.d.ts.map +1 -0
- package/dist/seo/audit-signals.js +133 -0
- package/dist/seo/audit-signals.js.map +1 -0
- package/dist/seo/config-store.d.ts +99 -0
- package/dist/seo/config-store.d.ts.map +1 -0
- package/dist/seo/config-store.js +194 -0
- package/dist/seo/config-store.js.map +1 -0
- package/dist/seo/confirm-broken-links.d.ts +48 -0
- package/dist/seo/confirm-broken-links.d.ts.map +1 -0
- package/dist/seo/confirm-broken-links.js +135 -0
- package/dist/seo/confirm-broken-links.js.map +1 -0
- package/dist/seo/content-markdown.d.ts +26 -0
- package/dist/seo/content-markdown.d.ts.map +1 -0
- package/dist/seo/content-markdown.js +235 -0
- package/dist/seo/content-markdown.js.map +1 -0
- package/dist/seo/document-content.d.ts +18 -0
- package/dist/seo/document-content.d.ts.map +1 -0
- package/dist/seo/document-content.js +80 -0
- package/dist/seo/document-content.js.map +1 -0
- package/dist/seo/document-path.d.ts +33 -0
- package/dist/seo/document-path.d.ts.map +1 -0
- package/dist/seo/document-path.js +44 -0
- package/dist/seo/document-path.js.map +1 -0
- package/dist/seo/feeds.d.ts +44 -0
- package/dist/seo/feeds.d.ts.map +1 -0
- package/dist/seo/feeds.js +95 -0
- package/dist/seo/feeds.js.map +1 -0
- package/dist/seo/fix-brief-export.d.ts +47 -0
- package/dist/seo/fix-brief-export.d.ts.map +1 -0
- package/dist/seo/fix-brief-export.js +224 -0
- package/dist/seo/fix-brief-export.js.map +1 -0
- package/dist/seo/index-status.d.ts +56 -0
- package/dist/seo/index-status.d.ts.map +1 -0
- package/dist/seo/index-status.js +193 -0
- package/dist/seo/index-status.js.map +1 -0
- package/dist/seo/index.d.ts +68 -0
- package/dist/seo/index.d.ts.map +1 -0
- package/dist/seo/index.js +36 -0
- package/dist/seo/index.js.map +1 -0
- package/dist/seo/issue-batch-briefs.d.ts +37 -0
- package/dist/seo/issue-batch-briefs.d.ts.map +1 -0
- package/dist/seo/issue-batch-briefs.js +85 -0
- package/dist/seo/issue-batch-briefs.js.map +1 -0
- package/dist/seo/issue-content-brief.d.ts +51 -0
- package/dist/seo/issue-content-brief.d.ts.map +1 -0
- package/dist/seo/issue-content-brief.js +267 -0
- package/dist/seo/issue-content-brief.js.map +1 -0
- package/dist/seo/issue-content-research.d.ts +51 -0
- package/dist/seo/issue-content-research.d.ts.map +1 -0
- package/dist/seo/issue-content-research.js +303 -0
- package/dist/seo/issue-content-research.js.map +1 -0
- package/dist/seo/issue-fix-ai.d.ts +39 -0
- package/dist/seo/issue-fix-ai.d.ts.map +1 -0
- package/dist/seo/issue-fix-ai.js +320 -0
- package/dist/seo/issue-fix-ai.js.map +1 -0
- package/dist/seo/issue-fix-redirect.d.ts +18 -0
- package/dist/seo/issue-fix-redirect.d.ts.map +1 -0
- package/dist/seo/issue-fix-redirect.js +153 -0
- package/dist/seo/issue-fix-redirect.js.map +1 -0
- package/dist/seo/issue-fix.d.ts +72 -0
- package/dist/seo/issue-fix.d.ts.map +1 -0
- package/dist/seo/issue-fix.js +266 -0
- package/dist/seo/issue-fix.js.map +1 -0
- package/dist/seo/link-graph.d.ts +54 -0
- package/dist/seo/link-graph.d.ts.map +1 -0
- package/dist/seo/link-graph.js +0 -0
- package/dist/seo/link-graph.js.map +1 -0
- package/dist/seo/link-probe.d.ts +49 -0
- package/dist/seo/link-probe.d.ts.map +1 -0
- package/dist/seo/link-probe.js +147 -0
- package/dist/seo/link-probe.js.map +1 -0
- package/dist/seo/llms-select.d.ts +34 -0
- package/dist/seo/llms-select.d.ts.map +1 -0
- package/dist/seo/llms-select.js +67 -0
- package/dist/seo/llms-select.js.map +1 -0
- package/dist/seo/llms-txt.d.ts +40 -0
- package/dist/seo/llms-txt.d.ts.map +1 -0
- package/dist/seo/llms-txt.js +177 -0
- package/dist/seo/llms-txt.js.map +1 -0
- package/dist/seo/meta-tags.d.ts +108 -0
- package/dist/seo/meta-tags.d.ts.map +1 -0
- package/dist/seo/meta-tags.js +353 -0
- package/dist/seo/meta-tags.js.map +1 -0
- package/dist/seo/migrate-meta.d.ts +23 -0
- package/dist/seo/migrate-meta.d.ts.map +1 -0
- package/dist/seo/migrate-meta.js +114 -0
- package/dist/seo/migrate-meta.js.map +1 -0
- package/dist/seo/migrate-schema.d.ts +28 -0
- package/dist/seo/migrate-schema.d.ts.map +1 -0
- package/dist/seo/migrate-schema.js +119 -0
- package/dist/seo/migrate-schema.js.map +1 -0
- package/dist/seo/page-meta.d.ts +179 -0
- package/dist/seo/page-meta.d.ts.map +1 -0
- package/dist/seo/page-meta.js +710 -0
- package/dist/seo/page-meta.js.map +1 -0
- package/dist/seo/public-site-url.d.ts +16 -0
- package/dist/seo/public-site-url.d.ts.map +1 -0
- package/dist/seo/public-site-url.js +39 -0
- package/dist/seo/public-site-url.js.map +1 -0
- package/dist/seo/resolve-path.d.ts +22 -0
- package/dist/seo/resolve-path.d.ts.map +1 -0
- package/dist/seo/resolve-path.js +53 -0
- package/dist/seo/resolve-path.js.map +1 -0
- package/dist/seo/rewrite-public-origin.d.ts +12 -0
- package/dist/seo/rewrite-public-origin.d.ts.map +1 -0
- package/dist/seo/rewrite-public-origin.js +17 -0
- package/dist/seo/rewrite-public-origin.js.map +1 -0
- package/dist/seo/robots.d.ts +45 -0
- package/dist/seo/robots.d.ts.map +1 -0
- package/dist/seo/robots.js +90 -0
- package/dist/seo/robots.js.map +1 -0
- package/dist/seo/schema-sync.d.ts +65 -0
- package/dist/seo/schema-sync.d.ts.map +1 -0
- package/dist/seo/schema-sync.js +163 -0
- package/dist/seo/schema-sync.js.map +1 -0
- package/dist/seo/score.d.ts +132 -0
- package/dist/seo/score.d.ts.map +1 -0
- package/dist/seo/score.js +216 -0
- package/dist/seo/score.js.map +1 -0
- package/dist/seo/serving-origin.d.ts +42 -0
- package/dist/seo/serving-origin.d.ts.map +1 -0
- package/dist/seo/serving-origin.js +83 -0
- package/dist/seo/serving-origin.js.map +1 -0
- package/dist/seo/site-identity.d.ts +60 -0
- package/dist/seo/site-identity.d.ts.map +1 -0
- package/dist/seo/site-identity.js +109 -0
- package/dist/seo/site-identity.js.map +1 -0
- package/dist/seo/sitemap-notify.d.ts +123 -0
- package/dist/seo/sitemap-notify.d.ts.map +1 -0
- package/dist/seo/sitemap-notify.js +270 -0
- package/dist/seo/sitemap-notify.js.map +1 -0
- package/dist/seo/sitemap-public.d.ts +43 -0
- package/dist/seo/sitemap-public.d.ts.map +1 -0
- package/dist/seo/sitemap-public.js +213 -0
- package/dist/seo/sitemap-public.js.map +1 -0
- package/dist/seo/title-templates.d.ts +80 -0
- package/dist/seo/title-templates.d.ts.map +1 -0
- package/dist/seo/title-templates.js +175 -0
- package/dist/seo/title-templates.js.map +1 -0
- package/dist/server-site.d.ts +55 -0
- package/dist/server-site.d.ts.map +1 -0
- package/dist/server-site.js +184 -0
- package/dist/server-site.js.map +1 -0
- package/dist/setup/index.d.ts +68 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +153 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/site.d.ts +178 -0
- package/dist/site.d.ts.map +1 -0
- package/dist/site.js +222 -0
- package/dist/site.js.map +1 -0
- package/dist/storage/auto-wire.d.ts +14 -0
- package/dist/storage/auto-wire.d.ts.map +1 -0
- package/dist/storage/auto-wire.js +60 -0
- package/dist/storage/auto-wire.js.map +1 -0
- package/dist/storage/index.d.ts +21 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +14 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/templates/index.d.ts +16 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +23 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/upgrade/changelog.d.ts +18 -0
- package/dist/upgrade/changelog.d.ts.map +1 -0
- package/dist/upgrade/changelog.js +60 -0
- package/dist/upgrade/changelog.js.map +1 -0
- package/dist/upgrade/index.d.ts +7 -0
- package/dist/upgrade/index.d.ts.map +1 -0
- package/dist/upgrade/index.js +4 -0
- package/dist/upgrade/index.js.map +1 -0
- package/dist/upgrade/upgrade-pr.d.ts +16 -0
- package/dist/upgrade/upgrade-pr.d.ts.map +1 -0
- package/dist/upgrade/upgrade-pr.js +128 -0
- package/dist/upgrade/upgrade-pr.js.map +1 -0
- package/dist/upgrade/version-check.d.ts +59 -0
- package/dist/upgrade/version-check.d.ts.map +1 -0
- package/dist/upgrade/version-check.js +142 -0
- package/dist/upgrade/version-check.js.map +1 -0
- package/dist/validation/publish.d.ts +53 -0
- package/dist/validation/publish.d.ts.map +1 -0
- package/dist/validation/publish.js +75 -0
- package/dist/validation/publish.js.map +1 -0
- package/dist/webhooks/index.d.ts +99 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +387 -0
- package/dist/webhooks/index.js.map +1 -0
- package/dist/webhooks/signing.d.ts +68 -0
- package/dist/webhooks/signing.d.ts.map +1 -0
- package/dist/webhooks/signing.js +98 -0
- package/dist/webhooks/signing.js.map +1 -0
- package/dist/workflow/index.d.ts +8 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +56 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflows/index.d.ts +30 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +14 -0
- package/dist/workflows/index.js.map +1 -0
- package/package.json +250 -0
- package/prisma/migrations/0001_init/migration.sql +941 -0
- package/prisma/migrations/0002_media_usage_field_path/migration.sql +11 -0
- package/prisma/migrations/0003_ai_crawler_hits/migration.sql +21 -0
- package/prisma/migrations/0004_drop_search_vector/migration.sql +4 -0
- package/prisma/migrations/0005_script_tag_delivery_controls/migration.sql +8 -0
- package/prisma/migrations/0006_totp_last_step/migration.sql +4 -0
- package/prisma/migrations/0007_workflow_fk_drop_dead_enums/migration.sql +27 -0
- package/prisma/migrations/0008_form_delivery_attempts/migration.sql +29 -0
- package/prisma/migrations/0009_webhook_secret_rotation/migration.sql +6 -0
- package/prisma/migrations/0010_media_is_decorative/migration.sql +3 -0
- package/prisma/migrations/0011_media_content_hash/migration.sql +4 -0
- package/prisma/migrations/0012_rename_to_prenta/migration.sql +89 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +995 -0
- package/prisma/seed.ts +82 -0
- package/schema-fragments/cms-schema.prisma +526 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { canonicalizeHostname, isPrivateAddress } from './ip-canon.js';
|
|
2
|
+
/**
|
|
3
|
+
* Validate that a webhook URL does not target private/internal networks
|
|
4
|
+
* (string-level SSRF prevention).
|
|
5
|
+
*
|
|
6
|
+
* Catches every IP-literal encoding `getaddrinfo` accepts: decimal
|
|
7
|
+
* (`http://2130706433`), octal (`http://0177.0.0.1`), hex
|
|
8
|
+
* (`http://0x7f.0.0.1`), short-form (`http://127.1`), IPv4-mapped IPv6
|
|
9
|
+
* (`http://[::ffff:127.0.0.1]`), bracketed IPv6, and the reserved
|
|
10
|
+
* `100.64.0.0/10` carrier-grade NAT range that previously slipped through.
|
|
11
|
+
*
|
|
12
|
+
* **Important caveat:** this only validates the URL **as written**. A hostname
|
|
13
|
+
* like `attacker-controlled.tld` that resolves to a public IP at validation
|
|
14
|
+
* time and to `127.0.0.1` at fetch time (DNS rebinding) still bypasses this
|
|
15
|
+
* check — `safeFetch` calls `resolveAndCheck()` on top to defend against that.
|
|
16
|
+
*/
|
|
17
|
+
export function validateWebhookUrl(url) {
|
|
18
|
+
let parsed;
|
|
19
|
+
try {
|
|
20
|
+
parsed = new URL(url);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return { valid: false, error: 'Invalid URL' };
|
|
24
|
+
}
|
|
25
|
+
if (!['https:', 'http:'].includes(parsed.protocol)) {
|
|
26
|
+
return { valid: false, error: 'Only HTTP(S) protocols are allowed' };
|
|
27
|
+
}
|
|
28
|
+
// Special-case the well-known names — they're DNS hostnames so the
|
|
29
|
+
// canonicalizer can't catch them via numeric ranges.
|
|
30
|
+
const lowerHost = parsed.hostname.toLowerCase();
|
|
31
|
+
if (lowerHost === 'localhost' || lowerHost === 'ip6-localhost' || lowerHost === 'ip6-loopback') {
|
|
32
|
+
return { valid: false, error: 'Localhost hostnames are not allowed' };
|
|
33
|
+
}
|
|
34
|
+
// metadata.google.internal and AWS' internal DNS shadow real metadata IPs
|
|
35
|
+
// we already block — but the hostname can be redirected via /etc/hosts in
|
|
36
|
+
// self-hosted contexts, so block it explicitly.
|
|
37
|
+
if (lowerHost === 'metadata.google.internal' || lowerHost.endsWith('.internal')) {
|
|
38
|
+
return { valid: false, error: 'Cloud metadata hostnames are not allowed' };
|
|
39
|
+
}
|
|
40
|
+
const canonical = canonicalizeHostname(parsed.hostname);
|
|
41
|
+
if (!canonical.isHostname) {
|
|
42
|
+
// Three sub-cases for `!isHostname`:
|
|
43
|
+
// 1. Valid IP literal that's private → reject with the range reason.
|
|
44
|
+
// 2. Valid IP literal that's public → allow (fall through).
|
|
45
|
+
// 3. Malformed IP literal (e.g. `::1::1`, IPv6 with garbage) →
|
|
46
|
+
// `isValidIp` is false. Fail closed: the URL was clearly not a
|
|
47
|
+
// DNS hostname, so a `getaddrinfo` will reject it too — but
|
|
48
|
+
// worse, on some platforms it may resolve to *something*. Reject
|
|
49
|
+
// here rather than risk that ambiguity.
|
|
50
|
+
if (!canonical.isValidIp) {
|
|
51
|
+
return {
|
|
52
|
+
valid: false,
|
|
53
|
+
error: `Malformed IP literal in URL hostname: ${parsed.hostname}`,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const denied = isPrivateAddress(canonical);
|
|
57
|
+
if (denied) {
|
|
58
|
+
return {
|
|
59
|
+
valid: false,
|
|
60
|
+
error: `Private/internal IP address rejected: ${denied.reason}`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return { valid: true };
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Resolve a hostname's A/AAAA records and verify none of them land in a
|
|
68
|
+
* private range. Pair with `validateWebhookUrl` to defend against DNS
|
|
69
|
+
* rebinding — see `safeFetch`.
|
|
70
|
+
*/
|
|
71
|
+
export async function resolveAndCheck(hostname) {
|
|
72
|
+
// If the hostname is already an IP literal, skip DNS and check directly.
|
|
73
|
+
const directCanonical = canonicalizeHostname(hostname);
|
|
74
|
+
if (!directCanonical.isHostname) {
|
|
75
|
+
// Malformed IP literal — treat as unsafe. Without this, a bad IPv6
|
|
76
|
+
// string (e.g. `::1::garbage`) would slip through the SSRF gate
|
|
77
|
+
// because `isPrivateAddress` legitimately returns null when there's
|
|
78
|
+
// no parsed IP to check.
|
|
79
|
+
if (!directCanonical.isValidIp) {
|
|
80
|
+
return { safe: false, resolvedIp: hostname, error: 'malformed IP literal' };
|
|
81
|
+
}
|
|
82
|
+
const denied = isPrivateAddress(directCanonical);
|
|
83
|
+
if (denied) {
|
|
84
|
+
return { safe: false, resolvedIp: hostname, error: denied.reason };
|
|
85
|
+
}
|
|
86
|
+
return { safe: true, resolvedIp: hostname };
|
|
87
|
+
}
|
|
88
|
+
const { resolve4, resolve6 } = await import('node:dns/promises');
|
|
89
|
+
const ips = [];
|
|
90
|
+
try {
|
|
91
|
+
const v4 = await resolve4(hostname);
|
|
92
|
+
ips.push(...v4);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
/* no A records */
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
const v6 = await resolve6(hostname);
|
|
99
|
+
ips.push(...v6);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
/* no AAAA records */
|
|
103
|
+
}
|
|
104
|
+
if (ips.length === 0) {
|
|
105
|
+
return { safe: false, error: `DNS resolution failed for ${hostname}` };
|
|
106
|
+
}
|
|
107
|
+
// Check EVERY resolved IP, not just the first — a multi-A-record response
|
|
108
|
+
// could mix public + private IPs and we must reject if any single one is
|
|
109
|
+
// private to defeat round-robin DNS rebinding.
|
|
110
|
+
for (const ip of ips) {
|
|
111
|
+
const c = canonicalizeHostname(ip);
|
|
112
|
+
// DNS resolvers return canonical IP literals, so `isValidIp` should be
|
|
113
|
+
// true. If a resolver ever returns something we can't parse, treat it
|
|
114
|
+
// as unsafe rather than trusting it.
|
|
115
|
+
if (!c.isValidIp) {
|
|
116
|
+
return {
|
|
117
|
+
safe: false,
|
|
118
|
+
resolvedIp: ip,
|
|
119
|
+
error: `Unparseable IP returned from DNS for ${hostname}: ${ip}`,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
const denied = isPrivateAddress(c);
|
|
123
|
+
if (denied) {
|
|
124
|
+
return {
|
|
125
|
+
safe: false,
|
|
126
|
+
resolvedIp: ip,
|
|
127
|
+
error: `Resolved IP ${ip} is in a private range: ${denied.reason}`,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return { safe: true, resolvedIp: ips[0] };
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/security/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEtE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,IAAI,MAAW,CAAA;IACf,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;IAC/C,CAAC;IAED,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAA;IACtE,CAAC;IAED,mEAAmE;IACnE,qDAAqD;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;IAC/C,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,eAAe,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QAC/F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAA;IACvE,CAAC;IACD,0EAA0E;IAC1E,0EAA0E;IAC1E,gDAAgD;IAChD,IAAI,SAAS,KAAK,0BAA0B,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAChF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAA;IAC5E,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACvD,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC1B,qCAAqC;QACrC,wEAAwE;QACxE,gEAAgE;QAChE,iEAAiE;QACjE,oEAAoE;QACpE,iEAAiE;QACjE,sEAAsE;QACtE,6CAA6C;QAC7C,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YACzB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,yCAAyC,MAAM,CAAC,QAAQ,EAAE;aAClE,CAAA;QACH,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAA;QAC1C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,yCAAyC,MAAM,CAAC,MAAM,EAAE;aAChE,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB;IAEhB,yEAAyE;IACzE,MAAM,eAAe,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IACtD,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;QAChC,mEAAmE;QACnE,gEAAgE;QAChE,oEAAoE;QACpE,yBAAyB;QACzB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;YAC/B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAA;QAC7E,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAA;QAChD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;QACpE,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;IAC7C,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAEhE,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACnC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACnC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,QAAQ,EAAE,EAAE,CAAA;IACxE,CAAC;IAED,0EAA0E;IAC1E,yEAAyE;IACzE,+CAA+C;IAC/C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAA;QAClC,uEAAuE;QACvE,sEAAsE;QACtE,qCAAqC;QACrC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,UAAU,EAAE,EAAE;gBACd,KAAK,EAAE,wCAAwC,QAAQ,KAAK,EAAE,EAAE;aACjE,CAAA;QACH,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,UAAU,EAAE,EAAE;gBACd,KAAK,EAAE,eAAe,EAAE,2BAA2B,MAAM,CAAC,MAAM,EAAE;aACnE,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;AAC3C,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI crawler taxonomy + robots.txt policy.
|
|
3
|
+
*
|
|
4
|
+
* Not all "AI bots" are equal, and blocking them all is usually the wrong call
|
|
5
|
+
* for visibility:
|
|
6
|
+
*
|
|
7
|
+
* - TRAINING crawlers ingest your content into model weights and never send a
|
|
8
|
+
* user or a citation back. Blocking these has little downside for traffic
|
|
9
|
+
* and is what most "block AI" intentions actually mean.
|
|
10
|
+
* - RETRIEVAL / answer-engine crawlers fetch a page to answer a user's live
|
|
11
|
+
* query and typically cite + link the source (ChatGPT browsing, Perplexity,
|
|
12
|
+
* etc.). Blocking these removes you from AI answers — usually undesirable.
|
|
13
|
+
*
|
|
14
|
+
* So we model the two independently. Lists are curated for 2026 and grouped by
|
|
15
|
+
* vendor for maintainability; keep them conservative (only well-attested UA
|
|
16
|
+
* tokens) to avoid accidentally blocking a general search crawler.
|
|
17
|
+
*/
|
|
18
|
+
/** Crawlers that ingest content for model TRAINING (no citation, no referral). */
|
|
19
|
+
export declare const AI_TRAINING_BOTS: readonly string[];
|
|
20
|
+
/** Answer-engine / live-retrieval crawlers (cite + refer users back). */
|
|
21
|
+
export declare const AI_RETRIEVAL_BOTS: readonly string[];
|
|
22
|
+
export type AiBotCategory = 'training' | 'retrieval';
|
|
23
|
+
export interface DetectedAiBot {
|
|
24
|
+
/** The canonical UA token that matched (e.g. `GPTBot`). */
|
|
25
|
+
token: string;
|
|
26
|
+
category: AiBotCategory;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Identify a known AI crawler from a `User-Agent` string. Substring match
|
|
30
|
+
* (case-insensitive) against the curated taxonomy. TRAINING tokens are checked
|
|
31
|
+
* first so the more specific `*-Extended` variants win over their search-crawler
|
|
32
|
+
* namesakes (e.g. `Applebot-Extended` → training, plain `Applebot` → retrieval).
|
|
33
|
+
* Returns `null` for humans and unknown bots — never guesses.
|
|
34
|
+
*/
|
|
35
|
+
export declare function detectAiBot(userAgent: string | null | undefined): DetectedAiBot | null;
|
|
36
|
+
export type AiBotStance = 'allow' | 'block';
|
|
37
|
+
export interface AiBotPolicy {
|
|
38
|
+
/** Stance toward TRAINING crawlers. Default `allow`. */
|
|
39
|
+
training?: AiBotStance;
|
|
40
|
+
/** Stance toward RETRIEVAL / answer-engine crawlers. Default `allow`. */
|
|
41
|
+
retrieval?: AiBotStance;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build the robots.txt User-agent/Disallow line groups for blocked AI bots.
|
|
45
|
+
*
|
|
46
|
+
* Precedence:
|
|
47
|
+
* 1. An explicit `policy` (nuanced training vs retrieval) wins.
|
|
48
|
+
* 2. Otherwise the legacy `blockAIBots` boolean blocks BOTH groups (preserves
|
|
49
|
+
* pre-nuance behavior for sites that set it).
|
|
50
|
+
* 3. Otherwise nothing is emitted.
|
|
51
|
+
*
|
|
52
|
+
* Returns a flat array of robots.txt lines (each blocked bot gets its own
|
|
53
|
+
* `User-agent` + `Disallow: /` + blank-line group). Pure + deterministic.
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildAiBotRobotsLines(policy: AiBotPolicy | undefined, legacyBlockAIBots: boolean | undefined): string[];
|
|
56
|
+
//# sourceMappingURL=ai-bots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-bots.d.ts","sourceRoot":"","sources":["../../src/seo/ai-bots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EA0B7C,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAiB9C,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,aAAa,CAAA;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,GAAG,IAAI,CAUtF;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,CAAA;AAE3C,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,WAAW,CAAA;IACtB,yEAAyE;IACzE,SAAS,CAAC,EAAE,WAAW,CAAA;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,iBAAiB,EAAE,OAAO,GAAG,SAAS,GACrC,MAAM,EAAE,CAyBV"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI crawler taxonomy + robots.txt policy.
|
|
3
|
+
*
|
|
4
|
+
* Not all "AI bots" are equal, and blocking them all is usually the wrong call
|
|
5
|
+
* for visibility:
|
|
6
|
+
*
|
|
7
|
+
* - TRAINING crawlers ingest your content into model weights and never send a
|
|
8
|
+
* user or a citation back. Blocking these has little downside for traffic
|
|
9
|
+
* and is what most "block AI" intentions actually mean.
|
|
10
|
+
* - RETRIEVAL / answer-engine crawlers fetch a page to answer a user's live
|
|
11
|
+
* query and typically cite + link the source (ChatGPT browsing, Perplexity,
|
|
12
|
+
* etc.). Blocking these removes you from AI answers — usually undesirable.
|
|
13
|
+
*
|
|
14
|
+
* So we model the two independently. Lists are curated for 2026 and grouped by
|
|
15
|
+
* vendor for maintainability; keep them conservative (only well-attested UA
|
|
16
|
+
* tokens) to avoid accidentally blocking a general search crawler.
|
|
17
|
+
*/
|
|
18
|
+
/** Crawlers that ingest content for model TRAINING (no citation, no referral). */
|
|
19
|
+
export const AI_TRAINING_BOTS = [
|
|
20
|
+
// OpenAI
|
|
21
|
+
'GPTBot',
|
|
22
|
+
// Anthropic
|
|
23
|
+
'ClaudeBot',
|
|
24
|
+
'anthropic-ai',
|
|
25
|
+
// Google (Gemini training; distinct from Googlebot search)
|
|
26
|
+
'Google-Extended',
|
|
27
|
+
// Common Crawl (feeds many training sets)
|
|
28
|
+
'CCBot',
|
|
29
|
+
// ByteDance
|
|
30
|
+
'Bytespider',
|
|
31
|
+
// Apple (Apple Intelligence training; distinct from Applebot search)
|
|
32
|
+
'Applebot-Extended',
|
|
33
|
+
// Meta
|
|
34
|
+
'Meta-ExternalAgent',
|
|
35
|
+
'FacebookBot',
|
|
36
|
+
// Misc training/scraping crawlers
|
|
37
|
+
'Diffbot',
|
|
38
|
+
'Omgilibot',
|
|
39
|
+
'omgili',
|
|
40
|
+
'PanguBot',
|
|
41
|
+
'Timpibot',
|
|
42
|
+
'cohere-ai',
|
|
43
|
+
'ImagesiftBot',
|
|
44
|
+
'PetalBot',
|
|
45
|
+
];
|
|
46
|
+
/** Answer-engine / live-retrieval crawlers (cite + refer users back). */
|
|
47
|
+
export const AI_RETRIEVAL_BOTS = [
|
|
48
|
+
// OpenAI
|
|
49
|
+
'OAI-SearchBot',
|
|
50
|
+
'ChatGPT-User',
|
|
51
|
+
// Perplexity
|
|
52
|
+
'PerplexityBot',
|
|
53
|
+
'Perplexity-User',
|
|
54
|
+
// Anthropic retrieval
|
|
55
|
+
'Claude-Web',
|
|
56
|
+
'Claude-User',
|
|
57
|
+
// Apple search (Siri/Spotlight)
|
|
58
|
+
'Applebot',
|
|
59
|
+
// Amazon (Alexa)
|
|
60
|
+
'Amazonbot',
|
|
61
|
+
// You.com / DuckDuckGo assist
|
|
62
|
+
'YouBot',
|
|
63
|
+
'DuckAssistBot',
|
|
64
|
+
];
|
|
65
|
+
/**
|
|
66
|
+
* Identify a known AI crawler from a `User-Agent` string. Substring match
|
|
67
|
+
* (case-insensitive) against the curated taxonomy. TRAINING tokens are checked
|
|
68
|
+
* first so the more specific `*-Extended` variants win over their search-crawler
|
|
69
|
+
* namesakes (e.g. `Applebot-Extended` → training, plain `Applebot` → retrieval).
|
|
70
|
+
* Returns `null` for humans and unknown bots — never guesses.
|
|
71
|
+
*/
|
|
72
|
+
export function detectAiBot(userAgent) {
|
|
73
|
+
if (!userAgent)
|
|
74
|
+
return null;
|
|
75
|
+
const ua = userAgent.toLowerCase();
|
|
76
|
+
for (const token of AI_TRAINING_BOTS) {
|
|
77
|
+
if (ua.includes(token.toLowerCase()))
|
|
78
|
+
return { token, category: 'training' };
|
|
79
|
+
}
|
|
80
|
+
for (const token of AI_RETRIEVAL_BOTS) {
|
|
81
|
+
if (ua.includes(token.toLowerCase()))
|
|
82
|
+
return { token, category: 'retrieval' };
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Build the robots.txt User-agent/Disallow line groups for blocked AI bots.
|
|
88
|
+
*
|
|
89
|
+
* Precedence:
|
|
90
|
+
* 1. An explicit `policy` (nuanced training vs retrieval) wins.
|
|
91
|
+
* 2. Otherwise the legacy `blockAIBots` boolean blocks BOTH groups (preserves
|
|
92
|
+
* pre-nuance behavior for sites that set it).
|
|
93
|
+
* 3. Otherwise nothing is emitted.
|
|
94
|
+
*
|
|
95
|
+
* Returns a flat array of robots.txt lines (each blocked bot gets its own
|
|
96
|
+
* `User-agent` + `Disallow: /` + blank-line group). Pure + deterministic.
|
|
97
|
+
*/
|
|
98
|
+
export function buildAiBotRobotsLines(policy, legacyBlockAIBots) {
|
|
99
|
+
let blockTraining;
|
|
100
|
+
let blockRetrieval;
|
|
101
|
+
if (policy && (policy.training || policy.retrieval)) {
|
|
102
|
+
blockTraining = policy.training === 'block';
|
|
103
|
+
blockRetrieval = policy.retrieval === 'block';
|
|
104
|
+
}
|
|
105
|
+
else if (legacyBlockAIBots) {
|
|
106
|
+
blockTraining = true;
|
|
107
|
+
blockRetrieval = true;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
const bots = [];
|
|
113
|
+
if (blockTraining)
|
|
114
|
+
bots.push(...AI_TRAINING_BOTS);
|
|
115
|
+
if (blockRetrieval)
|
|
116
|
+
bots.push(...AI_RETRIEVAL_BOTS);
|
|
117
|
+
const lines = [];
|
|
118
|
+
for (const bot of bots) {
|
|
119
|
+
lines.push(`User-agent: ${bot}`);
|
|
120
|
+
lines.push('Disallow: /');
|
|
121
|
+
lines.push('');
|
|
122
|
+
}
|
|
123
|
+
return lines;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=ai-bots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-bots.js","sourceRoot":"","sources":["../../src/seo/ai-bots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,cAAc;IACd,2DAA2D;IAC3D,iBAAiB;IACjB,0CAA0C;IAC1C,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,qEAAqE;IACrE,mBAAmB;IACnB,OAAO;IACP,oBAAoB;IACpB,aAAa;IACb,kCAAkC;IAClC,SAAS;IACT,WAAW;IACX,QAAQ;IACR,UAAU;IACV,UAAU;IACV,WAAW;IACX,cAAc;IACd,UAAU;CACX,CAAA;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,SAAS;IACT,eAAe;IACf,cAAc;IACd,aAAa;IACb,eAAe;IACf,iBAAiB;IACjB,sBAAsB;IACtB,YAAY;IACZ,aAAa;IACb,gCAAgC;IAChC,UAAU;IACV,iBAAiB;IACjB,WAAW;IACX,8BAA8B;IAC9B,QAAQ;IACR,eAAe;CAChB,CAAA;AAUD;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,SAAoC;IAC9D,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAC3B,MAAM,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,CAAA;IAClC,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAA;IAC9E,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACtC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;IAC/E,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAWD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA+B,EAC/B,iBAAsC;IAEtC,IAAI,aAAsB,CAAA;IAC1B,IAAI,cAAuB,CAAA;IAE3B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,aAAa,GAAG,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAA;QAC3C,cAAc,GAAG,MAAM,CAAC,SAAS,KAAK,OAAO,CAAA;IAC/C,CAAC;SAAM,IAAI,iBAAiB,EAAE,CAAC;QAC7B,aAAa,GAAG,IAAI,CAAA;QACpB,cAAc,GAAG,IAAI,CAAA;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,IAAI,aAAa;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAA;IACjD,IAAI,cAAc;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAA;IAEnD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,CAAA;QAChC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type AiCrawlerSurface = 'llms' | 'llms-full' | 'md' | 'honeypot';
|
|
2
|
+
/** Upsert one aggregated hit. Safe to await on any public route. */
|
|
3
|
+
export declare function recordAiCrawlerHit(db: any, entry: {
|
|
4
|
+
bot: string;
|
|
5
|
+
surface: AiCrawlerSurface;
|
|
6
|
+
category?: string;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Detect a known AI crawler from the request's User-Agent and, if found, record
|
|
10
|
+
* a hit on the given surface. No-op for humans and unknown bots, so the only
|
|
11
|
+
* cost on a normal page request is a header read + taxonomy scan.
|
|
12
|
+
*/
|
|
13
|
+
export declare function recordAiCrawlerFromRequest(db: any, request: Request, surface: AiCrawlerSurface): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=ai-crawler-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-crawler-log.d.ts","sourceRoot":"","sources":["../../src/seo/ai-crawler-log.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,UAAU,CAAA;AAIvE,oEAAoE;AACpE,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,GAAG,EACP,KAAK,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,GAAG,EACP,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI-crawler activity logging for the admin "AI crawler activity" panel.
|
|
3
|
+
*
|
|
4
|
+
* Hits are aggregated per (bot token, surface) via upsert, so storage stays
|
|
5
|
+
* bounded (~known bots × surfaces) and never needs pruning. Recording is always
|
|
6
|
+
* best-effort: a logging failure — or a database that predates the
|
|
7
|
+
* `prenta_ai_crawler_hits` table — must never break a public surface.
|
|
8
|
+
*/
|
|
9
|
+
import { hasModel } from '../api/route-helpers.js';
|
|
10
|
+
import { detectAiBot } from './ai-bots.js';
|
|
11
|
+
const MAX_BOT_LEN = 128;
|
|
12
|
+
/** Upsert one aggregated hit. Safe to await on any public route. */
|
|
13
|
+
export async function recordAiCrawlerHit(db, entry) {
|
|
14
|
+
if (!db || !hasModel(db, 'aiCrawlerHit'))
|
|
15
|
+
return;
|
|
16
|
+
const bot = String(entry.bot ?? '')
|
|
17
|
+
.slice(0, MAX_BOT_LEN)
|
|
18
|
+
.trim();
|
|
19
|
+
if (!bot)
|
|
20
|
+
return;
|
|
21
|
+
const category = entry.category ?? 'other';
|
|
22
|
+
try {
|
|
23
|
+
await db.aiCrawlerHit.upsert({
|
|
24
|
+
where: { bot_surface: { bot, surface: entry.surface } },
|
|
25
|
+
update: { hits: { increment: 1 }, lastSeenAt: new Date(), category },
|
|
26
|
+
create: { bot, surface: entry.surface, category, hits: 1 },
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// best-effort — swallow so logging can never break the response
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Detect a known AI crawler from the request's User-Agent and, if found, record
|
|
35
|
+
* a hit on the given surface. No-op for humans and unknown bots, so the only
|
|
36
|
+
* cost on a normal page request is a header read + taxonomy scan.
|
|
37
|
+
*/
|
|
38
|
+
export async function recordAiCrawlerFromRequest(db, request, surface) {
|
|
39
|
+
const detected = detectAiBot(request.headers.get('user-agent'));
|
|
40
|
+
if (!detected)
|
|
41
|
+
return;
|
|
42
|
+
await recordAiCrawlerHit(db, {
|
|
43
|
+
bot: detected.token,
|
|
44
|
+
surface,
|
|
45
|
+
category: detected.category,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=ai-crawler-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-crawler-log.js","sourceRoot":"","sources":["../../src/seo/ai-crawler-log.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAI1C,MAAM,WAAW,GAAG,GAAG,CAAA;AAEvB,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAO,EACP,KAAoE;IAEpE,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;QAAE,OAAM;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;SAChC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;SACrB,IAAI,EAAE,CAAA;IACT,IAAI,CAAC,GAAG;QAAE,OAAM;IAChB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAA;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;YAC3B,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE;YACvD,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE;YACpE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;SAC3D,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;IAClE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,EAAO,EACP,OAAgB,EAChB,OAAyB;IAEzB,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;IAC/D,IAAI,CAAC,QAAQ;QAAE,OAAM;IACrB,MAAM,kBAAkB,CAAC,EAAE,EAAE;QAC3B,GAAG,EAAE,QAAQ,CAAC,KAAK;QACnB,OAAO;QACP,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical image alt-text analysis, shared by every surface that reports on
|
|
3
|
+
* alt coverage (SEO analysis, the audit engine, the content-health scanner, the
|
|
4
|
+
* cron scan). Previously each had its own regex and they disagreed on the most
|
|
5
|
+
* important edge case — an intentionally *decorative* image — which produced
|
|
6
|
+
* conflicting "missing alt" counts.
|
|
7
|
+
*
|
|
8
|
+
* Rules (chosen to match the long-standing scanner/cron contract: an explicit
|
|
9
|
+
* empty `alt=""` is an intentional, valid decorative choice — only a *missing*
|
|
10
|
+
* `alt` attribute is an error):
|
|
11
|
+
* - DECORATIVE: an empty `alt=""` (the author opted the image out of the
|
|
12
|
+
* accessibility tree), or any image explicitly marked decorative for
|
|
13
|
+
* assistive tech (`role="presentation"`, `role="none"`, `aria-hidden="true"`).
|
|
14
|
+
* Decorative images are correct and never flagged as missing.
|
|
15
|
+
* - MISSING: a non-decorative image with no `alt` attribute at all.
|
|
16
|
+
* - HAS ALT: a non-empty `alt`.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* True when an `<img>` tag is decorative: either an explicit empty `alt=""`, or
|
|
20
|
+
* marked decorative for assistive tech (`role="presentation"`/`"none"` or
|
|
21
|
+
* `aria-hidden="true"`). A descriptive (non-empty) alt is never decorative.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isDecorativeImgTag(tag: string): boolean;
|
|
24
|
+
export interface ImageAltAnalysis {
|
|
25
|
+
/** All `<img>` tags found. */
|
|
26
|
+
total: number;
|
|
27
|
+
/** Non-decorative images that have non-empty alt text. */
|
|
28
|
+
withAlt: number;
|
|
29
|
+
/** Images correctly marked decorative (excluded from coverage math). */
|
|
30
|
+
decorative: number;
|
|
31
|
+
/** Non-decorative images with no/empty alt. */
|
|
32
|
+
missing: number;
|
|
33
|
+
/** The non-empty alt strings, trimmed. */
|
|
34
|
+
altTexts: string[];
|
|
35
|
+
}
|
|
36
|
+
export declare function analyzeImageAlts(html: string | null | undefined): ImageAltAnalysis;
|
|
37
|
+
/** Count images missing alt text (decorative images excluded). */
|
|
38
|
+
export declare function countMissingAltImages(html: string | null | undefined): number;
|
|
39
|
+
//# sourceMappingURL=alt-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alt-text.d.ts","sourceRoot":"","sources":["../../src/seo/alt-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAYH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQvD;AAED,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAA;IACf,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAA;IAClB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,CAiBlF;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAE7E"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical image alt-text analysis, shared by every surface that reports on
|
|
3
|
+
* alt coverage (SEO analysis, the audit engine, the content-health scanner, the
|
|
4
|
+
* cron scan). Previously each had its own regex and they disagreed on the most
|
|
5
|
+
* important edge case — an intentionally *decorative* image — which produced
|
|
6
|
+
* conflicting "missing alt" counts.
|
|
7
|
+
*
|
|
8
|
+
* Rules (chosen to match the long-standing scanner/cron contract: an explicit
|
|
9
|
+
* empty `alt=""` is an intentional, valid decorative choice — only a *missing*
|
|
10
|
+
* `alt` attribute is an error):
|
|
11
|
+
* - DECORATIVE: an empty `alt=""` (the author opted the image out of the
|
|
12
|
+
* accessibility tree), or any image explicitly marked decorative for
|
|
13
|
+
* assistive tech (`role="presentation"`, `role="none"`, `aria-hidden="true"`).
|
|
14
|
+
* Decorative images are correct and never flagged as missing.
|
|
15
|
+
* - MISSING: a non-decorative image with no `alt` attribute at all.
|
|
16
|
+
* - HAS ALT: a non-empty `alt`.
|
|
17
|
+
*/
|
|
18
|
+
const IMG_TAG_RE = /<img\b[^>]*>/gi;
|
|
19
|
+
function getAttr(tag, name) {
|
|
20
|
+
// The negative lookbehind prevents matching a hyphenated/namespaced attribute
|
|
21
|
+
// that merely *ends* with `name` (e.g. `data-default-alt="…"` must not be read
|
|
22
|
+
// as the `alt` attribute).
|
|
23
|
+
const m = tag.match(new RegExp(`(?<![-\\w:])${name}\\s*=\\s*["']([^"']*)["']`, 'i'));
|
|
24
|
+
return m ? (m[1] ?? '') : null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* True when an `<img>` tag is decorative: either an explicit empty `alt=""`, or
|
|
28
|
+
* marked decorative for assistive tech (`role="presentation"`/`"none"` or
|
|
29
|
+
* `aria-hidden="true"`). A descriptive (non-empty) alt is never decorative.
|
|
30
|
+
*/
|
|
31
|
+
export function isDecorativeImgTag(tag) {
|
|
32
|
+
const alt = getAttr(tag, 'alt');
|
|
33
|
+
if (alt !== null && alt.trim().length > 0)
|
|
34
|
+
return false;
|
|
35
|
+
if (alt !== null && alt.trim().length === 0)
|
|
36
|
+
return true;
|
|
37
|
+
// No alt attribute at all: decorative only if explicitly marked so.
|
|
38
|
+
const role = getAttr(tag, 'role')?.toLowerCase();
|
|
39
|
+
const ariaHidden = getAttr(tag, 'aria-hidden')?.toLowerCase();
|
|
40
|
+
return role === 'presentation' || role === 'none' || ariaHidden === 'true';
|
|
41
|
+
}
|
|
42
|
+
export function analyzeImageAlts(html) {
|
|
43
|
+
const result = { total: 0, withAlt: 0, decorative: 0, missing: 0, altTexts: [] };
|
|
44
|
+
if (!html)
|
|
45
|
+
return result;
|
|
46
|
+
const tags = html.match(IMG_TAG_RE) ?? [];
|
|
47
|
+
result.total = tags.length;
|
|
48
|
+
for (const tag of tags) {
|
|
49
|
+
const alt = getAttr(tag, 'alt');
|
|
50
|
+
if (alt !== null && alt.trim().length > 0) {
|
|
51
|
+
result.withAlt++;
|
|
52
|
+
result.altTexts.push(alt.trim());
|
|
53
|
+
}
|
|
54
|
+
else if (isDecorativeImgTag(tag)) {
|
|
55
|
+
result.decorative++;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
result.missing++;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
/** Count images missing alt text (decorative images excluded). */
|
|
64
|
+
export function countMissingAltImages(html) {
|
|
65
|
+
return analyzeImageAlts(html).missing;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=alt-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alt-text.js","sourceRoot":"","sources":["../../src/seo/alt-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,UAAU,GAAG,gBAAgB,CAAA;AAEnC,SAAS,OAAO,CAAC,GAAW,EAAE,IAAY;IACxC,8EAA8E;IAC9E,+EAA+E;IAC/E,2BAA2B;IAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,eAAe,IAAI,2BAA2B,EAAE,GAAG,CAAC,CAAC,CAAA;IACpF,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC/B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACvD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACxD,oEAAoE;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,WAAW,EAAE,CAAA;IAC7D,OAAO,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,CAAA;AAC5E,CAAC;AAeD,MAAM,UAAU,gBAAgB,CAAC,IAA+B;IAC9D,MAAM,MAAM,GAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IAClG,IAAI,CAAC,IAAI;QAAE,OAAO,MAAM,CAAA;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;IACzC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC/B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,OAAO,EAAE,CAAA;YAChB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;QAClC,CAAC;aAAM,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,UAAU,EAAE,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,EAAE,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,qBAAqB,CAAC,IAA+B;IACnE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAA;AACvC,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export interface SEOAnalysisResult {
|
|
2
|
+
score: number;
|
|
3
|
+
checks: SEOCheck[];
|
|
4
|
+
}
|
|
5
|
+
export interface SEOCheck {
|
|
6
|
+
id: string;
|
|
7
|
+
category: 'keyphrase' | 'readability' | 'seo' | 'social';
|
|
8
|
+
title: string;
|
|
9
|
+
status: 'good' | 'improvement' | 'problem';
|
|
10
|
+
description: string;
|
|
11
|
+
}
|
|
12
|
+
export interface AnalysisInput {
|
|
13
|
+
title: string;
|
|
14
|
+
slug: string;
|
|
15
|
+
content: string;
|
|
16
|
+
metaTitle?: string;
|
|
17
|
+
metaDescription?: string;
|
|
18
|
+
focusKeyphrase?: string;
|
|
19
|
+
canonical?: string;
|
|
20
|
+
ogTitle?: string;
|
|
21
|
+
ogDescription?: string;
|
|
22
|
+
ogImage?: string;
|
|
23
|
+
isCornerstone?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface ReadabilityResult {
|
|
26
|
+
fleschScore: number;
|
|
27
|
+
fleschLabel: string;
|
|
28
|
+
avgSentenceLength: number;
|
|
29
|
+
avgWordLength: number;
|
|
30
|
+
passiveVoicePercent: number;
|
|
31
|
+
wordCount: number;
|
|
32
|
+
sentenceCount: number;
|
|
33
|
+
paragraphCount: number;
|
|
34
|
+
readingTimeMinutes: number;
|
|
35
|
+
}
|
|
36
|
+
/** Remove all HTML tags, returning plain text. */
|
|
37
|
+
export declare function stripHtmlTags(html: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Estimate the syllable count of an English word.
|
|
40
|
+
*
|
|
41
|
+
* Heuristic: count vowel groups, subtract 1 for a trailing silent 'e',
|
|
42
|
+
* and clamp to a minimum of 1.
|
|
43
|
+
*/
|
|
44
|
+
export declare function countSyllables(word: string): number;
|
|
45
|
+
/** Detect passive voice in a single sentence. */
|
|
46
|
+
export declare function detectPassiveVoice(sentence: string): boolean;
|
|
47
|
+
/** Split plain text into sentences. */
|
|
48
|
+
export declare function splitSentences(text: string): string[];
|
|
49
|
+
/** Split plain text into paragraphs (double newlines or `<p>` boundaries). */
|
|
50
|
+
export declare function splitParagraphs(text: string): string[];
|
|
51
|
+
/**
|
|
52
|
+
* Extract headings of a given level from content that may be HTML **or**
|
|
53
|
+
* Markdown. The content analysis runs against whatever editors store in the
|
|
54
|
+
* body field; rich-text collections store HTML while markdown collections store
|
|
55
|
+
* raw `#`/`##` ATX (and `===`/`---` Setext) headings. Matching only HTML tags
|
|
56
|
+
* made every markdown post fail the "no H1 / no subheadings" checks. This
|
|
57
|
+
* recognises both syntaxes so the score reflects the real document structure.
|
|
58
|
+
*/
|
|
59
|
+
export declare function extractHeadings(content: string, level: 1 | 2 | 3 | 4): string[];
|
|
60
|
+
/**
|
|
61
|
+
* Run a comprehensive SEO analysis on the given content and metadata.
|
|
62
|
+
*
|
|
63
|
+
* Returns a 0-100 score together with detailed per-check results across
|
|
64
|
+
* keyphrase, SEO, readability, and social categories.
|
|
65
|
+
*/
|
|
66
|
+
export declare function analyzeContent(input: AnalysisInput): SEOAnalysisResult;
|
|
67
|
+
/**
|
|
68
|
+
* Calculate readability metrics for a block of plain text.
|
|
69
|
+
*
|
|
70
|
+
* Includes the Flesch reading ease score, average sentence/word lengths,
|
|
71
|
+
* passive voice percentage, word/sentence/paragraph counts, and estimated
|
|
72
|
+
* reading time.
|
|
73
|
+
*/
|
|
74
|
+
export declare function calculateReadability(text: string): ReadabilityResult;
|
|
75
|
+
//# sourceMappingURL=analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/seo/analysis.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,QAAQ,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,WAAW,GAAG,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAA;IACxD,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAA;IAC1C,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AA8DD,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAalD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsBnD;AAED,iDAAiD;AACjD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAa5D;AAED,uCAAuC;AACvC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAOrD;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKtD;AA+BD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAiC/E;AA2DD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB,CAsZtE;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAsCpE"}
|