@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,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scopes CSS to a specific element by prefixing all selectors with a [data-hc-id] attribute selector.
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Normal rules: `h2 { ... }` → `[data-hc-id="x"] h2 { ... }`
|
|
6
|
+
* - @media / @supports / @layer / @container: prefixes inner selectors
|
|
7
|
+
* - @keyframes / @font-face: passed through unchanged
|
|
8
|
+
* - :root rules: passed through unchanged (intentionally global)
|
|
9
|
+
* - Comma-separated selectors: each part is prefixed individually
|
|
10
|
+
* - Block comments, line comments, and strings (', ", `) when scanning for `{` / `}`
|
|
11
|
+
*/
|
|
12
|
+
const MAX_SCOPE_CACHE_ENTRIES = 200;
|
|
13
|
+
const scopeCssCache = new Map();
|
|
14
|
+
export function scopeCss(css, scopeId) {
|
|
15
|
+
const cacheKey = `${scopeId}\0${css}`;
|
|
16
|
+
const hit = scopeCssCache.get(cacheKey);
|
|
17
|
+
if (hit !== undefined) {
|
|
18
|
+
return hit;
|
|
19
|
+
}
|
|
20
|
+
const out = scopeCssUncached(css, scopeId);
|
|
21
|
+
if (scopeCssCache.size >= MAX_SCOPE_CACHE_ENTRIES) {
|
|
22
|
+
const first = scopeCssCache.keys().next().value;
|
|
23
|
+
if (first !== undefined) {
|
|
24
|
+
scopeCssCache.delete(first);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
scopeCssCache.set(cacheKey, out);
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
/** @internal */
|
|
31
|
+
export function clearScopeCssCacheForTests() {
|
|
32
|
+
scopeCssCache.clear();
|
|
33
|
+
}
|
|
34
|
+
/** Drops whole-line // comments and leading block comments from a rule prelude. */
|
|
35
|
+
function normalizeSelectorPrelude(raw) {
|
|
36
|
+
let s = raw.trim();
|
|
37
|
+
while (s.startsWith('/*')) {
|
|
38
|
+
const end = s.indexOf('*/');
|
|
39
|
+
if (end === -1) {
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
s = s.slice(end + 2).trimStart();
|
|
43
|
+
}
|
|
44
|
+
const lines = s.split(/\r?\n/).filter((line) => !line.trim().startsWith('//'));
|
|
45
|
+
return lines.join('\n').trim();
|
|
46
|
+
}
|
|
47
|
+
function scopeCssUncached(css, scopeId) {
|
|
48
|
+
const scope = `[data-hc-id="${scopeId}"]`;
|
|
49
|
+
const blocks = extractTopLevelBlocks(css);
|
|
50
|
+
return blocks.map((block) => processBlock(block, scope)).join('\n');
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Advances past `/* *\/`, `//`, and quoted strings (respecting backslash escapes). Returns `start` if none apply.
|
|
54
|
+
*/
|
|
55
|
+
function skipInterstitial(css, start) {
|
|
56
|
+
let i = start;
|
|
57
|
+
while (i < css.length) {
|
|
58
|
+
if (css[i] === '/' && css[i + 1] === '*') {
|
|
59
|
+
const end = css.indexOf('*/', i + 2);
|
|
60
|
+
if (end === -1) {
|
|
61
|
+
return css.length;
|
|
62
|
+
}
|
|
63
|
+
i = end + 2;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (css[i] === '/' && css[i + 1] === '/') {
|
|
67
|
+
i += 2;
|
|
68
|
+
while (i < css.length && css[i] !== '\n' && css[i] !== '\r') {
|
|
69
|
+
i++;
|
|
70
|
+
}
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const q = css[i];
|
|
74
|
+
if (q === '"' || q === "'" || q === '`') {
|
|
75
|
+
i++;
|
|
76
|
+
while (i < css.length) {
|
|
77
|
+
if (css[i] === '\\') {
|
|
78
|
+
i += 2;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (css[i] === q) {
|
|
82
|
+
i++;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
i++;
|
|
86
|
+
}
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
return i;
|
|
92
|
+
}
|
|
93
|
+
function extractTopLevelBlocks(css) {
|
|
94
|
+
const blocks = [];
|
|
95
|
+
let depth = 0;
|
|
96
|
+
let selectorStart = 0;
|
|
97
|
+
let contentStart = -1;
|
|
98
|
+
let i = 0;
|
|
99
|
+
while (i < css.length) {
|
|
100
|
+
const skipped = skipInterstitial(css, i);
|
|
101
|
+
if (skipped > i) {
|
|
102
|
+
i = skipped;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
const char = css[i];
|
|
106
|
+
if (char === '{') {
|
|
107
|
+
if (depth === 0) {
|
|
108
|
+
contentStart = i + 1;
|
|
109
|
+
}
|
|
110
|
+
depth++;
|
|
111
|
+
i++;
|
|
112
|
+
}
|
|
113
|
+
else if (char === '}') {
|
|
114
|
+
depth--;
|
|
115
|
+
if (depth === 0 && contentStart >= 0) {
|
|
116
|
+
const selector = css.slice(selectorStart, contentStart - 1).trim();
|
|
117
|
+
const content = css.slice(contentStart, i);
|
|
118
|
+
if (selector) {
|
|
119
|
+
blocks.push({ selector, content });
|
|
120
|
+
}
|
|
121
|
+
selectorStart = i + 1;
|
|
122
|
+
contentStart = -1;
|
|
123
|
+
}
|
|
124
|
+
i++;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
i++;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return blocks;
|
|
131
|
+
}
|
|
132
|
+
function splitSelectors(selector) {
|
|
133
|
+
const parts = [];
|
|
134
|
+
let depth = 0;
|
|
135
|
+
let start = 0;
|
|
136
|
+
let i = 0;
|
|
137
|
+
while (i < selector.length) {
|
|
138
|
+
const skipped = skipInterstitial(selector, i);
|
|
139
|
+
if (skipped > i) {
|
|
140
|
+
i = skipped;
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const char = selector[i];
|
|
144
|
+
if (char === undefined) {
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
if (char === '(') {
|
|
148
|
+
depth++;
|
|
149
|
+
}
|
|
150
|
+
else if (char === ')') {
|
|
151
|
+
depth--;
|
|
152
|
+
}
|
|
153
|
+
else if (char === ',' && depth === 0) {
|
|
154
|
+
parts.push(selector.slice(start, i));
|
|
155
|
+
start = i + 1;
|
|
156
|
+
}
|
|
157
|
+
i++;
|
|
158
|
+
}
|
|
159
|
+
parts.push(selector.slice(start));
|
|
160
|
+
return parts.filter((p) => p.trim().length > 0);
|
|
161
|
+
}
|
|
162
|
+
function prefixSelector(selector, scope) {
|
|
163
|
+
return splitSelectors(selector)
|
|
164
|
+
.map((part) => `${scope} ${part.trim()}`)
|
|
165
|
+
.join(',\n');
|
|
166
|
+
}
|
|
167
|
+
function processBlock(block, scope) {
|
|
168
|
+
const { content } = block;
|
|
169
|
+
const trimmed = normalizeSelectorPrelude(block.selector);
|
|
170
|
+
if (/^@keyframes\b/i.test(trimmed) || /^@font-face\b/i.test(trimmed)) {
|
|
171
|
+
return `${trimmed} {${content}}\n`;
|
|
172
|
+
}
|
|
173
|
+
if (trimmed === ':root') {
|
|
174
|
+
return `:root {${content}}\n`;
|
|
175
|
+
}
|
|
176
|
+
if (/^@(media|supports|layer|container)\b/i.test(trimmed)) {
|
|
177
|
+
const innerBlocks = extractTopLevelBlocks(content);
|
|
178
|
+
const processedInner = innerBlocks.map((b) => processBlock(b, scope)).join('\n');
|
|
179
|
+
return `${trimmed} {\n${processedInner}}\n`;
|
|
180
|
+
}
|
|
181
|
+
if (trimmed.startsWith('@')) {
|
|
182
|
+
return `${trimmed} {${content}}\n`;
|
|
183
|
+
}
|
|
184
|
+
return `${prefixSelector(trimmed, scope)} {${content}}\n`;
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=scopeCss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scopeCss.js","sourceRoot":"","sources":["../../src/utils/scopeCss.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sitemap generation utilities for Next.js applications.
|
|
3
|
+
*
|
|
4
|
+
* This module provides functions to convert sitemap entries from Contentful
|
|
5
|
+
* into Next.js MetadataRoute.Sitemap format.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* // app/sitemap.ts
|
|
10
|
+
* import { generateNextSitemap } from '@se-studio/core-ui';
|
|
11
|
+
* import {
|
|
12
|
+
* createBaseConverterContext,
|
|
13
|
+
* getAllSitemapEntries,
|
|
14
|
+
* contentfulPageSitemapEntries,
|
|
15
|
+
* contentfulArticleSitemapEntries,
|
|
16
|
+
* createSitemapProvider,
|
|
17
|
+
* } from '@se-studio/contentful-rest-api';
|
|
18
|
+
*
|
|
19
|
+
* export default async function sitemap() {
|
|
20
|
+
* const context = createBaseConverterContext();
|
|
21
|
+
*
|
|
22
|
+
* const { data: entries } = await getAllSitemapEntries(
|
|
23
|
+
* context,
|
|
24
|
+
* config,
|
|
25
|
+
* {
|
|
26
|
+
* providers: [
|
|
27
|
+
* createSitemapProvider(contentfulPageSitemapEntries, { priority: 0.8 }),
|
|
28
|
+
* createSitemapProvider(contentfulArticleSitemapEntries, { priority: 0.6 }),
|
|
29
|
+
* ],
|
|
30
|
+
* },
|
|
31
|
+
* { next: { revalidate: 3600 } }
|
|
32
|
+
* );
|
|
33
|
+
*
|
|
34
|
+
* return generateNextSitemap(entries, { baseUrl: 'https://example.com' });
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
import type { MetadataRoute } from 'next';
|
|
39
|
+
/**
|
|
40
|
+
* Change frequency hints for sitemap entries.
|
|
41
|
+
* These are hints to search engine crawlers about how often content changes.
|
|
42
|
+
*/
|
|
43
|
+
export type SitemapChangeFrequency = 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
|
|
44
|
+
/**
|
|
45
|
+
* A sitemap entry compatible with the contentful-rest-api package.
|
|
46
|
+
* This interface mirrors ISitemapEntry from contentful-rest-api to avoid
|
|
47
|
+
* creating a hard dependency between the packages.
|
|
48
|
+
*/
|
|
49
|
+
export interface SitemapEntry {
|
|
50
|
+
/** URL path (can be relative or absolute) */
|
|
51
|
+
url: string;
|
|
52
|
+
/** Last modified date */
|
|
53
|
+
lastModified?: Date;
|
|
54
|
+
/** Change frequency hint for crawlers */
|
|
55
|
+
changeFrequency?: SitemapChangeFrequency;
|
|
56
|
+
/** Priority hint (0.0-1.0) */
|
|
57
|
+
priority?: number;
|
|
58
|
+
/**
|
|
59
|
+
* Override trailing slash for this entry.
|
|
60
|
+
* When set, overrides the default from options (e.g. use false for download/file URLs).
|
|
61
|
+
*/
|
|
62
|
+
trailingSlash?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Optional hreflang alternates for multi-language sitemaps.
|
|
65
|
+
* Keys are locale codes (e.g. 'en-US'); values are full absolute URLs for that locale.
|
|
66
|
+
*/
|
|
67
|
+
alternates?: {
|
|
68
|
+
languages: Record<string, string>;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Options for generating a Next.js sitemap.
|
|
73
|
+
*/
|
|
74
|
+
export interface GenerateSitemapOptions {
|
|
75
|
+
/** Base URL to prepend to relative URLs (e.g., 'https://example.com') */
|
|
76
|
+
baseUrl: string;
|
|
77
|
+
/** Default change frequency for entries without one specified */
|
|
78
|
+
defaultChangeFrequency?: SitemapChangeFrequency;
|
|
79
|
+
/** Default priority for entries without one specified (0.0-1.0) */
|
|
80
|
+
defaultPriority?: number;
|
|
81
|
+
/** Whether to include the trailing slash on URLs (default: false) */
|
|
82
|
+
trailingSlash?: boolean;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generates a Next.js sitemap from an array of sitemap entries.
|
|
86
|
+
* Converts the entries to the format expected by Next.js MetadataRoute.Sitemap.
|
|
87
|
+
*
|
|
88
|
+
* (The entry urls come from UrlCalculators + link converters or createMarketingSiteSitemapEntries.)
|
|
89
|
+
*
|
|
90
|
+
* @param entries - Array of sitemap entries from Contentful
|
|
91
|
+
* @param options - Configuration options for sitemap generation
|
|
92
|
+
* @returns Next.js compatible sitemap array
|
|
93
|
+
*
|
|
94
|
+
* @example Basic usage
|
|
95
|
+
* ```ts
|
|
96
|
+
* const sitemap = generateNextSitemap(entries, {
|
|
97
|
+
* baseUrl: 'https://example.com',
|
|
98
|
+
* });
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* @example With defaults
|
|
102
|
+
* ```ts
|
|
103
|
+
* const sitemap = generateNextSitemap(entries, {
|
|
104
|
+
* baseUrl: 'https://example.com',
|
|
105
|
+
* defaultPriority: 0.5,
|
|
106
|
+
* defaultChangeFrequency: 'weekly',
|
|
107
|
+
* trailingSlash: true,
|
|
108
|
+
* });
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export declare function generateNextSitemap(entries: SitemapEntry[], options: GenerateSitemapOptions): MetadataRoute.Sitemap;
|
|
112
|
+
/**
|
|
113
|
+
* Filters sitemap entries to remove duplicates based on URL.
|
|
114
|
+
* Keeps the entry with the most recent lastModified date when duplicates exist.
|
|
115
|
+
*
|
|
116
|
+
* @param entries - Array of sitemap entries
|
|
117
|
+
* @returns Deduplicated array of sitemap entries
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* const uniqueEntries = deduplicateSitemapEntries(entries);
|
|
122
|
+
* const sitemap = generateNextSitemap(uniqueEntries, { baseUrl: 'https://example.com' });
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
export declare function deduplicateSitemapEntries(entries: SitemapEntry[]): SitemapEntry[];
|
|
126
|
+
/**
|
|
127
|
+
* Sorts sitemap entries by priority (highest first), then by lastModified (newest first).
|
|
128
|
+
*
|
|
129
|
+
* @param entries - Array of sitemap entries
|
|
130
|
+
* @returns Sorted array of sitemap entries
|
|
131
|
+
*/
|
|
132
|
+
export declare function sortSitemapEntries(entries: SitemapEntry[]): SitemapEntry[];
|
|
133
|
+
/**
|
|
134
|
+
* A source function that returns sitemap entries asynchronously.
|
|
135
|
+
* Used by buildSitemap to combine entries from multiple sources.
|
|
136
|
+
*/
|
|
137
|
+
export type SitemapSource = () => Promise<SitemapEntry[]>;
|
|
138
|
+
/**
|
|
139
|
+
* Builds a Next.js sitemap from multiple async sources.
|
|
140
|
+
* Calls each source in parallel, deduplicates by URL, and converts to MetadataRoute.Sitemap.
|
|
141
|
+
*
|
|
142
|
+
* @param sources - Array of async functions that return sitemap entries
|
|
143
|
+
* @param options - Configuration for URL normalization and defaults
|
|
144
|
+
* @returns Promise resolving to Next.js compatible sitemap array
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```ts
|
|
148
|
+
* const sitemap = await buildSitemap(
|
|
149
|
+
* [() => getPageEntries(), () => getArticleEntries()],
|
|
150
|
+
* { baseUrl: 'https://example.com', trailingSlash: true },
|
|
151
|
+
* );
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
export declare function buildSitemap(sources: SitemapSource[], options: GenerateSitemapOptions): Promise<MetadataRoute.Sitemap>;
|
|
155
|
+
/**
|
|
156
|
+
* Converts a Next.js sitemap to sitemap XML string.
|
|
157
|
+
* Use with Route Handlers that need to return raw XML (e.g. /sitemap-unindexed.xml).
|
|
158
|
+
*
|
|
159
|
+
* @param entries - Next.js MetadataRoute.Sitemap array (entries must have absolute URLs)
|
|
160
|
+
* @returns Sitemap XML string
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```ts
|
|
164
|
+
* export async function GET() {
|
|
165
|
+
* const entries = await buildSitemap(sources, options);
|
|
166
|
+
* return new NextResponse(sitemapToXml(entries), {
|
|
167
|
+
* headers: { 'Content-Type': 'application/xml' },
|
|
168
|
+
* });
|
|
169
|
+
* }
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
export declare function sitemapToXml(entries: MetadataRoute.Sitemap): string;
|
|
173
|
+
//# sourceMappingURL=sitemap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../src/utils/sitemap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,CAAC;AAEZ;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,yBAAyB;IACzB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,yCAAyC;IACzC,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,sBAAsB,GAC9B,aAAa,CAAC,OAAO,CAwCvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAoBjF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAoB1E;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAKhC;AAcD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,GAAG,MAAM,CA6BnE"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sitemap generation utilities for Next.js applications.
|
|
3
|
+
*
|
|
4
|
+
* This module provides functions to convert sitemap entries from Contentful
|
|
5
|
+
* into Next.js MetadataRoute.Sitemap format.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* // app/sitemap.ts
|
|
10
|
+
* import { generateNextSitemap } from '@se-studio/core-ui';
|
|
11
|
+
* import {
|
|
12
|
+
* createBaseConverterContext,
|
|
13
|
+
* getAllSitemapEntries,
|
|
14
|
+
* contentfulPageSitemapEntries,
|
|
15
|
+
* contentfulArticleSitemapEntries,
|
|
16
|
+
* createSitemapProvider,
|
|
17
|
+
* } from '@se-studio/contentful-rest-api';
|
|
18
|
+
*
|
|
19
|
+
* export default async function sitemap() {
|
|
20
|
+
* const context = createBaseConverterContext();
|
|
21
|
+
*
|
|
22
|
+
* const { data: entries } = await getAllSitemapEntries(
|
|
23
|
+
* context,
|
|
24
|
+
* config,
|
|
25
|
+
* {
|
|
26
|
+
* providers: [
|
|
27
|
+
* createSitemapProvider(contentfulPageSitemapEntries, { priority: 0.8 }),
|
|
28
|
+
* createSitemapProvider(contentfulArticleSitemapEntries, { priority: 0.6 }),
|
|
29
|
+
* ],
|
|
30
|
+
* },
|
|
31
|
+
* { next: { revalidate: 3600 } }
|
|
32
|
+
* );
|
|
33
|
+
*
|
|
34
|
+
* return generateNextSitemap(entries, { baseUrl: 'https://example.com' });
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* Normalizes a URL by combining base URL and path.
|
|
40
|
+
* Handles cases where the URL might already be absolute.
|
|
41
|
+
*/
|
|
42
|
+
function normalizeUrl(url, baseUrl, trailingSlash) {
|
|
43
|
+
// If URL is already absolute, return as-is
|
|
44
|
+
if (url.startsWith('http://') || url.startsWith('https://')) {
|
|
45
|
+
return url;
|
|
46
|
+
}
|
|
47
|
+
// Ensure baseUrl doesn't end with slash and url starts with slash
|
|
48
|
+
const normalizedBase = baseUrl.replace(/\/$/, '');
|
|
49
|
+
const normalizedPath = url.startsWith('/') ? url : `/${url}`;
|
|
50
|
+
let fullUrl = `${normalizedBase}${normalizedPath}`;
|
|
51
|
+
// Handle trailing slash
|
|
52
|
+
if (trailingSlash && !fullUrl.endsWith('/')) {
|
|
53
|
+
fullUrl += '/';
|
|
54
|
+
}
|
|
55
|
+
else if (!trailingSlash && fullUrl.endsWith('/') && fullUrl !== `${normalizedBase}/`) {
|
|
56
|
+
fullUrl = fullUrl.slice(0, -1);
|
|
57
|
+
}
|
|
58
|
+
return fullUrl;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Generates a Next.js sitemap from an array of sitemap entries.
|
|
62
|
+
* Converts the entries to the format expected by Next.js MetadataRoute.Sitemap.
|
|
63
|
+
*
|
|
64
|
+
* (The entry urls come from UrlCalculators + link converters or createMarketingSiteSitemapEntries.)
|
|
65
|
+
*
|
|
66
|
+
* @param entries - Array of sitemap entries from Contentful
|
|
67
|
+
* @param options - Configuration options for sitemap generation
|
|
68
|
+
* @returns Next.js compatible sitemap array
|
|
69
|
+
*
|
|
70
|
+
* @example Basic usage
|
|
71
|
+
* ```ts
|
|
72
|
+
* const sitemap = generateNextSitemap(entries, {
|
|
73
|
+
* baseUrl: 'https://example.com',
|
|
74
|
+
* });
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* @example With defaults
|
|
78
|
+
* ```ts
|
|
79
|
+
* const sitemap = generateNextSitemap(entries, {
|
|
80
|
+
* baseUrl: 'https://example.com',
|
|
81
|
+
* defaultPriority: 0.5,
|
|
82
|
+
* defaultChangeFrequency: 'weekly',
|
|
83
|
+
* trailingSlash: true,
|
|
84
|
+
* });
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export function generateNextSitemap(entries, options) {
|
|
88
|
+
const { baseUrl, defaultChangeFrequency, defaultPriority, trailingSlash = false } = options;
|
|
89
|
+
return entries.map((entry) => {
|
|
90
|
+
const effectiveTrailingSlash = entry.trailingSlash ?? trailingSlash;
|
|
91
|
+
const fullUrl = normalizeUrl(entry.url, baseUrl, effectiveTrailingSlash);
|
|
92
|
+
const sitemapEntry = {
|
|
93
|
+
url: fullUrl,
|
|
94
|
+
};
|
|
95
|
+
// Add lastModified if present
|
|
96
|
+
if (entry.lastModified) {
|
|
97
|
+
sitemapEntry.lastModified = entry.lastModified;
|
|
98
|
+
}
|
|
99
|
+
// Add changeFrequency (entry value or default)
|
|
100
|
+
const changeFrequency = entry.changeFrequency ?? defaultChangeFrequency;
|
|
101
|
+
if (changeFrequency) {
|
|
102
|
+
sitemapEntry.changeFrequency = changeFrequency;
|
|
103
|
+
}
|
|
104
|
+
// Add priority (entry value or default)
|
|
105
|
+
const priority = entry.priority ?? defaultPriority;
|
|
106
|
+
if (priority !== undefined) {
|
|
107
|
+
sitemapEntry.priority = priority;
|
|
108
|
+
}
|
|
109
|
+
// Add hreflang alternates (Next.js emits xhtml:link in sitemap XML)
|
|
110
|
+
if (entry.alternates?.languages && Object.keys(entry.alternates.languages).length > 0) {
|
|
111
|
+
const absoluteLanguages = {};
|
|
112
|
+
for (const [lang, pathOrUrl] of Object.entries(entry.alternates.languages)) {
|
|
113
|
+
absoluteLanguages[lang] = pathOrUrl.startsWith('http')
|
|
114
|
+
? pathOrUrl
|
|
115
|
+
: `${baseUrl.replace(/\/$/, '')}${pathOrUrl.startsWith('/') ? pathOrUrl : `/${pathOrUrl}`}`;
|
|
116
|
+
}
|
|
117
|
+
sitemapEntry.alternates = { languages: absoluteLanguages };
|
|
118
|
+
}
|
|
119
|
+
return sitemapEntry;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Filters sitemap entries to remove duplicates based on URL.
|
|
124
|
+
* Keeps the entry with the most recent lastModified date when duplicates exist.
|
|
125
|
+
*
|
|
126
|
+
* @param entries - Array of sitemap entries
|
|
127
|
+
* @returns Deduplicated array of sitemap entries
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```ts
|
|
131
|
+
* const uniqueEntries = deduplicateSitemapEntries(entries);
|
|
132
|
+
* const sitemap = generateNextSitemap(uniqueEntries, { baseUrl: 'https://example.com' });
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
export function deduplicateSitemapEntries(entries) {
|
|
136
|
+
const urlMap = new Map();
|
|
137
|
+
for (const entry of entries) {
|
|
138
|
+
const existing = urlMap.get(entry.url);
|
|
139
|
+
if (!existing) {
|
|
140
|
+
urlMap.set(entry.url, entry);
|
|
141
|
+
}
|
|
142
|
+
else if (entry.lastModified && existing.lastModified) {
|
|
143
|
+
// Keep the more recently modified entry
|
|
144
|
+
if (entry.lastModified > existing.lastModified) {
|
|
145
|
+
urlMap.set(entry.url, entry);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else if (entry.lastModified && !existing.lastModified) {
|
|
149
|
+
// Prefer entries with lastModified
|
|
150
|
+
urlMap.set(entry.url, entry);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return Array.from(urlMap.values());
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Sorts sitemap entries by priority (highest first), then by lastModified (newest first).
|
|
157
|
+
*
|
|
158
|
+
* @param entries - Array of sitemap entries
|
|
159
|
+
* @returns Sorted array of sitemap entries
|
|
160
|
+
*/
|
|
161
|
+
export function sortSitemapEntries(entries) {
|
|
162
|
+
return [...entries].sort((a, b) => {
|
|
163
|
+
// Sort by priority (highest first)
|
|
164
|
+
const priorityA = a.priority ?? 0.5;
|
|
165
|
+
const priorityB = b.priority ?? 0.5;
|
|
166
|
+
if (priorityB !== priorityA) {
|
|
167
|
+
return priorityB - priorityA;
|
|
168
|
+
}
|
|
169
|
+
// Then by lastModified (newest first)
|
|
170
|
+
if (a.lastModified && b.lastModified) {
|
|
171
|
+
return b.lastModified.getTime() - a.lastModified.getTime();
|
|
172
|
+
}
|
|
173
|
+
// Entries with lastModified come first
|
|
174
|
+
if (a.lastModified && !b.lastModified)
|
|
175
|
+
return -1;
|
|
176
|
+
if (!a.lastModified && b.lastModified)
|
|
177
|
+
return 1;
|
|
178
|
+
return 0;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Builds a Next.js sitemap from multiple async sources.
|
|
183
|
+
* Calls each source in parallel, deduplicates by URL, and converts to MetadataRoute.Sitemap.
|
|
184
|
+
*
|
|
185
|
+
* @param sources - Array of async functions that return sitemap entries
|
|
186
|
+
* @param options - Configuration for URL normalization and defaults
|
|
187
|
+
* @returns Promise resolving to Next.js compatible sitemap array
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* ```ts
|
|
191
|
+
* const sitemap = await buildSitemap(
|
|
192
|
+
* [() => getPageEntries(), () => getArticleEntries()],
|
|
193
|
+
* { baseUrl: 'https://example.com', trailingSlash: true },
|
|
194
|
+
* );
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
export async function buildSitemap(sources, options) {
|
|
198
|
+
const results = await Promise.all(sources.map((source) => source()));
|
|
199
|
+
const allEntries = results.flat();
|
|
200
|
+
const deduped = deduplicateSitemapEntries(allEntries);
|
|
201
|
+
return generateNextSitemap(deduped, options);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Escapes a string for safe use in XML content.
|
|
205
|
+
*/
|
|
206
|
+
function escapeXml(s) {
|
|
207
|
+
return s
|
|
208
|
+
.replace(/&/g, '&')
|
|
209
|
+
.replace(/</g, '<')
|
|
210
|
+
.replace(/>/g, '>')
|
|
211
|
+
.replace(/"/g, '"')
|
|
212
|
+
.replace(/'/g, ''');
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Converts a Next.js sitemap to sitemap XML string.
|
|
216
|
+
* Use with Route Handlers that need to return raw XML (e.g. /sitemap-unindexed.xml).
|
|
217
|
+
*
|
|
218
|
+
* @param entries - Next.js MetadataRoute.Sitemap array (entries must have absolute URLs)
|
|
219
|
+
* @returns Sitemap XML string
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* ```ts
|
|
223
|
+
* export async function GET() {
|
|
224
|
+
* const entries = await buildSitemap(sources, options);
|
|
225
|
+
* return new NextResponse(sitemapToXml(entries), {
|
|
226
|
+
* headers: { 'Content-Type': 'application/xml' },
|
|
227
|
+
* });
|
|
228
|
+
* }
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
export function sitemapToXml(entries) {
|
|
232
|
+
const urlElements = entries
|
|
233
|
+
.map((entry) => {
|
|
234
|
+
const loc = `<loc>${escapeXml(entry.url)}</loc>`;
|
|
235
|
+
const lastmodStr = entry.lastModified
|
|
236
|
+
? typeof entry.lastModified === 'string'
|
|
237
|
+
? entry.lastModified
|
|
238
|
+
: entry.lastModified.toISOString()
|
|
239
|
+
: null;
|
|
240
|
+
const lastmod = lastmodStr ? `<lastmod>${lastmodStr}</lastmod>` : '';
|
|
241
|
+
const changefreq = entry.changeFrequency
|
|
242
|
+
? `<changefreq>${entry.changeFrequency}</changefreq>`
|
|
243
|
+
: '';
|
|
244
|
+
const priority = entry.priority !== undefined ? `<priority>${entry.priority}</priority>` : '';
|
|
245
|
+
const languages = entry.alternates?.languages;
|
|
246
|
+
const alternates = languages && typeof languages === 'object' && Object.keys(languages).length > 0
|
|
247
|
+
? Object.entries(languages)
|
|
248
|
+
.map(([lang, href]) => `<xhtml:link rel="alternate" hreflang="${escapeXml(lang)}" href="${escapeXml(href ?? '')}"/>`)
|
|
249
|
+
.join('')
|
|
250
|
+
: '';
|
|
251
|
+
return `<url>${loc}${lastmod}${changefreq}${priority}${alternates}</url>`;
|
|
252
|
+
})
|
|
253
|
+
.join('');
|
|
254
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
255
|
+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">${urlElements}</urlset>`;
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=sitemap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemap.js","sourceRoot":"","sources":["../../src/utils/sitemap.ts"],"names":[],"mappings":"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"}
|