@prismicio/next 2.0.2-pr.113.86a90db → 2.0.2-pr.114.50610a2

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,9 @@
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 cacheTagPrismicPages(pages) {
6
+ cache.cacheTag(...getPrismicCacheTags.getPrismicCacheTags(pages));
7
+ }
8
+ exports.cacheTagPrismicPages = cacheTagPrismicPages;
9
+ //# sourceMappingURL=cacheTagPrismicPages.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheTagPrismicPages.cjs","sources":["../src/cacheTagPrismicPages.ts"],"sourcesContent":["import { PrismicDocument } from \"@prismicio/client\";\nimport { cacheTag } from \"next/cache\";\nimport { getPrismicCacheTags } from \"./getPrismicCacheTags\";\n\nexport function cacheTagPrismicPages(pages: PrismicDocument[]) {\n\tcacheTag(...getPrismicCacheTags(pages));\n}\n"],"names":["cacheTag","getPrismicCacheTags"],"mappings":";;;;AAIM,SAAU,qBAAqB,OAAwB;AACnDA,iBAAA,GAAGC,wCAAoB,KAAK,CAAC;AACvC;;"}
@@ -0,0 +1,2 @@
1
+ import { PrismicDocument } from "@prismicio/client";
2
+ export declare function cacheTagPrismicPages(pages: PrismicDocument[]): void;
@@ -0,0 +1,29 @@
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
@@ -0,0 +1 @@
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;;;"}
@@ -0,0 +1,12 @@
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;
package/dist/index.cjs CHANGED
@@ -8,6 +8,9 @@ const redirectToPreviewURL = require("./redirectToPreviewURL.cjs");
8
8
  const PrismicNextImage = require("./PrismicNextImage.cjs");
9
9
  const imgixLoader = require("./imgixLoader.cjs");
10
10
  const createLocaleRedirect = require("./createLocaleRedirect.cjs");
11
+ const getPrismicCacheTags = require("./getPrismicCacheTags.cjs");
12
+ const cacheTagPrismicPages = require("./cacheTagPrismicPages.cjs");
13
+ const revalidatePrismicPages = require("./revalidatePrismicPages.cjs");
11
14
  exports.exitPreview = exitPreview.exitPreview;
12
15
  exports.PrismicPreview = PrismicPreview.PrismicPreview;
13
16
  exports.PrismicNextLink = PrismicNextLink.PrismicNextLink;
@@ -16,4 +19,7 @@ exports.redirectToPreviewURL = redirectToPreviewURL.redirectToPreviewURL;
16
19
  exports.PrismicNextImage = PrismicNextImage.PrismicNextImage;
17
20
  exports.imgixLoader = imgixLoader.imgixLoader;
18
21
  exports.createLocaleRedirect = createLocaleRedirect.createLocaleRedirect;
22
+ exports.getPrismicCacheTags = getPrismicCacheTags.getPrismicCacheTags;
23
+ exports.cacheTagPrismicPages = cacheTagPrismicPages.cacheTagPrismicPages;
24
+ exports.revalidatePrismicPages = revalidatePrismicPages.revalidatePrismicPages;
19
25
  //# 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
@@ -13,3 +13,6 @@ export { imgixLoader } from "./imgixLoader";
13
13
  export type { CreateClientConfig } from "./types";
14
14
  export { createLocaleRedirect } from "./createLocaleRedirect";
15
15
  export type { CreateLocaleRedirectConfig } from "./createLocaleRedirect";
16
+ export { getPrismicCacheTags } from "./getPrismicCacheTags";
17
+ export { cacheTagPrismicPages } from "./cacheTagPrismicPages";
18
+ 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.113.86a90db";
3
+ const version = "2.0.2-pr.114.50610a2";
4
4
  exports.version = version;
5
5
  //# sourceMappingURL=package.json.cjs.map
@@ -0,0 +1,12 @@
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
@@ -0,0 +1 @@
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;;"}
@@ -0,0 +1,10 @@
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;
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.113.86a90db",
7
+ "version": "2.0.2-pr.114.50610a2",
8
8
  "description": "Helpers to integrate Prismic into Next.js apps",
9
9
  "keywords": [
10
10
  "typescript",
@@ -68,7 +68,7 @@
68
68
  "devDependencies": {
69
69
  "@eslint/js": "^9.17.0",
70
70
  "@playwright/test": "^1.49.1",
71
- "@prismicio/client": "^7.12.0",
71
+ "@prismicio/client": "^7.21.0",
72
72
  "@prismicio/types-internal": "^3.3.0",
73
73
  "@rollup/plugin-typescript": "^12.1.2",
74
74
  "@size-limit/preset-small-lib": "^11.1.6",
@@ -0,0 +1,7 @@
1
+ import { PrismicDocument } from "@prismicio/client";
2
+ import { cacheTag } from "next/cache";
3
+ import { getPrismicCacheTags } from "./getPrismicCacheTags";
4
+
5
+ export function cacheTagPrismicPages(pages: PrismicDocument[]) {
6
+ cacheTag(...getPrismicCacheTags(pages));
7
+ }
@@ -0,0 +1,51 @@
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
+ }
package/src/index.ts CHANGED
@@ -21,3 +21,9 @@ export type { CreateClientConfig } from "./types";
21
21
 
22
22
  export { createLocaleRedirect } from "./createLocaleRedirect";
23
23
  export type { CreateLocaleRedirectConfig } from "./createLocaleRedirect";
24
+
25
+ export { getPrismicCacheTags } from "./getPrismicCacheTags";
26
+
27
+ export { cacheTagPrismicPages } from "./cacheTagPrismicPages";
28
+
29
+ export { revalidatePrismicPages } from "./revalidatePrismicPages";
@@ -0,0 +1,18 @@
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
+ }