@prismicio/next 2.0.2-pr.114.8f1c631 → 2.0.2-pr.115.3a95290

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.
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("@prismicio/react");
5
+ const PrismicNextImage = require("./PrismicNextImage.cjs");
6
+ const PrismicNextLink = require("./PrismicNextLink.cjs");
7
+ const defaultComponents = {
8
+ image: ({ node }) => jsxRuntime.jsx("p", { className: "block-img", children: node.linkTo ? jsxRuntime.jsx(PrismicNextLink.PrismicNextLink, { field: node.linkTo, children: jsxRuntime.jsx(PrismicNextImage.PrismicNextImage, { field: node }) }) : jsxRuntime.jsx(PrismicNextImage.PrismicNextImage, { field: node }) }),
9
+ hyperlink: ({ node, children }) => jsxRuntime.jsx(PrismicNextLink.PrismicNextLink, { field: node.data, children })
10
+ };
11
+ const PrismicNextRichText = (props) => {
12
+ const { components, ...restProps } = props;
13
+ return jsxRuntime.jsx(react.PrismicRichText, { components: { ...defaultComponents, ...components }, ...restProps });
14
+ };
15
+ exports.PrismicNextRichText = PrismicNextRichText;
16
+ //# sourceMappingURL=PrismicNextRichText.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrismicNextRichText.cjs","sources":["../src/PrismicNextRichText.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { PrismicRichText } from \"@prismicio/react\";\nimport type { PrismicRichTextProps, JSXMapSerializer } from \"@prismicio/react\";\n\nimport { PrismicNextImage } from \"./PrismicNextImage\";\nimport { PrismicNextLink } from \"./PrismicNextLink\";\n\nexport type PrismicNextRichTextProps = Omit<\n\tPrismicRichTextProps,\n\t\"components\"\n> & {\n\tcomponents?: JSXMapSerializer;\n};\n\nconst defaultComponents: JSXMapSerializer = {\n\timage: ({ node }) => (\n\t\t<p className=\"block-img\">\n\t\t\t{node.linkTo ? (\n\t\t\t\t<PrismicNextLink field={node.linkTo}>\n\t\t\t\t\t<PrismicNextImage field={node} />\n\t\t\t\t</PrismicNextLink>\n\t\t\t) : (\n\t\t\t\t<PrismicNextImage field={node} />\n\t\t\t)}\n\t\t</p>\n\t),\n\thyperlink: ({ node, children }) => (\n\t\t<PrismicNextLink field={node.data}>{children}</PrismicNextLink>\n\t),\n};\n\nexport const PrismicNextRichText: FC<PrismicNextRichTextProps> = (props) => {\n\tconst { components, ...restProps } = props;\n\n\treturn (\n\t\t<PrismicRichText\n\t\t\tcomponents={{ ...defaultComponents, ...components }}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n"],"names":["_jsx","PrismicNextLink","PrismicNextImage","PrismicRichText"],"mappings":";;;;;;AAcA,MAAM,oBAAsC;AAAA,EAC3C,OAAO,CAAC,EAAE,KAAI,MACbA,eAAA,KAAA,EAAG,WAAU,aACX,UAAA,KAAK,SACLA,WAAAA,IAACC,gBAAAA,iBAAe,EAAC,OAAO,KAAK,QAC5B,UAAAD,eAACE,iBAAgB,kBAAA,EAAC,OAAO,KAAQ,CAAA,EAAA,CAAA,IAGlCF,WAAAA,IAACE,iBAAAA,kBAAiB,EAAA,OAAO,KAAI,CAAA,GAC7B;AAAA,EAGH,WAAW,CAAC,EAAE,MAAM,eACnBF,WAAAA,IAACC,gBAAA,iBAAe,EAAC,OAAO,KAAK,MAAI,SAAW,CAAA;;AAIjC,MAAA,sBAAoD,CAAC,UAAS;AAC1E,QAAM,EAAE,YAAY,GAAG,UAAA,IAAc;AAErC,SACCD,WAAC,IAAAG,uBACA,EAAA,YAAY,EAAE,GAAG,mBAAmB,GAAG,WAAU,MAC7C,WAAS;AAGhB;;"}
@@ -0,0 +1,6 @@
1
+ import type { FC } from "react";
2
+ import type { PrismicRichTextProps, JSXMapSerializer } from "@prismicio/react";
3
+ export type PrismicNextRichTextProps = Omit<PrismicRichTextProps, "components"> & {
4
+ components?: JSXMapSerializer;
5
+ };
6
+ export declare const PrismicNextRichText: FC<PrismicNextRichTextProps>;
package/dist/index.cjs CHANGED
@@ -6,18 +6,16 @@ const PrismicNextLink = require("./PrismicNextLink.cjs");
6
6
  const enableAutoPreviews = require("./enableAutoPreviews.cjs");
