synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
51 lines (46 loc) • 1.65 kB
JavaScript
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