From d8751b3fead89d90249dcbe24b77bae5c754e2c3 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Thu, 7 Nov 2024 13:29:12 +0100 Subject: [PATCH] chore(SW-663): updated @contentstack/live-preview-utils to latest --- .../[contentType]/[uid]/@preview/page.tsx | 5 +- .../(public)/[contentType]/[uid]/layout.tsx | 2 - components/LivePreview/index.tsx | 2 +- lib/graphql/_request.ts | 1 - lib/graphql/request.ts | 7 +- lib/previewContext.ts | 10 +- package-lock.json | 143 ++++++++++++------ package.json | 2 +- 8 files changed, 109 insertions(+), 63 deletions(-) diff --git a/app/[lang]/(live)/(public)/[contentType]/[uid]/@preview/page.tsx b/app/[lang]/(live)/(public)/[contentType]/[uid]/@preview/page.tsx index cdb9199fb..6a29974b3 100644 --- a/app/[lang]/(live)/(public)/[contentType]/[uid]/@preview/page.tsx +++ b/app/[lang]/(live)/(public)/[contentType]/[uid]/@preview/page.tsx @@ -1,4 +1,4 @@ -import { isPreview, setPreviewData } from "@/lib/previewContext" +import { setPreviewData } from "@/lib/previewContext" import InitLivePreview from "@/components/LivePreview" @@ -9,11 +9,10 @@ export default function PreviewPage({ params, }: PageArgs) { const shouldInitializePreview = searchParams.isPreview === "true" - const isInitialized = isPreview() if (searchParams.live_preview) { setPreviewData({ hash: searchParams.live_preview, uid: params.uid }) } - return shouldInitializePreview && !isInitialized ? : null + return shouldInitializePreview ? : null } diff --git a/app/[lang]/(live)/(public)/[contentType]/[uid]/layout.tsx b/app/[lang]/(live)/(public)/[contentType]/[uid]/layout.tsx index e8ef9833b..8ffc3c82d 100644 --- a/app/[lang]/(live)/(public)/[contentType]/[uid]/layout.tsx +++ b/app/[lang]/(live)/(public)/[contentType]/[uid]/layout.tsx @@ -1,5 +1,3 @@ -import React from "react" - import styles from "./layout.module.css" import { diff --git a/components/LivePreview/index.tsx b/components/LivePreview/index.tsx index 0b50abdaf..1c20bd54b 100644 --- a/components/LivePreview/index.tsx +++ b/components/LivePreview/index.tsx @@ -1,6 +1,6 @@ "use client" -import { ContentstackLivePreview } from "@contentstack/live-preview-utils" +import ContentstackLivePreview from "@contentstack/live-preview-utils" import { useEffect } from "react" export default function InitLivePreview() { diff --git a/lib/graphql/_request.ts b/lib/graphql/_request.ts index 6fe5b55a0..42920c293 100644 --- a/lib/graphql/_request.ts +++ b/lib/graphql/_request.ts @@ -1,6 +1,5 @@ import "server-only" -// import { ContentstackLivePreview } from "@contentstack/live-preview-utils" import { ClientError, GraphQLClient } from "graphql-request" import { Lang } from "@/constants/languages" diff --git a/lib/graphql/request.ts b/lib/graphql/request.ts index 16729a995..eb1314e38 100644 --- a/lib/graphql/request.ts +++ b/lib/graphql/request.ts @@ -4,7 +4,7 @@ import { GraphQLClient } from "graphql-request" import { cache } from "react" import { env } from "@/env/server" -import { getPreviewHash, isPreview } from "@/lib/previewContext" +import { getPreviewHash, isPreviewByUid } from "@/lib/previewContext" import { request as _request } from "./_request" @@ -15,10 +15,13 @@ export async function request( variables?: Record, params?: RequestInit ): Promise> { - const shouldUsePreview = isPreview(variables?.uid) + const shouldUsePreview = variables?.uid + ? isPreviewByUid(variables.uid) + : false const previewHash = getPreviewHash() const cmsUrl = shouldUsePreview ? env.CMS_PREVIEW_URL : env.CMS_URL + // Creating a new client for each request to avoid conflicting parameters const client = new GraphQLClient(cmsUrl, { fetch: cache(async function (url: URL | RequestInfo, params?: RequestInit) { const wrappedFetch = fetchRetry(fetch, { diff --git a/lib/previewContext.ts b/lib/previewContext.ts index 8d74da724..838d7e3d1 100644 --- a/lib/previewContext.ts +++ b/lib/previewContext.ts @@ -5,7 +5,7 @@ interface PreviewData { uid: string } -const getRef = cache((): { current: PreviewData | undefined } => ({ +const getRef = cache((): { current?: PreviewData } => ({ current: undefined, })) @@ -17,8 +17,7 @@ const getRef = cache((): { current: PreviewData | undefined } => ({ * * @param hash */ -export function setPreviewData(data: PreviewData | undefined) { - console.log("SETTING HASH") +export function setPreviewData(data?: PreviewData) { getRef().current = data } @@ -32,11 +31,12 @@ export function getPreviewHash() { /** * Check if the current request is a preview by comparing the uid */ -export function isPreview(uid?: string) { +export function isPreviewByUid(uid: string) { const data = getRef().current - if (uid && data?.hash) { + if (data?.hash) { return data.uid === uid } + return false } diff --git a/package-lock.json b/package-lock.json index 407012231..766d5cb95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "dependencies": { "@azure/monitor-opentelemetry-exporter": "^1.0.0-beta.24", - "@contentstack/live-preview-utils": "^2.0.4", + "@contentstack/live-preview-utils": "^3.0.0", "@hookform/error-message": "^2.0.1", "@hookform/resolvers": "^3.3.4", "@netlify/plugin-nextjs": "^5.1.1", @@ -2460,17 +2460,56 @@ } }, "node_modules/@contentstack/live-preview-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@contentstack/live-preview-utils/-/live-preview-utils-2.0.4.tgz", - "integrity": "sha512-+56ExpzsOau5MEEg6sy1czaQMzPmEZAyGYx+LIyqeKKCbxFmTHcvg4Ag4vJ7KUf4LCtoGMUUT/Mkf6hqSkCvDA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@contentstack/live-preview-utils/-/live-preview-utils-3.0.0.tgz", + "integrity": "sha512-zu2Xxg02MaTYMp+H+Q7YO5NfhhGe0wRuanpmF6Z3NUWS/oebr0yvJtqTctbE7NVw/dYpRRkviMe7p9CpIg5oaQ==", "dependencies": { + "@preact/compat": "^17.1.2", + "@preact/signals": "^1.2.2", + "classnames": "^2.5.1", + "deepsignal": "^1.5.0", "goober": "^2.1.14", - "just-camel-case": "^4.0.2", "lodash-es": "^4.17.21", - "morphdom": "^2.6.1", "mustache": "^4.2.0", - "post-robot": "8.0.31", + "preact": "^10.19.5", "uuid": "^8.3.2" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "4.9.5" + } + }, + "node_modules/@contentstack/live-preview-utils/node_modules/deepsignal": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/deepsignal/-/deepsignal-1.5.0.tgz", + "integrity": "sha512-bFywDpBUUWMs576H2dgLFLLFuQ/UWXbzHfKD98MZTfGsl7+twIzvz4ihCNrRrZ/Emz3kqJaNIAp5eBWUEWhnAw==", + "peerDependencies": { + "@preact/signals": "^1.1.4", + "@preact/signals-core": "^1.5.1", + "@preact/signals-react": "^1.3.8 || ^2.0.0", + "preact": "^10.16.0" + }, + "peerDependenciesMeta": { + "@preact/signals": { + "optional": true + }, + "@preact/signals-core": { + "optional": true + }, + "@preact/signals-react": { + "optional": true + }, + "preact": { + "optional": true + } + } + }, + "node_modules/@contentstack/live-preview-utils/node_modules/preact": { + "version": "10.24.3", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.3.tgz", + "integrity": "sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" } }, "node_modules/@cspotcode/source-map-support": { @@ -3762,6 +3801,38 @@ "node": ">=12" } }, + "node_modules/@preact/compat": { + "version": "17.1.2", + "resolved": "https://registry.npmjs.org/@preact/compat/-/compat-17.1.2.tgz", + "integrity": "sha512-7pOZN9lMDDRQ+6aWvjwTp483KR8/zOpfS83wmOo3zfuLKdngS8/5RLbsFWzFZMGdYlotAhX980hJ75bjOHTwWg==", + "peerDependencies": { + "preact": "*" + } + }, + "node_modules/@preact/signals": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@preact/signals/-/signals-1.3.0.tgz", + "integrity": "sha512-EOMeg42SlLS72dhoq6Vjq08havnLseWmPQ8A0YsgIAqMgWgx7V1a39+Pxo6i7SY5NwJtH4849JogFq3M67AzWg==", + "dependencies": { + "@preact/signals-core": "^1.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + }, + "peerDependencies": { + "preact": "10.x" + } + }, + "node_modules/@preact/signals-core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.8.0.tgz", + "integrity": "sha512-OBvUsRZqNmjzCZXWLxkZfhcgT+Fk8DDcT/8vD6a1xhDemodyy87UJRJfASMuSD8FaAIeGgGm85ydXhm7lr4fyA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, "node_modules/@radix-ui/primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", @@ -5592,6 +5663,18 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz", + "integrity": "sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rushstack/eslint-patch": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz", @@ -8180,6 +8263,11 @@ "url": "https://joebell.co.uk" } }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, "node_modules/clean-deep": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/clean-deep/-/clean-deep-3.4.0.tgz", @@ -8767,22 +8855,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/cross-domain-safe-weakmap": { - "version": "1.0.29", - "resolved": "https://registry.npmjs.org/cross-domain-safe-weakmap/-/cross-domain-safe-weakmap-1.0.29.tgz", - "integrity": "sha512-VLoUgf2SXnf3+na8NfeUFV59TRZkIJqCIATaMdbhccgtnTlSnHXkyTRwokngEGYdQXx8JbHT9GDYitgR2sdjuA==", - "dependencies": { - "cross-domain-utils": "^2.0.0" - } - }, - "node_modules/cross-domain-utils": { - "version": "2.0.38", - "resolved": "https://registry.npmjs.org/cross-domain-utils/-/cross-domain-utils-2.0.38.tgz", - "integrity": "sha512-zZfi3+2EIR9l4chrEiXI2xFleyacsJf8YMLR1eJ0Veb5FTMXeJ3DpxDjZkto2FhL/g717WSELqbptNSo85UJDw==", - "dependencies": { - "zalgo-promise": "^1.0.11" - } - }, "node_modules/cross-fetch": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", @@ -13679,11 +13751,6 @@ "node": ">=4.0" } }, - "node_modules/just-camel-case": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/just-camel-case/-/just-camel-case-4.0.2.tgz", - "integrity": "sha512-df6QI/EIq+6uHe/wtaa9Qq7/pp4wr4pJC/r1+7XhVL6m5j03G6h9u9/rIZr8rDASX7CxwDPQnZjffCo2e6PRLw==" - }, "node_modules/keygrip": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", @@ -15270,11 +15337,6 @@ "node": ">= 0.8" } }, - "node_modules/morphdom": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.7.2.tgz", - "integrity": "sha512-Dqb/lHFyTi7SZpY0a5R4I/0Edo+iPMbaUexsHHsLAByyixCDiLHPHyVoKVmrpL0THcT7V9Cgev9y21TQYq6wQg==" - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -16256,16 +16318,6 @@ "node": ">= 0.4" } }, - "node_modules/post-robot": { - "version": "8.0.31", - "resolved": "https://registry.npmjs.org/post-robot/-/post-robot-8.0.31.tgz", - "integrity": "sha512-nUhtKgtmcgyuPm4RnIhUB3gsDYJBHOgFry3TvOxhIHpgfwYY/T69d4oB90tw4YUllFZUUwqLEv1Wgyg6eOoJ7A==", - "dependencies": { - "cross-domain-safe-weakmap": "^1.0.1", - "cross-domain-utils": "^2.0.0", - "zalgo-promise": "^1.0.3" - } - }, "node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -20000,11 +20052,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/zalgo-promise": { - "version": "1.0.48", - "resolved": "https://registry.npmjs.org/zalgo-promise/-/zalgo-promise-1.0.48.tgz", - "integrity": "sha512-LLHANmdm53+MucY9aOFIggzYtUdkSBFxUsy4glTTQYNyK6B3uCPWTbfiGvSrEvLojw0mSzyFJ1/RRLv+QMNdzQ==" - }, "node_modules/zod": { "version": "3.22.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", diff --git a/package.json b/package.json index f5f7ea4cb..fa08f8495 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ }, "dependencies": { "@azure/monitor-opentelemetry-exporter": "^1.0.0-beta.24", - "@contentstack/live-preview-utils": "^2.0.4", + "@contentstack/live-preview-utils": "^3.0.0", "@hookform/error-message": "^2.0.1", "@hookform/resolvers": "^3.3.4", "@netlify/plugin-nextjs": "^5.1.1",