refactor: simplify normalization logic for arrays and objects

This commit is contained in:
Johann Schopplich
2025-10-23 15:14:32 +02:00
parent 42b06db4a5
commit 8baff48b3c
2 changed files with 15 additions and 38 deletions

View File

@@ -46,12 +46,12 @@ export function normalizeValue(value: unknown): JsonValue {
// Array
if (Array.isArray(value)) {
return normalizeArray(value)
return value.map(normalizeValue)
}
// Set → array
if (value instanceof Set) {
return normalizeArray(Array.from(value))
return Array.from(value).map(normalizeValue)
}
// Map → object
@@ -63,37 +63,21 @@ export function normalizeValue(value: unknown): JsonValue {
// Plain object
if (isPlainObject(value)) {
return normalizeObject(value)
const result: Record<string, JsonValue> = {}
for (const key in value) {
if (Object.prototype.hasOwnProperty.call(value, key)) {
result[key] = normalizeValue(value[key])
}
}
return result
}
// Fallback: function, symbol, undefined, or other → null
return null
}
export function normalizeArray(value: unknown): JsonArray {
if (!Array.isArray(value)) {
return []
}
return value.map(item => normalizeValue(item))
}
export function normalizeObject(value: unknown): JsonObject {
if (!isPlainObject(value)) {
return {}
}
const result: Record<string, JsonValue> = {}
for (const key in value) {
if (Object.prototype.hasOwnProperty.call(value, key)) {
result[key] = normalizeValue(value[key])
}
}
return result
}
// #endregion
// #region Type guards