UNPKG

synapse-storage

Version:

Набор инструментов для управления состоянием и апи-запросами

51 lines (46 loc) 1.65 kB
import { StorageKey } from "../../core/storage/utils/storage-key.js"; class CacheUtils { static createMetadata(ttl = 0, tags = []) { const now = Date.now(); const expiresAt = ttl > 0 ? now + ttl : Infinity; return { createdAt: now, updatedAt: now, expiresAt, tags }; } /** ISO timestamps are derived lazily (for logging/debugging) instead of being stored in the cache payload. */ static formatDateTime(timestamp) { return timestamp === Infinity ? 'never' : new Date(timestamp).toISOString(); } static isExpired(metadata) { return Date.now() > metadata.expiresAt; } static updateMetadata(metadata) { return { ...metadata, updatedAt: Date.now() }; } static createKey(...parts) { return new StorageKey(parts.join('_')); } static createApiKey(endpoint, params) { if (!params) return [ new StorageKey(endpoint, true), params ]; const sortedParams = Object.entries(params).sort(([a], [b])=>a.localeCompare(b)).map(([k, v])=>`${k}=${v}`).join('&'); return [ new StorageKey(`${endpoint}_${sortedParams}`, true), params ]; } // Функция для проверки, есть ли у записи определенные теги static hasAnyTag(metadata, tags = []) { if (!metadata.tags || !tags.length) return false; return tags.some((tag)=>metadata.tags?.includes(tag)); } } export { CacheUtils }; //# sourceMappingURL=cache.util.js.map