( changes: Array<ChangeMessage<any, string | number>>, sentKeys: Set<string | number>, )
| 328 | * Mutates `sentKeys` in place: adds keys on insert, removes on delete. |
| 329 | */ |
| 330 | export function filterDuplicateInserts( |
| 331 | changes: Array<ChangeMessage<any, string | number>>, |
| 332 | sentKeys: Set<string | number>, |
| 333 | ): Array<ChangeMessage<any, string | number>> { |
| 334 | const filtered: Array<ChangeMessage<any, string | number>> = [] |
| 335 | for (const change of changes) { |
| 336 | if (change.type === `insert`) { |
| 337 | if (sentKeys.has(change.key)) { |
| 338 | continue // Skip duplicate |
| 339 | } |
| 340 | sentKeys.add(change.key) |
| 341 | } else if (change.type === `delete`) { |
| 342 | sentKeys.delete(change.key) |
| 343 | } |
| 344 | filtered.push(change) |
| 345 | } |
| 346 | return filtered |
| 347 | } |
| 348 | |
| 349 | /** |
| 350 | * Track the biggest value seen in a stream of changes, used for cursor-based |
no test coverage detected