nuxt-multi-cache
Version:
SSR route, component and data cache for Nuxt.js
31 lines (30 loc) • 865 B
JavaScript
import { setCachedResponse } from "../../helpers/routeCache.js";
import { useMultiCacheApp } from "../utils/useMultiCacheApp.js";
export function onError(_error, ctx) {
try {
if (!ctx.event) {
return;
}
const { state } = useMultiCacheApp();
if (ctx.event.__MULTI_CACHE_REVALIDATION_KEY) {
state.removeKeyBeingRevalidated(ctx.event.__MULTI_CACHE_REVALIDATION_KEY);
}
const decoded = ctx.event.__MULTI_CACHE_DECODED_CACHED_ROUTE;
if (!decoded) {
return;
}
if (!decoded.staleIfErrorExpires) {
return;
}
const now = Date.now() / 1e3;
if (now >= decoded.staleIfErrorExpires) {
return;
}
setCachedResponse(ctx.event, decoded);
const response = new Response(decoded.data, {
headers: decoded.headers
});
return ctx.event.respondWith(response);
} catch (_e) {
}
}