UNPKG

@yoyo-org/progressive-json

Version:

Stream and render JSON data as it arrives - perfect for AI responses, large datasets, and real-time updates

37 lines (36 loc) 1.07 kB
/** * Server-side message creator for merge plugin */ export function merge(key, value) { return { type: "merge", key, value }; } /** * Merge Plugin * * Handles "merge" message type that merges the current placeholder value with a new object. * * Example server usage: * ```ts * writer(merge(userRef, { email: "alice@example.com", verified: true })); * ``` * * This will merge the new properties with the existing user object. */ export const mergePlugin = { type: "merge", handleMessage: (message, store, context) => { // message is guaranteed to be a merge message return context.updateAtPath(store, message.key, (obj, lastKey) => { const currentValue = obj[lastKey]; if (typeof currentValue === "object" && currentValue !== null && !Array.isArray(currentValue)) { obj[lastKey] = { ...currentValue, ...message.value, }; } else { obj[lastKey] = message.value; } }); }, };