mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-02-26 07:44:01 +08:00
* updated default config to fix incorrect font button being highlighted
* Convert account controller to ts (#2731)
* using modular sdk
* removing last script
* replacing more code
* unused code
* removed unused code
* removed unused code
* importing auth
* using analytics controller
* importing auth and analytics
* importing auth
* updated git ignore
* fixed path
* removed live config from gitignore
* added error message when failing to initialize firebase
* added live config
using live config when building production
* removed unused code
* fixed incorrect function use
* added example config
* added a step to the contributing guide
* optional steps
* fixed path
* using example in source code so that github actions dont cry like little babies
* using function correctly
* using function correctly
* ignoring live
* removed
* added action webpack config
* bruce said "no-no"
This reverts commit 0a1e5e1660
.
* Fix
* Add ignore
* updated instructions
* using correct functions
* using correct function
* missing parameter
* using correct function
* using correct function
* removed ts ignores
* using new functions
* removed refresh
* using new functions
* merge fix
* fixed merge
* regenereated lockfile
* using correct function
* defaulting to the email thats already entered
* storing default snap in a file
* optional parameter
* made parameters non optional
* converted file to ts
* removed unused parameters
* removed unnecessary optional chaining
* destructuring array
* added a function to create error message
* removed type
* removed duplicate gitignore
* removed no check
Co-authored-by: Bruception <bberr022@fiu.edu>
* Include dev branch in CI (#2739)
* Decreased filesize and introduced chunk splitting (#2732) Rizwanmustafa
* Decreased filesize
* Introduce splitting for vendors
* Added HTML webpack plugin for dynamic change of chunkhash and minification on production
* Added bundle analyzer plugin for webpack
* Prevent analyzer from opening on its own
* updated contributors list
* Package lock update
* Created separate webpack config for analysing bundle
* Standardize paths in webpack base config
* Added devtool in dev webpack config
* Minor issues
* Based audit config off of the production config, saved exact packages and renamed some constants
* Saved exact version of packages
* Rename Config
* Added intellisense for webpack configs
* Added script for using audit config
* Simple changes
* Removed unnecessary cd and replaced webpack with npx wepback
* added npm script accessible from root dir
since audit is now a separate script, reenabled auto opening
Co-authored-by: Miodec <bartnikjack@gmail.com>
* Enable live reloading (#2738) bruception
* Enable live reloading
* Update scripts and documentation
* Fix resolve
* Use resolve
* Fix layoutfluid timer warnings (#2740) Ferotiq
* reduced date-fns import size
* using inline source map so that code is debuggable
* removed tinycolor2 dependency
* Migrate Chart.js to 3.7.1 (#2735) DanGonite57
* Migrate Chart.js to 3.7.1
* Show funbox label with StartGraphsAtZero disabled
* Fix label positioners
* Include dev branch in CI (#2739)
* Remove draw animation
* Avoid RangeError with no data
* Disable account chart initial render animation
* Add temporary type assertion for options.animation
* Test disabling animations via updateColors
* Test re-update chart after resetting animation duration
* Test dataset specific animation duration
* Disable animations for now
* Remove unused annotation
Co-authored-by: Bruce Berrios <58147810+Bruception@users.noreply.github.com>
* installed dev dependency to stop audit from complaining
* removed mr mime dev dependency
regenerate package-lock
* not updating live burst when its disabled
* using vanilla js to increase performance
* updating chart once instead of 3 times
* made log async
* increased minimum wordset length to disable repeating words to 4
this stops infinite A B C sequences
closes #2742
* increased tick padding
* added some padding to stop data points from being cut off
* fixed account graphs not being responsive
* removed unnecessary style
* updated button active color
* Server version (#2746) Bruception
* Add server version
* typo
* Fix logic
* Moved to utility
* Actually save version
* Move logic order
* updated metric name
* removed unnecessary else
Co-authored-by: Bruception <bberr022@fiu.edu>
Co-authored-by: Bruce Berrios <58147810+Bruception@users.noreply.github.com>
Co-authored-by: Rizwan Mustafa <rizwanmustafa0000@gmail.com>
Co-authored-by: Evan <64989416+Ferotiq@users.noreply.github.com>
Co-authored-by: DanGonite57 <danzinc57@gmail.com>
166 lines
3.7 KiB
TypeScript
166 lines
3.7 KiB
TypeScript
import "dotenv/config";
|
|
import { Counter, Histogram, Gauge } from "prom-client";
|
|
|
|
const auth = new Counter({
|
|
name: "api_request_auth_total",
|
|
help: "Counts authentication events",
|
|
labelNames: ["type"],
|
|
});
|
|
|
|
const result = new Counter({
|
|
name: "result_saved_total",
|
|
help: "Counts result saves",
|
|
labelNames: [
|
|
"mode",
|
|
"mode2",
|
|
"isPb",
|
|
"blindMode",
|
|
"lazyMode",
|
|
"difficulty",
|
|
"numbers",
|
|
"punctuation",
|
|
],
|
|
});
|
|
|
|
const resultLanguage = new Counter({
|
|
name: "result_language_total",
|
|
help: "Counts result langauge",
|
|
labelNames: ["language"],
|
|
});
|
|
|
|
const resultFunbox = new Counter({
|
|
name: "result_funbox_total",
|
|
help: "Counts result funbox",
|
|
labelNames: ["funbox"],
|
|
});
|
|
|
|
const resultWpm = new Histogram({
|
|
name: "result_wpm",
|
|
help: "Result wpm",
|
|
labelNames: ["mode", "mode2"],
|
|
buckets: [
|
|
10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170,
|
|
180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290,
|
|
],
|
|
});
|
|
|
|
const resultAcc = new Histogram({
|
|
name: "result_acc",
|
|
help: "Result accuracy",
|
|
labelNames: ["mode", "mode2"],
|
|
buckets: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
|
|
});
|
|
|
|
const resultDuration = new Histogram({
|
|
name: "result_duration",
|
|
help: "Result duration",
|
|
buckets: [
|
|
5, 10, 15, 30, 45, 60, 90, 120, 250, 500, 750, 1000, 1250, 1500, 1750, 2000,
|
|
2500, 3000,
|
|
],
|
|
});
|
|
|
|
const leaderboardUpdate = new Gauge({
|
|
name: "leaderboard_update_seconds",
|
|
help: "Leaderboard update time",
|
|
labelNames: ["language", "mode", "mode2", "step"],
|
|
});
|
|
|
|
export function incrementAuth(type: "Bearer" | "ApeKey" | "None"): void {
|
|
auth.inc({ type });
|
|
}
|
|
|
|
export function setLeaderboard(
|
|
language: string,
|
|
mode: string,
|
|
mode2: string,
|
|
times: number[]
|
|
): void {
|
|
leaderboardUpdate.set({ language, mode, mode2, step: "aggregate" }, times[0]);
|
|
leaderboardUpdate.set({ language, mode, mode2, step: "loop" }, times[1]);
|
|
leaderboardUpdate.set({ language, mode, mode2, step: "insert" }, times[2]);
|
|
leaderboardUpdate.set({ language, mode, mode2, step: "index" }, times[3]);
|
|
}
|
|
|
|
export function incrementResult(
|
|
res: MonkeyTypes.Result<MonkeyTypes.Mode>
|
|
): void {
|
|
const {
|
|
mode,
|
|
mode2,
|
|
isPb,
|
|
blindMode,
|
|
lazyMode,
|
|
difficulty,
|
|
funbox,
|
|
language,
|
|
numbers,
|
|
punctuation,
|
|
} = res;
|
|
|
|
let m2 = mode2 as string;
|
|
if (mode === "time" && ![15, 30, 60, 120].includes(parseInt(mode2))) {
|
|
m2 = "custom";
|
|
}
|
|
if (mode === "words" && ![10, 25, 50, 100].includes(parseInt(mode2))) {
|
|
m2 = "custom";
|
|
}
|
|
if (mode === "quote" || mode === "zen" || mode === "custom") m2 = mode;
|
|
|
|
result.inc({
|
|
mode,
|
|
mode2: m2,
|
|
isPb: isPb ? "true" : "false",
|
|
blindMode: blindMode ? "true" : "false",
|
|
lazyMode: lazyMode ? "true" : "false",
|
|
difficulty: difficulty || "normal",
|
|
numbers: numbers ? "true" : "false",
|
|
punctuation: punctuation ? "true" : "false",
|
|
});
|
|
|
|
resultLanguage.inc({
|
|
language: language || "english",
|
|
});
|
|
|
|
resultFunbox.inc({
|
|
funbox: funbox || "none",
|
|
});
|
|
|
|
resultWpm.observe(
|
|
{
|
|
mode,
|
|
mode2: m2,
|
|
},
|
|
res.wpm
|
|
);
|
|
|
|
resultAcc.observe(
|
|
{
|
|
mode,
|
|
mode2: m2,
|
|
},
|
|
res.acc
|
|
);
|
|
|
|
resultDuration.observe(res.testDuration);
|
|
}
|
|
|
|
const clientVersionsCounter = new Counter({
|
|
name: "api_client_versions",
|
|
help: "Records frequency of client versions",
|
|
labelNames: ["version"],
|
|
});
|
|
|
|
export function recordClientVersion(version: string): void {
|
|
clientVersionsCounter.inc({ version });
|
|
}
|
|
|
|
const serverVersionCounter = new Counter({
|
|
name: "api_server_version",
|
|
help: "The server's current version",
|
|
labelNames: ["version"],
|
|
});
|
|
|
|
export function recordServerVersion(serverVersion: string): void {
|
|
serverVersionCounter.inc({ version: serverVersion });
|
|
}
|