export type JsonValue = JsonValue[] | boolean | null | number | string | { [key: string]: JsonValue } export function isJsonValue(value: unknown): value is JsonValue { if (value === null) return true if (typeof value === 'boolean' || typeof value === 'string') return true if (typeof value === 'number') return Number.isFinite(value) if (Array.isArray(value)) return [...value].every(isJsonValue) if (typeof value === 'object') return Object.values(value).every(isJsonValue) return false }