UNPKG

nuxt-multi-cache

Version:

SSR route, component and data cache for Nuxt.js

57 lines (56 loc) 1.49 kB
const DELIMITER = "<CACHE_ITEM>"; function encodeCacheItem(data, metadata) { return JSON.stringify(metadata) + DELIMITER + data; } function decodeCacheItem(cacheItem) { const delimiterPos = cacheItem.indexOf(DELIMITER); if (delimiterPos >= 0) { const metadata = JSON.parse(cacheItem.substring(0, delimiterPos)); const data = cacheItem.substring(delimiterPos + DELIMITER.length); return { metadata, data }; } } export function encodeRouteCacheItem(data, headers, statusCode, expires, staleIfErrorExpires, staleWhileRevalidate, cacheTags) { return encodeCacheItem(data, { headers, statusCode, expires, cacheTags, staleIfErrorExpires, staleWhileRevalidate }); } export function decodeRouteCacheItem(cacheItem) { try { const decoded = decodeCacheItem(cacheItem); if (decoded) { return { ...decoded.metadata, data: decoded.data }; } } catch (e) { } } export function encodeComponentCacheItem(data, payload, expires, cacheTags) { return encodeCacheItem(data, { payload, expires, cacheTags }); } export function decodeComponentCacheItem(cacheItem) { try { const decoded = decodeCacheItem(cacheItem); if (decoded) { return { ...decoded.metadata, data: decoded.data }; } } catch (e) { } } export function handleRawCacheData(data) { if (typeof data === "string") { return data; } else if (data instanceof Buffer) { return data.toString(); } }