@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,147 @@
|
|
|
1
|
+
import { getArticleAuthors } from '@se-studio/core-data-types';
|
|
2
|
+
/**
|
|
3
|
+
* Filters and ranks articles based on related article criteria.
|
|
4
|
+
* When tagIds are provided, articles must match at least one tag (OR semantics).
|
|
5
|
+
* Articles with more matching tags are ranked higher.
|
|
6
|
+
*
|
|
7
|
+
* @param articles - Array of article links with metadata
|
|
8
|
+
* @param options - Filtering options
|
|
9
|
+
* @returns Filtered and ranked array of article links
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const relatedArticles = filterRelatedArticles(allArticles, {
|
|
14
|
+
* articleTypeIds: ['blog-type-id'],
|
|
15
|
+
* articleTypeSlugs: ['resources/news'],
|
|
16
|
+
* tagIds: ['tag-1'],
|
|
17
|
+
* tagSlugs: ['tag-2'],
|
|
18
|
+
* tagTypeSlugs: ['condition'],
|
|
19
|
+
* authorSlugs: ['alice'],
|
|
20
|
+
* strictAuthorMatch: true,
|
|
21
|
+
* excludeArticleIds: [currentArticle.id],
|
|
22
|
+
* count: 3,
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function filterRelatedArticles(articles, options) {
|
|
27
|
+
const { excludeArticleIds, articleTypeIds: rawArticleTypeIds, articleTypeSlugs: rawArticleTypeSlugs, tagIds: rawTagIds, tagSlugs: rawTagSlugs, tagTypeIds: rawTagTypeIds, tagTypeSlugs: rawTagTypeSlugs, authorIds: rawAuthorIds, authorSlugs: rawAuthorSlugs, strictAuthorMatch, before, after, count, } = options;
|
|
28
|
+
// Extract and deduplicate IDs/slugs
|
|
29
|
+
const excludeIds = excludeArticleIds ? [...new Set(excludeArticleIds)] : [];
|
|
30
|
+
const articleTypeIds = rawArticleTypeIds ? [...new Set(rawArticleTypeIds)] : [];
|
|
31
|
+
const articleTypeSlugs = rawArticleTypeSlugs ? [...new Set(rawArticleTypeSlugs)] : [];
|
|
32
|
+
const tagIds = rawTagIds ? [...new Set(rawTagIds)] : [];
|
|
33
|
+
const tagSlugs = rawTagSlugs ? [...new Set(rawTagSlugs)] : [];
|
|
34
|
+
const tagTypeIds = rawTagTypeIds ? [...new Set(rawTagTypeIds)] : [];
|
|
35
|
+
const tagTypeSlugs = rawTagTypeSlugs ? [...new Set(rawTagTypeSlugs)] : [];
|
|
36
|
+
const authorIds = rawAuthorIds ? [...new Set(rawAuthorIds)] : [];
|
|
37
|
+
const authorSlugs = rawAuthorSlugs ? [...new Set(rawAuthorSlugs)] : [];
|
|
38
|
+
if (process.env.LOG_RELATED_ARTICLES) {
|
|
39
|
+
console.log(`[RelatedArticles:filter] input: ${articles.length} articles, options: articleTypes=${[...(rawArticleTypeIds ?? []), ...(rawArticleTypeSlugs ?? [])].join(',') || 'none'} tags=${[...(rawTagIds ?? []), ...(rawTagSlugs ?? [])].join(',') || 'none'} tagTypes=${[...(rawTagTypeIds ?? []), ...(rawTagTypeSlugs ?? [])].join(',') || 'none'} authors=${[...(rawAuthorIds ?? []), ...(rawAuthorSlugs ?? [])].join(',') || 'none'} strictAuthorMatch=${strictAuthorMatch ?? false} count=${count ?? 'all'}`);
|
|
40
|
+
}
|
|
41
|
+
// Score and filter articles
|
|
42
|
+
const scoredArticles = articles
|
|
43
|
+
.map((article) => {
|
|
44
|
+
let score = 0;
|
|
45
|
+
// Filter: Exclude unindexed articles unless explicitly allowed
|
|
46
|
+
if (!options.allowUnindexed && article.indexed === false) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
// Filter: Exclude specific articles
|
|
50
|
+
if (excludeIds.length > 0 && excludeIds.includes(article.id)) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
// Filter: Article type (match any of the provided types by ID or slug)
|
|
54
|
+
if (articleTypeIds.length > 0 || articleTypeSlugs.length > 0) {
|
|
55
|
+
const matchesById = articleTypeIds.length > 0 &&
|
|
56
|
+
!!article.articleType?.id &&
|
|
57
|
+
articleTypeIds.includes(article.articleType.id);
|
|
58
|
+
const matchesBySlug = articleTypeSlugs.length > 0 &&
|
|
59
|
+
!!article.articleType?.slug &&
|
|
60
|
+
articleTypeSlugs.includes(article.articleType.slug);
|
|
61
|
+
if (!matchesById && !matchesBySlug) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Filter: Date range
|
|
66
|
+
if (article.date) {
|
|
67
|
+
const articleDate = new Date(article.date);
|
|
68
|
+
if (before && articleDate > before) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
if (after && articleDate < after) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Filter + score: Tag matching by ID or slug (must match at least one; more matches = higher score)
|
|
76
|
+
if (tagIds.length > 0 || tagSlugs.length > 0) {
|
|
77
|
+
const articleTags = article.tags ?? [];
|
|
78
|
+
const matchingTagIds = new Set();
|
|
79
|
+
if (tagIds.length > 0) {
|
|
80
|
+
for (const id of tagIds) {
|
|
81
|
+
const tag = articleTags.find((t) => t.id === id);
|
|
82
|
+
if (tag?.id)
|
|
83
|
+
matchingTagIds.add(tag.id);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (tagSlugs.length > 0) {
|
|
87
|
+
for (const slug of tagSlugs) {
|
|
88
|
+
const tag = articleTags.find((t) => t.slug === slug);
|
|
89
|
+
if (tag?.id)
|
|
90
|
+
matchingTagIds.add(tag.id);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const totalMatches = matchingTagIds.size;
|
|
94
|
+
if (totalMatches === 0) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
score += totalMatches * 10; // Each matching *distinct* tag adds 10 points
|
|
98
|
+
}
|
|
99
|
+
// Filter: Tag type matching (hard filter — no scoring)
|
|
100
|
+
if (tagTypeIds.length > 0 || tagTypeSlugs.length > 0) {
|
|
101
|
+
const articleTags = article.tags ?? [];
|
|
102
|
+
const matchesById = tagTypeIds.length > 0 &&
|
|
103
|
+
articleTags.some((t) => t.tagType?.id && tagTypeIds.includes(t.tagType.id));
|
|
104
|
+
const matchesBySlug = tagTypeSlugs.length > 0 &&
|
|
105
|
+
articleTags.some((t) => t.tagType?.slug && tagTypeSlugs.includes(t.tagType.slug));
|
|
106
|
+
if (!matchesById && !matchesBySlug) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Filter/score: Author matching by ID or slug
|
|
111
|
+
if (authorIds.length > 0 || authorSlugs.length > 0) {
|
|
112
|
+
const articleAuthors = getArticleAuthors(article);
|
|
113
|
+
const matchesById = authorIds.length > 0 && articleAuthors.some((p) => p.id && authorIds.includes(p.id));
|
|
114
|
+
const matchesBySlug = authorSlugs.length > 0 &&
|
|
115
|
+
articleAuthors.some((p) => p.slug && authorSlugs.includes(p.slug));
|
|
116
|
+
const hasMatch = matchesById || matchesBySlug;
|
|
117
|
+
if (strictAuthorMatch && !hasMatch) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
if (hasMatch) {
|
|
121
|
+
score += 5; // Matching author adds 5 points
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return { article, score };
|
|
125
|
+
})
|
|
126
|
+
.filter((item) => item !== null);
|
|
127
|
+
// Sort by score (descending), then by date (descending)
|
|
128
|
+
scoredArticles.sort((a, b) => {
|
|
129
|
+
if (b.score !== a.score) {
|
|
130
|
+
return b.score - a.score;
|
|
131
|
+
}
|
|
132
|
+
// If scores are equal, sort by date (newest first)
|
|
133
|
+
if (a.article.date && b.article.date) {
|
|
134
|
+
const articleDateA = new Date(a.article.date);
|
|
135
|
+
const articleDateB = new Date(b.article.date);
|
|
136
|
+
return articleDateB.getTime() - articleDateA.getTime();
|
|
137
|
+
}
|
|
138
|
+
return 0;
|
|
139
|
+
});
|
|
140
|
+
if (process.env.LOG_RELATED_ARTICLES) {
|
|
141
|
+
console.log(`[RelatedArticles:filter] scored ${scoredArticles.length} articles (scores: ${scoredArticles.map((a) => `${a.article.id}=${a.score}`).join(', ') || 'none'})`);
|
|
142
|
+
}
|
|
143
|
+
// Take top N articles (or all if count is undefined)
|
|
144
|
+
const topArticles = count !== undefined ? scoredArticles.slice(0, count) : scoredArticles;
|
|
145
|
+
return topArticles.map(({ article }) => article);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=related-articles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"related-articles.js","sourceRoot":"","sources":["../../src/api/related-articles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import 'server-only';
|
|
2
|
+
import type { NextRequest } from 'next/server';
|
|
3
|
+
import type { ContentfulConfig } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* Configuration for creating a download handler
|
|
6
|
+
*/
|
|
7
|
+
export interface DownloadHandlerConfig {
|
|
8
|
+
/**
|
|
9
|
+
* Function to get the Contentful configuration.
|
|
10
|
+
* Called on each request to allow for dynamic config.
|
|
11
|
+
*/
|
|
12
|
+
getConfig: (preview?: boolean) => ContentfulConfig;
|
|
13
|
+
/**
|
|
14
|
+
* Cache revalidation / `max-age` / `s-maxage` for successful file responses (seconds).
|
|
15
|
+
* Defaults to 86400 (24 hours).
|
|
16
|
+
*
|
|
17
|
+
* **Static PDFs / fund documents (e.g. Eagle):** pass a long TTL via config only
|
|
18
|
+
* (e.g. `60 * 60 * 24 * 30` for 30 days). No API change required.
|
|
19
|
+
* When replacing a document, use a **new asset id and/or canonical filename** so
|
|
20
|
+
* long-lived caches never serve stale bytes at the same public path.
|
|
21
|
+
*/
|
|
22
|
+
revalidate?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Whether to use preview API.
|
|
25
|
+
* Defaults to false.
|
|
26
|
+
*/
|
|
27
|
+
preview?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Absolute site origin used for `Link: rel="canonical"` (no trailing slash),
|
|
30
|
+
* e.g. `https://www.om1.com`. When omitted, the request origin is used.
|
|
31
|
+
*
|
|
32
|
+
* Query-string / wrong-filename redirects always stay on the request origin
|
|
33
|
+
* so preview and local hosts are not bounced to production.
|
|
34
|
+
*/
|
|
35
|
+
baseUrl?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Route params structure for Next.js App Router
|
|
39
|
+
*/
|
|
40
|
+
export interface DownloadRouteParams {
|
|
41
|
+
params: Promise<{
|
|
42
|
+
assetId: string;
|
|
43
|
+
filename: string;
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Builds the canonical download path for an asset.
|
|
48
|
+
* Filename comes from Contentful so only one path identity exists per asset.
|
|
49
|
+
*/
|
|
50
|
+
export declare function buildCanonicalDownloadPath(assetId: string, canonicalFilename: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Creates a Next.js App Router GET handler for downloading/viewing Contentful assets.
|
|
53
|
+
*
|
|
54
|
+
* Normalizes URL identity for SEO (GSC "Duplicate without user-selected canonical"):
|
|
55
|
+
* - 301 when the request has a query string (UTM / email tracking)
|
|
56
|
+
* - 301 when the path filename ≠ Contentful `file.fileName`
|
|
57
|
+
* - Sets `Link: <canonical>; rel="canonical"` on successful 200 responses
|
|
58
|
+
*
|
|
59
|
+
* **Caching:** Successful 200s set `Cache-Control: public, max-age={revalidate}, s-maxage={revalidate}`.
|
|
60
|
+
* Pass a higher `revalidate` for static PDFs (fund docs, letters) — e.g. 30 days. Prefer a new
|
|
61
|
+
* asset identity when swapping files so long TTL does not pin stale content.
|
|
62
|
+
*
|
|
63
|
+
* @param config - Download handler configuration
|
|
64
|
+
* @returns GET handler function for Next.js route
|
|
65
|
+
*/
|
|
66
|
+
export declare function createDownloadHandler(config: DownloadHandlerConfig): (request: NextRequest, { params }: DownloadRouteParams) => Promise<Response>;
|
|
67
|
+
//# sourceMappingURL=server-asset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-asset.d.ts","sourceRoot":"","sources":["../../src/api/server-asset.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,gBAAgB,CAAC;IAEnD;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAcD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAE7F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,IAI/D,SAAS,WAAW,EACpB,YAAY,mBAAmB,KAC9B,OAAO,CAAC,QAAQ,CAAC,CAkFrB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import 'server-only';
|
|
2
|
+
import { contentfulAssetRest, isBrowserViewable } from './asset.js';
|
|
3
|
+
function decodeFilenameParam(filename) {
|
|
4
|
+
try {
|
|
5
|
+
return decodeURIComponent(filename);
|
|
6
|
+
}
|
|
7
|
+
catch {
|
|
8
|
+
return filename;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function stripTrailingSlash(url) {
|
|
12
|
+
return url.endsWith('/') ? url.slice(0, -1) : url;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Builds the canonical download path for an asset.
|
|
16
|
+
* Filename comes from Contentful so only one path identity exists per asset.
|
|
17
|
+
*/
|
|
18
|
+
export function buildCanonicalDownloadPath(assetId, canonicalFilename) {
|
|
19
|
+
return `/download/${assetId}/${encodeURIComponent(canonicalFilename)}`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Creates a Next.js App Router GET handler for downloading/viewing Contentful assets.
|
|
23
|
+
*
|
|
24
|
+
* Normalizes URL identity for SEO (GSC "Duplicate without user-selected canonical"):
|
|
25
|
+
* - 301 when the request has a query string (UTM / email tracking)
|
|
26
|
+
* - 301 when the path filename ≠ Contentful `file.fileName`
|
|
27
|
+
* - Sets `Link: <canonical>; rel="canonical"` on successful 200 responses
|
|
28
|
+
*
|
|
29
|
+
* **Caching:** Successful 200s set `Cache-Control: public, max-age={revalidate}, s-maxage={revalidate}`.
|
|
30
|
+
* Pass a higher `revalidate` for static PDFs (fund docs, letters) — e.g. 30 days. Prefer a new
|
|
31
|
+
* asset identity when swapping files so long TTL does not pin stale content.
|
|
32
|
+
*
|
|
33
|
+
* @param config - Download handler configuration
|
|
34
|
+
* @returns GET handler function for Next.js route
|
|
35
|
+
*/
|
|
36
|
+
export function createDownloadHandler(config) {
|
|
37
|
+
const { getConfig, revalidate = 86400, preview = false, baseUrl } = config;
|
|
38
|
+
return async function GET(request, { params }) {
|
|
39
|
+
const { assetId, filename } = await params;
|
|
40
|
+
const decodedFilename = decodeFilenameParam(filename);
|
|
41
|
+
try {
|
|
42
|
+
const contentfulConfig = getConfig(preview);
|
|
43
|
+
const asset = await contentfulAssetRest(contentfulConfig, assetId, {
|
|
44
|
+
preview,
|
|
45
|
+
next: { revalidate },
|
|
46
|
+
});
|
|
47
|
+
if (!asset?.fields?.file) {
|
|
48
|
+
return Response.json({ error: 'Asset not found' }, { status: 404 });
|
|
49
|
+
}
|
|
50
|
+
const { file } = asset.fields;
|
|
51
|
+
// Prefer Contentful's real filename as the single public identity.
|
|
52
|
+
const canonicalFilename = typeof file.fileName === 'string' && file.fileName.length > 0
|
|
53
|
+
? file.fileName
|
|
54
|
+
: decodedFilename;
|
|
55
|
+
const requestUrl = new URL(request.url);
|
|
56
|
+
const requestOrigin = stripTrailingSlash(requestUrl.origin);
|
|
57
|
+
const canonicalOrigin = baseUrl ? stripTrailingSlash(baseUrl) : requestOrigin;
|
|
58
|
+
const canonicalPath = buildCanonicalDownloadPath(assetId, canonicalFilename);
|
|
59
|
+
// Redirects stay on the host that received the request (preview/local safe).
|
|
60
|
+
const redirectLocation = `${requestOrigin}${canonicalPath}`;
|
|
61
|
+
// Canonical signal prefers configured production baseUrl when provided.
|
|
62
|
+
const canonicalAbsolute = `${canonicalOrigin}${canonicalPath}`;
|
|
63
|
+
const hasQuery = requestUrl.search.length > 0;
|
|
64
|
+
const filenameMismatch = decodedFilename !== canonicalFilename;
|
|
65
|
+
if (hasQuery || filenameMismatch) {
|
|
66
|
+
return new Response(null, {
|
|
67
|
+
status: 301,
|
|
68
|
+
headers: {
|
|
69
|
+
Location: redirectLocation,
|
|
70
|
+
// Short cache so corrected identity propagates quickly after renames.
|
|
71
|
+
'Cache-Control': 'public, max-age=3600',
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const assetUrl = `https:${file.url}`;
|
|
76
|
+
// Fetch the actual file from Contentful CDN
|
|
77
|
+
// We disable the Next.js data cache for the file binary to avoid the 2MB limit warning.
|
|
78
|
+
// The final response is still cached by the browser/CDN via Cache-Control headers.
|
|
79
|
+
const fileResponse = await fetch(assetUrl, {
|
|
80
|
+
cache: 'no-store',
|
|
81
|
+
});
|
|
82
|
+
if (!fileResponse.ok) {
|
|
83
|
+
return Response.json({ error: 'Failed to fetch file' }, { status: 502 });
|
|
84
|
+
}
|
|
85
|
+
const headers = new Headers();
|
|
86
|
+
headers.set('Content-Type', file.contentType);
|
|
87
|
+
const disposition = isBrowserViewable(file.contentType) ? 'inline' : 'attachment';
|
|
88
|
+
headers.set('Content-Disposition', `${disposition}; filename="${canonicalFilename}"`);
|
|
89
|
+
if (file.details?.size) {
|
|
90
|
+
headers.set('Content-Length', String(file.details.size));
|
|
91
|
+
}
|
|
92
|
+
headers.set('Cache-Control', `public, max-age=${revalidate}, s-maxage=${revalidate}`);
|
|
93
|
+
// PDF/binary docs cannot use HTML <link rel="canonical">; Google honors this header.
|
|
94
|
+
headers.set('Link', `<${canonicalAbsolute}>; rel="canonical"`);
|
|
95
|
+
return new Response(fileResponse.body, {
|
|
96
|
+
status: 200,
|
|
97
|
+
headers,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error('[Download] Error proxying file:', error);
|
|
102
|
+
return Response.json({ error: 'Internal server error' }, { status: 500 });
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=server-asset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-asset.js","sourceRoot":"","sources":["../../src/api/server-asset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type { BaseConverterContext } from '../converters/helpers';
|
|
2
|
+
import type { CmsResponse, ContentfulConfig, FetchOptions } from '../types';
|
|
3
|
+
import type { ISitemapEntry, SitemapConfig, SitemapContentTypeConfig, SitemapEntryProvider } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Fetches all page sitemap entries from Contentful.
|
|
6
|
+
* Only includes pages that are indexed and not hidden.
|
|
7
|
+
*
|
|
8
|
+
* @param context - Converter context
|
|
9
|
+
* @param config - Contentful configuration
|
|
10
|
+
* @param sitemapConfig - Optional sitemap configuration (priority, changeFrequency)
|
|
11
|
+
* @param options - Fetch options (locale, preview, caching, etc.)
|
|
12
|
+
* @returns Promise resolving to CmsResponse with array of sitemap entries
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const { data: entries } = await contentfulPageSitemapEntries(
|
|
17
|
+
* context,
|
|
18
|
+
* config,
|
|
19
|
+
* { priority: 0.8, changeFrequency: 'weekly' },
|
|
20
|
+
* { next: { revalidate: 3600 } }
|
|
21
|
+
* );
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function contentfulPageSitemapEntries(context: BaseConverterContext, config: ContentfulConfig, sitemapConfig: SitemapContentTypeConfig, options: FetchOptions): Promise<CmsResponse<ISitemapEntry[]>>;
|
|
25
|
+
/**
|
|
26
|
+
* Fetches all article sitemap entries from Contentful.
|
|
27
|
+
* Only includes articles that are indexed and not hidden.
|
|
28
|
+
*
|
|
29
|
+
* @param context - Converter context
|
|
30
|
+
* @param config - Contentful configuration
|
|
31
|
+
* @param sitemapConfig - Optional sitemap configuration (priority, changeFrequency)
|
|
32
|
+
* @param options - Fetch options (locale, preview, caching, etc.)
|
|
33
|
+
* @returns Promise resolving to CmsResponse with array of sitemap entries
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* const { data: entries } = await contentfulArticleSitemapEntries(
|
|
38
|
+
* context,
|
|
39
|
+
* config,
|
|
40
|
+
* { priority: 0.6, changeFrequency: 'monthly' },
|
|
41
|
+
* { next: { revalidate: 3600 } }
|
|
42
|
+
* );
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function contentfulArticleSitemapEntries(context: BaseConverterContext, config: ContentfulConfig, sitemapConfig: SitemapContentTypeConfig, options: FetchOptions): Promise<CmsResponse<ISitemapEntry[]>>;
|
|
46
|
+
/**
|
|
47
|
+
* Fetches all article type sitemap entries from Contentful.
|
|
48
|
+
* Only includes article types that are indexed and not hidden.
|
|
49
|
+
*
|
|
50
|
+
* @param context - Converter context
|
|
51
|
+
* @param config - Contentful configuration
|
|
52
|
+
* @param sitemapConfig - Optional sitemap configuration (priority, changeFrequency)
|
|
53
|
+
* @param options - Fetch options (locale, preview, caching, etc.)
|
|
54
|
+
* @returns Promise resolving to CmsResponse with array of sitemap entries
|
|
55
|
+
*/
|
|
56
|
+
export declare function contentfulArticleTypeSitemapEntries(context: BaseConverterContext, config: ContentfulConfig, sitemapConfig: SitemapContentTypeConfig, options: FetchOptions): Promise<CmsResponse<ISitemapEntry[]>>;
|
|
57
|
+
/**
|
|
58
|
+
* Fetches all tag sitemap entries from Contentful.
|
|
59
|
+
* Only includes tags that are indexed and not hidden.
|
|
60
|
+
*
|
|
61
|
+
* @param context - Converter context
|
|
62
|
+
* @param config - Contentful configuration
|
|
63
|
+
* @param sitemapConfig - Optional sitemap configuration (priority, changeFrequency)
|
|
64
|
+
* @param options - Fetch options (locale, preview, caching, etc.)
|
|
65
|
+
* @returns Promise resolving to CmsResponse with array of sitemap entries
|
|
66
|
+
*/
|
|
67
|
+
export declare function contentfulTagSitemapEntries(context: BaseConverterContext, config: ContentfulConfig, sitemapConfig: SitemapContentTypeConfig, options: FetchOptions): Promise<CmsResponse<ISitemapEntry[]>>;
|
|
68
|
+
/**
|
|
69
|
+
* Fetches all person sitemap entries from Contentful.
|
|
70
|
+
* Only includes people that are indexed and not hidden.
|
|
71
|
+
*
|
|
72
|
+
* @param context - Converter context
|
|
73
|
+
* @param config - Contentful configuration
|
|
74
|
+
* @param sitemapConfig - Optional sitemap configuration (priority, changeFrequency)
|
|
75
|
+
* @param options - Fetch options (locale, preview, caching, etc.)
|
|
76
|
+
* @returns Promise resolving to CmsResponse with array of sitemap entries
|
|
77
|
+
*/
|
|
78
|
+
export declare function contentfulPersonSitemapEntries(context: BaseConverterContext, config: ContentfulConfig, sitemapConfig: SitemapContentTypeConfig, options: FetchOptions): Promise<CmsResponse<ISitemapEntry[]>>;
|
|
79
|
+
/**
|
|
80
|
+
* Collects sitemap entries from multiple providers.
|
|
81
|
+
* This allows projects to register custom content types for sitemap generation.
|
|
82
|
+
*
|
|
83
|
+
* @param context - Converter context
|
|
84
|
+
* @param config - Contentful configuration
|
|
85
|
+
* @param sitemapConfig - Configuration with array of provider functions
|
|
86
|
+
* @param options - Fetch options (locale, preview, caching, etc.)
|
|
87
|
+
* @returns Promise resolving to CmsResponse with all sitemap entries combined
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```ts
|
|
91
|
+
* const { data: entries, errors } = await getAllSitemapEntries(
|
|
92
|
+
* context,
|
|
93
|
+
* config,
|
|
94
|
+
* {
|
|
95
|
+
* providers: [
|
|
96
|
+
* (ctx, cfg, opts) => contentfulPageSitemapEntries(ctx, cfg, { priority: 0.8 }, opts),
|
|
97
|
+
* (ctx, cfg, opts) => contentfulArticleSitemapEntries(ctx, cfg, { priority: 0.6 }, opts),
|
|
98
|
+
* // Custom content type provider
|
|
99
|
+
* async (ctx, cfg, opts) => {
|
|
100
|
+
* const links = await fetchCustomContentLinks(ctx, cfg, opts);
|
|
101
|
+
* return { data: links.map(l => ({ url: l.href, lastModified: l.lastModified })), errors: [] };
|
|
102
|
+
* },
|
|
103
|
+
* ],
|
|
104
|
+
* },
|
|
105
|
+
* { next: { revalidate: 3600 } }
|
|
106
|
+
* );
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function getAllSitemapEntries(context: BaseConverterContext, config: ContentfulConfig, sitemapConfig: SitemapConfig, options: FetchOptions): Promise<CmsResponse<ISitemapEntry[]>>;
|
|
110
|
+
/**
|
|
111
|
+
* Creates a sitemap entry provider with pre-configured options.
|
|
112
|
+
* Useful for creating providers with specific priority and changeFrequency settings.
|
|
113
|
+
*
|
|
114
|
+
* @param fetcher - The sitemap entry fetcher function to wrap
|
|
115
|
+
* @param sitemapConfig - Configuration for priority and change frequency
|
|
116
|
+
* @returns A sitemap entry provider function
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```ts
|
|
120
|
+
* const pageProvider = createSitemapProvider(
|
|
121
|
+
* contentfulPageSitemapEntries,
|
|
122
|
+
* { priority: 0.8, changeFrequency: 'weekly' }
|
|
123
|
+
* );
|
|
124
|
+
*
|
|
125
|
+
* const { data: entries } = await getAllSitemapEntries(context, config, {
|
|
126
|
+
* providers: [pageProvider, articleProvider],
|
|
127
|
+
* });
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export declare function createSitemapProvider(fetcher: (context: BaseConverterContext, config: ContentfulConfig, sitemapConfig: SitemapContentTypeConfig, options: FetchOptions) => Promise<CmsResponse<ISitemapEntry[]>>, sitemapConfig: SitemapContentTypeConfig): SitemapEntryProvider;
|
|
131
|
+
//# sourceMappingURL=sitemap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../src/api/sitemap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAY,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAQtF,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAkCjB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,wBAAwB,EACvC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAMvC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,wBAAwB,EACvC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAMvC;AAED;;;;;;;;;GASG;AACH,wBAAsB,mCAAmC,CACvD,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,wBAAwB,EACvC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAMvC;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,wBAAwB,EACvC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAMvC;AAED;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,wBAAwB,EACvC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAMvC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAgBvC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,CACP,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,wBAAwB,EACvC,OAAO,EAAE,YAAY,KAClB,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,EAC1C,aAAa,EAAE,wBAAwB,GACtC,oBAAoB,CAEtB"}
|