@prismicio/next 2.0.2-pr.112.11d2042 → 2.0.2-pr.114.8f1c631

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,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
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- require("./setGlobalConfig.cjs");
4
3
  const exitPreview = require("./exitPreview.cjs");
5
4
  const PrismicPreview = require("./PrismicPreview.cjs");
6
5
  const PrismicNextLink = require("./PrismicNextLink.cjs");
@@ -9,6 +8,8 @@ const redirectToPreviewURL = require("./redirectToPreviewURL.cjs");
9
8
  const PrismicNextImage = require("./PrismicNextImage.cjs");
10
9
  const imgixLoader = require("./imgixLoader.cjs");
11
10
  const createLocaleRedirect = require("./createLocaleRedirect.cjs");
11
+ const getPrismicCacheTags = require("./getPrismicCacheTags.cjs");
12
+ const revalidatePrismicPages = require("./revalidatePrismicPages.cjs");
12
13
  exports.exitPreview = exitPreview.exitPreview;
13
14
  exports.PrismicPreview = PrismicPreview.PrismicPreview;
14
15
  exports.PrismicNextLink = PrismicNextLink.PrismicNextLink;
@@ -17,4 +18,6 @@ exports.redirectToPreviewURL = redirectToPreviewURL.redirectToPreviewURL;
17
18
  exports.PrismicNextImage = PrismicNextImage.PrismicNextImage;
18
19
  exports.imgixLoader = imgixLoader.imgixLoader;
19
20
  exports.createLocaleRedirect = createLocaleRedirect.createLocaleRedirect;
21
+ exports.getPrismicCacheTags = getPrismicCacheTags.getPrismicCacheTags;
22
+ exports.revalidatePrismicPages = revalidatePrismicPages.revalidatePrismicPages;
20
23
  //# 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
@@ -1,4 +1,3 @@
1
- import "./setGlobalConfig";
2
1
  export { exitPreview } from "./exitPreview";
3
2
  export { PrismicPreview } from "./PrismicPreview";
4
3
  export type { PrismicPreviewProps } from "./PrismicPreview";
@@ -14,3 +13,5 @@ export { imgixLoader } from "./imgixLoader";
14
13
  export type { CreateClientConfig } from "./types";
15
14
  export { createLocaleRedirect } from "./createLocaleRedirect";
16
15
  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.112.11d2042";
3
+ const version = "2.0.2-pr.114.8f1c631";
4
4
  exports.version = version;
5
5
  //# sourceMappingURL=package.json.cjs.map
@@ -1,4 +1,3 @@
1
- import "../setGlobalConfig";
2
1
  export { PrismicNextLink } from "../PrismicNextLink";
3
2
  export { type PrismicNextLinkProps } from "../PrismicNextLink";
4
3
  export { PrismicNextImage } from "../PrismicNextImage";
package/dist/pages.cjs CHANGED
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- require("./setGlobalConfig.cjs");
4
3
  const PrismicNextLink = require("./PrismicNextLink.cjs");
5
4
  const PrismicNextImage = require("./PrismicNextImage.cjs");
6
5
  const imgixLoader = require("./imgixLoader.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"pages.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"pages.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
@@ -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.112.11d2042",
7
+ "version": "2.0.2-pr.114.8f1c631",
8
8
  "description": "Helpers to integrate Prismic into Next.js apps",
9
9
  "keywords": [
10
10
  "typescript",
@@ -19,10 +19,7 @@
19
19
  },
20
20
  "license": "Apache-2.0",
21
21
  "author": "Prismic <contact@prismic.io> (https://prismic.io)",
22
- "sideEffects": [
23
- "./dist/index.cjs",
24
- "./dist/pages.cjs"
25
- ],
22
+ "sideEffects": false,
26
23
  "type": "module",
27
24
  "exports": {
28
25
  ".": {
@@ -71,8 +68,7 @@
71
68
  "devDependencies": {
72
69
  "@eslint/js": "^9.17.0",
73
70
  "@playwright/test": "^1.49.1",
74
- "@prismicio/client": "^7.12.0",
75
- "@prismicio/react": "pr-235",
71
+ "@prismicio/client": "^7.21.0",
76
72
  "@prismicio/types-internal": "^3.3.0",
77
73
  "@rollup/plugin-typescript": "^12.1.2",
78
74
  "@size-limit/preset-small-lib": "^11.1.6",
@@ -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
@@ -1,5 +1,3 @@
1
- import "./setGlobalConfig";
2
-
3
1
  export { exitPreview } from "./exitPreview";
4
2
 
5
3
  export { PrismicPreview } from "./PrismicPreview";
@@ -23,3 +21,7 @@ export type { CreateClientConfig } from "./types";
23
21
 
24
22
  export { createLocaleRedirect } from "./createLocaleRedirect";
25
23
  export type { CreateLocaleRedirectConfig } from "./createLocaleRedirect";
24
+
25
+ export { getPrismicCacheTags } from "./getPrismicCacheTags";
26
+
27
+ export { revalidatePrismicPages } from "./revalidatePrismicPages";
@@ -1,5 +1,3 @@
1
- import "../setGlobalConfig";
2
-
3
1
  export { PrismicNextLink } from "../PrismicNextLink";
4
2
  export { type PrismicNextLinkProps } from "../PrismicNextLink";
5
3
 
@@ -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
+ }
@@ -1,8 +0,0 @@
1
- "use strict";
2
- const Link = require("next/link");
3
- const globalConfigKey = Symbol.for("@prismicio/react/config");
4
- globalThis[globalConfigKey] = {
5
- ...globalThis[globalConfigKey],
6
- internalLinkComponent: Link
7
- };
8
- //# sourceMappingURL=setGlobalConfig.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setGlobalConfig.cjs","sources":["../src/setGlobalConfig.ts"],"sourcesContent":["import { HTMLAttributeAnchorTarget, ReactNode } from \"react\";\nimport Link from \"next/link\";\n\nconst globalConfigKey = Symbol.for(\"@prismicio/react/config\");\n\ntype GlobalThis = {\n\t[globalConfigKey]?: {\n\t\tinternalLinkComponent?: React.ComponentType<{\n\t\t\thref: string;\n\t\t\ttarget?: HTMLAttributeAnchorTarget;\n\t\t\trel?: string;\n\t\t\tchildren?: ReactNode;\n\t\t}>;\n\t};\n};\n\n(globalThis as GlobalThis)[globalConfigKey] = {\n\t...(globalThis as GlobalThis)[globalConfigKey],\n\tinternalLinkComponent: Link,\n};\n"],"names":[],"mappings":";;AAGA,MAAM,kBAAkB,OAAO,IAAI,yBAAyB;AAa3D,WAA0B,eAAe,IAAI;AAAA,EAC7C,GAAI,WAA0B,eAAe;AAAA,EAC7C,uBAAuB;;"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,20 +0,0 @@
1
- import { HTMLAttributeAnchorTarget, ReactNode } from "react";
2
- import Link from "next/link";
3
-
4
- const globalConfigKey = Symbol.for("@prismicio/react/config");
5
-
6
- type GlobalThis = {
7
- [globalConfigKey]?: {
8
- internalLinkComponent?: React.ComponentType<{
9
- href: string;
10
- target?: HTMLAttributeAnchorTarget;
11
- rel?: string;
12
- children?: ReactNode;
13
- }>;
14
- };
15
- };
16
-
17
- (globalThis as GlobalThis)[globalConfigKey] = {
18
- ...(globalThis as GlobalThis)[globalConfigKey],
19
- internalLinkComponent: Link,
20
- };