@se-studio/contentful-rest-api 1.14.10 → 1.15.0

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @se-studio/contentful-rest-api
2
2
 
3
+ ## 1.15.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add coarse publish-side cache tag cascades so shared CMS infrastructure invalidates dependent routes on Next.js 15: `template` → `page` + `article`, `articleType` → `article`, `customType` → `tag` + `person`.
8
+
3
9
  ## 1.14.10
4
10
 
5
11
  ### Patch Changes
package/README.md CHANGED
@@ -311,6 +311,8 @@ The package automatically manages cache tags for Next.js App Router. Tags follow
311
311
  - **Collections**: `{contentType}` (e.g., `page`, `article`, `articleType`)
312
312
  - **Preview mode**: `global` (single tag for all content when preview mode is enabled)
313
313
 
314
+ **Publish cascades (coarse):** `template` publish also revalidates `page` + `article`; `articleType` → `article`; `customType` → `tag` + `person`. See `docs/CONTENTFUL_WEBHOOK_REVALIDATION.md`.
315
+
314
316
  ### Automatic Cache Tagging
315
317
 
316
318
  All content fetching functions automatically apply appropriate cache tags based on the `preview` flag:
@@ -30,9 +30,18 @@ export interface IContentTypeHandler<TData extends BaseData, TExtracted> {
30
30
  extract(data: TData): TExtracted | Promise<TExtracted>;
31
31
  makeTags(extracted: TExtracted): (string | undefined)[] | undefined;
32
32
  getGlobalTags(): string[];
33
+ /**
34
+ * Coarse collection tags for shared infrastructure that is merged into many routes
35
+ * (template menu/footer/schema, articleType article schema, customType index config).
36
+ * Next 15 cannot attach per-entity dependency tags at fetch time; revisit with
37
+ * Next 16 cacheTag() for precise invalidation.
38
+ */
39
+ getCascadeTags?(): string[];
33
40
  rebuildSearch?: boolean;
34
41
  }
35
42
  export declare const contentTypeHandlers: Record<string, IContentTypeHandler<SlugData, string | null | undefined>>;
43
+ /** Merge individual, collection, and coarse cascade tags for publish revalidation. */
44
+ export declare function collectPublishTagsForHandler(handler: IContentTypeHandler<BaseData, string | null | undefined>, extracted: string | null | undefined): string[];
36
45
  /** Tags revalidated when an entry is published (production mode). */
37
46
  export declare function getPublishTagsForEntry(content: BaseData): Promise<string[]>;
38
47
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"entry-handlers.d.ts","sourceRoot":"","sources":["../../src/revalidation/entry-handlers.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,QAAQ;IACvB,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;AAgDD,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;AAoCD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAgEzD,CAAC;AAEF,qEAAqE;AACrE,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQjF"}
1
+ {"version":3,"file":"entry-handlers.d.ts","sourceRoot":"","sources":["../../src/revalidation/entry-handlers.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,QAAQ;IACvB,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;AAgDD,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;;;;;OAKG;IACH,cAAc,CAAC,IAAI,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAsCD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAiEzD,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,MAAM,EAAE,CAKV;AAED,qEAAqE;AACrE,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAMjF"}
@@ -6,6 +6,7 @@ const articleTypeHandler = {
6
6
  }),
7
7
  makeTags: (extracted) => [extracted.slug ? articleTypeIndexTag(extracted.slug) : undefined],
8
8
  getGlobalTags: () => [ArticleTypeTag, ArticleTypeIndexTag],
9
+ getCascadeTags: () => [ArticleTag],
9
10
  };
