From 51cbcebeac8ee543fa24a4ccc90d4ef7293911ec Mon Sep 17 00:00:00 2001 From: Mike Watling Date: Mon, 3 Feb 2025 13:59:38 +0000 Subject: [PATCH] Better types. --- src/interactions/status.ts | 2 +- src/types/util.ts | 37 ++++++++++++++++++++++++------------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/interactions/status.ts b/src/interactions/status.ts index 28984f0..7571802 100644 --- a/src/interactions/status.ts +++ b/src/interactions/status.ts @@ -35,7 +35,7 @@ async function action(client: ClientExt, baseInteraction: CommandInteraction): P ## Planned Maintainece ${statusPage.scheduled_maintenances.length ? statusPage.scheduled_maintenances.map(c => `${c.name}\n${c.incident_updates[0].body}`).join('\n'): 'None'} `); - return interaction.editReply({ embeds: [embed], content: `\`\`\`json\n${JSON.stringify(statusPage, null, 2)}\`\`\`` }); + return interaction.editReply({ embeds: [embed] }); } catch(err) { throw err; diff --git a/src/types/util.ts b/src/types/util.ts index 8d5c4f3..f4b338d 100644 --- a/src/types/util.ts +++ b/src/types/util.ts @@ -215,10 +215,14 @@ export interface IStatusPageFullResponse extends IStatusPageQuickResponse { scheduled_maintenances: IStatusPageIncident[]; } +type StatusPageComponentStatus = 'operational' | 'partial_outage' | string; +type StatusPageIncidentStatus = 'identified' | 'investigating' | 'scheduled' | 'in_progress' | string; +type StatusPageImpact = 'major' | 'critical' | 'minor' | 'none' | string; + interface IStatusPageComponent { id: string; name: string; - status: 'operational' | string; + status: StatusPageComponentStatus; created_at: string; updated_at: string; position: number; @@ -232,25 +236,32 @@ interface IStatusPageComponent { } interface IStatusPageIncident { - created_at: string; id: string; - impact: 'critical' | 'minor' | 'none' | string; - incident_updates: IStatusPageIncidentUpdate[]; - monitoring_at: string | null; name: string; - page_id: string; - resolved_at: string | null; - shortlink: string; - status: 'identified' | string; + status: StatusPageIncidentStatus; + created_at: string; updated_at: string; + monitoring_at: string | null; + resolved_at: string | null; + impact: StatusPageImpact; + shortlink: string; + started_at: string; + page_id: string; + incident_updates: IStatusPageIncidentUpdate[]; } interface IStatusPageIncidentUpdate { - body: string; - created_at: string; - display_at: string; id: string; + status: StatusPageIncidentStatus; + body: string; incident_id: string; - status: 'identified' | 'scheduled' | 'in_progress' | string; + created_at: string; updated_at: string; + display_at: string; + affected_components: { + code: string; + name: string; + old_status: string; + new_status: string; + }[] } \ No newline at end of file