@se-studio/core-ui 0.0.0-next16-20260822103555
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/ANALYTICS.md +160 -0
- package/CHANGELOG.md +2565 -0
- package/CMS_INFRASTRUCTURE.md +370 -0
- package/CONSENT.md +121 -0
- package/README.md +638 -0
- package/dist/CmsRendererConfig.d.ts +259 -0
- package/dist/CmsRendererConfig.d.ts.map +1 -0
- package/dist/CmsRendererConfig.js +2 -0
- package/dist/CmsRendererConfig.js.map +1 -0
- package/dist/__mocks__/server-only.d.ts +2 -0
- package/dist/__mocks__/server-only.d.ts.map +1 -0
- package/dist/__mocks__/server-only.js +2 -0
- package/dist/__mocks__/server-only.js.map +1 -0
- package/dist/analytics/AnalyticsPageTracker.d.ts +11 -0
- package/dist/analytics/AnalyticsPageTracker.d.ts.map +1 -0
- package/dist/analytics/AnalyticsPageTracker.js +26 -0
- package/dist/analytics/AnalyticsPageTracker.js.map +1 -0
- package/dist/analytics/AnalyticsProvider.d.ts +18 -0
- package/dist/analytics/AnalyticsProvider.d.ts.map +1 -0
- package/dist/analytics/AnalyticsProvider.js +48 -0
- package/dist/analytics/AnalyticsProvider.js.map +1 -0
- package/dist/analytics/adapters/CompositeAnalyticsAdapter.d.ts +13 -0
- package/dist/analytics/adapters/CompositeAnalyticsAdapter.d.ts.map +1 -0
- package/dist/analytics/adapters/CompositeAnalyticsAdapter.js +35 -0
- package/dist/analytics/adapters/CompositeAnalyticsAdapter.js.map +1 -0
- package/dist/analytics/adapters/ConsentAwareAdapter.d.ts +20 -0
- package/dist/analytics/adapters/ConsentAwareAdapter.d.ts.map +1 -0
- package/dist/analytics/adapters/ConsentAwareAdapter.js +35 -0
- package/dist/analytics/adapters/ConsentAwareAdapter.js.map +1 -0
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.d.ts +12 -0
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.d.ts.map +1 -0
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.js +22 -0
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.js.map +1 -0
- package/dist/analytics/adapters/GoogleTagManagerAdapter.d.ts +53 -0
- package/dist/analytics/adapters/GoogleTagManagerAdapter.d.ts.map +1 -0
- package/dist/analytics/adapters/GoogleTagManagerAdapter.js +134 -0
- package/dist/analytics/adapters/GoogleTagManagerAdapter.js.map +1 -0
- package/dist/analytics/adapters/index.d.ts +5 -0
- package/dist/analytics/adapters/index.d.ts.map +1 -0
- package/dist/analytics/adapters/index.js +5 -0
- package/dist/analytics/adapters/index.js.map +1 -0
- package/dist/analytics/types.d.ts +42 -0
- package/dist/analytics/types.d.ts.map +1 -0
- package/dist/analytics/types.js +2 -0
- package/dist/analytics/types.js.map +1 -0
- package/dist/analytics/useAnalytics.d.ts +44 -0
- package/dist/analytics/useAnalytics.d.ts.map +1 -0
- package/dist/analytics/useAnalytics.js +69 -0
- package/dist/analytics/useAnalytics.js.map +1 -0
- package/dist/analytics/video/classifySeek.d.ts +15 -0
- package/dist/analytics/video/classifySeek.d.ts.map +1 -0
- package/dist/analytics/video/classifySeek.js +32 -0
- package/dist/analytics/video/classifySeek.js.map +1 -0
- package/dist/analytics/video/createVideoEngagementSession.d.ts +51 -0
- package/dist/analytics/video/createVideoEngagementSession.d.ts.map +1 -0
- package/dist/analytics/video/createVideoEngagementSession.js +225 -0
- package/dist/analytics/video/createVideoEngagementSession.js.map +1 -0
- package/dist/analytics/video/index.d.ts +6 -0
- package/dist/analytics/video/index.d.ts.map +1 -0
- package/dist/analytics/video/index.js +6 -0
- package/dist/analytics/video/index.js.map +1 -0
- package/dist/analytics/video/loadYouTubeIframeApi.d.ts +50 -0
- package/dist/analytics/video/loadYouTubeIframeApi.d.ts.map +1 -0
- package/dist/analytics/video/loadYouTubeIframeApi.js +52 -0
- package/dist/analytics/video/loadYouTubeIframeApi.js.map +1 -0
- package/dist/analytics/video/useHtml5VideoEngagement.d.ts +8 -0
- package/dist/analytics/video/useHtml5VideoEngagement.d.ts.map +1 -0
- package/dist/analytics/video/useHtml5VideoEngagement.js +67 -0
- package/dist/analytics/video/useHtml5VideoEngagement.js.map +1 -0
- package/dist/analytics/video/useVideoEngagement.d.ts +19 -0
- package/dist/analytics/video/useVideoEngagement.d.ts.map +1 -0
- package/dist/analytics/video/useVideoEngagement.js +80 -0
- package/dist/analytics/video/useVideoEngagement.js.map +1 -0
- package/dist/analytics/video/videoEngagementTypes.d.ts +52 -0
- package/dist/analytics/video/videoEngagementTypes.d.ts.map +1 -0
- package/dist/analytics/video/videoEngagementTypes.js +45 -0
- package/dist/analytics/video/videoEngagementTypes.js.map +1 -0
- package/dist/app-helpers.d.ts +196 -0
- package/dist/app-helpers.d.ts.map +1 -0
- package/dist/app-helpers.js +322 -0
- package/dist/app-helpers.js.map +1 -0
- package/dist/cmsRegistration.d.ts +302 -0
- package/dist/cmsRegistration.d.ts.map +1 -0
- package/dist/cmsRegistration.js +242 -0
- package/dist/cmsRegistration.js.map +1 -0
- package/dist/components/Animation.d.ts +3 -0
- package/dist/components/Animation.d.ts.map +1 -0
- package/dist/components/Animation.js +2 -0
- package/dist/components/Animation.js.map +1 -0
- package/dist/components/AnimationComponent.d.ts +9 -0
- package/dist/components/AnimationComponent.d.ts.map +1 -0
- package/dist/components/AnimationComponent.js +18 -0
- package/dist/components/AnimationComponent.js.map +1 -0
- package/dist/components/ClientMonitor.d.ts +7 -0
- package/dist/components/ClientMonitor.d.ts.map +1 -0
- package/dist/components/ClientMonitor.js +368 -0
- package/dist/components/ClientMonitor.js.map +1 -0
- package/dist/components/CmsCollection.d.ts +68 -0
- package/dist/components/CmsCollection.d.ts.map +1 -0
- package/dist/components/CmsCollection.js +68 -0
- package/dist/components/CmsCollection.js.map +1 -0
- package/dist/components/CmsComponent.d.ts +68 -0
- package/dist/components/CmsComponent.d.ts.map +1 -0
- package/dist/components/CmsComponent.js +68 -0
- package/dist/components/CmsComponent.js.map +1 -0
- package/dist/components/CmsContent.d.ts +105 -0
- package/dist/components/CmsContent.d.ts.map +1 -0
- package/dist/components/CmsContent.js +200 -0
- package/dist/components/CmsContent.js.map +1 -0
- package/dist/components/CmsConversionErrors.d.ts +8 -0
- package/dist/components/CmsConversionErrors.d.ts.map +1 -0
- package/dist/components/CmsConversionErrors.js +51 -0
- package/dist/components/CmsConversionErrors.js.map +1 -0
- package/dist/components/CmsDataError.d.ts +14 -0
- package/dist/components/CmsDataError.d.ts.map +1 -0
- package/dist/components/CmsDataError.js +7 -0
- package/dist/components/CmsDataError.js.map +1 -0
- package/dist/components/CmsDevLayout.d.ts +23 -0
- package/dist/components/CmsDevLayout.d.ts.map +1 -0
- package/dist/components/CmsDevLayout.js +26 -0
- package/dist/components/CmsDevLayout.js.map +1 -0
- package/dist/components/CmsEmbeddedContent.d.ts +10 -0
- package/dist/components/CmsEmbeddedContent.d.ts.map +1 -0
- package/dist/components/CmsEmbeddedContent.js +51 -0
- package/dist/components/CmsEmbeddedContent.js.map +1 -0
- package/dist/components/CmsExternalComponent.d.ts +63 -0
- package/dist/components/CmsExternalComponent.d.ts.map +1 -0
- package/dist/components/CmsExternalComponent.js +68 -0
- package/dist/components/CmsExternalComponent.js.map +1 -0
- package/dist/components/CmsRoutesLayout.d.ts +16 -0
- package/dist/components/CmsRoutesLayout.d.ts.map +1 -0
- package/dist/components/CmsRoutesLayout.js +17 -0
- package/dist/components/CmsRoutesLayout.js.map +1 -0
- package/dist/components/DefaultExternalVideoPlayButton.d.ts +3 -0
- package/dist/components/DefaultExternalVideoPlayButton.d.ts.map +1 -0
- package/dist/components/DefaultExternalVideoPlayButton.js +6 -0
- package/dist/components/DefaultExternalVideoPlayButton.js.map +1 -0
- package/dist/components/DotLottieAnimationComponent.d.ts +16 -0
- package/dist/components/DotLottieAnimationComponent.d.ts.map +1 -0
- package/dist/components/DotLottieAnimationComponent.js +88 -0
- package/dist/components/DotLottieAnimationComponent.js.map +1 -0
- package/dist/components/ErrorBoundary.d.ts +19 -0
- package/dist/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/ErrorBoundary.js +32 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/ExternalVideoComponent.d.ts +9 -0
- package/dist/components/ExternalVideoComponent.d.ts.map +1 -0
- package/dist/components/ExternalVideoComponent.js +39 -0
- package/dist/components/ExternalVideoComponent.js.map +1 -0
- package/dist/components/ExternalVimeoEmbed.d.ts +12 -0
- package/dist/components/ExternalVimeoEmbed.d.ts.map +1 -0
- package/dist/components/ExternalVimeoEmbed.js +211 -0
- package/dist/components/ExternalVimeoEmbed.js.map +1 -0
- package/dist/components/ExternalYouTubeEmbed.d.ts +9 -0
- package/dist/components/ExternalYouTubeEmbed.d.ts.map +1 -0
- package/dist/components/ExternalYouTubeEmbed.js +220 -0
- package/dist/components/ExternalYouTubeEmbed.js.map +1 -0
- package/dist/components/HeroLoopVideo.d.ts +13 -0
- package/dist/components/HeroLoopVideo.d.ts.map +1 -0
- package/dist/components/HeroLoopVideo.js +146 -0
- package/dist/components/HeroLoopVideo.js.map +1 -0
- package/dist/components/HtmlComponent.d.ts +21 -0
- package/dist/components/HtmlComponent.d.ts.map +1 -0
- package/dist/components/HtmlComponent.js +34 -0
- package/dist/components/HtmlComponent.js.map +1 -0
- package/dist/components/HtmlComponentScript.d.ts +12 -0
- package/dist/components/HtmlComponentScript.d.ts.map +1 -0
- package/dist/components/HtmlComponentScript.js +12 -0
- package/dist/components/HtmlComponentScript.js.map +1 -0
- package/dist/components/ImageComponent.d.ts +7 -0
- package/dist/components/ImageComponent.d.ts.map +1 -0
- package/dist/components/ImageComponent.js +20 -0
- package/dist/components/ImageComponent.js.map +1 -0
- package/dist/components/ImageKitClientVideo.d.ts +16 -0
- package/dist/components/ImageKitClientVideo.d.ts.map +1 -0
- package/dist/components/ImageKitClientVideo.js +211 -0
- package/dist/components/ImageKitClientVideo.js.map +1 -0
- package/dist/components/ImageKitHlsVideoClient.d.ts +21 -0
- package/dist/components/ImageKitHlsVideoClient.d.ts.map +1 -0
- package/dist/components/ImageKitHlsVideoClient.js +167 -0
- package/dist/components/ImageKitHlsVideoClient.js.map +1 -0
- package/dist/components/LazyAnimation.d.ts +16 -0
- package/dist/components/LazyAnimation.d.ts.map +1 -0
- package/dist/components/LazyAnimation.js +90 -0
- package/dist/components/LazyAnimation.js.map +1 -0
- package/dist/components/LazyVideo.d.ts +19 -0
- package/dist/components/LazyVideo.d.ts.map +1 -0
- package/dist/components/LazyVideo.js +134 -0
- package/dist/components/LazyVideo.js.map +1 -0
- package/dist/components/LocalVideo.d.ts +10 -0
- package/dist/components/LocalVideo.d.ts.map +1 -0
- package/dist/components/LocalVideo.js +66 -0
- package/dist/components/LocalVideo.js.map +1 -0
- package/dist/components/LocalVideoPlayChrome.d.ts +20 -0
- package/dist/components/LocalVideoPlayChrome.d.ts.map +1 -0
- package/dist/components/LocalVideoPlayChrome.js +22 -0
- package/dist/components/LocalVideoPlayChrome.js.map +1 -0
- package/dist/components/LocalVideoPlayOverlay.d.ts +19 -0
- package/dist/components/LocalVideoPlayOverlay.d.ts.map +1 -0
- package/dist/components/LocalVideoPlayOverlay.js +49 -0
- package/dist/components/LocalVideoPlayOverlay.js.map +1 -0
- package/dist/components/PictureComponent.d.ts +7 -0
- package/dist/components/PictureComponent.d.ts.map +1 -0
- package/dist/components/PictureComponent.js +29 -0
- package/dist/components/PictureComponent.js.map +1 -0
- package/dist/components/Preview.d.ts +2 -0
- package/dist/components/Preview.d.ts.map +1 -0
- package/dist/components/Preview.js +52 -0
- package/dist/components/Preview.js.map +1 -0
- package/dist/components/StructuredData.d.ts +20 -0
- package/dist/components/StructuredData.d.ts.map +1 -0
- package/dist/components/StructuredData.js +116 -0
- package/dist/components/StructuredData.js.map +1 -0
- package/dist/components/SvgComponent.d.ts +7 -0
- package/dist/components/SvgComponent.d.ts.map +1 -0
- package/dist/components/SvgComponent.js +10 -0
- package/dist/components/SvgComponent.js.map +1 -0
- package/dist/components/SvgIconComponent.d.ts +20 -0
- package/dist/components/SvgIconComponent.d.ts.map +1 -0
- package/dist/components/SvgIconComponent.js +23 -0
- package/dist/components/SvgIconComponent.js.map +1 -0
- package/dist/components/SvgImageComponent.d.ts +7 -0
- package/dist/components/SvgImageComponent.d.ts.map +1 -0
- package/dist/components/SvgImageComponent.js +10 -0
- package/dist/components/SvgImageComponent.js.map +1 -0
- package/dist/components/SvgSpriteSheet.d.ts +24 -0
- package/dist/components/SvgSpriteSheet.d.ts.map +1 -0
- package/dist/components/SvgSpriteSheet.js +37 -0
- package/dist/components/SvgSpriteSheet.js.map +1 -0
- package/dist/components/Video.d.ts +11 -0
- package/dist/components/Video.d.ts.map +1 -0
- package/dist/components/Video.js +2 -0
- package/dist/components/Video.js.map +1 -0
- package/dist/components/VideoComponent.d.ts +10 -0
- package/dist/components/VideoComponent.d.ts.map +1 -0
- package/dist/components/VideoComponent.js +22 -0
- package/dist/components/VideoComponent.js.map +1 -0
- package/dist/components/Visual.d.ts +43 -0
- package/dist/components/Visual.d.ts.map +1 -0
- package/dist/components/Visual.js +60 -0
- package/dist/components/Visual.js.map +1 -0
- package/dist/components/VisualComponent.d.ts +83 -0
- package/dist/components/VisualComponent.d.ts.map +1 -0
- package/dist/components/VisualComponent.js +136 -0
- package/dist/components/VisualComponent.js.map +1 -0
- package/dist/components/banner/BannerClient.d.ts +13 -0
- package/dist/components/banner/BannerClient.d.ts.map +1 -0
- package/dist/components/banner/BannerClient.js +38 -0
- package/dist/components/banner/BannerClient.js.map +1 -0
- package/dist/components/banner/BannerManager.d.ts +26 -0
- package/dist/components/banner/BannerManager.d.ts.map +1 -0
- package/dist/components/banner/BannerManager.js +35 -0
- package/dist/components/banner/BannerManager.js.map +1 -0
- package/dist/components/banner/BannerTargeting.d.ts +20 -0
- package/dist/components/banner/BannerTargeting.d.ts.map +1 -0
- package/dist/components/banner/BannerTargeting.js +204 -0
- package/dist/components/banner/BannerTargeting.js.map +1 -0
- package/dist/components/banner/bannerVisibility.d.ts +20 -0
- package/dist/components/banner/bannerVisibility.d.ts.map +1 -0
- package/dist/components/banner/bannerVisibility.js +73 -0
- package/dist/components/banner/bannerVisibility.js.map +1 -0
- package/dist/components/clientMonitorVideos.d.ts +6 -0
- package/dist/components/clientMonitorVideos.d.ts.map +1 -0
- package/dist/components/clientMonitorVideos.js +116 -0
- package/dist/components/clientMonitorVideos.js.map +1 -0
- package/dist/components/dotlottieWasm.d.ts +19 -0
- package/dist/components/dotlottieWasm.d.ts.map +1 -0
- package/dist/components/dotlottieWasm.js +62 -0
- package/dist/components/dotlottieWasm.js.map +1 -0
- package/dist/components/heroLoop.d.ts +22 -0
- package/dist/components/heroLoop.d.ts.map +1 -0
- package/dist/components/heroLoop.js +24 -0
- package/dist/components/heroLoop.js.map +1 -0
- package/dist/components/svg.d.ts +3 -0
- package/dist/components/svg.d.ts.map +1 -0
- package/dist/components/svg.js +64 -0
- package/dist/components/svg.js.map +1 -0
- package/dist/context/ExternalVideoPlayButtonContext.d.ts +7 -0
- package/dist/context/ExternalVideoPlayButtonContext.d.ts.map +1 -0
- package/dist/context/ExternalVideoPlayButtonContext.js +11 -0
- package/dist/context/ExternalVideoPlayButtonContext.js.map +1 -0
- package/dist/elements/RtfOrString.d.ts +26 -0
- package/dist/elements/RtfOrString.d.ts.map +1 -0
- package/dist/elements/RtfOrString.js +13 -0
- package/dist/elements/RtfOrString.js.map +1 -0
- package/dist/elements/TrackedLink.d.ts +25 -0
- package/dist/elements/TrackedLink.d.ts.map +1 -0
- package/dist/elements/TrackedLink.js +96 -0
- package/dist/elements/TrackedLink.js.map +1 -0
- package/dist/elements/UtmLink.d.ts +7 -0
- package/dist/elements/UtmLink.d.ts.map +1 -0
- package/dist/elements/UtmLink.js +24 -0
- package/dist/elements/UtmLink.js.map +1 -0
- package/dist/framework/BackgroundMedia.d.ts +12 -0
- package/dist/framework/BackgroundMedia.d.ts.map +1 -0
- package/dist/framework/BackgroundMedia.js +23 -0
- package/dist/framework/BackgroundMedia.js.map +1 -0
- package/dist/framework/ComponentErrorIndicator.d.ts +12 -0
- package/dist/framework/ComponentErrorIndicator.d.ts.map +1 -0
- package/dist/framework/ComponentErrorIndicator.js +29 -0
- package/dist/framework/ComponentErrorIndicator.js.map +1 -0
- package/dist/framework/ContainedVisual.d.ts +12 -0
- package/dist/framework/ContainedVisual.d.ts.map +1 -0
- package/dist/framework/ContainedVisual.js +14 -0
- package/dist/framework/ContainedVisual.js.map +1 -0
- package/dist/framework/ResponsiveVisual.d.ts +14 -0
- package/dist/framework/ResponsiveVisual.d.ts.map +1 -0
- package/dist/framework/ResponsiveVisual.js +14 -0
- package/dist/framework/ResponsiveVisual.js.map +1 -0
- package/dist/framework/componentErrors.d.ts +19 -0
- package/dist/framework/componentErrors.d.ts.map +1 -0
- package/dist/framework/componentErrors.js +31 -0
- package/dist/framework/componentErrors.js.map +1 -0
- package/dist/hooks/useClickTracking.d.ts +58 -0
- package/dist/hooks/useClickTracking.d.ts.map +1 -0
- package/dist/hooks/useClickTracking.js +48 -0
- package/dist/hooks/useClickTracking.js.map +1 -0
- package/dist/hooks/useDocumentVisible.d.ts +2 -0
- package/dist/hooks/useDocumentVisible.d.ts.map +1 -0
- package/dist/hooks/useDocumentVisible.js +17 -0
- package/dist/hooks/useDocumentVisible.js.map +1 -0
- package/dist/hooks/visibility.d.ts +14 -0
- package/dist/hooks/visibility.d.ts.map +1 -0
- package/dist/hooks/visibility.js +122 -0
- package/dist/hooks/visibility.js.map +1 -0
- package/dist/index.d.ts +134 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +120 -0
- package/dist/index.js.map +1 -0
- package/dist/media-library/MediaLibraryAnimationPlayer.d.ts +9 -0
- package/dist/media-library/MediaLibraryAnimationPlayer.d.ts.map +1 -0
- package/dist/media-library/MediaLibraryAnimationPlayer.js +99 -0
- package/dist/media-library/MediaLibraryAnimationPlayer.js.map +1 -0
- package/dist/media-library/MediaLibraryGrid.d.ts +5 -0
- package/dist/media-library/MediaLibraryGrid.d.ts.map +1 -0
- package/dist/media-library/MediaLibraryGrid.js +88 -0
- package/dist/media-library/MediaLibraryGrid.js.map +1 -0
- package/dist/media-library/MediaLibraryPage.d.ts +17 -0
- package/dist/media-library/MediaLibraryPage.d.ts.map +1 -0
- package/dist/media-library/MediaLibraryPage.js +30 -0
- package/dist/media-library/MediaLibraryPage.js.map +1 -0
- package/dist/media-library/index.d.ts +4 -0
- package/dist/media-library/index.d.ts.map +1 -0
- package/dist/media-library/index.js +4 -0
- package/dist/media-library/index.js.map +1 -0
- package/dist/media-library/types.d.ts +8 -0
- package/dist/media-library/types.d.ts.map +1 -0
- package/dist/media-library/types.js +12 -0
- package/dist/media-library/types.js.map +1 -0
- package/dist/route-handlers/createCmsTxtHandler.d.ts +19 -0
- package/dist/route-handlers/createCmsTxtHandler.d.ts.map +1 -0
- package/dist/route-handlers/createCmsTxtHandler.js +154 -0
- package/dist/route-handlers/createCmsTxtHandler.js.map +1 -0
- package/dist/route-handlers/createDiscoveryHandler.d.ts +67 -0
- package/dist/route-handlers/createDiscoveryHandler.d.ts.map +1 -0
- package/dist/route-handlers/createDiscoveryHandler.js +190 -0
- package/dist/route-handlers/createDiscoveryHandler.js.map +1 -0
- package/dist/route-handlers/createGuidelinesHandler.d.ts +16 -0
- package/dist/route-handlers/createGuidelinesHandler.d.ts.map +1 -0
- package/dist/route-handlers/createGuidelinesHandler.js +100 -0
- package/dist/route-handlers/createGuidelinesHandler.js.map +1 -0
- package/dist/route-handlers/createMediaLibraryHandler.d.ts +19 -0
- package/dist/route-handlers/createMediaLibraryHandler.d.ts.map +1 -0
- package/dist/route-handlers/createMediaLibraryHandler.js +76 -0
- package/dist/route-handlers/createMediaLibraryHandler.js.map +1 -0
- package/dist/route-handlers/index.d.ts +9 -0
- package/dist/route-handlers/index.d.ts.map +1 -0
- package/dist/route-handlers/index.js +5 -0
- package/dist/route-handlers/index.js.map +1 -0
- package/dist/rtf/rtf.d.ts +66 -0
- package/dist/rtf/rtf.d.ts.map +1 -0
- package/dist/rtf/rtf.js +183 -0
- package/dist/rtf/rtf.js.map +1 -0
- package/dist/server/index.d.ts +20 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +11 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/merge-prepared-page-context.d.ts +8 -0
- package/dist/server/merge-prepared-page-context.d.ts.map +1 -0
- package/dist/server/merge-prepared-page-context.js +11 -0
- package/dist/server/merge-prepared-page-context.js.map +1 -0
- package/dist/server/page-test-merge.d.ts +7 -0
- package/dist/server/page-test-merge.d.ts.map +1 -0
- package/dist/server/page-test-merge.js +12 -0
- package/dist/server/page-test-merge.js.map +1 -0
- package/dist/server/route-handlers-types.d.ts +124 -0
- package/dist/server/route-handlers-types.d.ts.map +1 -0
- package/dist/server/route-handlers-types.js +2 -0
- package/dist/server/route-handlers-types.js.map +1 -0
- package/dist/server/route-handlers.d.ts +99 -0
- package/dist/server/route-handlers.d.ts.map +1 -0
- package/dist/server/route-handlers.js +1268 -0
- package/dist/server/route-handlers.js.map +1 -0
- package/dist/server/route-types.d.ts +78 -0
- package/dist/server/route-types.d.ts.map +1 -0
- package/dist/server/route-types.js +4 -0
- package/dist/server/route-types.js.map +1 -0
- package/dist/server/tag-index-guards.d.ts +33 -0
- package/dist/server/tag-index-guards.d.ts.map +1 -0
- package/dist/server/tag-index-guards.js +33 -0
- package/dist/server/tag-index-guards.js.map +1 -0
- package/dist/server/template-route-handlers.d.ts +7 -0
- package/dist/server/template-route-handlers.d.ts.map +1 -0
- package/dist/server/template-route-handlers.js +35 -0
- package/dist/server/template-route-handlers.js.map +1 -0
- package/dist/showcase/components/AllViewPanel.d.ts +7 -0
- package/dist/showcase/components/AllViewPanel.d.ts.map +1 -0
- package/dist/showcase/components/AllViewPanel.js +55 -0
- package/dist/showcase/components/AllViewPanel.js.map +1 -0
- package/dist/showcase/components/Controls.d.ts +15 -0
- package/dist/showcase/components/Controls.d.ts.map +1 -0
- package/dist/showcase/components/Controls.js +71 -0
- package/dist/showcase/components/Controls.js.map +1 -0
- package/dist/showcase/components/ControlsWrapper.d.ts +15 -0
- package/dist/showcase/components/ControlsWrapper.d.ts.map +1 -0
- package/dist/showcase/components/ControlsWrapper.js +9 -0
- package/dist/showcase/components/ControlsWrapper.js.map +1 -0
- package/dist/showcase/components/IframeHeightReporter.d.ts +13 -0
- package/dist/showcase/components/IframeHeightReporter.d.ts.map +1 -0
- package/dist/showcase/components/IframeHeightReporter.js +51 -0
- package/dist/showcase/components/IframeHeightReporter.js.map +1 -0
- package/dist/showcase/components/PreviewPanel.d.ts +18 -0
- package/dist/showcase/components/PreviewPanel.d.ts.map +1 -0
- package/dist/showcase/components/PreviewPanel.js +52 -0
- package/dist/showcase/components/PreviewPanel.js.map +1 -0
- package/dist/showcase/components/ScaledIframe.d.ts +22 -0
- package/dist/showcase/components/ScaledIframe.d.ts.map +1 -0
- package/dist/showcase/components/ScaledIframe.js +41 -0
- package/dist/showcase/components/ScaledIframe.js.map +1 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.d.ts +21 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.d.ts.map +1 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.js +36 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.js.map +1 -0
- package/dist/showcase/components/ShowcaseAnimationRoot.d.ts +8 -0
- package/dist/showcase/components/ShowcaseAnimationRoot.d.ts.map +1 -0
- package/dist/showcase/components/ShowcaseAnimationRoot.js +10 -0
- package/dist/showcase/components/ShowcaseAnimationRoot.js.map +1 -0
- package/dist/showcase/components/ShowcasePage.d.ts +25 -0
- package/dist/showcase/components/ShowcasePage.d.ts.map +1 -0
- package/dist/showcase/components/ShowcasePage.js +31 -0
- package/dist/showcase/components/ShowcasePage.js.map +1 -0
- package/dist/showcase/components/ShowcaseRenderPage.d.ts +21 -0
- package/dist/showcase/components/ShowcaseRenderPage.d.ts.map +1 -0
- package/dist/showcase/components/ShowcaseRenderPage.js +45 -0
- package/dist/showcase/components/ShowcaseRenderPage.js.map +1 -0
- package/dist/showcase/components/ShowcaseViewportGuard.d.ts +14 -0
- package/dist/showcase/components/ShowcaseViewportGuard.d.ts.map +1 -0
- package/dist/showcase/components/ShowcaseViewportGuard.js +77 -0
- package/dist/showcase/components/ShowcaseViewportGuard.js.map +1 -0
- package/dist/showcase/components/TopBar.d.ts +11 -0
- package/dist/showcase/components/TopBar.d.ts.map +1 -0
- package/dist/showcase/components/TopBar.js +105 -0
- package/dist/showcase/components/TopBar.js.map +1 -0
- package/dist/showcase/controlFieldSupport.d.ts +12 -0
- package/dist/showcase/controlFieldSupport.d.ts.map +1 -0
- package/dist/showcase/controlFieldSupport.js +35 -0
- package/dist/showcase/controlFieldSupport.js.map +1 -0
- package/dist/showcase/index.d.ts +20 -0
- package/dist/showcase/index.d.ts.map +1 -0
- package/dist/showcase/index.js +20 -0
- package/dist/showcase/index.js.map +1 -0
- package/dist/showcase/isCmsShowcase.d.ts +10 -0
- package/dist/showcase/isCmsShowcase.d.ts.map +1 -0
- package/dist/showcase/isCmsShowcase.js +12 -0
- package/dist/showcase/isCmsShowcase.js.map +1 -0
- package/dist/showcase/mergeShowcaseMocks.d.ts +34 -0
- package/dist/showcase/mergeShowcaseMocks.d.ts.map +1 -0
- package/dist/showcase/mergeShowcaseMocks.js +31 -0
- package/dist/showcase/mergeShowcaseMocks.js.map +1 -0
- package/dist/showcase/mockFactory.d.ts +47 -0
- package/dist/showcase/mockFactory.d.ts.map +1 -0
- package/dist/showcase/mockFactory.js +726 -0
- package/dist/showcase/mockFactory.js.map +1 -0
- package/dist/showcase/showcaseLayout.d.ts +17 -0
- package/dist/showcase/showcaseLayout.d.ts.map +1 -0
- package/dist/showcase/showcaseLayout.js +11 -0
- package/dist/showcase/showcaseLayout.js.map +1 -0
- package/dist/showcase/showcaseRelatedContent.d.ts +30 -0
- package/dist/showcase/showcaseRelatedContent.d.ts.map +1 -0
- package/dist/showcase/showcaseRelatedContent.js +106 -0
- package/dist/showcase/showcaseRelatedContent.js.map +1 -0
- package/dist/showcase/types.d.ts +21 -0
- package/dist/showcase/types.d.ts.map +1 -0
- package/dist/showcase/types.js +19 -0
- package/dist/showcase/types.js.map +1 -0
- package/dist/utils/UnsupportedWarning.d.ts +30 -0
- package/dist/utils/UnsupportedWarning.d.ts.map +1 -0
- package/dist/utils/UnsupportedWarning.js +44 -0
- package/dist/utils/UnsupportedWarning.js.map +1 -0
- package/dist/utils/UnusedChecker.d.ts +51 -0
- package/dist/utils/UnusedChecker.d.ts.map +1 -0
- package/dist/utils/UnusedChecker.js +96 -0
- package/dist/utils/UnusedChecker.js.map +1 -0
- package/dist/utils/agent-ready.d.ts +103 -0
- package/dist/utils/agent-ready.d.ts.map +1 -0
- package/dist/utils/agent-ready.js +246 -0
- package/dist/utils/agent-ready.js.map +1 -0
- package/dist/utils/assertValidSiteBaseUrl.d.ts +8 -0
- package/dist/utils/assertValidSiteBaseUrl.d.ts.map +1 -0
- package/dist/utils/assertValidSiteBaseUrl.js +31 -0
- package/dist/utils/assertValidSiteBaseUrl.js.map +1 -0
- package/dist/utils/breadcrumbUtils.d.ts +64 -0
- package/dist/utils/breadcrumbUtils.d.ts.map +1 -0
- package/dist/utils/breadcrumbUtils.js +73 -0
- package/dist/utils/breadcrumbUtils.js.map +1 -0
- package/dist/utils/buildPageMetadata.d.ts +139 -0
- package/dist/utils/buildPageMetadata.d.ts.map +1 -0
- package/dist/utils/buildPageMetadata.js +218 -0
- package/dist/utils/buildPageMetadata.js.map +1 -0
- package/dist/utils/cn.d.ts +29 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +32 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/componentUtils.d.ts +82 -0
- package/dist/utils/componentUtils.d.ts.map +1 -0
- package/dist/utils/componentUtils.js +327 -0
- package/dist/utils/componentUtils.js.map +1 -0
- package/dist/utils/convertText.d.ts +2 -0
- package/dist/utils/convertText.d.ts.map +1 -0
- package/dist/utils/convertText.js +35 -0
- package/dist/utils/convertText.js.map +1 -0
- package/dist/utils/createDefaultRenderText.d.ts +17 -0
- package/dist/utils/createDefaultRenderText.d.ts.map +1 -0
- package/dist/utils/createDefaultRenderText.js +25 -0
- package/dist/utils/createDefaultRenderText.js.map +1 -0
- package/dist/utils/errorHandling.d.ts +37 -0
- package/dist/utils/errorHandling.d.ts.map +1 -0
- package/dist/utils/errorHandling.js +61 -0
- package/dist/utils/errorHandling.js.map +1 -0
- package/dist/utils/errorMonitoring.d.ts +17 -0
- package/dist/utils/errorMonitoring.d.ts.map +1 -0
- package/dist/utils/errorMonitoring.js +26 -0
- package/dist/utils/errorMonitoring.js.map +1 -0
- package/dist/utils/imageKitVideoHls.d.ts +3 -0
- package/dist/utils/imageKitVideoHls.d.ts.map +1 -0
- package/dist/utils/imageKitVideoHls.js +5 -0
- package/dist/utils/imageKitVideoHls.js.map +1 -0
- package/dist/utils/interpolateMetaText.d.ts +9 -0
- package/dist/utils/interpolateMetaText.d.ts.map +1 -0
- package/dist/utils/interpolateMetaText.js +21 -0
- package/dist/utils/interpolateMetaText.js.map +1 -0
- package/dist/utils/linkAccessibility.d.ts +13 -0
- package/dist/utils/linkAccessibility.d.ts.map +1 -0
- package/dist/utils/linkAccessibility.js +14 -0
- package/dist/utils/linkAccessibility.js.map +1 -0
- package/dist/utils/linkResolution.d.ts +15 -0
- package/dist/utils/linkResolution.d.ts.map +1 -0
- package/dist/utils/linkResolution.js +19 -0
- package/dist/utils/linkResolution.js.map +1 -0
- package/dist/utils/listing-page-heading.d.ts +16 -0
- package/dist/utils/listing-page-heading.d.ts.map +1 -0
- package/dist/utils/listing-page-heading.js +24 -0
- package/dist/utils/listing-page-heading.js.map +1 -0
- package/dist/utils/listingStructuredData.d.ts +28 -0
- package/dist/utils/listingStructuredData.d.ts.map +1 -0
- package/dist/utils/listingStructuredData.js +65 -0
- package/dist/utils/listingStructuredData.js.map +1 -0
- package/dist/utils/marketingSiteSitemap.d.ts +103 -0
- package/dist/utils/marketingSiteSitemap.d.ts.map +1 -0
- package/dist/utils/marketingSiteSitemap.js +352 -0
- package/dist/utils/marketingSiteSitemap.js.map +1 -0
- package/dist/utils/previewPageUtils.d.ts +61 -0
- package/dist/utils/previewPageUtils.d.ts.map +1 -0
- package/dist/utils/previewPageUtils.js +72 -0
- package/dist/utils/previewPageUtils.js.map +1 -0
- package/dist/utils/previewUtils.d.ts +59 -0
- package/dist/utils/previewUtils.d.ts.map +1 -0
- package/dist/utils/previewUtils.js +60 -0
- package/dist/utils/previewUtils.js.map +1 -0
- package/dist/utils/processCollectionLinks.d.ts +11 -0
- package/dist/utils/processCollectionLinks.d.ts.map +1 -0
- package/dist/utils/processCollectionLinks.js +38 -0
- package/dist/utils/processCollectionLinks.js.map +1 -0
- package/dist/utils/processTextContent.d.ts +18 -0
- package/dist/utils/processTextContent.d.ts.map +1 -0
- package/dist/utils/processTextContent.js +24 -0
- package/dist/utils/processTextContent.js.map +1 -0
- package/dist/utils/reactNodeText.d.ts +7 -0
- package/dist/utils/reactNodeText.d.ts.map +1 -0
- package/dist/utils/reactNodeText.js +43 -0
- package/dist/utils/reactNodeText.js.map +1 -0
- package/dist/utils/richTextNodeText.d.ts +13 -0
- package/dist/utils/richTextNodeText.d.ts.map +1 -0
- package/dist/utils/richTextNodeText.js +29 -0
- package/dist/utils/richTextNodeText.js.map +1 -0
- package/dist/utils/robots.d.ts +115 -0
- package/dist/utils/robots.d.ts.map +1 -0
- package/dist/utils/robots.js +174 -0
- package/dist/utils/robots.js.map +1 -0
- package/dist/utils/scopeCss.d.ts +15 -0
- package/dist/utils/scopeCss.d.ts.map +1 -0
- package/dist/utils/scopeCss.js +186 -0
- package/dist/utils/scopeCss.js.map +1 -0
- package/dist/utils/sitemap.d.ts +173 -0
- package/dist/utils/sitemap.d.ts.map +1 -0
- package/dist/utils/sitemap.js +257 -0
- package/dist/utils/sitemap.js.map +1 -0
- package/dist/utils/structuredDataUtils.d.ts +158 -0
- package/dist/utils/structuredDataUtils.d.ts.map +1 -0
- package/dist/utils/structuredDataUtils.js +225 -0
- package/dist/utils/structuredDataUtils.js.map +1 -0
- package/dist/utils/urlUtils.d.ts +30 -0
- package/dist/utils/urlUtils.d.ts.map +1 -0
- package/dist/utils/urlUtils.js +100 -0
- package/dist/utils/urlUtils.js.map +1 -0
- package/dist/utils/visualPositions.d.ts +3 -0
- package/dist/utils/visualPositions.d.ts.map +1 -0
- package/dist/utils/visualPositions.js +13 -0
- package/dist/utils/visualPositions.js.map +1 -0
- package/dist/utils/visualSizes.d.ts +5 -0
- package/dist/utils/visualSizes.d.ts.map +1 -0
- package/dist/utils/visualSizes.js +27 -0
- package/dist/utils/visualSizes.js.map +1 -0
- package/dist/utils/wcagRelativeLuminanceFromHex.d.ts +8 -0
- package/dist/utils/wcagRelativeLuminanceFromHex.d.ts.map +1 -0
- package/dist/utils/wcagRelativeLuminanceFromHex.js +30 -0
- package/dist/utils/wcagRelativeLuminanceFromHex.js.map +1 -0
- package/dist/utils/wrapHtmlComponentJs.d.ts +10 -0
- package/dist/utils/wrapHtmlComponentJs.d.ts.map +1 -0
- package/dist/utils/wrapHtmlComponentJs.js +12 -0
- package/dist/utils/wrapHtmlComponentJs.js.map +1 -0
- package/docs/PACKAGE_EXPORT_BOUNDARIES.md +98 -0
- package/docs/llms.md +358 -0
- package/package.json +108 -0
- package/src/showcase/README.md +269 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-ready.d.ts","sourceRoot":"","sources":["../../src/utils/agent-ready.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsEH;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAiBtF;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2DtE;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACtC,MAAM,GAAG,IAAI,CAKf;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ3E;AAED,gDAAgD;AAChD,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAOD;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,yBAAyB,GAClC,MAAM,EAAE,CA6BV;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE;IAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,EAC1D,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,yBAAyB,GAClC,IAAI,CAIN"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent-readiness helpers for marketing sites (Band A):
|
|
3
|
+
* - Markdown content negotiation path mapping (`Accept: text/markdown`)
|
|
4
|
+
* - Discovery Link header values (RFC 8288)
|
|
5
|
+
*
|
|
6
|
+
* Pure utilities — wire from Next.js middleware with `NextResponse.rewrite` /
|
|
7
|
+
* `headers.append`. Does not import `next/server` so the main barrel stays
|
|
8
|
+
* client-safe.
|
|
9
|
+
*
|
|
10
|
+
* @see https://isitagentready.com/
|
|
11
|
+
* @see https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/
|
|
12
|
+
*/
|
|
13
|
+
/** Path prefixes that should never negotiate to markdown. */
|
|
14
|
+
const MARKDOWN_NEGOTIATION_SKIP_PREFIXES = [
|
|
15
|
+
'/_next',
|
|
16
|
+
'/api/',
|
|
17
|
+
'/og/',
|
|
18
|
+
'/cms/',
|
|
19
|
+
'/preview/',
|
|
20
|
+
'/page-test/',
|
|
21
|
+
'/_video/',
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Parse an HTTP Accept header into media ranges with quality values.
|
|
25
|
+
* Invalid / missing q defaults to 1.
|
|
26
|
+
*/
|
|
27
|
+
function parseAcceptHeader(accept) {
|
|
28
|
+
const ranges = [];
|
|
29
|
+
for (const part of accept.split(',')) {
|
|
30
|
+
const trimmed = part.trim();
|
|
31
|
+
if (!trimmed) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const segments = trimmed.split(';');
|
|
35
|
+
const type = (segments[0] ?? '').trim().toLowerCase();
|
|
36
|
+
if (!type) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
let q = 1;
|
|
40
|
+
for (let i = 1; i < segments.length; i++) {
|
|
41
|
+
const param = (segments[i] ?? '').trim();
|
|
42
|
+
const eq = param.indexOf('=');
|
|
43
|
+
if (eq === -1) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const key = param.slice(0, eq).trim().toLowerCase();
|
|
47
|
+
const value = param.slice(eq + 1).trim();
|
|
48
|
+
if (key === 'q') {
|
|
49
|
+
const parsed = Number.parseFloat(value);
|
|
50
|
+
if (!Number.isNaN(parsed)) {
|
|
51
|
+
q = parsed;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
ranges.push({ type, q });
|
|
56
|
+
}
|
|
57
|
+
return ranges;
|
|
58
|
+
}
|
|
59
|
+
function maxQ(ranges, mediaType) {
|
|
60
|
+
let max;
|
|
61
|
+
for (const range of ranges) {
|
|
62
|
+
if (range.type === mediaType) {
|
|
63
|
+
max = max === undefined ? range.q : Math.max(max, range.q);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return max;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Whether the client prefers `text/markdown` over `text/html`.
|
|
70
|
+
*
|
|
71
|
+
* Returns true when:
|
|
72
|
+
* - `text/markdown` is present and `text/html` is not, or
|
|
73
|
+
* - `text/markdown` has a strictly higher `q` than `text/html`.
|
|
74
|
+
*
|
|
75
|
+
* Returns false for empty Accept, HTML-only browser defaults, and equal-q
|
|
76
|
+
* markdown+html (prefer HTML to avoid surprising dual listings).
|
|
77
|
+
*/
|
|
78
|
+
export function prefersMarkdownAccept(acceptHeader) {
|
|
79
|
+
if (!acceptHeader?.trim()) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
const ranges = parseAcceptHeader(acceptHeader);
|
|
83
|
+
const markdownQ = maxQ(ranges, 'text/markdown');
|
|
84
|
+
if (markdownQ === undefined) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
const htmlQ = maxQ(ranges, 'text/html');
|
|
88
|
+
if (htmlQ === undefined) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
return markdownQ > htmlQ;
|
|
92
|
+
}
|
|
93
|
+
/** Reject absurdly long paths (middleware / agent tool abuse). */
|
|
94
|
+
const MAX_HTML_PATH_LENGTH = 2048;
|
|
95
|
+
/**
|
|
96
|
+
* Map a public HTML pathname to the site's markdown export path.
|
|
97
|
+
*
|
|
98
|
+
* Conventions match SE Studio rewrites:
|
|
99
|
+
* - `/` → `/index.md`
|
|
100
|
+
* - `/about/` → `/about.md`
|
|
101
|
+
* - `/blog/slug/` → `/blog/slug.md`
|
|
102
|
+
*
|
|
103
|
+
* Returns `null` when the path is already markdown, a static asset, or an
|
|
104
|
+
* infrastructure prefix that should not negotiate.
|
|
105
|
+
*
|
|
106
|
+
* Decodes URI components so encoded traversal (`%2e%2e`) is rejected the same
|
|
107
|
+
* as literal `..` segments.
|
|
108
|
+
*/
|
|
109
|
+
export function htmlPathToMarkdownPath(pathname) {
|
|
110
|
+
if (!pathname || pathname.includes('\\') || pathname.includes('\0')) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
if (pathname.length > MAX_HTML_PATH_LENGTH) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
let decoded;
|
|
117
|
+
try {
|
|
118
|
+
decoded = decodeURIComponent(pathname);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
if (decoded.includes('\\') || decoded.includes('\0') || decoded.length > MAX_HTML_PATH_LENGTH) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
const pathOnly = decoded.split('?')[0]?.split('#')[0] ?? decoded;
|
|
127
|
+
// Segment-based traversal check (after decode)
|
|
128
|
+
for (const segment of pathOnly.split('/')) {
|
|
129
|
+
if (segment === '..') {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
for (const prefix of MARKDOWN_NEGOTIATION_SKIP_PREFIXES) {
|
|
134
|
+
if (pathOnly === prefix.replace(/\/$/, '') || pathOnly.startsWith(prefix)) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Root
|
|
139
|
+
if (pathOnly === '/' || pathOnly === '') {
|
|
140
|
+
return '/index.md';
|
|
141
|
+
}
|
|
142
|
+
const lastSegment = pathOnly.split('/').filter(Boolean).pop() ?? '';
|
|
143
|
+
// Already a file-like path with an extension
|
|
144
|
+
if (lastSegment.includes('.')) {
|
|
145
|
+
if (lastSegment.endsWith('.md')) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
// Other static-like extensions
|
|
149
|
+
if (/\.[a-zA-Z0-9]{1,12}$/.test(lastSegment)) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
const withoutTrailingSlash = pathOnly.endsWith('/') ? pathOnly.slice(0, -1) : pathOnly;
|
|
154
|
+
if (!withoutTrailingSlash || withoutTrailingSlash === '/') {
|
|
155
|
+
return '/index.md';
|
|
156
|
+
}
|
|
157
|
+
return `${withoutTrailingSlash}.md`;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* If Accept prefers markdown, return the rewrite pathname; otherwise `null`.
|
|
161
|
+
* Middleware should `NextResponse.rewrite` to this path and set `Vary: Accept`.
|
|
162
|
+
*/
|
|
163
|
+
export function resolveMarkdownNegotiationPath(pathname, acceptHeader) {
|
|
164
|
+
if (!prefersMarkdownAccept(acceptHeader)) {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
return htmlPathToMarkdownPath(pathname);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* For sites with next.config `trailingSlash: true`, Next issues a 308 from
|
|
171
|
+
* `/api/foo` → `/api/foo/`. That breaks Streamable HTTP MCP POST (and other
|
|
172
|
+
* API clients) that do not replay the body on redirect.
|
|
173
|
+
*
|
|
174
|
+
* Returns the pathname to rewrite to, or `null` if no rewrite is needed.
|
|
175
|
+
* Call from middleware with `NextResponse.rewrite` *before* other logic.
|
|
176
|
+
* Requires next.config **`skipTrailingSlashRedirect: true`** — otherwise Next’s
|
|
177
|
+
* built-in slash 308 runs before middleware and this rewrite never runs.
|
|
178
|
+
* Advertise endpoints **without** a trailing slash (`/api/mcp`); this helper
|
|
179
|
+
* makes the bare path hit the same handler as the slashed form.
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* const apiPath = apiPathNeedingTrailingSlash(pathname);
|
|
183
|
+
* if (apiPath) {
|
|
184
|
+
* const url = request.nextUrl.clone();
|
|
185
|
+
* url.pathname = apiPath;
|
|
186
|
+
* return NextResponse.rewrite(url);
|
|
187
|
+
* }
|
|
188
|
+
*/
|
|
189
|
+
export function apiPathNeedingTrailingSlash(pathname) {
|
|
190
|
+
if (pathname !== '/api' && !pathname.startsWith('/api/')) {
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
if (pathname.endsWith('/')) {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
return `${pathname}/`;
|
|
197
|
+
}
|
|
198
|
+
const DEFAULT_MCP_SERVER_CARD_PATH = '/.well-known/mcp/server-card.json';
|
|
199
|
+
const DEFAULT_API_CATALOG_PATH = '/.well-known/api-catalog';
|
|
200
|
+
const DEFAULT_AGENT_CARD_PATH = '/.well-known/agent-card.json';
|
|
201
|
+
const DEFAULT_AGENT_SKILLS_PATH = '/.well-known/agent-skills/index.json';
|
|
202
|
+
/**
|
|
203
|
+
* Build Link header values for agent discovery on HTML document responses.
|
|
204
|
+
*
|
|
205
|
+
* Always includes `describedby` → `/llms.txt` (registered relation for
|
|
206
|
+
* isitagentready linkHeaders). Adds `alternate` markdown when mappable.
|
|
207
|
+
* Opt-in well-known discovery relations (MCP card, API catalog, A2A card, skills).
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
* for (const value of buildAgentDiscoveryLinkValues('/about/', { mcpServerCard: true })) {
|
|
211
|
+
* response.headers.append('Link', value);
|
|
212
|
+
* }
|
|
213
|
+
*/
|
|
214
|
+
export function buildAgentDiscoveryLinkValues(pathname, options) {
|
|
215
|
+
const links = ['</llms.txt>; rel="describedby"'];
|
|
216
|
+
const markdownPath = htmlPathToMarkdownPath(pathname);
|
|
217
|
+
if (markdownPath) {
|
|
218
|
+
links.push(`<${markdownPath}>; rel="alternate"; type="text/markdown"`);
|
|
219
|
+
}
|
|
220
|
+
if (options?.mcpServerCard) {
|
|
221
|
+
const cardPath = options.mcpServerCardPath ?? DEFAULT_MCP_SERVER_CARD_PATH;
|
|
222
|
+
links.push(`<${cardPath}>; rel="mcp-server-card"`);
|
|
223
|
+
}
|
|
224
|
+
if (options?.apiCatalog) {
|
|
225
|
+
const catalogPath = options.apiCatalogPath ?? DEFAULT_API_CATALOG_PATH;
|
|
226
|
+
links.push(`<${catalogPath}>; rel="api-catalog"`);
|
|
227
|
+
}
|
|
228
|
+
if (options?.agentCard) {
|
|
229
|
+
const agentCardPath = options.agentCardPath ?? DEFAULT_AGENT_CARD_PATH;
|
|
230
|
+
links.push(`<${agentCardPath}>; rel="agent-card"`);
|
|
231
|
+
}
|
|
232
|
+
if (options?.agentSkills) {
|
|
233
|
+
const skillsPath = options.agentSkillsPath ?? DEFAULT_AGENT_SKILLS_PATH;
|
|
234
|
+
links.push(`<${skillsPath}>; rel="agent-skills"`);
|
|
235
|
+
}
|
|
236
|
+
return links;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Append agent discovery Link headers onto a headers bag (e.g. NextResponse.headers).
|
|
240
|
+
*/
|
|
241
|
+
export function appendAgentDiscoveryLinkHeaders(headers, pathname, options) {
|
|
242
|
+
for (const value of buildAgentDiscoveryLinkValues(pathname, options)) {
|
|
243
|
+
headers.append('Link', value);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=agent-ready.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-ready.js","sourceRoot":"","sources":["../../src/utils/agent-ready.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates the site base URL used for metadata, canonical URLs, and structured data.
|
|
3
|
+
*
|
|
4
|
+
* Call when reading `URL` / `NEXT_PUBLIC_*` at module init so misconfiguration fails the build.
|
|
5
|
+
* URLs are joined as `${baseUrl}${path}` where `path` starts with `/`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function assertValidSiteBaseUrl(url: string): string;
|
|
8
|
+
//# sourceMappingURL=assertValidSiteBaseUrl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertValidSiteBaseUrl.d.ts","sourceRoot":"","sources":["../../src/utils/assertValidSiteBaseUrl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA8B1D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates the site base URL used for metadata, canonical URLs, and structured data.
|
|
3
|
+
*
|
|
4
|
+
* Call when reading `URL` / `NEXT_PUBLIC_*` at module init so misconfiguration fails the build.
|
|
5
|
+
* URLs are joined as `${baseUrl}${path}` where `path` starts with `/`.
|
|
6
|
+
*/
|
|
7
|
+
export function assertValidSiteBaseUrl(url) {
|
|
8
|
+
const trimmed = url.trim();
|
|
9
|
+
if (!trimmed) {
|
|
10
|
+
throw new Error('Site baseUrl must be a non-empty absolute URL');
|
|
11
|
+
}
|
|
12
|
+
if (trimmed.endsWith('/')) {
|
|
13
|
+
throw new Error(`Site baseUrl must not have a trailing slash (got ${JSON.stringify(url)}). ` +
|
|
14
|
+
'Set URL to the origin only, e.g. https://www.example.com');
|
|
15
|
+
}
|
|
16
|
+
let parsed;
|
|
17
|
+
try {
|
|
18
|
+
parsed = new URL(trimmed);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
throw new Error(`Site baseUrl must be a valid absolute URL (got ${JSON.stringify(url)})`);
|
|
22
|
+
}
|
|
23
|
+
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
|
|
24
|
+
throw new Error(`Site baseUrl must use http or https (got ${parsed.protocol})`);
|
|
25
|
+
}
|
|
26
|
+
if (parsed.pathname !== '/' && parsed.pathname !== '') {
|
|
27
|
+
throw new Error(`Site baseUrl must not include a path (got ${JSON.stringify(url)}). Use the site origin only.`);
|
|
28
|
+
}
|
|
29
|
+
return parsed.origin;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=assertValidSiteBaseUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertValidSiteBaseUrl.js","sourceRoot":"","sources":["../../src/utils/assertValidSiteBaseUrl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,oDAAoD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK;YAC1E,0DAA0D,CAC7D,CAAC;IACJ,CAAC;IAED,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,4CAA4C,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,8BAA8B,CAC/F,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Breadcrumb resolution utilities.
|
|
3
|
+
* Resolves URL path segments to breadcrumb labels using a CMS lookup map.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Entry in the breadcrumb lookup map.
|
|
7
|
+
* Maps a normalized path to title and optional override.
|
|
8
|
+
*/
|
|
9
|
+
export interface BreadcrumbLookupEntry {
|
|
10
|
+
title: string;
|
|
11
|
+
breadcrumbLabel?: string | null;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Map of normalized path (href with trailing slash) to breadcrumb label info.
|
|
15
|
+
*/
|
|
16
|
+
export type BreadcrumbLookup = Map<string, BreadcrumbLookupEntry>;
|
|
17
|
+
/**
|
|
18
|
+
* A single breadcrumb segment for display.
|
|
19
|
+
*/
|
|
20
|
+
export interface BreadcrumbSegment {
|
|
21
|
+
label: string;
|
|
22
|
+
href?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Normalizes a URL path for comparison (ensures trailing slash).
|
|
26
|
+
*/
|
|
27
|
+
export declare function normalizeBreadcrumbPath(path: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Options for resolveBreadcrumbSegments.
|
|
30
|
+
*/
|
|
31
|
+
export interface ResolveBreadcrumbSegmentsOptions {
|
|
32
|
+
/**
|
|
33
|
+
* Set of normalized paths (with trailing slash) for which the breadcrumb segment
|
|
34
|
+
* should not be a link. Use normalizeBreadcrumbPath for consistency.
|
|
35
|
+
*/
|
|
36
|
+
noLinkPaths?: ReadonlySet<string>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Resolves a URL path to breadcrumb segments using a CMS lookup map.
|
|
40
|
+
* For each path segment, looks up the cumulative path in the map and uses
|
|
41
|
+
* breadcrumbLabel if set, otherwise title, otherwise the slugToTitle fallback.
|
|
42
|
+
*
|
|
43
|
+
* @param path - Current page path (e.g. "/locations/new-york/brooklyn-heights")
|
|
44
|
+
* @param lookup - Map from normalized path to { title, breadcrumbLabel }
|
|
45
|
+
* @param slugToTitle - Fallback when path not in lookup (e.g. slug "brooklyn-heights" -> "Brooklyn heights")
|
|
46
|
+
* @param options - Optional. noLinkPaths: paths that should render without href (normalized with trailing slash).
|
|
47
|
+
* @returns Array of segments, or null if path is root or empty
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* const segments = resolveBreadcrumbSegments(
|
|
52
|
+
* '/locations/new-york/brooklyn-heights',
|
|
53
|
+
* lookup,
|
|
54
|
+
* (slug) => slug.replace(/-/g, ' ').replace(/\b\w/g, c => c.toUpperCase())
|
|
55
|
+
* );
|
|
56
|
+
* // => [
|
|
57
|
+
* // { label: 'Locations', href: '/locations/' },
|
|
58
|
+
* // { label: 'New York', href: '/locations/new-york/' },
|
|
59
|
+
* // { label: 'Brooklyn heights' }
|
|
60
|
+
* // ]
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function resolveBreadcrumbSegments(path: string, lookup: BreadcrumbLookup, slugToTitle: (slug: string) => string, options?: ResolveBreadcrumbSegmentsOptions): BreadcrumbSegment[] | null;
|
|
64
|
+
//# sourceMappingURL=breadcrumbUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumbUtils.d.ts","sourceRoot":"","sources":["../../src/utils/breadcrumbUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACrC,OAAO,CAAC,EAAE,gCAAgC,GACzC,iBAAiB,EAAE,GAAG,IAAI,CAmC5B"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Breadcrumb resolution utilities.
|
|
3
|
+
* Resolves URL path segments to breadcrumb labels using a CMS lookup map.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Normalizes a URL path for comparison (ensures trailing slash).
|
|
7
|
+
*/
|
|
8
|
+
export function normalizeBreadcrumbPath(path) {
|
|
9
|
+
if (!path)
|
|
10
|
+
return '/';
|
|
11
|
+
const trimmed = path.trim();
|
|
12
|
+
if (!trimmed)
|
|
13
|
+
return '/';
|
|
14
|
+
return trimmed.endsWith('/') ? trimmed : `${trimmed}/`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Resolves a URL path to breadcrumb segments using a CMS lookup map.
|
|
18
|
+
* For each path segment, looks up the cumulative path in the map and uses
|
|
19
|
+
* breadcrumbLabel if set, otherwise title, otherwise the slugToTitle fallback.
|
|
20
|
+
*
|
|
21
|
+
* @param path - Current page path (e.g. "/locations/new-york/brooklyn-heights")
|
|
22
|
+
* @param lookup - Map from normalized path to { title, breadcrumbLabel }
|
|
23
|
+
* @param slugToTitle - Fallback when path not in lookup (e.g. slug "brooklyn-heights" -> "Brooklyn heights")
|
|
24
|
+
* @param options - Optional. noLinkPaths: paths that should render without href (normalized with trailing slash).
|
|
25
|
+
* @returns Array of segments, or null if path is root or empty
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const segments = resolveBreadcrumbSegments(
|
|
30
|
+
* '/locations/new-york/brooklyn-heights',
|
|
31
|
+
* lookup,
|
|
32
|
+
* (slug) => slug.replace(/-/g, ' ').replace(/\b\w/g, c => c.toUpperCase())
|
|
33
|
+
* );
|
|
34
|
+
* // => [
|
|
35
|
+
* // { label: 'Locations', href: '/locations/' },
|
|
36
|
+
* // { label: 'New York', href: '/locations/new-york/' },
|
|
37
|
+
* // { label: 'Brooklyn heights' }
|
|
38
|
+
* // ]
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export function resolveBreadcrumbSegments(path, lookup, slugToTitle, options) {
|
|
42
|
+
const normalized = normalizeBreadcrumbPath(path);
|
|
43
|
+
if (normalized === '/' || normalized === '') {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
const segments = normalized.split('/').filter((s) => s.length > 0);
|
|
47
|
+
if (segments.length === 0) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const noLinkPaths = options?.noLinkPaths;
|
|
51
|
+
const result = [];
|
|
52
|
+
let cumulativePath = '/';
|
|
53
|
+
for (let i = 0; i < segments.length; i++) {
|
|
54
|
+
const segment = segments[i];
|
|
55
|
+
if (!segment)
|
|
56
|
+
continue;
|
|
57
|
+
cumulativePath += `${segment}/`;
|
|
58
|
+
const entry = lookup.get(cumulativePath);
|
|
59
|
+
const label = entry?.breadcrumbLabel ?? slugToTitle(segment);
|
|
60
|
+
const isLast = i === segments.length - 1;
|
|
61
|
+
if (isLast) {
|
|
62
|
+
result.push({ label });
|
|
63
|
+
}
|
|
64
|
+
else if (noLinkPaths?.has(cumulativePath)) {
|
|
65
|
+
result.push({ label });
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
result.push({ label, href: cumulativePath });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return result.length > 0 ? result : null;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=breadcrumbUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumbUtils.js","sourceRoot":"","sources":["../../src/utils/breadcrumbUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC;IACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IACzB,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;AACzD,CAAC;AAaD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,MAAwB,EACxB,WAAqC,EACrC,OAA0C;IAE1C,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,CAAC;IACzC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,IAAI,cAAc,GAAG,GAAG,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,cAAc,IAAI,GAAG,OAAO,GAAG,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,EAAE,eAAe,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { type ArticleAuthorFields, type IBaseArticle, type IBaseArticleType, type IBaseCustomType, type IBaseModel, type IBasePerson, type IBaseTag } from '@se-studio/core-data-types';
|
|
2
|
+
import type { Metadata, ResolvingMetadata } from 'next';
|
|
3
|
+
/** Parts used to build the meta generator string when `siteGenerator` is an object. */
|
|
4
|
+
export interface SiteGeneratorAttribution {
|
|
5
|
+
/** Display name. Default: `Something Else`. */
|
|
6
|
+
name?: string;
|
|
7
|
+
/** URL included in the generator string. Default: `https://www.se.studio`. */
|
|
8
|
+
url?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* CMS fields passed to `buildPageMetadata`.
|
|
12
|
+
* `author` / `authors` are only read for article metadata (see `generateArticleMetadata`);
|
|
13
|
+
* other route handlers pass models without those fields and get the site default author.
|
|
14
|
+
*/
|
|
15
|
+
type PageMetadataModel = Pick<IBaseModel, 'title' | 'description' | 'featuredImage' | 'indexed' | 'hidden'> & Partial<ArticleAuthorFields>;
|
|
16
|
+
/**
|
|
17
|
+
* Optional locale configuration for multi-language sites.
|
|
18
|
+
* When absent, the app is treated as single-locale (no URL prefix, no hreflang).
|
|
19
|
+
*/
|
|
20
|
+
export interface LocaleConfig {
|
|
21
|
+
/** All supported locale codes (e.g. ['en-US', 'es-US']) */
|
|
22
|
+
locales: readonly string[];
|
|
23
|
+
/** Default locale; its URLs are not prefixed (e.g. 'en-US') */
|
|
24
|
+
defaultLocale: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Configuration for building page metadata.
|
|
28
|
+
*/
|
|
29
|
+
export interface IBuildInformation {
|
|
30
|
+
/** Base URL for the site (e.g., 'https://example.com') */
|
|
31
|
+
baseUrl: string;
|
|
32
|
+
/** Whether the site is in production mode */
|
|
33
|
+
isProduction: boolean;
|
|
34
|
+
/** Whether the site is in development mode */
|
|
35
|
+
isDevelopment: boolean;
|
|
36
|
+
/** Customer/client name for metadata */
|
|
37
|
+
customerName: string;
|
|
38
|
+
/** Optional application name (defaults to customerName) */
|
|
39
|
+
applicationName?: string;
|
|
40
|
+
/** Base path for article types index pages (e.g., '/resources') */
|
|
41
|
+
articleTypesBasePath?: string;
|
|
42
|
+
/** Base path for tags index pages (e.g., '/topics') */
|
|
43
|
+
tagsBasePath?: string;
|
|
44
|
+
/** Base path for people index pages (e.g., '/team') */
|
|
45
|
+
peopleBasePath?: string;
|
|
46
|
+
/** Whether the primary tag is used for the article path (e.g., '/article-type-slug/primary-tag-slug/article-slug') instead of the article type slug (e.g., '/article-type-slug/article-slug') */
|
|
47
|
+
primaryTagUsedForArticlePath?: boolean;
|
|
48
|
+
/** Whether to use Contentful preview API (draft content). Typically from DRAFT_ONLY env. */
|
|
49
|
+
preview?: boolean;
|
|
50
|
+
/** Optional multi-locale config; when set, hreflang and locale-prefixed URLs are used */
|
|
51
|
+
localeConfig?: LocaleConfig;
|
|
52
|
+
/** Base path for OG image URLs (default: '/og'). Set if your app mounts the OG route elsewhere (e.g. '/marketing/og'). */
|
|
53
|
+
ogImagePath?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Site builder attribution for `<meta name="generator">`.
|
|
56
|
+
* Pass a string for full control, `{ name, url }` parts (defaults to Something Else + se.studio),
|
|
57
|
+
* or `null` to omit the generator meta tag.
|
|
58
|
+
*/
|
|
59
|
+
siteGenerator?: string | SiteGeneratorAttribution | null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Returns the path with locale prefix for non-default locales.
|
|
63
|
+
* Default locale gets the path unchanged (no prefix). Use for internal links and sitemap.
|
|
64
|
+
*
|
|
65
|
+
* @param path - Locale-neutral path (e.g. '/about/')
|
|
66
|
+
* @param locale - Current locale code (e.g. 'es-US')
|
|
67
|
+
* @param localeConfig - Optional; when absent, returns path unchanged
|
|
68
|
+
* @returns Path with locale prefix when locale is not default (e.g. '/es-US/about/')
|
|
69
|
+
*/
|
|
70
|
+
export declare function getLocalizedPath(path: string, locale: string, localeConfig?: LocaleConfig | null): string;
|
|
71
|
+
/**
|
|
72
|
+
* Formats the meta generator content string (single tag; Next.js does not support multiple generators).
|
|
73
|
+
* Returns `undefined` when `siteGenerator` is `null` so callers can omit the field.
|
|
74
|
+
*/
|
|
75
|
+
export declare function formatSiteGeneratorContent(siteGenerator?: string | SiteGeneratorAttribution | null): string | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Resolves HTML author metadata: primary CMS article author, else site default.
|
|
78
|
+
* Only meaningful when the model includes article author fields (article `generateMetadata` routes).
|
|
79
|
+
*/
|
|
80
|
+
export declare function resolveMetadataAuthors(model: Partial<ArticleAuthorFields>, { customerName, baseUrl }: Pick<IBuildInformation, 'customerName' | 'baseUrl'>): NonNullable<Metadata['authors']>;
|
|
81
|
+
/**
|
|
82
|
+
* Builds Next.js metadata object from CMS page model.
|
|
83
|
+
*
|
|
84
|
+
* Generates comprehensive SEO metadata including:
|
|
85
|
+
* - Title and description
|
|
86
|
+
* - Open Graph tags for social sharing
|
|
87
|
+
* - Twitter Card metadata
|
|
88
|
+
* - Canonical URL
|
|
89
|
+
* - Robots directives (index/follow based on production mode)
|
|
90
|
+
* - Featured image for OG/Twitter
|
|
91
|
+
*
|
|
92
|
+
* @param model - Page model from CMS (must include title, description, featuredImage, indexed, hidden)
|
|
93
|
+
* @param path - URL path for the page (e.g., '/about-us'); when localeAlternates is set, this is the path for the current locale
|
|
94
|
+
* @param buildInfo - Build configuration (baseUrl, environment flags, customer info)
|
|
95
|
+
* @param _parent - Next.js parent metadata resolver (unused, for API compatibility)
|
|
96
|
+
* @param markdownAlternate - When true, adds link rel="alternate" type="text/markdown" for the .md version
|
|
97
|
+
* @param localeAlternates - Optional map of locale code to full path for hreflang (e.g. { 'en-US': '/about/', 'es-US': '/es-US/about/' })
|
|
98
|
+
* @returns Next.js Metadata object ready for use in page metadata exports
|
|
99
|
+
* @throws Calls `notFound()` from `next/navigation` when `model.hidden` is `true` and
|
|
100
|
+
* `isProduction` is `true`. This aborts rendering and returns a 404 response.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```tsx
|
|
104
|
+
* import { buildPageMetadata } from '@se-studio/core-ui';
|
|
105
|
+
*
|
|
106
|
+
* export async function generateMetadata({ params }): Promise<Metadata> {
|
|
107
|
+
* const page = await contentfulPageRest(config, params.slug);
|
|
108
|
+
* return buildPageMetadata(
|
|
109
|
+
* page,
|
|
110
|
+
* `/${params.slug}`,
|
|
111
|
+
* {
|
|
112
|
+
* baseUrl: process.env.NEXT_PUBLIC_BASE_URL!,
|
|
113
|
+
* isProduction: process.env.NODE_ENV === 'production',
|
|
114
|
+
* isDevelopment: process.env.NODE_ENV === 'development',
|
|
115
|
+
* customerName: 'My Company',
|
|
116
|
+
* },
|
|
117
|
+
* undefined
|
|
118
|
+
* );
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export declare function buildPageMetadata(model: PageMetadataModel, path: string, { baseUrl, isProduction, customerName, applicationName, localeConfig, ogImagePath, siteGenerator, }: IBuildInformation, _parent: ResolvingMetadata, markdownAlternate?: boolean, localeAlternates?: Record<string, string>): Metadata;
|
|
123
|
+
export declare function calculateTitleAndDescription({ articleType, customType, tag, person, article, }: {
|
|
124
|
+
articleType?: IBaseArticleType | null;
|
|
125
|
+
customType?: IBaseCustomType | null;
|
|
126
|
+
tag?: IBaseTag | null;
|
|
127
|
+
person?: IBasePerson | null;
|
|
128
|
+
article?: IBaseArticle | null;
|
|
129
|
+
}): {
|
|
130
|
+
title: string;
|
|
131
|
+
description: string;
|
|
132
|
+
subtitle?: undefined;
|
|
133
|
+
} | {
|
|
134
|
+
title: string;
|
|
135
|
+
description: string;
|
|
136
|
+
subtitle: string | undefined;
|
|
137
|
+
};
|
|
138
|
+
export {};
|
|
139
|
+
//# sourceMappingURL=buildPageMetadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildPageMetadata.d.ts","sourceRoot":"","sources":["../../src/utils/buildPageMetadata.ts"],"names":[],"mappings":"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"}
|