File
Blob: src/client/lib/log-events.ts
| 1 | import type { LogEvent } from "@/contracts"; |
| 2 | |
| 3 | export const mergeLogEventBySeq = (events: LogEvent[], event: LogEvent): LogEvent[] => { |
| 4 | if (events.some((current) => current.seq === event.seq)) { |
| 5 | return events; |
| 6 | } |
| 7 | |
| 8 | if (events.length === 0 || event.seq > events[events.length - 1]!.seq) { |
| 9 | return [...events, event]; |
| 10 | } |
| 11 | |
| 12 | const next = [...events]; |
| 13 | const insertAt = next.findIndex((current) => current.seq > event.seq); |
| 14 | if (insertAt === -1) { |
| 15 | next.push(event); |
| 16 | } else { |
| 17 | next.splice(insertAt, 0, event); |
| 18 | } |
| 19 | return next; |
| 20 | }; |