Skip to content
File

Blob: src/client/lib/log-events.ts

typescript21 lines
1import type { LogEvent } from "@/contracts";
2 
3export 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};