@yoyo-org/progressive-json
Version:
Stream and render JSON data as it arrives - perfect for AI responses, large datasets, and real-time updates
29 lines (28 loc) • 863 B
JavaScript
import { isPlaceholder } from "./is-placeholder";
export function filterPlaceholders(value) {
if (typeof value === "undefined")
return undefined;
if (typeof value === "string" && isPlaceholder(value)) {
return null; // Remove unresolved placeholder
}
if (typeof value !== "object" || value === null) {
return value;
}
if (Array.isArray(value)) {
return value.map(filterPlaceholders).filter(Boolean);
}
// Handle ref objects (placeholder objects)
if (value.type === "ref" &&
typeof value.key === "string" &&
isPlaceholder(value.key)) {
return null;
}
const result = {};
for (const key in value) {
const filtered = filterPlaceholders(value[key]);
if (filtered !== null) {
result[key] = filtered;
}
}
return result;
}