From cd89dfe1a89d06999801ab62bda5d0a36ae4aac0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcholas=20Andr=C3=A9?= Date: Wed, 3 Apr 2024 19:51:09 -0300 Subject: [PATCH 1/4] chore: lock file --- package-lock.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index a24480750..c0855daa0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21537,7 +21537,7 @@ }, "packages/core": { "name": "@headstartwp/core", - "version": "1.3.4", + "version": "1.4.0", "license": "MIT", "dependencies": { "@justinribeiro/lite-youtube": "^1.3.1", @@ -21928,10 +21928,10 @@ }, "packages/next": { "name": "@headstartwp/next", - "version": "1.3.4", + "version": "1.4.0", "license": "MIT", "dependencies": { - "@headstartwp/core": "^1.3.4", + "@headstartwp/core": "^1.4.0", "@isaacs/ttlcache": "^1.4.1", "deepmerge": "^4.3.1", "loader-utils": "^3.2.0", @@ -22096,8 +22096,8 @@ "version": "0.2.0", "license": "GPL-2.0-or-later", "dependencies": { - "@headstartwp/core": "^1.3.4", - "@headstartwp/next": "^1.3.4", + "@headstartwp/core": "^1.4.0", + "@headstartwp/next": "^1.4.0", "@linaria/babel-preset": "^4.4.5", "@linaria/core": "^4.2.10", "@linaria/react": "^4.3.8", @@ -22125,8 +22125,8 @@ "version": "0.2.0", "license": "GPL-2.0-or-later", "dependencies": { - "@headstartwp/core": "^1.3.4", - "@headstartwp/next": "^1.3.4", + "@headstartwp/core": "^1.4.0", + "@headstartwp/next": "^1.4.0", "@linaria/babel-preset": "^4.4.5", "@linaria/core": "^4.2.10", "@linaria/react": "^4.3.8", @@ -22155,8 +22155,8 @@ "license": "GPL-2.0-or-later", "dependencies": { "@10up/next-redis-cache-provider": "^1.0.0", - "@headstartwp/core": "^1.3.4", - "@headstartwp/next": "^1.3.4", + "@headstartwp/core": "^1.4.0", + "@headstartwp/next": "^1.4.0", "@linaria/babel-preset": "^4.4.5", "@linaria/core": "^4.2.10", "@linaria/react": "^4.3.8", @@ -22184,8 +22184,8 @@ "version": "0.2.1", "license": "GPL-2.0-or-later", "dependencies": { - "@headstartwp/core": "^1.3.4", - "@headstartwp/next": "^1.3.4", + "@headstartwp/core": "^1.4.0", + "@headstartwp/next": "^1.4.0", "@linaria/babel-preset": "^4.4.5", "@linaria/core": "^4.2.10", "@linaria/react": "^4.3.8", From b6e56a5a8913aaf8ffe339db115607d9bd54f27d Mon Sep 17 00:00:00 2001 From: Chris Eagle Date: Tue, 9 Apr 2024 17:27:23 +0100 Subject: [PATCH 2/4] chore: updated comment on blocks rendered to identify need to extend allow list --- packages/core/src/react/components/BlocksRenderer.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/react/components/BlocksRenderer.tsx b/packages/core/src/react/components/BlocksRenderer.tsx index 7b37a6187..4cad62e2c 100644 --- a/packages/core/src/react/components/BlocksRenderer.tsx +++ b/packages/core/src/react/components/BlocksRenderer.tsx @@ -83,12 +83,12 @@ export interface BlockRendererProps { html: string; /** - * The allow list for the parser + * The allow list for the parser, must extend the core allowed list * * ```jsx * , * ``` */ From 1ed197d776b763ed175a5f8228982055f9907575 Mon Sep 17 00:00:00 2001 From: Chris Eagle Date: Tue, 9 Apr 2024 17:30:16 +0100 Subject: [PATCH 3/4] chore: updated comment with additional info --- packages/core/src/react/components/BlocksRenderer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/react/components/BlocksRenderer.tsx b/packages/core/src/react/components/BlocksRenderer.tsx index 4cad62e2c..7b6635f2c 100644 --- a/packages/core/src/react/components/BlocksRenderer.tsx +++ b/packages/core/src/react/components/BlocksRenderer.tsx @@ -87,7 +87,7 @@ export interface BlockRendererProps { * * ```jsx * , * ``` From 38563cfdb8e72030d2316cc31880d5f99741c064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcholas=20Andr=C3=A9?= Date: Wed, 17 Apr 2024 17:08:41 -0300 Subject: [PATCH 4/4] Fix/cache before set (#750) --- .changeset/witty-swans-tap.md | 6 +++ .../server/__tests__/fetchHookDataa-cache.ts | 42 +++++++++++++++++++ .../next/src/data/server/fetchHookData.ts | 8 ++-- 3 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 .changeset/witty-swans-tap.md diff --git a/.changeset/witty-swans-tap.md b/.changeset/witty-swans-tap.md new file mode 100644 index 000000000..8c48a5e33 --- /dev/null +++ b/.changeset/witty-swans-tap.md @@ -0,0 +1,6 @@ +--- +"@headstartwp/core": patch +"@headstartwp/next": patch +--- + +Fix cache.beforeSet diff --git a/packages/next/src/data/server/__tests__/fetchHookDataa-cache.ts b/packages/next/src/data/server/__tests__/fetchHookDataa-cache.ts index dd890be9a..21c4aaf0e 100644 --- a/packages/next/src/data/server/__tests__/fetchHookDataa-cache.ts +++ b/packages/next/src/data/server/__tests__/fetchHookDataa-cache.ts @@ -2,6 +2,7 @@ import { enableFetchMocks } from 'jest-fetch-mock'; import { HeadlessConfig, setHeadstartWPConfig } from '@headstartwp/core'; import { usePosts } from '../../hooks/usePosts'; +import { usePost } from '../../hooks/usePost'; import { fetchHookData } from '../fetchHookData'; import cache from '../cache'; @@ -125,4 +126,45 @@ describe('fetchHookData caching', () => { expect(config.cache.beforeSet).toHaveBeenCalledTimes(1); expect(result.data.isCached).toBe(true); }); + + it('caches with beforeSet without mutating the fetched data', async () => { + const config = { + useWordPressPlugin: true, + cache: { + enabled: true, + + afterGet: async (options, data) => { + return data; + }, + + beforeSet: async (options, data) => { + return { + ...data, + result: { + ...data.result, + beforeSetField: true, + }, + }; + }, + + cacheHandler: { + set: async (key, data, ttl) => { + cache.set(key, data, ttl); + }, + get: async (key) => { + return cache.get(key); + }, + }, + }, + } satisfies HeadlessConfig; + + setHeadstartWPConfig(config); + + fetchMock.mockResponseOnce(JSON.stringify([{ id: 10 }])); + + const result = await fetchHookData(usePost.fetcher(), {}, { params: { slug: 'test3' } }); + + expect(result.data.result.id).toBe(10); + expect(result.data.result.beforeSetField).toBeUndefined(); + }); }); diff --git a/packages/next/src/data/server/fetchHookData.ts b/packages/next/src/data/server/fetchHookData.ts index b13ae3d49..262f3f06a 100644 --- a/packages/next/src/data/server/fetchHookData.ts +++ b/packages/next/src/data/server/fetchHookData.ts @@ -265,7 +265,7 @@ export async function fetchHookData