Spaces:
Runtime error
Runtime error
| /** | |
| * Calculation result cache | |
| * Memoizes carbon assessment API results using a JSON-keyed Map. | |
| * Prevents duplicate API calls for identical form inputs. | |
| */ | |
| const cache = new Map(); | |
| /** Maximum number of entries to keep in the cache */ | |
| const MAX_CACHE_SIZE = 50; | |
| /** | |
| * Generate a stable cache key from an input object. | |
| * @param {Object} data - assessment input data | |
| * @returns {string} JSON key | |
| */ | |
| export function getCacheKey(data) { | |
| // Sort keys for stable serialization regardless of insertion order | |
| const sorted = Object.keys(data) | |
| .sort() | |
| .reduce((acc, k) => { | |
| acc[k] = data[k]; | |
| return acc; | |
| }, {}); | |
| return JSON.stringify(sorted); | |
| } | |
| /** | |
| * Retrieve a cached result. | |
| * @param {string} key - cache key from getCacheKey() | |
| * @returns {*} cached value, or undefined on cache miss | |
| */ | |
| export function getFromCache(key) { | |
| return cache.get(key); | |
| } | |
| /** | |
| * Store a result in the cache. | |
| * Evicts oldest entry if cache exceeds MAX_CACHE_SIZE. | |
| * @param {string} key - cache key | |
| * @param {*} value - result to store | |
| */ | |
| export function setInCache(key, value) { | |
| if (cache.size >= MAX_CACHE_SIZE) { | |
| // Evict oldest (first) entry | |
| cache.delete(cache.keys().next().value); | |
| } | |
| cache.set(key, value); | |
| } | |
| /** | |
| * Clear all cached results. | |
| */ | |
| export function clearCache() { | |
| cache.clear(); | |
| } | |