(raw: unknown)
| 46 | * callers should treat that as "tier 4 disabled, fall back to tier 3". |
| 47 | */ |
| 48 | export const parseWindow = (raw: unknown): MaintenanceWindow | null => { |
| 49 | if (!raw || typeof raw !== 'object') return null; |
| 50 | const r = raw as Record<string, unknown>; |
| 51 | if (typeof r.start !== 'string' || typeof r.end !== 'string') return null; |
| 52 | if (r.tz !== 'local' && r.tz !== 'utc') return null; |
| 53 | const s = toMinutes(r.start); |
| 54 | const e = toMinutes(r.end); |
| 55 | if (s == null || e == null) return null; |
| 56 | if (s === e) return null; |
| 57 | return {start: r.start, end: r.end, tz: r.tz}; |
| 58 | }; |
| 59 | |
| 60 | const wallMinutes = (now: Date, tz: MaintenanceWindow['tz']): number => ( |
| 61 | tz === 'utc' |
no test coverage detected