diff --git a/common/.gitignore b/common/.gitignore index f30edecd5..a22d21825 100644 --- a/common/.gitignore +++ b/common/.gitignore @@ -1,3 +1,2 @@ -/js /node_modules /.vscode \ No newline at end of file diff --git a/common/js/config.d.ts b/common/js/config.d.ts new file mode 100644 index 000000000..5b8250112 --- /dev/null +++ b/common/js/config.d.ts @@ -0,0 +1,1139 @@ +import { Game, ChartDocument } from "./types"; +interface ColourStuff { + [index: string]: { + outline: Record; + fill?: Record; + }; +} +declare function GetLevel(xp: number): number; +declare function GetXPForLevel(level: number): number; +declare function GetGrade(game: Game, percent: number): string | null; +declare function ChangeAlpha(string: string, alpha: string): string; +declare function DirectScoreGradeDelta(game: Game, score: number, percent: number, chart: ChartDocument, delta: number): SGDReturn | null; +interface SGDReturn { + grade: string; + delta: number; + formattedString: string; +} +interface PartialScore { + scoreData: { + score: number; + grade: string; + }; +} +declare function ScoreGradeDelta(game: Game, score: PartialScore, chart: ChartDocument, delta: number): SGDReturn | null; +declare function AbsoluteScoreGradeDelta(game: Game, score: number, percent: number, absDelta: number): SGDReturn | null; +declare function PercentToScore(percent: number, game: Game, chartData: ChartDocument): number; +declare function FormatDifficulty(chart: ChartDocument, game: Game): string; +declare const _default: { + supportedGames: Game[]; + gameOrders: { + iidx: string[]; + museca: string[]; + maimai: string[]; + jubeat: string[]; + popn: string[]; + sdvx: string[]; + ddr: string[]; + bms: string[]; + chunithm: string[]; + gitadora: string[]; + usc: string[]; + }; + folders: { + iidx: { + type: string; + levels: string[]; + versions: string[]; + }; + museca: { + type: string; + levels: string[]; + versions: string[]; + }; + maimai: { + type: string; + levels: string[]; + versions: string[]; + }; + jubeat: { + type: string; + levels: string[]; + versions: string[]; + }; + popn: { + type: string; + levels: string[]; + versions: string[]; + }; + ddr: { + type: string; + levels: string[]; + versions: string[]; + }; + sdvx: { + type: string; + levels: string[]; + versions: string[]; + }; + bms: { + type: string; + reasonableLevelMax: number; + levels: never[]; + versions: never[]; + }; + chunithm: { + type: string; + levels: string[]; + versions: string[]; + }; + gitadora: { + type: string; + levels: never[]; + versions: string[]; + reasonableLevelMax: number; + }; + usc: { + type: string; + levels: never[]; + versions: string[]; + }; + }; + internalServiceGames: Record; + versionHuman: Record>; + grades: Record; + lamps: Record; + lampColours: ColourStuff; + gradeColours: ColourStuff; + GetLevel: typeof GetLevel; + GetXPForLevel: typeof GetXPForLevel; + serviceSupportedGames: Record; + defaultPlaytype: Record; + gameChartIndicators: { + iidx: string[]; + popn: string[]; + ddr: string[]; + museca: never[]; + maimai: never[]; + jubeat: string[]; + sdvx: never[]; + usc: never[]; + bms: never[]; + chunithm: never[]; + gitadora: never[]; + }; + GetGrade: typeof GetGrade; + gradeBoundaries: Record; + gameHuman: Record; + ratingParameters: { + iidx: { + failHarshnessMultiplier: number; + pivotPercent: number; + clearExpMultiplier: number; + }; + bms: { + failHarshnessMultiplier: number; + pivotPercent: number; + clearExpMultiplier: number; + }; + museca: { + failHarshnessMultiplier: number; + pivotPercent: number; + clearExpMultiplier: number; + }; + popn: { + failHarshnessMultiplier: number; + pivotPercent: number; + clearExpMultiplier: number; + }; + maimai: { + failHarshnessMultiplier: number; + pivotPercent: number; + clearExpMultiplier: number; + }; + jubeat: { + failHarshnessMultiplier: number; + pivotPercent: number; + clearExpMultiplier: number; + }; + sdvx: { + failHarshnessMultiplier: number; + pivotPercent: number; + clearExpMultiplier: number; + }; + usc: { + failHarshnessMultiplier: number; + pivotPercent: number; + clearExpMultiplier: number; + }; + ddr: { + failHarshnessMultiplier: number; + pivotPercent: number; + clearExpMultiplier: number; + }; + chunithm: { + failHarshnessMultiplier: number; + pivotPercent: number; + clearExpMultiplier: number; + }; + gitadora: { + failHarshnessMultiplier: number; + pivotPercent: number; + clearExpMultiplier: number; + }; + }; + validPlaytypes: Record; + ScoreGradeDelta: typeof ScoreGradeDelta; + judgeColours: { + iidx: { + fill: { + MISS: string; + BAD: string; + GOOD: string; + GREAT: string; + PGREAT: string; + }; + outline: { + MISS: string; + BAD: string; + GOOD: string; + GREAT: string; + PGREAT: string; + }; + }; + bms: { + fill: { + MISS: string; + BAD: string; + GOOD: string; + GREAT: string; + PGREAT: string; + }; + outline: { + MISS: string; + BAD: string; + GOOD: string; + GREAT: string; + PGREAT: string; + }; + }; + ddr: { + fill: { + MISS: string; + BOO: string; + GOOD: string; + GREAT: string; + PERFECT: string; + MARVELOUS: string; + }; + outline: { + MISS: string; + BOO: string; + GOOD: string; + GREAT: string; + PERFECT: string; + MARVELOUS: string; + }; + }; + museca: { + fill: { + MISS: string; + NEAR: string; + CRITICAL: string; + }; + outline: { + MISS: string; + NEAR: string; + CRITICAL: string; + }; + }; + sdvx: { + fill: { + MISS: string; + NEAR: string; + CRITICAL: string; + }; + outline: { + MISS: string; + NEAR: string; + CRITICAL: string; + }; + }; + usc: { + fill: { + MISS: string; + NEAR: string; + CRITICAL: string; + }; + outline: { + MISS: string; + NEAR: string; + CRITICAL: string; + }; + }; + popn: { + fill: { + BAD: string; + GOOD: string; + GREAT: string; + PGREAT: string; + }; + outline: { + BAD: string; + GOOD: string; + GREAT: string; + PGREAT: string; + }; + }; + maimai: { + fill: { + MISS: string; + GOOD: string; + GREAT: string; + PERFECT: string; + }; + outline: { + MISS: string; + GOOD: string; + GREAT: string; + PERFECT: string; + }; + }; + jubeat: { + fill: { + MISS: string; + POOR: string; + GOOD: string; + GREAT: string; + PERFECT: string; + }; + outline: { + MISS: string; + POOR: string; + GOOD: string; + GREAT: string; + PERFECT: string; + }; + }; + chunithm: { + outline: { + MISS: string; + ATTACK: string; + JUSTICE: string; + JCRIT: string; + }; + fill: { + MISS: string; + ATTACK: string; + JUSTICE: string; + JCRIT: string; + }; + }; + gitadora: { + outline: { + MISS: string; + OK: string; + GOOD: string; + GREAT: string; + PERFECT: string; + }; + fill: { + MISS: string; + OK: string; + GOOD: string; + GREAT: string; + PERFECT: string; + }; + }; + }; + gameColours: Record; + validTierlistTiers: Record; + clearLamp: Record; + validModifiers: { + iidx: { + note: string[]; + gauge: string[]; + }; + bms: { + note: string[]; + gauge: string[]; + }; + ddr: { + speed: string[]; + }; + }; + adviceChartTags: { + iidx: string[]; + bms: string[]; + ddr: string[]; + museca: string[]; + sdvx: string[]; + popn: string[]; + jubeat: string[]; + maimai: string[]; + chunithm: string[]; + gitadora: string[]; + usc: string[]; + }; + adviceNoteTags: { + iidx: string[]; + bms: string[]; + ddr: string[]; + museca: string[]; + sdvx: string[]; + usc: string[]; + popn: never[]; + jubeat: never[]; + maimai: never[]; + chunithm: never[]; + gitadora: never[]; + }; + gameRelevantScoreBucket: Record; + judgementWindows: { + iidx: { + SP: { + name: string; + msBorder: number; + value: number; + }[]; + DP: { + name: string; + msBorder: number; + value: number; + }[]; + }; + ddr: { + SP: { + name: string; + msBorder: number; + value: number; + }[]; + DP: { + name: string; + msBorder: number; + value: number; + }[]; + }; + museca: { + Single: { + name: string; + msBorder: number; + value: number; + }[]; + }; + gitadora: { + Gita: { + name: string; + msBorder: number; + value: number; + }[]; + Dora: { + name: string; + msBorder: number; + value: number; + }[]; + }; + }; + PercentToScore: typeof PercentToScore; + ChangeAlpha: typeof ChangeAlpha; + validDifficulties: Record; + validHitData: Record; + validHitMeta: Record; + validAltScores: Record; + levels: { + iidx: string[]; + museca: string[]; + popn: string[]; + ddr: string[]; + sdvx: string[]; + jubeat: string[]; + maimai: string[]; + bms: never[]; + chunithm: string[]; + gitadora: never[]; + usc: string[]; + }; + boundaryHCF: Record; + gameSpecificCalc: Partial>>>; + expChartScale: Record; + FormatDifficulty: typeof FormatDifficulty; + DirectScoreGradeDelta: typeof DirectScoreGradeDelta; + gameSpecificCalcDescriptions: { + iidx: { + SP: { + BPI: string; + "K%": string; + }; + DP: { + BPI: string; + }; + }; + sdvx: { + Single: { + VF4: string; + VF5: string; + }; + }; + ddr: { + SP: { + MFCP: string; + }; + DP: { + MFCP: string; + }; + }; + usc: { + Single: { + VF4: string; + VF5: string; + }; + }; + }; + difficultyShorthand: Record>>; + defaultDifficulty: Record; + gamePercentMax: { + iidx: number; + ddr: number; + gitadora: number; + popn: number; + sdvx: number; + museca: number; + jubeat: number; + bms: number; + chunithm: number; + maimai: number; + maimaidx: number; + usc: number; + }; + AbsoluteScoreGradeDelta: typeof AbsoluteScoreGradeDelta; + defaultGameClasses: { + iidx: { + SP: string; + DP: string; + }; + ddr: { + SP: string; + DP: string; + }; + gitadora: { + Gita: string; + Dora: string; + }; + popn: {}; + sdvx: { + Single: string; + }; + museca: {}; + jubeat: { + Single: string; + }; + bms: { + "7K": string; + }; + chunithm: {}; + maimai: {}; + usc: {}; + }; + gameClassValues: { + iidx: { + SP: { + dan: { + kaiden: { + display: string; + mouseover: string; + index: number; + }; + chuuden: { + display: string; + mouseover: string; + index: number; + }; + 10: { + display: string; + mouseover: string; + index: number; + }; + 9: { + display: string; + mouseover: string; + index: number; + }; + 8: { + display: string; + mouseover: string; + index: number; + }; + 7: { + display: string; + mouseover: string; + index: number; + }; + 6: { + display: string; + mouseover: string; + index: number; + }; + 5: { + display: string; + mouseover: string; + index: number; + }; + 4: { + display: string; + mouseover: string; + index: number; + }; + 3: { + display: string; + mouseover: string; + index: number; + }; + 2: { + display: string; + mouseover: string; + index: number; + }; + 1: { + display: string; + mouseover: string; + index: number; + }; + "1kyu": { + display: string; + mouseover: string; + index: number; + }; + "2kyu": { + display: string; + mouseover: string; + index: number; + }; + "3kyu": { + display: string; + mouseover: string; + index: number; + }; + "4kyu": { + display: string; + mouseover: string; + index: number; + }; + "5kyu": { + display: string; + mouseover: string; + index: number; + }; + "6kyu": { + display: string; + mouseover: string; + index: number; + }; + "7kyu": { + display: string; + mouseover: string; + index: number; + }; + }; + }; + DP: { + dan: { + kaiden: { + display: string; + mouseover: string; + index: number; + }; + chuuden: { + display: string; + mouseover: string; + index: number; + }; + 10: { + display: string; + mouseover: string; + index: number; + }; + 9: { + display: string; + mouseover: string; + index: number; + }; + 8: { + display: string; + mouseover: string; + index: number; + }; + 7: { + display: string; + mouseover: string; + index: number; + }; + 6: { + display: string; + mouseover: string; + index: number; + }; + 5: { + display: string; + mouseover: string; + index: number; + }; + 4: { + display: string; + mouseover: string; + index: number; + }; + 3: { + display: string; + mouseover: string; + index: number; + }; + 2: { + display: string; + mouseover: string; + index: number; + }; + 1: { + display: string; + mouseover: string; + index: number; + }; + "1kyu": { + display: string; + mouseover: string; + index: number; + }; + "2kyu": { + display: string; + mouseover: string; + index: number; + }; + "3kyu": { + display: string; + mouseover: string; + index: number; + }; + "4kyu": { + display: string; + mouseover: string; + index: number; + }; + "5kyu": { + display: string; + mouseover: string; + index: number; + }; + "6kyu": { + display: string; + mouseover: string; + index: number; + }; + "7kyu": { + display: string; + mouseover: string; + index: number; + }; + }; + }; + }; + ddr: { + SP: { + dan: {}; + }; + DP: { + dan: {}; + }; + }; + sdvx: { + Single: { + dan: { + inf: { + display: string; + mouseover: string; + index: number; + }; + 11: { + display: string; + mouseover: string; + index: number; + }; + 10: { + display: string; + mouseover: string; + index: number; + }; + 9: { + display: string; + mouseover: string; + index: number; + }; + 8: { + display: string; + mouseover: string; + index: number; + }; + 7: { + display: string; + mouseover: string; + index: number; + }; + 6: { + display: string; + mouseover: string; + index: number; + }; + 5: { + display: string; + mouseover: string; + index: number; + }; + 4: { + display: string; + mouseover: string; + index: number; + }; + 3: { + display: string; + mouseover: string; + index: number; + }; + 2: { + display: string; + mouseover: string; + index: number; + }; + 1: { + display: string; + mouseover: string; + index: number; + }; + }; + }; + }; + popn: {}; + museca: {}; + jubeat: {}; + bms: { + "7K": { + genocideDan: { + overjoy: { + display: string; + mouseover: string; + }; + kaiden: { + display: string; + mouseover: string; + }; + 10: { + display: string; + mouseover: string; + }; + 9: { + display: string; + mouseover: string; + }; + 8: { + display: string; + mouseover: string; + }; + 7: { + display: string; + mouseover: string; + }; + 6: { + display: string; + mouseover: string; + }; + 5: { + display: string; + mouseover: string; + }; + 4: { + display: string; + mouseover: string; + }; + 3: { + display: string; + mouseover: string; + }; + 2: { + display: string; + mouseover: string; + }; + 1: { + display: string; + mouseover: string; + }; + }; + stDan: { + st11: { + display: string; + mouseover: string; + }; + st10: { + display: string; + mouseover: string; + }; + st9: { + display: string; + mouseover: string; + }; + st8: { + display: string; + mouseover: string; + }; + st7: { + display: string; + mouseover: string; + }; + st6: { + display: string; + mouseover: string; + }; + st5: { + display: string; + mouseover: string; + }; + st4: { + display: string; + mouseover: string; + }; + st3: { + display: string; + mouseover: string; + }; + st2: { + display: string; + mouseover: string; + }; + st1: { + display: string; + mouseover: string; + }; + st0: { + display: string; + mouseover: string; + }; + sl12: { + display: string; + mouseover: string; + }; + sl11: { + display: string; + mouseover: string; + }; + sl10: { + display: string; + mouseover: string; + }; + sl9: { + display: string; + mouseover: string; + }; + sl8: { + display: string; + mouseover: string; + }; + sl7: { + display: string; + mouseover: string; + }; + sl6: { + display: string; + mouseover: string; + }; + sl5: { + display: string; + mouseover: string; + }; + sl4: { + display: string; + mouseover: string; + }; + sl3: { + display: string; + mouseover: string; + }; + sl2: { + display: string; + mouseover: string; + }; + sl1: { + display: string; + mouseover: string; + }; + sl0: { + display: string; + mouseover: string; + }; + }; + }; + }; + chunithm: {}; + gitadora: { + Gita: { + skillColour: { + rainbow: { + display: string; + mouseover: string; + }; + gold: { + display: string; + mouseover: string; + }; + silver: { + display: string; + mouseover: string; + }; + bronze: { + display: string; + mouseover: string; + }; + redgradient: { + display: string; + mouseover: string; + }; + red: { + display: string; + mouseover: string; + }; + purplegradient: { + display: string; + mouseover: string; + }; + purple: { + display: string; + mouseover: string; + }; + bluegradient: { + display: string; + mouseover: string; + }; + blue: { + display: string; + mouseover: string; + }; + greengradient: { + display: string; + mouseover: string; + }; + green: { + display: string; + mouseover: string; + }; + yellowgradient: { + display: string; + mouseover: string; + }; + yellow: { + display: string; + mouseover: string; + }; + orangegradient: { + display: string; + mouseover: string; + }; + orange: { + display: string; + mouseover: string; + }; + white: { + display: string; + mouseover: string; + }; + }; + }; + Dora: { + skillColour: { + rainbow: { + display: string; + mouseover: string; + }; + gold: { + display: string; + mouseover: string; + }; + silver: { + display: string; + mouseover: string; + }; + bronze: { + display: string; + mouseover: string; + }; + redgradient: { + display: string; + mouseover: string; + }; + red: { + display: string; + mouseover: string; + }; + purplegradient: { + display: string; + mouseover: string; + }; + purple: { + display: string; + mouseover: string; + }; + bluegradient: { + display: string; + mouseover: string; + }; + blue: { + display: string; + mouseover: string; + }; + greengradient: { + display: string; + mouseover: string; + }; + green: { + display: string; + mouseover: string; + }; + yellowgradient: { + display: string; + mouseover: string; + }; + yellow: { + display: string; + mouseover: string; + }; + orangegradient: { + display: string; + mouseover: string; + }; + orange: { + display: string; + mouseover: string; + }; + white: { + display: string; + mouseover: string; + }; + }; + }; + }; + maimai: {}; + usc: {}; + }; + validScoreMeta: Record>; + clearGrade: { + iidx: string; + bms: string; + museca: string; + maimai: string; + jubeat: string; + popn: string; + sdvx: string; + ddr: string; + chunithm: string; + gitadora: string; + usc: string; + }; + defaultTable: Record; + folderTables: Record; + supportsESD: Record; +}; +export default _default; diff --git a/common/js/config.js b/common/js/config.js new file mode 100644 index 000000000..8633ecca5 --- /dev/null +++ b/common/js/config.js @@ -0,0 +1,2618 @@ +"use strict"; +// Hi, Just so you know, this code is not representative of the internal site code. +// This has been added to over the course of around 10 months at the time of writing, and is the source +// of some of my first javascript code. +// It's,, alright, but I like the versatility it brings. +Object.defineProperty(exports, "__esModule", { value: true }); +const supportedGames = [ + "iidx", + "museca", + "maimai", + "jubeat", + "popn", + "sdvx", + "ddr", + "bms", + "chunithm", + "gitadora", + "usc", +]; +const serviceSupportedGames = { + PLI: ["iidx"], + ARC: ["iidx", "jubeat", "sdvx", "ddr"], + FLO: ["iidx"], + EAG: ["iidx"], + "e-amusement": ["iidx"], + LR2: ["bms"], + beatoraja: ["bms"], + MER: ["iidx"], + SSS: ["iidx"], + MaimaiNet: ["maimai"], + "BATCH-MANUAL": supportedGames, + "DIRECT-MANUAL": supportedGames, + MANUAL: supportedGames, +}; +// internal services are services that aren't exposed to the public +// but still leverage ImportMain. +const internalServiceGames = { + "ktchi-beatoraja-IR": ["bms"], + FER: ["iidx"], + "ktchi-usc-IR": ["usc"], +}; +const gameSpecificCalc = { + iidx: { + SP: ["BPI", "K%"], + DP: ["BPI"], + }, + sdvx: { + Single: ["VF4", "VF5"], + }, + ddr: { + SP: ["MFCP"], + DP: ["MFCP"], + }, + usc: { + Single: ["VF4", "VF5"], + }, +}; +const gameSpecificCalcDescriptions = { + iidx: { + SP: { + BPI: "Beat Power Index: How good a score is relative to Kaiden Average (BPI 0) and the World Record (BPI 100).", + "K%": "Kaiden Percentile: How many Kaidens you're ahead of on a given chart.", + }, + DP: { + BPI: "Beat Power Index: How good a score is relative to Kaiden Average (BPI 0) and the World Record (BPI 100).", + }, + }, + sdvx: { + Single: { + VF4: "VOLFORCE as calculated in SOUND VOLTEX IV: HEAVENLY HAVEN.", + VF5: "VOLFORCE as calculated in SOUND VOLTEX V: VIVID WAVE.", + }, + }, + ddr: { + SP: { + MFCP: "MFC Points as described in LIFE4.", + }, + DP: { + MFCP: "MFC Points as described in LIFE4.", + }, + }, + usc: { + Single: { + VF4: "VOLFORCE as calculated in SOUND VOLTEX IV: HEAVENLY HAVEN.", + VF5: "VOLFORCE as calculated in SOUND VOLTEX V: VIVID WAVE.", + }, + }, +}; +const validDifficulties = { + iidx: ["BEGINNER", "NORMAL", "HYPER", "ANOTHER", "LEGGENDARIA"], + museca: ["Green", "Yellow", "Red"], + maimai: ["Easy", "Basic", "Advanced", "Expert", "Master", "Re:Master"], + jubeat: ["BSC", "ADV", "EXT"], + popn: ["Easy", "Normal", "Hyper", "EX"], + sdvx: ["NOV", "ADV", "EXH", "MXM", "INF", "GRV", "HVN", "VVD"], + ddr: ["BEGINNER", "BASIC", "DIFFICULT", "EXPERT", "CHALLENGE"], + bms: ["BEGINNER", "NORMAL", "HYPER", "ANOTHER", "INSANE", "CUSTOM"], + chunithm: ["BASIC", "ADVANCED", "EXPERT", "MASTER", "WORLD'S END"], + gitadora: [ + "BASIC", + "ADVANCED", + "EXTREME", + "MASTER", + "BASS BASIC", + "BASS ADVANCED", + "BASS EXTREME", + "BASS MASTER", + ], + usc: ["NOV", "ADV", "EXH", "INF"], +}; +const defaultTable = { + iidx: "Levels (N-1)", + bms: "Insane", + museca: "Levels", + jubeat: "Levels", + popn: "Levels", + sdvx: "Levels", + ddr: "Levels", + chunithm: "Levels", + gitadora: "Levels", + usc: "Levels", + maimai: "Levels", +}; +const folderTables = { + iidx: ["Levels", "Levels (Omnimix)", "Levels (N-1)", "Levels (N-1 Omnimix)", "Versions"], + bms: ["Normal", "Insane", "Overjoy", "Satellite", "Stella", "Insane 2", "Joverjoy"], + museca: ["Levels", "Versions"], + jubeat: ["Levels", "Versions"], + popn: ["Levels", "Versions"], + sdvx: ["Levels", "Versions"], + ddr: ["Levels", "Versions"], + chunithm: ["Levels", "Levels (Omnimix)", "Versions"], + gitadora: ["Levels", "Versions"], + usc: ["Levels", "Versions"], + maimai: ["Levels", "Versions"], +}; +const difficultyShorthand = { + iidx: { + BEGINNER: "B", + NORMAL: "N", + HYPER: "H", + ANOTHER: "A", + LEGGENDARIA: "L", + }, + museca: { + Green: "G", + Yellow: "Y", + Red: "R", + }, + maimai: { + Easy: "e", + Basic: "B", + Advanced: "A", + Expert: "E", + Master: "M", + "Re:Master": "Re", + }, + jubeat: { + BSC: "BSC", + ADV: "ADV", + EXT: "EXT", + }, + popn: { + Easy: "E", + Normal: "N", + Hyper: "H", + EX: "EX", + }, + sdvx: { + NOV: "NOV", + ADV: "ADV", + EXH: "EXH", + MXM: "MXM", + INF: "INF", + GRV: "GRV", + HVN: "HVN", + VVD: "VVD", + }, + ddr: { + BEGINNER: "BG", + BASIC: "B", + DIFFICULT: "D", + EXPERT: "E", + CHALLENGE: "C", + }, + bms: { + BEGINNER: "B", + NORMAL: "N", + HYPER: "H", + ANOTHER: "A", + INSANE: "I", + CUSTOM: "X", + }, + chunithm: { + BASIC: "BSC", + ADVANCED: "ADV", + EXPERT: "EXP", + MASTER: "MAS", + "WORLD'S END": "END", + }, + gitadora: { + BASIC: "BSC", + ADVANCED: "ADV", + EXTREME: "EXT", + MASTER: "MAS", + "BASS BASIC": "BASS BSC", + "BASS ADVANCED": "BASS ADV", + "BASS EXTREME": "BASS EXT", + "BASS MASTER": "BASS MAS", + }, + usc: { + NOV: "NOV", + ADV: "ADV", + EXH: "EXH", + INF: "INF", + }, +}; +const validHitData = { + iidx: ["pgreat", "great", "good", "bad", "poor"], + bms: ["pgreat", "great", "good", "bad", "poor"], + museca: ["critical", "near", "miss"], + ddr: ["marvelous", "perfect", "great", "good", "boo", "miss", "ok", "ng"], + sdvx: ["critical", "near", "miss"], + popn: ["cool", "great", "good", "bad"], + maimai: ["perfect", "great", "good", "miss"], + jubeat: ["perfect", "great", "good", "bad", "miss"], + chunithm: ["jcrit", "justice", "attack", "miss"], + gitadora: ["perfect", "great", "good", "ok", "miss"], + usc: ["critical", "near", "miss"], +}; +const BASE_VALID_HIT_META = ["fast", "slow", "maxCombo"]; +const validHitMeta = { + iidx: ["bp", "gauge", "gaugeHistory", "comboBreak", ...BASE_VALID_HIT_META], + museca: BASE_VALID_HIT_META, + ddr: BASE_VALID_HIT_META, + maimai: BASE_VALID_HIT_META, + jubeat: BASE_VALID_HIT_META, + popn: ["gauge", ...BASE_VALID_HIT_META], + sdvx: ["gauge", ...BASE_VALID_HIT_META], + bms: [ + "bp", + "gauge", + "lbd", + "ebd", + "lpr", + "epr", + "lgd", + "egd", + "lgr", + "egr", + "lpg", + "epg", + "diedAt", + "random", + "inputDevice", + ...BASE_VALID_HIT_META, + ], + chunithm: [...BASE_VALID_HIT_META], + gitadora: [...BASE_VALID_HIT_META], + usc: ["gauge", ...BASE_VALID_HIT_META], +}; +const validScoreMeta = { + iidx: { + optionsRandom: ["NONRAN", "RANDOM", "R-RANDOM", "S-RANDOM", "MIRROR"], + optionsAssist: [ + "AUTO SCRATCH", + "5KEYS", + "LEGACY NOTE", + "ASCR + 5KEY", + "ASCR + LEGACY", + "5KEYS + LEGACY", + "FULL ASSIST", + ], + optionsRange: ["SUDDEN+", "HIDDEN+", "SUD+ HID+", "LIFT", "LIFT SUD+"], + optionsGauge: ["ASSISTED EASY", "EASY", "HARD", "EX-HARD"], + pacemaker: [ + "NO GRAPH", + "MY BEST", + "RIVAL 1", + "RIVAL 2", + "RIVAL 3", + "RIVAL 4", + "RIVAL 5", + "RIVAL NEXT", + "RIVAL BEST", + "RIVAL AVERAGE", + "NATIONAL BEST", + "NATIONAL AVERAGE", + "PREFECTURE BEST", + "PREFECTURE AVERAGE", + "CLASS BEST", + "CLASS AVERAGE", + "VENUE BEST", + "VENUE NEXT", + "PREVIOUS GHOST", + "PACEMAKER AAA", + "PACEMAKER AA", + "PACEMAKER A", + "PACEMAKER" /* ??? */, + "PACEMAKER NEXT", + "PACEMAKER NEXT+", + "PLAYER 1", + "PLAYER 2", + ], + pacemakerName: "string", + pacemakerTarget: "integer", + deadMeasure: "integer", + deadNote: "integer", + }, + museca: {}, + ddr: {}, + maimai: {}, + jubeat: {}, + popn: {}, + sdvx: {}, + bms: {}, + chunithm: {}, + gitadora: {}, + usc: { + noteMod: ["NORMAL", "MIRROR", "RANDOM", "MIR-RAN"], + gaugeMod: ["NORMAL", "HARD"], + }, +}; +const gameColours = { + iidx: "#E7BDB3", + museca: "#C9A4A0", + maimai: "#AE8094", + sdvx: "#D6B7B1", + ddr: "#CC5079", + gitadora: "#CA9CA9", + // gfdm: "#DA836E", + jubeat: "#129A7D", + popn: "#F39CA4", + bms: "#B5DCCD", + chunithm: "#AE8094", + usc: "#D6B7B1", +}; +const gameRelevantScoreBucket = { + iidx: "lamp", + museca: "grade", + maimai: "grade", + sdvx: "grade", + ddr: "lamp", + gitadora: "grade", + // gfdm: "grade", + jubeat: "grade", + popn: "grade", + bms: "lamp", + chunithm: "grade", + usc: "grade", +}; +// human readable stuff for games +const gameHuman = { + iidx: "beatmania IIDX", + museca: "MÚSECA", + maimai: "maimai", + sdvx: "SOUND VOLTEX", + ddr: "DDR", + gitadora: "GITADORA", + jubeat: "jubeat", + popn: "pop'n music", + bms: "BMS", + chunithm: "CHUNITHM", + usc: "unnamed sdvx clone", +}; +// human readable stuff for versions +const versionHuman = { + iidx: { + 0: "1st Style", + 1: "substream", + 2: "2nd Style", + 3: "3rd Style", + 4: "4th Style", + 5: "5th Style", + 6: "6th Style", + 7: "7th Style", + 8: "8th Style", + 9: "9th Style", + 10: "10th Style", + 11: "IIDX RED", + 12: "HAPPY SKY", + 13: "DISTORTED", + 14: "GOLD", + 15: "DJ TROOPERS", + 16: "EMPRESS", + 17: "SIRIUS", + 18: "Resort Anthem", + 19: "Lincle", + 20: "tricoro", + 21: "SPADA", + 22: "PENDUAL", + 23: "copula", + 24: "SINOBUZ", + 25: "CANNON BALLERS", + 26: "ROOTAGE", + 27: "HEROIC VERSE", + }, + museca: { + 1: "", + 1.5: "1+1/2", + }, + maimai: { + maimai: "", + maimaiplus: "PLUS", + green: "GReeN", + greenplus: "GReeN PLUS", + orange: "ORANGE", + orangeplus: "ORANGE PLUS", + pink: "PiNK", + pinkplus: "PiNK PLUS", + murasaki: "MURASAKi", + murasakiplus: "MURASAKi PLUS", + milk: "MiLK", + milkplus: "MiLK PLUS", + finale: "FiNALE", + }, + jubeat: { + jubeat: "", + ripples: "ripples", + knit: "knit", + copious: "copious", + saucer: "saucer", + saucerfulfill: "saucer fulfill", + prop: "prop", + qubell: "Qubell", + clan: "clan", + festo: "festo", + }, + popn: { + 1: "1", + 2: "2", + 3: "3", + 4: "4", + 5: "5", + 6: "6", + 7: "7", + 8: "8", + 9: "9", + 10: "10", + 11: "11", + 12: "12 Iroha", + 13: "13 CARNIVAL", + 14: "14 FEVER!", + 15: "15 ADVENTURE", + 16: "16 PARTY♪", + 17: "17 THE MOVIE", + 18: "18 Sengoku", + 19: "19 TUNE STREET", + 20: "20 fantasia", + park: "Sunny Park", + lapis: "Lapistoria", + eclale: "éclale", + usaneko: "Usaneko", + peace: "peace", + }, + sdvx: { + booth: "BOOTH", + inf: "II -infinite infection-", + gw: "III GRAVITY WARS", + heaven: "IV HEAVENLY HAVEN", + vivid: "V VIVID WAVE", + }, + ddr: { + 1: "1st Mix", + 2: "2nd Mix", + 3: "3rd Mix", + 4: "4th Mix", + 5: "5th Mix", + max: "MAX", + max2: "MAX2", + extreme: "EXTREME", + snova: "SuperNOVA", + snova2: "SuperNOVA 2", + x: "X", + x2: "X2", + x3: "X3 vs. 2nd Mix", + 2013: "(2013)", + 2014: "(2014)", + a: "Ace", + a20: "A20", + }, + chunithm: { + chuni: "", + chuniplus: "PLUS", + air: "AIR", + airplus: "AIR PLUS", + star: "STAR", + starplus: "STAR PLUS", + amazon: "AMAZON", + amazonplus: "AMAZON PLUS", + crystal: "CRYSTAL", + crystalplus: "CRYSTAL PLUS", + }, + gitadora: { + xg: "XG", + xg2: "XG2", + xg3: "XG3", + gitadora: "", + overdrive: "OverDrive", + triboost: "Tri-Boost", + triboostplus: "Tri-Boost (Re:EVOLVE)", + matixx: "Matixx", + exchain: "EXCHAIN", + nextage: "NEX+AGE", + }, + bms: { + 0: "BMS", + }, + usc: { + 0: "USC", + }, +}; +// release orders of the games. +const gameOrders = { + iidx: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + ], + museca: ["1", "1.5"], + maimai: [ + "maimai", + "maimaiplus", + "green", + "greenplus", + "orange", + "orangeplus", + "pink", + "pinkplus", + "murasaki", + "murasakiplus", + "milk", + "milkplus", + "finale", + ], + jubeat: [ + "jubeat", + "ripples", + "knit", + "copious", + "saucer", + "saucerfulfill", + "prop", + "qubell", + "clan", + "festo", + ], + popn: [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "park", + "lapis", + "eclale", + "usaneko", + "peace", + ], + sdvx: ["booth", "inf", "gw", "heaven", "vivid"], + ddr: [ + "1", + "2", + "3", + "4", + "5", + "max", + "max2", + "extreme", + "snova", + "snova2", + "x", + "x2", + "x3", + "2013", + "2014", + "a", + "a20", + ], + bms: ["0"], + chunithm: [ + "chuni", + "chuniplus", + "air", + "airplus", + "star", + "starplus", + "amazon", + "amazonplus", + "crystal", + "crystalplus", + ], + gitadora: [ + "gf1", + "gf2dm1", + "gf3dm2", + "gf4dm3", + "gf5dm4", + "gf6dm5", + "gf7dm6", + "gf8dm7", + "gf8dm7plus", + "gf9dm8", + "gf10dm9", + "gf11dm10", + "v", + "v2", + "v3", + "v4", + "v5", + "v6", + "v7", + "v8", + "xg", + "xg2", + "xg3", + "gitadora", + "overdrive", + "triboost", + "triboostplus", + "matixx", + "exchain", + "nextage", + ], + usc: ["0"], +}; +const defaultPlaytype = { + iidx: "SP", + museca: "Single", + maimai: "Single", + jubeat: "Single", + popn: "9B", + sdvx: "Single", + ddr: "SP", + bms: "7K", + chunithm: "Single", + gitadora: "Dora", + usc: "Single", +}; +const defaultDifficulty = { + iidx: "ANOTHER", + museca: "Red", + maimai: "Master", + jubeat: "EXT", + popn: "EX", + sdvx: "EXH", + ddr: "EXPERT", + bms: "CUSTOM", + chunithm: "MASTER", + gitadora: "MASTER", + usc: "EXH", +}; +// todo, maybe +// const difficultyColours = { +// iidx: { +// "BEGINNER": , +// "NORMAL": , +// "HYPER": , +// "ANOTHER": , +// "LEGGENDARIA": , +// } +// } +// inclusive on both ends. +function __StringRange(min, max) { + let arr = []; + for (let i = min; i <= max; i++) { + arr.push(`${i}`); + } + return arr; +} +// why are levels strings? +// well, not all games use numerical levels - beatstreams highest is kanji, +// but the more common offender is level+, like 7+ or something. +// as such, we use strings to identify here. +// note that all charts have a levelNum property that stores those 7+ things as 7.5 or equivalent. +// and that can be used to query more logically. +const levels = { + iidx: __StringRange(1, 12), + museca: __StringRange(1, 15), + popn: __StringRange(1, 50), + ddr: __StringRange(1, 20), + sdvx: __StringRange(1, 20), + // weirdo games + jubeat: [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9.0", + "9.1", + "9.2", + "9.3", + "9.4", + "9.5", + "9.6", + "9.7", + "9.8", + "9.9", + "10.0", + "10.1", + "10.2", + "10.3", + "10.4", + "10.5", + "10.6", + "10.7", + "10.8", + "10.9", + ], + maimai: [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "7+", + "8", + "8+", + "9", + "9+", + "10", + "10+", + "11", + "11+", + "12", + "12+", + "13", + "13+", + "14", + ], + bms: [], + chunithm: [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "7+", + "8", + "8+", + "9", + "9+", + "10", + "10+", + "11", + "11+", + "12", + "12+", + "13", + "13+", + "14", + "14+", + ], + gitadora: [], + usc: __StringRange(1, 20), +}; +// legacy +const folders = { + iidx: { + type: "static", + levels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], + versions: gameOrders.iidx, + }, + museca: { + type: "static", + levels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], + versions: gameOrders.museca, + }, + maimai: { + type: "static", + levels: [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "7+", + "8", + "8+", + "9", + "9+", + "10", + "10+", + "11", + "11+", + "12", + "12+", + "13", + "13+", + "14", + ], + versions: gameOrders.maimai, + }, + jubeat: { + type: "static", + levels: [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9.0", + "9.1", + "9.2", + "9.3", + "9.4", + "9.5", + "9.6", + "9.7", + "9.8", + "9.9", + "10.0", + "10.1", + "10.2", + "10.3", + "10.4", + "10.5", + "10.6", + "10.7", + "10.8", + "10.9", + ], + versions: gameOrders.jubeat, + }, + popn: { + type: "static", + levels: [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30", + "31", + "32", + "33", + "34", + "35", + "36", + "37", + "38", + "39", + "40", + "41", + "42", + "43", + "44", + "45", + "46", + "47", + "48", + "49", + "50", + ], + versions: gameOrders.popn, + }, + ddr: { + type: "static", + levels: [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + ], + versions: gameOrders.ddr, + }, + sdvx: { + type: "static", + levels: [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + ], + versions: gameOrders.sdvx, + }, + bms: { + type: "tierlist", + reasonableLevelMax: 30, + levels: [], + versions: [], + }, + chunithm: { + type: "static", + levels: [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "7+", + "8", + "8+", + "9", + "9+", + "10", + "10+", + "11", + "11+", + "12", + "12+", + "13", + "13+", + "14", + "14+", + ], + versions: gameOrders.chunithm, + }, + gitadora: { + type: "dynamic", + levels: [], + versions: gameOrders.gitadora, + reasonableLevelMax: 10, + }, + usc: { + type: "static", + levels: [], + versions: gameOrders.usc, + }, +}; +const validPlaytypes = { + iidx: ["SP", "DP"], + popn: ["9B"], + sdvx: ["Single"], + ddr: ["SP", "DP"], + maimai: ["Single"], + jubeat: ["Single"], + museca: ["Single"], + bms: ["7K", "14K", "5K"], + chunithm: ["Single"], + gitadora: ["Gita", "Dora"], + usc: ["Single"], +}; +const validTierlistTiers = { + iidx: ["clear", "hardclear", "exhardclear"], + museca: ["clear"], + maimai: [], + jubeat: [], + popn: [], + sdvx: ["clear", "excessiveclear"], + ddr: ["clear", "perfectfullcombo"], + bms: ["easyclear", "clear", "hardclear", "fullcombo"], + chunithm: [], + gitadora: [], + usc: ["clear", "excessiveclear"], +}; +// correct order for grades +const grades = { + iidx: ["F", "E", "D", "C", "B", "A", "AA", "AAA", "MAX-", "MAX"], + bms: ["F", "E", "D", "C", "B", "A", "AA", "AAA", "MAX-", "MAX"], + museca: ["没", "拙", "凡", "佳", "良", "優", "秀", "傑", "傑G"], + maimai: ["F", "E", "D", "C", "B", "A", "AA", "AAA", "S", "S+", "SS", "SS+", "SSS", "SSS+"], + jubeat: ["E", "D", "C", "B", "A", "S", "SS", "SSS", "EXC"], + popn: ["E", "D", "C", "B", "A", "AA", "AAA", "S"], + sdvx: ["D", "C", "B", "A", "A+", "AA", "AA+", "AAA", "AAA+", "S"], + ddr: [ + "D", + "D+", + "C-", + "C", + "C+", + "B-", + "B", + "B+", + "A-", + "A", + "A+", + "AA-", + "AA", + "AA+", + "AAA", + "MAX", + ], + chunithm: ["D", "C", "B", "BB", "BBB", "A", "AA", "AAA", "S", "SS", "SSS"], + gitadora: ["C", "B", "A", "S", "SS", "MAX"], + usc: ["D", "C", "B", "A", "A+", "AA", "AA+", "AAA", "AAA+", "S"], +}; +const gradeBoundaries = { + iidx: [0, 22.22, 33.33, 44.44, 55.55, 66.66, 77.77, 88.88, 94.44, 100.0], + bms: [0, 22.22, 33.33, 44.44, 55.55, 66.66, 77.77, 88.88, 94.44, 100.0], + museca: [0, 60, 70, 80, 85, 90, 95, 97.5, 100], + // maimai is fidgety with grades - SSS+ is only possible if you get above 100%, but what the limit is depends on the chart + maimai: [0, 10, 20, 40, 60, 80, 90, 94, 97, 98, 99, 99.5, 100, 9999], + jubeat: [0, 50, 70, 80, 85, 90, 95, 98, 100], + popn: [0, 50, 62, 72, 82, 90, 95, 98], + // popn is fidgety with grades - A is the limit of grades if you fail. this NEEDS TO BE HANDLED in importhelpers. - 18/09/2020 isnt done yet lol + sdvx: [0, 70, 80, 87, 90, 93, 95, 97, 98, 99], + ddr: [0, 55, 59, 60, 65, 69, 70, 75, 79, 80, 85, 89, 90, 95, 99, 100], + chunithm: [0, 50, 60, 70, 80, 90, 92.5, 95.0, 97.5, 100, 107.5, 101], + gitadora: [0, 63, 73, 80, 95, 100], + usc: [0, 70, 80, 87, 90, 93, 95, 97, 98, 99], +}; +// these are to resolve some GARBAGE in chart.js +const boundaryHCF = { + iidx: 5.555, + bms: 5.555, + museca: 2.5, + maimai: 0.5, + jubeat: 1, + popn: 1, + sdvx: 1, + ddr: 1, + chunithm: 0.5, + gitadora: 1, + usc: 1, +}; +const expChartScale = { + iidx: 1, + bms: 1, + museca: 5, + maimai: 8, + jubeat: 5, + popn: 1, + sdvx: 7, + usc: 7, + ddr: 6, + chunithm: 4, + gitadora: 3, +}; +// valid lamps for a game, and also in order. +const lamps = { + iidx: [ + "NO PLAY", + "FAILED", + "ASSIST CLEAR", + "EASY CLEAR", + "CLEAR", + "HARD CLEAR", + "EX HARD CLEAR", + "FULL COMBO", + ], + bms: [ + "NO PLAY", + "FAILED", + "ASSIST CLEAR", + "EASY CLEAR", + "CLEAR", + "HARD CLEAR", + "EX HARD CLEAR", + "FULL COMBO", + ], + museca: ["FAILED", "CLEAR", "CONNECT ALL", "PERFECT CONNECT ALL"], + maimai: ["FAILED", "CLEAR", "FULL COMBO", "ALL PERFECT", "ALL PERFECT+"], + jubeat: ["FAILED", "CLEAR", "FULL COMBO", "EXCELLENT"], + popn: ["FAILED", "CLEAR", "FULL COMBO", "PERFECT"], + sdvx: ["FAILED", "CLEAR", "EXCESSIVE CLEAR", "ULTIMATE CHAIN", "PERFECT ULTIMATE CHAIN"], + ddr: [ + "FAILED", + "CLEAR", + "LIFE4", + "FULL COMBO", + "GREAT FULL COMBO", + "PERFECT FULL COMBO", + "MARVELOUS FULL COMBO", + ], + chunithm: ["FAILED", "CLEAR", "FULL COMBO", "ALL JUSTICE", "ALL JUSTICE CRITICAL"], + gitadora: ["FAILED", "CLEAR", "FULL COMBO", "EXCELLENT"], + usc: ["FAILED", "CLEAR", "EXCESSIVE CLEAR", "ULTIMATE CHAIN", "PERFECT ULTIMATE CHAIN"], +}; +// Alternative scores that make sense for the game, note that iidx's money score isn't actually used by anyone +// and is removed in IIDX 28, to nobodies dismay. +const validAltScores = { + iidx: ["money"], + ddr: ["ex"], + bms: ["money"], + sdvx: [], + museca: [], + popn: [], + maimai: [], + jubeat: [], + chunithm: [], + gitadora: [], + usc: [], +}; +// first lamp that is considered a "true clear" by the game. +// laugh now, but who'll be laughing when some nerds at sega come up with a brand new +// minimal clear grade called "SOFTER EASIER ASSIST CLEAR EPIC X3" +const clearLamp = { + iidx: "CLEAR", + bms: "EASY CLEAR", + museca: "CLEAR", + maimai: "CLEAR", + jubeat: "CLEAR", + popn: "CLEAR", + sdvx: "CLEAR", + ddr: "CLEAR", + chunithm: "CLEAR", + gitadora: "CLEAR", + usc: "CLEAR", +}; +// minimum grade considered by the game (or kamaitachi) to be a clearing grade. +const clearGrade = { + iidx: "A", + bms: "A", + museca: "良", + maimai: "A", + jubeat: "A", + popn: "A", + sdvx: "AA", + ddr: "A", + chunithm: "A", + gitadora: "A", + usc: "A", +}; +const validModifiers = { + iidx: { + note: ["NONRAN", "MIRROR", "RANDOM", "R-RANDOM", "S-RANDOM"], + gauge: ["NORMAL", "HARD"], + }, + bms: { + note: ["NONRAN", "MIRROR", "RANDOM", "R-RANDOM", "S-RANDOM"], + gauge: ["NORMAL", "HARD"], + }, + ddr: { + speed: [ + "0.25x", + "0.5x", + "0.75x", + "1x", + "1.25x", + "1.5x", + "1.75x", + "2.0x", + "2.25x", + "2.5x", + "2.75x", + "3.0x", + "3.25x", + "3.5x", + "3.75x", + "4.0x", + "4.5x", + "5.0x", + "5.5x", + "6.0x", + "6.5x", + "7.0x", + "7.5x", + "8.0x", + ], + }, +}; +const judgementWindows = { + iidx: { + SP: [ + { name: "PGREAT", msBorder: 16.667, value: 2 }, + { name: "GREAT", msBorder: 33.333, value: 1 }, + { name: "GOOD", msBorder: 116.667, value: 0 }, + ], + DP: [ + { name: "PGREAT", msBorder: 16.667, value: 2 }, + { name: "GREAT", msBorder: 33.333, value: 1 }, + { name: "GOOD", msBorder: 116.667, value: 0 }, + ], + }, + ddr: { + SP: [ + { name: "MARVELOUS", msBorder: 15, value: 3 }, + { name: "PERFECT", msBorder: 30, value: 2 }, + { name: "GREAT", msBorder: 59, value: 1 }, + { name: "GOOD", msBorder: 89, value: 0 }, + { name: "BAD", msBorder: 119, value: 0 }, + ], + DP: [ + { name: "MARVELOUS", msBorder: 15, value: 3 }, + { name: "PERFECT", msBorder: 30, value: 2 }, + { name: "GREAT", msBorder: 59, value: 1 }, + { name: "GOOD", msBorder: 89, value: 0 }, + { name: "BAD", msBorder: 119, value: 0 }, + ], + }, + museca: { + Single: [ + { name: "CRITICAL", msBorder: 33.333, value: 2 }, + { name: "NEAR", msBorder: 66.667, value: 1 }, + ], + }, + gitadora: { + Gita: [ + { name: "PERFECT", msBorder: 33, value: 1 }, + { name: "GREAT", msBorder: 57, value: 0.5 }, + { name: "GOOD", msBorder: 81, value: 0.2 }, + { name: "OK", msBorder: 116.667 /* not really, but yknow */, value: 0 }, + ], + Dora: [ + { name: "PERFECT", msBorder: 27, value: 1 }, + { name: "GREAT", msBorder: 48, value: 0.5 }, + { name: "GOOD", msBorder: 72, value: 0.2 }, + { name: "OK", msBorder: 116.667 /* not really, but yknow */, value: 0 }, + ], + }, +}; +const _rootChartTags = [ + "INDIVIDUAL DIFFERENCE", + "DIFFICULT INTRO", + "DIFFICULT MIDDLE", + "DIFFICULT END", +]; +const adviceChartTags = { + iidx: [..._rootChartTags, "GENOCLEAR", "RANDOM DEPENDENT"], + bms: [..._rootChartTags, "GENOCLEAR", "RANDOM DEPENDENT"], + ddr: [..._rootChartTags], + museca: [..._rootChartTags], + sdvx: [..._rootChartTags], + popn: [..._rootChartTags], + jubeat: [..._rootChartTags], + maimai: [..._rootChartTags], + chunithm: [..._rootChartTags], + gitadora: [..._rootChartTags], + usc: [..._rootChartTags], +}; +const adviceNoteTags = { + iidx: [ + "SCRATCHING", + "JACKS", + "SOFLAN", + "CHARGE NOTES", + "SCALES", + "CHORD SCALES", + "DENIM", + "TRILLS", + "STREAMS", + "ROLLS", + "CHORDS", + "SPEED", + "STAMINA", + "TECHNICAL", + ], + bms: [ + "SCRATCHING", + "JACKS", + "SOFLAN", + "CHARGE NOTES", + "SCALES", + "CHORD SCALES", + "DENIM", + "TRILLS", + "STREAMS", + "ROLLS", + "CHORDS", + "SPEED", + "STAMINA", + "TECHNICAL", + ], + ddr: [ + "CROSSOVERS", + "GALLOPS", + "JUMPS", + "SOFLAN", + "STOPS", + "TURNS", + "FREEZE NOTES", + "SHOCK ARROWS", + "DRILLS", + "JACKS", + "STEP-JUMPS", + "CANDLES", + "STAMINA", + "TECHNICAL", + ], + museca: ["STREAMS", "TRILLS", "SPINS", "PEDAL", "STAMINA", "TECHNICAL"], + sdvx: ["STREAMS", "JACKS", "LASERS", "SPEED", "TRILLS", "ONE-HANDING", "STAMINA", "TECHNICAL"], + usc: ["STREAMS", "JACKS", "LASERS", "SPEED", "TRILLS", "ONE-HANDING", "STAMINA", "TECHNICAL"], + popn: [], + jubeat: [], + maimai: [], + chunithm: [], + gitadora: [], +}; +const COLOUR_SET = { + gray: "rgba(105, 105, 105, 1)", + maroon: "rgba(85, 17, 17, 1)", + red: "rgba(170, 85, 85, 1)", + paleGreen: "rgba(142,174,79, 1)", + paleBlue: "rgba(92, 97, 153, 1)", + green: "rgba(50, 205, 50, 1)", + blue: "rgba(70, 130, 180, 1)", + gold: "rgba(255, 215, 0, 1)", + vibrantYellow: "rgba(245, 229, 27, 1)", + teal: "rgba(127, 255, 212, 1)", + white: "rgba(192, 192, 192, 1)", + purple: "rgba(153, 50, 204, 1)", + vibrantPurple: "rgba(161, 23, 230, 1)", + paleOrange: "rgba(235, 151, 78, 1)", + orange: "rgba(248, 148, 6, 1)", + vibrantOrange: "rgba(248, 175, 6, 1)", + vibrantBlue: "rgba(43, 149, 237, 1)", + vibrantGreen: "rgba(26, 232, 26, 1)", +}; +const gradeColours = { + museca: { + outline: { + 没: COLOUR_SET.gray, + 拙: COLOUR_SET.maroon, + 凡: COLOUR_SET.red, + 佳: COLOUR_SET.paleGreen, + 良: COLOUR_SET.paleBlue, + 優: COLOUR_SET.green, + 秀: COLOUR_SET.blue, + 傑: COLOUR_SET.teal, + 傑G: COLOUR_SET.gold, + }, + }, + gitadora: { + outline: { + MAX: COLOUR_SET.white, + SS: COLOUR_SET.gold, + S: COLOUR_SET.orange, + A: COLOUR_SET.green, + B: COLOUR_SET.blue, + C: COLOUR_SET.purple, + }, + }, + ddr: { + outline: { + D: COLOUR_SET.gray, + "D+": COLOUR_SET.maroon, + "C-": COLOUR_SET.red, + C: COLOUR_SET.purple, + "C+": COLOUR_SET.vibrantPurple, + "B-": COLOUR_SET.paleBlue, + B: COLOUR_SET.blue, + "B+": COLOUR_SET.vibrantBlue, + "A-": COLOUR_SET.paleGreen, + A: COLOUR_SET.green, + "A+": COLOUR_SET.vibrantGreen, + "AA-": COLOUR_SET.paleOrange, + AA: COLOUR_SET.orange, + "AA+": COLOUR_SET.vibrantOrange, + AAA: COLOUR_SET.gold, + }, + }, + jubeat: { + outline: { + E: COLOUR_SET.gray, + D: COLOUR_SET.maroon, + C: COLOUR_SET.purple, + B: COLOUR_SET.paleBlue, + A: COLOUR_SET.paleGreen, + S: COLOUR_SET.blue, + SS: COLOUR_SET.gold, + SSS: COLOUR_SET.teal, + EXC: COLOUR_SET.white, + }, + }, + maimai: { + outline: { + F: COLOUR_SET.gray, + E: COLOUR_SET.red, + D: COLOUR_SET.maroon, + C: COLOUR_SET.purple, + B: COLOUR_SET.paleGreen, + A: COLOUR_SET.green, + AA: COLOUR_SET.paleBlue, + AAA: COLOUR_SET.blue, + S: COLOUR_SET.gold, + "S+": COLOUR_SET.vibrantYellow, + SS: COLOUR_SET.paleOrange, + "SS+": COLOUR_SET.orange, + SSS: COLOUR_SET.teal, + "SSS+": COLOUR_SET.white, + }, + }, + popn: { + outline: { + F: COLOUR_SET.gray, + E: COLOUR_SET.red, + D: COLOUR_SET.maroon, + C: COLOUR_SET.purple, + B: COLOUR_SET.paleBlue, + A: COLOUR_SET.green, + AA: COLOUR_SET.paleOrange, + AAA: COLOUR_SET.gold, + S: COLOUR_SET.teal, + }, + }, + iidx: { + outline: { + F: COLOUR_SET.gray, + E: COLOUR_SET.red, + D: COLOUR_SET.maroon, + C: COLOUR_SET.purple, + B: COLOUR_SET.paleBlue, + A: COLOUR_SET.green, + AA: COLOUR_SET.blue, + AAA: COLOUR_SET.gold, + "MAX-": COLOUR_SET.teal, + MAX: COLOUR_SET.white, + }, + }, + bms: { + outline: { + F: COLOUR_SET.gray, + E: COLOUR_SET.red, + D: COLOUR_SET.maroon, + C: COLOUR_SET.purple, + B: COLOUR_SET.paleBlue, + A: COLOUR_SET.green, + AA: COLOUR_SET.blue, + AAA: COLOUR_SET.gold, + "MAX-": COLOUR_SET.teal, + MAX: COLOUR_SET.white, + }, + }, + sdvx: { + outline: { + D: COLOUR_SET.gray, + C: COLOUR_SET.red, + B: COLOUR_SET.maroon, + A: COLOUR_SET.paleBlue, + "A+": COLOUR_SET.blue, + AA: COLOUR_SET.paleGreen, + "AA+": COLOUR_SET.green, + AAA: COLOUR_SET.gold, + "AAA+": COLOUR_SET.vibrantYellow, + S: COLOUR_SET.teal, + }, + }, + usc: { + outline: { + D: COLOUR_SET.gray, + C: COLOUR_SET.red, + B: COLOUR_SET.maroon, + A: COLOUR_SET.paleBlue, + "A+": COLOUR_SET.blue, + AA: COLOUR_SET.paleGreen, + "AA+": COLOUR_SET.green, + AAA: COLOUR_SET.gold, + "AAA+": COLOUR_SET.vibrantYellow, + S: COLOUR_SET.teal, + }, + }, + chunithm: { + outline: { + D: COLOUR_SET.red, + C: COLOUR_SET.purple, + B: COLOUR_SET.paleBlue, + BB: COLOUR_SET.blue, + BBB: COLOUR_SET.vibrantBlue, + A: COLOUR_SET.paleGreen, + AA: COLOUR_SET.green, + AAA: COLOUR_SET.vibrantGreen, + S: COLOUR_SET.vibrantOrange, + SS: COLOUR_SET.vibrantYellow, + SSS: COLOUR_SET.teal, + }, + }, +}; +const lampColours = { + gitadora: { + outline: { + FAILED: COLOUR_SET.red, + CLEAR: COLOUR_SET.blue, + "FULL COMBO": COLOUR_SET.teal, + EXCELLENT: COLOUR_SET.gold, + }, + }, + ddr: { + outline: { + FAILED: COLOUR_SET.red, + CLEAR: COLOUR_SET.paleGreen, + LIFE4: COLOUR_SET.orange, + "FULL COMBO": COLOUR_SET.paleBlue, + "GREAT FULL COMBO": COLOUR_SET.green, + "PERFECT FULL COMBO": COLOUR_SET.gold, + "MARVELOUS FULL COMBO": COLOUR_SET.teal, + }, + }, + iidx: { + outline: { + "NO PLAY": COLOUR_SET.gray, + FAILED: COLOUR_SET.red, + "ASSIST CLEAR": COLOUR_SET.purple, + "EASY CLEAR": COLOUR_SET.green, + CLEAR: COLOUR_SET.blue, + "HARD CLEAR": COLOUR_SET.orange, + "EX HARD CLEAR": COLOUR_SET.gold, + "FULL COMBO": COLOUR_SET.teal, + }, + }, + bms: { + outline: { + "NO PLAY": COLOUR_SET.gray, + FAILED: COLOUR_SET.red, + "ASSIST CLEAR": COLOUR_SET.purple, + "EASY CLEAR": COLOUR_SET.green, + CLEAR: COLOUR_SET.blue, + "HARD CLEAR": COLOUR_SET.orange, + "EX HARD CLEAR": COLOUR_SET.gold, + "FULL COMBO": COLOUR_SET.teal, + }, + }, + museca: { + outline: { + FAILED: COLOUR_SET.red, + CLEAR: COLOUR_SET.green, + "CONNECT ALL": COLOUR_SET.teal, + "PERFECT CONNECT ALL": COLOUR_SET.gold, + }, + }, + sdvx: { + outline: { + FAILED: COLOUR_SET.red, + CLEAR: COLOUR_SET.green, + "EXCESSIVE CLEAR": COLOUR_SET.orange, + "ULTIMATE CHAIN": COLOUR_SET.teal, + "PERFECT ULTIMATE CHAIN": COLOUR_SET.gold, + }, + }, + usc: { + outline: { + FAILED: COLOUR_SET.red, + CLEAR: COLOUR_SET.green, + "EXCESSIVE CLEAR": COLOUR_SET.orange, + "ULTIMATE CHAIN": COLOUR_SET.teal, + "PERFECT ULTIMATE CHAIN": COLOUR_SET.gold, + }, + }, + popn: { + outline: { + FAILED: COLOUR_SET.red, + CLEAR: COLOUR_SET.green, + "FULL COMBO": COLOUR_SET.teal, + PERFECT: COLOUR_SET.gold, + }, + }, + maimai: { + outline: { + FAILED: COLOUR_SET.red, + CLEAR: COLOUR_SET.green, + "FULL COMBO": COLOUR_SET.blue, + "ALL PERFECT": COLOUR_SET.gold, + "ALL PERFECT+": COLOUR_SET.teal, + }, + }, + jubeat: { + outline: { + FAILED: COLOUR_SET.red, + CLEAR: COLOUR_SET.paleBlue, + "FULL COMBO": COLOUR_SET.teal, + EXCELLENT: COLOUR_SET.gold, + }, + }, + chunithm: { + outline: { + FAILED: COLOUR_SET.red, + CLEAR: COLOUR_SET.paleGreen, + "FULL COMBO": COLOUR_SET.paleBlue, + "ALL JUSTICE": COLOUR_SET.gold, + "ALL JUSTICE CRITICAL": COLOUR_SET.white, + }, + }, +}; +// ok +// shoutouts to stack overflow +// https://stackoverflow.com/questions/41993515/access-object-key-using-variable-in-typescript +function typedKeys(o) { + return Object.keys(o); +} +for (const colourConfig of [lampColours, gradeColours]) { + for (const game of typedKeys(colourConfig)) { + if (colourConfig.hasOwnProperty(game)) { + colourConfig[game].fill = {}; + for (const key in colourConfig[game].outline) { + if (colourConfig[game].outline.hasOwnProperty(key)) { + const element = colourConfig[game].outline[key]; + if (!element) { + continue; + } + let fadedEl = element.split(","); + fadedEl[fadedEl.length - 1] = "0.2)"; + colourConfig[game].fill[key] = fadedEl.join(","); + } + } + } + } +} +const judgeColours = { + iidx: { + fill: { + MISS: "rgba(211, 38, 38, 0.2)", + BAD: "rgba(165, 38, 211, 0.2)", + GOOD: "rgba(38, 211, 78, 0.2)", + GREAT: "rgba(241, 245, 24, 0.2)", + PGREAT: "rgba(158, 248, 255, 0.2)", + }, + outline: { + MISS: "rgba(211, 38, 38, 1)", + BAD: "rgba(165, 38, 211, 1)", + GOOD: "rgba(38, 211, 78, 1)", + GREAT: "rgba(241, 245, 24, 1)", + PGREAT: "rgba(158, 248, 255, 1)", + }, + }, + bms: { + fill: { + MISS: "rgba(211, 38, 38, 0.2)", + BAD: "rgba(165, 38, 211, 0.2)", + GOOD: "rgba(38, 211, 78, 0.2)", + GREAT: "rgba(241, 245, 24, 0.2)", + PGREAT: "rgba(158, 248, 255, 0.2)", + }, + outline: { + MISS: "rgba(211, 38, 38, 1)", + BAD: "rgba(165, 38, 211, 1)", + GOOD: "rgba(38, 211, 78, 1)", + GREAT: "rgba(241, 245, 24, 1)", + PGREAT: "rgba(158, 248, 255, 1)", + }, + }, + ddr: { + fill: { + MISS: "rgba(211, 38, 38, 0.2)", + BOO: "rgba(165, 38, 211, 0.2)", + GOOD: "rgba(38, 211, 78, 0.2)", + GREAT: COLOUR_SET.green, + PERFECT: "rgba(158, 248, 255, 0.2)", + MARVELOUS: "rgba(241, 245, 24, 0.2)", + }, + outline: { + MISS: "rgba(211, 38, 38, 1)", + BOO: "rgba(165, 38, 211, 1)", + GOOD: "rgba(38, 211, 78, 1)", + GREAT: ChangeAlpha(COLOUR_SET.green, "1"), + PERFECT: "rgba(158, 248, 255, 1)", + MARVELOUS: "rgba(241, 245, 24, 1)", + }, + }, + museca: { + fill: { + MISS: "rgba(211, 38, 38, 0.2)", + NEAR: "rgba(20, 210, 223, 0.2)", + CRITICAL: "rgba(241, 245, 24, 0.2)", + }, + outline: { + MISS: "rgba(211, 38, 38, 1)", + NEAR: "rgba(20, 210, 223, 1)", + CRITICAL: "rgba(241, 245, 24, 1)", + }, + }, + sdvx: { + fill: { + MISS: "rgba(211, 38, 38, 0.2)", + NEAR: "rgba(20, 210, 223, 0.2)", + CRITICAL: "rgba(241, 245, 24, 0.2)", + }, + outline: { + MISS: "rgba(211, 38, 38, 1)", + NEAR: "rgba(20, 210, 223, 1)", + CRITICAL: "rgba(241, 245, 24, 1)", + }, + }, + usc: { + fill: { + MISS: "rgba(211, 38, 38, 0.2)", + NEAR: "rgba(20, 210, 223, 0.2)", + CRITICAL: "rgba(241, 245, 24, 0.2)", + }, + outline: { + MISS: "rgba(211, 38, 38, 1)", + NEAR: "rgba(20, 210, 223, 1)", + CRITICAL: "rgba(241, 245, 24, 1)", + }, + }, + popn: { + fill: { + BAD: "rgba(165, 38, 211, 0.2)", + GOOD: "rgba(239, 84, 81, 0.2)", + GREAT: "rgba(241, 245, 24, 0.2)", + PGREAT: "rgba(158, 248, 255, 0.2)", + }, + outline: { + BAD: "rgba(165, 38, 211, 1)", + GOOD: "rgba(239, 84, 81, 1)", + GREAT: "rgba(241, 245, 24, 1)", + PGREAT: "rgba(158, 248, 255, 1)", + }, + }, + maimai: { + fill: { + MISS: "rgba(211, 38, 38, 0.2)", + GOOD: "rgba(38, 211, 78, 0.2)", + GREAT: "rgba(228, 62, 225, 0.2)", + PERFECT: "rgba(241, 245, 24, 0.2)", + }, + outline: { + MISS: "rgba(211, 38, 38, 1)", + GOOD: "rgba(38, 211, 78, 1)", + GREAT: "rgba(228, 62, 225,1)", + PERFECT: "rgba(241, 245, 24, 1)", + }, + }, + jubeat: { + fill: { + MISS: "rgba(211, 38, 38, 0.2)", + POOR: "rgba(165, 38, 211, 0.2)", + GOOD: "rgba(39, 190, 117,0.2)", + GREAT: "rgba(38, 211, 78, 0.2)", + PERFECT: "rgba(241, 245, 24, 0.2)", + }, + outline: { + MISS: "rgba(211, 38, 38, 1)", + POOR: "rgba(165, 38, 211, 1)", + GOOD: "rgba(39, 190, 117, 1)", + GREAT: "rgba(38, 211, 78, 1)", + PERFECT: "rgba(241, 245, 24, 1)", + }, + }, + chunithm: { + outline: { + MISS: COLOUR_SET.gray, + ATTACK: COLOUR_SET.green, + JUSTICE: COLOUR_SET.orange, + JCRIT: COLOUR_SET.gold, + }, + fill: { + MISS: ChangeAlpha(COLOUR_SET.gray, "1"), + ATTACK: ChangeAlpha(COLOUR_SET.green, "1"), + JUSTICE: ChangeAlpha(COLOUR_SET.orange, "1"), + JCRIT: ChangeAlpha(COLOUR_SET.gold, "1"), + }, + }, + gitadora: { + outline: { + MISS: COLOUR_SET.red, + OK: COLOUR_SET.purple, + GOOD: COLOUR_SET.blue, + GREAT: COLOUR_SET.green, + PERFECT: COLOUR_SET.gold, + }, + fill: { + MISS: ChangeAlpha(COLOUR_SET.red, "1"), + OK: ChangeAlpha(COLOUR_SET.purple, "1"), + GOOD: ChangeAlpha(COLOUR_SET.blue, "1"), + GREAT: ChangeAlpha(COLOUR_SET.green, "1"), + PERFECT: ChangeAlpha(COLOUR_SET.gold, "1"), + }, + }, +}; +const gameChartIndicators = { + iidx: ["cn", "bss", "hcn", "hbss"], + popn: ["holds"], + ddr: ["shocks", "freezes"], + museca: [], + maimai: [], + jubeat: ["holds"], + sdvx: [], + usc: [], + bms: [], + chunithm: [], + gitadora: [], +}; +/// XP STUFFS +const LEVEL_INCREASE = 0.1; // exponentiation such that XP(level+1) = XP(level) * 1.25 +const MULTIPLIER = 1000; // multiplies all xp values by this so we get nice things like 125 instead of 1.25 +const LNELEVENTENTHS = Math.log(1 + LEVEL_INCREASE); // ln(1.1); that's ln(1+b). +function GetLevel(xp) { + // invXP curve: log1b((x/t)+1) where log1b is log to the base 1+b. + // i did the maths, u can check it urself with algebra + return Math.floor(Math.log(xp / MULTIPLIER + 1) / LNELEVENTENTHS); +} +function GetXPForLevel(level) { + // xp curve: https://www.desmos.com/calculator/cpvz7g5sy7 + // (t(1+b)^x) - t + return Math.ceil(MULTIPLIER * Math.pow((1 + LEVEL_INCREASE), level) - MULTIPLIER); +} +function GetGrade(game, percent) { + // THIS FOR LOOP IS ITERATING DOWNWARDS + // JUST INCASE YOU DON'T ACTUALLY READ IT PROPERLY + for (let i = grades[game].length; i >= 0; i--) { + let gradeName = grades[game][i]; + let gradeBound = gradeBoundaries[game][i]; + if (percent >= gradeBound) { + return gradeName; + } + } + // if we get all this way they've got a negative score + // idk what to write in this case so ur gonna get null and throw an error in my logs + return null; +} +const ratingParameters = { + iidx: { + failHarshnessMultiplier: 0.3, + pivotPercent: 0.7777, + clearExpMultiplier: 1, + }, + bms: { + failHarshnessMultiplier: 0.5, + pivotPercent: 0.7777, + clearExpMultiplier: 0.75, + }, + museca: { + failHarshnessMultiplier: 1, + pivotPercent: 0.8, + clearExpMultiplier: 1, + }, + popn: { + failHarshnessMultiplier: 1, + pivotPercent: 0.8, + clearExpMultiplier: 0.4, + }, + maimai: { + failHarshnessMultiplier: 1, + pivotPercent: 0.8, + clearExpMultiplier: 1, + }, + jubeat: { + failHarshnessMultiplier: 0.9, + pivotPercent: 0.7, + clearExpMultiplier: 1, + }, + sdvx: { + failHarshnessMultiplier: 1, + pivotPercent: 0.92, + clearExpMultiplier: 1.45, + }, + usc: { + failHarshnessMultiplier: 1, + pivotPercent: 0.92, + clearExpMultiplier: 1.45, + }, + ddr: { + failHarshnessMultiplier: 0.9, + pivotPercent: 0.9, + clearExpMultiplier: 1, + }, + chunithm: { + failHarshnessMultiplier: 1, + pivotPercent: 0.975, + clearExpMultiplier: 1.1, + }, + gitadora: { + // GENERIC PARAMS. THIS IS **NOT** THE USED CALC. + failHarshnessMultiplier: 1, + pivotPercent: 0.8, + clearExpMultiplier: 1.1, + }, +}; +function ChangeAlpha(string, alpha) { + let spl = string.split(","); + spl[spl.length - 1] = `${alpha})`; + return spl.join(","); +} +function DirectScoreGradeDelta(game, score, percent, chart, delta) { + let grade = GetGrade(game, percent); + if (!grade) { + throw new Error(`Invalid grade created from ${game}, ${percent}`); + } + let scoreObj = { + scoreData: { + score, + grade, + }, + }; + return ScoreGradeDelta(game, scoreObj, chart, delta); +} +const supportsESD = { + iidx: true, + museca: false, + bms: false, + chunithm: false, + ddr: false, + gitadora: false, + jubeat: false, + maimai: false, + popn: false, + sdvx: false, + usc: false, +}; +function ScoreGradeDelta(game, score, chart, delta) { + let nextGrade = grades[game][grades[game].indexOf(score.scoreData.grade) + delta]; + if (nextGrade) { + let nextGradePercent = gradeBoundaries[game][grades[game].indexOf(nextGrade)]; + let nGScore = CalculateScore(game, nextGradePercent, chart); + if (nGScore) { + let delta = score.scoreData.score - nGScore; + let formattedString = `(${nextGrade})`; + if (Number.isInteger(delta)) { + formattedString += delta >= 0 ? `+${delta}` : `${delta}`; + } + else { + formattedString += delta >= 0 ? `+${delta.toFixed(2)}` : `${delta.toFixed(2)}`; + } + return { + grade: nextGrade, + delta: delta, + formattedString: formattedString, + }; + } + else { + return null; + } + } + else { + return null; + } +} +function AbsoluteScoreGradeDelta(game, score, percent, absDelta) { + let grade = grades[game][absDelta]; + if (grade) { + let chart = null; + if (game === "iidx" || game === "bms") { + let reversedNC = Math.floor((score / percent) * 100) / 2; + chart = { + notedata: { + notecount: reversedNC, + }, + }; + } + let sc = CalculateScore(game, gradeBoundaries[game][absDelta], chart); + if (sc) { + let delta = score - sc; + let formattedString = `(${grade})`; + formattedString += delta >= 0 ? `+${delta}` : `${delta}`; + return { + grade: grade, + delta: delta, + formattedString: formattedString, + }; + } + else { + return null; + } + } + else { + return null; + } +} +function CalculateScore(game, percent, chart) { + let score = percent; + if (game === "iidx" || game === "bms") { + score = chart.notedata.notecount * 2 * (percent / 100); + } + else if (game === "ddr") { + score = 1000000 * (percent / 100); + } + else if (game === "museca" || game === "jubeat") { + score = 1000000 * (percent / 100); + } + else if (game === "popn") { + score = 100000 * (percent / 100); + } + else if (game === "sdvx" || game === "usc") { + score = 10000000 * (percent / 100); + } + else if (game === "chunithm") { + score = 1000000 * (percent / 100); + } + if (score) { + return score; + } + return null; +} +function PercentToScore(percent, game, chartData) { + let eScore = 0; + if (game === "iidx" || game === "bms") { + eScore = percent * chartData.notedata.notecount * 2; + } + else if (game === "museca" || game === "jubeat") { + eScore = percent * 1000000; + } + else if (game === "popn") { + eScore = percent * 100000; + } + else if (game === "sdvx" || game === "usc") { + eScore = percent * 10000000; + } + else if (game === "ddr") { + // todo + } + else if (game === "chunithm") { + eScore = percent * 1000000; + } + else if (game === "gitadora") { + eScore = percent; + } + return eScore; +} +function FormatDifficulty(chart, game) { + if (validPlaytypes[game].length > 1) { + return `${chart.playtype} ${chart.difficulty} ${chart.level}`; + } + return chart.difficulty; +} +const gamePercentMax = { + iidx: 100, + ddr: 100, + gitadora: 100, + popn: 100, + sdvx: 100, + museca: 100, + jubeat: 100, + bms: 100, + chunithm: 101, + maimai: 150, + maimaidx: 150, + usc: 100, +}; +const __internalIIDXDans = { + kaiden: { + display: "皆伝", + mouseover: "Kaiden", + index: 12, + }, + chuuden: { + display: "中伝", + mouseover: "Chuuden", + index: 11, + }, + 10: { + display: "十段", + mouseover: "10th Dan", + index: 10, + }, + 9: { + display: "九段", + mouseover: "9th Dan", + index: 9, + }, + 8: { + display: "八段", + mouseover: "8th Dan", + index: 8, + }, + 7: { + display: "七段", + mouseover: "7th Dan", + index: 7, + }, + 6: { + display: "六段", + mouseover: "6th Dan", + index: 6, + }, + 5: { + display: "五段", + mouseover: "5th Dan", + index: 5, + }, + 4: { + display: "四段", + mouseover: "4th Dan", + index: 4, + }, + 3: { + display: "三段", + mouseover: "3rd Dan", + index: 3, + }, + 2: { + display: "二段", + mouseover: "2nd Dan", + index: 2, + }, + 1: { + display: "初段", + mouseover: "1st Dan", + index: 1, + }, + "1kyu": { + display: "一級", + mouseover: "1st Kyu", + index: -1, + }, + "2kyu": { + display: "二級", + mouseover: "2nd Kyu", + index: -2, + }, + "3kyu": { + display: "三級", + mouseover: "3rd Kyu", + index: -3, + }, + "4kyu": { + display: "四級", + mouseover: "4th Kyu", + index: -4, + }, + "5kyu": { + display: "五級", + mouseover: "5th Kyu", + index: -5, + }, + "6kyu": { + display: "六級", + mouseover: "6th Kyu", + index: -6, + }, + "7kyu": { + display: "七級", + mouseover: "7th Kyu", + index: -7, + }, +}; +const __internalSDVXDans = { + inf: { + display: "LV.∞", + mouseover: "Inf. Dan", + index: 12, + }, + 11: { + display: "LV.11", + mouseover: "11th Dan", + index: 11, + }, + 10: { + display: "LV.10", + mouseover: "10th Dan", + index: 10, + }, + 9: { + display: "LV.09", + mouseover: "9th Dan", + index: 9, + }, + 8: { + display: "LV.08", + mouseover: "8th Dan", + index: 8, + }, + 7: { + display: "LV.07", + mouseover: "7th Dan", + index: 7, + }, + 6: { + display: "LV.06", + mouseover: "6th Dan", + index: 6, + }, + 5: { + display: "LV.05", + mouseover: "5th Dan", + index: 5, + }, + 4: { + display: "LV.04", + mouseover: "4th Dan", + index: 4, + }, + 3: { + display: "LV.03", + mouseover: "3rd Dan", + index: 3, + }, + 2: { + display: "LV.02", + mouseover: "2nd Dan", + index: 2, + }, + 1: { + display: "LV.01", + mouseover: "1st Dan", + index: 1, + }, +}; +// unimplemented +const __internalDDRDans = {}; +const __internalGitadoraColours = { + rainbow: { + display: "虹", + mouseover: "Rainbow", + }, + gold: { + display: "金", + mouseover: "Gold", + }, + silver: { + display: "銀", + mouseover: "Silver", + }, + bronze: { + display: "銅", + mouseover: "Bronze", + }, + redgradient: { + display: "赤グラ", + mouseover: "Red Gradient", + }, + red: { + display: "赤", + mouseover: "Red", + }, + purplegradient: { + display: "紫グラ", + mouseover: "Purple Gradient", + }, + purple: { + display: "紫", + mouseover: "Purple", + }, + bluegradient: { + display: "青グラ", + mouseover: "Blue Gradient", + }, + blue: { + display: "青", + mouseover: "Blue", + }, + greengradient: { + display: "緑グラ", + mouseover: "Green Gradient", + }, + green: { + display: "緑", + mouseover: "Green", + }, + yellowgradient: { + display: "黄グラ", + mouseover: "Yellow Gradient", + }, + yellow: { + display: "黄", + mouseover: "Yellow", + }, + orangegradient: { + display: "橙グラ", + mouseover: "Orange Gradient", + }, + orange: { + display: "橙", + mouseover: "Orange", + }, + white: { + display: "白", + mouseover: "White", + }, +}; +const __internalGenocideDans = { + overjoy: { + display: "(^^)", + mouseover: "Overjoy", + }, + kaiden: { + display: "★★", + mouseover: "Insane Kaiden", + }, + 10: { + display: "★10", + mouseover: "Insane 10th Dan", + }, + 9: { + display: "★9", + mouseover: "Insane 9th Dan", + }, + 8: { + display: "★8", + mouseover: "Insane 8th Dan", + }, + 7: { + display: "★7", + mouseover: "Insane 7th Dan", + }, + 6: { + display: "★6", + mouseover: "Insane 6th Dan", + }, + 5: { + display: "★5", + mouseover: "Insane 5th Dan", + }, + 4: { + display: "★4", + mouseover: "Insane 4th Dan", + }, + 3: { + display: "★3", + mouseover: "Insane 3rd Dan", + }, + 2: { + display: "★2", + mouseover: "Insane 2nd Dan", + }, + 1: { + display: "★1", + mouseover: "Insane 1st Dan", + }, +}; +const __internalStellaDans = { + st11: { + display: "st11", + mouseover: "Stella Skill Simulator st11", + }, + st10: { + display: "st10", + mouseover: "Stella Skill Simulator st10", + }, + st9: { + display: "st9", + mouseover: "Stella Skill Simulator st9", + }, + st8: { + display: "st8", + mouseover: "Stella Skill Simulator st8", + }, + st7: { + display: "st7", + mouseover: "Stella Skill Simulator st7", + }, + st6: { + display: "st6", + mouseover: "Stella Skill Simulator st6", + }, + st5: { + display: "st5", + mouseover: "Stella Skill Simulator st5", + }, + st4: { + display: "st4", + mouseover: "Stella Skill Simulator st4", + }, + st3: { + display: "st3", + mouseover: "Stella Skill Simulator st3", + }, + st2: { + display: "st2", + mouseover: "Stella Skill Simulator st2", + }, + st1: { + display: "st1", + mouseover: "Stella Skill Simulator st1", + }, + st0: { + display: "st0", + mouseover: "Stella Skill Simulator st0", + }, + sl12: { + display: "sl12", + mouseover: "Satellite Skill Simulator sl12", + }, + sl11: { + display: "sl11", + mouseover: "Satellite Skill Simulator sl11", + }, + sl10: { + display: "sl10", + mouseover: "Satellite Skill Simulator sl10", + }, + sl9: { + display: "sl9", + mouseover: "Satellite Skill Simulator sl9", + }, + sl8: { + display: "sl8", + mouseover: "Satellite Skill Simulator sl8", + }, + sl7: { + display: "sl7", + mouseover: "Satellite Skill Simulator sl7", + }, + sl6: { + display: "sl6", + mouseover: "Satellite Skill Simulator sl6", + }, + sl5: { + display: "sl5", + mouseover: "Satellite Skill Simulator sl5", + }, + sl4: { + display: "sl4", + mouseover: "Satellite Skill Simulator sl4", + }, + sl3: { + display: "sl3", + mouseover: "Satellite Skill Simulator sl3", + }, + sl2: { + display: "sl2", + mouseover: "Satellite Skill Simulator sl2", + }, + sl1: { + display: "sl1", + mouseover: "Satellite Skill Simulator sl1", + }, + sl0: { + display: "sl0", + mouseover: "Satellite Skill Simulator sl0", + }, +}; +const gameClassValues = { + iidx: { + SP: { + dan: __internalIIDXDans, + }, + DP: { + dan: __internalIIDXDans, + }, + }, + ddr: { + SP: { + dan: __internalDDRDans, + }, + DP: { + dan: __internalDDRDans, + }, + }, + sdvx: { + Single: { + dan: __internalSDVXDans, + }, + }, + popn: {}, + museca: {}, + jubeat: {}, + bms: { + "7K": { + genocideDan: __internalGenocideDans, + stDan: __internalStellaDans, + }, + }, + chunithm: {}, + gitadora: { + Gita: { + skillColour: __internalGitadoraColours, + }, + Dora: { + skillColour: __internalGitadoraColours, + }, + }, + maimai: {}, + usc: {}, +}; +const defaultGameClasses = { + iidx: { + SP: "dan", + DP: "dan", + }, + ddr: { + SP: "dan", + DP: "dan", + }, + gitadora: { + Gita: "skillColour", + Dora: "skillColour", + }, + popn: {}, + sdvx: { + Single: "dan", + }, + museca: {}, + jubeat: { + Single: "jubilityColour", + }, + bms: { + "7K": "genocideDan", + }, + chunithm: {}, + maimai: {}, + usc: {}, +}; +exports.default = { + supportedGames, + gameOrders, + folders, + internalServiceGames, + versionHuman, + grades, + lamps, + lampColours, + gradeColours, + GetLevel, + GetXPForLevel, + serviceSupportedGames, + defaultPlaytype, + gameChartIndicators, + GetGrade, + gradeBoundaries, + gameHuman, + ratingParameters, + validPlaytypes, + ScoreGradeDelta, + judgeColours, + gameColours, + validTierlistTiers, + clearLamp, + validModifiers, + adviceChartTags, + adviceNoteTags, + gameRelevantScoreBucket, + judgementWindows, + PercentToScore, + ChangeAlpha, + validDifficulties, + validHitData, + validHitMeta, + validAltScores, + levels, + boundaryHCF, + gameSpecificCalc, + expChartScale, + FormatDifficulty, + DirectScoreGradeDelta, + gameSpecificCalcDescriptions, + difficultyShorthand, + defaultDifficulty, + gamePercentMax, + AbsoluteScoreGradeDelta, + defaultGameClasses, + gameClassValues, + validScoreMeta, + clearGrade, + defaultTable, + folderTables, + supportsESD, +}; +//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/common/js/config.js.map b/common/js/config.js.map new file mode 100644 index 000000000..9937e8218 --- /dev/null +++ b/common/js/config.js.map @@ -0,0 +1 @@ +{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/common/js/index.d.ts b/common/js/index.d.ts new file mode 100644 index 000000000..45c4af1a9 --- /dev/null +++ b/common/js/index.d.ts @@ -0,0 +1,3 @@ +export * from "./types"; +import config from "./config"; +export default config; diff --git a/common/js/index.js b/common/js/index.js new file mode 100644 index 000000000..401be3eff --- /dev/null +++ b/common/js/index.js @@ -0,0 +1,19 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./types"), exports); +const config_1 = __importDefault(require("./config")); +exports.default = config_1.default; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/common/js/index.js.map b/common/js/index.js.map new file mode 100644 index 000000000..007965bed --- /dev/null +++ b/common/js/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0CAAwB;AAExB,sDAA8B;AAE9B,kBAAe,gBAAM,CAAC"} \ No newline at end of file diff --git a/common/js/types.d.ts b/common/js/types.d.ts new file mode 100644 index 000000000..6427f0c57 --- /dev/null +++ b/common/js/types.d.ts @@ -0,0 +1,494 @@ +import { IObjectID } from "monk"; +/** + * All MongoDB Documents require this field, or atleast they all have them in ktchi's DB. + */ +export interface MongoDBDocument { + _id?: IObjectID; +} +export declare type Databases = "sessions" | "folders" | "scores" | "queries" | "rivals" | "notifications" | "imports" | "tierlistdata" | "tierlist" | "goals" | "user-goals" | "user-milestones" | "milestones" | "users"; +/** + * ValidNBQDatabases: Indicates the databases expected by FQ config overrides. + */ +export declare type ValidNBQDatabases = Databases | "songs" | "charts"; +export declare type ValidDatabases = Databases | `songs-${Game}` | `charts-${Game}`; +/** + * Supported games by Kamaitachi. + */ +export declare type Game = "iidx" | "museca" | "maimai" | "jubeat" | "popn" | "sdvx" | "ddr" | "bms" | "chunithm" | "gitadora" | "usc"; +/** + * This is the generic response from the Kamaitachi API in event of a failure. + */ +export interface UnsuccessfulAPIResponse { + success: false; + description: string; +} +/** + * In the event of a successful API request, body is attached onto the request, which contains + * endpoint-defined information about the response, such as database data. + */ +export interface SuccessfulAPIResponse { + success: true; + description: string; + body: Record; +} +export interface ChartFolderLookupDocument extends MongoDBDocument { + chartID: string; + folderID: string; +} +export interface Playtypes { + iidx: "SP" | "DP"; + popn: "9B"; + sdvx: "Single"; + usc: "Single"; + ddr: "SP" | "DP"; + maimai: "Single"; + jubeat: "Single"; + museca: "Single"; + bms: "7K" | "14K" | "5K"; + chunithm: "Single"; + gitadora: "Gita" | "Dora"; +} +export interface Difficulties { + iidx: "BEGINNER" | "NORMAL" | "HYPER" | "ANOTHER" | "LEGGENDARIA"; + museca: "Green" | "Yellow" | "Red"; + maimai: "Easy" | "Basic" | "Advanced" | "Expert" | "Master" | "Re:Master"; + jubeat: "BSC" | "ADV" | "EXT"; + popn: "Easy" | "Normal" | "Hyper" | "EX"; + sdvx: "NOV" | "ADV" | "EXH" | "MXM" | "INF" | "GRV" | "HVN" | "VVD"; + ddr: "BEGINNER" | "BASIC" | "DIFFICULT" | "EXPERT" | "CHALLENGE"; + bms: "BEGINNER" | "NORMAL" | "HYPER" | "ANOTHER" | "INSANE" | "CUSTOM"; + chunithm: "BASIC" | "ADVANCED" | "EXPERT" | "MASTER" | "WORLD'S END"; + gitadora: "BASIC" | "ADVANCED" | "EXTREME" | "MASTER" | "BASS BASIC" | "BASS ADVANCED" | "BASS EXTREME" | "BASS MASTER"; + usc: "NOV" | "ADV" | "EXH" | "INF"; +} +export interface CustomRatings { + iidx: { + SP: { + BPI: number; + "K%": number; + }; + DP: { + BPI: number; + }; + }; + popn: { + "9B": Record; + }; + sdvx: { + Single: { + VF4: number; + VF5: number; + }; + }; + usc: { + Single: { + VF4: number; + VF5: number; + }; + }; + ddr: { + SP: { + MFCP: integer; + }; + DP: { + MFCP: integer; + }; + }; + maimai: { + Single: Record; + }; + jubeat: { + Single: { + jubility: number; + }; + }; + museca: { + Single: Record; + }; + bms: { + "7K": Record; + "5K": Record; + "14K": Record; + }; + chunithm: { + Single: Record; + }; + gitadora: { + Single: Record; + }; +} +/** + * An alias for number, that makes part of the code self-documenting. + * Note that if it were possible to enforce integer-y ness, then I would absolutely do so here + * but i can not. + */ +export declare type integer = number; +export declare type Ratings = Record>; +export interface GoalChartQuery { + collection: ValidDatabases; + query: Record; +} +export interface GoalDocument extends MongoDBDocument { + directChartID: string | null; + directChartIDs?: string[] | null; + chartQuery: GoalChartQuery | null; + scoreQuery: Record; + criteria: { + type: "gte" | "lte" | "lt" | "gt" | "anyMatch" | "all"; + value: number | null; + mode?: "proportion" | null; + }; + title: string; + goalID: string; + timeAdded: integer; + createdBy: integer; + game: Game; + playtype: Playtypes[Game]; +} +export interface RivalGroupDocument extends MongoDBDocument { + name: string; + desc: string; + founderID: integer; + members: integer[]; + mutualGroup: boolean; + isDefault: boolean; + game: Game; + playtype: Playtypes[Game]; + settings: { + scoreCompareMode: "relevant" | "folder"; + strictness: number; + boundary: number; + scoreCompareFolderID: string | null; + cellShading: "grade" | "lamp"; + }; + rivalGroupID: string; +} +declare type MRGChallengeModes = "goal" | "lamp" | "score"; +export interface MutualRivalGroupChallenge extends MongoDBDocument { + challengeID: string; + derivedScoreID: string | null; + mode: MRGChallengeModes; + name: string; + postedBy: integer; + goalID: string; + mrgID: string; + postedAt: integer; +} +declare type MRGFolderTargetFieldNames = "scoreData.percent" | "scoreData.gradeIndex" | "scoreData.lampIndex" | "calculatedData.gameSpecific.BPI"; +interface MRGFolderTarget { + field: MRGFolderTargetFieldNames; + target: number; +} +interface MRGFolderInformation { + folderID: string; + difficulty: Difficulties[Game][] | null; + datapoints: MRGFolderTarget[]; +} +export interface MutualRivalGroupDocument extends MongoDBDocument { + name: string; + about: string; + founderID: integer; + members: integer[]; + outgoingInvites: integer[]; + game: Game; + playtype: Playtypes[Game]; + folders: MRGFolderInformation[]; + settings: Record; + mrgID: string; +} +interface SessionScoreInfo { + pbInfo: { + isGeneralPB: boolean; + isGradePB: boolean; + isScorePB: boolean; + isLampPB: boolean; + isNewScore: boolean; + lampDelta: integer; + percentDelta: number; + gradeDelta: integer; + scoreDelta: number; + }; + scoreID: string; +} +export interface SessionDocument extends MongoDBDocument { + performance: number; + userID: integer; + sessionID: string; + name: string; + desc: string; + service: string; + game: Game; + playtype: Playtypes[Game]; + timestamp: integer; + timeEnded: integer; + timeStarted: integer; + lampPerformance: number; + scorePerformance: number; + scores: SessionScoreInfo[]; + highlight: boolean; +} +export interface ImportSessionInfo { + sessionID: string; + name: string; + scoreCount: integer; + performance: number; +} +export interface ImportDocument extends MongoDBDocument { + userID: integer; + timeStarted: integer; + timeFinished: integer; + game: Game; + skippedScores: integer; + successfulScores: string[]; + service: string; + sessionInfo: ImportSessionInfo[]; + importID: string; + timeTaken: number; + msPerScore: number; +} +export interface UserGoalDocument extends MongoDBDocument { + goalID: string; + userID: integer; + game: Game; + playtype: Playtypes[Game]; + achieved: boolean; + timeSet: integer; + timeAchieved: integer | null; + lastInteraction: integer | null; + progress: number; + progressHuman: string; + outOf: number; + outOfHuman: string; +} +interface MilestoneGoalReference { + goalID: string; + note: string | null; +} +interface MilestoneSection { + title: string; + desc: string; + goals: MilestoneGoalReference[]; +} +export interface MilestoneDocument extends MongoDBDocument { + game: Game; + playtype: Playtypes[Game]; + criteria: { + /** + * All: All goals must be achieved in order for the milestone to be complete + * Count: Goals achieved must be greater than or equal to criteria.value. + */ + type: "all" | "count" | "percent"; + value: number | null; + }; + createdBy: integer; + title: string; + desc: string; + milestoneData: MilestoneSection[]; + milestoneID: string; + group: string | null; +} +export interface QueryDocument extends MongoDBDocument { + query: Record; + queryID: string; + name: string; + desc: string; + byUser: integer; + timeAdded: integer; + timesUsed: integer; + forDatabase: "scores"; +} +export declare type NotificationType = "clandisband" | "claninvite" | "goals" | "import" | "milestone" | "mrginvite" | "mrgkicked" | "mrgdisband" | "mrginviterejected"; +export interface NotificationDocument extends MongoDBDocument { + notifID: string; + title: string; + read: boolean; + body: string; + toUserID: integer; + fromUserID: integer; + type: NotificationType; + data: Record; +} +export interface FunFactDocument extends MongoDBDocument { + text: string; + nsfw: boolean; + anonymous: boolean; + userID: integer; + funfactID: string; + timestamp: integer; +} +/** + * PublicUserDocument: These are the public values returned from GetUser functions. + * Note that the private fields: password, email and integrations, are not present in this document. + */ +export interface PublicUserDocument extends MongoDBDocument { + username: string; + displayname: string; + id: integer; + settings: { + nsfwsplashes: boolean; + invisible: boolean; + noTracking: boolean; + useSimpleLadderColours: boolean; + trustEamIIDXTimestamps: boolean; + }; + friends: integer[]; + socialmedia: { + discord: string; + twitter: string; + github: string; + steam: string; + youtube: string; + twitch: string; + }; + lastSeen: integer; + about: string; + custompfp: boolean; + custombanner: boolean; + ratings: Ratings; + lampRatings: Ratings; + customRatings: CustomRatings; + classes?: UserClasses; + permissions: { + admin?: boolean; + }; + clan: string | null; +} +declare type UserClasses = Partial>; +declare type PlaytypeClasses = Partial>; +declare type ClassInfo = Partial>; +/** + * PrivateUserDocument is the document indicating that we've returned everything about the user + * from the DB - including their private information. + */ +export interface PrivateUserDocument extends PublicUserDocument { + password: string; + email: string; + integrations: Record>; +} +export interface PublicAPIPermissions { + selfkey: boolean; + admin: boolean; +} +export interface PublicAPIKeyDocument extends MongoDBDocument { + assignedTo: integer; + expireTime: integer; + apiKey: string; + permissions: PublicAPIPermissions; +} +export interface PublicAPIRequestDocument extends MongoDBDocument { + key: PublicAPIKeyDocument; + location: string; + timestamp: integer; + ip: string; +} +export interface ChartDocument extends MongoDBDocument { + chartID: string; + id: integer; + level: string; + levelNum: number; + difficulty: Difficulties[Game]; + playtype: string; + length: string | number | null; + bpmMin: number; + bpmMax: number; + flags: Record; + internals: Record; + notedata: { + notecount: integer; + objects: Record; + }; +} +export interface TierlistDocument extends MongoDBDocument { + game: Game; + title: string; + isDefault: boolean; + tierlistID: string; + playtype: Playtypes[Game]; + config: { + usePrefix?: boolean; + grades?: [string, number][]; + }; +} +export interface TierlistDataDocument extends MongoDBDocument { + playtype: Playtypes[Game]; + songID: integer; + difficulty: Difficulties[Game]; + tierlistID: string; + tiers: Record; + chartID: string; +} +export interface SongDocument extends MongoDBDocument { + id: integer; + title: string; + artist: string; + genre: string; + "search-titles": string[]; + "alt-titles": string[]; + firstAppearance: string; + internals: Record; +} +export interface FolderDocument extends MongoDBDocument { + title: string; + game: Game; + custom: boolean; + byUser: integer; + views: integer; + type: "query"; + query: { + collection: string; + query: Record; + }; + folderID: string; + table: string; +} +export interface UserMilestoneDocument extends MongoDBDocument { + milestoneID: string; + userID: integer; + game: Game; + playtype: Playtypes[Game]; + timeSet: integer; + achieved: boolean; + timeAchieved: integer | null; + progress: integer; +} +export interface ScoreDocument extends MongoDBDocument { + service: string; + game: Game; + userID: integer; + scoreData: { + playtype: Playtypes[Game]; + difficulty: Difficulties[Game]; + score: number; + lamp: string; + hitData: Record; + hitMeta: Record; + percent: number; + grade: string; + lampIndex: integer; + gradeIndex: integer; + esd?: number; + }; + scoreMeta: Record; + calculatedData: { + rating: number; + lampRating: number; + gameSpecific: Record; + ranking: integer | null; + outOf: integer | null; + }; + timeAchieved: integer | null; + importType: string; + validity: "valid" | "partial"; + manualImport: boolean; + songID: integer; + isNewImport: boolean; + chartID: string; + highlight: boolean; + xp: integer; + comment: string | null; + timeAdded: integer; + isScorePB: boolean; + isLampPB: boolean; + scoreID: string; +} +export {}; diff --git a/common/js/types.js b/common/js/types.js new file mode 100644 index 000000000..11e638d1e --- /dev/null +++ b/common/js/types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/common/js/types.js.map b/common/js/types.js.map new file mode 100644 index 000000000..c768b7900 --- /dev/null +++ b/common/js/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""} \ No newline at end of file