@se-studio/contentful-rest-api 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/CHANGELOG.md +2036 -0
- package/README.md +764 -0
- package/dist/api/article-type.d.ts +37 -0
- package/dist/api/article-type.d.ts.map +1 -0
- package/dist/api/article-type.js +140 -0
- package/dist/api/article-type.js.map +1 -0
- package/dist/api/article.d.ts +32 -0
- package/dist/api/article.d.ts.map +1 -0
- package/dist/api/article.js +43 -0
- package/dist/api/article.js.map +1 -0
- package/dist/api/asset.d.ts +28 -0
- package/dist/api/asset.d.ts.map +1 -0
- package/dist/api/asset.js +56 -0
- package/dist/api/asset.js.map +1 -0
- package/dist/api/banner.d.ts +8 -0
- package/dist/api/banner.d.ts.map +1 -0
- package/dist/api/banner.js +96 -0
- package/dist/api/banner.js.map +1 -0
- package/dist/api/breadcrumb.d.ts +40 -0
- package/dist/api/breadcrumb.d.ts.map +1 -0
- package/dist/api/breadcrumb.js +60 -0
- package/dist/api/breadcrumb.js.map +1 -0
- package/dist/api/componentPreview.d.ts +59 -0
- package/dist/api/componentPreview.d.ts.map +1 -0
- package/dist/api/componentPreview.js +88 -0
- package/dist/api/componentPreview.js.map +1 -0
- package/dist/api/context.d.ts +24 -0
- package/dist/api/context.d.ts.map +1 -0
- package/dist/api/context.js +73 -0
- package/dist/api/context.js.map +1 -0
- package/dist/api/custom-type.d.ts +37 -0
- package/dist/api/custom-type.d.ts.map +1 -0
- package/dist/api/custom-type.js +44 -0
- package/dist/api/custom-type.js.map +1 -0
- package/dist/api/document.d.ts +8 -0
- package/dist/api/document.d.ts.map +1 -0
- package/dist/api/document.js +84 -0
- package/dist/api/document.js.map +1 -0
- package/dist/api/helpers.d.ts +59 -0
- package/dist/api/helpers.d.ts.map +1 -0
- package/dist/api/helpers.js +313 -0
- package/dist/api/helpers.js.map +1 -0
- package/dist/api/index.d.ts +33 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +37 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/links.d.ts +124 -0
- package/dist/api/links.d.ts.map +1 -0
- package/dist/api/links.js +307 -0
- package/dist/api/links.js.map +1 -0
- package/dist/api/listing-fetch-params.d.ts +70 -0
- package/dist/api/listing-fetch-params.d.ts.map +1 -0
- package/dist/api/listing-fetch-params.js +124 -0
- package/dist/api/listing-fetch-params.js.map +1 -0
- package/dist/api/media-library.d.ts +59 -0
- package/dist/api/media-library.d.ts.map +1 -0
- package/dist/api/media-library.js +315 -0
- package/dist/api/media-library.js.map +1 -0
- package/dist/api/navigation.d.ts +10 -0
- package/dist/api/navigation.d.ts.map +1 -0
- package/dist/api/navigation.js +18 -0
- package/dist/api/navigation.js.map +1 -0
- package/dist/api/page.d.ts +15 -0
- package/dist/api/page.d.ts.map +1 -0
- package/dist/api/page.js +39 -0
- package/dist/api/page.js.map +1 -0
- package/dist/api/person.d.ts +37 -0
- package/dist/api/person.d.ts.map +1 -0
- package/dist/api/person.js +135 -0
- package/dist/api/person.js.map +1 -0
- package/dist/api/preview-types.d.ts +65 -0
- package/dist/api/preview-types.d.ts.map +1 -0
- package/dist/api/preview-types.js +7 -0
- package/dist/api/preview-types.js.map +1 -0
- package/dist/api/preview.d.ts +49 -0
- package/dist/api/preview.d.ts.map +1 -0
- package/dist/api/preview.js +261 -0
- package/dist/api/preview.js.map +1 -0
- package/dist/api/redirects.d.ts +16 -0
- package/dist/api/redirects.d.ts.map +1 -0
- package/dist/api/redirects.js +110 -0
- package/dist/api/redirects.js.map +1 -0
- package/dist/api/related-articles.d.ts +28 -0
- package/dist/api/related-articles.d.ts.map +1 -0
- package/dist/api/related-articles.js +147 -0
- package/dist/api/related-articles.js.map +1 -0
- package/dist/api/server-asset.d.ts +67 -0
- package/dist/api/server-asset.d.ts.map +1 -0
- package/dist/api/server-asset.js +106 -0
- package/dist/api/server-asset.js.map +1 -0
- package/dist/api/sitemap.d.ts +131 -0
- package/dist/api/sitemap.d.ts.map +1 -0
- package/dist/api/sitemap.js +201 -0
- package/dist/api/sitemap.js.map +1 -0
- package/dist/api/tag-type.d.ts +32 -0
- package/dist/api/tag-type.d.ts.map +1 -0
- package/dist/api/tag-type.js +123 -0
- package/dist/api/tag-type.js.map +1 -0
- package/dist/api/tag.d.ts +37 -0
- package/dist/api/tag.d.ts.map +1 -0
- package/dist/api/tag.js +132 -0
- package/dist/api/tag.js.map +1 -0
- package/dist/api/template.d.ts +61 -0
- package/dist/api/template.d.ts.map +1 -0
- package/dist/api/template.js +94 -0
- package/dist/api/template.js.map +1 -0
- package/dist/api/types.d.ts +113 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +2 -0
- package/dist/api/types.js.map +1 -0
- package/dist/baseTypes/baseAlternatePageContent.d.ts +32 -0
- package/dist/baseTypes/baseAlternatePageContent.d.ts.map +1 -0
- package/dist/baseTypes/baseAlternatePageContent.js +2 -0
- package/dist/baseTypes/baseAlternatePageContent.js.map +1 -0
- package/dist/baseTypes/baseArticle.d.ts +206 -0
- package/dist/baseTypes/baseArticle.d.ts.map +1 -0
- package/dist/baseTypes/baseArticle.js +2 -0
- package/dist/baseTypes/baseArticle.js.map +1 -0
- package/dist/baseTypes/baseArticleType.d.ts +177 -0
- package/dist/baseTypes/baseArticleType.d.ts.map +1 -0
- package/dist/baseTypes/baseArticleType.js +2 -0
- package/dist/baseTypes/baseArticleType.js.map +1 -0
- package/dist/baseTypes/baseBanner.d.ts +113 -0
- package/dist/baseTypes/baseBanner.d.ts.map +1 -0
- package/dist/baseTypes/baseBanner.js +2 -0
- package/dist/baseTypes/baseBanner.js.map +1 -0
- package/dist/baseTypes/baseCollection.d.ts +132 -0
- package/dist/baseTypes/baseCollection.d.ts.map +1 -0
- package/dist/baseTypes/baseCollection.js +2 -0
- package/dist/baseTypes/baseCollection.js.map +1 -0
- package/dist/baseTypes/baseComponent.d.ts +130 -0
- package/dist/baseTypes/baseComponent.d.ts.map +1 -0
- package/dist/baseTypes/baseComponent.js +2 -0
- package/dist/baseTypes/baseComponent.js.map +1 -0
- package/dist/baseTypes/baseCustomType.d.ts +147 -0
- package/dist/baseTypes/baseCustomType.d.ts.map +1 -0
- package/dist/baseTypes/baseCustomType.js +2 -0
- package/dist/baseTypes/baseCustomType.js.map +1 -0
- package/dist/baseTypes/baseDocument.d.ts +70 -0
- package/dist/baseTypes/baseDocument.d.ts.map +1 -0
- package/dist/baseTypes/baseDocument.js +2 -0
- package/dist/baseTypes/baseDocument.js.map +1 -0
- package/dist/baseTypes/baseExternalComponent.d.ts +138 -0
- package/dist/baseTypes/baseExternalComponent.d.ts.map +1 -0
- package/dist/baseTypes/baseExternalComponent.js +2 -0
- package/dist/baseTypes/baseExternalComponent.js.map +1 -0
- package/dist/baseTypes/baseExternalVideo.d.ts +86 -0
- package/dist/baseTypes/baseExternalVideo.d.ts.map +1 -0
- package/dist/baseTypes/baseExternalVideo.js +2 -0
- package/dist/baseTypes/baseExternalVideo.js.map +1 -0
- package/dist/baseTypes/baseHtmlComponent.d.ts +72 -0
- package/dist/baseTypes/baseHtmlComponent.d.ts.map +1 -0
- package/dist/baseTypes/baseHtmlComponent.js +2 -0
- package/dist/baseTypes/baseHtmlComponent.js.map +1 -0
- package/dist/baseTypes/baseLink.d.ts +115 -0
- package/dist/baseTypes/baseLink.d.ts.map +1 -0
- package/dist/baseTypes/baseLink.js +2 -0
- package/dist/baseTypes/baseLink.js.map +1 -0
- package/dist/baseTypes/baseMedia.d.ts +100 -0
- package/dist/baseTypes/baseMedia.d.ts.map +1 -0
- package/dist/baseTypes/baseMedia.js +2 -0
- package/dist/baseTypes/baseMedia.js.map +1 -0
- package/dist/baseTypes/baseNavigation.d.ts +37 -0
- package/dist/baseTypes/baseNavigation.d.ts.map +1 -0
- package/dist/baseTypes/baseNavigation.js +2 -0
- package/dist/baseTypes/baseNavigation.js.map +1 -0
- package/dist/baseTypes/baseNavigationItem.d.ts +109 -0
- package/dist/baseTypes/baseNavigationItem.d.ts.map +1 -0
- package/dist/baseTypes/baseNavigationItem.js +2 -0
- package/dist/baseTypes/baseNavigationItem.js.map +1 -0
- package/dist/baseTypes/basePage.d.ts +142 -0
- package/dist/baseTypes/basePage.d.ts.map +1 -0
- package/dist/baseTypes/basePage.js +2 -0
- package/dist/baseTypes/basePage.js.map +1 -0
- package/dist/baseTypes/basePageVariant.d.ts +145 -0
- package/dist/baseTypes/basePageVariant.d.ts.map +1 -0
- package/dist/baseTypes/basePageVariant.js +2 -0
- package/dist/baseTypes/basePageVariant.js.map +1 -0
- package/dist/baseTypes/basePerson.d.ts +160 -0
- package/dist/baseTypes/basePerson.d.ts.map +1 -0
- package/dist/baseTypes/basePerson.js +2 -0
- package/dist/baseTypes/basePerson.js.map +1 -0
- package/dist/baseTypes/baseRedirect.d.ts +69 -0
- package/dist/baseTypes/baseRedirect.d.ts.map +1 -0
- package/dist/baseTypes/baseRedirect.js +2 -0
- package/dist/baseTypes/baseRedirect.js.map +1 -0
- package/dist/baseTypes/baseSchema.d.ts +19 -0
- package/dist/baseTypes/baseSchema.d.ts.map +1 -0
- package/dist/baseTypes/baseSchema.js +2 -0
- package/dist/baseTypes/baseSchema.js.map +1 -0
- package/dist/baseTypes/baseShared.d.ts +25 -0
- package/dist/baseTypes/baseShared.d.ts.map +1 -0
- package/dist/baseTypes/baseShared.js +2 -0
- package/dist/baseTypes/baseShared.js.map +1 -0
- package/dist/baseTypes/baseTag.d.ts +129 -0
- package/dist/baseTypes/baseTag.d.ts.map +1 -0
- package/dist/baseTypes/baseTag.js +2 -0
- package/dist/baseTypes/baseTag.js.map +1 -0
- package/dist/baseTypes/baseTagType.d.ts +70 -0
- package/dist/baseTypes/baseTagType.d.ts.map +1 -0
- package/dist/baseTypes/baseTagType.js +2 -0
- package/dist/baseTypes/baseTagType.js.map +1 -0
- package/dist/baseTypes/baseTemplate.d.ts +77 -0
- package/dist/baseTypes/baseTemplate.d.ts.map +1 -0
- package/dist/baseTypes/baseTemplate.js +2 -0
- package/dist/baseTypes/baseTemplate.js.map +1 -0
- package/dist/client.d.ts +145 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +322 -0
- package/dist/client.js.map +1 -0
- package/dist/cms-integrity.d.ts +10 -0
- package/dist/cms-integrity.d.ts.map +1 -0
- package/dist/cms-integrity.js +7 -0
- package/dist/cms-integrity.js.map +1 -0
- package/dist/converters/animationEnricher.d.ts +17 -0
- package/dist/converters/animationEnricher.d.ts.map +1 -0
- package/dist/converters/animationEnricher.js +177 -0
- package/dist/converters/animationEnricher.js.map +1 -0
- package/dist/converters/article.d.ts +48 -0
- package/dist/converters/article.d.ts.map +1 -0
- package/dist/converters/article.js +364 -0
- package/dist/converters/article.js.map +1 -0
- package/dist/converters/asset.d.ts +33 -0
- package/dist/converters/asset.d.ts.map +1 -0
- package/dist/converters/asset.js +340 -0
- package/dist/converters/asset.js.map +1 -0
- package/dist/converters/banner.d.ts +10 -0
- package/dist/converters/banner.d.ts.map +1 -0
- package/dist/converters/banner.js +63 -0
- package/dist/converters/banner.js.map +1 -0
- package/dist/converters/collection.d.ts +26 -0
- package/dist/converters/collection.d.ts.map +1 -0
- package/dist/converters/collection.js +52 -0
- package/dist/converters/collection.js.map +1 -0
- package/dist/converters/component.d.ts +26 -0
- package/dist/converters/component.d.ts.map +1 -0
- package/dist/converters/component.js +54 -0
- package/dist/converters/component.js.map +1 -0
- package/dist/converters/customType.d.ts +24 -0
- package/dist/converters/customType.d.ts.map +1 -0
- package/dist/converters/customType.js +93 -0
- package/dist/converters/customType.js.map +1 -0
- package/dist/converters/document.d.ts +14 -0
- package/dist/converters/document.d.ts.map +1 -0
- package/dist/converters/document.js +51 -0
- package/dist/converters/document.js.map +1 -0
- package/dist/converters/enrichAssets.d.ts +19 -0
- package/dist/converters/enrichAssets.d.ts.map +1 -0
- package/dist/converters/enrichAssets.js +36 -0
- package/dist/converters/enrichAssets.js.map +1 -0
- package/dist/converters/externalComponent.d.ts +27 -0
- package/dist/converters/externalComponent.d.ts.map +1 -0
- package/dist/converters/externalComponent.js +46 -0
- package/dist/converters/externalComponent.js.map +1 -0
- package/dist/converters/externalVideoEnricher.d.ts +12 -0
- package/dist/converters/externalVideoEnricher.d.ts.map +1 -0
- package/dist/converters/externalVideoEnricher.js +70 -0
- package/dist/converters/externalVideoEnricher.js.map +1 -0
- package/dist/converters/helpers.d.ts +173 -0
- package/dist/converters/helpers.d.ts.map +1 -0
- package/dist/converters/helpers.js +167 -0
- package/dist/converters/helpers.js.map +1 -0
- package/dist/converters/heroVideoEnricher.d.ts +9 -0
- package/dist/converters/heroVideoEnricher.d.ts.map +1 -0
- package/dist/converters/heroVideoEnricher.js +108 -0
- package/dist/converters/heroVideoEnricher.js.map +1 -0
- package/dist/converters/heroVideoEnv.d.ts +14 -0
- package/dist/converters/heroVideoEnv.d.ts.map +1 -0
- package/dist/converters/heroVideoEnv.js +28 -0
- package/dist/converters/heroVideoEnv.js.map +1 -0
- package/dist/converters/htmlComponent.d.ts +17 -0
- package/dist/converters/htmlComponent.d.ts.map +1 -0
- package/dist/converters/htmlComponent.js +33 -0
- package/dist/converters/htmlComponent.js.map +1 -0
- package/dist/converters/iconCollector.d.ts +36 -0
- package/dist/converters/iconCollector.d.ts.map +1 -0
- package/dist/converters/iconCollector.js +309 -0
- package/dist/converters/iconCollector.js.map +1 -0
- package/dist/converters/index.d.ts +26 -0
- package/dist/converters/index.d.ts.map +1 -0
- package/dist/converters/index.js +21 -0
- package/dist/converters/index.js.map +1 -0
- package/dist/converters/link.d.ts +11 -0
- package/dist/converters/link.d.ts.map +1 -0
- package/dist/converters/link.js +109 -0
- package/dist/converters/link.js.map +1 -0
- package/dist/converters/navigationItem.d.ts +17 -0
- package/dist/converters/navigationItem.d.ts.map +1 -0
- package/dist/converters/navigationItem.js +126 -0
- package/dist/converters/navigationItem.js.map +1 -0
- package/dist/converters/page.d.ts +44 -0
- package/dist/converters/page.d.ts.map +1 -0
- package/dist/converters/page.js +160 -0
- package/dist/converters/page.js.map +1 -0
- package/dist/converters/pageVariantMerge.d.ts +24 -0
- package/dist/converters/pageVariantMerge.d.ts.map +1 -0
- package/dist/converters/pageVariantMerge.js +151 -0
- package/dist/converters/pageVariantMerge.js.map +1 -0
- package/dist/converters/person.d.ts +40 -0
- package/dist/converters/person.d.ts.map +1 -0
- package/dist/converters/person.js +152 -0
- package/dist/converters/person.js.map +1 -0
- package/dist/converters/pictureBlurEnricher.d.ts +9 -0
- package/dist/converters/pictureBlurEnricher.d.ts.map +1 -0
- package/dist/converters/pictureBlurEnricher.js +79 -0
- package/dist/converters/pictureBlurEnricher.js.map +1 -0
- package/dist/converters/redirect.d.ts +20 -0
- package/dist/converters/redirect.d.ts.map +1 -0
- package/dist/converters/redirect.js +50 -0
- package/dist/converters/redirect.js.map +1 -0
- package/dist/converters/resolver.d.ts +26 -0
- package/dist/converters/resolver.d.ts.map +1 -0
- package/dist/converters/resolver.js +383 -0
- package/dist/converters/resolver.js.map +1 -0
- package/dist/converters/schema.d.ts +14 -0
- package/dist/converters/schema.d.ts.map +1 -0
- package/dist/converters/schema.js +25 -0
- package/dist/converters/schema.js.map +1 -0
- package/dist/converters/svgProcessor.d.ts +58 -0
- package/dist/converters/svgProcessor.d.ts.map +1 -0
- package/dist/converters/svgProcessor.js +225 -0
- package/dist/converters/svgProcessor.js.map +1 -0
- package/dist/converters/tag.d.ts +25 -0
- package/dist/converters/tag.d.ts.map +1 -0
- package/dist/converters/tag.js +170 -0
- package/dist/converters/tag.js.map +1 -0
- package/dist/converters/tagType.d.ts +15 -0
- package/dist/converters/tagType.d.ts.map +1 -0
- package/dist/converters/tagType.js +56 -0
- package/dist/converters/tagType.js.map +1 -0
- package/dist/converters/template.d.ts +31 -0
- package/dist/converters/template.d.ts.map +1 -0
- package/dist/converters/template.js +53 -0
- package/dist/converters/template.js.map +1 -0
- package/dist/converters/videoEnricher.d.ts +14 -0
- package/dist/converters/videoEnricher.d.ts.map +1 -0
- package/dist/converters/videoEnricher.js +85 -0
- package/dist/converters/videoEnricher.js.map +1 -0
- package/dist/icons/rebuildIconSprite.d.ts +8 -0
- package/dist/icons/rebuildIconSprite.d.ts.map +1 -0
- package/dist/icons/rebuildIconSprite.js +15 -0
- package/dist/icons/rebuildIconSprite.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/navigation/assembly.d.ts +8 -0
- package/dist/navigation/assembly.d.ts.map +1 -0
- package/dist/navigation/assembly.js +115 -0
- package/dist/navigation/assembly.js.map +1 -0
- package/dist/navigation/cacheOptions.d.ts +17 -0
- package/dist/navigation/cacheOptions.d.ts.map +1 -0
- package/dist/navigation/cacheOptions.js +45 -0
- package/dist/navigation/cacheOptions.js.map +1 -0
- package/dist/navigation/enrichModelNavigation.d.ts +17 -0
- package/dist/navigation/enrichModelNavigation.d.ts.map +1 -0
- package/dist/navigation/enrichModelNavigation.js +46 -0
- package/dist/navigation/enrichModelNavigation.js.map +1 -0
- package/dist/navigation/linkIndex.d.ts +10 -0
- package/dist/navigation/linkIndex.d.ts.map +1 -0
- package/dist/navigation/linkIndex.js +34 -0
- package/dist/navigation/linkIndex.js.map +1 -0
- package/dist/navigation/listingLinkBundle.d.ts +22 -0
- package/dist/navigation/listingLinkBundle.d.ts.map +1 -0
- package/dist/navigation/listingLinkBundle.js +88 -0
- package/dist/navigation/listingLinkBundle.js.map +1 -0
- package/dist/navigation/registry.d.ts +15 -0
- package/dist/navigation/registry.d.ts.map +1 -0
- package/dist/navigation/registry.js +130 -0
- package/dist/navigation/registry.js.map +1 -0
- package/dist/navigation/requestCache.d.ts +18 -0
- package/dist/navigation/requestCache.d.ts.map +1 -0
- package/dist/navigation/requestCache.js +66 -0
- package/dist/navigation/requestCache.js.map +1 -0
- package/dist/navigation/types.d.ts +45 -0
- package/dist/navigation/types.d.ts.map +1 -0
- package/dist/navigation/types.js +2 -0
- package/dist/navigation/types.js.map +1 -0
- package/dist/revalidation/entry-handlers.d.ts +40 -0
- package/dist/revalidation/entry-handlers.d.ts.map +1 -0
- package/dist/revalidation/entry-handlers.js +144 -0
- package/dist/revalidation/entry-handlers.js.map +1 -0
- package/dist/revalidation/handlers.d.ts +19 -0
- package/dist/revalidation/handlers.d.ts.map +1 -0
- package/dist/revalidation/handlers.js +50 -0
- package/dist/revalidation/handlers.js.map +1 -0
- package/dist/revalidation/index.d.ts +4 -0
- package/dist/revalidation/index.d.ts.map +1 -0
- package/dist/revalidation/index.js +5 -0
- package/dist/revalidation/index.js.map +1 -0
- package/dist/revalidation/nextjs-route.d.ts +38 -0
- package/dist/revalidation/nextjs-route.d.ts.map +1 -0
- package/dist/revalidation/nextjs-route.js +36 -0
- package/dist/revalidation/nextjs-route.js.map +1 -0
- package/dist/revalidation/route.d.ts +3 -0
- package/dist/revalidation/route.d.ts.map +1 -0
- package/dist/revalidation/route.js +99 -0
- package/dist/revalidation/route.js.map +1 -0
- package/dist/revalidation/server-utils.d.ts +31 -0
- package/dist/revalidation/server-utils.d.ts.map +1 -0
- package/dist/revalidation/server-utils.js +54 -0
- package/dist/revalidation/server-utils.js.map +1 -0
- package/dist/revalidation/tags.d.ts +110 -0
- package/dist/revalidation/tags.d.ts.map +1 -0
- package/dist/revalidation/tags.js +160 -0
- package/dist/revalidation/tags.js.map +1 -0
- package/dist/revalidation/utils.d.ts +21 -0
- package/dist/revalidation/utils.d.ts.map +1 -0
- package/dist/revalidation/utils.js +61 -0
- package/dist/revalidation/utils.js.map +1 -0
- package/dist/revalidation/webhook-content-types.d.ts +12 -0
- package/dist/revalidation/webhook-content-types.d.ts.map +1 -0
- package/dist/revalidation/webhook-content-types.js +28 -0
- package/dist/revalidation/webhook-content-types.js.map +1 -0
- package/dist/routing/index.d.ts +2 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +2 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/marketing-site-url-calculators.d.ts +21 -0
- package/dist/routing/marketing-site-url-calculators.d.ts.map +1 -0
- package/dist/routing/marketing-site-url-calculators.js +43 -0
- package/dist/routing/marketing-site-url-calculators.js.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +10 -0
- package/dist/server.js.map +1 -0
- package/dist/telemetry/deriveOperation.d.ts +8 -0
- package/dist/telemetry/deriveOperation.d.ts.map +1 -0
- package/dist/telemetry/deriveOperation.js +59 -0
- package/dist/telemetry/deriveOperation.js.map +1 -0
- package/dist/telemetry/queryContext.d.ts +7 -0
- package/dist/telemetry/queryContext.d.ts.map +1 -0
- package/dist/telemetry/queryContext.js +9 -0
- package/dist/telemetry/queryContext.js.map +1 -0
- package/dist/telemetry/queryLog.d.ts +17 -0
- package/dist/telemetry/queryLog.d.ts.map +1 -0
- package/dist/telemetry/queryLog.js +54 -0
- package/dist/telemetry/queryLog.js.map +1 -0
- package/dist/types.d.ts +93 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/arrayUtils.d.ts +3 -0
- package/dist/utils/arrayUtils.d.ts.map +1 -0
- package/dist/utils/arrayUtils.js +12 -0
- package/dist/utils/arrayUtils.js.map +1 -0
- package/dist/utils/dateUtils.d.ts +9 -0
- package/dist/utils/dateUtils.d.ts.map +1 -0
- package/dist/utils/dateUtils.js +26 -0
- package/dist/utils/dateUtils.js.map +1 -0
- package/dist/utils/errors.d.ts +56 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +100 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/redirectMap.d.ts +40 -0
- package/dist/utils/redirectMap.d.ts.map +1 -0
- package/dist/utils/redirectMap.js +129 -0
- package/dist/utils/redirectMap.js.map +1 -0
- package/dist/utils/retry.d.ts +103 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +248 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/tags.d.ts +35 -0
- package/dist/utils/tags.d.ts.map +1 -0
- package/dist/utils/tags.js +37 -0
- package/dist/utils/tags.js.map +1 -0
- package/docs/llms.md +430 -0
- package/package.json +86 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigationItem.js","sourceRoot":"","sources":["../../src/converters/navigationItem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { IBasePage, IInternalLink } from '@se-studio/core-data-types';
|
|
2
|
+
import type { Entry } from 'contentful';
|
|
3
|
+
import type { DefaultChainModifier } from '../api';
|
|
4
|
+
import type { BasePageSkeleton } from '../baseTypes/basePage';
|
|
5
|
+
import type { BasePageVariantSkeleton } from '../baseTypes/basePageVariant';
|
|
6
|
+
import { type ConverterContext } from './helpers';
|
|
7
|
+
/**
|
|
8
|
+
* Base converter for Contentful Page entries to IPage type
|
|
9
|
+
*
|
|
10
|
+
* This is a minimal implementation that can be extended using
|
|
11
|
+
* the functional composition pattern.
|
|
12
|
+
*
|
|
13
|
+
* @param entry - Contentful entry to convert
|
|
14
|
+
* @returns IPage object
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const page = basePageConverter(contentfulEntry);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function basePageConverter(context: ConverterContext, entry: Entry<BasePageSkeleton, DefaultChainModifier, string>): IBasePage;
|
|
22
|
+
export declare function calculatePageHref(slug: string): string;
|
|
23
|
+
export declare function basePageLinkConverter(context: ConverterContext, entry: Entry<BasePageSkeleton, DefaultChainModifier, string>): IInternalLink;
|
|
24
|
+
/**
|
|
25
|
+
* Calculates the href for a page variant page
|
|
26
|
+
* @param slug - Page variant slug
|
|
27
|
+
* @returns Page variant href path with trailing slash
|
|
28
|
+
*/
|
|
29
|
+
export declare function calculatePageVariantHref(slug: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Base converter for PageVariant entries to IInternalLink type
|
|
32
|
+
* Used when a page variant is referenced as a link in content
|
|
33
|
+
*
|
|
34
|
+
* @param context - Converter context containing assets, includes, and resolvers
|
|
35
|
+
* @param entry - Contentful page variant entry to convert
|
|
36
|
+
* @returns IInternalLink object representing the page variant link
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const pageVariantLink = basePageVariantLinkConverter(context, pageVariantEntry);
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function basePageVariantLinkConverter(context: ConverterContext, entry: Entry<BasePageVariantSkeleton, DefaultChainModifier, string>): IInternalLink;
|
|
44
|
+
//# sourceMappingURL=page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/converters/page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAmB,MAAM,4BAA4B,CAAC;AAE5F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAE5E,OAAO,EAEL,KAAK,gBAAgB,EAQtB,MAAM,WAAW,CAAC;AAUnB;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAC3D,SAAS,CAgIX;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,UAK7C;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAC3D,aAAa,CAsBf;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,UAEpD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,KAAK,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAClE,aAAa,CAoBf"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { isCollection, resolvedMeta } from '@se-studio/core-data-types';
|
|
2
|
+
import { lookupMediaEntry } from './asset.js';
|
|
3
|
+
import { addPositionMetadata, calculateContentCount, createInternalLink, lookupAsset, makeContentfulDescription, makeContentfulTitle, shouldResolveContents, shouldResolveNavigation, } from './helpers.js';
|
|
4
|
+
import { collectIconsFromContent, collectIconsFromNavigation, deduplicateIcons, } from './iconCollector.js';
|
|
5
|
+
import { resolveNavigationOrStub } from './navigationItem.js';
|
|
6
|
+
import { resolveLink, resolvePageContent, resolveSchema } from './resolver.js';
|
|
7
|
+
import { resolveTemplate } from './template.js';
|
|
8
|
+
/**
|
|
9
|
+
* Base converter for Contentful Page entries to IPage type
|
|
10
|
+
*
|
|
11
|
+
* This is a minimal implementation that can be extended using
|
|
12
|
+
* the functional composition pattern.
|
|
13
|
+
*
|
|
14
|
+
* @param entry - Contentful entry to convert
|
|
15
|
+
* @returns IPage object
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const page = basePageConverter(contentfulEntry);
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function basePageConverter(context, entry) {
|
|
23
|
+
const { sys: { id }, fields, } = entry;
|
|
24
|
+
const { slug, title, description, featuredImage, tags, content, menu: pageMenu, footer: pageFooter, template: templateLink, topContent: topContentLinks, bottomContent: bottomContentLinks, structuredData, meta: pageMeta, backgroundColour: pageBackgroundColour, textColour: pageTextColour, visuals: visualsField, ...simpleFields } = fields;
|
|
25
|
+
if (!shouldResolveNavigation(context) && !shouldResolveContents(context)) {
|
|
26
|
+
return {
|
|
27
|
+
type: 'Page',
|
|
28
|
+
id,
|
|
29
|
+
isHomePage: slug === 'index',
|
|
30
|
+
slug,
|
|
31
|
+
name: title,
|
|
32
|
+
title: makeContentfulTitle(title, id),
|
|
33
|
+
description: makeContentfulDescription(description, id),
|
|
34
|
+
featuredImage: lookupAsset(context, featuredImage),
|
|
35
|
+
href: context.urlCalculators.page(slug),
|
|
36
|
+
contentCount: 0,
|
|
37
|
+
tags: tags
|
|
38
|
+
?.map((t) => resolveLink(context, id, t))
|
|
39
|
+
.filter((t) => t != null),
|
|
40
|
+
...simpleFields,
|
|
41
|
+
backgroundColour: pageBackgroundColour,
|
|
42
|
+
textColour: pageTextColour,
|
|
43
|
+
meta: resolvedMeta(pageMeta),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const pageMenuNav = resolveNavigationOrStub(context, pageMenu);
|
|
47
|
+
const pageFooterNav = resolveNavigationOrStub(context, pageFooter);
|
|
48
|
+
const template = templateLink ? resolveTemplate(context, templateLink) : null;
|
|
49
|
+
// Resolve all content sections
|
|
50
|
+
const topContent = topContentLinks
|
|
51
|
+
?.map((c) => resolvePageContent(context, id, c))
|
|
52
|
+
.filter((item) => item !== null) ?? [];
|
|
53
|
+
const pageContent = content
|
|
54
|
+
?.map((c) => resolvePageContent(context, id, c))
|
|
55
|
+
.filter((item) => item !== null) ?? [];
|
|
56
|
+
const bottomContent = bottomContentLinks
|
|
57
|
+
?.map((c) => resolvePageContent(context, id, c))
|
|
58
|
+
.filter((item) => item !== null) ?? [];
|
|
59
|
+
const preContent = template?.preContent ?? [];
|
|
60
|
+
const postContent = template?.postContent ?? [];
|
|
61
|
+
const contentContainer = template?.contentContainer;
|
|
62
|
+
// Merge in correct order: with contentContainer (must be a collection), inject pageContent into the container
|
|
63
|
+
const mergedContents = contentContainer && isCollection(contentContainer)
|
|
64
|
+
? [
|
|
65
|
+
...topContent,
|
|
66
|
+
...preContent,
|
|
67
|
+
{
|
|
68
|
+
...contentContainer,
|
|
69
|
+
contents: addPositionMetadata([...(contentContainer.contents ?? []), ...pageContent]),
|
|
70
|
+
},
|
|
71
|
+
...postContent,
|
|
72
|
+
...bottomContent,
|
|
73
|
+
]
|
|
74
|
+
: [...topContent, ...preContent, ...pageContent, ...postContent, ...bottomContent];
|
|
75
|
+
const contents = addPositionMetadata(mergedContents);
|
|
76
|
+
// Determine final menu and footer (page-level overrides template)
|
|
77
|
+
const finalMenu = pageMenuNav ?? template?.menu;
|
|
78
|
+
const finalFooter = pageFooterNav ?? template?.footer;
|
|
79
|
+
// Collect and deduplicate all SVG icons from page content and navigation
|
|
80
|
+
const icons = deduplicateIcons(collectIconsFromContent(contents), collectIconsFromNavigation(finalMenu), collectIconsFromNavigation(finalFooter));
|
|
81
|
+
const visuals = visualsField
|
|
82
|
+
?.map((link) => lookupMediaEntry(context, link))
|
|
83
|
+
.filter((v) => v != null);
|
|
84
|
+
const page = {
|
|
85
|
+
type: 'Page',
|
|
86
|
+
id,
|
|
87
|
+
isHomePage: slug === 'index',
|
|
88
|
+
slug,
|
|
89
|
+
name: title,
|
|
90
|
+
title: makeContentfulTitle(title, id),
|
|
91
|
+
description: makeContentfulDescription(description, id),
|
|
92
|
+
featuredImage: lookupAsset(context, featuredImage),
|
|
93
|
+
visuals: visuals?.length ? visuals : undefined,
|
|
94
|
+
tags: tags?.map((tag) => resolveLink(context, id, tag)).filter((t) => t != null),
|
|
95
|
+
href: context.urlCalculators.page(slug),
|
|
96
|
+
contentCount: calculateContentCount(topContent, pageContent, bottomContent),
|
|
97
|
+
contents,
|
|
98
|
+
icons,
|
|
99
|
+
structuredData: [
|
|
100
|
+
...(structuredData?.map((link) => resolveSchema(context, id, link)) ?? []),
|
|
101
|
+
...(template?.structuredData ?? []),
|
|
102
|
+
].filter((item) => item !== null),
|
|
103
|
+
meta: resolvedMeta(template?.meta, pageMeta),
|
|
104
|
+
...simpleFields,
|
|
105
|
+
backgroundColour: pageBackgroundColour ?? template?.backgroundColour,
|
|
106
|
+
textColour: pageTextColour ?? template?.textColour,
|
|
107
|
+
menu: finalMenu,
|
|
108
|
+
footer: finalFooter,
|
|
109
|
+
};
|
|
110
|
+
return page;
|
|
111
|
+
}
|
|
112
|
+
export function calculatePageHref(slug) {
|
|
113
|
+
if (slug === 'index') {
|
|
114
|
+
return '/';
|
|
115
|
+
}
|
|
116
|
+
return `/${slug}/`;
|
|
117
|
+
}
|
|
118
|
+
export function basePageLinkConverter(context, entry) {
|
|
119
|
+
const { sys: { id, contentType }, fields, } = entry;
|
|
120
|
+
if (contentType.sys.id !== 'page') {
|
|
121
|
+
throw new Error(`Invalid content type: expected "page", got "${contentType.sys.id}"`);
|
|
122
|
+
}
|
|
123
|
+
const href = context.urlCalculators.page(fields.slug);
|
|
124
|
+
return createInternalLink(id, {
|
|
125
|
+
...fields,
|
|
126
|
+
name: fields.cmsLabel,
|
|
127
|
+
}, context, href, 'Page', { tags: fields.tags?.map((tag) => resolveLink(context, id, tag)) });
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Calculates the href for a page variant page
|
|
131
|
+
* @param slug - Page variant slug
|
|
132
|
+
* @returns Page variant href path with trailing slash
|
|
133
|
+
*/
|
|
134
|
+
export function calculatePageVariantHref(slug) {
|
|
135
|
+
return `/${slug}/`;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Base converter for PageVariant entries to IInternalLink type
|
|
139
|
+
* Used when a page variant is referenced as a link in content
|
|
140
|
+
*
|
|
141
|
+
* @param context - Converter context containing assets, includes, and resolvers
|
|
142
|
+
* @param entry - Contentful page variant entry to convert
|
|
143
|
+
* @returns IInternalLink object representing the page variant link
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```ts
|
|
147
|
+
* const pageVariantLink = basePageVariantLinkConverter(context, pageVariantEntry);
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export function basePageVariantLinkConverter(context, entry) {
|
|
151
|
+
const { sys: { id, contentType }, fields, } = entry;
|
|
152
|
+
if (contentType.sys.id !== 'pageVariant') {
|
|
153
|
+
throw new Error(`Invalid content type: expected "pageVariant", got "${contentType.sys.id}"`);
|
|
154
|
+
}
|
|
155
|
+
return createInternalLink(id, {
|
|
156
|
+
...fields,
|
|
157
|
+
name: fields.cmsLabel,
|
|
158
|
+
}, context, context.urlCalculators.pageVariant(fields.slug), 'Page', { tags: fields.tags?.map((tag) => resolveLink(context, id, tag)) });
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/converters/page.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IBasePage, ITyped } from '@se-studio/core-data-types';
|
|
2
|
+
import type { Entry } from 'contentful';
|
|
3
|
+
import type { DefaultChainModifier } from '../api';
|
|
4
|
+
import type { BaseAlternatePageContentSkeleton } from '../baseTypes/baseAlternatePageContent';
|
|
5
|
+
import type { BasePageVariantSkeleton } from '../baseTypes/basePageVariant';
|
|
6
|
+
import { type ConverterContext } from './helpers';
|
|
7
|
+
/**
|
|
8
|
+
* Replace or remove one content block (by source entry id) in a page content tree.
|
|
9
|
+
* Walks top-level items and nested collection {@link IBaseCollection.contents}.
|
|
10
|
+
* When `replacements` is non-empty, inserts all items at the source position (1→N swap).
|
|
11
|
+
*/
|
|
12
|
+
export declare function mergeAlternatePageContentsInTree(items: ReadonlyArray<ITyped>, sourceContentId: string, replacements: ITyped[] | null): ITyped[];
|
|
13
|
+
/**
|
|
14
|
+
* Resolves replacement blocks for an alternate-page-content entry.
|
|
15
|
+
* Prefers `replacementContents` (plural); falls back to singular `replacementContent`.
|
|
16
|
+
* Returns `null` when both are empty (remove source).
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveAlternateReplacements(context: ConverterContext, variantId: string, altEntry: Entry<BaseAlternatePageContentSkeleton, DefaultChainModifier, string>): ITyped[] | null;
|
|
19
|
+
/**
|
|
20
|
+
* Build an {@link IBasePage} from a **pageVariant** entry and its includes:
|
|
21
|
+
* converts {@link originalPage}, applies {@link alternativeContents}, overlays variant fields.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildMergedPageFromVariantEntry(context: ConverterContext, variantEntry: Entry<BasePageVariantSkeleton, DefaultChainModifier, string>): IBasePage;
|
|
24
|
+
//# sourceMappingURL=pageVariantMerge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageVariantMerge.d.ts","sourceRoot":"","sources":["../../src/converters/pageVariantMerge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,SAAS,EAAW,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAE9F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAE9F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAG5E,OAAO,EAEL,KAAK,gBAAgB,EAItB,MAAM,WAAW,CAAC;AAUnB;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,EAC5B,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,GAC5B,MAAM,EAAE,CAuBV;AAYD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,KAAK,CAAC,gCAAgC,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAC9E,MAAM,EAAE,GAAG,IAAI,CAgBjB;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,KAAK,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GACzE,SAAS,CAwCX"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { isCollection, resolvedMeta } from '@se-studio/core-data-types';
|
|
2
|
+
import { lookupMediaEntry } from './asset.js';
|
|
3
|
+
import { addPositionMetadata, lookupAsset, makeContentfulDescription, makeContentfulTitle, } from './helpers.js';
|
|
4
|
+
import { collectIconsFromContent, collectIconsFromNavigation, deduplicateIcons, } from './iconCollector.js';
|
|
5
|
+
import { resolveNavigationOrStub } from './navigationItem.js';
|
|
6
|
+
import { basePageConverter } from './page.js';
|
|
7
|
+
import { resolveLink, resolvePageContent, resolveSchema } from './resolver.js';
|
|
8
|
+
/**
|
|
9
|
+
* Replace or remove one content block (by source entry id) in a page content tree.
|
|
10
|
+
* Walks top-level items and nested collection {@link IBaseCollection.contents}.
|
|
11
|
+
* When `replacements` is non-empty, inserts all items at the source position (1→N swap).
|
|
12
|
+
*/
|
|
13
|
+
export function mergeAlternatePageContentsInTree(items, sourceContentId, replacements) {
|
|
14
|
+
const out = [];
|
|
15
|
+
for (const item of items) {
|
|
16
|
+
if (item.id === sourceContentId) {
|
|
17
|
+
if (replacements && replacements.length > 0) {
|
|
18
|
+
out.push(...replacements);
|
|
19
|
+
}
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (isCollection(item)) {
|
|
23
|
+
const col = item;
|
|
24
|
+
const nextContents = col.contents
|
|
25
|
+
? mergeAlternatePageContentsInTree(col.contents, sourceContentId, replacements)
|
|
26
|
+
: undefined;
|
|
27
|
+
out.push({
|
|
28
|
+
...col,
|
|
29
|
+
contents: nextContents,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
out.push(item);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
function pushAlternateResolutionError(context, message) {
|
|
39
|
+
const cmsError = {
|
|
40
|
+
entryId: '',
|
|
41
|
+
entryType: 'alternatePageContent',
|
|
42
|
+
message,
|
|
43
|
+
error: new Error(message),
|
|
44
|
+
};
|
|
45
|
+
context.errors.push(cmsError);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Resolves replacement blocks for an alternate-page-content entry.
|
|
49
|
+
* Prefers `replacementContents` (plural); falls back to singular `replacementContent`.
|
|
50
|
+
* Returns `null` when both are empty (remove source).
|
|
51
|
+
*/
|
|
52
|
+
export function resolveAlternateReplacements(context, variantId, altEntry) {
|
|
53
|
+
const pluralLinks = altEntry.fields.replacementContents;
|
|
54
|
+
if (pluralLinks?.length) {
|
|
55
|
+
const resolved = pluralLinks
|
|
56
|
+
.map((link) => resolvePageContent(context, variantId, link))
|
|
57
|
+
.filter((item) => item !== null);
|
|
58
|
+
return resolved.length > 0 ? resolved : null;
|
|
59
|
+
}
|
|
60
|
+
const singularLink = altEntry.fields.replacementContent;
|
|
61
|
+
if (singularLink) {
|
|
62
|
+
const resolved = resolvePageContent(context, variantId, singularLink);
|
|
63
|
+
return resolved ? [resolved] : null;
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Build an {@link IBasePage} from a **pageVariant** entry and its includes:
|
|
69
|
+
* converts {@link originalPage}, applies {@link alternativeContents}, overlays variant fields.
|
|
70
|
+
*/
|
|
71
|
+
export function buildMergedPageFromVariantEntry(context, variantEntry) {
|
|
72
|
+
const variantId = variantEntry.sys.id;
|
|
73
|
+
const originalLink = variantEntry.fields.originalPage;
|
|
74
|
+
const originalId = originalLink.sys.id;
|
|
75
|
+
const included = context.includes.get(originalId);
|
|
76
|
+
if (included?.type !== 'page') {
|
|
77
|
+
throw new Error(`Page variant ${variantId}: original page ${originalId} missing from includes (type=${included?.type})`);
|
|
78
|
+
}
|
|
79
|
+
const basePage = basePageConverter(context, included.entry);
|
|
80
|
+
let contents = basePage.contents ? [...basePage.contents] : [];
|
|
81
|
+
const altLinks = variantEntry.fields.alternativeContents;
|
|
82
|
+
if (altLinks?.length) {
|
|
83
|
+
for (const link of altLinks) {
|
|
84
|
+
const altWrap = context.includes.get(link.sys.id);
|
|
85
|
+
if (altWrap?.type !== 'alternatePageContent') {
|
|
86
|
+
pushAlternateResolutionError(context, `Page variant ${variantId}: alternatePageContent ${link.sys.id} not in includes`);
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const altEntry = altWrap.entry;
|
|
90
|
+
const sourceId = altEntry.fields.sourceContent.sys.id;
|
|
91
|
+
const replacements = resolveAlternateReplacements(context, variantId, altEntry);
|
|
92
|
+
contents = mergeAlternatePageContentsInTree(contents, sourceId, replacements);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return overlayPageVariantOntoMergedBase(context, variantEntry, basePage, contents);
|
|
96
|
+
}
|
|
97
|
+
function overlayPageVariantOntoMergedBase(context, variantEntry, basePage, mergedContents) {
|
|
98
|
+
const { sys, fields: vf } = variantEntry;
|
|
99
|
+
const variantId = sys.id;
|
|
100
|
+
const variantSlug = vf.slug;
|
|
101
|
+
const menu = vf.menu ? resolveNavigationOrStub(context, vf.menu) : basePage.menu;
|
|
102
|
+
const footer = vf.footer ? resolveNavigationOrStub(context, vf.footer) : basePage.footer;
|
|
103
|
+
const positionedContents = addPositionMetadata(mergedContents);
|
|
104
|
+
const icons = deduplicateIcons(collectIconsFromContent(positionedContents), collectIconsFromNavigation(menu), collectIconsFromNavigation(footer));
|
|
105
|
+
const description = vf.description !== undefined && vf.description !== null
|
|
106
|
+
? makeContentfulDescription(vf.description, variantId)
|
|
107
|
+
: basePage.description;
|
|
108
|
+
const structuredData = vf.structuredData !== undefined
|
|
109
|
+
? vf.structuredData
|
|
110
|
+
.map((l) => resolveSchema(context, variantId, l))
|
|
111
|
+
.filter((item) => item !== null)
|
|
112
|
+
: basePage.structuredData;
|
|
113
|
+
return {
|
|
114
|
+
...basePage,
|
|
115
|
+
id: variantId,
|
|
116
|
+
slug: variantSlug,
|
|
117
|
+
isHomePage: variantSlug === 'index',
|
|
118
|
+
name: vf.title !== undefined ? vf.title : basePage.name,
|
|
119
|
+
title: vf.title !== undefined ? makeContentfulTitle(vf.title, variantId) : basePage.title,
|
|
120
|
+
description,
|
|
121
|
+
href: context.urlCalculators.pageVariant(variantSlug),
|
|
122
|
+
featuredImage: vf.featuredImage !== undefined
|
|
123
|
+
? lookupAsset(context, vf.featuredImage)
|
|
124
|
+
: basePage.featuredImage,
|
|
125
|
+
tags: vf.tags
|
|
126
|
+
? vf.tags.map((t) => resolveLink(context, variantId, t)).filter((t) => t != null)
|
|
127
|
+
: basePage.tags,
|
|
128
|
+
structuredData,
|
|
129
|
+
meta: resolvedMeta(basePage.meta, vf.meta),
|
|
130
|
+
menu,
|
|
131
|
+
footer,
|
|
132
|
+
backgroundColour: vf.backgroundColour ?? basePage.backgroundColour,
|
|
133
|
+
textColour: vf.textColour ?? basePage.textColour,
|
|
134
|
+
breadcrumbTitle: vf.breadcrumbTitle ?? basePage.breadcrumbTitle,
|
|
135
|
+
indexed: vf.indexed,
|
|
136
|
+
hidden: vf.hidden,
|
|
137
|
+
contentCount: mergedContents.length,
|
|
138
|
+
contents: positionedContents,
|
|
139
|
+
icons,
|
|
140
|
+
...(vf.phoneNumber !== undefined ? { phoneNumber: vf.phoneNumber } : {}),
|
|
141
|
+
...(vf.redirectTo !== undefined ? { redirectTo: vf.redirectTo } : {}),
|
|
142
|
+
...(vf.visuals !== undefined
|
|
143
|
+
? {
|
|
144
|
+
visuals: vf.visuals
|
|
145
|
+
.map((link) => lookupMediaEntry(context, link))
|
|
146
|
+
.filter((v) => v != null),
|
|
147
|
+
}
|
|
148
|
+
: {}),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=pageVariantMerge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageVariantMerge.js","sourceRoot":"","sources":["../../src/converters/pageVariantMerge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAOxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EACL,mBAAmB,EAEnB,WAAW,EACX,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5E;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAC9C,KAA4B,EAC5B,eAAuB,EACvB,YAA6B;IAE7B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,EAAE,KAAK,eAAe,EAAE,CAAC;YAChC,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;YAC5B,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAuB,CAAC;YACpC,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ;gBAC/B,CAAC,CAAC,gCAAgC,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC;gBAC/E,CAAC,CAAC,SAAS,CAAC;YACd,GAAG,CAAC,IAAI,CAAC;gBACP,GAAG,GAAG;gBACN,QAAQ,EAAE,YAAY;aACb,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAyB,EAAE,OAAe;IAC9E,MAAM,QAAQ,GAAa;QACzB,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,sBAAsB;QACjC,OAAO;QACP,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC;KAC1B,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAC1C,OAAyB,EACzB,SAAiB,EACjB,QAA+E;IAE/E,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACxD,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,WAAW;aACzB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;aAC3D,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC;IACxD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACtE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAyB,EACzB,YAA0E;IAE1E,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC;IACtD,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,QAAQ,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,gBAAgB,SAAS,mBAAmB,UAAU,gCAAgC,QAAQ,EAAE,IAAI,GAAG,CACxG,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAChC,OAAO,EACP,QAAQ,CAAC,KAA8D,CACxE,CAAC;IAEF,IAAI,QAAQ,GAAa,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACzD,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClD,IAAI,OAAO,EAAE,IAAI,KAAK,sBAAsB,EAAE,CAAC;gBAC7C,4BAA4B,CAC1B,OAAO,EACP,gBAAgB,SAAS,0BAA0B,IAAI,CAAC,GAAG,CAAC,EAAE,kBAAkB,CACjF,CAAC;gBACF,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAIxB,CAAC;YACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,MAAM,YAAY,GAAG,4BAA4B,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChF,QAAQ,GAAG,gCAAgC,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,OAAO,gCAAgC,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,gCAAgC,CACvC,OAAyB,EACzB,YAA0E,EAC1E,QAAmB,EACnB,cAAwB;IAExB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC;IACzC,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC;IAE5B,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjF,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IAEzF,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,gBAAgB,CAC5B,uBAAuB,CAAC,kBAAkB,CAAC,EAC3C,0BAA0B,CAAC,IAAI,CAAC,EAChC,0BAA0B,CAAC,MAAM,CAAC,CACnC,CAAC;IAEF,MAAM,WAAW,GACf,EAAE,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,CAAC,WAAW,KAAK,IAAI;QACrD,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;QACtD,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAE3B,MAAM,cAAc,GAClB,EAAE,CAAC,cAAc,KAAK,SAAS;QAC7B,CAAC,CAAE,EAAE,CAAC,cAAc;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;aAChD,MAAM,CAAC,CAAC,IAAI,EAAmB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAe;QACnE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IAE9B,OAAO;QACL,GAAG,QAAQ;QACX,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,WAAW,KAAK,OAAO;QACnC,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI;QACvD,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK;QACzF,WAAW;QACX,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC;QACrD,aAAa,EACX,EAAE,CAAC,aAAa,KAAK,SAAS;YAC5B,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC;YACxC,CAAC,CAAC,QAAQ,CAAC,aAAa;QAC5B,IAAI,EAAE,EAAE,CAAC,IAAI;YACX,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;YACjF,CAAC,CAAC,QAAQ,CAAC,IAAI;QACjB,cAAc;QACd,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;QAC1C,IAAI;QACJ,MAAM;QACN,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB;QAClE,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU;QAChD,eAAe,EAAE,EAAE,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe;QAC/D,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,YAAY,EAAE,cAAc,CAAC,MAAM;QACnC,QAAQ,EAAE,kBAAkB;QAC5B,KAAK;QACL,GAAG,CAAC,EAAE,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS;YAC1B,CAAC,CAAC;gBACE,OAAO,EAAE,EAAE,CAAC,OAAO;qBAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;qBAC9C,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;aACxD;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { IBasePerson, IPersonLink } from '@se-studio/core-data-types';
|
|
2
|
+
import type { Entry } from 'contentful';
|
|
3
|
+
import type { DefaultChainModifier, IContentfulRichText } from '../api';
|
|
4
|
+
import type { BaseCustomTypeSkeleton } from '../baseTypes/baseCustomType';
|
|
5
|
+
import type { BasePersonSkeleton } from '../baseTypes/basePerson';
|
|
6
|
+
import { type ConverterContext } from './helpers';
|
|
7
|
+
export type IContentfulPerson = IBasePerson & {
|
|
8
|
+
bio?: IContentfulRichText | null;
|
|
9
|
+
publishedIn?: IContentfulRichText | null;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Base converter for Person entries to IPersonLink type
|
|
13
|
+
* Used when a person is referenced as a link in content
|
|
14
|
+
*
|
|
15
|
+
* @param context - Converter context containing assets, includes, and resolvers
|
|
16
|
+
* @param entry - Contentful person entry to convert
|
|
17
|
+
* @returns IPersonLink object representing the person link
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const personLink = basePersonLinkConverter(context, personEntry);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function basePersonLinkConverter(context: ConverterContext, entry: Entry<BasePersonSkeleton, DefaultChainModifier, string>): IPersonLink;
|
|
25
|
+
/**
|
|
26
|
+
* Base converter for Person entries to IPerson type
|
|
27
|
+
* Used when a complete person object with bio and content is needed
|
|
28
|
+
*
|
|
29
|
+
* @param context - Converter context containing assets, includes, and resolvers
|
|
30
|
+
* @param entry - Contentful person entry to convert
|
|
31
|
+
* @param customTypeEntry - Optional custom type entry that defines templates and navigation
|
|
32
|
+
* @returns IPerson object representing the complete person
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const person = basePersonConverter(context, personEntry, customTypeEntry);
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function basePersonConverter(context: ConverterContext, entry: Entry<BasePersonSkeleton, DefaultChainModifier, string>, customTypeEntry?: Entry<BaseCustomTypeSkeleton, DefaultChainModifier, string>): IContentfulPerson;
|
|
40
|
+
//# sourceMappingURL=person.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"person.d.ts","sourceRoot":"","sources":["../../src/converters/person.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAIZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAEL,KAAK,gBAAgB,EAOtB,MAAM,WAAW,CAAC;AAenB,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,GAAG,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAC7D,WAAW,CAkDb;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAC9D,eAAe,CAAC,EAAE,KAAK,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAC5E,iBAAiB,CA8HnB"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { resolvedMeta } from '@se-studio/core-data-types';
|
|
2
|
+
import { addPositionMetadata, calculateContentCount, createInternalLink, lookupAsset, makeContentfulTitle, shouldResolveContents, shouldResolveNavigation, } from './helpers.js';
|
|
3
|
+
import { collectIconsFromContent, collectIconsFromNavigation, deduplicateIcons, } from './iconCollector.js';
|
|
4
|
+
import { resolveNavigationOrStub } from './navigationItem.js';
|
|
5
|
+
import { resolveLinks, resolvePageContent, resolveRichTextDocument, resolveSchema, } from './resolver.js';
|
|
6
|
+
import { resolveTemplate } from './template.js';
|
|
7
|
+
/**
|
|
8
|
+
* Base converter for Person entries to IPersonLink type
|
|
9
|
+
* Used when a person is referenced as a link in content
|
|
10
|
+
*
|
|
11
|
+
* @param context - Converter context containing assets, includes, and resolvers
|
|
12
|
+
* @param entry - Contentful person entry to convert
|
|
13
|
+
* @returns IPersonLink object representing the person link
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const personLink = basePersonLinkConverter(context, personEntry);
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export function basePersonLinkConverter(context, entry) {
|
|
21
|
+
const { sys, fields } = entry;
|
|
22
|
+
const { name, bio: fieldsBio, jobTitle, description, phoneNumber, emailAddress, linkedIn, twitter, website, quote, alumniOf, location, media, ...simpleFields } = fields;
|
|
23
|
+
if (sys.contentType.sys.id !== 'person') {
|
|
24
|
+
throw new Error(`Invalid content type: expected "person", got "${sys.contentType.sys.id}"`);
|
|
25
|
+
}
|
|
26
|
+
const title = makeContentfulTitle(name, sys.id);
|
|
27
|
+
return createInternalLink(sys.id, {
|
|
28
|
+
...simpleFields,
|
|
29
|
+
description: description ?? jobTitle,
|
|
30
|
+
name,
|
|
31
|
+
title,
|
|
32
|
+
featuredImage: media,
|
|
33
|
+
cmsLabel: title,
|
|
34
|
+
}, context, context.urlCalculators.person(fields.slug), 'Person', {
|
|
35
|
+
bio: resolveRichTextDocument(context, sys.id, fieldsBio),
|
|
36
|
+
jobTitle,
|
|
37
|
+
phoneNumber,
|
|
38
|
+
emailAddress,
|
|
39
|
+
linkedIn,
|
|
40
|
+
twitter,
|
|
41
|
+
website,
|
|
42
|
+
quote,
|
|
43
|
+
alumniOf,
|
|
44
|
+
location,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Base converter for Person entries to IPerson type
|
|
49
|
+
* Used when a complete person object with bio and content is needed
|
|
50
|
+
*
|
|
51
|
+
* @param context - Converter context containing assets, includes, and resolvers
|
|
52
|
+
* @param entry - Contentful person entry to convert
|
|
53
|
+
* @param customTypeEntry - Optional custom type entry that defines templates and navigation
|
|
54
|
+
* @returns IPerson object representing the complete person
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* const person = basePersonConverter(context, personEntry, customTypeEntry);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export function basePersonConverter(context, entry, customTypeEntry) {
|
|
62
|
+
const { sys: { id, contentType }, fields, } = entry;
|
|
63
|
+
if (contentType.sys.id !== 'person') {
|
|
64
|
+
throw new Error(`Invalid content type: expected "person", got "${contentType.sys.id}"`);
|
|
65
|
+
}
|
|
66
|
+
const { slug, name, description, jobTitle, media, bio: bioField, quote, website, expertise: expertiseLinks, publishedIn: publishedInField, content: contentLinks, structuredData, meta: personMeta, backgroundColour: personBackgroundColour, textColour: personTextColour, ...rest } = fields;
|
|
67
|
+
if (!shouldResolveNavigation(context) && !shouldResolveContents(context)) {
|
|
68
|
+
return {
|
|
69
|
+
type: 'Person',
|
|
70
|
+
id,
|
|
71
|
+
slug,
|
|
72
|
+
name,
|
|
73
|
+
title: makeContentfulTitle(name, id),
|
|
74
|
+
description: description ?? jobTitle ?? `Description for ${id}`,
|
|
75
|
+
jobTitle,
|
|
76
|
+
quote,
|
|
77
|
+
website,
|
|
78
|
+
featuredImage: lookupAsset(context, media),
|
|
79
|
+
href: context.urlCalculators.person(slug),
|
|
80
|
+
contentCount: 0,
|
|
81
|
+
...rest,
|
|
82
|
+
backgroundColour: personBackgroundColour,
|
|
83
|
+
textColour: personTextColour,
|
|
84
|
+
meta: resolvedMeta(personMeta),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const customType = customTypeEntry
|
|
88
|
+
? context.customTypeResolver(context, customTypeEntry)
|
|
89
|
+
: undefined;
|
|
90
|
+
// Resolve template from custom type (if provided)
|
|
91
|
+
const template = customTypeEntry?.fields.template
|
|
92
|
+
? resolveTemplate(context, customTypeEntry.fields.template)
|
|
93
|
+
: null;
|
|
94
|
+
// Resolve content sections
|
|
95
|
+
const customTypeTopContent = customTypeEntry?.fields.topContent
|
|
96
|
+
?.map((c) => resolvePageContent(context, id, c))
|
|
97
|
+
.filter((item) => item !== null) ?? [];
|
|
98
|
+
const personContent = contentLinks
|
|
99
|
+
?.map((c) => resolvePageContent(context, id, c))
|
|
100
|
+
.filter((item) => item !== null) ?? [];
|
|
101
|
+
const preContent = template?.preContent ?? [];
|
|
102
|
+
const postContent = template?.postContent ?? [];
|
|
103
|
+
// Merge in correct order: customType-level top content first, then template pre/post wrapping person content
|
|
104
|
+
const contents = addPositionMetadata([
|
|
105
|
+
...customTypeTopContent,
|
|
106
|
+
...preContent,
|
|
107
|
+
...personContent,
|
|
108
|
+
...postContent,
|
|
109
|
+
]);
|
|
110
|
+
// Resolve navigation (template level or from custom type)
|
|
111
|
+
// Note: Person doesn't have direct menu/footer overrides, so we rely on the custom type/template
|
|
112
|
+
const menu = customTypeEntry?.fields.menu
|
|
113
|
+
? resolveNavigationOrStub(context, customTypeEntry.fields.menu)
|
|
114
|
+
: template?.menu;
|
|
115
|
+
const footer = customTypeEntry?.fields.footer
|
|
116
|
+
? resolveNavigationOrStub(context, customTypeEntry.fields.footer)
|
|
117
|
+
: template?.footer;
|
|
118
|
+
// Collect and deduplicate all SVG icons
|
|
119
|
+
const icons = deduplicateIcons(collectIconsFromContent(contents), collectIconsFromNavigation(menu), collectIconsFromNavigation(footer));
|
|
120
|
+
return {
|
|
121
|
+
type: 'Person',
|
|
122
|
+
id,
|
|
123
|
+
slug,
|
|
124
|
+
name,
|
|
125
|
+
title: makeContentfulTitle(name, id),
|
|
126
|
+
description: description ?? jobTitle ?? `Description for ${id}`,
|
|
127
|
+
jobTitle,
|
|
128
|
+
quote,
|
|
129
|
+
website,
|
|
130
|
+
featuredImage: lookupAsset(context, media), // Person uses 'media' not 'featuredImage'
|
|
131
|
+
href: context.urlCalculators.person(slug),
|
|
132
|
+
bio: resolveRichTextDocument(context, id, bioField) ?? null,
|
|
133
|
+
expertise: resolveLinks(context, id, expertiseLinks) ?? null,
|
|
134
|
+
publishedIn: resolveRichTextDocument(context, id, publishedInField) ?? null,
|
|
135
|
+
contentCount: calculateContentCount(personContent),
|
|
136
|
+
contents,
|
|
137
|
+
menu,
|
|
138
|
+
footer,
|
|
139
|
+
backgroundColour: personBackgroundColour ?? template?.backgroundColour,
|
|
140
|
+
textColour: personTextColour ?? template?.textColour,
|
|
141
|
+
icons,
|
|
142
|
+
customType,
|
|
143
|
+
structuredData: [
|
|
144
|
+
...(structuredData?.map((link) => resolveSchema(context, id, link)) ?? []),
|
|
145
|
+
...(customTypeEntry?.fields?.structuredData?.map((link) => resolveSchema(context, id, link)) ?? []),
|
|
146
|
+
...(template?.structuredData ?? []),
|
|
147
|
+
].filter((item) => item !== null),
|
|
148
|
+
meta: resolvedMeta(template?.meta, customTypeEntry?.fields?.meta, personMeta),
|
|
149
|
+
...rest,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=person.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"person.js","sourceRoot":"","sources":["../../src/converters/person.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IVisual } from '@se-studio/core-data-types';
|
|
2
|
+
/**
|
|
3
|
+
* Enriches raster pictures in the assets map with `blurDataURL` by fetching a tiny CDN variant.
|
|
4
|
+
* Mutates each `IPicture` in place. Skips non-Contentful hosts, SVG, existing `blurDataURL`, and failures.
|
|
5
|
+
*
|
|
6
|
+
* @param assets - Map from asset id to visual (from `convertAllAssets`)
|
|
7
|
+
*/
|
|
8
|
+
export declare function enrichPictureBlurPlaceholders(assets: Map<string, IVisual>): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=pictureBlurEnricher.d.ts.map
|