@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,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for Contentful Live Preview entry → URL resolution.
|
|
3
|
+
* Kept separate from preview.ts / helpers.ts to avoid circular imports and
|
|
4
|
+
* so {@link PreviewEntryResolver} can return {@link PreviewEntryInfo} cleanly.
|
|
5
|
+
*/
|
|
6
|
+
import type { UrlCalculators } from '../converters/helpers';
|
|
7
|
+
/**
|
|
8
|
+
* Built-in content types handled by {@link getPreviewEntryInfo} without project resolvers.
|
|
9
|
+
*/
|
|
10
|
+
export type BuiltinPreviewContentType = 'page' | 'pageVariant' | 'pageTest' | 'article' | 'articleType' | 'tag' | 'person' | 'customType';
|
|
11
|
+
/**
|
|
12
|
+
* Content type id for a preview entry.
|
|
13
|
+
* Built-ins plus customer-specific types registered via {@link PreviewEntryResolver}
|
|
14
|
+
* (e.g. HSD `location`).
|
|
15
|
+
*/
|
|
16
|
+
export type PreviewContentType = BuiltinPreviewContentType | (string & {});
|
|
17
|
+
/**
|
|
18
|
+
* Information about an entry for preview purposes
|
|
19
|
+
*/
|
|
20
|
+
export interface PreviewEntryInfo {
|
|
21
|
+
/** The content type of the entry */
|
|
22
|
+
contentType: PreviewContentType;
|
|
23
|
+
/** The Contentful entry ID */
|
|
24
|
+
entryId: string;
|
|
25
|
+
/** The slug of the entry */
|
|
26
|
+
slug: string;
|
|
27
|
+
/** For articles, the article type's slug (needed for URL calculation) */
|
|
28
|
+
articleTypeSlug?: string;
|
|
29
|
+
/** The calculated URL for this entry */
|
|
30
|
+
href: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Linked entry shape passed to project preview resolvers (include depth 1).
|
|
34
|
+
* Compatible with Contentful include entries used by getPreviewEntryInfo.
|
|
35
|
+
*/
|
|
36
|
+
export interface PreviewEntryInclude {
|
|
37
|
+
sys: {
|
|
38
|
+
id: string;
|
|
39
|
+
contentType?: {
|
|
40
|
+
sys: {
|
|
41
|
+
id: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
fields?: Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Input for a project {@link PreviewEntryResolver}.
|
|
49
|
+
*/
|
|
50
|
+
export interface PreviewEntryResolveInput {
|
|
51
|
+
contentTypeId: string;
|
|
52
|
+
entryId: string;
|
|
53
|
+
/** Entry fields from the preview API (slug, links, …). */
|
|
54
|
+
fields: Record<string, unknown>;
|
|
55
|
+
/** Linked entries from include: 1. */
|
|
56
|
+
includes: PreviewEntryInclude[] | undefined;
|
|
57
|
+
urlCalculators: UrlCalculators;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Project-supplied resolver for page-like content types not handled by core
|
|
61
|
+
* {@link getPreviewEntryInfo}. Return preview info, or null if unhandled.
|
|
62
|
+
* Built-in switch runs first; extensions are only consulted on unknown types.
|
|
63
|
+
*/
|
|
64
|
+
export type PreviewEntryResolver = (input: PreviewEntryResolveInput) => PreviewEntryInfo | null;
|
|
65
|
+
//# sourceMappingURL=preview-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-types.d.ts","sourceRoot":"","sources":["../../src/api/preview-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,yBAAyB,GACjC,MAAM,GACN,aAAa,GACb,UAAU,GACV,SAAS,GACT,aAAa,GACb,KAAK,GACL,QAAQ,GACR,YAAY,CAAC;AAEjB;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,yBAAyB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,WAAW,EAAE,kBAAkB,CAAC;IAChC,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,CAAC,EAAE;YACZ,GAAG,EAAE;gBACH,EAAE,EAAE,MAAM,CAAC;aACZ,CAAC;SACH,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,sCAAsC;IACtC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC5C,cAAc,EAAE,cAAc,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,wBAAwB,KAAK,gBAAgB,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for Contentful Live Preview entry → URL resolution.
|
|
3
|
+
* Kept separate from preview.ts / helpers.ts to avoid circular imports and
|
|
4
|
+
* so {@link PreviewEntryResolver} can return {@link PreviewEntryInfo} cleanly.
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=preview-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-types.js","sourceRoot":"","sources":["../../src/api/preview-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preview page utilities for Contentful
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality to look up an entry by ID and calculate the
|
|
5
|
+
* appropriate URL for preview redirects.
|
|
6
|
+
*/
|
|
7
|
+
import type { BaseConverterContext } from '../converters/helpers';
|
|
8
|
+
import type { ContentfulConfig, FetchOptions } from '../types';
|
|
9
|
+
import type { PreviewEntryInfo, PreviewEntryResolver } from './preview-types';
|
|
10
|
+
export type { BuiltinPreviewContentType, PreviewContentType, PreviewEntryInclude, PreviewEntryInfo, PreviewEntryResolveInput, PreviewEntryResolver, } from './preview-types';
|
|
11
|
+
/**
|
|
12
|
+
* Convenience resolver for content types that only need `fields.slug` → href.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* previewEntryResolvers: {
|
|
17
|
+
* location: slugPreviewResolver('location', (slug) => `/drive/${slug}/`),
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function slugPreviewResolver(contentType: string, toHref: (slug: string) => string): PreviewEntryResolver;
|
|
22
|
+
/**
|
|
23
|
+
* Looks up a Contentful entry by ID and returns information needed for preview redirect.
|
|
24
|
+
*
|
|
25
|
+
* Makes a single API call to fetch the entry by ID, determines its content type,
|
|
26
|
+
* extracts the relevant slug fields, and calculates the URL using the context's
|
|
27
|
+
* URL calculators.
|
|
28
|
+
*
|
|
29
|
+
* @param context - Base converter context containing URL calculators
|
|
30
|
+
* @param config - Contentful configuration (spaceId, accessToken, etc.)
|
|
31
|
+
* @param entryId - The Contentful entry ID to look up
|
|
32
|
+
* @param options - Optional fetch options (preview mode is always enabled for this function)
|
|
33
|
+
* @returns PreviewEntryInfo with content type, slug, and calculated href, or null if not found
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* const context = createBaseConverterContext(urlCalculators);
|
|
38
|
+
* const info = await getPreviewEntryInfo(
|
|
39
|
+
* context,
|
|
40
|
+
* { spaceId: '...', accessToken: '...' },
|
|
41
|
+
* 'abc123'
|
|
42
|
+
* );
|
|
43
|
+
* if (info) {
|
|
44
|
+
* redirect(info.href);
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function getPreviewEntryInfo(context: BaseConverterContext, config: ContentfulConfig, entryId: string, options?: Omit<FetchOptions, 'preview'>): Promise<PreviewEntryInfo | null>;
|
|
49
|
+
//# sourceMappingURL=preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/api/preview.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EAAuB,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEnG,YAAY,EACV,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAC/B,oBAAoB,CAatB;AAwCD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GACtC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA6JlC"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preview page utilities for Contentful
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality to look up an entry by ID and calculate the
|
|
5
|
+
* appropriate URL for preview redirects.
|
|
6
|
+
*/
|
|
7
|
+
import { getContentfulClient } from '../client.js';
|
|
8
|
+
import { GlobalTag } from '../revalidation/tags.js';
|
|
9
|
+
/**
|
|
10
|
+
* Convenience resolver for content types that only need `fields.slug` → href.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* previewEntryResolvers: {
|
|
15
|
+
* location: slugPreviewResolver('location', (slug) => `/drive/${slug}/`),
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export function slugPreviewResolver(contentType, toHref) {
|
|
20
|
+
return ({ entryId, fields }) => {
|
|
21
|
+
const slug = readStringField(fields, 'slug');
|
|
22
|
+
if (!slug) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
contentType,
|
|
27
|
+
entryId,
|
|
28
|
+
slug,
|
|
29
|
+
href: toHref(slug),
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function readStringField(fields, key) {
|
|
34
|
+
if (!fields) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const value = fields[key];
|
|
38
|
+
return typeof value === 'string' ? value : undefined;
|
|
39
|
+
}
|
|
40
|
+
function asEntryLink(value) {
|
|
41
|
+
if (!value || typeof value !== 'object') {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const link = value;
|
|
45
|
+
if (!link.sys?.id) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
return link;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Looks up a Contentful entry by ID and returns information needed for preview redirect.
|
|
52
|
+
*
|
|
53
|
+
* Makes a single API call to fetch the entry by ID, determines its content type,
|
|
54
|
+
* extracts the relevant slug fields, and calculates the URL using the context's
|
|
55
|
+
* URL calculators.
|
|
56
|
+
*
|
|
57
|
+
* @param context - Base converter context containing URL calculators
|
|
58
|
+
* @param config - Contentful configuration (spaceId, accessToken, etc.)
|
|
59
|
+
* @param entryId - The Contentful entry ID to look up
|
|
60
|
+
* @param options - Optional fetch options (preview mode is always enabled for this function)
|
|
61
|
+
* @returns PreviewEntryInfo with content type, slug, and calculated href, or null if not found
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* const context = createBaseConverterContext(urlCalculators);
|
|
66
|
+
* const info = await getPreviewEntryInfo(
|
|
67
|
+
* context,
|
|
68
|
+
* { spaceId: '...', accessToken: '...' },
|
|
69
|
+
* 'abc123'
|
|
70
|
+
* );
|
|
71
|
+
* if (info) {
|
|
72
|
+
* redirect(info.href);
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export async function getPreviewEntryInfo(context, config, entryId, options) {
|
|
77
|
+
// Always use preview API for preview lookups
|
|
78
|
+
const client = getContentfulClient(config, true);
|
|
79
|
+
// Tag with GlobalTag so DRAFT_ONLY / revalidate-all can clear stale entry-id → slug maps
|
|
80
|
+
// (force-cache without tags cannot be invalidated).
|
|
81
|
+
const response = await client.getEntries({
|
|
82
|
+
'sys.id': entryId,
|
|
83
|
+
include: 1, // Resolve linked entries: Article → ArticleType, pageTest → control
|
|
84
|
+
}, {
|
|
85
|
+
cache: 'force-cache',
|
|
86
|
+
...options,
|
|
87
|
+
preview: true,
|
|
88
|
+
next: {
|
|
89
|
+
...options?.next,
|
|
90
|
+
tags: [...(options?.next?.tags ?? []), GlobalTag],
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
const entry = response.items[0];
|
|
94
|
+
if (!entry) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const contentTypeId = entry.sys.contentType.sys.id;
|
|
98
|
+
const fields = entry.fields;
|
|
99
|
+
const includes = response.includes?.Entry;
|
|
100
|
+
// Map Contentful content type ID to our PreviewContentType
|
|
101
|
+
// and extract the relevant slug and calculate href
|
|
102
|
+
switch (contentTypeId) {
|
|
103
|
+
case 'page': {
|
|
104
|
+
const slug = readStringField(fields, 'slug');
|
|
105
|
+
if (!slug)
|
|
106
|
+
return null;
|
|
107
|
+
return {
|
|
108
|
+
contentType: 'page',
|
|
109
|
+
entryId,
|
|
110
|
+
slug,
|
|
111
|
+
href: context.urlCalculators.page(slug),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
case 'pageVariant': {
|
|
115
|
+
const slug = readStringField(fields, 'slug');
|
|
116
|
+
if (!slug)
|
|
117
|
+
return null;
|
|
118
|
+
return {
|
|
119
|
+
contentType: 'pageVariant',
|
|
120
|
+
entryId,
|
|
121
|
+
slug,
|
|
122
|
+
href: context.urlCalculators.pageVariant(slug),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
case 'article': {
|
|
126
|
+
const slug = readStringField(fields, 'slug');
|
|
127
|
+
// For articles, we need the articleType's slug from the included entry
|
|
128
|
+
const articleTypeSlug = getArticleTypeSlug(fields, includes);
|
|
129
|
+
if (!slug || !articleTypeSlug)
|
|
130
|
+
return null;
|
|
131
|
+
return {
|
|
132
|
+
contentType: 'article',
|
|
133
|
+
entryId,
|
|
134
|
+
slug,
|
|
135
|
+
articleTypeSlug,
|
|
136
|
+
href: context.urlCalculators.article(articleTypeSlug, slug),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
case 'articleType': {
|
|
140
|
+
const slug = readStringField(fields, 'slug');
|
|
141
|
+
if (!slug)
|
|
142
|
+
return null;
|
|
143
|
+
return {
|
|
144
|
+
contentType: 'articleType',
|
|
145
|
+
entryId,
|
|
146
|
+
slug,
|
|
147
|
+
href: context.urlCalculators.articleType(slug),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
case 'tag': {
|
|
151
|
+
const slug = readStringField(fields, 'slug');
|
|
152
|
+
if (!slug)
|
|
153
|
+
return null;
|
|
154
|
+
return {
|
|
155
|
+
contentType: 'tag',
|
|
156
|
+
entryId,
|
|
157
|
+
slug,
|
|
158
|
+
href: context.urlCalculators.tag(slug),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
case 'person': {
|
|
162
|
+
const slug = readStringField(fields, 'slug');
|
|
163
|
+
if (!slug)
|
|
164
|
+
return null;
|
|
165
|
+
return {
|
|
166
|
+
contentType: 'person',
|
|
167
|
+
entryId,
|
|
168
|
+
slug,
|
|
169
|
+
href: context.urlCalculators.person(slug),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
case 'customType': {
|
|
173
|
+
const slug = readStringField(fields, 'slug');
|
|
174
|
+
if (!slug)
|
|
175
|
+
return null;
|
|
176
|
+
return {
|
|
177
|
+
contentType: 'customType',
|
|
178
|
+
entryId,
|
|
179
|
+
slug,
|
|
180
|
+
href: context.urlCalculators.customType(slug),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
case 'pageTest': {
|
|
184
|
+
const controlEntry = getPageTestControlEntry(fields, includes);
|
|
185
|
+
if (!controlEntry)
|
|
186
|
+
return null;
|
|
187
|
+
const controlContentType = controlEntry.sys.contentType?.sys.id;
|
|
188
|
+
const slug = readStringField(controlEntry.fields, 'slug');
|
|
189
|
+
if (!slug)
|
|
190
|
+
return null;
|
|
191
|
+
if (controlContentType === 'page') {
|
|
192
|
+
return {
|
|
193
|
+
contentType: 'pageTest',
|
|
194
|
+
entryId,
|
|
195
|
+
slug,
|
|
196
|
+
href: context.urlCalculators.page(slug),
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
if (controlContentType === 'pageVariant') {
|
|
200
|
+
return {
|
|
201
|
+
contentType: 'pageTest',
|
|
202
|
+
entryId,
|
|
203
|
+
slug,
|
|
204
|
+
href: context.urlCalculators.pageVariant(slug),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
default: {
|
|
210
|
+
const resolver = context.previewEntryResolvers?.[contentTypeId];
|
|
211
|
+
if (!resolver) {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
return resolver({
|
|
215
|
+
contentTypeId,
|
|
216
|
+
entryId,
|
|
217
|
+
fields,
|
|
218
|
+
includes,
|
|
219
|
+
urlCalculators: context.urlCalculators,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Resolves the control page entry linked from a pageTest entry.
|
|
226
|
+
*/
|
|
227
|
+
function getPageTestControlEntry(fields, includes) {
|
|
228
|
+
const controlField = asEntryLink(fields.control);
|
|
229
|
+
if (!controlField) {
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
if (controlField.sys.contentType?.sys.id && readStringField(controlField.fields, 'slug')) {
|
|
233
|
+
return controlField;
|
|
234
|
+
}
|
|
235
|
+
const controlId = controlField.sys.id;
|
|
236
|
+
if (!controlId || !includes) {
|
|
237
|
+
return undefined;
|
|
238
|
+
}
|
|
239
|
+
return includes.find((inc) => inc.sys.id === controlId);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Extracts the article type slug from an article entry.
|
|
243
|
+
* Looks in the entry's articleType field, falling back to includes if needed.
|
|
244
|
+
*/
|
|
245
|
+
function getArticleTypeSlug(fields, includes) {
|
|
246
|
+
const articleTypeField = asEntryLink(fields.articleType);
|
|
247
|
+
if (!articleTypeField) {
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
const resolvedSlug = readStringField(articleTypeField.fields, 'slug');
|
|
251
|
+
if (resolvedSlug) {
|
|
252
|
+
return resolvedSlug;
|
|
253
|
+
}
|
|
254
|
+
const articleTypeId = articleTypeField.sys.id;
|
|
255
|
+
if (!articleTypeId || !includes) {
|
|
256
|
+
return undefined;
|
|
257
|
+
}
|
|
258
|
+
const articleTypeEntry = includes.find((inc) => inc.sys.id === articleTypeId);
|
|
259
|
+
return readStringField(articleTypeEntry?.fields, 'slug');
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/api/preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { IRedirect } from '@se-studio/core-data-types';
|
|
2
|
+
import type { BaseConverterContext } from '../converters/helpers';
|
|
3
|
+
import type { CmsResponse, ContentfulConfig, FetchOptions } from '../types';
|
|
4
|
+
export { buildRedirectMap, type RedirectMap, type RedirectMapEntry } from '../utils/redirectMap';
|
|
5
|
+
/**
|
|
6
|
+
* Fetches all redirects from Contentful.
|
|
7
|
+
*
|
|
8
|
+
* Returns published redirects (when not in preview). The list is small by design
|
|
9
|
+
* (typically < a few hundred rules) so a full enumeration with pagination is fine.
|
|
10
|
+
*
|
|
11
|
+
* The converter resolves any fromInternal / toInternal reference into
|
|
12
|
+
* concrete fromPath / to strings (using the project's urlCalculators) so callers
|
|
13
|
+
* (build-time bake or future sync) only ever see simple path → target maps.
|
|
14
|
+
*/
|
|
15
|
+
export declare function contentfulRedirectsRest(context: BaseConverterContext, config: ContentfulConfig, options: FetchOptions): Promise<CmsResponse<IRedirect[] | null>>;
|
|
16
|
+
//# sourceMappingURL=redirects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirects.d.ts","sourceRoot":"","sources":["../../src/api/redirects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAGlE,OAAO,KAAK,EAAY,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAWtF,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEjG;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,CA4G1C"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { getContentfulClient } from '../client.js';
|
|
2
|
+
import { getCacheTags } from '../revalidation/index.js';
|
|
3
|
+
import { withCmsQueryContext } from '../telemetry/queryContext.js';
|
|
4
|
+
import { withRetry } from '../utils/index.js';
|
|
5
|
+
import { convertAllAssets, convertAllIncludes, convertAllRawAssets, } from './helpers.js';
|
|
6
|
+
// Re-export the pure map builder (implemented in utils so it has zero server-only deps
|
|
7
|
+
// and can be used in build scripts / edge / tests without pulling Next.js server boundaries).
|
|
8
|
+
export { buildRedirectMap } from '../utils/redirectMap.js';
|
|
9
|
+
/**
|
|
10
|
+
* Fetches all redirects from Contentful.
|
|
11
|
+
*
|
|
12
|
+
* Returns published redirects (when not in preview). The list is small by design
|
|
13
|
+
* (typically < a few hundred rules) so a full enumeration with pagination is fine.
|
|
14
|
+
*
|
|
15
|
+
* The converter resolves any fromInternal / toInternal reference into
|
|
16
|
+
* concrete fromPath / to strings (using the project's urlCalculators) so callers
|
|
17
|
+
* (build-time bake or future sync) only ever see simple path → target maps.
|
|
18
|
+
*/
|
|
19
|
+
export async function contentfulRedirectsRest(context, config, options) {
|
|
20
|
+
const client = getContentfulClient(config, options.preview);
|
|
21
|
+
const redirectCacheTags = getCacheTags('redirect', undefined, options.preview);
|
|
22
|
+
const requestOptions = {
|
|
23
|
+
...options,
|
|
24
|
+
next: {
|
|
25
|
+
...options?.next,
|
|
26
|
+
tags: redirectCacheTags,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
const allRedirects = [];
|
|
30
|
+
const errors = [];
|
|
31
|
+
const pageSize = 100;
|
|
32
|
+
let skip = 0;
|
|
33
|
+
let hasMore = true;
|
|
34
|
+
const fetchFn = async () => {
|
|
35
|
+
while (hasMore) {
|
|
36
|
+
try {
|
|
37
|
+
const page = Math.floor(skip / pageSize) + 1;
|
|
38
|
+
const operation = page > 1 ? `Reading all redirects (page ${page})` : 'Reading all redirects';
|
|
39
|
+
const redirectResponse = await withCmsQueryContext({ operation }, () => client.getEntries({
|
|
40
|
+
content_type: 'redirect',
|
|
41
|
+
include: 2, // enough to resolve the link targets we care about for hrefs
|
|
42
|
+
locale: options?.locale,
|
|
43
|
+
limit: pageSize,
|
|
44
|
+
skip,
|
|
45
|
+
}, requestOptions));
|
|
46
|
+
if (!redirectResponse.items.length) {
|
|
47
|
+
hasMore = false;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
const includes = convertAllIncludes(redirectResponse);
|
|
51
|
+
const assets = convertAllAssets(redirectResponse, context);
|
|
52
|
+
const rawAssets = convertAllRawAssets(redirectResponse);
|
|
53
|
+
const fullContext = {
|
|
54
|
+
...context,
|
|
55
|
+
includes,
|
|
56
|
+
assets,
|
|
57
|
+
rawAssets,
|
|
58
|
+
errors: [],
|
|
59
|
+
externalVideoEmbeds: new Map(),
|
|
60
|
+
};
|
|
61
|
+
for (const redirectEntry of redirectResponse.items) {
|
|
62
|
+
if (!redirectEntry.fields)
|
|
63
|
+
continue;
|
|
64
|
+
try {
|
|
65
|
+
const converted = context.redirectResolver(fullContext, redirectEntry);
|
|
66
|
+
allRedirects.push(converted);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
const entryId = redirectEntry.sys.id;
|
|
70
|
+
const entryType = redirectEntry.sys.contentType?.sys?.id;
|
|
71
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown conversion error';
|
|
72
|
+
errors.push({
|
|
73
|
+
entryId,
|
|
74
|
+
entryType,
|
|
75
|
+
message: errorMessage,
|
|
76
|
+
error,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (fullContext.errors.length > 0 &&
|
|
81
|
+
typeof process !== 'undefined' &&
|
|
82
|
+
process.env?.NODE_ENV === 'production') {
|
|
83
|
+
console.error(`CMS conversion errors for redirect:`, {
|
|
84
|
+
errors: fullContext.errors,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
const entryId = 'unknown';
|
|
90
|
+
const entryType = 'redirect';
|
|
91
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown conversion error';
|
|
92
|
+
const cmsError = {
|
|
93
|
+
entryId,
|
|
94
|
+
entryType,
|
|
95
|
+
message: errorMessage,
|
|
96
|
+
error,
|
|
97
|
+
};
|
|
98
|
+
errors.push(cmsError);
|
|
99
|
+
hasMore = false;
|
|
100
|
+
}
|
|
101
|
+
skip += pageSize;
|
|
102
|
+
}
|
|
103
|
+
return { data: allRedirects, errors };
|
|
104
|
+
};
|
|
105
|
+
if (options.retry) {
|
|
106
|
+
return await withRetry(fetchFn, options.retry);
|
|
107
|
+
}
|
|
108
|
+
return await fetchFn();
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=redirects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirects.js","sourceRoot":"","sources":["../../src/api/redirects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type IArticleLink } from '@se-studio/core-data-types';
|
|
2
|
+
import type { RelatedArticlesOptions } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Filters and ranks articles based on related article criteria.
|
|
5
|
+
* When tagIds are provided, articles must match at least one tag (OR semantics).
|
|
6
|
+
* Articles with more matching tags are ranked higher.
|
|
7
|
+
*
|
|
8
|
+
* @param articles - Array of article links with metadata
|
|
9
|
+
* @param options - Filtering options
|
|
10
|
+
* @returns Filtered and ranked array of article links
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const relatedArticles = filterRelatedArticles(allArticles, {
|
|
15
|
+
* articleTypeIds: ['blog-type-id'],
|
|
16
|
+
* articleTypeSlugs: ['resources/news'],
|
|
17
|
+
* tagIds: ['tag-1'],
|
|
18
|
+
* tagSlugs: ['tag-2'],
|
|
19
|
+
* tagTypeSlugs: ['condition'],
|
|
20
|
+
* authorSlugs: ['alice'],
|
|
21
|
+
* strictAuthorMatch: true,
|
|
22
|
+
* excludeArticleIds: [currentArticle.id],
|
|
23
|
+
* count: 3,
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function filterRelatedArticles(articles: IArticleLink[], options: RelatedArticlesOptions): IArticleLink[];
|
|
28
|
+
//# sourceMappingURL=related-articles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"related-articles.d.ts","sourceRoot":"","sources":["../../src/api/related-articles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,sBAAsB,GAC9B,YAAY,EAAE,CA6JhB"}
|