next
Version:
The React Framework
49 lines (48 loc) • 2.17 kB
JavaScript
import { CachedRouteKind } from '../../response-cache/types';
import { LRUCache } from '../lru-cache';
let memoryCache;
function getBufferSize(buffer) {
return (buffer == null ? void 0 : buffer.length) || 0;
}
function getSegmentDataSize(segmentData) {
if (!segmentData) {
return 0;
}
let size = 0;
for (const [segmentPath, buffer] of segmentData){
size += segmentPath.length + getBufferSize(buffer);
}
return size;
}
export function getMemoryCache(maxMemoryCacheSize) {
if (!memoryCache) {
memoryCache = new LRUCache(maxMemoryCacheSize, function length({ value }, cacheKey) {
let valueSize;
if (!value) {
valueSize = 25;
} else if (value.kind === CachedRouteKind.REDIRECT) {
valueSize = JSON.stringify(value.props).length;
} else if (value.kind === CachedRouteKind.IMAGE) {
throw Object.defineProperty(new Error('invariant image should not be incremental-cache'), "__NEXT_ERROR_CODE", {
value: "E501",
enumerable: false,
configurable: true
});
} else if (value.kind === CachedRouteKind.FETCH) {
valueSize = JSON.stringify(value.data || '').length;
} else if (value.kind === CachedRouteKind.APP_ROUTE) {
valueSize = value.body.length;
} else if (value.kind === CachedRouteKind.APP_PAGE) {
var _value_postponed;
// rough estimate of size of cache value
valueSize = Math.max(1, value.html.length + getBufferSize(value.rscData) + (((_value_postponed = value.postponed) == null ? void 0 : _value_postponed.length) || 0) + getSegmentDataSize(value.segmentData));
} else {
var _JSON_stringify;
valueSize = value.html.length + (((_JSON_stringify = JSON.stringify(value.pageData)) == null ? void 0 : _JSON_stringify.length) || 0);
}
return cacheKey.length + valueSize;
});
}
return memoryCache;
}
//# sourceMappingURL=memory-cache.external.js.map