7
7
  const redirectToPreviewURL = require("./redirectToPreviewURL.cjs");
8
8
  const PrismicNextImage = require("./PrismicNextImage.cjs");
9
+ const PrismicNextRichText = require("./PrismicNextRichText.cjs");
9
10
  const imgixLoader = require("./imgixLoader.cjs");
10
11
  const createLocaleRedirect = require("./createLocaleRedirect.cjs");
11
- const getPrismicCacheTags = require("./getPrismicCacheTags.cjs");
12
- const revalidatePrismicPages = require("./revalidatePrismicPages.cjs");
13
12
  exports.exitPreview = exitPreview.exitPreview;
14
13
  exports.PrismicPreview = PrismicPreview.PrismicPreview;
15
14
  exports.PrismicNextLink = PrismicNextLink.PrismicNextLink;
16
15
  exports.enableAutoPreviews = enableAutoPreviews.enableAutoPreviews;
17
16
  exports.redirectToPreviewURL = redirectToPreviewURL.redirectToPreviewURL;
18
17
  exports.PrismicNextImage = PrismicNextImage.PrismicNextImage;
18
+ exports.PrismicNextRichText = PrismicNextRichText.PrismicNextRichText;
19
19
  exports.imgixLoader = imgixLoader.imgixLoader;
20
20
  exports.createLocaleRedirect = createLocaleRedirect.createLocaleRedirect;
21
- exports.getPrismicCacheTags = getPrismicCacheTags.getPrismicCacheTags;
22
- exports.revalidatePrismicPages = revalidatePrismicPages.revalidatePrismicPages;
23
21
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -9,9 +9,9 @@ export { redirectToPreviewURL } from "./redirectToPreviewURL";
9
9
  export type { RedirectToPreviewURLConfig } from "./redirectToPreviewURL";
10
10
  export { PrismicNextImage } from "./PrismicNextImage";
11
11
  export type { PrismicNextImageProps } from "./PrismicNextImage";
12
+ export { PrismicNextRichText } from "./PrismicNextRichText";
13
+ export type { PrismicNextRichTextProps } from "./PrismicNextRichText";
12
14
  export { imgixLoader } from "./imgixLoader";
13
15
  export type { CreateClientConfig } from "./types";
14
16
  export { createLocaleRedirect } from "./createLocaleRedirect";
15
17
  export type { CreateLocaleRedirectConfig } from "./createLocaleRedirect";
16
- export { getPrismicCacheTags } from "./getPrismicCacheTags";
17
- export { revalidatePrismicPages } from "./revalidatePrismicPages";
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const version = "2.0.2-pr.114.8f1c631";
3
+ const version = "2.0.2-pr.115.3a95290";
4
4
  exports.version = version;
5
5
  //# sourceMappingURL=package.json.cjs.map
@@ -2,6 +2,8 @@ export { PrismicNextLink } from "../PrismicNextLink";
2
2
  export { type PrismicNextLinkProps } from "../PrismicNextLink";
3
3
  export { PrismicNextImage } from "../PrismicNextImage";
4
4
  export { type PrismicNextImageProps } from "../PrismicNextImage";
5
+ export { PrismicNextRichText } from "../PrismicNextRichText";
6
+ export { type PrismicNextRichTextProps } from "../PrismicNextRichText";
5
7
  export { imgixLoader } from "../imgixLoader";
6
8
  export { PrismicPreview } from "./PrismicPreview";
7
9
  export type { PrismicPreviewProps } from "./PrismicPreview";
