added result types

This commit is contained in:
Miodec 2022-03-04 00:10:35 +01:00
parent 9de4019b80
commit 9962edd020

View file

@ -72,4 +72,101 @@ declare namespace MonkeyTypes {
modifiedOn: number;
enabled: boolean;
}
type Mode = "time" | "words" | "quote" | "zen" | "custom";
type Mode2<M extends Mode> = 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<M extends Mode> {
_id: string;
wpm: number;
rawWpm: number;
charStats: number[];
correctChars?: number; // --------------
incorrectChars?: number; // legacy results
acc: number;
mode: M;
mode2: Mode2<M>;
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<MonkeyTypes.Mode> {
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;
}
}