// SPDX-License-Identifier: AGPL-3.0-or-later import type {CacheLogger} from '@pkgs/cache/src/CacheProviderTypes'; import type {CacheLookupResult} from '@pkgs/cache/src/ICacheService'; export function parseCachedValue(value: string, logger?: CacheLogger): CacheLookupResult { try { return {hit: true, value: JSON.parse(value)}; } catch (error) { if (logger) { const truncatedValue = value.length > 200 ? `${value.substring(0, 200)}...` : value; const errorMessage = error instanceof Error ? error.message : String(error); logger.error({errorMessage, value: truncatedValue}, '[CacheProvider] JSON parse error'); } return {hit: false}; } } export function safeJsonParse(value: string, logger?: CacheLogger): T | null { const parsed = parseCachedValue(value, logger); return parsed.hit ? parsed.value : null; } export function serializeValue(value: T): string { return JSON.stringify(value); }