@yoyo-org/progressive-json
Version:
Stream and render JSON data as it arrives - perfect for AI responses, large datasets, and real-time updates
34 lines (33 loc) • 929 B
JavaScript
export function init(data) {
return { type: "init", data };
}
export function value(key, value) {
return { type: "value", key, value };
}
export function text(key, value) {
return { type: "text", key, value };
}
export function push(key, value) {
return { type: "push", key, value };
}
export function concat(key, value) {
return { type: "concat", key, value };
}
let refKeyCounter = 1;
export function generateRefKey() {
return `ref$${refKeyCounter++}`;
}
export function resetRefKeyCounter() {
refKeyCounter = 1;
}
export function writeln(res) {
return (placeholder) => {
res.write(JSON.stringify(placeholder) + "\n");
};
}
export function writeChunkHeaders(res) {
res.setHeader("Content-Type", "application/json; charset=utf-8");
res.setHeader("Transfer-Encoding", "chunked");
res.setHeader("Cache-Control", "no-cache");
res.setHeader("Connection", "keep-alive");
}