diff --git a/frontend/components/advanced-tools/ServiceStatus.vue b/frontend/components/advanced-tools/ServiceStatus.vue index 0fbb3fb8..6df18666 100644 --- a/frontend/components/advanced-tools/ServiceStatus.vue +++ b/frontend/components/advanced-tools/ServiceStatus.vue @@ -213,6 +213,7 @@ const PROVIDERS = [ { id: 'figma', name: 'Figma', icon: 'simple-icons:figma' }, { id: 'linear', name: 'Linear', icon: 'simple-icons:linear' }, { id: 'stripe', name: 'Stripe', icon: 'simple-icons:stripe' }, + { id: 'npm', name: 'npm', icon: 'ri:npmjs-line' }, ]; const placeholderSizes = [10, 7, 9, 6, 8]; diff --git a/server/service-status-providers.js b/server/service-status-providers.js index f529d5a7..e5bb1257 100644 --- a/server/service-status-providers.js +++ b/server/service-status-providers.js @@ -56,6 +56,7 @@ export const STATUS_PROVIDERS = [ // non-Statuspage schema; www.stripestatus.com is its Statuspage mirror, // which exposes the /api/v2 endpoints this poller needs. { id: 'stripe', name: 'Stripe', api: 'https://www.stripestatus.com', page: 'https://www.stripestatus.com' }, + { id: 'npm', name: 'npm', api: 'https://status.npmjs.org', page: 'https://status.npmjs.org' }, ]; // Whitelist used by requireValidProviderId() — the per-provider detail diff --git a/server/service-status-store.js b/server/service-status-store.js index 3264bbf3..4fd78cb6 100644 --- a/server/service-status-store.js +++ b/server/service-status-store.js @@ -3,7 +3,7 @@ // Rather than fetch upstream status pages on each visitor request, a single // background timer refreshes all providers every REFRESH_INTERVAL and keeps // the latest normalized snapshot in memory. Request handlers just read the -// snapshot — upstream load is constant (16 providers × 2 endpoints / 5 min, +// snapshot — upstream load is constant (17 providers × 2 endpoints / 5 min, // +1 per incident.io page) no matter how much traffic the site gets. // // Mirrors the bootstrap-at-boot + start-scheduler shape of the MaxMind / CAIDA