Monitor websites uptime using Cloudflare Workers
Something went wrong. Try again.
TypeScript
at optimization
12345678910111213141516171819202122232425262728293031323334353637383940import type { MonitorSummary } from '@uptime/contracts';import { monitorDisplayName } from './monitor-format.js';
export type MonitorSortKey = 'name' | 'frequency' | 'regions' | 'requests';export type MonitorSortDirection = 'ascending' | 'descending';
const nameCollator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });
export function sortMonitorSummaries( items: readonly MonitorSummary[], key: MonitorSortKey, direction: MonitorSortDirection,): MonitorSummary[] { const multiplier = direction === 'ascending' ? 1 : -1; return [...items].sort((left, right) => { const comparison = compare(left, right, key); if (comparison !== 0) return comparison * multiplier; return nameCollator.compare( monitorDisplayName(left.monitor), monitorDisplayName(right.monitor), ); });}
function compare(left: MonitorSummary, right: MonitorSummary, key: MonitorSortKey) { switch (key) { case 'name': return nameCollator.compare( monitorDisplayName(left.monitor), monitorDisplayName(right.monitor), ); case 'frequency': return left.monitor.intervalSeconds - right.monitor.intervalSeconds; case 'regions': return left.monitor.regionIds.length - right.monitor.regionIds.length; case 'requests': return left.targetChecksPerDay - right.targetChecksPerDay; }}