scrivito
Version:
Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.
25 lines (19 loc) • 568 B
text/typescript
import { isObject } from 'scrivito_sdk/common';
export function computeCacheKey(data: unknown): string {
const normalizedData = normalizeData(data);
return JSON.stringify(normalizedData);
}
function normalizeData(data: unknown): unknown {
if (Array.isArray(data)) {
return data.map(normalizeData);
}
if (isUnknownObject(data)) {
return Object.keys(data)
.sort()
.map((key) => [key, normalizeData(data[key])]);
}
return data;
}
function isUnknownObject(data: unknown): data is Record<string, unknown> {
return isObject(data);
}