From 48a412e5be3371b82cd275c8c5788bdeb91e3c8a Mon Sep 17 00:00:00 2001 From: xingchen <1098756313@qq.com> Date: Fri, 25 Sep 2026 11:57:07 +0800 Subject: [PATCH] feat: add src/state.mjs --- src/state.mjs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/state.mjs diff --git a/src/state.mjs b/src/state.mjs new file mode 100644 index 0000000..6c29dda --- /dev/null +++ b/src/state.mjs @@ -0,0 +1,15 @@ +export function advance(state, event) { + const next = { ...state, anomalies: [...state.anomalies] }; + if (event.type === 'ALARM') { + if (next.open) next.anomalies.push('duplicate alarm'); + else { next.open = true; next.firstAlarm = event.time; next.acknowledged = false; } + } else if (event.type === 'ACK') { + if (!next.open) next.anomalies.push('ack without alarm'); + else if (next.acknowledged) next.anomalies.push('duplicate ack'); + else next.acknowledged = true; + } else if (event.type === 'CLEAR') { + if (!next.open) next.anomalies.push('clear without alarm'); + else { next.open = false; next.closedAt = event.time; } + } + return next; +}