nuxt-multi-cache
Version:
SSR route, component and data cache for Nuxt.js
57 lines (56 loc) • 1.49 kB
JavaScript
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();
}
}