@se-studio/contentful-rest-api 1.0.45 → 1.0.47
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 +416 -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 -718
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -3602
- 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,52 @@
|
|
|
1
|
+
export interface BaseData {
|
|
2
|
+
sys: {
|
|
3
|
+
id: string;
|
|
4
|
+
type: 'Entry' | 'DeletedEntry' | 'Asset' | 'DeletedAsset';
|
|
5
|
+
space: {
|
|
6
|
+
sys: {
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
environment: {
|
|
11
|
+
sys: {
|
|
12
|
+
id: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
contentType: {
|
|
16
|
+
sys: {
|
|
17
|
+
id: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
interface SlugData extends BaseData {
|
|
23
|
+
fields?: {
|
|
24
|
+
slug?: {
|
|
25
|
+
'en-US': string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface AssetData extends BaseData {
|
|
30
|
+
fields?: {
|
|
31
|
+
file?: {
|
|
32
|
+
[key: string]: {
|
|
33
|
+
url: string;
|
|
34
|
+
fileName: string;
|
|
35
|
+
contentType: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export interface IContentTypeHandler<TData extends BaseData, TExtracted> {
|
|
41
|
+
extract(data: TData): TExtracted | Promise<TExtracted>;
|
|
42
|
+
makeTags(extracted: TExtracted): (string | undefined)[] | undefined;
|
|
43
|
+
getGlobalTags(): string[];
|
|
44
|
+
rebuildSearch?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export declare const contentTypeHandlers: Record<string, IContentTypeHandler<SlugData, string | null | undefined>>;
|
|
47
|
+
export declare function revalidateAsset(content: AssetData, message: string, preview?: boolean): Promise<boolean>;
|
|
48
|
+
export declare function revalidateEntry(handler: IContentTypeHandler<SlugData, string | null | undefined>, content: BaseData, contentType: string, preview?: boolean): Promise<boolean>;
|
|
49
|
+
export declare function revalidateDeletedEntry(contentType: string, preview?: boolean): Promise<boolean>;
|
|
50
|
+
export declare function revalidateDeletedAsset(assetId: string, preview?: boolean): Promise<boolean>;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/revalidation/handlers.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,QAAQ;IAEvB,GAAG,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,OAAO,GAAG,cAAc,GAAG,OAAO,GAAG,cAAc,CAAC;QAC1D,KAAK,EAAE;YAAE,GAAG,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC;QAC/B,WAAW,EAAE;YAAE,GAAG,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC;QACrC,WAAW,EAAE;YAAE,GAAG,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC;KACtC,CAAC;CACH;AAED,UAAU,QAAS,SAAQ,QAAQ;IACjC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE;YACL,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;CACH;AAwCD,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE;YACL,CAAC,GAAG,EAAE,MAAM,GAAG;gBACb,GAAG,EAAE,MAAM,CAAC;gBACZ,QAAQ,EAAE,MAAM,CAAC;gBACjB,WAAW,EAAE,MAAM,CAAC;aACrB,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAWD,MAAM,WAAW,mBAAmB,CAAC,KAAK,SAAS,QAAQ,EAAE,UAAU;IACrE,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC;IACpE,aAAa,IAAI,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA2CD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CA4CzD,CAAC;AAGF,wBAAsB,eAAe,CACnC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAclB;AAGD,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjE,OAAO,EAAE,QAAQ,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAclB;AAGD,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAGD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAUlB"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { revalidateSingleTag, revalidateTags } from './server-utils';
|
|
2
|
+
import { ArticleTag, ArticleTypeIndexTag, ArticleTypeTag, AssetTag, articleTag, articleTypeIndexTag, assetTag, BannerTag, CustomTypeTag, GlobalTag, LocationTag, locationTag, NavigationTag, PageTag, PersonTag, pageTag, personTag, TagTag, TemplateTag, tagTag, templateTag, } from './tags';
|
|
3
|
+
// Default locale for Contentful
|
|
4
|
+
const defaultLocale = 'en-US';
|
|
5
|
+
// Content type handlers
|
|
6
|
+
const articleTypeHandler = {
|
|
7
|
+
extract: (data) => ({
|
|
8
|
+
slug: data.fields?.slug?.[defaultLocale],
|
|
9
|
+
}),
|
|
10
|
+
makeTags: (extracted) => [extracted.slug ? articleTypeIndexTag(extracted.slug) : undefined],
|
|
11
|
+
getGlobalTags: () => [ArticleTypeTag, ArticleTypeIndexTag],
|
|
12
|
+
};
|
|
13
|
+
const articleHandler = {
|
|
14
|
+
extract: (data) => ({
|
|
15
|
+
slug: data.fields?.slug?.[defaultLocale],
|
|
16
|
+
}),
|
|
17
|
+
makeTags: (extracted) => [extracted?.slug ? articleTag(extracted.slug) : undefined],
|
|
18
|
+
getGlobalTags: () => [ArticleTag],
|
|
19
|
+
rebuildSearch: true,
|
|
20
|
+
};
|
|
21
|
+
const pageVariantHandler = {
|
|
22
|
+
extract: (data) => {
|
|
23
|
+
const pageVariantSlug = data.fields?.slug?.[defaultLocale];
|
|
24
|
+
return pageVariantSlug;
|
|
25
|
+
},
|
|
26
|
+
makeTags: (extracted) => [extracted ? pageTag(extracted) : undefined],
|
|
27
|
+
getGlobalTags: () => [PageTag],
|
|
28
|
+
};
|
|
29
|
+
const templateHandler = {
|
|
30
|
+
extract: (data) => data.fields?.cmsLabel?.[defaultLocale],
|
|
31
|
+
makeTags: (extracted) => [extracted ? templateTag(extracted) : undefined],
|
|
32
|
+
getGlobalTags: () => [TemplateTag],
|
|
33
|
+
};
|
|
34
|
+
// Content type handlers registry
|
|
35
|
+
export const contentTypeHandlers = {
|
|
36
|
+
page: {
|
|
37
|
+
extract: (data) => data.fields?.slug?.[defaultLocale],
|
|
38
|
+
makeTags: (extracted) => [extracted ? pageTag(extracted) : undefined],
|
|
39
|
+
getGlobalTags: () => [PageTag],
|
|
40
|
+
},
|
|
41
|
+
pageVariant: pageVariantHandler,
|
|
42
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is ok for handlers with different types
|
|
43
|
+
article: articleHandler,
|
|
44
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is ok for handlers with different types
|
|
45
|
+
articleType: articleTypeHandler,
|
|
46
|
+
person: {
|
|
47
|
+
extract: (data) => data.fields?.slug?.[defaultLocale],
|
|
48
|
+
makeTags: (extracted) => [extracted ? personTag(extracted) : undefined],
|
|
49
|
+
getGlobalTags: () => [PersonTag],
|
|
50
|
+
},
|
|
51
|
+
tag: {
|
|
52
|
+
extract: (data) => data.fields?.slug?.[defaultLocale],
|
|
53
|
+
makeTags: (extracted) => [extracted ? tagTag(extracted) : undefined],
|
|
54
|
+
getGlobalTags: () => [TagTag],
|
|
55
|
+
},
|
|
56
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is ok for handlers with different types
|
|
57
|
+
template: templateHandler,
|
|
58
|
+
customType: {
|
|
59
|
+
extract: () => undefined,
|
|
60
|
+
makeTags: () => undefined,
|
|
61
|
+
getGlobalTags: () => [CustomTypeTag],
|
|
62
|
+
},
|
|
63
|
+
navigation: {
|
|
64
|
+
extract: () => undefined,
|
|
65
|
+
makeTags: () => undefined,
|
|
66
|
+
getGlobalTags: () => [NavigationTag],
|
|
67
|
+
},
|
|
68
|
+
banner: {
|
|
69
|
+
extract: () => undefined,
|
|
70
|
+
makeTags: () => undefined,
|
|
71
|
+
getGlobalTags: () => [BannerTag],
|
|
72
|
+
},
|
|
73
|
+
location: {
|
|
74
|
+
extract: (data) => data.fields?.slug?.[defaultLocale],
|
|
75
|
+
makeTags: (extracted) => [extracted ? locationTag(extracted) : undefined],
|
|
76
|
+
getGlobalTags: () => [LocationTag],
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
// Asset revalidation handler
|
|
80
|
+
export async function revalidateAsset(content, message, preview = false) {
|
|
81
|
+
const id = content.sys.id;
|
|
82
|
+
const fileName = content.fields?.file?.[defaultLocale]?.fileName;
|
|
83
|
+
const tags = [assetTag(id), fileName ? assetTag(fileName) : undefined, AssetTag].filter((tag) => tag !== undefined);
|
|
84
|
+
if (preview) {
|
|
85
|
+
await revalidateSingleTag(GlobalTag, message);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
await revalidateTags(tags, message);
|
|
89
|
+
}
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
// Entry revalidation handler
|
|
93
|
+
export async function revalidateEntry(handler, content, contentType, preview = false) {
|
|
94
|
+
const extracted = await Promise.resolve(handler.extract(content));
|
|
95
|
+
const tags = handler.makeTags(extracted);
|
|
96
|
+
const validTags = tags?.filter((tag) => tag !== undefined) ?? [];
|
|
97
|
+
const globalTags = handler.getGlobalTags();
|
|
98
|
+
const tagsToRevalidate = [...validTags, ...globalTags];
|
|
99
|
+
if (preview) {
|
|
100
|
+
await revalidateSingleTag(GlobalTag, `publish ${contentType} (preview mode)`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
await revalidateTags(tagsToRevalidate, `publish ${contentType}`);
|
|
104
|
+
}
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
// Revalidate deleted entry by content type (collection tags only)
|
|
108
|
+
export async function revalidateDeletedEntry(contentType, preview = false) {
|
|
109
|
+
const { getCacheTagsForProduction } = await import('./utils');
|
|
110
|
+
const tags = getCacheTagsForProduction(contentType);
|
|
111
|
+
if (preview) {
|
|
112
|
+
await revalidateSingleTag(GlobalTag, `delete ${contentType} (preview mode)`);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
await revalidateTags(tags, `delete ${contentType}`);
|
|
116
|
+
}
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
// Revalidate deleted asset by ID
|
|
120
|
+
export async function revalidateDeletedAsset(assetId, preview = false) {
|
|
121
|
+
const tags = [assetTag(assetId), AssetTag];
|
|
122
|
+
if (preview) {
|
|
123
|
+
await revalidateSingleTag(GlobalTag, `delete asset ${assetId} (preview mode)`);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
await revalidateTags(tags, `delete asset ${assetId}`);
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/revalidation/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/revalidation/index.ts"],"names":[],"mappings":"AAEA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/revalidation/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for the revalidation route
|
|
4
|
+
*/
|
|
5
|
+
export interface RevalidationConfig {
|
|
6
|
+
/** Secret for validating webhook requests */
|
|
7
|
+
secret?: string;
|
|
8
|
+
/** Whether to validate the secret */
|
|
9
|
+
validateSecret?: boolean;
|
|
10
|
+
/** Whether to run in preview mode */
|
|
11
|
+
preview?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Create a Next.js API route handler for Contentful revalidation
|
|
15
|
+
*
|
|
16
|
+
* @param config - Configuration options
|
|
17
|
+
* @returns Next.js POST handler function
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* // In your app/api/revalidate/route.ts
|
|
22
|
+
* import { createRevalidationHandler } from '@se-studio/contentful-rest-api';
|
|
23
|
+
*
|
|
24
|
+
* export const POST = createRevalidationHandler({
|
|
25
|
+
* secret: process.env.REVALIDATION_SECRET,
|
|
26
|
+
* validateSecret: true,
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function createRevalidationHandler(config?: RevalidationConfig): (request: NextRequest) => Promise<NextResponse>;
|
|
31
|
+
//# sourceMappingURL=nextjs-route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs-route.d.ts","sourceRoot":"","sources":["../../src/revalidation/nextjs-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,GAAE,kBAAuB,GAC9B,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAejD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
import { handleRevalidation } from './route';
|
|
3
|
+
/**
|
|
4
|
+
* Create a Next.js API route handler for Contentful revalidation
|
|
5
|
+
*
|
|
6
|
+
* @param config - Configuration options
|
|
7
|
+
* @returns Next.js POST handler function
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* // In your app/api/revalidate/route.ts
|
|
12
|
+
* import { createRevalidationHandler } from '@se-studio/contentful-rest-api';
|
|
13
|
+
*
|
|
14
|
+
* export const POST = createRevalidationHandler({
|
|
15
|
+
* secret: process.env.REVALIDATION_SECRET,
|
|
16
|
+
* validateSecret: true,
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export function createRevalidationHandler(config = {}) {
|
|
21
|
+
return async function POST(request) {
|
|
22
|
+
const { secret, validateSecret = true, preview = false } = config;
|
|
23
|
+
// Validate secret if required
|
|
24
|
+
if (validateSecret && secret) {
|
|
25
|
+
const requestSecret = request.headers.get('REVALIDATION_SECRET');
|
|
26
|
+
if (requestSecret !== secret) {
|
|
27
|
+
return NextResponse.json({ message: 'Invalid secret' }, { status: 401 });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Handle the revalidation
|
|
31
|
+
return await handleRevalidation(request, preview);
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=nextjs-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs-route.js","sourceRoot":"","sources":["../../src/revalidation/nextjs-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAc7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAA6B,EAAE;IAE/B,OAAO,KAAK,UAAU,IAAI,CAAC,OAAoB;QAC7C,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QAElE,8BAA8B;QAC9B,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACjE,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,OAAO,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/revalidation/route.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkE3C,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,YAAY,CAAC,CAgDvB"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
import { NextResponse } from 'next/server';
|
|
4
|
+
import { contentTypeHandlers, revalidateAsset, revalidateDeletedAsset, revalidateDeletedEntry, revalidateEntry, } from './handlers';
|
|
5
|
+
import { revalidateSingleTag } from './server-utils';
|
|
6
|
+
import { AllTags, GlobalTag } from './tags';
|
|
7
|
+
// Handle asset publishing
|
|
8
|
+
async function publishAsset(content, preview) {
|
|
9
|
+
return await revalidateAsset(content, 'publish asset', preview);
|
|
10
|
+
}
|
|
11
|
+
// Handle asset deletion
|
|
12
|
+
async function deleteAsset(content, preview) {
|
|
13
|
+
return await revalidateDeletedAsset(content.sys.id, preview);
|
|
14
|
+
}
|
|
15
|
+
// Handle entry publishing
|
|
16
|
+
async function publishEntry(content, preview) {
|
|
17
|
+
const contentType = content.sys.contentType.sys.id;
|
|
18
|
+
const handler = contentTypeHandlers[contentType];
|
|
19
|
+
if (!handler) {
|
|
20
|
+
console.warn(`Unknown content type: ${contentType}`);
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return await revalidateEntry(handler, content, contentType, preview);
|
|
24
|
+
}
|
|
25
|
+
// Handle entry deletion
|
|
26
|
+
async function deleteEntry(content, preview) {
|
|
27
|
+
console.log(`Delete entry: ${content.sys.id}`);
|
|
28
|
+
const contentType = content.sys.contentType.sys.id;
|
|
29
|
+
const success = await revalidateDeletedEntry(contentType, preview);
|
|
30
|
+
// Note: Search rebuild logic would go here if needed
|
|
31
|
+
return success;
|
|
32
|
+
}
|
|
33
|
+
// Revalidate all tags (for global revalidation)
|
|
34
|
+
async function revalidateAll(preview) {
|
|
35
|
+
console.log('Revalidating all tags');
|
|
36
|
+
await delay(500);
|
|
37
|
+
if (preview) {
|
|
38
|
+
await revalidateSingleTag(GlobalTag, 'global revalidation');
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
for (const tag of AllTags) {
|
|
42
|
+
await revalidateSingleTag(tag, 'global revalidation');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Note: Search rebuild logic would go here if needed
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
// Utility delay function
|
|
49
|
+
function delay(ms) {
|
|
50
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
51
|
+
}
|
|
52
|
+
// Main revalidation handler function
|
|
53
|
+
export async function handleRevalidation(request, preview = false) {
|
|
54
|
+
try {
|
|
55
|
+
// Check for global revalidation header
|
|
56
|
+
const all = request.headers.get('REVALIDATE_ALL');
|
|
57
|
+
const single = request.headers.get('REVALIDATION_TAG');
|
|
58
|
+
if (all) {
|
|
59
|
+
const success = await revalidateAll(preview);
|
|
60
|
+
return NextResponse.json({ revalidated: success, now: Date.now() }, { status: 200 });
|
|
61
|
+
}
|
|
62
|
+
if (single) {
|
|
63
|
+
const success = await revalidateSingleTag(single, 'single tag revalidation');
|
|
64
|
+
return NextResponse.json({ revalidated: success, now: Date.now() }, { status: 200 });
|
|
65
|
+
}
|
|
66
|
+
// Parse webhook payload
|
|
67
|
+
const content = (await request.json());
|
|
68
|
+
let success = false;
|
|
69
|
+
switch (content.sys.type) {
|
|
70
|
+
case 'DeletedAsset':
|
|
71
|
+
success = await deleteAsset(content, preview);
|
|
72
|
+
break;
|
|
73
|
+
case 'DeletedEntry':
|
|
74
|
+
success = await deleteEntry(content, preview);
|
|
75
|
+
break;
|
|
76
|
+
case 'Asset':
|
|
77
|
+
success = await publishAsset(content, preview);
|
|
78
|
+
break;
|
|
79
|
+
case 'Entry':
|
|
80
|
+
success = await publishEntry(content, preview);
|
|
81
|
+
break;
|
|
82
|
+
default:
|
|
83
|
+
console.warn(`Unknown message type: ${content.sys.type}`);
|
|
84
|
+
return NextResponse.json({ message: 'Unknown message type' }, { status: 400 });
|
|
85
|
+
}
|
|
86
|
+
if (!success) {
|
|
87
|
+
return NextResponse.json({ message: 'Unknown content type' }, { status: 400 });
|
|
88
|
+
}
|
|
89
|
+
return NextResponse.json({ revalidated: success, now: Date.now() }, { status: 200 });
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.error('Error in revalidation:', error);
|
|
93
|
+
// Send a 200 back as Contentful retries a few times!
|
|
94
|
+
return NextResponse.json({ message: 'Error in revalidation' }, { status: 500 });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/revalidation/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import 'server-only';
|
|
2
|
+
/**
|
|
3
|
+
* Revalidates multiple Next.js cache tags.
|
|
4
|
+
*
|
|
5
|
+
* Adds a delay between revalidations to prevent overwhelming the cache system.
|
|
6
|
+
* Use this when content changes affect multiple pages or entries.
|
|
7
|
+
*
|
|
8
|
+
* @param tags - Array of cache tags to revalidate
|
|
9
|
+
* @param reason - Reason for revalidation (for logging/debugging)
|
|
10
|
+
*/
|
|
11
|
+
export declare function revalidateTags(tags: string[], reason: string): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Revalidates a single Next.js cache tag.
|
|
14
|
+
*
|
|
15
|
+
* Adds a delay before revalidation to prevent overwhelming the cache system.
|
|
16
|
+
* Use this for targeted revalidation of specific content.
|
|
17
|
+
*
|
|
18
|
+
* @param tag - Cache tag to revalidate (e.g., 'page#home', 'article#my-post')
|
|
19
|
+
* @param reason - Reason for revalidation (for logging/debugging)
|
|
20
|
+
*/
|
|
21
|
+
export declare function revalidateSingleTag(tag: string, reason: string): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=server-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-utils.d.ts","sourceRoot":"","sources":["../../src/revalidation/server-utils.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlF;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import 'server-only';
|
|
2
|
+
import { revalidateTag } from 'next/cache';
|
|
3
|
+
/**
|
|
4
|
+
* Revalidates multiple Next.js cache tags.
|
|
5
|
+
*
|
|
6
|
+
* Adds a delay between revalidations to prevent overwhelming the cache system.
|
|
7
|
+
* Use this when content changes affect multiple pages or entries.
|
|
8
|
+
*
|
|
9
|
+
* @param tags - Array of cache tags to revalidate
|
|
10
|
+
* @param reason - Reason for revalidation (for logging/debugging)
|
|
11
|
+
*/
|
|
12
|
+
export async function revalidateTags(tags, reason) {
|
|
13
|
+
// Add a delay to prevent overwhelming the cache system
|
|
14
|
+
await delay(500);
|
|
15
|
+
for (const tag of tags) {
|
|
16
|
+
console.log(`Revalidating tag: ${tag} - ${reason}`);
|
|
17
|
+
revalidateTag(tag);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Revalidates a single Next.js cache tag.
|
|
22
|
+
*
|
|
23
|
+
* Adds a delay before revalidation to prevent overwhelming the cache system.
|
|
24
|
+
* Use this for targeted revalidation of specific content.
|
|
25
|
+
*
|
|
26
|
+
* @param tag - Cache tag to revalidate (e.g., 'page#home', 'article#my-post')
|
|
27
|
+
* @param reason - Reason for revalidation (for logging/debugging)
|
|
28
|
+
*/
|
|
29
|
+
export async function revalidateSingleTag(tag, reason) {
|
|
30
|
+
await delay(500);
|
|
31
|
+
console.log(`Revalidating single tag: ${tag} - ${reason}`);
|
|
32
|
+
revalidateTag(tag);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Utility delay function
|
|
36
|
+
* @param ms - Milliseconds to delay
|
|
37
|
+
*/
|
|
38
|
+
function delay(ms) {
|
|
39
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=server-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-utils.js","sourceRoot":"","sources":["../../src/revalidation/server-utils.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc,EAAE,MAAc;IACjE,uDAAuD;IACvD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC;QACpD,aAAa,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,MAAc;IACnE,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC;IAC3D,aAAa,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache tag constants and utilities for Contentful revalidation
|
|
3
|
+
*/
|
|
4
|
+
export declare const PageTag = "page";
|
|
5
|
+
export declare const ArticleTag = "article";
|
|
6
|
+
export declare const ArticleTypeTag = "articleType";
|
|
7
|
+
export declare const ArticleTypeIndexTag = "articleTypeIndex";
|
|
8
|
+
export declare const CustomTypeTag = "customType";
|
|
9
|
+
export declare const TagTag = "tag";
|
|
10
|
+
export declare const PersonTag = "person";
|
|
11
|
+
export declare const AssetTag = "asset";
|
|
12
|
+
export declare const TemplateTag = "template";
|
|
13
|
+
export declare const NavigationTag = "navigation";
|
|
14
|
+
export declare const BannerTag = "banner";
|
|
15
|
+
export declare const LocationTag = "location";
|
|
16
|
+
export declare const GlobalTag = "global";
|
|
17
|
+
/**
|
|
18
|
+
* Individual page cache tag generator
|
|
19
|
+
* @param slug - Page slug
|
|
20
|
+
* @returns Cache tag for the page
|
|
21
|
+
*/
|
|
22
|
+
export declare function pageTag(slug: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Individual article cache tag generator
|
|
25
|
+
* @param slug - Article slug
|
|
26
|
+
* @returns Cache tag for the article
|
|
27
|
+
*/
|
|
28
|
+
export declare function articleTag(slug: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Individual article type cache tag generator
|
|
31
|
+
* @param slug - Article type slug
|
|
32
|
+
* @returns Cache tag for the article type
|
|
33
|
+
*/
|
|
34
|
+
export declare function articleTypeTag(slug: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Individual article type index page cache tag generator
|
|
37
|
+
* @param slug - Article type index page slug
|
|
38
|
+
* @returns Cache tag for the article type index page
|
|
39
|
+
*/
|
|
40
|
+
export declare function articleTypeIndexTag(slug: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Individual custom type cache tag generator
|
|
43
|
+
* @param slug - Custom type slug
|
|
44
|
+
* @returns Cache tag for the custom type
|
|
45
|
+
*/
|
|
46
|
+
export declare function customTypeTag(slug: string): string;
|
|
47
|
+
/**
|
|
48
|
+
* Individual tag cache tag generator
|
|
49
|
+
* @param slug - Tag slug
|
|
50
|
+
* @returns Cache tag for the tag
|
|
51
|
+
*/
|
|
52
|
+
export declare function tagTag(slug: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Individual person cache tag generator
|
|
55
|
+
* @param slug - Person slug
|
|
56
|
+
* @returns Cache tag for the person
|
|
57
|
+
*/
|
|
58
|
+
export declare function personTag(slug: string): string;
|
|
59
|
+
/**
|
|
60
|
+
* Individual asset cache tag generator
|
|
61
|
+
* @param assetId - Asset ID
|
|
62
|
+
* @returns Cache tag for the asset
|
|
63
|
+
*/
|
|
64
|
+
export declare function assetTag(assetId: string): string;
|
|
65
|
+
/**
|
|
66
|
+
* Individual template cache tag generator
|
|
67
|
+
* @param label - Template cmsLabel
|
|
68
|
+
* @returns Cache tag for the template
|
|
69
|
+
*/
|
|
70
|
+
export declare function templateTag(label: string): string;
|
|
71
|
+
/**
|
|
72
|
+
* Individual location cache tag generator
|
|
73
|
+
* @param slug - Location slug
|
|
74
|
+
* @returns Cache tag for the location
|
|
75
|
+
*/
|
|
76
|
+
export declare function locationTag(slug: string): string;
|
|
77
|
+
/**
|
|
78
|
+
* All collection-level cache tags for global revalidation
|
|
79
|
+
*/
|
|
80
|
+
export declare const AllTags: string[];
|
|
81
|
+
//# sourceMappingURL=tags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/revalidation/tags.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,OAAO,SAAS,CAAC;AAC9B,eAAO,MAAM,UAAU,YAAY,CAAC;AACpC,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAC5C,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,aAAa,eAAe,CAAC;AAC1C,eAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,eAAO,MAAM,SAAS,WAAW,CAAC;AAClC,eAAO,MAAM,QAAQ,UAAU,CAAC;AAChC,eAAO,MAAM,WAAW,aAAa,CAAC;AACtC,eAAO,MAAM,aAAa,eAAe,CAAC;AAC1C,eAAO,MAAM,SAAS,WAAW,CAAC;AAClC,eAAO,MAAM,WAAW,aAAa,CAAC;AAGtC,eAAO,MAAM,SAAS,WAAW,CAAC;AAElC;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,UAcnB,CAAC"}
|