Skip to content

Commit 84eb5b4

Browse files
authored
fix response cache extension type (#1883)
* fix response cache extension type * add changeset
1 parent 413853d commit 84eb5b4

File tree

2 files changed

+34
-44
lines changed

2 files changed

+34
-44
lines changed

.changeset/thin-fishes-unite.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@envelop/response-cache': patch
3+
---
4+
5+
fix response cache extensions type

packages/plugins/response-cache/src/plugin.ts

Lines changed: 29 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ export type ResponseCacheExtensions =
182182
ttl: number;
183183
}
184184
| {
185-
invalidatedEntities: string[];
185+
invalidatedEntities: CacheEntityRecord[];
186186
};
187187

188188
export type ResponseCacheExecutionResult = ExecutionResult<
@@ -389,16 +389,11 @@ export function useResponseCache<PluginContext extends Record<string, any> = {}>
389389

390390
cache.invalidate(identifier.values());
391391
if (includeExtensionMetadata) {
392-
setResult({
393-
...processedResult,
394-
extensions: {
395-
...processedResult.extensions,
396-
responseCache: {
397-
...processedResult.extensions?.responseCache,
398-
invalidatedEntities: Array.from(identifier.values()),
399-
},
400-
},
401-
});
392+
setResult(
393+
resultWithMetadata(processedResult, {
394+
invalidatedEntities: Array.from(identifier.values()),
395+
}),
396+
);
402397
}
403398
},
404399
};
@@ -417,16 +412,9 @@ export function useResponseCache<PluginContext extends Record<string, any> = {}>
417412

418413
if (cachedResponse != null) {
419414
if (includeExtensionMetadata) {
420-
onExecuteParams.setResultAndStopExecution({
421-
...cachedResponse,
422-
extensions: {
423-
...cachedResponse.extensions,
424-
responseCache: {
425-
...cachedResponse.extensions?.responseCache,
426-
hit: true,
427-
},
428-
},
429-
});
415+
onExecuteParams.setResultAndStopExecution(
416+
resultWithMetadata(cachedResponse, { hit: true }),
417+
);
430418
} else {
431419
onExecuteParams.setResultAndStopExecution(cachedResponse);
432420
}
@@ -478,42 +466,39 @@ export function useResponseCache<PluginContext extends Record<string, any> = {}>
478466

479467
if (finalTtl === 0) {
480468
if (includeExtensionMetadata) {
481-
setResult({
482-
...processedResult,
483-
extensions: {
484-
...processedResult.extensions,
485-
responseCache: {
486-
...processedResult.extensions?.responseCache,
487-
hit: false,
488-
didCache: false,
489-
},
490-
},
491-
});
469+
setResult(resultWithMetadata(processedResult, { hit: false, didCache: false }));
492470
}
493471
return;
494472
}
495473

496474
cache.set(cacheKey, processedResult, identifier.values(), finalTtl);
497475
if (includeExtensionMetadata) {
498-
setResult({
499-
...processedResult,
500-
extensions: {
501-
...processedResult.extensions,
502-
responseCache: {
503-
...processedResult.extensions?.responseCache,
504-
hit: false,
505-
didCache: true,
506-
ttl: finalTtl,
507-
},
508-
},
509-
});
476+
setResult(
477+
resultWithMetadata(processedResult, { hit: false, didCache: true, ttl: finalTtl }),
478+
);
510479
}
511480
},
512481
};
513482
},
514483
};
515484
}
516485

486+
function resultWithMetadata(
487+
result: ExecutionResult,
488+
metadata: ResponseCacheExtensions,
489+
): ResponseCacheExecutionResult {
490+
return {
491+
...result,
492+
extensions: {
493+
...result.extensions,
494+
responseCache: {
495+
...(result as ResponseCacheExecutionResult).extensions?.responseCache,
496+
...metadata,
497+
},
498+
},
499+
};
500+
}
501+
517502
function calculateTtl(typeTtl: number, currentTtl: number | undefined): number {
518503
if (typeof currentTtl === 'number') {
519504
return Math.min(currentTtl, typeTtl);

0 commit comments

Comments
 (0)