@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,37 @@
|
|
|
1
|
+
import type { IBaseArticleType } from '@se-studio/core-data-types';
|
|
2
|
+
import type { BaseConverterContext } from '../converters/helpers';
|
|
3
|
+
import type { CmsResponse, ContentfulConfig, FetchOptions } from '../types';
|
|
4
|
+
export interface ArticleTypeFetchOptions extends FetchOptions {
|
|
5
|
+
customType?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Fetches an article type from Contentful by slug
|
|
9
|
+
*
|
|
10
|
+
* @param context - Converter context
|
|
11
|
+
* @param config - Contentful configuration
|
|
12
|
+
* @param slug - Article type slug to fetch
|
|
13
|
+
* @param options - Fetch options (locale, preview, caching, etc.)
|
|
14
|
+
* @returns Promise resolving to IBaseArticleType or null if not found
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const articleType = await contentfulArticleTypeRest(
|
|
19
|
+
* context,
|
|
20
|
+
* {
|
|
21
|
+
* spaceId: process.env.CONTENTFUL_SPACE_ID!,
|
|
22
|
+
* accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!,
|
|
23
|
+
* },
|
|
24
|
+
* 'blog',
|
|
25
|
+
* {
|
|
26
|
+
* locale: 'en-US',
|
|
27
|
+
* cache: {
|
|
28
|
+
* tags: ['blog-article-type'],
|
|
29
|
+
* revalidate: 3600
|
|
30
|
+
* },
|
|
31
|
+
* customType: 'blog' // Optional custom type
|
|
32
|
+
* }
|
|
33
|
+
* );
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function contentfulArticleTypeRest(context: BaseConverterContext, config: ContentfulConfig, slug: string, options: ArticleTypeFetchOptions): Promise<CmsResponse<IBaseArticleType | null>>;
|
|
37
|
+
//# sourceMappingURL=article-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"article-type.d.ts","sourceRoot":"","sources":["../../src/api/article-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAIlE,OAAO,KAAK,EAAY,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AActF,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CA0J/C"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { getContentfulClient } from '../client.js';
|
|
2
|
+
import { enrichAllAssets } from '../converters/enrichAssets.js';
|
|
3
|
+
import { finalizeModelIconsAndNavigation } from '../navigation/enrichModelNavigation.js';
|
|
4
|
+
import { getCacheTags } from '../revalidation/utils.js';
|
|
5
|
+
import { withCmsQueryContext } from '../telemetry/queryContext.js';
|
|
6
|
+
import { withRetry } from '../utils/index.js';
|
|
7
|
+
import { convertAllAssets, convertAllIncludes, convertAllRawAssets, createFullConverterContext, operationLabel, PAGE_BUNDLED_CUSTOM_TYPE_INCLUDE, resolveIncludeDepth, } from './helpers.js';
|
|
8
|
+
import { getSingleEntityListingSelect } from './listing-fetch-params.js';
|
|
9
|
+
/**
|
|
10
|
+
* Fetches an article type from Contentful by slug
|
|
11
|
+
*
|
|
12
|
+
* @param context - Converter context
|
|
13
|
+
* @param config - Contentful configuration
|
|
14
|
+
* @param slug - Article type slug to fetch
|
|
15
|
+
* @param options - Fetch options (locale, preview, caching, etc.)
|
|
16
|
+
* @returns Promise resolving to IBaseArticleType or null if not found
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const articleType = await contentfulArticleTypeRest(
|
|
21
|
+
* context,
|
|
22
|
+
* {
|
|
23
|
+
* spaceId: process.env.CONTENTFUL_SPACE_ID!,
|
|
24
|
+
* accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!,
|
|
25
|
+
* },
|
|
26
|
+
* 'blog',
|
|
27
|
+
* {
|
|
28
|
+
* locale: 'en-US',
|
|
29
|
+
* cache: {
|
|
30
|
+
* tags: ['blog-article-type'],
|
|
31
|
+
* revalidate: 3600
|
|
32
|
+
* },
|
|
33
|
+
* customType: 'blog' // Optional custom type
|
|
34
|
+
* }
|
|
35
|
+
* );
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export async function contentfulArticleTypeRest(context, config, slug, options) {
|
|
39
|
+
const client = getContentfulClient(config, options.preview);
|
|
40
|
+
// Set cache tags for this request
|
|
41
|
+
const articleTypeCacheTags = getCacheTags('articleType', slug, options?.preview);
|
|
42
|
+
const customTypeCacheTags = options?.customType
|
|
43
|
+
? getCacheTags('customType', options.customType, options?.preview)
|
|
44
|
+
: [];
|
|
45
|
+
const requestOptions = {
|
|
46
|
+
...options,
|
|
47
|
+
next: {
|
|
48
|
+
...options?.next,
|
|
49
|
+
tags: [...articleTypeCacheTags, ...customTypeCacheTags],
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
const fetchFn = async () => {
|
|
53
|
+
const fetchProfile = options.fetchProfile ?? 'page';
|
|
54
|
+
const bundleCustomType = fetchProfile === 'page' && !!options?.customType;
|
|
55
|
+
const articleTypeInclude = resolveIncludeDepth('articleType', options);
|
|
56
|
+
const customTypeInclude = options.include ?? PAGE_BUNDLED_CUSTOM_TYPE_INCLUDE;
|
|
57
|
+
const listingSelect = fetchProfile === 'listing' ? getSingleEntityListingSelect('articleType') : undefined;
|
|
58
|
+
const articleTypePromise = withCmsQueryContext({ operation: operationLabel('articleType'), identifier: slug }, () => client.getEntries({
|
|
59
|
+
content_type: 'articleType',
|
|
60
|
+
'fields.slug': slug,
|
|
61
|
+
include: articleTypeInclude,
|
|
62
|
+
locale: options?.locale,
|
|
63
|
+
limit: 1,
|
|
64
|
+
...(listingSelect && { select: listingSelect }),
|
|
65
|
+
}, requestOptions));
|
|
66
|
+
const customTypePromise = bundleCustomType
|
|
67
|
+
? withCmsQueryContext({ operation: operationLabel('customType'), identifier: options.customType }, () => client.getEntries({
|
|
68
|
+
content_type: 'customType',
|
|
69
|
+
'fields.slug': options.customType,
|
|
70
|
+
include: customTypeInclude,
|
|
71
|
+
locale: options?.locale,
|
|
72
|
+
limit: 1,
|
|
73
|
+
}, requestOptions))
|
|
74
|
+
: Promise.resolve(null);
|
|
75
|
+
const [articleTypeResponse, customTypeResponse] = await Promise.all([
|
|
76
|
+
articleTypePromise,
|
|
77
|
+
customTypePromise,
|
|
78
|
+
]);
|
|
79
|
+
if (process.env.LOG_CMS) {
|
|
80
|
+
const entryCount = (articleTypeResponse.includes?.Entry?.length ?? 0) + articleTypeResponse.items.length;
|
|
81
|
+
console.debug(`[CMS] articleType fetch: include=${articleTypeInclude}, customType include=${customTypeInclude}, entries in includes=${entryCount}`);
|
|
82
|
+
}
|
|
83
|
+
const articleTypeEntry = articleTypeResponse.items[0];
|
|
84
|
+
if (!articleTypeEntry?.fields) {
|
|
85
|
+
return { data: null, errors: [] };
|
|
86
|
+
}
|
|
87
|
+
const customTypeEntry = customTypeResponse?.items[0];
|
|
88
|
+
try {
|
|
89
|
+
const assets = convertAllAssets(articleTypeResponse, context);
|
|
90
|
+
const rawAssets = convertAllRawAssets(articleTypeResponse);
|
|
91
|
+
const includes = convertAllIncludes(articleTypeResponse);
|
|
92
|
+
if (customTypeResponse) {
|
|
93
|
+
const customAssets = convertAllAssets(customTypeResponse, context);
|
|
94
|
+
const customRawAssets = convertAllRawAssets(customTypeResponse);
|
|
95
|
+
const customIncludes = convertAllIncludes(customTypeResponse);
|
|
96
|
+
for (const [key, value] of customAssets)
|
|
97
|
+
assets.set(key, value);
|
|
98
|
+
for (const [key, value] of customRawAssets)
|
|
99
|
+
rawAssets.set(key, value);
|
|
100
|
+
for (const [key, value] of customIncludes)
|
|
101
|
+
includes.set(key, value);
|
|
102
|
+
}
|
|
103
|
+
const externalVideoEmbeds = await enrichAllAssets(assets, includes, options);
|
|
104
|
+
const fullContext = createFullConverterContext(context, includes, assets, rawAssets, externalVideoEmbeds, options);
|
|
105
|
+
let converted = context.articleTypeResolver(fullContext, articleTypeEntry, bundleCustomType ? customTypeEntry : undefined);
|
|
106
|
+
if (converted) {
|
|
107
|
+
converted = await finalizeModelIconsAndNavigation(converted, context, config, options);
|
|
108
|
+
}
|
|
109
|
+
// Log errors in production
|
|
110
|
+
if (fullContext.errors.length > 0 &&
|
|
111
|
+
typeof process !== 'undefined' &&
|
|
112
|
+
process.env?.NODE_ENV === 'production') {
|
|
113
|
+
console.error(`CMS conversion errors for articleType:`, {
|
|
114
|
+
entryId: articleTypeEntry.sys.id,
|
|
115
|
+
slug,
|
|
116
|
+
errors: fullContext.errors,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return { data: converted, errors: fullContext.errors };
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
const entryId = articleTypeEntry?.sys.id || 'unknown';
|
|
123
|
+
const entryType = articleTypeEntry?.sys.contentType?.sys?.id;
|
|
124
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown conversion error';
|
|
125
|
+
const cmsError = {
|
|
126
|
+
entryId,
|
|
127
|
+
entryType,
|
|
128
|
+
message: errorMessage,
|
|
129
|
+
error,
|
|
130
|
+
};
|
|
131
|
+
return { data: null, errors: [cmsError] };
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
// Apply retry logic if configured
|
|
135
|
+
if (options?.retry) {
|
|
136
|
+
return await withRetry(fetchFn, options.retry);
|
|
137
|
+
}
|
|
138
|
+
return await fetchFn();
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=article-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"article-type.js","sourceRoot":"","sources":["../../src/api/article-type.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { IBaseArticle } from '@se-studio/core-data-types';
|
|
2
|
+
import type { BaseConverterContext } from '../converters/helpers';
|
|
3
|
+
import type { CmsResponse, ContentfulConfig, FetchOptions } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* Fetches an article from Contentful by slug and article type slug.
|
|
6
|
+
*
|
|
7
|
+
* @param context - Base converter context for content transformation
|
|
8
|
+
* @param config - Contentful configuration (spaceId, accessToken, environment)
|
|
9
|
+
* @param slug - Article slug to fetch
|
|
10
|
+
* @param articleTypeSlug - Article type slug (e.g., 'blog', 'news')
|
|
11
|
+
* @param options - Optional fetch options (locale, preview, caching, retry)
|
|
12
|
+
* @returns Promise resolving to article data or null if not found, with any conversion errors
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const article = await contentfulArticleRest(
|
|
17
|
+
* context,
|
|
18
|
+
* {
|
|
19
|
+
* spaceId: process.env.CONTENTFUL_SPACE_ID!,
|
|
20
|
+
* accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!,
|
|
21
|
+
* },
|
|
22
|
+
* 'my-article',
|
|
23
|
+
* 'blog',
|
|
24
|
+
* {
|
|
25
|
+
* locale: 'en-US',
|
|
26
|
+
* cache: { tags: ['article#my-article'], revalidate: 3600 }
|
|
27
|
+
* }
|
|
28
|
+
* );
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function contentfulArticleRest(context: BaseConverterContext, config: ContentfulConfig, slug: string, articleTypeSlug: string, options: FetchOptions): Promise<CmsResponse<IBaseArticle | null>>;
|
|
32
|
+
//# sourceMappingURL=article.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"article.d.ts","sourceRoot":"","sources":["../../src/api/article.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG5E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAkB3C"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { fetchSingleEntity } from './helpers.js';
|
|
2
|
+
/**
|
|
3
|
+
* Fetches an article from Contentful by slug and article type slug.
|
|
4
|
+
*
|
|
5
|
+
* @param context - Base converter context for content transformation
|
|
6
|
+
* @param config - Contentful configuration (spaceId, accessToken, environment)
|
|
7
|
+
* @param slug - Article slug to fetch
|
|
8
|
+
* @param articleTypeSlug - Article type slug (e.g., 'blog', 'news')
|
|
9
|
+
* @param options - Optional fetch options (locale, preview, caching, retry)
|
|
10
|
+
* @returns Promise resolving to article data or null if not found, with any conversion errors
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const article = await contentfulArticleRest(
|
|
15
|
+
* context,
|
|
16
|
+
* {
|
|
17
|
+
* spaceId: process.env.CONTENTFUL_SPACE_ID!,
|
|
18
|
+
* accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!,
|
|
19
|
+
* },
|
|
20
|
+
* 'my-article',
|
|
21
|
+
* 'blog',
|
|
22
|
+
* {
|
|
23
|
+
* locale: 'en-US',
|
|
24
|
+
* cache: { tags: ['article#my-article'], revalidate: 3600 }
|
|
25
|
+
* }
|
|
26
|
+
* );
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export async function contentfulArticleRest(context, config, slug, articleTypeSlug, options) {
|
|
30
|
+
return fetchSingleEntity(context, config, {
|
|
31
|
+
contentType: 'article',
|
|
32
|
+
cacheTagType: 'article',
|
|
33
|
+
cacheTagIdentifier: slug,
|
|
34
|
+
query: {
|
|
35
|
+
'fields.slug': slug,
|
|
36
|
+
'fields.articleType.sys.contentType.sys.id': 'articleType',
|
|
37
|
+
'fields.articleType.fields.slug': articleTypeSlug,
|
|
38
|
+
},
|
|
39
|
+
resolver: (ctx, entry) => ctx.articleResolver(ctx, entry),
|
|
40
|
+
errorLogContext: { slug, articleTypeSlug },
|
|
41
|
+
}, options);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=article.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/api/article.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA6B,EAC7B,MAAwB,EACxB,IAAY,EACZ,eAAuB,EACvB,OAAqB;IAErB,OAAO,iBAAiB,CACtB,OAAO,EACP,MAAM,EACN;QACE,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,SAAS;QACvB,kBAAkB,EAAE,IAAI;QACxB,KAAK,EAAE;YACL,aAAa,EAAE,IAAI;YACnB,2CAA2C,EAAE,aAAa;YAC1D,gCAAgC,EAAE,eAAe;SAClD;QACD,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC;QACzD,eAAe,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;KAC3C,EACD,OAAO,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contentful Asset API Module
|
|
3
|
+
*
|
|
4
|
+
* Provides functions for fetching and serving Contentful assets
|
|
5
|
+
* with proper caching and Content-Disposition handling.
|
|
6
|
+
*/
|
|
7
|
+
import { type ContentfulAssetResponse } from '../client';
|
|
8
|
+
import type { ContentfulConfig, FetchOptions } from '../types';
|
|
9
|
+
/**
|
|
10
|
+
* Check if a content type can be displayed inline in the browser.
|
|
11
|
+
* Returns true for PDFs, images, videos, and common text formats.
|
|
12
|
+
*
|
|
13
|
+
* @param contentType - MIME type to check
|
|
14
|
+
* @returns true if the browser can display this content type inline
|
|
15
|
+
*/
|
|
16
|
+
export declare function isBrowserViewable(contentType: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Fetch asset metadata from Contentful by asset ID.
|
|
19
|
+
* Uses the shared Contentful client with rate limiting and retry logic.
|
|
20
|
+
*
|
|
21
|
+
* @param config - Contentful configuration
|
|
22
|
+
* @param assetId - The Contentful asset ID
|
|
23
|
+
* @param options - Optional fetch options (preview, cache settings)
|
|
24
|
+
* @returns The asset response or null if not found
|
|
25
|
+
*/
|
|
26
|
+
export declare function contentfulAssetRest(config: ContentfulConfig, assetId: string, options: FetchOptions): Promise<ContentfulAssetResponse | null>;
|
|
27
|
+
export { assetToMediaLibraryItem, buildAssetThumbUrl, clampMediaLibraryLimit, clampMediaLibraryPage, contentfulAssetsPageRest, isAnimationAsset, isMediaLibraryKind, listAnimationsPage, listMediaLibraryPage, MEDIA_LIBRARY_DEFAULT_LIMIT, MEDIA_LIBRARY_KINDS, MEDIA_LIBRARY_MAX_LIMIT, MEDIA_LIBRARY_THUMB_WIDTH, type MediaLibraryItem, type MediaLibraryKind, type MediaLibraryPage, mediaLibraryKindForAsset, mediaLibraryPageToMarkdown, } from './media-library';
|
|
28
|
+
//# sourceMappingURL=asset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../src/api/asset.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,uBAAuB,EAAuB,MAAM,WAAW,CAAC;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAc/D;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAO9D;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAazC;AAED,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contentful Asset API Module
|
|
3
|
+
*
|
|
4
|
+
* Provides functions for fetching and serving Contentful assets
|
|
5
|
+
* with proper caching and Content-Disposition handling.
|
|
6
|
+
*/
|
|
7
|
+
import { getContentfulClient } from '../client.js';
|
|
8
|
+
import { getCacheTags } from '../revalidation/utils.js';
|
|
9
|
+
/**
|
|
10
|
+
* Content types that browsers can display inline
|
|
11
|
+
*/
|
|
12
|
+
const BROWSER_VIEWABLE_TYPES = [
|
|
13
|
+
'application/pdf',
|
|
14
|
+
'text/plain',
|
|
15
|
+
'text/html',
|
|
16
|
+
'text/css',
|
|
17
|
+
'text/javascript',
|
|
18
|
+
'application/json',
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Check if a content type can be displayed inline in the browser.
|
|
22
|
+
* Returns true for PDFs, images, videos, and common text formats.
|
|
23
|
+
*
|
|
24
|
+
* @param contentType - MIME type to check
|
|
25
|
+
* @returns true if the browser can display this content type inline
|
|
26
|
+
*/
|
|
27
|
+
export function isBrowserViewable(contentType) {
|
|
28
|
+
// All images and videos are viewable
|
|
29
|
+
if (contentType.startsWith('image/') || contentType.startsWith('video/')) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
return BROWSER_VIEWABLE_TYPES.includes(contentType);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Fetch asset metadata from Contentful by asset ID.
|
|
36
|
+
* Uses the shared Contentful client with rate limiting and retry logic.
|
|
37
|
+
*
|
|
38
|
+
* @param config - Contentful configuration
|
|
39
|
+
* @param assetId - The Contentful asset ID
|
|
40
|
+
* @param options - Optional fetch options (preview, cache settings)
|
|
41
|
+
* @returns The asset response or null if not found
|
|
42
|
+
*/
|
|
43
|
+
export async function contentfulAssetRest(config, assetId, options) {
|
|
44
|
+
const client = getContentfulClient(config, options.preview);
|
|
45
|
+
// Get cache tags for this asset
|
|
46
|
+
const cacheTags = getCacheTags('asset', assetId, options?.preview);
|
|
47
|
+
return client.getAsset(assetId, {
|
|
48
|
+
...options,
|
|
49
|
+
next: {
|
|
50
|
+
revalidate: options?.next?.revalidate ?? 86400, // Default 24 hours
|
|
51
|
+
tags: [...cacheTags, ...(options?.next?.tags ?? [])],
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export { assetToMediaLibraryItem, buildAssetThumbUrl, clampMediaLibraryLimit, clampMediaLibraryPage, contentfulAssetsPageRest, isAnimationAsset, isMediaLibraryKind, listAnimationsPage, listMediaLibraryPage, MEDIA_LIBRARY_DEFAULT_LIMIT, MEDIA_LIBRARY_KINDS, MEDIA_LIBRARY_MAX_LIMIT, MEDIA_LIBRARY_THUMB_WIDTH, mediaLibraryKindForAsset, mediaLibraryPageToMarkdown, } from './media-library.js';
|
|
56
|
+
//# sourceMappingURL=asset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/api/asset.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAgC,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD;;GAEG;AACH,MAAM,sBAAsB,GAAG;IAC7B,iBAAiB;IACjB,YAAY;IACZ,WAAW;IACX,UAAU;IACV,iBAAiB;IACjB,kBAAkB;CACnB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,qCAAqC;IACrC,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,sBAAsB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAwB,EACxB,OAAe,EACf,OAAqB;IAErB,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5D,gCAAgC;IAChC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAEnE,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC9B,GAAG,OAAO;QACV,IAAI,EAAE;YACJ,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,IAAI,KAAK,EAAE,mBAAmB;YACnE,IAAI,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;SACrD;KACF,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EAIzB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IBanner } from '@se-studio/core-data-types';
|
|
2
|
+
import type { BaseConverterContext } from '../converters/helpers';
|
|
3
|
+
import type { CmsResponse, ContentfulConfig, FetchOptions } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* Fetches all banners from Contentful
|
|
6
|
+
*/
|
|
7
|
+
export declare function contentfulBannerRest(context: BaseConverterContext, config: ContentfulConfig, options: FetchOptions): Promise<CmsResponse<IBanner[] | null>>;
|
|
8
|
+
//# sourceMappingURL=banner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/api/banner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAGlE,OAAO,KAAK,EAAY,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAStF;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CA6GxC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { getContentfulClient } from '../client.js';
|
|
2
|
+
import { enrichAllAssets } from '../converters/enrichAssets.js';
|
|
3
|
+
import { getCacheTags } from '../revalidation/index.js';
|
|
4
|
+
import { withCmsQueryContext } from '../telemetry/queryContext.js';
|
|
5
|
+
import { withRetry } from '../utils/index.js';
|
|
6
|
+
import { convertAllAssets, convertAllIncludes, convertAllRawAssets, createFullConverterContext, } from './helpers.js';
|
|
7
|
+
/**
|
|
8
|
+
* Fetches all banners from Contentful
|
|
9
|
+
*/
|
|
10
|
+
export async function contentfulBannerRest(context, config, options) {
|
|
11
|
+
const client = getContentfulClient(config, options.preview);
|
|
12
|
+
// Set cache tags for this request
|
|
13
|
+
const bannerCacheTags = getCacheTags('banner', undefined, options.preview);
|
|
14
|
+
const requestOptions = {
|
|
15
|
+
...options,
|
|
16
|
+
next: {
|
|
17
|
+
...options?.next,
|
|
18
|
+
tags: bannerCacheTags,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
const allBanners = [];
|
|
22
|
+
const errors = [];
|
|
23
|
+
const pageSize = 100;
|
|
24
|
+
let skip = 0;
|
|
25
|
+
let hasMore = true;
|
|
26
|
+
const fetchFn = async () => {
|
|
27
|
+
while (hasMore) {
|
|
28
|
+
try {
|
|
29
|
+
const page = Math.floor(skip / pageSize) + 1;
|
|
30
|
+
const operation = page > 1 ? `Reading all banners (page ${page})` : 'Reading all banners';
|
|
31
|
+
const bannerResponse = await withCmsQueryContext({ operation }, () => client.getEntries({
|
|
32
|
+
content_type: 'banner',
|
|
33
|
+
include: 2,
|
|
34
|
+
locale: options?.locale,
|
|
35
|
+
limit: pageSize,
|
|
36
|
+
skip,
|
|
37
|
+
}, requestOptions));
|
|
38
|
+
if (!bannerResponse.items.length) {
|
|
39
|
+
hasMore = false;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
const includes = convertAllIncludes(bannerResponse);
|
|
43
|
+
const assets = convertAllAssets(bannerResponse, context);
|
|
44
|
+
const rawAssets = convertAllRawAssets(bannerResponse);
|
|
45
|
+
const externalVideoEmbeds = await enrichAllAssets(assets, includes, options);
|
|
46
|
+
const fullContext = createFullConverterContext(context, includes, assets, rawAssets, externalVideoEmbeds, options);
|
|
47
|
+
for (const bannerEntry of bannerResponse.items) {
|
|
48
|
+
if (!bannerEntry.fields)
|
|
49
|
+
continue;
|
|
50
|
+
try {
|
|
51
|
+
const converted = context.bannerResolver(fullContext, bannerEntry);
|
|
52
|
+
allBanners.push(converted);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
const entryId = bannerEntry.sys.id;
|
|
56
|
+
const entryType = bannerEntry.sys.contentType?.sys?.id;
|
|
57
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown conversion error';
|
|
58
|
+
errors.push({
|
|
59
|
+
entryId,
|
|
60
|
+
entryType,
|
|
61
|
+
message: errorMessage,
|
|
62
|
+
error,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Log errors in production
|
|
67
|
+
if (fullContext.errors.length > 0 &&
|
|
68
|
+
typeof process !== 'undefined' &&
|
|
69
|
+
process.env?.NODE_ENV === 'production') {
|
|
70
|
+
console.error(`CMS conversion errors for banner:`, {
|
|
71
|
+
errors: fullContext.errors,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
const entryId = 'unknown';
|
|
77
|
+
const entryType = 'banner';
|
|
78
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown conversion error';
|
|
79
|
+
const cmsError = {
|
|
80
|
+
entryId,
|
|
81
|
+
entryType,
|
|
82
|
+
message: errorMessage,
|
|
83
|
+
error,
|
|
84
|
+
};
|
|
85
|
+
errors.push(cmsError);
|
|
86
|
+
}
|
|
87
|
+
skip += pageSize;
|
|
88
|
+
}
|
|
89
|
+
return { data: allBanners, errors };
|
|
90
|
+
};
|
|
91
|
+
if (options.retry) {
|
|
92
|
+
return await withRetry(fetchFn, options.retry);
|
|
93
|
+
}
|
|
94
|
+
return await fetchFn();
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/api/banner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { BaseConverterContext } from '../converters/helpers';
|
|
2
|
+
import type { ContentfulConfig, FetchOptions } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Entry in the breadcrumb lookup map.
|
|
5
|
+
* Maps a normalized path (e.g. "/locations/new-york/") to title and optional override.
|
|
6
|
+
*/
|
|
7
|
+
export interface BreadcrumbLookupEntry {
|
|
8
|
+
title: string;
|
|
9
|
+
breadcrumbLabel?: string | null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Map of normalized path (href with trailing slash) to breadcrumb label info.
|
|
13
|
+
* Used to resolve breadcrumb segment labels from URL paths.
|
|
14
|
+
*/
|
|
15
|
+
export type BreadcrumbLookup = Map<string, BreadcrumbLookupEntry>;
|
|
16
|
+
/**
|
|
17
|
+
* Fetches all link data and builds a breadcrumb lookup map.
|
|
18
|
+
* Keys are normalized paths (e.g. "/locations/new-york/"); values are title and optional breadcrumb override.
|
|
19
|
+
*
|
|
20
|
+
* Uses force-cache with revalidate 3600. Cache invalidation is driven by the
|
|
21
|
+
* underlying link fetches (page, article, articleType, tag, tagType, person tags).
|
|
22
|
+
* Safe to call on every request; responses are cached.
|
|
23
|
+
*
|
|
24
|
+
* @param context - Converter context with urlCalculators
|
|
25
|
+
* @param config - Contentful configuration
|
|
26
|
+
* @param options - Fetch options (preview, cache, etc.)
|
|
27
|
+
* @returns Promise resolving to BreadcrumbLookup map
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* const lookup = await getBreadcrumbLookup(context, config, {
|
|
32
|
+
* preview: false,
|
|
33
|
+
* next: { revalidate: 3600 }
|
|
34
|
+
* });
|
|
35
|
+
* const label = lookup.get('/locations/new-york/')?.breadcrumbLabel
|
|
36
|
+
* ?? lookup.get('/locations/new-york/')?.title;
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function getBreadcrumbLookup(context: BaseConverterContext, config: ContentfulConfig, options: FetchOptions): Promise<BreadcrumbLookup>;
|
|
40
|
+
//# sourceMappingURL=breadcrumb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../src/api/breadcrumb.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAU/D;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAoBlE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAuB3B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { buildListingLinkCacheOptions } from '../navigation/cacheOptions.js';
|
|
2
|
+
import { contentfulAllArticleLinks, contentfulAllArticleTypeLinks, contentfulAllPageLinks, contentfulAllPersonLinks, contentfulAllTagLinks, contentfulAllTagTypeLinks, } from './links.js';
|
|
3
|
+
function normalizeHref(href) {
|
|
4
|
+
if (!href)
|
|
5
|
+
return '/';
|
|
6
|
+
return href.startsWith('/') ? (href.endsWith('/') ? href : `${href}/`) : `/${href}/`;
|
|
7
|
+
}
|
|
8
|
+
function addLinksToLookup(lookup, links) {
|
|
9
|
+
for (const link of links) {
|
|
10
|
+
const normalized = normalizeHref(link.href);
|
|
11
|
+
lookup.set(normalized, {
|
|
12
|
+
title: link.title,
|
|
13
|
+
breadcrumbLabel: link.breadcrumbTitle ?? undefined,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Fetches all link data and builds a breadcrumb lookup map.
|
|
19
|
+
* Keys are normalized paths (e.g. "/locations/new-york/"); values are title and optional breadcrumb override.
|
|
20
|
+
*
|
|
21
|
+
* Uses force-cache with revalidate 3600. Cache invalidation is driven by the
|
|
22
|
+
* underlying link fetches (page, article, articleType, tag, tagType, person tags).
|
|
23
|
+
* Safe to call on every request; responses are cached.
|
|
24
|
+
*
|
|
25
|
+
* @param context - Converter context with urlCalculators
|
|
26
|
+
* @param config - Contentful configuration
|
|
27
|
+
* @param options - Fetch options (preview, cache, etc.)
|
|
28
|
+
* @returns Promise resolving to BreadcrumbLookup map
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const lookup = await getBreadcrumbLookup(context, config, {
|
|
33
|
+
* preview: false,
|
|
34
|
+
* next: { revalidate: 3600 }
|
|
35
|
+
* });
|
|
36
|
+
* const label = lookup.get('/locations/new-york/')?.breadcrumbLabel
|
|
37
|
+
* ?? lookup.get('/locations/new-york/')?.title;
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export async function getBreadcrumbLookup(context, config, options) {
|
|
41
|
+
const cacheOptions = buildListingLinkCacheOptions(options);
|
|
42
|
+
// Breadcrumbs need routable entry links — not customType or link wrappers.
|
|
43
|
+
const [pages, articles, articleTypes, tags, tagTypes, persons] = await Promise.all([
|
|
44
|
+
contentfulAllPageLinks(context, config, cacheOptions),
|
|
45
|
+
contentfulAllArticleLinks(context, config, cacheOptions),
|
|
46
|
+
contentfulAllArticleTypeLinks(context, config, cacheOptions),
|
|
47
|
+
contentfulAllTagLinks(context, config, cacheOptions),
|
|
48
|
+
contentfulAllTagTypeLinks(context, config, cacheOptions),
|
|
49
|
+
contentfulAllPersonLinks(context, config, cacheOptions),
|
|
50
|
+
]);
|
|
51
|
+
const lookup = new Map();
|
|
52
|
+
addLinksToLookup(lookup, pages.data);
|
|
53
|
+
addLinksToLookup(lookup, articles.data);
|
|
54
|
+
addLinksToLookup(lookup, articleTypes.data);
|
|
55
|
+
addLinksToLookup(lookup, tags.data);
|
|
56
|
+
addLinksToLookup(lookup, tagTypes.data);
|
|
57
|
+
addLinksToLookup(lookup, persons.data);
|
|
58
|
+
return lookup;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=breadcrumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumb.js","sourceRoot":"","sources":["../../src/api/breadcrumb.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AAiBjB,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC;IACtB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;AACvF,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAwB,EACxB,KAA4D;IAE5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,SAAS;SACnD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA6B,EAC7B,MAAwB,EACxB,OAAqB;IAErB,MAAM,YAAY,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAE3D,2EAA2E;IAC3E,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjF,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;QACrD,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;QACxD,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;QAC5D,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;QACpD,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;QACxD,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;KACxD,CAAC,CAAC;IAEH,MAAM,MAAM,GAAqB,IAAI,GAAG,EAAE,CAAC;IAE3C,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5C,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|