From 9962edd020ea78bdbc8a17897d9c6aff8cf5cf55 Mon Sep 17 00:00:00 2001 From: Miodec Date: Fri, 4 Mar 2022 00:10:35 +0100 Subject: [PATCH] added result types --- backend/types/types.d.ts | 97 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/backend/types/types.d.ts b/backend/types/types.d.ts index 75944a9a9..19d9a6985 100644 --- a/backend/types/types.d.ts +++ b/backend/types/types.d.ts @@ -72,4 +72,101 @@ declare namespace MonkeyTypes { modifiedOn: number; enabled: boolean; } + + type Mode = "time" | "words" | "quote" | "zen" | "custom"; + + type Mode2 = keyof PersonalBests[M]; + + type Difficulty = "normal" | "expert" | "master"; + interface PersonalBest { + acc: number; + consistency: number; + difficulty: Difficulty; + lazyMode: boolean; + language: string; + punctuation: boolean; + raw: number; + wpm: number; + timestamp: number; + } + interface PersonalBests { + time: { + [key: number]: PersonalBest[]; + }; + words: { + [key: number]: PersonalBest[]; + }; + quote: { [quote: string]: PersonalBest[] }; + custom: { custom: PersonalBest[] }; + zen: { + zen: PersonalBest[]; + }; + } + + interface ChartData { + wpm: number[]; + raw: number[]; + err: number[]; + unsmoothedRaw?: number[]; + } + + interface KeyStats { + average: number; + sd: number; + } + + interface Result { + _id: string; + wpm: number; + rawWpm: number; + charStats: number[]; + correctChars?: number; // -------------- + incorrectChars?: number; // legacy results + acc: number; + mode: M; + mode2: Mode2; + quoteLength: number; + timestamp: number; + restartCount: number; + incompleteTestSeconds: number; + testDuration: number; + afkDuration: number; + tags: string[]; + consistency: number; + keyConsistency: number; + chartData: ChartData | "toolong"; + uid: string; + keySpacingStats: KeyStats; + keyDurationStats: KeyStats; + isPb?: boolean; + bailedOut?: boolean; + blindMode?: boolean; + lazyMode?: boolean; + difficulty: Difficulty; + funbox?: string; + language: string; + numbers?: boolean; + punctuation?: boolean; + hash?: string; + } + + interface CompletedEvent extends MonkeyTypes.Result { + keySpacing: number[] | "toolong"; + keyDuration: number[] | "toolong"; + customText: MonkeyTypes.CustomText; + smoothConsistency: number; + wpmConsistency: number; + lang: string; + challenge?: string | null; + } + + interface CustomText { + text: string[]; + isWordRandom: boolean; + isTimeRandom: boolean; + word: number; + time: number; + delimiter: string; + textLen?: number; + } }