streamListDiff requires ESM support for browser usage. It will work out of the box if you use a modern bundler (Webpack, Rollup) or JavaScript framework (Next.js, Vue.js).
FORMAT
Input
In a browser environment, ReadableStream refers to the browser's streaming API, and File refers to an uploaded or local file. Examples are provided in the #usage section below.
prevList: ReadableStream<Record<string, unknown>>| File | Record<string, unknown>[], nextList: ReadableStream<Record<string, unknown>>| File | Record<string, unknown>[], referenceProperty: keyof Record<string, unknown>, options: { showOnly?: ("added"|"deleted"|"moved"|"updated"|"equal")[],// [] by default chunksSize?: number,// 0 by default considerMoveAsUpdate?: boolean; // false by default useWorker?: boolean; // true by default showWarnings?: boolean; // true by default}
prevList: the original object list.
nextList: the new object list.
referenceProperty: a property common to all objects in your lists (e.g. id).
options
chunksSize the number of object diffs returned by each streamed chunk. (e.g. 0 = 1 object diff per chunk, 10 = 10 object diffs per chunk).
showOnly gives you the option to return only the values whose status you are interested in (e.g. ["added", "equal"]).
considerMoveAsUpdate: if set to true a moved value will be considered as updated.
useWorker: if set to true, the diff will be run in a worker for maximum performance. Only recommended for large lists (e.g. +100,000 items).
showWarnings: if set to true, potential warnings will be displayed in the console.
Using Readable streams may impact workers' performance since they need to be converted to arrays. Consider using arrays or files for optimal performance. Alternatively, you can turn the useWorker option off.
Output
The objects diff are grouped into arrays - called chunks - and are consumed thanks to an event listener. You have access to 3 events:
data: to be notified when a new chunk of object diffs is available.
finish: to be notified when the stream is finished.
error: to be notified if an error occurs during the stream.