@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,144 @@
|
|
|
1
|
+
import { ArticleTag, ArticleTypeIndexTag, ArticleTypeTag, articleTag, articleTypeIndexTag, BannerTag, CustomTypeTag, DocumentTag, LinkTag, LocationTag, locationTag, NavigationItemTag, NavigationTag, PageTag, PageVariantTag, PersonTag, pageTag, pageVariantTag, personTag, RedirectTag, TagTag, TagTypeTag, TemplateTag, tagTag, tagTypeTag, templateTag, } from './tags.js';
|
|
2
|
+
const defaultLocale = 'en-US';
|
|
3
|
+
const articleTypeHandler = {
|
|
4
|
+
extract: (data) => ({
|
|
5
|
+
slug: data.fields?.slug?.[defaultLocale],
|
|
6
|
+
}),
|
|
7
|
+
makeTags: (extracted) => [extracted.slug ? articleTypeIndexTag(extracted.slug) : undefined],
|
|
8
|
+
getGlobalTags: () => [ArticleTypeTag, ArticleTypeIndexTag],
|
|
9
|
+
getCascadeTags: () => [ArticleTag],
|
|
10
|
+
};
|
|
11
|
+
function extractSlugWithPrevious(data) {
|
|
12
|
+
return {
|
|
13
|
+
slug: data.fields?.slug?.[defaultLocale],
|
|
14
|
+
previousSlug: data.previousFields?.slug?.[defaultLocale],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function slugChangeTags(extracted, tagFor) {
|
|
18
|
+
const tags = [extracted.slug ? tagFor(extracted.slug) : undefined];
|
|
19
|
+
if (extracted.previousSlug && extracted.previousSlug !== extracted.slug) {
|
|
20
|
+
tags.push(tagFor(extracted.previousSlug));
|
|
21
|
+
}
|
|
22
|
+
return tags;
|
|
23
|
+
}
|
|
24
|
+
const articleHandler = {
|
|
25
|
+
extract: extractSlugWithPrevious,
|
|
26
|
+
makeTags: (extracted) => slugChangeTags(extracted, articleTag),
|
|
27
|
+
getGlobalTags: () => [ArticleTag],
|
|
28
|
+
rebuildSearch: true,
|
|
29
|
+
};
|
|
30
|
+
const pageVariantHandler = {
|
|
31
|
+
extract: extractSlugWithPrevious,
|
|
32
|
+
makeTags: (extracted) => slugChangeTags(extracted, pageVariantTag),
|
|
33
|
+
getGlobalTags: () => [PageVariantTag],
|
|
34
|
+
};
|
|
35
|
+
const pageHandler = {
|
|
36
|
+
extract: extractSlugWithPrevious,
|
|
37
|
+
makeTags: (extracted) => slugChangeTags(extracted, pageTag),
|
|
38
|
+
getGlobalTags: () => [PageTag],
|
|
39
|
+
};
|
|
40
|
+
const templateHandler = {
|
|
41
|
+
extract: (data) => data.fields?.cmsLabel?.[defaultLocale],
|
|
42
|
+
makeTags: (extracted) => [extracted ? templateTag(extracted) : undefined],
|
|
43
|
+
getGlobalTags: () => [TemplateTag],
|
|
44
|
+
getCascadeTags: () => [PageTag, ArticleTag],
|
|
45
|
+
};
|
|
46
|
+
// biome-ignore lint/suspicious/noExplicitAny: handlers use heterogeneous extract shapes
|
|
47
|
+
export const contentTypeHandlers = {
|
|
48
|
+
// biome-ignore lint/suspicious/noExplicitAny: page extract is SlugExtract
|
|
49
|
+
page: pageHandler,
|
|
50
|
+
// biome-ignore lint/suspicious/noExplicitAny: pageVariant extract is SlugExtract
|
|
51
|
+
pageVariant: pageVariantHandler,
|
|
52
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is ok for handlers with different types
|
|
53
|
+
article: articleHandler,
|
|
54
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is ok for handlers with different types
|
|
55
|
+
articleType: articleTypeHandler,
|
|
56
|
+
person: {
|
|
57
|
+
extract: (data) => data.fields?.slug?.[defaultLocale],
|
|
58
|
+
makeTags: (extracted) => [
|
|
59
|
+
extracted ? personTag(extracted) : undefined,
|
|
60
|
+
],
|
|
61
|
+
getGlobalTags: () => [PersonTag],
|
|
62
|
+
},
|
|
63
|
+
tag: {
|
|
64
|
+
extract: (data) => data.fields?.slug?.[defaultLocale],
|
|
65
|
+
makeTags: (extracted) => [extracted ? tagTag(extracted) : undefined],
|
|
66
|
+
getGlobalTags: () => [TagTag],
|
|
67
|
+
},
|
|
68
|
+
tagType: {
|
|
69
|
+
extract: (data) => data.fields?.slug?.[defaultLocale],
|
|
70
|
+
makeTags: (extracted) => [
|
|
71
|
+
extracted ? tagTypeTag(extracted) : undefined,
|
|
72
|
+
],
|
|
73
|
+
getGlobalTags: () => [TagTypeTag],
|
|
74
|
+
},
|
|
75
|
+
link: {
|
|
76
|
+
extract: () => undefined,
|
|
77
|
+
makeTags: () => undefined,
|
|
78
|
+
getGlobalTags: () => [LinkTag],
|
|
79
|
+
},
|
|
80
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is ok for handlers with different types
|
|
81
|
+
template: templateHandler,
|
|
82
|
+
customType: {
|
|
83
|
+
extract: () => undefined,
|
|
84
|
+
makeTags: () => undefined,
|
|
85
|
+
getGlobalTags: () => [CustomTypeTag],
|
|
86
|
+
getCascadeTags: () => [TagTag, PersonTag],
|
|
87
|
+
},
|
|
88
|
+
navigation: {
|
|
89
|
+
extract: () => undefined,
|
|
90
|
+
makeTags: () => undefined,
|
|
91
|
+
getGlobalTags: () => [NavigationTag],
|
|
92
|
+
},
|
|
93
|
+
navigationItem: {
|
|
94
|
+
extract: () => undefined,
|
|
95
|
+
makeTags: () => undefined,
|
|
96
|
+
getGlobalTags: () => [NavigationItemTag],
|
|
97
|
+
},
|
|
98
|
+
banner: {
|
|
99
|
+
extract: () => undefined,
|
|
100
|
+
makeTags: () => undefined,
|
|
101
|
+
getGlobalTags: () => [BannerTag],
|
|
102
|
+
},
|
|
103
|
+
document: {
|
|
104
|
+
extract: (data) => data.fields?.slug?.[defaultLocale],
|
|
105
|
+
makeTags: (extracted) => [
|
|
106
|
+
extracted ? `document#${extracted}` : undefined,
|
|
107
|
+
],
|
|
108
|
+
getGlobalTags: () => [DocumentTag],
|
|
109
|
+
},
|
|
110
|
+
redirect: {
|
|
111
|
+
extract: () => undefined,
|
|
112
|
+
makeTags: () => undefined,
|
|
113
|
+
getGlobalTags: () => [RedirectTag],
|
|
114
|
+
},
|
|
115
|
+
location: {
|
|
116
|
+
extract: (data) => data.fields?.slug?.[defaultLocale],
|
|
117
|
+
makeTags: (extracted) => [
|
|
118
|
+
extracted ? locationTag(extracted) : undefined,
|
|
119
|
+
],
|
|
120
|
+
getGlobalTags: () => [LocationTag],
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
/** Merge individual, collection, and coarse cascade tags for publish revalidation. */
|
|
124
|
+
export function collectPublishTagsForHandler(
|
|
125
|
+
// biome-ignore lint/suspicious/noExplicitAny: heterogeneous extract shapes across handlers
|
|
126
|
+
handler,
|
|
127
|
+
// biome-ignore lint/suspicious/noExplicitAny: string | SlugExtract | objects
|
|
128
|
+
extracted) {
|
|
129
|
+
const individual = handler
|
|
130
|
+
.makeTags(extracted)
|
|
131
|
+
?.filter((tag) => tag !== undefined) ?? [];
|
|
132
|
+
const cascade = handler.getCascadeTags?.() ?? [];
|
|
133
|
+
return [...new Set([...individual, ...handler.getGlobalTags(), ...cascade])];
|
|
134
|
+
}
|
|
135
|
+
/** Tags revalidated when an entry is published (production mode). */
|
|
136
|
+
export async function getPublishTagsForEntry(content) {
|
|
137
|
+
const contentType = content.sys.contentType.sys.id;
|
|
138
|
+
const handler = contentTypeHandlers[contentType];
|
|
139
|
+
if (!handler)
|
|
140
|
+
return [];
|
|
141
|
+
const extracted = await Promise.resolve(handler.extract(content));
|
|
142
|
+
return collectPublishTagsForHandler(handler, extracted);
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=entry-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-handlers.js","sourceRoot":"","sources":["../../src/revalidation/entry-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { BaseData, IContentTypeHandler } from './entry-handlers';
|
|
2
|
+
export type { BaseData, IContentTypeHandler } from './entry-handlers';
|
|
3
|
+
export { collectPublishTagsForHandler, contentTypeHandlers, getPublishTagsForEntry, } from './entry-handlers';
|
|
4
|
+
export interface AssetData extends BaseData {
|
|
5
|
+
fields?: {
|
|
6
|
+
file?: {
|
|
7
|
+
[key: string]: {
|
|
8
|
+
url: string;
|
|
9
|
+
fileName: string;
|
|
10
|
+
contentType: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare function revalidateAsset(content: AssetData, message: string, preview?: boolean): Promise<boolean>;
|
|
16
|
+
export declare function revalidateEntry(handler: IContentTypeHandler<BaseData, string | null | undefined>, content: BaseData, contentType: string, preview?: boolean): Promise<boolean>;
|
|
17
|
+
export declare function revalidateDeletedEntry(contentType: string, preview?: boolean): Promise<boolean>;
|
|
18
|
+
export declare function revalidateDeletedAsset(assetId: string, preview?: boolean): Promise<boolean>;
|
|
19
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/revalidation/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAKtE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE;YACL,CAAC,GAAG,EAAE,MAAM,GAAG;gBACb,GAAG,EAAE,MAAM,CAAC;gBACZ,QAAQ,EAAE,MAAM,CAAC;gBACjB,WAAW,EAAE,MAAM,CAAC;aACrB,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAID,wBAAsB,eAAe,CACnC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjE,OAAO,EAAE,QAAQ,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAUlB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { collectPublishTagsForHandler } from './entry-handlers.js';
|
|
2
|
+
import { revalidateSingleTag, revalidateTags } from './server-utils.js';
|
|
3
|
+
import { AssetTag, assetTag, GlobalTag } from './tags.js';
|
|
4
|
+
export { collectPublishTagsForHandler, contentTypeHandlers, getPublishTagsForEntry, } from './entry-handlers.js';
|
|
5
|
+
const defaultLocale = 'en-US';
|
|
6
|
+
export async function revalidateAsset(content, message, preview = false) {
|
|
7
|
+
const id = content.sys.id;
|
|
8
|
+
const fileName = content.fields?.file?.[defaultLocale]?.fileName;
|
|
9
|
+
const tags = [assetTag(id), fileName ? assetTag(fileName) : undefined, AssetTag].filter((tag) => tag !== undefined);
|
|
10
|
+
if (preview) {
|
|
11
|
+
await revalidateSingleTag(GlobalTag, message);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
await revalidateTags(tags, message);
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
export async function revalidateEntry(handler, content, contentType, preview = false) {
|
|
19
|
+
const extracted = await Promise.resolve(handler.extract(content));
|
|
20
|
+
const tagsToRevalidate = collectPublishTagsForHandler(handler, extracted);
|
|
21
|
+
if (preview) {
|
|
22
|
+
await revalidateSingleTag(GlobalTag, `publish ${contentType} (preview mode)`);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
await revalidateTags(tagsToRevalidate, `publish ${contentType}`);
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
export async function revalidateDeletedEntry(contentType, preview = false) {
|
|
30
|
+
const { getCacheTagsForProduction } = await import('./utils.js');
|
|
31
|
+
const tags = getCacheTagsForProduction(contentType);
|
|
32
|
+
if (preview) {
|
|
33
|
+
await revalidateSingleTag(GlobalTag, `delete ${contentType} (preview mode)`);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
await revalidateTags(tags, `delete ${contentType}`);
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
export async function revalidateDeletedAsset(assetId, preview = false) {
|
|
41
|
+
const tags = [assetTag(assetId), AssetTag];
|
|
42
|
+
if (preview) {
|
|
43
|
+
await revalidateSingleTag(GlobalTag, `delete asset ${assetId} (preview mode)`);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
await revalidateTags(tags, `delete asset ${assetId}`);
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/revalidation/handlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGvD,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAc1B,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAkB,EAClB,OAAe,EACf,UAAmB,KAAK;IAExB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;IACjE,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,MAAM,CACrF,CAAC,GAAG,EAAiB,EAAE,CAAC,GAAG,KAAK,SAAS,CAC1C,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAiE,EACjE,OAAiB,EACjB,WAAmB,EACnB,UAAmB,KAAK;IAExB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE1E,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,mBAAmB,CAAC,SAAS,EAAE,WAAW,WAAW,iBAAiB,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,CAAC,gBAAgB,EAAE,WAAW,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,UAAmB,KAAK;IAExB,MAAM,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAEpD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,mBAAmB,CAAC,SAAS,EAAE,UAAU,WAAW,iBAAiB,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,CAAC,IAAI,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,UAAmB,KAAK;IAExB,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE3C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,OAAO,iBAAiB,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,CAAC,IAAI,EAAE,gBAAgB,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/revalidation/index.ts"],"names":[],"mappings":"AAEA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/revalidation/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for the revalidation route
|
|
4
|
+
*/
|
|
5
|
+
export interface RevalidationConfig {
|
|
6
|
+
/** Secret for validating webhook requests */
|
|
7
|
+
secret?: string;
|
|
8
|
+
/** Whether to validate the secret */
|
|
9
|
+
validateSecret?: boolean;
|
|
10
|
+
/** Whether to run in preview mode (DRAFT_ONLY / always-preview deploys) */
|
|
11
|
+
preview?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Site-only cache tags revalidated on REVALIDATE_ALL (after GlobalTag + AllTags).
|
|
14
|
+
* Prefer core AllTags for shared tags (e.g. hubspot-forms is already included).
|
|
15
|
+
*/
|
|
16
|
+
extraTags?: string[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create a Next.js API route handler for Contentful revalidation
|
|
20
|
+
*
|
|
21
|
+
* @param config - Configuration options
|
|
22
|
+
* @returns Next.js POST handler function
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* // In your app/api/revalidate/route.ts
|
|
27
|
+
* import { createRevalidationHandler } from '@se-studio/contentful-rest-api';
|
|
28
|
+
*
|
|
29
|
+
* export const POST = createRevalidationHandler({
|
|
30
|
+
* secret: process.env.REVALIDATION_SECRET,
|
|
31
|
+
* validateSecret: true,
|
|
32
|
+
* preview: process.env.DRAFT_ONLY === 'true',
|
|
33
|
+
* // extraTags: ['my-site-only-tag'],
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function createRevalidationHandler(config?: RevalidationConfig): (request: NextRequest) => Promise<NextResponse>;
|
|
38
|
+
//# sourceMappingURL=nextjs-route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs-route.d.ts","sourceRoot":"","sources":["../../src/revalidation/nextjs-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,GAAE,kBAAuB,GAC9B,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAejD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
import { handleRevalidation } from './route.js';
|
|
3
|
+
/**
|
|
4
|
+
* Create a Next.js API route handler for Contentful revalidation
|
|
5
|
+
*
|
|
6
|
+
* @param config - Configuration options
|
|
7
|
+
* @returns Next.js POST handler function
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* // In your app/api/revalidate/route.ts
|
|
12
|
+
* import { createRevalidationHandler } from '@se-studio/contentful-rest-api';
|
|
13
|
+
*
|
|
14
|
+
* export const POST = createRevalidationHandler({
|
|
15
|
+
* secret: process.env.REVALIDATION_SECRET,
|
|
16
|
+
* validateSecret: true,
|
|
17
|
+
* preview: process.env.DRAFT_ONLY === 'true',
|
|
18
|
+
* // extraTags: ['my-site-only-tag'],
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function createRevalidationHandler(config = {}) {
|
|
23
|
+
return async function POST(request) {
|
|
24
|
+
const { secret, validateSecret = true, preview = false, extraTags = [] } = config;
|
|
25
|
+
// Validate secret if required
|
|
26
|
+
if (validateSecret && secret) {
|
|
27
|
+
const requestSecret = request.headers.get('REVALIDATION_SECRET');
|
|
28
|
+
if (requestSecret !== secret) {
|
|
29
|
+
return NextResponse.json({ message: 'Invalid secret' }, { status: 401 });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Handle the revalidation
|
|
33
|
+
return await handleRevalidation(request, preview, extraTags);
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=nextjs-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs-route.js","sourceRoot":"","sources":["../../src/revalidation/nextjs-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAmB7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAA6B,EAAE;IAE/B,OAAO,KAAK,UAAU,IAAI,CAAC,OAAoB;QAC7C,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,OAAO,GAAG,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;QAElF,8BAA8B;QAC9B,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACjE,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,OAAO,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/revalidation/route.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiE3C,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,OAAe,EACxB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,YAAY,CAAC,CAgDvB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
import { NextResponse } from 'next/server';
|
|
4
|
+
import { contentTypeHandlers, revalidateAsset, revalidateDeletedAsset, revalidateDeletedEntry, revalidateEntry, } from './handlers.js';
|
|
5
|
+
import { revalidateSingleTag } from './server-utils.js';
|
|
6
|
+
import { collectRevalidateAllTags } from './tags.js';
|
|
7
|
+
// Handle asset publishing
|
|
8
|
+
async function publishAsset(content, preview) {
|
|
9
|
+
return await revalidateAsset(content, 'publish asset', preview);
|
|
10
|
+
}
|
|
11
|
+
// Handle asset deletion
|
|
12
|
+
async function deleteAsset(content, preview) {
|
|
13
|
+
return await revalidateDeletedAsset(content.sys.id, preview);
|
|
14
|
+
}
|
|
15
|
+
// Handle entry publishing
|
|
16
|
+
async function publishEntry(content, preview) {
|
|
17
|
+
const contentType = content.sys.contentType.sys.id;
|
|
18
|
+
const handler = contentTypeHandlers[contentType];
|
|
19
|
+
if (!handler) {
|
|
20
|
+
if (process.env.LOG_CMS)
|
|
21
|
+
console.warn(`Unknown content type: ${contentType}`);
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return await revalidateEntry(handler, content, contentType, preview);
|
|
25
|
+
}
|
|
26
|
+
// Handle entry deletion
|
|
27
|
+
async function deleteEntry(content, preview) {
|
|
28
|
+
if (process.env.LOG_CMS)
|
|
29
|
+
console.log(`Delete entry: ${content.sys.id}`);
|
|
30
|
+
const contentType = content.sys.contentType.sys.id;
|
|
31
|
+
const success = await revalidateDeletedEntry(contentType, preview);
|
|
32
|
+
// Note: Search rebuild logic would go here if needed
|
|
33
|
+
return success;
|
|
34
|
+
}
|
|
35
|
+
// Revalidate all tags (for global revalidation)
|
|
36
|
+
async function revalidateAll(extraTags = []) {
|
|
37
|
+
if (process.env.LOG_CMS)
|
|
38
|
+
console.log('Revalidating all tags');
|
|
39
|
+
await delay(500);
|
|
40
|
+
// Always clear draft/preview Data Cache (`global`) and every collection tag,
|
|
41
|
+
// plus any site-only extras (deduped). Independent of preview flag so DRAFT_ONLY
|
|
42
|
+
// and production bulk revalidate the same known set.
|
|
43
|
+
for (const tag of collectRevalidateAllTags(extraTags)) {
|
|
44
|
+
await revalidateSingleTag(tag, 'global revalidation');
|
|
45
|
+
}
|
|
46
|
+
// Note: Search rebuild logic would go here if needed
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
// Utility delay function
|
|
50
|
+
function delay(ms) {
|
|
51
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
52
|
+
}
|
|
53
|
+
// Main revalidation handler function
|
|
54
|
+
export async function handleRevalidation(request, preview = false, extraTags = []) {
|
|
55
|
+
try {
|
|
56
|
+
// Check for global revalidation header
|
|
57
|
+
const all = request.headers.get('REVALIDATE_ALL');
|
|
58
|
+
const single = request.headers.get('REVALIDATION_TAG');
|
|
59
|
+
if (all) {
|
|
60
|
+
const success = await revalidateAll(extraTags);
|
|
61
|
+
return NextResponse.json({ revalidated: success, now: Date.now() }, { status: 200 });
|
|
62
|
+
}
|
|
63
|
+
if (single) {
|
|
64
|
+
const success = await revalidateSingleTag(single, 'single tag revalidation');
|
|
65
|
+
return NextResponse.json({ revalidated: success, now: Date.now() }, { status: 200 });
|
|
66
|
+
}
|
|
67
|
+
// Parse webhook payload
|
|
68
|
+
const content = (await request.json());
|
|
69
|
+
let success = false;
|
|
70
|
+
switch (content.sys.type) {
|
|
71
|
+
case 'DeletedAsset':
|
|
72
|
+
success = await deleteAsset(content, preview);
|
|
73
|
+
break;
|
|
74
|
+
case 'DeletedEntry':
|
|
75
|
+
success = await deleteEntry(content, preview);
|
|
76
|
+
break;
|
|
77
|
+
case 'Asset':
|
|
78
|
+
success = await publishAsset(content, preview);
|
|
79
|
+
break;
|
|
80
|
+
case 'Entry':
|
|
81
|
+
success = await publishEntry(content, preview);
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
if (process.env.LOG_CMS)
|
|
85
|
+
console.warn(`Unknown message type: ${content.sys.type}`);
|
|
86
|
+
return NextResponse.json({ message: 'Unknown message type' }, { status: 400 });
|
|
87
|
+
}
|
|
88
|
+
if (!success) {
|
|
89
|
+
return NextResponse.json({ message: 'Unknown content type' }, { status: 400 });
|
|
90
|
+
}
|
|
91
|
+
return NextResponse.json({ revalidated: success, now: Date.now() }, { status: 200 });
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.error('Error in revalidation:', error);
|
|
95
|
+
// Send a 200 back as Contentful retries a few times!
|
|
96
|
+
return NextResponse.json({ message: 'Error in revalidation' }, { status: 500 });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/revalidation/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import 'server-only';
|
|
2
|
+
/**
|
|
3
|
+
* Immediate cache-tag expiry for Contentful webhooks.
|
|
4
|
+
*
|
|
5
|
+
* Next.js 16 requires a second argument. `'max'` is stale-while-revalidate and
|
|
6
|
+
* would leave published CMS content stale for the next visitor. `{ expire: 0 }`
|
|
7
|
+
* is the documented webhook/third-party path. Next 15.5 ignores the extra
|
|
8
|
+
* argument and keeps the previous immediate behaviour.
|
|
9
|
+
*/
|
|
10
|
+
export declare function revalidateCacheTag(tag: string): void;
|
|
11
|
+
/**
|
|
12
|
+
* Revalidates multiple Next.js cache tags.
|
|
13
|
+
*
|
|
14
|
+
* Adds a delay between revalidations to prevent overwhelming the cache system.
|
|
15
|
+
* Use this when content changes affect multiple pages or entries.
|
|
16
|
+
*
|
|
17
|
+
* @param tags - Array of cache tags to revalidate
|
|
18
|
+
* @param reason - Reason for revalidation (for logging/debugging)
|
|
19
|
+
*/
|
|
20
|
+
export declare function revalidateTags(tags: string[], reason: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Revalidates a single Next.js cache tag.
|
|
23
|
+
*
|
|
24
|
+
* Adds a delay before revalidation to prevent overwhelming the cache system.
|
|
25
|
+
* Use this for targeted revalidation of specific content.
|
|
26
|
+
*
|
|
27
|
+
* @param tag - Cache tag to revalidate (e.g., 'page#home', 'article#my-post')
|
|
28
|
+
* @param reason - Reason for revalidation (for logging/debugging)
|
|
29
|
+
*/
|
|
30
|
+
export declare function revalidateSingleTag(tag: string, reason: string): Promise<void>;
|
|
31
|
+
//# sourceMappingURL=server-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-utils.d.ts","sourceRoot":"","sources":["../../src/revalidation/server-utils.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlF;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import 'server-only';
|
|
2
|
+
import { revalidateTag } from 'next/cache';
|
|
3
|
+
/**
|
|
4
|
+
* Immediate cache-tag expiry for Contentful webhooks.
|
|
5
|
+
*
|
|
6
|
+
* Next.js 16 requires a second argument. `'max'` is stale-while-revalidate and
|
|
7
|
+
* would leave published CMS content stale for the next visitor. `{ expire: 0 }`
|
|
8
|
+
* is the documented webhook/third-party path. Next 15.5 ignores the extra
|
|
9
|
+
* argument and keeps the previous immediate behaviour.
|
|
10
|
+
*/
|
|
11
|
+
export function revalidateCacheTag(tag) {
|
|
12
|
+
revalidateTag(tag, { expire: 0 });
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Revalidates multiple Next.js cache tags.
|
|
16
|
+
*
|
|
17
|
+
* Adds a delay between revalidations to prevent overwhelming the cache system.
|
|
18
|
+
* Use this when content changes affect multiple pages or entries.
|
|
19
|
+
*
|
|
20
|
+
* @param tags - Array of cache tags to revalidate
|
|
21
|
+
* @param reason - Reason for revalidation (for logging/debugging)
|
|
22
|
+
*/
|
|
23
|
+
export async function revalidateTags(tags, reason) {
|
|
24
|
+
// Add a delay to prevent overwhelming the cache system
|
|
25
|
+
await delay(500);
|
|
26
|
+
for (const tag of tags) {
|
|
27
|
+
if (process.env.LOG_CMS)
|
|
28
|
+
console.log(`Revalidating tag: ${tag} - ${reason}`);
|
|
29
|
+
revalidateCacheTag(tag);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Revalidates a single Next.js cache tag.
|
|
34
|
+
*
|
|
35
|
+
* Adds a delay before revalidation to prevent overwhelming the cache system.
|
|
36
|
+
* Use this for targeted revalidation of specific content.
|
|
37
|
+
*
|
|
38
|
+
* @param tag - Cache tag to revalidate (e.g., 'page#home', 'article#my-post')
|
|
39
|
+
* @param reason - Reason for revalidation (for logging/debugging)
|
|
40
|
+
*/
|
|
41
|
+
export async function revalidateSingleTag(tag, reason) {
|
|
42
|
+
await delay(500);
|
|
43
|
+
if (process.env.LOG_CMS)
|
|
44
|
+
console.log(`Revalidating single tag: ${tag} - ${reason}`);
|
|
45
|
+
revalidateCacheTag(tag);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Utility delay function
|
|
49
|
+
* @param ms - Milliseconds to delay
|
|
50
|
+
*/
|
|
51
|
+
function delay(ms) {
|
|
52
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=server-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-utils.js","sourceRoot":"","sources":["../../src/revalidation/server-utils.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc,EAAE,MAAc;IACjE,uDAAuD;IACvD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC;QAC7E,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,MAAc;IACnE,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC;IACpF,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|