mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-10-19 20:16:04 +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>
82 lines
1.9 KiB
TypeScript
82 lines
1.9 KiB
TypeScript
import _ from "lodash";
|
|
import uaparser from "ua-parser-js";
|
|
|
|
export function roundTo2(num: number): number {
|
|
return _.round(num, 2);
|
|
}
|
|
|
|
export function stdDev(population: number[]): number {
|
|
const n = population.length;
|
|
if (n === 0) {
|
|
return 0;
|
|
}
|
|
|
|
const populationMean = mean(population);
|
|
const variance = _.sumBy(population, (x) => (x - populationMean) ** 2) / n;
|
|
|
|
return Math.sqrt(variance);
|
|
}
|
|
|
|
export function mean(population: number[]): number {
|
|
const n = population.length;
|
|
return n > 0 ? _.sum(population) / n : 0;
|
|
}
|
|
|
|
export function kogasa(cov: number): number {
|
|
return (
|
|
100 * (1 - Math.tanh(cov + Math.pow(cov, 3) / 3 + Math.pow(cov, 5) / 5))
|
|
);
|
|
}
|
|
|
|
export function identity(value: string): string {
|
|
return Object.prototype.toString
|
|
.call(value)
|
|
.replace(/^\[object\s+([a-z]+)\]$/i, "$1")
|
|
.toLowerCase();
|
|
}
|
|
|
|
export function base64UrlEncode(data: string): string {
|
|
return Buffer.from(data).toString("base64url");
|
|
}
|
|
|
|
export function base64UrlDecode(data: string): string {
|
|
return Buffer.from(data, "base64url").toString();
|
|
}
|
|
|
|
interface AgentLog {
|
|
ip: string | string[];
|
|
agent: string;
|
|
device?: string;
|
|
}
|
|
|
|
export function buildAgentLog(req: MonkeyTypes.Request): AgentLog {
|
|
const agent = uaparser(req.headers["user-agent"]);
|
|
|
|
const agentLog: AgentLog = {
|
|
ip:
|
|
req.headers["cf-connecting-ip"] ||
|
|
req.headers["x-forwarded-for"] ||
|
|
req.ip ||
|
|
"255.255.255.255",
|
|
agent: `${agent.os.name} ${agent.os.version} ${agent.browser.name} ${agent.browser.version}`,
|
|
};
|
|
|
|
const {
|
|
device: { vendor, model, type },
|
|
} = agent;
|
|
if (vendor) {
|
|
agentLog.device = `${vendor} ${model} ${type}`;
|
|
}
|
|
|
|
return agentLog;
|
|
}
|
|
|
|
export function padNumbers(
|
|
numbers: number[],
|
|
maxLength: number,
|
|
fillString: string
|
|
): string[] {
|
|
return numbers.map((number) =>
|
|
number.toString().padStart(maxLength, fillString)
|
|
);
|
|
}
|