package/dist/pages.cjs CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const PrismicNextLink = require("./PrismicNextLink.cjs");
4
4
  const PrismicNextImage = require("./PrismicNextImage.cjs");
5
+ const PrismicNextRichText = require("./PrismicNextRichText.cjs");
5
6
  const imgixLoader = require("./imgixLoader.cjs");
6
7
  const PrismicPreview = require("./pages/PrismicPreview.cjs");
7
8
  const enableAutoPreviews = require("./pages/enableAutoPreviews.cjs");
@@ -11,6 +12,7 @@ const setPreviewData = require("./pages/setPreviewData.cjs");
11
12
  const createLocaleRedirect = require("./createLocaleRedirect.cjs");
12
13
  exports.PrismicNextLink = PrismicNextLink.PrismicNextLink;
13
14
  exports.PrismicNextImage = PrismicNextImage.PrismicNextImage;
15
+ exports.PrismicNextRichText = PrismicNextRichText.PrismicNextRichText;
14
16
  exports.imgixLoader = imgixLoader.imgixLoader;
15
17
  exports.PrismicPreview = PrismicPreview.PrismicPreview;
16
18
  exports.enableAutoPreviews = enableAutoPreviews.enableAutoPreviews;
@@ -1 +1 @@
1
- {"version":3,"file":"pages.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"pages.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "e2e-projects/*"
5
5
  ],
6
6
  "name": "@prismicio/next",
7
- "version": "2.0.2-pr.114.8f1c631",
7
+ "version": "2.0.2-pr.115.3a95290",
8
8
  "description": "Helpers to integrate Prismic into Next.js apps",
