@se-studio/contentful-rest-api 1.0.46 → 1.0.48
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 +424 -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 +134 -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 +55 -0
- package/dist/api/asset.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 +62 -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/helpers.d.ts +73 -0
- package/dist/api/helpers.d.ts.map +1 -0
- package/dist/api/helpers.js +296 -0
- package/dist/api/helpers.js.map +1 -0
- package/dist/api/index.d.ts +22 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +28 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/links.d.ts +109 -0
- package/dist/api/links.d.ts.map +1 -0
- package/dist/api/links.js +199 -0
- package/dist/api/links.js.map +1 -0
- package/dist/api/page.d.ts +33 -0
- package/dist/api/page.d.ts.map +1 -0
- package/dist/api/page.js +40 -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 +134 -0
- package/dist/api/person.js.map +1 -0
- package/dist/api/preview.d.ts +55 -0
- package/dist/api/preview.d.ts.map +1 -0
- package/dist/api/preview.js +160 -0
- package/dist/api/preview.js.map +1 -0
- package/dist/api/related-articles.d.ts +22 -0
- package/dist/api/related-articles.d.ts.map +1 -0
- package/dist/api/related-articles.js +82 -0
- package/dist/api/related-articles.js.map +1 -0
- package/dist/api/server-asset.d.ts +40 -0
- package/dist/api/server-asset.d.ts.map +1 -0
- package/dist/api/server-asset.js +65 -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 +199 -0
- package/dist/api/sitemap.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 +131 -0
- package/dist/api/tag.js.map +1 -0
- package/dist/api/template.d.ts +49 -0
- package/dist/api/template.d.ts.map +1 -0
- package/dist/api/template.js +88 -0
- package/dist/api/template.js.map +1 -0
- package/dist/api/types.d.ts +98 -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 +24 -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 +179 -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 +156 -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 +76 -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 +126 -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/baseExternalComponent.d.ts +66 -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 +85 -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/baseLink.d.ts +90 -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 +92 -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 +36 -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 +96 -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 +120 -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/basePageTest.d.ts +66 -0
- package/dist/baseTypes/basePageTest.d.ts.map +1 -0
- package/dist/baseTypes/basePageTest.js +2 -0
- package/dist/baseTypes/basePageTest.js.map +1 -0
- package/dist/baseTypes/basePageVariant.d.ts +123 -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 +111 -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/baseSchema.d.ts +18 -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 +30 -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 +108 -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 +11 -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 +55 -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 +143 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +268 -0
- package/dist/client.js.map +1 -0
- package/dist/converters/article.d.ts +42 -0
- package/dist/converters/article.d.ts.map +1 -0
- package/dist/converters/article.js +220 -0
- package/dist/converters/article.js.map +1 -0
- package/dist/converters/asset.d.ts +22 -0
- package/dist/converters/asset.d.ts.map +1 -0
- package/dist/converters/asset.js +282 -0
- package/dist/converters/asset.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 +50 -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 +71 -0
- package/dist/converters/customType.js.map +1 -0
- package/dist/converters/externalComponent.d.ts +22 -0
- package/dist/converters/externalComponent.d.ts.map +1 -0
- package/dist/converters/externalComponent.js +34 -0
- package/dist/converters/externalComponent.js.map +1 -0
- package/dist/converters/helpers.d.ts +116 -0
- package/dist/converters/helpers.d.ts.map +1 -0
- package/dist/converters/helpers.js +128 -0
- package/dist/converters/helpers.js.map +1 -0
- package/dist/converters/iconCollector.d.ts +65 -0
- package/dist/converters/iconCollector.d.ts.map +1 -0
- package/dist/converters/iconCollector.js +282 -0
- package/dist/converters/iconCollector.js.map +1 -0
- package/dist/converters/index.d.ts +18 -0
- package/dist/converters/index.d.ts.map +1 -0
- package/dist/converters/index.js +18 -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 +96 -0
- package/dist/converters/link.js.map +1 -0
- package/dist/converters/navigationItem.d.ts +11 -0
- package/dist/converters/navigationItem.d.ts.map +1 -0
- package/dist/converters/navigationItem.js +73 -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 +121 -0
- package/dist/converters/page.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 +109 -0
- package/dist/converters/person.js.map +1 -0
- package/dist/converters/resolver.d.ts +29 -0
- package/dist/converters/resolver.d.ts.map +1 -0
- package/dist/converters/resolver.js +317 -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 +18 -0
- package/dist/converters/schema.js.map +1 -0
- package/dist/converters/svgProcessor.d.ts +23 -0
- package/dist/converters/svgProcessor.d.ts.map +1 -0
- package/dist/converters/svgProcessor.js +47 -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 +98 -0
- package/dist/converters/tag.js.map +1 -0
- package/dist/converters/template.d.ts +26 -0
- package/dist/converters/template.d.ts.map +1 -0
- package/dist/converters/template.js +44 -0
- package/dist/converters/template.js.map +1 -0
- package/dist/index.d.ts +28 -721
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -3634
- package/dist/index.js.map +1 -1
- package/dist/revalidation/handlers.d.ts +52 -0
- package/dist/revalidation/handlers.d.ts.map +1 -0
- package/dist/revalidation/handlers.js +130 -0
- package/dist/revalidation/handlers.js.map +1 -0
- package/dist/revalidation/index.d.ts +3 -0
- package/dist/revalidation/index.d.ts.map +1 -0
- package/dist/revalidation/index.js +4 -0
- package/dist/revalidation/index.js.map +1 -0
- package/dist/revalidation/nextjs-route.d.ts +31 -0
- package/dist/revalidation/nextjs-route.d.ts.map +1 -0
- package/dist/revalidation/nextjs-route.js +34 -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 +97 -0
- package/dist/revalidation/route.js.map +1 -0
- package/dist/revalidation/server-utils.d.ts +22 -0
- package/dist/revalidation/server-utils.d.ts.map +1 -0
- package/dist/revalidation/server-utils.js +41 -0
- package/dist/revalidation/server-utils.js.map +1 -0
- package/dist/revalidation/tags.d.ts +81 -0
- package/dist/revalidation/tags.d.ts.map +1 -0
- package/dist/revalidation/tags.js +117 -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 +51 -0
- package/dist/revalidation/utils.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/types.d.ts +67 -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 +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json-utils.d.ts +17 -0
- package/dist/utils/json-utils.d.ts.map +1 -0
- package/dist/utils/json-utils.js +43 -0
- package/dist/utils/json-utils.js.map +1 -0
- package/dist/utils/retry.d.ts +112 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +221 -0
- package/dist/utils/retry.js.map +1 -0
- package/package.json +12 -6
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache tag constants and utilities for Contentful revalidation
|
|
3
|
+
*/
|
|
4
|
+
// Collection-level cache tags (used for sitemaps and lists)
|
|
5
|
+
export const PageTag = 'page';
|
|
6
|
+
export const ArticleTag = 'article';
|
|
7
|
+
export const ArticleTypeTag = 'articleType';
|
|
8
|
+
export const ArticleTypeIndexTag = 'articleTypeIndex';
|
|
9
|
+
export const CustomTypeTag = 'customType';
|
|
10
|
+
export const TagTag = 'tag';
|
|
11
|
+
export const PersonTag = 'person';
|
|
12
|
+
export const AssetTag = 'asset';
|
|
13
|
+
export const TemplateTag = 'template';
|
|
14
|
+
export const NavigationTag = 'navigation';
|
|
15
|
+
export const BannerTag = 'banner';
|
|
16
|
+
export const LocationTag = 'location';
|
|
17
|
+
// Draft mode tag - used when DRAFT_ONLY=true
|
|
18
|
+
export const GlobalTag = 'global';
|
|
19
|
+
/**
|
|
20
|
+
* Individual page cache tag generator
|
|
21
|
+
* @param slug - Page slug
|
|
22
|
+
* @returns Cache tag for the page
|
|
23
|
+
*/
|
|
24
|
+
export function pageTag(slug) {
|
|
25
|
+
return `${PageTag}#${slug}`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Individual article cache tag generator
|
|
29
|
+
* @param slug - Article slug
|
|
30
|
+
* @returns Cache tag for the article
|
|
31
|
+
*/
|
|
32
|
+
export function articleTag(slug) {
|
|
33
|
+
return `${ArticleTag}#${slug}`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Individual article type cache tag generator
|
|
37
|
+
* @param slug - Article type slug
|
|
38
|
+
* @returns Cache tag for the article type
|
|
39
|
+
*/
|
|
40
|
+
export function articleTypeTag(slug) {
|
|
41
|
+
return `${ArticleTypeTag}#${slug}`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Individual article type index page cache tag generator
|
|
45
|
+
* @param slug - Article type index page slug
|
|
46
|
+
* @returns Cache tag for the article type index page
|
|
47
|
+
*/
|
|
48
|
+
export function articleTypeIndexTag(slug) {
|
|
49
|
+
return `${ArticleTypeTag}#index#${slug}`;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Individual custom type cache tag generator
|
|
53
|
+
* @param slug - Custom type slug
|
|
54
|
+
* @returns Cache tag for the custom type
|
|
55
|
+
*/
|
|
56
|
+
export function customTypeTag(slug) {
|
|
57
|
+
return `${CustomTypeTag}#${slug}`;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Individual tag cache tag generator
|
|
61
|
+
* @param slug - Tag slug
|
|
62
|
+
* @returns Cache tag for the tag
|
|
63
|
+
*/
|
|
64
|
+
export function tagTag(slug) {
|
|
65
|
+
return `${TagTag}#${slug}`;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Individual person cache tag generator
|
|
69
|
+
* @param slug - Person slug
|
|
70
|
+
* @returns Cache tag for the person
|
|
71
|
+
*/
|
|
72
|
+
export function personTag(slug) {
|
|
73
|
+
return `${PersonTag}#${slug}`;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Individual asset cache tag generator
|
|
77
|
+
* @param assetId - Asset ID
|
|
78
|
+
* @returns Cache tag for the asset
|
|
79
|
+
*/
|
|
80
|
+
export function assetTag(assetId) {
|
|
81
|
+
return `${AssetTag}#${assetId}`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Individual template cache tag generator
|
|
85
|
+
* @param label - Template cmsLabel
|
|
86
|
+
* @returns Cache tag for the template
|
|
87
|
+
*/
|
|
88
|
+
export function templateTag(label) {
|
|
89
|
+
return `${TemplateTag}#${label}`;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Individual location cache tag generator
|
|
93
|
+
* @param slug - Location slug
|
|
94
|
+
* @returns Cache tag for the location
|
|
95
|
+
*/
|
|
96
|
+
export function locationTag(slug) {
|
|
97
|
+
return `${LocationTag}#${slug}`;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* All collection-level cache tags for global revalidation
|
|
101
|
+
*/
|
|
102
|
+
export const AllTags = [
|
|
103
|
+
PageTag,
|
|
104
|
+
ArticleTag,
|
|
105
|
+
ArticleTypeTag,
|
|
106
|
+
ArticleTypeIndexTag,
|
|
107
|
+
CustomTypeTag,
|
|
108
|
+
TagTag,
|
|
109
|
+
PersonTag,
|
|
110
|
+
AssetTag,
|
|
111
|
+
TemplateTag,
|
|
112
|
+
NavigationTag,
|
|
113
|
+
BannerTag,
|
|
114
|
+
LocationTag,
|
|
115
|
+
'hubspot-forms', // Additional tag from the old implementation
|
|
116
|
+
];
|
|
117
|
+
//# sourceMappingURL=tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/revalidation/tags.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC;AAC9B,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAC5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAC1C,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC;AAC5B,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAClC,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC;AAChC,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;AACtC,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;AAEtC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAElC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,GAAG,cAAc,IAAI,IAAI,EAAE,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,GAAG,cAAc,UAAU,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,GAAG,aAAa,IAAI,IAAI,EAAE,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,OAAO,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,GAAG,WAAW,IAAI,KAAK,EAAE,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,OAAO;IACP,UAAU;IACV,cAAc;IACd,mBAAmB;IACnB,aAAa;IACb,MAAM;IACN,SAAS;IACT,QAAQ;IACR,WAAW;IACX,aAAa;IACb,SAAS;IACT,WAAW;IACX,eAAe,EAAE,6CAA6C;CAC/D,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get cache tags for preview mode
|
|
3
|
+
* @returns Array containing only the global tag
|
|
4
|
+
*/
|
|
5
|
+
export declare function getCacheTagsForPreview(): string[];
|
|
6
|
+
/**
|
|
7
|
+
* Get cache tags for production mode based on content type and slug
|
|
8
|
+
* @param contentType - The content type ('page', 'article', 'articleType', etc.)
|
|
9
|
+
* @param slug - The slug/identifier for the content
|
|
10
|
+
* @returns Array of cache tags including individual and collection tags
|
|
11
|
+
*/
|
|
12
|
+
export declare function getCacheTagsForProduction(contentType: string, slug?: string): string[];
|
|
13
|
+
/**
|
|
14
|
+
* Get cache tags based on preview mode
|
|
15
|
+
* @param contentType - The content type
|
|
16
|
+
* @param slug - The slug/identifier for the content
|
|
17
|
+
* @param preview - Whether to use preview mode
|
|
18
|
+
* @returns Array of cache tags appropriate for the mode
|
|
19
|
+
*/
|
|
20
|
+
export declare function getCacheTags(contentType: string, slug?: string, preview?: boolean): string[];
|
|
21
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/revalidation/utils.ts"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBtF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,GAAE,OAAe,GACvB,MAAM,EAAE,CAKV"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ArticleTag, ArticleTypeTag, AssetTag, articleTag, articleTypeTag, assetTag, CustomTypeTag, customTypeTag, GlobalTag, LocationTag, locationTag, PageTag, PersonTag, pageTag, personTag, TagTag, tagTag, } from './tags';
|
|
2
|
+
/**
|
|
3
|
+
* Get cache tags for preview mode
|
|
4
|
+
* @returns Array containing only the global tag
|
|
5
|
+
*/
|
|
6
|
+
export function getCacheTagsForPreview() {
|
|
7
|
+
return [GlobalTag];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Get cache tags for production mode based on content type and slug
|
|
11
|
+
* @param contentType - The content type ('page', 'article', 'articleType', etc.)
|
|
12
|
+
* @param slug - The slug/identifier for the content
|
|
13
|
+
* @returns Array of cache tags including individual and collection tags
|
|
14
|
+
*/
|
|
15
|
+
export function getCacheTagsForProduction(contentType, slug) {
|
|
16
|
+
switch (contentType) {
|
|
17
|
+
case 'page':
|
|
18
|
+
return slug ? [pageTag(slug), PageTag] : [PageTag];
|
|
19
|
+
case 'article':
|
|
20
|
+
return slug ? [articleTag(slug), ArticleTag] : [ArticleTag];
|
|
21
|
+
case 'articleType':
|
|
22
|
+
return slug ? [articleTypeTag(slug), ArticleTypeTag] : [ArticleTypeTag];
|
|
23
|
+
case 'customType':
|
|
24
|
+
return slug ? [customTypeTag(slug), CustomTypeTag] : [CustomTypeTag];
|
|
25
|
+
case 'tag':
|
|
26
|
+
return slug ? [tagTag(slug), TagTag] : [TagTag];
|
|
27
|
+
case 'person':
|
|
28
|
+
return slug ? [personTag(slug), PersonTag] : [PersonTag];
|
|
29
|
+
case 'asset':
|
|
30
|
+
return slug ? [assetTag(slug), AssetTag] : [AssetTag];
|
|
31
|
+
case 'location':
|
|
32
|
+
return slug ? [locationTag(slug), LocationTag] : [LocationTag];
|
|
33
|
+
default:
|
|
34
|
+
// For content types without individual tags, just return the collection tag
|
|
35
|
+
return [contentType];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get cache tags based on preview mode
|
|
40
|
+
* @param contentType - The content type
|
|
41
|
+
* @param slug - The slug/identifier for the content
|
|
42
|
+
* @param preview - Whether to use preview mode
|
|
43
|
+
* @returns Array of cache tags appropriate for the mode
|
|
44
|
+
*/
|
|
45
|
+
export function getCacheTags(contentType, slug, preview = false) {
|
|
46
|
+
if (preview) {
|
|
47
|
+
return getCacheTagsForPreview();
|
|
48
|
+
}
|
|
49
|
+
return getCacheTagsForProduction(contentType, slug);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/revalidation/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,QAAQ,EACR,UAAU,EACV,cAAc,EACd,QAAQ,EACR,aAAa,EACb,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,OAAO,EACP,SAAS,EACT,OAAO,EACP,SAAS,EACT,MAAM,EACN,MAAM,GACP,MAAM,QAAQ,CAAC;AAEhB;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,WAAmB,EAAE,IAAa;IAC1E,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACrD,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC9D,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAC1E,KAAK,YAAY;YACf,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACvE,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClD,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3D,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxD,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACjE;YACE,4EAA4E;YAC5E,OAAO,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,WAAmB,EACnB,IAAa,EACb,UAAmB,KAAK;IAExB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,sBAAsB,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,yBAAyB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import 'server-only';
|
|
2
|
+
export { createDownloadHandler, type DownloadHandlerConfig, type DownloadRouteParams, } from './api/server-asset';
|
|
3
|
+
export { type AssetData, type BaseData, contentTypeHandlers, type IContentTypeHandler, revalidateAsset, revalidateDeletedAsset, revalidateDeletedEntry, revalidateEntry, } from './revalidation/handlers';
|
|
4
|
+
export { createRevalidationHandler, type RevalidationConfig, } from './revalidation/nextjs-route';
|
|
5
|
+
export { handleRevalidation } from './revalidation/route';
|
|
6
|
+
export { revalidateSingleTag, revalidateTags } from './revalidation/server-utils';
|
|
7
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,yBAAyB,EACzB,KAAK,kBAAkB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import 'server-only';
|
|
2
|
+
// Download handler
|
|
3
|
+
export { createDownloadHandler, } from './api/server-asset';
|
|
4
|
+
export { contentTypeHandlers, revalidateAsset, revalidateDeletedAsset, revalidateDeletedEntry, revalidateEntry, } from './revalidation/handlers';
|
|
5
|
+
// Revalidation handlers and routes
|
|
6
|
+
export { createRevalidationHandler, } from './revalidation/nextjs-route';
|
|
7
|
+
export { handleRevalidation } from './revalidation/route';
|
|
8
|
+
// Revalidation utilities
|
|
9
|
+
export { revalidateSingleTag, revalidateTags } from './revalidation/server-utils';
|
|
10
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,mBAAmB;AACnB,OAAO,EACL,qBAAqB,GAGtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,mBAAmB,EAEnB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,mCAAmC;AACnC,OAAO,EACL,yBAAyB,GAE1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,yBAAyB;AACzB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options for creating a Contentful client
|
|
3
|
+
*/
|
|
4
|
+
export interface ContentfulConfig {
|
|
5
|
+
/** Contentful space ID */
|
|
6
|
+
spaceId: string;
|
|
7
|
+
/** Access token for the Contentful API (CDA or CPA token) */
|
|
8
|
+
accessToken: string;
|
|
9
|
+
/** Environment name (defaults to 'master') */
|
|
10
|
+
environment?: string;
|
|
11
|
+
/** Host override (useful for proxies or custom endpoints) */
|
|
12
|
+
host?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Retry configuration for failed requests
|
|
16
|
+
*/
|
|
17
|
+
export interface RetryConfig {
|
|
18
|
+
/** Maximum number of retry attempts */
|
|
19
|
+
maxRetries?: number;
|
|
20
|
+
/** Initial delay in milliseconds */
|
|
21
|
+
initialDelay?: number;
|
|
22
|
+
/** Maximum delay in milliseconds */
|
|
23
|
+
maxDelay?: number;
|
|
24
|
+
/** Backoff multiplier */
|
|
25
|
+
backoffMultiplier?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Options for fetching content from Contentful
|
|
29
|
+
*/
|
|
30
|
+
export interface FetchOptions {
|
|
31
|
+
/** Locale to fetch content in */
|
|
32
|
+
locale?: string;
|
|
33
|
+
/** Use preview API instead of delivery API */
|
|
34
|
+
preview: boolean;
|
|
35
|
+
/** Include depth for linked entries */
|
|
36
|
+
include?: number;
|
|
37
|
+
cache?: 'force-cache' | 'no-store';
|
|
38
|
+
next?: {
|
|
39
|
+
revalidate?: number | false;
|
|
40
|
+
tags?: string[];
|
|
41
|
+
};
|
|
42
|
+
/** Retry configuration */
|
|
43
|
+
retry?: RetryConfig;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Error information for failed content conversion
|
|
47
|
+
*/
|
|
48
|
+
export interface CmsError {
|
|
49
|
+
/** ID of the entry that failed to convert */
|
|
50
|
+
entryId: string;
|
|
51
|
+
/** Content type of the entry that failed */
|
|
52
|
+
entryType?: string;
|
|
53
|
+
/** Human-readable error message */
|
|
54
|
+
message: string;
|
|
55
|
+
/** Original error object for debugging */
|
|
56
|
+
error?: unknown;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Response wrapper for CMS operations that may include partial errors
|
|
60
|
+
*/
|
|
61
|
+
export interface CmsResponse<T> {
|
|
62
|
+
/** The successful data */
|
|
63
|
+
data: T;
|
|
64
|
+
/** Any errors that occurred during processing */
|
|
65
|
+
errors: CmsError[];
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAAC;IACnC,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,0BAA0B;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,EAAE,CAAC,CAAC;IACR,iDAAiD;IACjD,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrayUtils.d.ts","sourceRoot":"","sources":["../../src/utils/arrayUtils.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAGlF;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,4BAK3D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function notEmpty(value) {
|
|
2
|
+
if (value === null || value === undefined)
|
|
3
|
+
return false;
|
|
4
|
+
return true;
|
|
5
|
+
}
|
|
6
|
+
export function arrayOrUndefined(array) {
|
|
7
|
+
if (array && array.length > 0) {
|
|
8
|
+
return array;
|
|
9
|
+
}
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=arrayUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrayUtils.js","sourceRoot":"","sources":["../../src/utils/arrayUtils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAS,KAAgC;IAC/D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAI,KAAwB;IAC1D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates if a value can be converted to a valid Date object
|
|
3
|
+
*/
|
|
4
|
+
export declare function isValidDate(date: unknown): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Safely creates a Date object, returning null if invalid
|
|
7
|
+
*/
|
|
8
|
+
export declare function safeDate(date: unknown): Date | null;
|
|
9
|
+
//# sourceMappingURL=dateUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateUtils.d.ts","sourceRoot":"","sources":["../../src/utils/dateUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAWlD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAUnD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates if a value can be converted to a valid Date object
|
|
3
|
+
*/
|
|
4
|
+
export function isValidDate(date) {
|
|
5
|
+
if (date instanceof Date) {
|
|
6
|
+
return !Number.isNaN(date.getTime());
|
|
7
|
+
}
|
|
8
|
+
if (typeof date === 'string' || typeof date === 'number') {
|
|
9
|
+
const parsed = new Date(date);
|
|
10
|
+
return !Number.isNaN(parsed.getTime()) && parsed.getTime() > 0;
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Safely creates a Date object, returning null if invalid
|
|
16
|
+
*/
|
|
17
|
+
export function safeDate(date) {
|
|
18
|
+
if (!isValidDate(date)) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
if (date instanceof Date) {
|
|
22
|
+
return date;
|
|
23
|
+
}
|
|
24
|
+
return new Date(date);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=dateUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateUtils.js","sourceRoot":"","sources":["../../src/utils/dateUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,IAAI,CAAC,IAAuB,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom error classes for Contentful API errors
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Base error class for all Contentful-related errors
|
|
6
|
+
*/
|
|
7
|
+
export declare class ContentfulError extends Error {
|
|
8
|
+
readonly statusCode?: number | undefined;
|
|
9
|
+
readonly details?: unknown | undefined;
|
|
10
|
+
constructor(message: string, statusCode?: number | undefined, details?: unknown | undefined);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Error thrown when rate limit is exceeded
|
|
14
|
+
*/
|
|
15
|
+
export declare class RateLimitError extends ContentfulError {
|
|
16
|
+
readonly retryAfter?: number | undefined;
|
|
17
|
+
constructor(message: string, retryAfter?: number | undefined, details?: unknown);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Error thrown when entry is not found
|
|
21
|
+
*/
|
|
22
|
+
export declare class EntryNotFoundError extends ContentfulError {
|
|
23
|
+
readonly entryId: string;
|
|
24
|
+
readonly contentType?: string | undefined;
|
|
25
|
+
constructor(entryId: string, contentType?: string | undefined);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Error thrown when authentication fails
|
|
29
|
+
*/
|
|
30
|
+
export declare class AuthenticationError extends ContentfulError {
|
|
31
|
+
constructor(message?: string);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Error thrown when validation fails
|
|
35
|
+
*/
|
|
36
|
+
export declare class ValidationError extends ContentfulError {
|
|
37
|
+
readonly validationErrors?: unknown | undefined;
|
|
38
|
+
constructor(message: string, validationErrors?: unknown | undefined);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Checks if an error is a Contentful error
|
|
42
|
+
*/
|
|
43
|
+
export declare function isContentfulError(error: unknown): error is ContentfulError;
|
|
44
|
+
/**
|
|
45
|
+
* Checks if an error is a rate limit error
|
|
46
|
+
*/
|
|
47
|
+
export declare function isRateLimitError(error: unknown): error is RateLimitError;
|
|
48
|
+
/**
|
|
49
|
+
* Checks if an error is retryable
|
|
50
|
+
*/
|
|
51
|
+
export declare function isRetryableError(error: unknown): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Extracts retry-after header value from error
|
|
54
|
+
*/
|
|
55
|
+
export declare function getRetryAfter(error: unknown): number | undefined;
|
|
56
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,UAAU,CAAC,EAAE,MAAM;aACnB,OAAO,CAAC,EAAE,OAAO;gBAFjC,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,OAAO,CAAC,EAAE,OAAO,YAAA;CAMpC;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,eAAe;aAG/B,UAAU,CAAC,EAAE,MAAM;gBADnC,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA,EACnC,OAAO,CAAC,EAAE,OAAO;CAMpB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,eAAe;aAEnC,OAAO,EAAE,MAAM;aACf,WAAW,CAAC,EAAE,MAAM;gBADpB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,YAAA;CAMvC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,eAAe;gBAC1C,OAAO,SAA0B;CAK9C;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,eAAe;aAGhC,gBAAgB,CAAC,EAAE,OAAO;gBAD1C,OAAO,EAAE,MAAM,EACC,gBAAgB,CAAC,EAAE,OAAO,YAAA;CAM7C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAWxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKhE"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom error classes for Contentful API errors
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Base error class for all Contentful-related errors
|
|
6
|
+
*/
|
|
7
|
+
export class ContentfulError extends Error {
|
|
8
|
+
statusCode;
|
|
9
|
+
details;
|
|
10
|
+
constructor(message, statusCode, details) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.statusCode = statusCode;
|
|
13
|
+
this.details = details;
|
|
14
|
+
this.name = 'ContentfulError';
|
|
15
|
+
Object.setPrototypeOf(this, ContentfulError.prototype);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Error thrown when rate limit is exceeded
|
|
20
|
+
*/
|
|
21
|
+
export class RateLimitError extends ContentfulError {
|
|
22
|
+
retryAfter;
|
|
23
|
+
constructor(message, retryAfter, details) {
|
|
24
|
+
super(message, 429, details);
|
|
25
|
+
this.retryAfter = retryAfter;
|
|
26
|
+
this.name = 'RateLimitError';
|
|
27
|
+
Object.setPrototypeOf(this, RateLimitError.prototype);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Error thrown when entry is not found
|
|
32
|
+
*/
|
|
33
|
+
export class EntryNotFoundError extends ContentfulError {
|
|
34
|
+
entryId;
|
|
35
|
+
contentType;
|
|
36
|
+
constructor(entryId, contentType) {
|
|
37
|
+
super(`Entry not found: ${entryId}${contentType ? ` (${contentType})` : ''}`, 404);
|
|
38
|
+
this.entryId = entryId;
|
|
39
|
+
this.contentType = contentType;
|
|
40
|
+
this.name = 'EntryNotFoundError';
|
|
41
|
+
Object.setPrototypeOf(this, EntryNotFoundError.prototype);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Error thrown when authentication fails
|
|
46
|
+
*/
|
|
47
|
+
export class AuthenticationError extends ContentfulError {
|
|
48
|
+
constructor(message = 'Authentication failed') {
|
|
49
|
+
super(message, 401);
|
|
50
|
+
this.name = 'AuthenticationError';
|
|
51
|
+
Object.setPrototypeOf(this, AuthenticationError.prototype);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Error thrown when validation fails
|
|
56
|
+
*/
|
|
57
|
+
export class ValidationError extends ContentfulError {
|
|
58
|
+
validationErrors;
|
|
59
|
+
constructor(message, validationErrors) {
|
|
60
|
+
super(message, 400, validationErrors);
|
|
61
|
+
this.validationErrors = validationErrors;
|
|
62
|
+
this.name = 'ValidationError';
|
|
63
|
+
Object.setPrototypeOf(this, ValidationError.prototype);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Checks if an error is a Contentful error
|
|
68
|
+
*/
|
|
69
|
+
export function isContentfulError(error) {
|
|
70
|
+
return error instanceof ContentfulError;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Checks if an error is a rate limit error
|
|
74
|
+
*/
|
|
75
|
+
export function isRateLimitError(error) {
|
|
76
|
+
return error instanceof RateLimitError;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Checks if an error is retryable
|
|
80
|
+
*/
|
|
81
|
+
export function isRetryableError(error) {
|
|
82
|
+
if (isRateLimitError(error)) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
if (isContentfulError(error)) {
|
|
86
|
+
// Retry on 5xx errors and rate limits
|
|
87
|
+
return error.statusCode !== undefined && (error.statusCode >= 500 || error.statusCode === 429);
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Extracts retry-after header value from error
|
|
93
|
+
*/
|
|
94
|
+
export function getRetryAfter(error) {
|
|
95
|
+
if (isRateLimitError(error)) {
|
|
96
|
+
return error.retryAfter;
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for error handling, retry logic, and rate limiting
|
|
3
|
+
*/
|
|
4
|
+
export { arrayOrUndefined, notEmpty } from './arrayUtils';
|
|
5
|
+
export { isValidDate, safeDate } from './dateUtils';
|
|
6
|
+
export { AuthenticationError, ContentfulError, EntryNotFoundError, getRetryAfter, isContentfulError, isRateLimitError, isRetryableError, RateLimitError, ValidationError, } from './errors';
|
|
7
|
+
export { CONTENTFUL_RATE_LIMITS, calculateBackoffDelay, deliveryRateLimiter, getRateLimiter, previewRateLimiter, RateLimiter, withRetry, } from './retry';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,SAAS,GACV,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for error handling, retry logic, and rate limiting
|
|
3
|
+
*/
|
|
4
|
+
export { arrayOrUndefined, notEmpty } from './arrayUtils';
|
|
5
|
+
export { isValidDate, safeDate } from './dateUtils';
|
|
6
|
+
export { AuthenticationError, ContentfulError, EntryNotFoundError, getRetryAfter, isContentfulError, isRateLimitError, isRetryableError, RateLimitError, ValidationError, } from './errors';
|
|
7
|
+
export { CONTENTFUL_RATE_LIMITS, calculateBackoffDelay, deliveryRateLimiter, getRateLimiter, previewRateLimiter, RateLimiter, withRetry, } from './retry';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,SAAS,GACV,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for JSON serialization with enhanced features
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Stringifies an object to JSON with sorted keys and circular reference handling
|
|
6
|
+
*
|
|
7
|
+
* @param obj - The object to stringify
|
|
8
|
+
* @param indent - Number of spaces for indentation (default: 2)
|
|
9
|
+
* @returns JSON string with alphabetically sorted keys
|
|
10
|
+
*
|
|
11
|
+
* Features:
|
|
12
|
+
* - Handles circular references by replacing them with "[Circular Reference]"
|
|
13
|
+
* - Sorts all object keys alphabetically for consistent output
|
|
14
|
+
* - Useful for comparing JSON outputs via string comparison
|
|
15
|
+
*/
|
|
16
|
+
export declare function stringifyWithSortedKeys(obj: unknown, indent?: number): string;
|
|
17
|
+
//# sourceMappingURL=json-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-utils.d.ts","sourceRoot":"","sources":["../../src/utils/json-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,SAAI,GAAG,MAAM,CAkCxE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for JSON serialization with enhanced features
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Stringifies an object to JSON with sorted keys and circular reference handling
|
|
6
|
+
*
|
|
7
|
+
* @param obj - The object to stringify
|
|
8
|
+
* @param indent - Number of spaces for indentation (default: 2)
|
|
9
|
+
* @returns JSON string with alphabetically sorted keys
|
|
10
|
+
*
|
|
11
|
+
* Features:
|
|
12
|
+
* - Handles circular references by replacing them with "[Circular Reference]"
|
|
13
|
+
* - Sorts all object keys alphabetically for consistent output
|
|
14
|
+
* - Useful for comparing JSON outputs via string comparison
|
|
15
|
+
*/
|
|
16
|
+
export function stringifyWithSortedKeys(obj, indent = 2) {
|
|
17
|
+
const seen = new WeakSet();
|
|
18
|
+
const replacer = (_key, value) => {
|
|
19
|
+
// Handle null and primitives
|
|
20
|
+
if (value === null || typeof value !== 'object') {
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
// Detect circular references
|
|
24
|
+
if (seen.has(value)) {
|
|
25
|
+
return '[Circular Reference]';
|
|
26
|
+
}
|
|
27
|
+
// Track this object
|
|
28
|
+
seen.add(value);
|
|
29
|
+
// Handle arrays - don't sort, just process elements
|
|
30
|
+
if (Array.isArray(value)) {
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
// Handle objects - sort keys alphabetically
|
|
34
|
+
const sorted = {};
|
|
35
|
+
const keys = Object.keys(value).sort();
|
|
36
|
+
for (const key of keys) {
|
|
37
|
+
sorted[key] = value[key];
|
|
38
|
+
}
|
|
39
|
+
return sorted;
|
|
40
|
+
};
|
|
41
|
+
return JSON.stringify(obj, replacer, indent);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=json-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-utils.js","sourceRoot":"","sources":["../../src/utils/json-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAY,EAAE,MAAM,GAAG,CAAC;IAC9D,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;IAE3B,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,KAAc,EAAW,EAAE;QACzD,6BAA6B;QAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,6BAA6B;QAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAe,CAAC,EAAE,CAAC;YAC9B,OAAO,sBAAsB,CAAC;QAChC,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,GAAG,CAAC,KAAe,CAAC,CAAC;QAE1B,oDAAoD;QACpD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,4CAA4C;QAC5C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,IAAI,EAAE,CAAC;QAElE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,GAAI,KAAiC,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC"}
|