import { PublishContext } from '../subject' export const bufferSet = (predicate: (value: T) => boolean) => ({ subscribe, next }: PublishContext) => { const set = new Set() subscribe(value => { const oldSize = set.size if (predicate(value)) { set.add(value) } else { set.delete(value) } set.size !== oldSize && next([...set]) }) return () => { set.clear() } }