@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.
- package/dist/cacheTagPrismicPages.cjs +9 -0
- package/dist/cacheTagPrismicPages.cjs.map +1 -0
- package/dist/cacheTagPrismicPages.d.ts +2 -0
- package/dist/getPrismicCacheTags.cjs +29 -0
- package/dist/getPrismicCacheTags.cjs.map +1 -0
- package/dist/getPrismicCacheTags.d.ts +12 -0
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/package.json.cjs +1 -1
- package/dist/revalidatePrismicPages.cjs +12 -0
- package/dist/revalidatePrismicPages.cjs.map +1 -0
- package/dist/revalidatePrismicPages.d.ts +10 -0
- package/package.json +2 -2
- package/src/cacheTagPrismicPages.ts +7 -0
- package/src/getPrismicCacheTags.ts +51 -0
- package/src/index.ts +6 -0
- package/src/revalidatePrismicPages.ts +18 -0
|
@@ -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,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
|
package/dist/index.cjs.map
CHANGED
|
@@ -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";
|
package/dist/package.json.cjs
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
+
}
|