Skip to content

Commit f4847e7

Browse files
committed
Merge branch 'master' into next16
2 parents 54cf1ba + c2d59eb commit f4847e7

File tree

4 files changed

+317
-467
lines changed

4 files changed

+317
-467
lines changed

examples/redis-minimal/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,23 @@
1414
},
1515
"dependencies": {
1616
"@fortedigital/nextjs-cache-handler": "workspace:*",
17-
"next": "16.0.3",
18-
"react": "19.2.0",
19-
"react-dom": "19.2.0",
17+
"next": "16.0.7",
18+
"react": "19.2.1",
19+
"react-dom": "19.2.1",
2020
"redis": "^5.10.0"
2121
},
2222
"devDependencies": {
2323
"@tailwindcss/postcss": "^4",
2424
"@types/node": "^24",
25-
"@types/react": "19.2.6",
25+
"@types/react": "19.2.7",
2626
"@types/react-dom": "19.2.3",
2727
"eslint": "^9",
28-
"eslint-config-next": "16.0.3",
28+
"eslint-config-next": "16.0.7",
2929
"tailwindcss": "^4",
3030
"typescript": "^5"
3131
},
3232
"overrides": {
33-
"@types/react": "19.2.6",
33+
"@types/react": "19.2.7",
3434
"@types/react-dom": "19.2.3"
3535
}
3636
}

packages/nextjs-cache-handler/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"next",
1919
"redis"
2020
],
21-
"version": "3.0.0-next16-alpha.2",
21+
"version": "3.0.0-next16-alpha.3",
2222
"type": "module",
2323
"license": "MIT",
2424
"description": "Next.js cache handlers",
@@ -96,7 +96,7 @@
9696
},
9797
"dependencies": {
9898
"cluster-key-slot": "1.1.2",
99-
"lru-cache": "11.2.2",
99+
"lru-cache": "11.2.4",
100100
"p-limit": "^7.2.0"
101101
},
102102
"devDependencies": {
@@ -107,14 +107,14 @@
107107
"eslint-config-prettier": "^9.1.2",
108108
"globals": "^16.5.0",
109109
"jest": "^30.2.0",
110-
"prettier": "^3.6.2",
111-
"prettier-plugin-packagejson": "2.5.19",
110+
"prettier": "^3.7.4",
111+
"prettier-plugin-packagejson": "2.5.20",
112112
"rimraf": "6.1.2",
113-
"ts-jest": "^29.4.5",
113+
"ts-jest": "^29.4.6",
114114
"tsup": "^8.5.1",
115-
"tsx": "4.20.6",
115+
"tsx": "4.21.0",
116116
"typescript": "^5.9.3",
117-
"typescript-eslint": "^8.47.0"
117+
"typescript-eslint": "^8.48.1"
118118
},
119119
"peerDependencies": {
120120
"@redis/client": ">= 5.8.3",

packages/nextjs-cache-handler/src/handlers/redis-strings.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,13 @@ export default function createHandler({
228228
let expireOperation: Promise<number> | undefined;
229229
const lifespan = cacheHandlerValue.lifespan;
230230

231-
if (cacheHandlerValue?.value) {
232-
parseBuffersToStrings(cacheHandlerValue);
231+
// Clone only the value object to avoid mutating Next.js's original
232+
const valueForStorage = cacheHandlerValue.value
233+
? { ...cacheHandlerValue.value }
234+
: null;
235+
236+
if (valueForStorage) {
237+
parseBuffersToStrings({ ...cacheHandlerValue, value: valueForStorage });
233238
}
234239

235240
const setTagsOperation = client
@@ -248,13 +253,18 @@ export default function createHandler({
248253

249254
await Promise.all([setTagsOperation, setSharedTtlOperation]);
250255

256+
const serializedValue = JSON.stringify({
257+
...cacheHandlerValue,
258+
value: valueForStorage,
259+
});
260+
251261
switch (keyExpirationStrategy) {
252262
case "EXAT": {
253263
setOperation = client
254264
.withAbortSignal(AbortSignal.timeout(timeoutMs))
255265
.set(
256266
keyPrefix + key,
257-
JSON.stringify(cacheHandlerValue),
267+
serializedValue,
258268
typeof lifespan?.expireAt === "number"
259269
? {
260270
EXAT: lifespan.expireAt,
@@ -266,7 +276,7 @@ export default function createHandler({
266276
case "EXPIREAT": {
267277
setOperation = client
268278
.withAbortSignal(AbortSignal.timeout(timeoutMs))
269-
.set(keyPrefix + key, JSON.stringify(cacheHandlerValue));
279+
.set(keyPrefix + key, serializedValue);
270280

271281
expireOperation = lifespan
272282
? client

0 commit comments

Comments
 (0)