export class PollingTriggerDedupWindow { static readonly defaultCapN = 2000; merge( previous: ReadonlyArray, incoming: ReadonlyArray, capN: number = PollingTriggerDedupWindow.defaultCapN, ): ReadonlyArray { const merged = new Set(previous); for (const id of incoming) { merged.add(id); } const result = [...merged]; if (result.length <= capN) { return result; } return result.slice(result.length - capN); } }