10
11
  const articleHandler = {
11
12
  extract: (data) => ({
@@ -24,6 +25,7 @@ const templateHandler = {
24
25
  extract: (data) => data.fields?.cmsLabel?.[defaultLocale],
25
26
  makeTags: (extracted) => [extracted ? templateTag(extracted) : undefined],
26
27
  getGlobalTags: () => [TemplateTag],
28
+ getCascadeTags: () => [PageTag, ArticleTag],
27
29
  };
28
30
  export const contentTypeHandlers = {
29
31
  page: {
@@ -62,6 +64,7 @@ export const contentTypeHandlers = {
62
64
  extract: () => undefined,
63
65
  makeTags: () => undefined,
64
66
  getGlobalTags: () => [CustomTypeTag],
67
+ getCascadeTags: () => [TagTag, PersonTag],
65
68
  },
66
69
  navigation: {
67
70
  extract: () => undefined,
@@ -89,6 +92,12 @@ export const contentTypeHandlers = {
89
92
  getGlobalTags: () => [LocationTag],
90
93
  },
91
94
  };
95
+ /** Merge individual, collection, and coarse cascade tags for publish revalidation. */
96
+ export function collectPublishTagsForHandler(handler, extracted) {
97
+ const individual = handler.makeTags(extracted)?.filter((tag) => tag !== undefined) ?? [];
98
+ const cascade = handler.getCascadeTags?.() ?? [];
99
+ return [...new Set([...individual, ...handler.getGlobalTags(), ...cascade])];
100
+ }
92
101
  /** Tags revalidated when an entry is published (production mode). */
93
102
  export async function getPublishTagsForEntry(content) {
94
103
  const contentType = content.sys.contentType.sys.id;
@@ -96,8 +105,6 @@ export async function getPublishTagsForEntry(content) {
96
105
  if (!handler)
97
106
  return [];
98
107
  const extracted = await Promise.resolve(handler.extract(content));
99
- const tags = handler.makeTags(extracted);
100
- const validTags = tags?.filter((tag) => tag !== undefined) ?? [];
101
- return [...validTags, ...handler.getGlobalTags()];
108
+ return collectPublishTagsForHandler(handler, extracted);
102
109
  }
103
110
  //# sourceMappingURL=entry-handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry-handlers.js","sourceRoot":"","sources":["../../src/revalidation/entry-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry-handlers.js","sourceRoot":"","sources":["../../src/revalidation/entry-handlers.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { BaseData, IContentTypeHandler } from './entry-handlers';
2
2
  export type { BaseData, IContentTypeHandler } from './entry-handlers';
3
- export { contentTypeHandlers, getPublishTagsForEntry } from './entry-handlers';
3
+ export { collectPublishTagsForHandler, contentTypeHandlers, getPublishTagsForEntry, } from './entry-handlers';
4
4
  export interface AssetData extends BaseData {
5
5
  fields?: {
6
6
  file?: {
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/revalidation/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAItE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE;YACL,CAAC,GAAG,EAAE,MAAM,GAAG;gBACb,GAAG,EAAE,MAAM,CAAC;gBACZ,QAAQ,EAAE,MAAM,CAAC;gBACjB,WAAW,EAAE,MAAM,CAAC;aACrB,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAID,wBAAsB,eAAe,CACnC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjE,OAAO,EAAE,QAAQ,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAUlB"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/revalidation/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAKtE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE;YACL,CAAC,GAAG,EAAE,MAAM,GAAG;gBACb,GAAG,EAAE,MAAM,CAAC;gBACZ,QAAQ,EAAE,MAAM,CAAC;gBACjB,WAAW,EAAE,MAAM,CAAC;aACrB,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAID,wBAAsB,eAAe,CACnC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjE,OAAO,EAAE,QAAQ,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAUlB"}
@@ -1,6 +1,7 @@
1
+ import { collectPublishTagsForHandler } from './entry-handlers.js';
1
2
  import { revalidateSingleTag, revalidateTags } from './server-utils.js';
2
3
  import { AssetTag, assetTag, GlobalTag } from './tags.js';
3
- export { contentTypeHandlers, getPublishTagsForEntry } from './entry-handlers.js';
4
+ export { collectPublishTagsForHandler, contentTypeHandlers, getPublishTagsForEntry, } from './entry-handlers.js';
4
5
  const defaultLocale = 'en-US';
5
6
  export async function revalidateAsset(content, message, preview = false) {
6
7
  const id = content.sys.id;
@@ -16,10 +17,7 @@ export async function revalidateAsset(content, message, preview = false) {
16
17
  }
17
18
  export async function revalidateEntry(handler, content, contentType, preview = false) {
18
19
  const extracted = await Promise.resolve(handler.extract(content));
19
- const tags = handler.makeTags(extracted);
20
- const validTags = tags?.filter((tag) => tag !== undefined) ?? [];
21
- const globalTags = handler.getGlobalTags();
22
- const tagsToRevalidate = [...validTags, ...globalTags];
20
+ const tagsToRevalidate = collectPublishTagsForHandler(handler, extracted);
23
21
  if (preview) {
24
22
  await revalidateSingleTag(GlobalTag, `publish ${contentType} (preview mode)`);
25
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/revalidation/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/revalidation/handlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGvD,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAc1B,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAkB,EAClB,OAAe,EACf,UAAmB,KAAK;IAExB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;IACjE,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,MAAM,CACrF,CAAC,GAAG,EAAiB,EAAE,CAAC,GAAG,KAAK,SAAS,CAC1C,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAiE,EACjE,OAAiB,EACjB,WAAmB,EACnB,UAAmB,KAAK;IAExB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE1E,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,mBAAmB,CAAC,SAAS,EAAE,WAAW,WAAW,iBAAiB,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,CAAC,gBAAgB,EAAE,WAAW,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,UAAmB,KAAK;IAExB,MAAM,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAEpD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,mBAAmB,CAAC,SAAS,EAAE,UAAU,WAAW,iBAAiB,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,CAAC,IAAI,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,UAAmB,KAAK;IAExB,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE3C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,OAAO,iBAAiB,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,CAAC,IAAI,EAAE,gBAAgB,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
package/docs/llms.md CHANGED
@@ -155,6 +155,8 @@ interface FetchOptions {
155
155
 
156
156
  ## Cache Tags (for revalidation)
157
157
 
158
+ **Publish cascades:** `template` → `page` + `article`; `articleType` → `article`; `customType` → `tag` + `person` (coarse; Next 15 workaround until per-entity `cacheTag` on Next 16).
159
+
158
160
  Use these tag helpers to generate consistent cache tag strings:
159
161
 
160
162
  ```ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/contentful-rest-api",
3
- "version": "1.14.10",
3
+ "version": "1.15.0",
4
4
  "description": "Type-safe Contentful REST API client with caching and rate limiting for Next.js applications",
5
5
  "repository": {
6
6
  "type": "git",
@@ -59,7 +59,7 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@contentful/rich-text-types": "^17.2.7",
62
- "contentful": "^11.12.5",
62
+ "contentful": "^11.12.6",
63
63
  "server-only": "0.0.1",
64
64
  "@se-studio/core-data-types": "1.6.1"
65
65
  },