UNPKG

next

Version:

The React Framework

49 lines (48 loc) 2.17 kB
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