9
9
  "keywords": [
10
10
  "typescript",
@@ -68,7 +68,8 @@
68
68
  "devDependencies": {
69
69
  "@eslint/js": "^9.17.0",
70
70
  "@playwright/test": "^1.49.1",
71
- "@prismicio/client": "^7.21.0",
71
+ "@prismicio/client": "^7.12.0",
72
+ "@prismicio/react": "^3.0.1",
72
73
  "@prismicio/types-internal": "^3.3.0",
73
74
  "@rollup/plugin-typescript": "^12.1.2",
74
75
  "@size-limit/preset-small-lib": "^11.1.6",
@@ -97,9 +98,15 @@
97
98
  },
98
99
  "peerDependencies": {
99
100
  "@prismicio/client": "^7",
101
+ "@prismicio/react": "^3",
100
102
  "next": "^13.4.5 || ^14 || ^15 || ^16",
101
103
  "react": "^18 || ^19"
102
104
  },
105
+ "peerDependenciesMeta": {
106
+ "@prismicio/react": {
107
+ "optional": true
108
+ }
109
+ },
103
110
  "engines": {
104
111
  "node": ">=18"
105
112
  },
@@ -0,0 +1,41 @@
1
+ import type { FC } from "react";
2
+ import { PrismicRichText } from "@prismicio/react";
3
+ import type { PrismicRichTextProps, JSXMapSerializer } from "@prismicio/react";
4
+
5
+ import { PrismicNextImage } from "./PrismicNextImage";
6
+ import { PrismicNextLink } from "./PrismicNextLink";
7
+
8
+ export type PrismicNextRichTextProps = Omit<
9
+ PrismicRichTextProps,
10
+ "components"
11
+ > & {
12
+ components?: JSXMapSerializer;
13
+ };
14
+
15
+ const defaultComponents: JSXMapSerializer = {
16
+ image: ({ node }) => (
17
+ <p className="block-img">
18
+ {node.linkTo ? (
19
+ <PrismicNextLink field={node.linkTo}>
20
+ <PrismicNextImage field={node} />
21
+ </PrismicNextLink>
22
+ ) : (
23
+ <PrismicNextImage field={node} />
24
+ )}
25
+ </p>
26
+ ),
27
+ hyperlink: ({ node, children }) => (
28
+ <PrismicNextLink field={node.data}>{children}</PrismicNextLink>
29
+ ),
30
+ };
31
+
32
+ export const PrismicNextRichText: FC<PrismicNextRichTextProps> = (props) => {
33
+ const { components, ...restProps } = props;
34
+
35
+ return (
36
+ <PrismicRichText
37
+ components={{ ...defaultComponents, ...components }}
38
+ {...restProps}
39
+ />
40
+ );
41
+ };
package/src/index.ts CHANGED
@@ -15,13 +15,12 @@ export type { RedirectToPreviewURLConfig } from "./redirectToPreviewURL";
15
15
  export { PrismicNextImage } from "./PrismicNextImage";
16
16
  export type { PrismicNextImageProps } from "./PrismicNextImage";
17
17
 
18
+ export { PrismicNextRichText } from "./PrismicNextRichText";
19
+ export type { PrismicNextRichTextProps } from "./PrismicNextRichText";
20
+
18
21
  export { imgixLoader } from "./imgixLoader";
19
22
 
20
23
  export type { CreateClientConfig } from "./types";
21
24
 
22
25
  export { createLocaleRedirect } from "./createLocaleRedirect";
23
26
  export type { CreateLocaleRedirectConfig } from "./createLocaleRedirect";
24
-
25
- export { getPrismicCacheTags } from "./getPrismicCacheTags";
26
-
27
- export { revalidatePrismicPages } from "./revalidatePrismicPages";
@@ -4,6 +4,9 @@ export { type PrismicNextLinkProps } from "../PrismicNextLink";
4
4
  export { PrismicNextImage } from "../PrismicNextImage";
5
5
  export { type PrismicNextImageProps } from "../PrismicNextImage";
6
6
 
7
+ export { PrismicNextRichText } from "../PrismicNextRichText";
8
+ export { type PrismicNextRichTextProps } from "../PrismicNextRichText";
9
+
7
10
  export { imgixLoader } from "../imgixLoader";
8
11
 
9
12
  export { PrismicPreview } from "./PrismicPreview";
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const CACHE_TAG_PREFIX = "prismic/";
4
- function getPrismicCacheTags(pages) {
5
- const ids = [...new Set(getPrismicDocumentIDs(pages))];
6
- return ids.map((id) => buildPrismicCacheTag(id));
7
- }
8
- function buildPrismicCacheTag(id) {
9
- return `${CACHE_TAG_PREFIX}${id}`;
10
- }
11
- function getPrismicDocumentIDs(input) {
12
- if (typeof input !== "object" || input == null)
13
- return [];
14
- if (Array.isArray(input))
15
- return input.flatMap((item) => getPrismicDocumentIDs(item));
16
- if ("id" in input && typeof input.id === "string") {
17
- if ("href" in input && typeof input.href === "string" && input.href.includes("/api/v2/documents/search?") || "link_type" in input && input.link_type === "Document") {
18
- if ("data" in input && typeof input.data === "object" && input.data !== null) {
19
- return [input.id, ...getPrismicDocumentIDs(input.data)];
20
- } else {
21
- return [input.id];
22
- }
23
- }
24
- }
25
- return Object.values(input).flatMap((input2) => getPrismicDocumentIDs(input2));
26
- }
27
- exports.buildPrismicCacheTag = buildPrismicCacheTag;
28
- exports.getPrismicCacheTags = getPrismicCacheTags;
29
- //# sourceMappingURL=getPrismicCacheTags.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPrismicCacheTags.cjs","sources":["../src/getPrismicCacheTags.ts"],"sourcesContent":["import { PrismicDocument } from \"@prismicio/client\";\n\nconst CACHE_TAG_PREFIX = \"prismic/\";\n\n/**\n * Generates cache tags for a set of Prismic pages. Tags for linked pages (e.g.\n * a content relationship) are included to ensure all related content can be\n * revalidated.\n *\n * @param pages - A set of Prismic pages used to tag the function.\n *\n * @see {@link https://nextjs.org/docs/app/api-reference/functions/cacheTag}\n */\nexport function getPrismicCacheTags(pages: PrismicDocument[]): string[] {\n\tconst ids = [...new Set(getPrismicDocumentIDs(pages))];\n\treturn ids.map((id) => buildPrismicCacheTag(id));\n}\n\nexport function buildPrismicCacheTag(id: string): string {\n\treturn `${CACHE_TAG_PREFIX}${id}`;\n}\n\nfunction getPrismicDocumentIDs(input: unknown): string[] {\n\tif (typeof input !== \"object\" || input == null) return [];\n\n\tif (Array.isArray(input))\n\t\treturn input.flatMap((item) => getPrismicDocumentIDs(item));\n\n\tif (\"id\" in input && typeof input.id === \"string\") {\n\t\t// Document\n\t\t// Content relationship or link\n\t\tif (\n\t\t\t(\"href\" in input &&\n\t\t\t\ttypeof input.href === \"string\" &&\n\t\t\t\tinput.href.includes(\"/api/v2/documents/search?\")) ||\n\t\t\t(\"link_type\" in input && input.link_type === \"Document\")\n\t\t) {\n\t\t\tif (\n\t\t\t\t\"data\" in input &&\n\t\t\t\ttypeof input.data === \"object\" &&\n\t\t\t\tinput.data !== null\n\t\t\t) {\n\t\t\t\treturn [input.id, ...getPrismicDocumentIDs(input.data)];\n\t\t\t} else {\n\t\t\t\treturn [input.id];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn Object.values(input).flatMap((input) => getPrismicDocumentIDs(input));\n}\n"],"names":["input"],"mappings":";;AAEA,MAAM,mBAAmB;AAWnB,SAAU,oBAAoB,OAAwB;AACrD,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,sBAAsB,KAAK,CAAC,CAAC;AACrD,SAAO,IAAI,IAAI,CAAC,OAAO,qBAAqB,EAAE,CAAC;AAChD;AAEM,SAAU,qBAAqB,IAAU;AACvC,SAAA,GAAG,gBAAgB,GAAG,EAAE;AAChC;AAEA,SAAS,sBAAsB,OAAc;AACxC,MAAA,OAAO,UAAU,YAAY,SAAS;AAAM,WAAO;AAEnD,MAAA,MAAM,QAAQ,KAAK;AACtB,WAAO,MAAM,QAAQ,CAAC,SAAS,sBAAsB,IAAI,CAAC;AAE3D,MAAI,QAAQ,SAAS,OAAO,MAAM,OAAO,UAAU;AAGlD,QACE,UAAU,SACV,OAAO,MAAM,SAAS,YACtB,MAAM,KAAK,SAAS,2BAA2B,KAC/C,eAAe,SAAS,MAAM,cAAc,YAC5C;AAEA,UAAA,UAAU,SACV,OAAO,MAAM,SAAS,YACtB,MAAM,SAAS,MACd;AACD,eAAO,CAAC,MAAM,IAAI,GAAG,sBAAsB,MAAM,IAAI,CAAC;AAAA,MAAA,OAChD;AACC,eAAA,CAAC,MAAM,EAAE;AAAA,MAAA;AAAA,IACjB;AAAA,EACD;AAGM,SAAA,OAAO,OAAO,KAAK,EAAE,QAAQ,CAACA,WAAU,sBAAsBA,MAAK,CAAC;AAC5E;;;"}
@@ -1,12 +0,0 @@
1
- import { PrismicDocument } from "@prismicio/client";
2
- /**
3
- * Generates cache tags for a set of Prismic pages. Tags for linked pages (e.g.
4
- * a content relationship) are included to ensure all related content can be
5
- * revalidated.
6
- *
7
- * @param pages - A set of Prismic pages used to tag the function.
8
- *
9
- * @see {@link https://nextjs.org/docs/app/api-reference/functions/cacheTag}
10
- */
11
- export declare function getPrismicCacheTags(pages: PrismicDocument[]): string[];
12
- export declare function buildPrismicCacheTag(id: string): string;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const cache = require("next/cache");
4
- const getPrismicCacheTags = require("./getPrismicCacheTags.cjs");
5
- function revalidatePrismicPages(ids) {
6
- for (const id of ids) {
7
- const tag = getPrismicCacheTags.buildPrismicCacheTag(id);
8
- cache.revalidateTag(tag, { expire: 0 });
9
- }
10
- }
11
- exports.revalidatePrismicPages = revalidatePrismicPages;
12
- //# sourceMappingURL=revalidatePrismicPages.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"revalidatePrismicPages.cjs","sources":["../src/revalidatePrismicPages.ts"],"sourcesContent":["import { revalidateTag } from \"next/cache\";\nimport { buildPrismicCacheTag } from \"./getPrismicCacheTags\";\n\n/**\n * Immediately revalidates a set of Prismic pages given a list of their IDs. The\n * list of IDs typically comes from a Prismic webhook triggered when publishing\n * content.\n *\n * @param ids - A list of Prismic page IDs to revalidate.\n *\n * @see {@link https://nextjs.org/docs/app/api-reference/functions/revalidateTag}\n */\nexport function revalidatePrismicPages(ids: string[]): void {\n\tfor (const id of ids) {\n\t\tconst tag = buildPrismicCacheTag(id);\n\t\trevalidateTag(tag, { expire: 0 });\n\t}\n}\n"],"names":["buildPrismicCacheTag","revalidateTag"],"mappings":";;;;AAYM,SAAU,uBAAuB,KAAa;AACnD,aAAW,MAAM,KAAK;AACf,UAAA,MAAMA,yCAAqB,EAAE;AACnCC,UAAAA,cAAc,KAAK,EAAE,QAAQ,EAAA,CAAG;AAAA,EAAA;AAElC;;"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Immediately revalidates a set of Prismic pages given a list of their IDs. The
3
- * list of IDs typically comes from a Prismic webhook triggered when publishing
4
- * content.
5
- *
6
- * @param ids - A list of Prismic page IDs to revalidate.
7
- *
8
- * @see {@link https://nextjs.org/docs/app/api-reference/functions/revalidateTag}
9
- */
10
- export declare function revalidatePrismicPages(ids: string[]): void;
@@ -1,51 +0,0 @@
1
- import { PrismicDocument } from "@prismicio/client";
2
-
3
- const CACHE_TAG_PREFIX = "prismic/";
4
-
5
- /**
6
- * Generates cache tags for a set of Prismic pages. Tags for linked pages (e.g.
7
- * a content relationship) are included to ensure all related content can be
8
- * revalidated.
9
- *
10
- * @param pages - A set of Prismic pages used to tag the function.
11
- *
12
- * @see {@link https://nextjs.org/docs/app/api-reference/functions/cacheTag}
13
- */
14
- export function getPrismicCacheTags(pages: PrismicDocument[]): string[] {
15
- const ids = [...new Set(getPrismicDocumentIDs(pages))];
16
- return ids.map((id) => buildPrismicCacheTag(id));
17
- }
18
-
19
- export function buildPrismicCacheTag(id: string): string {
20
- return `${CACHE_TAG_PREFIX}${id}`;
21
- }
22
-
23
- function getPrismicDocumentIDs(input: unknown): string[] {
24
- if (typeof input !== "object" || input == null) return [];
25
-
26
- if (Array.isArray(input))
27
- return input.flatMap((item) => getPrismicDocumentIDs(item));
28
-
29
- if ("id" in input && typeof input.id === "string") {
30
- // Document
31
- // Content relationship or link
32
- if (
33
- ("href" in input &&
34
- typeof input.href === "string" &&
35
- input.href.includes("/api/v2/documents/search?")) ||
36
- ("link_type" in input && input.link_type === "Document")
37
- ) {
38
- if (
39
- "data" in input &&
40
- typeof input.data === "object" &&
41
- input.data !== null
42
- ) {
43
- return [input.id, ...getPrismicDocumentIDs(input.data)];
44
- } else {
45
- return [input.id];
46
- }
47
- }
48
- }
49
-
50
- return Object.values(input).flatMap((input) => getPrismicDocumentIDs(input));
51
- }
@@ -1,18 +0,0 @@
1
- import { revalidateTag } from "next/cache";
2
- import { buildPrismicCacheTag } from "./getPrismicCacheTags";
3
-
4
- /**
5
- * Immediately revalidates a set of Prismic pages given a list of their IDs. The
6
- * list of IDs typically comes from a Prismic webhook triggered when publishing
7
- * content.
8
- *
9
- * @param ids - A list of Prismic page IDs to revalidate.
10
- *
11
- * @see {@link https://nextjs.org/docs/app/api-reference/functions/revalidateTag}
12
- */
13
- export function revalidatePrismicPages(ids: string[]): void {
14
- for (const id of ids) {
15
- const tag = buildPrismicCacheTag(id);
16
- revalidateTag(tag, { expire: 0 });
17
- }
18
- }